wifidog 認證

Wifi有一種web方式認證方案,當連接到某些不加密的熱點之後,會跳轉到一個網頁來認證登陸,大家熟悉的CMCC就採用了這種web的驗證方式。
它的原理是在得到正確的認證之前,會把所有的流量重定向到認證服務器上,通過認證後,便可以正常使用。
如果說僅僅想獲取web驗證時其他用戶的用戶名和密碼,arp欺騙然後嗅探足夠了。因爲此時攻擊者已經分配到了ip,且同一網關下產生的流量是不會重定向的。
但是目前的情況是,認證服務器用的https加密傳輸,無法嗅探到明文密碼。
於是萌生了僞造熱點及web認證服務器,然後記錄密碼的想法。

客戶端在接受WiFi信號的時候有一個特點,在ssid相同的時候,會只保留信號強的那一個無線路由的ssid。
這樣,只要僞造熱點的ssid與原熱點的相同,會有部分人搜到僞造的熱點,從而登陸,記錄密碼。

本無線路由用的ddwrt的系統,裝了wifidog來進行輔助web認證。

至於如何搭建web認證系統,百度一大把,但主要是用了wiwiz和wifiap這兩個成熟的網站提供的方案。
但是,利用第三方的網站無法攔截到用戶名和密碼,而且無法控制認證的過程。
最好的解決方法是自己搭建一個簡單的系統。

Wifidog的認證流程如下:
1、客戶端發出一個http請求(http://www.xxx.com)
2、網關將該請求信息以及網關本身的一些信息作爲參數,將原始的請求重定向到web認證服務器(http://auth_server/login/)
3、Web認證服務器通過客戶端的認證之後,返回一個一次性的token,客戶端帶着這個token去網關上的wifidog開放的端口去做驗證(http://GatewayIP:GatewayPort/wifidog/auth?token=[auth token])
4、Wifidog拿到token後,到web認證服務器檢測token是否有效,如果有效則通過客戶端的驗證,開放訪問權限,並將客戶端重定向到web認證服務器的歡迎界面(http://auth_server/portal/);如果token無效,則需要繼續驗證

Wifidog官方推薦的web認證服務軟件爲authpuppy (http://www.authpuppy.org),不過其代碼比較複雜,可以參考wifidog之前的web認證服務軟件。獲取方式爲:
svn checkout https://dev.wifidog.org/svn/trunk/wifidog-auth
web認證服務軟件用php寫成,重點文件爲wifidog-auth\wifidog\login\index.php(客戶端web認證、產生token以及重定向到wifidog的開放端口)、wifidog-auth\wifidog\auth\index.php(wifidog驗證token)、wifidog-auth\wifidog\portal\index.php(認證成功後頁面重定向)。宏定義在wifidog-auth\wifidog\include\common.php文件中。

瞭解了基本流程就可以DIY出一個簡單的web認證服務器了。在認證的過程中可以順便記錄下客戶端的密碼。
路由器上Wifidog配置如下圖。重點配置的地方爲端口號(port),認證服務器(AuthServer Hostname), 認證服務器web端口(AuthServer HTTP Port),路徑(AuthServer Path)。

1.png

web認證服務器端代碼大家自己發揮吧。我個人只是實現了記錄用戶名密碼這樣一個簡單的功能,如果要做的好的話可以用用戶提交的密碼到真正的認證服務器做一次認證來返回合適的結果,以及自己搭建dns服務器僞裝的更加逼真,但是對於那些比較敏感的用戶,還是不容易進行欺騙的,比如用回會發現ssl加密不見了。

考慮到功耗和實用問題,我的web認證服務器是搭建在樹莓派上的。配置好無線路由的WLAN確保能聯網之後,設置路由器的ip爲10.1.1.1,手工配置樹莓派靜態ip爲10.1.1.2。樹莓派上安裝nginx和php,配置好webserver的環境,上傳自己的代碼。開啓無線路由的wifidog就可以守株待兔了。

當用戶連接到自己搭建的無線路由器之後,可以說所有的網絡流量都在控制之中了。不過怎麼拿到這些流量成了一個問題。在此有三種拿到流量的方法。

1、ARP欺騙
這個不多說,大家都懂。不過有種偏離正題的感覺。
2、網線嗅探
當所處的環境通過網線來連到互聯網時可用這個方法。將網線接入自制的硬件並將另一端插到無線路由的WLAN口,做好相應的配置。所需硬件參見我之前的一個帖子。原理類似於Throwing star lan tap,直接監聽網線上的數據(無線路由的WLAN口)
3、通過筆記本做中介
當所處的環境只有無線網連到Internet時,可用筆記本來搭建一箇中介。
其連接關係爲:
AP—無線網卡—有線網卡—自己的無線路由—受害者
這時用筆記本就可以直接嗅探到所有的數據。

這裏以windows環境爲例,演示如何搭建這個數據流鏈條。
在無線網卡連接到無線網之後,在屬性中選擇Internet連接共享,共享給以太網卡(有線網卡)。

2.png

此時有線網卡的ip會被設置爲192.168.137.1

3.png

用網線連接有線網卡的網口和無線路由的WLAN。在無線路由的配置頁面,將WLAN口配置靜態ip爲192.168.137.2,子網掩碼255.255.255.0,網關爲192.168.137.1。
這時整個數據流鏈條便搭建成功。

至於在linux下的搭建,注意打開ip_forward功能,並配置好iptables。因爲沒有linux環境,不在此詳細演示。

對於流經網卡的數據包,可以收集的信息主要有兩種:密碼和session。
windows下的cain用來嗅探並提取得到的用戶名密碼,改下規則也能得到特定的cookie。
linux下的ettercap設置好規則能獲取到幾乎所有想要的信息,還能用來更改返回的web頁面、掛馬、添加cookie等等,可謂神器。

至於開啓了ssl加密的服務器,可以用ssltrip來得到明文傳送的數據。
如果不怕麻煩的話,還可以自己搭設dns服務器來釣魚,不過這樣就有些殺雞用牛刀了。

PS:最近出了個叫極路由的東西,號稱自動翻牆。目測是內置了一個vpn。大家有興趣可以去了解下~
PPS:利用web認證方式的熱點是掛馬利器哦
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章