bitcoin prize

ATAQUE MITM MANUAL CON LIBRERIA SCAPY PYTHON 🐍🐍

"CREANDO UN HOMBRE DE EN MEDIO MANUALMENTE CON SCAPY"

 Lo siento por la imagen es una de las mas tecnicas que encontre XD para este titulo,  hoy vamos a sumergirnos en el mundo de la manipulacion avanzada de paquetes con la libreria en python scapy, antes deberemos saber de la A ala Z muy bien el lenguaje de programacion python o haber programado antes alguna que otra cosa en este lenguaje interpretado de lo contrario, las cosas se nos pondran un poco mas dificiles.


lo primero que haremos es instalar el interprete de python si aun no lo tenemos instalado en nuestra maquina,   podemos instalar cualquier IDE ademas que nosotros queramos puede ser visual studio code , pudiera ser tambien notepad ++  o pudiese ser tambien jupyter notebook porque no? .

ahora lo que haremos es instalar la libreria con el comando siguiente:

pip install scapy

En primera instancia tenemos que importar de nuestro script los siguientes modulos para realizar las posteriores acciones pertinentes:
import scapy.all as scapy
import time
import sys




los modulos funcionan para lo siguiente:

scapy: para crear paquetes y la manipulacion de paquetes ARP.
time:  para manipular el tiempo y manipular la secuencia de envio de paquetes asi como el delay de espera
sys: para impresiones dinamicas de texto dentro de la herramienta

antes recordad un poco de cual es el funcionamiento del hombre en el medio para poder entender que es lo que vamos a realizar o a programar a continuacion:


vemos en la imagen anterior que la conexion original esta siendo intervenida entre dos estaciones cliente,   el atacante se posiciona en medio donde se hace pasar por cada una de las victimas correspondientes,  en este caso por ejemplo si tenemos la victima A y la victima C y el atacante quien en la imagen anterior se ilustra o lo colocan en color rojizo,   las victimas estan coloreadas y estan en la descripcion como lo podemos notar en la imagen,  entonces teniendo en cuenta esto,  vamos a ver como es que funciona internamente el ataque a un nivel ya un poco tecnico/intermedio.

voy a enumerar cada uno de los pasos dentro de listas para que la informacion sea un poco mas rapida de aprender y digerible para los mas principiantes.

    1. Una de las estaciones cliente que se quiera comunicar envia un paquete de broadcast todos a F o todos a 1 en binario para conocer cual es la MAC de la computadora a la que se quiere llegar el paquete de datos o inicializar el flujo de red.
    2. la estacion cliente que esta buscando la IP que quiere llegar envia un mensaje REQUEST que es una pregunta como quien tiene esta DIRECCION FISICA (MAC) CON ESTA IP?
    3. el switch replica por todos sus ports/puertos un mensaje REQUEST  CON LA MAC FF:FF:FF:FF:FF:FF que significa que se los manda a todos en absoluto.
    4. solamente la estacion cliente que tiene esa direccion MAC buscada manda un mensaje REPLY diciendo que esa es su MAC y su IP,  la otra estacion cliente que no correponde a la direccion MAC buscada , simplemente descarta el mensaje.
    5. Una vez conociendo cual es la MAC destino , el switch guarda dentro de su tabla arp la asociacion de MAC/IP para no tener que volver a preguntar durante un largo tiempo.

Ahora bien, una vez comperndido el modelo anterior ahora podemos seguir con nuestro objetivo de este articulo de armar nuestro propio MITM a lo frankestein.

haber , vamos a repasar de nuevo para codificar nuestra herramienta,  decimos qque necesitamos enviar un paquete con la direccion IP y en busca de una direccion MAC con el mensaje MAC FF:FF:FF:FF:FF:FF, esto es lo que vamos a transcribir en la siguientes lineas de codigo.
def falsificar(ip_objetivo, ip_falsa):
    paquete = scapy.ARP(op=2, pdst=ip_objetivo,  hwdst=destinationMac, psrc=ip_falsa )
    scapy.send(paquete,  verbose=false)


en primer lugar tenemos a una funcion llamada falsificar()  en la que toma como argumentos ip_objetivo e ip_falsa,   ahora inicializamos una variable que es igual a un nuevo objeto de la calse scapy instanciando el metodo ARP,  con una opcion de 2  de operacion code lo que se traduce en que vamos a enviar paquetes ARP dentro de la estrcutrua de paquetes ARP,  la linea hwdst=destinationMac significa que estamos igualando la variable hwdst que sea igual al contenido de la instancia del objeto de destinationMac lo que mandamos llamar al objeto de la maquina destino.
ahora, la variable psrc estamos igualando al parametro de la funcion ip_false, por ultimo dentro de la funcion antes de retornar valores le estamos instanciando un objeto de la clase scapy y estamoa instanciando el metodo send, como argumetnos le pasamos la variable paquete que incluye lo anterior y el parametro verbose a falso lo que indica que no queremos que nos indique mucha informacion en pantalla.

ahora vamos a por otro trozo de codigo que es el que va a funcionar de recuperar y mandar los mensajes correspondientes para crar el falseo de arp.
def recuperar(ip_destino, ip_origen):
    paquete = scapy.ARP(op=2, pdst=ip_destino, hwdst=getMac(ip_destino) , psrc=ip_origen, hwsrc=sourceMac)
    scapy.send(paquete, count=4, verbose=false)
    
    
    
contador_paquetes = 0

try: 

   while True:
       falsificar(ip_objetivo, gatewayIP)
       falsificar(gatewayIP, ip_objetivo)
       print("\r[+] Sent contador_paquetes "+ str(contador_paquetes)),
       sys.stdout.flush()
       contador_paquetes += 2
       time.sleep(2)
       
       
except KeyboardInterrupt:
       print("\nInterrupted Spoofing found CTRL + C------------ Restoring to normal state..")
       restore(ip_objetivo ,gatewayIP)
       restore(gatewayIP, ip_objetivo)



ahora vamos a proceder a analizarlo mediante lineas numeradas para poder digerir un poco mejor la informacion y mas organizada. 


  1.  primero tenemos que la funcion recuperar() tiene como argumentos a ip_destino e ip_origen la cual son de suma importancia para lo que haremos aqui abajo
  2. igualamaos la variable paquete a una instancia de objeto de la clase scapy y mandamos llamar al metodo ARP colocamos nuevamente el opcode 2 que es para enviar mensajes request del protocolo arp
  3. igualamos la variable hwdst a la obtencion de la direccion mac mediante el metodo de scapy y le pasamos como argumento ip_destino,  igualmente lo hacemos con las otras variables dentro de la variable.
  4. invocamos el objeto scapy nuevamente e instanciamos el metodo send() le pasamos como argumentos la varible anterior paquete y le ponemos un contador de 4 para que itere 4 veces es decir mande 4 paquetes por ciclo que veremos adelante 
  5. colocamos verbose a falso para que no nos llene la pantalla de informacion poco importante
  6. igualamos una variable temporal contador_paquetes igual a 0
  7. creamos un try-catch en python
  8. dentro de ty:  clocamos un while con un valor de siempre verdadero TRUE
  9. mandamos llamar la funcion previamente creada de falsificar() con los argumentos ip_objetivo y gatewayIP.
  10. imprimimos cuantos paquetes hemos enviado mediante el resultado de la variable temporal contador_paquetes
  11. borramos la memoria mediante flush dentro de la libreria sys
  12. aumentamos en 2 la variable temporal contador_paquetes 
  13. esperamos mediante la libreria time mandamos llamar el metodo sleep para esperar 2 segundos antes de mandar mas paquetes dentro del ciclo while
  14. dentro de Except mandamos llamar la funcion reservada keyboard que es para cuando el usuario quiera detener o presiona alguna tecla del teclado
  15. si el usuario entra en Except mediante presion de alguna tecla correspomdiente del teclado entonces
  16. recuoeramos al estado normal nuestra direccion ip y gateway


REFERENCIAS Y ENLACES TECNICOS:

0 comments:

Publicar un comentario

My Instagram

Uso cookies para darte un mejor servicio.
Mi sitio web utiliza cookies para mejorar tu experiencia. Acepto Leer más