文、意如
Python,它是機器學習領域最常用的語言,配合 scikit-learn 函式庫來展示如何使用孤立森林 (Isolation Forest) 演算法,
這是一種常用的資安工具類型,用於異常行為偵測。
步驟一:安裝所需函式庫
pip install numpy pandas scikit-learn
步驟二:Python 程式碼 (anomaly_detector.py)
這個程式會模擬網路連線數據,並找出其中一個被視為異常的連線(例如:流量過大且持續時間過長的連線)。
import numpy as np
import pandas as pd
from sklearn.ensemble import IsolationForest
import matplotlib.pyplot as plt
# 模擬網路數據 (特徵: 連線持續時間(秒), 傳輸資料量(KB))
# 大多數連線是正常的 (分佈在中間)
np.random.seed(42)
data = np.random.randn(100, 2) * 5
data[90:95, :] += 15 # 模擬正常範圍內的小波動
data = np.abs(data) # 確保數據為正值
# 模擬一個明顯的異常連線
# 連線持續時間極長 (50秒) 且傳輸資料量極大 (60KB)
# 這種模式在一般資安工具中難以用簡單規則判斷
anomaly_data = np.array([[50, 60]])
X = np.concatenate([data, anomaly_data], axis=0)
df = pd.DataFrame(X, columns=['Duration_sec', 'Data_KB'])
print(f"總共 {len(df)} 筆連線數據。")
# 1. 訓練機器學習資安工具 (Isolation Forest)
# Isolation Forest 是一種常用的無監督學習異常偵測模型
# 'contamination=0.01' 表示我們預期有 1% 的數據是異常 (1/101 ~= 1%)
iso_forest = IsolationForest(contamination=0.01, random_state=42)
iso_forest.fit(X)
# 2. 應用資安工具進行預測
# 預測結果為 1 (正常) 或 -1 (異常)
df['Anomaly_Score'] = iso_forest.decision_function(X)
df['Is_Anomaly'] = iso_forest.predict(X)
# 3. 輸出偵測結果 (資安工具的輸出報表)
# 找出被標記為 -1 的異常行為
anomalies = df[df['Is_Anomaly'] == -1]
print("\n--- **機器學習資安工具** 偵測結果 (異常行為) ---")
print(anomalies)
# 繪圖展示 (選用)
# plt.scatter(df['Duration_sec'], df['Data_KB'], c=df['Is_Anomaly'], cmap='coolwarm')
# plt.title("Isolation Forest 異常行為偵測")
# plt.xlabel("連線持續時間 (秒)")
# plt.ylabel("傳輸資料量 (KB)")
# plt.show()應用價值 (資安工具實作)
- 無須設定閾值: 模型自動學習正常數據的分佈,並將偏離的點標記為異常,無需人工定義「持續時間超過 40 秒就是異常」的規則。
- 多維度分析: 機器學習資安工具可以同時考慮數百個特徵(例如 IP 信譽、封包類型、地理位置等),找出僅在多個特徵組合下才會顯現的隱蔽威脅。
- 高階 資安人才職缺 所需: 掌握這類模型,能讓您開發出能主動學習和適應新型攻擊的下一代資安工具。
Yiru@Studio - 關於我 - 意如