Görünürlük Notu
Veri sızdırma ve C2 kanalları giderek sofistike kaçınma yöntemleri kullanmaktadır: DNS tünelleme (RFC 1035'i kötüye kullanır), CDN arkasına gizlenmiş domain yönlendirme ve standart HTTPS portları bu tekniklerin başında gelir. Tespit için anormal DNS sorgu hacmi ile yüksek entropi içerikli alt alan adları izlenmeli, ağ çıkışında uygulama kimliği doğrulamalı proxy mimarisi kullanılmalı ve yalnızca onaylı hedeflere egress izni veren kısıtlayıcı politikalar uygulanmalıdır.
Bu bölümün ön koşulu Prevention & Hardening Bölümü'dür. Aşağıdaki kör noktalar kapatılmadan tespit sinyalleri ya hiç üretilmez ya da çok geç üretilir:
Kör Nokta | Etki |
|---|
TLS inspection yok | Ağ katmanı kör, şifreli POST, Host/SNI içeriği görünmez |
CASB yok | SaaS API kör. Graph API, Teams, Slack exfil görünmez |
Sysmon/EDR yok | Uç nokta kör. Process, staging, LotL zinciri çalışmaz |
NetFlow yok | Hacim anomalisi kör T1041/T1029 byte-volume tespiti yapılamaz |
DNS log yok | DNS tünelleme kör entropi analizi mümkün değil |
Önlem ≠ tespit ayrımı: JA3/JA4+ fingerprinting, beacon analizi, DNS entropi skoru, Sigma kuralları, UEBA bunlar tespit mekanizmasıdır. Egress allowlist, WDAC, tenant restriction bunlar önlem mekanizmasıdır.
Giriş
Exfiltration tespiti tek bir araçla yapılmaz. Saldırgan meşru kanalları kötüye kullandığı için imza tabanlı AV çoğu senaryoda yetersiz kalır. Güçlü tespit dört eksende çalışır:
Gerçekçi beklenti: Tek sinyal nadiren yeterlidir. Yüksek güvenilirlik çoklu kaynak korelasyonundan gelir.
Klasik korelasyon (uç nokta + ağ):
Sysmon EID 1 (7z çalıştırma)
+ EID 11 (Temp dizinine arşiv)
+ EID 3 (dış HTTPS bağlantısı)
+ Proxy POST hacim anomalisi
= HIGH confidence exfil chain
2026 korelasyon (kimlik katmanı ekli):
EID 1 (7z/arşivleme)
+ Proxy/CDN upload anomalisi
+ Entra: yeni OAuth app + Files.ReadWrite.All admin consent
+ MCAS: anomalous mass upload aynı zaman penceresi
= CRITICAL — malware-free SaaS exfil şüphesi
Brutal gerçek: SOC kapasitesine göre saldırgan gece ve hafta sonu avantajı kullanır. T1029 (zamanlanmış transfer) ve düşük-and-slow beacon profilleri, mesai dışı baseline olmadan kaçırılır. 24/7 korelasyon ve otomatik triage şarttır.
0. EID Sözlüğü
EID = Sysmon Event ID anlamında kullanılır. Windows Security Event ID'leri ayrıca Win EID olarak belirtilir.
EID | Olay | Exfil Bağlamı |
|---|
EID 1 | Process Creation | rclone, 7z, azcopy, iodine, dnscat2, certutil çalıştırma |
EID 3 | Network Connection | Dış IP/443, olağandışı hedef, yüksek bayt sayısı ( hacim anomalisi ve metadata için NetFlow, Zeek conn.log veya EDR DeviceNetworkEvents kullanılmalıdır. |
EID 7 | Image Loaded | İmzasız DLL yükleme reflective loading için yeterli değil; EID 8/10 ile birlikte kullan |
EID 8 | CreateRemoteThread | Cobalt Strike/Metasploit process injection (birincil injection) sinyali |
EID 10 | ProcessAccess | Cross-process erişim, injection ve credential access sinyali |
EID 11 | FileCreate | Temp/Public/ProgramData'ya arşiv veya staging dosyası |
EID 17 | PipeCreate | Cobalt Strike named pipe oluşturma |
EID 18 | PipeConnect | Cobalt Strike named pipe bağlantısı |
EID 22 | DNS Query | Yüksek entropili subdomain, olağandışı sorgu |
EID 23 | File Delete | Staging sonrası iz silme (OPSEC) |
Win EID 4104 | PowerShell Script Block | EncodedCommand, IWR, IEX içeriği |
Win EID 4688 | Process Creation (Security) | Sysmon alternatifi — CommandLine logging açık olmalı |
1. Tespit Mimarisi — Veri Kaynakları
┌─────────────────────────────────────────────────────────────────┐
│ TESPİT KATMANLARI │
├──────────────┬──────────────┬──────────────┬───────────────────┤
│ Ağ (N/S) │ Uç Nokta │ Kimlik │ SaaS / CASB │
├──────────────┼──────────────┼──────────────┼───────────────────┤
│ Zeek │ Sysmon │ Entra Sign-in│ MCAS/MDCA │
│ NetFlow/IPFIX│ EDR (MDE, │ Graph Audit │ Unified Audit Log │
│ Proxy logs │ CrowdStrike) │ OAuth consent│ OAuth app audit │
│ DNS logs │ Win EVTX │ Risk detect. │ GitHub audit log │
│ TLS metadata │ PS Script Blk│ CAE logs │ Slack Enterprise │
│ JA3/JA4+ │ │ │ │
├──────────────┴──────────────┴──────────────┴───────────────────┤
│ UEBA (kullanıcı/host/departman baseline) │
└─────────────────────────────────────────────────────────────────┘
│
SIEM / SOAR (Elastic, Splunk, Sentinel)
│
Korelasyon + Sigma + MITRE mapping
not: "MCAS" (Microsoft Cloud App Security) artık resmi olarak Microsoft Defender for Cloud Apps (MDCA) adını taşıyor. her ikisi de aynı ürünü ifade eder.
Minimum Uygulanabilir Yığın (Bütçe Kısıtlı)
Sysmon — Sysmon config (EID 17/18 ve EID 8/10 için extended config şart; SwiftOnSecurity varsayılan config'de EID 17/18 kapalıdır)
Zeek veya Suricata + Eve JSON
RITA (beacon analizi)
Elastic Stack veya Wazuh (Sigma uyumlu)
DNS query logging (iç resolver üzerinde)
NetFlow (en azından egress noktasından kritik segmentlerde unsampled/1:1)
Kurumsal Yığın
Minimum + commercial NDR (ExtraHop, Vectra) + CASB/MDCA + commercial EDR + UEBA (Exabeam, Securonix, Sentinel UEBA).
2. DNS Tünelleme Tespiti — T1071.004
DNS tünelleme, RFC 1035 sorgu/yanıt yapısını veri taşımak için kötüye kullanır. iodine, dnscat2 ve custom implantlar bu vektörü kullanır.
2.1 İstatistiksel Sinyaller
Sinyal | Başlangıç Eşiği | Açıklama |
|---|
Subdomain entropi | > 3.5 (Shannon) | Rastgele görünümlü alt alan adı |
Subdomain uzunluğu | > 50 karakter | Base32/hex encode edilmiş payload |
Sorgu hacmi | Host başına > 100 sorgu/saat | Normal profilden sapma |
TXT/NULL/CNAME oranı | TXT > %10 toplam DNS | Veri kanalı olarak TXT abuse |
NXDOMAIN oranı | Anormal yüksek | DGA veya hatalı tünel yapılandırması |
Unique subdomain | Aynı apex altında > 500/gün | Her paket için yeni subdomain |
Apex domain yaşı (NRD) | < 30 gün | Yeni kayıtlı domain — RPZ tek başına yetmez |
Eşikler ortama özgüdür. M365, güvenlik ürünleri ve CDN trafiği bu eşikleri doğal olarak aşabilir. Buradaki değerler başlangıç noktasıdır; kurumun DNS baseline'ına göre kalibre edilmelidir.
2.2 Shannon Entropi Hesabı
import math
from collections import Counter
def shannon_entropy(s: str) -> float:
if not s:
return 0.0
counts = Counter(s)
length = len(s)
return -sum((c / length) * math.log2(c / length) for c in counts.values())
# Doğrulanmış referans değerler (hesaplanmış):
# "google" → 1.92 (meşru, düşük entropi)
# "xk9f2m8q1p" → 3.32 (orta — şüpheli)
# "a1b2c3d4e5f6g7h8i9j0" → 4.32 (yüksek — tünelleme sinyali)
# "MJQXGZLTMFRA2TKNFQWC2" → 3.92 (Base32 — iodine payload)
#
# NOT: Eşik kalibrasyonu için tam subdomain string kullanılmalı;
# tek kelime referansları yalnızca ölçek göstergesidir.
2.3 Zeek ile DNS Analizi
Zeek dns.log alanları: query, qtype_name, answers, TTLs, rcode_name.
dns.log → subdomain uzunluğu filtresi
→ entropi hesaplama
→ apex domain bazında gruplama
→ NRD kontrolü (passive DNS / WHOIS feed)
→ threshold aşımı → Notice::Suspicious_DNS_Encoding
→ uç nokta korelasyonu (Sysmon EID 1 + EID 22 aynı zaman penceresi)
├─ EID 1: iodine / dnscat / şüpheli python-powershell (EncodedCommand)
└─ EID 22: aynı apex'e yoğun sorgu
→ (opsiyonel) resolver kilidi ihlali: dış 53/udp görülmesi (Bölüm 2 aktifse)
→ korelasyon eşleşirse → HIGH severity / analist kuyruğu
→ korelasyon yoksa → LOW / otomatik blok YOK (CDN/güvenlik aracı FP riski)
Notice adı nüansı: Notice::Suspicious_DNS_Encoding standart Zeek paketi değil; custom script/notice olarak uygulanmalıdır. @load direktifi ve paket bağımlılıkları ayrıca tanımlanmalıdır.
Zeek notice örneği (konsept — custom script):
# @load base/protocols/dns
# @load custom/entropy # shannon_entropy() burada tanımlı
event dns_request(c: connection, msg: dns_msg, query: string,
qtype: count, qclass: count)
{
local sub = split_string(query, /\./)[0];
if ( |sub| > 50 && shannon_entropy(sub) > 3.5 )
NOTICE([$note=Suspicious_DNS_Encoding,
$msg=fmt("High-entropy DNS query: %s", query),
$conn=c,
$identifier=query]); # eklendi: dedup için
}
Resolver cache notu: İç resolver cache hit oranı yüksekse sorgu logu azalır; forwarder katmanında da loglama yapılmalıdır.
2.4 Sysmon EID 22 Korelasyonu
Tek başına DNS logu yeterli değildir. Uç noktada eşzamanlı sinyal:
EID 1: iodine.exe, dnscat, bilinmeyen konumdan python
EID 22: aynı apex domain'e yüzlerce sorgu
Resolver kilidi varken (Bölüm 2) dış 53/udp görülmesi → kritik anomali
Korelasyon kuralı:
EID 22: count > 200 in 10m
AND unique(subdomain) > 50
AND avg(entropy) > 3.5
AND (
EID 1: process IN [iodine, dnscat]
OR (EID 1: powershell.exe AND CommandLine CONTAINS [-enc, EncodedCommand])
)
→ HIGH severity
2.5 DNS Log Kaynakları
Kaynak | Artı | Eksi |
|---|
İç resolver (Bind/Unbound) | Tüm istemci sorguları | Uç nokta görünürlüğü yok |
Sysmon EID 22 | Host bazlı | Yalnızca Sysmon kurulu hostlar |
Zeek dns.log | Ağ geneli, entropi script | Encrypted DNS bypass |
Passive DNS (VirusTotal, SecurityTrails) | Tarihsel IOC + NRD | Gerçek zamanlı değil |
2.6 False Positive Kaynakları
CrowdStrike, Defender, Akamai, Zscaler ve Cloudflare yüksek entropili subdomain üretebilir. M365 TXT kayıtları ortam baseline'ını etkiler. Apple Private Relay, iCloud Private Relay ve Windows Update CDN whitelist'e alınmalıdır. Otomatik blok yerine analiste yönlendirilmeli
3. TLS Fingerprinting — JA3, JA3S, JARM, JA4+
TLS inspection olmadan bile metadata ile anomali tespiti mümkündür.
3.1 JA3 / JA3S
JA3, TLS Client Hello'dan parmak izi üretir: cipher suites, extensions, elliptic curves, EC point formats.
Doğru yaklaşım:
Baseline sapması: Kurumsal browser JA3 setinden farklı profil
Header tutarsızlığı: User-Agent: Mozilla/5.0 ama JA3 = Go HTTP client
Araç profilleri: rclone, curl, python-requests birbirinden farklı JA3 üretir
Şüpheli cluster: Aynı JA3'ü paylaşan çok sayıda dış host + düzenli conn
Yanlış yaklaşım: Tek bir JA3 hash'ini "Cobalt Strike profili" diye etiketlemek. Aynı hash Sliver, Havoc, Go implantlar tarafından da üretilebilir; hash→malware ailesi eşlemesi zamanla çürür.
Ek nüans: Chrome ve Edge, TCP vs QUIC/UDP üzerinde farklı JA3/JA4 profilleri üretebilir. Aynı host'tan gelen TCP ve UDP 443 trafiği ayrı profil setleriyle değerlendirilmelidir.
ssl.log: ja3 NOT IN corporate_browser_ja3_set
AND dest_port = 443
AND conn.log bytes_out > host_baseline × 10
→ şüpheli C2/exfil profili
3.2 JARM
JARM aktif fingerprinting: sunucuya probe göndererek TLS stack parmak izi üretir.
Kullanım: Bilinen C2 framework sunucu kümeleri (aynı JARM + çok IP = altyapı kümeleme); pasif JA3 ile çapraz doğrulama.
Sınırlar: Malleable profil ve JARM Randomizer ile değiştirilebilir. Zimbra gibi meşru yazılımlar benzer JARM üretebilir. Tek başına kesin kanıt değildir.
Operasyonel maliyet: Aktif tarama gerektirir. Çoğu SOC pasif NDR ile yetinir; JARM threat hunting ve NDR ekipleri için daha uygundur. Pasif JA3/JA4+ günlük SOC operasyonu için önceliklidir.
3.3 JA4+ — 2026 Önerilen
JA4+, FoxIO tarafından geliştirildi; insan okunabilir format, QUIC/HTTP3 desteği, normalleştirilmiş hash ile JA3'ün halefi.
Zeek entegrasyonu: JA4+ paketi (v0.18.8+), ssl.log ve http.log alanlarına ja4, ja4s, ja4h ekler.
ssl.log: ja4 NOT IN known_browser_ja4_set
AND proto = udp/443
AND bytes_out > host_baseline × 5
→ şüpheli QUIC exfil
Zeek 6.x QUIC desteği ile quic.log üzerinden UDP/443 analizi. QUIC/HTTP3 exfil tespitinde JA4+ birincil sinyaldir.
3.4 Malleable C2 ve Parmak İzi Sınırları
JA3/JA4+ tek başına yeterli değil
JA3/JA4+ + HTTP header tutarsızlığı + beacon timing birlikte değerlendirilmeli
TLS metadata görünürlüğü (Zeek ssl.log veya proxy TLS inspection) olmadan domain fronting tespiti uygulanamaz
4. Beacon Analizi — RITA
RITA (Real Intelligence Threat Analytics), NetFlow/Zeek conn.log üzerinde C2 beacon davranışını istatistiksel olarak skorlar.
4.1 Beacon Sinyalleri
Sinyal | Açıklama |
|---|
Düzenli aralık | 60s ± 2s tutarlı bağlantı periyodu |
Düşük jitter | Mekanik zamanlama — en güçlü sinyal |
Uzun süreli conn dizisi | Günler/haftalar aynı src-dst çifti |
Uniform paket boyutu | T1030 — padding ile sabit boyut |
Mesai dışı aktivite | 02:00–05:00 sürekli bağlantı |
4.2 Jitter ve Modern C2 Sınırları
Profil | RITA Davranışı |
|---|
Sabit 60s beacon | Yüksek skor |
%10–20 jitter | RITA genelde yakalar (istatistiksel dağılım) |
%50+ jitter | Skor düşer |
Sleep mask / Ekko / adaptive beacon | RITA zayıflar — EDR + uzun dönem conn analizi şart |
Kritik: Modern implantlar jitter, sleep mask ve adaptive beacon ile RITA'yı atlatmaya çalışır. RITA tek başına bırakılmamalı; host/user korelasyonu ve mesai dışı baseline şarttır.
4.3 RITA v5 Kullanımı
RITA v5, v1–4'ten farklı olarak terminal tabanlı kullanıcı arayüzü (TUI) sunar; beacon, DNS tünelleme, long connection ve threat intel tespitleri tek lokasyonda görüntülenir.
# Zeek conn.log import
rita import --logs=/var/log/zeek/ --rolling MyDataset
# TUI ile görüntüleme
rita view MyDataset
# Beacon filtreleme (v5 ölçeği: 0–100 tam sayı)
# TUI içinde: beacon:>=80
# veya threshold ve sıralama ile:
rita view MyDataset beacon:>=90 sort:duration-desc
# CSV çıktı
rita view --stdout MyDataset beacon:>=80 > beacons.csv
RITA v5 skor ölçeği: 0 (rastgele) → 100 (güçlü periyodik). Eşik: ≥ 80 yüksek güven; ≥ 90 çok yüksek güven.
Eski komutlar (v1–4): rita show-beacons, rita show-beacons --human-readable v5'te kullanılmaz.
v5 TUI alanları:
Alan | Açıklama |
|---|
beacon
| Birleşik beacon skoru (0–100) |
severity
| critical / high / medium / low |
duration
| Bağlantı süresi |
subdomains
| Subdomain sayısı (DNS tünelleme sinyali) |
threat_intel
| TI feed eşleşmesi |
Çıktı skorları:
TS Score — timestamp tutarlılığı (zamansal düzenlilik)
DS Score — data size tutarlılığı (uniform boyut — T1030 sinyali)
Beacon Score — birleşik skor
4.4 T1041 + T1030 Korelasyonu
RITA v5: beacon >= 80
AND conn.log: bytes_out > host_baseline × 10
AND ssl.log: ja4 NOT IN corporate_browser_set
→ T1041 (C2 üzerinden exfil) şüphesi — P1
5. Zeek — Ağ Tespit Omurgası
5.1 Kritik Log Dosyaları
Log | Exfil Kullanımı |
|---|
conn.log
| Bağlantı hacmi, süre, proto RITA girdi |
dns.log
| DNS tünelleme tespiti |
ssl.log
| JA3/JA4+, SNI, sertifika anomalisi |
http.log
| Host, URI, User-Agent, POST boyutu |
files.log
| MIME tipi, SHA256, boyut |
smtp.log
| E-posta exfil (T1048.002) |
quic.log
| QUIC/HTTP3 metadata (Zeek 6.x) |
5.2 Domain Fronting Tespiti — T1090.004
Ön koşul: TLS metadata görünürlüğü (Zeek ssl.log veya proxy TLS inspection). Olmadan Host/SNI karşılaştırması uygulanamaz.
http.log: host (Host header) ≠ ssl.log: server_name (SNI)
→ Domain fronting şüphesi
Ek sinyaller:
SNI = CDN domain ama POST body host baseline'ının çok üzerinde
Fastly (Şubat 2024), Azure Front Door (Ocak 2024), AWS CloudFront (2018) büyük ölçüde engelledi
Aktif varyantlar: Cloudflare Workers, Azure Functions, ngrok/Cloudflare Tunnel, Lambda@Edge relay bu edge worker vektörleri için tespit sinyali: beklenmedik CDN worker subdomain'ine yüksek hacimli POST + düzenli bağlantı ritmi
5.3 HTTP POST Anomalisi — T1567, T1041
Statik MB eşiği yerine host baseline anomalisi:
http.log: method = "POST"
AND request_body_len > host_90th_percentile × 5
AND user_agent MATCHES /rclone|curl|python|Go-http-client/
→ Şüpheli bulk upload
Statik eşik uyarısı: Teams, OneDrive, SharePoint zaten büyük POST üretir; statik 10 MB eşiği yoğun FP kaynağıdır. Host baseline percentile kullanımı FP'yi dramatik biçimde azaltır.
5.4 QUIC / HTTP/3
Zeek 6.x + JA4+ QUIC fingerprinting. Bölüm 2'deki QUIC kör noktasını tespit katmanında kapatır.
6. NetFlow / IPFIX Analizi
NetFlow, paket içeriği olmadan flow metadata sağlar.
6.1 Exfil Sinyalleri
Sinyal | Açıklama |
|---|
Tek hedefe yüksek bytes_out | Bulk exfil |
Veri sunucusundan dış IP:443 | Segmentasyon ihlali + exfil |
Port 53 dışa yüksek hacim | DNS tünelleme |
UDP 443 sürekli akış | QUIC C2/exfil |
Mesai dışı bytes_out spike | T1029 |
Low-and-slow süreklilik | 5–20 MB/saat, saatlerce aynı hedef |
6.2 Flow Sampling Riski
Sampling oranı düşükse (ör. 1:1000) kısa burst exfil kaçabilir. Kritik segmentlerde (veri sunucusu, egress noktaları) unsampled veya 1:1 flow tercih edilmelidir.
Managed DB exception: Azure SQL, RDS gibi managed veritabanı servisleri meşru olarak dış 443 egress üretir. Veri sunucusu kuralına hedef allowlist exception eklenmelidir.
6.3 Pipeline ve Kurallar
Router/Switch → NetFlow v9/IPFIX → nfdump/nfsen → RITA
→ Elastic (flow index)
Bulk exfil kuralı:
src_ip IN [DB_SERVER_SUBNET]
AND dst_ip EXTERNAL
AND dst_ip NOT IN [managed_db_endpoints_allowlist]
AND bytes_out > 100MB in 1h
→ CRITICAL
Low-and-slow exfil kuralı (--bwlimit/throttle-aware):
src_ip IN [WORKSTATION_SUBNET]
AND dst_ip EXTERNAL
AND bytes_out BETWEEN 5MB AND 50MB per hour
AND duration > 4 hours
AND conn_count > 20
→ MEDIUM-HIGH (süreklilik sinyali)
Throttle-aware tespit notu: Akira ve diğer ransomware operatörleri --bwlimit 5M ile mesai saatlerinde hacim anomalisini kasıtlı olarak kaçırır. Low-and-slow kuralı bu pattern'i yakalar; statik yüksek eşik kuralları kaçırır.
7. Sysmon ve EDR Korelasyonu
7.1 Yüksek Değerli Korelasyon Zincirleri
Zincir A — Arşivleme + Exfil (T1560 → T1041/T1567)
EID 1: Image IN [*\7z.exe, *\rar.exe, *\rclone.exe, *\azcopy.exe]
AND (Prevalence=rare OR Signed=FALSE)
→ EID 11: TargetFilename CONTAINS [\Temp\, \Public\, \ProgramData\]
→ EID 3: DestinationIp EXTERNAL AND DestinationPort = 443
→ Proxy: POST > host_baseline × 5 aynı zaman penceresi
= HIGH confidence — T1560 + T1041/T1567
Sigma/Sysmon notu: Hashes NOT IN trusted_set Sysmon'da doğrudan filtre olarak uygulanamaz. EDR'de "rarely seen binary" (MDE: DeviceProcessEvents + ThreatIntelligenceIndicator /DeviceImageLoadEvents prevalence; CrowdStrike: rare hash) veya prevalence feed kullanılmalıdır.
Zincir B — LotL İndirme (T1105)
EID 1: certutil.exe CommandLine CONTAINS [-urlcache, http]
→ EID 11: FileCreate (indirilen dosya)
→ EID 3: EXTERNAL bağlantı (indirme yönü)
= MEDIUM-HIGH — T1105 (Ingress Tool Transfer)
MITRE notu: certutil -urlcache çoğunlukla indirme/ingress operasyonudur → T1105. Exfil (T1048) olarak etiketlemek için ayrıca upload/outbound kanıtı (EID 3 büyük bytes_out + staging dosyası) gerekir.
Zincir C — BITS Exfil (T1197)
EID 11 (Temp'te staging)
→ EID 1 (bitsadmin / Start-BitsTransfer)
→ EID 3 (external:443)
+ BITS Client Operational log (job URL, transfer direction)
= MEDIUM-HIGH — T1197 (exfil) veya T1105 (ingress), yön kanıtına göre
Zincir D — DNS Tünelleme (T1071.004)
Zeek/resolver: apex bazında entropy>3.5, count>200/10m, unique_subdomain>50
→ EID 22 aynı apex + aynı host
→ EID 1: iodine/dnscat/python(dnscat) [= HIGH]
→ PS EncodedCommand yalnız Zeek+resolver+EID22 birlikte [= MEDIUM]
Zincir E — Staging + Temizlik (T1074 → T1560 → OPSEC)
ID 1 (7z/rar)
→ EID 11 (Temp'te yada recycle bin'de .7z/.rar)
→ EID 3 (external:443) + conn.log bytes_out↑
→ EID 23 (aynı dosya, <1s) = HIGH — T1560 + T1074 + T1041 + T1070.004
Zincir F — Cobalt Strike Process Injection + C2 (T1055 + T1071)
EID 8/10 (şüpheli çift)
→ EID 17/18 (pipe — sabit + custom)
→ EID 3 (external:443)
+ JA4+ / RITA beacon
+ EDR bellek analizi
+ ProcessGuid korelasyonu
→ HIGH — T1055 + T1071.001
EID 7 nüansı: Reflective loading çoğu durumda LoadLibrary API'sini bypass ettiğinden EID 7 (ImageLoad) tetiklenmeyebilir. Birincil injection sinyalleri EID 8 (CreateRemoteThread) ve EID 10 (ProcessAccess) ile bellek analizi (EDR) kullanılmalıdır. EID 7 yalnızca tamamlayıcı sinyaldir.
Named pipe uyarısı: Modern operatörler custom pipe adları kullanır. Varsayılan pipe imzası tek başına yetersiz; pipe + injection + ağ bağlantısı davranışsal korelasyonu şarttır.
PowerShell downgrade notu: Constrained Language Mode bypass mümkündür. Win EID 4104 Script Block + EID 1 EngineVersion birlikte izlenmelidir.
7.2 Sysmon Konfigürasyon Önerileri
Alan | Öneri |
|---|
ProcessCreate (EID 1) | CommandLine, ParentImage, OriginalFileName, CurrentDirectory, Hashes (SHA256). OriginalFileName binary rename tespitinde kritik |
NetworkConnect (EID 3) | Initiated=true, DestinationIp, DestinationPort, DestinationHostname varsayılan kapalı, <NetworkConnect onmatch="include"> ile açılmalı; byte/hacim alanı yoktur, hacim için NetFlow/Zeek conn.log/EDR gerekir |
ImageLoad (EID 7) | Yalnızca imzasız modül; Signed=false + \Windows\, \Program Files\ path exclude tamamlayıcı; reflective loading çoğu durumda EID 7'yi tetiklemez, EID 8/10 birincil |
CreateRemoteThread (EID 8) | Şüpheli SourceImage → TargetImage çiftleri injection sinyali olarak değerlendirilir (AV/EDR agent whitelist şart) |
ProcessAccess (EID 10) | GrantedAccess maskesi + hedef process filtresi (lsass.exe, svchost.exe vb.) -- geniş maskeler (0x1F0FFF) yüksek FP üretir, SIEM tarafında daralt; CallTrace ile legit araç ayrımı |
FileCreate (EID 11) | Hedefli path: \Temp\, \Public\, \ProgramData\, $Recycle.Bin\; arşiv uzantısı (.7z .rar .zip) filtresi — "tüm yazılabilir dizinler" yerine hedefli izleme; dosya boyutu EID 11'de yoktur |
FileCreateStreamHash (EID 15) | ADS / alternate data stream, çoğu temel config'de kapalı; staging ve gizli stream tespiti için açılmalı |
PipeCreate/Connect (EID 17/18) | <PipeEvent onmatch="include"> veya olcortez/sysmon-config (extended) — SwiftOnSecurity varsayılanında kapalı; EID 3 de kapalıysa pipe açılsa bile ağ zinciri çalışmaz
|
DNS Query (EID 22) | Tüm sorgular (<DnsQuery onmatch="include">) |
FileDelete (EID 23) | <ArchiveDirectory> ile birlikte — staging-exfil-temizlik zinciri (EID 11 → EID 3 → EID 23)
|
SwiftOnSecurity uyarısı: Varsayılan SwiftOnSecurity config'de EID 17/18 (PipeCreate/PipeConnect) kapalıdır.
7.3 EDR Davranış Kuralları
Araç | EDR Sinyali |
|---|
rclone | UA; rclone.conf okuma; bilinmeyen path'ten çalıştırma |
azcopy | *.blob.core.windows.net hedef; %USERPROFILE%\.azcopy log
|
aws-cli | aws s3 cp / gsutil cp command line; ~/.aws/credentials okuma; S3/GCS endpoint; rare binary + bulk upload
|
iodine/dnscat | Bilinen binary; DNS yoğunluğu, yüksek entropi sorgu (+ Sysmon EID 22 korelasyonu) |
Cobalt Strike | EID 8/10 injection; EID 17/18 named pipe; beacon NDR: JA4+ sapması, RITA beacon |
IR notu: rclone config %APPDATA%\rclone\rclone.conf (Windows), ~/.config/rclone/rclone.conf (Linux). rclone config show ile okunur; şifreler reversible obfuscation ile saklanır — ele geçirilen config tüm exfil altyapısını açığa çıkarır.
8. EDR Network Telemetry
Modern EDR platformları process, network ve identity sinyalini tek olay kaydında birleştirir.
Platform | Özellik / Log Kaynakları | Exfil Kullanımı |
|---|
Microsoft Defender for Endpoint | DeviceProcessEvents, DeviceNetworkEvents, DeviceFileEvents; InitiatingProcessId / ProcessUniqueId, InitiatingProcessSHA1
| Process → URL/IP korelasyonu tek KQL sorgusunda; staging + external bağlantı join (Zincir A/E) |
CrowdStrike Falcon | ProcessRollup2, NetworkConnectIP4, DnsRequest; Process Graph, Threat Graph; Falcon Data Protection (DLP/block)
| Rare binary + external upload; byte volume (LogScale); process-tree hunting |
SentinelOne | Storyline (causality graph), Deep Visibility; process + file + registry + network (NetworkBytes) | Staging → upload zinciri; büyük outbound; özel kural için STAR |
Palo Alto Cortex XDR | XDR Analytics, Causality; endpoint + firewall + Identity Analytics (UEBA) | Baseline sapması ile exfil anomalisi; Large Upload (HTTPS/FTP/Generic, T1048); cross-domain incident korelasyonu |
Örnek MDE sorgusu (KQL):
DeviceNetworkEvents
| where Timestamp > ago(24h)
| where InitiatingProcessFileName in~ ("rclone.exe", "azcopy.exe", "7z.exe")
| where RemotePort == 443
| where RemoteUrl !has ".microsoft.com"
| project Timestamp, DeviceName, InitiatingProcessFileName, RemoteUrl, RemoteIP, RemotePort
Avantaj: Proxy/Sysmon ayrı korelasyon gerektirmez; host bazlı tam görünürlük.
Sınır: Agent kurulu olmayan sunucu/IoT/ağ cihazlarında Zeek/NetFlow hâlâ şarttır.
9. UEBA — Davranışsal Baseline Tespiti
İmza ve eşik tabanlı kuralların ötesinde, exfiltration çoğu zaman baseline sapması ile yakalanır.
9.1 Baseline Boyutları
Boyut | Normal Davranış | Exfil Sinyali | Not |
|---|
Kullanıcı | Muhasebe çalışanı — ~50 MB/gün upload, bilinen hedefler | Bir günde 8 GB upload veya peer grubunun 10× üstü | Statik MB değeri örnek; UEBA dinamik percentile kullanmalı. DLP + CASB korelasyonu şart. |
Peer group | Finans ekibi — SharePoint/ERP erişim + düşük upload | Aynı rolden sapma: mass download veya kişisel cloud upload | Tek kullanıcı satırı yetmez; rol bazlı karşılaştırma FP'yi düşürür. |
Host (hacim) | Workstation — ~200 MB/gün outbound HTTPS | 15 GB HTTPS upload tek oturumda | EDR'de byte her zaman yok → NetFlow/proxy ile doğrula. |
Host (rol) | Workstation — outbound DB bağlantısı yok | SQL/ERP sunucusuna bağlantı + ardından external upload | Lateral movement + collection işareti olabilir; tek başına exfil kanıtı değil. |
Departman | Finans kullanıcıları — SharePoint, ERP, onaylı SaaS | Ar-Ge/HR veri havuzuna erişim + bulk upload veya subnet egress 5× spike | CDN POST tek başına zayıf (M365 meşru trafik); veri erişim bağlamı öncelikli. |
Zaman | Mesai 09:00–18:00 aktivite | 03:00 sürekli upload veya mesai dışı 3× baseline (T1029) | Yedekleme penceresi, vardiya, timezone whitelist şart; SOC kapasitesi düşükse kaçırılır. |
Uygulama | OneDrive sync — kurumsal tenant, bilinen endpoint'ler | Yeni Graph API endpoint'lerine yüksek hacimli upload veya kişisel tenant | SaaS API abuse (T1537); CASB + OAuth scope olmadan kör. |
Hedef (destination) | Kurumsal SaaS ve onaylı cloud storage | İlk kez görülen domain, kişisel cloud (Dropbox, Mega, anonim upload) | Novelty detection güçlü sinyal; CDN allowlist ile FP yönetimi şart. |
Coğrafya | Türkiye / bilinen bölge egress profili | İlk kez görülen yurtdışı endpoint + eşzamanlı upload spike | Impossible travel ile birleşince CRITICAL; VPN/Private Relay whitelist gerekir. |
Hassasiyet | Rutin dosya erişim profili | Etiketli/hassas veri erişimi → kısa sürede bulk upload | Purview DLP / MDCA etiket korelasyonu; insider exfil için kritik. |
Hız (velocity) | Günlük düşük hacim, düzensiz transfer | Low-and-slow: 5–20 MB/saat, saatlerce aynı hedef (T1030) | Statik yüksek eşik kuralları kaçırır; NetFlow süreklilik sinyali şart. |
9.2 UEBA Sinyal Örnekleri
Kullanıcı: finans_analyst
Baseline: upload 50 MB/gün, hedef = SharePoint kurumsal tenant
Anomali: upload 8 GB/gün, hedef = dropbox.com API
Kaynak: MCAS/MDCA + proxy + Entra
→ CRITICAL — departman rolüne aykırı exfil
Host: DEV-WS-042
Baseline: GitHub push 10 commit/gün, ~5 MB
Anomali: 500 MB tek push, private repo, yeni PAT
→ HIGH — T1567.001
9.3 UEBA Araçları ve Sınırları
Araçlar: Microsoft Sentinel UEBA, Exabeam, Securonix, Gurucul, MCAS/MDCA anomaly detection (SaaS UEBA), Elastic ML unsupervised anomaly.
UEBA sınırı: False positive tuning gerektirir. 2–4 hafta öğrenme süresi planlanmalıdır.
Gizlilik notu: UEBA kullanıcı davranış verisi toplar. Veri toplama kapsamı, saklama süresi ve erişim politikası GDPR/KVKK gerekliliklerine göre tanımlanması gerekir.
10. Sigma Kuralları
Sigma, log tabanlı tespit için platform bağımsız YAML formatıdır.
10.1 IOC Tabanlı Kurallar
Rclone Execution (T1567.002):
title: PUA - Rclone Execution
id: e37db05d-d1f9-49c8-b464-cee1a4b25864
status: test
description: |
Rclone aracının yürütülmesini tespit eder. REvil, Conti, FiveHands, Akira, DarkSide ve Egregor
gibi fidye yazılımı operatörleri bu aracı bulutta veri sızdırma (T1567.002) için kullanmıştır.
Dosya adı, PE OriginalFileName, Description ve CLI desenleri birlikte değerlendirilir.
Binary rename atlatmasına karşı OriginalFileName alanı dahil edilmiştir.
references:
- https://attack.mitre.org/techniques/T1567/002/
- https://attack.mitre.org/software/S1040/
- https://research.nccgroup.com/2021/05/27/detecting-rclone-an-effective-tool-for-exfiltration/
- https://thedfirreport.com/2021/03/29/sodinokibi-aka-revil-ransomware
- https://us-cert.cisa.gov/ncas/analysis-reports/ar21-126a
- https://labs.sentinelone.com/egregor-raas-continues-the-chaos-with-cobalt-strike-and-rclone
- https://www.splunk.com/en_us/blog/security/darkside-ransomware-splunk-threat-update-and-detections.html
- https://github.com/SigmaHQ/sigma/blob/master/rules/windows/process_creation/proc_creation_win_pua_rclone_execution.yml
author: NewbieV35
tags:
- attack.exfiltration
- attack.t1567.002
logsource:
product: windows
category: process_creation
detection:
selection_specific_options:
CommandLine|contains|all:
- '--config '
- '--no-check-certificate '
- ' copy '
selection_rclone_img:
- Image|endswith: '\rclone.exe'
- OriginalFileName: 'rclone.exe'
- Description: 'Rsync for cloud storage'
selection_rclone_cli:
CommandLine|contains:
- 'pass'
- 'user'
- 'copy'
- 'sync'
- 'config'
- 'lsd'
- 'remote'
- 'ls'
- 'mega'
- 'pcloud'
- 'ftp'
- 'ignore-existing'
- 'auto-confirm'
- 'transfers'
- 'multi-thread-streams'
- 'no-check-certificate '
filter_legit_path:
Image|startswith:
- 'C:\Program Files\rclone\'
- 'C:\Program Files (x86)\rclone\'
condition: (selection_specific_options or all of selection_rclone_*) and not filter_legit_path
falsepositives:
- Onaylı IT yedekleme/senkronizasyon operasyonları (servis hesabı ve path whitelist ile daraltılmalı)
- rclone config, lsd, ls gibi exfil dışı bakım komutları
level: high
AzCopy Execution (T1567.002):
title: PUA - AzCopy / Azure Storage Explorer Execution
id: 8f3c2a1b-4d5e-6f7a-8b9c-0d1e2f325865
status: experimental
description: |
AzCopy veya Azure Storage Explorer yürütülmesini tespit eder. Interlock (CISA AA25-203A)
ve Rhysida gibi ransomware operatörleri bu araçları Azure Blob Storage'a veri sızdırmak
için kullanmıştır (T1567.002). Dosya adı, OriginalFileName ve CLI desenleri birlikte
değerlendirilir; yalnızca binary adına güvenilmez. Whitelist tüm dallara uygulanır.
references:
- https://attack.mitre.org/techniques/T1567/002/
- https://www.cisa.gov/news-events/cybersecurity-advisories/aa25-203a
- https://learn.microsoft.com/en-us/azure/storage/common/storage-use-azcopy-v10
- https://www.forescout.com/blog/a-year-later-interlock-ransomware-keeps-leveling-up/
author: CybersecLab-NewbieV35
date: 2026-06-16
tags:
- attack.exfiltration
- attack.t1567.002
logsource:
product: windows
category: process_creation
detection:
selection_azcopy_specific:
CommandLine|contains|all:
- 'azcopy'
- 'blob.core.windows.net'
selection_azcopy_img:
- Image|endswith: '\azcopy.exe'
- OriginalFileName: 'azcopy.exe'
selection_azcopy_cli:
CommandLine|contains:
- ' copy '
- ' sync '
- 'dfs.core.windows.net'
- 'file.core.windows.net'
- '--recursive'
- '--from-to=LocalBlob'
- '--from-to=BlobLocal'
selection_storage_explorer_img:
- Image|endswith: '\StorageExplorer.exe'
- OriginalFileName: 'StorageExplorer.exe'
filter_legit_path:
Image|startswith:
- 'C:\Program Files\Microsoft Azure Storage Explorer\'
- 'C:\Program Files (x86)\Microsoft Azure Storage Explorer\'
condition: >
(selection_azcopy_specific or selection_storage_explorer_img or
(1 of selection_azcopy_img and selection_azcopy_cli))
and not filter_legit_path
falsepositives:
- Onaylı Azure migration ve yedekleme operasyonları (servis hesabı whitelist ile daraltılmalı)
- Azure Storage Explorer GUI üzerinden meşru blob yönetimi (whitelist path'inden çalışıyorsa filtrelenir)
- AzCopy ile planlı veri taşıma (change window + onaylı hesap)
level: high
certutil Ingress Tool Transfer (T1105):
title: Suspicious Download Via Certutil.EXE — Ingress Tool Transfer
id: 8f3c2a1b-4d5e-6f7a-8b9c-0d1e2f325866
status: test
description: |
Certutil ile uzaktan dosya indirmeyi tespit eder (T1105 — Ingress Tool Transfer).
Saldırganlar -urlcache, -verifyctl veya -URL flag'leri ile LOLBin indirme yapar.
NOT: Bu kural exfil (T1048) değildir; upload kanıtı için EID 3 outbound + staging
(EID 11) korelasyonu ayrıca gerekir. Zincir B ile birleştirilmelidir.
references:
- https://attack.mitre.org/techniques/T1105/
- https://lolbas-project.github.io/lolbas/Binaries/Certutil/
- https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/certutil
- https://github.com/SigmaHQ/sigma/blob/master/rules/windows/process_creation/proc_creation_win_certutil_download.yml
- https://news.sophos.com/en-us/2021/04/13/compromised-exchange-server-hosting-cryptojacker-targeting-other-exchange-servers/
- https://www.hexacorn.com/blog/2020/08/23/certutil-one-more-gui-lolbin
author: CybersecLab-NewbieV35
tags:
- attack.command-and-control
- attack.t1105
- attack.defense-evasion
- attack.t1027
logsource:
category: process_creation
product: windows
detection:
selection_img:
- Image|endswith: '\certutil.exe'
- OriginalFileName: 'CertUtil.exe'
selection_flags:
CommandLine|contains:
- 'urlcache '
- '/urlcache '
- 'verifyctl '
- '/verifyctl '
- 'URL '
selection_http:
CommandLine|contains: 'http'
condition: all of selection_*
falsepositives:
- Unknown
level: medium
10.2 Davranışsal Kurallar — Sigma Correlation Format
IOC-only kurallar rclone.exe → dllhosts.exe gibi binary rename ile atlatılır. Davranışsal korelasyon için Sigma correlation kuralları (pySigma Summer 2024+) kullanılmalıdır.
Staging + External Upload Korelasyonu (T1560 + T1041) — doğru Sigma correlation formatı:
# ── Kural 1: Archive staging ──────────────────────────────────
title: Archive Created in Staging Directory
id: 8f3c2a1b-4d5e-6f7a-8b9c-0d1e2f325867
author: CybersecLab-NewbieV35
name: archive_staging
logsource:
category: file_event
product: windows
detection:
selection:
Image|endswith:
- '\7z.exe'
- '\rar.exe'
- '\7zG.exe'
- '\7zFM.exe'
TargetFilename|contains:
- '\Temp\'
- '\Public\'
- '\ProgramData\'
condition: selection
---
# ── Kural 2: External HTTPS (daraltılmış) ─────────────────────
title: External HTTPS Connection from Host
id: 8f3c2a1b-4d5e-6f7a-8b9c-0d1e2f325868
author: CybersecLab-NewbieV35
name: external_https
logsource:
category: network_connection
product: windows
detection:
selection:
Initiated: 'true'
DestinationPort: 443
filter_private:
DestinationIp|startswith:
- '10.'
- '192.168.'
- '127.'
- '169.254.'
- '172.16.'
- '172.17.'
- '172.18.'
- '172.19.'
- '172.20.'
- '172.21.'
- '172.22.'
- '172.23.'
- '172.24.'
- '172.25.'
- '172.26.'
- '172.27.'
- '172.28.'
- '172.29.'
- '172.30.'
- '172.31.'
condition: selection and not 1 of filter_private
---
# ── Korelasyon kuralı (Sigma correlation spec v2.1) ────────────
title: Archive Staging Followed by External HTTPS — Exfil Chain
id: 8f3c2a1b-4d5e-6f7a-8b9c-0d1e2f325869
status: experimental
description: |
T1560.001 (arşiv staging) ardından T1041 (external HTTPS) zinciri.
IOC-only kuralların üzerine davranışsal korelasyon katmanı.
NOT: Exfil kanıtı için upload hacmi (NetFlow/EDR) ile doğrulama önerilir.
NOT 2: timespan statik pencere kullanır; 30dk sınırı tam ortadan
geçen olaylarda (örn. 14:29 / 15:01) false negative riski taşır.
author: CybersecLab-NewbieV35
tags:
- attack.t1560.001
- attack.t1041
correlation:
type: temporal_ordered
rules:
- archive_staging
- external_https
group-by:
- ComputerName
timespan: 30m
falsepositives:
- Temp'te arşiv + kısa sürede meşru HTTPS (browser, OneDrive sync)
- Yedekleme yazılımı staging + cloud upload
level: high
Sigma correlation notu: timeframe + condition: A and B tek kural içinde geçersizdir. Doğru format type: temporal veya type: temporal_ordered ile ayrı kural referansları ve group-by gerektirir. Backend desteği değişkendir hedef SIEM için pySigma backend uyumluluğu doğrulanmalıdır.
PowerShell Encoded Command + Network Activity (T1059.001):
# ── Kural 1: Encoded PowerShell ───────────────────────────────
title: Suspicious Encoded PowerShell Command Line
id: 8f3c2a1b-4d5e-6f7a-8b9c-0d1e2f325870
author: CybersecLab-NewbieV35
name: ps_encoded
logsource:
category: process_creation
product: windows
detection:
selection_img:
Image|endswith:
- '\powershell.exe'
- '\pwsh.exe'
- '\powershell_ise.exe'
selection_cli:
CommandLine|contains:
- ' -enc'
- ' -EncodedCommand'
- ' -ec '
- ' -EncodedCommand '
condition: all of selection_*
falsepositives:
- Onaylı automation/script signing politikaları
---
# ── Kural 2: Outbound network (daraltılmış) ───────────────────
title: PowerShell Outbound Network Connection
id: 8f3c2a1b-4d5e-6f7a-8b9c-0d1e2f325871
author: CybersecLab-NewbieV35
name: ps_network
logsource:
category: network_connection
product: windows
detection:
selection:
Image|endswith:
- '\powershell.exe'
- '\pwsh.exe'
- '\powershell_ise.exe'
Initiated: 'true'
DestinationPort: 443
filter_private:
DestinationIp|startswith:
- '10.'
- '192.168.'
- '127.'
- '169.254.'
- '172.16.'
- '172.17.'
- '172.18.'
- '172.19.'
- '172.20.'
- '172.21.'
- '172.22.'
- '172.23.'
- '172.24.'
- '172.25.'
- '172.26.'
- '172.27.'
- '172.28.'
- '172.29.'
- '172.30.'
- '172.31.'
condition: selection and not 1 of filter_private
---
# ── Korelasyon kuralı ─────────────────────────────────────────
title: PowerShell Encoded Command with Network Activity
id: 8f3c2a1b-4d5e-6f7a-8b9c-0d1e2f325872
author: CybersecLab-NewbieV35
status: experimental
description: |
T1059.001 — Encoded PowerShell ardından outbound HTTPS bağlantısı.
Exfil değil; execution + C2/LotL indirme şüphesi. Child process ağ
bağlantısı açarsa false negative riski — Win EID 4104 ile desteklenmeli.
references:
- https://github.com/SigmaHQ/sigma/blob/master/rules/windows/process_creation/proc_creation_win_susp_powershell_enc_cmd.yml
- https://sigmahq.io/sigma-specification/specification/sigma-correlation-rules-specification.html
date: 2026-06-16
tags:
- attack.t1059.001
- attack.execution
correlation:
type: temporal_ordered
rules:
- ps_encoded
- ps_network
group-by:
- ComputerName
timespan: 5m
falsepositives:
- Onaylı PowerShell automation + meşru HTTPS (Graph API, Azure)
- Admin script deploy araçları
level: medium
DNS Yüksek Sorgu Uzunluğu — Zeek (T1071.004):
title: High Query Length DNS — Possible Tunneling
id: 8f3c2a1b-4d5e-6f7a-8b9c-0d1e2f325873
author: CybersecLab-NewbieV35
status: experimental
description: |
Detects unusually long DNS queries in Zeek logs, which may indicate DNS tunneling
or data encoding in subdomain labels (T1071.004) and exfiltration (T1048.003).
Full FQDN length is measured, not a single label. Single-event matches carry a high
false positive rate from CDN base64 subdomains and security telemetry domains —
correlate with the frequency rule (high-query-length-dns-frequency) and/or Sysmon
EID 22 for higher confidence. Entropy scoring (e.g. Shannon entropy > 3.5) is
recommended as second-stage filtering downstream; Sigma has no native entropy
modifier so this cannot be expressed here.
references:
- https://attack.mitre.org/techniques/T1071/004/
- https://attack.mitre.org/techniques/T1048/003/
- https://github.com/SigmaHQ/sigma/issues/1862
tags:
- attack.command_and_control
- attack.exfiltration
- attack.t1071.004
- attack.t1048.003
logsource:
product: zeek
service: dns
detection:
selection:
query|re: '^.{51,}\.?$'
filter_internal:
query|re: '\.(local|internal|corp|lan|home|localdomain)\.?$'
filter_known_fp:
query|re: '\.(cloudfront\.net|akamaiedge\.net|akamai\.net|akamaihd\.net|fastly\.net|edgekey\.net|edgesuite\.net)\.?$'
condition: selection and not 1 of filter_*
falsepositives:
- CDN base64-encoded subdomain labels (CloudFront, Akamai, Fastly, Edgekey)
- Security product telemetry and update check URLs
- Legitimate long hostnames in enterprise PKI or MDM
level: low
10.3 Dönüşüm
sigma convert -t splunk -p sysmon rule.yml
sigma convert -t elastic-lucene -p sysmon rule.yml
Kural deposu: SigmaHQ/sigma. MITRE tag filtresi: attack.exfiltration, attack.t1041, attack.t1567.
11. SaaS ve Kimlik Katmanı Tespiti
11.1 Microsoft 365 / Graph API — T1537
Kaynak | Sinyal |
|---|
Unified Audit Log | FileUploaded, FileDownloaded, FileSyncDownloadedFull, SharingSet, AnonymousLinkCreated, AddedToSecureLink
|
Defender for Cloud Apps (MDCA) | Anomalous mass download, impossible travel, new cloud storage |
Entra Sign-in Log | Risky sign-in + Graph API scope kullanımı |
Graph API audit | POST /drives/.../root/children yüksek hacim, GET /drives/{id}/items/{id}/content yüksek çağrı sayısı veya ResponseSizeBytes
|
Genişletilmiş Graph vektörleri: Mail.Read / ChatMessage.Read ve yüksek yetkili OAuth scope'ların varlığı tek başına exfil göstermez; gerçekleşmiş transfer veya erişim olayı (UAL, Graph Activity Logs, MDCA) ile korele edilmelidir.
Korelasyon:
[Entra] Risky sign-in (unfamiliar location/device) — medium+ risk
→ [MDCA] Mass download veya upload anomalisi
→ [UAL veya Graph Activity] Gerçekleşmiş transfer kanıtı:
• FileDownloaded / FileSyncDownloadedFull / FileAccessed + yüksek hacim
→ T1567.002 (indirme / staging)
• Cross-tenant FileUploaded / FileCopied veya harici site hedefi
→ T1537 (cross-tenant transfer)
11.2 Oturum Ele Geçirme / Token Replay — T1550.004
Interlock ve Scattered Spider vakalarında valid token + MFA bypass gözlemlendi:
Entra: aynı token'ın farklı IP/coğrafyadan kullanımı
CAE (Conditional Access Evaluation) token revocation anomalisi
Token Protection: Yönetilmeyen cihazdan PRT replay denemesi
Sign-in log: TokenIssuerType = AzureAD + RiskState = atRisk(farklı cihazdan aynı token)
11.3 OAuth Consent Grant Anomalileri
Olay | Sinyal | Öncelik |
|---|
Admin consent grant | Yeni app + Files.ReadWrite.All / Sites.ReadWrite.All/ Directory.ReadWrite.All | P1 |
User consent (gevşek tenant) | Consent to application + IsAdminConsent=false+ Üçüncü parti app + geniş scope son 30 gün kayıtlı app
| P1 |
Consent sonrası anomali | Admin consent → 1 saat içinde bulk file access FileDownloaded / FileAccessed / MailItemsAccessed veya GET .../content | CRITICAL |
Over-privileged scope | Mail.ReadWrite, Directory.ReadWrite.All, offline_access, EWS.AccessAsUser.All isteği
| HIGH |
MDCA post-consent | Suspicious OAuth app file download activities | CRITICAL |
Application permission | Add app role assignment to service principal + yüksek app-only scope
| HIGH |
Entra Audit Log olayları: Consent to application, Add delegated permission grant, Add app role assignment grant.
11.4 GitHub / Slack / Teams
Platform | Sinyal |
|---|
GitHub | git.clone,git.fetch,git.push,personal_access_token.access_granted ,org.add_outside_collaborator , repo.add_member ,oauth_application.create, oauth_access.createyeni PAT, geniş scope, olağandışı IP, bilinmeyen hesap, yeni OAuth app + token kullanımı
|
Slack Enterprise | DLP alert, anomalous file upload hacmi |
Teams | FileDownloaded/FileAccessed, SharingSet, AnonymousLinkCreated, AddedToSecureLinkMDCA external share, anomalous download
|
12. Kanal → Tespit Sinyali Özet Tablosu
Kanal | Birincil Tespit Sinyali | İkincil Sinyal | Araç |
|---|
C2 / HTTPS exfil | RITA beacon (≥80, v5 0–100 ölçeği) + bytes_out anomalisi | JA4+ sapması | Zeek, RITA, NetFlow |
DNS tünelleme | Zeek sorgu uzunluğu (tam FQDN) > 50 + entropi ≥ 3.5 | EID 22 + EID 1 (iodine/dnscat) | Zeek, Sysmon |
DoH bypass | DoH endpoint'e 443 (proxy log) | EID 22 hacim düşüşü | Proxy, CASB |
QUIC exfil | UDP/443 flow anomalisi + yüksek hacim | JA4+ ≠ tarayıcı profili | Zeek, NetFlow |
Bulut depolama | rclone/azcopy UA + CDN/blob POST anomalisi | EID 1 nadir binary + EID 3 dış hedef | Proxy, Sysmon, EDR |
Graph / SaaS API | MDCA mass download/upload | OAuth consent + risky sign-in | MDCA, Entra, UAL |
Teams / Slack / GitHub | CASB/audit anomali (mass/excessive download) | UEBA departman/peer sapması | MDCA, Slack AER, GitHub Audit |
Domain fronting | SNI ≠ Host header (TLS metadata şart) | CDN IP + POST anomalisi | Zeek |
Edge worker relay | Beklenmedik worker subdomain + düzenli POST | JA4+ ≠ tarayıcı profili | Zeek, proxy |
Arşivleme | EID 1 (7z/rar) + EID 11 Temp/AppData | Rare/unsigned binary | Sysmon, EDR |
Uniform boyut | RITA DS skoru yüksek | Düzenli paket dizisi (beacon benzeri) | RITA |
LotL indirme | certutil -urlcache / bitsadmin download (EID 1) | EID 11 yeni dosya + EID 3 dış bağlantı | Sysmon, EDR |
BITS exfil | bitsadmin / Start-BitsTransfer (EID 1) | BITS Operational log + EID 3 :443 | Sysmon, Windows Event |
Process injection + C2 | EID 8/10 + EID 17/18 | EID 3 bilinen C2 IP | Sysmon, EDR |
ICMP tünelleme | ICMP payload entropy / boyut anomalisi | ptunnel/icmpsh process (EID 1) | Zeek, NIDS |
WebDAV exfil | WebDAV 443/80 + büyük PUT | EID 3 + EID 11 | Proxy, Sysmon |
Oturum ele geçirme | Aynı token, farklı IP/ASN (non-interactive sign-in log) | CAE revoke sonrası farklı IP'den re-auth | Entra, MDCA |
USB | Device connect + write event | Endpoint DLP alarm | MDE, Intune |
Zamanlama | Mesai dışı bytes_out > 3× baseline | Gece beacon profili | NetFlow, UEBA |
Staging | EID 11 büyük arşiv + EID 23 silme | EID 3 dış upload (hacim teyidi NetFlow/EDR'den) | Sysmon, NetFlow |
E-posta exfil | smtp.log dış alıcı + büyük ek | Mail GW DLP alert | Zeek, DLP |
13. MITRE → Tespit Playbook Matrisi
Teknik | Tespit Sorgusu / Kural | Veri Kaynağı | Öncelik |
|---|
T1041 | beacon >= 80 AND bytes_out > baseline × 10
| RITA + conn.log | P1 |
T1071.004 | query_len > 50 AND dns_entropy > 3.5 AND queries > 200/10m
| Zeek dns.log | P1 |
T1572 | ja4 NOT IN browser_set AND proto=udp/443
| Zeek ssl.log | P1 |
T1567.002 | user_agent~rclone/azcopy AND POST > host_baseline × 5
| Proxy http.log | P1 |
T1537 | mdca.mass_download AND oauth_consent AND entra.risky
| CASB + UAL + Entra | P1 |
T1560.001 | EID1=7z/rar/zip AND EID11=Temp AND EID3=external
| Sysmon | P1 |
T1090.004 | http.host != ssl.sni (TLS metadata şart)
| Zeek ssl.log + http.log | P2 |
T1074 | EID11 archive AND EID23 delete within 1h
| Sysmon | P2 |
T1030 | rita ds_score high AND uniform_size
| RITA | P2 |
T1197 | EID1=bitsadmin/start-Bitstransfer AND EID3=443
| Sysmon + BITS Operational log | P2 |
T1059.001 | PS EncodedCommand AND EID3 external
| Sysmon | P2 |
T1095 | icmp bytes anomaly OR ptunnel process
| Zeek/NIDS + Sysmon | P2 |
T1052.001 | usb_write_event AND sensitive_label
| MDE DLP/Intune | P2 |
T1029 | bytes_out outside business_hours > 3× baseline
| NetFlow + UEBA | P2 |
T1048.002 | smtp external_recipient AND attachment > baseline
| Zeek smtp.log | P2 |
T1539 | token_reuse different_ip AND risk_state=atRisk
| Entra Sign-in | P1 |
T1105 | certutil -urlcache AND EID3 external
| Sysmon | P2 |
14. Vaka Çalışmaları — Tespit Perspektifi
14.1 CISA Akira — rclone Exfil (AA24-109A)
Saldırı: rclone ile bulut depolamaya bulk veri sızdırma --bwlimit ile mesai saatlerinde throttle.
Tespit sinyalleri:
EID 1: rclone.exe veya yeniden adlandırılmış binary (dllhosts.exe) imza tek başına yetersiz
Proxy: User-Agent: rclone/v* + büyük POST hacmi hedef mega.nz, backblazeb2.com
EID 11: staging arşivi (WinRAR) —Temp/ProgramData ve rclone.conf oluşumu
MDCA: anomalous external upload (CASB mevcutsa)
Low-and-slow NetFlow kuralı: Throttle nedeniyle tek saatlik hacim düşük; 4+ saatlik süreklilik sinyali
Ders: Binary rename + bwlimit kombinasyonu imza ve statik eşik kurallarını atlatır. Davranışsal Zincir A + low-and-slow NetFlow + UEBA mesai dışı anomalisi şart.
14.2 CISA Interlock — AzCopy (AA25-203A)
Saldırı: AzCopy ile Azure Blob Storage'a exfil; valid session token kullanımı.
Tespit sinyalleri:
EID 1: azcopy.exe, StorageExplorer.exe + command line (copy, sync, blob URL)
EID 3: *.blob.core.windows.net:443
Azure Activity Log: anomalous PutBlob hacmi
AzCopy log: %USERPROFILE%\.azcopy — UPLOADSUCCESSFUL kayıtları
Entra: token reuse farklı IP/ASN (non-interactive sign-in log)
14.3 SUNBURST — APT29 (2020)
Saldırı: Düzenli beacon, meşru SolarWinds Orion trafiğine karışmış HTTPS C2.
Tespit sinyalleri (geriye dönük):
RITA beacon: avsvmcloud.com altında düzenli conn, SUNBURST kasıtlı jitter ekleyerek kümeleme tespitini atlatabiliyor
JA3: SolarWinds Orion trafiğinden sapma
Zeek: User-Agent: SolarWindsOrionImprovementClient/* + hedef domain ≠ api.solarwinds.com
DNS: yüksek entropi, AD domain encoded subdomain
Ders: İmza ile yakalanamaz; DNS DGA + UA/hedef uyumsuzluğu + uzun dönem analiz kritik.
14.4 DNS Tünelleme — iodine/dnscat2
Tespit sinyalleri:
Zeek: yüksek entropi TXT/CNAME sorguları (Base32 iodine payload — ~3.92 entropi)
Sysmon EID 22: aynı apex'e yüzlerce unique subdomain
Ağ: dış 53/udp trafiği (Bölüm 2 resolver kilidi varsa bu anomali kritik)
14.5 Scattered Spider / UNC3944 — SaaS ve Kimlik
Saldırı: Helpdesk impersonation, MFA fatigue , SIM swap, AiTM phishing, OAuth consent abuse.
Tespit sinyalleri:
Entra risky sign-in + MFA fatigue pattern
OAuth consent abuse: yeni app + geniş scope + unverified publisher + anında bulk access
MDCA mass download
SIM swap sonrası farklı IP/ASN'den token reuse kullanımı (T1539)
Ders: Kimlik katmanı birincil; consent tek başına yetmez, bulk access kanıtıyla korele edilmeli.
14.6 FIN7 — Staging + Exfil Zinciri
Saldırı: Çok aşamalı lateral movement, staging, rclone/AzCopy, mesai dışı upload.
Tespit sinyalleri:
EID 11: staging (7z/RAR) + lateral movement sonrası yeni host
rclone/MEGAsync + mesai dışı upload
RITA: gece beacon profili
Ders: Tek sinyal yetersiz staging→exfil→cleanup korelasyonu + UEBA mesai dışı anomalisi kullanılmalı.
15. SOC Operasyonu — Triage ve Escalation
15.1 Öncelik Matrisi
Güven | Koşul | Aksiyon |
|---|
CRITICAL | Veri sunucusu bulk egress kanıtı (NetFlow/EDR/proxy) + staging | Ağ izolasyonu + kanıt koruma + IR |
CRITICAL | OAut Admin consent (AllPrincipals) + mass upload + risky sign-in | Token/app revoke + kullanıcı doğrulama + IR |
CRITICAL | Aynı SessionId/uti token + farklı IP/ASN | Token/session revoke + MFA sıfırlama |
HIGH | rclone/azcopy + proxy POST anomalisi + staging arşiv (EID 11) | Host izolasyonu + triage + NetFlow doğrulama |
HIGH | DNS tünelleme ( uzun sorgu + entropi ) + şüpheli process | İzolasyon + DNS sinkhole + triage |
HIGH | MDCA mass download + Entra risky sign-in | Kullanıcı doğrulama + token inceleme + 1h izleme |
MEDIUM | OAuth/user consent (yüksek scope) | App inventory + kullanıcı doğrulama + kuyruk |
MEDIUM | Tekil JA4+ anomalisi | İnceleme kuyruğu |
LOW | Yüksek entropi DNS + bilinen CDN/FP eşleşmesi | Analist incelemesi; suppress adayı |
15.2 Mesai Dışı — T1029
NetFlow: bytes_out BETWEEN 00:00–06:00
AND src IN [workstation_subnet]
AND src NOT IN [backup_servers]
AND bytes_out > 3× user_baseline
→ MEDIUM-HIGH
15.3 False Positive Yönetimi
FP Kaynağı | Azaltma Yöntemi | Ek Kontrol / Önkoşul |
|---|
Yedekleme yazılımı | Backup sunucusu + servis hesabı allowlist | Job penceresi dışında oluşursa allowlist geçersiz sayılır. Beklenmeyen hedef endpoint veya alışılmadık veri hacmi tespit edilirse CRITICAL egress olarak değerlendirilir. |
CDN yüksek entropi subdomain | CDN domain allowlist + entropi istisnası | Sorgu uzunluğu ≥ 50 karakter veya entropi baseline'ını aşan ani artış durumunda suppress kaldırılır ve yeniden incelenir. Domain eşleşmesi yalnızca suffix/FQDN bazında yapılmalı, contains eşleşmesi kullanılmamalıdır. |
Apple Private Relay / iCloud | Apple IP aralıkları allowlist | Cihazın MDM kayıt durumu doğrulanmalıdır. Kayıtsız cihazlarda allowlist uygulanmaz. Session anomalisi veya beklenmeyen veri transferi devam ederse triage edilir. |
Windows Update CDN | Microsoft IP ve domain allowlist | Trafik yalnızca update servislerinden gelmelidir. İzole hosttan gelen yüksek hacimli egress veya imzasız process kaynaklı bağlantılar ayrıca incelenmelidir. |
OneDrive kişisel senkronizasyon | Tenant restriction (kurumsal/kişisel ayrımı), kişisel tenant blocklist, CASB politikaları | Hedef tenant ID doğrulanmalıdır. Kişisel tenant'a veri transferi tespit edilirse allowlist uygulanmaz ve HIGH öncelikli olay olarak değerlendirilir. |
Developer GitHub aktivitesi | Enterprise audit log + rol bazlı istisna | Push hacmi, repo görünürlüğü ve hedef organizasyon kontrol edilmelidir. Public repoya yapılan büyük hacimli push işlemleri istisna kapsamı dışında değerlendirilir. |
Güvenlik aracı telemetrisi | Vendor IP, sertifika veya User-Agent allowlist | Ani hacim artışı tespit edilirse imza eşleşse bile alarm üretilir. User-Agent değişikliği veya beklenmeyen endpoint kullanımı allowlist'i geçersiz kılar. |
M365 / e-posta TXT DNS (SPF, DKIM, DMARC) | Mail sunucusu allowlist ve TXT sorgu oranı kalibrasyonu | Baseline üzerindeki TXT sorguları veya mail sunucusu dışındaki sistemlerden gelen sorgular entropi analizi kapsamında değerlendirilir. Suppress edilen ancak süreklilik gösteren aktiviteler yeniden gözden geçirilmelidir. |
Managed DB egress (Azure SQL, RDS, Cosmos DB) | Hedef endpoint ve servis hesabı allowlist, peer-group egress baseline'ı | Hedef endpoint CMDB veya uygulama envanterinde kayıtlı değilse CRITICAL olarak değerlendirilir. Baseline'ı aşan veri hacimleri ayrıca alarm üretmelidir. |
Legit OAuth / SaaS onboarding | Verified Publisher allowlist, change ticket ve maintenance window | Consent sonrasında ilk 24 saat boyunca artırılmış izleme uygulanmalıdır. Beklenmeyen veri erişimi veya transfer davranışı gözlenirse CRITICAL OAuth vakası olarak yükseltilir. |
Kurumsal VPN / split tunnel | Trusted VPN IP pool allowlist | Impossible travel analizinde coğrafi mesafe, süre ve kullanıcı davranışı birlikte değerlendirilmelidir. Kısa süreli IP değişimleri suppress edilebilir; kalıcı veya yüksek hacimli aktivite triage edilmelidir. |
Planlı AzCopy / rclone job | Change ticket, zaman penceresi ve hedef storage allowlist | OriginalFileName, binary hash ve hedef storage account doğrulanmalıdır. Ticket dışı zamanlarda veya kayıtlı olmayan hedeflere yapılan transferler HIGH öncelikli olay olarak değerlendirilir. |
16. Tespit Olgunluk Modeli
Seviye | Durum | Kontroller |
|---|
Kör | Minimum görünürlük | AV only; DNS, NetFlow, Sysmon ve Entra görünürlüğü yok; merkezi loglama yok |
Temel | Temel görünürlük | Sysmon, Windows Event Log, perimeter firewall logları, PowerShell 4104; IOC ve imza tabanlı tespit; SaaS ve kimlik görünürlüğü sınırlı |
Gelişmiş | Merkezi görünürlük ve korelasyon | Zeek, SIEM, Sigma, NetFlow, Entra Sign-in & Audit Logs; DNS uzunluk, frekans ve entropi analizi; Zincir A/B/D korelasyonları |
Optimize | Davranış odaklı tespit | RITA, JA4+/TLS fingerprinting, EDR, CASB, M365 UAL, AAD Non-Interactive Sign-in Logs; Zincir A–F; temel UEBA; 24/7 SOC veya MDR |
Proaktif | Sürekli doğrulama ve avcılık | UEBA, threat hunting, purple team, Detection-as-Code, ATT&CK coverage ölçümü, baseline anomali tespiti, otomatik triage, detection validation ve adversary emulation |
17. Yaygın Tespit Hataları
# | Yaygın Hata | Doğru Yaklaşım | Not |
|---|
1 | Tek sinyal (JA4+, RITA, Sigma) | Korelasyon + host/user/zaman bağlamı | Multi-source korelasyon olmadan FP ve bypass kaçınılmaz |
2 | Statik entropi/POST eşiği | Peer veya rol bazlı baseline, UEBA kalibrasyonu | Ortam bazlı baseline olmadan alert seli oluşur |
3 | TLS inspection olmadan proxy loguna güvenmek | SNI + JA4+ + hacim metadata, gerekirse TLS inspection | Proxy log tek başına kör noktalar oluşturur |
4 | CASB olmadan SaaS ağ loglarına güvenmek | MDCA + Entra Audit + UAL + Graph Activity Logs | SaaS API abuse CASB entegrasyonu olmadan görülemez |
5 | NetFlow olmadan hacim anomalisi aramak | Egress NetFlow veya EDR kullanmak | Unsampled NetFlow/Zeek yoksa hacim spike'ları kaçabilir |
6 | Sysmon olmadan Zincir A–F korelasyonu yapmak | Sysmon veya eşdeğer EDR telemetry | Endpoint korelasyonu çalışmaz |
7 | SwiftOnSecurity default config ile EID 17/18 beklemek | Extended/targeted config kullanmak | Default yapılandırma yeni/random pipe'ları kaçırır |
8 | EID 7'yi reflective loading için ana sinyal saymak | EID 8/10/25 + EDR bellek analizi | Reflective DLL genellikle EID 7 üretmez |
9 | certutil'i doğrudan exfil (T1048) olarak etiketlemek | Upload/encode kanıtı ile doğrulamak | Yanlış etiketleme detection zincirini bozar |
10 | RITA v5'te eski komut sözdizimi kullanmak | rita view <dataset> veya rita view -o <dataset>
| v4 formatı (>=0.8) geçersizdir |
11 | Sigma correlation'da tüm mantığı tek kuralda toplamak | correlation bloğu ve ayrı rule'lar kullanmak
| temporal_ordered sadece sıra kritikse kullanılmalı
|
12 | RITA'yı tek başına kullanmak | Connection + DNS + endpoint korelasyonu | Adaptive beacon'lar RITA'yı atlatabilir |
13 | Otomatik DNS bloklamak | Analist incelemesi + TTL suppress + suffix whitelist | CDN kaynaklı FP riski yüksektir |
14 | Mesai dışı baseline'ı ihmal etmek | 7/24 baseline oluşturmak | Low-and-slow exfil mesai dışında kaçabilir |
15 | Staging–exfil korelasyonu yapmamak | T1074 → T1560 → T1041 zincirini tamamlamak | Zincir korelasyonu olmadan güven düşüktür |
16 | Supply chain saldırılarında imza tabanlı tespit kullanmak | Uzun dönem connection/DNS analizi | SUNBURST benzeri tehditler davranışsal analiz gerektirir |
17 | IOC-only Sigma kullanmak | OriginalFileName + UA + davranış + korelasyon | Binary rename ile kolayca atlatılabilir |
18 | UEBA öğrenme süresini göz ardı etmek | 2–4 hafta baseline ve tuning yapmak | Erken prod geçişi alert seline yol açar |
19 | Flow sampling (1:1000) kör noktasını önemsememek | Unsampled veya düşük oranlı flow toplamak | Kısa burst exfil kaçabilir |
20 | Domain fronting'i sadece büyük CDN'lerde aramak | Edge worker relay ve CDN dışı origin'leri incelemek | Modern varyantlar CDN dışında da görülür |
21 | EID 3'ten hacim bilgisi beklemek | NetFlow/proxy/EDR ile doğrulamak | EID 3 yalnızca IP/port bilgisi verir |
22 | Session hijack için sadece interactive SignInLogs kullanmak | NonInteractive logları da dahil etmek | Replay aktiviteleri genellikle burada görünür |
23 | OAuth consent'i exfil kanıtı saymak | UAL/Graph transfer olaylarıyla korelasyon kurmak | Consent tek başına CRITICAL değildir |
24 | Zeek'te native DNS entropisi beklemek | Entropiyi SIEM/RITA/script ile hesaplamak | Zeek yalnızca temel DNS verilerini sağlar |
25 | BITS exfil için sadece EID 3 kullanmak | BITS Operational Log + EID 1 korelasyonu | EID 3 BITS kanalını göstermez |
18. Kaynaklar
MITRE ATT&CK
TLS Fingerprinting
Araçlar ve Teknik Referanslar
Tehdit İstihbaratı ve Vaka Çalışmaları
Microsoft / Kimlik