魏國(guó)柱 賴滇 胡德勇 孔潤(rùn) 楊仕榮
摘? ?要:本文結(jié)合經(jīng)典的中間人網(wǎng)絡(luò)攻擊方式與工業(yè)控制系統(tǒng)中常用的Modbus協(xié)議在現(xiàn)實(shí)應(yīng)用場(chǎng)景中的網(wǎng)絡(luò)狀況,介紹了在利用ARP協(xié)議實(shí)施MAC地址欺騙的前提下,實(shí)現(xiàn)針對(duì)Modbus TCP協(xié)議數(shù)據(jù)傳輸與控制的有效攻擊的技術(shù)方法以及實(shí)現(xiàn)流程,對(duì)于結(jié)合傳統(tǒng)網(wǎng)絡(luò)安全技術(shù)與現(xiàn)代工業(yè)控制系統(tǒng)特點(diǎn),實(shí)現(xiàn)工業(yè)控制系統(tǒng)安全有很好的借鑒意義。
關(guān)鍵詞:工業(yè)控制系統(tǒng);中間人攻擊;ARP欺騙;Modbus TCP協(xié)議
中圖分類號(hào):? TM921.5? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?DOI:10.12296/j.2096-3475.2021.07.087
一 、引言
工業(yè)控制系統(tǒng)(ICS)是指用于操作、控制、輔助控制自動(dòng)化工業(yè)生產(chǎn)過(guò)程的設(shè)備、系統(tǒng)、網(wǎng)絡(luò)以及控制器的集合[1]。近年來(lái),工業(yè)控制系統(tǒng)向“互聯(lián)網(wǎng)化”不斷推進(jìn),其從孤立封閉的系統(tǒng)發(fā)展為開(kāi)放交互的標(biāo)準(zhǔn)系統(tǒng),致使工控系統(tǒng)信息安全風(fēng)險(xiǎn)日益增加。工業(yè)控制網(wǎng)絡(luò)不再獨(dú)立與封閉,越來(lái)越開(kāi)放和互聯(lián),廣泛地采用接口技術(shù),實(shí)現(xiàn)數(shù)據(jù)的交互,其所面臨的安全風(fēng)險(xiǎn)也已由內(nèi)部擴(kuò)展到外部,工業(yè)控制系統(tǒng)的網(wǎng)絡(luò)安全形勢(shì)日益嚴(yán)峻。
在此種大形勢(shì)下,電力系統(tǒng)作為工業(yè)控制系統(tǒng)中最為重要的領(lǐng)域之一,維護(hù)電力工業(yè)控制網(wǎng)絡(luò)系統(tǒng)(簡(jiǎn)稱電力網(wǎng)絡(luò))的安全性,也就成為工業(yè)控制系統(tǒng)網(wǎng)絡(luò)安全測(cè)試的關(guān)鍵領(lǐng)域。Modbus協(xié)議是電力工控行業(yè)最常見(jiàn)的協(xié)議之一,針對(duì)Modbus協(xié)議開(kāi)展攻擊技術(shù)測(cè)試研究,對(duì)于加強(qiáng)電力工控行業(yè)的安全性具有很好的示范意義。
而在現(xiàn)實(shí)場(chǎng)景中,攻擊者往往難以直接接觸到電力工控設(shè)備,無(wú)法直接對(duì)設(shè)備開(kāi)展漏洞攻擊或協(xié)議攻擊,在此類場(chǎng)景下,如何在安全測(cè)試者掌握較少的網(wǎng)絡(luò)權(quán)限環(huán)境,探索開(kāi)展遠(yuǎn)程安全測(cè)試技術(shù)的技術(shù)方法,實(shí)現(xiàn)對(duì)電力設(shè)備的攻擊測(cè)試,本文著重探討了在基于工業(yè)控制協(xié)議Modbus TCP通信條件下,處于網(wǎng)絡(luò)中間人攻擊位置下,利用ARP欺騙開(kāi)展工控協(xié)議內(nèi)容篡改的原理與技術(shù)實(shí)現(xiàn),并設(shè)計(jì)了試驗(yàn)環(huán)境與系統(tǒng)來(lái)測(cè)試實(shí)現(xiàn)了攻擊過(guò)程。
二、 Modbus TCP協(xié)議
Modbus協(xié)議1978年由施耐德制定,是應(yīng)用于電子控制器上的一種通用語(yǔ)言,用以實(shí)現(xiàn)控制器相互之間、控制器經(jīng)由網(wǎng)絡(luò)(例如以太網(wǎng))和其它設(shè)備之間的通信,支持傳統(tǒng)的 RS-232-/422/485設(shè)備和以太網(wǎng)設(shè)備。到1996 年施耐德公司推出了基于TCP/IP的Modbus協(xié)議即Modbus TCP協(xié)議,該協(xié)議成本低廉,適用于各種應(yīng)用的解決方案,是一種高效的控制方案解決標(biāo)準(zhǔn),已成為自動(dòng)化設(shè)備最廣泛支持的協(xié)議[2]。作為工業(yè)控制領(lǐng)域常用的通信協(xié)議Modbus,在工業(yè)控制領(lǐng)域顯示了巨大的影響力,由于其簡(jiǎn)單而精致的結(jié)構(gòu),在電力系統(tǒng)中也得到了廣泛的應(yīng)用[3]。
Modbus TCP協(xié)議屬于Modbus協(xié)議的一種,標(biāo)準(zhǔn)的Modbus協(xié)議的報(bào)文(或幀)的基本格式是:表頭 + 功能碼 + 數(shù)據(jù)區(qū) + 校驗(yàn)碼,校驗(yàn)碼的存在主要是為了確保Modbus協(xié)議數(shù)據(jù)傳輸?shù)陌踩煽?,而在Modbus TCP中,這種保障由TCP/IP協(xié)議本身的安全校驗(yàn)機(jī)制就可以完成,因此Modbus TCP去掉了CRC校驗(yàn)的部分,其數(shù)據(jù)幀可分為兩部分:ADU=MBAP+PDU = MBAP + 功能碼 + 數(shù)據(jù)域,MBAP? 7byte,功能碼1byte,數(shù)據(jù)域不確定,由具體功能決定。
由此可以看出,Modbus協(xié)議本身在傳輸中的安全校驗(yàn)主要依托于TCP/IP協(xié)議本身,而TCP/IP的校驗(yàn)和機(jī)制都是公開(kāi)的,任何掌握TCP之上的應(yīng)用層協(xié)議內(nèi)容的發(fā)送方,都可以構(gòu)造符合校驗(yàn)機(jī)制的TCP/IP數(shù)據(jù)包傳送給接收方,從而使得攻擊者在劫持?jǐn)?shù)據(jù)后的偽造封裝變得沒(méi)有困難。
三、 中間人攻擊
中間人攻擊(Man-in-the-Middle Attack)是一種“間接”的入侵攻擊,這種攻擊模式是通過(guò)各種技術(shù)手段將受入侵者控制的一臺(tái)計(jì)算機(jī)虛擬放置在網(wǎng)絡(luò)連接中的兩臺(tái)通信計(jì)算機(jī)之間,這臺(tái)計(jì)算機(jī)就稱為“中間人”。
隨著計(jì)算機(jī)通信網(wǎng)技術(shù)的不斷發(fā)展,中間人攻擊也越來(lái)越多樣化。最初,攻擊者只要將網(wǎng)卡設(shè)為混雜模式,偽裝成代理服務(wù)器監(jiān)聽(tīng)特定的流量就可以實(shí)現(xiàn)攻擊,這是因?yàn)楹芏嗤ㄐ艆f(xié)議都是以明文來(lái)進(jìn)行傳輸?shù)?,如HTTP、FTP、Telnet等。后來(lái),隨著交換機(jī)代替集線器,簡(jiǎn)單的嗅探攻擊已經(jīng)不能成功,必須先進(jìn)行ARP欺騙才行。
ARP欺騙的核心就是向被攻擊者發(fā)送偽造的IP-MAC映射。假設(shè)主機(jī)C為實(shí)施ARP欺騙的攻擊者,其目的是截獲主機(jī)B和主機(jī)A之間的通信數(shù)據(jù)。C先向B發(fā)送ARP應(yīng)答包,其中源IP地址為A的IP地址,但是源MAC地址卻是主機(jī)C的MAC地址。主機(jī)B收到該ARP應(yīng)答后,將根據(jù)新的IP地址與MAC映射對(duì)更新ARP緩存。這以后當(dāng)B給A發(fā)送數(shù)據(jù)包時(shí),目標(biāo)MAC地址將使用C的MAC地址,因此交換機(jī)根據(jù)C的MAC地址就將數(shù)據(jù)包轉(zhuǎn)發(fā)到攻擊者C所在的端口。同理,攻擊者C發(fā)送ARP應(yīng)答使主機(jī)A確信主機(jī)B的MAC地址為C的MAC地址。在間歇的發(fā)送虛假ARP應(yīng)答的同時(shí),攻擊者C將被劫持的數(shù)據(jù)包轉(zhuǎn)發(fā)到正確的目的主機(jī),這時(shí)攻擊者對(duì)主機(jī)A和B來(lái)說(shuō)是完全透明的,通信不會(huì)出現(xiàn)異常,但實(shí)際上數(shù)據(jù)包卻被C非法截獲,攻擊者C成為了“中間人”[4]。
四、攻擊系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
1.實(shí)驗(yàn)環(huán)境設(shè)計(jì)
考慮到實(shí)現(xiàn)中間人環(huán)境的網(wǎng)絡(luò)目標(biāo)環(huán)境,簡(jiǎn)化相關(guān)的工控系統(tǒng)與環(huán)節(jié),設(shè)置一臺(tái)PC機(jī)作為工業(yè)控制上位機(jī),一臺(tái)使用Modbus TCP協(xié)議通信的工業(yè)控制設(shè)備,中間用一個(gè)交換機(jī)作為網(wǎng)絡(luò)連接設(shè)備,一臺(tái)接入同一交換機(jī)下的PC機(jī)作為攻擊機(jī)。試驗(yàn)環(huán)境如下圖所示:
2.試驗(yàn)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
(1)系統(tǒng)總體結(jié)構(gòu)
由于對(duì)上位機(jī)和PLC之間的通信進(jìn)行劫持攻擊,為了便于測(cè)試開(kāi)展,測(cè)試系統(tǒng)設(shè)計(jì)了用戶可配置輸入的接口,便于在不同的定制化環(huán)境下開(kāi)展測(cè)試研究,同時(shí)綜合利用Winpcap底層驅(qū)動(dòng)庫(kù)進(jìn)行底層抓包和發(fā)包,通過(guò)ARP協(xié)議包偽造欺騙和TCP/IP數(shù)據(jù)重定向分析兩個(gè)線程的處理,一方面將上位機(jī)和PLC之間的通信劫持到攻擊機(jī),一方面對(duì)TCP/IP以及封裝在TCP/IP之上的Modbus協(xié)議進(jìn)行修改重組,完成對(duì)上位機(jī)和PLC組成的電力工控系統(tǒng)的攻擊測(cè)試,系統(tǒng)總體結(jié)構(gòu)如圖2所示:
用戶通過(guò)配置輸入解析獲取外部給予的IP地址、MAC地址、協(xié)議類型等各種參數(shù)配置,在此配置下,綁定相應(yīng)目標(biāo)機(jī)網(wǎng)卡,進(jìn)行數(shù)據(jù)劫持。其中底層數(shù)據(jù)包的捕獲依賴于Winpcap底層的NDIS動(dòng)態(tài)庫(kù),通過(guò)底層的包過(guò)濾驅(qū)動(dòng)程序?qū)⑾鄳?yīng)的數(shù)據(jù)包過(guò)濾抓取到本地緩沖區(qū)后,軟件利用網(wǎng)絡(luò)數(shù)據(jù)抓包接口進(jìn)行以太網(wǎng)數(shù)據(jù)的抓包分析,同時(shí)利用Winpcap底層的網(wǎng)絡(luò)數(shù)據(jù)發(fā)送接口,通過(guò)偽造ARP協(xié)議包并向目標(biāo)進(jìn)行發(fā)送,完成ARP協(xié)議欺騙的效果,綜合利用抓取欺騙過(guò)來(lái)的數(shù)據(jù)包的轉(zhuǎn)發(fā),實(shí)現(xiàn)TCP/IP數(shù)據(jù)重定向,將目標(biāo)機(jī)與工業(yè)控控設(shè)備之間的數(shù)據(jù)重定向到本地進(jìn)行轉(zhuǎn)發(fā),實(shí)現(xiàn)數(shù)據(jù)的劫持。在此之上,對(duì)TCP/IP協(xié)議之上的Modbus協(xié)議規(guī)格進(jìn)行分析,從而對(duì)符合條件的數(shù)據(jù)進(jìn)行修改替換。整個(gè)系統(tǒng)按以上設(shè)計(jì)可以分為主程序、ARP欺騙模塊和數(shù)據(jù)分析處理模塊三個(gè)主要部分。
(2)系統(tǒng)主程序流程
首先對(duì)軟件中使用的部分變量參數(shù)進(jìn)行預(yù)設(shè)置與準(zhǔn)備工作,然后通過(guò)處理輸入?yún)?shù)獲得外部指定設(shè)置的參數(shù),包括發(fā)起攻擊的IP和MAC(即本機(jī))、目標(biāo)IP和MAC(即上位機(jī))、網(wǎng)關(guān)IP和MAC(即工控設(shè)備)以及IEC104協(xié)議的端口號(hào)、協(xié)議種類(遙信/遙測(cè))、地址點(diǎn)位、替換數(shù)值等。而后測(cè)試網(wǎng)卡是否能夠正常打開(kāi)、設(shè)置混雜模式并創(chuàng)建ARP欺騙處理接口線程和數(shù)據(jù)劫持修改處理接口線程,最后在線程出錯(cuò)退出的情況下,釋放網(wǎng)卡等相關(guān)資源。
(3) ARP欺騙流程
流程如圖所示,先對(duì)ARP欺騙中使用的部分變量參數(shù)進(jìn)行預(yù)設(shè)置與初始化準(zhǔn)備工作,然后通過(guò)死循環(huán)判定:欺騙數(shù)據(jù)包是否發(fā)送足夠多次,若是則結(jié)束ARP欺騙流程,否則判斷是否已接到外部停止欺騙信號(hào),若是則結(jié)束ARP欺騙流程,否則修改ARP數(shù)據(jù)包MAC地址欺騙網(wǎng)關(guān)攻擊機(jī)為目標(biāo)機(jī),并向網(wǎng)關(guān)發(fā)送修改后的ARP數(shù)據(jù)包,然后判斷發(fā)送數(shù)據(jù)包是否出錯(cuò),若出錯(cuò)則打印出錯(cuò)信息并退出ARP欺騙,否則修改ARP數(shù)據(jù)包MAC地址欺騙目標(biāo)機(jī)攻擊機(jī)為網(wǎng)關(guān),并向目標(biāo)機(jī)發(fā)送修改后的ARP數(shù)據(jù)包,然后判斷發(fā)送數(shù)據(jù)包是否出錯(cuò),若出錯(cuò)則打印出錯(cuò)信息并退出ARP欺騙,否則返回死循環(huán)之初開(kāi)始判斷發(fā)送欺騙包次數(shù),完成整個(gè)欺騙流程。
(4) 數(shù)據(jù)分析處理流程
用戶通過(guò)配置輸入解析獲取外部給予的IP地址、MAC地址、協(xié)議類型等各種參數(shù)配置,在此配置下,綁定相應(yīng)目標(biāo)機(jī)網(wǎng)卡,進(jìn)行數(shù)據(jù)劫持。其中底層數(shù)據(jù)包的捕獲依賴于Winpcap底層的NDIS動(dòng)態(tài)庫(kù),通過(guò)底層的包過(guò)濾驅(qū)動(dòng)程序?qū)⑾鄳?yīng)的數(shù)據(jù)包過(guò)濾抓取到本地緩沖區(qū)后,軟件利用網(wǎng)絡(luò)數(shù)據(jù)抓包接口進(jìn)行以太網(wǎng)數(shù)據(jù)的抓包分析,同時(shí)利用Winpcap底層的網(wǎng)絡(luò)數(shù)據(jù)發(fā)送接口,通過(guò)偽造ARP協(xié)議包并向目標(biāo)進(jìn)行發(fā)送,完成ARP協(xié)議欺騙的效果,綜合利用抓取欺騙過(guò)來(lái)的數(shù)據(jù)包的轉(zhuǎn)發(fā),實(shí)現(xiàn)TCP/IP數(shù)據(jù)重定向,將目標(biāo)機(jī)與工業(yè)控控設(shè)備之間的數(shù)據(jù)重定向到本地進(jìn)行轉(zhuǎn)發(fā),實(shí)現(xiàn)數(shù)據(jù)的劫持。在此之上,對(duì)TCP/IP協(xié)議之上的Modbus協(xié)議規(guī)格進(jìn)行分析,從而對(duì)符合條件的數(shù)據(jù)進(jìn)行修改替換。
(5) 試驗(yàn)結(jié)果
為了驗(yàn)證上述軟件的正常運(yùn)行,研究人員針對(duì)IP地址為192.168.1.11的Modbus TCP工控通信機(jī)和IP地址為192.168.1.100的上位機(jī)之間的通信數(shù)據(jù)進(jìn)行了劫持,將原本回應(yīng)給上位機(jī)的數(shù)據(jù)包最后一位0xf9改為0x08,即實(shí)現(xiàn)了將開(kāi)關(guān)線圈狀態(tài)True修改為False。
五、結(jié)語(yǔ)
本文通過(guò)研究中間人攻擊技術(shù)以及Modbus協(xié)議特點(diǎn),針對(duì)電力工控環(huán)境下的Modbus TCP協(xié)議傳輸條件下,攻擊者位于上位機(jī)和電力設(shè)備網(wǎng)絡(luò)之間的場(chǎng)景,提出了針對(duì)上位機(jī)和電力工控設(shè)備之間的Modbus TCP協(xié)議傳輸進(jìn)行數(shù)據(jù)劫持篡改的攻擊測(cè)試思路,并構(gòu)建了模擬的試驗(yàn)環(huán)境網(wǎng)絡(luò),利用Winpcap作為底層網(wǎng)絡(luò)數(shù)據(jù)捕獲和偽造支撐基礎(chǔ),設(shè)計(jì)程序流程并編程實(shí)現(xiàn)了針對(duì)Modbus TCP協(xié)議的ARP欺騙劫持攻擊測(cè)試流程,從實(shí)踐結(jié)果看,效果良好,從研究和測(cè)試實(shí)踐結(jié)果來(lái)看,Modbus TCP協(xié)議在傳輸中由于缺少身份認(rèn)證等安全機(jī)制,易使系統(tǒng)遭受ARP欺騙攻擊。
參考文獻(xiàn):
[1]Wilhiot K.Whos really attacking your ICS equipment[R].Silicon Valley:Trend Micro Incorporated,2013
[2]鄧欣茹,丁建興,楊翼,邢建春.Modbus/Tcp工業(yè)以太網(wǎng)的現(xiàn)狀與發(fā)展[J].工業(yè)控制計(jì)算機(jī),2004年第9期,14-16
[3]張海源,任春梅,張冉.Modbus協(xié)議在電力系統(tǒng)中的應(yīng)用[J].繼電器,2007年第35卷17期,31-34
[4]楊萍,李杰.基于ARP欺騙的中間人攻擊的分析與研究[J].計(jì)算機(jī)時(shí)代,2007年第5期,26-27
基金項(xiàng)目:四川省科技計(jì)劃項(xiàng)目資助(2020YFG0202)“基于電力網(wǎng)絡(luò)高性能推演的攻防輔助平臺(tái)”
(成都錦江電子系統(tǒng)工程有限公司? 四川成都? 610051)