賈 哲,李炳彰,高小涵
(1.通信網(wǎng)信息傳輸與分發(fā)技術(shù)重點(diǎn)實(shí)驗(yàn)室,河北 石家莊 050081;2.中國(guó)電子科技集團(tuán)公司第五十四研究所,河北 石家莊 050081)
自2012年我國(guó)提出首批國(guó)家級(jí)智慧城市試點(diǎn)建設(shè)以來(lái),已經(jīng)有超過(guò)700多座城市在規(guī)劃或正在建設(shè)智慧城市,百姓的衣食住行、政府的管理、社會(huì)的治理、城市的運(yùn)轉(zhuǎn),以及關(guān)鍵基礎(chǔ)設(shè)施的運(yùn)行架構(gòu)都在網(wǎng)絡(luò)之上。隨著物聯(lián)網(wǎng)、云計(jì)算等信息技術(shù)的發(fā)展,物聯(lián)網(wǎng)與智慧城市的發(fā)展模式呈現(xiàn)多系統(tǒng)協(xié)同、跨層級(jí)控制、縱橫多點(diǎn)級(jí)聯(lián)等特點(diǎn),關(guān)鍵信息基礎(chǔ)設(shè)施的復(fù)雜度指數(shù)級(jí)上升,安全脆弱性和安全威脅面臨多樣化、隱蔽化等巨大挑戰(zhàn)。為了解決現(xiàn)有信息系統(tǒng)外部“靜態(tài)、同質(zhì)、確定”的特點(diǎn)而導(dǎo)致易被探測(cè)、攻易守難等問(wèn)題,欺騙防御、擬態(tài)防御等主動(dòng)防御技術(shù)受到關(guān)注,通過(guò)使用騙局或假動(dòng)作來(lái)阻撓或者推翻攻擊者的認(rèn)知過(guò)程,擾亂攻擊者的自動(dòng)化工具,延遲或阻斷攻擊者的活動(dòng),通過(guò)使用虛假的響應(yīng)、有意的混淆,以及假動(dòng)作、誤導(dǎo)等偽造信息達(dá)到“欺騙”的目的。
本文提出了一種操作系統(tǒng)指紋隱藏的欺騙防御方法。通過(guò)擾亂攻擊者對(duì)目標(biāo)主機(jī)進(jìn)行指紋掃描和探測(cè)的攻擊過(guò)程,采用混淆的方法隱藏系統(tǒng)的外部特征,使系統(tǒng)展現(xiàn)給攻擊者的是一個(gè)有限甚至完全隱蔽或者錯(cuò)誤的攻擊面,降低暴露給攻擊者的攻擊面,減少可被攻擊者利用的資源,使得攻擊復(fù)雜度和攻擊者代價(jià)增長(zhǎng),達(dá)到主動(dòng)防御的目的。
近年來(lái),網(wǎng)絡(luò)攻擊的數(shù)量和復(fù)雜性都在迅速增加[1-2],攻擊者能夠利用多種攻擊載體滲透到其目標(biāo)系統(tǒng)中。針對(duì)上述問(wèn)題,研究人員提出了許多辦法來(lái)增強(qiáng)網(wǎng)絡(luò)和信息系統(tǒng)的安全防護(hù)能力,典型的解決方案包括入侵防護(hù)[3]、系統(tǒng)加固[4]以及高級(jí)攻擊檢測(cè)和緩解等[5]。盡管這些傳統(tǒng)的安全措施在任何安全防護(hù)手段中都必不可少,但它們大多是被動(dòng)響應(yīng)攻擊者的行為,缺乏在網(wǎng)絡(luò)殺傷鏈的早期步驟中就與攻擊者進(jìn)行交互的手段,導(dǎo)致防御方始終處于被動(dòng)地位。
20世紀(jì)80年代末,斯托爾[6]首次討論了如何利用欺騙技術(shù)來(lái)跟蹤入侵者,以確保計(jì)算機(jī)安全,并在此基礎(chǔ)上形成了蜜罐的概念。近年來(lái),出現(xiàn)了不少利用欺騙技術(shù)[7-9]來(lái)迷惑或誤導(dǎo)攻擊者的技術(shù)手段。網(wǎng)絡(luò)欺騙防御技術(shù)可用于保護(hù)易受攻擊的業(yè)務(wù)系統(tǒng),并因其自身的優(yōu)勢(shì)而受到安全防御人員的關(guān)注。
針對(duì)網(wǎng)絡(luò)層的欺騙防御技術(shù),對(duì)于攻擊早期階段的網(wǎng)絡(luò)指紋探測(cè)行為,開(kāi)展了網(wǎng)絡(luò)指紋隱藏的欺騙防御關(guān)鍵技術(shù)研究。在攻擊殺傷鏈的偵察階段,攻擊者通過(guò)指紋探測(cè)和掃描獲得網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)和可用資產(chǎn)的信息。通過(guò)干擾偵察階段即可混淆偵察結(jié)果,例如通過(guò)錯(cuò)誤響應(yīng)掃描查詢(xún)來(lái)誤導(dǎo)攻擊者,Le Malecot介紹了一種通過(guò)隨機(jī)連接跳轉(zhuǎn)和流量偽造來(lái)隨機(jī)化指紋探測(cè)的技術(shù),即通過(guò)改變目標(biāo)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),達(dá)到迷惑攻擊者的目的[10]。Trassare通過(guò)不斷暴露錯(cuò)誤的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)來(lái)誤導(dǎo)攻擊者,從而擊敗traceroute探測(cè)類(lèi)型的掃描[11]。Sushil等人提出通過(guò)提供真假混合的應(yīng)答來(lái)響應(yīng)攻擊者的掃描[12]。
在防范操作系統(tǒng)指紋探測(cè)的欺騙防御技術(shù)方面,和本文內(nèi)容類(lèi)似的研究有文獻(xiàn)[13-14],通過(guò)模擬操作系統(tǒng)的多種行為特征誤導(dǎo)潛在攻擊者,達(dá)到迷惑攻擊者并延遲其進(jìn)展的目標(biāo)。本文針對(duì)關(guān)鍵基礎(chǔ)設(shè)施業(yè)務(wù)主機(jī)指紋隱藏技術(shù)開(kāi)展研究,結(jié)合SDN、虛擬化等新技術(shù)的應(yīng)用,構(gòu)建更加靈活高效的網(wǎng)絡(luò)系統(tǒng)特征隱藏機(jī)制,達(dá)到對(duì)攻擊者“隱真示假”、避免重要資產(chǎn)暴露的目的。
由于攻擊者在進(jìn)行攻擊之前,首先要對(duì)目標(biāo)主機(jī)進(jìn)行掃描,并試圖找出目標(biāo)主機(jī)操作系統(tǒng)的類(lèi)型和服務(wù)軟件名稱(chēng)版本,從而實(shí)施相應(yīng)的攻擊,比如主機(jī)指紋探測(cè)操作系統(tǒng)為Windows XP sp3、服務(wù)器平臺(tái)為IIS 4.0。本文針對(duì)操作系統(tǒng)指紋探測(cè)、服務(wù)軟件指紋探測(cè)兩種攻擊過(guò)程進(jìn)行分析。
操作系統(tǒng)指紋探測(cè)是確定遠(yuǎn)程主機(jī)操作系統(tǒng)身份的過(guò)程,主要是通過(guò)主動(dòng)將數(shù)據(jù)包發(fā)送到遠(yuǎn)程主機(jī)并分析響應(yīng)來(lái)完成的。操作系統(tǒng)指紋探測(cè)的工具主要有Nmap和Xprobe2等,通過(guò)獲取響應(yīng),根據(jù)已知操作系統(tǒng)的簽名數(shù)據(jù)庫(kù)查詢(xún)?cè)撝讣y獲取操作系統(tǒng)信息。對(duì)于攻擊者而言,了解遠(yuǎn)程主機(jī)上正在運(yùn)行哪種操作系統(tǒng)非常有價(jià)值,因?yàn)榛诼┒吹墓舴椒ㄍǔR蕾?lài)于操作系統(tǒng)版本。確定主機(jī)操作系統(tǒng)的方法主要有以下三種:
① 橫幅抓取[15]:在計(jì)算機(jī)網(wǎng)絡(luò)環(huán)境中,默認(rèn)的橫幅通常包括關(guān)于一個(gè)服務(wù)的信息,例如版本號(hào)。當(dāng)使用Telnet和專(zhuān)有程序有意收集這些信息時(shí),通常稱(chēng)為橫幅抓取。攻擊者在尋找易受攻擊的主機(jī)時(shí),通過(guò)與主機(jī)建立連接,然后查詢(xún)端口以查找易受攻擊的服務(wù)。
② 基于堆棧查詢(xún)的技術(shù):主動(dòng)將數(shù)據(jù)包發(fā)送到遠(yuǎn)程主機(jī)上的網(wǎng)絡(luò)堆棧,通過(guò)主機(jī)對(duì)不同請(qǐng)求的響應(yīng)來(lái)探測(cè)系統(tǒng)。堆棧查詢(xún)的主要方法是針對(duì)TCP/IP堆棧,向遠(yuǎn)程主機(jī)的開(kāi)放(未開(kāi)放)端口發(fā)送標(biāo)準(zhǔn)和非標(biāo)準(zhǔn)的TCP請(qǐng)求,接收遠(yuǎn)程主機(jī)響應(yīng)的有用信息并進(jìn)行分析,能夠得到一些關(guān)于類(lèi)型和版本之類(lèi)的信息;另一種方法被稱(chēng)為初始序列號(hào)(ISN)分析[16],通過(guò)獲取TCP堆棧中隨機(jī)數(shù)生成器的差異來(lái)確定遠(yuǎn)程主機(jī)的操作系統(tǒng)。
③ ICMP響應(yīng)分析方法[17]:該方法是在IP層實(shí)現(xiàn)的指紋探測(cè),通過(guò)向遠(yuǎn)程主機(jī)發(fā)送ICMP消息并分析響應(yīng)來(lái)識(shí)別操作系統(tǒng)。
服務(wù)軟件信息探測(cè)一般為橫幅抓取,即連接到遠(yuǎn)程應(yīng)用程序并觀察輸出。攻擊者確定了遠(yuǎn)程主機(jī)正在運(yùn)行服務(wù)的制造商和版本,可以啟動(dòng)漏洞研究過(guò)程。該項(xiàng)技術(shù)的工作原理是使用telnet、FTP和一個(gè)專(zhuān)有程序與遠(yuǎn)程計(jì)算機(jī)建立連接,導(dǎo)致易受攻擊的主機(jī)響應(yīng)橫幅消息,其中可能包含攻擊者用來(lái)危害系統(tǒng)的信息。此類(lèi)探測(cè)軟件中具有代表性的是Nmap,Nmap內(nèi)置標(biāo)語(yǔ)采集器,它連接到開(kāi)放的TCP端口并在5 s內(nèi)打印出偵聽(tīng)服務(wù)發(fā)送的所有內(nèi)容,獲取遠(yuǎn)程主機(jī)某個(gè)端口上運(yùn)行服務(wù)軟件的名稱(chēng)及版本。
在眾多遠(yuǎn)程主機(jī)操作系統(tǒng)識(shí)別和服務(wù)軟件信息探測(cè)軟件如Nmap和Xprobe2等,都內(nèi)置了豐富的操作系統(tǒng)指紋庫(kù),其中Nmap還內(nèi)置了眾多服務(wù)軟件的指紋庫(kù),例如FTP、TELNET、HTTP、SSH等服務(wù)軟件,基于指紋庫(kù)就能夠進(jìn)行操作系統(tǒng)和服務(wù)的指紋識(shí)別。下面分析Nmap定義的操作系統(tǒng)指紋,如圖1所示。
圖1 Nmap實(shí)施操作系統(tǒng)指紋探測(cè)結(jié)果示例Fig.1 Operating system fingerprint detection result of nmap
其中,第1行指示了這條指紋對(duì)應(yīng)的操作系統(tǒng)與版本為Solaris 9,運(yùn)行平臺(tái)為SPARC。
第2行表示TCP序列性測(cè)試的結(jié)果,確定TCP初始序列號(hào)、IP標(biāo)識(shí)號(hào)和TCP時(shí)間戳號(hào)的生成模式。
第3行代表Nmap中T1測(cè)試的結(jié)果,即將啟用了SYN和ECN Echo標(biāo)志的TCP數(shù)據(jù)包發(fā)送到一個(gè)打開(kāi)的TCP端口,獲得的結(jié)果中DF=Y表示已啟用IP標(biāo)頭中的Don’t fragment標(biāo)志,W=C0B7 | 807A表示TCP頭中的窗口大小為十六進(jìn)制的0xC0B7(49335)或0x807A(32890)等信息。
第4行和第5行表示T2和T3測(cè)試的結(jié)果,Resp = N表示遠(yuǎn)程主機(jī)沒(méi)有對(duì)測(cè)試2和測(cè)試3發(fā)送的數(shù)據(jù)包進(jìn)行回應(yīng)。
第6行到第9行表示T4、T5、T6、T7測(cè)試的結(jié)果,即分別發(fā)送啟用ACK標(biāo)志的TCP包到一個(gè)打開(kāi)的TCP端口;啟用SYN標(biāo)志的TCP包發(fā)送到一個(gè)關(guān)閉的TCP端口;啟用ACK標(biāo)志的TCP包到一個(gè)關(guān)閉的TCP端口;啟用URG、PSH和FIN標(biāo)志的TCP包到一個(gè)關(guān)閉的TCP端口等,并對(duì)獲得的響應(yīng)信息進(jìn)行分析。
第10行是對(duì)端口不可達(dá)測(cè)試的響應(yīng)結(jié)果,其中,DF = Y表示已啟用IP標(biāo)頭中的“不分段”標(biāo)志;TOS = 0表示IP標(biāo)頭中的服務(wù)類(lèi)型(TOS)為0;IPLEN = 70表示IP標(biāo)頭中的總長(zhǎng)度為十六進(jìn)制的0x0070或112;RIPTL = 148表示IP中給定的總長(zhǎng)度發(fā)送回報(bào)頭是十六進(jìn)制的0x0148或328等。
Nmap通過(guò)模式匹配算法,基于上述指紋庫(kù)信息,來(lái)識(shí)別應(yīng)用程序名稱(chēng)、版本號(hào)和其他信息。
通過(guò)對(duì)指紋探測(cè)攻擊的過(guò)程進(jìn)行分析,設(shè)計(jì)主機(jī)指紋隱藏設(shè)備,作為面向攻擊者的第一道門(mén),在內(nèi)部網(wǎng)絡(luò)和外部網(wǎng)絡(luò)連接的邊界位置進(jìn)行串接部署,對(duì)攻擊者的探測(cè)攻擊數(shù)據(jù)進(jìn)行直接防護(hù)。基于Nmap探測(cè)數(shù)據(jù)包的測(cè)試過(guò)程和規(guī)則匹配方式,實(shí)現(xiàn)響應(yīng)信息的修改。該系統(tǒng)能通過(guò)返回修改后的響應(yīng)信息使攻擊者獲取錯(cuò)誤響應(yīng),達(dá)到迷惑攻擊者的目的。部署方式如圖2所示。
圖2 主機(jī)指紋隱藏設(shè)備部署方式Fig.2 Host fingerprint hiding device deployment
對(duì)操作系統(tǒng)探測(cè)進(jìn)行偽裝欺騙過(guò)程如下。
步驟1:指紋隱藏設(shè)備運(yùn)行指紋隱藏程序,控制端設(shè)備下發(fā)隱藏策略,包括受保護(hù)主機(jī)的ip地址和將要偽裝的操作系統(tǒng)類(lèi)型。
步驟2:當(dāng)攻擊者對(duì)內(nèi)部網(wǎng)絡(luò)某臺(tái)主機(jī)進(jìn)行操作系統(tǒng)探測(cè)時(shí),其發(fā)出的探測(cè)數(shù)據(jù)包會(huì)經(jīng)過(guò)指紋隱藏設(shè)備,指紋隱藏設(shè)備進(jìn)行數(shù)據(jù)包的識(shí)別與記錄工作,內(nèi)容如下:
① 若該包為ICMP包,則記錄源IP、目的IP、ICMP序列號(hào)和ICMP代碼。
② 數(shù)據(jù)包類(lèi)型:識(shí)別當(dāng)前數(shù)據(jù)包是否為NMAP探測(cè)包。若為NMAP探測(cè)包,記錄其探針名;若為T(mén)CP包,記錄源IP、目的IP、TCP源端口號(hào)、TCP序列號(hào)、TCP確認(rèn)號(hào)。若該包為ICMP包,記錄源IP、目的IP、ICMP序列號(hào)和ICMP代碼。
步驟3:探測(cè)主機(jī)發(fā)出的數(shù)據(jù)包經(jīng)過(guò)指紋隱藏設(shè)備后到達(dá)內(nèi)部網(wǎng)絡(luò)的主機(jī)。
步驟4:內(nèi)部網(wǎng)絡(luò)主機(jī)對(duì)外部網(wǎng)絡(luò)發(fā)來(lái)的數(shù)據(jù)包進(jìn)行回復(fù)。
步驟5:指紋隱藏設(shè)備捕捉到從內(nèi)部網(wǎng)絡(luò)發(fā)往外部網(wǎng)絡(luò)的數(shù)據(jù)包后,首先會(huì)檢測(cè)該數(shù)據(jù)包的源IP是否在受保護(hù)主機(jī)名單內(nèi),并對(duì)受保護(hù)主機(jī)名單內(nèi)的數(shù)據(jù)包進(jìn)行處理,過(guò)程如下:若該包是ICMP包,則根據(jù)當(dāng)前ICMP數(shù)據(jù)包的類(lèi)型、偽裝操作系統(tǒng)指紋庫(kù)以及步驟2中所記錄的數(shù)據(jù)對(duì)數(shù)據(jù)包相關(guān)字段進(jìn)行值修改;若該包是TCP包,則判斷該包是否為步驟2中記錄的數(shù)據(jù)包的響應(yīng),若是則將根據(jù)偽裝操作系統(tǒng)指紋庫(kù)和步驟2中所記錄的數(shù)據(jù)對(duì)數(shù)據(jù)包相關(guān)字段進(jìn)行值修改。
步驟6:指紋隱藏設(shè)備將經(jīng)過(guò)檢測(cè)后的數(shù)據(jù)包轉(zhuǎn)發(fā)到外部網(wǎng)絡(luò)。
對(duì)于操作系統(tǒng)偽裝,可以在控制端進(jìn)行設(shè)置;此后,指紋隱藏設(shè)備將對(duì)所有受保護(hù)的主機(jī)定時(shí)修改偽裝操作系統(tǒng)類(lèi)型。本實(shí)驗(yàn)設(shè)置的是偽裝操作系統(tǒng)類(lèi)型每隔30 s變化一次,即每隔30 s,攻擊者探測(cè)同一臺(tái)受保護(hù)主機(jī),返回給攻擊者的操作系統(tǒng)類(lèi)型不相同,達(dá)到偽裝混淆的目的。
服務(wù)軟件偽裝包括對(duì)攻擊者的FTP、TELNET、HTTP服務(wù)軟件信息探測(cè)的偽裝欺騙。攻擊者用NMAP掃描受保護(hù)主機(jī)的這三種服務(wù)將返回虛假的服務(wù)軟件名版本。
指紋隱藏設(shè)備進(jìn)行服務(wù)偽裝處理過(guò)程如下:
步驟1:指紋隱藏設(shè)備捕捉發(fā)往外部網(wǎng)絡(luò)的數(shù)據(jù)包。
步驟2:若該包為T(mén)CP包,則進(jìn)行源端口號(hào)判斷,端口21為FTP服務(wù)端口,23為T(mén)ELNET服務(wù)端口,80為HTTP服務(wù)端口。之后判斷源IP是否在保護(hù)名單內(nèi),把非名單內(nèi)的數(shù)據(jù)包直接放行,在名單內(nèi)的數(shù)據(jù)做進(jìn)一步處理:
① 當(dāng)該包為FTP數(shù)據(jù)包時(shí),指紋隱藏程序分析TCP PAYLOAD數(shù)據(jù)部分,當(dāng)前三個(gè)字符為“220”,則根據(jù)隱藏策略中的FTP偽裝類(lèi)型以及FTP指紋庫(kù)對(duì)PAYLOAD數(shù)據(jù)部分進(jìn)行修改,修改完成后轉(zhuǎn)發(fā)給外部網(wǎng)絡(luò)。
② 當(dāng)該包為T(mén)ELNET數(shù)據(jù)包時(shí),指紋隱藏程序判斷該包是否為雙方第一個(gè)TELNET數(shù)據(jù)包(不包括三次握手),若是第一個(gè)則根據(jù)隱藏策略中的TELNET偽裝類(lèi)型以及TELNET指紋庫(kù)對(duì)PAYLOAD數(shù)據(jù)部分行修改,修改完成后轉(zhuǎn)發(fā)給外部網(wǎng)絡(luò)。
③ 若該包為HTTP數(shù)據(jù)包時(shí),指紋隱藏設(shè)備根據(jù)隱藏策略中的HTTP偽裝類(lèi)型以及HTTP指紋庫(kù)對(duì)HTTP數(shù)據(jù)包中頭部server字段進(jìn)行修改,修改完成后轉(zhuǎn)發(fā)給外部網(wǎng)絡(luò)。
(1) 使用Nmap探測(cè)Windows 7和CentOS 7服務(wù)器
在未啟用指紋隱藏功能時(shí),探測(cè)能夠顯示操作系統(tǒng)結(jié)果,如圖3所示,正確顯示了操作系統(tǒng)類(lèi)型以及系統(tǒng)開(kāi)放端口等信息。
圖3 未開(kāi)啟指紋隱藏模塊時(shí)的探測(cè)結(jié)果Fig.3 Detection results when fingerprint hiding module is not enabled
(2) 配置文件設(shè)置,運(yùn)行指紋隱藏程序
通過(guò)啟用指紋隱藏設(shè)備,并配置文件:將IP地址為20.20.0.123的主機(jī)Linux操作系統(tǒng)模擬成Windows系統(tǒng)。
(3) 再次進(jìn)行探測(cè)過(guò)程
攻擊者再次發(fā)送探測(cè)消息,獲得的結(jié)果如圖4所示,可以看出:通過(guò)指紋隱藏設(shè)備,將Linux操作系統(tǒng)主機(jī)識(shí)別為WindowsXP,成功隱藏了服務(wù)器的真實(shí)指紋信息。
圖4 開(kāi)啟指紋隱藏模塊后的探測(cè)結(jié)果Fig.4 Detection results after opening the fingerprint hiding module
為了應(yīng)對(duì)關(guān)鍵基礎(chǔ)設(shè)施面臨的高強(qiáng)度探測(cè)攻擊,本文提出了一種針對(duì)關(guān)鍵業(yè)務(wù)系統(tǒng)主機(jī)所運(yùn)行操作系統(tǒng)、服務(wù)軟件等外顯特征指紋隱藏方法。試驗(yàn)結(jié)果表明,通過(guò)設(shè)置策略、修改探測(cè)報(bào)文的響應(yīng)信息,能夠擾亂攻擊者的主機(jī)探測(cè)攻擊結(jié)果,達(dá)到不依賴(lài)攻擊檢測(cè)特征庫(kù)的主動(dòng)防御效果。未來(lái)的工作包括智能化指紋隱藏策略的研究,實(shí)現(xiàn)更加逼真、隱蔽性更高的隱藏能力。