Seguimos con la tercera parte de la serie dedicada a Scapy. Las dos primera:
- Scapy. Manipulación avanzada e interactiva de paquetes. Parte 1
- Scapy. Manipulación avanzada e interactiva de paquetes. Parte 2
En este caso trataremos el passive OS fingerprinting con p0f, OS y nmap_fp, traceroute con graph, conversations(), etc. Usaremos BackTrack para algunos ejemplos con Linux.
Detección SO. Passive OS fingerprinting con Scapy y p0f.
P0f es una herramienta para realizar OS fingerprinting de forma pasiva, con lo que no generamos tráfico adicional o redundante. Scapy necesita para el módulo p0f las bases de datos de firmas. Para ello descargaremos de:
Los archivo siguientes:
- p0f.fp
- p0fr.fp
- p0fa,fp
- p0fo.fp
Estos archivos los ubicaremos, por ejemplo en: C:\Python25\Lib\site-packages
Bien, vamos ahora a ver, para cambiar un poco, como funciona scapy en linux. Los cambios son pocos pero, en algunos casos, como P0f, hay que cargar el módulo correspondiente. Para este artículo voy a usar BlackTrack 4 en VMWare player.
Una vez que lo tenemos cargado en el player, en mi caso:
ifconfig eth0 up
ifconfig eth0 192.168.1…..
route add default gw 192.168….
echo nameserver 192.168… > /etc/resolv.conf
Con todo esto, hemos levantado la interface de red eth0, asignamos una IP, añadimos gateway y DNS para que se conecte correctamente a internet y al resto de red local. Decir, también, que en la configuración de la máquina virtual, en Network connection, marcaremos la opción Bridged.
Abrimos consola y:
Tenemos que descargar la sbases de datos .fp de:
http://lcamtuf.coredump.cx/p0f.tgz
usamos para ello, por ejemplo wget:
cd /etc/p0f
wget http://lcamtuf.coredump.cx/p0f.tgz
y descomprimimos *.fp con tar
termina esta operación tecleamos:
scapy
load_module(«p0f»)
sniff(prn=prnp0f)
Con este último comando, usamos sniff() para volcar todas nuestras capturas al módulo p0f y ver los rersultados por pantalla.
Obtendremos algo parecido a esto:
192.168.1.147:33721 – Linux 2.6 (newer, 2) (up: 463 hrs)
-> 147.210.19.96:www (S) (distance 0)
72.233.113.162:www – UNKNOWN [49980:52:1:64:N,N,T,M1460,N,W0,N,N,S:AT:?:?] (up: 234 hrs)
-> 192.168.0.97:33721 (SA)
……
Las notaciones S y SA nos dice que base de datos .pf se usó. En este caso p0f.fp y p0fa.fp respectivamente.
Con p0f y scapy podemos manipular los resultados. Lo veremos más adelante.
Detección SO. Passive OS fingerprinting con Scapy y nmap_fp.
Para usar nmap_fp tendremos que descargar el archivo http://nmap.org/nmap-os-fingerprints con wget para volcarlos en /usr/share/nmap. Cargaremos el modulo nmap:
load_module(«nmap»:
TCP Traceroute y Scapy. Función graph.
Realizamos un traceroute con scapy tal como hemos aprendido en artículos anteriores:
Casi parece un ping. Añadamos algunas funciones, como TTL, puerto de destino…:
Vamos a usar la función graph para ver las interacciones del traceroute:
a,b=traceroute([«www.google.es»,»www.elpais.es»,»www.terra.es»],dport=[80,443],maxttl=20,retry=-2)
a.graph()
La imagen es bastante grande. Se nos abrirá una ventana ImageMagick, por la cual nos podremos desplazar para ver los resultados:
Avanzaremos más con traceroute usando SYN y DNS traceroute en próximos capítulos.
Funciones gráficas. Conversations.
Existe en Wireshark la opción Statistics > conversations. Con esta opción podemos ver el diálogo entre los hosts presentes en una captura.DE forma análoga pero gráfica, tenemos la función conversations() en scapy:
c=sniff(count=50)
c.conversations()
Se nos abrirá una ventana ImageMagick con la información de las conversaciones o diálogos de los host involucrados en los 50 paquetes de la captura:
Pingback: Seguridad Python (manipulación de paquetes) | darkuskyo.net