<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>Maestros del Web &#187; Alfonso Mira</title>
	<atom:link href="http://www.maestrosdelweb.com/author/alfonso-mira/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.maestrosdelweb.com</link>
	<description>Un espacio para los entusiastas del web</description>
	<pubDate>Fri, 05 Sep 2008 14:24:12 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Detectando Sniffers en nuestra red. Redes conmutadas y no conmutadas.</title>
		<link>http://www.maestrosdelweb.com/editorial/sniffers/</link>
		<comments>http://www.maestrosdelweb.com/editorial/sniffers/#comments</comments>
		<pubDate>Sat, 31 Jan 2004 00:00:00 +0000</pubDate>
		<dc:creator>Alfonso Mira</dc:creator>
		
		<category><![CDATA[Editorial]]></category>

		<category><![CDATA[Seguridad]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Vamos a tratar aquí, principalmente, la detección de sniffers en nuestra red desde el escenario más básico posible.
Este escenario sería una subred o red no conmutada. Aunque más adelante nos introduciremos brevemente en la escucha en redes conmutadas o basadas en switches y herramientas de detección en este tipo de redes. Antes que nada, decir [...]]]></description>
			<content:encoded><![CDATA[<p><span class="intro">Vamos a tratar aquí, principalmente, la detección de sniffers en nuestra red desde el escenario más básico posible.</span><span id="more-215"></span></p>
<p>Este escenario sería una subred o red no conmutada. Aunque más adelante nos introduciremos brevemente en la escucha en redes conmutadas o basadas en switches y herramientas de detección en este tipo de redes. Antes que nada, decir que los sniffers no son fáciles de detectar y combatir, ya que se trata de programas que trabajan en modo pasivo. Las técnicas que se tratan aquí, por tanto, no son totalmente fiables, aunque en algunos casos si suponen una gran aproximación al descubrimiento de este tipo de software.</p>
<p>Antes que nada y para entender algunos conceptos de este artículo veremos como funciona, brevemente, el protocolo ARP.</p>
<h3> ¿Qué es. Para qué sirve ARP?</h3>
<p>En una red Ethernet cuando queremos enviar un paquete IP entre dos hosts conectados las únicas direcciones válidas son   las MAC y lo que circula son tramas Ethernet. Entonces y volviendo al ejemplo   de antes cuando queremos enviar un paquete IP lo que se hace es meter el paquete<br />
dentro de una trama Ethernet y enviar. </p>
<p>Formato de una cabecera ARP:</p>
<p>  <img src="/images/sniffer_image1.gif" alt="Formato de una cabecera ARP" height="160" width="374" class="centro"/></p>
<ul>
<li><strong>HLEN </strong>Longitud dirección hardware</li>
<li><strong>PLEN </strong>Longitud dirección del protocolo</li>
<li><strong>OPERACION </strong>Código de operación (ARPreques ó ARPreply) </li>
<li><strong>SENDER HA </strong>Dirección de origen hardware</li>
<li><strong>SENDER IP </strong>Dirección de origen del protocolo</li>
<li><strong>TARGET HA </strong>Dirección de destino hardware</li>
</ul>
<p><strong>¿Cuál es el problema entonces? </strong></p>
<p>El problema radica en que sabemos la dirección IP del host de destino pero no  su dirección MAC.</p>
<p> <strong>¿Cómo se soluciona esto? </strong></p>
<p>La solución está en que antes de enviar el paquete IP se debe usar ARP para averiguar cual es la dirección MAC del host destino de la conexión que pretendemos  realizar. </p>
<p><strong>¿Y cómo se hace?</strong></p>
<p>ARP tiene dos tipos básicos de mensajes:</p>
<ul>
<li> Mensaje de petición o ARPrequest </li>
<li>Mensaje de respuesta o ARPreply</li>
</ul>
<p>Los dos viajan por nuestra red dentro de tramas Ethernet. Cuando queremos enviar un paquete IP desde un host origen (A) hacia un host destino (B) sucede:</p>
<p> (A) crea un mensaje o petición ARPrequest indicando:</p>
<ul>
<li> Su dirección IP </li>
<li>Su dirección MAC </li>
<li>Dirección IP del host (B) </li>
<li>Campo de dirección MAC host (B) sin rellenar.</li>
</ul>
<p>Envía el ARPrequest a la dirección broadcast (todos los hosts de la red) pero sólo contesta uno de ellos (B). Entonces (B) crea un mensaje ARPreply: </p>
<ul>
<li> Rellena el campo de dirección MAC con su MAC </li>
<li>Intercambia las direcciones origen y destino </li>
<li>Cambia el tipo de mensaje de ARPreques a ARPreply </li>
<li>Envía el mensaje ARPrpely a (A). </li>
</ul>
<p> Ya hay entonces información suficiente para establecer cualquier comunicación entre (A) y (B).</p>
<p> Esto lo podemos comprobar utilizando un sniffer de red como Ethereal y filtrando por protocolos, en este caso ARP: </p>
<div class="codigo">
<pre>C:\scan>windump -qtn arp
windump: listening on \Device\NPF_{604C8AE3-5FAC-45A5-BFAA-81175A8C32BF}
arp who-has 192.168.5.241 tell 192.168.5.240
arp who-has 192.168.4.234 tell 192.168.4.1
arp who-has 192.168.4.234 tell 192.168.4.1
arp who-has 192.168.4.234 tell 192.168.4.1
arp who-has 192.168.5.4 tell 192.168.5.240
arp who-has 192.168.5.6 tell 192.168.5.240
arp who-has 192.168.5.44 tell 192.168.5.240
arp who-has 192.168.5.14 tell 192.168.5.240
arp who-has 192.168.4.234 tell 192.168.4.1
arp who-has 192.168.4.15 tell 192.168.4.10
arp reply 192.168.4.15 is-at 0:1:2:e7:57:cf
arp who-has 192.168.4.234 tell 192.168.4.1
arp who-has 192.168.4.15 tell 192.168.4.1
arp reply 192.168.4.15 is-at 0:1:2:e7:57:cf
arp who-has 192.168.4.234 tell 192.168.4.1
arp who-has 192.168.4.15 tell 192.168.4.13
arp reply 192.168.4.15 is-at 0:1:2:e7:57:cf.....</pre>
</div>
<p>Toda la información de las relaciones IP/MAC se guarda en la cache ARP. </p>
<p><strong>En un sistema Windows: </strong></p>
<div class="codigo">
<pre>C:\&gt;arp -a </pre>
</div>
<p> <em>Interfaz: 192.168.4.3 on Interface 0&#215;1000003<br />
</em></p>
<p><em> Dirección IP Dirección física Tipo </em></p>
<p><em> 192.168.4.1 00-04-76-97-b3-a9 dinámico </em></p>
<p><em> 192.168.4.20 00-a0-24-4e-4e-4e dinámico</em></p>
<p><strong>Sistemas Linux:</strong></p>
<div class="codigo">
<pre>$ arp -a </pre>
</div>
<p><em>serprint (192.168.4.2) at 52:54:05:fd:de:e5 </em></p>
<p><em> infografia3 (192.168.4.3) at 00:90:27:6a:58:74 </em></p>
<p>Una vez visto como funciona el protocolo ARP, seguimos con la detección de los sniffers.&nbsp;</p>
<h3>Detección en sistemas UNIX/Linux</h3>
<p>En entornos Linux o UNIX la verificación de una interfase en modo promiscuo se puede hacer usando ifconfig. Este programa configura la interfase de red instalada en un determinado host y obtiene información de la configuración en el momento de ejecutar el programa. Cuando un adaptador de red se encuentra en modo promiscuo, ifconfig nos devuelve la siguiente información: </p>
<div class="codigo">
<pre>$ ifconfig -a 

eth0 Link Encap: 10Mbps Ethernet HWaddr: xx:xx:xx:xx:xx:xx
inet addr: a.b.c.d Bcast: a.b.c.f Mask: m.m.m.m
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 (OJO: Modo
promiscuo) 

RX packets: 0 errors:0 dropped:0 overruns:0TX packets:0 errors:0
dropped:0 overruns:0 

Interrupt:15 Base Address:0x300</pre>
</div>
<p>Este sistema no es infalible. Existen programas que pueden hacer esta labor como: </p>
<h3>CPM (Check Promiscuous Mode)</h3>
<p>Este pequeño programa realizado por la Universidad de Carnegie Mellon, chequea el interfaz de red de la máquina descubriendo si está siendo utilizado en modo promiscuo (escuchando todo el tráfico de la red). </p>
<div class="codigo">
<pre>$ cpm 

4 network interfaces found: 

eth0:5: Normal
eth0:3: Normal
eth0:2: Normal
eth0:1: Normal
eth0: *** IN PROMISCUOUS MODE ***</pre>
</div>
<p>Existen otros programas como Antisniff,  Sentinel, SniffDet, ifstatus o NEPED: </p>
<h3>Veamos como trabaja NEPED</h3>
<p>Tenemos que introducir la interfase de red: </p>
<div class="codigo">
<pre>neped eth0 

----------------------------------------------------------
> My HW Addr: 00:50:BF:1C:41:59
> My IP Addr: 192.168.0.1
> My NETMASK: 255.255.255.0
> My BROADCAST: 192.168.1.255
----------------------------------------------------------
Scanning .... 

* Host 192.168.0.3, 00:C2:0F:64:05:FF **** Promiscuous mode detected!!! 

End.</pre>
</div>
<p><strong>NEPED</strong> utiliza la técnica de realizar una simple petición ARP para cada una de las IPs de la red a diagnosticar,  pero ojo, los paquetes no van destinados a broadcast (FF:FF:FF:FF:FF:FF), sino  a una dirección aleatoria e inexistente. Sólo las interfaces en modo promiscuo  verán estos paquetes, y de esta manera, sólo estas interfaces contestarán a<br />
estas peticiones.</p>
<p>Existe también un dispositivo de hardware llamado Tap. Este dispositivo permite  conectarse a un Hub o incluso a un switch de red al cual conectásemos un dispositivo   (ordenador) para monitorizar la red. Existen tipos de Taps para cada tipo de red Ethernet 10 Mbps, 100 Mbps y 1 Gbps.</p>
<p> Más información en: <a                   href="http://www.netoptics.com/">http://www.netoptics.com/</a> </p>
<h3>SniffDet - Remote Sniffer Detection </h3>
<p><a                  href="http://prdownloads.sourceforge.net/sniffdet/sniffdet-0.9.tar.gz">sniffdet-0.9.tar.gz</a></p>
<p>Usa las técnicas test ICMP, test ARP, test DNS y test de ping de latencia.</p>
<div class="codigo">
<pre># ./sniffdet 0.9
A Remote sniffer Detection Tool
Copyright (c) 2003
Ademar de Souza Reis Jr.
Milton Soares Filho
Usage: ./sniffdet [options] TARGET
Where:
TARGET is a canonical hostname or a dotted decimal IPv4 address 

-i &#8211;iface=DEVICE Use network DEVICE interface for tests
-c &#8211;configfile=FILE Use FILE as configuration file
-l &#8211;log=FILE Use FILE for tests log
-f &#8211;targetsfile=FILE Use FILE for tests target
&#8211;pluginsdir=DIR Search for plugins in DIR
-p &#8211;plugin=FILE Use FILE plugin
-u &#8211;uid=UID Run program with UID (after dropping root)
-g &#8211;gid=GID Run program with GID (after dropping root)
-t &#8211;test=[testname] Perform specific test
Where [testname] is a list composed by:
dns DNS test
arp ARP response test
icmp ICMP ping response test
latency ICMP ping latency test
-v &#8211;verbose Run in verbose mode
-h, &#8211;help Show this help screen and exit
&#8211;version Show version info and exit 

Defaults:
Interface: &quot;eth0&quot;
Log file: &quot;sniffdet.log&quot;
Config file: &quot;/etc/sniffdet.conf&quot;
Plugins Directory: &quot;/usr/lib/sniffdet/plugins&quot;
Plugin: &quot;stdout.so&quot; 

You have to inform at least one test to perform
</pre>
</div>
<p>Vemos un ejemplo resultado   de este software: </p>
<div class="codigo">
<pre>------------------------------------------------------------
Sniffdet Report
Generated on: xxxxxxxxx 2003
------------------------------------------------------------
Tests Results for target 192.168.2.1
------------------------------------------------------------
Test: ARP Test
Check if target replies a bogus ARP request (with wrong MAC)
Validation: OK
Started on: xxxx
Finished on: Mxxxxx
Bytes Sent: 84
Bytes Received: 60
Packets Sent: 2
Packets Received: 1
------------------------------------------------------------
RESULT: POSITIVE
------------------------------------------------------------
------------------------------------------------------------
Number of tests with positive result: #1</pre>
</div>
<h3>AntiSniff_v1.3</h3>
<p><a href="http://www.l0pht.com/antisniff">http://www.l0pht.com/antisniff</a></p>
<p>Esta herramienta, tanto para plataformas linux/Unix como para Win32, es muy sencilla de usar y tan sólo es necesario introducir el rango ede IPs a monitorizar en busca del posible sniffer. Usa las técnicas de ping de latencia, test DNS y test ARP. </p>
<h3>Sentinel</h3>
<p><a href="http://www.packetfactory.net/Projects/sentinel/">http://www.packetfactory.net/Projects/sentinel/</a></p>
<p>Utiliza los métodos de: test DNS, test ARP, prueba ICMP Etherping, y ping de latencia.<br />
Uso de sentinel:</p>
<div class="codigo">
<pre>
 ./sentinel [método] [-t &lt;destino ip&gt;] [opciones]

Métodos:
 [ -a test ARP ]
 [ -d test DND ]
 [ -i ICMP Test ping de latencia]
 [ -e ICMP test Etherpingt ]
Opciones:
 [ -f &lt;fichero&gt; fichero o IP]
 [ -c &lt;x.x.x&gt; clase C a monitorizar]
 [ -n &lt;número de paquetes a enviar&gt; ]
 [ -I &lt;dispositivo&gt; ]
</pre>
</div>
<p>Ejemplos:<br />
  ./sentinel -a -t 192.168.1.2<br />
 Optimizado para usar el test ARP host 192.168.1.2<br />
 ./sentinel -d -f 1.1.1.1 -t 192.168.1.2<br />
 Optimizado para usar el test DNS host 192.168.1.2<br />
 Optimizado para escanear una red de clase c (192.168.4) usando el test ARP, DNS y test Etherping</p>
<h3>Otras formas de detectar posibles sniffers </h3>
<ul>
<li> Detectar y controlar los logs que<br />
    suelen generar los sniffers. </li>
<li> Detectar y controlar las conexiones<br />
    al exterior. </li>
<li> Monitorizados los programas que acceden<br />
    al dispositivo de red. </li>
<li> Normalmente una interfase en modo<br />
    promiscuo, queda reflejada en el fichero de logs: </li>
<li> $ cat /var/log/messages </li>
</ul>
<h3>Otras técnicas de detección </h3>
<p>  Sólo por nombrar algunas, son usadas por los programas anti-sniffers. Comentaremos la última: </p>
<ul>
<li> Ping de latencia </li>
<li> Test ARP </li>
<li> Uso de un IDS. Por ejemplo <strong>Snort<br />
    </strong>que contiene un preprocesador (arpspoof) que nos puede servir. Aquí<br />
    las líneas de snort.conf configurando el preprocesador: </li>
</ul>
<div class="codigo">
<pre>arpspoof
#----------------------------------------
# Experimental ARP detection code from Jeff Nathan, detects ARP
attacks,
# unicast ARP requests, and specific ARP mapping monitoring. To make
use
# of this preprocessor you must specify the IP and hardware address
of hosts on # the same layer 2 segment as you. Specify one host IP
MAC combo per line.
# Also takes a &quot;-unicast&quot; option to turn on unicast ARP request
detection.
# Arpspoof uses Generator ID 112 and uses the following SIDS for
that GID:
# SID Event description
# ----- -------------------
# 1 Unicast ARP request
# 2 Etherframe ARP mismatch (src)
# 3 Etherframe ARP mismatch (dst)
# 4 ARP cache overwrite attack 

preprocessor arpspoof
preprocessor arpspoof_detect_host: 192.168.2.1 f0:0f:00:f0:0f:00</pre>
</div>
<p> Otro IDS para sistemas Linux como <strong>Prelude<br />
Hybrid IDS </strong>(<a href="http://www.preludeids.org/rubrique.php3?id_rubrique=13">http://www.preludeids.org/rubrique.php3?id_rubrique=13</a>)</p>
<p> Posee un plugin ( <strong>ArpSpoof Plugin </strong>) que nos ayuda a detectar<br />
  incoherencias en mensajes ARP, conflictos con una base de datos ARPwatch (veremos<br />
  esto más adelante), etc:</p>
<p>Configuración de plugin: /usr/local/etc/prelude-nids/prelude-nids.conf </p>
<div class="codigo">
<pre>...
[ArpSpoof]
#
# Search anomaly in ARP request.
#
# The &#8220;directed&#8221; option will result in a warn each time an ARP
# request is sent to an address other than the broadcast address.
#
# directed;
# arpwatch=&lt;ip&gt; &lt;macaddr&gt;;
&#8230; 

* Test DNS</pre>
</div>
<h3> Las técnicas de detección. Breve explicación. </h3>
<p> <strong>El test DNS</strong> </p>
<p>En este método, la herramienta de detección en sí misma está en modo promiscuo. Creamos numerosas conexiones TCP falsas en nuestro segmento de red, esperando un sniffer pobremente escrito para atrapar estas conexiones y resolver la dirección     IP de los inexistentes hosts. Algunos sniffers realizan búsquedas inversas DNS en los paquetes uqe capturan. Cuando se realiza una búsqueda inversa DNS, un     utilidad de detección de sniffers &quot;huele&quot; la petición de las operaciones de<br />
búsqueda para ver si el objetivo es aquel que realiza la petición del host inexistente.</p>
<p><strong>El Test del Ping</strong> </p>
<p> Este método confía en un problema en el núcleo de la máquina receptora. Podemos     construir una petición tipo &quot;ICMP echo&quot; con la dirección IP de la máquina sospechosa     de hospedar un sniffer, pero con una dirección MAC deliberadamente errónea.     Enviamos un un paquete &quot;ICMP echo&quot; al objetivo con la dirección IP correcta,     pero con una dirección de hardware de destino distinta. La mayoría de los sistemas     desatenderán este paquete ya que su dirección MAC es incorrecta. Pero en algunos     sistemas Linux, NetBSD y NT, puesto que el NIC está en modo promiscuo, el sniffer     asirá este paquete de la red como paquete legítimo y responderá por consiguiente. </p>
<p>    Si el blanco en cuestión responde a nuestra petición, sabremos que está en modo     promiscuo. Un atacante avanzado puede poner al día sus sniffers para filtrar tales paquetes para que parezca que el NIC no hubiera estado en modo promiscuo.</p>
<p><strong>El Test ICMP</strong></p>
<p> Ping de Latencia. En éste método, hacemos ping al blanco y anotamos el Round Trip Time (RTT, retardo de ida y vuelta o tiempo de latencia) Creamos centenares de falsas conexiones TCP en nuestro segmento de red en un período de tiempo muy corto. Esperamos que el sniffer esté procesando estos paquetes a razón de que el tiempo de latencia incremente. Entonces hacemos ping otra vez, y comparamos el RTT esta vez con el de la primera vez. Después de una serie de tests y medias,   podemos concluir o no si un sniffer está realmente funcionando en el objetivo o no. </p>
<p><strong>El test ARP</strong></p>
<p> Podemos enviar una petición ARP a nuestro objetivo con toda la información rápida excepto con una dirección hardware de destino errónea. Una máquina que no esté en modo promíscuo nunca verá este paquete, puesto que no era destinado a ellos, por lo tanto no contestará. Si una máquina está en modo promiscuo, la petición ARP sería considerada y el núcleo la procesaría y contestaría. Por la máquina que contesta, la sabemos estamos en modo promiscuo.</p>
<p><strong>El test Etherping</strong></p>
<p> Enviamos un &quot;ping echo&quot; al host a testear con una IP de destino correcta y dirección MAC falseada. Si el host responde, es que su interfaz está en modo promiscuo, es decir, existe un sniffer a la escucha y activo.</p>
<h3>Protegerse contra la acción de los sniffers </h3>
<p>A grandes rasgos para protegernos de los sniffers y para que éstos no cumplan sus objetivos de olfateo de contraseñas y en general nos &quot;lean datos sensibles&quot; en texto plano -sin cifrado fuerte-, podemos hacer uso de diversas técnicas o utilizar sistemas como: </p>
<ul>
<li> Redes conmutadas (no siempre es efectivo)
  </li>
<li> PGP </li>
<li> SSL</li>
<li> SSH </li>
<li> VPN</li>
<li> etc. </li>
</ul>
<p> Aunque ya veremos más adelante que ni<br />
  siquiera el uso de SSH, por citar un ejemplo, nos puede proteger efectivamente<br />
  del uso de ciertos tipos de sniffer como ettercap.
</p>
<h3>Detección en sistemas Windows </h3>
<h4> PromiScan </h4>
<p>&quot;PromiScan ( <a href="http://www.securityfriday.com/">http://www.securityfriday.com/</a>) es una utilidad de distribución gratuita diseñada para dar caza a los nodos promiscuos en una LAN rápidamente y sin crear una carga pesada en la red. Hay que tener en cuenta que localizar un nodo promiscuo es una tarea ardua, y que en muchos casos el resultado es incierto; no obstante, PromiScan consigue mostrar cada uno de esos nodos de una manera transparente, claramente visible. Para usar PromiScan es necesario contar con Windows 2000 Professional y haber instalado previamente el controlador WinPcap.&quot;
</p>
<h3>PromiscDetect </h3>
<p><a href="http://ntsecurity.nu/downloads/promiscdetect.exe">promiscdetect.exe</a></p>
<div class="codigo">
<pre>C:\scan>promiscdetect
PromiscDetect 1.0 - (c) 2002, Arne Vidstrom
(arne.vidstrom@ntsecurity.nu)
- http://ntsecurity.nu/toolbox/promiscdetect/ 

Adapter name: 

- NIC PCI 3Com EtherLink XL 10/100 PCI para administraci¾n completa
del equipo
(3C905C-TX) 

Active filter for the adapter: 

- Directed (capture packets directed to this computer)
- Multicast (capture multicast packets for groups the computer is a
member of)
- Broadcast (capture broadcast packets)
- Promiscuous (capture all packets on the network) 

WARNING: Since this adapter is in promiscuous mode there could be a
sniffer
running on this computer!</pre>
</div>
<h3> ProDETECT 0.2<br />
  BETA </h3>
<p>  <a href="http://sourceforge.net/projects/prodetect/">http://sourceforge.net/projects/prodetect/</a></p>
<p>  Alerta de ProDETECT:</p>
<p>  <img   src="/images/sniffer_image2.gif" width="425" height="69" alt="Alerta de ProDETECT" class="centro"/>
  </p>
<h3>Detección en redes conmutadas</h3>
<p>En redes conmutadas o que hagan uso de switches, la técnica de ARP poisoning o envenenamiento arp es la más efectiva. Esta técnica consiste, muy brevemente, en modificar (envenenar) la tabla ARP de los host involucrados en el ataque para que éstos envíen a la red tramas Ethernet con destino la MAC del atacante. Esto significa que el switch entregará los datos de la comunicación a dicho host. Para evitar el refresco de la caché ARP es necesario el envió constante de arp-reply. </p>
<p> Una posible solución o defensa sería el uso de MACs estáticas, con el fin de que no puedan ser modificadas, aunque en algunos sistemas <a href="http://www.maestrosdelweb.com/principiantes/historia-de-windows/">Windows</a> esto no es eficiente al 100 por 100.</p>
<p> En sistemas Linux la herramienta <strong>ARPWatch </strong>( <a href="http://www-nrg.ee.lbl.gov/">http://www-nrg.ee.lbl.gov/</a>) nos puede servir para detectar el uso del envenenamiento ARP en nuestro sistema. Con <strong>ARPWatch </strong>podemos comprobar la correspondencia entre pares IP-MAC (Ethernet). En caso de que un cambio en un par se produzca (esto es, se escuche en el interfaz de red del sistema), <strong>ARPWatch </strong>envía un correo de notificación del suceso a la cuenta root o administrador del sistema con un mensaje tipo &#8220;FLIP FLOP o Change ethernet address&#8221; . También podemos monitorizar la existencia de nuevos host (aparición de una nueva MAC en la red). </p>
<div class="codigo">
<pre># ./arpwatch -?
Version 2.1a11
usage: arpwatch [-dN] [-f datafile] [-i interface] [-n net[/width]]
[-r file]
[-u username] [-e username] [-s username] 

# cat /etc/sysconfig/arpwatch
# -u &lt;username&gt; : defines with what user id arpwatch should run
# -e &lt;email&gt; : the &lt;email&gt; where to send the reports
# -s &lt;from&gt; : the &lt;from&gt;-address
OPTIONS=&quot;&quot;
</pre>
</div>
<p> Una herramienta similar a <strong>ARPwatch </strong>pero para sistemas Windows la encontramos en <strong>WinARP Watch v1.0 </strong>( <a href="http://www.securityfocus.com/data/tools/warpwatch.zip">http://www.securityfocus.com/data/tools/warpwatch.zip</a>). Esta herramienta no enviará correo alguno a ningún administrador, pero nos tendrá   puntualmente informados sobre la caché ARP, las correspondencias IP/MAC, cualquier nuevo par que se añada a la caché, etc.</p>
<p> Una alerta de WinARP Watch:</p>
<p>  <img src="/images/sniffer_image3.gif" height="185"  width="425" alt="Una alerta de WinARP Watch" class="centro"/></p>
<p> Existe un tipo especial de switches que está preparado para que la tabla ARP   no pueda ser modificada. </p>
<p> Hablando de herramientas, una que realiza este trabajo de escucha en redes conmutadas   con gran eficacia es <strong>Ettercap</strong>. <strong>Ettercap </strong>( <a href="http://tercap.sourceforge.net">http://ettercap.sourceforge.net</a> ) es capaz de escuchar tanto redes basadas en hubs como en switches. Además puede escuchar conexiones SSH e incluso detectar otros envenenamientos o modificaciones de la tabla ARP. </p>
<h3><strong>Detección de envenenamiento ARP con ettercap en un sistema Windows. </strong></h3>
<div class="codigo">
<pre>C:\...\ettercap>ettercap -Nc
ettercap 0.6.b (c) 2002 ALoR &#038; NaGA
List of available devices : 

--> [dev0] - [3Com EtherLink PCI] 

Please select one of the above, which one ? [0]:
Your IP: 192.168.4.3 with MAC: 00:04:76:F2:C9:5F on Iface: dev0
Building host list for netmask 255.255.255.0, please wait&#8230; 

Sending 255 ARP request&#8230;
* |==================================================>| 100.00 % 

Resolving 14 hostnames&#8230;
* |==================================================>| 100.00 % 

Checking for poisoners&#8230; 

MAC of 192.168.4.59 and 192.168.4.235 are identical ! </pre>
</div>
<p> Otra herramienta que detecta cambios<br />
  en los pares IP/MAC así como ataques tipo arp-spoofing es <strong>ACiD (ARP<br />
  Change intrusion Detection) </strong></p>
<div class="codigo">
<pre>C:\scan\ACID>acid
ACiD - 0.0.2 - (c) 2002 Roberto Larcher - robertolarcher@webteca.port5.com
All rights reserved. 

Press CTRL+C to stop. 

Initializing default adapter. Please wait... 

IP: 0.4.168.192 Subnet Mask: 0.255.255.255
Network type: Ethernet 

ACiD: bogon 192.168.4.1 00:04:76:97:b3:a9
ACiD: bogon 192.168.5.240 00:06:5b:05:9a:e7
ACiD: bogon 192.168.4.1 00:04:76:97:b3:a9
ACiD: bogon 192.168.2.3 00:a0:24:4d:bc:69
ACiD: bogon 192.168.4.5 00:04:76:9a:66:a6
ACiD: bogon 192.168.2.3 00:a0:24:4d:bc:69
ACiD: bogon 192.168.2.3 00:a0:24:4d:bc:69
ACiD: bogon 192.168.4.3 00:04:76:f2:c9:5f
ACiD: bogon 192.168.4.3 00:04:76:f2:c9:5f
ACiD: bogon 192.168.4.20 00:a0:24:4e:4e:4e
ACiD: bogon 192.168.5.240 00:06:5b:05:9a:e7
ACiD: bogon 192.168.4.5 00:04:76:9a:66:a6
ACiD: bogon 192.168.4.1 00:04:76:97:b3:a9
ACiD: bogon 192.168.4.20 00:a0:24:4e:4e:4e
ACiD: bogon 192.168.4.15 00:01:02:e7:57:cf
ACiD: bogon 192.168.4.8 00:10:4b:4d:15:bb 

Ctrl+C detected... 

IP  MAC table: 

192.168.2.3 00:a0:24:4d:bc:69
192.168.4.1 00:04:76:97:b3:a9
192.168.4.10 00:a0:24:4e:51:6b
192.168.4.15 00:01:02:e7:57:cf
192.168.4.20 00:a0:24:4e:4e:4e
192.168.4.3 00:04:76:f2:c9:5f
192.168.4.5 00:04:76:9a:66:a6
192.168.4.8 00:10:4b:4d:15:bb
192.168.5.240 00:06:5b:05:9a:e7 

ArpCount table: 

192.168.2.3 -3
192.168.4.1 -8
192.168.4.10 1
192.168.4.15 -2
192.168.4.20 3
192.168.4.3 -2
192.168.4.5 -10
192.168.4.8 1
192.168.5.240 -6</pre>
</div>
<p>En la consola de ACID si existe un error<br />
  en la paridad IP/MAC nos alertará de esta manera: </p>
<div class="codigo">
<pre>ACiD: bogon 192.168.4.5 00:04:76:f2:c9:5f
(00:11:22:33:44:55)
ACiD: ethernet mismatch 192.168.4.5 00:04:76:f2:c9:5f (00:11:22:33:44:55)
ACiD: bogon 192.168.4.5 00:04:76:f2:c9:5f (00:11:22:33:44:55)
ACiD: ethernet mismatch 192.168.4.5 00:04:76:f2:c9:5f (00:11:22:33:44:55)
ACiD: bogon 192.168.4.5 00:04:76:f2:c9:5f (00:11:22:33:44:55)
ACiD: ethernet mismatch 192.168.4.5 00:04:76:f2:c9:5f (00:11:22:33:44:55)
ACiD: bogon 192.168.4.5 00:04:76:f2:c9:5f (00:11:22:33:44:55)
ACiD: ethernet mismatch 192.168.4.5 00:04:76:f2:c9:5f (00:11:22:33:44:55)
ACiD: bogon 192.168.4.1 00:04:76:97:b3:a9
ACiD: bogon 192.168.4.5 00:04:76:9a:66:a6
Possible spoof 192.168.4.5 00:04:76:9a:66:a6 was at 00:04:76:f2:c9:5f</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.maestrosdelweb.com/editorial/sniffers/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Sistemas de Detección de intrusos y Snort.</title>
		<link>http://www.maestrosdelweb.com/editorial/snort/</link>
		<comments>http://www.maestrosdelweb.com/editorial/snort/#comments</comments>
		<pubDate>Tue, 19 Aug 2003 00:00:00 +0000</pubDate>
		<dc:creator>Alfonso Mira</dc:creator>
		
		<category><![CDATA[Editorial]]></category>

		<category><![CDATA[Seguridad]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Un IDS es una herramienta de seguridad que intenta detectar o monitorizar los eventos ocurridos en un determinado sistema informático en busca de intentos de comprometer la seguridad de dicho sistema.
Breve introducci&#243;n a los sistemas IDS y Snort

                  [...]]]></description>
			<content:encoded><![CDATA[<p><span class="intro">Un IDS es una herramienta de seguridad que intenta detectar o monitorizar los eventos ocurridos en un determinado sistema informático en busca de intentos de comprometer la seguridad de dicho sistema.</span><span id="more-198"></span></p>
<h3>Breve introducci&oacute;n a los sistemas IDS y Snort</h3>
<ul>
<li>                      Un <b>IDS</b> o <b>Sistema de Detecci&oacute;n de Intrusiones</b> es una herramienta de seguridad que intenta <b>detectar o monitorizar los eventos</b> ocurridos en un determinado sistema inform&aacute;tico o red inform&aacute;tica en busca de intentos de comprometer la seguridad de dicho sistema. </li>
<li> Los <b>IDS</b> buscan <b>patrones previamente definidos</b> que impliquen cualquier tipo de actividad sospechosa o maliciosa sobre nuestra red o host. </li>
<li> Los <b>IDS</b> aportan a nuestra seguridad una capacidad de <b>prevenci&oacute;n</b> y de <b>alerta anticipada</b> ante cualquier actividad sospechosa. <b>No</b> est&aacute;n dise&ntilde;ados para <b>detener un ataque</b>, aunque s&iacute; pueden generar ciertos tipos de respuesta ante &eacute;stos. </li>
<li> Los <b>IDS</b>: aumentan la seguridad de nuestro sistema, vigilan el tr&aacute;fico de nuestra red, examinan los paquetes analiz&aacute;ndolos en busca de datos sospechosos y detectan las primeras fases de cualquier ataque como pueden ser el an&aacute;lisis de nuestra red, barrido de puertos, etc.</li>
</ul>
<h3>Tipos de IDS </h3>
<h4> 1. HIDS (Host IDS) </h4>
<p>  Protege contra un &uacute;nico Servidor, PC o host. Monitorizan gran cantidad de eventos, analizando actividades con una gran precisi&oacute;n, determinando de esta manera qu&eacute; procesos y usuarios se involucran en una determinada acci&oacute;n. Recaban informaci&oacute;n del sistema como ficheros, logs, recursos, etc, para su posterior an&aacute;lisis en busca de posibles incidencias.</p>
<p>Todo ello en modo local, dentro del propio sistema. Fueron los primeros IDS en desarrollar por la industria de la seguridad inform&aacute;tica.</p>
<h4>2. NIDS (Net IDS) </h4>
<p>Protege un sistema basado en red. Act&uacute;an sobre una red capturando y analizando paquetes de red, es decir, son sniffers del tr&aacute;fico de red. Luego analizan los paquetes capturados, buscando patrones que supongan alg&uacute;n tipo de ataque.</p>
<p> Bien ubicados, pueden analizar grandes redes y su impacto en el tr&aacute;fico suele ser peque&ntilde;o. Act&uacute;an mediante la utilizaci&oacute;n de un dispositivo de red configurado en modo promiscuo (analizan, &#8220;ven&#8221; todos los paquetes que circulan por un segmento de red aunque estos nos vayan dirigidos a un determinado equipo). Analizan el trafico de red, normalmente, en tiempo real. No s&oacute;lo trabajan a nivel TCP/IP, tambi&eacute;n lo pueden hacer a nivel de aplicaci&oacute;n. </p>
<p> Otros tipos son los h&iacute;bridos. </p>
<p>Por el tipo de respuesta podemos clasificarlos en: </p>
<p><b><i>Pasivos: </i></b><i>Son aquellos IDS que notifican a la autoridad competente o administrador de la red mediante el sistema que sea, alerta, etc. Pero no act&uacute;a sobre el ataque o atacante.</i></p>
<p><b><i>Activos: </i></b><i>Generan alg&uacute;n tipo de respuesta sobre el sistema atacante o fuente de ataque como cerrar la conexi&oacute;n o enviar alg&uacute;n tipo de respuesta predefinida en nuestra configuraci&oacute;n.</i></p>
<p>  Snort puede funcionar de las dos maneras. </p>
<p>Arquitectura de un IDS</p>
<p> Normalmente la arquitectura de un IDS, a grandes rasgos, est&aacute; formada:</p>
<ol>
<li>                     La fuente de recogida de datos. Estas fuentes pueden ser un log, dispositivo de red, o como en el caso de los IDS basados en host, el propio sistema.</li>
<li> Reglas que contienen los datos y patrones para detectar anomal&iacute;as de seguridad en el sistema.</li>
<li> Filtros que comparan los datos snifados de la red o de logs con los patrones almacenados en las reglas.</li>
<li> Detectores de eventos anormales en el tr&aacute;fico de red.</li>
<li> Dispositivo generador de informes y alarmas. En algunos casos con la sofisticaci&oacute;n suficiente como para enviar alertas v&iacute;a mail, o SMS. </li>
</ol>
<p>Esto es a modo general. Cada IDS implementa la arquitectura de manera diferente.</p>
<h3>D&oacute;nde colocar el IDS</h3>
<p>Una actitud paranoica por nuestra parte nos podr&iacute;a llevar a instalar un IDS en cada host &oacute; en cada tramo de red. Esto &uacute;ltimo ser&iacute;a un tanto l&oacute;gico cuando se trata de grandes redes, no es nuestro caso ahora. Lo l&oacute;gico ser&iacute;a instalar el IDS en un dispositivo por donde pase todo el tr&aacute;fico de red que nos interese. </p>
<h3>Dificultades</h3>
<p>                    Un problema de los IDS es cuando queremos implementarlos en redes conmutadas ya que no hay segmento de red por donde pase todo el tr&aacute;fico. Otro problema para un IDS son las redes con velocidades de tr&aacute;fico muy altas en las cuales es dif&iacute;cil procesar todos los paquetes.
</p>
<h3>Posici&oacute;n del IDS                   </h3>
<p>                    <i>Si colocamos el IDS antes del cortafuegos capturaremos todo el tr&aacute;fico de entrada y salida de nuestra red. La posibilidad de falsas alarmas es grande. </i></p>
<p><i>La colocaci&oacute;n detr&aacute;s del cortafuegos monitorizar&aacute; todo el tr&aacute;fico que no sea detectado y parado por el firewall o cortafuegos, por lo que ser&aacute; considerado como malicioso en un alto porcentaje de los casos. La posibilidad de falsas alarmas muy inferior. </i></p>
<p> Algunos administradores de sistemas colocan dos IDS, uno delante y otro detr&aacute;s del cortafuegos para obtener informaci&oacute;n exacta de los tipos de ataques que recibe nuestra red ya que si el cortafuegos est&aacute; bien configurado puede parar o filtras muchos ataques. </p>
<p>                      <i>En ambientes dom&eacute;sticos, que es el prop&oacute;sito de este taller sobre IDS y Snort, podemos colocar el IDS en la misma m&aacute;quina que el cortafuegos. En este caso act&uacute;an en paralelo, es decir, el firewall detecta los paquetes y el IDS los analizar&iacute;a.</i> </p>
<h3>Introducci&oacute;n a Snort</h3>
<p>                    Snort es un IDS o Sistema de detecci&oacute;n de intrusiones basado en red (NIDS). Implementa un motor de detecci&oacute;n de ataques y barrido de puertos que permite registrar, alertar y responder ante cualquier anomal&iacute;a previamente definida como patrones que corresponden a ataques, barridos, intentos aprovechar alguna vulnerabilidad, an&aacute;lisis de protocolos, etc conocidos. Todo esto en tiempo real.</p>
<p> Snort (<a href="http://www.snort.org/">http://www.snort.org/</a>) est&aacute; disponible bajo licencia GPL, gratuito y funciona bajo plataformas <a href="http://www.maestrosdelweb.com/principiantes/historia-de-windows/">Windows</a> y UNIX/Linux. Es uno de los m&aacute;s usados y dispone de una gran cantidad de filtros o patrones ya predefinidos, as&iacute; como actualizaciones constantes ante casos de ataques, barridos o vulnerabilidades que vayan siendo detectadas a trav&eacute;s de los distintos boletines de seguridad.</p>
<p> Este IDS implementa un lenguaje de creaci&oacute;n de reglas flexibles, potente y sencillo. Durante su instalaci&oacute;n ya nos provee de cientos de filtros o reglas para backdoor, ddos, finger, ftp, ataques web, CGI, escaneos Nmap&#8230;.</p>
<p> Puede funcionar como sniffer (podemos ver en consola y en tiempo real qu&eacute; ocurre en nuestra red, todo nuestro tr&aacute;fico), registro de paquetes (permite guardar en un archivo los logs para su posterior an&aacute;lisis, un an&aacute;lisis offline) o como un IDS normal (en este caso NIDS).</p>
<p> En este taller daremos una importancia mayor a su funcionamiento como NIDS y, sobre todo, a la creaci&oacute;n personalizada de reglas e interpretaci&oacute;n de las alertas.</p>
<p> La colocaci&oacute;n de Snort en nuestra red puede realizarse seg&uacute;n el tr&aacute;fico quieren vigilar: paquetes que entran, paquetes salientes, dentro del firewall, fuera del firewall&#8230; y en realidad pr&aacute;cticamente donde queramos.</p>
<p> Una caracter&iacute;stica muy importante e implementada desde hace pocas versiones es FlexResp. Permite, dada una conexi&oacute;n que emita tr&aacute;fico malicioso, darla de baja, hacerle un DROP mediante el env&iacute;o de un paquete con el flag RST activa, con lo cual cumplir&iacute;a funciones de firewall, cortando las conexiones que cumplan ciertas reglas predefinidas. No s&oacute;lo corta la conexiones ya que puede realizar otras muchas acciones. Veremos m&aacute;s adelante su funcionamiento y ejemplos. </p>
<p>                    <b>NOTA: </b>Todos los ejemplos, mientras no se indique lo contrario, ser&aacute;n v&aacute;lidos para win32 y Linux/UNIX. </p>
<div class="codigo">
<pre>C:\Snort20\bin>snort
-*> Snort! &lt;*-
Version 2.0.0-ODBC-MySQL-FlexRESP-WIN32 (Build 72)
By Martin Roesch (roesch@sourcefire.com, www.snort.org)
1.7-WIN32 Port By Michael Davis (mike@datanerds.net, www.datanerds.net/~mike)
1.8 - 2.0 WIN32 Port By Chris Reid (chris.reid@codecraftconsultants.com)
USAGE: snort [-options] &lt;filter options>
snort /SERVICE /INSTALL [-options] &lt;filter options>
snort /SERVICE /UNINSTALL
snort /SERVICE /SHOW
Options:
-A Set alert mode: fast, full, console, or none (alert file alerts only)
-b Log packets in tcpdump format (much faster!)
-c &lt;rules> Use Rules File &lt;rules>
-C Print out payloads with character data only (no hex)
-d Dump the Application Layer
-e Display the second layer header info
-E Log alert messages to NT Eventlog. (Win32 only)
-f Turn off fflush() calls after binary log writes
-F &lt;bpf> Read BPF filters from file &lt;bpf>
-h &lt;hn> Home network = &lt;hn>
-i &lt;if> Listen on interface &lt;if>
-I Add Interface name to alert output
-k &lt;mode> Checksum mode (all,noip,notcp,noudp,noicmp,none)
-l &lt;ld> Log to directory &lt;ld>
-L &lt;file> Log to this tcpdump file
-n &lt;cnt> Exit after receiving &lt;cnt> packets
-N Turn off logging (alerts still work)
-o Change the rule testing order to Pass|Alert|Log
-O Obfuscate the logged IP addresses
-p Disable promiscuous mode sniffing
-P &lt;snap> Set explicit snaplen of packet (default: 1514)
-q Quiet. Don&#8217;t show banner and status report
-r &lt;tf> Read and process tcpdump file &lt;tf>
-R &lt;id> Include &#8216;id&#8217; in snort_intf&lt;id>.pid file name
-s Log alert messages to syslog
-S &lt;n=v> Set rules file variable n equal to value v
-T Test and report on the current Snort configuration
-U Use UTC for timestamps
-v Be verbose
-V Show version number
-W Lists available interfaces. (Win32 only)
-w Dump 802.11 management and control frames
-X Dump the raw packet data starting at the link layer
-y Include year in timestamp in the alert and log files
-z Set assurance mode, match on established sesions (for TCP)
-? Show this information
&lt;Filter Options>
are standard BPF options, as seen in TCPDump

Uh, you need to tell me to do something&#8230;

: No such file or directory</pre>
</p></div>
<h3>Snort en modo Sniffer y registro de paquetes</h3>
<p>El formato gen&eacute;rico para este modo es: <em>snort [-opciones] &lt; filtro &gt; </em>
</p>
<div class="codigo">
<pre>C:\Snort20\bin>snort -v
Running in packet dump mode
Log directory = log

Initializing Network Interface \Device\NPF_{604C8AE3-5FAC-45A5-BFAA-81175A8C32BF}

--== Initializing Snort ==--
Initializing Output Plugins!
Decoding Ethernet on interface \Device\NPF_{604C8AE3-5FAC-45A5-BFAA-81175A8C32BF}
--== Initialization Complete ==--

-*> Snort! &lt;*-

Version 2.0.0-ODBC-MySQL-FlexRESP-WIN32 (Build 72)
By Martin Roesch (roesch@sourcefire.com, www.snort.org)
1.7-WIN32 Port By Michael Davis (mike@datanerds.net, www.datanerds.net/~mike)
1.8 - 2.0 WIN32 Port By Chris Reid (chris.reid@codecraftconsultants.com)
05/21-11:00:28.593943 ARP who-has 192.168.2.92 tell 192.168.2.60

05/21-11:00:28.594419 ARP who-has 192.168.2.8 tell 192.168.2.60

05/21-11:00:28.594544 ARP who-has 192.168.2.93 tell 192.168.2.60

05/21-11:00:30.467265 192.168.2.5:1025 -> 192.168.2.1:139
TCP TTL:128 TOS:0x0 ID:16685 IpLen:20 DgmLen:104 DF
***AP*** Seq: 0x6B703 Ack: 0x2266A0C Win: 0x2238 TcpLen: 20
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+

05/21-11:00:30.467731 192.168.2.1:139 -> 192.168.2.5:1025
TCP TTL:128 TOS:0x0 ID:47513 IpLen:20 DgmLen:1500 DF</pre>
</div>
<p>                    Con esta opci&oacute;n <b>-v </b>iniciamos snort en modo sniffer visualizando en pantalla las cabeceras de los paquetes TCP/IP, es decir, en modo sniffer. Esta opci&oacute;n el  modo verbouse y mostrar&aacute; las cabeceras IP, TCP, UDP y ICMP. </p>
<p>                    <i>Si queremos, adem&aacute;s, visualizar los campos de datos que pasan por la interface de red, a&ntilde;adiremos <b>-d</b>.</i>
                  </p>
<div class="codigo">
<pre>C:\Snort20\bin>snort -vd
Running in packet dump mode
Log directory = log
Initializing Network Interface \Device\NPF_{604C8AE3-5FAC-45A5-BFAA-81175A8C32BF}

.....

=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+

05/21-11:06:18.943887 192.168.4.5:3890 -> 192.168.4.15:8080
TCP TTL:128 TOS:0x0 ID:33216 IpLen:20 DgmLen:40 DF
***A**** Seq: 0xE3A50016 Ack: 0x8B3C1E4D Win: 0xFAF0 TcpLen: 20

=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+

05/21-11:06:18.962018 192.168.4.5:3890 -> 192.168.4.15:8080
TCP TTL:128 TOS:0x0 ID:33217 IpLen:20 DgmLen:681 DF
***AP*** Seq: 0xE3A50016 Ack: 0x8B3C1E4D Win: 0xFAF0 TcpLen: 20
47 45 54 20 68 74 74 70 3A 2F 2F 77 77 77 2E 6F GET http://www.x
6D 65 6C 65 74 65 2E 63 6F 6D 2E 62 72 2F 73 75 xxxx.com.br/xx
70 65 72 6F 6D 65 6C 65 74 65 2F 64 6F 77 6E 6C xxxxxxx/downl
6F 61 64 73 2F 64 65 66 61 75 6C 74 2E 61 73 70 oads/default.asp
20 48 54 54 50 2F 31 2E 30 0D 0A 55 73 65 72 2D HTTP/1.0..User-
41 67 65 6E 74 3A 20 4D 6F 7A 69 6C 6C 61 2F 34 Agent: Mozilla/4
2E 30 20 28 63 6F 6D 70 61 74 69 62 6C 65 3B 20 .0 (compatible;
4D 53 49 45 20 36 2E 30 3B 20 57 69 6E 64 6F 77 MSIE 6.0; Window
73 20 4E 54 20 35 2E 30 29 20 4F 70 65 72 61 20 s NT 5.0) Opera
37 2E 31 31 20 20 5B 65 6E 5D 0D 0A 48 6F 73 74 7.11 [en]..Host
3A 20 77 77 77 2E 6F 6D 65 6C 65 74 65 2E 63 6F : www.xxxxx.co
6D 2E 62 72 0D 0A 41 63 63 65 70 74 3A 20 74 65 m.br..Accept: te
78 74 2F 68 74 6D 6C 2C 20 69 6D 61 67 65 2F 70 xt/html, image/p
6E 67 2C 20 69 6D 61 67 65 2F 6A 70 65 67 2C 20 ng, image/jpeg,
69 6D 61 67 65 2F 67 69 66 2C 20 69 6D 61 67 65 image/gif, image
2F 78 2D 78 62 69 74 6D 61 70 2C 20 2A 2F 2A 3B /x-xbitmap, */*;
71 3D 30 2E 31 0D 0A 41 63 63 65 70 74 2D 4C 61 q=0.1..Accept-La
&#8230;&#8230;</pre>
</div>
<p>                    <i>A&ntilde;adiendo la opci&oacute;n -e, snort nos mostrar&aacute; informaci&oacute;n m&aacute;s detallada. Nos mostrar&aacute; las cabeceras a nivel de enlace.</i></p>
<p><strong>Con estas opciones y dependiendo del tr&aacute;fico en nuestra red, veremos gran cantidad de informaci&oacute;n pasar por nuestra pantalla, con lo cual ser&iacute;a interesante registrar, guardar estos datos a disco para su posterior estudio. Entrar&iacute;amos entonces en snort como packet logger o registro de paquetes. </strong></p>
<div class="codigo">
<pre>C:\Snort20\bin&gt;snort -dev -l ./log</pre>
</div>
<p><strong>La opci&oacute;n -l indica a snort que debe guardar los logs en un directorio determinado, en este caso </strong><em>Error! Hyperlink reference not valid.</em><strong> Dentro de la carpeta log se crear&aacute; una estructura de directorios donde se archivar&aacute;n los logs.</strong></p>
<p>Podemos indicar la ip de la red a registrar ( <b>-h </b>) y que el formato de los logs sea en modo binario ( <b>-b</b> ), es decir, el modo que entiende TCPDump o Windump, para estudiar m&aacute;s a fondo con los potentes filtros de estos programas los logs de snort. La salida del logs en el caso de la opci&oacute;n de salida binaria ya no ser&aacute; una estructura de directorios, si no, un s&oacute;lo archivo.</p>
<div class="codigo">
<pre>C:\Snort20\bin>snort -vde -l ./log -h 192.168.4.0/24
Running in packet logging mode
Log directory = ./log

C:\Snort20\bin>snort -l ./log -b
Running in packet logging mode
Log directory = ./log</pre>
</div>
<p>                      <i>Usando la opci&oacute;n -b no har&aacute; falta indicarle IP alguna de nuestra red ( -h ). Guardar&aacute; todo en un mismo archivo y recoger&aacute; datos de toda nuestra red. Tampoco ser&aacute;n necesarias las opciones -de y por supuesto, tampoco la opci&oacute;n -v.</i></p>
<p> El archivo generado por snort en modo binario tambi&eacute;n podemos leerlo con este usando la opci&oacute;n -r <i>nombrearchivo.log</i>. </p>
<p> Otra opci&oacute;n a toma en cuenta es -i para indicar a snort que interface de red usar en el caso de que tengamos dos o m&aacute;s. Se hace de distinta forma dependiendo si usamos snort para Win32 o para Linux/UNIX. Para averiguar las interfaces de que disponemos, en Win32 usaremos la opci&oacute;n -W.</p>
<div class="codigo">
<pre>C:\Snort20\bin>snort -vde -i 1
# snort -vde -i eth0
C:\Snort20\bin>snort -W</pre>
</div>
<h3>Filtros</h3>
<p>  Podemos a&ntilde;adir, a parte de las opciones, una serie de filtros para optimizar los resultados obtenidos. Estos filtros se a&ntilde;adir&aacute;n en el mismo formato que usa programas como TCPDump ya que usan las mismas librer&iacute;as de captura de paquetes (libpcap). </p>
<div class="codigo">
<pre>C:\Snort20\bin>snort -vd host 192.168.4.5 and dst port 8080
Running in packet dump mode
Log directory = ./log

Initializing Network Interface eth0

--== Initializing Snort ==--
Initializing Output Plugins!
Decoding Ethernet on interface eth0
--== Initialization Complete ==--

-*> Snort! &lt;*-

Version 2.0.0 (Build 72)
By Martin Roesch (roesch@sourcefire.com, www.snort.org)
07/15-12:34:26.059644 192.168.4.5:4533 -> 192.168.4.15:8080
TCP TTL:128 TOS:0x0 ID:16544 IpLen:20 DgmLen:40 DF
***A**** Seq: 0xC47AC53E Ack: 0xC83C2362 Win: 0xFAF0 TcpLen: 20

=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+

07/15-12:34:26.059880 192.168.4.5:4533 -> 192.168.4.15:8080
TCP TTL:128 TOS:0x0 ID:16545 IpLen:20 DgmLen:40 DF
***A**** Seq: 0xC47AC53E Ack: 0xC83C31E4 Win: 0xFAF0 TcpLen: 20

=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+

Snort aceptará también filtros más avanzados en su modo sniffer:

C:\Snort20\bin>snort -vd icmp[0] = 8 and dst host 192.168.4.1

C:\Snort20\bin>snort -vd icmp[0] != 8 and icmp[0] != 0

C:\Snort20\bin>snort -vd &#8216;udp[0:2] &lt; 1024&#8242; and host 192.168.4.1</pre>
</div>
<h3>Snort en modo NIDS. </h3>
<p>                    En este apartado es donde nos centraremos m&aacute;s. El modo detecci&oacute;n de intrusos de red se activa a&ntilde;adiendo a la l&iacute;nea de comandos de snort la opci&oacute;n <b>-c snort.conf</b>. En este archivo, <i>snort.conf</i>, se guarda toda la configuraci&oacute;n de las reglas, preprocesadores y otras configuraciones necesarias para el funcionamiento en modo NIDS. </p>
<div class="codigo">
<pre>C:\Snort20\bin&gt;snort -dev -l ./log -h 192.168.4.0/24 -c ../etc/snort.conf</pre>
</div>
<p>                    Con al opci&oacute;n <b>-D </b>indicar&aacute; a snort que corra como un servicio. Esto es s&oacute;lo v&aacute;lido para las versi&oacute;nes Linux/UNIX:</p>
<div class="codigo">
<pre># snort -dev -l ./log -h 192.168.4.0/24 -c ../etc/snort.conf -D</pre>
</div>
<p>                    Para las versi&oacute;n win32 usaremos /SERVICE /INSTALL:
</p>
<div class="codigo">
<pre>C:\Snort20\bin&gt;snort /SERVICE /INSTALL -dev -l ./log -h 192.168.4.0/24 -c ../etc/snort.conf</pre>
</div>
<p>                    /SERVICE /UNINSTALL desinstala snort como servicio. </p>
<p> Snort crear&aacute;, a parte de la estructura de directorios, un archivo alert.ids donde almacenar&aacute; las alertas generadas. </p>
<h3>                    Modos de Alerta </h3>
<p>                    Hay varias maneras de configurar la salida de snort, es decir, las alertas, el modo en que se almacenar&aacute;n estas en el archivo alert.ids. </p>
<p> Snort dispone de siete modos de alertas en la l&iacute;nea de ordenes, completo, r&aacute;pido, socket, syslog, smb (WinPopup), consola y ninguno. </p>
<p>  <b><i>Fast:</i></b> E<i>l modo Alerta R&aacute;pida nos devolver&aacute; informaci&oacute;n sobre: tiempo, mensaje de la alerta, clasificaci&oacute;n, prioridad de la alerta, IP y puerto de origen y destino.</i> </p>
<div class="codigo">
<pre>C:\Snort20\bin>snort -A fast -dev -l ./log -h 192.168.4.0/24 -c ../etc/snort.conf

09/19-19:06:37.421286 [**] [1:620:2] SCAN Proxy (8080) attempt [**]
[Classification: Attempted Information Leak] [Priority: 2] &#8230;
&#8230; {TCP} 192.168.4.3:1382 -> 192.168.4.15:8080
</pre>
</div>
<p>                    <b>Full: </b>El modo de Alerta Completa nos devolver&aacute; informaci&oacute;n sobre: tiempo, mensaje de la alerta, clasificaci&oacute;n, prioridad de la alerta, IP y puerto de origen/destino e informaci&oacute;n completa de las cabeceras de los paquetes registrados. </p>
<div class="codigo">
<pre>C:\Snort20\bin>snort -A full -dev -l ./log -h 192.168.4.0/24 -c ../etc/snort.conf

[**] [1:620:2] SCAN Proxy (8080) attempt [**]
[Classification: Attempted Information Leak] [Priority: 2]
09/19-14:53:38.481065 192.168.4.3:3159 -> 192.168.4.15:8080
TCP TTL:128 TOS:0&#215;0 ID:39918 IpLen:20 DgmLen:48 DF
******S* Seq: 0xE87CBBAD Ack: 0&#215;0 Win: 0&#215;4000 TcpLen: 28
TCP Options (4) => MSS: 1456 NOP NOP SackOK
</pre>
</div>
<p>                    <i><strong>Informaci&oacute;n de la cabecera del paquete:</strong></i> </p>
<div class="codigo">
<pre>TCP TTL:128 TOS:0x0 ID:39918 IpLen:20 DgmLen:48 DF
******S* Seq: 0xE87CBBAD Ack: 0x0 Win: 0x4000 TcpLen: 28
TCP Options (4) => MSS: 1456 NOP NOP SackOK
</pre>
</div>
<p>                    <b>Socket:</b> Manda las alertas a trav&eacute;s de un socket, para que las escuche otra aplicaci&oacute;n. Est&aacute; opci&oacute;n es para Linux/UNIX. </p>
<p> # snort -A unsock -c snort.conf </p>
<p>  <b>Console:</b> Imprime las alarmas en pantalla. </p>
<p> C:\Snort20\bin&gt;snort -A console -dev -l ./log -h 192.168.4.0/24 -c ../etc/snort.conf </p>
<p>  <b>None:</b> Desactiva las alarmas. </p>
<p> # snort -A none -c snort.conf </p>
<p>  <b>SMB: </b>Permite a Snort realizar llamadas al cliente de SMB (cliente de Samba, en Linux), y enviar mensajes de alerta a hosts Windows (WinPopUp). Para activar este modo de alerta, se debe compilar Snort con el conmutador de habilitar alertas SMB (enable -smbalerts). Evidentemente este modo es para sistemas Linux/UNIX. Para usar esta caracter&iacute;stica enviando un WinPopUp a un sistema Windows, a&ntilde;adiremos a la l&iacute;nea de comandos de snort: -M WORKSTATIONS. </p>
<p>  <b>Syslog: </b>Env&iacute;a las alarmas al syslog </p>
<p> C:\Snort20\bin&gt;snort -A console -dev -l ./log -h 192.168.4.0/24 -c ../etc/snort.conf -s 192.168.4.33:514 </p>
<p>  <b>Eventlog:</b> Registra las alertas para visualizarse a trav&eacute;s del visor de sucesos de un sistema windows. Esta opci&oacute;n se activar&aacute; mediante <b>-E </b>y s&oacute;lo para Win32.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.maestrosdelweb.com/editorial/snort/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
