那么在這背后又有什么事情正在進(jìn)行著呢?一般而言,你的將會(huì)向發(fā)送一個(gè)請(qǐng)求,從而要求得到與www..com相匹配的IP地址,DNS則會(huì)告訴你的瀏覽器google的IP地址,接著你的瀏覽器會(huì)連接并顯示主頁(yè)內(nèi)容。哦,等一下,你打開(kāi)的網(wǎng)頁(yè)說(shuō)google因無(wú)錢(qián)支付網(wǎng)站費(fèi)用而轉(zhuǎn)讓給CSite的消息。你可能會(huì)非常吃驚,并打電話(huà)告訴你的好朋友。當(dāng)然你的朋友一定會(huì)笑你瘋掉了,因?yàn)槟愕呐笥咽强梢缘顷慻oogle并進(jìn)行搜索的。還確信正在和你的IP地址是友好的嗎?說(shuō)不定你已成圈中之羊。當(dāng)你在瀏覽器地址里輸入hxxp://66.249.89.99并回車(chē)時(shí),你又會(huì)發(fā)現(xiàn),其實(shí)www.google.com還健在。
其實(shí)剛剛就是DNS劫持攻擊時(shí)目擊者可能看到的情形。
試想如果跳轉(zhuǎn)的頁(yè)面被無(wú)聲無(wú)息地掛著馬又會(huì)多糟糕
非常急切地相要知道著其中地玄機(jī)吧?是不是DNS服務(wù)器給了我們一個(gè)錯(cuò)誤地IP地址?可能是吧。至少,這是我們腦中最符合邏輯地答案。
按此在新窗口打開(kāi)圖片事實(shí)上,有兩種方法可以實(shí)現(xiàn)DNS劫持攻擊。讓我們來(lái)第一種,“DNSID欺騙”技術(shù)。
A)DNS高速緩沖器麻痹(DNSCachePoisoning)
可以想象,DNS服務(wù)器不可能將所有現(xiàn)存的或IP地址存儲(chǔ)在本身的存儲(chǔ)空間里。這就是為什么DNS服務(wù)器有一個(gè)高速緩沖存儲(chǔ)器(cache),它使得服務(wù)器可以存儲(chǔ)DNS記錄一一段時(shí)間。
事實(shí)上,一臺(tái)DNS服務(wù)器只會(huì)記錄本身所屬域中的授權(quán)的主機(jī),如果它想要知道其它的,在自身域以外主機(jī)的信息,就必須向信息持有者(另一臺(tái)DNS服務(wù)器)發(fā)送請(qǐng)求,同時(shí),為了不每次都發(fā)送請(qǐng)求,這臺(tái)DNS服務(wù)器會(huì)將另一臺(tái)DNS服務(wù)器返回的信息又記錄下來(lái)。
那么現(xiàn)在,我們就來(lái)看看是怎么麻痹DNS的緩存的。
攻擊者有自己的域(attacker.net)和一個(gè)已被攻陷的DNS服務(wù)器(ns.attacker.net)。注意!我說(shuō)的是被攻陷的DNS服務(wù)器,因?yàn)楣粽咭呀?jīng)自定義了他自己的DNS服務(wù)器的記錄,比如,記錄可以是www.google.com=81.81.81.81
1)攻擊者向你的DNS服務(wù)器發(fā)送請(qǐng)求查詢(xún)www.attacker.net
2)你的DNS服務(wù)器不知道這臺(tái)主機(jī)的IP地址,因?yàn)樗粚儆诒旧碛?,所有你的DNS服務(wù)器就會(huì)問(wèn)此主機(jī)的所屬域的DNS服務(wù)器。
3)這時(shí)被黑DNS服務(wù)器就會(huì)回復(fù)你的DNS服務(wù)器,在此同時(shí)它也會(huì)給出它所有的記錄(包括連接www.google.com的記錄)
注意,這個(gè)過(guò)程叫做zonetransfer.
4)這是你的DNS服務(wù)器還沒(méi)有被麻痹。攻擊者得到了自己的IP地址,但是他的目標(biāo)不是得到自己的地址,而是逼迫zonetransfer進(jìn)行以使你的DNS服務(wù)器麻痹直到其緩存不會(huì)被清楚或更新。
5)現(xiàn)在如果你再問(wèn)你的DNS服務(wù)器關(guān)于www.google.com的IP地址,它會(huì)告訴你172.50.50.50,這也正是攻擊者的服務(wù)器所在!現(xiàn)在,攻擊者就能為所欲為,例如掛馬什么的……當(dāng)然這也對(duì)google造成了相當(dāng)?shù)膿p失!
B)DNSID欺騙(DNSIDSpoofing)
我們可以看到,當(dāng)主機(jī)X要與主機(jī)Y聯(lián)系是需要近來(lái)的IP地址。然而在絕大多數(shù)情況下,X只有Y的名字,這樣,DNS協(xié)議就是來(lái)解決名字到IP地址的問(wèn)題的。
因此,X就會(huì)向它所在域的DNS服務(wù)器詢(xún)問(wèn)Y的IP地址。其間,主機(jī)X分配一個(gè)隨即數(shù),這個(gè)數(shù)也將會(huì)出現(xiàn)在從DNS服務(wù)器返回的信息里。當(dāng)X收到回復(fù)后,X會(huì)對(duì)比兩個(gè)數(shù)字,如果一致,則收到信息被視為有效。
那這樣一個(gè)模型是否安全呢?并非十分安全。任何人組織一次攻擊來(lái)獲得這個(gè)ID。舉例說(shuō)如果你用LAN,別人就可以利用嗅探器捕獲你的請(qǐng)求ID,然后根據(jù)這個(gè)ID偽造一個(gè)回復(fù)信息……但是信息里含有攻擊者所選的IP地址。然后,不加識(shí)別的,X會(huì)吧攻擊者提供的IP地址當(dāng)作Y的。
順便提一句,DNS協(xié)議的提出請(qǐng)求是依賴(lài)于UDP的(只有在zonetransfer時(shí)才用TCP),這也就意味著發(fā)送一個(gè)偽造的包是極其簡(jiǎn)單的,因?yàn)闆](méi)有SYN/ACK號(hào)(不像TCP,UDP沒(méi)有提供一個(gè)小型防IP欺騙的防護(hù))
但是,這樣的攻擊是被局限的。在我以上的例子中,攻擊者用嗅探器攔獲ID,回復(fù)構(gòu)造過(guò)的包給受害主機(jī)。
換句話(huà)說(shuō),即使攻擊者攔截了請(qǐng)求,數(shù)據(jù)包還是會(huì)傳去DNS服務(wù)器,而DNS服務(wù)器也照樣會(huì)回復(fù)(除非攻擊者攔截并阻止對(duì)的請(qǐng)求或?qū)嵤┚彺媛楸圆趴赡茉谵D(zhuǎn)換網(wǎng)絡(luò)中攻擊)。
這就意味著攻擊者必須在真DNS服務(wù)器前回復(fù),即為了攻擊成功,攻擊者必須和被攻擊者同一個(gè)LAN,只有這樣他才可以獲得快速的ping并且捕獲對(duì)方的數(shù)據(jù)包。
實(shí)踐舉例(僅作測(cè)試目的)
看怎么劫持我們本地網(wǎng)絡(luò)連接:
1、麻痹被攻擊者的ARP緩存
2、此時(shí),目標(biāo)主機(jī)的出口數(shù)據(jù)包將會(huì)重定向到你的主機(jī)上,但是還必須轉(zhuǎn)發(fā)給真正的網(wǎng)關(guān)。我們可以用類(lèi)似WinroutePro的工具來(lái)實(shí)現(xiàn)。
3、為了實(shí)施DNSID欺騙我們用valgasu開(kāi)發(fā)的工具WinDNSSpoof
命令行下輸入類(lèi)似的命令:
wds-nwww.google.com-i123.123.123.123-g00-C0-26-DD-59-CF–v這個(gè)命令會(huì)使目標(biāo)主機(jī)的www.google.com指向123.123.123.123。
其中00-C0-26-DD-59-CF是網(wǎng)關(guān)或DNS服務(wù)器的地址。
Tips:在WindowsNT內(nèi)核下,查詢(xún)遠(yuǎn)程IP的MAC地址可以在CMD里用nbtstat-Axxx.xxx.xxx.xxx命令
警告:記住!在未授權(quán)的情況下使用這些手段是被禁止的!
C)借助生日悖論的精確攻擊
什么是“生日悖論”?
“生日悖論”得名于一個(gè)能產(chǎn)生奇怪現(xiàn)象的數(shù)學(xué)模型,即如果有23人在一起,那么很有可能其中的兩人有相同的生日。其實(shí)要理解也不是那么困難。
假設(shè)現(xiàn)在你在一個(gè)派對(duì)問(wèn)某人他的生日,那么他跟你不同生日的幾率就是364/365=0.997,則相同的概率就是1-364/365=0.003。
現(xiàn)在,如果你再問(wèn)另外一個(gè)人,他的生日不同于前一人且不同于你的概率就是(364/365)*(363/365)=0.992,所以我們至少可以推得我們中兩人有相同生日的概率為1-0.992=0.008。
如果我們繼續(xù)這樣的推算,很快就能算得23人中有兩人的生日相同的概率高達(dá)50%。我們可以通過(guò)以下的C代碼看出概率是如何趨近于1的。
#definePOSSIBILITIES365.0
voidmain(void)
{
floatchances;
inti,j;
for(i=1;i
沒(méi)法編譯的朋友可以看下面的結(jié)果:
People
2
9
16
23
30
37
44
65
79
Chances
0.0027
0.0946
0.2836
0.5073
0.7063
0.8487
0.9329
0.9977
0.9999