Analisis Forense: Usando GNU/Linux…

Adquisición de datos Volátiles

“Datos Volátiles”, son aquellos que desaparecen cuando un sistema se apaga o se reinicia. Cuando un sistema ha sido comprometido, extraer la máxima información de estos datos es muy importante a la hora de recopilar pruebas .

Para recojer estos datos, es medular que en el equipo atacado, no ejecutemos ningún comando o herramienta por peligro a que pueda haber sido troyanizada.

Es decir; debemos proceder a ejecutar los binarios compilados estáticamente y directamente desde un CD-ROM.

Lo primero que debemos provisionar es un equipo no comprometido para el almacenamiento de las pruebas en red, esto lo haremos ejecutando el siguiente comando en el equipo:

nc -l -p 9000 > data.dat

Con este comando pondremos al equipo remoto a escuchar en un puerto donde enviaremos la información desde la máquina comprometida.

Procederemos a listar los archivos abiertos por los procesos para así detectar algún proceso/archivo sospechoso:

/mnt/cdrom/lsof -n | /mnt/cdrom/nc -w 3 IP 9000

Listamos las conexiones establecidas por los procesos:

/mnt/cdrom/netstat -nap | /mnt/cdrom/nc -w 3 IP 9000

Además, listamos la tabla de rutas:

/mnt/cdrom/netstat -nr | /mnt/cdrom/nc -w 3 IP 9000

Es importante hacer un análisis de puertos desde una máquina externa y compararla con la salida de netstat para poder asegurarnos que no hemos perdido de vista ningún proceso escuchando en ningún puerto, para ello usaremos nmap:

nmap -sS -p 1- {IP del Equipo Comprometido}

Listamos los archivos que han sido eliminados pero que aún siguen abiertos por algún proceso en ejecución:

/mnt/cdrom/ils -o /dev/hda1 | /mnt/cdrom/nc -w 3 IP 9000

Listamos los procesos en ejecución:

/mnt/cdrom/ps -el | /mnt/cdrom/nc -w 3 IP 9000

Si mediante la orden anterior, encontráramos algún proceso sospechoso, podríamos analizarlo con la siguiente herramienta:

/mnt/cdrom/pcat | /mnt/cdrom/nc -w 3 IP 9000

Listaremos los usuarios conectados en el sistema:

/mnt/cdrom/who -uHl | /mnt/cdrom/nc -w 3 IP 9000

Para finalizar guardamos el proc, en el cual obtendremos información acerca de los procesos:

/mnt/cdrom/tar cf — /proc | /mnt/cdrom/nc -w 3 IP 9000

Con estos pasos, habremos recopilado mucha información acerca de la intrusión. Para hacer un análisis más exaustivo, habríamos de recopilar datos no volátiles mediante herramientas de integridad de archivos, localización de archivos borrados, tiempos MAC, etc…

Tecnicas de recopilación de evidencias

Independientemente del tipo de investigación que se esté llevando a cabo, es importante no confiar demasiado en la memoria y llevar un registro claro de la fecha y hora en la que se recogen las diferentes evidencias.

Si se va a analizar un sistema comprometido en producción desde su propia consola, es recomendable ejecutar el comando script, el cual captura y almacena en un archivo toda la actividad tecleada desde la consola. Su sintaxis es:

# script –a archivo

Para posteriormente realizar el análisis, es necesario disponer de un lugar en el cual almacenar los datos del sistema comprometido.

Si no se dispone de un dispositivo de almacenamiento removible de gran capacidad o no se puede realizar una clonación del disco afectado, el comando netcat constituye una herramienta de gran valor pues permite transferir vía red la información del servidor afectado a otro sistema en el cual realizar el análisis.

Para ello en el sistema de análisis se ejecutará el comando:

# nc –l –p puerto > archivo de salida

En el sistema comprometido se ejecutará por ejemplo el comando:

# cat /etc/passwd | nc {maquina de análisis} {puerto} -w 2

El proceso nc en la máquina de análisis se ejecutará hasta que la conexión se rompa, cerrándose el archivo de salida. La opción –w 2 indica el número de segundos que espera una vez recibido el fin de archivo para terminar la conexión.

Capturas de pantalla

El comando xwd de X Window permite capturar tanto ventanas de forma individual como la pantalla completa desde un servidor remoto. Para ello se ejecutará el comando:

# xwd –display {direccionIP}:0 –root > pantalla.xwd

Una vez capturada la pantalla, se puede ver su contenido con el comando xwud o cualquier otro visor de imágenes que soporte dicho formato.

# xwud –in pantalla.xwd

Captura de la memoria

En Linux todo se trata como un archivo, esto hace muy sencillo copiar y analizar el contenido tanto de la memoria principal analizando el archivo /dev/mem como del área de swap analizando la partición correspondiente. Sobre estos dispositivos se pueden utilizar comandos como strings o grep. Por ejemplo:

# strings /dev/mem | more

Es importante tener en cuenta que la memoria es un dispositivo volátil, esto implica que es imposible verificar (por ejemplo con el comando md5sum) que los datos capturados se corresponden exactamente con los originales pues el simple hecho de capturarlos hace que varíen ligeramente.

Analisis de las conexiones de red

El estado de la red proporciona información tanto de las conexiones existentes como de los procesos en ejecución.

El comando netstat proporciona información sobre la actividad de red del sistema. La ejecución del siguiente comando proporciona información sobre los procesos asociados con cada conexión de red específica:

# netstat –pan | more

Copia de discos duros y sistemas de archivos

Todas las distribuciones de Linux proporcionan un conjunto de herramientas que permiten copiar los sistemas de archivos de forma que es posible examinarlos en una estación segura cuando no es posible apagar el sistema o quitar el disco para su clonación.

Si no se dispone de un dispositivo de almacenamiento de gran capacidad, es posible copiar discos enteros, particiones o sistemas de archivos completos a un sistema remoto utilizando la herramienta netcat (nc).

El comando mount muestra los sistemas de archivos que se encuentran montados, el comando fdisk muestra las particiones existentes en cada unidad de disco estén o no montadas en ese momento.

# fdisk –l /dev/hda

El comando dd permite crear imágenes (copias bit a bit) de los sistemas de archivos. Para ello se ejecuta por ejemplo el comando:

# dd if=/dev/fd0 of=/tmp/disco.img

La ejecución del comando

# dd if=/dev/zero of=/dev/fd0

permite inicializar completamente el dispositivo sobre el que se va a almacenar la imagen.

La combinación de los comandos dd y netcat permite transferir imágenes completas de sistemas de archivos a través de la red y supone una herramienta vital en la recogida de evidencias que supone la primera fase del análisis forense de un sistema.

Una vez generada la copia es de vital importancia garantizar la autenticidad de la misma para ello es necesario realizar la comprobación, para ello se utiliza el comando md5sum.

Acceso a los datos de un sistema de archivos

Una vez accesible la imagen generada con las herramientas descritas, es necesario analizar su contenido, para ello en Linux se dispone de un dispositivo virtual denominado loop que representa una abstracción que permite acceder a imágenes de sistemas de archivos.

Para poder utilizarlo se crea un directorio sobre el cual montarlo:

# mkdir /tmp/analisis

A continuación se monta con el comando:

# mount –t ext2 –o loop -r archivo.con.imagen /tmp/analisis

Una vez montado se puede tratar como cualquier otro sistema de archivos.

Es muy importante montarlo en modo de lectura exclusiva lo que evitará dañar la evidencia.

Linux permite trabajar con gran variedad de sistemas de archivos, si bien en algunos casos es necesario modificar el núcleo para poder realizar el proceso.

Luego les hablaré de otras tecnicas, herramientas o modelos de Analisis Forense.

Show your support

Clapping shows how much you appreciated Marvin G. Soto’s story.