◆丁琳
電力系統(tǒng)網(wǎng)絡(luò)中UDP端口的攻擊與防護(hù)
◆丁琳
(南京國電南自電網(wǎng)自動(dòng)化有限公司 江蘇 211100)
電力系統(tǒng)的網(wǎng)絡(luò)環(huán)境越來越復(fù)雜,網(wǎng)絡(luò)安全問題也越來越被大家所重視。本文從一次電力設(shè)備網(wǎng)絡(luò)安全自檢結(jié)果出發(fā),以nmap為例闡述了對(duì)UDP端口的攻擊原理,并基于此對(duì)UDP端口的網(wǎng)絡(luò)安全防護(hù)進(jìn)行研究,給出具體的防護(hù)要求、合理的防護(hù)方案以及在嵌入式系統(tǒng)中具有普遍意義和應(yīng)用價(jià)值的幾種實(shí)現(xiàn)方式。
電力系統(tǒng);網(wǎng)絡(luò)安全;UDP;nmap;端口攻擊;端口防護(hù)
筆者從業(yè)于電力保護(hù)行業(yè),電力系統(tǒng)作為國家關(guān)鍵基礎(chǔ)設(shè)施的重要組成部分,其安全的重要性不言而喻[1]。隨著網(wǎng)絡(luò)融合、物聯(lián)網(wǎng)、新基建等一系列建設(shè)發(fā)展要求的提出,電力系統(tǒng)的網(wǎng)絡(luò)環(huán)境越來越復(fù)雜,越來越多的信息傳輸向通用協(xié)議靠攏,基于TCP/IP協(xié)議簇實(shí)現(xiàn)。而信息傳輸?shù)谋憷殡S著安全的風(fēng)險(xiǎn),應(yīng)用通用的協(xié)議,便于設(shè)備接入和網(wǎng)絡(luò)融合,但是同時(shí)也降低了攻擊的難度,攻擊者知道網(wǎng)絡(luò)設(shè)備通信協(xié)議的實(shí)現(xiàn)細(xì)節(jié),那么就能針對(duì)這些細(xì)節(jié)進(jìn)行攻擊。而傳統(tǒng)的電力保護(hù)設(shè)備的網(wǎng)絡(luò)安全防護(hù)能力往往很弱[2],究其原因有兩點(diǎn),一點(diǎn)是傳統(tǒng)的電力保護(hù)設(shè)備在研發(fā)設(shè)計(jì)之初,由于單純封閉的網(wǎng)絡(luò)環(huán)境,往往沒有考慮網(wǎng)絡(luò)安全的問題;另一點(diǎn)是傳統(tǒng)的電力保護(hù)設(shè)備上往往應(yīng)用簡(jiǎn)化的操作系統(tǒng)甚至是不應(yīng)用操作系統(tǒng),那么本身的網(wǎng)絡(luò)功能模塊乃至網(wǎng)絡(luò)安全模塊就不完善。
隨著近年來國際上工業(yè)控制網(wǎng)絡(luò)的安全事件逐年上升[3],電力系統(tǒng)的網(wǎng)絡(luò)安全越來越被大家所重視,這一點(diǎn)也體現(xiàn)在了一次次入網(wǎng)測(cè)試中客戶對(duì)網(wǎng)絡(luò)安全越來越多越來越具體的要求上?;诰W(wǎng)絡(luò)安全的行業(yè)客觀要求以及產(chǎn)品用戶基于自己理解提出的各項(xiàng)具體要求[4],各電力系統(tǒng)設(shè)備廠家在產(chǎn)品研發(fā)的過程中,對(duì)產(chǎn)品的網(wǎng)絡(luò)安全會(huì)提前進(jìn)行自檢,而這個(gè)自檢的過程其實(shí)就是模擬攻擊,看產(chǎn)品是否能做好防護(hù)。筆者在一次產(chǎn)品自檢的過程中,發(fā)現(xiàn)對(duì)UDP端口的掃描結(jié)果存在一些爭(zhēng)議,深入研究后,得出一些結(jié)論,因此撰寫本文,以nmap為例對(duì)UDP端口的攻擊原理進(jìn)行闡述,對(duì)掃描UDP端口的結(jié)果進(jìn)行解析,并提出合理有效的防護(hù)要求和防護(hù)方案,同時(shí)給出部分具體的實(shí)現(xiàn)方式。
我們知道,在網(wǎng)絡(luò)通信協(xié)議公開通用的環(huán)境下,對(duì)網(wǎng)絡(luò)上連接的各種網(wǎng)絡(luò)設(shè)備可以進(jìn)行端口掃描,判斷出網(wǎng)絡(luò)設(shè)備開放了哪些端口,并通過對(duì)這些端口的進(jìn)一步訪問,獲取到網(wǎng)絡(luò)設(shè)備運(yùn)行的軟件系統(tǒng)、應(yīng)用服務(wù)的具體信息。收集這些信息是對(duì)網(wǎng)絡(luò)設(shè)備進(jìn)行滲透乃至攻擊的第一步,而防止這些信息的外泄也就成為對(duì)抗網(wǎng)絡(luò)攻擊保證網(wǎng)絡(luò)安全的第一步。因此我們通常把端口掃描結(jié)果作為網(wǎng)絡(luò)設(shè)備網(wǎng)絡(luò)安全性的一個(gè)重要指標(biāo)[5],端口掃描也成為我們進(jìn)行網(wǎng)絡(luò)安全自檢中的一項(xiàng)很重要的工作。目前對(duì)于tcp端口的掃描和攻擊已經(jīng)得到普遍關(guān)注和討論[6-7],因此本文僅著重討論UDP端口的掃描原理和防護(hù)策略。
我們能接觸到很多種端口掃描工具或者叫網(wǎng)絡(luò)嗅探工具,同時(shí)它們也是網(wǎng)絡(luò)審計(jì)工具,因?yàn)樗鼈兊墓δ茏屗鼈冊(cè)诰W(wǎng)絡(luò)攻擊和網(wǎng)絡(luò)防護(hù)標(biāo)準(zhǔn)驗(yàn)證上都起著作用。它們的功能大同小異,區(qū)別無非是算法的不同進(jìn)而體現(xiàn)在收集信息的能力不同,其中比較常用的一個(gè)是nmap,本文就以nmap為例來闡述對(duì)UDP端口進(jìn)行掃描攻擊的原理。
UDP協(xié)議是TCP/IP協(xié)議簇的一個(gè)子協(xié)議,詳見RCF768標(biāo)準(zhǔn)。UDP協(xié)議與TCP協(xié)議同屬于傳輸層協(xié)議,它的特點(diǎn)在于不建立連接直接傳輸數(shù)據(jù),適用于傳輸性能要求高于傳輸質(zhì)量要求的場(chǎng)合。UDP端口是UDP報(bào)文中的一個(gè)重要參數(shù),可以看作是UDP傳輸中發(fā)送方和接收方的名片。在具體的協(xié)議規(guī)定中,UDP報(bào)文使用兩個(gè)字節(jié)存放端口號(hào),因此端口號(hào)的有效范圍是從0到65535。nmap對(duì)網(wǎng)絡(luò)設(shè)備的UDP端口進(jìn)行掃描時(shí),實(shí)際上就是對(duì)特定網(wǎng)段或者特定IP的整個(gè)端口范圍進(jìn)行掃描,對(duì)所有端口發(fā)送數(shù)據(jù)內(nèi)容為空的UDP報(bào)文,然后根據(jù)收到回復(fù)報(bào)文的情況來確認(rèn)被掃描網(wǎng)絡(luò)設(shè)備UDP端口的使用情況。
由于UDP無連接傳輸?shù)奶匦?,若是端口未開啟或者端口開啟但沒有收到合理的應(yīng)用報(bào)文,UDP協(xié)議層不會(huì)給出任何回復(fù),UDP協(xié)議層只會(huì)在應(yīng)用層要求時(shí)發(fā)送報(bào)文。因此nmap的這個(gè)測(cè)試方案是不會(huì)收到UDP協(xié)議層的回復(fù)報(bào)文的。這個(gè)時(shí)候就需要提到TCP/IP協(xié)議簇的另一個(gè)子協(xié)議ICMP(Internet控制報(bào)文協(xié)議),該協(xié)議用于在IP主機(jī)之間傳遞控制消息,控制消息是指網(wǎng)絡(luò)通不通、主機(jī)是否可達(dá)、路由是否可用等網(wǎng)絡(luò)本身的消息,可以說是一個(gè)“錯(cuò)誤偵測(cè)與回報(bào)機(jī)制”,其目的就是讓我們能夠檢測(cè)網(wǎng)絡(luò)的連線狀況﹐也能確保連線的準(zhǔn)確性[8]。ICMP協(xié)議通過不同的類別(Type)與代碼(Code)來表示不同的狀況。在我們當(dāng)前討論的案例中需要著重關(guān)注的是“端口不可達(dá)”類型,此時(shí)Type=3,Code=3。如果我們系統(tǒng)中的對(duì)應(yīng)端口沒有開放,則在接收到nmap發(fā)出的空的UDP報(bào)文時(shí),ICMP協(xié)議就會(huì)回復(fù)這個(gè)“端口不可達(dá)”報(bào)文。
nmap判斷端口的狀態(tài)有open、close、filtered三種,在收到合法回復(fù)報(bào)文時(shí),會(huì)判斷端口為open狀態(tài),并繼續(xù)進(jìn)行進(jìn)一步的嗅探,獲取端口服務(wù)類型、版本等具體信息;在收到ICMP“端口不可達(dá)”報(bào)文時(shí),會(huì)認(rèn)為該端口是close的,不再進(jìn)行進(jìn)一步的攻擊試探;在收到其它“不可到達(dá)”類型ICMP報(bào)文時(shí),會(huì)認(rèn)為該端口報(bào)文被過濾了;沒有收到任何回復(fù)報(bào)文,則無法判斷端口狀態(tài),顯然不能認(rèn)為端口是close的,那么給出的掃描結(jié)果就會(huì)是open|filtered,就是說無法確認(rèn)端口是打開的沒回復(fù)掃描報(bào)文還是被過濾掉了。表1簡(jiǎn)單給出了nmap判斷端口狀態(tài)的準(zhǔn)則。
表1 nmap判斷端口狀態(tài)的準(zhǔn)則
筆者遇到的案例中,就是對(duì)“open|filtered”狀態(tài)的端口有爭(zhēng)議,一方面可以認(rèn)為這個(gè)端口沒有被判定“open”,不會(huì)被攻擊方獲取到進(jìn)一步的信息,算是防護(hù)成功;另一方面又可以認(rèn)為這個(gè)端口沒有被判定為“close”,是一個(gè)不確定的狀態(tài),還是有被繼續(xù)攻擊的可能性。筆者以為,第二種觀點(diǎn)更合理,只要端口沒有被判定為“close”而是以“open”、“open|filtered”甚至“filtered”的狀態(tài)在掃描結(jié)果中列出,都有可能會(huì)被繼續(xù)以其它方式進(jìn)行嗅探或者攻擊,甚至嚴(yán)格來說,被明確列出的端口信息,本身已經(jīng)是一種信息泄漏。從攻擊者的角度來看,如果有端口被他監(jiān)測(cè)到filtered或者是open|filtered,那么他知道這個(gè)端口被做了特殊處理了,即使現(xiàn)在無法攻擊這個(gè)端口,但是很明確的是,這個(gè)端口行為跟其它沒有被使用的端口不一致,這個(gè)端口很大可能是被攻擊設(shè)備正在使用或者準(zhǔn)備使用的端口。攻擊方可以結(jié)合其它的已知信息,比如市面上常用的操作系統(tǒng)可能開放的端口、第三方插件信息等,推論出被攻擊設(shè)備的信息。在這種情況下攻擊者會(huì)對(duì)這個(gè)端口進(jìn)行長(zhǎng)期監(jiān)視,或者通過其它手段來獲得端口的實(shí)際服務(wù)、訪問方式等等,最終進(jìn)行有效的攻擊。因此我們?cè)谧鯱DP端口的防護(hù)工作時(shí),要使得我們使用或者有可能使用的端口,在面對(duì)攻擊時(shí)的表現(xiàn)與其它端口完全一致,這樣才可以徹底保護(hù)設(shè)備的端口、服務(wù)、系統(tǒng)版本等具體信息。
我們?cè)谧龆丝诜雷o(hù)時(shí),最常采用的方式就是過濾,通過對(duì)某些特定端口報(bào)文進(jìn)行攔截、丟棄,來達(dá)到保護(hù)該端口的目的。而根據(jù)前面分析的攻擊原理和對(duì)安全要求的明晰,我們需要讓我們使用或者可能使用的UDP端口與其它端口行為一致,也就是讓嗅探工具判斷這個(gè)端口也是close。那么解決方案就很明確了,就是要做到兩點(diǎn):過濾發(fā)送到這個(gè)端口的報(bào)文并丟棄;返回ICMP報(bào)文表示端口不可達(dá)。要實(shí)際做到這兩點(diǎn),在不同軟件環(huán)境下的實(shí)現(xiàn)方式是不一樣的。本文給出三個(gè)常見的場(chǎng)景如下:
(1)設(shè)備有操作系統(tǒng),且操作系統(tǒng)有防火墻,且防火墻的機(jī)制做得比較好,在防火墻的規(guī)則中本身帶了可配置項(xiàng),可以通過設(shè)置防火墻的規(guī)則來實(shí)現(xiàn)過濾對(duì)應(yīng)端口接收到的報(bào)文,并且發(fā)送ICMP報(bào)文表示端口不可達(dá)。
(2)設(shè)備有操作系統(tǒng),且操作系統(tǒng)有防火墻,但是防火墻的機(jī)制比較簡(jiǎn)單,僅能夠過濾報(bào)文,不能主動(dòng)發(fā)送干擾報(bào)文,那么我們需要對(duì)防火墻模塊進(jìn)行完善,在針對(duì)UDP端口過濾報(bào)文的環(huán)節(jié)添加發(fā)送ICMP報(bào)文的操作。
(3)設(shè)備只有簡(jiǎn)單的操作系統(tǒng),沒有防火墻模塊,也就是從報(bào)文過濾到發(fā)送ICMP報(bào)文都要由開發(fā)者實(shí)現(xiàn)。這種時(shí)候有兩種實(shí)現(xiàn)方式,一種是在協(xié)議棧模塊實(shí)現(xiàn),在UDP報(bào)文處理過程中實(shí)現(xiàn)簡(jiǎn)單的防火墻功能;第二種是在鏈路層實(shí)現(xiàn),也就是在報(bào)文接收的最前端,根據(jù)TCP/IP協(xié)議對(duì)報(bào)文進(jìn)行解析,然后對(duì)目標(biāo)類型報(bào)文進(jìn)行過濾以及后續(xù)的ICMP報(bào)文發(fā)送操作。
另外筆者還遇到一類特殊的UDP端口,這種UDP端口屬于操作系統(tǒng)本身使用的核心端口,比如調(diào)試用的端口,由于調(diào)試的特殊需求,比如存在調(diào)試協(xié)議棧的可能,調(diào)試部分模塊的代碼從原理上來說就應(yīng)該獨(dú)立于協(xié)議棧,也就繞過了防火墻。某些操作系統(tǒng)針對(duì)調(diào)試用的端口會(huì)實(shí)現(xiàn)一個(gè)獨(dú)立的簡(jiǎn)化的協(xié)議層,借用協(xié)議規(guī)約,但是跟實(shí)際使用的協(xié)議層代碼相獨(dú)立。那么防火墻策略乃至協(xié)議層的處理都失效了,只能在它自有的代碼模塊或者鏈路層進(jìn)行處理。
本文由一次網(wǎng)絡(luò)安全自檢出發(fā),介紹了電力系統(tǒng)網(wǎng)絡(luò)安全要求的行業(yè)背景,以nmap為例闡述了UDP端口的攻擊原理,給出了合理的防護(hù)要求和防護(hù)方案,認(rèn)為UDP端口的防護(hù)不能止于報(bào)文過濾,并基于此給出具有普遍適用性的幾種實(shí)現(xiàn)方式。
[1]尹騫.電力行業(yè)工業(yè)控制網(wǎng)絡(luò)的運(yùn)維和安全研究[J].信息安全研究,2019.
[2]尹紅旭,呂奮飛,劉念等.網(wǎng)絡(luò)攻擊影響電力基礎(chǔ)設(shè)施的原因與實(shí)例分析[J].電力信息化,2013.
[3]郭慶來,辛蜀駿.由烏克蘭停電事件看信息能源系統(tǒng)綜合安全評(píng)估[J].電力工控系統(tǒng)自動(dòng)化,2016.
[4]全國信息安全標(biāo)準(zhǔn)化技術(shù)委員會(huì).GB/T22239-2019信息安全技術(shù)網(wǎng)絡(luò)安全等級(jí)保護(hù)基本要求[S].北京:國家標(biāo)準(zhǔn)化管理委員會(huì),2019.
[5]陳瑾.試論端口掃描與檢測(cè)技術(shù)[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2013.
[6]趙剛.端口和端口安全[J].安徽電子信息職業(yè)技術(shù)學(xué)院學(xué)報(bào),2004.
[7]武裝.網(wǎng)絡(luò)端口掃描及對(duì)策研究[J].電子技術(shù)應(yīng)用,2004.
[8]莊曉華.ICMP協(xié)議的應(yīng)用及分析[J].濟(jì)南職業(yè)學(xué)院學(xué)報(bào),2011.