王航 張帥 杜君 楊帆
摘 要:論文研究了當(dāng)前工業(yè)控制系統(tǒng)存在的安全風(fēng)險以及漏洞披露的現(xiàn)狀,分析了認(rèn)證繞過的常見方法。針對某廠商系列PLC進行了實驗仿真的滲透測試,發(fā)現(xiàn)了認(rèn)證繞過漏洞,同時基于逆向算法實現(xiàn)重放攻擊,可以從PLC中獲取梯形圖邏輯,并在組態(tài)軟件中復(fù)原。
關(guān)鍵詞:工業(yè)控制系統(tǒng)安全;認(rèn)證繞過;重放攻擊
中圖分類號:TN915.08 文獻(xiàn)標(biāo)識碼:A
1 引言
工業(yè)控制網(wǎng)絡(luò)由最初的分散型控制系統(tǒng),后來逐漸演變成以現(xiàn)場總線技術(shù)為基礎(chǔ)的網(wǎng)絡(luò)。由于沒有通行標(biāo)準(zhǔn),很多廠商推出了私有的現(xiàn)場總線標(biāo)準(zhǔn),形成了所謂的“自動化孤島”,不符合現(xiàn)代企業(yè)對數(shù)據(jù)通信的要求。隨著以太網(wǎng)進入工業(yè)領(lǐng)域,形成工業(yè)以太網(wǎng),使得企業(yè)實現(xiàn)了從現(xiàn)場設(shè)備層到管理層間全面的無縫信息集成,并提供了開放的基礎(chǔ)構(gòu)架。正是由于“兩網(wǎng)”(管理網(wǎng)和生產(chǎn)網(wǎng))的融合,連通性給原有并沒有過多考慮安全設(shè)計的工控系統(tǒng)帶來災(zāi)難性后果,加之工業(yè)系統(tǒng)對穩(wěn)定性要求非常高,企業(yè)即使發(fā)現(xiàn)了工控系統(tǒng)的漏洞,也很少或很難對系統(tǒng)進行升級。因此,對工控系統(tǒng)漏洞的研究、防護和應(yīng)急響應(yīng),成為目前國家基礎(chǔ)設(shè)施安全的首要問題。
2 工控漏洞研究現(xiàn)狀
根據(jù)美國工控系統(tǒng)網(wǎng)絡(luò)應(yīng)急響應(yīng)小組(ICS-CERT, Industrial Control Systems Cyber Emergency Response Team)最新公布的“ICS-CERT漏洞協(xié)同披露指南”( 2016 ICS-CERT Annual Vulnerability Coordination Report)的統(tǒng)計,2016年收到ICS漏洞的報告數(shù)高達(dá)2272例,是2015年的5.32倍,如圖1所示??梢?,工控系統(tǒng)存在很大的安全風(fēng)險。
從漏洞類型上看,最常見的漏洞類型為基于棧的緩沖區(qū)溢出(CWE-121)、不當(dāng)輸入驗證(CWE-20)、跨站腳本(CWE-79)以及基于堆的緩沖區(qū)溢出(CWE-122)四類,如圖2所示。
我國國家信息安全漏洞共享平臺CNVD也收錄了很多工控系統(tǒng)的安全漏洞,如西門子(如圖3所示)和橫河(如圖4所示)的安全漏洞。以橫河產(chǎn)品為例,這幾年只披露了11個漏洞,而關(guān)注度更高的西門子能搜索到200個以上的漏洞。所以說,隨著對工控系統(tǒng)關(guān)注度的持續(xù)升高,會有大量的0-day漏洞會被暴露。
3 漏洞分析
3.1 認(rèn)證繞過漏洞概述
大多數(shù)應(yīng)用的安全基于認(rèn)證機制,一個用戶提供自己的登錄名和密碼進行身份驗證,基于所提供的憑據(jù)建立的身份,進而分配特定的權(quán)限系統(tǒng)。但并不是每一個認(rèn)證方法能夠提供足夠的安全性。
常見的認(rèn)證方案可以被跳過登錄頁面,直接調(diào)用一個內(nèi)部頁面或通過篡改請求和欺騙應(yīng)用使其認(rèn)為用戶已經(jīng)認(rèn)證通過。常見的手法有四個。
(1)基本認(rèn)證繞過漏洞:很多程序進行編碼時,只在登錄頁面實現(xiàn)了用戶名和密碼的認(rèn)證,然后允許授權(quán)用戶無限制訪問其他網(wǎng)頁沒有任何進一步的檢查。
(2)更改固定參數(shù):很多程序來驗證是否成功登錄是通過固定參數(shù)來傳遞的。如:http://www.mycorporatewebapp.com/remotemanagement.asp?auth=0
通過修改auth =1 即可繞過認(rèn)證。
(3)會話預(yù)測:很多程序判斷用戶已經(jīng)認(rèn)證通過,是基于Sessionid方式,但Sessionid必須保證隨機不可預(yù)測性,否則就容易通過預(yù)測的會話來實現(xiàn)繞過認(rèn)證攻擊。
(4)SQL注入:通過對登錄界面進行SQL注入攻擊來進行繞過認(rèn)證攻擊。如認(rèn)證的方式如下: (authorise a user) WHERE Password='$password'
SQL注入輸入:
ABC' or '1' = '1
產(chǎn)生的結(jié)果就是繞過認(rèn)證:
(authorize a user) WHERE Password='ABC' OR '1' = '1'
以上就是常見的認(rèn)證繞過攻擊的手法,在對工控系統(tǒng)進行滲透測試中也非常常見。
3.2 實驗場景介紹
本文以某款PLC及其組態(tài)軟件為例進行了滲透測試,發(fā)現(xiàn)設(shè)備存在認(rèn)證繞過漏洞以及其它一些工業(yè)場景下常見的漏洞。測試環(huán)境拓?fù)浼敖M件關(guān)系如圖5所示,實驗演示平臺如圖6所示。
滲透測試主要對兩個功能邏輯進行檢測。
(1)對PLC進行梯形圖邏輯或者功能邏輯配置。首先,在實驗中首先將組態(tài)軟件部署到一個工程師站上;其次,利用組態(tài)軟件對PLC進行基本CPU配置和網(wǎng)絡(luò)配置;最后,編寫一個跑馬燈的梯形圖邏輯下裝到PLC中,來控制實驗平臺中的燈閃爍來模擬實際的生產(chǎn)過程。
(2)利用HMI對PLC狀態(tài)進行實時監(jiān)控。通過觀察燈閃爍的情況,來模擬實際生產(chǎn)中業(yè)務(wù)是否正常。
本文基于認(rèn)證繞過漏洞,在沒有PLC和上位機管理權(quán)限的情況下,利用攻擊工具可以直接盜取跑馬燈工藝邏輯,進而可以構(gòu)造更加精細(xì)的APT攻擊。
3.3 漏洞分析
對實驗場景進行了數(shù)據(jù)分析,組態(tài)軟件和PLC之間通信采用私有協(xié)議,HMI和PLC之間既可以選擇該廠商的私有協(xié)議也可以選擇Modbus等公開協(xié)議。通過對組態(tài)軟件以及通信的私有協(xié)議進行分析,發(fā)現(xiàn)了認(rèn)證繞過漏洞:發(fā)現(xiàn)該型號的系統(tǒng)對PLC的認(rèn)證和授權(quán)是在組態(tài)軟件中進行的,而沒有實現(xiàn)組態(tài)軟件和PLC的雙向認(rèn)證。同時對其通信的私有協(xié)議進行了逆向分析,破解了其報文格式,利用構(gòu)造后的報文可以繞過認(rèn)證機制直接對PLC進行控制?;诖寺┒?,測試人員構(gòu)造了一個滲透測試工具,該工具在網(wǎng)絡(luò)可達(dá)的情況下,可以跳過認(rèn)證直接獲取PLC中的生產(chǎn)工藝梯形圖等原始資料。在獲取了梯形圖邏輯后,可以構(gòu)造更加精細(xì)的攻擊手段以實現(xiàn)APT攻擊,從而對工業(yè)現(xiàn)場造成更大的打擊。
通過逆向分析PLC梯形圖的上傳邏輯,來構(gòu)造攻擊過程。梯形圖邏輯的上傳,如圖7所示。
通過抓取組態(tài)軟件與PLC間的通信報文,分析得到私有協(xié)議支持通過一系列特定的報文,將PLC中的程序上傳到PC端。這些特定的報文是一段組合報文,共包含13條請求報文,如圖8所示。將這13條報文依次發(fā)給PLC,PLC會將內(nèi)部程序上傳給PC端,本文將重點分析其中關(guān)鍵幾個報文。
(1)Upload的起始報文
Upload操作的起始報文為圖8中的第一條報文,所有的上傳操作都從此報文開始。
請求報文如圖9所示。
(2)獲取工程信息的請求報文
此報文為13條組合報文中的第二條報文,發(fā)出此請求報文后,在響應(yīng)報文中會包含工程名、程序塊名、程序塊編號及PLC型號信息。除了第一條起始報文數(shù)據(jù)區(qū)為0外,其他組合報文的子數(shù)據(jù)區(qū)中都包含子功能碼及子數(shù)據(jù)區(qū),來完成相應(yīng)不同的工作,如圖10所示。
(3)程序上傳請求報文
此報文為13條組合報文中的第十二條報文,當(dāng)向PLC發(fā)送此報文后,PLC會向PC端返回的響應(yīng)報文中攜帶PLC程序的二進制數(shù)據(jù),如圖11所示。
通過對關(guān)鍵報文的分析,可重構(gòu)關(guān)鍵的Upload等關(guān)鍵報文,欺騙PLC,把工藝文件上傳給攻擊者?;谠摴糗浖?,只要網(wǎng)絡(luò)可達(dá),即可繞過認(rèn)證盜取生產(chǎn)工藝。
4 結(jié)束語
工控系統(tǒng)在最初設(shè)計時,并沒有把自身的安全性作為主要的考慮目標(biāo);又因為工業(yè)系統(tǒng)對穩(wěn)定性要求非常高,企業(yè)即使發(fā)現(xiàn)了系統(tǒng)組件的漏洞,也很少或很難對系統(tǒng)進行升級。通過本文分析,平臺的自身脆弱性是目前工業(yè)控制系統(tǒng)所面臨的嚴(yán)峻挑戰(zhàn),需要工業(yè)界和安全界共同構(gòu)建集產(chǎn)品自身安全性、后期防護機制以及漏洞修補機制為一體的工控安全體系,才能有效地保護國家基礎(chǔ)設(shè)施的安全。
基金項目:
2015年工業(yè)轉(zhuǎn)型升級智能制造和“互聯(lián)網(wǎng)+”行動支撐保障能力工程——安全芯片能力提升及應(yīng)用方向。
參考文獻(xiàn)
[1] 周奇輝.工業(yè)控制系統(tǒng)網(wǎng)絡(luò)安全性研究[J].網(wǎng)絡(luò)空間安全,2016年06期.
[2] 詹乃松,喬振亞.工業(yè)控制系統(tǒng)信息安全防護的研究 [J].網(wǎng)絡(luò)空間安全, 2017年12期.
[3] 孫易安,胡仁豪.工業(yè)控制系統(tǒng)漏洞掃描與挖掘技術(shù)研究[J].網(wǎng)絡(luò)空間安全,2017年01期.