Estimados amigos de Inseguros!!!
Llevamos unos artículos hablando de la inseguridad de algunos dispositivos conectados a Internet como son surtidores de gasolina. El artículo de la
subida de precios de gasolina ha tenido bastante éxito. Gracias.
El anterior artículo era un recopilatorio y algunos IoC´s sobre la famosa
botnet Mirai y su repercusión mediática debido al volumen de sus ataques y a la característica de equipos infectados: IoT
Como todos sabéis,
soy de Murcia Tengo miles de motivos por los que ahorrar tiempo en trabajo para disfrutar lo que me pasa por la vida. Por este motivo, he pensado crear una botnet, una red de equipos que sirvan para el propósito que se perseguía con Mirai, pero voy a gastar mucho menos tiempo, muchiiiiisimo menos tiempo del que los creadores invirtieron en su idea original. Voy a gastar 10 minutos en programar, 20 en escribir esto y el resto me pego una juerga xD.
Aparte, quiero demostrar como el típico admin/admin de toda la vida puede tener efectos globales, más allá de un secuestro DNS o un sniffing.
Vamos a ponernos manos a la obra.
El concepto es sencillo, quiero ponerme un objetivo, un equipo, una dirección IP en Internet, y voy a dedicarle un ataque de DDOS de lo más variado mediante una red de equipos comprometidos.
Cuando me puse a pensar en el concepto, pensé, si tenemos los routers de los ISP típicos con las contraseñas por defecto, para que liarme con firmwares, reversing, vulnerabilidades y demás, voy a usar lo que tengo. Lo que se denomina SOHO (Small/Home offices)
Realizando una búsqueda en Shodan veo como hay un tipo de router que empleo una empresa en Murcia, y por todo el mundo !!! y me descargo un listado.
En España aparecen unos 10.000 equipos, de los que calculo que el 10% tendrán cambiada la clave por defecto. Yo me centro en los que pertenecen al ASN del operador de mi ciudad que estoy investigando.
Teniendo una lista de equipos, en los que el usuario/password por defecto casi seguro que está disponible, pienso en que puedo aprovechar.
En los aparatos aparecen dos opciones que me interesan, la sincronización horaria y un test PING. Mediante la primera puedo hacer peticiones constantemente ha un servidor NTP de destino y mediante el ping, con un tamaño alto de paquete, puedo realizar un ICMP flood. El ping de la muerte !!!!
Si uno los dos, desde MUCHOS equipos contra un sistema, quizás consiga denegar el servicio...
Las opciones mencionadas son:
Una de las cosas que más me llama la atención es que el logging o en nivel de registro de eventos de estos cacharros es bajo, muy bajo, no refleja LOGIN, por lo que no debería preocuparme por dejar rastro de mis peticiones.
Ahora es el turno de buscar un CSRF (Cross Site Request Forgery) aprovechar una sesión iniciada en un navegador para ejecutar comando remotos en otro equipo. La cuestión aquí fue mucho más fácil.
Enganchas un proxy inverso como Burp entre tu máquina y la web. Monitorizas los request que haces, como los responses de la web. Haces graficamente lo que digo, configuras un ping y un "actualiza tiempo" y grabas la petición.
Qué pasará si me voy a Curl y ejecuto este mismo comando que he grabado con Burp? Pues que funciona perfectamente.
Como puedes ver, la ip DESTINO DEL ATAQUE empieza por 213. y el router que realiza la petición es el que empieza por 83 y acaba en 208. Esta sería la petición NTP.
No tiene sentido que reproduzca el comando que hace el ICMP para que cualquier persona haga el mal.
Realmente he tenido que observar la petición, y ver como pasar usuario y password con curl, usar una cookie para un javascript que redirige hacia la url y habilitar un Referer básico que el fabricante tiene como medida de seguridad :-)
Ahora simplemente me hago una lista. ¿Como? pues por ejemplo uso la información de Shodan para Murcia, o puedo usar el direccionamiento del ASN mediante la web
http://ipinfo.io/ hago un nmap al puerto y hago un grep awk para dejar solo las direcciones ip que me interesan.
Con esa lista de direcciones, me hago un script en bash que ejecute los comandos conforme lee de la web.
Como se aprecia en la imagen, todos los equipos con el puerto abierto y el usuario/password por defecto, emiten una solicitud NTP desde el rango que medio se ve, un /24 que empieza por 84.
Ahora mismo tengo unos 4.000 equipos, lo que algo de ddos hace.
En cada ejecución de curl mete los dos comandos, acabo el comando con un & y se ejecuta el bucle.
Esto no tiene mucha magia, y quizás, bueno seguro, programado en python con varios hilos y mucha más elegancia, conseguiría resultados de denegación mucho más óptimos.
Podemos mejorar el script y hacer una lista mucho mas potente con otros fabricantes o modelos.
Podríamos usar la lógica y subirlo en un php en cualquier servidor hackeable y lanzarlo con un javascript o iframe en la web. De esta manera tendríamos un C&C web, en la nube :-)
Podríamos aprovechar esta lógica para realizar un cambio masivo de DNS primario, y utilizar los 10.000 equipos para consultar el DNS de una empresa... se pueden hacer muchas cosas, pero lo que pongo en relevancia es que casi todo, a tiro de piedra, sin necesidad de mucha complicación, solo un poco de mala fe y algo de Google
Espero que os haya gustado el artículo, me voy por Murcia !!!!!