1 研究目的及意義
工業控制系統由各種自動化控制組件和實時數據采集、監測的過程控制組件共同構成。其組件包括數據采集與監控系統(SCADA)、分布式控制系統(DCS)、可編程邏輯控制器(PLC)、遠程終端(RTU)、智能電子設備(IED),以及確保各組件通信的接口技術。已經廣泛運用于核設施、鋼鐵、有色、化工、石油石化、電力、天然氣、先進制造、水利樞紐、環境保護、鐵路、城市軌道交通、民航、城市供水供氣供熱以及其他與國計民生緊密相關的領域。
傳統的工業控制系統通常以廠區為單位,是相對孤立的,與外界有較少通信甚至是沒有通信的,似乎從來不會有遭受網絡攻擊的可能性。但是隨著計算機網絡技術的飛速發展和廣泛應用以及工業生產對ICS要求的不斷提高,獨立環境下的ICS已經不能滿足工業生產的需求,網絡化的ICS被越來越多地應用到工業生產中來,工業過程與信息化系統的連接越來越緊密。這種緊密的連接使得原本物理隔絕的ICS失去了免遭網絡攻擊的天然屏障,面臨著遭受網絡病毒攻擊的可能性。2010年“震網”病毒事件為世人敲響了工業控制系統網絡安全的警鐘。短短幾年內,全球范圍內針對工控系統攻擊事件的數量大幅提升,并且相繼發現了Duqu病毒、火焰病毒等同樣針對工控系統的病毒。2014年春,Havex病毒在能源行業大規模爆發,呈現出強烈的行業橫向蔓延趨勢。Havex病毒相較之前的震網等病毒,其攻擊手段更隱蔽、病毒變種更多、網絡傳播更迅速,工控網絡特點針對性強、可造成的危害也更巨大。Havex病毒以及之后出現的Sandworm病毒標志著工業控制網絡安全已進入了APT2.0時代 。
以美國為首的西方國家在本世紀初就將工控網絡安全這一問題提升到國家戰略高度,并積極推動在政策、標準、技術、方案等方面引導措施。而在我國,工信部于2011年10月下發了協〔2011〕451號文“關于加強工業控制系統信息安全管理的通知”,要求各級政府和國有大型企業切實加強工業控制系統安全管理。國家于2014年成立了以習近平總書記為組長的中央網絡安全和信息化領導小組,從國家層面,全面統籌、規劃與管理我國信息化與信息安全建設。并相繼出臺《信息安全產業“十二五”發展規劃》和《2006-2020年國家信息化發展戰略》,為行業信息化發展以及信息安全體系化建設提供政策支撐。
與傳統的IT信息系統軟件不同的是,作為關系到國計民生的工業控制系統,工業控制系統相關軟件在設計過程中主要注重功能的實現,而在安全方面考慮得不多,并且很多工控軟件(比如說組態軟件)在其開發初期并沒有依照嚴格的軟件安全開發規范進行,導致存在不安全的漏洞。為了確保國家關鍵基礎設施工控系統安全穩定運行,避免工控軟件漏洞被利用攻擊,展開針對工業控制系統軟件的安全漏洞研究工作迫在眉睫。
2 研究的主要內容
研究主流工控組態軟件的安全性,主要是針對主流PLC組態軟件、DCS系統組態軟件,或者軌道交通、石油化工等重要行業應用的工控軟件開展安全分析,研究軟件中存在的預置性后門漏洞、高可利用漏洞等重大安全隱患。
研究過程中需要搭建上位機組態軟件運行的模擬工控環境,如圖1所示,它模擬了工業控制系統中的一個單元,包括了上位機的監控站與工程師站,還有現場控制設備PLC等,它們都通過一個工業交換機連接在一起。
圖1 工業控制系統模擬平臺
同時,還需要構建完整、可擴展的動態隨機分析測試框架,監控測試目標,管理測試結果,并支持多目標(例如,PLC組態軟件、DCS組態軟件),多種協議(Modbus、OPCDA、IEC104、DNP3、MMS、GOOSE、PROFINET、Siemens S7、艾默生DeltaV協議),多線程(加速測試進度),如圖2所示。
圖2 動態隨機分析測試框架
該框架提供了操作、監視、管理整個漏洞測試過程的功能。測試過程中,基于高效的智能模糊測試和攻擊測試等自動化測試方法,自動生成測試用例列表,并在測試列表運行時可以實時監控和進行管理,能夠高效完成復雜測試。
主要開展研究內容如下:
2.1 工控組態軟件的已知漏洞分布情況研究
經過對已公開的大量工控組態軟件漏洞的調查研究發現,其漏洞類型主要分布在:文件格式解析類漏洞、ActiveX控件類漏洞、專有工控通訊協議類漏洞和Web服務類漏洞。
多數工控組態軟件都會用文件作為程序的輸入,而畸形的文件格式往往會引發諸如整數溢出、緩沖區溢出等文件格式解析類漏洞。
工控組態軟件在安裝時經常會注冊一些ActiveX控件,這些控件往往封裝著一些邏輯較為復雜的方法,這些方法對參數輸入檢查不嚴格會引發嚴重的緩沖區溢出漏洞。
不少工控軟件都存在著一些專有工控通訊協議,而畸形的協議報文會觸發拒絕服務或緩沖區溢出漏洞,這些從協議觸發的漏洞歸為專有工控通訊協議類。該類漏洞的分析,需要收集并詳細分析工控通訊協議的格式,若協議格式不公開可通過逆向分析或分析數據包之間的規律獲得。
一些工控軟件本身也帶有Web服務,可能存在SQL注入、路徑遍歷、后臺密碼弱口令等常見的Web漏洞。
2.2 工控組態軟件的漏洞分析技術
研究的漏洞分析技術是對已公開但信息量較少的漏洞(如僅含有POC無漏洞利用腳本)進行定位與根源分析的技術,它包括動態調試、靜態分析與二進制逆向分析等技術。
動態調試是指利用調試器跟蹤軟件的運行,通過動態調試能夠清楚地了解到軟件的運行步驟,包括各類寄存器的數據及內存數據。通過利用該技術能夠跟蹤調試漏洞觸發的整個執行過程,從而發現哪個環節是真正引發漏洞的根源。靜態分析是與動態調試相對應的代碼分析技術,它不運行代碼只是通過對代碼的自動靜態掃描發現隱含的程序問題。而二進制逆向分析是在軟件不開源的情況下分析定位漏洞的一種有效方法。這三種技術相結合,可以準確地定位組態軟件漏洞觸發時的行為及函數,清晰地分析出漏洞機理。
2.3 工控組態軟件的漏洞利用技術
漏洞機理研究清楚后,下一步就是研究漏洞利用并編寫exploit驗證代碼。拒絕服務類的漏洞利用較為簡單,直接構造exploit打死目標服務即可,本項目中更關注整數溢出、棧緩沖區溢出、堆緩沖區溢出和基于ActiveX控件的緩沖區溢出的漏洞利用技術。若在Windows平臺下進行漏洞利用,需要掌握各種常見的攻擊緩解技術及繞過方法。
3 研究主要技術路線
3.1 Windows下常見攻擊緩解技術及繞過方法
工控組態軟件多數安裝在Windows平臺,工控網絡中最常見的Windows平臺為Windows XP和Windows 7。自從Windows成為主流操作系統以后,針對Windows平臺的漏洞利用技術不斷發展,而微軟也不斷運用新的攻擊緩解技術來封堵漏洞利用技術。根據被引入Windows的時間順序,先后引入的攻擊緩解技術有:GS(Control Stack CheckingCalls)、SafeSEH(Safe Structured Exception Handler)、Heap Protection、DEP(Data Execution Prevention)、ASLR(Address SpaceLayout Randomization)等。在Windows平臺下編寫漏洞利用腳本需要深入理解這幾種保護機制,并需要掌握其繞過方法。
3.2 基于ActiveX控件的漏洞分析和利用技術
ActiveX是以微軟COM(Component Object Model)模型為理論基礎建立起來的技術,通過建立帶有接口的對象,ActiveX控件能被其他COM組件或者程序調用,IE里面經常用到這樣的技術。COM組件被廣泛用于瀏覽器的第三方應用程序,工控組態軟件也經常使用基于COM組件的ActiveX控件技術。但由于第三方開發人員編程方面的原因,ActiveX控件出現越來越多的漏洞。
基于ActiveX控件的安全漏洞,可分為如下幾種:
(1)調用的控件可以創建、修改或者刪除本地文件,修改注冊表等信息;
(2)調用的控件可以獲取本地信息,如某文件信息、用戶名、密碼、IP地址等;
(3)調用的控件可以通過欺騙行為使用戶訪問惡意網頁、下載惡意程序等;
(4)調用的控件存在緩沖區溢出或者格式化字符串等漏洞,導致瀏覽器或者系統異常。
目前對于ActiveX控件的漏洞分析,可借助一些自動化工具,比較出名的有ComRaider、AxMan、Axfuzz等。ComRaider是一款非常出色的ActiveXFuzz工具。它已將測試ActiveX控件時所需的編寫測試模板、獲取CLSID、獲取用戶接口、制定測試參數、測試結果監視等功能全部整合,能夠自動區分出當前系統中哪些ActiveX控件可以被瀏覽器正常調用,并分析出被測控件所有的外部接口,包括函數接口以及屬性接口。
對于ActiveX控件的漏洞利用,比較有效的方法是堆噴射(Heap Spray)技術。Heap Spray是在shellcode的前面加上大量的slide code(滑板指令),組成一個注入代碼段。然后向系統申請大量內存,并且反復用注入代碼段來填充。這樣就使得進程的地址空間被大量注入代碼所占據。然后結合其他的漏洞攻擊技術控制程序流,使得程序執行到堆上,最終將導致shellcode的執行。傳統slide code(滑板指令)一般是NOP指令,但是隨著一些新的攻擊技術的出現,逐漸開始使用更多的類NOP指令,譬如0x0C(0x0C0C代表的x86指令是OR AL 0x0C),0x0D等,不管是NOP還是0C,他們的共同特點是不會影響shellcode的執行。Heap Spray只是一種輔助技術,需要結合其他的棧溢出或堆溢出等等各種溢出技術才能發揮作用。
對于ActiveX控件中函數參數的緩沖區溢出漏洞,常結合堆噴射技術構造漏洞利用代碼,效果良好。
3.3 基于工控協議的漏洞分析和利用技術
對于工控協議的漏洞分析需要詳細了解協議實現的報文格式,而工控組態軟件常用的協議分為兩類:公開標準的協議和私有協議。公開標準的協議,如Modbus、OPCDA、IEC104、DNP3、MMS、GOOSE、PROFINET等協議;私有協議,如SiemensS7、艾默生DeltaV協議等,未了解報文格式的工控組態軟件的私有協議占絕大多數,因此針對這些私有協議的報文格式解析工作是漏洞分析和利用過程中的研究難點。工控組態軟件及產品之間的通訊協議往往使用私有協議,而現在的通訊協議日趨復雜并引入了協議狀態機來處理不同的邏輯分支,且在不同的狀態下通訊數據的結構也會存在差異。因此,需要分析組態軟件及控制設備在不同狀態下的通訊數據(例如,認證通過前與通過后等),將這些數據格式與狀態機之間進行關聯,了解的數據格式越多在漏洞分析過程中起到的作用越大。
4 結語
目前我國工業控制系統安全面臨著嚴峻的挑戰,而其主要的安全問題就是工業控制軟件、控制設備甚至通訊協議本身存在設計上的缺陷。這些缺陷被攻擊者利用后能夠造成系統宕機、敏感數據泄露甚至直接獲取系統的操控權。因此,開展在工業控制系統中的主流PLC組態軟件、DCS系統組態軟件或重要行業應用的工控軟件的漏洞研究,分析軟件中存在的預置性后門漏洞、高可利用漏洞等重大安全隱患,為保障工業控制系統的安全提供漏洞研究支持,提升工業控制系統安全防護能力。
作者簡介
梁鼎銘(1985-),男,廣東佛山人,本科,4年工控網絡安全從業經驗,8年電力系統行業資深經驗,廣東省工業互聯網聯盟專家委員之一,曾參與多項工業控制系統網絡安全標準編制,現任深圳融安網絡科技有限公司解決方案總監,主要從事工控系統安全咨詢,風險評估,解決方案構建工作。具有豐富的實踐經驗,直接參與領導過的項目有:南方電網并網發電機組可靠性智能評估與預警大數據優化關鍵技術研究(科研類),廣東省電科學院熱工系統信息安全研究,國家電網泛終端一體化管控項目等。
參考文獻:
[1] Keith A. Stouffer, Victoria Y. Pillitteri, Suzanne Lightman, Marshall Abrams, Adam Hahn. Guide to Industrial Control Systems (ICS) Security[EB/OL]. https:// nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST. SP. 800 - 82r2. pdf, 2015, 06.
[2] 朱世順, 黃益彬, 朱應飛, 等. 工業控制系統信息安全防護關鍵技術研究[J]. 電力信息與通信技術, 2013, 11 (11) : 106 - 109.
[3] 胡冬平. 工業控制系統組態軟件安全防護關鍵技術研究[D]. 哈爾濱: 哈爾濱工業大學, 2015.
[4] 工信部. 關于加強工業控制系統信息安全管理的通知[Z].
摘自《工業控制系統信息安全專刊(第五輯)》