CyberFlow Logo CyberFlow BLOG
Soc L3 Cloud Security

Anomali Tespitinde Temel İstatistik Kavramları

✍️ Ahmet BİRKAN 📂 Soc L3 Cloud Security

Anomali Tespitinde Temel İstatistik Kavramları 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.

Anomali Tespitinde Temel İstatistik Kavramları

Anomali tespitinin istatistiksel temeli merkezi eğilim ve dağılım ölçütlerine dayanır. Z-score, bir değerin ortalamadan kaç standart sapma uzakta olduğunu gösterir ve SOC'ta eşik tabanlı anomali tespitinde yaygın kullanılır: import pandas as pd import numpy as np df['z_score'] = (df['bytes'] - df['bytes'].mean()) / df['bytes'].std() print(f'Anomali sayısı: {len(anomalies)}') print(anomalies[['src_ip','bytes','z_score']].sort_values('z_score', ascending=False))

Giris ve Temel Akis

Anomali tespitinin istatistiksel temeli merkezi eğilim ve dağılım ölçütlerine dayanır. Z-score, bir değerin ortalamadan kaç standart sapma uzakta olduğunu gösterir ve SOC'ta eşik tabanlı anomali tespitinde yaygın kullanılır: import pandas as pd import numpy as np df['z_score'] = (df['bytes'] - df['bytes'].mean()) / df['bytes'].std() print(f'Anomali sayısı: {len(anomalies)}') print(anomalies[['src_ip','bytes','z_score']].sort_values('z_score', ascending=False))

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

  • df['z_score'] = (df['bytes'] - df['bytes'].mean())
  • / df['bytes'].std()
  • anomalies = df[df['z_score'].abs() > 3]
  • print(anomalies[['src_ip','bytes','z_score']])

Temel Kavram Eslesmeleri

İstatistiksel anomali tespitinde kullanılan temel metrikler veri dağılımının farklı özelliklerini ölçer. SOC analistinin bu metrikleri doğru yorumlaması kritiktir. Örnek: Bir firewall logunda bytes_out dağılımı incelendiğinde: - Ortalama: 1.2 MB - Standart sapma: 0.3 MB - Medyan: 0.9 MB - IQR: 0.4 MB Ortalama ile medyan arasındaki fark sağa çarpık dağılımı işaret eder.

  • Standart sapma: Değerlerin ortalamadan ortalama uzaklığı
  • IQR: 75. ve 25. yüzdelik dilim farkı
  • Z-score: Ortalamadan standart sapma cinsinden uzaklık
  • Medyan: Sıralı dizinin ortadaki değeri, aykırıya dayanıklı

Ilk Cekirdek Kavram

Bu bölümde öne çıkan çekirdek kavram 1.5 olarak verilir. IQR (Interquartile Range) yöntemi aykırı değerlere karşı Z-score'dan daha dayanıklıdır. Güvenlik verisindeki sağa çarpık dağılımlarda tercih edilir: import pandas as pd Q1 = df['bytes'].quantile(0.25) Q3 = df['bytes'].quantile(0.75) IQR = Q3 - Q1 lower = Q1 - 1.5 * IQR upper = Q3 + 1.5 * IQR anomalies = df[(df['bytes'] < lower) | (df['bytes'] > upper)] print(f'IQR alt sınır: {lower:.2f}, üst sınır: {upper:.2f}')

Arac, Komut veya Inceleme Akisi

Zaman serisi anomali tespitinde hareketli ortalama (rolling mean) ve standart sapma kullanılır. Bu yöntem günlük trafik örüntülerindeki ani sapmaları tespit eder: import pandas as pd df = df.set_index('timestamp').resample('1H')['bytes'].sum().reset_index()

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

  • df['rolling_mean'] = df['bytes'].rolling(window=24).mean()
  • df['rolling_std'] = df['bytes'].rolling(window=24).std()
  • df['upper_band'] = df['rolling_mean'] + 3 * df['rolling_std']
  • df['lower_band'] = df['rolling_mean'] - 3 * df['rolling_std']
  • anomalies = df[(df['bytes'] > df['upper_band']) | (df['bytes'] < df['lower_band'])]

Kanit ve Bilesen Iliskileri

Olasılık dağılımları anomali tespitinde beklenen davranışı modellemek için kullanılır. Güvenlik verisinin hangi dağılıma uyduğunu belirlemek doğru eşik seçimi için kritiktir. Örnek: Ağ bağlantı sayısı Poisson dağılımına uyarken, oturum süreleri genellikle log-normal dağılım gösterir.

  • Normal dağılım: Kullanıcı başına günlük ortalama oturum süresi
  • Poisson dağılımı: Birim zamanda gerçekleşen bağlantı sayısı
  • Log-normal dağılım: Ağ trafiği byte boyutu dağılımı
  • Bernoulli dağılımı: Tek oturum açma denemesinin başarı/başarısızlık durumu

Ikincil Odak Noktasi

Bu bölümde öne çıkan çekirdek kavram stdev olarak verilir. Splunk'ta istatistiksel anomali tespiti eventstats ve eval komutlarıyla yapılır: index=network earliest=-7d | stats avg(bytes) as mean_bytes, stdev(bytes) as std_bytes by src_ip | eval z_score = (bytes - mean_bytes) / std_bytes | where abs(z_score) > 3 | eval anomaly_type=if(bytes > mean_bytes, "HIGH_TRAFFIC", "LOW_TRAFFIC") | table src_ip, bytes, mean_bytes, z_score, anomaly_type | sort -z_score Bu sorguda stdev() fonksiyonu standart sapmayı hesaplar.

Operasyonel Dogrulama ve Raporlama

Korelasyon analizi iki değişken arasındaki ilişkiyi ölçer ve SOC'ta birden fazla göstergeyi birleştirerek tespit doğruluğunu artırır. Pearson korelasyonu -1 ile +1 arasında değer alır: import pandas as pd import numpy as np corr_matrix = df[['failed_logins','bytes_out','unique_dst_ports','session_duration']].corr() for c1 in corr_matrix.columns for c2 in corr_matrix.columns print('Yüksek korelasyon çiftleri:', high_corr)

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

  • corr_matrix = df[['failed_logins','bytes_out','unique_dst_ports']].corr()
  • print(corr_matrix)
  • high_corr = [(c1, c2, corr_matrix.loc[c1,c2])
  • for c1 in corr_matrix.columns for c2 in corr_matrix.columns
  • if c1 < c2 and abs(corr_matrix.loc[c1,c2]) > 0.7]
  • print('Yüksek korelasyon:', high_corr)

Cikti ve Kullanım Amaci

İstatistiksel anomali tespitinde karşılaşılan temel sorunlar model güvenilirliğini doğrudan etkiler. Bu sorunları tanımak ve çözüm üretmek L3 analistin temel yetkinliğidir. Örnek: Bir ağda her Pazartesi sabahı yüksek trafik normalse, bu pattern dışarıda bırakılmazsa her Pazartesi anomali olarak işaretlenir — bu concept drift problemidir.

  • Concept drift: Veri dağılımı zaman içinde değişir, model eskir
  • Seasonality: Dönemsel normal örüntüler anomali olarak işaretlenir
  • Cold start: Yeni varlık için baseline verisi yetersizdir
  • Alert fatigue: Yüksek FP oranı analist dikkatini köreltir

Son Kavram ve Cikis

Bu bölümde öne çıkan çekirdek kavram bucket_span olarak verilir. Elastic Stack Machine Learning modülü istatistiksel anomali tespitini otomatikleştirir. Bir ML job tanımı şu şekilde yapılır: PUT _ml/anomaly_detectors/network_anomaly { "analysis_config": { "bucket_span": "15m", "detectors": [{ "function": "high_mean", "field_name": "bytes", "partition_field_name": "src_ip" }] }, "data_description": { "time_field": "@timestamp" } } Bu job her src_ip için 15 dakikalık pencerede bytes ortalamasını izler ve yüksek anomalileri işaretler.

Bu Egitimden Ne Kazanirsiniz?

Bu icerik, Anomali Tespitinde Temel İstatistik Kavramları 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: Standart sapma, IQR, Z-score, Medyan, Normal dağılım, Poisson dağılımı, Log-normal dağılım, Bernoulli dağılımı, Concept drift, Seasonality. Egitimin mantigi; once temel akis kurmak, sonra eslestirme ve kavram netlestirme yapmak, en sonda ise bulguyu operasyonel bir sonuca baglamaktir.