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