繞過校園網WEB認證_dns2tcp實現


相信很多高校學生都有用WEB認證方式接入校園網的經歷

  拿我所在的大學為例,我們大學的校園網由聯通公司承建,當我連上寢室的無線路由器后,瀏覽器會自動彈出一個由卓智公司開發的認證界面,如下圖:

   如果買了聯通公司的流量,會取得一個賬號和密碼,輸入賬號密碼登陸后就能享用無線了,當然啦,對於愛折騰的人來說,總要想點方法繞過這個認證,不為別的,只為實現內心的一個想法。所以我就在各大技術論壇查詢了一些繞過web認證的方法。網上有很多人給出了方法,這些方法大同小異,基本原理都一樣,但是呢,難免有疏漏和難懂的地方。所以,接下來,我就對這個問題做一次系統的介紹。

  首先我先講一下原理,當我們連上校園網的無線路由器后,雖然上不了網,但是我們的計算機卻分配到了IP地址(那么為什么要給我們分配IP呢?很好回答啦,不分配IP地址web認證就實現不了呀!)此時若我們進行一些上網的操作,例如訪問百度主頁,那么計算機的數據包將從TCP443端口上發出,校園網網關就會攔截從這個端口上發出的數據包。同理從其它端口上發出的數據包也會遭到攔截。

  但是有一個神奇的端口,從這個端口發出的數據包不會遭到網關攔截,它就是UDP53端口。對計算機網絡稍微了解的朋友應該知道在UDP53端口上運行的協議是DNS協議(域名解析協議)也就是說我們現在可以正常查詢網站域名對應的IP地址。例如用Windows自帶的nslookup命令查詢百度的IP地址時會返回一個正確的結果:

PS:接下來可能要提到一些有關域名解析原理和網絡隧道方面的知識,限於篇幅,我就簡單說兩句,想要深入了解的朋友可以參考以下內容:

DNS原理及其解析過程【精彩剖析】: http://369369.blog.51cto.com/319630/812889/

隧道技術:https://baike.baidu.com/item/%E9%9A%A7%E9%81%93%E6%8A%80%E6%9C%AF/10774268

  既然UDP53端口的數據包可以通過網關,那么我們可以在本地運行一個程序將其它端口的數據包偽裝組成UDP53端口的數據包,然后發送到本地域名服務器,那么網關就不會進行攔截了,數據包就順利的通過了網關,可是發送出去的數據報如何返回呢?這就需要我們做進一步的設置。

  接下來我們需要一個VPS(雲服務器)和一個域名,我了便於敘述,我給這個雲服務器起名為V,域名起名為Y。我們偽裝的DNS數據包要查詢的域名就是Y,本地域名服務器接收到這個偽裝后的數據包后,由於它無法解析這個域名Y,便將數據包進行轉發,讓能夠解析Y的域名服務器進行解析,接下來我們將Y設置一個NS記錄,用來指定Y由哪個域名服務器來進行解析,我們指定的域名服務器就是前面提到的V,所以接下來數據包會被發送到V中。此時我們在V中運行一個程序,對偽裝的數據包進行還原,還原后的數據包再發送出去,這樣當V接收到響應數據包后,V上運行的程序會再次對其進行偽裝,偽裝成一個DNS響應數據包,這個DNS響應數據包會沿着上述相反的路徑發送回我們的計算機,我們的計算機再次對這個DNS響應數據包進行還原,到現在,我們真正想要得到的數據包已經到手了。也許上面的敘述有點繞,我放一張圖大家就能明白了:

好了,要是看了圖沒明白也沒有關系,只要按照下面的步驟做就可以了

接下來,到了最重要實戰部分了  

  Windows上與Linux上實現方法不同,就偽裝數據包的程序而言,在windows平台上推薦使用dns2tcp這個軟件,而在linux平台上推薦使用iodine這個軟件,關於iodine的使用,我會再寫一篇文章,所以下面主要講一下dns2tcp的使用,也就是在windows上實現繞過WEB認證,linux系統用戶請移步我的另一篇文章

NO.1:

  在本地計算機上安裝dns2tcp這個軟件,<它的作用是對數據包進行偽裝與還原>
附Windows版下載地址:https://pan.baidu.com/s/1nvDWk9j    提取碼:pgxk

NO.2:

  申請一個VPS,國內VPS服務商眾多,什么阿里雲啦,騰訊雲啦,百度雲啦。在這里我給大家推薦由世紀互聯運營的微軟Azure雲服務器,1元體驗一個月,申請與部署方式很簡單,而且服務器配置與帶寬很高,可惜的是就能使用一個月,其實學服務器開發的大學朋友們也可以申請一個練練手,畢竟這是一次難得的實踐機會嘛!

附微軟Azure雲服務器申請地址:https://www.azure.cn/pricing/1rmb-trial-full/

  有關申請與部署服務器的細節,我就不再贅述了,按照流程走就行。有不懂的地方可以參看微軟給的文檔和視頻教程。

  下面這個操作尤為重要,部署成功服務器后,務必參照微軟的文檔為服務器添加入站與出站規則,也就是哪些類型的數據包可以進出你的服務器,那些類型的數據包會被防火牆攔截,這個步驟決定着偽裝的數據包是否能夠進入到我們的VBS

將TCP80,TCP443,UDP53端口的數據設置為允許入站與出站,如下圖所示:

申請成功后,微軟會給你一個公網IP,這個公網IP一定要牢記,接下來需要用到,現在假定你得到的公網IP為140.205.32.13

NO.3:

  申請一個域名,推薦到阿里雲申請,因為便宜,我申請的.top國際頂級域名第一年才1塊錢。
附申請地址:https://wanwang.aliyun.com/domain/yumingheji

  申請過程請嚴格按照人家的流程,不過要提醒一點的是務必要用真實信息,否則人家會封掉你的域名。

  現在假定你申請到了一個域名,假如你申請到的域名為aliyun.top,你需要進入阿里雲的域名控制台,為其添加兩條記錄。
  第一條為NS記錄,記錄名稱隨便,記錄值也隨便,但是記錄值要牢記,以后用的到。
  假設你添加的NS記錄名稱為dnsalibaba.top,記錄值為dnsaliyun.top。
  再為申請到的域名添加一個A記錄,A記錄的記錄名稱是NS記錄的記錄值,A記錄的記錄值是你所申請到的VPS的公網IP,如下圖:

 

  當本地域名服務器無法解析我們偽裝的數據包后,便將數據包發送給NS記錄指定的服務器dnsaliyun.top,而dnsaliyun.top的IP地址已經在A記錄中給出了,所以剛才原理沒看懂的朋友朋友們現在應該知道為什么本地域名服務器會將數據包發送到我們的VPS中了吧

NO.4:

經過上述三步,我們所需要的資源就都具備了,這是最后一步。

  windows系統用戶在計算機上安裝一個名為xshell的軟件,它用來連接我們的VPS。

  附下載地址:http://www.downxia.com/downinfo/150560.html?fromm

  下載后安裝,安裝時選擇“家庭/學校 ”版,商業版要錢,家庭版其實就能滿足我們的需求了。

  安裝成功后,依次點擊點擊"文件"->"新建"。名稱隨意,協議選擇SSH,主機名填你的VBS公網IP,端口號填22,添完后點擊連接;

  等一會彈出一個輸入用戶名的窗口,輸入你部署服務器時設置的用戶名,輸入完成后點擊記住用戶名,點擊確定。在彈出的新窗口中輸入你部署服務器時設置的密碼,輸入完成后點擊確定,不出意外,你將會連接到你的VBS,如下圖:

 

接下來在Xshell中輸入sudo apt-get install dns2tcp,敲回車,這條命令用來安裝dns2tcp這個軟件,很快就會安裝完畢

 


PS:沒用過Linux的用戶可能看不懂這些Linux命令,但是不懂沒關系,跟着我做就行了。

接下來配置dns2tcp

再次敲入命令:sudo vim /etc/dns2tcpd.conf ,用vim編輯器將其中的內容替換為一下內容(vim編輯器的使用教程網上有):
listen = 10.0.0.4     #這里寫你的雲服務器的內網IP,一般為10.0.0.4
port = 53
user = nobody
chroot = /tmp
domain = dnsaliyun.top         #這里寫你設置的NS記錄值
resources = ssh:127.0.0.1:22,socks:127.0.0.1:1082,http:127.0.0.1:3128

配置完后按ESC鍵,輸入“:wq”后敲回車保存配置文件

下面創建后台進程,運行dns2tcp,依次鍵入並執行如下命令:

screen -S dns2tcpd               #創建后台會話
dns2tcpd -f /etc/dns2tcpd.conf -F -d 2      #啟動dns2tcp

當出現上圖顯示的內容時,說明dns2tcp啟動成功了,此時按下Ctrl + a+d鍵,讓dns2tcp進程后台執行,再關閉與服務器的連接就行了

windows客戶端配置:
打開CMD,鍵入並執行如下命令 : dns2tcpc -r ssh -z dnsaliyun.top 140.205.32.13  -l 8888 -d 2

當出現上圖顯示的內容時,代表會話已經建立了,此時最小化這個窗口【記住千萬不要關閉它!!!】
***注:
-r 后接服務名稱<ssh/socks/http中的任意一個>
-z 后接你設置的NS記錄,和你的VPS公網ip
-l 后接本地端口,隨便一個常用端口就行
-d 開啟 Debug

現在假設你完全按照我給出的流程走的

離成功只有一步之遙了,下面用Xshell轉換Socks4/5通用代理:
  在xshell中仿照上面新建會話:IP地址為127.0.0.1,端口為8888 ;然后點擊隧道,類型選擇socks4/5,端口填1080,輸入完成后點擊確定,若不出意外,此時CMD中會出現大量信息,這些信息代表通過dns2tcp的數據包,這就表明你的電腦已經在和服務器傳輸數據了。而xshell中又會提示你登錄到你的服務器,仿照上文輸入用戶名和密碼(最好選擇記住用戶名和密碼,這樣下次就不用那么麻煩了),點擊確定並成功登錄到你的服務器后,最小化xshell【記住,此時千萬不要關閉xshell!!!】

 

 打開Internet選項,依次選擇"連接"->"局域網設置"->"為LAN使用代理服務器"->"高級"

 在socks/套接字輸入框中,要使用的代理服務器地址填127.0.0.1,端口填1080,然后點擊確定。

 

 

      到此,大功告成,打開你的瀏覽器試試吧!!!

 

附錄:

screen命令的使用:

screen命令用來創建后台進程,進程運行時,便於我們能繼續做其它工作

創建screen會話   screen -S dns2tcpd
啟動dns2tcp   sudo dns2tcpd -f /etc/dns2tcpd.conf -F -d 2
暫時離開快捷鍵 Ctrl + a + d
恢復screen會話 screen -r dns2tcpd
列出當前的會話列表  screen -ls
強行終止dns2tcp進程  screen -S dns2tcpd -X quit

常見DNS記錄的含義

 A記錄 : 用來指定主機名或域名對應的IP地址記錄,通俗來說A記錄就是服務器的IP,域名綁定A記錄就是告訴DNS,當你輸入域名的時候給你引導向設置在DNS的A記錄所對應的服務器。

NS記錄 : 域名服務器記錄,用來指定該域名由哪個DNS服務器來進行解析,簡單的說,NS記錄是指定由哪個DNS服務器解析你的域名。

MX記錄 : 郵件交換記錄,它指向一個郵件服務器,用於電子郵件系統發郵件時根據收信人的地址后綴來定位郵件服務器。

CNAME記錄 : 別名記錄,允許您將多個名字映射到同一台計算機。通常用於同時提供WWW和MAIL服務的計算機。 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM