Analisis de Malware - Total

D-Virus | DFIR – Incident Response | Network Fo... https://dvirus.training/ MALWARE ANALYSIS < HTTPS://DVIRUS.TRAINING

Views 83 Downloads 23 File size 9MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

MALWARE ANALYSIS < HTTPS://DVIRUS.TRAINING/CATEGORY/MALWAREANALYSIS/>

Solución de error al graficar funciones en IDA < https://dvirus.training/2020/01/23/solucionde-error-al-graficar-funciones-en-ida/> By dvirus < https://dvirus.training/author/dvirus/> 23 enero, 2020 < https://dvirus.training/2020/01/23/solucion-de-error-al-graficarfunciones-en-ida/> No hay comentarios < https://dvirus.training/2020/01/23/solucion-de-error-algraficar-funciones-en-ida/#respond>

En algunos análisis de binarios en IDA se hace neceario generar gráficas de funciones para identificar referencias cruzadas (xrefs).

Sintoma:

Al usar el IDA que viene instalado en FlareVM aparece el siguiente mensaje de error al intentar graficar. 1 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

Diagnóstico:

El error indica que no se puede graficar debido a que no se encuentra el programa o la libreria para generar las gráficas, así que validaremos el archivo de configuración tal como lo sugiere IDA. En la carpeta donde se encuentra instalado IDA, generalmente “C:\Program Files\IDA Freeware 7.0\” hay una carpeta que contiene el archivo de configuración ida.cfg

En este archivo de configuración hay una sección donde se establecen los parámetros del programa de visualización de gráficas.

2 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

Según la configuración, IDA espera el archivo qwingrahp.exe, al no encontrarlo genera la excepción.

Solución

La solución más sencilla es agregar el binario a la carpeta de IDA, el binario lo pueden descargar desde aquí < https://dvirus.training /wp-content/uploads/2020/01/qwingraph.zip> . A continuación encontrarán el SHA-1 para validar la integridad del binario. (pass: “dvirus.training”) bb0954e8352373b76c730e8dc7a772a7021204af qwingraph.exe dfb44ee088a469e9446aa767ef5408c00d6dfe0b qwingraph.zip

Una vez descargado el binario, este se debe copiar en la carpeta de IDA

3 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

Una vez realizados estos pasos IDA podrá graficar correctamente.

FORENSICS < HTTPS://DVIRUS.TRAINING/CATEGORY/FORENSICS/>

Montaje de imágenes forenses cifradas con bitlocker < https://dvirus.training/2020/01 /22/montaje-de-imagenes-forenses-cifradas-con-bitlocker/>

4 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

By dvirus < https://dvirus.training/author/dvirus/> 22 enero, 2020 < https://dvirus.training/2020/01/22/montaje-de-imagenes-forensescifradas-con-bitlocker/> No hay comentarios < https://dvirus.training/2020/01/22/montaje-de-imagenesforenses-cifradas-con-bitlocker/#respond>

En este artículo les explicaré como montar una imagen forense de disco en formato EWF cifrada con bitlocker.

5 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

Preparación:

Para desarrollar este proceso necesitamos: La imagen forense en formato ewf (Expert Witness Disk Image Format ) La clave de recuperación de la unidad de cifrado, esta se genera cuando se cifra el disco y debe ser suministrada por el dueño o administrador del equipo.

Herramientas Instalamos dislocker y las herramientas para operar los archivos EWF sudo apt install ewf-tools dislocker

6 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

Montaje:

Creamos una carpeta en la cuál montaremos la imagen forense. sudo mkdir /mnt/ewfimages

Verificamos la información de la imagen suministrada. ewfinfo ForensicImage.E01

Montamos la imagen en la carpeta creada previamente sudo ewfmount ForensicImage.E01 /mnt/ewfimages/

7 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

listamos el contenido de la carpeta y encontraremos el archivo ewf1 sudo ls -lh /mnt/ewfimages

Validamos la tabla de particiones de la imagen sudo gparted /mnt/ewfimages/ewf1

gparted nos mostrará una partición con el sistema de archivos bitlocker, en este caso /mnt/ewfimages/ewf1p4

Una vez identificada la partición que está cifrada con bitlocker damos doble clic.

8 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

Copiamos el valor correspondiente al primer sector para calcular el offset, este valor también lo podemos obtener con fdisk. sudo fdisk -l /mnt/ewfimages/ewf1

Antes de intentar montar la partición analizaremos la metadata de la partición cifrada, para este propósito usaremos dislocker-metadata, a este comando le pasamos el offset -o y el volumen -V. El 512 corresponde al tamaño de cada sector, cuál pueden confirmar con el 9 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

comando fdisl -l. sudo dislocker-metadata -o $((1490944*512)) -V /mnt/ewfimages/ewf1

Hemos confirmado la existencia del volumen cifrado con bitlocker, ya es hora de montar la partición. Creamos un punto de montaje para alojar el archivo de dislocker. sudo mkdir decrypted_volume Ejecutamos dislocker-fuse para crear un archivo virtual y de esta forma operar el disco. El archivo virtual creado con FUSE es una representación virtual del volumen descifrado. sudo dislocker-fuse -p -O $((1490944*512)) -V /mnt/ewfimages/ewf1 decrypted_volume/ Si la ejecución es correcta, el sistema nos solicitará la clave de recuperación de bitlocker. 10 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

Ingresamos la clave, y si esta es correcta se creará un archivo llamado dislocker-file. sudo ls -lh decrypted_volume

Con este archivo podemos ejecutar las actividades forenses usando Sleuth Kit como lo vimos en este artículo < https://dvirus.training /2020/01/09/analisis-y-recuperacion-de-archivos-con-tsk/> . sudo fsstat decrypted_volume/dislocker-file

11 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

Si queremos montar el sistema de archivos para interactuar con los archivos, ejecutamos los siguientes comandos. Creamos una carpeta en un disco con suficiente espacio disponible, preferiblemente un disco externo. mkdir Files_Decrypted

Montamos la unidad sudo mount -o loop,ro decrypted_volume/dislockerfile Files_Decrypted/

En la carpeta Files_Decrypted se encontrarán todos los archivos. Una vez finalicemos el análisis forense o la inspección del disco, desmontamos las unidades. sudo umount Files_Decrypted rm -rf Files_Decrypted/ sudo fusermount -u decrypted_volume rm -rf decrypted_volume/

Este procedimiento también se puede realizar para imagenes en 12 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

crudo (RAW) en ese caso no hay que ejecutar los primeros pasos y se inicia desde la identificación del offset.

Referencias:

Practical Forensic Imaging, Bruce Nikkel 2016 MALWARE ANALYSIS < HTTPS://DVIRUS.TRAINING/CATEGORY/MALWAREANALYSIS/>

Análisis estático de binarios PE desde linux < https://dvirus.training/2020/01/18/analisis-debinarios-pe-desde-linux/> By dvirus < https://dvirus.training/author/dvirus/> 18 enero, 2020 < https://dvirus.training/2020/01/18/analisis-de-binarios-pe-desdelinux/> No hay comentarios < https://dvirus.training/2020/01/18/analisis-de-binarios-pedesde-linux/#respond>

En esta entrada veremos como usar algunas herramientas de código abierto en linux para la evaluación inicial de archivos ejecutables de windows potencialmente maliciosos. Las técnicas que abordaremos forman parte de el análisis estático de malware, la cuál consiste en analizar un archivo sospechoso sin ejecutarlo. El análisis estático corresponde a la técnica más básica de análisis de malware y el objetivo es extraer información del binario.

13 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

Precaución: Para este articulo vamos a utilizar un archivo malicioso, bajo ningún motivo ejecute el archivo en un entorno windows, todo el procedimiento se realizará desde una máquina virtual con sistema operativo linux.

Escenario:

Uno de los usuarios de la organización ha reportado actividad extraña en el computador. El equipo de respuesta a incidentes ha logrado identificar la presencia de un archivo sospechoso ubicado en el perfil de la usuaria. El archivo que usaremos es este: Folio-854500047700.zip < https://dvirus.training/wp-content/uploads/2020/01/Folio854500047700.zip> El archivo está comprimido, para descomprimir utilizar la contraseña “infected” En la mayoria de escenarios, lo primero que haría un analista de seguridad es obtener un hash del archivo y compararlo en virustotal. Sin embargo, si es un binario reciente probablemente no esté aún en la base de datos de las sandbox públicas y no reconozca el archivo como una amenaza o su detección sea baja. Es probable que cuando evalúe el binario aquí suministrado, este ya esté reportado en varias fuentes de información.

Análisis 14 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

Determinar el tipo de archivo

Al descomprimir el archivo encontramos que la extensión es .bin, sin embargo debemos desconfiar de esta información y determinar que tipo de archivo es. Para este propósito se utilizan las cabeceras del archivo (headers) las cuales pueden ser visualizadas con un editor hexadecimal y comparadas contra información que encontremos en internet. En el caso de los archivos PE, si observamos directamente en la documentación de referencia de Microsoft < https://docs.microsoft.com/en-us/windows/win32/debug/peformat#file-headers> aparecen varios valores hexadecimales que corresponden a archivos PE. Ejecutaremos la herramienta xxd para obtener las cabeceras y los números mágicos que identifican al tipo de archivo. xxd -g 1 Folio-854500047700.bin | more

15 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

Obtenemos los valores 4d 5a, estos valores perteneces a un ejecutable de windows.

Para obtener más información sobre los números mágicos de las cabeceras de archivo recomiendo el sitio de Gary Kessler < https://www.garykessler.net/library/file_sigs.html> . En linux contamos con una herramienta que hace este análisis de los números mágicos y es la herramienta file. file Folio-854500047700.bin

Al ejecutar el comando file, obtenemos el siguiente resultado.

El comando file muestra el tipo de archivo y la arquitectura. file también nos permite obtener el tipo MIME (Multipurpose Internet Mail Extensions) del archivo, para más información ver el rfc2045 < https://tools.ietf.org/html/rfc2045> . 16 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

file Folio-854500047700.bin --mime-type

Obtención de valores criptográficos.

Una vez identificado el tipo de archivo, obtenemos el valor del hash, los valores hash son como la huella dactilar (fingerprint) del archivo, los algoritmos hash estándares son MD5,SHA-1 o SHA-256 Estos valores son necesarios ya que permiten identificar al binario por más que este cambie de nombre o extensión. El valor del hash es usado con frecuencia como indicador de compromiso (IOC) en los procesos de respuesta a incidentes. los comandos md5sum, sha1sum y sha256sum permiten obtener el valor del hash requerido.

Observen como se mantiene el valor del hash, aún si el binario tiene otro nombre.

17 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

Introducción a pev

pev es una herramienta de código abierto para el análisis de archivos PE (Portable Executable). pev contiene varias herramientas de análisis, las cuales veremos a continuación. instalación: sudo apt install pev

pehash

pehash calcular los hashes del archivo. pehash Folio-854500047700.bin

Al ejecutar pehash sobre el binario obtuvimos el md5, el sha1, el sha256 del archivo y adicionalmente obtuvimos otros dos valores los cuales explicaremos a continuación. ssdeep

El valor ssdeep permite comparar archivos mediante un método conocido como fuzzy hashing, el método consiste en determinar un porcentaje de similitud con respecto a otro archivo. 18 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

por ejemplo si ejecutdo ssdeep sobre la carpeta en la cuál estoy trabajando los binarios aparecerá que la copia que hice utilizando el nombre cmd tiene un 100% de similitud. ssdeep -pb *

Import Hash

El imphash o importhash es otra técnica que permite identificar o clasificar malware mediante un hash calculado sobre la IAT (Import Address Table) o tabla de direcciones de importación. Este mecanismo creado por Mandiant permite asociar un especimen contra un grupo de amenazas conocido (threat groups). Para más información: https://www.fireeye.com/blog/threat-research /2014/01/tracking-malware-import-hashing.html < https://www.fireeye.com/blog/threat-research/2014/01/trackingmalware-import-hashing.html>

Extracción de cadenas de texto

La extracción de strings permite obtener alguna información básica sobre acciones o funcionalidades del binario. No en todos los casos, pero con algunos binarios podemos extraer nombres de archivos, librerías, urls, dominios, direcciones IP, comandos, entre otros 19 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

valores. Para obtener las cadenas de texto usaremos el comando strings. strings Folio-854500047700.bin

20 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

Por defecto strings imprime valores en ASCII, sin embargo, el malware pude utilizar otro tipo de codificaciones como Unicode. Para extraer las cadenas Unicode le pasamos como parámetro el tipo de codificación al comando strings,en este caso -el donde e: es para establecer el tipo de codificción y l: es para decirle que usaremos codificación de 16-bits. strings -el Folio-854500047700.bin

Al imprimir los valores unicode obtenemos información adicional que no vimos en la primera ejecución de strings

En este caso reconocemos que varios textos están escritos en múltiples idiomas y llamadas a funciones de teclado, lo cuál podría indicar que se trata de un malware con funcionalidades de keylogger.

Nota: la salida del comando strings es bastante extensa por lo que se recomienda combinar con comandos como more o less y el uso de expresiones regulares, por ejemplo: 21 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

strings -el Folio-854500047700.bin | grep -E ".exe" --color

En algunos casos al ejecutar el comando strings podríamos no obtener mayor información, esto puede ser debido a que el adversario haya empaquetado u ofuscado el ejecutable.

Identificación de Packers

Los packers, son programas que utilizan mecanismos de compresión para ofuscar el contenido de un binario con el fin de evadir algunos controles de seguridad o simplemente dificultar su análisis. Ejecutamos pepack y pasamos 2 parámetros, el nombre del binario y un archivo txt que contiene las firmas de múltiples packers. pepack Folio-854500047700.bin -d userdb.txt

https://dvirus.training/wp-content/uploads/2020/01/userdb.txt < https://dvirus.training/wp-content/uploads/2020/01/userdb.txt>

22 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

En otra entrada, hablaremos con más detalle sobre los packers y los metodos de desempaquetado.

Otras Propiedades.

Con la herramienta pescan podemos obtener otras propiedades, como la entropía del archivo, la fecha de compilado, funciones para evitar ser desensamblado, entre otras. pescan -v Folio-854500047700.bin

La entropía permite evaluar el nivel de aleatoriedad de datos que 23 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

contiene un archivo, con base en el valor de la entropia se podría establecer si el archivo ha sido comprimido o empaquedato. En linux podemos utilizar el comando ent para calcular la entropía de un archivo, en este caso vemos como el archivo comprimido tiene un valor más alto de entropía.

El timestamp, es un valor que indica en que fecha fue compilado el binario. Este valor puede ser usado como un indicador de compromiso o simplemente para crear una linea de tiempo sobre la campaña que estamos analizando.

Mecanismos de protección

Por último usaremos la herramienta pesec para identificar si el binario utiliza algún esquema de preotección como DEP/NX o ASLR. pesec Folio-854500047700.bin

peframe 24 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

peframe es una herramienta de código abierto escrita en python para el análisis estático de binarios PE, contiene funcionalidades para la detección de packers, mutex y mecanismos de protección. Instalación sudo apt install git python3-pip libssl-dev swig git clone https://github.com/guelfoweb/peframe.git cd peframe

dentro de la carpeta peframe, ejecutamos sudo python3 setup.py install

Ejecutamos el comando peframe --help para confirmar que la instalación ha sido exitosa.

En la parte inferior del comando de ayuda aparecerán las rutas en las cuales podemos configurar el api de virustotal y algunas reglas para extracción de strings y las reglas de yara. En el archivo config-peframe.json se puede agregar el api de 25 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

virustotal.

Una vez configuradas las opciones necesarias, analizamos el binario con peframe. peframe Folio-854500047700.bin

La ejecución arrojará varias secciones como por ejemplo: Acciones relacionadas con el comportamiento: En este caso ha detectado la detección de anti-debuggers, funcionalidades para la toma de pantallazos, escalada de privilegios, toma de capturas de teclado (keylogger) entre otras funciones.

26 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

Funciones criptográficas: peframe identifica funciones criptograficas utilizadas por el binario, este hallazgo es importante a la hora de realizar un análisis más en profunidad del binario.

Packers: peframe nos confirma la presencia de packers escritos en Delphi.

27 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

Funciones: Observamos varias funciones o librerías dinámicas (DLL’s) del sistema operativo que son importadas por el binario.

APIs: En la sección Possible Breakpoint, observamos el llamado a las APIs de Microsoft Windows

28 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

Otra forma de ejecutar peframe, es en modo interactivo, pasamos la bandera -i y podemos interactuar en una consola con comandos propios de la herramienta. peframe Folio-854500047700.bin -i

Si hemos asociado el API de virustotal podemos verificar si el binario aparece reportado por alguna solución anti-malware Ejecutamos los comandos virustotal y luego antivirus

29 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

Conclusiones:

Con estos simples pasos hemos obtenido información valiosa del archivo sospechoso: El tipo de archivo con base en los magic numbers Los valores criptográficos MD5 SHA-1 SHA-256 SSDEEP IMPHASP strings o cadenas de texto en ASCII o Unicode 30 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

La presencia de packers Funciones criptográficas usadas por el binario DLL’ s importadas y APIs Valores de entropía La fecha de creación del binario Identificación de mecanismos de protección. En la próxima entrada veremos como crear reglas de YARA para la detección de archivos maliciosos. FORENSICS < HTTPS://DVIRUS.TRAINING/CATEGORY/FORENSICS/>

Identificación de archivos en imágenes forenses con sorter < https://dvirus.training/2020/01 /09/identificacion-de-archivos-en-imagenes-forenses-con-sorter/> By dvirus < https://dvirus.training/author/dvirus/> 9 enero, 2020 < https://dvirus.training/2020/01/09/identificacion-de-archivos-enimagenes-forenses-con-sorter/> No hay comentarios < https://dvirus.training/2020/01/09/identificacion-de-archivosen-imagenes-forenses-con-sorter/#respond>

31 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

En la entrada anterior realizamos una introducción a The Sleuth Kit para el análisis de imágenes forenses < https://dvirus.training/2020/01/09/analisis-y-recuperacion-dearchivos-con-tsk/> . En esta entrada hablaremos de la herramienta sorter, una utilidad de TSK para el análisis y recuperación de archivos. sorter es un script en Perl que forma parte de TSK, sorter analiza el sistema de archivos para organizarlos según el tipo. Básicamente lo que hace es ejecutar el comando file en cada archivo y los organiza con base en una serie de reglas establecidas en los archivos de configuración. Los archivos de configuración que usa sorter por defecto se encuentran en la ruta donde está instalado TSK, para identificar los archivos de configuración ejecutamos el comando locate sorter

32 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

Los archivos de configuración contienen una serie de reglas donde se definen las categorías y los tipos de archivo correspondientes.

Si queremos generar un listado de todos los archivos por tipo con su respectivo hash, ejecutamos: sorter -o 3096576 -f ntfs -d recovered_files/ -sha1 Case01.raw

Nota: El número de offsed utilizado en este ejercicio lo obtuvimos del ejercicio anterior 33 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

-o: el offset -f: el tipo de sistema de archivos -d: la carpeta en la cual se almacenarán los resultados (si no existe, hay que crearla) -sha1 genera un hash SHA-1 de cada archivo Al ejecutar el comando aparecerá el siguiente mensaje:

sorter creará la siguiente estructura

Los archivos .txt generados contienen el tipo de archivo, el inodo, y el hash

34 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

Recuperación de Archivos

Sorter puede recuperar archivos y guardarlos en carpetas asociadas al tipo de archivo, a continuación veremos como se ejecuta el proceso.

Nota: Para ejecutar este proceso asegúrese de que cuenta con espacio suficiente en disco, se recomienda recuperar los archivos en un medio extraíble.

sorter -o 3096576 -f ntfs -d recovered_files/ -sha1 -s Case01.raw

Si pasamos el parámetro -s los archivos serán recuperados en la carpeta indicada. Por lo que la estructura cambiará a:

35 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

Los archivos .txt incluirán la ruta y el archivo recuperado

Sorter tiene la capacidad de validar los hashes contra librerías o bases de datos NSRL (National Software Reference Library), para realizar esta comparación es neceario contar con una base se datos las cuales se pueden descargar del sitio de NIST < https://www.nist.gov/itl/ssd/software-quality-group/nationalsoftware-reference-library-nsrl> y utilizar el parámetro -n y el nombre de la librería (NSRLFile.txt). Si queremos que sorter alerte si identifica un hash malicioso agregamos el parámetro -a, cuando realiza esta comparación e 36 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

identifica un hash que esté referenciado en la librería NSRL genera una entrada en el archivo alerts.txt En el sitio de NIST se encuentan las instrucciones para procesar el archivo NSRL. Referencias: man sorter FORENSICS < HTTPS://DVIRUS.TRAINING/CATEGORY/FORENSICS/>

Análisis y recuperación de archivos con TSK < https://dvirus.training/2020/01/09/analisisy-recuperacion-de-archivos-con-tsk/> By dvirus < https://dvirus.training/author/dvirus/> 9 enero, 2020 < https://dvirus.training/2020/01/09/analisis-y-recuperacion-dearchivos-con-tsk/> No hay comentarios < https://dvirus.training/2020/01/09/analisis-y-recuperacion-dearchivos-con-tsk/#respond>

Introducción

En esta entrada veremos una breve introducción a las herramientas que componen The Sleuth Kit para el análisis de imágenes forenses. The Sleuth Kit o TSK, es un conjunto de herramientas de código abierto para el análisis forense de imágenes de disco a través de línea de comandos. TSK puede ser instalado en Windows o Linux.

37 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

Preparación

Usaremos la versión 4 de TSK la cuál puede ser descargada desde el sitio oficial http://www.sleuthkit.org/sleuthkit/download.php < http://www.sleuthkit.org/sleuthkit/download.php> Para la instalación en linux basta con ejecutar el siguiente comando sudo apt install sleuthkit

Para el desarrollo de este ejercicio, hemos tomado una imagen forense creada con dc3dd de un equipo con sistema operativo Windows. Iniciamos con la validación de la imagen forense, ejecutamos el comando file para confirmar que se trata de una imagen de disco. file Case01.raw

Importante: Antes de iniciar cualquier análisis forense se debe validar la integridad del archivo para eso necesitamos el hash que se generó durante la adquisición forense de los medios (creación de la imagen), esta información generalmente está documentada en el formato de cadena de custodia. Validamos el hash, en este caso puntual nos suministraron un SHA-1, el valor del hash deberá ser idéntico al documentado en la cadena de custodia. 38 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

sha1sum Case01.raw

Análisis

Comenzaremos el análisis visualizando la tabla de particiones con el comando fdisk (requiere privilegios) por eso anteponemos el comando sudo. sudo fdisk -l Case01.raw

En el caso de esta imagen encontramos 7 particiones, en la columna start aparecerá el offset (inicio de la partición) debemos tener estos offset presentes para las siguientes fases del análisis.

También podemos obtener un resultado similar con el comando mmls que forma parte de Sleuth Kit mmls Case01.raw

39 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

fsstat: El comando fsstat muestra el detalle del sistema de archivos, allí podemos ver tamaño de los bloques, dirección del primer inodo, los offsets (punto de inicio) y el tipo del sistema de archivo. fsstat -o 2048 Case01.raw

El parámetro -o hace referencia al offset, es decir el sector en donde se ubica el inicio del sistema de archivos.

40 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

Ejecutamos fsstat sobre otro offset. fsstat -o 3096576 Case01.raw

41 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

fls permite listar archivos y carpetas sobre una imagen incluyendo aquellos archivos que hayan sido borrados (marcados con un *). fls -o 3096576 -f ntfs Case01.raw

Si queremos ver únicamente carpetas agregamos el parámetro -D fls -o 3096576 -f ntfs Case01.raw -D

Para ver únicamente archivos agregamos el parámetro -F 42 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

fls -o 3096576 -f ntfs Case01.raw -F

Con el parámetro -l obtenemos mayor nivel de detalle, incluyendo el tipo de archivo, el inodo, el nombre del archivo, fecha de modificación en la MFT, fecha de acceso del archivo, fecha de modificación del archivo, fecha de creación del archivo, el tamaño del archivo (bytes), el id de usuario y el id de grupo. fls -o 3096576 -f ntfs Case01.raw -l

Si queremos listar la información de manera recursiva utilizamos el parámetro -r , utilizamos | less para paginar la salida. fls -o 3096576 -f ntfs Case01.raw -r | less

Si queremos listar una Carpeta específica, utilizamos el parámetro -m y le indicamos la ruta desde donde debe listar, en este caso 43 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

usaremos la carpeta Archivos de Programa. fls -o 3096576 -f ntfs -m "Archivos de Programa" Case01.raw -r | less

Para nuestro propósito generaremos un archivo con el cual crearemos una línea de tiempo fls -o 3096576 -f ntfs Case01.raw -r -l -m "/" > lista_archivos

si leemos el archivo generado mostrará un resultado como el que observamos a continuación.

Con el comando mactime y el archivo generado con fls crearemos nuestra linea de tiempo: mactime -b lista_archivos > linea_de_tiempo

-b archivo de entrada 44 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

Si queremos generar un archivo separado por comas agregamos el parámetro -d, de esta forma se podrá leer el archivo con un programa que procese hojas de cálculo. mactime -b lista_archivos -d > timeline Con el archivo generado y el uso de filtros con grep o awk y algunas expresiones regulares podemos iniciar un análisis mas profundo de lo que sucedió en el sistema de archivos

ils permite listar la información de los inodos o los indices de nodo. Los inodos permiten acceder a un archivo en específico, cada archivo tiene un inodo único. Usando ils generaremos un archivo ils -o 3096576 -m Case01.raw -e > lista_inodos

la opción -m exporta la salida en formato mac (modificación, 45 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

acceso, creación) otras opciones adicionales a contemplar -e: muestra todos los inodos -p: Muestra inodos huérfanos El archivo resultante se ve así

Este archivo contiene el inodo (número resaltado en rojo en la imagen previa). De la misma forma podemos usar el comando mactime para generar la línea de tiempo. mactime -b lista_inodos

46 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

Recuperación de Archivos

Con base en el archivo de inodos vamos a ver como se puede recuperar un archivo borrado: Tomamos uno de los inodos, en este caso el inodo 219264 que pertenece al uno de los binarios de calc.exe que fue borrado del sistema.

Ejecutamos el comando istat para visualizar la información del inodo istat -o 3096576 -f ntfs Case01.raw 219264

Obtenemos la propiedades del inodo

47 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

Con el comando icat y el inodo recuperamos el archivo, en este caso envío la salida del comando a una ruta y le coloco el nombre_inodo para identificar más fácil el archivo. icat -o 3096576 -f ntfs Case01.raw 219264 > /home/dvirus/DFIR/calc_219264.exe

Validamos el archivo generado con el comando file, y efectivamente es un archivo ejecutable PE32 file /home/dvirus/DFIR/calc_219264.exe

48 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

Podemos utilizar el comando ffind para buscar el nombre del archivo con base en el inodo. ffind -o 3096576 -f ntfs Case01.raw 219264

Repetimos los comandos istat e icat con los inodos de interés. Posterior a la recuperación podemos analizar los archivos sospechosos con diversas técnicas de análisis de binarios las cuáles explicaré en otra entrada. Rerefencias: http://www.sleuthkit. < http://www.sleuthkit.org/> org < http://www.sleuthkit.org/> / < http://www.sleuthkit.org/> File System Forensic Analysis, Brian Carrier < https://www.amazon.com/-/es/System-Forensic-Analysis-BrianCarrier-ebook/dp/B016N80EZ8/> Mastering FreeBSD and OpenBSD Security: Building, Securing, and Maintaining BSD Systems , Yanek Korff < https://www.amazon.com/-/es/Yanek-Korff-ebook/dp /B00CLX8PK6/>

49 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

INCIDENT RESPONSE < HTTPS://DVIRUS.TRAINING/CATEGORY/INCIDENTRESPONSE/>

Respuesta a Incidentes – Correos Maliciosos < https://dvirus.training/2019/12/11/analisis-decorreos-maliciosos/> By dvirus < https://dvirus.training/author/dvirus/> 11 diciembre, 2019 < https://dvirus.training/2019/12/11/analisis-de-correosmaliciosos/> No hay comentarios < https://dvirus.training/2019/12/11/analisis-de-correosmaliciosos/#respond>

Este artículo tiene como objetivo orientar a analistas de seguridad y 50 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

administradores de correo en la ejecución de algunos procedimientos básicos ante incidentes de seguridad relacionados con correos potencialmente maliciosos.

Preparación:

A continuación una serie de herramientas de extracción y análisis de correos electrónicos, para esta serie de ejercicios usaremos como sistema operativo base Debian, Ubuntu o Kali Linux. Oledump wget http://didierstevens.com/files/software /oledump_V0_0_43.zip

Conversor de archivos msg a eml sudo apt install libemail-outlook-message-perl libemail-sender-perl

Detección

Los correos sospechosos generalmente son alertados por los usuarios, en otros casos las herramientas de seguridad como consolas de anti-spam o algunas funcionalidades de los UTM (Unified Threat Management) pueden generar alertas de correos sospechosos.

51 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

Una vez detectado el correo electrónico, estos deben ser enviados para análisis, la forma correcta es guardarlo y enviarlo como adjunto. Reenviar el correo no es la acción más recomendada ya que se modifican las cabeceras del correo electrónico. Algunos indicadores a tener en cuenta para detectar correos sospechosos: Solicitudes para ejecutar acciones inmediatas Descargar adjuntos Dar clic en enlaces Realizar operaciones financieras Cambios de credenciales Mala ortografía (cada vez menos frecuente) Mensajes relacionados con algún premio (Ganador, Invitación gratuita a X o Y evento)

Análisis

Las tareas que realizaremos a continuación son manuales y permiten extraer y analizar elementos que permitan identificar si un correo es malicioso o no. Es importante que los analistas de seguridad eviten subir correos electrónicos o sus adjuntos a plataformas públicas de análisis automático (sandbox) como VirusTotal o Any.Run ya que si es un correo legítimo y este contiene información sensible, esta quedará expuesta en estos portales de análisis públicos.

52 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

Iniciaremos con un análisis básico de las propiedades del correo: Verificamos el tipo de archivo que nos han suministrado. file email.msg

file --mime email.msg

En este caso se trata de un archivo de outlook , bajo el estándar CDF (Compound Document Format) Si intentamos visualizar el archivo con un editor de texto aparecerá algo como esto: cat email.msg | more

53 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

Para analizarlo con herramientas convencionales de Linux, vamos a convertirlo a un formato estándar en este caso EML, el cuál nos permitirá ver la información en texto claro. msgconvert email.msg

Si la ejecución es exitosa obtendremos un nuevo archivo con extensión .eml ls -l email.*

Conservaremos los dos archivos ya que desarrollaremos el análisis de dos formas, uno directamente sobre el archivo EML y otro sobre el MSG

Análisis de Cabeceras (headers)

Las cabeceras de un correo contienen información particular del correo electrónico incluyendo, el emisor, el receptor, fecha, hora, asunto y algunos elementos del enrutamiento del correo electrónico. cat email.eml | more

54 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

Date: Contiene el día, fecha, hora y la zona horaria del mensaje. Subject: Contiene el asunto del mensaje From: El emisor o la dirección que envía el correo electrónico, dentro de este campo podemos visualizar el nombre del emisor y la cuenta de correo. Received: Este campo nos muestra la dirección IP y el dominio desde donde se emitió el correo electrónico, en este ejemplo vemos 3 secciones de Received, estos se leen con un orden cronológico de abajo hacia arriba, siendo el de más abajo el correo original.

55 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

Cada sección received contiene los siguientes elementos from: Dominio y dirección IP desde donde se envía el correo by: El servidor de correo realiza la entrega, en este caso puntual vemos que es un servidor de correo de google.

with: El servicio utilizado para el envío generalmente vamos a encontrar ESMTP o Microsoft SMTP, id: El número de identificación del mensaje Existen herramientas en línea para el análisis de cabeceras. https://mxtoolbox.com/Public/Tools/EmailHeaders.aspx < https://mxtoolbox.com/Public/Tools/EmailHeaders.aspx> https://www.iptrackeronline.com/email-header-analysis.php < https://www.iptrackeronline.com/email-header-analysis.php> El análisis de cabeceras es de utilidad para la identificación de los elementos principales del correo electrónico, validar que cuenta es la envía realmente el correo, desde donde proviene y con estos 56 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

elementos validar listas negras como primera medida de contención.

Análisis del Cuerpo del Correo (Body)

Continuando con la lectura de el correo, posterior a las cabeceras encontraremos una línea que hace referencia a los límites del correo (boundary) este valor se encuentra en el objeto Content-Type.

Según el RFC-1341, este valor (boundary) hace referencia a un correo con múltiples partes o secciones , es decir indica que el correo electrónico consta de múltiples partes las cuales podemos identificar con el código de límite. El mensaje que estamos analizando contiene múltiples secciones que hacen referencia al código de límite terminado en 11576.

57 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

Es común que al visualizar los correos electrónicos encontremos secciones codificadas, generalmente en base64 como se observa en la siguiente imagen.

Si el correo no está codificado, podemos extraer otros elementos de interés como URLs con un simple grep o mediante el uso de expresiones regulares cat email.eml | grep http --color

Sin embargo, lo más probable es que el cuerpo del mensaje al igual que los adjuntos vengan codificados.

58 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

Para leer el contenido ofuscado simplemente copiamos el texto codificado en base64 y lo de-codificamos haciendo uso de herramientas como CyberChef o a través del comando base64 https://gchq.github.io/CyberChef/ < https://gchq.github.io /CyberChef/>

base64 -d encoded.text

Análisis de Adjuntos

A continuación veremos el análisis de correos con un mayor nivel de profundidad. Utilizaremos la herramienta oledump.py, un script en python 59 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

desarrollado por Didier Stevens < https://twitter.com /DidierStevens> la cual permite analizar objetos en formato OLE (Object Linking and Embedding), un protocolo desarrollado por Microsoft utilizado principalmente para hacer referencia a archivos adjuntos o embebidos. Ejecutamos el script oledump.py y le pasamos como parámetro el correo electrónico en formato .MSG oledump.py email.msg

La ejecución del comando nos arroja la siguiente información, la primera columna corresponde al ID de cada elemento impresos en orden ascendente, en la segunda columna aparece el indicador de estado, generalmente es ‘M’ o ‘m’ lo cual indica que el stream o elemento contienen una macro o código VBA (Visual Basic for Applications). En algunos casos veremos la letra E que indica la existencia de código VBA corrupto.

60 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

En este caso, oledump ha detectado una macro en el stream número 4, antes de analizarla veremos algunos plugins de utilidad a la hora de analizar correos electrónicos. oledump.py email.msg -p /home/dvirus/DFIR/email /plugin_msg.py | more

Le pasamos a oledump un parámetro adicional (-p) que hace referencia a un plugin, en mi caso la ruta que aparece en el comando previo, es la ruta donde descargué y descomprimí el instalador de oledump. El plugin MSG permite extraer elementos de los mensajes de outlook, incluyendo el nombre del adjunto, la codificación, e incluso información que se aloja en las cabeceras del mensaje.

Otro plugin de utilidad para este caso es plugin_vba_dco.py el cuál nos muestra algunas funciones utilizadas por el código malicioso. oledump.py email.msg -p /home/dvirus/DFIR/email 61 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

/plugin_vba_dco.py

De esta forma confirmamos la existencia de un script VBA Ahora analizaremos el stream #4 el cual contiene código VBA, pasamos el parámetro -s4 para hacer referencia al stream de interés. oledump.py email.msg -s4 | more

62 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

El resultado muestra algunas cadenas interesantes, sin embargo, debido a que el VBA se mostraba como corrupto vamos a pasar un parámetro para ver con mayor claridad la macro. oledump.py email.msg -s4 --vbadecompresscorrupt

El resultado nos arroja el código embebido en el documento de word adjunto al correo electrónico. Con estos pasos hemos confirmado información sobre el adjunto y la existencia de código VBA. Extraemos el archivo adjunto, en este caso el archivo .doc que 63 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

identificamos previamente, le pasamos a oledump el parametro -d (dump) y lo redirigimos a un archivo con el nombre que observamos previamente, puede ser cualquier nombre. oledump.py -s4 -d email.msg > "Your Invoice.doc"

Validamos las caracteristicas del archivo exportado para comprobar que el proceso sea correcto. file Your\ Invoice.doc

Al analizar el resultado observamos que efectivamente hemos exportado un documento de word de una página y 6 palabras, bastante sospechoso. Ejecutamos nuevamente oledump sobre el archivo extraído y obtenemos nueva información.

64 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

Los streams 6 y 7 nos muestran la letra M, lo cual hace referencia a las macros, mientras que el stream 8 muestra la letra m lo que indica la existencia de atributos de una macro. Nuestro interés se centra en los streams 6 y 7. oledump.py -s6 Your\ Invoice.doc | more

Usando el plugin vba_dco para visualizar propiedades del documento. oledump.py Your\ Invoice.doc -p /home/dvirus /DFIR/email/plugin_vba_dco.py

65 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

Exportamos los scripts sobre los streams 6 y 7 respectivamente. oledump.py -s6 -v Your\ Invoice.doc > Yacjrozanb.vba oledump.py -s7 -v Your\ Invoice.doc > Zzjcjvohytfm.vba

Obtenemos 2 archivos los cuales nombré con base en el nombre de cada stream

Al visualizar los archivos obtendremos el código que debemos analizar, pero el análisis de los scripts JS no forman parte de este artículo.

66 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

Por ahora generamos un hash de cada script sha256sum *.vba

Contención

Si confirmamos que el correo es malicioso podemos generar los siguientes IOCs (Indicadores de Compromiso) Direcciones IP Nombres de dominio Cuentas de correo Hash del archivo word Hash de los archivos VBA Acciones a desarrollar: Búsqueda de correos entregados en los buzones por asunto o remitente para identificar a las posibles victimas Bloqueo en el antispam y servidor de correo de las cuentas y 67 of 68

1/25/20, 3:45 PM

D-Virus | DFIR – Incident Response | Network Fo...

https://dvirus.training/

dominios de riesgo. En los firewalls y proxies, bloqueo de URLs maliciosas para evitar el acceso o descarga de archivos.

Referencias

https://www.w3.org/Protocols/rfc1341/7_2_Multipart.html < https://www.w3.org/Protocols/rfc1341/7_2_Multipart.html> oledump.py < https://blog.didierstevens.com/programs/oledumppy/>

© 2020 D-Virus | DFIR < https://dvirus.training/>

68 of 68

Powered by WordPress < https://wordpress.org/>

To the top ↑

1/25/20, 3:45 PM