Scapy, solo para alquimistas!

Si te gusta explorar las profundidades de la red, o investigar cada rincon al que te conectas, has de tener un set de herramientas disponibles para facilitar tus investigaciones. Y cuanto mas quieres explorar, y cuanto mas intentas testear, mas te das cuenta, que a pesar de la gran cantidad de scripts y programas disponibles que se pueden encontrar, no siempre tus necesidades tienen solución.

Pues hoy aquí podras ver que scapy/python es la piedra filosofal de tu busqueda!

Si bien puedes instalar scapy como un herramienta y usarla individualmente de python, es mas que re comendable tener conocimientos de este lenguaje, para poder llevar a cabo tus mas intimos deseos!

No voy a detallar el uso de Scapy, ni mucho menos el de Python, pero quiero compartirte un sencillisimo script que te permitira saber cual de todas los nodos de una red es un GateWay.

Para ello, explico brevemente le concepto y luego copio el codigo:

Si estas en un red, en la cual no sabes cual es tu GW ( una red Wifi, o una red sin DHCP o ambas), podras usar este script, el cual te mostrara todas los hosts que te daran acceso a internet.

Todos los paquetes que viajan sobre IP, son dirigidos por nuestro host, mediante el protocolo ethernet, a una MAC que esta asociada a la ip de destino.
Esto sucede, siempre y cuando la ip de destino este dentro de nuestra red, pero si no fuera asi, los paquetes se dirigen a la puerta de enlace.
Esta puerta de enlace, es justamente la encargada de dar acceso a otras rede.
Los paquetes se configuran con la ip de destino deseada, pero con la direccion mac de la puerta de enlace de la red.

En el script, usamos este concepto, para enviar un paquete icmp (un ping, en particular) a una ip de google, probando dicho paquete en cada una de las macs que se encuentren en el archivo configurado. Cuando se recive una respuesta icmp el script detecta que se ha encontrado una puerta de enlace.

El codigo es simple, para mostrar el concepto:

import scapy, os
macs = open("../tmp/ethers")
ether = scapy.Ether()
ip = scapy.IP()
icmp = scapy.ICMP()
# Configuracion Ethernet
ether.type = 0x0800
# Configuracion IP
ip.dst = "72.14.207.99"
#seteamos una ip publica para dirijir el paquete hacia el exterior
# Configuracion ICMP
# Se setea por defecto, pero queda mas prolijo:
# icmp tipo 8 es echo
icmp.type = 8
icmp.code = 0
# y aqui vamos con la verdad de la milanesa
for i in macs.readlines():
   i.strip("\n")
   #Configuramos el frame ethernet
   ether.dst = i
   #Creamos el paquete
   paquete = ether/ip/icmp
   # y finalmente lo enviamos
   print "ENVIANDO A " + str(i.strip("\n"))
   result = scapy.srp(paquete, timeout=2,verbose=0)
   if len(result[0]) == 1:
      print "Puerta de enlace encontrada ", str(i.strip("\n"))

/* A partir de marzo nos estamos mudando a http://netsecure.com.arhttp://www.netvulcano.com.ar */
Anuncios
Publicado en Scripts. Etiquetas: , , , , . Leave a Comment »