Forensics: traccia l'origine della query DNS sull'host?

4

Così ho provato a cercare sul Web le risposte ma non ne ho trovato.

C'è un modo per rintracciare quale file o applicazione exe ha causato al computer di effettuare una query DNS specifica?

    
posta Chechik 09.05.2015 - 13:59
fonte

1 risposta

1

Qualsiasi applicazione può facilmente inviare qualsiasi richiesta di risoluzione DNS. Sono disponibili numerose librerie e i programmatori possono scegliere di eseguire le risoluzioni in qualsiasi modo. Ad esempio, in Python è una riga di codice (forse due)

import dns.resolver
answers = dns.resolver.query('dnspython.org', 'MX')

Per collegare un'applicazione reale all'UDP (supponendo che stia usando il protocollo UDP predefinito) la "sessione" utilizzata per inviare la richiesta, è un compito piuttosto difficile. Esistono strumenti disponibili per diversi sistemi operativi (ad esempio HomeProject o Microsoft Network Monitor) che possono aiutare in questa direzione.

Ricorda che il processo di risoluzione richiede all'incirca alcuni millisecondi (il DNS è in competizione tra i protocolli più veloci). Il processo di risoluzione di un nome di dominio per ottenere l'indirizzo IP a cui si risolve, è delegato dal stub resolver ("l'applicazione" che richiede l'indirizzo IP per un nome di dominio corrispondente) a un Recursive DNS Server (alias% codice%). Un esempio di tale server è il DNS pubblico di Google, a RDNS e 8.8.8.8 . Molto probabilmente il tuo ISP fornirà gli indirizzi IP dei server 8.8.4.4 che opera sul tuo modem / router di casa, che li invierà ai dispositivi ad esso collegati (tramite RDNS per esempio).

Tra le altre cose DHCP server memorizzerà un nome di dominio corrispondente alla coppia indirizzo IP nella loro memoria interna RDNS per un certo periodo di tempo ( cache , Time To Live). Ciò significa che se si esegue una richiesta di risoluzione entro tale intervallo di tempo, il server TTL non scenderà processo di risoluzione ricorsiva , ma risponderà con l'indirizzo IP corrispondente già presente in memoria. Pertanto, il RDNS otterrà una risposta estremamente veloce. Ad esempio, questo è il tempo necessario per eseguire una risoluzione:

La prima volta

;; Query time: 248 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)

La seconda volta

;; Query time: 40 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)

Quello che stai cercando di fare è monitorare quale applicazione ha aperto un socket UDP sul tuo sistema e ascoltato quel socket per una risposta, per meno di 3 secondi (il valore di timeout predefinito per DNS). Se non stai monitorando continuamente sia il traffico che i processi ascoltando porte specifiche, allora per quanto ne so, non c'è modo di ottenere la corrispondenza. Per uso futuro, sarà possibile abbinare un processo e una richiesta di risoluzione DNS corrispondente, osservando le porte utilizzate. Ad esempio, se stub resolver apre la porta application 1 e vedi una richiesta DNS nel traffico di rete allo stesso tempo con 7788 uguale a source port (la destinazione sarà molto probabilmente 7788 ), allora hai il applicazione!

    
risposta data 13.05.2015 - 04:49
fonte

Leggi altre domande sui tag