Depurar un Programa utilizando GDB

Body

GDB permite visualizar lo aconteciendo en el interior de otro programa mientras se ejecuta, o lo aconteciendo en otro programa al momento de caerse. GDB puede realizar cuatro tipos principales de cosas (además de otras cosas en apoyo de estas) para ayudar a atrapar fallas en el acto.

  • Iniciar un programa, especificando algo lo cual podría afectar su comportamiento.
  • Hacer detener a un programa sobre condiciones especificadas.
  • Examinar lo ocurrido, cuando un programa se detuvo.
  • Cambiar cosas en el programa, así se puede experimentar corrigiendo los efecto de una falla y seguir aprendiendo sobre otra.

El programa en depuración puede estar escrito en Ada, C, C++, Objetive-C, Pascal (y muchos otros lenguajes). Estos programas podrían ser ejecutados en la misma máquina de GDB (nativo) o en otra máquina (remoto). GDB se ejecuta en las variantes más populares de UNIX y Microsoft Windows.

Para la siguiente demostración se utiliza un archivo binario de nombre “prbuffer”, el cual ha sido compilado con la información de depuración (opción -g), lo cual se almacena en un archivo objeto. Este describe los tipos de datos de cada variable o función y la correspondencia ente los números de línea fuente y direcciones en el código ejecutable.

# cc -g -o prbuffer prbuffer.c

A continuación se realizar una demostración de ejemplo utilizando GDB y este programa. Se ejecuta gdb indicando el nombre del archivo a utilizar.

# gdb prbuffer

Ejecutar el programa bajo el control de GDB.

(gdb) run

El programa solicita el ingreso de una contraseña. Luego de ingresarla el programa finaliza normalmente.

Para la siguiente demostración se vuelve a ejecutar GDB y el programa. Luego se define un Punto de quiebre (Breakpoint), el cual hace al programa detenerse cuando se alcanza un cierto punto dentro del mismo. Se definirá un punto de quiebre en la línea 11; tomando como referencia el código fuente del programa; línea en la cual se solicita la contraseña. Luego se ejecuta el programa utilizando el comando “run”

(gdb) break 11
(gdb) run

GDB muestra como la contraseña ingresada almacenada en la variable de nombre “buff” se compara con la contraseña correcta. Esto se detalla en la línea número 12.

El valor de la variable “buff” puede ser visualizada utilizando el comando “print” de GDB.

(gdb) print buff

GDB también permite visualizar los nombres y valores de todos los registros, excepto los registros de punto flotante o vectores (en la trama de pila seleccionada).

(gdb) info registers

Para continuar con la ejecución del programa se utiliza el comando “next” de GDB.

(gdb) next

Se procede a deshabilitar el breakpoint definido. Para luego continuar con la ejecución normal del programa. El cual finaliza normalmente.

(gdb) continue

GDB incluye una gran cantidad de opciones. Sugiero revisar la documentación oficial de la herramienta, la cual es bastante copiosa y detallada.

Fuentes:

https://www.gnu.org/software/gdb/
https://sourceware.org/gdb/current/onlinedocs/gdb/
http://www.thegeekstuff.com/2013/06/buffer-overflow/

Definir el valor del Registro EIP utilizando pattern_create y pattern_offset

Body

El presente escrito se basa en la publicación de nombre “Utilizar Fuzzing para Encontrar Desbordamientos de Buffer”, cuyo enlace se encuentra en la parte final.

Se encontró un desbordamiento de buffer en vulnserver utilizando el comando vulnerable de nombre “GTER”, lo cual permite sobrescribir los registros EBP e EIP. El Registro EIP es de especial interés pues este registro controla la ejecución del flujo de la aplicación. Es decir, si fuese factible explotarlo adecuadamente se podría direccionar la ejecución del programa hacia otro lugar seleccionado, como un espacio en memoria donde exista un código útil o payload.

Se utiliza un script en python para enviar un buffer de 1000 bytes utilizando el comando GTER hacia vulnserver.

Se ejecuta el script.

En el Sistema Windows se ha ejecutado vulnserver utilizando Immunity Debugger. Es factible visualizar nuevamente la sobrescritura de los registros EBP e EIP.

Obtener el control del registro EIP es vital para desarrollar un exploit, por lo tanto se requiere conocer cuales son las letras A sobrescribiendo el registro EIP en el buffer. Para identificar estos 4 bytes se utiliza la herramienta “pattern_create”, la cual está incluida dentro de Metasploit Framework.

Se ejecuta la herramienta pattern_create para crear un buffer de 1000 bytes.

En el script python se incluye este nuevo buffer.

Se procede a ejecutar nuevamente el script contra vulnserver.

El Registro EIP ha sido sobrescrito con el valor "66413066". Ahora se utiliza la herramienta “pattern_offset” para descubrir el desplazamiento hacia los 4 bytes de la cadena única creada anteriormente.

El desplazamiento es de 151 bytes. Con esta información se modifica nuevamente el buffer para definir valores exactos en el registro EIP. El buffer esta constituido ahora de 151 letras “A” seguido por 4 letras “B” y 90 letras “C”.

Se ejecuta nuevamente el script en python contra vulnserver.

El registro IP se ha sobrescrito con el valor “42424242” lo cual corresponde a 4 letras “B”. Siendo esto un acierto en el cálculo realizado, ahora es factible controlar el flujo de ejecución de vulnserver. El valor del registro ESP es de "0181F9E0", en el cual se pueden encontrar valores “43” lo cual corresponde a las letras “C” del buffer.

La siguiente tarea es preparar el espacio para un shellcode o el código a ser ejecutado por vulnserver, y evaluar la manera de redireccionar la ejecución del código.

Fuentes:

http://www.reydes.com/d/?q=Utilizar_Fuzzing_para_Encontrar_Desbordamien…

Utilizar Fuzzing para Encontrar Desbordamientos de Buffer

Body

El Fuzzing implica enviar datos deformados hacia las entradas de una aplicación, para luego vigilar por comportamientos anómalos como una caída o mal funcionamiento. Esto indicaría el incorrecto filtrado de las entradas hacia la aplicación, lo cual podría conducir a descubrir vulnerabilidades explotables.

Para la siguiente demostración se utilizará la aplicación vulnerable de nombre "vulnserver" en un sistema Windows 7.

Ejecutar vulnserver desde una consola en un Sistema Windows. En caso se requiera definir otro puerto diferente al 9999 por defecto, escribirlo a continuación del comando.

C:\> vulnserver.exe

Desde Kali linux se establece una conexión hacia la dirección IP y Puerto TCP donde vulnserver está en funcionamiento, utilizando la herramienta netcat.

# nc -nvv 192.168.0.X 9999

Sugiero revisar la sección “Fuentes” al final del presente escrito para obtener más información sobre vulnserver.

El objetivo es tratar de identificar desbordamientos de buffer en algunos de los comandos incluidos en vulnserver, y para esto se utiliza un script hecho en Python.

El script en Python crea buffers de diferentes tamaños y para cada comando de vulnserver se utiliza una letra diferente para la creación de los diferentes buffers. De esta manera es factible identificar cual de los comandos ha originado un desbordamiento de buffer en la aplicación vulnerable.

Se procede a ejecutar el script en python.

En el Sistema Windows se muestra una ventana con el mensaje “vulnserver.exe dejó de funcionar”.

Para identificar cual de los comandos generó este comportamiento anómalo en vulnserver se utiliza Immunity Debugger.

Con vulnserver en funcionamiento, nuevamente se ejecuta el script en python.

En la ventana superior derecha se puede visualizar el contenido de los Registros ESP y EIP definidos a 4A4A4A4A. Es decir estos registros han sido sobrescritos con el buffer enviado por el script.

El valor 4A en hexadecimal corresponde a la letra “J”, lo cual nos indica la existencia de un desbordamiento de buffer utilizando el comando “GTER” de vulnserver. Ello no implica sea el único comando vulnerable, sino ser el primero el cual generó un desbordamiento de buffer.

Lo siguiente sería identificar el tamaño exacto del buffer a sobrescribir, y de esta manera definir una dirección válida en la cual se encuentre un payload o carga útil para aprovechar o explotar esta vulnerabilidad.

Fuentes:

http://www.reydes.com/d/?q=Vulnserver
http://www.reydes.com/d/?q=Immunity_Debugger
http://www.thegreycorner.com/2010/12/introducing-vulnserver.html
http://www.immunityinc.com/products/debugger/

VulnServer

Body

VulnServer es una aplicación servidor TCP basada en Windows diseñado para ser explotado. El programa esta hecho para ser utilizado como herramienta de aprendizaje para enseñar sobre los procesos de la explotación del software, como también un buen programa victima para evaluar nuevas técnicas de explotación y shellcode.

Para ejecutar vulnserver asegurarse de copiar el archivo “essfunc.dll” en algún lugar de la ruta para los dlls del sistema (aunque tenerlo en el mismo directorio de vulnserver.exe es suficiente), y simplemente abrir el ejecutable vulnserver.exe. El programa iniciará su ejecución en el puerto TCP 9999 por defecto, si se desea utilizar otro puerto simplemente ajustar el número de puerto correspondiente en la línea de comandos.

El programa expondrá su número de versión cuando inicie, como también el número de versión del dll acompañante, es obvio entonces la versión ejecutándose en caso se necesite actualizarlo en el futuro.

La explotación puede ser un negocio delicado, y los cambios para recompilar el programa pueden cambiar la estructura del buffer requerido para ganar control de ejecución de código, así se ha intentado hacerlo lo más sencillo posible para determinar cual versión del programa y dll asociada se está ejecutando, de esta manera si se utiliza una guía se puede estar seguro de tener la misma versión utilizada. Esto es también algo a considerar si se compila el programa desde las fuentes, diferentes compildaores de c (incluso diferentes versiones del mismo compilador) puede producir binarios a explotar en diferentes formas desde el mismo código, y se obtendrá también una advertencia sobre esto cuando se inicie el programa.

Vulnserver no hace nada más que permitir la explotación, no existe otra funcionalidad útil. Código integrado para realizar alguna otra función no parecía ser un buen uso del espacio binario o de tiempo considerando el propósito del programa. Han habido algunos esfuerzos para simular la entrada del usuario hacia el programa y proporcionar respuestas para parecer una aplicación servidor regular (aunque sea básico), pero no hay realmente una razón para ejecutarlo a menos de realizar una explotación en el momento.

Este programa no se debe ejecutar sobre un sistema crítico, y no debe permitirse a este programa atender en un puerto accedible desde una red no confiable, como Internet. No existe código malicioso incluido dentro del programa (revisar el código fuente para confirmarlo), no es un virus o malware, pero el programa puede ser objeto de un uso malicioso si un individuo no confiable lo accede. Esto es algo inevitable considerando el diseño del programa precisamente para esto. Por lo tanto ejecutarlo únicamente sobre un sistema de prueba bien protegido (posiblemente aislado), y únicamente cuando se está utilizándolo activamente para evaluar métodos de explotación, y no dejarlo en ejecución todo el tiempo.

Si se tiene en funcionamiento vulnserver en el sistema y no se está explotándolo, alguien más podría hacerlo.

Fuentes:

http://www.thegreycorner.com/p/vulnserver.html
http://www.thegreycorner.com/2010/12/introducing-vulnserver.html
http://sites.google.com/site/lupingreycorner/vulnserver.zip

Convertir un Shellcode a ASCII para Detectar un Exploit Falso

Body

Un Shellcode o también denominado como “bytecode” es un conjunto de comandos máquina de bajo nivel, lo mismo encontrado dentro de un archivo ejecutable. Con una shellcode es factible, ejecutar un archivo, reiniciar el sistema, establecer una conexión remota, entre otra diversidad de acciones. Es el código a ser insertado en un exploit para cumplir una tarea requerida.

Es muy frecuente encontrar exploits falsos publicados por atacantes maliciosos, cuyo propósito es comprometer o engañar a potenciales víctimas. De esta manera al ejecutar un exploit falso para intentar explotar alguna vulnerabilidad en un objetivo de evaluación, se ejecutará código malicioso en el propio sistema. A continuación se analizarán dos ejemplos sencillos.

Se analiza el exploit de nombre “openssh-53p1-remote-root.c ”, el cual supuestamente es un Exploit remoto para alcanzar privilegios del usuario root en la versión de OpenSSH 5.3p1.

Una manera sencilla de convertir estos códigos hexadecimales a ASCII es utilizando python. Como se puede observar el comando a ejecutar en el sistema local se ejecutará segundo plano y procederá a borrar todos los archivos, adicionalmente los errores generados de ejecutar este comando serán redireccionados hacia /dev/null.

Ahora se procede a analizar un exploit de nombre “apache0.c”, el cual supuestamente es un exploit de día 0 para Apache.

Nuevamente se utiliza python para visualizar la “Shellcode” en ASCII.

Este supuesto exploit no explotará ninguna vulnerabilidad en Apache, en lugar de ello sobrescribe los archivos /etc/passwd y /etc/shadow del sistema GNU/Linux en el cual se lo ejecutó.

Se sugiere únicamente descargar códigos de exploits desde sitios confiables o utilizarlos directamente desde frameworks de explotación como Metasploit o CoreImpact.

Fuentes:

http://www.exploit-db.com/shellcode/
http://www.linuxdevcenter.com/pub/a/linux/2006/05/18/how-shellcodes-wor…
http://pastebin.com/j70T9KHJ
http://pastie.org/pastes/5464147

Immunity Debugger

Body

Immunity Debugger el Depurador Inmmunity es una poderosa nueva manera para escribir exploits, analizar malware, y realizar ingeniería inversa a archivos binarios. Se construye sobre una sólida interfaz de usuario con representación gráfica de funciones, es la primera herramienta de la industria construida específicamente para creación de pila, con una amplia y bien soportada API Python para una fácil expansión.

Entre sus características principales se enumeran.

  • Un depurador con una funcionalidad diseñada específicamente para la industria de la seguridad
  • Acorta el 50% el tiempo para desarrollo de exploits.
  • Interfaces simples y comprensibles.
  • Lenguaje de Scripting robusto y poderoso para una depuración inteligente.
  • Depuración rápida y liviana para prevenir corrupción durante un análisis complejo.
  • Conectividad a fuzzers y herramientas para el desarrollo de exploits.

Su Interfaz incluye un GUI y una línea de comando. La línea de comando esta siempre disponible en la parte superior del GUI. Esto permite al usuario tipear atajos como si se estuviese en un depurador típico basado en texto, como WinDBG o GDB. También se implementa alias para asegurar a los usuarios de WinDBG no tener un re entrenamiento y obtener una completa productividad con la mejor interfaz de depuración en el mercado.
Fi
Iniciar Immunity Debugger haciendo clic el ícono pertinente. Luego hacer clic en la opción “File -> Open” para abrir la aplicación directamente desde el depurador. Una segunda manera es adjuntar un proceso en funcionamiento al depurador.

Cuando la aplicación es cargada, el depurador abre una ventana por defecto, la vista CPU. Esta pantalla del CPU se divide en cuatro áreas. Desensamblado, Registros, Volcado, Pila.

Desensamblado

La parte de desensamblado se divide en cuatro columnas. En la primera columna se visualiza las direcciones de memoria. La segunda columna muestra los códigos de operación de la instrucción (vista hexadecimal de la instrucción) localizada en la dirección. El lenguaje máquina esta hecho de estos códigos de operación, y esto es lo que el CPU ejecuta en realidad. La tercera columna es código ensamblador. Ya que immunity es un depurador dinámico, se puede hacer doble clic sobre cualquier instrucción ensamblador y cambiarlo. El cambio será visible inmediatamente y se podrá ver como esto afecta el programa. La cuarta columna contiene comentarios. El depurador intenta adivinar algunos detalles sobre las instrucciones y si es satisfactorio pondrá los detalles en los comentarios. Si no se está satisfecho con lo adivinado por el depurador se puede borrar y escribir los comentarios propios haciendo doble clic.

Registros

Aquí se pueden visualizar los registros del CPU y sus valores. La selección superior son registros de propósito general, los cuales contienen valores temporales, y registros los cuales son utilizados para controlar el flujo del programa.

La sección intermedia contiene registros bandera los cuales el CPU cambia cuando algo de importancia ha ocurrido en el programa (como un sobreflujo). La selección inferior contiene registros los cuales son utilizados mientras se ejecutan operaciones de punto flotante.

Los registros pueden cambiar de color desde negro hacia rojo cuando cambian, lo cual facilita vigilar los cambios. Lo mismo con el código ensamblador, se puede hacer doble clic sobre cualquier registro y cambiar su valor. Se puede también seguir un valor almacenado en el registro si es una dirección de memoria válida haciendo clic derecho sobre este y seleccionando “Follow in dump”.

Volcado

La ventana de volcado muestra una vista hexadecimal del programa completo. Se divide en tres columnas. La primera columna muestra la dirección. La segunda columna muestra caracteres hexadecimales localizados en la dirección. En la tercera columna se puede ver la representación ASCII de los datos hexadecimales. Se puede buscar valores de Volcado haciendo clic derecho sobre esta y seleccionando “Search for -> Binary String”.

Pila

La localización de memoria hacia el cual apunta ESP (Stack Pointer Register) o Registro Puntero de Pila es mostrado en la parte superior de la ventana de pila. Se divide en tres columnas. La primera columna muestra la dirección. La segunda columna muestra los datos localizados en la dirección. Y la tercera columna contiene comentarios. Se pueden cambiar los datos en la pila haciendo doble clic.

Fuentes:

http://www.immunityinc.com/products/debugger/
http://debugger.immunityinc.com/
http://sgros-students.blogspot.com/2014/05/immunity-debugger-basics-par…

Escaneo de Vulnerabilidades Externo utilizando OpenVAS

Body

OpenVAS (Open Vulnerability Assessment System) es un framework de diversos servicios y herramientas los cuales proporcionan una completa y poderosa solución para el escaneo de vulnerabilidades y gestión de vulnerabilidades. El escaner esta acompañado de actualizaciones diarias de NVTs (Network Vulnerability Tests). Todos los productos OpenVAS son Software Libre. Y la mayoría de componentes bajo licencia GNU GPL.

Para la siguiente demostración se realizará un escaneo de vulnerabilidades externo contra un objetivo remoto, sin utilizar credenciales válidas.

Ingresar a la OpenVAS utilizando el nombre de usuario y contraseña creadas al momento de la instalación.

Desde el asistente de seguridad Greenbone se procede a configurar las opciones para realizar un escaneo de vulnerabilidades.

Hacer clic en “Configuration -> Port Lists”.

Hacer clic en el ícono “New Port List”, para crear una nueva lista de los puertos TCP y UDP encontrados en el objetivo de evaluación. Ingresar un nombre para la lista y los puertos separados por comas. Luego hacer clic en el botón de nombre “Create Port List”

Hacer clic en la opción “Configuration -> Scan Configs”

Hacer clic en el botón “New Scan Configuration”, para definir una nueva configuración de escaneo. Asignarle un nombre, y activar la opción “Empty, static and fast”. Luego hacer clic en el botón de nombre “Create Scan Config”.

Hacer clic en el ícono de nombre “Edit Scan Config”. Activar las familias de pruebas de vulnerabilidades requeridas, para luego hacer clic en el botón de nombre “Save Config”.

Hacer clic en la opción “Configuration -> Targets ”, luego en el botón de nombre “New Target”. Rellenar los campos requeridos, como la asignación de un nombre, la dirección IP y lista de puertos previamente definida del objetivo de evaluación. Luego hacer clic en el botón de nombre “Create Target”.

Nota: Es importante definir la opción “Alilve Test” a “Consider Alive“, para considerar “Vivo” o en funcionamiento al objetivo de evaluación.

Hacer clic en la opción “Scan Management -> Task”, para luego hacer clic en el botón de nombre “New Task”, e ingresar la información requerida como un nombre, la configuración del escaneo y los objetivos del escaneo. Luego hacer clic en el botón de nombre “Create Task”.

Nota: Definir la opción “Network Source Interface” a la interfaz de red adecuada, por ejemplo "eth0".

Hacer clic en el ícono de nombre “Start” para iniciar el escaneo de vulnerabilidades.

Finalizado el escaneo hacer clic en la opción “Scan Management -> Reports” y seleccionar el reporte correspondiente al escaneo realizado.

La sección del Reporte de los resultados también incluye algunos filtros y diversos formatos a ser utilizados para exportar el reporte.

Fuentes:

http://www.reydes.com/d/?q=Instalacion_de_OpenVAS_en_Kali_Linux
http://www.openvas.org/
http://lists.wald.intevation.org/pipermail/openvas-discuss/2014-October…

Convertir y Montar una Imagen Forense utilizando XMount-GUI

Body

XMount-GUI permite la conversión al vuelo entre diversos tipos de imágenes de discos duros de entrada y salida. Xmount crea un sistema de archivos virtual utilizando FUSE (Filesystem in Userspace) el cual contiene una representación virtual de la imagen de entrada. La representación virtual puede estar en DD Bruto, formato de archivo de disco virtual de VirtualBox o en formato de archivo VMDK de VmWare. Las imágenes de entrada pueden estar en DD Bruto, EWF (Expert Witness Compression Formar) o AFF (Advanced Forensic Format). Adicionalmente, Xmount también soporta acceso de escritura virtual hacia archivos de salida el cual se redirecciona a un archivo cache. Esto posibilita iniciar imágenes de discos duros capturados utilizando QEMU, KVM, VirtuaBox, VmWare o similares.

Para la siguiente demostración se utilizará la imagen forense en formato E01 obtenida desde un Sistema Windows XP, la cual será convertida a formato VMDK de VmWare.

Hacer clic en “Menu -> Forensic Tools -> XMount-GUI” para ejecutar la herramienta requerida.

Seleccionar la imagen forense a convertir. Luego hacer clic en el botón de nombre “OK”.

Seleccionar los parámetros. El tipo de imagen del disco, el cual por defecto se define a “ewf”, pues XMount- GUI lo autodetecta. Se define también el tipo de disco virtual, el cual será el formato al cual se convertirá la imagen forense de entrada. Para esta demostración es “VMDK” de VmWare.

Seleccionar el directorio en el cual se creará el archivo cache para los cambios realizados sobre el disco.

La operación ha sido satisfactoria. El disco virtual ha sido montado en el directorio indicado.

En el directorio indicado es factible observar la creación de tres archivos, el primero corresponde a la imagen forense en bruto formato “dd”. El segundo archivo es de tipo informativo, y el tercer archivo corresponde al archivo de configuración para VmWare Player.

Se procede a visualizar el archivo de extensión *.info.

En la siguiente demostración se utiliza una máquina virtual Windows XP en VmWare Player donde se procede a añadir un nuevo disco duro, para luego iniciar el sistema operativo. Luego de lo cual será factible navegar a través de los archivos y carpetas contenidos en la imagen forense.

Fuentes:

http://scripts4cf.sourceforge.net/tools.html
https://code.google.com/p/yad/
http://fuse.sourceforge.net/

Análisis Forense al Registro de Windows utilizando FRED

Body

Forensic Registry EDitor (FRED) o Editor Forense del Registro, es un editor de colmenas para el registro de Microsoft Windows. El proyecto nació por el requerimiento de tener un razonablemente buen visor para las colmenas del registro de Windows, al momento de realizar análisis forense. Incluye algunas funcionalidades no encontradas en editores de registros “libres” normal como un visor hexadecimal con interprete de datos y una función de reporte la cual puede ser fácilmente ampliada con plantillas de reporte personalizadas ECMAScript·

Para las siguientes demostraciones se utiliza la imagen forense obtenida de un sistema Windows 7.

Hacer clic en “Menu -> Forensic Tools -> Fred” para ejecutar la herramienta requerida.

Antes de abrir un “hive” o colmena del registro de Windows, se requiere montar previamente la imagen forense. Luego hacer clic en a opción “File -> Open hive”.

Ubicar la carpeta en la cual residen las colmenas, para el caso de un Sistema Windows 7 estos archivos se ubican en “/Windows/System32/config/”. Se selecciona el archivo colmena de nombre “SAM”, para luego hacer clic en el botón de nombre “Open”.

Se presenta una nueva ventana con el contenido del archivo de colmena SAM. Un panel izquierdo con el Nodo y la Fecha de Última Modificación. En el panel derecho la Llave, su Tipo y Valor. Y en el panel inferior derecho, un volcado en hexadecimal del contenido de la llave seleccionada, como también en texto.

Para generar el reporte de la colmena hacer clic en la opción “Reports -> Generate report”.

En la nueva ventana presentada se define por defecto el tipo de colmena, y la información a reportar sobre esta, es decir información sobre las cuentas de usuario.

Al hacer clic en el botón de nombre “Generate” se genera y presenta el reporte. Se obtiene información detallada sobre las cuentas de usuario; como el Nombre, RID (Relative ID), Nombre completo, Último Login, Último cambio de la contraseña, Expiración de la Cuenta, Total de Logins, Logins Fallidos, Banderas, Recordatorio de Contraseña, entre otra información relevante.

Para la siguiente demostración se apertura la colmena del registro de nombre “SOFTWARE”.

Se procede a generar el reporte pertinente. Es factible también no incluir algunos ítemes en el reporte desactivando el “check” correspondiente.

El Reporte generado incluye información sobre los programas ejecutados al iniciar el sistema, la lista del perfil, y la información sobre la versión de Windows.

Este mismo procedimiento se puede aplicar a otros archivos colmena. También es factible habilitar el soporte para escritura de los archivos colmena, pues todas son abiertas por defecto en modo de Solo-Lectura. Para esto utilizar la opción “Edit -> Enable write support”.

Fuentes:

https://www.pinguin.lu/fred
http://www.forensicswiki.org/wiki/Windows_Registry
http://www.ecmascript.org/

Calcular Resúmenes de Mensajes y Sumas de Verificación utilizando GtkHash

Body

Un función de cifrado hash es una función la cual es considerada como prácticamente imposible de revertir, es decir, recrear el dato de ingreso desde solo el valor hash. El dato de ingreso es frecuentemente nombrado como el “Mensaje”, y el valor hash resultante es frecuentemente nombrado como el “resumen del mensaje” o simplemente “resumen”.

Una suma de verificación es un dato de tamaño pequeño desde un bloque de datos digital para el propósito de detectar errores, los cuales pueden haber sido introducidos durante su transmisión o almacenamiento

GtkHash es una utilidad GTK+ para calcular resúmenes de mensajes y sumas de verificación. Actualmente soporta funcionan hash incluyendo MD5, MD6, SHA1, SHA256, SHA512, RIPEMD, TIGER y WHIRLPOOL.

Para la siguiente demostración se generan diversos hash desde un archivo conteniendo la imagen forense de un sistema Windows 7.

Hacer clic en “Menu -> Forensics -> GtkHash” para ejecutar la herramienta requerida.

En la ventana presentada, hacer clic en el campo de nombre “File” o Archivo para definir el archivo desde el cual se generarán los hashs.

Definido el archivo hacer clic en el botón de nombre “Hash”.

El proceso de generación de hashs ha iniciado.

Finalizado el proceso se presentan los hashs generados. Para el caso de la presente demostración se han generado hashs MD5, SHA1 y SHA256.

Es factible definir la utilización de otras funciones hash ingresando a la opción “Edit -> Preferences ”. Realizadas las selecciones pertinentes hacer clic en el botón de nombre “Close”.

Otra funcionalidad interesante de GtkHash es utilizar la opción “View -> File List”. La cual permite generar hashs desde diversos archivos.

Hacer clic en e botón de nombre “Add” o Añadir para buscar y seleccionar los archivos.

Definidos los archivos hacer clic en el botón de nombre “Hash”, para generar sus respectivos Hashs.

También es factible generar el hash directamente desde una cadena de texto utilizando la opción “View -> Text”. La cadena de texto debe ser escrita en el campo de nombre “Text” y los hash serán generados automáticamente mientras el texto es ingresado.

Fuentes:

http://gtkhash.sourceforge.net/
http://en.wikipedia.org/wiki/Cryptographic_hash_function
http://en.wikipedia.org/wiki/Checksum
http://www.gtk.org/
https://github.com/tristanheaven/gtkhash