1. 程式人生 > >資訊保安實驗:實現一個fake-wifi

資訊保安實驗:實現一個fake-wifi

一、引言

這是資訊保安課上老師講的一個案例吧,某人建立一個假的熱點,然後等待人來連線,然後去獲取連線者的資料。

這個實驗感覺還是比較有意思的,畢竟以前總聽說過假WIFI洩露資料的案例但從來沒有親手實驗過,所以這也算是一個比較好的機會吧,更何況交實驗報告還能拿分。。

二、開放新的熱點:

雖然這個實驗名稱叫做fake-wifi,但本質上這是一個真正的wifi,只是開放者可以監聽到其中的資料包而已,所以我們首先要做的是開放一個熱點。

這裡我用的是Ubuntu 16.04來開放熱點,儘管老師說過Linux下一行命令就可以實現熱點的開放,但是我沒有找到這樣的方法,一位博主給出了命令列的開放方法,不過要下額外的軟體,並且配置也比較多:

Ubuntu16.04命令列方式開放熱點

這裡我使用了一種圖形化的方法,首先保證自己有了有線連線,在右上角點選左數第三個網路連線的圖示,然後出現很多選項,選擇"編輯連結"。

編輯所有連結

在這個介面選擇增加,然後選擇WIFI型別。

選擇WIFI型別

 連線名稱自己起,這裡展示一下各標籤卡的配置:

點選儲存即可,然後用電腦連線到新建立的WIFI,如果找不到的話,可以連結到隱藏的WIFI網路。

選擇剛建立的熱點

點選連線即可,然後就可以用手機去連線這個熱點了,這裡我連線的時候手機上顯示WIFI不能上網,重啟了一下電腦然後再連線就正常了。

三、監聽流量

首先要做的的是找到要監聽的介面,這裡我們可以使用tcpdump命令,在使用該命令之前,我們需要先找到要監聽的介面,這裡使用ifconfig命令,可以看到:

使用ipconfig命令之後

那麼介面的名稱就可以使用enp6s0,後面其實還有一個名稱為wlp7s0的,監聽這個也是可以的。個人感覺後者應該就是WIFI對應的介面,前者則是主介面,而本電腦開熱點的話資料包一定要經過主介面,所以監聽哪個應該都可以。

在去嘗試更多的命令之前,我首先嚐試去竊取一下向自己之前做的網站傳送的密碼,因為我的網站沒用https,而且ip地址什麼的我也都知道,所以比較好實現,這裡使用的命令如下:

sudo tcpdump -i enp6s0 dst xxx.xxx.xx.xxx -nn -X

這裡解釋一下這個命令:

tcpdump屬於特權命令,因此需要sudo來執行,-i引數來指定介面,也就是之前找到的enp6s0,dst則是資料包的目標點,後面接的是我伺服器的地址,-nn指直接用IP名稱及埠而不是服務來顯示,-X指的是以16進位制方式顯示封包的內容。

開啟之後,會進入到如下的狀態:

使用tcpdump之後顯示的內容

這個時候,用連上熱點的手機給我的網站傳送一條資料,填好資訊,然後點選提交:

網站的樣式,只有一個表單

可以看到我們監聽的介面出現了很多資料:

監聽到了資料

這裡也表明我們監聽到了資料包,然後我們需要分析的是HTTP的POST請求,就是我剛才沒有截完圖的部分,如圖:

從資料中可以看到密碼明文

 這裡我圈出來的部分就是剛才傳送的使用者名稱和密碼,這也說明我們成功監聽到了關鍵資料。

 四、重定向頁面到某網站上

由於https協議下,傳輸的資料是加密的,所以直接竊聽是不可取的,因此本實驗的目的更多是通過釣魚網站來獲取https協議的傳輸資料。

1.源網站使用HTTP頭

這個比較好實現,由於現在使用HTTP協議的網站不多了,所以我還是使用我自己的雲伺服器來演示,由於知道伺服器的ip地址,這個實驗更加的容易了,現在是在沒有重定向的情況下訪問該網站的某個頁面。

訪問原來的網址

如圖,這是在正常訪問情況下的結果,然後我們開始進行配置,使得使用我們熱點的人訪問該頁面時重定向到某個我們想展示給他的網頁,這個與本來要訪問的頁面對應的網頁我建立在了我本機的tomcat伺服器的目錄下,內容只有一行字”錯誤的頁面”。

使用iptables命令來重定向ip

如圖所示,我們使用了iptables命令,這裡的關鍵在於-d後面的是原本要訪問的ip地址,--to-destination後面的是重定向後的地址,回車之後就實現了一個重定向。

當設定之後我們再訪問原來的URL:

再次訪問該網址的對應頁面

可以看到,此時已經跳轉到了我們想要展示給對方的頁面,即重定向頁面成功。

*這裡iptables命令重定向之後,如果想要刪除這條重定向,可以用如下命令(具體原理可以百度):

sudo iptables -nt nat -L --line-numbers    #檢視PREOUTING下的所有規則
sudo iptables -t nat -D PREROUTING 1    #刪除對應的規則

2.源網站使用HTTPS頭

其實HTTPS現在位置還算是一個比較好的協議了,雖然本實驗能在一定程度上來進行欺騙,但實際上我們用手機去訪問這個冒牌網站時,還是有警告資訊的,這也一定程度上證明了HTTPS協議的安全性,這裡我用到了tomcat伺服器,別的伺服器應該也可以,關鍵是前者用習慣了。

首先我們要做的是DNS劫持,即將使用者本來要訪問的網址解析為一個放有釣魚網站的地址上去,在Linux上可以通過一個叫做dnsmasq的軟體來實現,通過apt-get就能下載並安裝這款軟體。

安裝好之後我們首先需要修改其配置檔案,即/etc/dnsmasq.conf,這裡我針對的是QQ空間的手機網址,因此我把手機瀏覽器上登入QQ空間的所有域名都解析為了本機地址,如圖:

書寫解析規則

然後重啟dnsmasq服務即可,在Ubuntu下命令為

sudo service dnsmasq restart

*這裡有必要說一下,如果之後又修改了配置檔案然後重啟之前,要斷掉WIFI,關掉相關連結的網頁,否則重啟可能失敗,出現如圖情況:

失敗的重啟

這些操作做完以後,再去訪問手機QQ登入頁面時,會發現如圖的情況:

訪問手機QQ登入頁面

證明域名劫持成功,可以ping一下網址來進行驗證:

ping qq.com

下一步就是要換上自己的釣魚網站,這裡我使用了tomcat伺服器,所以面對的最主要的問題就是如何讓其支援https訪問,網上的教程還是挺多的,基本思路就是製作證書,然後修改埠為443,這樣用https訪問tomcat就能出現結果了,這裡具體過程就不再詳述了,可以參考這篇部落格:

tomcat配置https協議

最後就是換上我們自己的假網頁了,這裡我隨便寫了一個,意思到了就行:

自己寫的假網頁

結束這些之後,我們開啟tomcat伺服器,然後嘗試從連上了fake-wifi熱點的手機上面去訪問QQ空間登入頁面,如圖:

準備訪問手機QQ空間

 當我們去訪問“QQ空間-分享生活,留住感動”時:

瀏覽器發出警告

這裡瀏覽器已經出現了警告,因此這種欺騙可能在現實中不會成功或者對一些安全意識極差的使用者能夠成功,這裡出於實驗的原因我們按下繼續訪問:

顯示出了假網頁
網址卻是真的

如圖,重定向到了之前我們設定的釣魚網站上,並且域名也是一本正經的QQ空間登入域名了。

五、總結

在本次試驗中,我搭建了一個fake-wifi,並嘗試在http協議下監聽了使用者資料,以及在http/https協議下將使用者訪問的正常網站重定向到釣魚網站上。

這個實驗中的欺騙其實在現實中不太行得通,因為這個欺騙成功的前提是使用者的安全意識極低,可以隨便連沒有加密的未知WIFI,並且在瀏覽器預警時選擇忽略。而現在的網民的安全意識還是比較高的,並且WIFI安全問題也頻繁被報道,這也更讓人們在連線WIFI以及使用WIFI時更加謹慎了。不過這個實驗至少對我這樣經常忽略各種警告的人還是有一定的警示作用的。

本次的實驗雖然不是很複雜,不過對我個人還是有一定的幫助的。它為我開啟了資訊保安這一領域的一扇門,讓我認識到要實現某些攻擊手段,不一定要寫很多的程式碼,也不一定要有很高超的計算能力,而在於知識的積累,懂得技術越多,能做的事也就越多,這也充分說明了學習的重要性。