國電南京自動化股份有限公司 曾亞恒
隨著智能電網(wǎng)技術(shù)的飛速發(fā)展,站內(nèi)的網(wǎng)絡(luò)規(guī)模日趨龐大,智能變電站的網(wǎng)絡(luò)化提升了站內(nèi)運維的便捷性,提供了站內(nèi)設(shè)備的數(shù)據(jù)共享,但同時也給變電站的運行可靠性和安全性帶來了風(fēng)險,其中影響最為嚴重的就是網(wǎng)絡(luò)風(fēng)暴。網(wǎng)絡(luò)風(fēng)暴不僅會引起網(wǎng)絡(luò)癱瘓,系統(tǒng)大規(guī)模斷網(wǎng),還會嚴重沖擊站內(nèi)組網(wǎng)設(shè)備和繼電保護裝置,大量占用設(shè)備內(nèi)存資源,造成程序死機或重啟,使智能變電站的運行存在安全隱患。因此,研究網(wǎng)絡(luò)風(fēng)暴產(chǎn)生的原因、測試智能變電站的抗風(fēng)暴能力就顯得極其重要。
交換機自環(huán)。由于管理疏忽或人為操作失誤,網(wǎng)絡(luò)交換機上網(wǎng)口之間出現(xiàn)了自環(huán),數(shù)據(jù)報文在網(wǎng)絡(luò)中被重復(fù)轉(zhuǎn)發(fā),造成網(wǎng)絡(luò)風(fēng)暴[1];組網(wǎng)設(shè)備損壞或二次設(shè)備程序缺陷。比如將數(shù)據(jù)報文寫入緩沖區(qū),不間斷地發(fā)送出錯的數(shù)據(jù)包,造成網(wǎng)絡(luò)癱瘓[1],出現(xiàn)了網(wǎng)絡(luò)風(fēng)暴;同一時刻出現(xiàn)多個故障點。
當電力系統(tǒng)中由于某些原因發(fā)生多處故障點時,多個繼電保護裝置接連動作切除故障,網(wǎng)絡(luò)中傳送大量的信息,網(wǎng)絡(luò)設(shè)備和繼電保護裝置需要同時處理和轉(zhuǎn)發(fā)批量的數(shù)據(jù)報文,由于負荷較重造成網(wǎng)絡(luò)阻塞[2],可能引起網(wǎng)絡(luò)風(fēng)暴;站內(nèi)網(wǎng)絡(luò)被攻擊。
由于防火墻被攻破,導(dǎo)致站內(nèi)的網(wǎng)絡(luò)設(shè)備和二次設(shè)備受到網(wǎng)絡(luò)攻擊,常見的如拒絕服務(wù)攻擊、即常說的DoS(Deny of Service),會導(dǎo)致對通訊設(shè)備正常使用或管理被無條件地中斷。
SYN Flood。利用TCP協(xié)議缺陷發(fā)送了大量偽造的TCP連接請求,使得被攻擊方資源耗盡,無法及時回應(yīng)或處理正常的服務(wù)請求。一個正常的TCP連接需三次握手,首先客戶端發(fā)送一個包含SYN標志的數(shù)據(jù)包,其后服務(wù)器返回一個SYN/ACK的應(yīng)答包,表示客戶端的請求被接受,最后客戶端再返回一個確認包ACK,這樣才完成TCP連接。在服務(wù)器端發(fā)送應(yīng)答包后,如客戶端不發(fā)出確認服務(wù)器會等待到超時,期間這些半連接狀態(tài)都保存在一個空間有限的緩存隊列中;如果大量的SYN包發(fā)到服務(wù)器端后沒有應(yīng)答,就會使服務(wù)器端的TCP資源迅速耗盡,導(dǎo)致正常的連接不能進入,甚至?xí)?dǎo)致服務(wù)器的系統(tǒng)崩潰。
UDP攻擊。又稱UDP洪水攻擊或UDP淹沒攻擊(UDP Flood Attack),是導(dǎo)致基于主機的服務(wù)拒絕攻擊的一種。UDP是一種無連接的協(xié)議,而且它不需要用任何程序建立連接來傳輸數(shù)據(jù)。當攻擊者隨機地向受害系統(tǒng)的端口發(fā)送UDP數(shù)據(jù)包時,就可能發(fā)生了UDP淹沒攻擊。當受害系統(tǒng)接收到一個UDP數(shù)據(jù)包時,它會確定目的端口正在等待中的應(yīng)用程序。當它發(fā)現(xiàn)該端口中并不存在正在等待的應(yīng)用程序,就會產(chǎn)生一個目的地址無法連接的ICMP數(shù)據(jù)包發(fā)送給該偽造的源地址。如果向受害者計算機端口發(fā)送了足夠多的UDP數(shù)據(jù)包時,整個系統(tǒng)就會癱瘓。
ICMP Flood攻擊。ICMP泛洪(ICMP flood)是利用ICMP報文進行攻擊的一種方法。如果攻擊者向目標主機發(fā)送大量的ICMP ECHO報文,將產(chǎn)生ICMP泛洪,目標主機會將大量的時間和資源用于處理ICMP ECHO報文,而無法處理正常的請求或響應(yīng),從而實現(xiàn)對目標主機的攻擊;Smuff攻擊。發(fā)送偽裝的ICMP數(shù)據(jù)包,目的地址設(shè)為某個網(wǎng)絡(luò)的廣播地址,源地址設(shè)為要攻擊的目的主機,使所有收到此ICMP數(shù)據(jù)包的主機都將對目的主機發(fā)出一個回應(yīng),使被攻擊主機在某一段時間內(nèi)收到成千上萬的數(shù)據(jù)包。
Ping of death。這種攻擊通過發(fā)送大于65536字節(jié)的ICMP包使系統(tǒng)崩潰,通常不可能發(fā)送大于65536個字節(jié)的ICMP包,但可以把報文分割成片段,然后在目標主機上重組,最終會導(dǎo)致被攻擊目標緩沖區(qū)溢出,引起拒絕服務(wù)攻擊;ARP泛洪攻擊。也叫拒絕服務(wù)攻擊(Denial of Service),攻擊者向設(shè)備發(fā)送大量目的IP地址無法解析的偽造ARP請求報文或免費報文,造成設(shè)備上的ARP表項溢出,無法緩存正常用戶的ARP表項,從而影響正常的報文轉(zhuǎn)發(fā)。
經(jīng)過前文對智能變電站網(wǎng)絡(luò)風(fēng)暴產(chǎn)生原因和風(fēng)暴類型的分析,結(jié)合現(xiàn)有測試手段建立智能變電站網(wǎng)絡(luò)風(fēng)暴測試環(huán)境如圖1[3]。利用網(wǎng)絡(luò)性能測試儀IXIA發(fā)送自定義的風(fēng)暴類型和攻擊流量,包括單播、組播、廣播等報文類型,測試變電站組網(wǎng)設(shè)備的抗壓能力。設(shè)計測試用例時覆蓋不同的風(fēng)暴類型、不同的攻擊流量大?。?M~100Mbps)、不同的幀長報文(64字節(jié)、512字節(jié)、1518字節(jié))。
圖1 變電站網(wǎng)絡(luò)風(fēng)暴測試系統(tǒng)結(jié)構(gòu)圖
SYN_Flood攻擊測試。保持裝置和IEC61850仿真客戶端正常通信,在原有網(wǎng)絡(luò)數(shù)據(jù)流量的基礎(chǔ)上使用網(wǎng)絡(luò)安全攻擊測試儀向裝置TCP/IP的102端口發(fā)起SYN Flood攻擊(SYN高流量攻擊),攻擊速率為1Mbps~(100Mbps-實測基礎(chǔ)流量),持續(xù)2分鐘;網(wǎng)絡(luò)攻擊持續(xù)過程中,模擬區(qū)內(nèi)外與訂閱SV報文相關(guān)的故障及與各訂閱GOOSE控制塊報文相關(guān)的故障,查看保護裝置動作情況和通信情況;網(wǎng)絡(luò)攻擊結(jié)束后,檢查客戶端與裝置連接狀態(tài),若斷開則進行重連并使能報告控制塊,觀察保護動作信號上送情況。
UDP_Flood攻擊測試。保持裝置和IEC61850仿真客戶端正常通信,在原有網(wǎng)絡(luò)數(shù)據(jù)流量的基礎(chǔ)上使用網(wǎng)絡(luò)安全攻擊測試儀向裝置UDP/IP的102端口發(fā)起UDP Flood攻擊(UDP高流量攻擊),攻擊速率為1Mbps~(100Mbps-實測基礎(chǔ)流量),持續(xù)2分鐘;ICMP_Flood攻擊測試。保持裝置和IEC61850仿真客戶端正常通信,在原有網(wǎng)絡(luò)數(shù)據(jù)流量的基礎(chǔ)上使用網(wǎng)絡(luò)安全攻擊測試儀向裝置IP發(fā)起ICMP Flood攻擊(多IP高流量的Ping攻擊),攻擊速率為1Mbps~(100Mbps-實測基礎(chǔ)流量),持續(xù)2分鐘。
Smurf攻擊測試。保持裝置和IEC61850仿真客戶端正常通信,在原有網(wǎng)絡(luò)數(shù)據(jù)流量的基礎(chǔ)上使用網(wǎng)絡(luò)安全攻擊測試儀向裝置IP發(fā)起Smurf攻擊(ECHO reply),攻擊速率為1Mbps~(100Mbps-實測基礎(chǔ)流量),持續(xù)2分鐘;ARP緩存攻擊測試。保持裝置和IEC61850仿真客戶端正常通信,在原有網(wǎng)絡(luò)數(shù)據(jù)流量的基礎(chǔ)上使用網(wǎng)絡(luò)安全攻擊測試儀向裝置發(fā)起ARP緩存攻擊,每次發(fā)送ARP應(yīng)答報文中IP地址及MAC地址均不相同,以填滿裝置ARP緩存列表空間,攻擊速率為1Mbps~(100Mbps-實測基礎(chǔ)流量),持續(xù)2分鐘。
TCP攻擊測試。保持裝置和IEC61850仿真客戶端正常通信,在原有網(wǎng)絡(luò)數(shù)據(jù)流量的基礎(chǔ)上使用網(wǎng)絡(luò)安全攻擊測試儀向裝置發(fā)起TCP攻擊,連續(xù)向裝置發(fā)送不同類型的TCP報文,如TCP分段重組報文、TCP關(guān)閉接收窗口報文或TCP類型無效報文等,攻擊速率為1Mbps~(100Mbps-實測基礎(chǔ)流量),持續(xù)2分鐘;Ping of death測試。保持裝置和IEC61850仿真客戶端正常通信,在原有網(wǎng)絡(luò)數(shù)據(jù)流量的基礎(chǔ)上使用網(wǎng)絡(luò)安全攻擊測試儀向裝置IP發(fā)起Ping of death攻擊(大于65535字節(jié)的ping ip數(shù)據(jù)包),攻擊速率為1Mbps~(100Mbps-實測基礎(chǔ)流量),持續(xù)2分鐘;異常COTP報文攻擊測試。在與裝置建立TCP連接后,將服務(wù)器響應(yīng)客戶端的報文方向發(fā)送給裝置,即向裝置發(fā)送CC類型的COTP報文給DUT,查看裝置是否出現(xiàn)異常。
異常MMS報文攻擊測試。修改正常的MMS服務(wù)請求報文的TPKT頭部中的長度字段,使其與實際長度不一致,發(fā)送給被測裝置,查看裝置是否出現(xiàn)異?,F(xiàn)象;修改正常的MMS服務(wù)請求報文的TPDU后附加一個長的隨機字符串(保證TPDU長度小于65531),發(fā)送給被測裝置,查看裝置是否出現(xiàn)異?,F(xiàn)象;修改正常的Initiate請求服務(wù)報文,將其參數(shù)置為空,發(fā)送給裝置,查看裝置是否出現(xiàn)異?,F(xiàn)象;修改正常的MM服務(wù)請求報文,包括GetDataSetValues、GetNmaeList、Read、Write、GetNamedVariableListAttributes、GetVariableAccessAttributes以及Associate服務(wù),將其報文各字段(InvorkeID,ConfirmedRequest等)主體部分修改為空或一個大的隨機字符串(保證TPDU長度小于65531字節(jié)),發(fā)送給被測裝置,查看裝置是否出現(xiàn)異?,F(xiàn)象。
本文使用的網(wǎng)絡(luò)測試儀型號為IXIA,以Smurf攻擊測試舉例[4]。設(shè)置輸出口類型:確認所連接口位置類型,進行設(shè)置;設(shè)置輸出參數(shù):協(xié)議類型、IP地址、MAC地址、攻擊流量、字節(jié)數(shù)。確認參數(shù)正確后,開始Smurf測試。通過分析智能變電站網(wǎng)絡(luò)風(fēng)暴的產(chǎn)生原因,利用網(wǎng)絡(luò)性能測試儀進行網(wǎng)絡(luò)風(fēng)暴測試用例的設(shè)計與開發(fā),目前已成功應(yīng)用于變電站網(wǎng)絡(luò)壓力和網(wǎng)絡(luò)攻擊的測試驗證工作中,在提高裝置性能和組網(wǎng)穩(wěn)定性方面發(fā)揮了重要作用。該測試系統(tǒng)的用例設(shè)計和測試方法對二次設(shè)備用例的設(shè)計具有較好的參考價值,測試智能變電站抵御各種類型網(wǎng)絡(luò)風(fēng)暴的能力,提高智能變電站運行可靠性和安全性方面有非常重要的借鑒意義。