前幾天完了Hacknet寫了篇關於如何使用漏洞進行攻擊的博客,但是有時候想要拿到某些信息入侵別人的電腦就小題大做了,這篇博客來講一講如何在局域網中進行網絡欺騙。
這篇博客用途為教育意義,請勿拿其中提到的方法在公共網絡中使用。
首先來說一說這次要幹什麼,就拿我們學校的登錄頁面做例子吧 https://login.shef.ac.uk ,這次講述如何竊取局域網中其他人的登錄密碼。
1 概述
這次得操作還是會在局域網環境中進行,使用一台Linux Mint電腦作為攻擊者(Attacker),使用我自己的Google Nexus 6P作為被攻擊的對象(Victim)。
下圖是網絡佈局:
我的筆記本電腦作為攻擊者IP為172.20.10.5,手機IP為172.20.10.6,路由器的網關地址為172.20.10.1 。
2 中間人攻擊(Man-in-the-Middle Attack)
我的手機若想訪問互聯網,那麼他會將請求發送到路由器,路由器再訪問互聯網,然後將網上的信息傳回給手機。 那麼攻擊者根本沒有機會看到手機和路由器之間發送了什麼,也看不見路由器向手機傳回了什麼信息。 那麼,有一種攻擊手法叫做中間人攻擊(MITM),這是一種很常見的攻擊手段,攻擊者會通過欺騙方式劫持手機和路由器之間的消息,導致所有受害者的發送給路由器的信息都會被 發送到攻擊者,並由攻擊者進行轉發傳送到路由器,通過這樣的方式,受害者想要發送的消息通通經過攻擊者的電腦。
3 ARP欺騙 ( ARP Spoofing )
那麼既然知道了中間人攻擊的大致原理,那麼具體有什麼攻擊手段呢,最常用的手段就是ARP欺騙。
在局域網中,區分不同的機器並不是使用普通的IP地址,所有的網絡流通都是通過MAC地址流通的,比如我的電腦(攻擊者)IP為172.20.10.5,他的MAC地址可能為aa- bb-cc-11-22-33 之類的序列,這個序列在一台機器上是惟一的,路由器通過這個地址為我發送消息。 這樣的IP地址與MAC地址的映射是通過ARP來實現的。
ARP(Address Resolution Protocol)是地址解析協議,是一種將IP地址轉化成物理地址的協議,處於OSI中的網絡層。 在所有使用tcp/ip協議的電腦中,都會有一個緩存表,緩存表裡面IP地址與MAC地址一一對應,通過這張ARP緩存表,可以知道每一台機器的IP地址對應的MAC地址是 什麼。
就像剛才說的,路由器(網關+交換機)與整個網絡中的其他設備都會有這樣一張ARP緩存表,那麼這張緩存表是怎麼得到的呢? 比如路由器想要向手機(172.20.10.5)發送消息,但是緩存表裡面沒有172.20.10.5的MAC地址,那麼路由器將會發送一個廣播,詢問整個網絡裡所有的設備172.20.10.5 的MAC地址是多少, 其中真正擁有這個IP地址的設備會回應他自己的MAC地址,然後路由器就會將這對地址加入到ARP緩存表中,下次再要向172.20.10.5發送數據的時候就有地址了。
因為所有tcp/ip協議的機器都有這個功能,局域網兩台機器要是想傳數據,都會預先發送廣播詢問,特定IP的MAC地址是什麼並等待其他機器回應。
那麼,這個機制是可以被利用的,攻擊者可以詢問發送廣播詢問網關和被攻擊者的MAC地址,並且回復相應錯誤的信息,這樣就可以造成信息不對稱,使得受害者認為攻擊者的地址為 路由器的地址,而路由器會以為被攻擊者地址為攻擊者的地址。 這樣,被攻擊者機器發送的所有的數據都會經過攻擊者轉發到路由器,反之,路由器想要發給被攻擊者的數據也會通過攻擊者轉發到被攻擊者。
4 Ettercap
想要進行ARP攻擊,可以使用Ettercap,這是一款嗅探和欺騙工具。
進入工具後點擊Host,Scan,然後List將網絡環境中的機器列出來,從上圖可以看到172.20.10.1就是網關了,172.20.10.6就是手機(被攻擊者),將網關作為Target1,手機作為 Target 2.
然後點擊MITM,選擇ARP Poisoning,勾選Sniff Remote Connections點擊確定。 然後點擊Start之後我們的筆記本電腦(172.20.10.5)已經發起了中間人攻擊,之後手機所有的網絡流量都會經過我的筆記本電腦。
5 流量分析
之後既然所有的網絡流量都從我的電腦走,那麼可以使用Wireshark來進行抓包和分析操作,試著去分析一下情景,就拿我以前的學校舉個例子好了。 (主要是因為這個站還在使用http協議)
我輸入了用戶名TEST,密碼123456,然後點擊Login按鈕。
然後就可以在Wireshark上看見了,首先過濾一下協議為http。 Wireshark會把每次請求按幀羅列出來。 然後大概看一下就可以看到剛才點擊login之後手機發送的請求。
然後拷貝出來拆分一下,我們已經可以看到user_id=TEST,至於密碼,網站加密了一下,但是稍微有編程經驗的人可以看出來這是一個base64編碼後的字符串,隨便百度下base64解碼然後 就能解出來密碼是123456。
這個方法兩年前用可能還方便,但是現在網站都用https了,這個方法也就不能再使用了,因為抓到的https包都是加密過的,解密很困難。
6 社會工程學 (Social Engineering)
那麼既然抓取https包很難分析出來密碼,那麼我覺得使用社會工程學來解決問題更方便些。 可以偽造出來一個和真實頁面一樣的頁面放在自己的電腦上,引導他人訪問自己的釣魚網站。
首先在Linux上部署好Web服務器,Apache2,然後訪問下localhost或者127.0.01看下Apache有沒有成功啟用,如果啟用了,將會看到類似如下的頁面。
然後可以使用httrack來客隆一下學校的登錄頁面,拷貝到Web服務器的根目錄 /var/www/html。 然後重新訪問localhost試一試。
左邊的是真的,右邊的是假的,長得一樣,為了區分我在假的頁面Log into旁邊加了一個X。
然後只要在局域網內,讓別人訪問你的IP,172.20.10.5就能進入這個釣魚頁面,不過。 。 。 對方又不傻,你說這個地址是學校的登錄頁面他就信嗎。
7 DNS欺騙 (DNS Spoofing/ DNS cache poisoning )
DNS(Domain Name System),域名系統,是一個用來儲存域名與服務器IP地址映射的數據庫,比如你想訪問百度,那麼你的請求會先通過DNS服務器,DNS查抄到baidu.com的ip然後直接 訪問這個IP。
那麼,可以偽造一個DNS服務器,使得被攻擊者對學校登錄頁面 https://login.shef.ac.uk 的IP查詢被引導到我的IP地址(172.20.10.5)就好了,剛好Ettercap也有這個功能。
首先編輯Ettercap的DNS映射,在/etc/ettercap/目錄下的etter.dns文件。
映射login.shef.ac.uk的A記錄到我的IP172.20.10.5,然後保存這個文件
回到Ettercap點擊Plugin,找到dns_spoof雙擊啟用即可。
之後被攻擊者訪問login.shef.ac.uk的時候,我偽造的DNS服務器會返回給他我自己的ip,導致對方訪問進入我的釣魚頁面。
來看下DNS欺騙前後的對比,可以看到經過DNS欺騙,login.shef.ac.uk的地址已經被修改為172.20.10.5,也就是釣魚頁面的地址。
8 防範措施
至於如何防範中間人攻擊,現在已經到了https的時代,如果你的機器被中間人攻擊了,訪問頁面的時候瀏覽器會有相應的提示:
並且我偽造出來的釣魚網站沒有https的證書,在Chrome瀏覽器上也會有個感嘆號(夸克瀏覽器就不會,可能是因為他們產品經理屁都不懂去掉了這個功能,夸克瀏覽器雖然是 出了名的好用,但是上我的釣魚網站根本看不出來)
並且有技術的同學可以用Wireshark抓一下包,如果ARP被做了手腳,抓ARP的包之後是能看出來的,會顯示一個Duplicate IP Address detected的警告。
本文作者周毅剛,未經允許請勿轉載。