4/08/2010

Karmetasploit en Backtrack (II)


En el artículo anterior configuré el entorno necesario para montar el punto de acceso ficticio y dar acceso a las víctimas a Internet, ahora paso a la segunda parte de este ataque que es lanzar el Karmetasploit. Antes de nada, como necesita una base de datos, la forma más sencilla de configurarlo(según sus cradores): gem install activerecord sqlite3-ruby. Ahora arranco Metasploit con el script karma.rc:


iptables -t nat -A PREROUTING -i at0 -j REDIRECT & msfconsole -r karma.rc >> captureKarma.txt



- El primero es necesario porque en la página del proyecto aconsejan forzar que siempre atienda el punto de acceso las peticiones DNS y el cliente no use las que tiene cacheadas.
- Al arrancar msfconsole hay un error al principio porque dice que el plugin dedb_sqlite3 está deprecated, hay que eliminar la primera línea de karma.rc ya que ahora (con Backtrack y Metasploit actualizados) lo carga directamente al iniciar el framework, de hecho vemos que crea la base de datos karma.db a pesar del error. Pero después de un buen rato rompiéndome la cabeza mi conclusión es que no funciona bien ya que solo almacena una cookie y una petición(las últimas) aunque la estructura de datos es correcta, incluso reconoce el sistema operativo del cliente (en la tabla hosts). Sería interesante solucionarlo instalando otra base de datos como MySQL que también tiene plugin para este script. A continuación se muestran unos pantallazos del sqlitebrowser al acabar esta prueba donde vemos este problema:


La tabla interesante es notes, donde guarda las cookies y las contraseñas, en este caso solo hay una(de Facebook), cuando tendría que haber conseguido otras dos más como vemos en el pantallazo de la víctima:




- Debido al problema anterior redirijo toda la salida a un archivo de texto para poder examinarlo con calma más adelante.

¿Qué pasa al arrancar Kametasploit?
Todas sus funcionalidades las encontramos en esta entrada de PenTestIT, pero en esta prueba(debido al software que se utiliza el cliente) podemos resumirlo en lo siguiente:






- Crea multitud de servidores e intenta explotar alguna vulnerabilidad en el cliente, si todo va bien(el software de la víctima no esta actualizado) conseguirá él solo una sesión de Meterpreter para poder jugar con ella :P. Pero en nuestro caso tenemos un Windows 7 actualizado así que no es el caso, el siguiente vídeo muestra un ejemplo de uso contra un XP vulnerable:








Al obtener una sesión podrían aplicarse distintas técnicas como por ejemplo activar el escritorio remoto de la víctima y crear un usuario administrador usando el script getgui.




- Se conecta a sitios comunes (Gmail, Facebook, Twitter...) para obtener cookies almacenadas en el navegador del cliente. Como dije antes almacené la salida encaptureKarma.txt, a falta de base de datos corto y pego las partes interesantes:
















Me falta comentar que en cuanto empezamos con esta parte del ataque en el navegador de la víctima deja de navegar y aparece lo que se ve en la imagen. Se podría modificar simplemente por una web en blanco para que fuese menos "cantoso" (ruta: /opt/metasploit3/msf3/data/exploits/capture/http/index.html).













Ahora me quedo con las ganas de probar al hermano de Karmetasploit: Jasager, que es, básicamente, el script KARMA en la Fonera. Dejo aquí este enlace donde explican como configurarlo por si alguno que tenga una se anima... ;)








Jesús Pérez





4/05/2010

Karmetasploit en Backtrack (I)

Hace algún tiempo a través de PenTestIt descubrí algo que me sorprendió mucho a primera vista: Karmetasploit, en la introducción del proyecto nos cuentan un poco de historia:

"La versión original de KARMA dependía de una versión modificada del controlador Madwifi para tarjetas inalámbricas Atheros. Si bien este enfoque funciona, se limita a los tipos de tarjetas de red que se pueden utilizar y requiere un cierto esfuerzo para mantener el parche con la última versión del código fuente de madwifi. Para remediar esto, los desarrolladores de Aircrack-NG (específicamente Hirte) desarrolló punto de acceso en modo usuario que funciona con cualquier tarjeta inalámbrica que soporte el modo monitor y la inyección. Esta herramienta se llama 'airbase' y fue incluida en la versión 1.0rc1 de Aircrack-ng. No sólo resuelve los límites de hardware de utilizar un controlador madwifi parcheado, también hace mucho más fácil modificar e integrar nuevas funciones."

Después de realizar distintas pruebas(unas con más éxito que otras) siguiendo la información que iba encontrando observé que casi todos utilizaban las distintas posibilidades de combinación que ofrecen Aircrack-ng,
Karma y Metasploit para conseguir disferentes tipos de ataques. Este tema me llamó mucho la atención y se me ocurrió unficar todo esto así que voy a darle unas vueltas al tema a ver que sale de aquí. A las herramientas mencionadas hay que añadir un componente de ingeniería social para conseguir que la víctima se conecte al nuestro punto de acceso pero no va ser necesario, veremos aún teniendo nuestra propia conexión, tendemos a usar las de los demás :).

Como cliente víctima voy a usar un equipo con el sistema operativo Windows 7 ya que la mayoría de los ejemplos que hay por ahí prueban con Windows XP sin actualizar(más adelante entenderemos el porqué). El ataque se va a dividir en dos partes fundamentales:
- Montar el punto de acceso ficticio y dar acceso a las víctimas a Internet.
- Arrancar el Karmetasploit para que capture todo lo que pueda.


Para la primera utilizo la suite Aircrack-ng, más concretamente el paquete airbase-ng, recientemente descubrí una interfaz gráfica que soporta algunas de sus funcionalidades y que me resulta muy cómoda para ahorrarme el reescribir comandos y parámetros al realizar auditorías en redes inalámbricas. Se llama Gerix Wifi Cracker y está incluida en de Backtrack, no hay demasiado en la red sobre su uso, en este video los creadores muestran como utilizarlo para romper una clave WEP:

Creo el punto de acceso falso siguiendo estos pasos:
Paso 1 - Ponemos la tarjeta en modo monitor en la pestaña de Configuración (Enable/Disable Monitor Mode) y vemos que mantiene wlan0 como estaba y crea una nueva(mon0) en modo monitor.
Paso 2 - En Fake AP se configuran los parámetros de la red inalámbrica, la dejaremos sin contraseña, simplemente definiremos un nombre y un canal, marcando la opción Respond to all probes(recomendación de Karmetasploit) . Al arrancarlo se abre un xterm con el comando ejecutado en la cabecera de la ventana para que sepamos los parámetros exactos que se le pasan a airbase-ng:
Ahora si buscamos redes inalámbricas en el equipo cliente vemos que ya aparece la nueva.



Paso 3 - En este punto yo utilizo el siguiente script para compartir la conexión a internet y terminar la configuración del entorno :

#!/bin/bash
## NOTE: Replace YOURESSID with the essid you want
## to connect and its key(ASCII) and YOURIFACE for
## your interface with access to internet.

# delete old database
rm karma.db
# stops running services (if any)
killall dhcpd3
# connects to internet (if not)
ifconfig YOURIFACE down
iwconfig YOURIFACE essid YOURESSID key s:YOURKEY
dhclient YOURIFACE
# shares internet conexion
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -F
iptables -t nat -A POSTROUTING -o YOURIFACE -j MASQUERADE
# ups fake access point interface
ifconfig at0 up 10.0.0.1 netmask 255.255.255.0
# starts dhcp and dns server
dhcpd3 -cf /root/dhcpd.conf at0
# starts tcpdump
tcpdump -i at0 -s 65535 -w capture5 &

Comentarios acerca de el script:
- Tuve que desinstalar el paquete dnsmasq-base porque había conflictos con el dhcpd3 ya que es un servidor DHCP también, entre otras cosas. La salida al arrancarlo dice que hay un error de permisos pero funciona igual.
- Pego a continuación mi fichero de configuración (/etc/dhcp3/dhcpd.conf), utilizo los DNS de Google porque así me ahorro el tener que configurar un servidor(en los ejemplos que ví lo suelen hacer con bind o con el dnsmasq) en la red local.

option domain-name-servers 10.0.0.1;
default-lease-time 60;
max-lease-time 72;
ddns-update-style none;
authoritative;
log-facility local7;

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;
# Google DNS server
option domain-name-servers 8.8.8.8;
}


- En la página del proyecto aconsejan realizar una captura con tcpdump por si Karmetasploit fallase, en este ejemplo el parámetro -s es para que "esnife" de forma que los paquetes puedan ser analizados posteriormente con el Wireshark.
- Como solo tengo una tarjeta inalámbrica en el equipo usaré
wlan0 para seguir conectado a internet y mon0 para crear la red inalámbrica, esto en teoría debería ser posible pero en la práctica a veces desconecta, lo soluciono reconectandola: iwconfig wlan0 essid ... & dhclient wlan0

Como me estoy alargando mucho dejo la segunda parte del ataque para otra entrada, lo que sí se puede hacer ya es usar algún
sniffer "de toda la vida" ya que todo lo que envía y recibe el usuario pasa por nuestra interfaz at0. Aprovechando que estoy usando el Messenger en el equipo víctima mientras escribo esto voy a probar con dsniff, que creo recordar que tenía una herramienta para capturar conversaciones, tras una pequeña búsqueda en Google... :)



Jesús Pérez