DNS欺騙(轉)

post0發表於2007-08-11
DNS欺騙(轉)[@more@]

DNS欺騙

本文僅用於研究目的!與此相關所產生的一切作者概不負責!

【摘要】

DNS欺騙可以用來上BBS隱藏ip,但其作用遠遠不止這些。

【簡述】

熟悉網路的人都知道,當客戶向一臺伺服器請求服務時,伺服器方一般會

根據客戶的ip反向解析出該ip對應的域名。這種反向域名解析就是一個查DNS

(Domain Name Service)的過程。

如果客戶的ip對應有域名,那麼DNS查詢會返回其域名。伺服器端得到這

一機器名後會將其記錄下來並傳遞給應用程式,於是我們可以看到有人上bbs

來自argo.zsu.edu.cn,其實她來自202.116.64.6——“逸 仙 時 空” BBS。

細心的人會發現BBS上顯示ip的欄是有長度侷限的,因此若客戶機的域名足夠

長便可隱藏住自己機器名,如parallelcomput其實是parallelcomputing.xx.

xxx.xxx.xx。這便是隱藏ip的方法之一,此法要和網管比較熟或者我們自己就

是DNS網管。;)

但是您和網管熟嗎?反正偶不熟。:(

讓我們換個思路:如果伺服器在進行DNS查詢時能夠人為地給它我們自己

的應答資訊結果會怎樣呢?答案顯然不用我說了,這就是著名的DNS欺騙(dns

spoofing)。說實話,DNS欺騙威力巨大,把它用來在BBS上隱藏ip實在是殺

雞用牛刀。:)

【詳述】

現有的大多數DNS服務實現存在兩個比較“好”的性質。

其一為當DNS伺服器收到一合法的DNS應答資訊時它會接受這一返回包中的

所有資訊,並存入CACHE。舉一個例子:在10.10.1.2的使用者要TELNET到100.100

.100.100上,100.100.100.100使用的DNS為100.100.100.200。三次握手後100.

100.100.100會向100.100.100.200發一PTR型別的DNS查詢(由IP查主機名):

100.100.100.100 -> 100.100.100.200 [Query]

NQY: 1 NAN: 0 NNS: 0 NAD: 0

QY: 2.1.10.10.in-addr.arpa PTR

而100.100.100.200並沒有關於使用者IP對應域的資訊。它首先根據DNS協議

極其配置查詢出10.10.1.2的授權DNS伺服器——10.10.1.5。然後向其發出查

詢包:

100.100.100.200 -> 10.10.1.5 [Query]

NQY: 1 NAN: 0 NNS: 0 NAD: 0

QY: 2.1.10.10.in-addr.arpa PTR

這裡隱蔽了iterative與recursive兩種方式的區別,一般的DNS設定為

iterative,recursive為可選。詳見rfc1034。

10.10.1.5收到該查詢資訊後便可返回10.10.1.2對應的域名:

10.10.1.5 -> 100.100.100.200 [Answer]

NQY: 1 NAN: 2 NNS: 1 NAD: 1

QY: 2.1.10.10.in-addr.arpa PTR

AN: 2.1.10.10.in-addr.arpa PTR client.host.com DNS欺騙

本文僅用於研究目的!與此相關所產生的一切作者概不負責!

【摘要】

DNS欺騙可以用來上BBS隱藏ip,但其作用遠遠不止這些。

【簡述】

熟悉網路的人都知道,當客戶向一臺伺服器請求服務時,伺服器方一般會

根據客戶的ip反向解析出該ip對應的域名。這種反向域名解析就是一個查DNS

(Domain Name Service)的過程。

如果客戶的ip對應有域名,那麼DNS查詢會返回其域名。伺服器端得到這

一機器名後會將其記錄下來並傳遞給應用程式,於是我們可以看到有人上bbs

來自argo.zsu.edu.cn,其實她來自202.116.64.6——“逸 仙 時 空” BBS。

細心的人會發現BBS上顯示ip的欄是有長度侷限的,因此若客戶機的域名足夠

長便可隱藏住自己機器名,如parallelcomput其實是parallelcomputing.xx.

xxx.xxx.xx。這便是隱藏ip的方法之一,此法要和網管比較熟或者我們自己就

是DNS網管。;)

但是您和網管熟嗎?反正偶不熟。:(

讓我們換個思路:如果伺服器在進行DNS查詢時能夠人為地給它我們自己

的應答資訊結果會怎樣呢?答案顯然不用我說了,這就是著名的DNS欺騙(dns

spoofing)。說實話,DNS欺騙威力巨大,把它用來在BBS上隱藏ip實在是殺

雞用牛刀。:)

【詳述】

現有的大多數DNS服務實現存在兩個比較“好”的性質。

其一為當DNS伺服器收到一合法的DNS應答資訊時它會接受這一返回包中的

所有資訊,並存入CACHE。舉一個例子:在10.10.1.2的使用者要TELNET到100.100

.100.100上,100.100.100.100使用的DNS為100.100.100.200。三次握手後100.

100.100.100會向100.100.100.200發一PTR型別的DNS查詢(由IP查主機名):

100.100.100.100 -> 100.100.100.200 [Query]

NQY: 1 NAN: 0 NNS: 0 NAD: 0

QY: 2.1.10.10.in-addr.arpa PTR

而100.100.100.200並沒有關於使用者IP對應域的資訊。它首先根據DNS協議

極其配置查詢出10.10.1.2的授權DNS伺服器——10.10.1.5。然後向其發出查

詢包:

100.100.100.200 -> 10.10.1.5 [Query]

NQY: 1 NAN: 0 NNS: 0 NAD: 0

QY: 2.1.10.10.in-addr.arpa PTR

這裡隱蔽了iterative與recursive兩種方式的區別,一般的DNS設定為

iterative,recursive為可選。詳見rfc1034。

10.10.1.5收到該查詢資訊後便可返回10.10.1.2對應的域名:

10.10.1.5 -> 100.100.100.200 [Answer]

NQY: 1 NAN: 2 NNS: 1 NAD: 1

QY: 2.1.10.10.in-addr.arpa PTR

AN: 2.1.10.10.in-addr.arpa PTR client.host.com

AN: client.host.com A 10.10.1.2

NS: 1.10.10.in-addr.arpa NS ns.host.com

AD: ns.host.com A 10.10.1.5

返回的包中給出了10.10.1.2對應的域名為client.host.com,並指出

client.host.com對應的IP為10.10.1.2(請注意這兩個對應的是不同的概念!)

。如果這個返回包能由我們給出,豈不是爽呆了!

那麼怎麼做呢?可以控制住你的DNS,然後你想設成什麼就是什麼。但是

太暴力了,偶不推薦這種方式:)。還有更溫和的方法——如果區域網內有DNS

伺服器,那麼可以透過監聽、響應的方法實現DNS欺騙。

即先sniff傳到區域網來的DNS查詢包,然後代替本網段的DNS伺服器給出

應答資訊(羅嗦了這麼多,這裡最重要,呵呵)。

但是本網段的DNS伺服器也會同時給出應答資訊,這樣我們構造的包與它

的包會有衝突,通常是我們的慢:(這樣的DNS欺騙是不成功的。

為了獲得穩定的DNS欺騙的效果,這就涉及到第二個DNS實現的“好”的

性質:

當DNS伺服器發查詢包時,它在包內有一query id,應答資訊只有query

id及ip都對上時才能為伺服器所接受。而這一id每次加一,所以可以透過第

一次向要欺騙的DNS SERVER發一個查詢並監聽到該id值,隨後

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-945011/,如需轉載,請註明出處,否則將追究法律責任。

相關文章