谷瀟
(達(dá)州職業(yè)技術(shù)學(xué)院 四川 達(dá)州 635000)
隨著近年來因特網(wǎng)的迅猛發(fā)展與進(jìn)步,使得互聯(lián)網(wǎng)逐漸深入人們?nèi)粘I?,但是網(wǎng)絡(luò)在帶給人們工作與生活便利的同時(shí),也潛在著很大威脅。當(dāng)今社會(huì)的一個(gè)熱門話題就是網(wǎng)絡(luò)安全,為避免黑客非法入侵網(wǎng)絡(luò),一些企業(yè)先后應(yīng)用防火墻,在互聯(lián)網(wǎng)安全保障方面,防火墻發(fā)揮著重要作用[1]。但是防火前在保護(hù)互聯(lián)網(wǎng)安全的同時(shí),也對多媒體技術(shù)與P2P通信的應(yīng)用產(chǎn)生一定制約。
本研究在對防火墻原理、防火墻技術(shù)及Windows網(wǎng)絡(luò)構(gòu)架進(jìn)行系統(tǒng)性分析的基礎(chǔ)上,探討防火墻穿透技術(shù)及其實(shí)際應(yīng)用。
早前防火墻只是建筑和消防領(lǐng)域的概念,其作用在于屏蔽火災(zāi)蔓延,因?yàn)榫W(wǎng)絡(luò)防火墻的作用與其功能比較類似,因此,人們一般會(huì)以“防火墻”術(shù)語對網(wǎng)絡(luò)內(nèi)外部組件進(jìn)行描述。
防火墻不僅可充當(dāng)路由器,同時(shí)也可是主系統(tǒng)、個(gè)人主機(jī)等,專門隔絕子網(wǎng)或者網(wǎng)絡(luò)中的不良服務(wù)與協(xié)議[2]。一般防火墻系統(tǒng)位于具有較高等級(jí)的Internet和網(wǎng)關(guān)連接處,只有合法數(shù)據(jù)才能通過。
一般防火墻穿透給都是通過欺騙與規(guī)避的方式實(shí)現(xiàn)。
1)欺騙
在配置過程中,防火墻一般會(huì)信任端口與應(yīng)用程序訪問互聯(lián)網(wǎng),對防火墻所信任的端口或應(yīng)用程序進(jìn)行分析,偽裝自己的互聯(lián)網(wǎng)行為為防火墻所信任的端口或者應(yīng)用程序,由此,在發(fā)生自身網(wǎng)絡(luò)行為時(shí),就算是防火墻具有攔截功能,也會(huì)錯(cuò)誤的認(rèn)為是合格的網(wǎng)絡(luò)通信,這樣就允許該端口或應(yīng)用程序通過。
2)規(guī)避
實(shí)現(xiàn)防火墻基于所掛接的網(wǎng)絡(luò)接口不同,若相對防火墻而言,網(wǎng)絡(luò)通信是透明的,則防火墻就不能對其進(jìn)行攔截。例如,基于網(wǎng)絡(luò)用戶形態(tài)實(shí)現(xiàn)防火墻,則相對直接調(diào)用核心態(tài)接口得以實(shí)現(xiàn)的互聯(lián)網(wǎng)行為,防火墻不能對其攔截,對網(wǎng)絡(luò)通信的控制更是無稽之談[4]。
比較常用的防火墻穿透技術(shù)包括DLL遠(yuǎn)程注入技術(shù)、端口復(fù)用、系統(tǒng)DLL替換、套接字復(fù)制技術(shù)及底層穿透方法等。
共享DNS套接字穿透防火墻的實(shí)際應(yīng)用。DNS是一個(gè)層次性的數(shù)據(jù)庫,分布于世界的各個(gè)角落,存儲(chǔ)著各種各樣的信息,包括IP地址,域名和郵件服務(wù)器信息。利用DNs可以來實(shí)現(xiàn)穿透防火墻。盡管通過IP地址可以識(shí)別主機(jī)上的網(wǎng)絡(luò)接口,進(jìn)而訪問主機(jī),但是人們最喜歡使用的還是主機(jī)名。在TCP/IP領(lǐng)域中,域名系統(tǒng)(DNS)是一個(gè)分布的數(shù)據(jù)庫,由它來提供IP地址和主機(jī)名之間的映射信息。
首先找出目標(biāo)進(jìn)程,也就是獲取目標(biāo)進(jìn)程DNS的進(jìn)程ID值,通過調(diào)用wTSEnumerateProoessO函數(shù)來列出所有的進(jìn)程信息,并根據(jù)DNS進(jìn)程的名稱來獲得綁定在該進(jìn)程上的用戶SID值,再調(diào)用LookuPAccountSid()函數(shù)得到進(jìn)程用戶名,最后根據(jù)DNS進(jìn)程的用戶名來匹配出進(jìn)程ID值。
其次,由進(jìn)程號(hào)確定其SocKET,并轉(zhuǎn)換為自己所用"通過調(diào)用openProcesS()函數(shù),由進(jìn)程號(hào)得到句柄,再調(diào)用DuplicateHand1e()函數(shù),復(fù)制 DNS進(jìn)程句柄。
最后,用轉(zhuǎn)換后的SocKET來進(jìn)行數(shù)據(jù)傳輸。
P2P是一種互聯(lián)網(wǎng)傳輸技術(shù),也稱點(diǎn)對點(diǎn)技術(shù),它依賴網(wǎng)絡(luò)中參與者的計(jì)算能力和帶寬,而并非把依賴都聚集在幾臺(tái)服務(wù)器上。P2P的特點(diǎn)是人越多的情況下,速度越快,與傳統(tǒng)C/S架構(gòu)存在本質(zhì)性區(qū)別,P2P網(wǎng)絡(luò)不存在中心節(jié)點(diǎn),每一節(jié)點(diǎn)都可下載、分享信息及信息交流。
P2P內(nèi)外網(wǎng)用戶是怎樣實(shí)現(xiàn)通信的?由于外網(wǎng)用戶需要發(fā)起通信,然而內(nèi)網(wǎng)用戶會(huì)在防火墻保護(hù)下,通過一種超級(jí)節(jié)點(diǎn)的中介來實(shí)現(xiàn)穿墻技術(shù)。此外,P2P穿墻可通過隧道技術(shù),也就是如果防火墻對某個(gè)協(xié)議進(jìn)行了束縛,可通過不受限的協(xié)議封裝受限的協(xié)議,接收方再通過解封措施解開。
NAT技術(shù)是一種網(wǎng)絡(luò)地址轉(zhuǎn)換地址轉(zhuǎn)化為合法IP地址的轉(zhuǎn)換技術(shù),目前該技術(shù)被廣泛應(yīng)用于Intenet接人方式及全局互聯(lián)網(wǎng)中,NAT技術(shù)一方面能夠?qū)P地址不足問題予以完美解決,同時(shí)還可有效避免來自互聯(lián)網(wǎng)外部的攻擊,對互聯(lián)網(wǎng)內(nèi)部的計(jì)算機(jī)進(jìn)行隱藏并保護(hù)。
它主要分為基礎(chǔ)NAT與網(wǎng)絡(luò)地址和端口轉(zhuǎn)換兩大類,NAPT轉(zhuǎn)換過程中,檢查網(wǎng)絡(luò)地址/端口轉(zhuǎn)換器、修改包的IP地址及TCP/UDP端口信息,由此可以讓更多的內(nèi)部主機(jī)同時(shí)使用一個(gè)公網(wǎng)IP地址和外網(wǎng)實(shí)現(xiàn)通信,因此目前的互聯(lián)網(wǎng)一般采用NAPT。
實(shí)現(xiàn)NAT的方式主要有3種:動(dòng)態(tài)轉(zhuǎn)換、靜態(tài)轉(zhuǎn)換Static Nat及端口多路復(fù)用。設(shè)共有3個(gè)用戶A、B、C,每個(gè)用戶所處NAT不同,彼此只有通過NAT才能實(shí)現(xiàn)通信,它們通過防火墻訪問遠(yuǎn)程服務(wù)器該互聯(lián)網(wǎng)中共有A、B、C 3個(gè)用戶,處在不同的NAT之后。A、B、C 3個(gè)用戶都可以通過代理進(jìn)行連接,3個(gè)用戶程序均開放UDP端口及其應(yīng)用程序,首先A、B、C分別與服務(wù)器構(gòu)建通信會(huì)話,設(shè)NAT2的UDP端口12345分配給c與服務(wù)器的會(huì)話。NAT1把自己的UDP端口12346分配給A與s的會(huì)話,NAT3的UDP端口12345分配給B與服務(wù)器的會(huì)話,此時(shí)服務(wù)器就能獲得A、B、C的內(nèi)網(wǎng)私有IP地址和端口號(hào),以及A、B、C經(jīng)各自的NAT轉(zhuǎn)換后的公網(wǎng)IP地址和端口號(hào)。并且服務(wù)器將這個(gè)信息通知A、B、C,使A、B、C便能獲得對方的IP地址及端口號(hào)信息假設(shè)B與C建立UDP連接。B向C發(fā)送包。然而NAT3會(huì)攔截倘若A向C發(fā)送UDP包,同樣也會(huì)有NAT1攔截這樣看來無法穿透。事實(shí)并非如此。其實(shí)A、B、C協(xié)作起來就可以在防火墻上打開一個(gè)洞口進(jìn)而直接通信。如果A開始發(fā)送一個(gè)UDP信息到B、C的公網(wǎng)地址上,與此同時(shí)它又通過服務(wù)器中轉(zhuǎn)發(fā)送了一個(gè)邀請信息給C、B,請求C、B也給A發(fā)送一個(gè)UDP信息到A的公網(wǎng)地址上。則A向C、B的公網(wǎng)IP發(fā)送的信息就在NATA上打開一個(gè)處于A的私有地址與C、B的公網(wǎng)地址之間的新的會(huì)話。而A、C、B能否通過公網(wǎng)IP和端口進(jìn)行UDP通信取決于NAT是否支持發(fā)夾轉(zhuǎn)換和回環(huán)轉(zhuǎn)換。如果NAT支持,數(shù)據(jù)包就能正確通過公網(wǎng)IP和端口轉(zhuǎn)發(fā)。此時(shí)A、C、B也能進(jìn)行通信。
實(shí)現(xiàn)防火墻的方法和技術(shù)由Windows互聯(lián)網(wǎng)框架所決定,防火墻技術(shù)層次不同,僅可以攔截分析高于該層次的數(shù)據(jù),所以防火墻穿透技術(shù)越是在網(wǎng)絡(luò)架構(gòu)底層,就越極具通用性。所以,基于防火墻原理與設(shè)計(jì)方法,本研究主要分析NDIS-Hook防火墻穿透技術(shù)。
NDIS-Hook防火墻穿透技術(shù)的原理是對NDIS中的函數(shù)抵制予以直接替換,由此向NDIS發(fā)出請求,就能夠?qū)崿F(xiàn)自定義函數(shù)處理,相對比較簡單,完成處理后向系統(tǒng)函數(shù)轉(zhuǎn)發(fā)就可以。實(shí)現(xiàn)NDIS Hook的方法主要分為兩種,即:PFHook與PE Hook,以下主要探討實(shí)現(xiàn)PFHook的原理,再對PFHook驅(qū)動(dòng)程序予以實(shí)現(xiàn),并測試防火墻穿透性。
圖1 PFHook實(shí)現(xiàn)流程Fig.1 TPFHook implementation process
表1 PF Hook防火墻穿透技術(shù)測試結(jié)果Tab.1 PF Hook firewall traversal technology test results
互聯(lián)網(wǎng)窗口內(nèi)核中,都是由一個(gè)單向協(xié)議鏈表對以注冊協(xié)議進(jìn)行維護(hù)。該單向鏈對所有注冊過的協(xié)議抵制予以保存,在該結(jié)構(gòu)中,也含有協(xié)議驅(qū)動(dòng)指定的函數(shù)派發(fā)地址,比如Handler、Receive等。所有協(xié)議驅(qū)動(dòng)還相對對應(yīng)著一個(gè)Open NDIS Block單向鏈,以此對所綁定的網(wǎng)卡信息進(jìn)行全面維護(hù)。Ndis Register Protocol受到協(xié)議驅(qū)動(dòng)調(diào)用后,NDIS就會(huì)在協(xié)議鏈表表頭放上新注冊的協(xié)議,再返回這張表,因此只需對新協(xié)議進(jìn)行注冊,利用返回新注冊協(xié)議的鏈表頭,就能夠查閱系統(tǒng)中的每一張協(xié)議表。然而,若想掛接派發(fā)函數(shù),還應(yīng)該掛接協(xié)議對應(yīng)的BLOCK Open NDIS結(jié)構(gòu)中的派發(fā)函數(shù)。文中是結(jié)合PFHook與中間層驅(qū)動(dòng)使用的,利用注冊假協(xié)議交替接收與發(fā)送協(xié)議鏈表協(xié)議中的Hook,以此對數(shù)據(jù)包進(jìn)行處理,再交由原協(xié)議驅(qū)動(dòng)處理函數(shù)對其進(jìn)行有效處理。實(shí)現(xiàn)PFHook的具體流程如圖1所示,PFHook防火墻穿透技術(shù)測試結(jié)果如表1所示。
本研究基于Windows互聯(lián)網(wǎng)結(jié)構(gòu)的分析,系統(tǒng)性分析與探討防火墻技術(shù),主要包括NDIS中間層驅(qū)動(dòng)程序、TDI過濾驅(qū)動(dòng)及NDIS-Hook驅(qū)動(dòng),再根據(jù)防火墻原理、特點(diǎn)及技術(shù)缺陷等,提出防火墻穿透技術(shù),并探討其實(shí)際應(yīng)用,對現(xiàn)階段的主流防火墻作了相關(guān)測試,結(jié)果表明其可以有效穿透防火墻。
[1]劉惠,蔡皖東,趙煜.基于NDIS的防火墻穿透通信技術(shù)研究與實(shí)現(xiàn)[J].微電子學(xué)與計(jì)算機(jī),2007,12(5):145-146.LIU Hui,CAIWan-dong,ZHAO Yu.Research and implementation of NDIS firewall penetration of ICT-based[J].Microelectronics&Computer,2007,12(5):145-146.
[2]宋柳松,吳少華,周安民.木馬穿透個(gè)人防火墻技術(shù)研究[J].信息安全與通信保密,2007,5(1):120-121.SONG Liu-song,WU Shao-hua,ZHOU An-min.Trojans penetrate personal firewall technology research[J].Information Security and Communications Privacy,2007,5(1):120-121.
[3]侯功華,趙遠(yuǎn)東.基于NDIS中間層的包過濾的研究與設(shè)計(jì)[J].微計(jì)算機(jī)信息,2006,4(36):125-126.HOU Gong-hua,ZHAO Yuan-dong.NDIS intermediate layer packet filtering based on research and design[J].Microcomputer Information,2006,4(36):125-126.
[4]Microsoft Corploration.Microsoft Devdoper Network MSDN Library for Windows DDK[S].Microsoft Corporation,2001:120-121.
[5]趙楓,王軼俊,薛質(zhì).基于DNS的防火墻滲透技術(shù)研究[J].信息安全與通信保密,2006,7(2):132-133.ZHAO Feng,WANG Yi-jun,XUE Zhi.DNS-based firewall penetration technology[J].Information Security and Communications Privacy,2006,7(2):132-133.
[6]商娟葉,劉靜.基于防火墻的網(wǎng)絡(luò)安全技術(shù)[J].電子設(shè)計(jì)工程,2010(6):133-135.SHANG Juan-ye,LIU Jing.Network security technology based on firewall[J].Electronic Design Engineering,2010(6):133-135.