Netcat o nc, es una conocida herramienta para el análisis de red, conocida también como la navaja suiza de los hackers, ya que tiene muchas funcionalidades, similares a la mencionada navaja. En este post explicaremos algunas de sus funcionalidades más básicas con ejemplos:
1.-Netcat como un cliente-servidor:
Netcat puede utilizarse como un servidor y dejarlo a la escucha de un determinado puerto:
$ nc -l 2389
Además, podemos usarlo para conectarnos a un puerto (2389), recientemente abierto:
$ nc localhost 2389
Ahora, si escribimos en el lado del cliente, llegará al lado del servidor:
$ nc localhost 2389
HI, server
En la terminal donde está corriendo el servidor:
$ nc -l 2389
HI, server
Hemos visto un ejemplo de como utilizar Nectat para la comunicación cliente-servidor.
2.-Usar Netcat para transferir archivos:
Netcat puede ser utilizado para transferir archivos. Del lado del cliente supongamos que tenemos un archivo llamado ‘testfile’ que contiene:
$
cat
testfile
hello testfile
y del lado del servidor tenemos un archivo vacío llamado ‘test’.
Ahora ponemos del lado del servidor:
$ nc -l 2389 >
test
y corremos el cliente de la siguiente manera:
cat
testfile | nc localhost 2389
Cuando revisamos el archivo ‘test’ en el servidor:
$
cat
test
Hello testfile
Hemos transferido datos del cliente al servidor.
3.-Netcat soporta timeouts:
En ocasiones cuando abrimos una conexión no deseamos que ésta se quede abierta por un tiempo indefinido, así que para solucionar este problema utilizamos la opción -w, para que pasados x cantidad de segundos se cierre la conexión entre cliente-servidor.
Servidor:
$nc -l 2389
Cliente:
$ nc -w 10 localhost 2389
La conexión se cerrará después de pasados 10 segundos.
Nota: no debes usar la opción -w con la opción -l en el lado del servidor ya que -w no causaría ningún efecto y por tanto la conexión quedaría abierta indefinidamente.
4.-Netcat soporta IPV6:
Las opciones -4 y -6 fuerzan a Netcat que utilice el protocolo IPv4 o IPv6 respectivamente.
Servidor:
$ nc -4 -l 2389
Cliente:
$ nc -4 localhost 2389
Ahora, si ejecutamos el comando netstat, veríamos:
$
netstat
|
grep
2389
tcp 0 0 localhost:2389 localhost:50851 ESTABLISHED
tcp 0 0 localhost:50851 localhost:2389 ESTABLISHED
El primer parámetro de la salida anterior si fuera IPv6 mostraría un 6 después del tcp, pero como usamos IPv4 nos muestra solamente tcp
.
Ahora, forcemos a Necat para que utilice IPv6:
Servidor:
$nc -6 -l 2389
Cliente:
$ nc -6 localhost 2389
Ejecutando netstat nuevamente veríamos:
$
netstat
|
grep
2389
tcp6 0 0 localhost:2389 localhost:33234 ESTABLISHED
tcp6 0 0 localhost:33234 localhost:2389 ESTABLISHED
Podemos ver como el tcp ahora va acompañado de un 6, indicando el uso de IPv6.
5.-Desactivar la lectura por STDIN de Netcat:
Esta funcionalidad se tiene mediante la opción -d. En este ejemplo lo hacemos del lado del cliente:
Servidor:
$ nc -l 2389
Cliente:
$ nc -d localhost 2389
Hi
El texto Hi no será enviado al servidor ya que la lectura mediante STDIN ha sido desactivada.
6.-Forzar a Netcat para que quede despierto:
Cuando tenemos el servidor corriendo y el cliente se desconecta, el servidor también termina:
Servidor:
$ nc -l 2389
Cliente:
$ nc localhost 2389
^C
Servidor:
$ nc -l 2389
$
Pudimos apreciar en el ejemplo anterior que si el cliente cierra la conexión también el servidor temina, entonces, ¿que podemos hacer?, nuestra solución es utilizar la opción -k, que fuerza al servidor para que siga corriendo.
Servidor:
$ nc -k -l 2389
Cliente:
$ nc localhost 2389
C^
Servidor:
$ nc -k -l 2389
Hemos visto que el servidor sigue corriendo aunque el cliente se ha desconectado, gracias a la opción -k que le agregamos al servidor.
7.-Configurar Netcat para que se mantenga despierto después de un EOF:
Netcat está configurado para que después de recibir un EOF(End Of File) termine la conexión, normalmente esto es lo que pasa, pero podemos modificar este comportamiento por defecto de Netcat agregando la opción -q. Esta opción indica a Netcat que debe esperar x cantidad de segundos antes de cerrar la conexión.
Cliente:
El cliente debe ser iniciado de la siguiente manera:
nc -q 5 localhost 2389
Ahora siempre que el cliente reciba un EOF esperará 5 segundos antes de cerrar la conexión.
8.-Utilizar Netcat sobre UDP:
Por defecto Netcat utiliza para su comunicación el protocolo TCP, pero podemos utilizar también UDP mediante la opción -u.
Servidor:
$ nc -4 -u -l 2389
Cliente:
$ nc -4 -u localhost 2389
Ahora cliente y servidor están utilizando el protocolo UDP para su comunicación, esto podemos comprobarlo mediante el comanda netstat.
$
netstat
|
grep
2389
udp 0 0 localhost:42634 localhost:2389 ESTABLISHED
Bueno, durante el post hemos visto algunos ejemplos del uso de Netcat, pudieron apreciar que es una herramienta muy versátil, de ahí lo de la navaja suiza de los hacker
, aquí presentamos solo algunas de sus funcionalidades, como siempre si quieren más información: man nc, y verán todo lo que se puede hacer con esta herramienta. Hasta el próximo post y Happy Hacking!!!
Artículo tomado de humanOS.
que inventos!!
Justo el fin de semana estuve trabajando con esta herramienta, de verdad muy buena.
Saludos
Un buen resumen de las cosas que se pueden hacer con netcat. Esto me será útil de vez en cuando. Muchas gracias.
Buen resumen, gracias por la info.
para lo que me ha servido a mi, Auditar un canal inalambrico o la actividad completa de la interfaz inalambrica de un AP ubiquiti (los de tecnologica N)
en
PC:(192.168.0.1)
nc -l 1234 > paquetes.raw
AP:(192.168.0.2)
tcpdump -i ath0 -w – | nc 192.168.0.1 1234
Ctrl+C (para terminar la captura)
PC:
abrir wireshark o cualquiero otro con soporte pcap-file y leer el fichero paquetes.raw
de immensa ayuda me ha sido esto a mi, y por eso lo comparto con ustedes
Muy buen blog
Gracias, Carlos! Un abrazo!
Pablo.
Estimado,
soy nuevo en lo de niveles de seguridad y me gustaria saber en donde puedo encontrar la herramienta, es decir es uncomplemento de windows o solamente es funcional para plataformas LINUX ya que en mi ambito laboral e servida de mucho para lo que actualmente estoy desempeñando
De antemano agradezco la atención, quedo a la espera de sus comentarios y apoyo
Quien me enseña a utilizar linux..ubuntu.. para poder a aprender mas de hankin… xd