賈 哲,李炳彰,高小涵
(1.通信網(wǎng)信息傳輸與分發(fā)技術(shù)重點實驗室,河北 石家莊 050081;2.中國電子科技集團公司第五十四研究所,河北 石家莊 050081)
自2012年我國提出首批國家級智慧城市試點建設(shè)以來,已經(jīng)有超過700多座城市在規(guī)劃或正在建設(shè)智慧城市,百姓的衣食住行、政府的管理、社會的治理、城市的運轉(zhuǎn),以及關(guān)鍵基礎(chǔ)設(shè)施的運行架構(gòu)都在網(wǎng)絡(luò)之上。隨著物聯(lián)網(wǎng)、云計算等信息技術(shù)的發(fā)展,物聯(lián)網(wǎng)與智慧城市的發(fā)展模式呈現(xiàn)多系統(tǒng)協(xié)同、跨層級控制、縱橫多點級聯(lián)等特點,關(guān)鍵信息基礎(chǔ)設(shè)施的復(fù)雜度指數(shù)級上升,安全脆弱性和安全威脅面臨多樣化、隱蔽化等巨大挑戰(zhàn)。為了解決現(xiàn)有信息系統(tǒng)外部“靜態(tài)、同質(zhì)、確定”的特點而導(dǎo)致易被探測、攻易守難等問題,欺騙防御、擬態(tài)防御等主動防御技術(shù)受到關(guān)注,通過使用騙局或假動作來阻撓或者推翻攻擊者的認(rèn)知過程,擾亂攻擊者的自動化工具,延遲或阻斷攻擊者的活動,通過使用虛假的響應(yīng)、有意的混淆,以及假動作、誤導(dǎo)等偽造信息達到“欺騙”的目的。
本文提出了一種操作系統(tǒng)指紋隱藏的欺騙防御方法。通過擾亂攻擊者對目標(biāo)主機進行指紋掃描和探測的攻擊過程,采用混淆的方法隱藏系統(tǒng)的外部特征,使系統(tǒng)展現(xiàn)給攻擊者的是一個有限甚至完全隱蔽或者錯誤的攻擊面,降低暴露給攻擊者的攻擊面,減少可被攻擊者利用的資源,使得攻擊復(fù)雜度和攻擊者代價增長,達到主動防御的目的。
近年來,網(wǎng)絡(luò)攻擊的數(shù)量和復(fù)雜性都在迅速增加[1-2],攻擊者能夠利用多種攻擊載體滲透到其目標(biāo)系統(tǒng)中。針對上述問題,研究人員提出了許多辦法來增強網(wǎng)絡(luò)和信息系統(tǒng)的安全防護能力,典型的解決方案包括入侵防護[3]、系統(tǒng)加固[4]以及高級攻擊檢測和緩解等[5]。盡管這些傳統(tǒng)的安全措施在任何安全防護手段中都必不可少,但它們大多是被動響應(yīng)攻擊者的行為,缺乏在網(wǎng)絡(luò)殺傷鏈的早期步驟中就與攻擊者進行交互的手段,導(dǎo)致防御方始終處于被動地位。
20世紀(jì)80年代末,斯托爾[6]首次討論了如何利用欺騙技術(shù)來跟蹤入侵者,以確保計算機安全,并在此基礎(chǔ)上形成了蜜罐的概念。近年來,出現(xiàn)了不少利用欺騙技術(shù)[7-9]來迷惑或誤導(dǎo)攻擊者的技術(shù)手段。網(wǎng)絡(luò)欺騙防御技術(shù)可用于保護易受攻擊的業(yè)務(wù)系統(tǒng),并因其自身的優(yōu)勢而受到安全防御人員的關(guān)注。
針對網(wǎng)絡(luò)層的欺騙防御技術(shù),對于攻擊早期階段的網(wǎng)絡(luò)指紋探測行為,開展了網(wǎng)絡(luò)指紋隱藏的欺騙防御關(guān)鍵技術(shù)研究。在攻擊殺傷鏈的偵察階段,攻擊者通過指紋探測和掃描獲得網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)和可用資產(chǎn)的信息。通過干擾偵察階段即可混淆偵察結(jié)果,例如通過錯誤響應(yīng)掃描查詢來誤導(dǎo)攻擊者,Le Malecot介紹了一種通過隨機連接跳轉(zhuǎn)和流量偽造來隨機化指紋探測的技術(shù),即通過改變目標(biāo)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),達到迷惑攻擊者的目的[10]。Trassare通過不斷暴露錯誤的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)來誤導(dǎo)攻擊者,從而擊敗traceroute探測類型的掃描[11]。Sushil等人提出通過提供真假混合的應(yīng)答來響應(yīng)攻擊者的掃描[12]。
在防范操作系統(tǒng)指紋探測的欺騙防御技術(shù)方面,和本文內(nèi)容類似的研究有文獻[13-14],通過模擬操作系統(tǒng)的多種行為特征誤導(dǎo)潛在攻擊者,達到迷惑攻擊者并延遲其進展的目標(biāo)。本文針對關(guān)鍵基礎(chǔ)設(shè)施業(yè)務(wù)主機指紋隱藏技術(shù)開展研究,結(jié)合SDN、虛擬化等新技術(shù)的應(yīng)用,構(gòu)建更加靈活高效的網(wǎng)絡(luò)系統(tǒng)特征隱藏機制,達到對攻擊者“隱真示假”、避免重要資產(chǎn)暴露的目的。
由于攻擊者在進行攻擊之前,首先要對目標(biāo)主機進行掃描,并試圖找出目標(biāo)主機操作系統(tǒng)的類型和服務(wù)軟件名稱版本,從而實施相應(yīng)的攻擊,比如主機指紋探測操作系統(tǒng)為Windows XP sp3、服務(wù)器平臺為IIS 4.0。本文針對操作系統(tǒng)指紋探測、服務(wù)軟件指紋探測兩種攻擊過程進行分析。
操作系統(tǒng)指紋探測是確定遠程主機操作系統(tǒng)身份的過程,主要是通過主動將數(shù)據(jù)包發(fā)送到遠程主機并分析響應(yīng)來完成的。操作系統(tǒng)指紋探測的工具主要有Nmap和Xprobe2等,通過獲取響應(yīng),根據(jù)已知操作系統(tǒng)的簽名數(shù)據(jù)庫查詢該指紋獲取操作系統(tǒng)信息。對于攻擊者而言,了解遠程主機上正在運行哪種操作系統(tǒng)非常有價值,因為基于漏洞的攻擊方法通常依賴于操作系統(tǒng)版本。確定主機操作系統(tǒng)的方法主要有以下三種:
① 橫幅抓取[15]:在計算機網(wǎng)絡(luò)環(huán)境中,默認(rèn)的橫幅通常包括關(guān)于一個服務(wù)的信息,例如版本號。當(dāng)使用Telnet和專有程序有意收集這些信息時,通常稱為橫幅抓取。攻擊者在尋找易受攻擊的主機時,通過與主機建立連接,然后查詢端口以查找易受攻擊的服務(wù)。
② 基于堆棧查詢的技術(shù):主動將數(shù)據(jù)包發(fā)送到遠程主機上的網(wǎng)絡(luò)堆棧,通過主機對不同請求的響應(yīng)來探測系統(tǒng)。堆棧查詢的主要方法是針對TCP/IP堆棧,向遠程主機的開放(未開放)端口發(fā)送標(biāo)準(zhǔn)和非標(biāo)準(zhǔn)的TCP請求,接收遠程主機響應(yīng)的有用信息并進行分析,能夠得到一些關(guān)于類型和版本之類的信息;另一種方法被稱為初始序列號(ISN)分析[16],通過獲取TCP堆棧中隨機數(shù)生成器的差異來確定遠程主機的操作系統(tǒng)。
③ ICMP響應(yīng)分析方法[17]:該方法是在IP層實現(xiàn)的指紋探測,通過向遠程主機發(fā)送ICMP消息并分析響應(yīng)來識別操作系統(tǒng)。
服務(wù)軟件信息探測一般為橫幅抓取,即連接到遠程應(yīng)用程序并觀察輸出。攻擊者確定了遠程主機正在運行服務(wù)的制造商和版本,可以啟動漏洞研究過程。該項技術(shù)的工作原理是使用telnet、FTP和一個專有程序與遠程計算機建立連接,導(dǎo)致易受攻擊的主機響應(yīng)橫幅消息,其中可能包含攻擊者用來危害系統(tǒng)的信息。此類探測軟件中具有代表性的是Nmap,Nmap內(nèi)置標(biāo)語采集器,它連接到開放的TCP端口并在5 s內(nèi)打印出偵聽服務(wù)發(fā)送的所有內(nèi)容,獲取遠程主機某個端口上運行服務(wù)軟件的名稱及版本。
在眾多遠程主機操作系統(tǒng)識別和服務(wù)軟件信息探測軟件如Nmap和Xprobe2等,都內(nèi)置了豐富的操作系統(tǒng)指紋庫,其中Nmap還內(nèi)置了眾多服務(wù)軟件的指紋庫,例如FTP、TELNET、HTTP、SSH等服務(wù)軟件,基于指紋庫就能夠進行操作系統(tǒng)和服務(wù)的指紋識別。下面分析Nmap定義的操作系統(tǒng)指紋,如圖1所示。

圖1 Nmap實施操作系統(tǒng)指紋探測結(jié)果示例Fig.1 Operating system fingerprint detection result of nmap
其中,第1行指示了這條指紋對應(yīng)的操作系統(tǒng)與版本為Solaris 9,運行平臺為SPARC。
第2行表示TCP序列性測試的結(jié)果,確定TCP初始序列號、IP標(biāo)識號和TCP時間戳號的生成模式。
第3行代表Nmap中T1測試的結(jié)果,即將啟用了SYN和ECN Echo標(biāo)志的TCP數(shù)據(jù)包發(fā)送到一個打開的TCP端口,獲得的結(jié)果中DF=Y表示已啟用IP標(biāo)頭中的Don’t fragment標(biāo)志,W=C0B7 | 807A表示TCP頭中的窗口大小為十六進制的0xC0B7(49335)或0x807A(32890)等信息。
第4行和第5行表示T2和T3測試的結(jié)果,Resp = N表示遠程主機沒有對測試2和測試3發(fā)送的數(shù)據(jù)包進行回應(yīng)。
第6行到第9行表示T4、T5、T6、T7測試的結(jié)果,即分別發(fā)送啟用ACK標(biāo)志的TCP包到一個打開的TCP端口;啟用SYN標(biāo)志的TCP包發(fā)送到一個關(guān)閉的TCP端口;啟用ACK標(biāo)志的TCP包到一個關(guān)閉的TCP端口;啟用URG、PSH和FIN標(biāo)志的TCP包到一個關(guān)閉的TCP端口等,并對獲得的響應(yīng)信息進行分析。
第10行是對端口不可達測試的響應(yīng)結(jié)果,其中,DF = Y表示已啟用IP標(biāo)頭中的“不分段”標(biāo)志;TOS = 0表示IP標(biāo)頭中的服務(wù)類型(TOS)為0;IPLEN = 70表示IP標(biāo)頭中的總長度為十六進制的0x0070或112;RIPTL = 148表示IP中給定的總長度發(fā)送回報頭是十六進制的0x0148或328等。
Nmap通過模式匹配算法,基于上述指紋庫信息,來識別應(yīng)用程序名稱、版本號和其他信息。
通過對指紋探測攻擊的過程進行分析,設(shè)計主機指紋隱藏設(shè)備,作為面向攻擊者的第一道門,在內(nèi)部網(wǎng)絡(luò)和外部網(wǎng)絡(luò)連接的邊界位置進行串接部署,對攻擊者的探測攻擊數(shù)據(jù)進行直接防護?;贜map探測數(shù)據(jù)包的測試過程和規(guī)則匹配方式,實現(xiàn)響應(yīng)信息的修改。該系統(tǒng)能通過返回修改后的響應(yīng)信息使攻擊者獲取錯誤響應(yīng),達到迷惑攻擊者的目的。部署方式如圖2所示。

圖2 主機指紋隱藏設(shè)備部署方式Fig.2 Host fingerprint hiding device deployment
對操作系統(tǒng)探測進行偽裝欺騙過程如下。
步驟1:指紋隱藏設(shè)備運行指紋隱藏程序,控制端設(shè)備下發(fā)隱藏策略,包括受保護主機的ip地址和將要偽裝的操作系統(tǒng)類型。
步驟2:當(dāng)攻擊者對內(nèi)部網(wǎng)絡(luò)某臺主機進行操作系統(tǒng)探測時,其發(fā)出的探測數(shù)據(jù)包會經(jīng)過指紋隱藏設(shè)備,指紋隱藏設(shè)備進行數(shù)據(jù)包的識別與記錄工作,內(nèi)容如下:
① 若該包為ICMP包,則記錄源IP、目的IP、ICMP序列號和ICMP代碼。
② 數(shù)據(jù)包類型:識別當(dāng)前數(shù)據(jù)包是否為NMAP探測包。若為NMAP探測包,記錄其探針名;若為TCP包,記錄源IP、目的IP、TCP源端口號、TCP序列號、TCP確認(rèn)號。若該包為ICMP包,記錄源IP、目的IP、ICMP序列號和ICMP代碼。
步驟3:探測主機發(fā)出的數(shù)據(jù)包經(jīng)過指紋隱藏設(shè)備后到達內(nèi)部網(wǎng)絡(luò)的主機。
步驟4:內(nèi)部網(wǎng)絡(luò)主機對外部網(wǎng)絡(luò)發(fā)來的數(shù)據(jù)包進行回復(fù)。
步驟5:指紋隱藏設(shè)備捕捉到從內(nèi)部網(wǎng)絡(luò)發(fā)往外部網(wǎng)絡(luò)的數(shù)據(jù)包后,首先會檢測該數(shù)據(jù)包的源IP是否在受保護主機名單內(nèi),并對受保護主機名單內(nèi)的數(shù)據(jù)包進行處理,過程如下:若該包是ICMP包,則根據(jù)當(dāng)前ICMP數(shù)據(jù)包的類型、偽裝操作系統(tǒng)指紋庫以及步驟2中所記錄的數(shù)據(jù)對數(shù)據(jù)包相關(guān)字段進行值修改;若該包是TCP包,則判斷該包是否為步驟2中記錄的數(shù)據(jù)包的響應(yīng),若是則將根據(jù)偽裝操作系統(tǒng)指紋庫和步驟2中所記錄的數(shù)據(jù)對數(shù)據(jù)包相關(guān)字段進行值修改。
步驟6:指紋隱藏設(shè)備將經(jīng)過檢測后的數(shù)據(jù)包轉(zhuǎn)發(fā)到外部網(wǎng)絡(luò)。
對于操作系統(tǒng)偽裝,可以在控制端進行設(shè)置;此后,指紋隱藏設(shè)備將對所有受保護的主機定時修改偽裝操作系統(tǒng)類型。本實驗設(shè)置的是偽裝操作系統(tǒng)類型每隔30 s變化一次,即每隔30 s,攻擊者探測同一臺受保護主機,返回給攻擊者的操作系統(tǒng)類型不相同,達到偽裝混淆的目的。
服務(wù)軟件偽裝包括對攻擊者的FTP、TELNET、HTTP服務(wù)軟件信息探測的偽裝欺騙。攻擊者用NMAP掃描受保護主機的這三種服務(wù)將返回虛假的服務(wù)軟件名版本。
指紋隱藏設(shè)備進行服務(wù)偽裝處理過程如下:
步驟1:指紋隱藏設(shè)備捕捉發(fā)往外部網(wǎng)絡(luò)的數(shù)據(jù)包。
步驟2:若該包為TCP包,則進行源端口號判斷,端口21為FTP服務(wù)端口,23為TELNET服務(wù)端口,80為HTTP服務(wù)端口。之后判斷源IP是否在保護名單內(nèi),把非名單內(nèi)的數(shù)據(jù)包直接放行,在名單內(nèi)的數(shù)據(jù)做進一步處理:
① 當(dāng)該包為FTP數(shù)據(jù)包時,指紋隱藏程序分析TCP PAYLOAD數(shù)據(jù)部分,當(dāng)前三個字符為“220”,則根據(jù)隱藏策略中的FTP偽裝類型以及FTP指紋庫對PAYLOAD數(shù)據(jù)部分進行修改,修改完成后轉(zhuǎn)發(fā)給外部網(wǎng)絡(luò)。
② 當(dāng)該包為TELNET數(shù)據(jù)包時,指紋隱藏程序判斷該包是否為雙方第一個TELNET數(shù)據(jù)包(不包括三次握手),若是第一個則根據(jù)隱藏策略中的TELNET偽裝類型以及TELNET指紋庫對PAYLOAD數(shù)據(jù)部分行修改,修改完成后轉(zhuǎn)發(fā)給外部網(wǎng)絡(luò)。
③ 若該包為HTTP數(shù)據(jù)包時,指紋隱藏設(shè)備根據(jù)隱藏策略中的HTTP偽裝類型以及HTTP指紋庫對HTTP數(shù)據(jù)包中頭部server字段進行修改,修改完成后轉(zhuǎn)發(fā)給外部網(wǎng)絡(luò)。
(1) 使用Nmap探測Windows 7和CentOS 7服務(wù)器
在未啟用指紋隱藏功能時,探測能夠顯示操作系統(tǒng)結(jié)果,如圖3所示,正確顯示了操作系統(tǒng)類型以及系統(tǒng)開放端口等信息。

圖3 未開啟指紋隱藏模塊時的探測結(jié)果Fig.3 Detection results when fingerprint hiding module is not enabled
(2) 配置文件設(shè)置,運行指紋隱藏程序
通過啟用指紋隱藏設(shè)備,并配置文件:將IP地址為20.20.0.123的主機Linux操作系統(tǒng)模擬成Windows系統(tǒng)。
(3) 再次進行探測過程
攻擊者再次發(fā)送探測消息,獲得的結(jié)果如圖4所示,可以看出:通過指紋隱藏設(shè)備,將Linux操作系統(tǒng)主機識別為WindowsXP,成功隱藏了服務(wù)器的真實指紋信息。

圖4 開啟指紋隱藏模塊后的探測結(jié)果Fig.4 Detection results after opening the fingerprint hiding module
為了應(yīng)對關(guān)鍵基礎(chǔ)設(shè)施面臨的高強度探測攻擊,本文提出了一種針對關(guān)鍵業(yè)務(wù)系統(tǒng)主機所運行操作系統(tǒng)、服務(wù)軟件等外顯特征指紋隱藏方法。試驗結(jié)果表明,通過設(shè)置策略、修改探測報文的響應(yīng)信息,能夠擾亂攻擊者的主機探測攻擊結(jié)果,達到不依賴攻擊檢測特征庫的主動防御效果。未來的工作包括智能化指紋隱藏策略的研究,實現(xiàn)更加逼真、隱蔽性更高的隱藏能力。