Último artículo dedicado al modelado de gráficas mediante el archivo de propiedades con Afterglow. En la anterior entrega vimos las propiedades de color, formas y condicionales if con expresiones regulares con perl.
En esta ocasión veremos las variables y etiquetas. Para ello usaremos como ejemplo un archivo de alertas snort como fuente de datos y realizaremos todo el proceso en Windows.
Variables en AfterGlow.
Todo muy práctico. Tenemos un archivo de alertas Snort con una serie de alertas del tipo, por ejemplo:
- WEB-CGI redirect access
- WEB-CGI calendar access
y queremos crear una variable que contenga estas dos posiblidades. La varable la llamaremos @eventoswcgi.
como ya hemos comentado en el anterior artículo dedicado a Visualización gráfica de alertas Snort con Aferglow. las alertas irán en el campo name para los eventos. Recordad que dijimos:
- color.source es el color para las IP origen o sip.
- color.event será las descripciones de las alertas. Enmarcadas en una caja para name.
- color.target las Ip destino en color salmón para dip.
- color.edge son las flechas.
Pues bien la configuración de nuestra variable para estos eventos quedaría:
variable=@eventoswcgi=(«WEB-CGI redirect access»,»WEB-CGI calendar access»);
Ya tenemos nuestra variable almacenada. Ahora queremos crear una etiqueta para las coincidencias de esta bariable con las alertas.
Etiquetas en AfterGlow.
Es posible que los eventos mostrados con Afterglow en las gráficas seán muy largos, de difícil visualización o simplemente queramos mostrarlos de una foma más inteligible. Para ellos podemos recortar la salida .csv para el primer caso o etiquetas de forma personalizada para los otros dos.
Para ellos usaremos, en nuestro ejemplo con variable, label.event de la siguiente forma:
label.event=»Eventos.WEB-CGI» if (grep(/$fields[1]/,@eventoswcgi));
sin variable quedaría por ejemplo:
label.event=»Scan puertos» if ($fields[1] =~ /portscan/);
Ejemplo.
Ahora terminamos nuestro archivo de configuracion de propiedades color.snort para dejarlo de esta forma:
## color.snort.
# nodos de origen
color.source=»yellow» if ($fields[0]=~/^192\.168\..*/);
color.source=»lightblue»;
shape.source=»ellipse»;
# nodos de eventos
variable=@eventoswcgi=(«WEB-CGI redirect access»,»WEB-CGI calendar access»);
label.event=»Spoof…» if ($fields[1] =~ /SPOOF/);
color.event=»salmon» if ($fields[1] =~ /SPOOF/);
label.event=»Scan puertos» if ($fields[1] =~ /portscan/);
color.event=»red» if ($fields[1] =~ /portscan/);
label.event=»Eventos.WEB-CGI» if (grep(/$fields[1]/,@eventoswcgi));
color.event=»orange» if (grep(/$fields[1]/,@eventoswcgi));
color.event=»invisible»;
shape.event=»box»;
#nodos de destino
color.target=»green»;
shape.target=»ellipse»;
color.edge=»blue»;
Creamos la gráfica:
type alert.ids | perl snortalert2csv.pl «sip name dip» > snort.csv
type snort.csv | perl afterglow.pl -c color.snort | neato -Tpng -o snort.png
El resultado (pinchar para ampliar):
Relacionado con este artículo y para ampliar conocimientos:
Sobre formato de alertas Snort, interpretación, tipos, etc, ya hos hable aquí de forma bastante completa:
Sobre Afterglow, como realizar las gráficas, etc, etc, tanto para Linux como para Windows:
- Visualización gráfica de ficheros .pcap con AfterGlow.
- Visualización gráfica de ficheros .pcap con AfterGlow… para Windows.
- Argus. Auditando el tráfico de red. Parte 4. Generación de gráficas con AfterGlow.
- Visualización gráfica tráfico de red con AfterGlow. Detectando eventos o tráfico sospechoso en nuestra red.
==
Hasta aquí por hoy. Hasta la próxima.
Como siempre un trabajo de 10 bro 😉
Gracias Dabo.