王朝棟 吳 沖
(上海三零衛(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),其依賴(lài)于專(zhuān)有軟硬件,與企業(yè)內(nèi)部網(wǎng)絡(luò)相分離;隨著網(wǎng)絡(luò)技術(shù)、通信技術(shù)和計(jì)算機(jī)技術(shù)的發(fā)展,SCADA系統(tǒng)逐漸發(fā)展成為開(kāi)放式透明運(yùn)作的標(biāo)準(zhǔn)系統(tǒng),并通過(guò)TCP/IP等標(biāo)準(zhǔn)網(wǎng)絡(luò)協(xié)議進(jìn)行通信。在降低成本并提高效率的同時(shí),SCADA系統(tǒng)所面臨著的安全性問(wèn)題也凸顯出來(lái)[3]。為此,筆者提出一種白名單列表的SCADA系統(tǒng),來(lái)提高工控系統(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é)議類(lèi)型七元組雙向包序列。白名單列表是一個(gè)完全基于上述七元組的合法網(wǎng)絡(luò)包的序列,它在深度包檢測(cè)及主機(jī)入侵檢測(cè)等方面都具有較好的效果,可在不依賴(lài)包有效載荷的情況下對(duì)私有協(xié)議進(jìn)行處理,甚至可在網(wǎng)絡(luò)層進(jìn)行操作。白名單列表可以廣泛應(yīng)用于特殊環(huán)境中,如減少垃圾郵件、避免網(wǎng)絡(luò)釣魚(yú)和預(yù)防各種對(duì)VoIP基礎(chǔ)設(shè)施的攻擊[4]。使用白名單的主要目的是由于大多數(shù)SCADA網(wǎng)絡(luò)流量都是由現(xiàn)場(chǎng)設(shè)備周期輪詢(xún)等自動(dòng)化過(guò)程所產(chǎn)生,且與外部連接有條件限制,同時(shí)系統(tǒng)中設(shè)備添加及刪除等操作并不頻繁[5,6]。
在SCADA網(wǎng)絡(luò)中的連接管理通常很穩(wěn)定,這就意味著白名單的可行性。筆者提出了在SCADA網(wǎng)絡(luò)中使用白名單列表的方式幫助網(wǎng)絡(luò)管理員監(jiān)測(cè)非法網(wǎng)絡(luò)流量。為了確保方案的可行性,白名單需擁有兩個(gè)屬性:第一,大小可控,因一般的IT網(wǎng)絡(luò)中擁有上百萬(wàn)個(gè)記錄的列表,將導(dǎo)致其傳輸不可行(不可控);第二,白名單要穩(wěn)定,經(jīng)常變動(dòng)則需要進(jìn)行頻繁更新操作,否則會(huì)產(chǎn)生大量的報(bào)警信息。
在SCADA網(wǎng)絡(luò)中,通過(guò)對(duì)流量的獲取,聚集到連接,然后匯總到列表。連接即是所有帶相同七元組的數(shù)據(jù)包(源MAC地址、目的MAC地址、源IP、目的IP、源端口、目的端口和協(xié)議類(lèi)型),而不管這個(gè)數(shù)據(jù)包的來(lái)源和目的地。在學(xué)習(xí)階段,通過(guò)對(duì)創(chuàng)建列表的分析得到一個(gè)含有七元組的初始白名單列表。在白名單列表產(chǎn)生后,將在檢測(cè)階段對(duì)其進(jìn)行分析。所有在網(wǎng)絡(luò)中符合白名單的則認(rèn)為是合法的,不與白名單相匹配的則產(chǎn)生報(bào)警。圖1為白名單的工作流程。

圖1 白名單的工作流程
因白名單依賴(lài)IP包頭信息,所以包頭信息需在網(wǎng)絡(luò)中獲取并與白名單比較,在此僅考慮TCP與UDP包。創(chuàng)建連接是將捕獲到的包聚集,以TCP狀態(tài)機(jī)或超時(shí)300s作為創(chuàng)建連接的結(jié)束標(biāo)志,實(shí)驗(yàn)中使用argus開(kāi)源工具進(jìn)行測(cè)試。
在創(chuàng)建列表階段確定了連接的客戶(hù)端與服務(wù)器端,并根據(jù)七元組進(jìn)一步匯總連接。通過(guò)以下4個(gè)規(guī)則進(jìn)行服務(wù)器端的識(shí)別:
a. 遵守三次握手協(xié)議的TCP連接,服務(wù)器端用來(lái)接收SYN包或發(fā)送SYN/ACK包。
b. 適用于1 024以下的端口,主機(jī)使用其作為服務(wù)器端。在一個(gè)活動(dòng)的FTP會(huì)話中,數(shù)據(jù)連接的發(fā)送端為服務(wù)器,并使用20端口作為服務(wù)端口。
c. 啟發(fā)式。如果一臺(tái)主機(jī)在多次連接中重復(fù)使用相同的協(xié)議和端口,那么這個(gè)主機(jī)就作為服務(wù)器。其依賴(lài)于客戶(hù)端端口在連接中都不具有重復(fù)性,此方式將未被分類(lèi)為a與b的連接保存在內(nèi)存中,下次帶有相同的主機(jī)地址、協(xié)議和端口被檢測(cè),這潛在無(wú)限延遲了數(shù)據(jù)分析。可以使用在線超時(shí)機(jī)制,當(dāng)超時(shí)機(jī)制啟動(dòng)后,這個(gè)連接將被劃分為d類(lèi)。此處的離線機(jī)制使用了無(wú)限超時(shí)的概念。
d. 對(duì)于不符合以上3個(gè)規(guī)則的連接都?xì)w為此類(lèi)。
假設(shè)在SCADA網(wǎng)絡(luò)系統(tǒng)中,符合以上3個(gè)規(guī)則傳輸端口與IP協(xié)議的配對(duì)在服務(wù)器中都有唯一的服務(wù)與之對(duì)應(yīng),但這對(duì)于使用動(dòng)態(tài)端口分配(如微軟的活動(dòng)目錄)的網(wǎng)絡(luò)服務(wù)是有不確定性的[4]。在動(dòng)態(tài)端口分配服務(wù)中,高于1 024以上的端口為遠(yuǎn)程過(guò)程調(diào)用所動(dòng)態(tài)分配的[7]。
學(xué)習(xí)階段的目標(biāo)是在一段時(shí)間內(nèi)通過(guò)網(wǎng)絡(luò)流量的收集,自動(dòng)建立并初始化白名單。在學(xué)習(xí)階段有兩種情形:所有的數(shù)據(jù)流都是合法的;大部分的數(shù)據(jù)流都是合法的。第一種情況是可行的,事實(shí)上在初始情況下,并沒(méi)有來(lái)自網(wǎng)絡(luò)上的攻擊。第二種情況是基于SCADA網(wǎng)絡(luò)上的大部分?jǐn)?shù)據(jù)流是自動(dòng)匹配的,即會(huì)出現(xiàn)重復(fù)的現(xiàn)象。學(xué)習(xí)階段是對(duì)所有合法的數(shù)據(jù)流進(jìn)行統(tǒng)計(jì),但有時(shí)難免(如手動(dòng)修改可編程邏輯控制器(PLCs)的設(shè)置時(shí))有相關(guān)的信息流將不會(huì)出現(xiàn)在白名單中。在這種情況下,管理員可以通過(guò)檢測(cè)階段來(lái)增添白名單。
檢測(cè)階段使用在學(xué)習(xí)階段所創(chuàng)建的白名單去識(shí)別非法流。如果與白名單相匹配,則正常運(yùn)行,否則會(huì)產(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ò)中的有效性,筆者通過(guò)3個(gè)不同的實(shí)驗(yàn)分別進(jìn)行驗(yàn)證。第一個(gè)實(shí)驗(yàn)是在網(wǎng)絡(luò)中通過(guò)比較完整的白名單大小與主機(jī)通信對(duì)數(shù),來(lái)驗(yàn)證白名單是否可控;第二個(gè)實(shí)驗(yàn)證明了理想的學(xué)習(xí)時(shí)間;第三個(gè)實(shí)驗(yàn)是針對(duì)數(shù)據(jù)集生成的報(bào)警分類(lèi)。
在某兩個(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)場(chǎng)子網(wǎng)(Oil_2_field)中執(zhí)行;一個(gè)在控制子網(wǎng)(Oil_2_control)中執(zhí)行,由不同功能的服務(wù)(輪詢(xún)PLCs、歷史數(shù)據(jù)庫(kù)和執(zhí)行訪問(wèn)控制)和人機(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è)特性是通過(guò)延長(zhǎng)每個(gè)跟蹤包的學(xué)習(xí)時(shí)間與計(jì)算符合的數(shù)據(jù)流數(shù)量進(jìn)行測(cè)試的。假設(shè)在數(shù)據(jù)集中沒(méi)有發(fā)現(xiàn)攻擊行為,這可根據(jù)完整跟蹤來(lái)判斷白名單的大小。表1為每個(gè)數(shù)據(jù)集的白名單大小,表中內(nèi)部主機(jī)列為在實(shí)驗(yàn)網(wǎng)絡(luò)中符合條件的主機(jī)數(shù),主機(jī)對(duì)列為所通信的主機(jī)對(duì)數(shù)。

表1 數(shù)據(jù)集的白名單
為了區(qū)別不同的跟蹤,使用絕對(duì)值與系數(shù)作為內(nèi)部主機(jī)數(shù)。大部分情況下,SCADA網(wǎng)絡(luò)數(shù)據(jù)集的白名單大小與相應(yīng)的內(nèi)部主機(jī)數(shù)有相同的級(jí)數(shù),表明白名單流在這些環(huán)境中是可行的。另一個(gè)不同的是,主機(jī)對(duì)與白名單比例并不太大,即平均每個(gè)服務(wù)器提供1~2個(gè)服務(wù),意味著一個(gè)不包含服務(wù)信息的白名單具有較少的限制性并相當(dāng)?shù)牟话踩诖笮∩弦蚕嗖畈欢唷?duì)于結(jié)果的唯一例外就是Oil_2_control數(shù)據(jù)集有一個(gè)在級(jí)數(shù)上大于通信主機(jī)對(duì)數(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ì)中白名單都沒(méi)有增加,第三天也沒(méi)增加。作為觀察結(jié)果,在后續(xù)實(shí)驗(yàn)中將學(xué)習(xí)時(shí)間設(shè)置為1天。
本次實(shí)驗(yàn)以白名單中不穩(wěn)定來(lái)源作為切入點(diǎn),特別是在學(xué)習(xí)階段不符合規(guī)則的數(shù)據(jù)流屬性。通過(guò)分析得到了4個(gè)主要的報(bào)警類(lèi)型:
a. DPA異常。本服務(wù)認(rèn)為在DPA情況下帶傳輸端口的一對(duì)一的映射是有問(wèn)題的。筆者并非要弄清楚所有使用動(dòng)態(tài)端口的服務(wù),但是發(fā)現(xiàn)了通過(guò)DPA所觸發(fā)的異常。Oil_2_control有一些TCP連接的實(shí)例,由相同主機(jī)產(chǎn)生的一些TCP連接,傳輸端口號(hào)幾乎在客戶(hù)與服務(wù)器端沒(méi)有增長(zhǎng)。表2為部分實(shí)例。
b. 手工行為。由人為觸發(fā),所有帶有以下協(xié)議和端口號(hào)信息的服務(wù)都可歸到此類(lèi)——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ù)流的客戶(hù)端是操作員工作站,則被視為手工行為。
c. 新主機(jī)。此級(jí)別包含了所有在學(xué)習(xí)階段沒(méi)有進(jìn)行通信的數(shù)據(jù)流,可以為服務(wù)器或者客戶(hù)端,因此不會(huì)出現(xiàn)在白名單中。
d. 其他。包含了不屬于以上3種類(lèi)別的所有數(shù)據(jù)流。

表2 動(dòng)態(tài)端口分配實(shí)例
每個(gè)流都被映射到單一的類(lèi)中,且類(lèi)成員將按以上所列順序進(jìn)行測(cè)試。如客戶(hù)端使用ssh服務(wù)且沒(méi)有在白名單中所引起報(bào)警的情況,則歸為手工行為。因?yàn)槭止ば袨轭?lèi)的優(yōu)先級(jí)高于新主機(jī)類(lèi)。
在SCADA環(huán)境中為了增加可靠性,對(duì)多數(shù)網(wǎng)絡(luò)功能進(jìn)行復(fù)制是很普遍的,如對(duì)服務(wù)的復(fù)制。有兩個(gè)需要特別考慮的情況:
a. 第一個(gè)情況是一個(gè)單冗余主機(jī)在網(wǎng)絡(luò)中接管一個(gè)主要服務(wù)的任務(wù)。比較特殊的是,SCADA服務(wù)器負(fù)責(zé)對(duì)現(xiàn)場(chǎng)設(shè)備的輪詢(xún)。在改變發(fā)生前,通過(guò)telnet連接到一些PLCs執(zhí)行重啟命令,但不是對(duì)所有的PLCs進(jìn)行telnet傳輸。除了涉及到PLCs的數(shù)據(jù)流之外,其他生命周期較長(zhǎng)的數(shù)據(jù)流也具有相同的行為,如一些ssh數(shù)據(jù)流也會(huì)“交換”到冗余主機(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)。通過(guò)telnet命令執(zhí)行這種地址的改變,但并不是對(duì)所有主機(jī)。通過(guò)驗(yàn)證主機(jī)(客戶(hù)端或服務(wù)器端)在通信中是否為新建網(wǎng)絡(luò)的一部分,來(lái)識(shí)別符合此情況的數(shù)據(jù)流,而telnet連接常被作為手工行為。
白名單對(duì)于減少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é)果表明,超過(guò)50%的符合網(wǎng)絡(luò)數(shù)據(jù)流都可在一天內(nèi)的測(cè)試中被檢測(cè)到。使用動(dòng)態(tài)端口分配的服務(wù)是產(chǎn)生報(bào)警的主要原因,這些警報(bào)可通過(guò)添加被服務(wù)所分配的全部端口到白名單中來(lái)消除或?qū)⑵鋸木W(wǎng)絡(luò)中移除。其余的報(bào)警在實(shí)際網(wǎng)絡(luò)環(huán)境中,大部分是由于白名單策略的限制所引起的,這方面可以通過(guò)網(wǎng)絡(luò)管理員或者SCADA提供商通過(guò)對(duì)白名單的優(yōu)化來(lái)改善。
未來(lái)的工作將對(duì)用戶(hù)接口進(jìn)行開(kāi)發(fā),從而通過(guò)提供對(duì)警報(bào)更詳細(xì)信息的接口來(lái)幫助白名單的建立與改進(jìn)操作。另外,也需要嘗試通過(guò)識(shí)別侵入意圖來(lái)增強(qiáng)SCADA網(wǎng)絡(luò)的安全性,并且進(jìn)一步對(duì)警報(bào)頻率的分布進(jìn)行分析。
[1] 饒志宏,蘭昆,蒲石.工業(yè)SCADA系統(tǒng)信息安全技術(shù)[M].北京:國(guó)防工業(yè)出版社,2014.
[2] 魏旻,王平,王泉.工業(yè)無(wú)線控制網(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.