Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
iodine — Tuneliza datos IPv4 a través de servidores DNS para evadir las restricciones del firewall y proporcionar acceso de red encubierto para pruebas de penetración. | Kitploit
Herramientas/GitHubGitHub/yarrick/iodine
Evasión de IDS/IPSExfiltración de DatosSeguridad de RedesPruebas de PenetraciónComando y ControlRed TeamingHerramienta de Acceso RemotoTop en Exfiltración de Datos #2Top en Evasión de IDS/IPS #13
8.0k599136hace 11 díasRevisado por Kitploit
GitHub
yarrick/iodine

iodine

Tuneliza datos IPv4 a través de servidores DNS para evadir las restricciones del firewall y proporcionar acceso de red encubierto para pruebas de penetración.

Ver RepositorioSitio web

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

iodine - https://code.kryo.se/iodine

Este es un programa que te permite tunelizar datos IPv4 a través de un servidor DNS. Esto puede ser útil en diferentes situaciones en las que el acceso a internet está bloqueado por un firewall, pero se permiten las consultas DNS.

COMPILACIÓN

Para compilar iodine necesitas meson. Ejecuta los siguientes comandos para compilar dentro del directorio build:

meson setup build
cd build
ninja

Para compilar y ejecutar las pruebas necesitas la biblioteca check. Inícialas ejecutando ninja test dentro del directorio de compilación.

INICIO RÁPIDO

¡Pruébalo dentro de tu propia LAN! Sigue estos sencillos pasos:

  • En tu servidor, ejecuta: ./iodined -f 10.0.0.1 test.com. Si ya utilizas la red 10.0.0.0, usa otra red interna como 172.16.0.0.
  • Introduce una contraseña.
  • En el cliente, ejecuta: ./iodine -f -r 192.168.0.1 test.com. Sustituye 192.168.0.1 por la dirección IP de tu servidor.
  • Introduce la misma contraseña.
  • Ahora el cliente tiene la IP del túnel 10.0.0.2 y el servidor tiene 10.0.0.1.
  • Prueba a hacer ping entre ambos a través del túnel.
  • ¡Listo! :)

Para usarlo realmente a través de un servidor de nombres retransmisor, consulta más abajo.

CÓMO USARLO

Nota: el servidor y el cliente deben hablar exactamente el mismo protocolo. En la mayoría de los casos, esto significa ejecutar la misma versión de iodine. Desafortunadamente, implementar la compatibilidad de protocolo hacia atrás y hacia adelante normalmente no es factible.

Lado del servidor

Para usar este túnel, necesitas control sobre un dominio real (como mydomain.com), y un servidor con una dirección IP pública para ejecutar iodined. Si este servidor ya ejecuta un programa DNS, cambia su puerto de escucha y luego usa la opción -b de iodined para permitir que iodined reenvíe las solicitudes DNS. (Ten en cuenta que este procedimiento no se recomienda en entornos de producción, porque el reenvío DNS de iodined no es completamente transparente; por ejemplo, las transferencias de zona no funcionarán). Alternativamente, puedes reenviar el subdominio desde tu servidor DNS a iodined, que entonces debe ejecutarse en un puerto diferente (-p).

Luego, delega un subdominio (digamos, t1.mydomain.com) al servidor iodined. Si usas BIND para tu dominio, añade dos líneas como estas al archivo de zona:

t1		IN	NS	t1ns.mydomain.com.		; note the dot!
t1ns		IN	A	10.15.213.99

La línea NS es todo lo que se necesita para enrutar las consultas del subdominio t1 al servidor t1ns. Usamos un nombre corto para el subdominio, para mantener tanto espacio como sea posible disponible para el tráfico de datos. Al final de la línea NS está el nombre de tu servidor iodined. Puede ser cualquier nombre, apuntando a cualquier lugar, pero en este caso es fácil mantenerlo en el mismo archivo de zona. Debe ser un nombre (no una dirección IP), y ese nombre en sí mismo debe tener un registro A (no un CNAME).

Si tu servidor iodined tiene una IP dinámica, usa un proveedor de DNS dinámico. Simplemente apunta la línea NS a él y omite la línea A:

t1		IN	NS	myname.mydyndnsprovider.com.	; note the dot!

Luego recarga o reinicia tu programa de servidor de nombres. Ahora cualquier consulta DNS para dominios que terminen en t1.mydomain.com se enviará a tu servidor iodined.

Finalmente, inicia iodined en tu servidor. El primer argumento es la dirección IP dentro del túnel, que puede ser de cualquier rango que aún no uses (por ejemplo 192.168.99.1), y el segundo argumento es el dominio asignado (en este caso t1.mydomain.com). Usar la opción -f mantendrá iodined ejecutándose en primer plano, lo que ayuda al probar. iodined abrirá una interfaz virtual ("tun device"), y también comenzará a escuchar solicitudes DNS en el puerto UDP 53. Introduce una contraseña en la línea de comandos (-P pass) o después de que el servidor haya arrancado. Ahora todo está listo para el cliente.

Si existe la posibilidad de que uses un túnel iodine desde entornos inesperados, inicia iodined con una opción -c. La línea de comandos resultante en esta situación de ejemplo:

./iodined -f -c -P secretpassword 192.168.99.1 t1.mydomain.com

Lado del cliente

Toda la configuración está hecha, simplemente inicia iodine. Toma uno o dos argumentos, el primero es el servidor DNS retransmisor local (opcional) y el segundo es el dominio que usaste (t1.mydomain.com). Si no especificas el primer argumento, se consultará la configuración DNS actual del sistema.

Si se permiten consultas DNS a cualquier equipo, puede indicar directamente la dirección del servidor iodined como primer argumento (en el ejemplo: t1ns.mydomain.com o 10.15.213.99). En ese caso, también puede ocurrir que se permita cualquier tráfico al puerto DNS (53 UDP) de cualquier equipo. Iodine lo detectará y cambiará a tunelización UDP directa si es posible. Para forzar la tunelización DNS en cualquier caso, use la opción -r (especialmente útil al probar dentro de su propia red).

La interfaz de túnel del cliente obtendrá una IP cercana a la del servidor (en este caso 192.168.99.2 o .3, etc.) y una MTU adecuada. Introduzca la misma contraseña que en el servidor, ya sea como opción de línea de comandos o después de que el cliente se haya iniciado. Usar la opción -f mantendrá el cliente iodine ejecutándose en primer plano.

La línea de comandos resultante en esta situación de ejemplo, añadiendo -r fuerza la tunelización DNS incluso si la tunelización UDP directa fuera posible:

./iodine -f -P secretpassword t1.mydomain.com

Desde cualquiera de los dos lados, ahora debería poder hacer ping a la dirección IP del otro extremo del túnel. En este caso, ping 192.168.99.1 desde el cliente iodine, y 192.168.99.2 desde el servidor iodine.

INFORMACIÓN VARIOS

IPv6

Los datos dentro del túnel son solo IPv4.

El servidor escucha tanto IPv4 como IPv6 para solicitudes entrantes de forma predeterminada. Use las opciones -4 o -6 para escuchar solo en un protocolo. El modo directo se intentará en el mismo protocolo que se usó para el inicio de sesión.

El cliente puede usar servidores de nombres IPv4 o IPv6 para conectarse a iodined. Los servidores de nombres de retransmisión traducirán entre protocolos automáticamente si es necesario. Use las opciones -4 o -6 para forzar al cliente a usar una versión de IP específica para sus consultas DNS.

Si su servidor está escuchando en IPv6 y es accesible, añada un registro AAAA para él en su configuración DNS. Extendiendo el ejemplo anterior, quedaría así:

t1		IN	NS	t1ns.mydomain.com.		; note the dot!
t1ns		IN	A	10.15.213.99
t1ns		IN	AAAA	2001:db8::1001:99

Enrutamiento

Es posible enrutar todo el tráfico a través del túnel DNS. Para ello, primero añada una ruta de host al servidor de nombres usado por iodine sobre la interfaz cableada/inalámbrica con la puerta de enlace predeterminada como puerta de enlace. Después, reemplace la puerta de enlace predeterminada por la dirección IP del servidor iodined dentro del túnel DNS, y configure el servidor para hacer NAT.

Sin embargo, tenga en cuenta que el tráfico de datos tunelizado no está cifrado en absoluto, y puede ser leído y modificado por terceros con relativa facilidad. Para máxima seguridad, ejecute una VPN a través del túnel DNS (=doble tunelización), o use acceso por shell seguro (SSH), posiblemente con reenvío de puertos. Este último también puede usarse para navegar por la web, cuando ejecuta un proxy web (por ejemplo Privoxy) en su servidor.

Pruebas

El servidor iodined responde a las solicitudes NS enviadas para subdominios del dominio del túnel. Si su subdominio iodined es t1.mydomain.com, envíe una solicitud NS para foo123.t1.mydomain.com para ver si la delegación funciona. dig es una buena herramienta para esto:

Descargar herramienta