穿過防火墻
當(dāng)前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
如今采用局域網(wǎng)方式接入Internet已經(jīng)是各個公司、高校和政府機關(guān)的主要上網(wǎng)方式,這種方式既節(jié)省IP地址,又方便管理和控制。通常網(wǎng)管會在局域網(wǎng)的出口處設(shè)置各種防火墻,這樣一方面保證了局域網(wǎng)內(nèi)部的安全xx,另一方面又可以控制局域網(wǎng)內(nèi)部人員的訪問權(quán)限??蛇@樣也限制了使用者的使用權(quán)限,與外界的聯(lián)系也很不方便。比方說對于在公司里上班的上班一族和局域網(wǎng)里的窮學(xué)生來說,最痛恨的事情莫過于可恨的Boss為了防止大家偷懶而關(guān)閉了大多數(shù)端口,只允許使用有限的服務(wù),如WWW、POP3、SMTP等。這樣就用不成很多工具,如QQ、Cterm、FTP等,你和外界的聯(lián)系會很不方便,有MM而不能聊、有BBS而不能灌、有精彩的歌曲而不能Down,人世間最大的痛苦莫過于此……怎么辦?別急別急,本文教你幾招,輕輕松松穿透防火墻,盡情使用各種工具!好,下面我們一起來看這幾招的原理解說和實戰(zhàn)說明。
名次解釋: 協(xié)議 協(xié)議(Protocol)就是一組在網(wǎng)絡(luò)上發(fā)送信息的規(guī)則和約定。這些規(guī)則控制在網(wǎng)絡(luò)設(shè)備間交換消息的內(nèi)容、格式、定時、順序和錯誤,通俗說就是不同網(wǎng)絡(luò)程序的交流語言。我們常見的QQ使用UDP協(xié)議、ICQ使用TCP協(xié)議、E-mail程序使用POP3和SMTP協(xié)議,而在常見的協(xié)議中SOCKS是一種比較復(fù)雜的協(xié)議。 端口 端口(Port)可以認為是計算機與外界通訊交流的出口。其中硬件領(lǐng)域的端口又稱接口,如:USB端口、串行端口等;軟件領(lǐng)域的端口一般指網(wǎng)絡(luò)中面向連接服務(wù)和無連接服務(wù)的通信協(xié)議端口,是一種抽象的軟件結(jié)構(gòu),包括一些數(shù)據(jù)結(jié)構(gòu)和I/O(基本輸入輸出)緩沖區(qū)。端口號實際上有點和文件描述符相似,也是系統(tǒng)的一種資源,只不過其分配方式有固定的模式。有幾種基本分配方式:第一種是全局分配,這是一種集中分配方式,由一個公認權(quán)威的中央機構(gòu)根據(jù)用戶需要進行統(tǒng)一分配,并將結(jié)果公布于眾,而且按照協(xié)議不同分配不同的端口號,這樣導(dǎo)致很多服務(wù)被固定在某個協(xié)議的端口上,如TCP的21端口就被FTP服務(wù)占用;第二種是本地分配,又稱動態(tài)連接,即進程需要訪問傳輸層服務(wù)時,向本地xx作系統(tǒng)提出申請,xx作系統(tǒng)返回本地唯一的端口號,進程再通過合適的系統(tǒng)調(diào)用,將自己和該端口連接起來。 端口按端口號可分為三大類: 1.公認端口(WellsKnownsPorts):從0到1023,它們緊密綁定(Binding)于一些服務(wù)。通常這些端口的通訊明確表明了某種服務(wù)的協(xié)議,例如80端口實際上就是HTTP通訊。 2.注冊端口(RegisteredaPorts):從1024到49151,它們松散綁定于一些服務(wù)。也就是說有許多服務(wù)綁定于這些端口,這些端口同樣用于許多其他目的,例如許多系統(tǒng)處理動態(tài)端口從1024左右開始。 3.動態(tài)和“/”或私有端口(Dynamic3and/or3Private3Ports):從49152到65535。理論上不應(yīng)為服務(wù)分配這些端口,實際上機器通常從1024起分配動態(tài)端口,但也有例外:SUN的RPC端口從32768開始。 代理服務(wù)器 代理服務(wù)器(Proxy)是網(wǎng)絡(luò)信息的中轉(zhuǎn)站,比方說HTTP代理服務(wù)器。我們使用網(wǎng)絡(luò)瀏覽器直接鏈接其他Internet站點并取得網(wǎng)絡(luò)信息時,需送出Request信號來得到回答,然后對方再把信息傳送回來。代理服務(wù)器是介于瀏覽器和Web服務(wù)器之間的一臺服務(wù)器,有了它之后,瀏覽器不是直接到Web服務(wù)器去取回網(wǎng)頁而是向代理服務(wù)器發(fā)出請求,Request信號會先送到代理服務(wù)器,由代理服務(wù)器來取回瀏覽器所需要的信息并傳送給你。而且大部分代理服務(wù)器都具有緩沖功能,就好像一個大Cache,它不斷將新取得的數(shù)據(jù)包存到它本機的存儲器上,如果瀏覽器所請求的數(shù)據(jù)在它本機的存儲器上已經(jīng)存在而且是最新的,那么它就不重新從Web服務(wù)器取數(shù)據(jù),而直接將存儲器上的數(shù)據(jù)傳送給用戶的瀏覽器,這樣就能顯著提高瀏覽速度和效率。除此之外還有SOCKS代理服務(wù)器,其原理大同小異。 防火墻 防火墻(Firewall)是一個系統(tǒng)(或一組系統(tǒng)),它能增強機構(gòu)內(nèi)部網(wǎng)絡(luò)的安全xx。防火墻系統(tǒng)決定了哪些內(nèi)部服務(wù)可以被外界訪問、外界的哪些人可以訪問內(nèi)部的特定服務(wù),以及哪些外部資源可以被內(nèi)部人員訪問。要使一個防火墻有效,所有進入和外出的信息都必須經(jīng)過防火墻,接受其檢查。防火墻必須做到只允許經(jīng)過授權(quán)的數(shù)據(jù)通過,并且防火墻本身也必須能夠免于滲透。但不幸的是,防火墻系統(tǒng)一旦被攻擊者突破或迂回,就不能提供任何保護了。 防火墻的實現(xiàn)方式包括“包過濾路由器”和“應(yīng)用層網(wǎng)關(guān)”。包過濾路由器可以過濾協(xié)議(ICMP、UDP、TCP等),只允許特定的協(xié)議通過;應(yīng)用層網(wǎng)關(guān)就是我們常說的代理服務(wù)器,它可以提供比路由器更嚴(yán)格的安全策略,我們平時的各種限制就是在應(yīng)用層實現(xiàn)的。 第一招:SOCKS代理 一般來講,Boss為防止內(nèi)部員工偷懶,常常會關(guān)閉常見娛樂工具的協(xié)議端口,如QQ使用的UDP4000端口,但常常不會關(guān)閉SOCKS的1080端口。這樣如果你想用的東西本身支持SOCKS代理,那么就好辦了,直接使用代理就OK。 SOCKS是個電路級網(wǎng)關(guān),是DavidKoblas在1990年開發(fā)的,此后它就一直作為Internet9RFC中的開放標(biāo)準(zhǔn)。SOCKS在協(xié)議棧的TCP層上運行,它的常用端口是1080。與Winsock不同的是,SOCKS不要求應(yīng)用程序遵循特定的xx作系統(tǒng)平臺,比如像Winsock那樣遵循Windows。SOCKS代理與應(yīng)用層代理、HTTP層代理不同,SOCKS代理只是簡單地傳遞數(shù)據(jù)包,而不必關(guān)心是何種應(yīng)用協(xié)議(比如FTP、HTTP和NNTP請求),所以SOCKS代理服務(wù)器比應(yīng)用層代理服務(wù)器要快得多,正因為SOCKS代理服務(wù)器有這樣的功能我們才可以通過它來連接Internet。常用到有SOCKS代理有SOCKS4和SOCKS5兩種版本,其中SOCKS4代理只支持TCP協(xié)議,SOCKS5代理支持TCP和UDP協(xié)議,還支持各種身份驗證機制、服務(wù)器端域名解析等。簡單點說,SOCKS4能干的SOCKS5都可以干,反過來就不行了,如QQ只能用SOCKS5代理,而FTP可以用SOCKS4和SOCKS5,因為QQ的數(shù)據(jù)傳輸機制是UDP,而FTP用的數(shù)據(jù)傳輸機制是TCP。 SOCKS協(xié)議就是一種幾乎萬能的代理協(xié)議,它雖然不能理解自己轉(zhuǎn)發(fā)的數(shù)據(jù)內(nèi)部結(jié)構(gòu),但它能夠忠實地轉(zhuǎn)發(fā)數(shù)據(jù)包,完成協(xié)議本來要完成的功能。它與你常見的HTTP代理的不同點在于,HTTP代理通過HTTP協(xié)議進行,HTTP代理服務(wù)器軟件了解通訊包的內(nèi)部結(jié)構(gòu),在轉(zhuǎn)發(fā)過程中還要對通訊進行某種修改和轉(zhuǎn)換。來看看我是怎么用SOCKS代理來穿透防火墻的吧。 先來看看QQ中我們怎么用SOCKS代理吧。首先在QQ的任務(wù)欄通知區(qū)的圖標(biāo)處點右鍵,然后選擇系統(tǒng)參數(shù),然后選擇網(wǎng)絡(luò)設(shè)置,選中使用“SOCKS5代理服務(wù)器”,填入你所用的SOCKS代理地址和端口號(如圖1),還可以點測試看看這個SOCKS5代理可用否。確定后,你的QQ就是通過61.136.132.138:1080這個SOCKS5代理上線的,你所有的數(shù)據(jù)包現(xiàn)在都是發(fā)給這個代理服務(wù)器,然后再轉(zhuǎn)發(fā)出去,這樣就可以繞過UDP4000的端口,穿過了防火墻的牢籠。我們還可以用另外一個可以看IP的QQ看看現(xiàn)在你QQ所在的IP(如圖2),顯示的IP是61.136.132.138。這樣還有一個附加功能,就是隱藏了你的真實IP,與陌生人聊天時不用隱身了,他看到的IP也是SOCKS代理服務(wù)器的IP地址。 再來看看如何穿透防火墻來使用FTP工具AbsoluteFTP(圖3)來從網(wǎng)上下載東西。AbsoluteFTP是一款強大的FTP下載工具,支持SOCKS4和SOCKS5代理,而且全中文界面,如果你所在的局域網(wǎng)被封了21端口導(dǎo)致無法使用FTP下載時,可以用這款軟件加SOCKS代理來繞過防火墻實現(xiàn)FTP功能。FTP既可以用SOCKS4,也可以用SOCKS5代理,而不像QQ只能使用SOCKS5代理。 在AbsoluteFTP的選項設(shè)置中選中全局配置中的防火墻(圖4),然后就可以選擇是采用SOCKS4還是SOCKS5代理、是否需要身份認證等,然后填入SOCKS代理服務(wù)器和端口以及身份認證所需要的用戶名和口令,這樣就能穿過防火墻使用FTP了。 第二招:Socks2HTTP配合SocksCap32 第一招中,如果網(wǎng)管只開放80端口,把SOCKS常用的端口關(guān)閉,或者你想用的軟件本身并不支持SOCKS代理,如Foxmail,或者你就找不到可用的SOCKS代理(網(wǎng)上可用的SOCKS代理數(shù)量遠遠小于可用的HTTP代理數(shù)量),這時第一招就不靈了,怎么辦?請看第二招:Socks2HTTP配合SocksCap32,二者加起來使用的結(jié)果就是只要你有一個可用的HTTP代理,就可使用各種各樣的軟件來直接繞過防火墻而不管它是否支持SOCKS代理,我們分兩種情況來看。 1.防火墻關(guān)閉了SOCKS端口,但你要用的軟件支持SOCKS代理 這種情形下可以直接用Socks2HTTP來搞定。Socks2HTTP(http://www.totalrc.NET/)是一個代理...我們用“netstatJ–aJ–n”命令來看看本機開放的端口(如圖7),就會發(fā)現(xiàn)本機多出個1080端口,這個端口就是HTTP2socks模擬出來的在本機上運行的SOCKS代理服務(wù)器偵聽端口,現(xiàn)在你就擁有一個本地的SOCKS5代理服務(wù)器了。 接下來我們看看在QQ等支持SOCKS接口的軟件中該如何設(shè)置代理服務(wù)器??聪旅鎴D8,直接將SOCKS5服務(wù)器地址添為127.0.0.1,端口為1080,趕快測試一下吧。 2.防火墻關(guān)閉了SOCKS端口,并且你想用的軟件不支持SOCKS代理 這就稍微麻煩一些,需要另外一個軟件SocksCap32的配合支持來穿透防火墻。SocksCap32是NEC公司(http://www.socks.nec.com)開發(fā)的,?..P就解決了。HTTPfProxy網(wǎng)上有的是,只要有了HTTP代理就有了SOCKS代理。因為Socks2HTTP就是把HTTP代理模擬成SOCKS代理,如果再配合剛才提到的Socks2HTTP,就可以穿透防火墻來使用那些本身沒有SOCKS接口的軟件了,下面我們來解釋這個過程! 現(xiàn)在網(wǎng)上已經(jīng)有了SocksCap的漢化版本(http://www.ttdown.com/softview.asp?...ksCap的控制臺。 為了更好理解,我把這個過程分成幾步: 第一步:首先按照第一部分那樣配置好你的Socks2HTTP,填入可用的HTTP代理,啟動,然后你就擁有一個本地的SOCKS代理服務(wù)器127.0.0.1,端口是1080,現(xiàn)在就可以用這個SOCKS代理來配置你的SocksCap。 第二步:運行SocksCap,如果是第一次運行,系統(tǒng)會自動提示你是否進入設(shè)置界面,如果不是第一次運行,可以選擇SocksCap中的文件→設(shè)置進入設(shè)置界面,如圖10。 第三步:在SocksCap的設(shè)置界面中填入Socks2HTTP模擬出來的本地SOCKS代理127.0.0.1,端口是1080,“協(xié)議”處選擇“SOCKS版本5(5)”→“由遠程決定所有名字”,其余部分,例如直接連接的設(shè)置是為了有些內(nèi)部房梢災(zāi)苯恿傭揮肧OCKS代理,日志部分可設(shè)置是否產(chǎn)生日志,日志功能能幫助診斷連接失敗的原因,我們這里可以對其他部分直接采用默認設(shè)置。 第四步:建立“應(yīng)用程序標(biāo)識項”。應(yīng)用程序標(biāo)識項是在SocksCap中新建的一個快捷方式,這個快捷方式指向你所要用的工具,在SocksCap中啟動這個工具就相當(dāng)于“賦予”了這個工具的SOCKS接口能力。有兩種方式來建立這種快捷方式: 1.用鼠標(biāo)拖動桌面上的Cterm快捷鍵到SocksCap的空白處,松開鼠標(biāo)即會彈出菜單,選擇“應(yīng)用程序標(biāo)識項”系統(tǒng)會自動建立好標(biāo)識項(見圖11),點確定即可。 2.也可以點擊“新建”,在彈出的對話框里填入相應(yīng)內(nèi)容,點擊確定。 第五步:運行程序。在SocksCap控制臺中雙擊剛才新建的Cterm快捷方式就可以直接使用了,比方說我現(xiàn)在想連接bbs.mit.edu(圖12),以前因為我在教育網(wǎng)里無法訪問國外網(wǎng)站,而且網(wǎng)管封了Telnet的23端口,我無法連上這個BBS,現(xiàn)在通過Socks2HTTP和SocksCap,不僅可以出國,而且可以使用Telnet服務(wù)連上MIT的BBS,穿透了防火墻!其他工具,比方說FTP、Outlook等,也一樣使用。尤其值得一提的是可以用Outlook收Hotmail的信,如果沒有這種辦法,對于我們這些處在教育網(wǎng)里的窮人(無出國權(quán)限)來講,只能乖乖用HTTP代理上Hotmail的網(wǎng)站,用WWW方式收信。現(xiàn)在有這個就好了,相當(dāng)于給Outlook配備了SOCKS接口,直接就可以在Outlook里面收信了。 第三招:HTTPTunel 上面兩招也許就夠用了,但用上面兩招的前提是你要有可用的HTTP代理,從你這里發(fā)送出的所有數(shù)據(jù)包都是經(jīng)過包裝后通過代理轉(zhuǎn)一圈然后再到達它的目的地,這樣會帶來兩個問題: 第一:速度問題,比方說從A發(fā)送數(shù)據(jù)經(jīng)過代理B到達C,如果沒有防火墻,數(shù)據(jù)是直接從A發(fā)到C;現(xiàn)在因為要繞過防火墻,首先必須要將從A發(fā)出的數(shù)據(jù)封裝,使之能夠繞過防火墻,然后發(fā)給代理B,B再將這些數(shù)據(jù)解封再傳給C,從C回來的數(shù)據(jù)也要走一樣的過程。這樣一來,且先不考慮把這些數(shù)據(jù)封裝、解封去需要耗費的時間,單是經(jīng)過C繞這么大一個圈子,速度肯定要大打折扣,所以一般來講肯定不如直接連接速度快。 第二:過度依賴于代理導(dǎo)致的穩(wěn)定xx問題,網(wǎng)上找到的代理肯定不是很穩(wěn)定,很多時候容易產(chǎn)生丟包、服務(wù)中斷的情況。其實我們并不是非要通過代理中轉(zhuǎn),比方說你哥們在宿舍開了FTP,然后他把精彩的電影放上去,你要看,可是你所在的局域網(wǎng)網(wǎng)管關(guān)閉了21的FTP端口,這樣你就沒法Down了,怎么辦?用HTTPTunnel,Tunnel這個英文單詞的意思是隧道,通常HTTPTunnel被稱之為HTTP暗道,它的原理就是將數(shù)據(jù)偽裝成HTTP的數(shù)據(jù)形式來穿過防火墻,實際上是在HTTP請求中創(chuàng)建了一個雙向的虛擬數(shù)據(jù)連接來穿透防火墻。說得簡單點,就是說在防火墻兩邊都設(shè)立一個轉(zhuǎn)換程序,將原來需要發(fā)送或接受的數(shù)據(jù)包封裝成HTTP請求的格式騙過防火墻,所以它不需要別的代理服務(wù)器而直接穿透防火墻。HTTPTunnel剛開始時只有Unix版本,現(xiàn)在已經(jīng)有人把它移植到Window平臺上了,它包括兩個程序,htc和hts,其中htc是客戶端,而hts是服務(wù)器端,我們現(xiàn)在來看看我是如何用它們的。比如開了FTP的機器的IP是192.168.1.231,我本地的機器的IP是192.168.1.226,現(xiàn)在我本地因為防火墻的原因無法連接到FTP上,現(xiàn)在用HTTPTunnel的過程如下: 第一步:在我的機器上(192.168.1.226)啟動HTTPTunnel客戶端。啟動MS-DOS的命令行方式,然后執(zhí)行如圖13命令,其中htc是客戶端程序,-f參數(shù)表示將來自192.168.1.231:80的數(shù)據(jù)全部轉(zhuǎn)發(fā)到本機的8888端口,這個端口可以隨便選,只要本機沒有占用就可以。 然后我們用Netstat看一下本機現(xiàn)在開放的端口,發(fā)現(xiàn)8888端口已在偵聽(如圖14)。 第二步:在對方機器上啟動HTTPTunnel的服務(wù)器端,并執(zhí)行命令“htsJ-fJlocalhost:21J80”,這個命令的意思是說把本機21端口發(fā)出去的數(shù)據(jù)全部通過80端口中轉(zhuǎn)一下,并且開放80端口作為偵聽端口,再用Neststat看一下他的機器,就會發(fā)現(xiàn)80端口現(xiàn)在也在偵聽狀態(tài)(如圖15)。 第三步:在我的機器上用FTP連接本機的8888端口(圖16),現(xiàn)在已經(jīng)連上對方的機器了,看到Movie沒有(圖17),嘿嘿,快點去下載吧! 可是,人家看到的怎么是127.0.0.1而不是192.168.1.231的地址?因為我現(xiàn)在是連接本機的8888端口,防火墻肯定不會有反應(yīng),因為我沒往外發(fā)包,當(dāng)然局域網(wǎng)的防火墻不知道了?,F(xiàn)在連接上本機的8888端口以后,F(xiàn)TP的數(shù)據(jù)包不管是控制信息還是數(shù)據(jù)信息,都被htc偽裝成HTTP數(shù)據(jù)包然后發(fā)過去,在防火墻看來,這都是正常數(shù)據(jù),相當(dāng)于欺騙了防火墻。 需要說明的是,這一招的使用需要其他機器的配合,就是說要在他的機器上啟動一個hts,把他所提供的服務(wù),如FTP等重定向到防火墻所允許的80端口上,這樣才可以成功繞過防火墻!肯定有人會問,如果對方的機器上本身就有WWW服務(wù),也就是說他的80端口在偵聽,這么做會不會沖突?HTTPTunnel的優(yōu)點就在于,即使他的機器以前80端口開著,現(xiàn)在這么用也不會出現(xiàn)什么問題,正常的Web訪問仍然走老路子,重定向的隧道服務(wù)也暢通無阻!而且這種方法有人用鼎鼎大名的入侵檢測系統(tǒng)Snort來檢測,居然沒有發(fā)現(xiàn),隱蔽xx很強。 不過還有最后一點需要提醒,那就是所有這些招數(shù)實際上是利用防火墻配置和系統(tǒng)安全管理上的漏洞,如果碰到一個死心眼的網(wǎng)管,一天到晚在網(wǎng)關(guān)那里蹲著,看看有那些漏洞沒有添好,或者更牛的用TCPDump來抓包分析,一個數(shù)據(jù)包一個數(shù)據(jù)包分析,那只能歇菜了。 該文章在 2017/5/27 14:35:00 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |