Podcast de Redes de Eduardo Collado
NC – NetCat
En el capítulo de hoy vamos a ver un poco NC, NetCat o como queráis llamarlo, y vamos a ponerlo en contraposición a ssh en algunas cosas y siempre vamos a poder utilizar ssh con nc para ejecutar comandos remotos.
Netcat es un software de 1995 que tiene muchas utilidades, así que voy a pasar a enumeraros unas cuentas. Es importante escuchar el audio si estáis leyendo esto pues cada comando va en una máquina diferente.
Ejemplo 1 – Crear un chat:
* -l: listening* -p: port
nc -lp 1234
nc x.x.x.x 1234
Ejemplo 2 – Transferir un fichero
* -v: verbose * -w: wait en segundos de tiempo para expirar conexión* <: el fichero especificado entra en la conexión (indica la dirección)* >: el fichero especificado es la salida de la conexión (indica la dirección)
nc -v -w 30 -p 1234 -l < fichero
nc -v x.x.x.x 1234 > fichero
Imagen de la película “Tú a Bostón y yo a California” tuneada por Top
Ejemplo 3 – Levantar una shell inversa
Lo primero si usáis linux es instalar el paquete netcat-traditional porque por defecto viene el paquete netcat-openbsd. La diferencia es que el tradicional permite ejecución y el openbsd no. Esto nos dejará dos versiones de nc: nc.traditional y nc.openbsd donde nc será nc.openbsd.
* -e: Ejecutar un comando.
nc.traditional -vlp 5555 -e /bin/bash
nc x.x.x.x 5555
Ejemplo 4 – Escanear puertos
* -u: UDP* -z: Modo zero-I/O
nc.traditional -vu -w 1 x.x.x.x -z 1-100
nc.traditional -v -w 1 x.x.x.x -z 1-100
Puerto Cerrado
Puerto abierto
También podemos mezclarlo con un poco de bash y scripting:
* -n: No consultes el DNS
for i in {10..12}; do nc –vv –n –w 1 192.168.0.$i 21-25 –z; done
Ejemplo 5 – Montar un syslog
Para montar un syslog lo primero que necesitamos es una implementación de netcat que nos permita tener más de una conexión concurrente con el servidor y nc.traditional y nc.openbsd tienen la limitación de sólo una conexión concurrente.
La implementación que permite tener conexiones concurrentes es ncat, la de https://nmap.org/ncat/, y esta es la que utilizaremos.
* -m: Conexiones máximas concurrentes* -k: Mantener la conexión abierta (keep open)
ncat -m 100 -k -l -p 5000
nc.traditional x.x.x.x 5000 -c "tail -f /var/log/loquesea"
ncat x.x.x.x 5000 -c "tail -f /var/log/loquesea"
Ejemplo 6: Montar un servidor web
Aquí montado el servidor web con ncat (permite varias conexiones) y con nc.traditional (sólo permite 1)
ncat -lk -p 8080 --sh-exec "echo -e 'HTTP/1.1 200 OK\r\n'; cat index.html"
nc.traditional -l -p 8080 -c "echo -e 'HTTP/1.1 200 OK\r\n'; cat index.html"
Ejemplo 7: Modificar routers intermedios
La cabecera de IP tiene un campo que se llama opciones y dentro de las opciones tenemos una llamada Loose Source Route (opción 131) que es muy probable que no hayáis visto todavía. En este caso lo que hacemos es especificar una lista de direcciones IP por las que el datagrama tiene que pasar,