
DNSChef - proxy DNS per Penetration Tester e Analisti di Malware
| | versione 0.4 | | / _|
| | __ ___ | | __| |
/ ` | ' / |/ | ' \ / _ \ |
| (| | | | _ \ (| | | | __/ |
_,|| ||/_|| ||___||
D O C U M E N T A Z I O N E
DNSChef è un proxy DNS altamente configurabile per tester di penetrazione e analisti di malware. Un proxy DNS (anche noto come "Fake DNS") è uno strumento utilizzato per l'analisi del traffico di rete delle applicazioni, tra gli altri usi. Ad esempio, un proxy DNS può essere usato per falsificare richieste verso "badguy.com" in modo che puntino a una macchina locale per la terminazione o l'intercettazione invece che a un host reale su Internet.
Esistono diversi proxy DNS là fuori. La maggior parte si limita a indirizzare tutte le query DNS verso un singolo indirizzo IP o implementa solo un filtraggio rudimentale. DNSChef è stato sviluppato nell'ambito di un penetration test dove c'era la necessità di un sistema più configurabile. Di conseguenza, DNSChef è un'applicazione multipiattaforma in grado di forgiare risposte basate su elenchi di domini inclusivi ed esclusivi, supportare più tipi di record DNS, abbinare domini con wildcard, inoltrare le risposte reali per i domini non corrispondenti, definire file di configurazione esterni, IPv6 e molte altre funzionalità. Di seguito troverai una spiegazione dettagliata di ciascuna funzionalità e suggerimenti per l'utilizzo.
L'uso di un proxy DNS è consigliato in situazioni in cui non è possibile forzare un'applicazione a utilizzare direttamente un altro proxy. Ad esempio, alcune applicazioni mobili ignorano completamente le impostazioni del proxy HTTP del sistema operativo. In questi casi, l'uso di un proxy DNS come DNSChef ti permetterà di ingannare quell'applicazione facendole instradare le connessioni verso la destinazione desiderata.
Prima di poter iniziare a usare DNSChef, devi configurare la tua macchina in modo che utilizzi un nameserver DNS con lo strumento in esecuzione. Hai diverse opzioni a seconda del sistema operativo che intendi utilizzare:
Linux - Modifica /etc/resolv.conf per includere una riga all'inizio con il tuo host di analisi del traffico (ad esempio, aggiungi "nameserver 127.0.0.1" se stai eseguendo localmente). In alternativa, puoi aggiungere un indirizzo del server DNS utilizzando strumenti come Network Manager. All'interno di Network Manager, apri Impostazioni IPv4, seleziona Solo indirizzi Automatic (DHCP) o Manuale dal menu a tendina Metodo e modifica la casella di testo Server DNS per includere un indirizzo IP con DNSChef in esecuzione.
Windows - Seleziona Connessioni di rete dal Pannello di controllo. Successivamente seleziona una delle connessioni (ad es. "Connessione alla rete locale"), fai clic destro su di essa e seleziona Proprietà. Dalla finestra di dialogo che appare, seleziona Protocollo Internet (TCP/IP) e fai clic su Proprietà. Infine seleziona il pulsante di opzione Utilizza i seguenti indirizzi server DNS e inserisci l'indirizzo IP con DNSChef in esecuzione. Ad esempio, se esegui localmente, inserisci 127.0.0.1.
OS X - Apri Preferenze di Sistema e fai clic sull'icona Rete. Seleziona l'interfaccia attiva e inserisci il campo Server DNS. Se stai usando Airport, dovrai fare clic sul pulsante Avanzate... e modificare i server DNS da lì. In alternativa, puoi modificare /etc/resolv.conf e aggiungere un nameserver falso all'inizio (ad es. "nameserver 127.0.0.1").
iOS - Apri Impostazioni e seleziona Generali. Successivamente seleziona Wi-Fi e fai clic sulla freccia blu a destra di un punto di accesso attivo dall'elenco. Modifica la voce DNS in modo che punti all'host con DNSChef in esecuzione. Assicurati di aver disabilitato l'interfaccia cellulare (se disponibile).
Android - Apri Impostazioni e seleziona Wireless e reti. Fai clic su Impostazioni Wi-Fi e seleziona Avanzate dopo aver premuto il pulsante Opzioni sul telefono. Abilita la casella Usa IP statico e configura un server DNS personalizzato.
Se non hai la possibilità di modificare manualmente le impostazioni DNS del dispositivo, hai comunque diverse opzioni che coinvolgono tecniche come ARP Spoofing, Rogue DHCP e altri metodi creativi.
Infine, devi configurare un servizio falso a cui DNSChef indirizzerà tutte le richieste. Ad esempio, se stai cercando di intercettare il traffico web, devi avviare un server web separato in esecuzione sulla porta 80 o impostare un proxy web (ad es. Burp) per intercettare il traffico. DNSChef indirizzerà le query al tuo host proxy/server con servizi configurati correttamente.
DNSChef è un'applicazione multipiattaforma sviluppata in Python che dovrebbe funzionare sulla maggior parte delle piattaforme che dispongono di un interprete Python. Puoi utilizzare l'eseguibile dnschef.exe fornito per eseguirlo su host Windows senza installare un interprete Python. Questa guida si concentrerà sugli ambienti Unix; tuttavia, tutti gli esempi seguenti sono stati testati per funzionare anche su Windows.
Proviamo un assaggio di DNSChef con la sua funzionalità di monitoraggio più basilare. Esegui il seguente comando come root (necessario per avviare un server sulla porta 53):
# ./dnschef.py
_ _ __
| | versione 0.2 | | / _|
__| |_ __ ___ ___| |__ ___| |_
/ _` | '_ \/ __|/ __| '_ \ / _ \ _|
| (_| | | | \__ \ (__| | | | __/ |
\__,_|_| |_|___/\___|_| |_|\___|_|
[email protected]
[*] DNSChef avviato sull'interfaccia: 127.0.0.1
[*] Utilizzo dei seguenti nameserver: 8.8.8.8
[*] Nessun parametro specificato. Esecuzione in modalità proxy completo
Senza parametri, DNSChef funzionerà in modalità proxy completo. Ciò significa che tutte le richieste verranno semplicemente inoltrate a un server DNS upstream (8.8.8.8 per impostazione predefinita) e restituite all'host richiedente. Ad esempio, interroghiamo un record "A" per un dominio e osserviamo i risultati:
$ host -t A thesprawl.org
thesprawl.org has address 108.59.3.64
DNSChef stamperà la seguente riga di log che mostra l'ora, l'indirizzo IP di origine, il tipo di record richiesto e, cosa più importante, quale nome è stato interrogato:
[23:54:03] 127.0.0.1: inoltro della risposta di tipo 'A' per thesprawl.org
Questa modalità è utile per il semplice monitoraggio delle applicazioni, quando è necessario scoprire quali domini utilizza per le sue comunicazioni.
DNSChef supporta completamente IPv6, che può essere attivato usando i flag -6 o --ipv6*. Funziona esattamente come la modalità IPv4, con l'eccezione che l'interfaccia di ascolto predefinita viene cambiata in ::1 e il server DNS predefinito viene cambiato in 2001:4860:4860::8888. Ecco un esempio di output:
# ./dnschef.py -6
_ _ __
| | versione 0.2 | | / _|
__| |_ __ ___ ___| |__ ___| |_
/ _` | '_ \/ __|/ __| '_ \ / _ \ _|
| (_| | | | \__ \ (__| | | | __/ |
\__,_|_| |_|___/\___|_| |_|\___|_|
[email protected]
[*] Utilizzo della modalità IPv6.
[*] DNSChef avviato sull'interfaccia: ::1
[*] Utilizzo dei seguenti nameserver: 2001:4860:4860::8888
[*] Nessun parametro specificato. Esecuzione in modalità proxy completo
[00:35:44] ::1: inoltro della risposta di tipo 'A' per thesprawl.org
[00:35:44] ::1: inoltro della risposta di tipo 'AAAA' per thesprawl.org
[00:35:44] ::1: inoltro della risposta di tipo 'MX' per thesprawl.org