【IERG4130学习笔记】DNS Spoofing via Birthday Attack

news/2024/11/1 22:42:11/

/* Written by Edawrd 

* BEng  CSE department of CUHK, 

* 如有错漏,欢迎批评指出,本人只是本科小菜鸟一个

*/

 

注:以下内容是基于BIND (Berkeley Internet Name Domain) 域名服务的


最近在学一门cyber security的课,总的来说挺有意思的。

在讲到DNS Cache Poisoning (wiki)的时候,Birthday Attack又被拿出来讲了,多亏教授的课件各种混乱,逼我的不得不自己去各种google,不然也学不到那么多东西。

先简单说一下基本原理

当一名client找到DNS服务器,询问www.example.com的IP地址是啥的时候,如果DNS服务器自己也不清楚www.example.com的IP地址是什么,那么该DNS服务器就会发出DNS Query,问“谁知道www.example.com的IP地址是啥啊?”。如果有人响应,告诉它www.example.com的IP地址是XX.XX.XX.XX,那么它就会把该IP储存起来,那么下一次有别人问它www.example.com的IP地址是什么的时候,它就可以直接告诉对方IP地址是XX.XX.XX.XX

攻击者进行攻击的情景如下:

1. 攻击者发出DNS Query A,询问www.example.com的IP地址

2. DNS服务器收到DNS Query A,并且在本地寻找www.example.com对应的IP地址

3. DNS服务器没有找到对应的IP地址,所以它发出一个DNS Query B, 希望有人告诉它www.example.com的IP地址是什么

4. 攻击者乘机返回DNS Response C,给DNS服务器,告诉它IP地址是IP FAKED

5. DNS服务器收到DNS Response C,如果C的identifier符合B的Identifier的话,将IP地址 IP FAKED 当做www.example.com的IP地址

6. 路人甲发出DNS Query D,询问www.example.com的IP地址

7. DNS服务器收到DNS Query D,一查本地数据库,嘿,哥已经知道www.example.com的IP地址是IP FAKED,

8. DNS服务器返回DNS Response E 给路人甲,告诉他“IP地址是IP FAKED

9. 路人甲收到DNS Response, 然后去访问IP FAKED ,而路人甲以为自己在访问www.example.com,然而他实际访问的是攻击者指定的IP地址,从而造成可能的损失


可是以上的攻击有一个问题,就是所有的DNS数据包里面都有一个十六位的Identifier,如果攻击者返回的DNS Response C中的Identifier不对(与DNS服务器发出的DNS Query B的Identifier不符),那么DNS服务器则不会接受该DNS Reponse C作为其Query B的回复,那么攻击就失败了。十六位的identifier意味中DNS服务器发出的DNS Query B的identifier一共有2 ^ 16 = 65536种值,并且DNS服务器愿意接受的DNS Response的identifier的值也应该是65536中的一个(注意,并非一定与DNS QueryB的identifier相等)。

所以,一般的做法是,攻击者在DNS服务器发出DNS Query B之后,连续返回N个DNS Response(嵌入不同的identifier的值),以此来提高自己发出DNS Reponse被DNS服务器接受的几率。 很明显,N个NDS Reponse蒙中正确identifier的几率是N / 65536。

人们对这个蒙中的几率不满意啊,于是有人想啊想啊,想出来一种改进的攻击方法,基于Birthday Attack(wiki)。

新方法是这样运作的

1. 攻击者发出N个DNSQuery A,询问www.example.com的IP地址

2. DNS服务器收到N个DNS Query A,并且在本地寻找www.example.com对应的IP地址

3. DNS服务器没有找到对应的IP地址,所以它发出N个DNS Query B[1] - B[N], 希望有人告诉它www.example.com的IP地址是什么

4. 攻击者乘机返回N个DNS Response C[1] - C[N],给DNS服务器,告诉它IP地址是IP FAKED

5. DNS服务器收到N个DNS Response C[1] - C[N],如果其中有某一个与B[1] - B[N]中的某个identifier相符的话,那么将IP地址 IP FAKED 当做www.example.com的IP地址

之后6,7,8与旧方法一样


这样一来,蒙中的几率就相当于在N个Response C中至少有一个符合N个Response B中的identifier的几率。这相当于Birthday Attack的一个变种(传统的Birthday Attack是在同一组中寻找相同的元素,而这里则是在不同的两组中寻找相同的元素),但是其原理是一样的,而且都大大地提高了攻击成功的几率, 大概尝试N = 2^8就能有1/2的几率让攻击成功,旧方法则需要N = 2 ^ 15。(具体几率是多少,请看Reference[1]中的数据)

当然,只要DNS服务器能够检测到DNS Response是否由可信的Agent返回,那么这种攻击方式就无从说起了。另外,如果DNS服务器分别有两个网络接口,一个仅用于提供DNS服务(DNS RESPONSE),另一个仅用于向上级DNS服务器寻求DNS服务,那么攻击者也难以通过自己发出Query同时自己提供Response的方式误导DNS服务器储存错误的IP地址了




Reference:

[1] secureworks - DELL , DNS Spoofing - The next generation 

[2] wikipedia, BIND


http://www.ppmy.cn/news/221966.html

相关文章

自己搭建Nas(群晖 or TrueNas)

第一、还是要看自己的预算。 推荐600左右选择矿渣蜗牛星际A款4盘机箱,600以上推荐星际大陆M1和拓普龙8盘机箱。 蜗牛星际A款机箱,然后有sata背板的大概105左右,推荐淘宝,咸鱼现在很贵。 拓普龙新款大概是600左右,咸…

百练 4130 Saving Tang Monk [BFS+优先队列+状态压缩]

百练题目地址 判重3个状态就够了 位置钥匙 除了#位置&#xff0c;其他位置都可以经过多次 注意钥匙数可以为零 因为打蛇要time2&#xff0c;所以用优先队列 蛇的数量<5,所以1<<5的数就足够保存蛇的状态了 #include<iostream> #include<cstdio> #incl…

【BZOJ】4130: [PA2011]Kangaroos【KD树——最长连续1的子段长度】

传送门&#xff1a;【BZOJ】4130: [PA2011]Kangaroos【KD树】 题意&#xff1a;给出一个长度为 N(N≤5⋅104) 的区间序列。然后接下来 M(M≤2⋅105) 个询问&#xff0c;每个询问给出一个区间 [L,R] &#xff0c;问区间序列中最长的连续子序列长度&#xff0c;使得连续子序列中…

Rimini Street接到法院命令,将获得甲骨文2150万美元退款,还将寻求通过进一步上诉获得额外的4130万美元

法院宣布Rimini Street在与甲骨文直接维护服务合法竞争状态下提供第三方支持 拉斯维加斯--(美国商业资讯)--Rimini Street, Inc. (Nasdaq: RMNI)是企业软件产品和服务的全球供应商以及甲骨文和SAP软件产品的领先第三方支持提供商&#xff0c;今天发布如下与甲骨文对Rimini Stre…

​支持AS2协议的开源的软件MTTK_AS2发布 [AS2] | [RFC4130] | [EDI] | [ANSI X12] | [EDIFACT]

​支持AS2协议的开源的软件MTTK_AS2发布 固执的可乐瓶 小型收发报文工具如何实现AS2协议&#xff1f;MTTK_AS2开源产品推荐 许多中小型企业 在与国外的系统进行数据传输时&#xff0c;通常会被要求使用AS2协议进行报文的传输&#xff0c;而国内对于AS2协议支持的开源软件少之…

ITS4130Q-EP-D是一款130mΩ四通道智能高压侧电源开关——科时进商城

​ 四个通道的电流均大于500 mA&#xff0c;Tj125C时的典型RDS&#xff08;ON&#xff09;值非常低&#xff0c;为205mΩ&#xff0c;以及小型PG-TSDSO-14外露焊盘封装&#xff0c;将高灵活性与最低空间要求结合在一起。热增强PG-TSDSO-14封装的外露焊盘允许通过热通孔从器件到…

百炼 4130: Saving Tang Monk

同一个S可能需要多次经过&#xff0c;只需杀一次。 #define _CRT_SECURE_NO_WARNINGS #include<cstdio> #include<algorithm> #include<queue> using namespace std;const int N 100 5;char s[N][N]; int si, sj, n, m, ei, ej, p[N][N];struct Node {int…

【JZOJ1214】【洛谷P4130】项链工厂【线段树】

题目大意&#xff1a; 题目链接&#xff1a;https://www.luogu.org/problemnew/show/P4130 一条项链包含 N 个珠子&#xff0c;每个珠子的颜色是 1&#xff0c;2&#xff0c;…&#xff0c;c 中的一种。项链 被固定在一个平板上&#xff0c;平板的某个位置被标记位置 1 &…