【正文】
易預(yù)測(cè)下一個(gè)ID值,類似早期TCP ISN存在的問(wèn)題。如果沒(méi)有請(qǐng)求報(bào)文與響應(yīng)報(bào)文相匹配,響應(yīng)報(bào)文不應(yīng)被緩存。Internet上 攻擊者有辦法偽造一個(gè)報(bào)文,使之看起來(lái)像是從Foreign Name Server發(fā)往Recursive Server的響應(yīng)報(bào)文,其中包含的RR是攻擊者指定的惡意內(nèi)容,這樣的RR被Recursive Server接受并緩存,我們稱之發(fā)生了DNS緩存污染。 2022 綠盟科技■ 版權(quán)聲明本文中出現(xiàn)的任何文字?jǐn)⑹?、文檔格式、插圖、照片、方法、過(guò)程等內(nèi)容,除另有特別注明,版權(quán)均屬綠盟科技所有,受到有關(guān)產(chǎn)權(quán)及版權(quán)法保護(hù)。圖中的Step 2被簡(jiǎn)化了,、的權(quán)威服務(wù)器、每次都有DNS請(qǐng)求、響應(yīng)發(fā)生,這個(gè)過(guò)程就是所謂迭代查詢。在設(shè)計(jì)DNS協(xié)議之初,并未專門考慮對(duì)抗這種類型的攻擊,但一些協(xié)議方面的要求客觀上起到了阻礙攻擊的效果。攻擊者偽造響應(yīng)報(bào)文時(shí)也必須將目標(biāo)端口設(shè)為0x5121/UDP。響應(yīng)報(bào)文中的ID值必須等于12963才能讓Cache Server接受,攻擊者不知道12963這個(gè)值,只能窮舉猜測(cè),發(fā)送大量偽造的響應(yīng)報(bào)文就是為了指定不同的ID值,最多發(fā)送65536個(gè)偽造的響應(yīng)報(bào)文分別指定[0,65535]上的各個(gè)值,總有一個(gè)會(huì)命中。如果這個(gè)源PORT不是靜態(tài)的,在變化中,攻擊者就需要猜測(cè)這16bits。圖中Cache Server隨機(jī)化了源PORT(54132/UDP),但DNS請(qǐng)求報(bào)文經(jīng)過(guò)NAT設(shè)備后源PORT變成相對(duì)靜態(tài)的1025/UDP。CERT 457875介紹了更多內(nèi)容。應(yīng)用Bailywick Check之后,Additional Section中的RR owner不符合*.。,是個(gè)不存在的RR owner,正常響應(yīng)報(bào)文只會(huì)報(bào)告域名不存在,不會(huì)返回一個(gè)有效RR。s The End Of The Cache As We Know It Dan Kaminsky [2008] [ 9] Dan Kaminsky vulnerability Details [10] DNS Cache Poisoning Joe Stewart, GCIH jstewart [11] PowerDNS Recursor DNS Cache Poisoning Amit Klein [200802] [12] Black Ops of DNS Chaos Communications Camp 2003 Dan Kaminsky 11 169。即使DNS實(shí)現(xiàn)支持緩存否定響應(yīng)也無(wú)所謂,此時(shí)Cache Server仍會(huì)向外發(fā)送查詢請(qǐng)求。攻擊者先向Cache ,同時(shí)偽造響應(yīng)報(bào)文進(jìn)行緩存污染,與之前介紹的攻擊一樣,需要窮舉猜測(cè)Transaction ID、源PORT,有條件時(shí)可以利用生日攻擊原理進(jìn)行碰撞。 ID、源PORT不同,此次來(lái)自Cache Server