Podcast: Descargar (Duración: 38:41 — 36.3MB)
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
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
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, aunque esto no implique no pueda pasar por otro puntos no especificados. En el caso de Strict Source Routing por ejemplo sí tendríamos que pasar por sólo y exclusivamente esos puntos.
- -g: Puntos de salto de Loose source routing
nc.traditional -ulp 1234 nc.traditional -u -g 1.1.1.1 -g 2.2.2.2 193.168.89.102 1234