MITRE ATT&CK Verisiyle Korelasyon Analizi
MITRE ATT&CK framework'ü Python STIX2 kütüphanesi ile programatik olarak sorgulanabilir. Tüm teknikler ve alt teknikler çekilerek SOC analiz süreçlerine entegre edilir: import requests import pandas as pd import json url = "https://raw.githubusercontent.com/mitre/cti/master/enterprise-attack/enterprise-attack.json" response = requests.get(url) techniques = [] for obj in attack_data['objects']: if obj['type'] == 'attack-pattern': techniques.append({ 'id': obj.get('external_references',[{}])[0].get('external_id',''), 'name': obj.get('name',''), 'tactic': [p['phase_name'] for p in obj.get('kill_chain_phases',[])], 'platforms': obj.get('x_mitre_platforms',[]), 'data_sources': obj.get('x_mitre_data_sources',[]) }) print(f'Toplam teknik sayısı: {len(df_attack)}')
Giris ve Temel Akis
MITRE ATT&CK framework'ü Python STIX2 kütüphanesi ile programatik olarak sorgulanabilir. Tüm teknikler ve alt teknikler çekilerek SOC analiz süreçlerine entegre edilir: import requests import pandas as pd import json url = "https://raw.githubusercontent.com/mitre/cti/master/enterprise-attack/enterprise-attack.json" response = requests.get(url) techniques = [] for obj in attack_data['objects']: if obj['type'] == 'attack-pattern': techniques.append({ 'id': obj.get('external_references',[{}])[0].get('external_id',''), 'name': obj.get('name',''), 'tactic': [p['phase_name'] for p in obj.get('kill_chain_phases',[])], 'platforms': obj.get('x_mitre_platforms',[]), 'data_sources': obj.get('x_mitre_data_sources',[]) }) print(f'Toplam teknik sayısı: {len(df_attack)}')
Bu bölümün pratik akışı şu sırayla ilerler:
- response = requests.get('https://raw.githubusercontent.com/mitre/cti/.../enterprise-attack.json')
- attack_data = response.json()
- techniques = [{'id':obj['external_references'][0]['external_id'],'name':obj['name']} for obj in attack_data['objects'] if obj['type']=='attack-pattern']
- df_attack = pd.DataFrame(techniques)
- lateral = df_attack[df_attack['tactic'].apply(lambda x: 'lateral-movement' in x)]
- print(f'Lateral movement teknikleri: {len(lateral)}')
Temel Kavram Eslesmeleri
MITRE ATT&CK taktikleri saldırı yaşam döngüsünün farklı aşamalarını temsil eder. Her taktik altında onlarca teknik bulunur ve her tekniğin veri kaynakları tanımlıdır. Örnek taktik-teknik eşleştirmesi: - TA0001 Initial Access → T1566 Phishing - TA0003 Persistence → T1053 Scheduled Task - TA0006 Credential Access → T1003 OS Credential Dumping - TA0008 Lateral Movement → T1021 Remote Services
- TA0001 Initial Access: Email gateway ve perimeter log analizi
- TA0006 Credential Access: LSASS erişimi ve Kerberos anomali tespiti
- TA0008 Lateral Movement: Authentication log ve ağ bağlantı graf analizi
- TA0010 Exfiltration: Yüksek bytes_out ve yurt dışı bağlantı tespiti
Ilk Cekirdek Kavram
Bu bölümde öne çıkan çekirdek kavram T1003.001 olarak verilir. SIEM log kaydını MITRE ATT&CK tekniğiyle eşleştiren korelasyon motoru tehdit tespitini standartlaştırır. Python ile otomatik teknik eşleştirme: import pandas as pd import re mitre_signatures = { 'T1059.001': [r'-[Ee][Nn][Cc]', r'Invoke-Expression', r'IEX\s*('], 'T1003.001': [r'lsass.exe', r'mimikatz', r'sekurlsa'], 'T1558.003': [r'TicketEncryptionType.0x17', r'kerberoast'], 'T1021.002': [r'\\.\IPC$', r'net\s+use.*445'], 'T1055': [r'VirtualAllocEx', r'WriteProcessMemory', r'CreateRemoteThread'] } def map_to_mitre(log_line): matches = [] for technique, patterns in mitre_signatures.items(): if any(re.search(p, log_line, re.IGNORECASE) for p in patterns): matches.append(technique) return matches if matches else ['UNKNOWN'] df['mitre_techniques'] = df['raw_log'].apply(map_to_mitre) df_exploded = df.explode('mitre_techniques') print(df_exploded['mitre_techniques'].value_counts().head(10))
Arac, Komut veya Inceleme Akisi
Splunk ile MITRE ATT&CK korelasyon analizi. Tespit edilen tekniklerin taktik bazında heat map oluşturma: | eval mitre_technique=case( match(CommandLine,"-[Ee][Nn][Cc]"), "T1059.001", match(TargetImage,"lsass.exe"), "T1003.001", match(CommandLine,"net.*use.*445"), "T1021.002", match(CommandLine,"schtasks.*create"), "T1053.005", match(CommandLine,"reg.*add.*Run"), "T1547.001", true(), "UNKNOWN" ) | eval mitre_tactic=case( mitre_technique IN ("T1059.001","T1059.003"), "Execution", mitre_technique IN ("T1003.001","T1558.003"), "Credential Access", mitre_technique IN ("T1021.002","T1021.001"), "Lateral Movement", mitre_technique IN ("T1053.005","T1547.001"), "Persistence", true(), "Unknown" )
Bu bölümün pratik akışı şu sırayla ilerler:
- index=sysmon OR index=wineventlog earliest=-7d
- | eval mitre_technique=case(match(CommandLine,"-[Ee][Nn][Cc]"),"T1059.001",match(TargetImage,"lsass.exe"),"T1003.001",true(),"UNKNOWN")
- | eval mitre_tactic=case(mitre_technique IN ("T1059.001"),"Execution",mitre_technique IN ("T1003.001"),"Credential Access",true(),"Unknown")
- | where mitre_technique!="UNKNOWN"
- | stats count by mitre_tactic, mitre_technique, hostname
- | sort -count
Kanit ve Bilesen Iliskileri
ATT&CK Navigator aracı tespit kapsam haritası oluşturmak için kullanılır. Her tekniğe renk ve skor atanarak görselleştirilir. Örnek kapsam skorlaması: - Kırmızı (0): hiç tespit kuralı yok - Sarı (1-2): kısmi kapsam, iyileştirme gerekiyor - Yeşil (3+): çoklu tespit katmanı mevcut - Mor: manuel avcılık prosedürü tanımlı
- Kırmızı: Tespit kuralı yok, kritik kapsam boşluğu
- Sarı: Tek kural var, iyileştirme gerekiyor
- Yeşil: Çoklu katmanlı tespit mevcut
- Mor: Proaktif avcılık prosedürü tanımlı
Ikincil Odak Noktasi
Bu bölümde öne çıkan çekirdek kavram tags olarak verilir. Sigma kuralları MITRE ATT&CK tekniklerine etiketlenerek çok platform SIEM korelasyonu sağlar. Python ile Sigma kuralını SIEM sorguya dönüştürme: import yaml sigma_rule = """ title: Suspicious PowerShell Encoded Command id: f3b23e20-c5d0-4d38-8f23-3b98f0e7a24c status: stable description: Detects PowerShell with encoded command execution tags: - attack.execution - attack.t1059.001 logsource: category: process_creation product: windows detection: selection: Image|endswith: '\powershell.exe' CommandLine|contains: - '-EncodedCommand' - '-enc ' - ' -e ' condition: selection falsepositives: - Legitimate admin scripts level: high """ rule = yaml.safe_load(sigma_rule) print(f"Kural ID: {rule['id']}") print(f"MITRE tags: {rule['tags']}") print(f"Seviye: {rule['level']}")
Operasyonel Dogrulama ve Raporlama
ATT&CK korelasyonunu otomatikleştiren Python pipeline'ı. Günlük log analizinden MITRE heat map üretme: import pandas as pd import json from collections import defaultdict for _, row in df_detections.iterrows(): tech = row['mitre_technique'] if tech != 'UNKNOWN': mitre_coverage[tech]['count'] += 1 mitre_coverage[tech]['hosts'].add(row['hostname']) mitre_coverage[tech]['users'].add(row['username']) coverage_df = pd.DataFrame([ { 'technique': tech, 'alert_count': data['count'], 'unique_hosts': len(data['hosts']), 'unique_users': len(data['users']), 'risk_score': data['count'] * len(data['hosts']) * len(data['users']) } for tech, data in mitre_coverage.items() ]).sort_values('risk_score', ascending=False)
Bu bölümün pratik akışı şu sırayla ilerler:
- mitre_coverage = defaultdict(lambda: {'count':0,'hosts':set(),'users':set()})
- for _, row in df_detections.iterrows(): tech = row['mitre_technique']
- mitre_coverage[tech]['count'] += 1; mitre_coverage[tech]['hosts'].add(row['hostname'])
- coverage_df = pd.DataFrame([{'technique':tech,'alert_count':data['count'],'risk_score':data['count']*len(data['hosts'])} for tech,data in mitre_coverage.items()])
- coverage_df = coverage_df.sort_values('risk_score', ascending=False)
- print(coverage_df.head(10))
- coverage_df.to_json('mitre_heatmap.json', orient='records')
Cikti ve Kullanım Amaci
MITRE ATT&CK korelasyonunun SOC süreçlerine entegrasyonu farklı operasyonel faydalar sağlar. Her entegrasyon noktası farklı bir SOC işlevini güçlendirir. Örnek entegrasyon noktaları: - Alarm etiketleme: her SIEM alarmına otomatik T-kodu ekleme - Triage önceliklendirme: kritik taktiklerdeki alarmlar önce işlenir - Raporlama: yönetim raporlarında taktik bazlı kapsam özeti - Red team: saldırı simülasyonu için kapsam boşlukları belirleme
- SIEM alarm etiketleme: Her alarma T-kodu atanır, triage hızlanır
- Kapsam boşluğu analizi: Red team için öncelikli saldırı vektörleri belirlenir
- Threat intel korelasyonu: Aktör TTP'si ile ortamdaki alarm eşleştirilir
- Yönetim raporlaması: Taktik bazlı güvenlik duruşu görselleştirilir
Son Kavram ve Cikis
Bu bölümde öne çıkan çekirdek kavram D3-SCA olarak verilir. D3FEND framework'ü ATT&CK'a karşılık gelen savunma tekniklerini tanımlar. ATT&CK-D3FEND eşleştirmesi savunma boşluklarını sistematik olarak kapatmaya yardımcı olur: import pandas as pd attack_defend_mapping = { 'T1059.001': { 'defend': 'D3-SCA', 'name': 'Script Code Analysis', 'controls': ['PowerShell ScriptBlock logging', 'AMSI integration', 'AppLocker'] }, 'T1003.001': { 'defend': 'D3-LSAPC', 'name': 'LSASS Process Access Control', 'controls': ['Credential Guard', 'PPL protection', 'EDR LSASS protection'] }, 'T1021.002': { 'defend': 'D3-NTF', 'name': 'Network Traffic Filtering', 'controls': ['SMB signing enforcement', 'Host firewall rules', 'Zero Trust segmentation'] } } for technique, defense in attack_defend_mapping.items(): print(f"{technique} → {defense['defend']}: {defense['name']}") print(f" Kontroller: {', '.join(defense['controls'])}")
Bu Egitimden Ne Kazanirsiniz?
Bu icerik, MITRE ATT&CK Verisiyle Korelasyon Analizi konusunu SOC L3 - İleri Tehdit Avcılığı - Veri Madenciliği ve Modelleme baglaminda parcali degil, butunlu bir ogrenme akisina donusturur. Yalnizca kavramlari ezberlemek yerine surec sirasini, bilesenler arasi iliskiyi ve hangi kanitin neden onemli oldugunu kavramayi hedefler.
Ozet
Bu ders kapsaminda one cikan basliklar: TA0001 Initial Access, TA0006 Credential Access, TA0008 Lateral Movement, TA0010 Exfiltration, Kırmızı, Sarı, Yeşil, Mor, SIEM alarm etiketleme, Kapsam boşluğu analizi. Egitimin mantigi; once temel akis kurmak, sonra eslestirme ve kavram netlestirme yapmak, en sonda ise bulguyu operasyonel bir sonuca baglamaktir.