李彤馨,王勇,鄒春明,田英杰,周宇昊
(1.上海電力大學,計算機科學與技術學院,上海 200120;2.公安部第三研究所,國家網(wǎng)絡與信息系統(tǒng)安全產(chǎn)品質(zhì)量監(jiān)督檢測中心,上海 200031;3.國網(wǎng)上海市電力公司,電力科學研究院,上海 200437;4.華電電力科學研究院有限公司,國家能源分布式能源技術研發(fā)(實驗)中心,浙江,杭州 310030)
工業(yè)控制系統(tǒng)一般包含監(jiān)控和數(shù)據(jù)采集系統(tǒng)(SCADA),它能控制和監(jiān)控所有相關的基礎設施,如發(fā)電廠、供水管道、電力系統(tǒng)等。針對此類系統(tǒng)的網(wǎng)絡攻擊越來越頻繁,會給我們的社會帶來不可挽回的損失。在過去,互聯(lián)網(wǎng)服務提供商在專有網(wǎng)絡上運行,與合作網(wǎng)絡(即商業(yè)網(wǎng)絡)和互聯(lián)網(wǎng)隔離。目前,它們的架構(gòu)已經(jīng)發(fā)生了變化,并在外部與商業(yè)網(wǎng)絡和互聯(lián)網(wǎng)互聯(lián)。所以現(xiàn)在更像是可以上網(wǎng)的企業(yè)局域網(wǎng)。這一變化大大增加了遭受網(wǎng)絡攻擊的可能性。
分布式網(wǎng)絡協(xié)議(DNP3)是現(xiàn)代監(jiān)控和數(shù)據(jù)采集網(wǎng)絡協(xié)議之一。DNP3是主設備和從設備之間通過各種通信介質(zhì)進行通信的雙向協(xié)議。這是一個相對可靠和有效的協(xié)議。為了實現(xiàn)更好的效率,DNP3采用了一種稱為增強性能架構(gòu)(EPA)的網(wǎng)絡層模型。EPA[1]有3個層次:物理層、數(shù)據(jù)鏈路層和應用層。為了提高可靠性,DNP3在其應用層中包含了傳輸功能。
由于DNP3在設計階段并未考慮到安全機制,因此DNP3很容易遭受到攻擊。目前常見的攻擊檢測方法主要包括防火墻、入侵檢測系統(tǒng)、蜜罐技術等。其中,防火墻主要采取端口掃描技術,具有實時處理的優(yōu)勢;入侵檢測系統(tǒng)通過先進的入侵檢測技術來保障系統(tǒng)的安全;蜜罐技術通過不同的蜜罐對攻擊數(shù)據(jù)進行捕獲。以上3種方法存在誤報率較高的問題,因此無法適應工業(yè)系統(tǒng)中的安全需求。為此,本文采用仿真的方式,搭建DNP3通信環(huán)境,配置防火墻,利用機器學習方法進行異常檢測,并證明該方案的有效性。
為了解決工業(yè)以太網(wǎng)DNP3廣播協(xié)議認證的安全問題,LU等[2]分析了可信DNP3協(xié)議的攻擊向量和安全需求。他們首先在控制網(wǎng)絡中采用可信平臺,對DNP3客戶端和服務器的身份和安全狀態(tài)進行認證,防止節(jié)點敏感信息被泄露;其次,針對廣播模式下信息安全認證機制缺失的問題,提出了一種基于哈希鏈方法的可信DNP3-BAE廣播加密協(xié)議,該新方案可以對源代碼進行加密,而無需對現(xiàn)有平臺進行重大升級,但該方法只是加強了訪問機制,而沒有對攻擊者進行限制。YIN等[3]提出了一種創(chuàng)新的基于入侵檢測系統(tǒng)的網(wǎng)絡安全解決方案,以檢測監(jiān)控和數(shù)據(jù)采集系統(tǒng)中DNP3協(xié)議的惡意活動,通過一種基于DNP3漏洞評估和不同層次攻擊模型的新方法,利用機器學習從解析的DNP3協(xié)議中選擇特征,并添加包括惡意軟件樣本在內(nèi)的數(shù)據(jù)。此外,他們還開發(fā)了一種具有分類和可視化過程的網(wǎng)絡攻擊算法,最終實驗表明,該網(wǎng)絡安全解決方案能夠在基于物聯(lián)網(wǎng)的智能電網(wǎng)通信環(huán)境中實時監(jiān)測攻擊。RODOFILE等[4]整理了已知攻擊,確定并組合了現(xiàn)有的攻擊范圍,擴展并“填補了”攻擊范圍中的空白,從而提出了一個完整的網(wǎng)絡攻擊檢測框架。該框架能感知針對整個基于監(jiān)控和數(shù)據(jù)采集系統(tǒng)的關鍵基礎設施的攻擊,但這一方法不具有代表性。因此,本文基于考慮數(shù)據(jù)的代表性問題,采用孤立森林來計算攻擊數(shù)據(jù)的“孤立”程度,越被“孤立”的樣本點則代表性越高,從而能有效分類出攻擊數(shù)據(jù)。
DNP3可通過TCP/UDP進行封裝,以便在以太網(wǎng)上運行,支持DNP3協(xié)議的從設備默認會開放TCP的20000端口用于通信。(圖1)DNP3協(xié)議在設計之初沒有考慮到安全、認證等因素,以致后來出現(xiàn)了Secure DNP3(主要加強了認證)。DNP3在主站會話上需要約定目的地址、源地址,而從設備收到后需要驗證目的地址,再進行處理,如果目的地址不相同則會根據(jù)在協(xié)議棧實現(xiàn)的處理來決定是否不響應和關閉連接,或者返回異常功能報文等。
圖1 DNP3模型[3]
DNP3是一種開放標準,可以使用多種拓撲進行部署,包括點對點(一個主站點和一個主站點或從屬站點),多點拓撲(一個或多個主站點和多個主站點)或使用系統(tǒng)布局的分層布局樹狀結(jié)構(gòu),一個外站既可以充當DNP3主站的從站,也可以充當其他站的主站。如圖1所示,DNP3消息可以映射到OSI模型的上層,并且基礎的三層,包括數(shù)據(jù)鏈路層、傳輸層和應用層。
利用仿真系統(tǒng)搭建DNP3協(xié)議的通信過程,其中主站的IP地址為192.168.79.141,從站的IP地址為192.168.79.1。如圖2所示,首先掃描主站得到目的IP后將其添加到目標1(TARGET1)上。
圖2 添加主站為目標
從圖3可以看到,主機192.168.79.1與主機192.168.79.141正在端口20000上進行基于TCP的通信,即DNP3通信協(xié)議。因此可以進行下一步的攻擊。
圖3 掃描通信過程
圖4為使用中間人攻擊后的結(jié)果。由圖4可以看出,APR中毒攻擊主要將被攻擊方分為2組:組1為192.169.79.141,即DNP3通信主站;組2為192.168.79.1,即DNP3通信從站。中間人攻擊即通過各種技術手段將受入侵者控制的1臺計算機虛擬放置在網(wǎng)絡連接中的2臺通信計算機之間,這臺計算機就稱為“中間人”。在進行中間人攻擊期間,接受的包有3540個,丟失的包有19個,丟失率達到0.54%。
圖4 攻擊結(jié)果
由此可見,DNP3通信過程容易遭受到攻擊,常見的攻擊方式歸納如下。
(1) 中間人攻擊:這種類型的攻擊可以歸類為網(wǎng)絡攻擊,是構(gòu)成對DNP3節(jié)點或網(wǎng)絡發(fā)起的大多數(shù)其他攻擊的基礎。這種攻擊通過各種技術手段,將入侵者控制的1臺計算機放置在網(wǎng)絡連接中的2臺通信計算機之間,這臺計算機就稱為“中間人”[5]。
(2) DNP3數(shù)據(jù)包修改和注入攻擊:為了操縱或修改DNP3數(shù)據(jù)包,攻擊者使用多種方法。其中包括先劫持正在進行的TCP連接(這依賴于中間人攻擊的成功),然后攔截要修改的數(shù)據(jù)包。這個被截取的包在被修改后,重新計算得出循環(huán)冗余校驗碼。在循環(huán)冗余校驗重新計算之后,使用包注入工具,便能將修改后的包重新注入通信介質(zhì)。
(3) DNP3冷重啟消息攻擊:當分站收到DNP3冷重啟請求命令,并且確認數(shù)據(jù)包來自主機時,分站在通信序列完成后執(zhí)行完全重啟。分站還將在重啟前向主機發(fā)送一個回復,告知分站可用的時間。該攻擊還會向分站發(fā)送一個名為冷重啟的命令,該命令會導致分站完全重啟。
(4) 以DNP3應用層為目標的分布式拒絕服務攻擊:拒絕服務(DoS)攻擊是一種試圖使機器或網(wǎng)絡資源對其預期用戶不可用的攻擊。例如,臨時或無限期中斷或暫停連接到網(wǎng)絡服務。這種攻擊是因為DNP3是通過TCP/IP傳輸?shù)摹J褂眠@種攻擊方法,攻擊者會向受害者的節(jié)點發(fā)送大量數(shù)據(jù)包,試圖耗盡受害者的資源。
為了增強基于DNP3通信協(xié)議過程中數(shù)據(jù)的機密性、完整性、可用性與可控性,本文提出基于此系統(tǒng)的攻擊檢測算法,為工控系統(tǒng)提供了更安全可信的環(huán)境。
數(shù)據(jù)的捕獲主要通過Pfsense與Snort入侵檢測系統(tǒng)實現(xiàn),其中Pfsense主要對連接數(shù)進行設置,成為該系統(tǒng)的第一道防線。當攻擊者發(fā)起攻擊時,攻擊數(shù)據(jù)就會流經(jīng)Pfsense防火墻,不符合所設置的規(guī)則則會被捕獲。Pfsense所捕獲的攻擊行為數(shù)據(jù)為
Xi={x1,x2,…,xn}
(1)
Snort入侵檢測系統(tǒng)則主要是對Pfsense中未檢測出來的攻擊進行檢測,Snort捕獲的數(shù)據(jù)可以表示為
YI=R-Xi={y1,y2,…,yn}
(2)
Snort檢測方法與Pfsense的類似,將捕獲數(shù)據(jù)與Snort規(guī)則庫的規(guī)則進行對比,若數(shù)據(jù)符合Snort的檢測規(guī)則,便被認定為攻擊行為,系統(tǒng)則會發(fā)出預警。
通過上述過程,實現(xiàn)對攻擊的檢測及報警。
單純使用防火墻結(jié)合Snort入侵檢測系統(tǒng)無法高效地檢測出攻擊數(shù)據(jù),因此,本文提出IFAR算法,即孤立森林結(jié)合關聯(lián)規(guī)則算法(iForest-Association Rules),對數(shù)據(jù)進行分析。首先,采用孤立森林算法[6]對數(shù)據(jù)進行分類,將其分為正常數(shù)據(jù)與異常數(shù)據(jù);然后,使用關聯(lián)規(guī)則算法,對未知攻擊的攻擊特征進行提取,生成其關聯(lián)規(guī)則,同時將生成的規(guī)則添加到Snort中,對其進行更新,以此來實現(xiàn)對攻擊的檢測。具體數(shù)據(jù)分析實現(xiàn)的過程如下。
iForest算法[6]是一種無監(jiān)督算法,適用于連續(xù)數(shù)據(jù),即不需要有標記的樣本,只需要特征是連續(xù)的。在iForest算法中,不再是描述正常的樣本點,而是要孤立異常點。該算法主要從訓練數(shù)據(jù)集中隨機選取一個特征,在該特征的最大值和最小值之間選取一個切分點,小于分割點的數(shù)據(jù)進入左側(cè)分支,大于或等于分割點的數(shù)據(jù)進入右側(cè)分支;不斷重復以上過程后,直到只剩一個樣本或相同樣本或達到樹的深度限制,然后通過路徑長度來表示一個樣本點被“孤立”的程度。算法步驟見表1。
表1 iForest算法
該算法的流程如圖5所示。
圖5 孤立森林數(shù)據(jù)分析流程圖
采用孤立森林算法對數(shù)據(jù)進行劃分,由于實驗數(shù)據(jù)量較小,故使用IGBE等[5]使用的DNP3數(shù)據(jù),其中的數(shù)據(jù)分布如表2所示。
表2 DNP3數(shù)據(jù)集異常數(shù)據(jù)分布
接著采用關聯(lián)規(guī)則算法[7]對未知攻擊進行特征提取,并生成其強關聯(lián)規(guī)則,從而提升系統(tǒng)的攻擊檢測能力。同時,所獲得的關聯(lián)規(guī)則可用于補充現(xiàn)有的規(guī)則庫。關聯(lián)規(guī)則算法的數(shù)據(jù)分析過程[7]如圖6所示。
圖6 關聯(lián)規(guī)則數(shù)據(jù)分析過程
在得到上述的強規(guī)則后,結(jié)合Snort規(guī)則對其進行轉(zhuǎn)換,將得到的強規(guī)則添加到入侵檢測系統(tǒng)中,由此來實現(xiàn)對攻擊數(shù)據(jù)的檢測。
本文首先使用DNP3通信協(xié)議分析及仿真軟件來進行通信仿真。主站搭建在配置了Windows 7系統(tǒng)的主機上,使用Outstation DNP3 Simulator部分作為DNP3通信的主站,從站搭建在配置了Windows 10系統(tǒng)的主機上,使用DMP3 Simulator作為通信從站,通過對主、從站的配置,來實現(xiàn)DNP3通信。攻擊者主機搭載的是Kali系統(tǒng),對所搭建的通信環(huán)境發(fā)起攻擊,如中間人攻擊等。利用Pfsense對整個環(huán)境進行監(jiān)控,并使用Snort進行攻擊檢測,從而完整實現(xiàn)基于DNP3的工控系統(tǒng)安全配置方案。實驗環(huán)境的網(wǎng)絡拓撲結(jié)構(gòu),如圖7所示。
圖7 實驗環(huán)境的網(wǎng)絡拓撲結(jié)構(gòu)
本文使用Ettercap來進行中間人攻擊。Ettercap是針對中級攻擊者的綜合套件。它具有實時連接嗅探、動態(tài)內(nèi)容過濾以及許多其他攻擊方式。它支持許多協(xié)議的主動和被動解剖,并包括許多用于網(wǎng)絡和主機分析的功能。
當攻擊者對該網(wǎng)絡通信主機進行攻擊時,攻擊行為會流經(jīng)防火墻,防火墻會對數(shù)據(jù)進行捕獲,而防火墻檢測到的數(shù)據(jù)則會流入入侵檢測系統(tǒng),將其與設定好的規(guī)則進行比較。若與規(guī)則匹配,則入侵檢測系統(tǒng)會發(fā)出預警。
Pfsense[8]是一個開源防火墻。它安裝在計算機上,可以作為防火墻和路由器,穩(wěn)定且可靠。它的優(yōu)勢在于可以通過Web頁面進行配置,升級和管理的方式簡單且易操作。Pfsense有多種功能,可以被部署為邊界防火墻、路由器、無線接入點、DHCP服務器、DNS服務器和VPN端點等。
Snort[9]是Martin Roesch創(chuàng)建的開源網(wǎng)絡入侵檢測系統(tǒng)(NIDS)。Snort是一種數(shù)據(jù)包嗅探器,可實時監(jiān)視網(wǎng)絡流量,并仔細檢查每個數(shù)據(jù)包以檢測危險的有效負載或可疑的異常情況。Snort基于libpcap(用于庫數(shù)據(jù)包捕獲),該工具廣泛用于TCP/IP流量嗅探器和分析器。通過協(xié)議分析以及內(nèi)容搜索和匹配,Snort可以檢測出攻擊的方式,包括拒絕服務攻擊、緩沖區(qū)溢出攻擊、CGI攻擊、隱身端口掃描和SMB探針。當檢測到可疑行為時,Snort會將實時警報發(fā)送到syslog,發(fā)出單獨的“警報”文件或彈出窗口。
Pfsense防火墻提供了數(shù)據(jù)流量查看的功能,可以查看監(jiān)控過程中不同接口下的流量變化。如圖8所示,在系統(tǒng)遭受到中間人攻擊的期間,流量變化明顯,可以看出,對目標進行攻擊會導致系統(tǒng)資源或服務的大量消耗,從而導致系統(tǒng)反應遲鈍或崩潰。對于實際系統(tǒng)而言,遭受到類似的攻擊則有可能導致機器停擺,從而造成大量人力財力的損失。
(a)
由于DNP3通信協(xié)議是基于TCP/IP協(xié)議的,數(shù)據(jù)通過以太網(wǎng)進行傳輸,因此大多數(shù)對以太網(wǎng)的攻擊都能對其造成影響,如中間人攻擊、DoS攻擊等。本文利用Pfsense結(jié)合Snort插件,搭建安全防護環(huán)境,對DNP3通信過程進行保護,該防護方案可以有效地防范各種攻擊,并能將預警信息進行告警,提高了試用DNP3通信協(xié)議進行通信的工控系統(tǒng)的安全性。
完成這一攻擊過程后,訪問 Pfsense 中的 Snort主頁,查看 alert 界面,便可以查看到此攻擊的告警信息。如圖9所示,在受到攻擊后,會顯示“有人異常連接DNP3設備”的字樣,且顯示了攻擊事件、使用的協(xié)議、源 IP、目標 IP 及受攻擊端口的信息。對于被攻擊檢測到的攻擊者,可以使用Blocked功能將其進行阻止,從而減少進一步的損失。
圖9 告警信息
為了提高防御性,算法對數(shù)據(jù)進行分析,孤立森林算法處理數(shù)據(jù)后,得到異常和非異常數(shù)據(jù)。使用關聯(lián)規(guī)則算法對異常數(shù)據(jù)進行分析,獲得強規(guī)則,并將其進行修改,以擴充Snort入侵檢測系統(tǒng)。
這一攻擊檢測算法的效率使用誤報率來衡量。在處理數(shù)據(jù)集過程中,對閾值進行限制,并對照式(3)計算檢測準確率:
(3)
所計算出來的檢測率如表2所示。當閾值取0.095時,所得到的準確率較高,而當閾值為0.075時,準確率較低。
表2 數(shù)據(jù)處理的檢測準確率
本文討論了作為智能電網(wǎng)的一部分,在監(jiān)控和數(shù)據(jù)采集系統(tǒng)中運行DNP3的各種威脅和漏洞,搭建了基于DNP3通信協(xié)議的通信系統(tǒng),并對系統(tǒng)遭受的中間人攻擊。架設了Pfsense防火墻,將Snort作為插件,實現(xiàn)攻擊檢測,在對數(shù)據(jù)的處理上使用了孤立森林算法,用來檢測異常數(shù)據(jù),再結(jié)合關聯(lián)規(guī)則算法生成異常數(shù)據(jù)的強規(guī)則,從而對Snort入侵檢測系統(tǒng)進行規(guī)則擴充,加強了工業(yè)控制系統(tǒng)的安全。下一步研究會將這一部署方案結(jié)合在數(shù)字孿生系統(tǒng)上,用來提升數(shù)字孿生系統(tǒng)的安全性。