CyberFlow Logo CyberFlow BLOG
Soc L3 Cloud Security

Özellik Mühendisliği (Feature Engineering) — Güvenlik Verilerinde

✍️ Ahmet BİRKAN 📂 Soc L3 Cloud Security

Özellik Mühendisliği (Feature Engineering) — Güvenlik Verilerinde 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.

Özellik Mühendisliği (Feature Engineering) — Güvenlik Verilerinde

Özellik mühendisliği, ham veriden makine öğrenmesi modelinin öğrenebileceği anlamlı değişkenler türetme sürecidir. Güvenlik verisinde en kritik özellikler zaman, davranış ve ağ örüntülerine dayalıdır. Örnek: Bir kullanıcının saatlik başarısız giriş sayısı ham logdan türetilmiş bir özelliktir: import pandas as pd

Giris ve Temel Akis

Özellik mühendisliği, ham veriden makine öğrenmesi modelinin öğrenebileceği anlamlı değişkenler türetme sürecidir. Güvenlik verisinde en kritik özellikler zaman, davranış ve ağ örüntülerine dayalıdır. Örnek: Bir kullanıcının saatlik başarısız giriş sayısı ham logdan türetilmiş bir özelliktir: import pandas as pd

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

  • df['timestamp'] = pd.to_datetime(df['timestamp'])
  • df['hour'] = df['timestamp'].dt.hour
  • df['failed_per_hour'] = df.groupby(['user','hour'])['failed_login'].transform('sum')
  • print(df[['user','hour','failed_per_hour']].drop_duplicates())

Temel Kavram Eslesmeleri

Güvenlik analizinde özellik kategorileri tehdit tipine göre farklılaşır. Doğru özellik grubu seçimi modelin tespit kapasitesini belirler. Örnek özellikler: - bytes_per_second: ağ trafiği yoğunluğu - unique_dst_ports: port tarama göstergesi - login_hour_entropy: giriş zamanı düzensizliği - process_parent_child_ratio: anormal süreç zinciri

  • unique_dst_ports: Port tarama ve keşif aktivitesi
  • login_hour_entropy: Olağandışı zamanda oturum açma
  • bytes_per_second: Veri sızıntısı ve tünelleme
  • process_parent_child_ratio: Anormal süreç zinciri ve code injection

Ilk Cekirdek Kavram

Bu bölümde öne çıkan çekirdek kavram 1H olarak verilir. Ağ trafiği verisinden özellik türetmede en yaygın teknik zaman penceresi (time window) agregasyonudur. Belirli bir zaman diliminde kaynak IP başına istatistikler hesaplanır: import pandas as pd df['timestamp'] = pd.to_datetime(df['timestamp']) df = df.set_index('timestamp') features = df.groupby('src_ip').resample('5T').agg( conn_count=('dst_ip', 'count'), unique_ports=('dst_port', 'nunique'), total_bytes=('bytes', 'sum') ).reset_index() Burada '5T' parametresi 5 dakikalık pencereyi ifade eder.

Arac, Komut veya Inceleme Akisi

Entropy, bir değişkenin düzensizliğini ölçer ve SOC'ta beaconing tespitinde kullanılan güçlü bir özelliktir. Düşük entropi düzenli aralıklı C2 iletişimini işaret edebilir: import numpy as np interval_entropy=('time_delta', calc_entropy), port_entropy=('dst_port', calc_entropy) )

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

  • from scipy.stats import entropy
  • def calc_entropy(series):
  • value_counts = series.value_counts(normalize=True)
  • return entropy(value_counts)
  • df_grouped = df.groupby('src_ip').agg(...)
  • beaconing = df_grouped[df_grouped['interval_entropy'] < 0.5]

Kanit ve Bilesen Iliskileri

Özellik seçimi (feature selection) modele gereksiz değişken beslemeyi önler ve performansı artırır. Güvenlik modellerinde yaygın kullanılan üç yöntem vardır: - Correlation matrix: birbirine bağımlı özellikleri tespit eder - Random Forest feature importance: en ayırt edici özellikleri sıralar - Variance threshold: düşük varyanslı özellikleri eler

  • Correlation matrix: Birbirine bağımlı özellikleri tespit eder
  • Feature importance: En ayırt edici özellikleri sıralar
  • Variance threshold: Sabit veya düşük değişkenli özellikleri eler
  • PCA: Yüksek boyutlu veriyi sıkıştırarak temsil eder

Ikincil Odak Noktasi

Bu bölümde öne çıkan çekirdek kavram 3 olarak verilir. Windows Event Log verisinden lateral movement tespiti için özellik türetme kritik bir SOC analizidir: import pandas as pd df_4624 = df[df['EventID'] == 4624] df_4624['logon_type'] = df_4624['LogonType'].astype(int) features = df_4624.groupby('TargetUserName').agg( unique_src_hosts=('IpAddress', 'nunique'), logon_type_3_count=('logon_type', lambda x: (x==3).sum()), off_hours_count=('hour', lambda x: ((x<8)|(x>18)).sum()) ) lateral = features[features['unique_src_hosts'] > 5] EventID 4624 LogonType 3 değeri ağ üzerinden kimlik doğrulamayı temsil eder.

Operasyonel Dogrulama ve Raporlama

DNS log verisinden tünelleme tespiti için özellik mühendisliği uygulanır. Uzun subdomain uzunluğu, yüksek entropi ve yüksek sorgu sıklığı DNS tünellemesinin temel göstergeleridir: import pandas as pd import numpy as np suspicious = df[ (df['subdomain_len'] > 30) | (df['query_entropy'] > 3.5) | (df['queries_per_min'] > 100) ]

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

  • df['subdomain_len'] = df['query'].apply(lambda x: len(x.split('.')[0]))
  • df['query_entropy'] = df['query'].apply(calc_entropy)
  • df['queries_per_min'] = df.groupby('src_ip')['query'].transform('count')
  • suspicious = df[(df['subdomain_len'] > 30) | (df['query_entropy'] > 3.5)]

Cikti ve Kullanım Amaci

Splunk'ta özellik türetme arama dili (SPL) ile yapılır. eval ve stats komutları birleştirilerek güvenlik özellikleri hesaplanır: index=dns | eval subdomain_len=len(mvindex(split(query,"."),0)) | eval hour=strftime(_time,"%H") | stats count as query_count, dc(query) as unique_queries, avg(subdomain_len) as avg_sub_len by src_ip | where query_count > 100 OR avg_sub_len > 30

  • eval: Yeni alan türetir veya mevcut alanı dönüştürür
  • stats dc(): Benzersiz değer sayısını hesaplar
  • mvindex(): Çok değerli alandan belirli indeksi seçer
  • strftime(): Unix timestamp'i okunabilir formata çevirir

Son Kavram ve Cikis

Bu bölümde öne çıkan çekirdek kavram sentetik olarak verilir. Özellik mühendisliğinde class imbalance problemi SOC modellerinin en büyük zorluklarından biridir. Saldırı olayları normal trafiğe kıyasla çok az sayıda olduğundan model her şeyi normal olarak sınıflandırarak yüksek accuracy elde edebilir. from imblearn.over_sampling import SMOTE X_train, y_train = SMOTE(sampling_strategy=0.3, random_state=42).fit_resample(X_train, y_train) print(pd.Series(y_train).value_counts()) SMOTE, azınlık sınıfı için sentetik örnekler üretir.

Bu Egitimden Ne Kazanirsiniz?

Bu icerik, Özellik Mühendisliği (Feature Engineering) — Güvenlik Verilerinde 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: unique_dst_ports, login_hour_entropy, bytes_per_second, process_parent_child_ratio, Correlation matrix, Feature importance, Variance threshold, PCA, eval, stats dc(). Egitimin mantigi; once temel akis kurmak, sonra eslestirme ve kavram netlestirme yapmak, en sonda ise bulguyu operasyonel bir sonuca baglamaktir.