Forensic
Introducción
Antes de llegar la esencia del asunto, es necesario advertir al lector que, al leer el título del capítulo, puede que se imagine en un apartamento a oscuras, con una lámpara ultravioleta en la mano o en un laboratorio lleno de viales, instrumentos de medida de todo tipo y ordenadores ocupados por una mujer joven y guapa... Lo siento. El forensic se parece más a un hombre con barba (aunque el bigote también está bien) sentado detrás de una pantalla, escribiendo líneas grises en una pantalla negra y una taza de café a su lado. Nada muy emocionante a priori... Sin embargo, los curiosos, insomnes y pescadores (la paciencia es importante en informática y más aún en forensic) sin duda encontrarán completa satisfacción en la práctica de esta disciplina.
Sí, se requiere paciencia y una buena dosis de rigor y determinación. Durante un análisis forense es importante tener siempre en cuenta que no sabemos lo que vamos a descubrir y, en ocasiones, por falta de tecnología o porque el atacante se habrá encargado de borrar cualquier rastro, simplemente no encontrará nada.
¿Qué significa "forensic"?
Empecemos por el principio... ¿Forensic? ¿Forense? Esta es una elección personal. Podemos permitirnos algunas excentricidades. Así que aquí está nuestra regla, que tiene cierta lógica: como disciplina usaremos la palabra "forensic" y cuando se use como adjetivo, escribiremos "forense" (por ejemplo, "análisis forense").
Una vez cerrado este pequeño paréntesis ortográfico, echemos un vistazo a la disciplina ¿Qué es forensic? Forensic (o forense) es un neologismo, traducción del inglés forensic science. Etimológicamente, esta palabra proviene de "forum", la plaza pública que era el lugar donde se impartía justicia (forensis: del foro). Por tanto, entendemos que esto es lo que se podría llamar "informática legal". Sin embargo, este capítulo no pretende ser un curso de derecho y nos centraremos únicamente en la parte técnica de esta disciplina. En consecuencia, hablaremos de memoria, archivos binarios, estructuras, archivos de registro, etc, es decir, de "rastreo"...
Los métodos
1. Preparación y entorno
Antes de lanzarse precipitadamente a la búsqueda de elementos, en el mejor de los casos el analista debe "preparar el terreno". Es importante comenzar con un análisis macroscópico antes de descender gradualmente al análisis microscópico.
Tener una visión general de un sistema le permite determinar mejor los elementos más adelante. Tomemos un ejemplo. Imagine que le llama una empresa internacional que acaba de sufrir un ataque de tipo DoS y desea encontrar el motivo (este sí que es un análisis que podemos calificar de forense, porque está buscando pruebas, aunque no sea para inculpar directamente al autor del delito) y posiblemente encontrar la fuente. En este caso concreto, comprenderá fácilmente que el análisis directo del servidor web que el ataque dejó indisponible no le dará suficientes elementos para llevar a cabo su investigación.
Además, le será útil comenzar con "la parte superior de la pirámide", muy a menudo el firewall, que le permitirá establecer qué tipo de DoS se ha utilizado para llevar a cabo el ataque (SYN flood, DNS amplification) o bien, para darse cuenta rápidamente de si el servidor ha sido víctima de un ataque local (fork bomb, saturación de inodos).
Si se trata de un ataque en la red, los cortafuegos y los rúters deben ser el foco principal de sus investigaciones. A continuación, determinará el protocolo y el puerto que se utilizó. Una vez hecho esto, si es posible, puede estudiar...
Las herramientas
Hay docenas de herramientas muy potentes para hacer análisis forenses. No vamos a enumerar aquí todas estas herramientas de forma exhaustiva, porque preferimos dejar que el lector las descubra como mejor le parezca. Sin embargo, podemos citar algunas herramientas de referencia que serán esenciales para usted. Aquí hay una tabla que agrupa estas herramientas por categoría:
Red |
Memoria |
Binario |
Sistema |
Wireshark Herramienta de captura y análisis de tramas de red. http://wireshark.org |
Volatility Framework muy potente y multiplataforma de análisis de datos volátiles (RAM). |
Hexdump Herramienta de dump hexadecimal. |
The Coroner’s Toolkit Paquete de herramientas de análisis de sistemas Unix. |
tcpdump Herramienta de captura en línea de comandos. Su control es esencial en entornos de servidor sin interfaz gráfica. |
|
Readelf Herramienta de volcado de información para los archivos ELF. |
Logstash Herramienta de análisis de logs. |
Scapy Herramienta de manipulación de paquetes TCP. |
|
gdb/IDA Pro depurador que permite trazar el comportamiento de un programa o analizar un volcado de memoria. |
|
A continuación, detallaremos rápidamente las principales funcionalidades de estas herramientas y su uso en el análisis forense de un sistema.
1. Las herramientas de análisis de red
a. Wireshark
La herramienta Wireshark es EL punto de referencia para los profesionales relacionados con las redes. Administrador, auditor, consultor, etc. Esto también se aplica a los analistas forenses. Esta herramienta es capaz de ayudarlo a diseccionar literalmente cada paquete que pasa a través de su tarjeta de red.
Aquí se ve una captura de establecimiento de conexión. De hecho, observamos la presencia del flag SYN en el paquete. El analista forense que, por ejemplo, observe una gran cantidad de este tipo de paquetes sabrá que ha estado lidiando con un ataque de tipo DoS por SYN flood. Como recordatorio, este ataque tiene como objetivo saturar el servidor con conexiones "en espera" al no completar el three way handshake de establecimiento de las conexiones TCP.
b. tcpdump
En ausencia de un entorno gráfico, tcpdump es una herramienta esencial para capturar tramas de red antes de analizarlas con Wireshark. A continuación, vemos por qué es necesario dominar esta herramienta.
tcpdump...
Conclusión
Si se desea embarcar en un análisis forense debe conocer todas las herramientas presentadas en este capítulo. Sin embargo, el experto a menudo tenderá a desarrollar sus propias herramientas. Por eso es fundamental dominar al menos un lenguaje de programación cercano al sistema. Desde este punto de vista, Python es ideal. Además, como habrá notado, los principales frameworks y herramientas dedicadas al forensic están desarrollados en este lenguaje.