Logo de fravelz

Notas de Hacking

Fravelz

Ncat en Linux


¿Qué hace ncat? {#qué-hace-ncat}

ncat (o Ncat) es la versión moderna de netcat incluida con Nmap. Es una herramienta de línea de comandos para leer/escribir datos a través de conexiones TCP o UDP, con muchas mejoras: soporte SSL/TLS, proxys, ejecución remota de comandos, modo servidor/cliente, reconexiones, y más. Es el “cuchillo suizo” de redes pero con opciones extra de seguridad y flexibilidad.


Usos típicos {#usos-típicos}

  • Conectar a un puerto remoto (cliente).
  • Poner un puerto en escucha (servidor).
  • Transferir archivos entre máquinas.
  • Crear shells remotos / reverse shells (solo en entornos controlados).
  • Tunelizar con SSL/TLS o a través de proxies.
  • Depuración y pruebas de red (chat, eco, escaneo, etc.).

Opciones comunes (útiles y seguras) {#opciones-comunes-útiles-y-seguras}

  • -l : escuchar (modo server).
  • -p <puerto> : especificar puerto local.
  • -u : usar UDP en lugar de TCP.
  • -v / -vv : verbose (más información de debug).
  • -k : mantener el listener abierto para múltiples conexiones (keep-open).
  • -n : no resolver DNS (usar solo IPs).
  • -z : modo “scan” / zero-I/O (suele usarse para chequear puertos).
  • —ssl : asegurar la conexión con TLS/SSL.
  • —send-only / —recv-only : solo enviar o solo recibir (útil en transferencias).
  • —proxy <host:puerto> y —proxy-type socks4, socks5, http : conectar a través de un proxy.
  • —exec <comando> o -e <programa> : ejecutar un comando al conectar (p.ej. crear una shell remota). ATENCIÓN: usar con extremo cuidado — esto permite ejecución remota y es peligroso sí se habilita en producción sin control.
Nota: Ncat tiene muchas más opciones (certificados TLS, límites de tasa, timeouts). Consulta ncat --help o man ncat para la lista completa en tú versión.
---

Ejemplos prácticos {#ejemplos-prácticos}

Cliente simple (TCP) {#cliente-simple-tcp}

ncat 192.168.1.10 8080

Servidor que acepta una conexión {#servidor-que-acepta-una-conexión}

ncat -l -p 8080

Servidor que acepta múltiples conexiones (keep-open) {#servidor-que-acepta-múltiples-conexiones-keep-open}

ncat -l -k -p 8080

UDP (cliente y servidor) {#udp-cliente-y-servidor}

Servidor UDP:

ncat -u -l -p 6000

Cliente UDP:

ncat -u 192.168.1.10 6000

Transferir archivo (cliente -> servidor) {#transferir-archivo-cliente---servidor}

Servidor (recibe):

ncat -l -p 9000 > recibido.bin

Cliente (envía):

ncat 192.168.1.20 9000 < archivo.bin

Conexión cifrada SSL/TLS (cliente) {#conexión-cifrada-ssltls-cliente}

ncat --ssl ejemplo.com 443

Usar proxy SOCKS5 {#usar-proxy-socks5}

ncat --proxy 10.0.0.1:1080 --proxy-type socks5 ejemplo.com 80

Ejecutar comando remota (solo en entornos controlados) {#ejecutar-comando-remota-solo-en-entornos-controlados}

Servidor (escucha y ejecuta /bin/bash cuando alguien conecta):

ncat -l -p 4444 --exec "/bin/bash" -k

Cliente (conecta y obtiene shell):

ncat 192.168.1.20 4444

Nunca hagas esto en máquinas expuestas sin autorización.


Seguridad y buenas prácticas {#seguridad-y-buenas-prácticas}

  • —exec / -e y reverse shells son poderosas pero peligrosas: úsalas solo en entornos de laboratorio o con permiso explícito.
  • Sí necesitas acceso remoto legítimo, prefiere SSH o túneles TLS con autenticación.
  • Sí usas —ssl, verifica certificados cuando sea necesario (no deshabilites comprobaciones sin entender riesgos).
  • Limita escucha a interfaces específicas (-l -s <ip>) sí tú ncat lo soporta, o usa firewall para restringir accesos.
  • Mantén ncat actualizado (la implementación viene con Nmap).