局域網(wǎng)DNS劫持實戰(zhàn)
局域網(wǎng)DNS劫持實戰(zhàn)
局域網(wǎng)(Local Area Network,LAN)是指在某一區(qū)域內(nèi)由多臺計算機互聯(lián)成的計算機組。一般是方圓幾千米以內(nèi)。局域網(wǎng)可以實現(xiàn)文件管理、應用軟件共享、打印機共享、工作組內(nèi)的日程安排、電子郵件和傳真通信服務等功能。局域網(wǎng)是封閉型的,可以由辦公室內(nèi)的兩臺計算機組成,也可以由一個公司內(nèi)的上千臺計算機組成。下面是小編收集整理的局域網(wǎng)DNS劫持實戰(zhàn)范文,歡迎借鑒參考。
局域網(wǎng)DNS劫持實戰(zhàn)(一)
DNS決定的是我們的域名將解析到哪一個IP地址的記錄,是基于UDP協(xié)議的一種應用層協(xié)議
這個攻擊的前提是攻擊者掌控了你的網(wǎng)關(可以是路由器,交換機,或者運營商),一般來說,在一個WLAN下面,使用ARP劫持就可以達到此效果。
你在訪問一個網(wǎng)站的過程中,經(jīng)歷了如下幾個階段:
以訪問freebuf的主頁為例:
1、地址欄輸入freebuf.com
2、訪問本機的hosts文件,查找 freebuf.com 所對應的 IP,若找到,則訪問該IP
3、若未找到,則進行這一步,去(遠程的)DNS服務器上面找freebuf.com 的IP,訪問該IP
可以通過Wireshark抓包來看一下這個過程
這是一個發(fā)向baidu.com的DNS請求
中間人劫持就發(fā)生在第三步:由于惡意攻擊者控制了你的網(wǎng)關,當你發(fā)送了一個查找freebuf.com的IP的請求的時候,中間人攔截住,并返回給你一個惡意網(wǎng)址的IP,你的瀏覽器就會把這個IP當做你想要訪問的域名的IP!!這個IP是攻擊者搭建的一個模仿了目標網(wǎng)站前端界面的界面,當你在該界面輸入用戶名密碼或者付款操作的時候,就會中招。
由于DNS劫持導向的界面的URL是完全正確的,因此
這類攻擊一般極難分辨!
攻擊者可以將網(wǎng)頁的前端做的極為完善!幾乎和原網(wǎng)頁一模一樣,各種鏈接,也都指向正確的地方,只有這個登陸框是有問題的,一旦輸入用戶名密碼就會被攻擊者所接受到。
2、防范
一般來說,這種攻擊的防范是很難的!因為URL和頁面都是正常的,不是對web技術有很深了解的人根本無從下手(如果攻擊者的頁面復原的足夠真實的話,但是我們還是有一些方法來進行防范的
1、使用SSL(HTTPS)進行登錄,攻擊者可以得到公鑰,但是并不能夠得到服務器的私鑰
2、當瀏覽器提示出現(xiàn)證書問題的時候,謹慎,再謹慎!確定你所在的網(wǎng)絡環(huán)境是安全的,該網(wǎng)站是可信的再去訪問。
3、不在連接公共wifi的時候隨意進行登陸操作
一般來說,只有一些公司和學校的內(nèi)網(wǎng),一些個人站,和(12306) ,會遭遇證書配置的問題。其他的正常大型站點,尤其是我們經(jīng)常使用的一些網(wǎng)站,不會出現(xiàn)此類問題,而需要登錄的,經(jīng)常遭遇釣魚的,正是這些站點。因此,遭遇這種情況的時候,一定不要輕易的填寫用戶名和密碼。
這種攻擊的影響的范圍一般是很小的,只局限魚一個內(nèi)網(wǎng)的范圍,總體來說還是不必擔心過多,當然,如果是運營商劫持,那就另當別論,不過運營商劫持一般也只是插入廣告,不會大膽的直接用這種方式進行釣魚攻擊。
3、攻擊者的目的
釣魚攻擊盜取密碼
誘導用戶進行填寫登錄表單的操作,將POST的地址改為自己的服務器地址,以獲取受害者的用戶名和密碼
特別注意:
有一種這樣的情況,用戶在填入表單之后,用戶猶豫了,并未點擊提交/登錄 之類的按鈕以發(fā)送提交表單,但是此時,輸入的內(nèi)容已經(jīng)通過ajax的方式發(fā)送了出去。
一般來說,這樣的submit函數(shù)應該是在按鈕被點擊之后執(zhí)行,但是攻擊者可以可以在用戶每一次輸入的動作之后使用on事件來執(zhí)行這個函數(shù),可以使得用戶不點擊就發(fā)送。
釣魚攻擊劫持支付
在支付的界面進行劫持使得用戶的支付寶,或者銀行卡支付,使得支付到攻擊者的賬戶中。
植入廣告
這種方式的DNS劫持一般是運營商所為的,大面積的劫持
4、攻擊復現(xiàn)
我們可以對這種攻擊方式進行復現(xiàn),
在一個路由器下面的多臺機器,使用一臺進行劫持,另一臺進行模擬受害者進行測試
準備工作
進行劫持的機器:
最好使用 kali linux
在本地或者遠程撘一個HTTP服務器,作為釣魚網(wǎng)站,用于偽裝目標網(wǎng)站
最好安裝一個大功率的無線網(wǎng)卡
安裝劫持工具ettercap (kali自帶)
測試機器安裝瀏覽器(廢話,是臺電腦都有,純命令行l(wèi)inux用lynx也可以)
兩臺電腦接入同一個無線路由器或者集線器(最好不要使用交換機,因為必須要取得交換機本身的控制才可以進行,而路由器只需要進行欺騙就可以)
操作指南
首先,在ettercap的配置文件里面配置你要進行劫持的DNS
有關于ettercap dnS的配置文件的木庫在 /etc/ettercap/etter.dns
打開這個文件,我們可以看到,作者已經(jīng)內(nèi)置了一些例子
局域網(wǎng)DNS劫持實戰(zhàn)(二)
01
Ettercap是什么?
我們在對WEB安全檢測的時候都會用到Cain和netfuke這兩款工具,功能相信用過的朋友多多少少都知道,但這兩款工具是在windows下運行的。
而ettercap是在linux下運行的 。其實功能都是差不多的,我稱呼它為嗅探工具,ARP欺騙,DNS,劫持,中間人攻擊等等??傊@是一款強大的安全測試工具。
02
DNS是什么?
1、DNS是什么:Domain Name System (域名系統(tǒng) 簡稱:DNS)
2、DNS欺騙是什么:攻擊者(黑客)冒充域名服務器進行欺騙的一種行為 。
3、DNS原理原理:如果可以冒充域名服務器,然后把查詢的IP地址設為攻擊者的IP地址,這樣的話,用戶上網(wǎng)就只能看到攻擊者的主頁,而不是用戶想要取得的網(wǎng)站的主頁了,這就是DNS欺騙的基本原理。DNS欺騙其實并不是真的“黑掉”了對方的網(wǎng)站,而是冒名頂替、招搖撞騙罷了。
03
DNS欺騙實戰(zhàn)
【故事純屬虛構(gòu),請勿當真!】:
那是一個夜黑風高的夜晚,又是刮風,有事閃電的,本想在擼幾盤擼啊擼,搞的我心情一點都不好,于是關掉電腦準備睡覺了,然而突然啊的一聲!瞬間把我從困意中拉了回來,在仔細一聽~~~
在發(fā)現(xiàn)是隔壁賓館在做愛愛,尼瑪~~~搞這么大聲做什么?讓我怎么睡覺啊?尼瑪?shù)?,決定展開一次入侵隔壁電腦。。。
準備工作:
隔壁電腦:192.168.1.12 (賓館一般都裝有還原精靈 所以電腦是裸奔(多數(shù)沒裝防火墻) ) //受害者機器
自帶筆記本:192.168.1.11 (kali linux系統(tǒng) 接上賓館自己那間房的網(wǎng)線) //入侵者機器
網(wǎng)關IP:192.168.1.1
踩點:
怎么知道隔壁的電腦IP地址?
先看自己的房間號,比如是5-11(假如表示5樓11間房),在來到自己房間看自己電腦的IP地址,一般是192.168.1.11
那么隔壁的自己出門去看門牌就知道了,(假如是5-12),那么隔壁的IP地址就是192.168.1.12 最后在ping一下 通了 說明電腦開著,不同,說明電腦關著,或者防火墻什么的。。。
這個方法比較死?當然其它方法也有,根據(jù)自己經(jīng)驗而定。。。
首先先打開ettercap的DNS文件進行編輯,在kali linux2.0下的文件路徑為/etc/ettercap/etter.dns
在對應的位置添加對應的 標識和IP地址 * 代表所有域名 后邊就是你要欺騙為的IP地址,這里是當然是我自己的主機IP地址啦
然后記得保存。
再來編輯/var/www/html/index.html文件 改成你定義頁面 這里我簡單的改了下,因為后邊我們要啟動apache2 也就是網(wǎng)頁服務器 這是主頁文件,說白了目的是為了DNS欺騙成功后,當受害者(隔壁賓館兩口)訪問域名訪問網(wǎng)站后,打開的頁面就是我們這里的這個主頁文件里邊的內(nèi)容。。。。編輯好了---記得保存!
現(xiàn)在我們在到終端輸入命令/etc/init.d/apache2 start 來啟動apache2 服務器 (把本機作為一個服務器) 。
在輸入命令ettercap -G來進入ettercap的圖形界面。我喜歡用圖形界面,也許也windows玩多的原因吧,不喜歡linux下的命令行 ps:雖然看起來很帥的樣子..... - -!
選擇網(wǎng)卡Unfied sniffing---配置
網(wǎng)卡選擇eth0(根據(jù)自己的計算機網(wǎng)卡而定)
再來掃描網(wǎng)關下的所以在線的計算機主機,來到hosts選項下的 scan for hosts
繼續(xù)選著Hosts list 列出掃到的主機
可以看見列出了所有機器,先在列表里選擇網(wǎng)關進行添加,我這里的網(wǎng)關是192.18.1.1。點擊 Add to target 1
局域網(wǎng)DNS劫持實戰(zhàn)(三)
DNS是DomainNameSystem(域名系統(tǒng))的縮寫,簡單來說就是負責域名與IP地址之間的轉(zhuǎn)換,平時我們用到的大部分是域名轉(zhuǎn)IP,當然也支持IP轉(zhuǎn)域名的反向解析。在方方面面都會有DNS的身影,在負載均衡方面也可以借助DNS來實現(xiàn),還有就是黑產(chǎn)們喜歡堅持廣大用戶的DNS來獲取利益,可以說DNS是互聯(lián)網(wǎng)最重要的協(xié)議之一。
0×01 起因
互聯(lián)網(wǎng)上的DNS服務器非常非常的多,有公共的DNS 也有公司自己內(nèi)部使用的DNS也有用于負載均衡的,我們公司呢也要建一個 DNS服務器,搭建DNS我是不擅長,但是搭建完之后需要做一下壓力測試這我就比較喜歡了,畢竟這個壓力測試說好聽叫壓力測試,說不好點那就是DOS攻擊,接下來我就說說我進行壓力測試的過程吧。
0×02 DNS協(xié)議基礎
想要進行壓力測試,至少要能模擬出正常用戶的DNS請求才行,所以構(gòu)造DNS請求報文我們需要先了解DNS協(xié)議的報文格式。
DNS是應用層的協(xié)議,使用TCP和UDP的53端口,不過一般情況下是使用UDP53端口的,所以呢今天我們構(gòu)造的DNS也是基于UDP的。
DNS協(xié)議的報文首部是定長的12字節(jié),分別是標識(16bit)、標志(16bit)、問題記錄數(shù)(16bit)、回答記錄數(shù)(16bit)、授權記錄數(shù)(16bit)、附加信息記錄數(shù)(16bit)。
標識字段是用來匹配請求和響應的,有點類似ip協(xié)議的ID字段,應答報文的標識字段應該和請求報文的相同。
標志是由多個字段組成的
QR字段長度是1bit,用來表示這個DNS報文是請求還是響應,因為DNS的請求和響應的報文首部格式相同,0表示請求,1表示響應。
OPcode字段呢長度是4bit,表示操作類型,0表示正向解析,1表示反向解析,2表示服務器狀態(tài)請求。
AA字段長度為1bit,是授權回答標志位,0表示回答是非權威的,1則表示回答的服務器是授權服務器。
TC字段長度也是1bit,是截斷標志位,1表示報文長度超過了512字節(jié),并且被截斷成了512字節(jié),不過我在抓包的時候抓到很多超過512字節(jié)的
也并沒有被截斷。
RD字段長度為1bit,表示希望遞歸的標志,1表示請求服務器進行遞歸解析,0表示希望反復查詢,但這個怎么查詢還是服務器說了算。
RA字段只在服務器響應中有效,1表示服務器支持遞歸,0表示不支持遞歸。
RA后面的是保留字段,長度為3bit,必須置0。
rCode字段是用來表示錯誤狀態(tài)的,長度為4bit,0表示沒有錯誤,1表示格式錯誤,2表示服務器故障,3表示查詢域名不存在,4表示不知道的解析類型,5表示管理上禁止。
問題記錄數(shù)的16bit表示問題部分所包含的域名解析查詢的個數(shù),理論上最大是65535.
回答記錄數(shù)也是16bit,相應的也是表示響應報文中回答記錄的個數(shù)。
授權記錄數(shù)也是16bit,表示授權部分所包含的授權記錄的個數(shù),請求報文中置0。
附加信息記錄數(shù)長度是16bit,表示附加信息部分所包含的附加信息記錄的個數(shù)。
以上的這12字節(jié)就是DNS包文的首部,我們做壓力測試的話,只需要構(gòu)造請求報文,所以一般情況下回答記錄數(shù)、授權記錄數(shù)、附加信息記錄數(shù)都會置0.
接下來就是DNS的變長部分了,分別是問題部分、回答部分、授權部分、附加信息部分,我們要做只需要問題部分就可以了。
這其中查詢名就是我們要查詢的域名,他是變長的。查詢類型和查詢類是定長的,都是16bit,這兩個要寫在整個報文的結(jié)尾。
查詢類比較簡單,1表示ip協(xié)議,符號為IN。其他協(xié)議的表示是什么其實我也不知道…
查詢類型字段選擇就比較多了,常用的如下圖:
查詢名就是我們常說的域名,比如www.freebuf.com,但是在報文中不能直接這么寫,而是要改成 3www7freebuf3com0 這種形式,字段之間不再以.分割,而是以字符串前的數(shù)字表示這個字符串的長度,最后以0結(jié)束。
0×03 構(gòu)造報文
編程語言:C
運行環(huán)境:kali/ubuntu linux
編譯器:gcc version 6.1.1
在linux中已經(jīng)構(gòu)造好了ip和udp的結(jié)構(gòu)體分別在ip.h和udp.h兩個頭文件中,linux中應該也定義好了DNS協(xié)議的結(jié)構(gòu),不過我沒找到…所以咱就自己構(gòu)造一個也是一樣的。