İçeriğe geç
NetDevOps
8 dk okuma Güvenlik

Maltrail Saldiri Tespit ve Kurulumu

Ağınızda bir cihazın malware C2 sunucusuyla konuştuğunu, ama bunu haftalar sonra fark ettiğinizi düşünün. IDS kuralları güncel değil, firewall logları kimse bakmıyor, SIEM ise henüz hayal. Maltrail tam bu boşluğa oturuyor: pasif olarak SPAN portundan akan trafiği dinliyor, bilinen kötücül domainler, IP adresleri ve URL'lere karşı eşleştiriyor, şüpheli aktiviteyi web arayüzünde görünür kılıyor.

Maltrail açık kaynaklı, Python ve Rust ile yazılmış bir malicious traffic detection sistemi. Miroslav Stampar ve Mikhail Kasimov tarafından geliştiriliyor, MIT lisanslı. 8.600'den fazla GitHub yıldızı var ve OPNsense, pfSense gibi güvenlik duvarlarına da plugin olarak entegre edilebiliyor.

Sensor ve Server Ayrımı

Maltrail iki bağımsız process olarak çalışır. Sensor trafiği yakalar, trail denen göstergelerle eşleştirir, heuristic analiz yapar. Server ise olayları saklar, web arayüzünü sunar, API sağlar. Varsayılan kurulumda ikisi aynı makinede çalışır ama dağıtık mimaride sensorler farklı network segmentlerinde, server merkezi bir noktada olabilir.

Sensor libpcap üzerinden çalışır. SPAN/mirror portuna bağlı bir interface, transparent bridge veya honeypot makinesi üzerinde pasif dinleme yapar. Root yetkisi gerekir çünkü raw packet capture yapar. Server ise root olmadan çalışabilir.

   ┌──────────┐   events (UDP or file)   ┌──────────┐
   │  sensor  │ ───────────────────────► │  server  │ ◄── browser
   └──────────┘                          └──────────┘
    Rust                                  Python
    libpcap + PACKET_FANOUT               reporting UI + API
    trail matching + heuristics

Yeni sürümlerde sensor Python yerine Rust ile yazılmış. Performans farkı belirgin: eski Python sensörüne göre 14-37 kat daha düşük per-packet maliyet ölçülmüş. Tek worker varsayılan, gerekirse CAPTURE_FANOUT ile çoğaltılabilir ama her worker eklendiğinde bazı heuristiclerin hassasiyeti düşer.

Trail Nedir

Maltrail'in temel kavramı trail. Bir trail; domain (örn. zvpprsensinaix.com), URL, IP adresi, IP:port çifti, User-Agent stringi, JA3/JA4 TLS fingerprint veya sertifika hash olabilir. Her trail bir classification ve kaynak ile birlikte gelir.

Trail seti dört kaynaktan birleştirilir:

  • Feeds: abuseipdb, alienvault, emergingthreats, greensnow gibi 42+ public threat intelligence feed'i

  • Custom: kendi belirlediğiniz göstergeler, CUSTOM_TRAILS_DIR altında

  • Static: stamparm/trails reposunda toplanmış, antivirus raporlarından derlenmiş büyük liste

  • Engine lists: mass_scanner.txt gibi nadiren değişen dahili listeler

Static trail seti ayrı bir repository'de tutulur ve detection içeriği günde onlarca kez güncellenir. STATIC_TRAILS_URL ile belirli bir release'e sabitleyebilirsiniz, böylece kötü bir yayın anında tüm deployment'ları etkilemez.

Kurulum

En temiz yol installer script'i kullanmak. 12 Linux dağıtımı, FreeBSD, NetBSD, OpenBSD ve macOS'ta test edilmiş.

curl -fsSL https://raw.githubusercontent.com/stamparm/maltrail/master/install.sh | sudo sh

Installer bağımlılıkları kurar, /opt/maltrail altında managed checkout oluşturur, checksum doğrular, maltrail adında ayrıcalıksız bir kullanıcı açar, systemd unit'lerini kurar, log ve state dizinlerini hazırlar, sensor ve server'ı başlatır. Tekrar çalıştırıldığında upgrade yapar.

Kaynak koddan derlemek isterseniz sensor için Rust 1.74+, libpcap-dev ve capability tools gerekir:

sudo apt-get install cargo libpcap-dev libcap2-bin python3
git clone --depth 1 https://github.com/stamparm/maltrail.git
cd maltrail
cargo build --release --manifest-path sensor/Cargo.toml
sudo setcap cap_net_raw,cap_net_admin=eip sensor/target/release/maltrail-sensor
sensor/target/release/maltrail-sensor -T

-T flag'i deployment validation yapar. Config, trails, whitelist, capture filter, ayrıcalıklar, log storage hepsini kontrol eder. Systemd unit'leri bunu ExecStartPre olarak çalıştırır, böylece eksik ayrıcalık veya yazılamaz log dizini gibi sorunlar sessizce başarısız olmaz.

Docker ile de kurulabilir:

docker run -d --name maltrail --restart=unless-stopped \
  -p 8338:8338/tcp -p 8337:8337/udp \
  -v /etc/maltrail.conf:/opt/maltrail/maltrail.conf:ro \
  ghcr.io/stamparm/maltrail:latest

Yapılandırma

maltrail.conf tek dosyada hem Sensor hem Server ayarlarını tutar. Format whitespace-separated KEY VALUE, INI tarzı değil. # [Sensor] ve # [Server] satırları sadece yorum, gruplama için.

Önemli sensor ayarları:

MONITOR_INTERFACE any
CAPTURE_FILTER udp or icmp or (tcp and (tcp[tcpflags] == tcp-syn or port 80 or port 1080 or port 3128 or port 8000 or port 8080 or port 8118))
CAPTURE_FANOUT 1
USE_HEURISTICS true
UPDATE_PERIOD 86400
DISABLED_FEEDS turris, ciarmy, policeman, myip, alienvault
IP_MINIMUM_FEEDS 3
USER_WHITELIST /etc/maltrail/user_whitelist.txt
CUSTOM_TRAILS_DIR /etc/maltrail/custom_trails

IP_MINIMUM_FEEDS 3, bir IP'nin en az 3 bağımsız feed'de görünmesi gerektiği anlamına gelir. Tek feed'de olan IP'leri elemek false positive'leri ciddi azaltır.

Server ayarları:

HTTP_ADDRESS 0.0.0.0
HTTP_PORT 8338
USE_SSL false
USERS
    admin:9ab3cd9d67bf49d01f6a2e33d0bd9bc804ddbe6ce1ff5d219c42624851db5dbc:0:

Varsayılan şifre changeme!. Hemen değiştirin:

echo -n 'YourSecurePassword' | sha256sum | cut -d " " -f 1

Çıkan hash'i USERS satırına yapıştırın. UID 0 admin, 1000 ve üzeri read-only kullanıcı. Ayrıca filtre network maskesi ekleyerek kullanıcının sadece kendi ağından gelen event'leri görmesini sağlayabilirsiniz.

Dağıtık kurulumda sensor tarafında LOG_SERVER, server tarafında UDP_ADDRESS ve UDP_PORT aktif edilir:

# Sensor tarafında
LOG_SERVER 192.168.1.10:8337

# Server tarafında
UDP_ADDRESS 0.0.0.0
UDP_PORT 8337

Web Arayüzü ve API

Dashboard http://sunucu-ip:8338 adresinde çalışır. Tek günün event'lerini gösterir, date picker ile geçmiş günlere gidilebilir. Event'ler /events endpoint'inden stream edilir, tarayıcıda threats adı verilen (source, trail) çiftlerine göre gruplanır.

Önemli özellikler:

  • Live mode: yeni event'ler Server-Sent Events ile anlık push edilir

  • Retro hunt: tüm saklanan loglarda tek bir gösterge arar

  • World map: event'lerin coğrafi dağılımı

  • Triage: new/investigating/resolved/false positive durumları, notlar, etiketler

  • Export: CSV, JSON veya defanged indicator olarak dışa aktarım

API üzerinden indicator lookup yapılabilir:

curl 'http://127.0.0.1:8338/check?q=www.sub.evil.example'
{
  "query": "www.sub.evil.example",
  "found": true,
  "trail": "evil.example",
  "info": "asyncrat (malware)",
  "reference": "(static)",
  "confidence": 100
}

Confidence skoru 0-100 arası. Tek feed'de 40, her ek bağımsız feed +15, custom ve static entry'ler tam puan. Firewall kuralı yazmadan önce confidence'ı kontrol etmek faydalı.

Detection Test

Kurulumun gerçekten çalıştığını doğrulamak için:

python3 server.py --detect-test

Bu komut crafted pcap içindeki emulated malicious traffic'ı replay eder. DNS query, IP, IP:port, URL path, Host header eşleşmeleri ile SQL injection, traversal, RCE, XSS, proxy-probe, sinkhole, missing-Host ve port/web/infection-scanning heuristic'lerinin hepsinin tetiklenmesini bekler. Sağlıklı kurulum 20/20 detection(s) fired çıktısı verir.

Syslog ve Logstash Entegrasyonu

Maltrail event'leri dış SIEM'e gönderebilir. Syslog için:

SYSLOG_SERVER 192.168.1.20:514

Logstash/JSON için:

LOGSTASH_SERVER 192.168.1.20:5000

REMOTE_SEVERITY_REGEX ile hangi event'lerin gönderileceği kontrol edilir. Varsayılan regex high, medium, low severity kategorilerine ayırır.

Fail2ban entegrasyonu da var. /fail2ban endpoint'i attacker IP'lerini fail2ban formatında döner, böylece Maltrail'in flag'lediği kaynak IP'ler otomatik banlanabilir.

Prometheus Metrikleri

STATS_ADDRESS aktif edilirse sensor Prometheus metrikleri yayar. İzlenmesi gerekenler:

  • maltrail_up == 0: capture worker çalışmıyor

  • maltrail_capture_dropped_total artıyor: capture ring packet drop ediyor

  • maltrail_local_log_errors_total artıyor: event üretiliyor ama yazılamıyor

  • maltrail_trail_generation ilerlemiyor: trail set güncellenmiyor

  • maltrail_log_dir_free_bytes: kalan disk kapasitesi

Event Saklama

Maltrail log rotate veya silme yapmaz. Günlük log dosyaları /var/log/maltrail altında birikir. Retention politikasını operatör belirlemeli. Öneri: kalıcı kopyayı LOG_SERVER, SYSLOG_SERVER veya LOGSTASH_SERVER ile merkezi sisteme gönderin, local log'ları external tooling ile rotate edin.

Tipik Senaryolar

Maltrail'in güçlü olduğu alanlar:

  • Mass scanner tespiti: Shodan, ZoomEye gibi servislerin port taramaları

  • C2 bağlantıları: malware enfekte cihazların command-and-control sunucularıyla konuşması

  • DGA domainleri: necurs gibi domain generation algorithm kullanan malware'ler

  • SQL injection denemeleri: sqlmap User-Agent'ı gibi bilinen imzalar

  • Tor exit node kullanımı: şüpheli trafik için Tor kaynaklı bağlantılar

Heuristic analiz de var. Port scanning, DNS exhaustion, DGA-like lookups, suspicious downloads, proxy probes gibi pattern'leri bilinen listede olmayan tehditler için de yakalayabilir.

Sınırları

Maltrail endpoint telemetry veya genel amaçlı IPS değildir. Indicator-based monitoring yapar, deep packet inspection yapmaz. Suricata gibi bir IDS ile birlikte kullanılması ideal: Suricata protokol anomaly ve exploit denemelerini yakalar, Maltrail bilinen kötücül altyapıyla iletişimi tespit eder.

Ayrıca trail seti 1.5 milyon satıra ulaşabildiği için sensor başlangıçta birkaç dakika trail yükleyebilir. Trail seti hazır olana kadar detection çalışmaz, sabır gerekir.

Küçük bir network için Maltrail neredeyse sıfır konfigürasyonla anlamlı görünürlük sağlar. Büyük network'te distributed sensorlerle merkezi server mimarisi kurulabilir. Her iki durumda da SPAN portu ayarlamayı ve default şifreyi değiştirmeyi unutmayın.

Laravel-NDFirewall

Laravel için geliştirilmiş; panelsiz, route tabanlı ve hafif bir WAF (Web Application Firewall) kütüphanesidir. RCE, SQLi, XSS ve SSRF saldırılarını tespit eder; girdileri asla çalıştırmaz ve olası ha…

PHP

ctCertWatch

SSL sertifika yayınlarını gerçek zamanlı takip eden bir izleme servisi. Regex filtreleme, DNS çözümleme ve webhook uyarıları ile phishing domainlerini, marka taklidini ve yetkisiz sertifikaları anında…

Rust

ipReconary

IP aralıkları, alt ağlar ve ASN bilgilerine dayalı olarak host, domain ve servis keşfi yapan bir ağ keşif (recon) aracı. Güvenlik uzmanları ve OSINT araştırmacıları için ağ altyapısını hızlı ve güveni…

Rust

Wireguard-Server-Panel

Web arayüzüne sahip, kendi sunucunuzda barındırılan bir WireGuard VPN servisi. İstemci yönetimi, mobil bağlantı için QR kod desteği, gerçek zamanlı trafik istatistikleri ve bağlantı kayıtları sunar. T…

LoadAlertTracker

Sistem yükünü neredeyse hiç kaynak tüketmeden izleyen, hafif bir servis. Belirlenen eşikler aşıldığında Telegram, Discord ve Mattermost gibi platformlara gerçek zamanlı uyarı gönderir.

Rust

Trustsslroot

Tek komutla eksiksiz bir özel PKI yapısı (Kök CA → Ara CA → sunucu ve istemci sertifikaları) oluşturan araç. Farklı formatlarda (p12/bks/jks) paketler üretir ve kullanıma hazır çıktı klasörleri sunar.

Go

DDNS-FW

Değişken IP adresini DDNS üzerinden gerçek zamanlı takip eden, hafif ve güvenilir bir araç. İzin verilen IP listelerini otomatik güncelleyerek kesintisiz erişim ve güvenlik sağlar. Tek dosyadan çalışı…

Rust

Cloudfiltred

Sunucu üzerinde 80/443 portlarına erişimi yalnızca Cloudflare IP aralıklarıyla sınırlandıran, tek dosyadan çalışan bir Linux servisi. Kendini kurar, sistem servisi olarak çalışır ve IP listelerini düz…

Rust

node_exporter

Linux için geliştirilmiş, hafif ve tek dosyadan çalışan, güvenli erişim kontrollü bir sistem metrikleri servisi.

Rust