Analizando Tráfico de Red I de III

Estándar

Hola a tod@s!

En esta tanda de 4 artículos nos vamos a entretener en conocer cómo podremos analizar nuestra Red en busca de patrones. El análisis del tráfico de red, junto con su contenido, es esencial para conocer qué uso se le ha dado a la red en un momento determinado.

Imagináos un servidor infectado mediante un exploit lanzado de forma remota. O conocer a ciencia cierta que están robando información confidencial de la empresa. Gracias a la reconstrucción del tráfico de red, es posible que se puedan dar respuesta a un buen número de cuestiones.

Mi amigo Pedro, de Conexión Inversa, tiene un estupendo artículo sobre redes trampa de baja y alta interacción que recomiendo que leáis. Por lo que comentaba en el artículo, parece ser que nos deleitará con más series de éstos, dedicados al análisis forense de la Red.

En mi caso, yo me centraré más en la reconstrucción de ciertos tipos de datos capturados por la red y en última instancia recomendaciones para la automatización en este tipo de tareas.

Para ello, y en mi laboratorio de pruebas, he procedido a capturar tráfico de dos puntos en una LAN y guardarlos en un archivo PCAP. Las siglas PCAP (Packet Capture) corresponden a una API desarrollada para capturar tráfico de una red. En el laboratorio de pruebas, utilizaré el port para Windows WinPcaP. Posteriormente utilizaremos la herramienta Wireshark para la extracción de posibles datos.

Comenzamos!

Algo que puede que nos interese, en lo referente al análisis de la red, es la reconstrucción de la navegación Web, guardado en un determinado fichero de captura PCAP.

Para intentar reconstruir ese tráfico, Wireshark implementa varios filtros con los que podemos jugar. En un principio puede que nos interese todo el tráfico, pero gracias a los filtros, podremos centrarnos en ciertas partes del tráfico que más nos interese.

Para captura Web, Wireshark implementa el filtro HTTP. Gracias a este filtro, podremos extraer prácticamente todos los objetos enviados y recibidos mediante este protocolo.

httpFilter

Imagen 1.- Aplicando filtro http en Wireshark

¿Y cómo podemos extraer datos una vez aplicado este filtro?. Wireshark implementa varias formas de realizarlo con el protocolo HTTP.

Una de ellas es la capacidad de poder exportar un conjunto de bytes, utilizando únicamente para ello el botón derecho del ratón.

ExportDataWireshark

Imagen 2.- Exportar Bytes Wireshark

Otra forma de realizar esta exportación de datos, es utilizando el filtro http.content_type, el cual nos mostrará sólo los paquetes que contengan algún tipo de dato y hayan viajado a través de ese protocolo.

Contenido

Imagen 3.- Filtro http Wireshark

Como podéis observar en la imagen, el tipo de dato o recurso que viaja por HTTP no siempre es texto. De ahí que se deba analizar con cuidado, por si nos encontramos con el lanzamiento de un exploit, un ataque de denegación de servicio, aplicaciones, objetos comprimidos, etc…

Desde hace algún tiempo, Wireshark implementa una forma rápida de agrupar todos los objetos HTTP en una sola ventana, para que así nos resulte más fácil “ver” qué viaja por este protocolo. Para disfrutar de esta característica, debemos ir a File –> Export –> Objects –> HTTP

HTTPObject

Imagen 4.- HTTP Objects List

Otro filtro importante que tenemos a nivel de HTTP, es el filtro HTTP.Date. Este filtro, nos situará exactamente en la cabecera de HTTP que contenga el campo fecha. Esta acción nos puede ser muy útil para realizar un timeline de peticiones y poder reconstruir una sesión de navegación, por ejemplo.

HTTPDate

Imagen 5.- Filtro http.date

Visto lo visto. Wireshark puede reconstruir todo el tráfico de cualquier protocolo?. La respuesta es que NO. Wireshark permite capturar todo tipo de paquetes pero eso no quiere decir que pueda diseccionarlos todos. Existen protocolos que están docuentados o se basan en una RFC, y protocolos para los que no hay apenas documentación pública. Para este tipo de protocolos es en donde entra en juego la ingeniería inversa. En el siguiente artículo nos centraremos en reconstruir datos partiendo de protocolos que Wireshark no es capaz de entender.

Espero que esta primera aproximación al análisis forense de la Red os haya gustado. Hasta la próxima entrega!

Saludetes!

Referencias

http://en.wikipedia.org/wiki/Pcap

http://www.wireshark.org/docs/dfref/h/http.html

http://www.wireshark.org/docs/wsug_html_chunked/ChIOExportSection.html

Análisis de memoria RAM. Un Caso extraño

Estándar

En el artículo anterior, estuvimos viendo la recogida de información de la memoria RAM haciendo uso de los objetos del sistema operativo. En este artículo veremos la recogida de información desde otra perspectiva.

En ocasiones, y tras un ataque exitoso, un sistema puede presentar algo de inestabilidad, posiblemente debido a la eliminación de ficheros esenciales de sistema, instalación de aplicaciones no compatibles con el sistema, parcheo de estructuras del Kernel, etc.. Cuando un sistema presenta este cuadro de síntomas, no es de extrañar que el sistema presente un BSOD, indicando que algo está fallando, y es entonces cuando nos tenemos que preguntar: apagamos el equipo? Reiniciamos el equipo?

Un ejemplo válido se puede dar con el rootkit FU. Ampliamente conocido, este rootkit trabaja en modo Kernel sobreescribiendo estructuras propias del mismo, lo que le permite por ejemplo ocultar procesos. En muchas ocasiones, y tras instalarlo en el sistema, el proceso que se desee ocultar se oculta con facilidad, pero a la hora de detectarlo, puede que el sistema operativo presente un BSOD indicando que hay “algo” que no va bien. El proceso que sigue Windows para pintar la pantalla azul es el siguiente:

  • Manda parar las interrupciones del sistema
  • Llama a la CPU a detener
  • Pinta la pantalla azul
  • Notifica el driver que ha fallado
  • Si el DUMP está configurado, lo prepara para su volcado

En el procedimiento interno intervienen procesos como smss.exe, winlogon y savedump, los cuales son los que realizan las llamadas para extraer el volcado y pasarlo a un fichero. En el transcurso en el que el sistema vuelca el contenido de la RAM hasta que lo deposita en su correspondiente fichero, el sistema debe de guardar los datos en el archivo de paginación pagefile.sys. Al reiniciar el sistema operativo después de un BSOD, el proceso savedump es el encargado de pasar el volcado de memoria a su correspondiente fichero. Para que el procedimiento no presente errores, el archivo de paginación debe ser por lo menos 1’5 veces más grande que la memoria RAM. Si el archivo de paginación no sigue esta premisa, el volcado de memoria no se completará, o se completará con errores (Volcado corrupto).

Habrá ocasiones en las que cuando se nos presente un caso con estas características y se presente un BSOD, no podamos reiniciar el equipo para obtener muestras, con lo que atendiendo al RFC  3227, en un principio tan solo podríamos realizar un análisis de ficheros y disco, obviando los aspectos de memoria RAM. Pero gracias al comportamiento que tiene Windows a la hora de realizar el volcado de memoria, podemos recuperar ese volcado gracias al archivo de paginación.

dump.png

Para realizar la conversión, utilizaremos de nuevo la herramienta dd para volcar el contenido del archivo de paginación a un nuevo archivo DMP.

ddpagefile.png

Finalmente, podemos comprobar su integridad con las herramientas dumpchk o dmpchkex, ambas explicadas en anteriores artículos.

dmpchkpagefile.png

En posteriores artículos nos centraremos en la clase de información que podremos extraer de un volcado de memoria.

Enlaces:

Opciones de rendimiento en Windows XP

Optimizar archivo de paginación

DPM Magic

Memoria Virtual

Windows Hang and Dump Analysis (Mark Russinovich)

Saludos!