ag-guvenligi-ve-analizi-bro-zeek-odevi
🔍 DNS Tünelleme Tespiti - Zeek/Bro Analizi
Zeek (eski adıyla Bro) kullanarak DNS tünelleme saldırılarının tespiti ve analizi
📋 İçindekiler
🎯 Proje Hakkında
Bu proje, Zeek (Bro) ağ analiz aracı kullanarak DNS tünelleme saldırılarını tespit etmek için geliştirilmiştir. DNS tünelleme, kötü niyetli aktörlerin DNS protokolünü kullanarak güvenlik duvarlarını atlatmak ve veri sızdırmak için kullandığı bir tekniktir.
Proje kapsamında dnscat2 DNS tünelleme trafiği analiz edilmiş ve çeşitli tespit yöntemleri uygulanmıştır.
✨ Özellikler
- 🔎 Uzun Domain İsimleri Tespiti: Anormal uzunluktaki domain isimlerini algılar (>50 karakter)
- 📊 TXT Sorgu Analizi: Şüpheli TXT kayıt sorgularını tespit eder
- 📈 Yüksek Sorgu Oranı Tespiti: Belirli zaman aralığında aşırı DNS sorgusu yapan kaynakları belirler
- 🐳 Docker Desteği: Kolay kurulum ve taşınabilir çalışma ortamı
- 📝 Otomatik Loglama: Tespit edilen anomaliler otomatik olarak loglanır
- 📄 CSV Export: Sonuçları CSV formatında dışa aktarma
🚀 Kurulum
Gereksinimler
- Docker
- Docker Compose
Adımlar
- Repoyu klonlayın:
git clone https://github.com/cagatayuresin/ag-guvenligi-ve-analizi-bro-zeek-odevi.git
cd ag-guvenligi-ve-analizi-bro-zeek-odevi
- Docker container'ı başlatın:
docker-compose up -d
- Container'a bağlanın:
docker exec -it zeek bash
💻 Kullanım
PCAP Analizi
Zeek container içinde PCAP dosyasını analiz edin:
cd /usr/local/zeek
zeek -C -r /pcap/dnscat2_dns_tunneling_24hr.pcap scripts/dns_tunnel_detect.zeek
Sonuçları İnceleme
Notice loglarını görüntüleyin:
cat notice.log | zeek-cut ts id.orig_h id.resp_h note msg
TXT sorgularını filtreleyin:
cat dns.log | zeek-cut ts id.orig_h id.resp_h qtype_name query | grep TXT
Uzun domain isimlerini bulun:
cat dns.log | zeek-cut ts id.orig_h id.resp_h query | awk 'length($4) > 30'
CSV Export
Logları CSV formatına çevirin:
# TSV formatına çevir
cat notice.log | zeek-cut ts id.orig_h id.resp_h note msg > notice_clean.tsv
# CSV'ye dönüştür
tr '\t' ',' < notice_clean.tsv > notice_clean.csv
# Host sisteme kopyala
docker cp zeek:/usr/local/zeek/notice_clean.csv .
🎯 Tespit Yöntemleri
1. Uzun Domain İsmi Tespiti
DNS tünelleme sırasında veri, domain isimlerinde kodlanarak gönderilir. Bu nedenle anormal uzunluktaki domain isimleri şüphelidir.
if ( |domain| > LONG_DOMAIN_THRESHOLD )
NOTICE([$note=DNS_TUNNELING_DETECTED, ...])
2. TXT Kayıt Sorguları
TXT kayıtları, DNS tünellemede sıkça kullanılır çünkü daha fazla veri taşıyabilir.
if ( qtype == 16 ) # TXT record type
NOTICE([$note=DNS_TUNNELING_DETECTED, ...])
3. Yüksek Sorgu Oranı
Normal DNS trafiğine göre çok daha yüksek oranda sorgu yapan kaynaklar tespit edilir.
if ( query_count[src] > QUERY_THRESHOLD )
NOTICE([$note=DNS_TUNNELING_DETECTED, ...])
📊 Örnek Çıktılar
Analiz sonucunda notice.log dosyasında şu tür uyarılar oluşur:
[LONG DOMAIN] 192.168.1.100 -> a3f8d9e2c1b4567890abcdef1234567890abcdef.example.com
[TXT QUERY] 192.168.1.100 -> tunnel.malicious.com
[HIGH QUERY RATE] 192.168.1.100 made 150 queries in 10 seconds
📁 Dosya Yapısı
.
├── docker-compose.yaml # Docker yapılandırması
├── LICENSE # Lisans dosyası
├── README.md # Bu dosya
├── sunum-komutlari.md # Sunum için kullanılan komutlar
├── notice_clean.csv # Export edilen CSV sonuçları
├── logs/ # Zeek log dosyaları
├── pcap/ # Analiz için PCAP dosyaları
│ ├── dns_tunnel_demo.pcap
│ └── dnscat2_dns_tunneling_24hr.pcap
└── scripts/ # Zeek script'leri
└── dns_tunnel_detect.zeek # DNS tünelleme tespit script'i
📚 Kaynaklar
🤝 Katkıda Bulunma
Katkılarınızı memnuniyetle karşılıyorum! Pull request göndermekten çekinmeyin.
📄 Lisans
Bu proje MIT lisansı altında lisanslanmıştır. Detaylar için LICENSE dosyasına bakın.
Geliştirici: @cagatayuresin
cagatayuresin