CyberFlow Logo CyberFlow BLOG
Soc L3 Cloud Security

Denetimli Öğrenme ile Saldırı Sınıflandırması

✍️ Ahmet BİRKAN 📂 Soc L3 Cloud Security

Denetimli Öğrenme ile Saldırı Sınıflandırması konusunu SOC L3 - İleri Tehdit Avcılığı - Veri Madenciliği ve Modelleme baglaminda blog formatinda ogrenin. Temel akis, kavram eslestirmeleri ve analiz mantigi tek bir yapida birlestirildi.

Denetimli Öğrenme ile Saldırı Sınıflandırması

Denetimli öğrenmede model, etiketli veri üzerinde eğitilir. Güvenlik verisinde etiketler genellikle 'malicious' / 'benign' şeklindedir. Scikit-learn ile temel sınıflandırma pipeline'ı: import pandas as pd from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import classification_report X = df[['bytes','duration','unique_ports','failed_logins']] y = df['label'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) model = RandomForestClassifier(n_estimators=100, random_state=42)

Giris ve Temel Akis

Denetimli öğrenmede model, etiketli veri üzerinde eğitilir. Güvenlik verisinde etiketler genellikle 'malicious' / 'benign' şeklindedir. Scikit-learn ile temel sınıflandırma pipeline'ı: import pandas as pd from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import classification_report X = df[['bytes','duration','unique_ports','failed_logins']] y = df['label'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) model = RandomForestClassifier(n_estimators=100, random_state=42)

Bu bölümün pratik akışı şu sırayla ilerler:

  • X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
  • model = RandomForestClassifier(n_estimators=100)
  • model.fit(X_train, y_train)
  • print(classification_report(y_test, model.predict(X_test)))

Temel Kavram Eslesmeleri

Denetimli öğrenmede kullanılan algoritmalar farklı veri yapılarına ve problem tiplerine göre seçilir. Güvenlik verisinin yüksek boyutlu ve dengesiz yapısı algoritma seçimini doğrudan etkiler. Örnek karşılaştırma: - Logistic Regression: hızlı, yorumlanabilir, lineer sınırlar - Random Forest: yüksek doğruluk, feature importance sunar - XGBoost: dengesiz veri için güçlü, CTF analizinde yaygın - SVM: yüksek boyutlu veride etkili, yavaş eğitim

  • Random Forest: Feature importance ile yorumlanabilir tehdit tespiti
  • XGBoost: Dengesiz etiket dağılımında yüksek performans
  • Logistic Regression: Hızlı baseline model ve yorumlanabilirlik
  • SVM: Yüksek boyutlu özellik uzayında sınır belirleme

Ilk Cekirdek Kavram

Bu bölümde öne çıkan çekirdek kavram recall olarak verilir. Confusion matrix sınıflandırma modelinin performansını dört metrik üzerinden gösterir. SOC bağlamında en kritik metrik recall'dur çünkü gerçek saldırıların kaçırılmaması önceliklidir: from sklearn.metrics import confusion_matrix, classification_report import numpy as np cm = confusion_matrix(y_test, y_pred) TN, FP, FN, TP = cm.ravel() precision = TP / (TP + FP) recall = TP / (TP + FN) f1 = 2 * (precision * recall) / (precision + recall) print(f'Precision: {precision:.3f}') print(f'Recall: {recall:.3f}') print(f'F1: {f1:.3f}')

Arac, Komut veya Inceleme Akisi

XGBoost güvenlik verisindeki dengesiz sınıf dağılımı için scale_pos_weight parametresiyle optimize edilir. SHAP değerleri model kararlarını açıklamak için kullanılır: import xgboost as xgb import shap model = xgb.XGBClassifier( scale_pos_weight=scale, n_estimators=200, max_depth=6, learning_rate=0.1 ) shap_values = explainer.shap_values(X_test) shap.summary_plot(shap_values, X_test)

Bu bölümün pratik akışı şu sırayla ilerler:

  • neg_count = (y_train == 0).sum()
  • pos_count = (y_train == 1).sum()
  • scale = neg_count / pos_count
  • model = xgb.XGBClassifier(scale_pos_weight=scale)
  • model.fit(X_train, y_train)
  • explainer = shap.TreeExplainer(model)

Kanit ve Bilesen Iliskileri

Model değerlendirme metrikleri farklı hata tiplerini ölçer. Güvenlik modellerinde hangi hatanın daha kabul edilebilir olduğu kullanım senaryosuna göre değişir. Örnek senaryo: - IDS kuralı: düşük FP toleransı, analist yorgunluğu riski - Threat hunting modeli: düşük FN toleransı, gözden kaçan APT riski - Otomatik bloklama: çok düşük FP, iş sürekliliği riski

  • Precision: Pozitif tahminlerin gerçekte pozitif olma oranı
  • Recall: Gerçek pozitiflerin tespit edilme oranı
  • F1 Score: Precision ve recall harmonik ortalaması
  • ROC-AUC: Tüm eşik değerlerinde model ayrım gücü

Ikincil Odak Noktasi

Bu bölümde öne çıkan çekirdek kavram dengesiz olarak verilir. Cross-validation overfitting riskini azaltır ve modelin gerçek performansını daha güvenilir ölçer. Güvenlik modellerinde StratifiedKFold kullanılır çünkü dengesiz veri dağılımını korur: from sklearn.model_selection import StratifiedKFold, cross_val_score from sklearn.ensemble import RandomForestClassifier skf = StratifiedKFold(n_splits=5, shuffle=True, random_state=42) model = RandomForestClassifier(n_estimators=100) scores = cross_val_score(model, X, y, cv=skf, scoring='f1') print(f'F1 scores: {scores}') print(f'Mean F1: {scores.mean():.3f} +/- {scores.std():.3f}')

Operasyonel Dogrulama ve Raporlama

Hyperparameter tuning model performansını optimize eder. GridSearchCV ile Random Forest için en iyi parametre kombinasyonu bulunur: from sklearn.model_selection import GridSearchCV from sklearn.ensemble import RandomForestClassifier param_grid = { 'n_estimators': [100, 200, 300], 'max_depth': [5, 10, None], 'min_samples_split': [2, 5, 10] } grid_search = GridSearchCV( RandomForestClassifier(), param_grid, cv=5, scoring='f1', n_jobs=-1 )

Bu bölümün pratik akışı şu sırayla ilerler:

  • param_grid = {'n_estimators': [100,200], 'max_depth': [5,10]}
  • grid_search = GridSearchCV(RandomForestClassifier(), param_grid, cv=5, scoring='f1')
  • grid_search.fit(X_train, y_train)
  • print(f'Best params: {grid_search.best_params_}')
  • print(f'Best F1: {grid_search.best_score_:.3f}')

Cikti ve Kullanım Amaci

Denetimli öğrenme modellerinin üretim ortamına alınması (model deployment) SOC süreçlerine entegrasyon gerektirir. Model çıktıları SIEM uyarılarıyla ilişkilendirilir. Örnek entegrasyon akışı: SIEM log → Feature extraction → Model predict → Score > 0.85 → Otomatik ticket aç → L2 analistine ilet

  • Model registry: Versiyon kontrolü ve model yaşam döngüsü yönetimi
  • Feature store: Eğitim ve servis özelliklerini tutarlı tutar
  • Prediction threshold: FP/FN dengesini belirleyen karar sınırı
  • Model drift monitor: Üretimdeki performans bozulmasını izler

Son Kavram ve Cikis

Bu bölümde öne çıkan çekirdek kavram apply olarak verilir. Splunk MLTK (Machine Learning Toolkit) ile denetimli öğrenme modeli doğrudan SPL içinde uygulanabilir: | inputlookup network_traffic.csv | fit RandomForestClassifier bytes duration unique_ports failed_logins INTO attack_classifier | score attack_classifier Model kaydedildikten sonra yeni veri üzerinde tahmin: index=network earliest=-1h | fields bytes, duration, unique_ports, failed_logins | apply attack_classifier | where predicted_label="malicious" AND probability > 0.85 | table src_ip, predicted_label, probability | sort -probability

Bu Egitimden Ne Kazanirsiniz?

Bu icerik, Denetimli Öğrenme ile Saldırı Sınıflandırması 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: Random Forest, XGBoost, Logistic Regression, SVM, Precision, Recall, F1 Score, ROC-AUC, Model registry, Feature store. Egitimin mantigi; once temel akis kurmak, sonra eslestirme ve kavram netlestirme yapmak, en sonda ise bulguyu operasyonel bir sonuca baglamaktir.