Seguimos estudiando herramientas para la detección de intrusiones, análisis de tráfico de red a partir de ficheros .pcap y análisis forense.
En esta ocasión vamos a tratar una herramienta IDS que, a partir de un fichero .pcap , es capaz de reensamblar los flujos TCP para crear una serie de fichero con los datos de la captura para su posterior análisis. Se trata de Vortex IDS. Para analizar los datos podemos usar otras herramientas como grep, sed, awk, cut, etc. Como siempre, mejor lo vemos en la práctica.
Instalando Vortex IDS.
La instalación la voy a realizar en sistema basado en Ubuntu 10.10. Este sistema tiene ya instalado Snort, Wireshark, Suricata, Xplico, Prelude IDS, etc, con lo que la mayoría de librerias necesarias las tengo ya instaladas. Aún asi y como prerequisito me hizo falta instalar:
sudo apt-get install libnids-dev
Ahora descargamos y compilamos Vortex:
wget http://sourceforge.net/projects/vortex-ids/files/vortex/2.9.0/vortex-2.9.0-59.tgz
tar zxvf vortex-2.9.0-59.tgz
cd vortex-2.9.0
Para compilar con gcc usamos la línea siguiente según nos aconseja en el archivo vortex.c:
gcc vortex.c -lnids -lpthread -Wall -o vortex -O2
Vortex IDS. Uso básico.
La arquitectura de Vortex es muy simple:
Así que lo primero que vamos a hacer es crear una carpeta donde se volcarán todos los archivos de datos, en mi caso /trafico.
Vortex se puede usar en dos modos:
- modo live leyendo una interface de red: sudo ./vortex -i (interface_red)
- modo .pcap leyendo un fichero .cap/ .pcap: sudo ./vortex -r (fichero .pcap)
Ahora leemos un archivo .pcap :
sudo ./vortex -e -r ../captura_smtp.pcap -t ./trafico
- -e para el uso de salida extendida. nombre de fichero con más datos.
- -r para ller el fichero .pcap
- -t volcamos los datos en la carpeta que indiquemos
Para simplificar omitimos -e:
sudo ./vortex -r ../captura_smtp.pcap -t ./trafico
Obtenemos lo siguiente:
Tenemos una serie de archivos de datos con, básicamente, IP cliente, número puerto origen cliente, dirección, IP servidor y puerto destino. También una serie de datos de rendimiento, errores, etc.
La dirección puede ser:
- s cliente -> servidor
- c servidor -> cliente
Si indicamos -e, el formato de salida sería el siguiente:
tcp-10-1300870815-1300870841-e–121-192.168.x.xxx:45885s192.168.x.xxx:25
protocolo–número de serie de la conexión–marca de tiempo inicico-marca tiempo final de la conexión-la razón del término de la conexión–tamaño conexión-IP cliente:puerto origen-dirección-ip servidor:puerto destino
Respecto a la razón para el término de la conexión (en el ejemplo “e“, podemos encontar de forma más usual:
- c conexión terminada de forma normal
- r reset de conexión
- t time out
- e término de conexión de forma prematura (no indica error)
Estos archivos contienen datos de tráfico. Por ejemplo y para un archivo con puerto 80 :
alfon@alfonubuntu:~/vortex-2.9.0/trafico$ cat 192.168.x.xxx:59873s192.168.x.xxx:80
GET / HTTP/1.0
User-Agent: Wget/1.12 (linux-gnu)
Accept: */*
Host: HOST.ES
Connection: close
Un archivo con puerto 25:
alfon@alfonubuntu:~/vortex-2.9.0/trafico$ cat 192.168.x.xxx:39604s192.168.x.xxx:25
HELO nat2-mxxxilev-addr2.texxxx.by
MAIL FROM: <jqndpota@host.es>
RCPT TO: <jqndwore@dominio.es>
y si fuera el caso todo los datos, adjuntos, etc de un determinado mail.
Podemos usar filtros de la siguiente manera (-f “formato BPF”):
sudo ./vortex -r ../captura_smtp.pcap -t ./trafico -f ‘tcp and port 25’
Más información sobre filtros .pcap y formato BPF:
Y además usar, como apunté al principio, herramientas alternativas. Por ejemplo obtener los ficheros de datos de captura con un determinado filtro usando BPF y grep:
sudo ./vortex -r ../captura_smtp.pcap -t ./trafico -f ‘tcp and port 25’ | grep ‘host.es’ *
Una forma muy simple, arriba, que podemos complicar de múltiples maneras:
sudo ./vortex -r ../captura_smtp.pcap -t ./trafico -f ‘tcp and port 25’ | grep ‘RCPT TO: alfon_syr@dominio.es’ *
De igual forma podemos buscar cadenas, imagenes, documentos y usar expresiones regulares.
En resumen, usando en toda su potencia la utilidad grep.
Esto lo podemos realizar en tiempo real si usanos Vortex IDS de la forma live leyendo desde una interface de red:
sudo ./vortex -i eth0 -t ./trafico -f ‘tcp and port 25’ | grep ‘RCPT TO: alfon_syr@dominio.es’ *
Podemos incluso crear scripts para obtener datos de forma más personalizado usando awk, sed, etc, de forma que extraer cualquier datos en tiempo real es bastante sencillo.
Vortext IDS incluye opciones para Rendimiento, Multithread y otras opciones que iremos viendo en otras entregas.
Veremos también, y ahí está la verdadera potencia de Vortex IDS, como intergrar y/o generar scripts para extrear datos conctretos para análisis forense y formatear la salida de datos.
———————————-
Hasta aquí por hoy.. Hasta la próxima.
Hola, tengo problemas para instalar vortex ids, sigo tus instrucciones y me manda este error al compilar:
vortex.c:60:18: fatal error: nids.h: No such file or directory
Ayuda, por favor.
Hola Pablo,
Creo que el error se debe a que no tienes libnids. Además, que supongo lo tendrás, es necesario libpcap y libbsf.
Ya me cuentas que tal.
saludos,
hola alfon utilizo debian squeeze y quiero instalar un IDS cual me recomiendas y que necesito? la gente que conozco me ha recomendado snort o suricata.. mi idea es hacer una VM en xen dedicada exclusivamente a este fin. que recursos tendria que tener? que librerias necesito toda info te la agradeceria .
Gracias de antemano
necesito manual desde cero del que me digas
Pingback: Tcpick un sniffer que realiza seguimiento y reensamblado de flujos tcp. Mostrando datos payload. | Seguridad y Redes
Pingback: Gulp y los mecanismos de rendimiento en herramientas de captura de red .pcap. | Seguridad y Redes
Hola a todos.
————————————————————————–
Otra forma de instalación de Vortex IDS:
————————————————————————–
1.- Necestiamos tener:
libglib2.0-dev libpcre3 libnet1 libpcap0.8-dev
2.- Descargamos e instalamos libnids:
wget “http://surfnet.dl.sourceforge.net/project/libnids/libnids/1.24/libnids-1.24.tar.gz”
tar xzf libnids-1.24.tar.gz
cd libnids-1.24
./configure && make && sudo make install
2.- Descargamos e instalamos Vortex…:
Creamos una carpeta de instalación (/tmp/vortex_install), entramos en ella y:
cd /tmp/vortex_install
wget "http://downloads.sourceforge.net/project/vortex-ids/vortex/2.9.0/vortex-2.9.0.tgz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fvortex-ids%2F&ts=1295723515&use_mirror=softlayer"
wget "http://downloads.sourceforge.net/project/vortex-ids/libbsf/1.0.1/libbsf-1.0.1.tgz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fvortex-ids%2Ffiles%2Flibbsf%2F1.0.1%2F&ts=1295723688&use_mirror=softlayer"
tar xzvf libbsf-1.0.1.tgz && cd libbsf
gcc -g -O3 -fPIC -shared -Wl,-soname,libbsf.so.1.0.1 libbsf.c -o libbsf.so.1.0.1
/usr/bin/install -c -c -m 644 libbsf.so.1.0.1 /usr/local/lib
ln -s /usr/local/lib/libbsf.so.1.0.1 /usr/local/lib/libbsf.so
/usr/bin/install -c -c -m 644 bsf.h /usr/local/include
cd /tmp/vortex_install
tar xzvf vortex-2.9.0.tgz && cd vortex-2.9.0
gcc -I/usr/local/include -O3 vortex.c -o vortex -lnids -lpthread -lbsf -DWITH_BSF -lpcap -lglib-2.0 -lnet -lgthread-2.0 -lrt
/usr/bin/install -c -c -m 755 vortex /usr/local/bin
Saludos.