sábado, 29 de diciembre de 2012

Atacando cifrado WEP con repetición de paquetes ARP

No se si es insomnio o le puedo echar la culpa a alguna sustancia ingerida esta noche (y me refiero a la lata de Monster que me acabo de tomar, no piense mal mi querido lector) pero viendo que la almohada no accede a transportarme al reino de Morfeo y sintiéndome generoso, me apetece elaborar una sencilla guía detallando uno de los muchos métodos que hay para romper un cifrado WEP en una red inalámbrica  de esos que usan los antiguos routers y no tan antiguos si tienen un administrador incauto.
Si se me permite, lo primero, voy a intentar explicar, a grosso modo, en que consiste un cifrado WEP o Wired Equivalent Privacy (algo así como Privacidad Equivalente a Cableado). Se trata de un sistema de cifrado usado en el estándar 802.11, lo que viene a ser el estándar de las redes wifi domésticas. Se trata de un algoritmo de cifrado (valga la redundancia) RC4 que encripta los paquetes que viajan de cliente a servidor con una clave de 64 o 128 bits dando (en su época) cierta confidencialidad a los paquetes, fácilmente interceptables que viajan en ondas de radio. Este protocolo de seguridad fue dado a conocer allá por 1999 y tardó 3 años en ser tachado de inseguro debido a múltiples vulnerabilidades. En su época, e incluso cuando el sistema se vio comprometido, seguía siendo efectivo en cierta manera, ya que por aquel entonces, los procesadores ni los métodos para vulnerarlo eran coherentemente rápidos para que supusiera una grave amenaza. No obstante las cosas han cambiado y los procesadores de varios núcleos unidos a la fuerza imparable de los módulos DDR3 que proporcionan tanta RAM operativa como antiguamente casi ni alcanzaban los discos duros han hecho posible que los cifrados WEP puedan ser vulnerados en lo que se tarda en beber un café con leche (de ahí la técnica de crackeo llamada cafe-latte). Esto ha supuesto que ahora, salvo excepciones, las redes protegidas bajo WEP sean las menos habituales dando paso a técnicas de negociación de dos vías como WPA o WPA2 o bien, en grandes redes, los servidores de acceso RADIUS. Pese a todo, con una buena antena wifi, en casi cualquier sitio de cualquier ciudad, todavía seguimos encontrando puntos de acceso wifi bajo "protección" WEP. El siguiente texto trata sobre como vulnerar una red con cifrado WEP con uno o varios clientes asociados usando las suite aircrack-ng. No hace falta señalar que esta y todas las guias de este blog se detallan para funcionar bajo sistemas linux, así que windowseros abstenerse.
Lo primero es descargarnos la herramienta en cuestión en su código fuente desde aquí: http://download.aircrack-ng.org/aircrack-ng-1.1.tar.gz y lo guardamos en un directorio como pentest dentro de nuestra carpeta personal (vamos a ir organizando nuestras herramientas desde el principio, eso nos evitará muchas búsquedas y demás a la larga).


Abrimos una pantalla en la consola (a familiarizarnos con la comandera de Linux toca) y nos situamos en la carpeta donde hemos guardado nuestra descarga, en mi caso: /home/chaosnet/pentest/ Tecleamos un ls para localizar el archivo descargado y damos la orden de descomprimirlo con un tar -xzvf seguido del nombre del archivo descargado. Cuando acabe de descomprimir entraremos en la nueva carpeta haciendo un cd aircrack-ng-1.1 . Antes de continuar instalaremos las librerias requeridas para aircrack, en sistemas basados en Debian (Ubuntu entre ellos) esto pasa por un simple sudo apt-get install build-essential openssl libssl-dev sqlite libsqlite-dev Si los paquetes están instalados apt los ignorará y si no, los instalará. El siguiente paso es compilar los archivos fuente haciendo un make y luego instalamos con un sudo make install. Si todo ha ido bien el programa está instalado y tecleando el comando airmon-ng debería reconocerlo diciendo que faltan parámetros. Resumiendo y descargando desde la consola en tu carpeta personal:
sudo mkdir pentest
wget http://download.aircrack-ng.org/aircrack-ng-1.1.tar.gz
tar -zxvf aircrack-ng-1.1.tar.gz
cd aircrack-ng-1.1
sudo apt-get install build-essential openssl libssl-dev sqlite libsqlite-dev
make
sudo make install
Puedes copiar y pegar todas las lineas en la consola, funcionará.

Empezamos...
Aircrack se usa desde la consola de comandos y requiere un nivel de super usuario (o root) para manejarla y otorgarle permiso para cambiar tu configuración de red así que para evitar repetir sudo en cada comando, mejor empieza con un sudo su que tras teclear tu contraseña te otorgará permiso de administrador hasta que cierres la shell o des la orden de exit. Para usar aircrack lo primero que tenemos que hacer es poner nuestra inalambrica en modo monitor, es decir, a la escucha. Esto puede ser una pena ya que hay algunas tarjetas inalámbricas que por sus drivers no lo permiten. Antes de desesperarte, haz la prueba y si algo falla, recomiendo buscar el modelo de tu tarjeta y buscar drivers mas actualizados en la web del fabricante, quizá eso pueda solucionar el problema. Para poner tu inalambrica en modo monitor aircrack-ng tiene la herramienta precisa. Desde la consola llama a:
airmon-ng
 Este comando sin atributos listará las tarjetas wifi de las que dispones dando su nombre en el sistema (wlan0 o similar) el chipset de esta (atheros, broadcom, ralink...) y su driver. Sin más el comando no hace nada. Para activar el modo monitor teclearemos:
airmon-ng start wlan0
Donde wlan0 será el nombre de nuestra trajeta. Con esto crearemos una nueva tarjeta virtual que llevará el nombre de mon0 y será la que usaremos durante toda nuestra interacción con aircrack. El siguiente paso es ver lo que tenemos alrededor, olfatear con nuestro monitor que redes hay a nuestro alcance y comprobar si tenemos un objetivo viable, para ello usaremos airodump-ng indicando la interfaz por la que queremos que escuche, mon0.
airodump-ng mon0
La salida en pantalla nos muestra algo como esto:
¿Que significa? Va, rápidamente. La columna BSSID se refiere a la dirección MAC de las estaciones, los routers si se prefiere. PWR es la fuerza con la que nuestro monitor recibe la señal, cuanto mas baja, mas intensa. Beacons son las balizas, los paquetes que manda cada punto de acceso o estación para decir ¡Eh, estoy aquí! que hacen que los clientes les identifique rápidamente y puedan intentar una asociación con ellas. Data se refiere al número de paquetes de datos cliente - estación interceptados. /s es la cantidad de Data (paquetes de datos) por segundo. CH se refiere al canal (rango de frecuencia) que usa la red. MB es la velocidad de la red. ENC de encriptación o acceso. CIPHER su algoritmo de cifrado, AUTH su autenticación y la ESSID es el nombre de la red asignado. La tabla siguiente es para los clientes en la que se muestra la BSSID de estos, la BSSID de la estación a la que están conectados, paquetes perdidos, frames y la prueba sobre la ESSID de la estación sobre la que están autenticados. OK.
(Por cierto, para parar de olisquear paquetes y salir del programa basta con presionar CTRL+C)
Nuestro objetivo será la red con la ESSID CH40SN37.router.nomap que usa cifrado WEP y tiene un cliente conectado. Apuntamos la BSSID de el punto de acceso objetivo y la del cliente además del canal de la red y definimos nuestra escucha hacia donde nos interesa guardando el dumpeo (lo que obtengamos) en un archivo y especificando la BSSID y el canal a escuchar:
airodump-ng --bssid 00:0C:F6:D2:A7:28 --channel 8 -w prueba1 mon0
Ahora la tabla solo muestra la red que le hemos indicado y esta guardando cada paquete en el archivo que hemos especificado con el flag -w.
 Necesitaremos una nueva ventana en nuestra consola, presionamos CTRL+shift+T para abrir otra pestaña en la consola y hacemos otro:
sudo su
Que nos otorgue privilegios de root. Lo que vamos a hacer ahora es usar un comando para identificar paquetes ARP y reenviarlos al punto de acceso para generar tráfico:
aireplay-ng --arpreplay -h 00:15:AF:ED:F0:41 -b 00:0C:F6:D2:A7:28 mon0
Donde -h es la BSSID del cliente cuya MAC falsearemos como fuente de los paquetes que mandaremos al punto de acceso (AP) y -b es la BSSID del AP destino. Si lo lanzamos empezaremos a ver como marca una lectura de paquetes esperando ARP y una vez obtenidos estos empieza a reenviarlos. Mientras esto sucede abriremos otra pestaña en la terminal CTRL+shift+T y empezaremos a crackear con los paquetes que vayamos obteniendo:
aircrack-ng ./prueba1-01.cap -0
Para cerciorarte de cual es el nombre del archivo que estas dumpeando haz un ls y buscalo. Aircrack suele añadir -01 al archivo. siempre será el .cap en mi caso prueba2-02.cap. Dependiendo del tráfico generado tardará más o menos, en mi caso con 98370 IVs el resultado es inmediato:

Listo. Ahora si, voy a ver si duermo algo. ¡Hasta la próxima!

viernes, 28 de diciembre de 2012

Creando el arma definitiva

Hace ya un tiempo volvió a mi poder un pequeño capricho que compre al poco de salir al mercado los netbooks. Se trata de un eee pc de Asus. En este post explico como hacer interesante este artilugio de la ciencia en cuanto a diversión y pentest.
No es un ordenador con mucha capacidad, como cualquier notebook y el hecho de ser una novedad de género cuando lo adquirí tampoco ayuda. Un procesador Intel Atom con 1 Gb de ram DDR2 no es gran cosa, menos aún cuando nos damos cuenta que su disco duro apenas cuenta con 20 Gb.
Vale, no podremos tirar de John the ripper a velocidad luz pero se me ocurrió diseñar un discreto dispositivo con la intención de entrar en redes locales mal protegidas y divertirme un poco.

Entonces no sabía que drivers usaría este notebook así que con la intención de evitar demasiados dolores de cabeza y preocupado por la lentitud que desarrollaría un escritorio KDE opté por ubuntu en su versión Xfce que nunca había probado. Descargué e instalé Xubuntu. Rápido a la par que útil y eficaz, en principio ningún problema a la hora de reconocer el hardware. El siguiente paso quedaba en seleccionar las herramientas precisas a la hora de dirigir el pentest hacia redes locales por wifi, principalmente. La primera herramienta estaba clara: aircrack-ng, excelente sniffer y crackeador de redes wifi que me ayudaría a olisquear las redes disponibles a mi alrededor sobre las que intentar acceder. Si el cifrado de la red a invadir es WEP no habrá problema, con suerte y clientes conectados tendría acceso a ella en lo que tardo en hacer un solitario. ¿Pero y si tenemos WPA? La cosa es mas chunga... ¿Quizá vulnerabilidades el WPS? Otro programita a añadir: Reaver Claro está que esto ya no sería momentáneo... Reaver puede tardar desde un par de minutos hasta un día completo en realizar con éxito un ataque de fuerza bruta sobre los 10 dígitos que me permitirían el acceso a WPA pero quizá pueda darle uso. ¿Más opciones para WPA? Desde luego. Busqué por la red varios programillas de diccionario para ESSID tipo WLAN_xxxx ONO_xxxx Jazztelxxx que generan un pequeño diccionario de claves de fábrica en función de la BSSID y la ESSID. Suelen ser efectivos si te encuentras con redes de este tipo. ¿Y una vez tenemos acceso a la red? Pues toca recoger información tal como nodos conectados IPs de los mismos, puertas de enlace, servidores DNS... Para esto indudablemente nmap y yo, que soy un comodón de aquí te espero, decido descargar también su GUI zenmap. Además en este mismo ámbito me busco otro sniffer que automatiza los ataques MITM como es ettercap y una bonita y manejable herramienta (otro sniffer para captar paquetes) sencilla y clara WireShark. Quizá ahora mismo me deje alguna cosilla pero de momento vale. Bien, tenemos acceso y ciertos nodos identificados con sus sistemas operativos, puertos y servicios funcionando, conocemos a nuestras posibles víctimas pero para conocerlas bien debemos conocer las vulnerabilidades de los servicios que utilizan y para ello, vendría bien un escaner de vulnerabilidades como es openVAS para analizar los servicios que corren en nuestras víctimas buscando sus vulnerabilidades documentadas. ¿Y si encontramos una que pasa? Pues que necesitaremos nuestro metasploit para automatizar los ataques y dirigir nuestros payloads además de para preparar ataques de ingeniería social, lo que me recuerda... SET no puede faltar para hacernos más fácil esta tarea ya que cuando no hay nada que explotar (suele ser la mayoría de las veces) SET y metasploit pueden trabajar juntos para falsear un servidor DHCP y redirigir a la incauta víctima a nuestro terreno o crear ataques java, DNS poisoning... Me quedan aún más cosas en el tintero como puede ser el SSLstrip (para leer trafico encriptado en un ataque MITM, algún fuzzer, cryptcat, hydra, herramientas forenses y mas historias que luego se van añadiendo con el uso, pero es una base decente para divertirse con un notebook de pequeñas prestaciones.
A quienes les suene todo esto a chino, no desesperen. Con el tiempo profundizaremos en cada herramienta y en cómo lograr ataques en LAN.
Hasta otra!

Instalando Ubuntu

-->
Otro blog más de informática... ¿Por qué no?

La verdad es que quizá halla ya demasiados, pero por otra parte veo la necesidad de compartir parte del conocimiento que he ido adquiriendo estos años sumergido entre bits y libros. Con éste blog intentaré fomentar la curiosidad, tanto la mía como la del lector en lo referente a la administración de sistemas Linux, networking, programación y seguridad. Es una forma de sentirme ocupado y ejercitar lo aprendido mostrando al lector guías y proyectos que irán surgiendo desde aquí con la mayor ilusión y esperanza de que a alguien puedan serle útiles.

¿Como empezar? Pues así a primera idea ¿Qué mejor forma de comenzar que enseñar a ese usuario de Windows a adentrarse en el maravilloso mundo del software libre? Ete aquí una guía de instalación de Ubuntu desde 0.

Ubuntu es un sistema operativo, como puede serlo Windows, pero con un núcleo Linux. Está basado a su vez en otra distribución de Linux llamada Debian. Para más información se puede consultar la Wikipedia: http://es.wikipedia.org/wiki/Ubuntu o bien la web de Ubuntu en español: http://www.ubuntu-es.org/ en la que además encontraremos foros de ayuda y documentación en castellano.

Sin andarnos más por las ramas, descargamos la última versión de Ubuntu desde: http://www.ubuntu.com/download/desktop/thank-you?distro=desktop&bits=32&release=latest

Se abrirá un cuadro de descarga para un fichero .iso de unos 750 mb. La descarga durará aproximadamente unos 25 ó 30 minutos a una velocidad de 500 kb/s.

 
-->
Una vez descargado el paso siguiente es grabar dicha imagen iso en un cd o bien un pen drive (pincho usb) utilizando nero o algún otro programa de grabación.

Cuando tengamos el cd o usb hay que reiniciar la máquina para que cargue el arranque desde el cd o usb, creo que en Windows, si introducimos el cd de ubuntu, un menú nos dará la opción de instalar y probar ubuntu y nos pedirá un reinicio automatizando el proceso pero  es posible que en algún ordenador debamos hacer algún cambio en la BIOS para cambiar las prioridades de arranque (Se suele acceder a la BIOS en la primera pantalla del arranque del pc presionando F2 o la tecla supr dependiendo el modelo, el menú suele ser un fondo azul en el que buscaremos algo así como device priority o boot manager, quizá en el menú avanced options, depende de modelo y fabricante de la placa base de tu ordenador) poniendo como primer dispostivo el lector de cd o bien el usb.

En este ejemplo usaré para la instalación una máquina virtual de Vmware pero el procedimiento viene a ser el mismo.


-->
Una vez arrancado el cd veremos una pantalla de bienvenida. Lo primero, elegir el idioma (esto nos facilitara mucho las cosas) con F2 entraremos al menu en el que seleccionaremos el español y despues escogeremos la opción “Instalar Ubuntu”

En los pasos siguientes veremos un entorno gráfico en el que podremos usar el ratón y todo será altamente intuitivo, en principio bastará con seguir las instrucciones que no da el instalador, no obstante me gustaría aclarar ciertos puntos algo mas técnicos. En la segunda pantalla nos da la opción de instalar software de terceros. Esto es que ubuntu utiliza también software de licencias privativas tales como plugins de Adobe o drivers de Nvidia por citar algunos. Este software sigue siendo gratuito e instalarlo nos evitará posibles dolores de cabeza a la hora de configurar determinados dispositivos tales como, por ejemplo, tarjetas wifi o nos facilitará ver la mayoría de los videos en el navegador. Si el uso de licencias openSource (código abierto) no nos preocupa demasiado o bien somos novatos con sistemas Linux, es recomendable marcar esta opción.

 Lo siguiente será elegir dónde y cómo instalar nuestro nuevo sistema operativo. El instalador nos da varias opciones dependiendo de lo que encuentre en nuestro disco duro. Podremos elegir entre instalarlo junto a Windows u otros sistemas operativos o bien eliminar por completo todo un disco duro y usar únicamente Ubuntu como sistema único. La tercera opción es la avanzada, en la que podremos manipular nuestros discos creando particiones y eligiendo manualmente el tamaño y las zonas donde instalar nuestro sistema. Para no complicar las cosas y entendiendo que el lector no está preparado para confiar totalmente en un nuevo sistema, diferente a Windows recomiendo seleccionar la primera opción y dejar que el instalador se ocupe de todo. En futuras entradas escribiré como funciona el sistema de particionado y los discos duros en entornos Linux. De momento dejaremos automática esta opción.
El siguiente menu nos dara la opción de elegir el espacio que asignaremos a Ubuntu. Dependiendo del espacio disponible en nuestro disco duro recomiendo un mínimo de 20 Gb y un máximo de 80 si sólo pretendemos iniciarnos con este sistema. Podremos elegirlo moviendo con el cursor el espacio entre las dos particiones. Ubuntu creará una nueva partición en formato Ext4 usando el espacio libre en la partición NTFS de Windows.
A partir de este momento comenzará la instalación. No obstante se nos pedirá varios parámetros como la zona horaria, la distribución del teclado y el nombre y contraseña del equipo y de inicio de sesión.
 La instalación finalizará y nos pedirá un reinicio del equipo tras el cual aparecerá una pantalla negra que nos preguntará que sistema queremos iniciar. Si seleccionamos nuestro recien instalado ubuntu arrancara la partición de Linux requiriéndonos el inicio de sesión y podremos ver nuestro recién instalado Ubuntu.

Por hoy es todo. Sentios libres de probar y familiarizaros con este sistema operativo. Los Próximos post los dedicaré a iniciarnos con este entorno.
Hasta la próxima