14 abril 2011

Montar nuestro honeypot con Netcat

Uno de los muchos usos que se le pueden dar a Netcat es, dentro de sus posibilidades, montar un honeypot. Al ser una herramienta tan versátil podemos adaptarla a múltiples servicios, en este caso vamos a ver como podemos configurar un simple honeypot FTP.

Para darle un poco de originalidad, vamos a buscar algún servidor FTP que haya sufrido alguna vulnerabilidad, cuanto más fácil de explotar mejor.

Una de las primeras que nos viene a la cabeza es la versión backdoorizada de ProFTPD 1.3.3c que fue detectada a finales del año pasado. Para saber como es el banner del servicio podemos, por ejemplo, buscar en Shodan servidores con versiones cercanas.

Con estos datos, nos queda hacer que Netcat escriba el banner en cada conexión y guarde un log con las conexiones. Podemos hacerlo con el siguiente script:

#!/bin/bash

buff="220 ProFTPD 1.3.3c Server (ProFTPD)\r\n"

while [ 1 ]; do
    echo $buff | netcat -v -l -p 21 >> /var/log/honeylog.log 2>> /var/log/honeylog.log
done


Usamos un bucle porque netcat terminará de escuchar cuando finalice la conexión, posiblemente con otras versiones de netcat podríamos mejorarlo.

Si escaneamos con Nmap el servicio nos detecta la versión de FTP vulnerable:

$ nmap -sT -sV -p 21 192.168.1.2

Starting Nmap 5.21 ( http://nmap.org )
Nmap scan report for 192.168.1.2
Host is up (0.0051s latency).
PORT   STATE SERVICE VERSION
21/tcp open  ftp     ProFTPD 1.3.3c
Service Info: OS: Unix

Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 0.57 seconds

Y si miramos el log del honeypot:

$ cat honeylog.log
listening on [any] 21 ...
connect to [192.168.1.2] from desktop.local [192.168.1.3] 33303
listening on [any] 21 ...

Por supuesto, también podemos conectarnos, aunque la funcionalidad es mínima:

$ ftp localhost
Connected to localhost.
220 ProFTPD 1.3.3c Server (ProFTPD)\r\n
Name (localhost:asd):

2 comments :

Francisco dijo...

Alberto, al menos en la versión para Windows de Netcat, es posible hacer que Netcat no finalice cuando se cierre la conexión, usando el parámetro "-L" en lugar de "-l".

Saludos

Luther_blissett dijo...

Un placer seguir esta página. Gracias.