Les quería comentar sobre un desafío que se hizo en el que tenías que asociarte a una red wifi para luego pwnear el router (avancé muy poco). Si alguno que me lee pudo avanzar más que yo, me gustaría que comentara que probó, que averiguó y que consiguió.
Resumen sobre el desafío: (lo poco que avancé)
Había que meterse a una red con SSID: EkospaceLab, con WPA PSK sin WPS.
Había un beacon flood que lanzaba muchos beacon con distintos SSID en el aire (más de 100). Algunos de los SSID estaban en base64, uno de los SSID en base64 decodeados era la clave de EkospaceLab. Una vez adentro te encontrás en una red con IPv4 desabilitado, teniendo la posibilidad de comunicarte solo a través de IPv6. Luego de escanear el router se observan 3 puertos evidentemente protegidos con tcpwrapper. Escaneo:
Código:
Ethical@Sk$ nmap -6 fe80::fad1:11ff:fe9f:f9b2 -sV
Starting Nmap 7.50 ( https://nmap.org ) at 2017-09-29 14:31 -03
Nmap scan report for fe80::fad1:11ff:fe9f:f9b2
Host is up (0.0030s latency).
Not shown: 997 closed ports
PORT STATE SERVICE VERSION
22/tcp open tcpwrapped
53/tcp open tcpwrapped
80/tcp open tcpwrapped
MAC Address: F8:D1:11:9F:F9:B2 (Tp-link Technologies)
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 96.60 seconds
Llegué hasta ahí porque no me quería perder muchas charlas. Pero quedaba todo lo más pesado, bypassear tcpwrapped y ver como comunicarse con los puertos hasta encontrar el punto debil o lograr controlar el AP.
Mi experiencia con el desafío:
El primer día el organizador del desafío me había dicho que había una red oculta a la que me tenía que meter y que había otras redes que me podían dar la información para asociarme. Como el primer día no llevé la notebook, a la noche cuando volví a mi casa me puse a repasar sobre las redes con SSID oculto, y recordé que al mandar paquetes deauth para desasociar a un cliente lo obligás a mandar luego un PROBE request que incluye el SSID en texto plano. Pero como necesitaba un cliente activo yo pense que tal vez no iba a haber nadie conectado para deautenticar, asi que investigue un poco y vi que se puede hacer un ataque de diccioanrio/fuerza bruta mandando probes con SSID's distintos hasta dar con el correcto, cuando se manda un PROBE request con el SSID correcto se recibe un PROBE response. De lo contrario el AP ignora el paquete, de ésta forma podemos descubrir el SSID sin el cliente conectado. Fui al segundo día con la notebook con ésto en la cabeza, y al segundo dia la red había dejado de ser oculta y su SSID era EkospaceLab, con WPA/PSK. Supongo que para evitar conseguir el SSID tan facilmente si otro participante del desafío lograba meterse y desautenticandolo...
Lo primero que probé fue hacer un airodump de la red para ver las redes que había, luego un amigo se fijo las redes en su celular y había detectado otras que yo no. Entonces terminé llegando a la conclusión de que las redes que mi amigo podía ver eran parte de un beacon flood (posiblemente con mdk3), y también que el airodump no muestra las redes solo fijandose en los beacon frames, sino que tambien envía PROBE request a la red para verificar que exista antes de mostrarla. Le pedí a mi amigo que me fuera dictando los SSIDs que veia para agregarlos a un diccionario e intentar crackear el hash obtenido del wpa handshake. no hubo caso. Mi amigo me preguntó si había una forma para obtener todos los SSIDs con un comando desde linux. Le dije que investigara, y encontró una solución muy rápido usando iw acompañado de sed y grep hasta quedar solo la información que buscabamos (los SSIDs). Ésta vez, con todos los SSIDs y no solo los pocos que me había dictado antes, probamos crackearlos. Y nada... Después le cuento lo que intentamos a otro chico que estaba haciendo el desafío y me dice que la clave iba a estar codificada, que revisara bien los SSIDs. Con eso volví a mi notebook diciendome base64 para mis adentros. Y si, había usado al iw y guardado en un archivo todos los SSIDs para mandarlo directamente al aircrack sin haber observado todas las SSID con mis ojos. Algunos de los SSIDs estaban en base64, asi que las decodeamos y probamos las passwords decodeadas que eran ekoparty, ekolab007 creadpag548, y ekolab. Ninguna funciono, el aircrack no hayo la contraseña. El segundo día solo nos habíamos quedado un rato, asi que volvimos al tercer día. Dos amigos a la noche hicieron un script que detectara constantemente las redes con un '=' y decodearlas con la intención de poder captar algun SSID que apareciera una vez cada mucho tiempo. Luego chusmenado bien había otros SSID con el formato parecido pero sin el '=', asi que procedimos a decodearlas, y obtuvimos otras 3 palabras: martin, agente007 y ekoparty007. Con ésto aprendí que no es necesario que tenga '=' para estar en base64. Luego utilizamos el aircrack con éstas 3 palabras, y dimos con que agente007 era la clave. Luego trate de meterme con esa contraseña con el celular y al no conseguirlo, le hablé al organizador del desafío y me dijo que el AP no estaba conectado a internet, y que tenía que conectarme de una forma especial a través de linux. Probé conectandome simplemente desde la interfaz gráfica que te da los wifis y no pude conectarme. Antes de conectarme se me colgó el sistema un cachito, supongo que producto de haber tantos beacon frames en el aire. Luego intenté conectarme con la consola a través de iwconfig y no lo conseguí, me saltó un error (creo que por los drivers de la tarjeta wifi integrada). Pasó el tiempo y me puse a analizar el tráfico wifi tratando de encontrar algo, alguna ayuda... Me quede pensando "conectarme de una forma especial", y no se a que se refería el organizador... Despúes recordé que existian los servidores radius (nunca investigue como funcionan pero solo había oirdo hablar de ellos), pero al ver que era PSK, pense que sería imposible que hubiera un radius. Y asi paso el tiempo, y casi resignado, intento de vuelta con el celular, y me pongo a ver los paquetes de autenticacion, y pareciera haberse logrado autenticar perfectamente. Luego volví a insistir y tratar de conectarme a través de la interfaz gráfica de mi linux y lo logre... La verdad no entiendo por que antes no pude y después si. Perdí más de una hora, y no hubo ninguna forma especial ni nada de conectarme, y es un misterio que no pude resolver, porque habiendolo probado antes no pude y después si.
Luego de conectarme, hago un ifconfig wlan0 y noto que no había ninguna linea que dijera ipv4, pero si otras que decían ipv6. Solo podía conectarme a través de IPv6... Entonces me puse a repasar un poco sobre ésto, e intente escanear todo el link local con nmap, pero no encontré ningún host en toda la red, ni al router. Probé con el comando route y no me devolvía nada, terminé escaneando con wireshark, y vi unas consultas DNS, y yo de lo dormido que estaba no me di cuenta que la IP del router era el destino de la consulta DNS (pense que del router solo era la mac de la capa inferior y el servidor DNS estaría en otro lado, pero estaba muy equivocado, ya que el prefijo era de link local, esto tambien por jamas haber auditando en IPv6), y lo peor fue que si quería la IPv6 del router no haber hecho un man route y haber notado que el comando se usaba con el parámetro -6 en éste caso. Bueno, en fin luego escanié la IPv6 del router con nmap -sV y saltaron 3 puertos abiertos con tcpwrapped. Como en 10 minutos empezaba una charla muuy interesante sobre hackear con subtitulos, me fui y la deje hasta ahi. No pude avanzar prácticamente nada, entre lo dormido, incomodo y por los problemas técnicos que tuvimos, pero bueno, aprendí varias cosas por ser mi primer desafío. Ahrora en casa estaba leyendo sobre tcp wrapper, herramienta que jamás había utilizado. Hace poco aprendí sobre snort, iptables, y selinux, pero tcp wrapper es otra herramienta de hardening importante que no estaba teniendo en cuenta. Lástima que no tuve más tiempo para insistir, ya que la parte interesante recién empezaba, había que probar comunicarse con nc con cada puerto, ver como evitar las reglas de tcp wrapper, pero bueno, supongo que lo que quedaba del desafío era bastante complicado.