Documente Academic
Documente Profesional
Documente Cultură
Existen muchas herramientas que pueden sernos muy últiles dependiendo del S.O. y tipo de
red por ejemplo. Una de estas herramientas, un sniffer de red, basada en la librería de captura
de paquetes (pcap) y que además funciona en plataformas tanto windows como LInux/UNIX es
TCPDump ( Linux ) / Windump ( Windows ) esta última hace uso de la librería Winpcap. Estas
dos librerías son unsadas por otras herramientas como Ethereal o Snort e incluyen un lenguaje
de filtro común para todos. Quizás Windump/TCPDump no sea la herramienta perfecta
atendiendo a la interpretación fácil de los datos reportados, pero si que es de las mejores en
cuanto a su potencia y cantidad de datos de que nosp provee.
Una vez instalada la libreria y el programa en si, tan sólo debemos de introducir en la línea de
comandos: ( haremos referancia a Windump, para windows, aunque casi todo es válido para su
versión Linux.
code:
C:\scan>windump
windump: listening on\Device\Packet_{604C8AE3-5FAC-45A
17:18:16.375082 FIERY.138 > 192.168.4.255.138:
>>> NBT UDP PACKET(138) Res=0x1102 ID=0xE IP=192 (0xc0
0xeb) Port=138 (0x8a) Length=187 (0xbb) Res2=0x0
SourceName=FIERY X2E NameType=0x00 (Workstation)
DestName=
WARNING: Short packet. Try increasing the snap length
vaya, a parte de unas peticiones ARP, parece que no nos enteramos de casi nada. A aparte de
esto windump capturará TODOS los datos de tráfico de nuestra red y puede ser que los datos a
través de la consola vayan tan rápido y de tal cantidad que nos sea imposible discifrar o ver
algo
Veamos entonces como funciona Windump, como interpretar sus datos y como sacar el
máximo partido de el.
NOTA: Esta mini-explicación de windump es muy básica y me saltaré algunas cosas, si hay
interes por este tema pues profundizamos lo que haga falta.
Hay que decir que windump interpreta los datos dependiendo del protocolo involucrado en la
captura, esto es obvio, ya que no es lo mismo una captura de consulta DNS que un inicio de
sesión o establecimiento de conexión TCP o una captura icmp. Aunque las diferencias son
pocas. En una captura icmp aparece la palabra icmp, sin embargo en una captura tcp no
aparece esta palabra.
code:
Estas tres trazan se refieren a un inicio de sesión de TCP. En este caso INFOGRAFIA3 ( que
soy yo mismo ) quiere iniciar una sesion con ABANCECOMU al proxy establecido en el para
consultar una determinda página web usando http. Vemos el modelo de establecimiento de
conexión a tres bandas de forma muy clara.
fecha src > dst: flags data-sqno ack window urgent options
src y dst son las direcciones IP y puertos TCP/UDP de las conexiones fuente y
destino.
ack es el número de secuencia del próximo byte que espera recibir el otro extremo TCP/UDP.
options son las opciones TCP que suelen estar entre corchetes del tipo < >, por ejemplo el
tamaño máximo del segmento (ej. <mss 1460,nop,nop,sackOK> )
Hemos dicho que el ejemplo anterior trata de una conmexión TCp. Pero como se realiza esta:
Una conexión TCP se realiza en tres pasos. Es lo que técnicamente se llama three-way
handshake:
2. Este responde con un paquete SYN-ACK (acuse de recibo) confirmando la recepción del
SYN inicial enviado por (INFOGRAFIA3.1087) y enviándole a su vez su propio número de
secuencia inicial (4260015886) y final (4260015886) y ACK+1 (2740385269).
3. Para finalizar, el cliente (INFOGRAFIA3.1087) reconoce la recepción del SYN del servidor
(ABANCECOMU.8080) mediante el envío de un ACK (1). Vemos que hay un "." con lo que
deducimos que no hay flag (en este caso SYN). Este es el momento en que queda establecida
la conexión. Ya se puede iniciar la transferencia de datos entre (INFOGRAFIA3.1087) y
(ABANCECOMU.8080).
Veremos más adelantes capturas de consultas DN0, UDP, escaneos de puertos, troyanos, etc.
code:
C:\scan>windump -D
1.\Device\Packet_{604C8AE3-5FAC-45A5-BFAA-81175A8C32BF}
(3Com EtherLink PCI)
2.\Device\Packet_NdisWanIp (NdisWan Adapter)
code:
C:\scan>windump -n
code:
C:\scan>windump -v o -vv
Filtros de Windump.
Puede ser que no nos interese ver todo el tráfico, sino sólo un determinado protocolo o un sólo
host, etc.
Captura el tráfico de origen y destino sólo en el host INFOGRAFIA3 (se puede poner tambien la
IP)
code:
C:\scan>windump host INFOGRAFIA3
code:
C:\scan>windump src host INFOGRAFIA3
code:
C:\scan>windump dst port 8080
windump: listening on\Device\Packet_{604C8AE3-5FAC-45A5-BFAA-
81175A8C32BF}
09:50:18.618057 INFOGRAFIA3.3039 > ABANCECOMU.8080: S
3194034207:3194034207(0) w
in 64240 <mss 1460,nop,nop,sackOK> (DF)
09:50:18.618224 INFOGRAFIA3.3039 > ABANCECOMU.8080: . ack
1114838386 win 64240 (
DF)
09:50:18.643251 INFOGRAFIA3.3039 > ABANCECOMU.8080: P
0:611(611) ack 1 win 64240
(DF)
code:
C:\scan>windump port 8080
code:
C:\scan>windump icmp
windump: listening on\Device\Packet_{604C8AE3-5FAC-45A5-BFAA-
81175A8C32BF}
09:53:00.509648 SERVING > 192.168.2.75: icmp: echo request
09:53:00.509729 192.168.2.75 > SERVING: icmp: echo reply
09:53:00.811224 SERVING > INGEN12: icmp: echo request
09:53:00.811410 INGEN12 > SERVING: icmp: echo reply
Combinando filtros.
code:
C:\scan>windump tcp and port 8080 windump: listening
on\Device\Packet_{604C8AE3-5FAC-45A5-BFAA-8117
09:55:49.116908 ABANCECOMU.8080 > INFO8.3132: P
1224555679:122455
805272 win 63910
09:55:49.119780 ABANCECOMU.8080 > INFO8.3132: FP
348:802(454) ack
09:55:49.119872 INFO8.3132 > ABANCECOMU.8080: . ack 803 win
7958
09:55:49.211881 INFO8.3132 > ABANCECOMU.8080: F 1:1(0) ack 803
wi
09:55:49.211970 ABANCECOMU.8080 > INFO8.3132: . ack 2 win
63910
Bueno hay muchísimos filtros más y maneras de combinarlos, anidarlos, etc. si el tema este es
de interés podemos seguir adelante.
__________________
Un saludo,
Analizando la red con TCPDump ( Parte II )
Esta es la segunda parte del hilo sobre: Analizando la red con TCPDump
/ Windump que se encuentra en:
Ya comenté que Windump / TCPDump tiene filtros para su mejor manejo. Estos filtros pueden
llegar a ser tan sofisticado como queramos y extrar cualquier tipo de datos de los apquetes que
circulen a través de nuestra red.
code:
C:\scan>windump -qn -X -s 0 tcp[13] = 2 and port 110
–q estableceremos el indicador de salida rápida que hará que nos devuelva menos información
y que las líneas sean más cortas.
Esto es así porque en realidad sólo nos interesa los host/IP y las amrcas de tiempo, ya que
como veremos más adelante estamos filtrando establecimientos de conexión TCP al puerto
110.
tcp[13] = 2 esta es la madre del cordero. con este filtro estamos diciendo a windump que
queremos escoger los paquetes TCP cuyo indiccador, bandera o flag sea SYN "S". Para
entender esto hay que tener en cuenta como es el formato de un paquete TCP, que los
indicadores o flags se encuentran en el octeto 13.
Vamos a echarle un ojo a ese octeto 13 y simulemos que el flag SYN está activo:
UAPRSF
------------------
00000010
------------------
76543210
vemos que el byte 7 y 6 estánm reservados., el 5 es para URGENT, 4 es para ACK, 3 es para
PUSH, 2 es para RESET y el byte o para FIN. Tenemos entonces el octeto completo. En
binario quedaría como acabamos de ver:
00000010
00010010
entonces tcp[13] = 18
and port 110 esto es que unido a lo anterior analice el puerto 110.
Usando esta técnica, con windump o tcpdump odríamos detectar escaneos y otras intrusiones
en nuestros sistemas.
faltan muchas trazas pero podemos ver en s´lo unas pocas que algunos tenian sus clientes de
correo configurado para "mirar" el correo cad minuto. En la realidad fueron casi todos, con lo
cual tenían el servidor bastante atareadillo.
ETHEREAL:
Como nota final decir, para los que me comentan por mail, que el ethereal es mejor en algunos
aspectos por ser gráfico y más intuitivo, que tanto Etheral como TCPDUMP y WINDUMP se
basan en la misma librería de captura de paquetes y por tanto para filtrara usan la MISMA
sintaxis. Es decir, todo esto que os escribo es válido también para Etheral.
__________________
Un saludo,
Analizando la red con TCPDump ( Parte III )
Esta tercera parte es más bien una aclaración de conceptos para los que me enviarón sus
dudas por mail y de paso avanzar un poco más.
citar:
"....tcp[13] = 2 esta es la madre del cordero. con este filtro estamos diciendo a
windump que queremos escoger los paquetes TCP cuyo indiccador, bandera o
flag sea SYN "S". Para entender esto hay que tener en cuenta como es el
formato de un paquete TCP, que los indicadores o flags se encuentran en el
octeto 13.
Vamos a echarle un ojo a ese octeto 13....."
De donde coño saque eso de que los indicadores o flags TCP comienzan en el octeto 13.
Vamos a ello.
PHP:
0 1 2 3
01234567890123456789012345678901
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
+-+-+-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
+-+-+-+
| Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
+-+-+-+
| Acknowledgement Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
+-+-+-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
+-+-+-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
+-+-+-+
| Options | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
+-+-+-+
| Data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
+-+-+-+
vamos ahora a la parte que nos interesa el siguiente octeo, el 12 va desde el bits 0 al 7 que
corresponde al offset y a reserver, dos bits de reserver pertenencen ya al siquiente octeo el 13
que tiene 2 bits reservados y 6 que son los flags. 6 + 2 = 8 bits que el el octeto o byte 13.
Esto no sólo es válido para la cabecera y datos TCO, también para IP, UDP e ICMP. Veamos
un ejemplo.
PHP:
0 1 2 3
01234567890123456789012345678901
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
+-+-+-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
+-+-+-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
+-+-+-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
+-+-+-+
| Dirección de Origen |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
+-+-+-+
| Dirección de Destino |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
+-+-+-+
| Opciones | Relleno |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
+-+-+-+
Vemos claramente que el campo protocolo comienza en el byte u octeo 9 y tiene 8 bits.
ip[9] = 1 le estamos diciendo que "mire" dentro del datagrama IP a partir del octeto o byte 9 el
valor = 1 que corresponde a ICMP
lo vemos en la practica:
C:\scan>windump ip[9] = 1
windump: listening on\Device\Packet_{604C8AE3-5FAC-45A5-BFAA-81175A8C32BF}
11:53:19.608992 SERVING > INGEN12: icmp: echo request
11:53:19.609176 INGEN12 > SERVING: icmp: echo reply
11:53:20.546035 SERVING > 192.168.2.64: icmp: echo request
11:53:20.546045 192.168.2.64 > SERVING: icmp: echo reply
11:53:20.858635 SERVING > 192.168.2.197: icmp: echo request
11:53:20.862108 192.168.2.197 > SERVING: icmp: echo reply
11:53:22.108340 SERVING > 192.168.2.3: icmp: echo request
11:53:22.108547 192.168.2.3 > SERVING: icmp: echo reply
vemos sólo los del tipo "echo request" utilizando la misma técnica pero con el protocolo icmp.
C:\scan>windump icmp[0] = 0
windump: listening on\Device\Packet_{604C8AE3-5FAC-45A5-BFAA-81175A8C32BF}
12:37:47.559653 ABANCECOMU > TALLER: icmp: echo reply
12:37:47.560038 ADMIN02 > TALLER: icmp: echo reply
12:37:47.561493 CCZ > TALLER: icmp: echo reply
12:37:47.567877 FIERY > TALLER: icmp: echo reply
12:37:47.576310 INFO8 > TALLER: icmp: echo reply
en este ejemplo queremos ver los paquetes que NO sean del tipo "echo reply" o "echo
request", osease, el resto.
todos los ICMP tipo echo request con destino al host ABANCE-2
Detectando escaneos
Si realizamos un Null Scan con nmap, osease sin ningún flag activado:
Casos de estudio.
Analizamos aquí las salidas de TCPDump / Windump ante escaneos básicos nmap y otras
utilidades en la red para su estudio. De esta manera aprenderemos a identificar los problemas
o intrusiones a la red.
code:
UDP
TCP
16:37:34.672005 192.168.4.15.4036 > 192.168.4.1.139: tcp 280
16:37:34.674529 192.168.4.1.139 > 192.168.4.15.4036: tcp 131 (DF)
16:37:34.674949 192.168.4.15.4036 > 192.168.4.1.139: tcp 43
16:37:34.675151 192.168.4.1.139 > 192.168.4.15.4036: tcp 43 (DF)
16:37:34.680743 192.168.4.15.4036 > 192.168.4.1.139: tcp 280
ICMP
ARP
POP3
SMTP
Vamos a tratar aquí la detección de sniffers en nuestra red desde el escenario más básico
posible. Este escenarío sería una subred o red no conmutada.
En entornos Linux o UNIX la verificación de una interface en modo promiscuo se puede hacer
usando ifconfig. Este programa configura la interface 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:
code:
$ ifconfig -a
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).
code:
$ cpm
code:
$ 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.
NEPED 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 estas peticiones.
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áremos un dispositivo (ordenador) para
monitorizar la red. Existen tipos de Taps para cada tipo de red Ethernet 10 Mbps, 100 Mbps y 1
Gbps.
Más información en www.netoptics.com
$ cat /var/log/messages
]
Esto es a grandes rasgos. espero que los usuarios de Linux del foro putualicen o corrigan lo
que haga falta.
Para sistemas Windows exite también programas que detectan una interface en modo
promíscuo.
PromiScan
http://www.securityfriday.com/ToolD...iscan_003.html.
PromiscDetect
code:
C:\scan>promiscdetect
http://www.ntsecurity.nu/cgi-bin/do...scdetect.exe.pl
http://ntsecurity.nu/downloads/promiscdetect.exe
http://packetstormsecurity.org/Win/prosrc.zip
Sólo por nombrarlas y que alguna de ellas son usadas por los programas anti-sniffers:
- Ping de latencia
- Test ARP
- Test DNS
- monitorización SNMP
A grandes rasgos para protegernos de los sniffers y para que estos no cumplan sus objetivos
de olfateo de contraseñas y en general nos " lean datos sensibles" en texto plano, podemos
hacer uso de diversas técnicas o utilizar sistemas como:
- PGP
- SSL
- SSH
- VPN, etc.
- auditorias de seguridad
- uso de IDS.
etc.
__________________
Un saludo,