Daboweb

Herramientas para la interpretación de capturas de red. (9/10) Parte 3

Publicado por Alfon on Junio 15, 2012
Seguridad Informática

En anteriores entregas:

Presentación | Parte 1 | Parte 2 | Parte 3 | Parte4 | Parte 5 | Parte 6 | Parte 7 | Parte 8 | Parte 9 / 1 | Parte 9 / 2

Afterglow, InetVis, TNV, Argus, INAV.

 

Seguimos con las herramientas que nos proporcionarán una visión gráfica de nuestras capturas. En esta Parte 3 vamos a ver Argus.

Argus no es exactamente una herramienta de visualización gráfica, aunque sí tiene herramientas como ragraph que la genera.  Por tanto usaremos Argus para generar gráficas sobre tráfico de red. De esta forma, estudiaremos las siguientes vertientes:

  • el análisis de tráfico de red,
  • generación de gráficas con ragraph, afterglow, xplot.

 

Qué es Argus.

 

Argus (Network Activity Audit System) es un conjunto de herramientas para el análisis de tráfico de red. Está basado en una arquitectura cliente-servidor. Un servidor que será el host o sistema a auditar y un cliente que será el que realice, contra ese host u objetivo, el análisis o auditoría de forma remota. No es ésta la única forma de uso, podemos usar Argus en un solo host capturando, auditando y tratando un fichero .pcap o a través de una interface de red en modo live.capture.

Ya sea de forma remota o a través de un fichero de captura de red  .pcap que previamente hemos de convertir al formato entendible por Argus los datos capturados.

 

Instalación.

 

Versiones /argus/dev

Argus server:

versión de 11 Junio 2012.

    wget http://qosient.com/argus/dev/argus-3.0.6.1.tar.gz
    tar zxf /path_al_directorio/argus-3.0.6.1.tar.gz
    cd argus-3.0.6.1
    sudo ./configure
    sudo make
    sudo make install  

Argus clients:

versión de 11 Junio 2012.

    wget http://qosient.com/argus/dev/argus-clients-3.0.6.2.tar.gz
    tar zxf /path_al_directorio/argus-clients-3.0.6.2.tar.gz
    cd argus-clients-3.0.6.2
    sudo ./configure
    sudo make
    sudo make install

Versiones Lasted version:

argus client: wget http://qosient.com/argus/dev/argus-clients-latest.tar.gz
argus server: wget http://qosient.com/argus/dev/argus-latest.tar.gz

La instalación igual que para dev.


Las herramientas.

 

Bien, ya sabemos algo de Argus.  Hay mucho más pero lo iremos viendo poco a poco.

Como ya hemos visto, argus tiene una serie de aplicaciones o herramientas para la auditoría o análisis del tráfico de red. Cada una de estas herramientas tiene una función que, además, es compatible con las demás.

Estas herramientas (además de argus), las que vamos a estudiar, son:

  • ra herramienta principal que lee los datos generados por argus. su puede usar filtros tipo .pcap (BPF) .
  • racount  una especie de estadísticas totales para los datos generados por argus.
  • rahosts lista de host involucrados. Admite filtros.
  • racluster para agrupar los datos de tráfico de red
  • rasort para ordenar la salida de los datos generados por argus por una serie de criterios como tiempo, protocolo, etc.
  • raxml para convertir los datos generados en unarchivo tipo XML.

Uso básico.

 

Para entrar en contacto con esta herramienta vamos a  las herramientas más básicas que son: argusra. Lo vemos con ejemplos.

Queremos leer un fichero que hemos guardado mediante wireshark, tshark, windump/tcpdump (herramietnas que ya hemos visto en capítuoos anteriores), etc y leer, en formato argus los datos para su posterior análisis:

sudo argus -mJRU 1024 -r captura.pcap -w salida.arg

Aquí tenemos lo siguiente:

  • -m para direcciones MAC
  • -J generar para los paquetes valores de rendimiento
  • -R generar datos de response.time
  • -U 1024 como el snaplen de tcpdump, bytes a tomar en cuenta
  • r lee una captura en formato .pcap
  • -w para salvar en archivo y formato arguspreludeids

Podríamos también apturar, en tiempo real, todo el tráfico (local) que pasa por nuestra interfaz de red eth0 y salvar en un fichero para su posterior análisis.

sudo argus-i eth0 -w salida.arg

Bien, hasta aquí lo único que hemos hecho es convertir, bajo ciertas circunstancias y si queremos filtros BPF,  datos .pcap o directamente de una interface de red a un formato entendible por Argus.  Ahora vamos a usar las herramientas de Argus para extraer información, analizar las capturas.

Vamos entonces a leer los datos salvados como .arg (sirve cualquiera) de una determinada captura con la herramienta ra.

La forma más básica de uso de ra puede ser esta:

ra -L0 -nr captura.arg

Donde:

  • -L0 para visualizar en consola los títulos de columnas .
  • -r para leer el fichero de datos Argus.
  • n evitar resolución de nombre

La información que tenemos por columnas es la siguiente:

  • StartTime marca de tiempo inicial de la conexión
  • Flgs información repecto al protocolo. Estado del flujo.
  • Proto protocolo
  • SrcAddr dirección origen
  • Sport puerto origen
  • Dir dirección flujo
  • DstAddr direccion destino
  • Dport puerto destino
  • TotPkts número total de paquetes del flujo
  • TotBytes bytes totales
  • State estado de la conexión

Respecto a Proto, tenemos:

  • arp
  • tcp
  • udp
  • rtp
  • rtcp
  • ….

– los Flags los veremos más adelante. Os adelanto que este campo nos informa sobre, por ejemplo, retransmisiones, paquetes fuera de orden, fragmentación, etc.

Dir puede ser:

  • un solo sentido
  • ambos
  • who-has para arp

State puede ser:

  • REQ / INT para un request de establecimientode conexión TCP o para un incio de conexión basado en UDP
  • EST / CON conexión establecida / conectado
  • CLO conexión enestado closed
  • TIM conexión en estado timeout
  • FIN conexión con un estado FIN
  • ACC estado de conexión cuando a ocurrido un request o response
  • RST conexión en un estado reset
  • (otros estados para ICMP que veermos más adelante. )

Respecto a Flgs, tenemos en este caso, e y s:

  • e flujo de encapsulado Ethernet
  • s encapsulado SLIP

Como se puede apreciar en el ejemplo de arriba, los flujos están agrupados. Es decir, que un establecimiento de conexión y la trasmisión de datos entre host, supone un solo item y el cierre de conexión otro distinto. No son paquetes individuales, son agrupación de paquetes con una lógica.

En el ejemplo vemos conexiones udp con estado INT y un solo paquete, diferentes puertos y diferentes hosts, que significa intentos de inicio de conexión UDP que no son respondidos.

Vemos también un item UDP con estado CON al puerto 53 y dos paquetes. Esto significa un paquete Standard query y otro Standard query response. También un item ARP para Who has y su respuesta observad la dirección de flujo who.

Vemos también un estado REQ con dos paquetes al puerto 80. Es un intento de inicio de conexión TCP enviando un SYN al puerto 80. La ditrección de flujo es unidireccional y en el sentido de Request. Aún no hay respuesta.

Más abajo en la captura vemos unas conexiones con el host 195.43.252.118. Vamos a usar ra pero con filtro:

ra -a -c -L0 -nr captura.arg – host 195.46.253.218

y nos da como resultado:

observad que tenemos 17 paquetes en total en tres líneas que traducido a Wireshark sería:

Otras opciones de ra.

Podemos añadir una especie de estadísticas (con -A) al final de la salida de ra que tendría la siguiente información para una captura .arg cualquiera:

Totalrecords 3650      TotalManRecords 2         TotalFarRecords 3648     TotalPkts 55791    TotalBytes 23788622

Con la opción -e podemos filtrar mediante busqueda de expresiones regulares dentro del payload:

 ra -e "daboweb.com" -L0 -nr captura.arg
 ra -e "daboweb" -L0 -nr captura.arg
 ra -e "s:^GET" -L0 -nr captura.arg 

Añadiremos  para expresiuones regulares s: o d:  según queramos buscar en datos de origen o destino:

ra -e "d:^HTTP.*Moved" -N20 -r captura.arg

En el ejemplo de arriba buscamos en datos de destinos los mensajes HTTP Error 302 – Moved temporarily.

Obtendríamos como salida por ejemplo:

192.168.1.5 s[32]=POST /ps/ifr?viewParams=%7B%22su  ->   192.168.1.245 d[32]=HTTP/1.1 302 Moved Temporarily..

Formateo de salida de datos.

 

Como hemos visto, por ejemplo en Tshark, podemos personalizar la salida de ra mostrando las columnas que necesitemos en cada caso. Para ello usamos la opción -s seguido del nombre de columna:

ra -L0 -s stime -r skipe.arg

En el ejemplo anterior solo visualizaríamos la columnas de tiempo.

La notación seguida del nombre de columna elimina dicha columna. Sin el guión añadimos columnas. La notación :tamaño es para separación de columnas. Lo vemos:

ra -L0 -s stime ltime saddr daddr state load:15 -r skipe.arg

Las columnas a visualizar son:

  • stime marca de tiempo comienzo
  • ltime marca de tiempo final
  • saddr IP origen
  • daddr IP destino
  • state estado conexión
  • load:15 bits/segundo con tamaño 15 para separar un poco.

Podemos añadir muchas otras columnas/campos como:

  • sttl valor TTL origen
  • dttl  valor TTL destino
  • loss paquetes retransmitidos o dropeados
  • pkts total de paquetes transitidos en el flujo
  • sload bits/segundos origen
  • dload bits/segundos destino
  • rate paquetes por segundo
  • dir dirección flujo

Ordenando datos con rasort.

Si queremos ordenar los datos por campos,  lo podemos hacer usando la herramienta de argus rasort. Para ello usamos opción (-s).

Vamos a ordenar una salida por Total de paquetes (pkts).  No usaremos la salida por defecto, indicaremos que columnas queremos ver:

rasort  -L0 -s stime saddr dir daddr pkts -m pkts -r skipe.arg

Al igual que con ra y otras herramientas argus, podemos añadir filtros y otras opciones comunes.

Agrupando datos con Racluster.

Con la herramienta racluster vamos a agrupar los datos de tráfico por host, protocolo, puerto, etc. De esta forma podemos analizar el tráfico y visualizar de forma sencilla anomalias, servicios más usados, IPs que más tráfico genera, etc. Es una de las herramientas más importantes de Argus

La agrupación de datos depende de una serie de criterios o agregadores (-m) que puede ser, entre otos:

  • proto
  • saddr
  • daddr
  • sport
  • dport
  • stos
  • dtos
  • sttl
  • dttl
  • smac
  • dmac
  • stcp
  • dtcp

Tenemos también los modos –M el más usado es rmon (lo veremos más adelante), aunque hay más: correct, nocorrect, preserve, replace, etc. Y una ampliación de información -V (verbouse).  También es posible aplicar opciones y filtros vistos con ra.

Vamos a continuación a ilustrar con ejemplos el uso de racluster.

1.) Queremos agrupar los datos de un detrermiando tráfico por protocolo y visualizar los totales de  paquetes origen, paquetes destino, bytes totales origen y bytes totales destino:

racluster -L0 -m proto -r skipe.arg -s proto spkts dpkts sbytes dbytes

He usado las opciones:

  • -L0 imprimimos cabeceras en salida por consola
  • -m agrupamos por proto (protocolos)
  • -r leemos el archivo pcap
  • -s visualizamos en consola solo lo indicado

El resultado es claro.

2.) Agrupamos ahora por IP origen e IP destino, es decir saddr y daddr. Y visualizamos solo  saddr, dir, daddr, dur, bytes y  pkts. Con lo que veremos la duración (dur) de las conexiones entre IPs y totales de paquetes y bytes:

racluster -L0 -m saddr daddr -r skipe.arg  -s saddr dir daddr dur bytes pkt 

3.) Vamos a ver todo el trafico generado por las IP de la red interna, con totales por bytes y paquetes. Ordenaremos el tráfico por bytes. Visualizaremos solo saddr (IP origen), bytes (total bytes), pkts (total de paquetes).

Vamos a añadir pipes (|) para ordenar los datos con rasort (lo hemos visto más arriba). Tambiénn añadiremos un filtro BPF para “ver” solo el tráfico que nos interese.

racluster -L0 -m saddr -r XPLICO.arg  – src net 192.168.1.0/24 -w – | rasort -L0 -m bytes -s saddr bytes pkts

4.) Qué IPs son las que mayor tráfico generan pero solo las 10 IPs  que más generen. Lo haremos con la notación -N 10. Ordenaremos por bytes.

racluster -M rmon  -m saddr -r captura.arg -w – | ra -N 10 -w – | rasort -L0 -m bytes -s saddr bytes pkts 

Observad como usamos racluster, ra y rasort y el orden en que se hace. Usamos -M rmon para imprimir estádisticas de tráfico unidireccional.

5.) Vamos a obtener, agrupado por protocolos y puerto destino, los 20 (-N 20) puertos de destino más usados y los bytes totales transferidos. Lo ordenamos por bytes. Visualizaremos en el reporte o salida final solo la duración total según protocolo y puerto, protocolo, puerto destino y total de bytes. Filtramos por IP (– ip):

racluster -M rmon -m proto dport -r captura.arg -w – – ip | rasort -L0 -N 20 -m bytes proto dport -s dur proto dport bytes

 

6.) Vamos a ver quien usa más el puerto 443 como destino.

 racluster -m saddr -r mi_lan.arg – dst port 443 and net 192.168.1.0/24 -w – | rasort -L0 -m bytes -s saddr pkts bytes 

 

Auditando un host remoto.

Una de las carterísticas de Argus (Network Activity Audit System) es la captura y auditoría de tráfico en host remoto de forma nativa.

Queremos capturar el tráfico de red en el host 192.168.1.108. (server), usaremos  -P 5005 para indicar que escuche en el puerto 5005. Con la opción-d indicamos que se ejecute en modo servicio aunque no es imprescindible.

sudo argus -P 5005 -d

En el cliente, que puede ser cualquier otro host de la red, hacemos lo siguiente:

ra -L0 -S 192.168.1.108:5005 

Con -S indicamos que se conecte al host 192.168.1.108 puerto 5005.

 

Como siempre, podemos todos los comandos ya visto y relacionados con la herramieta ra, por ejemplo:

ra -L0 -S 192.168.1.108:5006 -s stime ltime saddr daddr state load – tcp and port 80
  • -S 292.168.1.108:5006 para conetar esta IP / puerto
  • -L0 imprimimos cabeceras en salida por consola
  • -s visualizamos en consola solo lo indicado
  • – tcp and port 80 aplicamos un filtro

Incluso usar racluster como hemos visto más arriba:

racluster -L0 -S 192.168.1.108:5006 -M rmon -m saddr daddr -s saddr daddr bytes pkts

 

Geolocalización GeoIP.

Para obtener datos de geolocalización, vamos a instalar primero GeoIP C Library:

wget  http://geolite.maxmind.com/download/geoip/api/c/GeoIP-1.4.7.tar.gz
tar zxf  GeoIP-1.4.7.tar.gz
cd GeoIP-1.4.7
./configure
make
make check
sudo make install

Debemos tener una versión de Argus-client con soporte GeoIP. si no lo tenemos así, y para la versión 3.0.6.1 (de junio 2012):

wget http://qosient.com/argus/src/argus-clients-3.0.6.1.tar.gz
tar zxf argus-clients-3.0.6.1.tar.gz
cd argus-clients-3.0.6.1

./configure –with-GeoIP=yes
make
sudo make install

Dentro de la carpeta: /argus-clients-3.0.6/support/Config/  tenemos el archivo ralabel.conf, necesario para configurar todo lo relacionado con el “etiquetado” de los datos argus con información de Geolocalización.

Copiamos este archivo (ralabel.conf)  por ejemplo a /etc/

Editamos ralabel.conf y al final tenemos las siguientes líneas/directivas:

RALABEL_GEOIP_CITY=”saddr,daddr:cco3,inode:lat,lon”
RALABEL_GEOIP_CITY_FILE=”/usr/local/share/GeoIP/GeoLiteCity.dat”

Deben estar descomentadas y correctamente configurada la ubicación de GeoLiteCity.dat. Si no lo tenemos, hay que descargarlo y descomprimirlo en el lugar configurado en RALABEL_GEOIP_CITY_FILE.

La línea  RALABEL_GEOIP_CITY=”saddr,daddr:cco3,inode:lat,lon” configura e indica qué datos vamos a extraer/mostrar en una etiqueta label para la salidad de ra.

Para este artículo he modificado esta línea para dejarla de esta forma:

RALABEL_GEOIP_CITY=”*:city,region,cname,lat,long“

Todo dependiendo de lo que necesitemos.

En este caso queremos extraer y mostrar datos de:

  • *:city  ciudad, si es aplicable, tanto para origen como destino
  • region  la región
  • cname
  • lat  latitud
  • long  longitud

Además, se pueden añadir otras keywords  :

  • cco   – country_code
  • cco3  – country_code3
  • cname – country_name
  • reg   – region
  • city  – city
  • pcode – postal_code
  • lat   – latitude
  • long  – longitude
  • metro – metro_code
  • area  – area_code
  • cont  – continent_code
  • off   – GMT time offset

Una línea que conviene descomentar es:

RALABEL_BIND_NAME=”all”     Resolución DNS.

Bien, ya tenemos casi todo listo.

Ahora vamos a usar un archivo .arg para convertirlo en un fichero de datos que llamaremos con la extensión .out con ralabel  y las opciones que acabamos de configurar en ralabel.conf, salvaremos el resultado con -w:

ralabel -f /etc/ralabel.conf -r 050608.arg -w 050608.out

Recordad que al principio vimos que los archivos .arg son el resultado de convertir un fuchero de captura trafico de red .pcap en formato compresible para Argus.

Ya tenemos nuestro fichero 050608.out.

Para mostrar la información de Geolocalización, añadiremos  +label:n  Esto significa añadir las etiquetas con un números de columnas n. Además podemos, con la opción -s, mostrar información standart como tiempo, duración, paquetes, bytes, dirección de flujo, estado de la conexión, puertos,  protocolo, y resto de cantidad de información de que disponemos.

En este caso solo vamos a mostrar saddr, daddr y la información GeoIP.

racluster -m saddr daddr -r 050608.out -w – | rasort -m saddr daddr -w final.out

y ahora final.out:

ra -LO -r final.out -s saddr:15 bytes +label:70 -N50 
  • -LO mostramos las etiquetas de columnas
  • -r leemos archivo
  • -s mostramos información en columnas y número (:15)
  • +label:70  mostramos la información extra de GeoIP en 70 columnas
  • -N50 solo los 50 primeros

Ya de forma algo más avanzada, unos tips de uso Argus y herramientas asociadas:

“-z” y “state” añaden info estado de la conexión y cambio estado flags TCP:

ra -L0 -r captura.arg -s saddr dir daddr state -z

Buscando una cadena de texto:

ra -LO -r captura.arg -s “saddr daddr proto suser:80” -e “www.*elmundo.es” – tcp

Igual al anterior pero más información (suser:512):

ra -LO -r captura.arg -s “saddr daddr proto suser:512” -e “google.es” – tcp

Estadísticas por protocolos:

racluster -L0 -m proto -r datos.arg -s proto trans pkts bytes appbytes

Y las gráficas.

Ya entendemos y sabemos usar Argus y algunas de sus herramientas. Es el momento, lo  veremos en el siguiente captítulo, de adentrarnos en la representación gráfica de tráfico de red con esta herramienta.

¿ qué veremos ?.

  • Generación de todo tipo de gráficas de tráfico de red con la utilidad Argus ragraph
  • Generación de gráficas con argus y afterglow
  • visualización g´rafica de datos de geolocalización con argus, ra y afterglow.

 

Hasta aquí por hoy y hasta la proxima.

Tags: , , ,

¿Quieres comentar algo sobre este post? Puedes hacerlo en nuestro foro de noticias.

Puedes seguir nuestras actualizaciones vía RSS, en Facebook y también desde Twitter.