Thursday, March 8, 2012

ARP Poison 4

Ok, continuemos con la 4ta parte de ARP poison, en esta ocasión verás como comprobar la funcionalidad de ARP 4:

El código principal es el siguiente, he encapsulado todo el código para dejarlo más legible y fácil de entender, porque de otra forma sería mas difícil de comprender cuando crezca la aplicación.

Bueno vamos, el código principal se ha reducido a unas pocas lineas, no te preocupes subiré la última versión del código en cuanto lo termine.


#include "Crossover/Crossover.h"

using namespace Crossover::Framework::Net::Protocols;
using namespace Crossover::Framework::Net;
using namespace std;

int main(){

    try 
    {   
        ARPDAO oARPDAO( "eth0");
        oARPDAO.syncRequest("192.168.2.254");
    }   
    catch(Exception ex) 
    {   
        cout << ex.message() << " OS: " << ex.systemMessage() << endl;
    }   
    return 0;
}

    Como puedes ver el código ha sido encapsulado en la clase ARPDAO, que se encargará de realizar todo el tratamiento con las estructuras ARP, el nombre es por lo siguiente ARP por el protocolo Address Resolution Protocol o en español Protocolo de Resolución de Direcciones que ya sabes cual es su función y DAO por las siglas de Data Access Object o en español Objeto de acceso a datos, estos objetos se encargan de trabajar en las capas de persistencia de datos y/o relacionadas con la recepción o envío de paquetes por la red, se encargan del trabajo sucio para que a nosotros nos sea más fácil de utilizar.

El código del proyecto Crossover descargarlo desde aquí, es necesario que utilices svn, utiliza alguna de los gestores de descarga dependiendo de tu distribución, si usas windows aunque por el momento no esta creado para windows, puedes utilizar un cliente svn como tortoise:

svn checkout http://crossover.googlecode.com/svn/trunk/ Crossover -read-only

El fuente y makefile desde acá.

http://code.google.com/p/crossover/downloads/detail?name=ARPRequest.tar&can=2&q=

Como quedaría: ARPRequest
|__________ makefile
|__________ main.cpp
|d_________ Crossover

Ahora usarás un sniffer para comprobar los paquetes que salen desde el ejecutable, se usará en este ejemplo el tshark (Versión de consola) , si tienes una distro de linux no creo que te sea complicado obtenerlo, tienes a yum y apt-get, pacman, apttitude entre otras.

Una vez descargado por consola escribe por consola, tshark, esto capturará todos los paquetes que circulan por la red a tu ordenador y los salientes:

Bah! pero que rollo, esto no se entiende para nada!, espera!, ya ok, veamos este comando(tshark) podría generar filtros en los paquetes y solo capturar aquellos que nosotros digamos, pone en la terminal lo siguiente para capturar paquetes a nivel del kernel:

$> tshark -f "arp"
Ahora verás solo los paquetes ARP que viajan por la red.

Fijate en el en penúltimo y último paquete, el penúltimo es un ARP Request, este paquete pregunta por la MAC de la ip 192.168.2.2 (Who has, Quien tiene), si vez hasta viene con signo de pregunta, el origen del paquete es la ip 192.168.2.254, esta máquina es la que pregunta, en este caso es el router.

Luego en el último paquete responde la máquina objetivo que es la
192.168.2.2 y le dice cual es su mac, en esta caso es la 00:21:00:a3:f7:c8.

Ahora ha enviar el paquete desde la aplicación, bajate el Framework con el SVN, y el ARPRequest.main desde el enlace que se encuentra arriba, ahora por consola:

$> make

Con esto comienza el proceso de compilación, luego ingresa como root, o si no no se podrá envíar el paquete por la red, debido a permisos de kernel, pcap no está permitida para ejecutarse a nivel usuario normal.

#> ./main.o

Luego de enviar este paquete deberías visualizar lo siguiente por tshark:

No comments:

Post a Comment