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