Esas pequeñas utilidades. CSPLIT. Con Suricata_IDS, TCPDump, Netsniff-ng.

Seguimos con la serie Esas pequeñas utilidades. En esta ocasión CSPLIT, una herramienta que divide un archivo grande, en nuestro caso logs, en otros más pequeños según un determinado patrón. Es posible que, cuando tenemos logs muy grandes, queramos dividirlos según un determinado criterio para parsear, estudiarlo, etc de forma más cómoda.
Para ilustrar el funcionamiento de esta utilidad, voy a usar logs de Suricata_IDS, TCPDump, Netsniff-ng.

Al lio…

CSPLIT. Divide y vencerás.

Vamos a imaginar que tenemos un log muy grande y queremos dividirlo. Por ejemplo un logs eve.json de Suricata IDS. Estos logs, según tengamos configurada suricata.yaml y la información capturada, pueden ser muy grandes.

Uso básico.

Queremos dividirlo por «secciones» HTTP. Podemos usar la siguiente línea de comandos:

cat c:\suricata\log1\eve.json|grep -E "e\":\"http"|jq ".timestamp,.http"|csplit - /..T..:/ {*}

Indicamos a jq que nos devuelva la salida HTTP iniciando con el timestamp (de timestamp a timestamp) y, a continuación, la información HTTP en sí. Usamos el patrón de corte que lo extraemos usando el timestamp, (marco el corte con negrita):

«2017-03-31T19:14:55.999236+0200″

/..T..:/

La salida:

crea una serie de archivos:

 

visualizamos dos de los archivos para ver que hace realmente esta utilidad según hemos ejecutado con el patrón comentado, en este caso los archivos generados xx27 y xx30:

Si queremos hacer lo mismo con las aletas (alert de Suricata IDS):

cat eve.json|grep -E "e\":\"alert"|jq ".timestamp,.alert"|csplit - /..T..:/ {*}

Ordenando. el uso de prefix.

Si quisiéramos ordenar un poco porque la intención es usar diferentes tipos de  keys en jq, por ejemplo, alert, http, smtp, etc, usamos prefix con -f:

cat eve.json|grep -E "e\":\"alert"|jq ".timestamp,.alert"|csplit - -f alert /..T..:/ {*}

los archivos cortados generados se llamarían alert27, alert35, etc.

Cortando TCPDump, Windump.

Ahora vamos a cortar en archivos separados los datos -X hexa y ascii de windump/tcpdump y puerto 80.

El patrón de corte lo extraemos usando la marca de tiempo de la salida tcpdump:

19:56:11.

/..:..:..\./
tcpdump -nr ../../pcap/2017_cerber.pcap -X tcp port 80 | csplit - -f http /..:..:..\./ {*}

visualizamos dos archivos generados:

Podríamos usar los archivos generados independientemente para buscar, por poner un ejemplo muy básico:

grep -E "text\/html" http*

y …:

Netsniff-ng.

Un ejemplo básico con netsniff-ng.

patrón de corte:

/\<\.\?/
sudo netsniff-ng -i ../../pcap/smtp.pcap -b1 -f'port 25' --ascii | csplit - -f smtpa /\<\.\?/ {*}

En el próximo artículo veremos ya una forma más práctica y uso más serio de esta utilidad. Además, usaremos otros tipos de patrones de corte más avanzados.

==

Y esto es todo, hasta la próxima 😉

 

 

Esta entrada fue publicada en Esas pequeñas utilidades, Seguridad y redes, Suricata, Windump. TCPDump. Guarda el enlace permanente.

Deja un comentario