Usando Netcat: algunos comandos prácticos

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.


elav

elav: Blog Personal / Twitter / G+ / Usuario de ArchLinux. Informático, melómano, blogger y diseñador web. Administrador y Fundador de DesdeLinux.net.


9 comentarios en “Usando Netcat: algunos comandos prácticos

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Current ye@r *

  1. Justo el fin de semana estuve trabajando con esta herramienta, de verdad muy buena.

    Saludos

    1/8
  2. Un buen resumen de las cosas que se pueden hacer con netcat. Esto me será útil de vez en cuando. Muchas gracias.

    3/8
  3. Buen resumen, gracias por la info.

    4/8
  4. 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

    5/8
  5. Muy buen blog

    6/8
  6. 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

    8/8

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Current ye@r *