
Un script de Python para ofuscar redes inalámbricas
Un script de Python para ofuscar redes inalámbricas
''' Advertencia: no soy programador de oficio, ni me consideraría uno.
La lista de SSID comunes se obtuvo de https://wigle.net/gps/gps/Stat La lista de fabricantes OUI se extrajo de http://standards.ieee.org/develop/regauth/oui/oui.txt para fabricantes conocidos (netgear, cisco, linksys, d-link, atheros, ralink, apple)
Esta idea se creó a partir de FakeAP de Black Alchemy http://www.blackalchemy.to/project/fakeap/ y de airraid de Pettinger http://www.pettingers.org/code/airraid.html Parte de la lógica para analizar la información requerida de los paquetes se tomó de Leandro Meiners ([email protected]), del script Power-Saving DoS de Core Security Technology
La principal diferencia entre estas implementaciones son los requisitos de hardware y la forma en que se genera el punto de acceso falso.
FakeAP genera puntos de acceso falsos creando un punto de acceso usando iw e ifconfig con una tarjeta inalámbrica basada en PRISM. El problema es que los drivers PRISM están prácticamente obsoletos en la mayoría de las distros modernas. Incluso con un driver funcional y una tarjeta PRISM, no pude lograr que FakeAP funcionara de inmediato.
AirRaid es casi idéntico a cómo funciona FakeAP. Sin embargo, está orientado a tarjetas basadas en Atheros y utiliza los drivers y utilidades madwifi para crear puntos de acceso falsos. El proyecto Madwifi parece estar decayendo en favor de los drivers ath5/9k. Tal como venía, AirRaid ya no funcionaba con mi tarjeta atheros.
Otro problema de estas implementaciones era la velocidad. Cada vez que se creaba un punto de acceso falso, el dispositivo inalámbrico debía apagarse y reconfigurarse.
Esta implementación difiere en varios aspectos. No es totalmente específica de hardware como FakeAP o AirRaid. En lugar de crear un punto de acceso falso cambiando la configuración del adaptador inalámbrico y teniendo que restablecer y reconfigurar el dispositivo, aprovecha las tarjetas inalámbricas que soportan inyección de paquetes.
Esto ayuda en varios aspectos. Soporta muchos más adaptadores, así como muchos drivers modernos que soportan inyección de paquetes y modo monitor (rtl8187, ath5k, ath9k, la mayoría de ralink, etc...). En resumen, cualquier dispositivo cuyos drivers permitan que un adaptador funcione en modo monitor mediante airmon-ng puede usar esto. Debido a que utiliza inyección de paquetes en lugar de crear realmente un punto de acceso, inyecta paquetes que parecen provenir de puntos de acceso reales.
Este es mi primer proyecto en python, por lo que es probable que haya fallos, ineficiencias y posibles formas de detectar cuáles APs son falsos. Planeo mejorarlo con el tiempo a medida que se descubran problemas y se soliciten mejoras.
Puede que se necesiten menos que estos requisitos para que funcione, pero sé que funcionan con lo siguiente:
Tarjetas basadas en Atheros que usan ath5k y ath9k Chipsets Realtek 8187 (es decir, Alfa AWUS 036H) La mayoría de chipsets Ralink
Esto fue programado en python 2.7 con Scapy 2.2.0. Realmente no tengo un dominio firme de Scapy, ya que su documentación es algo escasa, así que si algo está hecho incorrectamente, por favor házmelo saber. Se utilizó airmon-ng para crear las interfaces de monitor, lo que permite la inyección de paquetes.
También soy consciente de que este texto es más largo que el código real.
Para ejecutar:
Requiere python 2.7, Scapy 2.2.0 y una tarjeta inalámbrica con drivers que soporten inyección de paquetes
#####ADVERTENCIA DE VERSIÓN PRELIMINAR#####
Prácticamente no hay registro para esto, ya que en este momento no conozco bien scapy, y cuando envía tramas de baliza y respuestas a sondas, envía "Sent 1 packets" al terminal. Cuando enviamos varios paquetes por segundo, esto inunda tu pantalla con "Sent 1 packets". Actualmente estoy trabajando para encontrar una forma de solucionar esto y ofrecer un registro más útil.
Asegúrate de tener una NIC inalámbrica en modo monitor con capacidades de inyección de paquetes. Para ello, utilizo el airmon-ng de la suite aircrack-ng:
airmon-ng start <interface>
Lo cual debería indicarte la nueva interfaz virtual de monitoreo que se ha creado (algo como mon 0)
FuzzAP.py requiere cuatro argumentos obligatorios. El primer argumento es la interfaz a usar, el segundo es el número de puntos de acceso falsos a generar, el tercero es un archivo de OUIs, el cuarto es un archivo lleno de SSIDs
sudo python fuzzap.py <interface> <number of APs> <OUI file> <ssid file>
Si quieres ejecutarlo fuera del repositorio:
sudo python fuzzap.py <interface> <number of APs> common.txt ssid.txt
Así se ve desde la perspectiva de un cliente: http://imgur.com/QsoFP1a
ESTE SOFTWARE ES PROPORCIONADO POR LOS TITULARES DE LOS DERECHOS DE AUTOR Y LOS COLABORADORES "TAL CUAL" Y SE RECHAZAN TODAS LAS GARANTÍAS EXPRESAS O IMPLÍCITAS, INCLUIDAS, ENTRE OTRAS, LAS GARANTÍAS IMPLÍCITAS DE COMERCIABILIDAD E IDONEIDAD PARA UN FIN DETERMINADO. EN NINGÚN CASO SE SERÁ RESPONSABLE POR NINGÚN DAÑO DIRECTO, INDIRECTO, INCIDENTAL, ESPECIAL, EJEMPLAR O CONSECUENTE (INCLUIDOS, ENTRE OTROS, LA ADQUISICIÓN DE BIENES O SERVICIOS SUSTITUTOS; LA PÉRDIDA DE USO, DATOS O BENEFICIOS; O LA INTERRUPCIÓN DEL NEGOCIO), CUALQUIERA QUE SEA SU CAUSA Y BAJO CUALQUIER TEORÍA DE RESPONSABILIDAD, YA SEA CONTRACTUAL, RESPONSABILIDAD ESTRICTA O AGRAVIO (INCLUIDA LA NEGLIGENCIA U OTRA), QUE SURJA DE CUALQUIER MANERA DEL USO DE ESTE SOFTWARE, INCLUSO SI SE HA ADVERTIDO DE LA POSIBILIDAD DE TALES DAÑOS. '''
PENDIENTES:
Tráfico falso entre 'APs' y 'clientes' Salto de canal