Derinlemesine savunmanın önemli katmanlarından biri olduğunu düşündüğüm Windows tabanlı istemcilerdeki Sysmon loglarının ve event logların SIEM‘e gönderilmesi olası tehditlerin incelenmesi, ağdaki görünürlük seviyesinin yükseltilmesi için oldukça önemli. Dolayısıyla, farklı kaynaklardan toplanan logların korele edilmesi, alarmlarının oluşturulması ve sonrasında ilgili logların incelenmesi için tüm logların merkezi olarak toplanması önem arz etmekte.
Bu yazı kapsamında, Windows tabanlı istemcilerde üretilen DNS loglarını belli bir istemciden topladıktan sonra, ilgili logları zenginleştirmeye ve sonrasında, zararlı olduğu öngörülen spesifik bir DNS kaydına odaklanmaya çalışalım.
Öncelikle hedef istemci bilgisayardan aşağıdaki Powershell komutlarıyla Sysmon EventID=22 olarak kayıtlı logları toplayalım. İlgili scriptin tamamına bu bağlantıdan erişebilirsiniz.
$account = @()
$events = Get-WinEvent -FilterHashtable @{logname="Microsoft-Windows-Sysmon/Operational"; Id=22}
ForEach ($event in $events)
{
if ($event.Message.Contains("QueryName"))
{
$Dictionary = @{}
$string = $event.Message.ToString()
$string.Split([environment]::NewLine,[System.StringSplitOptions]::RemoveEmptyEntries) | ForEach-Object {
$key,$value = $_.Split(':')
$Dictionary[$key] =$value
}
}
$Dictionary.Item("QueryName").Trim() >> C:\SysmonTriage\dnsQueries.csv
}
dnsQueries.csv dosyasını aldıktan sonra, tekrarlı, “-” ve “,” içeren DNS kayıtlarını temizleyelim.
cat dnsQueries.csv | sort | uniq | grep -v "_" | grep "\b$word\." | grep -v "," > sysmonDNSlist.txt
İnceleyeceğimiz DNS kayıtlarını incelemeye hazır hale getirdikten sonra kullananacağımız araçları hazırlamaya başlayalım.
sudo apt-get install whois -y
sudo apt-get install jq -y
sudo apt-get install figlet -y
sudo apt-get install libreoffice -y
git clone https://github.com/markbaggett/freq
cd freq
İlk kullanacağımız araç Mark Bagget tarafından geliştirilen “freq.py” aracı… Freq aracını kullanarak, incelenecek DNS kayıtlarının C2 veya DGA algoritmalarıyla oluşturulup oluşturulmadığına dair sonuçları; frekans analizi, harflerin arka arkaya gelme olasılıkları gibi analizlerle entropi değeri elde edilerek hesaplanıyor.
Aşağıdaki ekran alıntısında parantez içerisinde yer alan iki farklı sonuç iki farklı hesaplama metoduyla elde edilen entropy değerlerini göstermekte. Kesin sonuç olmamakla birlikte entropi değeri düşük olan sonucun C2 veya DGA ile üretildiği konusunda şüpheye varılabilir.

Bir diğer örnekle devam edelim. İki farklı methodla hesaplanan sonuçlar…

Konuyla ilgili daha ayrıntılı bilgi için bu bağlantıdaki videoyu izlemenizi tavsiye ederim.
DNS kayıtlarını freq.py süzgecinden geçirmekle birlikte her bir DNS kaydı için aşağıdaki bilgileri elde etmeye çalışalım:
- Domain kaydının güncellendiği gün,
- Domain kaydının alındığı gün zaman,
- Domain kaydıyla eşleşen IP adresi,
- Domain kaydına dair şehir ve ülke bilgileri
- AlienVault, Talos ve ThreatCrowd veri tabanlarına erişim için bağlantı adreslerini
input="sysmonDNSlist.txt"
while IFS= read -r line
do
echo Checking ... $line ... OK
output=($(python3 freq.py -m $line freqtable2018.freq))
output2=($(whois $line | grep 'Creation Date' | awk '{print $3}' | grep -v + ))
output3=($(whois $line | grep 'Updated Date' | awk '{print $3}' | grep -v + ))
output4=($(cat top-1m.csv | grep $line | wc -l ))
output5=($(curl -s http://ip-api.com/json/$line| jq '.query' | tr -d '"' ))
output6=($(curl -s http://ip-api.com/json/$line | jq '.region' | tr -d '"' ))
output7=($(curl -s http://ip-api.com/json/$line| jq '.city' | tr -d '"' ))
output8=($(echo https://otx.alienvault.com/indicator/domain/$line ))
output9=($(echo https://talosintelligence.com/reputation_center/lookup?search=$line ))
output10=($(echo https://www.threatcrowd.org/domain.php?domain=$line ))
İlgili scriptin tamamına bu bağlantıdan erişebilirsiniz. Scripti çalıştıralım:

Sonuçları inceleyerek devam edelim.

Elde ettiğimiz CSV dosyasından düşük entropi değerine sahip bir domain adının sonucu:

Faydalı olması dileğiyle…
Kaynaklar:
1- https://github.com/sans-blue-team/freq.py
2- https://github.com/kaptankojiro/sysmondnsenrich/blob/main/sysmonDNSparser.ps1
3- https://github.com/kaptankojiro/sysmondnsenrich/blob/main/dnsquery.sh
4- https://twitter.com/markbaggett
5- https://www.youtube.com/watch?v=qDfmTT9R2Fw
6- https://blog.malwarebytes.com/security-world/2016/12/explained-domain-generating-algorithm/
7- http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.20.1016
Birisi “İstemci DNS Loglarının Zenginleştirilmesiyle Tehdit Analizi” üzerinde düşündü