Argus. Auditando el tráfico de red. Parte I

Hemos visto, referente al tráfico de red, variadas herramientas. Desde sniffers tipo tcpdump/windump, wireshark, tshark, pasando por análisis de conexiones tcp con tcptrace, visualización gráfica de tráfico de red, extracción de datos con tcpxtract, etc.

argus ra formateo columnas -s

En esta ocasión vamos a estudiar una herramienta de auditoría de tráfico de red algo distinta: Argus. Se trata de una serie de herramientas para el análisis del trafico de red en forma cliente-servidor, basado en un único flujo para ambas direcciones de un conexión. Además, posee entre sus herramientas de análisis, utilidades generadoras de gráficas.Vermos también, en siguientes capítulos, el verdadero potencial de Argus con la herramienta racluster y la generación de gráficas con AfterGlow.

La segunda parte: Argus. Auditando el tráfico de red. Parte 2

Qué es Argus.

Como ya os he apuntado en la entrada, Argus 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.

De forma remota o a través de un fichero de captura de red  .pcap que previamente hemos de convertir al formato de Argus.

Instalación.

En mi Ubuntu 10.10, con la versión disponible en repositorio, tan solo:

sudo apt-get install argus-server argus-client

Leyendo lista de paquetes… Hecho
Creando árbol de dependencias
Leyendo la información de estado… Hecho
Los siguientes paquetes se instalaron automáticamente y no son necesarios:
linux-headers-2.6.35-22 linux-headers-2.6.35-22-generic
Utilice «apt-get autoremove» para eliminarlos.
Paquetes sugeridos:
librrds-perl
Se instalarán los siguientes paquetes NUEVOS:
argus-client argus-server
0 actualizados, 2 se instalarán, 0 para eliminar y 16 no actualizados.
Necesito descargar 1843kB de archivos.
Se utilizarán 4325kB de espacio de disco adicional después de esta operación.
Des:1 http://es.archive.ubuntu.com/ubuntu/ maverick/universe argus-client i386 2.0.6.fixes.1-3 [1705kB]
Des:2 http://es.archive.ubuntu.com/ubuntu/ maverick/universe argus-server i386 1:2.0.6.fixes.1-16.2 [137kB]
Descargados 1843kB en 3s (519kB/s)
Preconfigurando paquetes …
Seleccionando el paquete argus-client previamente no seleccionado.
(Leyendo la base de datos …  00%
156572 ficheros y directorios instalados actualmente.)
Desempaquetando argus-client (de …/argus-client_2.0.6.fixes.1-3_i386.deb) …
Seleccionando el paquete argus-server previamente no seleccionado.
Desempaquetando argus-server (de …/argus-server_1%3a2.0.6.fixes.1-16.2_i386.deb) …
Procesando disparadores para man-db …
Procesando disparadores para ureadahead …
ureadahead will be reprofiled on next reboot
Configurando argus-client (2.0.6.fixes.1-3) …
Configurando argus-server (1:2.0.6.fixes.1-16.2) …
Starting network auditing daemon: argus. 

Es multiplataforma y para Windows podemos usar Cygwin.

Para la última versión del paquete (3.0.3.x): http://qosient.com/argus/dev/

Descargamos con wget  lo instalamos de la siguiente forma:

Argus server:

  • tar zxf /path_al_directorio/argus-3.0.3.19.tar.gz
  • cd argus-3.0.3.19
  • sudo ./configure
  • sudo make
  • sudo make install  

Argus clients:

  • tar zxf /path_al_directorio/argus-clients-3.0.3.21.tar.gz
  • cd argus-clients-3.0.3.21
  • sudo ./configure
  • sudo make
  • sudo make install 

Las herramientas.

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

Argus tiene una serie de aplicaciones o herramientas para la auditoría o análisis del tráfico generado por argus (quien lee el tráfico de una interface de red y lo salva a un determinado formato o lee un .pcap y lo convierte), ya sea en tiempo real contra un server Argus o  como hemos dicho, a partir de un fichero .pcap .

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.
  • alguna más…

Uso básico. Entendiendo Argus / ra.

Como siempre, vamos a ir por etapas, desde lo más sencillo y simple hasta el uso más avanzado.

Argus tiene varias maneras de trabajo. Las iremos viendo. En principio, vamos a usarlo de forma que sea más facil comprender su filosofía.

Ejemplo 1.

– Queremos leer un fichero que hemos guardado mediante wireshark, tshark, windump/tcpdump, etc y leer, en formato argus los datos:

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 argus

Ejemplo 2.

– Queremos capturar, en tiempo real, todo el tráfico (local) que pasa por nuestra interfaz de red eth1 y salvar en un fichero para su posterior análisis.

sudo argus-i eth0 -w salida.arg

Ejemplo 3.

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

ra -L0 -nr skipe.arg

Tenemos:

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

El resultado es («pinchar» para ampliar):

argus ra salida

Lo analizamos:

– Tenemos una serie de columnas de información. Podemos añadir campos y datos o eliminar.

Estas la columnas, por defecto, son las siguientes:

  • 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

Proto puede ser:

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

– los Flgs 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

Seguimos interpretando la salida:

Como se puede apreciar en el ejemplo, 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 skipe.arg – host 195.46.253.218

y nos da como resultado:

ra argus filtro

Para entender como «funciona» argus y ra, lo mejor es traducir esta salida a una salida, por ejemplo de Wireshark:

argus ra wireshark

Formateando la salida ra.

Vamos a ir modelando el resultado y salida de ra para adecuar a nuestras necesidades.

Formateo de columnas.

Con la opción  -s podemos indicar que campos o columnas mostrar:

ra -L0 -s stime -r skipe.arg

alfon@alfonlinux:~$ ra -L0 -s stime -r skipe.arg
StartTime
09:41:34.864980
09:41:36.979398
09:41:36.979472
09:41:36.979507
09:41:36.979544
09:41:39.608610
09:41:39.668004

En el ejemplo de arriba indicamos que solo queremos la marca de tiempo. Pero podemos, en una salida por defecto, añadir o quitar clolumnas:

  • + añade columnas
  • quita columnas
  • :tamaño/separación columna

si el anterior ejemplo lo dejamos como:

ra -L0 -s -stime -r skipe.arg

saldrán todas las columnas por defecto per no la de marca de tiempo stime.

Vamos a crear una salida personalizada:

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

he añadido:

  • 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.

argus ra formateo columnas

Podemos añadir otros 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
  • ……

argus ra formateo columnas -s

(pinchar para ampliar).

También podemos añadir los filtros que queramos:

ra -L0 -s stime sttl dttl saddr dir daddr state sttl dttl loss  rate pkts -r skipe.arg – tcp and port 80

Usando rasort para ordenar los datos.

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

Por ejemplo: 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

rasort argus ordenar campos

Al igual que con ra, podemos añadir filtros y otras opciones vistas con ra.

La segunda parte: Argus. Auditando el tráfico de red. Parte 2

.

===========================

Bien, hasta aquí un pequeño repaso al funcionamiento básico de argus y ra. Para la próxima veremos el uso remoto en modo cliente-servidor y avanzaremos para resolver casos reales y ver otrs opciones importantes.

Con la herramienta racluster veremos también junto con AfterGlow la potencilidad de esta suite de herramientass que es Argus.

Hasta la proxima.

Esta entrada fue publicada en Argus, Interpretación capturas tráfico red. pcap, Seguridad y redes. Guarda el enlace permanente.

8 respuestas a Argus. Auditando el tráfico de red. Parte I

  1. Claudio dijo:

    Impecable!
    Esperamos que sigan así!
    Saludos!

  2. Linus Torbalds dijo:

    ¡¡Genial!!… puro orgasmo…

  3. berkey dijo:

    sudo apt-get install argus argus-client-server, does not work for me:
    it gives an error of:
    Reading package lists… Done
    Building dependency tree
    Reading state information… Done
    E: Unable to locate package argus
    E: Unable to locate package argus-client-server
    trying in Ubuntu 10.10
    any idea, thanks for the great information

  4. Alfon dijo:

    berkey,
    .
    sudo apt-get install argus-server argus-client
    .
    To install better use:
    .

    sudo apt-get install flex bison
    Argus server:
    * tar zxf /path_al_directorio/argus-3.0.3.19.tar.gz
    * cd argus-3.0.3.19
    * sudo ./configure
    * sudo make
    * sudo make install

    .

    Argus clients:
    * tar zxf /path_al_directorio/argus-clients-3.0.3.21.tar.gz
    * cd argus-clients-3.0.3.21
    * sudo ./configure
    * sudo make
    * sudo make install

    .
    Best regards,

  5. T-rrible dijo:

    Estimados, tengo problemas para instalar el argus-server.
    probé por separados:
    argus-client…ook
    argus-server: error: «»No se ha podido localizar el paquete argus-server»»

    Estoy en Debian 6.0.2 amd64
    Desde ya gracias!

    • Alfon dijo:

      Hola T-rrible.

      Baja argus-server mediante wget e Instálalo de la forma (cambiando la versión que sea):

      tar zxf /path_al_directorio/argus-3.0.3.19.tar.gz
      cd argus-3.0.3.19
      sudo ./configure
      sudo make
      sudo make install

      Saludos,

  6. Pingback: Argus. Auditando el tráfico de red. Parte 6. Argus y Geolocalización con GeoIP. | Seguridad y Redes

  7. Christian dijo:

    Buenísimo, acabas de hacer un manual que ni la misma página oficial de argus tiene.

Deja un comentario