Taller de Sistemas de detección de intrusiones SNORT - Practica comentada. Un caso real
Crear una regla Snort "desde cero" para la detección de ping desde windows 2000.
Para detectar un ping realizado desde fuera de nuestra red, lo primero que debemos saber es qué tipo de datos intervienen en la cabecera del datagrama IP, en la ICMP y los datos.
*La teoría TCP/IP nos dice que:
-
un echo request es de tipo 8 para obtener un echo reply (tipo 0)
-
en el campo Protocolo de la cabecera IP debe ir el dato ICMP y poco más recordaremos.
Así que la cuestión es cómo averiguar el resto de datos y, sobre todo, qué traza deja un ping enviado desde windows 2000.
*Formato de petición y respuesta de eco. Ping echo / echo request:

Para todo esto contamos con un tipo de herramientas llamadas sniffers. Utilizaremos para nuestra práctica Ethereal por ser de los más intuitivos y fáciles de usar e interpretar. Podemos usar también TCPDump/Windump.
-
Segundos antes de enviar un ping desde un host emisor pulsamos en Ethereal (o el soft que hayamos elegido para la captura de trazas): Capture > Start.
-
En nuestro host receptor activamos el capturador de paquetes.
-
Enviamos el ping al host receptor, dejando unos segundos para que "termine" el ping y pulsamos Stop en el panel de captura del host receptor
-
Buscamos en la secuencia de captura o traza, la información de envío de ping usando el protocolo ICMP.
Pulsando encima de la información nos saldrá algo paracido a esto en Ethereal:
Frame 61 (74 on wire, 74 captured)
Arrival Time: Jun 28, 2002 09:04:11.247973000
Time delta from previous packet: 0.000060000 seconds
Time relative to first packet: 1.864325000 seconds
Frame Number: 61
Packet Length: 74 bytes
Capture Length: 74 bytes
Ethernet II
Destination: 00:04:76:9a:66:a6 (INFOGRAFIA5)
Source: 00:01:02:9f:7b:0d (INFOGRAFIA3)
Type: IP (0x0800)
Internet Protocol, Src Addr: INFOGRAFIA3 (192.168.4.3), Dst Addr: INFOGRAFIA5 (192.168.4.5)
Version: 4
Header length: 20 bytes
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
0000 00.. = Differentiated Services Codepoint: Default (0x00)
.... ..0. = ECN-Capable Transport (ECT): 0
.... ...0 = ECN-CE: 0
Total Length: 60
Identification: 0x6aaa
Flags: 0x00
.0.. = Don't fragment: Not set
..0. = More fragments: Not set
Fragment offset: 0
Time to live: 128
Protocol: ICMP (0x01)
Header checksum: 0x46be (correct)
Source: INFOGRAFIA3 (192.168.4.3)
Destination: INFOGRAFIA5 (192.168.4.5)
Internet Control Message Protocol
Type: 0 (Echo (ping) reply)
Code: 0
Checksum: 0x4e5c (correct)
Identifier: 0x0200
Sequence number: 05:00
Data (32 bytes)
0000 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 abcdefghijklmnop
0010 71 72 73 74 75 76 77 61 62 63 64 65 66 67 68 69 qrstuvwabcdefghi
Las dos últimas líneas son los datos (32 bytes) que nos servirán como firma o huella para nuestra regla snort.
Ya sabemos la firma o huella que deja un ping en Windows 2000. Ya sólo nos queda crear una regla donde la opcion content tenga los datos "abcdefghijklmnopqrstuvwabcdefghi"
La regla nos quedaría entonces:
alert ICMP $EXTERNAL any -> $INTERNAL any (msg: "ICMP ping en Windows 2000."; dsize: 32; itype: 8; content: "abcdefghijklmnopqrstuvwabcdefghi"; depth: 32;)
Donde aparecen nuevos indicadores:
-
dsize: tamaño de datos. comprobación del tamaño del contenido del paquete.
-
itype: tipo de icmp, en este caso para un ping es 8.
-
depth: extensión del tamaño de datos que se ha de inspeccionar.
De esta práctica podemos desprender que para la creación de la mayoría de las reglas Snort el procedimiento es estudiar las trazas dejadas por cortafuegos y NIDS que supongan algún tipo de ataque o intrusión al sistema que queremos proteger.
Basándonos en el estudio de estas trazas, hallaremos la firma o huella del ataque que nos servirá en la creación de la regla de detección.
|
Opiniona sobre 'Taller de Sistemas de detección de intrusiones SNORT - Practica comentada. Un caso real' (1)
Opina sobre este tutorial |

