Search Results for: análisis forense

Análisis Forense. Cadena de Custodia de la evidencia digital

img1El concepto Cadena de Custodia (también referenciado en la literatura como CdC) no es algo que solamente se utilice en el entorno del Análisis Forense informático, sino que es un concepto ligado al ámbito legal y judicial, y es algo que incumbe a la recopilación de evidencias de cualquier tipo.

Para entender su importancia pongamos como ejemplo un caso que, desgraciadamente, está a la orden del día: un caso de corrupción.

[Read more…]

Una reflexión sobre la alteración en el Análisis Forense

En multitud de ocasiones, cuando se habla de las actuaciones de un forense informático se remarca la necesidad de no alterar “la escena”. Se nos recuerda que debemos ser muy cuidadosos para no alterar nada, no conectar nada, no ejecutar nada. Aunque en la práctica, en mi opinión, esto no siempre es del todo así.

A la cabeza me viene el Principio de incertidumbre de Heisenberg, que se puede resumir de una manera muy sencilla en su aplicación práctica como que cuando se quiere medir la posición de una partícula subatómica ésta se altera, por lo que nuestra medición ya no será la real. En definitiva, si queremos medir la posición o características de un electrón, alteraremos su estado. O en nuestro caso, si queremos recopilar información, seguro que alteraremos algo.

[Read more…]

Análisis forense en sistemas Linux – Obteniendo información (Parte 2)

(Para evitar confusiones que pueda haber creado la anterior entrada, comentar que este post no trata de ser una guía paso a paso de un análisis forense, sino que consiste en proporcionar información que el auditor debe conocer a la hora de realizarlo e información que deberá utilizar según las necesidades del caso. Tanto vierito5 como Román Ramírez hacen apreciaciones muy interesantes en los comentarios de la primera parte de esta serie, que recomiendo encarecidamente leer.)

Después de haber obtenido todas las características principales del sistema a analizar, debemos averiguar qué ha podido pasar o qué acciones se han podido llevar a cabo. Para esto, Linux dispone de una serie de registros (logs) que nos facilitarán el obtener este tipo de información. Con la siguiente lista, se pretende hacer una breve introducción a algunos de los más importantes:

  • /var/log/boot.log: En este registro podremos encontrar información que se almacena durante el arranque del sistema.
  • /var/log/dmesg: Guarda los mensajes que lanza el kernel. Entre otros datos, almacena los mensajes sobre dispositivos hardware que el kernel detecta durante el arranque del sistema.
  • /var/log/cron: En este registro se guardarán las acciones realizadas por “cron” (automatizador de tareas en sistemas Unix). Aunque en algunos sistemas este log viene desactivado por defecto, podemos obtener la información del mismo de /var/log/syslog con la siguiente instrucción: zgrep -i cron /var/log/syslog”.
  • /var/log/apache2 (o /var/log/httpd): En este directorio encontraremos el registro de logs del servicio apache a través de los archivos access.log y error.log.
  • /var/log/lastlog y /var/log/wmtp: El primero muestra cuando fue el último acceso de cada usuario al sistema, y el segundo un registro de los accesos del usuario al sistema. Para poder visualizarlos es necesario hacerlo a través de los comandos lastlog (para el primero) y last (para el segundo), ya que no se tratan de archivos de texto ASCII.
  • /var/log/btmp: En este archivo podemos encontrar la lista de accesos fallidos al sistema. Como en el caso anterior, el archivo no se encuentra en ASCII, por lo que para visualizarlos utilizaremos el comando lastb.
  • /var/log/mail.log, /var/log/mail.err, /var/log/mail.warn y /var/log/mail.info: Contienen los registros del servidor de correo que haya en el sistema. Entre otros datos, podremos encontrar información sobre los e-mails enviados.
  • /var/log/messages: Este registro almacena los principales mensajes del sistema.
  • /var/log/auth.log: Guarda información sobre el sistema de autorización de usuarios y permisos del mismo.
  • /var/log/samba/: En este directorio se almacenan los logs relacionados con el servicio samba, el cual permite conectar equipos Windows con Linux.
  • .bash_history: El archivo lo podemos encontrar en el directorio home de cada usuario. En él encontraremos el historial de comandos realizados por el usuario en cuestión. Además de accediendo al propio fichero, también puede accederse a su contenido a través de la instrucción history.

Para concluir el artículo, comentar que existen muchos más logs que podrían ser de interés dependiendo de los hallazgos realizados o de las acciones realizadas por el atacante. Por este motivo es muy importante prestar atención a cada uno de ellos y saber hacía donde dirigir el análisis forense para obtener el mejor resultado posible a medida que éste se va realizando.

Análisis forense en sistemas Linux – Obteniendo información (Parte 1)

Con esta serie de dos artículos se pretende hacer una pequeña descripción sobre algunos comandos y registros de logs que deben analizarse cuando nos encontramos ante un análisis forense en un sistema Linux.

(Añadido 29.05, 16h)

Viendo que el post está causando confusiones a la hora de cómo y cuándo realizar las acciones descritas, comentar que cuando nos encontramos ante el análisis forense de cualquier sistema, se debe evitar trabajar sobre el propio sistema afectado, ya que cualquier modificación que hagamos en el equipo se verá reflejada y alterará la evidencia (incluyendo cualquier MAC time existente). Además, en el caso de tener que demostrarse en un juicio, se deberá poseer el sistema original sin haber sido modificado.

Para realizar esta serie de posts, se ha cargado la imagen del sistema afectado en una máquina virtual, por lo que ante cualquier modificación realizada, siempre se puede volver al sistema “original”.

[Read more…]

Análisis forense de memoria RAM (“Mandiant Memoryze && Mandiant AuditViewer”)

En un post anterior Ximo nos habló de los análisis forenses de memoria RAM en Linux y dentro de esta entrada hizo mención a dos herramientas para el análisis de memoria RAM en entornos Windows, que son Mandiant Memoryze y Mandiant AuditViewer.

En esta entrada vamos a ver funcionalidades de la herramienta para conocerla un poco y que sirva como presentación para los que no la conocen. Las pruebas para esta entrada las hemos hecho sobre los ficheros de memoria del reto DFRWS 2005 Forensics Challenge. Por si alguien quiere probar la herramienta los ficheros de memoria son memory1 y memory2. Para profundizar os aconsejamos la guía de usuario que ofrecen los autores y donde están todas las opciones detalladas.

Con todo listo pasamos a cargar el fichero “memory1” en la herramienta AuditViewer, con el wizard de la herramienta. Resumiendo la configuración para la carga del fichero y su análisis, marcaríamos todo menos la adquisición de procesos y drivers; además, para este caso concreto recopilamos la información de todos los procesos. Hay que tener en cuenta que en este caso el fichero de memoria RAM es de 128 MB, por lo que da más pie a marcar todas las opciones y en un corto periodo de tiempo obtener los resultados. En el caso de tener un fichero de memoria más grande, el tiempo de análisis por parte de la herramienta será más largo, ¿obvio no? :), viéndonos obligados a ser más finos en la configuración, sobretodo si no contamos con mucho tiempo. Añadir que esta entrada no intenta resolver el reto, sino que únicamente usa esas imágenes para mostrar funcionalidades de la herramienta.

Una vez cargado el fichero tendremos la siguiente imagen, donde se destaca en color ROJO uno de los procesos que hay en memoria que UMGR32.EXE:


Ilustración 1. Proceso sospechoso

Si miramos la documentación veremos que esto significa que se ha detectado algo sospechoso en ese proceso. Lo primero que nos debemos preguntar nosotros es: ¿Qué es UMGR32.exe? ¿Es un proceso malicioso o es un proceso legítimo y habitual en el sistema operativo? Si realizamos una búsqueda rápida en Google, vemos que todo apunta a que se trata de “Back Orifice 2000”, partiendo del nombre del proceso, dato no determinante.

Con lo que hemos encontrado en Google, decidimos empezar nuestro análisis por este proceso. Es por esto que vamos a ver la información recopilada sobre ese proceso en las diferentes pestañas que nos ofrece la herramienta:


Ilustración 2. Pestañas de información sobre un proceso

Iremos viendo la información y analizando, intentando encontrar respuestas a las preguntas que pretendemos responder con nuestro análisis. Una de las opciones más interesantes, como suele ser habitual, es Strings, que nos mostrará las cadenas del proceso. En nuestro ejemplo veremos cosas cómo:


Ilustración 3. Strings


Ilustración 4. Strings

En las imágenes anteriores se ven cadenas bastante sospechosas, como metasploit.exe, como cadena de apertura de sockets en el puerto 44444, etcétera.


Ilustración 5. Puertos abiertos

Además, si vamos a la pestaña de puertos vemos como tiene a la escucha el proceso el puerto 44444. Hecho que suele ser sospechoso, ¿no? :). Con lo que se requiere analizar en profundidad.


Ilustración 6. Secciones de memoria

El proceso que ha detectado como sospechoso y por eso lo ha marcado en rojo, es porque tiene código inyectado en memoria y esto requiere un análisis especial. La herramienta de una manera muy visual y sencilla nos ofrece muchas posibilidades para analizar la memoria RAM y generar un informe de manera automática en diferentes formatos. Añadir que la herramienta tiene ciertos mecanismos que ayudan a detectar anomalías, como es el caso de Mandiant Malware Rating Index (MRI), así como la posibilidad de cargar reglas de Snort que transforma en plugins para buscar en la memoria (no he probado esta funcionalidad).

Mi impresión al utilizar la herramienta ha sido buena y os animo a los que no la conozcan a probarla y como siempre a darnos su opinión. Como siempre esperamos que os sea de utilidad.

Análisis forense en XEN con LVM

Cada vez más las tecnologías de virtualización están más extendidas y prácticamente no se suelen encontrar servidores físicos dedicados. Es por ello que a la hora de gestionar un incidente que requiera de análisis forense detallado es necesario conocer el funcionamiento de cada tecnología de virtualización existente para poder tomar las evidencias necesarias para el estudio del caso.

Normalmente, dentro del grupo de gestión de incidentes solemos encontrarnos con casos donde la tecnología de virtualización empleada es VMWare o Hyper-V. Pero en otras ocasiones, como la que veremos a continuación, nos encontramos con otro tipo de tecnología de virtualización que no es tan común. Para esta entrada explicaremos de forma sencilla y resumida los pasos necesarias para tomar las evidencias del sistema de ficheros de un entorno de virtualización XEN, el cual presenta la particularidad de disponer de volúmenes lógicos LVM.

En primer lugar, es necesario exportar la máquina virtual desde Xen Server mediante la orden “xe vm-export”, almacenándola en un disco duro externo:

# xe vm-export vm=Nombre_VM filename=/media/XXX/maquina.xva

Una vez copiada la máquina virtual debemos crear la suma de comprobación para la cadena de custodia:

# md5sum maquina.xva

Ya en el laboratorio de análisis forense de nuestra empresa debemos extraer los discos duros de la máquina virtual Xen. Para ello desempaquetaremos en primer lugar la máquina, generándose un fichero XML y un directorio Ref:XX que contiene el disco duro:

# tar xf maquina.xva 2> /dev/null

En el siguiente paso se deberá emplear un script que permita crear el disco duro de la máquina virtual a partir del directorio Ref:XX. Este paso es delicado puesto que si empleamos la herramienta xenmigrate.py nos generará la imagen del disco duro sin tener en cuenta los ficheros sparse (copia en escritura), muy comunes en la virtualización. Esto funciona para discos duros con particiones estándar pero no en particiones LVM, donde al intentar montar los volúmenes lógicos, nos dará un error de entrada/salida.

Debido a este problema es necesario emplear una herramienta que soporte los ficheros sparse, de tal forma que al detectar un fichero de este tipo rellene con 0 el espacio que realmente tiene asignado. Mi compañero Raúl encontró un script sencillo en bash, por supuesto hecho por un mago :) que permitía esta función:

xenmigrate.sh: 

#!/bin/bash 

dd if=/dev/zero of=blank bs=1024 count=1k 
test -f image.img && rm -f image.img 
touch image.img 

max=`ls ???????? | sort | tail -n1` 
 
for i in `seq 0 $max`; do 
        fn=`printf "%08d" $i` 
        echo -n "$fn of $max" 
        if [ -f "$fn" ]; then 
                echo " - appending chunk" 
                cat $fn >> image.img 
        else 
                echo " - filling blank" 
                cat blank >> image.img 
        fi 
done 

rm -f blank 

echo "Done."

Podemos proceder a la extracción del disco duro de la máquina virtual empleando el script anterior:

# cd Ref\:11/
# ./xenmigrate.sh imagen

Como resultado se obtiene una imagen de 20GB, que en nuestro caso coincide con los asignados al disco duro virtual frente a los 6GB que ocupan los datos. Por tanto confirmamos que se han rellenado los ficheros sparse con datos (ceros); una vez obtenida la imagen comprobamos que realmente se ha extraído correctamente:

# mv imagen ../
# cd ..
# mmls imagen

DOS Partition Table
Offset Sector: 0
Units are in 512-byte sectors

Slot Start End Length Description
00: Meta 0000000000 0000000000 0000000001 Primary Table (#0)
01: ----- 0000000000 0000000062 0000000063 Unallocated
02: 00:00 0000000063 0000208844 0000208782 Linux (0x83)
03: 00:01 0000208845 0041929649 0041720805 Linux Logical Volume Manager (0x8e)

El siguiente paso consiste en obtener la partición boot y la partición LVM:

# dd if=imagen bs=512 skip=63 count=208782 of=sda1
# dd if=imagen bs=512 skip=208845 count=41720805 of=lvm

A continuación se debe ya tratar la partición LVM como si de una partición raw LVM se tratara, creando por tanto los volúmenes lógicos:

# losetup /dev/loop0 lvm
# losetup -f lvm
# losetup -a

/dev/loop0: [0861]:26132492 (/media/XXX/xen/lvm)
# kpartx -a -v /dev/loop0

Como vemos, las unidades lógicas del volumen VolGroup00 se han creado en el sistema de ficheros:

# pvdisplay 
  --- Physical volume --- 
  PV Name               /dev/loop0 
  VG Name               VolGroup00 
  PV Size               19,89 GiB / not usable 19,49 MiB 
  Allocatable           yes (but full) 
  PE Size               32,00 MiB 
  Total PE              636 
  Free PE               0 
  Allocated PE          636 
  PV UUID               XXXXX-XXXX-XXXX-XXXX-XXXX 
# ls -l /dev/mapper/ 
total 0 
brw-rw----. 1 root disk 253,   1 jul 12 18:04 VolGroup00-LogVol00 
brw-rw----. 1 root disk 253,   2 jul 12 18:04 VolGroup00-LogVol01

A partir de aquí activamos las unidades lógicas para poder hacer el volcado:

# vgchange -ay 
  2 logical volume(s) in volume group "VolGroup00" now active

Obtenemos las particiones contenidas en la unidad LVM:

# dd if=/dev/VolGroup00/LogVol00 bs=512 of=sda2 
# dd if=/dev/VolGroup00/LogVol01 bs=512 of=swap

Una vez extraídas las particiones ya podemos desmontar la unidad lógica LVM:

# vgchange -a n /dev/loop0 
# kpartx -d /dev/loop0 
# losetup -d /dev/loop0

Por fin disponemos de las particiones en raw de la máquina virtual para poder usar las herramientas de análisis forense o montar el entorno en solo lectura para su tratamiento. Por tanto a partir de ahora ya podremos comenzar a analizar, desde un punto de vista forense, las particiones sda1, sda2 y swap de la máquina virtual extraída.

Análisis forense de memoria RAM en Linux

(N.d.E. Hemos tenido algunos problemillas esta mañana con el blog. Esperamos que todo haya vuelto ya a la normalidad)

Durante el inicio de un incidente, el grupo encargado de su gestión debe comprobar primeramente si el incidente ha ocurrido. En caso afirmativo el primer paso a realizar sobre él o los entornos afectados es el volcado de la memoria RAM, puesto que es la pieza más crítica al ser la parte más volátil, y por ello, la que más fácilmente puede ser alterada durante el incidente.

Para ello se suelen emplear tanto herramientas libres como privadas, principalmente winXXdd o memoryze para entornos Windows y Memdump para entornos Linux. Esa captura debe ser copiada a otro entorno y nunca en el sistema de ficheros del entorno afectado, para ello se puede emplear NetCat (nc) o Samba (CIFS).

Pero es el análisis posterior donde radica la dificultad. Debemos de ser capaces, de dado el fichero en crudo de la memoria RAM, poder obtener información importante como qué programas se estaban ejecutando, qué puertos escuchando, qué ficheros abiertos, qué usuarios conectados, qué rutas ARP, qué configuración de las interfaces de red, etc.

En caso de tratarse de entornos Windows existen varias herramientas como Memparser para Windows 2000, Volatility para Windows XP SP2 y 3, o la herramienta por excelencia que consiste en la combinación de la captura de la memoria mediante Mandiant Memoryze y su posterior análisis con Audit Viewer.

[Read more…]

UCAM CTF Forense — Like old school II

En mi post anterior se hablaba de procesos básicos de cualquier análisis forense como son la recolección de información, preanálisis de sesiones de usuario/sistema y de credenciales LSASS. En este post voy a proporcionar una visión muy general de procesos y tácticas del adversario empleadas en las comunicaciones, para ganar persistencia, vectores de entrada y descuidos humanos.

Comunicaciones > USB

Los USB conectados al equipo de Lionel son fácilmente rastreables, tanto de forma manual como con herramientas de “botón gordo“. Veremos ambas formas, para entender mejor cómo se realizaba cuando no existían estas commodities.

Forma manual: En el fichero de eventos ‘System.evtx’ cazamos el EventID 20001 producido a las 19.04.09 23:29:57 (UTC) que nos indica que se ha instalado un nuevo driver; en este caso se observa que se trata de una memoria flash de la marca Kingston, modelo DT101 G2.

Forma automática: Importando el fichero del registro SYSTEM en la herramienta USBDeview de Nirsoft con ‘Options > Advanced Options > Load From: External SYSTEM Registy File, SYSTEM Registry File: {ruta del fichero SYSTEM}’ podemos observar de forma instantánea que se han obtenido las trazas que justifican que se ha introducido un Kingston DT101 G2.

Por dar otra alternativa, en la parte inferior de la imagen anterior vemos la GUI de USB Detective que, pese a ser una herramienta freemium, su versión Community nos muestra de forma elegante resultados muy similares a USBDeview. El USB en cuestión tendría la forma y color de uno de los siguientes. No he sido capaz de identificar su tamaño.

Comunicaciones > Ethernet

Observamos que hay una instalación de XAMPP que contiene en la ruta ‘\xampp\htdocs’ los ficheros de la web bufetehutz[.]com. XAMPP es un entorno multiplataforma de desarrollo web en PHP que contiene los componentes Apache, MariaDB, PHP y Perl. Recordemos que XAMPP está pensada para usarse en contextos educativos y de desarrollo, por lo que se desaconseja su uso en sistemas en producción. Además, tiene grandes carencias de seguridad por defecto, por ejemplo, la cuenta de administrador de MySQL (root) no tiene contraseña, y el demonio MySQL así como PhpMyAdmin y la página demo de XAMPP (carpeta dashboard) son accesibles por red.

Analizando su contenido, llama la atención el directorio ‘\testsite’ en el que existe una instalación de WordPress en local que es el CMS (Content Management System) más popular del mercado, y el que está corriendo la web de Lionel.

En el fichero wp-config.php tenemos la configuración del servidor MySQL del que está tirando la web. De él, podemos extraer las claves de conexión, prefijos de las tablas de la base de datos y varias variables de WordPress.

En este caso, se están empleando los valores por defecto (root:<blanco>) para conectarse a una MySQL alojada en el mismo equipo. Vista la seguridad muy cuestionable de la web es posible que el atacante hubiera accedido aprovechando varias de sus vulnerabilidades.

Analizando el fichero ‘\xampp\apache\logs\access.log’ y filtrando los accesos que se producen desde localhost (que eran varios cientos), se reducen a 43 las peticiones de recursos, desde las IPs locales 192.168.1.153 (17), 192.168.1.106 (3) y 192.168.1.42 (23), siendo la última IP la que más peticiones realiza al servidor web y también, concretamente, a la web del bufete.

Vamos a seguir un paso más a ver si somos capaces de acceder al panel de gestión de WordPress sabiendo que Lionel y las contraseñas robustas no son buenos amigos. En la ruta ‘\xampp\mysql\data\wordpress’ se encuentra el fichero wp_users.idb que junto a otros, conforman la base de datos MySQL con sus metadatos y datos. Si nos fijamos en su contenido, identificamos lo que parece el hash de la contraseña del usuario admin.

Es decir ‘admin:$P$BI9SyUjvR/RfnoKXRkXlOlmhP.bSBZ.’ solo hace falta crackearlo para obtenerla en plano, por ejemplo usando John, que nos devuelve a los pocos segundos admin1234.

Persistencia

La persistencia, AKA “capacidad de sobrevivir a un reinicio”, es una condición de victoria para cualquier atacante. La pueden conseguir de muchas formas y lugares del sistema operativo. Con diferencia la ubicación más frecuente sabemos que son los valores Run/RunOnce del registro de Windows, en los que se puede almacenar rutas de ficheros, comandos y scripts que se cargan en la fase de startup del equipo o sesión de usuario.

En el espacio de usuario que se carga de forma específica para cada usuario (Lionel, Secretaria, Jeff) tenemos varias rutas:

En el espacio del sistema que guarda la configuración específica del equipo y se carga para cualquier usuario que inicie sesión, también tenemos unas cuantas más:

Rebuscando de forma manual por ellas (una alternativa de botón gordo sería RegRipper), detectamos que para el espacio de usuario de Jeff se ha creado el valor “Iniciar” que contiene como dato la ruta de un archivo batch ‘C:\Windows\jeffi\backup.bat’.

Este fichero alojado en la carpeta ‘C:\Windows\jeffi\’ establece una shell reversa estableciendo una conexión netcat al puerto 6666 (dos archiconocidos por manejar en muchas ocasiones tráfico ilegítimo) hacia la IP 80.98.23.34 geolocalizada en Debrecen, Hajdú-Bihar (Hungría). Como no des explicaciones convincentes, individuo Jeff, estás en el punto de mira.

Si nos fijamos en el contenido de la carpeta, contiene una serie de ficheros en C y ejecutables que buscando por Internet apuntan a repositorios con una versión adaptada de netcat para Windows (ejemplo de fork aquí). Entre estos ficheros hay varios que no aparecen en netcat. Son ‘backup.bat’, ‘jijijiji.txt’ y un par más que están vacíos.

Si vemos el contenido de ‘jijijiji.txt’ tenemos el comando reg add, una instrucción de adición del valor “Iniciar” en una clave del registro de Windows, que coincide con la encontrada previamente, lo cual implica que con alta probabilidad se ha ejecutado en el equipo.

Hasta ahora hemos identificado la técnica de persistencia usada y un posible culpable, pero desconocemos el vector de entrada. No se encuentran antecedentes en Internet que vinculen la IP a actos malintencionados, por lo que se recomienda ponerla en cuarentena/blacklist y denunciarla a los FCSE competentes.

Vector de entrada

En la raíz del árbol de directorios del disco encontramos la carpeta ‘C:\Casos Bufete\’ que contiene subcarpetas de juicios con imágenes y correos de sus implicados. Tenemos que tener muy claro que, como peritos, tenemos la obligación de la confidencialidad para/con nuestros clientes. Por tanto, mientras esté justificado el motivo o necesidad, estaremos interfiriendo en la intimidad de los usuarios de los equipos que auditemos.

Si nos fijamos en la ruta ‘C:\Casos Bufete\Netflix vs Jeff Albertson\Operaciones cuentas.eml’ tenemos un .eml correspondiente a un email enviado a la dirección de correo corporativo de Lionel (lionel[at]bufetehutz[.]com) con fecha 19.04.08 17:38:04.

Su cabecera SPF (Sender Policy Framework) muestra una discrepancia entre los servidores de correo legítimos en origen y el empleado en este correo. El mecanismo SPF no valida el campo visible “From” de la cabecera, para ello está el mecanismo DMARC.

Sin entrar en detalles, lo que valida son varias de las cabeceras ocultas que se transmiten junto al correo.

Esto ya empieza a oler más fuerte. Si nos fijamos, la IP empleada como origen es la misma con la que se estaba ganando persistencia, 80.98.23.34.

Si nos fijamos en el cuerpo del email, se puede apreciar que hay faltas de ortografía (segundo indicativo de que el origen puede ser malicioso). Además está situada muy cerca de un enlace, aparentemente generado con algún tipo de DGA (Domain Generating Algorithm) en origen, que ni de lejos corresponde con la empresa BBVA. Por tanto, aumentan mucho las probabilidades de que sea malicioso. Como podemos leer a continuación, Jeff vuelve a estar por en medio, realizando una transferencia bancaria falsa de 661,20 EUR a una cuenta del bufete de abogados.

Desconocemos qué contenido se descargaba del dominio hxxp://3234djkkwqewq[.]com porque está caído (y entre tu y yo… nunca ha existido el dominio, la magia de los CTFs). Supondremos que el cliente de correo era el punto de infección del que se descargaba un maldoc que posteriormente se ejecutaba.

Analizamos los IOCs que tenemos: la IP 80.98.23.34, un dominio hxxp://3234djkkwqewq[.]com y email notificaciones-bbva[at]fake[.]com. Al igual que hemos hecho anteriormente y respetando el alcance del análisis, se recomienda ponerlos en cuarentena/blacklist y denunciarlo a los FCSE competentes.

Emails sobre corrupción y ladrones

Rebuscando más en la misma carpeta, encontramos otro .eml en la ruta ‘\Casos Bufete\Netflix vs Jeff Albertson\Operaciones cuentas.eml’ que contiene otro email enviado a Lionel (lionel[at]bufetehutz[.]com), donde un tal Snake realiza varias afirmaciones, que en resumen son:

  • Lionel, Snake y Fat el gordo tienen como objetivo atacar la imagen pública de Mayor Joe sacándole fotos comprometidas para acabar con su carrera política.
  • Para poder sacar esas fotos a Mayor Joe sin que se entere, simulan el robo del prototipo del profesor Flink en el despacho de Lionel, que lo permite.
  • Como respuesta, Mayor Joe contrata a Jeff para borrar todas las pruebas incriminatorias del despacho de Lionel.

Las fotos comprometedoras de Mayor Joe que Jeff no ha borrado están en la ruta ‘\Casos Bufete\Caso corrupción Mayor Joe y tesorero’.

Timestomping

Somos muy insistentes y seguimos analizando detalles en la carpeta de los juicios. Esta vez nos llama la atención la imagen ‘\Casos Bufete\Plagio del profesor Frink\top secret Frink.jpg’ que tiene una fecha de creación y última modificación de 2029.04.10; ya, sí, claro, … Claramente tiene los timestamps MACB modificados (técnica timestomping).

Tras un buen rato buscando, curiosamente, resulta que en la carpeta en la que se encuentra el software instalado, ‘\Program Files (x86)’ se encuentra también la herramienta SetFileDate de No Nonsense Software, cuyo objetivo es alterar tiempos y fechas de ficheros y carpetas. Tenemos premio. No nos aporta nada pero insisto en que es interesante saber las técnicas empleadas por el atacante.

Ahora creo que ya sí podemos concluir que, según los emails analizados al final y las pruebas recabadas con anterioridad, todo apunta a que Jeff es el principal sospechoso de haber cometido la exfiltración de datos del bufete de abogados de Lionel en un intento fallido por borrar los datos del Mayor Joe. Los detalles ya los hemos ido desgranando progresivamente.

Conclusiones

Hasta aquí el trabajo que nos ha pedido la compa del SOC. Unas horas bien invertidas en las que:

  1. hemos repasado acciones muy frecuentes durante un análisis forense
  2. hemos lanzado muchas ideas al aire
  3. hemos analizado alternativas (que valoro mucho) de resolución de cada paso que hemos dado, marcándonos una progresión a través de pequeños hitos.

Este análisis ha sido posible gracias al reto organizado por el Master en Informatica Forense y Peritaje Informático Judicial del Campus Internacional de Ciberseguridad. Desde aquí les mando un saludo. Agradecerle también a Antonio Sanz por el cable de 500XP que me ha echado para complementar y perfilar cada uno de los puntos que he tocado. Ya puedo decir que no es mi primer ni último post en SAW :)

Recursos destacados

UCAM CTF Forense — Like old school

Hoy, como aficionado al análisis forense digital (la parte puramente IT, sin entrar demasiado en lo legal), analizaré de forma didáctica el caso ficticio “Lionel Hutz papers” planteado en UCAM CTF, incidiendo en los procesos de resolución empleados y las conclusiones sobre la naturaleza del ataque. Espero que os parezca interesante.

En primer lugar, dos handicaps autoimpuestos:

  1. A diferencia de un ejercicio de IR (respuesta rápida ante incidentes), la evidencia la trataré siempre en frío.
  2. Por tanto, se usará exclusivamente el disco, like old school (que da nombre al post), sin tocar la RAM y mucho menos levantar la VM aislada para monitorizar su actividad.

En segundo lugar, al ser un ejercicio enmarcado en el formato CTF, responderemos de forma indirecta a cuestiones que bien pueden ser interesantes, o bien podrían ser irrelevantes o no concluyentes durante la elaboración de las conclusiones y por tanto en según que casos reales no se habría ni siquiera planteado. Dicho esto, ¡vamos al lío! [Read more…]

DEFCON 2018 DFIR CTF – Reto forense (Nivel 2)

Servidor de ficheros – Nivel básico

1. ¿Cuál es el número de serie del volumen de la única partición de la imagen de disco del servidor de ficheros?

El número de serie del volumen es un valor hexadecimal que se genera cuando se crea el sistema de ficheros. La documentación de Microsoft nos dice que para sistemas de ficheros NTFS lo tenemos en la posición 0x48 del BPB (Bios Parameter Block), que es parte del sector de arranque. Este sector lo tenemos en el disco en el $boot (en el raiz del disco). Montamos el disco con FTK Imager y accedemos al valor hexadecimal:

Ahí tenemos el valor: 652496C0. [Read more…]