1. 程式人生 > 其它 >新手教程:區域網DNS劫持實戰

新手教程:區域網DNS劫持實戰

01 原理

DNS決定的是我們的域名將解析到哪一個IP地址的記錄,是基於UDP協議的一種應用層協議

這個攻擊的前提是攻擊者掌控了你的閘道器(可以是路由器,交換機,或者運營商),一般來說,在一個WLAN下面,使用ARP劫持就可以達到此效果。

你在訪問一個網站的過程中,經歷瞭如下幾個階段: 以訪問freebuf的主頁為例:

1、位址列輸入freebuf.com

2、訪問本機的hosts檔案,查詢 freebuf.com 所對應的 IP,若找到,則訪問該IP

3、若未找到,則進行這一步,去(遠端的)DNS伺服器上面找freebuf.com 的IP,訪問該IP

可以通過Wireshark抓包來看一下這個過程

這是一個發向baidu.com的DNS請求

這是DNS伺服器返回的內容:

中間人劫持就發生在第三步:由於惡意攻擊者控制了你的閘道器,當你傳送了一個查詢freebuf.com的IP的請求的時候,中間人攔截住,並返回給你一個惡意網址的IP,你的瀏覽器就會把這個IP當做你想要訪問的域名的IP!!這個IP是攻擊者搭建的一個模仿了目標網站前端介面的介面,當你在該介面輸入使用者名稱密碼或者付款操作的時候,就會中招。

由於DNS劫持導向的介面的URL是完全正確的,因此 這類攻擊一般極難分辨!

攻擊者可以將網頁的前端做的極為完善!幾乎和原網頁一模一樣,各種連結,也都指向正確的地方,只有這個登陸框是有問題的,一旦輸入使用者名稱密碼就會被攻擊者所接受到。

02 防範

一般來說,這種攻擊的防範是很難的!因為URL和頁面都是正常的,不是對web技術有很深瞭解的人根本無從下手(如果攻擊者的頁面復原的足夠真實的話,但是我們還是有一些方法來進行防範的

1、使用SSL(HTTPS)進行登入,攻擊者可以得到公鑰,但是並不能夠得到伺服器的私鑰

2、當瀏覽器提示出現證書問題的時候,謹慎,再謹慎!確定你所在的網路環境是安全的,該網站是可信的再去訪問。

3、不在連線公共wifi的時候隨意進行登陸操作

如果出現了像上圖這樣的提示,那麼有兩種可能,

一種是伺服器的HTTPS證書沒有正確的配置,

另一種就是你可能遭到了中間人劫持,數字證書無法通過瀏覽器的驗證

一般來說,只有一些公司和學校的內網,一些個人站,和(12306) ,會遭遇證書配置的問題。其他的正常大型站點,尤其是我們經常使用的一些網站,不會出現此類問題,而需要登入的,經常遭遇釣魚的,正是這些站點。因此,遭遇這種情況的時候,一定不要輕易的填寫使用者名稱和密碼。

這種攻擊的影響的範圍一般是很小的,只侷限魚一個內網的範圍,總體來說還是不必擔心過多,當然,如果是運營商劫持,那就另當別論,不過運營商劫持一般也只是插入廣告,不會大膽的直接用這種方式進行釣魚攻擊。

03 攻擊者的目的

釣魚攻擊盜取密碼

誘導使用者進行填寫登入表單的操作,將POST的地址改為自己的伺服器地址,以獲取受害者的使用者名稱和密碼 特別注意: 有一種這樣的情況,使用者在填入表單之後,使用者猶豫了,並未點選提交/登入 之類的按鈕以傳送提交表單,但是此時,輸入的內容已經通過ajax的方式傳送了出去。

一般來說,這樣的submit函式應該是在按鈕被點選之後執行,但是攻擊者可以可以在使用者每一次輸入的動作之後使用on事件來執行這個函式,可以使得使用者不點選就傳送。

釣魚攻擊劫持支付

在支付的介面進行劫持使得使用者的支付寶,或者銀行卡支付,使得支付到攻擊者的賬戶中。

植入廣告

這種方式的DNS劫持一般是運營商所為的,大面積的劫持

(像上圖右下角的那樣,就類似於運營商的廣告劫持,當然這個可能是站點自己的廣告,找不到運營商劫持的圖了,拿這張圖演示一下)

有兩種方式

HTTP劫持

將攔截到的HTML文字中間加一個 position為fixed的div,一般在右下角,顯示出廣告

DNS劫持

將域名劫持到一個攻擊者的網站中,含有廣告,再用iframe的方式來引入使用者要訪問的網站。

04 攻擊復現

我們可以對這種攻擊方式進行復現, 在一個路由器下面的多臺機器,使用一臺進行劫持,另一臺進行模擬受害者進行測試

準備工作

進行劫持的機器: 最好使用 kali linux 在本地或者遠端撘一個HTTP伺服器,作為釣魚網站,用於偽裝目標網站 最好安裝一個大功率的無線網絡卡 安裝劫持工具ettercap (kali自帶) 測試機器安裝瀏覽器(廢話,是臺電腦都有,純命令列linux用lynx也可以) 兩臺電腦接入同一個無線路由器或者集線器(最好不要使用交換機,因為必須要取得交換機本身的控制才可以進行,而路由器只需要進行欺騙就可以)

操作指南

首先,在ettercap的配置檔案裡面配置你要進行劫持的DNS 有關於ettercap dnS的配置檔案的木庫在 /etc/ettercap/etter.dns 開啟這個檔案,我們可以看到,作者已經內建了一些例子

作者很調皮的把微軟公司的主頁microsoft.com解析到了linux.org的ip,開源萬歲!linux是至大的! 迴歸正題,我們可以參照這幾個例子來編寫我們自己需要的劫持規則格式就是 域名 dns記錄型別 IP 什麼是dns記錄型別呢?

更詳細的描述可以參見維基百科DNS解析記錄-維基百科

一般來說,在做DNS劫持的時候,我們使用A記錄,比如我們要把百度劫持到bing(考慮到有些朋友並沒有扶牆),首先用ping/traceroute/whois之類的東西獲取bing.com的ip 13.107.21.200

我們在這個檔案中加上一條劫持的規則

做DNS劫持的時候,我們需要將其劫持到我們自己的HTTP伺服器處,使用ifconfig(*nix) ,ipconfig(windows)來檢視本機的IP地址,一般來說區域網地址為 192.168.xxx.xxx,10.xxx.xxx.xx,172.xxx.xxx.xxx

下一步,就是使用apache或者nginx之類的web server 來撘起我們自己的伺服器,用lamp之類的也可以,網上教程很多,不再贅述。

下一步,開啟ettercap

先選擇sniff->unified sniff 然後開啟hosts->host list 選中全部的主機,點選add to target 1

然後點選Mitm->ARP Posining

選中第一個選框 sniff remote connections

然後在plugin->manage plugin裡面雙擊dns spoof 來啟用這個外掛

這個時候,目標就已經處於被劫持的狀態了 使用測試機器的瀏覽器訪問你劫持了的網站,就可以看到你自己撘的伺服器頁面了,我這裡沒有改動,是apache的預設頁面

當然,這個攻擊是有不小的失敗機率的,這是由於中間人攻擊的原理,網絡卡的問題,閘道器的限制,還有 DNS快取,等多種因素導致的,因此,劫持失敗也是很有可能的。

05 更深入的瞭解

如果想要學習這方面更深入的內容,可以先複習一下各位的計算機網路的知識,瞭解應用層協議HTTPS,HTTP,DNS的一些細節。對於資料鏈路和傳輸層的ARP協議也需要比較深刻的瞭解

kali linux在無線方面有很多很好用的工具比如aircrack-ng,ettercap,arpspoof,sslstrip等等可以使用,可以參考kali docs進行學習