羅銘,張日新,李祥,步兵
(1.交控科技股份有限公司,北京 100070;2.城市軌道交通列車通信與運行控制國家工程實驗室,北京 100070;3.北京交通大學 軌道交通控制與安全國家重點實驗室,北京 100044)
滲透測試(Penetration Test)是測試人員從攻擊者的角度出發(fā)以成功滲入系統(tǒng)為目的,模擬攻擊者的行為模式,利用攻擊者的漏洞發(fā)現(xiàn)技術和攻擊手段對被測系統(tǒng)進行深入的探測,以暴露系統(tǒng)信息安全薄弱環(huán)節(jié),并針對測試結(jié)果給出信息安全解決方案或建議的過程[1]。
滲透測試領域研究主要集中在滲透測試技術研究、滲透測試模型研究和自動化滲透測試工具研究,Web滲透測試是目前滲透測試的熱門方向[2]。工業(yè)控制系統(tǒng)滲透測試是另一個重要領域,包括電力、化工、冶金等在內(nèi)的大量工業(yè)控制系統(tǒng)正越來越重視自身系統(tǒng)的信息安全性。根據(jù)測試人員對被測系統(tǒng)的了解程度,滲透測試可分為白盒、灰盒和黑盒測試[3]。白盒測試是指測試人員具有系統(tǒng)的全部信息,可以從源代碼層次對系統(tǒng)進行測試和分析;灰盒測試和黑盒測試指測試人員不具備系統(tǒng)所有信息,測試難度更大。
復雜的滲透測試需要合理的指導框架。目前滲透測試領域的指南、框架、規(guī)范大部分來自歐美發(fā)達國家,如美國國家標準與技術研究院(NIST)發(fā)布的滲透測試流程標準,其測試流程見圖1。該測試規(guī)范雖然劃分出宏觀階段,但缺乏實際指導,難以真正指導滲透測試。
圖1 NIST滲透測試流程
開放信息系統(tǒng)安全小組(OISSG)發(fā)布了信息系統(tǒng)安全評估框架(ISSAF),其測試流程見圖2。該測試方法較詳細,利于測試實施,缺點是不具有普遍性。對于列控系統(tǒng)的滲透測試,不能或者沒有必要進行全部9個步驟。
圖2 ISSAF滲透測試流程
在城市軌道交通領域,針對常用的CBTC系統(tǒng),普遍的做法是雇傭第三方信息安全從業(yè)機構(gòu),為系統(tǒng)配備簡單、通用的信息安全防護軟硬件,在運營之前進行安全部署,由于缺少真實系統(tǒng)或模擬系統(tǒng)的滲透測試,因此對系統(tǒng)在遭受信息安全攻擊時的表現(xiàn)沒有合理、準確的認識和估計。
綜合以上信息安全滲透測試流程,并考慮列控系統(tǒng)業(yè)務特點,提出精簡、優(yōu)化的列控系統(tǒng)滲透測試流程。
分析研究以上滲透測試規(guī)范和指南,將列控系統(tǒng)滲透測試流程確定為4個階段(見圖3)。
圖3 列控系統(tǒng)滲透測試流程
(1)信息收集和準備階段。從書籍、文獻中了解列控系統(tǒng)公開的信息,如系統(tǒng)功能模塊、網(wǎng)絡架構(gòu)、操作系統(tǒng)、通信制式、系統(tǒng)特點和安全防護手段等;根據(jù)了解到的信息制定滲透測試計劃,確定重點關注對象;準備測試所需的軟件和硬件。
(2)掃描階段。從有線或無線的方式接入系統(tǒng),通過監(jiān)聽獲取網(wǎng)絡相關信息;進一步對所在網(wǎng)絡進行掃描,確認存活主機及其操作系統(tǒng);選取個別主機進行更加詳細的掃描,收集主機開放端口、運行服務等信息;利用商用漏洞掃描工具對系統(tǒng)所有漏洞進行掃描;確定重點關注主機或系統(tǒng)。
(3)滲透攻擊階段。根據(jù)掃描階段得到的信息分析主機存在的隱患和漏洞,分析攻擊手段和漏洞利用的可行性;選取可行的攻擊手段和可利用的漏洞對重點關注對象進行攻擊和漏洞利用,分析攻擊結(jié)果。
(4)總結(jié)階段。循環(huán)進行第2和第3步,直到?jīng)]有新的信息發(fā)現(xiàn);總結(jié)滲透測試的整個過程,分析入侵系統(tǒng)的難易程度,對系統(tǒng)在攻擊下的表現(xiàn)進行評價,提出改善措施。
列控系統(tǒng)滲透測試不同于傳統(tǒng)IT行業(yè)和其他工控領域的滲透測試,需要充分考慮列控系統(tǒng)結(jié)構(gòu)和功能特點,分析列控系統(tǒng)的薄弱環(huán)節(jié)。
列控系統(tǒng)網(wǎng)絡包括骨干網(wǎng)和接入網(wǎng),分別對應有線接入和無線接入(見圖4)。
圖4 列控系統(tǒng)接入方式
(1)有線接入。列控系統(tǒng)采用專用網(wǎng)絡,網(wǎng)絡設備一般處于較為嚴密的物理防護下,但依舊存在因為管理不完善導致暴露物理網(wǎng)絡接口的可能性;攻擊者可能存在于系統(tǒng)內(nèi)部,可直接接觸到網(wǎng)絡設備,或使用1臺列控系統(tǒng)的功能主機作為攻擊主機,從內(nèi)部發(fā)起攻擊。
(2)無線接入。列控系統(tǒng)無線制式包括WLAN和LTE兩種[4-5]。WLAN的認證加密方式并不完善,近期WPA2曝出安全漏洞,使中間人監(jiān)聽、篡改成為可能。LTE的安全機制更為完善,密鑰事先協(xié)商,存儲在USIM卡中,采用的加密方式更加復雜,安全性很高[6]。列控系統(tǒng)無線信號沿軌道分布,乘客可在列車或站臺上搜索到無線信號,鑒權與加密是網(wǎng)絡的主要防護手段,若密鑰泄露,系統(tǒng)容易接入。攻擊者可能通過非法渠道購買密鑰信息,或利用社工類手段獲得密鑰。
(3)其他服務系統(tǒng)接入。乘客信息系統(tǒng)(PIS)和視頻監(jiān)控系統(tǒng)(CCTV)等其他城軌系統(tǒng)與通信前置機存在網(wǎng)絡連接,這意味著列控系統(tǒng)網(wǎng)絡邊界的進一步擴展[7]。
(4)移動存儲設備。限于管理制度和信息安全意識的普及程度,目前移動存儲設備(尤其是維護和檢修人員持有)的接入訪問沒有嚴格控制,移動存儲設備很有可能成為病毒、木馬等進入列控系統(tǒng)的途徑[8-9]。
(1)操作系統(tǒng)。城軌交通列控系統(tǒng)主要使用Windows、Linux和VxWorks操作系統(tǒng),Windows操作系統(tǒng)主要位于列車自動監(jiān)督(ATS)子系統(tǒng)和維護網(wǎng)絡中,用于各種工作站;Linux操作系統(tǒng)主要用于服務器和部分體量較小的嵌入式系統(tǒng);VxWorks是實時操作系統(tǒng),可裁剪性強,多用于進行原始數(shù)據(jù)計算的處理單元。
Windows系統(tǒng)漏洞種類繁雜、數(shù)量眾多,主要存在于開放的各類服務中。Windows系統(tǒng)主要使用在列控系統(tǒng)的非安全設備中,對其進行滲透和攻擊可能不會對列車安全運行產(chǎn)生顯著影響,但對它們的滲透可為后續(xù)攻擊提供大量的信息和便利。
VxWorks系統(tǒng)高度可裁剪化,大大降低了系統(tǒng)存在漏洞的可能性,可提高系統(tǒng)的工作效率和穩(wěn)定性。雖然VxWorks系統(tǒng)安全性較高,但在低版本的系統(tǒng)中仍存在危害性很高的漏洞[10],鑒于VxWorks在列控系統(tǒng)中擔任核心計算任務,對該系統(tǒng)的攻擊可能導致列控系統(tǒng)功能受到嚴重影響。
(2)通信協(xié)議。城軌交通列控系統(tǒng)使用UDP協(xié)議進行列控信息傳輸,在應用層使用鐵路信號安全通信協(xié)議(RSSP)以及信號設備廠家私有協(xié)議。針對UDP協(xié)議存在一些成熟的拒絕服務(DoS)攻擊,同樣適用于列控系統(tǒng);應用層協(xié)議明文傳輸數(shù)據(jù)存在數(shù)據(jù)監(jiān)聽的可能;應用層協(xié)議防護機制存在漏洞,被攻擊者利用可實現(xiàn)中間人攻擊。
列控系統(tǒng)是安全苛求系統(tǒng),采取了大量的安全機制和策略,這些安全機制增強了系統(tǒng)可靠性和可用性,但未從信息安全的角度考慮。列控系統(tǒng)的安全機制主要有以下2種:
(1)雙網(wǎng)冗余。列控系統(tǒng)信號安全網(wǎng)絡、ATS網(wǎng)絡、區(qū)域控制器(ZC)、計算機聯(lián)鎖(CI)等設備的內(nèi)部網(wǎng)絡等都采用雙網(wǎng)冗余,當一張網(wǎng)故障通信中斷后,系統(tǒng)會使用另一張網(wǎng)的數(shù)據(jù),保證功能不受影響。該手段增強了系統(tǒng)的耐受性,對一些泛洪DoS攻擊有很好的防護效果,然而網(wǎng)絡數(shù)量的增加也增大了被入侵的可能;部分系統(tǒng)對冗余網(wǎng)絡上的數(shù)據(jù)具有新鮮程度的判斷,缺少正確性的判斷,若存在數(shù)據(jù)篡改,系統(tǒng)從雙網(wǎng)中選擇最早到達數(shù)據(jù),仍有一定概率使用被篡改的數(shù)據(jù)。
(2)二乘二取二安全計算機平臺。ZC、CI等至關重要的設備使用二乘二取二、三取二和雙機熱備等結(jié)構(gòu)實現(xiàn)其功能,常用的二乘二取二架構(gòu)以2系主機保證設備的可用性,以每系中的2臺主機保證計算的正確性,平臺的計算、通信都具有嚴格的微周期限制,導致系統(tǒng)在遭受攻擊時可能更易被攻破。
掃描階段在列控系統(tǒng)半實物仿真平臺中進行,平臺使用部分地鐵線路真實設備(包括ZC、車載控制器(VOBC)等)和仿真軟件搭建而成。
測試工具主要包括掃描工具和攻擊工具(見表1)。
表1 測試工具
掃描階段的工作內(nèi)容和部分結(jié)果如下:
(1)監(jiān)聽數(shù)據(jù)通信。使用wireshark進行抓包,在未知網(wǎng)絡條件的情況下監(jiān)聽廣播數(shù)據(jù)包(ARP數(shù)據(jù)包、NBNS數(shù)據(jù)包等),分析活躍的IP,確定子網(wǎng)掩碼和網(wǎng)段。
(2)通信關系確立。使用omnipeek對數(shù)據(jù)包的IP和MAC地址進行分析分類,繪制設備間的通信關系圖。
(3)端口掃描。對重點關注對象進行端口掃描,獲取主機端口開放狀態(tài)和服務開放狀態(tài),重點關注常用服務和端口,如遠程桌面服務、445端口等。對真實ZC進行掃描,ZC主機端口開放情況見表2。
(4)漏洞掃描。利用漏洞掃描工具nessus對網(wǎng)絡中存活的主機進行掃描,獲得主機漏洞情況,分析漏洞的可利用性,為下一步實踐攻擊做準備。ATS網(wǎng)絡主機漏洞掃描部分結(jié)果見表3。
表2 ZC主機端口開放情況
表3 ATS網(wǎng)絡主機漏洞掃描部分結(jié)果 個
滲透攻擊階段分別進行一般網(wǎng)絡攻擊和高危漏洞利用。
(1)漏洞介紹:Windows系列操作系統(tǒng)中存在大量已知漏洞,系統(tǒng)部分服務,如SMB服務更是漏洞的高發(fā)區(qū)。利用這些漏洞可達到拒絕服務、遠程代碼執(zhí)行等效果。
(2)漏洞利用:從ATS網(wǎng)絡有線接入,以網(wǎng)關計算機為測試目標進行滲透。使用metasploit,對網(wǎng)關計算機進行攻擊。攻擊方式是緩沖區(qū)溢出,Windows系統(tǒng)漏洞利用流程見圖5。
圖5 Windows系統(tǒng)漏洞利用流程
(3)攻擊效果分析:攻擊成功獲取被攻擊主機管理員權限。被攻擊主機向攻擊者反彈會話連接,攻擊者可執(zhí)行任意命令。該攻擊收效巨大,基本完全控制網(wǎng)關計算機。
攻擊網(wǎng)關計算機可以中斷信號安全網(wǎng)絡與ATS網(wǎng)絡的數(shù)據(jù)轉(zhuǎn)發(fā)。ATS網(wǎng)絡與信號安全網(wǎng)絡通信中斷將導致列車位置信息不能及時上報,ATS失去對列車的實時追蹤;在遙控模式(中心控制)下,中心ATS通信中斷,無法下發(fā)計劃,CI無法排列進路,ZC計算的移動授權MA不能向前更新,列車不能進入無MA的區(qū)段,進而影響列車運行效率。
網(wǎng)關計算機是列控系統(tǒng)信號安全網(wǎng)絡與ATS網(wǎng)絡的連接樞紐,能夠以該主機為跳板實現(xiàn)不同網(wǎng)絡間的自由訪問。
(1)攻擊原理:向被攻擊者快速發(fā)送大量數(shù)據(jù)包或鏈接請求,占用大量的網(wǎng)絡帶寬資源或CPU資源,導致主機網(wǎng)絡中斷或因為資源占盡而產(chǎn)生卡頓甚至宕機。洪水攻擊包括ICMP、UDP、SYN、TCP等多種方式,在此使用UDP洪水。
(2)攻擊過程:從信號安全網(wǎng)絡有線接入,使用組包工具hping3以盡可能快的速度向ZC發(fā)送UDP數(shù)據(jù)包,查看ZC和VOBC的表現(xiàn)。
(3)攻擊效果分析:大量數(shù)據(jù)占用了VxWorks系統(tǒng)計算能力,導致微周期被打破,觸發(fā)ZC的安全保障機制,通信控制器被ZC主動關停,需要人工按壓恢復按鈕。因為雙網(wǎng)冗余,系統(tǒng)運行不受影響,與前期分析結(jié)果一致。
同時在2張安全信號網(wǎng)絡中對ZC進行攻擊,2個通信控制均被關閉,ZC失效,此時運行在ZC管轄范圍內(nèi)的列車緊急制動并且進入人工模式,嚴重影響行車效率和旅客乘坐的舒適性。
(1)漏洞介紹:部分低版本VxWorks系統(tǒng)默認開啟17185調(diào)試端口,且無端口訪問權限控制。
(2)漏洞利用:從ZC內(nèi)網(wǎng)接入,使用metasploit中的VxWorks攻擊腳本,按照特定格式發(fā)送VxWorks調(diào)試命令,攻擊ZC內(nèi)部處理單元或通信控制器。
(3)攻擊效果分析:攻擊單一主機,被攻擊主機立即關機或重啟,ZC自動切換工作系,功能不受影響;連續(xù)攻擊ZC中2系設備,最終造成ZC整體失效。
該攻擊條件要求較高,需要ZC等設備內(nèi)網(wǎng)的接入權限,但攻擊效果明顯。ZC一旦拒絕服務,在該ZC管轄范圍內(nèi)的列車會進行緊急制動后請求進入人工模式,在人工模式下以較慢的速度行駛,后續(xù)車輛也會因此受到影響,都降級到人工模式,最后造成整條線路列車的積壓,嚴重影響列車運行效率。
通過列控系統(tǒng)滲透測試,發(fā)現(xiàn)以下問題:
(1)網(wǎng)關計算機疏于防護:網(wǎng)關計算機是信號安全網(wǎng)絡與ATS網(wǎng)絡信息交換的樞紐,地位重要。一旦網(wǎng)關計算機被攻擊而拒絕服務,雖不會造成列車安全事故,但會造成命令無法下發(fā)、列車位置無法上報等后果,嚴重影響運營;若網(wǎng)關計算機被攻擊者控制,攻擊者就能從ATS網(wǎng)絡接入信號安全網(wǎng)絡,造成更嚴重的后果。
(2)功能安全防護機制導致系統(tǒng)信息安全攻擊耐受性下降:列控系統(tǒng)中為提高可靠性而使用的二乘二取二安全計算機平臺在泛洪類網(wǎng)絡攻擊下耐受性下降,攻擊更易起效。
(3)Windows操作系統(tǒng)引入大量漏洞:Windows操作系統(tǒng)向列控系統(tǒng)引入了諸多高危漏洞,利用這些漏洞輕則導致拒絕服務、信息泄露,重則導致攻擊者能夠控制系統(tǒng)、潛伏隱藏,危害巨大。
(4)系統(tǒng)軟件陳舊:列控系統(tǒng)中使用的操作系統(tǒng)較為陳舊,因與外網(wǎng)隔離也難以及時安裝安全補丁,這導致大量存在很長時間的漏洞依舊能夠被利用。
目前城軌交通系統(tǒng)中已設置了一些信息安全防護手段,例如在系統(tǒng)關鍵位置放置防火墻,防止從系統(tǒng)外部發(fā)起的攻擊;在功能主機上安裝應用程序白名單,僅允許少量應用和進程運行,降低系統(tǒng)被植入木馬和后門的風險。但是為了防止防護措施的誤報、誤殺對功能軟件產(chǎn)生影響而進一步影響行車,已經(jīng)應用的防火墻和白名單存在未激活或過濾條件過于寬松的情況。
城軌交通列控系統(tǒng)應滿足三級等級保護的要求[11]。整體的安全保障體系包括安全技術和安全管理兩大部分,安全技術又分物理、網(wǎng)絡、主機、數(shù)據(jù)、應用5個方面。在此主要針對后4個方面給出建議[12]。
(1)網(wǎng)絡安全:做好網(wǎng)絡隔離、端口禁用、端口綁定等工作能防范有線方式接入網(wǎng)絡,也能防御部分DoS攻擊;增加防火墻,列控系統(tǒng)應當在接入交換機、網(wǎng)關計算機、通信前置機等系統(tǒng)邊界處安裝防火墻,阻止攻擊者的滲透。
(2)主機安全:列控系統(tǒng)應當定期以集中發(fā)放的方式安裝補丁,能夠防范大部分已知的漏洞利用攻擊;增加入侵檢測系統(tǒng),在列控系統(tǒng)中安裝入侵檢測和異常檢測系統(tǒng),實時檢測系統(tǒng)狀態(tài),向系統(tǒng)決策者發(fā)出預警。
(3)數(shù)據(jù)安全:嚴格遵守安全等級保護體系中對數(shù)據(jù)存儲、備份、銷毀等階段的各項要求;開發(fā)加密式通信協(xié)議,防止數(shù)據(jù)傳輸過程中可能發(fā)生的竊聽和篡改。
(4)應用安全:應增加主機衛(wèi)士或類似安全設備,使用白名單的方式對應用進行保護,防止惡意應用對關鍵文件的操作;增加堡壘機或類似安全設備,進一步加強身份認證。
結(jié)合列控系統(tǒng)工作原理和網(wǎng)絡架構(gòu),分析系統(tǒng)存在的信息安全隱患和風險。綜合各類滲透測試方案和指南,分析其優(yōu)劣,結(jié)合列控系統(tǒng)特點,提出列控系統(tǒng)的滲透測試流程。以列控系統(tǒng)半實物仿真平臺為測試對象,提出滲透測試方案,并驗證列控系統(tǒng)真實存在的隱患,進而提出改善建議。