自容来自《安全小课堂第四十五期【域名爆破的原理与工具】》的总结
域名爆破是通过枚举的方式来实现的
枚举域名的A记录比如要爆破xx.com的子域名,
首先的访问一个随机并不存在的域chorashuai.xx.com,
取得A记录后保存,
然后开始枚举a-z0-9,比如1.xx.com、 2.xx.com 、3.xx.com之类的。接下来的步骤就分为两种方式了。
其中一种:直接获取1.xx.com 2.xx.com 3.xx.com的A记录,有A记录则表示存在也是可行的,但是如果遇到泛解析则该方法失效。
另一种,在泛解析的下也可以使用,把这些枚举的域名A记录与之前chorashishuaige.xx.com的A记录做对比,不同的则是存在A记录的域名,也就是在用的域名。
常用工具 :subDomainsBrute layer子域名挖掘
subDomainsBrute
优点:跨平台,循环遍历,支持自定义规则
以前有对比过subDomainsBrute以及layer发现前者比后者会少几个结果,但是不知道现在情况如何。
少几个结果是指同样的线程,同样的字典,结果会有少几个,不知道现在有没有完善在。
layer子域名挖掘
优点:结果比较准确
但是不是跨平台的,有时候只有mac环境或者kali环境下就不能使用,也不能循环遍历。
枚举的时候,可能会造成网络不畅通,打开缓慢甚至打不开的情况。
一个好的域名爆破工具需要支持跨平台,可指定层次循环爆破,速度快,可暂停。
循环爆破
先爆破xx.com,发现了a.xx.com,出来的结果,再进行一次爆破,继续爆破b.a.xx.com,然后c.b.xx.com,一直循环到没有域名位置,这样能爆破出深度的域名。
比如一个6级域名,
先爆破出了house.xx.com;
然后爆破出了db.house.xx.com;
然后爆破出了esf.db.house.xx.com以此类推到第6级。
不过当到爆破达一定量过后就会卡顿,所以暂停功能也是必须的。
防御
通过使用DNS轮询+泛解析可以给爆破带来麻烦。
泛解析,也不能解决域名爆破的问题的,不同的域名映射到不同的主机,无效的域名一般都指向泛解析的同一个地址。
DNS轮询+泛解析应该能防住layer跟subdomainbrute,
但是改一下程序就可以绕过了,其实作用不太大的。
爆破技巧
第一个,爆破4位。一般都是1-3位,很多朋友遗漏了4位,5位由于数量太大基本不可能实现;
第二个,大型厂商喜欢mxxx.bb.com、adxxx.bb.com会有前缀或者后缀bb-o2o.bb.com这个时候就可以自己写一个工具替换xxx来进行爆破。
格式如下m{fuzz}.XX.com,就是要在哪个位置爆破就插入{fuzz},这样也能发现一个隐藏的域名。
CDN和反射代理会隐藏服务器IP。