-------------------------------------------------------------[ ARP SPOOFING CON SCAPY by mirphak ]---------------------------------------------------
30-11-08 - servidor irc: irc.zonartm.org #rtm ------------------------------------------------------------------------------------ www.zonartm.org
[20:46] mirphak soy de colombia
[20:46] mirphak estudiante de ing de sistemas y teleco
[20:46] mirphak y me alegra que esten en el canal compartiendo
[20:46] mirphak ok sin mas rodeos
[20:47] mirphak primero empezaremos mostrando que es el protocolo ARP
[20:47] mirphak #ARP#
[20:47] mirphak el protocolo de resolucion de direcciones es el encargado de convertir
[20:48] mirphak direcciones Ip a direcciones fisicas llamadas MAC (medium Access Control address)
[20:48] mirphak en una red Ethernet
[20:50] mirphak ya que las maquinas en una red fisica, se pueden comunicar unicamente si conocen sus direcciones fisicas de red ,
--------------------
este protocolo se encarga de la transformacion de direcciones, permitiendo de esta forma que cuando en una red
--------------------
local el usuario de la maquina A desee establecer una comunicacion con la maquina B, solo tenga que indicar a la
--------------------
aplicacion ej. Telnet la direccion ip de la maquina B.
[20:50] mirphak ¿Que procedimiento sigue A para saber la direccion fisica de B?,
[20:50] mirphak A envia un paquete (peticion ARP) a todas las maquinas de la red local, el paquete contiene entre otras cosas la
--------------------
direccion ip de B, todas las maquinas reciben el paquete, pero solo contesta la que reconoce su ip en la peticion ARP,
--------------------
en este caso B responde enviando directamente un paquete (respuesta ARP ) a A con su direccion fisica.
[20:51] mirphak #TABLAS ARP#
[20:53] mirphak Para no tener que estar enviando paquetes de peticion ARP cada vez que quieran comunicarse, las computadoras
--------------------
que utilizan ARP mantienen una memoria intermedia donde guardan la direccion ip y la direccion fisica de las maquinas
--------------------
con las que se han comunicado, esta informacion es actualizada cada cierto tiempo (el tiempo de actualizacion depende
--------------------
del sistema operativo). Una tabla ARP se puede mostrar de la siguiente forma:
[20:54] mirphak bien koodhz
[20:54] mirphak hace una pregunta
[20:55] mirphak que si esto es spoofing y si se puede realizar con cain & abel
[20:56] mirphak respuesta: si es spoofing y tambien se puede hacer con cain & abel
[20:56] mirphak pero scapy permite mayor interaccion con los paquetes que son enviados
[20:56] mirphak ----
[20:56] mirphak bien una tabla ARP se puede ver de la sig forma:
[20:57] mirphak http://tinyurl.com/6rcwpy
[20:57] mirphak en la imagen pueden ver tres campos
[20:57] mirphak IP MAC INTERFAZ
[20:58] mirphak el tercer campo puede variar dependiendo del sistema operativo
[20:58] mirphak el comando para ver la tabla ARP de una maquina con GNU/linux o con windows es arp -a
[20:59] mirphak espero que la introduccion sobre este protocolo haya quedado clara
[20:59] mirphak ahora hablemos algo sobre scapy
[20:59] mirphak #Scapy#
[21:00] mirphak Scapy es un programa interactivo escrito en python para manipular paquetes de red
[21:00] mirphak si se utiliza Debian o Ubuntu este viene incluido en los repositorios
[21:01] mirphak y se puede instalar con apt-get install python-scapy
[21:01] mirphak en otro caso se puede bajar de su pagina oficial
[21:01] mirphak http://www.secdev.org/projects/scapy/
[21:02] mirphak ofrecen tambien guias de instalacion para Mac OS X 10.4, FreeBSD, OpenBSD 3.8.
[21:02] mirphak y windows
[21:02] mirphak las guias de instalacion se encuentran aqui:
[21:02] mirphak http://trac.secdev.org/scapy/wiki/WindowsInstallationGuide
[21:03] mirphak La ultima version de scapy funciona con python 2.5
[21:03] mirphak #python#
[21:03] mirphak python en un lenguaje de programacion creado por guido van rossum en 1990, es un lenguaje multiplataforma
--------------------
por que el software que se desarrolle con el puede ser utilizado en Gnu/linux, windows ,Mac OS, entre otros,
--------------------
salvo por algunas modificaciones, es tambien multiparadigma ya que permite al programador trabajar con paradigmas
--------------------
como orientado a objetos, estructurado, y funcional. Se puede bajar la ultima version de python en su pagina oficia
[21:04] mirphak los que instalaron scapy pueden seguir la practica
[21:04] mirphak despues de haber instalado scapy podemos iniciardo desde una consola escribiendo scapy, en GNU/Linux se debe
--------------------
ejecutar como superusuario.
[1:05] OpTix artzneo comenta: artzneo> comenta que para instalar scapy en debian me marco paquetes rotos que puede ser
--------------------
descargado un .zip y solo ejecutar el ./run_scapy
[21:05] mirphak ah ok
[21:07] mirphak bueno para ver todos los protocolos soportados por scapy colocamos:
[21:07] mirphak antes decirles a los que no estan siguiendo la practica que en consola cuando ejecutamos scapy
[21:07] mirphak nos aparece para ingresar comandos de esta forma: >>>
[21:08] mirphak bien
[21:08] mirphak para ver los protocolos soportados pos scapy:
[21:08] mirphak >>> ls()
[21:08] mirphak mostrando algunos serian:
[21:08] mirphak ARP
[21:08] mirphak ASN1_Packet
[21:09] mirphak BOOTP
[21:09] mirphak CookedLinux
[21:09] mirphak DHCP
[21:09] mirphak DNS
[21:09] mirphak [...]
[21:10] mirphak bien algunos usuarios piden un receso para iniciar por linux
[21:10] mirphak esperaremos 5 minutos
[21:11] mirphak mientras los que estan siguiendo la practica
[21:11] mirphak pueden revisar la lista de los protocolos soportado
[21:11] ANNA Ponganle un ojo a la lista de protocolos / Instalen scrapy :P
[21:11] mirphak son como 60 protocolos soportados
[21:12] mirphak hay una herramienta hecha con scapy llamada wifizoo
[21:12] mirphak scapy es un sniffer de redes inalambricas
[21:12] mirphak ya que scapy permite ser utilizada como libreria para python
[21:13] mirphak bien revisen la lista de protocolos y esperemos un momento
[21:13] * OpTix sets mode -m #rtm
[21:13] OpTix comenten algunos como ven la platica
[21:13] artzneo bien
[21:13] byrkoff esta genial....
[21:13] ldjvp1 excelente
[21:13] OpTix y si estan siguiendo los procedimientos etc.. unos 3 minutos
[21:13] GeeK DISCULPA LLEGUE UN POQUITO TARDE
[21:14] byrkoff ahora aparezco por linux...mi hermana no me dejaba, asi que la mandé a ver TV
[21:14] artzneo veo los protocolos de scappy, bastantes
[21:14] GeeK SCAPY ES BASICAMENTE UN SNIFFER CIERTO?
[21:14] * ldjvp1 byrkoff ajajajajajjajajaa
[21:14] mirphak GeeK: umm scapy hace de todo
[21:14] mirphak MIM, sniffer, syn flood
[21:15] mirphak ya que permite modificar paquetes de red a nuestro gusto
[21:15] GeeK AHHH OK
[21:15] * OpTix sets mode +m #rtm
[21:16] mirphak bien si vieron la lista de protocolos soportados, ya se pueden imaginar todo lo que se puede hacer y modificar
[21:16] mirphak pero nos centraremos en el protocolo ARP
[21:17] mirphak bien, para listar los campos que tiene ARP colocamos:
[21:17] mirphak >>>ls (ARP)
[21:17] mirphak hwtype : XShortField = (1)
[21:17] mirphak ptype : XShortEnumField = (2048)
[21:17] mirphak hwlen : ByteField = (6)
[21:17] mirphak plen : ByteField = (4)
[21:17] mirphak op : ShortEnumField = (1)
[21:17] mirphak hwsrc : ARPSourceMACField = (None)
[21:18] mirphak psrc : SourceIPField = (None)
[21:18] mirphak hwdst : MACField ('00:00:00:00:00:00')
[21:18] mirphak pdst : IPField = ('0.0.0.0')
[21:18] mirphak lo anterior son los campos que tiene un paquete ARP, por asi decirlo
[21:19] mirphak ahora pasaremos a explicarlo cada uno rapidamente
[21:19] mirphak hwtype:indican el tipo de red de que se trata, y vale 1 en el caso de Ethernet.
[21:19] mirphak ptype:indican el tipo de protocolo que se ha de resolver, que puede ser IPv4, Ipv6¦
[21:20] mirphak hwlen:indica la longitud en bytes de una direccion hardware, en nuestro caso 6.
[21:20] mirphak plen:indica la longitud en bytes de una direccion de protocolo, en nuestro caso 4
[21:21] mirphak op: es el codigo de operacion, 1 para una peticion arp y 2 una respuesta
[21:21] mirphak hwsrc: es nuestra mac
[21:21] mirphak psrc: es nuestra ip
[21:22] mirphak hwdst:es la mac de la maquina destino
[21:22] mirphak pdst: es la ip de la maquina destino
[21:22] mirphak ahora podemos iniciar el envenenamiento ARP
[21:23] mirphak para poder seguir la practica de envenenamiento deberiamos tener mas o menos lo siguiente:
[21:23] mirphak http://tinyurl.com/65grgy
[21:23] mirphak en la imagen esta el esquema de red
[21:24] mirphak repito la url http://tinyurl.com/65grgy
[21:24] mirphak bien, ahora paso a describii lo que se ve en la imagen
[21:25] mirphak dellen es un pc, esta conectado al router inalambrico
[21:25] mirphak con la inalambrica
[21:25] mirphak Azul es otro pc, esta conectado por cable al router inalambrico
[21:26] mirphak y el router esta conectado al modem que le provee de acceso a internet
[21:26] mirphak para seguir la practica entonces necesitamos 2 pcs
[21:26] mirphak o una maquina virtual
[21:27] mirphak en este caso el paquete envenenado sera enviado desde dellen
[21:27] mirphak Iniciando el Envenenamiento ARP: En este caso se trata de hacer creer a Azul que nosotros somos el router
---------------------inalambrico, y de esta forma impedirle conectarse a internet.
[21:28] mirphak bien
[21:29] mirphak suponemos que Azul la maquina victima tiene S.O. windows, aunque puede ser cualquiera
[21:30] mirphak bueno, con el fin de saber que ocurre cuando es envenenada colocamos en la maquina victima el comando:
[21:30] mirphak arp -a
[21:30] mirphak si lo hacemos veremos una imagen similar a la mostrada anteriormente
[21:30] mirphak http://tinyurl.com/6rcwpy
[21:31] mirphak donde la maquina victima tiene en su tabla arp la ip y la mac del router inalambrico
[21:31] mirphak bien
[21:32] mirphak Bueno volviendo con scapy, necesitamos indicarle los parametros necesarios para construir el paquete ARP
--------------------
que sera enviado a Azul y lo hacemos de la siguiente forma
[21:32] OpTix mirphak: BRIO tiene una duda...
[21:32] mirphak si
[21:32] * OpTix gives voice to BRIO
[21:32] OpTix BRIO: cual es tu duda... ?
[21:32] BRIO Ahhh pues le decia a OpTix
[21:32] BRIO mencionaste que se trata de hacerle creer a Azul que nosotros somos el router inalambrico ...
[21:32] mirphak si
[21:32] BRIO no mas bien es hacerle creer a dellen ....
[21:33] mirphak ah ok, si me equivoque
[21:33] BRIO que Azul (nosotros) somos el router inala¡mbrico?
[21:33] OpTix ok.. gracias BRIO por la aclaracion...
[21:33] mirphak bien gracias por la aclaracion
[21:33] BRIO No hay de que
[21:33] * OpTix removes voice from BRIO
[21:34] mirphak bueno, BRIO tiene razon la idea es hacerle creer a azul que somos el router inalambrico
[21:34] mirphak y procedemos de la suiguiente manera:
[21:34] mirphak >>>s=ARP (op="who-has", psrc= "192.168.2.1", pdst="192.168.2.3", hwdst="00:1e:d7:e2:d1:dc")
[21:35] mirphak En la expresion anterior le estamos asignando a la variable s el paquete ARP. Pasando a describir cada uno
--------------------
de los parametros quedaria de la siguiente forma:
[21:35] mirphak op= En scapy una peticion ARP es representada por “who-has†y una respuesta ARP por “is-atâ€
[21:35] mirphak psrc= Le indicamos quien es el que envia el paquete, en este caso colocamos que es el Punto de Acceso y
--------------------
no nosotros (Delenn).
[21:36] mirphak punto de acceso no, router inalambrico *perdon
[21:36] mirphak pdst= Le indicamos que el paquete sera dirigido a Azul que tiene la ip 192.168.2.3
[21:37] mirphak hwdst= Le indicamos la direccion fisica a la que Azul debe enviar sus paquetes de respuesta
--------------------
(Direccion fisica de Delenn, aunque puede ser cualquiera).
[21:37] mirphak si no queremos que la maquina victima nos envie paquetes de respuesta entonces colocamos cualquier MAC
[21:38] mirphak bien, ahora pasaremos a mostrar la conversacion entre estas dos maquinas
[21:38] mirphak Vea 192.168.2.3 esta es mi direccion fisica 00:1e:d7:e2:d1:dc (verdad) y yo soy 192.168.2.1 (mentira).
--------------------
Entonces 192.168.2.3 que es Azul actualiza su tabla ARP y cambia la Direccion fisica de 192.168.2.1 que es el
--------------------
Router inalambrico por la de Delenn.
[21:39] mirphak lo anterir muesta la conversacion entre las dos maquinas cuando enviemos el paquete
[21:40] mirphak antes de enviar la info, veamos como quedo construido el paquete:
[21:40] mirphak >>>ls(s)
[21:40] mirphak hwtype : XShortField = 1 (1)
[21:40] mirphak ptype : XShortEnumField = 2048 (2048)
[21:40] mirphak hwlen : ByteField = 6 (6)
[21:40] mirphak plen : ByteField = 4 (4)
[21:40] mirphak op : ShortEnumField = 1 (1)
[21:41] mirphak hwsrc : ARPSourceMACField = '00:1e:d7:e2:d1:dc' (None)
[21:41] mirphak psrc : SourceIPField = '192.168.2.1' (None)
[21:41] mirphak hwdst : MACField = '00:1e:d7:e2:d1:dc'
[21:41] mirphak pdst : IPField = '192.168.2.3'
[21:41] mirphak Ahora solo tenemos que enviar el paquete ARP de la sigiente forma:
[21:41] mirphak >>>send(s, inter=3, loop=1)
[21:42] mirphak Con esto le estamos diciendo a scapy que envie el paquete s cada 3 segundos y esto se repite hasta que
---------------------
terminemos el proceso con Control+C . La razon por la cual ponemos a enviar el paquete en un ciclo infinito
---------------------
(loop=1), es para no darle tiempo a Azul de renovar su Tabla ARP con valores reales.
[21:42] mirphak Si queremos que Scapy solo envie un paquete colocamos:
[21:42] mirphak >>>send(s)
[21:42] mirphak Ahora si ejecutamos de nuevo el comando arp -a en Azul obtenemos:
[21:44] mirphak si observamos en la maquina victima debe aparecer la ip delenn con la direccion fisica del punto de acceso
[21:45] mirphak tambien podemos ver la ip del router inalambrico y su MAC
[21:45] mirphak entonces tenemos que la tabla ARP de Azul ha sido modificada con valores irreales :P
[21:46] mirphak ahora si intentamos acceder a internet desde Azul no se puede ya que
[21:46] mirphak este necesita comunicarse con el router inalambrico por medio de su mac
[21:46] mirphak pero Azul tiene en su tabla es la MAC de delenn
[21:47] mirphak bien
[21:47] mirphak Podemos obtener el mismo resultado si utilizamos la funcion predefinida por scapy para envenenamiento ARP
--------------------
llamada arpcachepoison() :
[21:47] mirphak >>>arpcachepoinson(192.168.2.3, 192.168.2.1, 2)
[21:47] mirphak Con lo anterior se envian los paquetes ARP cada 2 segundos, y Azul cambia la direccion fisica del Router
--------------------
inalambrico en su tabla Arp por la direccion fisica de la maquina desde la cual se estan enviando realmente los paquetes.
[21:48] mirphak bien, lo anterior fue el envenenamiento ARP, ahora se mostraran otras pocas utilidades de scapy
[21:49] mirphak para ver las funciones predeficidas que tiene scapy colocamos:
[21:49] mirphak >>>lsc()
[21:49] mirphak algunas interesantes:
[21:49] mirphak arping
[21:49] mirphak queso : Queso OS fingerprinting
[21:49] mirphak nmap_fp : nmap fingerprinting
[21:50] mirphak promiscping : Send ARP who-has requests to determine which hosts are in promiscuous mode
[21:50] mirphak bien y otras mas
[21:51] mirphak y por ultimo
[21:51] mirphak pero antes
[21:51] mirphak me cuentan que los comandos qe he puesto se han visto mal
[21:52] mirphak yo aca con irssi los veo bien
[21:52] mirphak si tienen problemas con los caracteres me dicen y se los envio
[21:52] mirphak bien
[21:52] OpTix si un pco desfazado pero se alcanzan a entender
[21:52] mirphak ok
[21:53] mirphak bien ahora para terminar, un traceroute bien interesante :P
[21:53] OpTix mirphak: fingerprinting como se interpretaria aqui ?
[21:54] mirphak muestra el S.O.
[21:54] mirphak de una maquina
[21:55] mirphak aunq la traduccion es de huella digital :P
[21:55] mirphak pero bueno
[21:56] OpTix nomac dice: ---> para mas referencia: http://packetstorm.linuxsecurity.com/papers/general/blackmagic.txt
[21:56] janux lsc(queso)
[21:56] mirphak si
[21:57] mirphak scapy tiene una funcion predefinida llamada traceroute()
[21:57] mirphak res,unans = traceroute(["www.cisco.com","www.google.com","www.yahoo.com","www.cibertito.com"])
[21:58] mirphak si vemos la salida del traceroute, parace normal
[21:58] mirphak pero scapy nos permite pasarlo a 3D
[21:58] mirphak de la siguiente forma:
[21:58] mirphak >>>res.trace3D()
[21:58] mirphak y veremos algo como esto:
[21:58] mirphak http://tinyurl.com/5mfw9k
[21:59] mirphak para poder ver el traceroute en 3D necesitamos tener instalado VPython
[22:00] mirphak si damos click en alguno de los circulos que representan un servidor nos muestra la ip del servidor
[22:00] mirphak y con control+click nos deja ver los puertos abiertos que tiene el servidor
[22:01] mirphak como muestra la imagen: http://tinyurl.com/5mfw9k
[22:01] OpTix mirphack: nomac tiene una pregunta..
[22:01] * OpTix gives voice to nomac
[22:01] mirphak bien eso es todo, como dije antes scapy permite ser utilizada como una libreria de python
[22:01] nomac Rula ese 3D =)
[22:02] OpTix nomac: puedes formular..
[22:02] nomac mirphak: traceroute ya es algo anticuado y facilmente detectable/bloqueado/ignorado.. tiene algo como tcptraceroute?,
------------------------------
me llamo la atencion algo qe menciono de nmap, emula tecnicas de escaneo o se vale del mismisimo nmap?
[22:03] mirphak si exactamente, y scapy es considerado segun dicen con mejores funcionalidades que nmap
[22:03] mirphak la invitacion es para que lo prueben
[22:03] nomac Simon simon
[22:03] mirphak y pueden utilizar la libreria para hacer sus programas
[22:03] mirphak como les dije antes wifizoo esta con scapy
[22:04] mirphak y otras herramientas que hay en el mercado :P
[22:04] OpTix mirphak: creo que terminamos nop ?
[22:04] mirphak bien ahora quiero agradecerles por esta aqui y compartir como friends
[22:04] * OpTix sets mode -m #rtm
[22:04] janux rulz mirphak !!
[22:04] mirphak OpTix: si eso es todo, gracias a todos.
Road Technology Minds Security Group - 2008