DNS攻擊
實驗是基於Linux系統,配置了bind9服務的機器
大綱
- 本地修改Host文件重定向路徑到指定地址
- 對User的DNS查詢進行欺騙攻擊
- 在同一局域網下,對DNS服務器的DNS查詢進行欺騙攻擊
- 不在同一局域網下,對DNS服務器的DNS查詢進行欺騙攻擊
環境配置
首先三台虛擬機分別給它們分配ip,如圖,User為192.168.0.100,DNS Server為192.168.0.10,Attacker為192.168.0.200,對三台機器的代稱為圖中所示,下同。
DNS Server的配置:
- 修改/etc/bind/named.conf.options文件,增加dump.db作為DNS緩存的文件,使用chmod提高dump.db的文件權限(777)
- 設置DNS Server的本地zone為example.com和192.168.0.x兩個域
- 重啟bind9服務
User的配置:
- 設置User的默認DNS服務器為192.168.0.10
Attacker的配置: - 設置Attacker的默認DNS服務器為192.168.0.10
三台機器的外部網關設置為VMware的NAT模式的虛擬網卡默認分配的網關,我這里是192.168.139.2
DNS Server設置后的網絡配置:(其它類似)
內容
修改本地host文件
這里主要就是修改User本地的Host文件,增加www.example.com一項,定向為127.0.0.1
如圖,成功ping www.example.com得到自己設置的1.2.3.4的DNS解析ip地址
欺騙回復User的DNS查詢
當User向DNS Server發送DNS查詢的時候,Attacker監聽了這個DNS查詢請求,然后在DNS Server回復正確的DNS Response之前,先回復一個偽造欺騙的DNS Response給User,從而達到了DNS欺騙的效果。
實驗中我們借用了Netwox/Netwag tool 105來進行DNS欺騙,具體的設置如下
得到的實驗效果為
Local DNS Attack
當DNS Server對Root DNS Server詢問的時候,Attacker監聽了DNS Server對外發出的DNS Query,偽造了一個DNS Response給DNS Server,從而讓DNS Server中有了DNS Cache,且設置的ttl很長,因此就能夠達到高效的DNS Attack。
實驗中我們借用了Netwox/Netwag tool 105來進行DNS欺騙,具體的設置如下
得到的實驗結果為
DNS Server中的DNS Cache:
User中使用Dig命令得到的結果:
Remote DNS Attack
正常情況下的DNS查詢是這樣子的
但是我們可以將它簡化成下面這樣
由於不在同一局域網內,Attacker不能監聽DNS Server的DNS Query包,所以采用的方法是對transaction ID進行全枚舉,而且必須在真正的DNS Response到來之前枚舉成功這個transaction ID,為了簡化實驗,我們將UDP port設置為33333,所以就不用枚舉UDP port這個變量。
但是ns.dnslabattacker.net不是一個合法的域名,因此DNS Server需要對它進行驗證,否則不會將它保存在DNS Cache中,所以需要在Attacker機器中配置DNS服務,將ns.dnslabattacker.net作為該DNS的本地zone就好。
查看一下實驗結果:
首先是Attacker對DNS發DNS Query和DNS Respose包:
然后在DNS Server中用Wireshark查看收到的包:
查看一下DNS Server中的Cache:
在User中Dig一下aaaaa.example.edu