Home > GNU/Linux, Seguridad, Wireless > Creando un punto de acceso falso (airbase-ng)

Creando un punto de acceso falso (airbase-ng)

POST ACTUALIZADO: http://safetybits.net/2009/10/05/creando-un-punto-de-acceso-falso-ii/

Hasta hace relativamente poco tiempo, una condición necesaria para crear un punto de acceso era que el driver de nuestra tarjeta debía de soportar el modo “master” (ej: chipsets atheros), pero como no todos cumplimos en un determinado momento esta condición, los desarrolladores de la suite “aircrack-ng” están desarrollando una herramienta llamada “airbase-ng”, cuyo propósito es el de poder crear un punto de acceso a partir de una interface de red en modo monitor.

Si visitamos la página de la documentación de la herramienta,  veremos entre otras cosas, que podemos usar esta herramienta tanto para montar un AP para dar conexión a internet, como para realizar auditorías en redes wireless con protección WEP/WPA/WPA2, pero también vemos el siguiente mensaje:

++++++ IMPORTANT ++++++
++++++ IMPORTANT ++++++
++++++ IMPORTANT ++++++

This functionality will be available in a future release. It is NOT available currently.

++++++ IMPORTANT ++++++
++++++ IMPORTANT ++++++
++++++ IMPORTANT ++++++

Esta herramienta no está disponible en la descarga de la versión estable de la suite, pero podemos descargarnos la suite completa desde el CVS de la siguiente manera:

$ svn co http://trac.aircrack-ng.org/svn/trunk/ aircrack-ng
$ make
# make install

Repasemos los requisitos necesarios para crear un punto de acceso funcional:

  • Servidor DHCP
  • Servidor DNS

En mi caso, usaré como servidor DHCP “dhcp3-server” y como servidor DNS “bind9″ (en distribuciones basadas en Debian GNU/Linux: apt-get install dhcp3-server bind9).

Hecho esto, vamos a configurar el servidor DHCP (una configuración básica), para ello editamos el archivo “/etc/dhcp3/dhcpd.conf”, de manera que tengamos únicamente las siguientes entradas sin comentar:

ddns-update-style none;
option domain-name-servers 10.0.0.1;
default-lease-time 60;
max-lease-time 72;
authoritative;
log-facility local7;
subnet 10.0.0.0 netmask 255.255.255.0 {
range 10.0.0.33 10.0.0.254;
option routers 10.0.0.1;
option domain-name-servers 10.0.0.1;
}

Una vez hecho esto, vamos a crear un punto de acceso sin encriptación, proporcionando acceso a internet a los clientes, con lo que suponiendo:

  • ath0 —> Conectada a internet
  • ath1 —> Modo monitor

Usaremos “ath1″ para crear el AP con airbase-ng, y “ath0″ para dar conexión a los clientes, con lo que procederemos de la siguiente manera:

Creamos el punto de acceso:

blanquito:/# airbase-ng -P -C 2 -c 6 --essid Wifli_Gratis ath1
19:04:40  Created tap interface at0
19:04:40  Trying to set MTU on at0 to 1500
19:04:40  Trying to set MTU on ath1 to 1800
19:04:40  Access Point with BSSID XX:XX:XX:XX:XX:XX started.

Podemos asegurarnos que se ha creado haciendo:

blanquito:/# iwlist ath0 scan | grep ifli
             ESSID: "Wifli_Gratis"

Como vemos, se ha creado una interface virtual llamada “at0″, que será con la que trabajemos de aquí en adelante, ya que de haber creado un AP con cifrado WEP, esta sería la interface que tendría todos los paquetes descifrados, de manera que la levantamos de la siguiente manera:

blanquito:/# ifconfig at0 10.0.0.1 netmask 255.0.0.0 up

Una vez hecho esto, iniciamos el servidor DHCP indicándole el fichero de configuració y la interface de red con la que debe trabajar:

blanquito:/# /etc/init.d/dhcpd3-server stop
blanquito:/# dhcpd3 -cf /etc/dhcp3/dhcpd.conf at0
Internet Systems Consortium DHCP Server V3.1.1
Copyright 2004-2008 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/
Wrote 2 leases to leases file.
Listening on LPF/at0/XX:XX:XX:XX:XX:XX/10.0.0/24
Sending on   LPF/at0/XX:XX:XX:XX:XX:XX/10.0.0/24
Sending on   Socket/fallback/fallback-net

El siguiente paso, es iniciar el servidor DNS para la resolución de nombres:

blanquito:/# /etc/init.d/bind9 restart

Los últimos pasos que vamos a relaizar serán, activar el ip forwarding, y agregar unas reglas a la tabla “nat” de iptables para poder dar acceso a internet a los clientes, por tanto:

blanquito:/# sysctl net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1
blanquito:/# iptables -t nat -F
blanquito:/# iptables -t nat -A PREROUTING -i ath0 -j REDIRECT
blanquito:/# iptables -t nat -A POSTROUTING -o ath0 -j MASQUERADE

Y con esto ya estará todo listo, tendremos un AP y los clientes tendrán acceso a internet, pero como todos estos pasos son un poco engorrosos, lo mejor es hacerse un script que automatice todo el proceso.

Aquí os pongo el mío, y una nota importante, los parámetros extra que se le pasen al script, los pasará a “airbase-ng”.

#!/bin/sh
#
# Script para crear un punto de acceso usando airbase-ng
#
# Argumentos basicos: interface_conexion interface_monitor ip_gw mascara
#
#

RUTA_WLANCONFIG="/usr/local/bin/wlanconfig" #Solo para crear la interface monitor con chipsets atheros
RUTA_AIRBASE="/usr/local/sbin/airbase-ng"
RUTA_BIND9="/etc/init.d/bind9" #script de inicio
RUTA_DHCPD3S="/etc/init.d/dhcp3-server" #script de inicio
RUTA_DHCPD3="/usr/sbin/dhcpd3"
RUTA_CFG_DHCPD3="/etc/dhcp3/dhcpd.conf"
RUTA_SYSCTL="/sbin/sysctl"
RUTA_IPTABLES="/sbin/iptables"

OPC_CREAR="-m"

clear
echo "###############################"
echo "#           SCRIWAP           #"
echo "#=============================#"
echo "#  Chema Garcia (aka sch3m4)  #"
echo "#      [email protected]      #"
echo "#      http://safetybits.net      #"
echo "###############################"
echo ""

if [ "$UID" -ne 0 ]
then
	echo "[!] Has de ser root!"
	exit 0
fi

if [ "$#" -lt 3 ]
then
	echo "Uso: " $0 "      "
	echo ""
	echo "Ej:  " $0 " eth0 wlan0 192.168.1.1 255.255.255.0"
	echo ""
	echo "Opciones:"
	echo "         -m ---> Crear interface monitor (Chipsets Atheros)"
	echo ""
	exit 0
fi

#comienzo de parametros de airbase
num=5

#comprobamos si debemos crear la interface
if [ $# -ge 5 ] && [ "$5" = "$OPC_CREAR" ]
then
	let num=$num+1
	echo "[+] Creando interface $2"
	$RUTA_WLANCONFIG $2 destroy 2>/dev/null
	$RUTA_WLANCONFIG $2 create wlanmode monitor wlandev wifi0 >/dev/null
fi
iface=$2
ip=$3
mascara=$4
var=$#
if [ $num -eq 5 ]
then
	while [ $# -gt 0 ] && [ $num -le $var ];do
		param="$param $5"
		shift
		num=$(($num+1))
	done
else
        while [ $# -gt 0 ] && [ $num -le $var ];do
                param="$param $6"
		shift
                num=$(($num+1))
        done
fi
param="$param $iface"

#Activamos el IP Forwarding
echo "[+] Activando IP Forwarding"
$RUTA_SYSCTL net.ipv4.ip_forward=1 >/dev/null

#Limpiamos la tabla 'nat' de iptables y agregamos nuestras reglas
echo "[+] Limpiando tabla 'nat' de iptables"
$RUTA_IPTABLES -t nat -F

echo "[+] Agregando reglas PREROUTING y POSTROUTING"
$RUTA_IPTABLES -t nat -A PREROUTING -i $iface -j REDIRECT
$RUTA_IPTABLES -t nat -A POSTROUTING -o $iface -j MASQUERADE

echo "[+] Creando punto de acceso"
rmmod tun 2>/dev/null
xterm -e $RUTA_AIRBASE $param &
sleep 3

echo "[+] Levantando interface at0"
ifconfig at0 $ip netmask $mascara up

echo "[+] Reiniciando servidor DHCP"
$RUTA_DHCPD3S stop >/dev/null
$RUTA_DHCPD3 -cf $RUTA_CFG_DHCPD3 at0 2>/dev/null

echo "[+] Reiniciando servidor DNS"
$RUTA_BIND9 restart >/dev/null

echo ""
echo "[+] Finalizado!"
echo ""

Para usar este script en el ejemplo anterior, sería algo así:

./ap.sh ath0 ath1 10.0.0.1 255.0.0.0 -P -C 2 -c 6 --essid Wifli_Gratis

En el foro de seguridadwireless hay un post sobre cómo hacer balanceo de carga entre redes: http://foro.seguridadwireless.net/zona-linux/balanceo-de-carga-en-linux/

Artículos Relacionados

Categories: GNU/Linux, Seguridad, Wireless Tags:
  1. CrazyBoSS
    January 5th, 2010 at 02:43 | #1

    Wenas, ie tio no logro que me de acceso a internet!!

    Supongo que será por los iptebles no??

    Bueno tú en que OS lo has hecho? Yo en Ubuntu 9.4 con el driver r8187…

    Cuando lanzo airbase-ng me da un error de que no puede cambiar MTU, podría ser por eso que el forwarding no funcione, ya que tiene que redireccionar de Ethernet a Wireless, no debería pero nose…

    Otra obsercación es que cuando capturo los paquetes con Wireshark y me conecto en el SoftAP pues está capturando ARP preguntando todo el rato por el gw (10.0.0.1)

    Bueno, por último, que regla de iptable debaría poner para que me redireccione el trafico de un servidor local (uno de streaming con el vlc) a una ip:puero para que pueda ver el vídeo en otro pc?

  1. October 5th, 2009 at 00:16 | #1
  2. January 8th, 2011 at 22:20 | #2