No lo he probado, pero es muy interesante.
Fuente: CasiDiablo
Algunas veces abuso de este espacio y pongo cosas que quizás a nadie le interese, pero la verdad es que, cuando no escribo lo que aprendo, se me olvida muy rápido. Aquí va uno de esos tutoriales raros, espero no moleste al lector habitual.
El objetivo de este mini-auto-how-to es explicar paso a paso cómo instalar los drivers iwlagn para, en mi caso, una tarjeta Intel Wireles 4965AGN, con los parches que habiliten la inyección de paquetes, lo cual es útil/necesario cuando estamos auditando redes inalámbricas y descifrando claves WEP o WPA(2).
En mi caso lo he hecho sobre Gentoo, corriendo el kernel Linux 2.6.27. Y aquí explico un par de cosas, para hacer este tutorial compatible con otras distros:
- Cuando se trabaja con Gentoo, es muy común tener el código fuente del kernel de Linux descargado puesto que, en el momento de la instalación, se compila manualmente. En otras distros, lo más probable es que no lo tengas. En cualquier caso, la mejor manera de disponer de las fuentes de Linux es: en Gentoo ejecutar el comando
emerge gentoo-sources
; en otras distros, descargar las fuentes directamente de la página oficial, copiar y descomprimir el archivo en la carpeta /usr/src. - Puesto que vamos a recompilar los drivers, y probablemente el kernel, es necesario contar con las herramientas básicas de desarrollo (gcc, make, etcétera).
1. Preparar el kernel
Antes de poder instalar los drivers, es necesario que el kernel se encuentre en ciertas condiciones. Así que vamos a la carpeta donde tengamos el código fuente del kernel, y ejecutamos make menuconfig
.
make menuconfig
te proporciona un menú de configuración de las opciones del kernel de Linux. Estas opciones determinan qué cosas puede hacer o no nuestro kernel. En este caso necesitamos algunas opciones de la configuración de las redes Wireless. Ten en cuenta que las opciones que marcamos con un asterisco (*) significan que esas características serán incluidas internamente dentro del kernel (built-in), mientras que las que tienen una eme (M) significan que serán compiladas como módulos.En este caso, necesitamos que la parte de configuración de las redes Wireless sea así:
Networking -> Wireless :
[M] Improved wireless configuration API
[*] nl80211 new netlink interface support
[*] Wireless extensions
[M] Generic IEEE 802.11 Networking Stack (mac80211)
[M] Generic IEEE 802.11 Networking Stack (DEPRECATED)
[M] IEEE 802.11 WEP encryption (802.1x)
[M] IEEE 802.11i CCMP support
[M] IEEE 802.11i TKIP encryption
[M] Software MAC add-on to the IEEE 802.11 networking stack
Esto puede variar entre versiones del kernel; en mi caso la configuración de mi kernel luce así:
Además, en la sección de dispositivos Wireless, por el modelo de la tarjeta, lo tengo configurado así:
Una vez hayamos configurado adecuadamente nuestro kernel, basta con salir y hacer lo siguiente:
make modules_install <- instalamos los modulos
cp arch/x86/boot/bzImage /boor/el-nombre-de-tu-kernel <- copiamos la imagen del kernel al sector del boot
reboot <- reiniciamos
Importante: los pasos anteriores debes realizarlo solamente si sabes lo que haces. Personalmente, luego de hacer este tipo de cosas, tengo que reinstalar los controladores de mi tarjeta NVIDIA, puesto que en la re-instalación de los módulos la configuración anterior se pierde. NO me hago responsable de cualquier daño o problema que puedas tener siguiendo esta guía, aunque te ayudaré con gusto si eso pasa.
La verdad esta primera parte del tutorial no la debí haber explicado tan detalladamente, pero así soy. En realidad hubiera bastado con decir: para el siguiente paso debes tener el kernel correctamente configurado y funcionando. Pero bueno, una ayuda de más no sobra.
2. Compilando los drivers
Explicación: de nuevo, no debería explicar este tipo de cosas pero bueno, soy un tipo de buen corazón y me hubiera gustado que alguien me explicara cuando estaba aprendiendo. La cosa es que los drivers que se incluyen en el kernel, y los que puedes conseguir en linuxwireless.org, vienen escritos para funcionar «normalmente». En este caso, puesto que necesitamos inyectar tráfico, es necesario modificarlos un poco. Algunas hackers muy amablemente proporcionan parches que pueden aplicarse fácilmente; el problema es que dichos parches son difíciles de mantener ya que es necesario hacer uno nuevo cada vez que en linuxwireless.org liberen una nueva versión de los drivers.
El procedimiento normal sería el siguiente:
- Descargar los drivers adecuados de http://www.linuxwireless.org/en/users/Download. Debes buscar la versión compat-wireless-2.6, si usas el kernel 2.6.xx como yo.
- Descargar los parches para mac80211, de esta página: http://patches.aircrack-ng.org/. En mi caso descargué el parche mac80211_2.6.27_frag+ack_v2.patch, puesto que es el que le sirve a mi kernel 2.6.27.
- Aplicar los parches.
- Compilar e instalar.
Todo ello se puede hacer ejecutando los siguientes comandos:
tar xjf compat-wireless-*
cd compat-wireless-2009-*
wget http://patches.aircrack-ng.org/mac80211_2.6.27_frag+ack_v2.patch
patch -p1 < mac80211_2.6.27_frag+ack_v2.patch
make
make install
make unload; rmmod ssb mac80211 cfg80211
make load
echo options iwlagn swcrypto=1 >> /etc/modprobe.d/options
Todo parece muy sencillo; si te funciona de una vez, ya puedes saltar a la siguiente sección. El problema es que, como comentaba en la anterior explicación, algunas veces los parches no están lo suficientemente actualizados, y podrían no funcionar. Así que muchas veces, nos toca aplicarlos manualmente. Para ello examinamos el contenido del parche (cat mac80211_2.6.27_frag+ack_v2.patch
):
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index 0855cac..221bed6 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -630,6 +630,13 @@ ieee80211_tx_h_sequence(struct ieee80211_tx_data *tx)
int tid;
/* only for injected frames */
+ if (unlikely((info->flags & IEEE80211_TX_CTL_INJECTED) &&
+ !(tx->sdata->u.mntr_flags & MONITOR_FLAG_COOK_FRAMES))) {
+ if (!ieee80211_has_morefrags(hdr->frame_control))
+ info->flags |= IEEE80211_TX_CTL_NO_ACK;
+ return TX_CONTINUE;
+ }
+
if (unlikely(ieee80211_is_ctl(hdr->frame_control)))
return TX_CONTINUE;
Un poquito enrredado ¿verdad? Pero básicamente significa lo siguiente:
- Se debe modificar el archivo a/net/mac80211/tx.c
- La modificación se realizará en la función ieee80211_tx_h_sequence(struct ieee80211_tx_data *tx)
- Debemos añadir una porción de código entre las líneas int tid; y if (unlikely(ieee80211_is_ctl(hdr->frame_control)))
Eso lo podemos hacer con un simple editor de texto. Aclaro: al momento de escribir esta guía, el parche luce tal como lo puse arriba; quizás cuando leas esto ya habrá cambiado, por lo tanto debes adaptarlo a tus necesidades.
3. Inyectando
En esta sección vamos a probar si, una vez que hayamos instalado los drives, podemos realizar una inyección correctamente. Cabe aclarar que es necesario tener instalado la suite de programas de aircrack-ng (si es posible, la últimaversión 1.0 rc1). Ahora debemos poner nuestra interfaz de red inalámbrica en modo Monitor:
Una vez hecho esto, ejecutamos el siguiente comando para probar la inyección:
O mejor aún:
Donde, XXXX es el ESSID del Acces Point con el que estamos practicando, YY:YY:YY:YY:YY:YY es la MAC Address (BSSID) del Access Point. Si lo hacemos así nos aseguramos de inyectar paquetes solo al Access Point indicado (no queremos hacer nada con el AP del vecino), además que es mucho más rápido.
¿Cómo obtener el ESSID y BSSID del AP? Lo más sencillo es que, antes de poner la tarjeta en modo Monitor, ejecutemos el comando iwlist wlan0 scan
, que nos proporciona información acerca de todos los AP al alcance. También podrías ejecutar el comando airodump-ng wlan0
para realizar un escanéo básico.
En todo caso, cuando todo resultó bien, veremos algo como esto:
09:23:35 Waiting for beacon frame (BSSID: YY:YY:YY:YY:YY:YY) on channel 9
09:23:35 Trying broadcast probe requests...
09:23:35 Injection is working!
09:23:37 Found 1 AP
09:23:37 Trying directed probe requests...
09:23:37 YY:YY:YY:YY:YY:YY - channel: 9 - 'XXXX'
09:23:39 Ping (min/avg/max): 1.827ms/68.145ms/111.610ms Power: 33.73
09:23:39 30/30: 100%
Información relevante y sitios de interes
- Página oficial de aircrack-ng
- Pagina oficial del proyecto Linux Wireless
- Guía de instalación de drivers iwlagn (muy desactualizada)
- Excelente comunidad de expertos en Seguridad Wireless en Español
- Si tienes problemas, tal vez necesites instalar el paquete iw
Nota: para esta entrada, NO cuentan los incentivo$ por corregir errores ortográficos. No he tenido tiempo para leer el documento al menos una vez, por lo que de seguro debe tener errores. Claro, si quieres puedes reportarlos
Hola, solo una nota para los usuarios de Ubuntu Intrepid ibex:
Si no me equivoco, el kernel de Ubuntu Intrepid ya viene listo para la inclusion del parche, por lo que basicamente hay que hacer la parte 2: «compilando los drivers»
Saludos
hola muy buenas ya se que escribo un poco tarde pero es que casi todo lo que as puesto me suena a chino veras yo tengo una intel 5100 agn y supongo que los pasos a seguir son los mismos yo con el commview saco las claves wep pero para las wpa hay que hacer una desasociacion y no es compatible pero viendo tu tutorial crreo que se puede hacer de esa manera. mi peticion es que ojala tuvieras un video tutorial de como se hace de la forma que as puesto aki xq ahi que ejecutar tantos comandos que no se ni que acer y no me fio vaya que me cepiye el pc gracias de antemano