做完了本地的,来康康远程的
难点就是不能嗅探数据包再进行伪造了,一些字段要通过猜测得到
Task 1
local里配过了,验证一下就行
Task 2
按教程配一条转发
(因为我们自己设置的域名是真实存在的…如果将其作为权威服务器,那么本地DNS服务器会向顶级DNS服务器请求它的IP,然后发送请求,但是这就超出了我们的控制范围
(配一条转发,就是让DNS服务器把对这个权威服务器的请求都发往我们能控制的IP
其他的按教程删改
Task 3
attacker上配两个zone文件(网站上下载模版
(这里要注意 www和ns对应的IP最好是能控制的主机,否则可能会因为收不到应答而扑街
Task 4
验证一下~
dig 权威服务器,返回zone里记录就行
抓包能看到,DNS服务器会进行转发操作,由attacker主机回应
再dig www.example.com
,emm此时肯定还是真实IP
但是dig @权威服务器 www.example.com
,指定了向attacker询问就不一样了,直接返回zone里记录
Task 5
Kaminsky攻击的原理:发送多个不存在的域名请求(如twysw.example.com),此时DNS服务器会向其权威服务器请求,此时攻击者发送大量伪造的DNS回应,并猜测transaction ID,在权威服务器回应之前到达,且某一个猜对了transaction ID的话,就能成功写入缓存了
几个要点:
- 发送多个不存在的域名请求:是因为如果一次攻击失败了,那么缓存中就写入了正确的DNS记录,此时再次对同一个域名请求,就不会查询而直接发回缓存了,所以用每次不同的域名进行多轮尝试
- transaction ID只有16位,所以通过大量猜测能成功
- 写入的时候我们在权威字段加入攻击者的权威服务器,对整个域进行攻击
先用scapy写一个DNS请求
发出去能收到回应
Task 6
再用scapy写一个DNS回应
(注意这里原地址要用www.example.com真实的权威服务器IP,伪造的权威服务器名为fakens.com
抓包能看到正确的包
Task 7
scapy构造包,C发包(attack.c的模版官网下载
发包时有些字段要改改
- 请求/回应的域名前五个字符(attacker.c给生成了随机五个字符,需要覆盖
- 回应的transaction ID(0~65535循环猜测
scapy构造请求,写入ip_req
康康ip_req,看一下域名的偏移
scapy构造回应,写入ip_resp
康康ip_req,看一下域名的偏移
transaction ID的位置看不出来,教程说了就是固定的28
attacker.c创建socket、修改、发送
模版给了socket的创建,需要自己修改一下(传参或作为全局变量
然后开始攻击~(进行很多次尝试,一般30次以内就能成功
在DNS服务器监视缓存,写入就成功了
(开始攻击前记得清空DNS缓存
Task 8
最后验证一下(在记录的有效期内
dig @攻击者的权威服务器 www.example.com
,直接向attacker请求,返回zone里内容
攻击成功的话,直接dig www.example.com,得到的是一摸一样的记录
(因为缓存里写入了example.com对应的权威服务器,DNS服务器会直接向攻击者的权威服务器请求,还是返回zone里内容
第二个完结~
参考了小姐姐的github,but最后没结果是因为写错了(小声
https://github.com/MrudhulaShenava/Internet-Security/blob/59774a35bf74feee12780f79fa0a68394dc07a85/MrudhulaAShenava_IsecLab6.pdf