28 septiembre 2013

Portspoof, o cómo atacar al atacante




¿Cuántas veces, revisando los logs de nuestros servidores, vemos intentos de conexión SSH, escaneos completos de sistema o escaneos web? Dado lo que es la justicia en Internet, ¿cuántas veces hemos cogido una IP que nos está dando brasa y la hemos contra-escaneado "a ver qué tiene"? En mi caso, reconozco que muchas veces lo he hecho porque, como será un nodo zombie de una botnet, quiero saber de una forma rápida quién me está arreando, por qué, y cómo se lo han cepillado a él previamente. Si detecto que tiene el TCP/3389 abierto, por ejemplo, tengo claro lo que hay,… A nivel IP, intento ver a qué organización pertenece y, si se puede, notifico que tienen, al menos, una máquina comprometida, que está atacando indiscriminadamente por Internet. En casos que no he podido identificar de quién se trata, incluso he estado tentado de acceder a la máquina por Terminal Services (si un bot pudo, yo también) y dejar de fondo de pantalla un mensaje indicando que han tenido un compromiso previo. Menos mal que revisando el código penal, se me pasan las ganas,… pero la culpa es de ellos por atacar primero!

Así pues, de la mano de Mike, un lector amigo de Costa Rica, llegaba a mis manos la existencia de una herramienta llamada Portspoof, que actúa a modo de Honeypot pero con capacidades ofensivas. Por una parte, en un sistema UNIX podemos simular un puerto concreto o incluso varios que por una regla de NAT entrante, redirija el tráfico que iba al puerto original hacia el puerto en el que escucha portspoof, por defecto el 4444 (mira que me suena ese puerto). Por otro lado, permite incluso contraatacar a la IP que hace el escaneo. Y os preguntaréis, ¿cómo ante un simple NMAP puedo responder de forma que logre incluso una shell en el equipo atacante? Pues en el video que aparece en la web de portspoof, y que os incorporo bajo estas líneas, se ve que si, en el Nmap que os lanzan, se han tomado la molestia de ejecutar determinados scripts NSE, en algunos casos, es posible hacer que portspoof devuelva un payload malicioso que fuerza la ejecución de código remoto o el envío de una shell desde la máquina atacante, imagino que con los permisos con los que se ejecuta nmap. 




Aunque no he probado la herramienta en profundidad, y parece que sólo permite hacer un honeypot de un único servicio por cada instancia de portspoof, me ha venido a la cabeza, una idea que me comentó Yago hace un montón de años. Se trataba de hacer un programa que "bindeara" un socket en todos aquellos puertos menores al 1024, que no fuesen servicios de verdad. Es decir, que si un sistema necesita tener como servicios escuchando en la red el SSH, HTTP y FTP por ejemplo, este programa crearía un socket en todos los demás puertos (o en unos cuantos). Cuando se recibiese un escaneo NMap normal (TCP SYN), el sistema devolvería que TODOS los puertos hasta el 1024 están abiertos. En aquella época, quizá fuese suficiente. Ahora con los anchos de banda disponibles, los escaneos son mucho más elaborados e incorporan, como bien cuenta Paulino Calderón en su libro "NMap 6: Network Exploration and Security Auditing Cookbook", infinidad de opciones y ejecución de scripts que hacen que NMap haya dejado de ser una herramienta puramente de reconocimiento, para jugar un papel mucho más ofensivo. 


Por ello, creo que una herramienta que combinase ambas ideas, la de "bindear" sockets en diferentes puertos, así como generar servicios fake aleatorios escuchando en los mismos, para confundir al atacante, podría ser francamente interesante. Si alguno de nuestros lectores se anima a hacerla, estaremos encantados de probarla y comentarla en SbD.

2 comments :

Ricardo J. Barberis dijo...

El propio portspoof puede hacer lo que comentas sin bindear todos los puertos, en Linux creas con iptables una redireccion de todos los puertos que quieras al 4444, ej.:

iptables -A PREROUTING -i eth0 -p tcp -m tcp --dport 1:65535 -j REDIRECT --to-ports 4444

Sacado de https://github.com/drk1wi/portspoof/blob/master/DOCS

Saludos.

Hiroki Protagonist dijo...

Y así niños, es como se roba una botnet a otro niño.