Rogue7:西門子s7comm-plus協議全解析
【未經同意禁止轉載】
鑒於本博客涉及的信息安全技術具有破壞計算機信息系統的風險,建議讀者在學習/研究/探討之前,確保已經充分了解以下內容:
本博客所討論的技術僅限於研究和學習,旨在提高計算機信息系統的安全性,嚴禁用於不良動機,任何個人/團隊/組織不得將其用於非法目的,否則后果自負,特此聲明。
[譯者說]本文的研究思路是:通過反編譯的方式逆向分析上位機軟件TIA的核心OMSp_core_managed.dll組件,然后得到關於s7comm-plus協議的秘鑰生成、交換、加密等環節的算法,利用上述密碼學逆向成果,再逆向分析s7comm-plus協議應用層的payload字段結構,最終完成了s7comm-plus協議的全部逆向工作,實現了將梯形圖的二進制payload注入到PLC中的目的。
基於協議逆向的成果,最容易實現的攻擊手段是欺騙攻擊,就是上位機軟件TIA和PLC設備之間相互欺騙。最常見的場景是,攻擊者的程序偽造成資產所有者的TIA,實現對PLC設備的欺騙。那么,最新的s7comm-plus協議是怎樣實現的TIA和PLC雙方之間的信任度量——加密保護機制的呢?這是新一代s7comm-plus針對s7comm的重要改進。也是本文核心。
[譯者注]因本文討論中涉及的PLC設備絕大多數是緊湊式一體式設備,因此下文並不嚴格區分PLC設備,PLC CPU模塊,PLC以太網模塊,PLC I/O模塊這幾個概念。
0 摘要
1 簡介
1.1 針對ICS的攻擊
1.2 s7協議升級版
S7-200、S7-300、S7-400系列的PLC采用早期的西門子私有協議S7Comm進行通信。
S7-1200/1500系列固件版本為V3.0以下的PLC采用西門子新一代的S7Comm-Plus協議進行通信。該協議采用了一些特殊編碼規范
S7-1200/1500系列固件版本為V3.0以上,以及S7-1500系列的PLC,采用了最新的S7Comm-Plus協議,該協議對比之前S7Comm-Plus協議,采用了加密算法。
1.3 本文地點工作
1.4 本文的結構
2 前置知識
2.1 基於TCP/IP的s7comm協議
2.2 基於s7comm協議的PLC
Siemens SIMATIC S7產品線的PLC設備
2.3 s7comm-plus協議概覽
3 s7comm-plus協議的加密保護
3.1 身份認證和完整性保護
3.2 s7秘鑰的生成
3.3 秘鑰傳遞的漏洞和利用
4 攻擊事件的結構
4.1 TIA軟件
5
6 程序下載
在實現程序下載功能之前,我們