Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Portspoof — Emula puertos abiertos y firmas de servicios en los 65535 puertos TCP para ralentizar el reconocimiento, confundir a los escáneres y malgastar los recursos del atacante con servicios falsos convincentes y tarpitting. | Kitploit
Herramientas/GitHubGitHub/drk1wi/portspoof
Herramientas DefensivasReconocimientoAnálisis de VulnerabilidadesEvasión de IDS/IPSSeguridad de RedesRed Teaming
GitHubdrk1wi/portspoof

Portspoof

Emula puertos abiertos y firmas de servicios en los 65535 puertos TCP para ralentizar el reconocimiento, confundir a los escáneres y malgastar los recursos del atacante con servicios falsos convincentes y tarpitting.

Ver Repositorio
2.4k179hace 5 díasRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Sitio web

Portspoof

License Platform Build Status

Portspoof emula puertos abiertos y firmas de servicios en los 65535 puertos TCP, convirtiendo la fase de reconocimiento de un escaneo rápido en un proceso largo e intensivo en recursos. Los escáneres ven miles de servicios falsos pero convincentes, lo que hace poco práctico identificar la superficie de ataque real.

Tabla de Contenidos

  • Descripción general
  • Características principales
  • Cómo funciona
  • Enfoque de diseño
  • Instalación
  • Configuración
  • Uso
  • Reforzamiento con iptables
  • Portspoof Pro
  • Autores y Licencia

Descripción general

El objetivo principal de Portspoof es hacer que el reconocimiento sea lento, costoso y poco fiable para los atacantes. En lugar de un escaneo Nmap estándar de 5 segundos que mapea cada servicio real en un sistema, un atacante que se enfrenta a Portspoof ve 65535 puertos abiertos, cada uno ejecutando lo que parece un servicio legítimo diferente. No hay una forma rápida de saber cuáles son reales.

Características principales

  • Los 65535 puertos TCP siempre están abiertos: En lugar de informar a un atacante de que un puerto está CERRADO o FILTRADO, Portspoof devuelve SYN+ACK para cada intento de conexión.
  • Emulación de servicios: Más de 9000 firmas de servicios dinámicos generadas a partir de expresiones regulares. Cada puerto responde a las sondas con una identidad de servicio diferente y convincente.
  • Modos de entrega mixtos: Cada puerto obtiene un perfil de comportamiento diferente al inicio (banner inmediato, respuesta retardada o espera silenciosa) con tiempos de espera distribuidos en un amplio rango. La detección de versión de rango completo (nmap -sV -p-) va mucho más allá de los límites prácticos.
  • Defensa ofensiva: Puede usarse como un 'Frontend del Framework de Explotación' para explotar vulnerabilidades en las propias herramientas de escaneo del atacante.
  • Ligero y seguro: Se ejecuta en espacio de usuario (sin necesidad de privilegios de root), se vincula a solo UN puerto TCP por instancia en ejecución y tiene un uso marginal de CPU/memoria.

Cómo funciona

1. Derrotando a los escáneres de puertos

Ejemplo de escaneo Nmap:

root@kitploit:~
$ nmap -p 1-20 target
Starting Nmap 7.80 ( https://nmap.org )
Nmap scan report for target
Host is up (0.00016s latency).
PORT   STATE SERVICE
1/tcp  open  tcpmux
2/tcp  open  compressnet
3/tcp  open  compressnet
4/tcp  open  unknown
5/tcp  open  rje
6/tcp  open  unknown
7/tcp  open  echo
8/tcp  open  unknown
9/tcp  open  discard
10/tcp open  unknown
11/tcp open  systat
12/tcp open  unknown
13/tcp open  daytime
14/tcp open  unknown
15/tcp open  netstat
16/tcp open  unknown
17/tcp open  qotd
18/tcp open  unknown
19/tcp open  chargen
20/tcp open  ftp-data

2. Confundiendo la detección de versiones

Portspoof responde a las sondas de servicios con firmas válidas generadas dinámicamente basadas en una enorme base de datos de expresiones regulares. Como resultado, un atacante no podrá determinar qué números de puerto está utilizando realmente su sistema.

Ejemplo de escaneo de versión (puertos 1–100):

root@kitploit:~
$ nmap -sV -p 1-100 target
Nmap scan report for target
Host is up (0.00016s latency).
PORT    STATE SERVICE            VERSION
1/tcp   open  tcpmux?
2/tcp   open  irc                ircu ircd
3/tcp   open  tcpwrapped
5/tcp   open  http               Polycom CMA Global Address Book (GAB) httpd
10/tcp  open  http               PGP Universal httpd
11/tcp  open  http               SnapStream Media Beyond TV PVR http config
12/tcp  open  pop3               Novell GroupWise pop3d
13/tcp  open  http               micro_httpd
15/tcp  open  ssh                OpenSSH r (protocol 8; NCSA GSSAPI authentication patch)
16/tcp  open  ftp                QMS/Minolta Magicolor 2200 DeskLaser printer ftpd
17/tcp  open  smtp               Network Box smtpd
21/tcp  open  ftp?
22/tcp  open  ssh                OpenSSH 8.9p1 Ubuntu 3ubuntu0.13 (Ubuntu Linux; protocol 2.0)
23/tcp  open  tcpwrapped
25/tcp  open  smtp?
27/tcp  open  http               BMC/Marimba Management http config
37/tcp  open  http               Indy httpd qlRKjiF
39/tcp  open  pop3
41/tcp  open  ftp                VSE ftpd WhH
43/tcp  open  imap               Scalix imapd 6
46/tcp  open  telnet             AXIS webcam telnetd 96747 (Linux)
49/tcp  open  smtp               Openwave Email Mx smtpd
50/tcp  open  http               3Ware web interface 3v (RAID storage)
51/tcp  open  ftp                WebStar 4dftp ...
53/tcp  open  tcpwrapped
55/tcp  open  webdav             Tonido WebDAV
56/tcp  open  tor-control        Tor control port (Authentication required)
59/tcp  open  irc                ircu ircd
60/tcp  open  rtsp               GStreamer rtspd
64/tcp  open  http               BaseHTTPServer CAxoE (Mercurial hg serve; Python LDkW)
66/tcp  open  telnet             Slirp PPP/SLIP-on-terminal emulator telnetd
70/tcp  open  smtp               qpsmtpd
71/tcp  open  smtp               Microsoft Exchange smtpd
73/tcp  open  http               Avaya IP Office VoIP PBX httpd
77/tcp  open  smtp               Zeus SMTPS smtpd
79/tcp  open  ftp                Sambar ftpd
80/tcp  open  tcpwrapped
81/tcp  open  imap-proxy         nginx imap proxy
82/tcp  open  ssh                (protocol 811)
83/tcp  open  http               peercast.org
88/tcp  open  csta               Alcatel OmniPCX Enterprise
90/tcp  open  http               WASD httpd
91/tcp  open  http               Fortinet FortiGate 50B firewall http config
93/tcp  open  imap               ModusMail imapd 4
98/tcp  open  ssh                Sysax Multi Server sshd 7 (protocol 940)
99/tcp  open  http               2Wire HomePortal http config 5473
100/tcp open  newacct?

El resultado

Combinadas, estas técnicas significan:

  • No hay una forma rápida de distinguir los servicios reales de los falsos. El tiempo, el comportamiento y el contenido del banner varían en todo el rango de puertos.
  • Un escaneo de versión completo (nmap -sV -p-) con la configuración predeterminada de tarpit tarda más de 10 horas y genera cientos de megabytes de datos falsos.
  • El escáner del atacante pierde tiempo e hilos en conexiones que no llevan a ninguna parte.

Enfoque de diseño

Los servicios reales (SSH, SMTP, FTP, HTTP) envían un banner y mantienen la conexión abierta, esperando la entrada del cliente. Una emulación convincente significa hacer lo mismo: aceptar, enviar, esperar. Pero un modelo de un hilo por cliente consume memoria y CPU en cambios de contexto, y a escala el defensor se queda sin recursos antes de que el atacante se quede sin paciencia. La herramienta de engaño se convierte en un vector de auto-DOS.

El enfoque: un bucle de eventos epoll de un solo hilo. A cada puerto se le asigna un modo de entrega al inicio: algunos envían un banner inmediatamente, otros esperan a que el cliente envíe datos antes de responder, y algunos permanecen en silencio. Los tiempos de espera se distribuyen en órdenes de magnitud (decenas de milisegundos a minutos) con fluctuación por conexión, por lo que las sondas repetidas al mismo puerto no devuelven tiempos idénticos.

Esto es importante porque sin ello, un atacante puede enviar basura a cada puerto y medir el tiempo de respuesta: los servicios reales se cierran rápido (protocolo incorrecto), mientras que un tarpit ingenuo espera durante segundos. Con modos mixtos y una amplia distribución de tiempos, miles de puertos falsos también se cierran en el mismo rango que los servicios reales. No hay un umbral limpio para filtrar.

La economía funciona debido a la asimetría:

  • Coste del defensor: ~1–2 KB de memoria del núcleo por conexión inactiva. El bucle epoll es de un solo hilo, sin sobrecarga de cambio de contexto. Una máquina modesta mantiene 10k+ conexiones concurrentes sin esfuerzo.
  • Coste del atacante: tiempo y esfuerzo. Un escaneo de puertos no les dice nada — cada puerto está abierto. Para encontrar servicios reales necesitan detección de versión en los 65535 puertos, luego sondear a nivel de protocolo en cualquier cosa que parezca plausible. Un escaneo de 5 segundos se convierte en más de 10 horas de trabajo activo, el resultado sigue siendo un pajar, y la mayoría de los atacantes se mueven a un objetivo más fácil.

Los modos de entrega por puerto son fijos durante la vida del proceso pero impredecibles entre reinicios. Los tiempos de espera tienen un componente aleatorio por conexión, por lo que las sondas repetidas muestran una variación natural, similar a los servicios reales bajo carga.

v2.0 reemplaza el comportamiento original de banner-y-cierre que era vulnerable a una evasión por cierre de conexión (ver la publicación del blog de Vicarius/Hored1971). El motor de tarpit mantiene todas las conexiones abiertas con tiempos mixtos, derrotando el filtrado por cierre de conexión, la huella digital temporal, el análisis de banners y el modelado estadístico de patrones.


Instalación

Prerrequisitos

Asegúrate de tener instalado un compilador C++ y CMake (3.10+).

Compilar desde el código fuente

root@kitploit:~
mkdir build && cd build
cmake -DCMAKE_INSTALL_SYSCONFDIR=/etc .. 
make
sudo make install

Configuración

Portspoof se ejecuta en espacio de usuario pero depende de las reglas del cortafuegos del sistema para interceptar el tráfico destinado a otros puertos.

1. Configurar el cortafuegos (iptables)

Redirigir todo el tráfico TCP entrante (puertos 1-65535) al puerto de Portspoof (por defecto 4444).

Linux (iptables):

root@kitploit:~
# Excluir servicios reales primero, luego redirigir el resto a Portspoof
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -j RETURN
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp -j REDIRECT --to-ports 4444

Nota: Reemplaza eth0 con tu interfaz de red. Añade una regla RETURN para cada puerto que ejecute un servicio real.

Para hacer esto persistente, puedes guardar tus reglas de iptables o usar el iptables-config proporcionado en el directorio system_files.

2. Inicio del sistema

Puedes añadir Portspoof a tus scripts de inicio usando los ejemplos en system_files/init.d/.


Uso

Modo de emulación de servicios (recomendado)

Este modo genera y alimenta a los escáneres de puertos con firmas de servicios falsas.

root@kitploit:~
portspoof -c /etc/portspoof.conf -s /etc/portspoof_signatures -D

Con tiempos de tarpit personalizados (mantener cada conexión entre 10 y 60 segundos):

root@kitploit:~
portspoof -s /etc/portspoof_signatures -t 10 -T 60 -D

Modo de puerto abierto

Este modo simplemente devuelve un estado ABIERTO para cada intento de conexión sin enviar banners de servicio. Las conexiones aún se mantienen en tarpit.

root@kitploit:~
portspoof -D

Modo de fuzzing

Portspoof puede usarse para fuzzear herramientas de escaneo enviando cargas útiles aleatorias o basadas en listas de palabras.

Fuzz con generador interno:

root@kitploit:~
# Genera cargas útiles aleatorias de tamaño aleatorio
portspoof -1 -v

Fuzz con una lista de palabras:

root@kitploit:~
portspoof -f payloads.txt -v

Reforzamiento con iptables

La regla REDIRECT básica anterior funciona, pero un escáner agresivo aún puede intentar abrumar a Portspoof con conexiones. El siguiente conjunto de reglas añade limitación de velocidad y bloqueo automático para hosts que exceden el umbral de conexión. Los puertos que alojan servicios reales (SSH en este ejemplo) se excluyen de la redirección pero aún están protegidos por la regla de bloqueo global.

root@kitploit:~
# --- NAT: redirigir todo excepto servicios reales ---
# añadir una regla RETURN para cada puerto que uses realmente (SSH, HTTP, etc.)
iptables -t nat -A PREROUTING -p tcp --dport 22 -j RETURN
iptables -t nat -A PREROUTING -p tcp -j REDIRECT --to-ports 4444

# --- FILTER: defensa en profundidad ---

# permitir loopback (crítico: evita romper servicios locales)
iptables -A INPUT -i lo -j ACCEPT

# si esta IP fue marcada como abusiva, descartar todo (silencioso, sin RST)
iptables -A INPUT -m recent --name PORTSCAN --rcheck --seconds 60 -j DROP

# limitar velocidad de nuevos SYNs por IP origen
iptables -A INPUT -p tcp --syn -m hashlimit \
  --hashlimit-above 10/sec --hashlimit-burst 30 \
  --hashlimit-mode srcip --hashlimit-name syn_throttle -j DROP

# si una sola IP mantiene 100+ conexiones a portspoof, marcar y descartar
iptables -A INPUT -p tcp --syn --dport 4444 -m connlimit \
  --connlimit-above 100 --connlimit-mask 32 \
  -m recent --name PORTSCAN --set -j DROP

# permitir tráfico establecido y nuevas conexiones
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --syn -j ACCEPT
iptables -A INPUT -j DROP

Para despliegues de alto tráfico, aumenta el tamaño de la lista xt_recent:

root@kitploit:~
echo "options xt_recent ip_list_tot=10000" > /etc/modprobe.d/xt_recent.conf

Y ajusta el seguimiento de conexiones del núcleo:

root@kitploit:~
sysctl -w net.netfilter.nf_conntrack_max=131072
sysctl -w net.core.somaxconn=4096

Portspoof Pro

Portspoof Pro escala el engaño de un solo host a toda una red. Un solo sensor emula redes /16 completas: miles de IPs, cada una con servicios únicos en todos los puertos, manteniendo conversaciones de múltiples pasos con estado.

  • Engaño en toda la red. Convierte el espacio IP oscuro y las subredes no utilizadas en una cuadrícula de engaño activa. Cada host emulado presenta servicios únicos con una personalidad diferente por IP de origen. El tarpit activo agota los grupos de sockets del atacante y estrangula las herramientas automatizadas.
  • Detección de escaneo y huella digital de herramientas. Detecta técnicas de escaneo SYN, FIN, NULL, XMAS, ACK. Reconoce Nmap, Masscan, ZMap y escáneres personalizados. Telemetría JSON estructurada con mapeo MITRE ATT&CK, transmitida a tu SIEM.
  • Despliegue seguro en producción. Se ejecuta en un entorno aislado junto al tráfico de producción. Las políticas de enrutamiento dirigen el tráfico de engaño al sensor. Sin derivaciones en línea, sin riesgo para las cargas de trabajo reales.
  • Cumplimiento normativo listo para usar. Compatible con NIS2, DORA, ISO 27001, NIST CSF y CIS Controls.

portspoof.io


Autores y Licencia

Autor: Piotr Duszyński (@drk1wi)

Licencia: GNU General Public License v2.0 (GPLv2). Consulta el archivo LICENSE para más detalles.

Para aplicaciones comerciales y legítimas, contacta al autor para los acuerdos de licencia adecuados.


Reportar problemas

Si encuentras algún error o tienes solicitudes de características, por favor repórtalos en el Rastreador de Incidencias de GitHub o contacta al autor por correo electrónico a piotr [at] duszynski.eu.

Descargar herramienta