Passive DNS: Rendiamo difficile la vita ai malware con Elasticsearch e Packetbeat

In questa prima puntata installeremo elasticsearch e packetbeat e confronteremo le query DNS con il top 1m Alexa

Questo video è stato ispirato dalla presentazione di F-Secure “Making Life Difficult for Malware” pubblicata su blackhat.com che spiega come, adottando semplici contromisure e filtri sul protocollo DNS, possiamo limitare moltissimo attività come: connessioni a C&C e DNS Tunneling:

slide di Making Life Difficult for Malware

Link

Making Life Difficult for Malware https://www.blackhat.com/docs/webcast/bh-wb-May12-Making_Life_Difficult_for_Malware.pdf (Jarno Niemelä)

Detecting DNS Tunnels with Packetbeat and Watcher https://www.elastic.co/blog/detecting_dns_tunnels_with_packetbeat_and_watcher

Lo script python che ho usato nel video

#!/usr/bin/env python
import sys, re, json
top1m = {}
with open('top-1m.csv') as f:
for line in f:
d = re.search('^([0-9]+)\,(.+)$', line.strip())
if d is not None:
top1m[d.group(1)] = d.group(2)
obj = json.load(sys.stdin)
for i in obj['hits']['hits']:
domain = i['_source']['dns']['question']['etld_plus_one'][0:-1]
query = i['_source']['dns']['question']['name'][0:-1]
if domain not in top1m.values():
print query+' ('+domain+')'

Puntata 2

stay tuned per la prossima puntata in cui useremo dnsmasq per bloccare la risoluzione di domini che non fanno parte della lista top-1m Alexa.