Rogue Access Point(AP) con Raspberry(final)

Ahora que tenemos nuestro Rogue AP, funcionando como lo dejamos en el articulo anterior vamos a darle una mano de «chapa y pintura» para hacerle pasar por un portal cautivo cualquiera, como los que usan hoteles,restaurantes y sitios cool en general.

Para ello podemos clonar la apariencia de algún portal cautivo de algún sitio cool y demás (eso lo dejo a tu eleccion), pero lo importante es lo que esta «debajo»

Tuneando

Una vez que tengas el portal, tendrás que tunearlo a tu gusto , para conseguir que tenga la apariencia que deseas y sirva para tu propósito(phising,MitM,etc..) En nuestro caso el portal es muy simple y solo registra la mac del equipo entrante, la guarda en un txt y pide que acepte un formulario. Pero todo esto lo podemos hacer todo lo sofisticado que queramos, por ejemplo añadiendo botones de validación en caralibro y demás redes privativas, para capturar credenciales etc..

Instalacion portal cautivo

Para instalar nuestro portal cautivo necesitamos tener instalado nginx y php

apt-get install nginx php5-fpm 

Configuracion nginx

server { root /var/www; index index.php;

    server_name localhost;

    location / {
        try_files $uri $uri / index.php;
    }

    location ~ .php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/PHP5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }


}

Portal cautivo codigo(index.php)

<?php
//Get mac address and save
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
  exec("sudo arp -a |grep $REMOTE_ADDR>>/macs/mac.txt");
  // Add PC to the firewall
     exec("sudo iptables -t nat -I PREROUTING 1 -s $REMOTE_ADDR/32  -i LAN -p tcp --dport 80 -j REDIRECT --to-port 80");
}  
nombre_sitio="Nombre que le queramos poner";
// Path to the arp command on the local server
$arp = "/usr/sbin/arp";
?>
<html>
  <head><title>Bienvenido a <?php echo $nombre_sitio;?></title>
  <META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
  <LINK rel="stylesheet" type="text/css" href="./style.css">
  </head>
  <body>
    <form action="" method post>
      <p>Pulsa continuar para empezar a navegar</p>
      <input type="submit" value="continuar"></form>
    </body>
    </html>

Permisos ww-data

Para que todo esto funcione necesitamos dar permisos al usuario www-data en /etc/sudoers para que pueda manipular reglas de iptables, para ello usamos el comando visudo

visudo

y añadimos las siguientes lineas: OJo esto es peligroso, porque permite a cualquier atacante que consiga injectar codigo en el servidor manejar las iptables.

www-data ALL=NOPASSWD: /usr/sbin/arp

www-data ALL=NOPASSWD: /sbin/iptables

www-data ALL=NOPASSWD: /usr/bin/rmtrack [0-9]*.[0-9]*.[0-9]*.[0-9]*

Redireccionar a portal cautivo

Para entender lo que vamos a hacer ahora, tenemos que tener claro que los portales cautivos capturan todo el trafico http hasta que el usuario se autentica, bien a través de un formulario o vía cookie.

Ahora vamos con las reglas de enrutamiento con iptables:

iptables -t nat -A PREROUTING -s $portal -i LAN -p tcp --dport 80 -j REDIRECT --to-port 80

Con esto lo que decimos es que todo el trafico que venga por el puerto 80 sea dirigido al mismo puerto de la maquina local.

Con esto ya tendriamos nuestro portal cautivo listo

Happy Hacking ;)

Referencias:http://www.andybev.com/index.php/Using_iptables_and_PHP_to_create_a_captive_portal

Compartir

3 Comentarios

Deja una respuesta a foo bar Cancelar respuesta

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax