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
PortForwarder — Utilidad de redireccionamiento de puertos TCP en C | Kitploit
Herramientas/GitHubGitHub/lsecqt/portforwarder
Utilidades de Propósito GeneralMapeo de RedesEvasión de IDS/IPSMovimiento LateralPruebas de PenetraciónUtilidades y FrameworksRed Teaming
GitHublsecqt/portforwarder

PortForwarder

Utilidad de redireccionamiento de puertos TCP en C

Ver Repositorio
4111hace 2 mesesRevisado 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

Reenviador de Puertos TCP para Windows

Un reenviador de puertos TCP de alto rendimiento para Windows con listas blancas de IP opcionales y capacidades de registro detallado.

Características

  • ✅ Reenviar tráfico TCP desde un puerto local a cualquier host:puerto remoto
  • ✅ Lista blanca de IP opcional para mayor seguridad
  • ✅ Modo de toma de control del puerto 445/SMB (deshabilita SMB y libera el puerto 445 para retransmisión)
  • ✅ Soporta hasta 100 conexiones concurrentes
  • ✅ Reenvío bidireccional de datos con estadísticas en tiempo real
  • ✅ Modo detallado para depurar conexiones rechazadas
  • ✅ Configuración agresiva de keepalive TCP para detección de conexiones muertas
  • ✅ Reenvío de baja latencia (algoritmo de Nagle deshabilitado)
  • ✅ Manejo grácil de cierre (Ctrl+C)
  • ✅ Gestión de conexiones segura para hilos

Requisitos

  • Sistema operativo Windows
  • Visual Studio (para compilación) o MinGW-w64
  • Biblioteca Winsock2 (incluida con Windows SDK)

Compilación

Usando el Símbolo del sistema para desarrolladores de Visual Studio:

root@kitploit:~
cl PortForwarder.c /Fe:PortForwarder.exe ws2_32.lib

Usando MinGW-w64:

root@kitploit:~
gcc PortForwarder.c -o PortForwarder.exe -lws2_32

Uso

root@kitploit:~
PortForwarder.exe <puerto_local> <host_remoto> <puerto_remoto> [ip_permitida] [-v]

Parámetros

  • <puerto_local> - Puerto local en el que escuchar (1-65535)
  • <host_remoto> - Nombre de host o dirección IP remota a la que reenviar el tráfico
  • <puerto_remoto> - Puerto remoto al que reenviar el tráfico (1-65535)
  • [ip_permitida] - Opcional - Solo aceptar conexiones desde esta dirección IP
  • [-v] - Opcional - Habilitar modo detallado (mostrar conexiones rechazadas)

Ejemplos

Reenvío de puertos básico (sin filtrado de IP)

Reenviar el puerto local 8080 al servidor remoto 192.168.1.100 puerto 80:

root@kitploit:~
PortForwarder.exe 8080 192.168.1.100 80

Reenvío de puertos con lista blanca de IP

Solo aceptar conexiones desde 192.168.1.50:

root@kitploit:~
PortForwarder.exe 8080 192.168.1.100 80 192.168.1.50

Reenvío de puertos con lista blanca de IP y registro detallado

Mostrar intentos de conexión rechazados:

root@kitploit:~
PortForwarder.exe 8080 192.168.1.100 80 192.168.1.50 -v

Reenviar a un nombre de host remoto

root@kitploit:~
PortForwarder.exe 3306 database.example.com 3306

Reenvío de puerto SSH con restricción de IP

root@kitploit:~
PortForwarder.exe 2222 10.0.0.50 22 192.168.1.100

Toma de control del puerto 445 / SMB (solo en compromisos autorizados)

Escuchar en el puerto SMB 445 y reenviar a un punto final SMB remoto. Cuando 445 es el puerto local, la herramienta primero libera el puerto del servidor SMB integrado de Windows:

root@kitploit:~
PortForwarder.exe 445 10.0.0.50 445 192.168.1.100

Cuando el puerto local es 445, antes de enlazar, la herramienta automáticamente:

  1. Verifica privilegios — confirma que el proceso se está ejecutando con elevación (administrador). Si no, aborta con un mensaje claro.
  2. Muestra el titular actual — identifica el PID/proceso actualmente vinculado al puerto 445 (normalmente System, PID 4, a través del controlador de kernel srvnet).
  3. Deshabilita SMB y libera el puerto — detiene LanmanServer y los controladores srv2 / srvnet (deteniendo recursivamente cualquier servicio dependiente), imprimiendo cada paso para visibilidad.
  4. Verifica y enlaza — confirma que el puerto 445 está libre, luego enlaza y reenvía como de costumbre.

Ejemplo de salida:

root@kitploit:~
[445] === Port 445 / SMB takeover ===
[445] Privilege check: running elevated (administrator). OK
[445] Port 445 currently held by PID 4 (System (kernel / srvnet))
[445] Disabling SMB server and releasing port 445...
[445] Stopping 'LanmanServer'...
[445]   service 'LanmanServer' stopped
[445] Stopping 'srv2'...
[445]   service 'srv2' stopped
[445] Stopping 'srvnet'...
[445]   service 'srvnet' stopped
[445] Port 445 is now free. Proceeding to bind.
[445] (Restore SMB later with: net start LanmanServer)

⚠️ Detener estos servicios deshabilita el uso compartido de archivos/impresoras en el host durante la duración del compromiso. Restáurelo después con net start LanmanServer (los controladores se reinician bajo demanda o en el próximo arranque). Úselo solo en sistemas que esté autorizado a probar.

Casos de uso

Desarrollo local

  • Acceder a servicios que se ejecutan en contenedores o máquinas virtuales
  • Reenviar puertos desde WSL2 al host Windows
  • Probar puntos finales de webhook localmente

Puente de red

  • Puentear diferentes segmentos de red
  • Evitar restricciones de firewall (solo uso autorizado)
  • Acceder a servicios internos desde la DMZ

Acceso a bases de datos

  • Asegurar conexiones de bases de datos con lista blanca de IP
  • Tunelizar tráfico de bases de datos a través de hosts de salto
  • Exponer bases de datos locales para desarrollo remoto

Pruebas de seguridad

  • Monitorear y analizar patrones de tráfico TCP
  • Probar controles de acceso basados en IP
  • Auditar intentos de conexión con modo detallado

Información de salida

El reenviador proporciona un registro detallado:

root@kitploit:~
[INFO] Configuration:
  Local port:  8080
  Remote host: 192.168.1.100
  Remote port: 80
  Allowed IP:  192.168.1.50 (filtered mode)
  Verbose:     OFF

[INFO] Listening on port 8080...
[INFO] Press Ctrl+C to stop

[INFO] New connection from 192.168.1.50:54321 ACCEPTED
[INFO] Connected to remote 192.168.1.100:80
[INFO] Connection established, forwarding traffic...
[INFO] Closing connection (Sent: 1024 bytes, Received: 2048 bytes, Total: 3072 bytes)

Salida en modo detallado

Cuando la bandera -v está habilitada, también se registran las conexiones rechazadas:

root@kitploit:~
[INFO] Connection from 192.168.1.99:54322 REJECTED (IP not allowed)

Detalles técnicos

Optimizaciones de rendimiento

  • Tamaño de búfer: Búferes de 8KB para transferencia de datos eficiente
  • TCP_NODELAY: Algoritmo de Nagle deshabilitado para menor latencia
  • Keepalive: Configuración agresiva (10s inicial, 1s de intervalo) para detectar conexiones muertas
  • Grupo de hilos: Hasta 100 conexiones concurrentes con hilos de reenvío dedicados
  • Aceptación no bloqueante: Select() con tiempo de espera para cierre receptivo

Manejo de conexiones

Cada conexión genera un hilo de reenvío dedicado que:

  1. Establece conexión con el host remoto
  2. Configura opciones de socket (tiempos de espera, keepalive, TCP_NODELAY)
  3. Usa select() para reenvío bidireccional
  4. Rastrea bytes transferidos en cada dirección
  5. Cierra grácilmente ambos sockets al finalizar

Manejo de errores

El reenviador maneja errores comunes de red de forma grácil:

  • WSAECONNRESET - Conexión reiniciada por el par
  • WSAECONNABORTED - Conexión abortada
  • WSAENETRESET - La red causó la desconexión
  • WSAETIMEDOUT - Tiempo de espera de conexión agotado

Seguridad para hilos

  • Secciones críticas protegen el arreglo de conexiones
  • Bandera volátil running para cierre limpio
  • Sincronización de hilos durante la limpieza

Consideraciones de seguridad

⚠️ Notas importantes de seguridad:

  1. Lista blanca de IP: Use el parámetro [ip_permitida] en producción para restringir el acceso
  2. Sin cifrado: Este reenviador no cifra el tráfico. Úselo con túneles SSH o VPN para datos sensibles
  3. Autenticación: No tiene autenticación incorporada. Asegúrese de que el servicio remoto tenga la seguridad adecuada
  4. Firewall: Configure el Firewall de Windows para restringir el acceso al puerto de escucha
  5. Registro: Desactive el modo detallado en producción para evitar la hinchazón de archivos de registro
  6. Límites de recursos: El límite de 100 conexiones evita el agotamiento de recursos

Solución de problemas

Puerto ya en uso

root@kitploit:~
[ERROR] bind() failed: 10048

Solución: Otra aplicación está usando el puerto. Elija un puerto local diferente o detenga el servicio en conflicto.

No se puede conectar al remoto

root@kitploit:~
[ERROR] connect() to remote failed: 10061

Solución: Verifique que el host remoto sea accesible y que el servicio se esté ejecutando en el puerto especificado.

Permiso denegado

root@kitploit:~
[ERROR] bind() failed: 10013

Solución: Los puertos por debajo de 1024 pueden requerir privilegios de administrador. Ejecute como Administrador o use un número de puerto más alto.

Conexión rechazada

root@kitploit:~
[INFO] Connection from X.X.X.X:XXXXX REJECTED (IP not allowed)

Solución: Habilite el modo detallado (-v) para ver las IPs rechazadas, o elimine el filtrado de IP.

Detener el reenviador

Presione Ctrl+C para detener el reenviador de forma grácil. Hará lo siguiente:

  1. Dejar de aceptar nuevas conexiones
  2. Esperar a que las conexiones activas finalicen (hasta 5 segundos)
  3. Cerrar todos los sockets
  4. Limpiar recursos
  5. Mostrar confirmación de limpieza

Limitaciones

  • Solo Windows: Usa la API Winsock2 (no portable a Linux/macOS)
  • Solo IPv4: Actualmente solo soporta direcciones IPv4
  • Filtro de IP único: Solo se puede especificar una dirección IP permitida
  • Sin balanceo de carga: El tráfico se reenvía a un único punto final remoto
  • Sin inspección de tráfico: Reenvío TCP crudo sin análisis de contenido
  • Sin limitación de ancho de banda: Sin limitación de velocidad ni QoS incorporados

Mejoras futuras

Posibles características para versiones futuras:

  • Soporte IPv6
  • Lista blanca/negra de múltiples IP
  • Envoltura de cifrado SSL/TLS
  • Panel de estadísticas de tráfico
  • Soporte de archivos de configuración
  • Limitación de ancho de banda
  • Balanceo de carga round-robin
  • Limitación de tasa de conexiones
  • Soporte multiplataforma (Linux/macOS)

Licencia

Este software se proporciona tal cual para propósitos educativos y de administración legítima de redes. Úselo de manera responsable y en cumplimiento de las leyes y regulaciones aplicables.

Contribuciones

¡Las contribuciones son bienvenidas! Por favor, asegúrese de:

  • El código sigue el estilo existente
  • Los cambios están bien probados en Windows
  • Los comentarios explican la lógica compleja
  • El README se actualiza para nuevas características

Soporte

Para problemas, preguntas o solicitudes de características, por favor abra un issue en el repositorio del proyecto.

También puede apoyar mi trabajo en Patreon


Descargar herramienta