Mempelajari KQL untuk hunting, YARA untuk identifikasi, data science techniques, dan advanced baselining untuk threat hunting tingkat lanjut

Setelah di episode 23 kita mempelajari LLM & AI security operations, pada episode ini kita dalami hunting advanced & baselining — teknik hunting tingkat lanjut yang menggunakan KQL, YARA, dan data science. Ini adalah level di mana analyst menjadi true hunter: tidak hanya mencari yang sudah diketahui, tapi menemukan yang belum pernah terlihat.
Mengapa hunting advanced penting? Karena attacker yang sophisticated tidak meninggalkan IOC yang bisa dideteksi rules. Mereka bersembunyi di data volume tinggi, menggunakan teknik yang meniru perilaku normal. Hunting advanced menemukan mereka.
KQL adalah query language untuk Microsoft Sentinel, Microsoft Defender, dan Azure Data Explorer.
DeviceProcessEvents
| where Timestamp > ago(7d)
| where FolderPath startswith "C:\\Users\\"
| where ProcessVersionInfoCompanyName == ""
| project Timestamp, DeviceName, InitiatingProcessFileName,
FileName, FolderPath, SHA256
| sort by Timestamp descDeviceNetworkEvents
| where Timestamp > ago(1d)
| where RemoteUrl != ""
| extend Domain = tostring(parse_url(RemoteUrl).Host)
| where Domain has_any (".top", ".xyz", ".tk", ".ml")
| summarize count() by Domain, DeviceName
| where count_ > 10
| sort by count_ descDeviceProcessEvents
| where Timestamp > ago(7d)
| where FileName =~ "wmic.exe"
| where ProcessCommandLine has "remote"
| project Timestamp, DeviceName, AccountName,
InitiatingProcessFileName, ProcessCommandLine| Pattern | KQL Technique |
|---|---|
| Time-series analysis | make-series operator |
| Session analysis | serialize + prev() |
| Geolocation | geo_point_to_h3cell() |
| Entity graph | graph-match operator |
Tip
Mulai dengan KQL sederhana: filter, summarize, sort. KQL powerful tapi learning curve-nya curam. Microsoft Learn punya interactive KQL playground yang bagus untuk latihan.
rule Fileless_PowerShell_Attack {
meta:
description = "Deteksi fileless malware via PowerShell"
author = "SOC Analyst"
date = "2026/08/16"
strings:
$ps1 = "powershell" nocase
$enc = "-enc" nocase
$b64 = "FromBase64String"
$iex = "IEX" nocase
$download = "DownloadString"
condition:
$ps1 and $enc and $b64 and ($iex or $download)
}rule Obfuscated_Script {
strings:
$s1 = "eval(" nocase
$s2 = "String.fromCharCode"
$s3 = "unescape("
$s4 = "%u"
condition:
2 of them
}# Upload YARA rule ke VT
curl --request POST \
--url "https://www.virustotal.com/api/v3/intelligence/hunting_rules" \
--header "x-apikey: YOUR_KEY" \
--header "Content-Type: application/json" \
--data '{"rule": "rule test { strings: $a = \"malware\" condition: $a }", "name": "test_rule"}'import pandas as pd
import numpy as np
# Load login data
df = pd.read_csv('auth.log.csv')
# Hitung login per jam
hourly = df.groupby(df['timestamp'].dt.hour).size()
# Z-score untuk anomali
mean = hourly.mean()
std = hourly.std()
anomalies = hourly[(hourly - mean).abs() > 2 * std]from sklearn.cluster import DBSCAN
# Features: src_ip, dst_port, protocol, bytes
features = df[['src_ip_encoded', 'dst_port', 'proto', 'bytes']]
# DBSCAN clustering
clustering = DBSCAN(eps=0.5, min_samples=5)
df['cluster'] = clustering.fit_predict(features)
# Cluster -1 = outliers = potensi anomali
outliers = df[df['cluster'] == -1]# Baseline: login per hari per user
cat auth.log | grep "Accepted" | awk '{print $1, $2, $3, $9}' | \
sort | uniq -c | sort -rn > login-baseline.txt
# Z-score calculation
mean=$(awk '{sum+=$1} END {print sum/NR}' login-baseline.txt)
std=$(awk -v mean="$mean" '{sum+=($1-mean)^2} END {print sqrt(sum/NR)}' login-baseline.txt)| Metric | Baseline | Anomaly Threshold |
|---|---|---|
| Login hours | 08:00-18:00 | Login outside ±2 std |
| Data transfer | < 100MB/day | Transfer > 10x baseline |
| Process creation | < 50 new/hour | > 5x baseline |
| DNS queries | < 1000/hour | > 5x baseline |
Note
Advanced hunting membutuhkan pemahaman statistik yang kuat. Jika kalian belum familiar dengan z-score, standard deviation, dan clustering, mulailah belajar dasar data science — ini adalah skill yang membedakan hunter dari analyst biasa.
Inti yang harus dibawa pulang:
Di episode 25 selanjutnya kita akan membahas detection engineering advanced — tuning, detection validation, dan purple team collaboration untuk membangun deteksi yang benar-benar andal.