lunes, 18 de junio de 2012

Montar un AP con Linux

En este post quiero mostrar como podemos montar un AP (Access Point) con nuestra interface wifi en Linux. Específicamente usaré Fedora 16, pero el procedimiento debe variar poco para otras distros.

Las razones por las que nos interesaría montar un AP pueden ser diversas. Yo en particular lo quise hacer para ver cuantos h4x0rs se conectan a mi AP en busca de internet gratis y así poder sniffar su tráfico. Sí, soy muy malo }:)) Ya lo sé. Aunque aún no lo pongo en práctica.

Bueno empecemos de una vez... ¡A la consola!

Lo primero será ver si nuestra interface soporta el modo AP. Para ello ejecutamos:

# iw list

Buscamos en la sección "Supported interface modes"

Supported interface modes:
         * IBSS
         * managed
         * AP
         * AP/VLAN
         * WDS
         * monitor
         * mesh point
         * P2P-client
         * P2P-GO

Si aparece el modo "AP", entonces está soportado. Si no apareciera, significa que los drivers que tienes instalados para tu tarjeta no lo soportan. En ese caso debes buscar e instalar los drivers adecuados para tu tarjeta. Estos comandos te pueden ayudar:

Para ver el chipset de la tarjeta

# lspci
...
03:00.0 Network controller: Atheros Communications Inc. AR9285 Wireless Network Adapter (PCI-Express) (rev 01)
...

En mi caso tengo una tarjeta con chipset Atheros AR9285. Para una tarjeta conectada por USB el comando es "lsusb".

Para listar los drivers wifi instalados

# modprobe -l | grep "drivers.*wireless"
...
kernel/drivers/net/wireless/ath/ath9k/ath9k.ko
kernel/drivers/net/wireless/ath/ath9k/ath9k_hw.ko
kernel/drivers/net/wireless/ath/ath9k/ath9k_common.ko
kernel/drivers/net/wireless/ath/ath9k/ath9k_htc.ko
...

Fedora 16 ya viene con los drivers ath9k para chipsets Atheros.

Para listar los drivers cargados (en uso)

# lsmod
...
ath9k                 134768  0
...

Bien una vez soportado el modo AP, debemos instalar el demonio "hostapd" que nos servirá para levantar el AP de forma muy sencilla.

# yum install hostapd

Luego creamos un archivo de configuración "hostapd.conf" con las siguientes lineas:

# hostapd config
interface=wlan0
driver=nl80211
ssid="Mi Wifi"
channel=6

En "interface" debes poner el nombre de tu interface wifi. El campo "driver" dejalo tal cual. En "ssid" pon el nombre que quieres para tu red wifi y en "channel" el canal en que atenderá el AP.

La configuración anterior montará un AP que NO pedirá contraseña para conectar a la red. Puedes ver otras opciones de configuración en la documentación de hostapd (http://linuxwireless.org/en/users/Documentation/hostapd)

Antes de iniciar el demonio hostapd debemos detener la interface wifi.

# ifconfig wlan0 down

Iniciamos el demonio

# hostapd hostapd.conf

Si todo ha salido bien ahora debemos tener la interface wlan0 en modo "master" y debe aparecer otra interface mon.wlan0 en modo "monitor". Desde otra consola ejecutamos lo siguiente:

# iwconfig
...
wlan0     IEEE 802.11bgn  Mode:Master  Frequency:2.437 GHz  Tx-Power=16 dBm  
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Power Management:on
         
mon.wlan0  IEEE 802.11bgn  Mode:Monitor  Frequency:2.437 GHz  Tx-Power=16 dBm  
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Power Management:on

Configuramos una IP para wlan0

# ifconfig wlan0 192.168.2.1/24

Hasta este punto nuestro AP ya está terminado. Para conectar una máquina a nuestra wifi, debemos hacer clic sobre la red "Mi Wifi" y configurar manualmente una IP del rango 192.168.2.0/24.

Sin embargo, para mis propositos debo además levantar un servidor DHCP para que las victimas que se conecten a mi red reciban una configuración de forma automática. Así que...

Instalamos el servidor DHCP

# yum install dhcp

Editamos el archivo dhcpd.conf

#  vim /etc/dhcp/dhcpd.conf

Y lo dejamos así:

subnet 192.168.2.0 netmask 255.255.255.0 {
    range 192.168.2.10 192.168.2.30;
    option domain-name-servers 8.8.8.8, 8.8.4.4;
    option routers 192.168.2.1;
    option broadcast-address 192.168.2.255;
    default-lease-time 600;
    max-lease-time 7200;
}


El parametro "range" indica el rango de IPs que serán asignadas por DHCP. Con "option domain-name-servers" especificamos los servidores DNS y con "option routers" especificamos la puerta de enlace (gateway) que serán configurados en el cliente (victima). En este caso he puesto como DNSs los servidores de Google. Otra opción interesante es ponernos a nosotros (192.168.2.1) como DNS y así poder hacer un DNS Spoofing fácilmente. Aunque siempre podremos hacerlo con dsniff.

Iniciamos el servidor DHCP

# systemctl start dhcpd.service

Verificamos si inicio correctamente

# systemctl status dhcpd.service 
...
Loaded: loaded (/lib/systemd/system/dhcpd.service; disabled) 
Active: active (running) since Mon, 18 Jun 2012 04:11:52 -0500; 4s ago 
...

Si falla al iniciar, revisa que tu interface wlan0 tenga la IP 192.168.2.1

Listo, ahora cuando un cliente se conecte a nuestra wifi, se le asignará automaticamente una IP, los DNS y la puerta de enlace.

Por último, para que el cliente (victima) no sospeche de nada, deberá poder navegar por internet normalmente. Para ello necesitaremos una interface de red con conexión a internet. Por simplicidad voy a suponer que tengo una interface ethernet con conexión a internet aunque bien podría utilizar la conexión a internet del celular o de esos modems de internet portatil. Mi interface ethernet será p5p1, tendrá la IP 192.168.1.33 y su puerta de enlace será 192.168.1.1

Me aseguro de asignar correctamente esa configuración

# ifconfig p5p1 192.168.1.33/24
# route del default
# route add default gw 192.168.1.1

Solo hacen falta un par de configuraciones más: activar forwarding y hacer NAT.

Habilitar forwarding permitirá que nuestra máquina reenvíe los paquetes que le lleguen con una IP destino diferente a la suya (en otro caso serían descartados). Para ello simplemente ejecutamos esto:

# echo 1 > /proc/sys/net/ipv4/ip_forward

El NATeo servirá para hacer una traducción de direcciones IP de la red wifi a la red ethernet y así los clientes puedan salir a internet.

# iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o p5p1 -j MASQUERADE

Eso ha sido todo...

Ahora podemos sacar nuestro sniffer favorito y empezar a capturar el tráfico de las victimas }:))

Hasta la proxima... Saludos.

8 comentarios:

  1. Man , gracias por el tuto, soy asiduo a tu blog, es bueno,vivo en tumbes y me entretengo leyendo tu blog, ultimamente no hay muchas entradas pero leo las pasadas he intento realizar tus pruebas, desearia saber que sniffer es eficas en wifi,es decir cain en windows esta bueno en ethernet tanto como el Ethereal, pero en wifi no logro chuntarle a uno weno y que pueda hacer arp poison y snniff, lo hago con fines educativos ojo, aki en tumbes no hay muchos lugares donde estudiar o a quien consultar, desearia de tu informacion y si hay algun buen tuto de como continuar esta prueba ... se podra hacer un mimt en wifi??? gracias y se ke no tienes tiempo como leia algunos post , se ke t daras algun tiempo en continuar gracias.

    ResponderEliminar
  2. Hola Jhon, gracias por el comment... que chevere que te guste el blog :)

    Bueno en windows no sabría que recomendarte para wifi xD te harás problemas con drivers y eso... el Cain por ejemplo solo funciona con una tarjeta especifica...

    En linux, tienes muchas opciones. Para hacer el ARP poisoning puedes utilizar Ettercap, arpspoof (de la suit dsniff) o loki; para sniffar tienes wireshark y para analizar las capturas puedes usar xplico.

    Aunque en teoría en una wifi no debería ser necesario un ataque MitM porque los paquetes se difunden en todo el medio así que no hay nada que interceptar.

    En lo que respecta a este tuto, no será necesario hacer un ataque MitM porque nuestra maquina será el gateway, así que el trafico pasará por nuestra tarjeta legítimamente :)

    Tengo planes de continuar este post, pero quizá no orientándolo a sniffing...

    Un saludo.

    ResponderEliminar
  3. Buenas man , buen post , esperemos que continues y si le vas con algo de sniff en wifi seria bueno jejeje. exitos, esperamos ese tiempo.

    ResponderEliminar
  4. Muy buen post en lo personal seria bueno el seguir este post con el sniff ya que creo que podria ser de ayuda para ir conociendo mas cosas sobre seguridad

    ResponderEliminar
  5. Cierto, el sniffing es un tema muy interesante y base para un gran número de ataques... sin embargo creo que ya hay bastante escrito sobre el tema. Aunque no descarto escribir al respecto en algún momento.

    Mi idea es emplear lo explicado por Maligno en "Owning bad guys & mafia" para inyectar js, html, css, o lo que fuera pero usando un Rouge AP :)

    Gracias por los comments.

    Saludos.

    ResponderEliminar
  6. Prueben eso en su casa, y veras que todos los que se cuelan navegan generalmente en porno, o desde su casa practiquen.. con las redes libres( sin clave ya que estas viajan en texto plano por el aire) usen el airodump-ng de la suite de aircrack-ng para capturar el trafico, y a la vez el wireshark para ver la captura.

    ResponderEliminar
  7. INTERESANTE BLOG, ESPEREMOS LAS ENTRADAS SIGUIENTES. SALUDOS THOR.

    ResponderEliminar
  8. gracias me funciono al toque!! wn hay un antes y un después!
    muxas gracias master!

    ResponderEliminar