← All projects

ag-guvenligi-ve-analizi-bro-zeek-odevi

● Zeek ★ 2 ⑂ 0 Last updated: November 25, 2025

🔍 DNS Tünelleme Tespiti - Zeek/Bro Analizi

Zeek Docker License Network Security

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

  1. 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
  1. Docker container'ı başlatın:
docker-compose up -d
  1. 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.


Made with Zeek Network Security

Geliştirici: @cagatayuresin