子域名接管安全性分析及落地化
能说只是为了学Go嘛?33333
Github项目直通车
原文链接
简介
-
子域名接管,主要原因归结于
失效dns记录未删除
。譬如,一条指向
test.sec.com
的CNAME
记录未被删除,而test.sec.com
已被注销,这个时候,如果攻击者如果注册了该域名,那么该子域名就会指向一个可控的主机或者域名上。CNAME记录是最常被利用的,但其实A记录,NS记录等其他DNS记录也存在被接管的可能。
-
那么子域名在实战中又能发挥哪些作用?
-
记得红队钓鱼时有一个钓鱼网站的操作,而往往为了更逼真,获取更高的可信度,往往将域名设置为一个和原域名很相似的域名。而如果能直接接管子域名中的CNAME记录,那岂不是很nice。所以子域名接管的利用主要就是为了高度伪造目标站点,提供高伪装性。
-
DNS
DNS主要就是将好记得域名解析为不好记的IP地址
从1034到1035新增了几个记录,当下共有16中DNS记录,简要介绍其中和当前分析有关的几个记录类型:
- A 记录域名指向的主机ip
- NS 域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析
- CNAME 别名记录,允许您将多个名字映射到同一台计算机
- MX 邮件交换记录,它指向一个邮件服务器
DNS记录与子域名接管
从上面几个DNS记录来看,如果是A记录,由于ip的可控性很低,虽然也存在类似的服务,例如弹性公网ip申请之类的,所以暂不考虑A记录的接管。而如果记录是指向一个域名的话,则往往可控性更高,可利用性也就更高。
Subtaker项目
有了上面的知识,现在就开始落地化了。
项目需求
- 判断记录是否被注销,可被重新申请注册
- 记录指向是否间接可控,例如github page
设计思路
- 读取字典,遍历子域名的CNAME,MX记录
- 对收集到的记录进行分别判断其是否可注册
- 继续对CNAME记录进行指纹识别,看是否为间接可控
- 输出结果
存在的问题或者关键点
https://github.com/EdOverflow/can-i-take-over-xyz,这个仓库里还有很多可间接接管的指纹,但由于不常见,没有完全添加进去,感兴趣,可以自己添加进去试试。
项目展示