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.0k598107hace 2 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 software que te permite tunelizar datos IPv4 a través de un servidor DNS. Esto puede ser útil en diferentes situaciones donde el acceso a internet está bloqueado por un firewall, pero las consultas DNS están permitidas.

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 librería 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 usas 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. Reemplaza 192.168.0.1 con 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.
  • Intenta 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 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 cual ayuda al probar. iodined abrirá una interfaz virtual ("tun device"), y también comenzará a escuchar consultas 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 iniciado. 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, solo 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 las consultas DNS están permitidas a cualquier computadora, puedes dar 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 cualquier tráfico esté permitido al puerto DNS (53 UDP) de cualquier computadora. Iodine detectará esto, y cambiará a tunelización UDP cruda si es posible. Para forzar la tunelización DNS en cualquier caso, usa la opción -r (especialmente útil al probar dentro de tu propia red).

La interfaz del 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. Introduce 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 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 cruda fuera posible:

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

Desde cualquiera de los lados, ahora deberías poder hacer ping a la dirección IP en el 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.

INFO VARIOS

IPv6

Los datos dentro del túnel son solo IPv4.

El servidor escucha tanto IPv4 como IPv6 para solicitudes entrantes por defecto. Usa las opciones -4 o -6 para escuchar solo en un protocolo. Se intentará el modo crudo 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 retransmisores traducirán entre protocolos automáticamente si es necesario. Usa las opciones -4 o -6 para forzar al cliente a usar una versión de IP específica para sus consultas DNS.

Si tu servidor está escuchando en IPv6 y es accesible, añade un registro AAAA para él en tu configuración DNS. Extender el ejemplo anterior se verí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 hacer esto, primero añade 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. Luego reemplaza la puerta de enlace predeterminada con la dirección IP del servidor iodined dentro del túnel DNS, y configura el servidor para hacer NAT.

Sin embargo, ten 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, ejecuta una VPN a través del túnel DNS (=doble tunelización), o usa acceso secure shell (SSH), posiblemente con reenvío de puertos. Este último también se puede usar para navegar por la web, cuando ejecutas un proxy web (por ejemplo Privoxy) en tu servidor.

Pruebas

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

% dig -t NS foo123.t1.mydomain.com
ns.io.citronna.de.
Descargar herramienta