某組態軟件工程文件加密機制探究
某組態軟件工程文件加密機制探究
一、前言
在工業自動化控制領域,組態軟件是數據采集與過程控制的專用軟件,是實現人機交互必不可少的工具。工程設計人員使用組態軟件在PC機上進行工程畫面組態的編輯,然后把編譯后的組態邏輯通過以太網或串口下載到PLC或其它連接設備中運行,并進行相應的控制和監視。組態軟件廣泛應用于機械、汽車、石油、化工、造紙、水處理以及過程控制等諸多領域。
本次研究的組態軟件是一家取得國內市場領先地位廠商的產品,該產品廣泛應用與工業控制領域,如輕工業、電力、交通、能源等通用裝備控制行業。
天弓實驗室研究員發現,該品牌組態軟件的最新版本中工程文件加密機制比較脆弱,攻擊者可在不知道文件密碼的情況下獲取密碼,從而修改工程文件,改變生產流程,給工業生產過程帶來損失。
二、漏洞挖掘流程
1、創建工程文件
打開軟件,新建一個工程文件,添加一個組件,先保存為無密碼項目,然后添加文件保護密碼,另存為有密碼文件。

2、文件格式分析
使用分析工具打開這兩個項目文件,查看數據統計結果。通過比對發現兩個文件中都存在大量的16進制“4D”數據,在整個文件數據中占比都高于58%。在正常情況下該文件中占比最多的數據是“00”,所以推測工程文件無論是否設置文件保護密碼,都要使用16進制“4D”進行異或加密。
下面進行比對分析
無密碼分析


有密碼分析


所以使用“4D”分別對這兩個文件進行異或運算,結果在兩個文件中都發現了一些可讀字符,說明思路是對的,當異或運算之后的文件就是明文文件。
無密碼

有密碼

經過對比兩個文件的異同,發現無論是否加密,文件頭是一樣的。繼續往下查看,在加密密碼存儲區域有明顯的差異。可看到加密文件的密碼為“aaaaaa”,未加密文件沒有密碼。


3、漏洞利用
通過上述分析明白原理后我們就可以編寫解密腳本以實現自動化獲取工程文件的加密密碼,而不用每次進行分析。本次編寫的腳本可以獲取到工程文件是否有密碼保護、密碼長度及密碼。


4、利用場景
攻擊人員通過控制生產網的工程師站后,打開工控組態軟件查看工程文件時需要輸入口令才可繼續。攻擊人員可以利用該解密腳本把工程文件進行解密獲得密碼,從而進入組態工程進行修改組態邏輯,以改變工業正常生產流程。
三、總結
工程文件加密是應對網絡攻擊的最后一道防護措施,能夠在生產網被攻陷時保證生產流程不被篡改。通過以上內容可以看出,部分組態軟件在工程文件加密方面不夠重視。文件加密應使用完善的加密算法,由加密密碼參與運算來生成足夠長的子密鑰,再用子密鑰來加密文件,而不是使用簡單的固定值來對文件加密。