domingo, 28 de mayo de 2017

Hacer dispositivo que simula un punto de acceso wifi (AP)

Los post que hacia en CebollaChan en la DeepWeb ahora version 7, ahora las traigo a taringa ya que la plataforma de CC esta por tiempo indefinido en “Mantenimiento"

¿Que es un Rogue AP?

Un Rogue Ap, es un dispositivo que simula ser un punto de acceso wifi, pero que en realidad, no es mas que una especie de “honeypot” para capturar información de los pobres ilusos que se conecten.

¿Que necesitamos?

Existen dispositivos que se venden que ya vienen preparados para
actuar de rogue ap, con muchas otras funciones excelentes como la famosa “piña” pero como nosotros somos de la cultura del DIY vamos a montarnos uno con una raspberry, por lo que necesitamos:
  • Raspberry Pi 2 o superior
  • WiFi USB with Antenna para la raspberry

Instalación y configuración AP

Para empezar necesitamos instalar un software que nos permita configurar nuestra raspi como un AP y un servidor DNS
 apt-get install hostapd isc-dhcp-server
Ahora configuramos nuestro hostap, como lo que deseamos es crear una red abierta(para que todo el mundo pueda conectarse), lo vamos a hacer con una mínima configuración en nuestro fichero de configuración situado en /etc/hostapd/hostapd.conf
interface=wlan0
ssid=Free_Wifi 
hw_mode=g 
channel=6 
auth_algs=1 
wmm_enabled=0
Una vez editado el fichero y guardado, indicamos la ruta al mismo desde el fichero /etc/default/hostapd cambiando la linea
# DAEMON_CONF=""
por
DAEMON_CONF="/etc/hostapd/hostapd.conf"

Instalacion y configuracion DHCP

Ahora que tenemos nuestro hostap configurado necesitamos configurar nuestro servidor dhcp para que los clientes que se conecten a nuestro ap y dispongan de IP, para ello editamos el fichero /etc/default/isc-dhcp-server(puede cambiar según la distribución que usemos) y lo editamos para indicarle cual es nuestro interfaz principal en mi caso eth0
INTERFACES="eth0"
Y la propia configuración de nuestro servidor DNS situado en /etc/dhcpd/dhcpd.conf que podría quedar de la siguiente manera:
ddns-update-style none;
option domain-name-servers 10.10.0.4,  8.8.8.8, 8.8.4.4;
default-lease-time 7200;
max-lease-time 21600;
authoritative;
log-facility local7;
# Rangos 
subnet 10.10.10.0 netmask 255.255.255.0 { 
      range 10.10.10.5 10.10.10.20; 
      option routers 10.10.10.4;
}
El rango IP y los servidores DNS utilizados, puedes cambiarlos y usar
lo que te parezca oportuno, esta solo es una configuración de ejemplo.

Configuracion IP en interfaz

Necesitamos configurar la IP de nuestro interfaz wifi( wlan0) editando el fichero /etc/network/interfaces de la siguiente manera:
auto wlan0
iface wlan0 inet static
address 10.10.10.4
netmask 255.255.255.0
Después levantamos nuestro servicio DHCP
 /etc/init.d/isc-dhcp-server restart
y nuestro hostap
 hostapd hostapd.conf

Configuracion NAT

Necesitamos habilitar NAT para poder compartir la conexión a Internet
y que los clientes que se conecten a nuestro AP puedan acceder a
Internet, así que tenemos que lanzar los siguientes comandos:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -i wlan0 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Si lanzamos tcpdump podremos ver el trafico que se esta generando en nuestro AP
tcpdump -i wlan0
En el siguiente articulo, veremos como profesionalizar nuestro AP montando un portal cautivo en el mismo.

Happy Hacking ;)

Ahora que tenemos nuestro Rogue AP, funcionando como lo dejamos en lo 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 ;)