蔡鈞宇,蘇 燁,尹 峰,陳 波
(國網(wǎng)浙江省電力有限公司電力科學研究院,杭州 310014)
電力行業(yè)是我國引入DCS(分散控制系統(tǒng))比較早的行業(yè)之一,由于其高可靠性、開放性、靈活性、易于維護、控制功能完善等特點,在改造傳統(tǒng)產(chǎn)業(yè)和產(chǎn)業(yè)結(jié)構(gòu)調(diào)整時成為首選方案。隨著DCS 技術(shù)的不斷改進和發(fā)展,新一代DCS 基于開放的技術(shù)標準,廣泛使用Windows 操作系統(tǒng)、以太網(wǎng)和OPC(過程控制對象鏈接與嵌入),然而,這些通用技術(shù)和標準的使用加劇了DCS 控制網(wǎng)絡(luò)的信息安全風險[1]。
針對DCS 網(wǎng)絡(luò)安全評估和系統(tǒng)的漏洞挖掘,GB/T 33009.3—2016《工業(yè)自動化和控制系統(tǒng)網(wǎng)絡(luò)安全集散控制系統(tǒng)(DCS)第3 部分:評估指南》的第6.1 節(jié)(DCS 資產(chǎn)識別)和第6.2 節(jié)(DCS 脆弱性)指出了評估的相關(guān)要求[2]。由于發(fā)電廠的控制網(wǎng)絡(luò)具有“永遠在線”的性質(zhì),以及發(fā)電廠控制系統(tǒng)高可用性要求的特點,因此必須對發(fā)電廠的DCS 網(wǎng)絡(luò)架構(gòu)和控制流程有深入的了解方可進行安全評估測試。此外,雖然防火墻、入侵檢測系統(tǒng)、虛擬專用網(wǎng)絡(luò)和其他技術(shù)都可以幫助保護控制網(wǎng)絡(luò)免受惡意攻擊,但是在DCS 環(huán)境中未經(jīng)測試和驗證的不正確配置或措施會嚴重妨礙其發(fā)揮安全效用,在安全評估測試中必須加以考慮。
根據(jù)發(fā)電廠現(xiàn)場DCS 安全評估項目的具體要求,選取了2 種適合運營維護階段的安全評估技術(shù)[3]:網(wǎng)絡(luò)安全架構(gòu)評審和基于工具的自動外部應(yīng)用程序掃描。在網(wǎng)絡(luò)安全架構(gòu)評審的具體實踐中,利用在線資產(chǎn)發(fā)現(xiàn)生成的動態(tài)網(wǎng)絡(luò)拓撲替代了通常由運營方提供的靜態(tài)網(wǎng)絡(luò)架構(gòu)拓撲,這樣即得到了網(wǎng)絡(luò)真實的拓撲結(jié)構(gòu),同時還可以發(fā)現(xiàn)靜默設(shè)備或潛在的非法接入設(shè)備。在基于工具的自動外部應(yīng)用程序掃描技術(shù)的漏洞挖掘過程中,通過對核心設(shè)備的安全漏洞掃描發(fā)現(xiàn)了多個急需解決的漏洞和安全隱患,并在此基礎(chǔ)上,利用漏洞掃描工具的擴展功能,對常規(guī)測試例進行擴展,結(jié)合不同用途的工具發(fā)現(xiàn)DCS 控制器的通信缺乏認證機制的嚴重問題。
本次安全評估以火電廠DCS 為測試對象,火電廠的主控DCS 包括DAS(數(shù)據(jù)采集系統(tǒng))、MCS(模擬量控制系統(tǒng))、FSSS(爐膛安全與監(jiān)控系統(tǒng))、SCS(順序控制系統(tǒng))、ECS(廠用電監(jiān)控系統(tǒng))、ETS(汽輪機緊急跳閘保護系統(tǒng))以及DEH(數(shù)字電調(diào)系統(tǒng))等。輔控DCS 包括水務(wù)、輸煤、除灰除渣、脫硫等子系統(tǒng)[4]。輔控DCS 和機組DCS 類似,為了更直觀地展示,圖1 中將輔控系統(tǒng)和其他系統(tǒng)簡化掉。圖1 中有若干測試點a—f,這些測試點作為測試所屬網(wǎng)絡(luò)或子網(wǎng)絡(luò)的在線資產(chǎn)發(fā)現(xiàn)和核心設(shè)備漏洞掃描的網(wǎng)絡(luò)接入點。
火電廠的監(jiān)控系統(tǒng)包括生產(chǎn)過程控制級、生產(chǎn)過程操作級和管理信息系統(tǒng)。其中生產(chǎn)過程控制級中的控制器,例如圖1 所示的Ovation 控制器,接收現(xiàn)場傳感器或變送器發(fā)送的數(shù)據(jù),根據(jù)一定的控制策略計算出所需的控制量,并且向執(zhí)行設(shè)備發(fā)送控制指令;生產(chǎn)過程操作級包括工程師站、操作員站、歷史數(shù)據(jù)服務(wù)器和打印機等輔助設(shè)備;監(jiān)控管理系統(tǒng)包括各種應(yīng)用服務(wù)器和管理計算機等。3 個層級分別對應(yīng)了控制網(wǎng)絡(luò)、監(jiān)控網(wǎng)絡(luò)和管理網(wǎng)絡(luò)。
圖1 火電廠監(jiān)控系統(tǒng)簡化網(wǎng)絡(luò)
針對發(fā)電廠DCS 的安全評估通常包括物理安全、主機安全、網(wǎng)絡(luò)安全、OPC 安全、控制器安全、上位機工業(yè)控制系統(tǒng)及終端、系統(tǒng)能力測試等多個方面[5-6]。本次DCS 安全評估的關(guān)注點是DCS 核心設(shè)備,即控制器和上位機的安全評估。
常見的安全評估技術(shù)按照評估深度由淺到深的排序如表1 所示。根據(jù)DCS 整個生命周期不同階段的特點需要考慮采用適合的安全評估技術(shù)。
表1 安全評估技術(shù)
鑒于發(fā)電廠DCS 處于運營使用階段,因此選取了2 項適用于被檢測對象處于運營使用階段并且符合發(fā)電廠特殊生產(chǎn)環(huán)境要求的評估技術(shù):網(wǎng)絡(luò)安全架構(gòu)評審和基于工具的自動外部應(yīng)用程序掃描。
網(wǎng)絡(luò)安全架構(gòu)的評審是根據(jù)運營者提供的網(wǎng)絡(luò)拓撲圖來分析網(wǎng)絡(luò)部署是否符合網(wǎng)絡(luò)分區(qū)和隔離的原則,是否提供足夠的邊界保護措施以及防火墻的設(shè)置和其他網(wǎng)絡(luò)隔離手段是否充分合理[7]。然而,運營商提供的靜態(tài)網(wǎng)絡(luò)拓撲圖未必能夠真實反映網(wǎng)絡(luò)連接狀況,容易忽略實際存在但網(wǎng)絡(luò)拓撲圖中被遺忘或潛在非法連接的設(shè)備。為此,需要通過在線資產(chǎn)發(fā)現(xiàn)手段提供最真實的DCS網(wǎng)絡(luò)架構(gòu)拓撲作為網(wǎng)絡(luò)安全架構(gòu)評審的依據(jù),更直觀地了解發(fā)電廠DCS 網(wǎng)絡(luò)基礎(chǔ)架構(gòu)的缺陷以及需要升級和替換的薄弱環(huán)節(jié)。
自動外部應(yīng)用程序掃描是利用自動化開源或商業(yè)軟件發(fā)現(xiàn)業(yè)界已知的應(yīng)用漏洞[8-9]。在本次發(fā)電廠DCS 網(wǎng)絡(luò)安全評估中,自動外部應(yīng)用程序掃描使用的是Nessus 和Achilles 2 種工具。采用這種評估技術(shù)的好處是:能快速識別設(shè)備中存在的已知漏洞;能夠自動定期運行,提供漏洞的基準和持續(xù)管理指標;工具提供商的漏洞數(shù)據(jù)庫可以基于公共漏洞資源,不斷更新檢測工具的漏洞數(shù)據(jù)庫。但是常規(guī)測試例也有一定的局限性,不能發(fā)現(xiàn)零日漏洞,需要測試人員根據(jù)具體測試場景自定義測試例,因此需要測試人員深入了解測試對象的工作原理和工作流程并具備使用腳本語言開發(fā)自定義測試例的能力。
2.2.1 方法選擇
在線資產(chǎn)發(fā)現(xiàn),特別是自動執(zhí)行持續(xù)性的資產(chǎn)發(fā)現(xiàn)是對傳統(tǒng)網(wǎng)絡(luò)安全架構(gòu)評審的改進,在線資產(chǎn)發(fā)現(xiàn)包括被動掃描和選擇性探查2 種方式[10]。
所謂被動掃描其實并沒有網(wǎng)絡(luò)掃描的行為,而是嗅探所有網(wǎng)絡(luò)流量并對其進行解析,以獲取可用于識別端點和流量模式的數(shù)據(jù)。被動掃描資產(chǎn)發(fā)現(xiàn)所需的元數(shù)據(jù)深藏在流量之中,查找用于識別設(shè)備品牌、型號、固件版本等信息是一項艱巨的任務(wù),并且無法檢測到靜默設(shè)備,更無法準確發(fā)現(xiàn)設(shè)備的應(yīng)用程序和安全補丁。此外,若靜默設(shè)備檢測期間沒有發(fā)送消息,那么它就不會出現(xiàn)在物理層和數(shù)據(jù)鏈路的網(wǎng)絡(luò)拓撲中。
選擇性探測是使用合法協(xié)議和訪問憑證來探測網(wǎng)絡(luò)設(shè)備,包括網(wǎng)絡(luò)交換機和路由器。它充分利用了以下幾點:工業(yè)控制環(huán)境中幾乎所有相關(guān)協(xié)議都具有從固件版本的特定位置查詢產(chǎn)品標識中元數(shù)據(jù)的功能,例如Modbus,Ethernet/IP,Profinet 和DNP3。這同樣適用于DCS 網(wǎng)絡(luò)中使用的IT 協(xié)議,例如SNMP(簡單網(wǎng)絡(luò)管理協(xié)議)和WMI(Windows 管理規(guī)范)。即使一些廠家的專有協(xié)議也具有查詢元數(shù)據(jù)的特定功能,甚至還有專門為發(fā)現(xiàn)配置細節(jié)而設(shè)計的協(xié)議,例如鏈路層發(fā)現(xiàn)協(xié)議、思科發(fā)現(xiàn)協(xié)議。在具體測試過程中,選擇性探測并非持續(xù)地分析所有網(wǎng)絡(luò)流量,而是發(fā)送一次適當?shù)奶綔y調(diào)用,然后收集并處理相關(guān)的響應(yīng)。與解析設(shè)備元數(shù)據(jù)的所有網(wǎng)絡(luò)流量不同,對這些探測的響應(yīng)僅包含需要的資產(chǎn)信息。
本次發(fā)電廠DCS 的網(wǎng)絡(luò)安全評估最終確定采用選擇性探測,原因是:可以檢測靜默設(shè)備;使用特定的協(xié)議能夠可靠地枚舉固件版本、軟件應(yīng)用程序和安全補?。豢梢詼蚀_地映射網(wǎng)絡(luò)拓撲,包括第1 層和第2 層特征。
2.2.2 具體實施及結(jié)果
在實施發(fā)電廠某機組DCS 的在線資產(chǎn)發(fā)現(xiàn)時,采用了Zenmap 工具,即跨平臺NMAP 安全掃描工具的圖形界面版本。目的是獲取該網(wǎng)段中所有的設(shè)備網(wǎng)絡(luò)信息,包括IP 地址、開放端口和MAC(介質(zhì)訪問控制)地址,查看是否有未知或未授權(quán)的設(shè)備隱藏在發(fā)電機組的控制網(wǎng)絡(luò)中。
通過對某機組DCS 網(wǎng)絡(luò)的掃描,獲取了網(wǎng)絡(luò)內(nèi)全部主機的IP 地址、MAC 地址和開放端口號,其中包括了全部控制器、工程師站、歷史數(shù)據(jù)服務(wù)器等,并由此生成DCS 網(wǎng)絡(luò)拓撲結(jié)構(gòu),本項測試并未發(fā)現(xiàn)未知的設(shè)備。
2.3.1 漏洞掃描工具選擇
核心設(shè)備的漏洞掃描主要采用了3 種工具:Nessus,Achilles 和Wireshark。表2 是本次漏洞掃描所使用的3 種工具的主要功能及其應(yīng)用場景。
表2 漏洞掃描工具簡介
2.3.2 漏洞掃描測試環(huán)境
圖1 中測試點c—f 是測試工具Nessus 在控制網(wǎng)絡(luò)的接入位置,用于實現(xiàn)對控制器的漏洞掃描;測試點b 是測試工具Nessus 在監(jiān)控網(wǎng)絡(luò)中的接入位置,用于實現(xiàn)對工程師站的漏洞掃描;測試點a 是測試工具Nessus 在管理網(wǎng)絡(luò)中的接入位置,用于實現(xiàn)對管理網(wǎng)絡(luò)上聯(lián)網(wǎng)設(shè)備的漏洞掃描[11]。鑒于本項目主要針對控制系統(tǒng)網(wǎng)絡(luò),因此沒有對管理網(wǎng)絡(luò)進行漏洞掃描。
2.3.3 DCS 控制器模塊的漏洞掃描
對于DCS 控制器本身來說,漏洞通常是軟件缺陷和錯誤的配置所引起的,對DCS 控制器模塊的漏洞掃描就是模仿攻擊數(shù)據(jù)流發(fā)送給控制器模塊,來檢查控制器能否正確應(yīng)對處理以保證控制過程的可用性、完整性和保密性。
對運行中的DCS 控制器進行漏洞掃描可能會導(dǎo)致整個系統(tǒng)的可用性遭到破壞,因此選擇冗余系統(tǒng)的控制器模塊進行檢測,即使由于漏洞掃描導(dǎo)致DCS 控制器不能正常工作也不會影響發(fā)電廠的正常運行。同時,還需要對每個測試例可能產(chǎn)生的最壞結(jié)果做好應(yīng)對措施,另外在測試例的選擇上要考慮實驗對象的耐受程度[12]。
利用Nessus 對控制器進行漏洞掃描后,發(fā)現(xiàn)了3 個高危漏洞、4 個中等危險漏洞和1 個低級漏洞,同時還發(fā)現(xiàn)了一些信息泄露的情況。
2.3.4 工程師站的漏洞掃描
利用Nessus 對工程師工作站進行漏洞掃描后,發(fā)現(xiàn)了1 個高危漏洞、3 個中等危險漏洞。
測試過程中模仿工程師站向控制器發(fā)送指令,利用Wireshark 對工程師站與控制器之間的數(shù)據(jù)流量進行抓取和分析,獲得含有關(guān)鍵操作“強制開啟閥門”及“強制關(guān)閉閥門”指令的數(shù)據(jù)包,然后使用Achilles 的用戶自定義測試功能,構(gòu)建關(guān)鍵操作指令測試例,對控制器進行發(fā)包測試[13]。Achilles 將測試用例的數(shù)據(jù)包發(fā)送至相關(guān)控制器,在工程師站上可以看到相應(yīng)閥門已經(jīng)接受并執(zhí)行了指令[14]。
2.4.1 在線資產(chǎn)發(fā)現(xiàn)
此次在線資產(chǎn)發(fā)現(xiàn)的結(jié)果沒有發(fā)現(xiàn)被遺忘或隱藏在DCS 網(wǎng)絡(luò)上的靜默設(shè)備,在線資產(chǎn)發(fā)現(xiàn)測試結(jié)果與已知的DCS 網(wǎng)絡(luò)設(shè)備連接狀態(tài)吻合,從而證實了在線資產(chǎn)發(fā)現(xiàn)測試的有效性,利用在線資產(chǎn)發(fā)現(xiàn)結(jié)果可以得到當前真實網(wǎng)絡(luò)拓撲結(jié)構(gòu)。
2.4.2 核心設(shè)備存在的漏洞
表3 和表4 分別是運行常規(guī)測試例發(fā)現(xiàn)的控制器和工程師站的漏洞列表。
從2.3.4 節(jié)模仿命令測試發(fā)現(xiàn)的設(shè)備漏洞中可以看到,控制器在執(zhí)行來自工程師站的指令時沒有鑒權(quán)機制,它可以接受符合協(xié)議格式的命令并且執(zhí)行命令中要求的動作,這意味著任何能夠訪問到控制器的設(shè)備只要了解控制器接受的命令格式就可以發(fā)送非法指令,破壞正常的生產(chǎn)流程,這個模仿命令的測試證實了DCS 網(wǎng)絡(luò)中存在一個嚴重的安全漏洞,當DCS 設(shè)備廠家暫時無法提供通信認證機制時,就必須針對DCS 網(wǎng)絡(luò)訪問有嚴格的安全防護機制才能降低這個漏洞帶來的安全風險。
表3 OVATION 控制器漏洞
表4 工程師站漏洞
2.4.3 漏洞特征分析
從文中列舉的DCS 網(wǎng)絡(luò)核心設(shè)備控制器和工程師站安全漏洞中可以發(fā)現(xiàn)以下幾個明顯的特征:
(1)在控制器和工程師站發(fā)現(xiàn)的漏洞是存在已久的漏洞,例如“SNMP 代理默認社區(qū)名稱(公共)”早在1990 年就已出現(xiàn),“FTP 特權(quán)端口回退掃描”漏洞于1999 年就被發(fā)現(xiàn),但問題依然存在,說明DCS 廠商并沒有徹底解決已知漏洞。
(2)有些陳舊的不安全服務(wù)依然存在于DCS核心設(shè)備上,沒有及時更新或加以限制,比如rlogin 和Telnet 的服務(wù)[15]。
(3)大部分被發(fā)現(xiàn)的漏洞可以通過補丁程序或正確的配置加以解決,有些已經(jīng)付諸行動,比如工程師站沒有開放SNMP 在UDP(用戶數(shù)據(jù)報協(xié)議)和TCP(傳輸控制協(xié)議)的端口,這說明已經(jīng)可以規(guī)避“SNMP 代理默認社區(qū)名稱(公共)”漏洞帶來的問題。
(4)DCS 控制器對于來自網(wǎng)絡(luò)的控制命令沒有認證機制,任何能夠訪問控制網(wǎng)絡(luò)的設(shè)備模仿工程師站發(fā)送給控制器的指令都能得到執(zhí)行,此時生產(chǎn)過程和生產(chǎn)安全面臨巨大的風險,需要采取更嚴格的DCS 網(wǎng)絡(luò)訪問安全控制。
(5)有些不安全的協(xié)議,例如XDCMP 不應(yīng)在網(wǎng)絡(luò)上使用,但是可以利用SSH(安全外殼)隧道使用XDCMP 顯示桌面[16]。SSH 不僅安全,而且隧道允許通過許多防火墻限制,這些限制通常會阻止XDMCP。
2.4.4 漏洞掃描結(jié)果的適用范圍
在本次測試中,漏洞掃描被測設(shè)備是西屋公司的OVATION3.5 控制器,位于發(fā)電廠生產(chǎn)過程控制網(wǎng)絡(luò),以及基于Solaris 操作系統(tǒng)的工程師工作站,該工作站屬于生產(chǎn)過程操作級的。
利用網(wǎng)絡(luò)安全架構(gòu)評審和基于工具的自動外部應(yīng)用程序掃描2 種安全評估技術(shù)手段,通過在線資產(chǎn)發(fā)現(xiàn)獲得了實時準確的網(wǎng)絡(luò)安全架構(gòu)和在線資產(chǎn)的可靠信息,如果這一技術(shù)手段能夠長時間應(yīng)用在DCS 控制網(wǎng)絡(luò)中則可以隨時獲得動態(tài)的DCS 網(wǎng)絡(luò)資產(chǎn)信息。而DCS 網(wǎng)絡(luò)核心設(shè)備漏洞掃描,發(fā)現(xiàn)已經(jīng)存在了很久的漏洞,這些漏洞對于外部的攻擊者來說是容易攻擊的,而內(nèi)部人員也可能利用這些漏洞對DCS 系統(tǒng)造成生產(chǎn)過程的破壞或信息泄露。通過編寫腳本構(gòu)建自定義測試例發(fā)現(xiàn)DCS 控制器在接收上位機指令時沒有認證機制的漏洞,有效彌補了現(xiàn)有商用漏洞掃描工具的欠缺。
總之,此次安全評估驗證了在線資產(chǎn)發(fā)現(xiàn)以及利用漏洞掃描工具特別是自定義測試例的有效性和優(yōu)越性,其次證實了發(fā)電廠的DCS 控制系統(tǒng)是存在安全風險的,有些漏洞可以通過補丁和正確的配置來避免被利用,但是由于DCS 控制系統(tǒng)可能在短時間內(nèi)無法支持對上位機的認證功能,那么只能從其他方面加強DCS 網(wǎng)絡(luò)安全措施,阻止對DCS 網(wǎng)絡(luò)的任何非法訪問。