王朝棟 吳 沖
(上海三零衛(wèi)士信息安全有限公司,上海 200030)
監(jiān)視控制與數(shù)據(jù)采集(Supervisory Control And Data Acquisition,SCADA)系統(tǒng)在石油化工、電力、給水及核電等領(lǐng)域都發(fā)揮著重要的作用[1,2]。作為工業(yè)控制系統(tǒng)的核心,SCADA的信息安全已成為工業(yè)控制系統(tǒng)安全的重要內(nèi)容。起初,SCADA為獨(dú)立的網(wǎng)絡(luò)系統(tǒng),其依賴于專有軟硬件,與企業(yè)內(nèi)部網(wǎng)絡(luò)相分離;隨著網(wǎng)絡(luò)技術(shù)、通信技術(shù)和計(jì)算機(jī)技術(shù)的發(fā)展,SCADA系統(tǒng)逐漸發(fā)展成為開放式透明運(yùn)作的標(biāo)準(zhǔn)系統(tǒng),并通過TCP/IP等標(biāo)準(zhǔn)網(wǎng)絡(luò)協(xié)議進(jìn)行通信。在降低成本并提高效率的同時(shí),SCADA系統(tǒng)所面臨著的安全性問題也凸顯出來[3]。為此,筆者提出一種白名單列表的SCADA系統(tǒng),來提高工控系統(tǒng)網(wǎng)絡(luò)的安全性。
白名單列表是一種以TCP/IP作為SCADA網(wǎng)絡(luò)的主要傳輸協(xié)議,以減少網(wǎng)絡(luò)攻擊為目標(biāo)的七元組合法傳輸網(wǎng)絡(luò)包。列表是源MAC地址、目的MAC地址、源IP、目的IP、源端口、目的端口和協(xié)議類型七元組雙向包序列。白名單列表是一個(gè)完全基于上述七元組的合法網(wǎng)絡(luò)包的序列,它在深度包檢測及主機(jī)入侵檢測等方面都具有較好的效果,可在不依賴包有效載荷的情況下對私有協(xié)議進(jìn)行處理,甚至可在網(wǎng)絡(luò)層進(jìn)行操作。白名單列表可以廣泛應(yīng)用于特殊環(huán)境中,如減少垃圾郵件、避免網(wǎng)絡(luò)釣魚和預(yù)防各種對VoIP基礎(chǔ)設(shè)施的攻擊[4]。使用白名單的主要目的是由于大多數(shù)SCADA網(wǎng)絡(luò)流量都是由現(xiàn)場設(shè)備周期輪詢等自動(dòng)化過程所產(chǎn)生,且與外部連接有條件限制,同時(shí)系統(tǒng)中設(shè)備添加及刪除等操作并不頻繁[5,6]。
在SCADA網(wǎng)絡(luò)中的連接管理通常很穩(wěn)定,這就意味著白名單的可行性。筆者提出了在SCADA網(wǎng)絡(luò)中使用白名單列表的方式幫助網(wǎng)絡(luò)管理員監(jiān)測非法網(wǎng)絡(luò)流量。為了確保方案的可行性,白名單需擁有兩個(gè)屬性:第一,大小可控,因一般的IT網(wǎng)絡(luò)中擁有上百萬個(gè)記錄的列表,將導(dǎo)致其傳輸不可行(不可控);第二,白名單要穩(wěn)定,經(jīng)常變動(dòng)則需要進(jìn)行頻繁更新操作,否則會產(chǎn)生大量的報(bào)警信息。
在SCADA網(wǎng)絡(luò)中,通過對流量的獲取,聚集到連接,然后匯總到列表。連接即是所有帶相同七元組的數(shù)據(jù)包(源MAC地址、目的MAC地址、源IP、目的IP、源端口、目的端口和協(xié)議類型),而不管這個(gè)數(shù)據(jù)包的來源和目的地。在學(xué)習(xí)階段,通過對創(chuàng)建列表的分析得到一個(gè)含有七元組的初始白名單列表。在白名單列表產(chǎn)生后,將在檢測階段對其進(jìn)行分析。所有在網(wǎng)絡(luò)中符合白名單的則認(rèn)為是合法的,不與白名單相匹配的則產(chǎn)生報(bào)警。圖1為白名單的工作流程。
圖1 白名單的工作流程
因白名單依賴IP包頭信息,所以包頭信息需在網(wǎng)絡(luò)中獲取并與白名單比較,在此僅考慮TCP與UDP包。創(chuàng)建連接是將捕獲到的包聚集,以TCP狀態(tài)機(jī)或超時(shí)300s作為創(chuàng)建連接的結(jié)束標(biāo)志,實(shí)驗(yàn)中使用argus開源工具進(jìn)行測試。
在創(chuàng)建列表階段確定了連接的客戶端與服務(wù)器端,并根據(jù)七元組進(jìn)一步匯總連接。通過以下4個(gè)規(guī)則進(jìn)行服務(wù)器端的識別:
a. 遵守三次握手協(xié)議的TCP連接,服務(wù)器端用來接收SYN包或發(fā)送SYN/ACK包。
b. 適用于1 024以下的端口,主機(jī)使用其作為服務(wù)器端。在一個(gè)活動(dòng)的FTP會話中,數(shù)據(jù)連接的發(fā)送端為服務(wù)器,并使用20端口作為服務(wù)端口。
c. 啟發(fā)式。如果一臺主機(jī)在多次連接中重復(fù)使用相同的協(xié)議和端口,那么這個(gè)主機(jī)就作為服務(wù)器。其依賴于客戶端端口在連接中都不具有重復(fù)性,此方式將未被分類為a與b的連接保存在內(nèi)存中,下次帶有相同的主機(jī)地址、協(xié)議和端口被檢測,這潛在無限延遲了數(shù)據(jù)分析??梢允褂迷诰€超時(shí)機(jī)制,當(dāng)超時(shí)機(jī)制啟動(dòng)后,這個(gè)連接將被劃分為d類。此處的離線機(jī)制使用了無限超時(shí)的概念。
d. 對于不符合以上3個(gè)規(guī)則的連接都?xì)w為此類。
假設(shè)在SCADA網(wǎng)絡(luò)系統(tǒng)中,符合以上3個(gè)規(guī)則傳輸端口與IP協(xié)議的配對在服務(wù)器中都有唯一的服務(wù)與之對應(yīng),但這對于使用動(dòng)態(tài)端口分配(如微軟的活動(dòng)目錄)的網(wǎng)絡(luò)服務(wù)是有不確定性的[4]。在動(dòng)態(tài)端口分配服務(wù)中,高于1 024以上的端口為遠(yuǎn)程過程調(diào)用所動(dòng)態(tài)分配的[7]。
學(xué)習(xí)階段的目標(biāo)是在一段時(shí)間內(nèi)通過網(wǎng)絡(luò)流量的收集,自動(dòng)建立并初始化白名單。在學(xué)習(xí)階段有兩種情形:所有的數(shù)據(jù)流都是合法的;大部分的數(shù)據(jù)流都是合法的。第一種情況是可行的,事實(shí)上在初始情況下,并沒有來自網(wǎng)絡(luò)上的攻擊。第二種情況是基于SCADA網(wǎng)絡(luò)上的大部分?jǐn)?shù)據(jù)流是自動(dòng)匹配的,即會出現(xiàn)重復(fù)的現(xiàn)象。學(xué)習(xí)階段是對所有合法的數(shù)據(jù)流進(jìn)行統(tǒng)計(jì),但有時(shí)難免(如手動(dòng)修改可編程邏輯控制器(PLCs)的設(shè)置時(shí))有相關(guān)的信息流將不會出現(xiàn)在白名單中。在這種情況下,管理員可以通過檢測階段來增添白名單。
檢測階段使用在學(xué)習(xí)階段所創(chuàng)建的白名單去識別非法流。如果與白名單相匹配,則正常運(yùn)行,否則會產(chǎn)生報(bào)警信息。實(shí)際生產(chǎn)環(huán)境中,管理員希望在誤報(bào)警時(shí)將其添加到白名單中,或者在漏報(bào)時(shí)限制這個(gè)信息流。與IT網(wǎng)絡(luò)不同的是,不允許在SCADA網(wǎng)絡(luò)環(huán)境中設(shè)置自動(dòng)隔離功能,原因是合法的SCADA信息流被隔離可能引起嚴(yán)重的后果,如石油管道的泄漏及電力中斷等。
為了驗(yàn)證白名單列表在SCADA網(wǎng)絡(luò)中的有效性,筆者通過3個(gè)不同的實(shí)驗(yàn)分別進(jìn)行驗(yàn)證。第一個(gè)實(shí)驗(yàn)是在網(wǎng)絡(luò)中通過比較完整的白名單大小與主機(jī)通信對數(shù),來驗(yàn)證白名單是否可控;第二個(gè)實(shí)驗(yàn)證明了理想的學(xué)習(xí)時(shí)間;第三個(gè)實(shí)驗(yàn)是針對數(shù)據(jù)集生成的報(bào)警分類。
在某兩個(gè)石化處理設(shè)備Oil_1&Oil_2的3個(gè)SCADA環(huán)境中使用網(wǎng)絡(luò)包跟蹤程序,在其中一個(gè)處理設(shè)備上同時(shí)執(zhí)行兩個(gè)數(shù)據(jù)收集程序,一個(gè)在由PLCs及RTUs等組成的現(xiàn)場子網(wǎng)(Oil_2_field)中執(zhí)行;一個(gè)在控制子網(wǎng)(Oil_2_control)中執(zhí)行,由不同功能的服務(wù)(輪詢PLCs、歷史數(shù)據(jù)庫和執(zhí)行訪問控制)和人機(jī)交互界面HMIs(如操作員工作站)組成。在另一個(gè)設(shè)備上執(zhí)行單一收集,其包含了兩個(gè)邏輯子網(wǎng)的全部數(shù)據(jù),SCADA數(shù)據(jù)集包含了完整的tcpdump/libpcap跟蹤包,且每個(gè)收集都作為一個(gè)獨(dú)立的數(shù)據(jù)集。
第一個(gè)實(shí)驗(yàn)是驗(yàn)證白名單大小是否可控,這個(gè)特性是通過延長每個(gè)跟蹤包的學(xué)習(xí)時(shí)間與計(jì)算符合的數(shù)據(jù)流數(shù)量進(jìn)行測試的。假設(shè)在數(shù)據(jù)集中沒有發(fā)現(xiàn)攻擊行為,這可根據(jù)完整跟蹤來判斷白名單的大小。表1為每個(gè)數(shù)據(jù)集的白名單大小,表中內(nèi)部主機(jī)列為在實(shí)驗(yàn)網(wǎng)絡(luò)中符合條件的主機(jī)數(shù),主機(jī)對列為所通信的主機(jī)對數(shù)。
表1 數(shù)據(jù)集的白名單
為了區(qū)別不同的跟蹤,使用絕對值與系數(shù)作為內(nèi)部主機(jī)數(shù)。大部分情況下,SCADA網(wǎng)絡(luò)數(shù)據(jù)集的白名單大小與相應(yīng)的內(nèi)部主機(jī)數(shù)有相同的級數(shù),表明白名單流在這些環(huán)境中是可行的。另一個(gè)不同的是,主機(jī)對與白名單比例并不太大,即平均每個(gè)服務(wù)器提供1~2個(gè)服務(wù),意味著一個(gè)不包含服務(wù)信息的白名單具有較少的限制性并相當(dāng)?shù)牟话踩?,在大小上也相差不多。對于結(jié)果的唯一例外就是Oil_2_control數(shù)據(jù)集有一個(gè)在級數(shù)上大于通信主機(jī)對數(shù)的白名單。
第二個(gè)實(shí)驗(yàn)驗(yàn)證了在學(xué)習(xí)時(shí)間在所獲得的白名單大小上的效果。圖2分別顯示了3個(gè)SCADA數(shù)據(jù)集在學(xué)習(xí)時(shí)間與獲得的白名單大小占流量總數(shù)的百分比。在Oil_1與Oil_2_field數(shù)據(jù)集情況下,通信1h內(nèi)就獲得了大于50%的數(shù)據(jù)流,第一天中僅增加了一點(diǎn);Oil_2_control數(shù)據(jù)集在第七天出現(xiàn)了很大的跳躍。
圖2 數(shù)據(jù)流獲取與時(shí)間變化
盡管不同,但3個(gè)SCADA數(shù)據(jù)集共有一個(gè)特性:在第二天的流量統(tǒng)計(jì)中白名單都沒有增加,第三天也沒增加。作為觀察結(jié)果,在后續(xù)實(shí)驗(yàn)中將學(xué)習(xí)時(shí)間設(shè)置為1天。
本次實(shí)驗(yàn)以白名單中不穩(wěn)定來源作為切入點(diǎn),特別是在學(xué)習(xí)階段不符合規(guī)則的數(shù)據(jù)流屬性。通過分析得到了4個(gè)主要的報(bào)警類型:
a. DPA異常。本服務(wù)認(rèn)為在DPA情況下帶傳輸端口的一對一的映射是有問題的。筆者并非要弄清楚所有使用動(dòng)態(tài)端口的服務(wù),但是發(fā)現(xiàn)了通過DPA所觸發(fā)的異常。Oil_2_control有一些TCP連接的實(shí)例,由相同主機(jī)產(chǎn)生的一些TCP連接,傳輸端口號幾乎在客戶與服務(wù)器端沒有增長。表2為部分實(shí)例。
b. 手工行為。由人為觸發(fā),所有帶有以下協(xié)議和端口號信息的服務(wù)都可歸到此類——telnet(tcp-22)、ssh(tcp-23)、http(tcp-80)、https(tcp-443)、shell(tcp-514)、rdp(tcp-3389)、vnc(tcp-5800和tcp-5900)與x11(tcp-6000到tcp-6007)。Oil_1和Oil_2數(shù)據(jù)集含有涉及到操作員工作站的數(shù)據(jù)流。如果數(shù)據(jù)流的客戶端是操作員工作站,則被視為手工行為。
c. 新主機(jī)。此級別包含了所有在學(xué)習(xí)階段沒有進(jìn)行通信的數(shù)據(jù)流,可以為服務(wù)器或者客戶端,因此不會出現(xiàn)在白名單中。
d. 其他。包含了不屬于以上3種類別的所有數(shù)據(jù)流。
表2 動(dòng)態(tài)端口分配實(shí)例
每個(gè)流都被映射到單一的類中,且類成員將按以上所列順序進(jìn)行測試。如客戶端使用ssh服務(wù)且沒有在白名單中所引起報(bào)警的情況,則歸為手工行為。因?yàn)槭止ば袨轭惖膬?yōu)先級高于新主機(jī)類。
在SCADA環(huán)境中為了增加可靠性,對多數(shù)網(wǎng)絡(luò)功能進(jìn)行復(fù)制是很普遍的,如對服務(wù)的復(fù)制。有兩個(gè)需要特別考慮的情況:
a. 第一個(gè)情況是一個(gè)單冗余主機(jī)在網(wǎng)絡(luò)中接管一個(gè)主要服務(wù)的任務(wù)。比較特殊的是,SCADA服務(wù)器負(fù)責(zé)對現(xiàn)場設(shè)備的輪詢。在改變發(fā)生前,通過telnet連接到一些PLCs執(zhí)行重啟命令,但不是對所有的PLCs進(jìn)行telnet傳輸。除了涉及到PLCs的數(shù)據(jù)流之外,其他生命周期較長的數(shù)據(jù)流也具有相同的行為,如一些ssh數(shù)據(jù)流也會“交換”到冗余主機(jī),像這些常規(guī)執(zhí)行的改變是為了確認(rèn)冗余主機(jī)是否正確地工作。在分析中,如果一個(gè)主機(jī)在數(shù)據(jù)流中為SCADA服務(wù)器,查找另一個(gè)帶有相同密鑰的流,僅SCADA服務(wù)器地址才符合這種情況,反之亦然,這樣就能夠確認(rèn)與此種情況相符的數(shù)據(jù)流了。
b. 第二個(gè)情況涉及到網(wǎng)絡(luò)中一些主機(jī)的重定位,大部分為PLCs。一段連續(xù)的IP地址段被分為一些邏輯子網(wǎng)。通過telnet命令執(zhí)行這種地址的改變,但并不是對所有主機(jī)。通過驗(yàn)證主機(jī)(客戶端或服務(wù)器端)在通信中是否為新建網(wǎng)絡(luò)的一部分,來識別符合此情況的數(shù)據(jù)流,而telnet連接常被作為手工行為。
白名單對于減少SCADA網(wǎng)絡(luò)所受到的攻擊是具有吸引力和實(shí)用效果的。與IT網(wǎng)絡(luò)不同,SCADA網(wǎng)絡(luò)中白名單的大小是可管理的,很大原因是由于內(nèi)部主機(jī)數(shù)量的決定的。另一個(gè)特點(diǎn)是白名單的穩(wěn)定屬性。實(shí)驗(yàn)結(jié)果表明,超過50%的符合網(wǎng)絡(luò)數(shù)據(jù)流都可在一天內(nèi)的測試中被檢測到。使用動(dòng)態(tài)端口分配的服務(wù)是產(chǎn)生報(bào)警的主要原因,這些警報(bào)可通過添加被服務(wù)所分配的全部端口到白名單中來消除或?qū)⑵鋸木W(wǎng)絡(luò)中移除。其余的報(bào)警在實(shí)際網(wǎng)絡(luò)環(huán)境中,大部分是由于白名單策略的限制所引起的,這方面可以通過網(wǎng)絡(luò)管理員或者SCADA提供商通過對白名單的優(yōu)化來改善。
未來的工作將對用戶接口進(jìn)行開發(fā),從而通過提供對警報(bào)更詳細(xì)信息的接口來幫助白名單的建立與改進(jìn)操作。另外,也需要嘗試通過識別侵入意圖來增強(qiáng)SCADA網(wǎng)絡(luò)的安全性,并且進(jìn)一步對警報(bào)頻率的分布進(jìn)行分析。
[1] 饒志宏,蘭昆,蒲石.工業(yè)SCADA系統(tǒng)信息安全技術(shù)[M].北京:國防工業(yè)出版社,2014.
[2] 魏旻,王平,王泉.工業(yè)無線控制網(wǎng)絡(luò)安全方法的研究與實(shí)現(xiàn)[J].儀器儀表學(xué)報(bào),2009,30(4):679~684.
[3] Nicholson A, Webber S,Dyer S,et al.SCADA Security in the Light of Cyber-Warfare[J].Computers & Security, 2012,31(4):418~436.
[4] Luiijf E,Manou A,Annemarie Z.Assessing and Improving SCADA Security in the Dutch Drinking Water Sector[J].International Journal of Critical Infrastructure Protection, 2011, (4):124~134.
[5] Barbosa R, Sadre R, Pras A.Towards Periodicity Based Anomaly Detection in SCADA Networks[C].Proceedings of the 17th IEEE Conference on Emerging Technologies and Factory Automation.Poland: IEEE Industrial Electronics Society ,2012:1~4.
[6] Abad C, Bonilla R.An Analysis of the Schemes for Detecting and Preventing ARP Cache Poisoning Attacks[C].Proceedings of the Twenty-Seventh International Conference on Distributed Computing Systems Workshops, 2007:60~68.
[7] Wang C L,Fang L,Dai Y Q.A Simulation Environment for SCADA Security Analysis and Assessment[C].Proceedings of the 2010 International Conference on Measuring Technology and Mechatronics Automation, 2010:342~347.