S7 COM PLC狀態查詢 - 讓你知道攻擊是否生效

好的,這是一個非常實際的問題,在進行網路監控或開發自己的客戶端時至關重要。 要從 S7 封包中判斷 PLC 的狀態 (主要是 RUN 或 STOP),沒有一個固定的欄位存在於每一個封包中。您必須透過攔截並解析特定的請求-回應 (Request-Response) 封包組合來實現。 以下是三種主要的方法,從最直接到最間接: 方法一:主動查詢系統狀態列表 (Read SZL) - 最準確的方法 這是最標準、最可靠的作法。您的應用程式(或您正在監控的客戶端)會主動向 PLC 發送一個「讀取系統狀態列表」的請求,PLC 會在回應中明確告知其當前狀態。 要觀察的封包:【請求】 您會看到一個由客戶端發往 PLC 的封包。 PDU 類型 (ROSCTR): 0x07 (Userdata) 參數 (Parameters): 在 Userdata 的參數部分,會包含一個「Read SZL」(讀取 SZL) 的子功能請求。 關鍵識別碼 (SZL ID): 請求中會指定要讀取的 SZL ID。用於查詢 CPU 狀態的 ID 通常是 0x0424 或 0x0132 (取決於 CPU 型號和韌體)。 要觀察的封包:【回應】 PLC 會回覆一個 PDU 類型為 0x03 (Ack_Data) 的封包。 這個封包的資料區 (Data) 就包含了您要的狀態資訊。 如何判斷 (解析回應封包的 Data 區): _ 在 SZL 回應的資料區中,會有一個特定的位元組 (Byte) 用來表示 PLC 的運行狀態。 ...

S7 COM 功能碼介紹 - 懂了就能任意操控西門子PLC

1. 連線與會話管理 (Connection & Session Management) 這是在進行任何其他操作之前,建立通訊所必需的功能。 功能碼 (Hex) 功能名稱 說明 0xF0 Setup Communication 設定通訊。這是三階段交握的最後一步,用於客戶端 (Client) 與 PLC 之間協商通訊參數,例如 PDU (協定資料單元) 的最大長度和可同時處理的任務數量。 2. 核心資料讀寫 (Core Data Access) 這是最基本也是最常用的功能,用於與 PLC 的記憶體區域進行互動。 功能碼 (Hex) 功能名稱 說明 0x04 Read Variable 讀取變數。從指定的記憶體區域讀取一個或多個變數的值,例如輸入 (I)、輸出 (Q)、旗標 (M)、資料塊 (DB) 等。 **0x05 Write Variable 寫入變數。將一個或多個值寫入到指定的記憶體區域。 3. PLC 狀態控制 (PLC State Control) 這些功能用於改變 CPU 的運行模式。 功能碼 (Hex) 功能名稱 說明 0x28 PLC Control PLC 控制。這是一個多功能命令,透過不同的參數可以實現:<br>- Start (啟動)<br>- Hot Restart (熱啟動)<br>- Cold Restart (冷啟動) 0x29 PLC Stop PLC 停止。將 CPU 的模式從 RUN 切換到 STOP,停止使用者程式的執行。 4. 程式區塊操作 (Program Block Operations) 這些功能主要由 TIA Portal 或 STEP 7 等工程軟體使用,用於程式的上傳和下載。 ...

常見十大工控協定與攻擊手法

常見十大工控協定與攻擊手法 Modbus 協定十大攻擊手法 1. 設備枚舉 (Device Enumeration) 攻擊手法: 透過系統性地發送讀取指令並遍歷所有可能的 Slave ID (0-247),攻擊者可以掃描並繪製出整個 Modbus 網路的拓撲,識別所有在線的從站設備及其支援的資料區,為後續攻擊提供精確目標。 參考來源: CISA (Cybersecurity and Infrastructure Security Agency) - Control Systems Network Auditing: https://www.cisa.gov/sites/default/files/recommended_practices/RP_Control_Systems_Network_Auditing_S508C.pdf SANS Institute - ICS410: ICS/SCADA Security Essentials: https://www.sans.org/cyber-security-courses/ics-scada-cyber-security-essentials/ Nmap Scripting Engine - modbus-discover.nse: https://nmap.org/nsedoc/scripts/modbus-discover.html 2. 未授權讀取 (Unauthorized Read) 攻擊手法: 由於 Modbus 協定本身缺乏認證機制,任何能連上網路的攻擊者都可以發送合法的讀取功能碼 (如 0x01, 0x02, 0x03, 0x04),自由讀取設備的線圈和暫存器狀態,從而竊取關鍵的生產參數、設備組態或製程配方。 參考來源: Modbus-IDA - Modbus Application Protocol Specification V1.1b3: https://modbus.org/docs/Modbus_Application_Protocol_V1_1b3.pdf Fortinet - What Is the Modbus Protocol?: https://www.fortinet.com/resources/cyberglossary/modbus-protocol MITRE ATT&CK for ICS - T0859 Read Input/Output Image: https://collaborate.mitre.org/attackics/index.php/Technique/T0859 3. 惡意指令注入 (Command Injection) ...