不管是白帽子用于漏洞挖掘还是企业进行日常安全巡检,web 漏扫首先要问题的问题是解决扫描目标,并找准目标探测入口。
俗话说:“巧妇难为无米之炊”。纵使手握 xray 如此强大的扫描器,如果一个白帽子不能清楚的知道 web 资产的分布情况,扫描也无从下手。
xray 在最开始的时候,四处寻找一个快速、全面、准确、易用的子域名收集工具,用于集成在 xray 引擎中,最后无疾而终。
那只能自己撸起袖子开始干咯~
你与优雅的子域名收集工具之间,只有一个 license 的距离。
如何实现快、准、稳?
- 爆破——一个字“稳”
爆破是子域名发现的常规手段。只要对常见子域名字典进行逐一尝试,便可得到相当数量的子域名。
但其中需要注意两个问题。
- 一是:泛解析问题 泛解析会导致,将本不存在的子域名被解析到某个ip上。为了验证是否存在泛解析的情况,我们可尝试请求随机字符串构造的子域名,若多次尝试的结果均可解析到某一ip,则放弃对其子域名的大量爆破,转由其他手段进行分析。此时,可选取高频小字典,通过比较不同子域名指向页面的相似度,可获得一些供后续进一步分析的种子域名。
- 二是:单个 DNS 服务器高频请求带来的丢包及触发频限的问题 爆破的常见方法是: 使用多线程/协程等方式尽可能快的对 DNS 服务器发起请求,辅以一定的重试机制以应对丢包。但这无疑增加了网络的负担,容易造成该网络环境下其他请求的 DNS 解析失败。若没有对带宽施加合理的控制,容易造成大量数据包被链路中某一节点丢弃,反而需要更多数量的重试,以此恶性循环。同时,过快的请求速率还可能触发 DNS 服务器的请求频率限制,其表现为某段时间服务器突然失去响应、一段时间后又恢复,使子域名探测失去连续性。
为了解决上述两个棘手的问题,xray 子域名工具实践了一种新的发包策略,使域名爆破过程更加稳健。
新策略可指定多个备选的 DNS 服务器,系统会自动根据 DNS 服务器的响应速度、响应失败率等指标调节 DNS 服务器的权重值及发包速率。较高权重的 DNS 服务器承担较大数量的查询,较低权重的则作为分流,让高权重的服务器有些许“喘息”的时间。
通过该策略,DNS 请求失败率大幅度降低了。同时也减轻了网络负载,对同网络下其他扫描任务的影响降至较低水平。
- 域传送——让问题“最快”解决
域传送(DNS zone transfer)漏洞是由于对 DNS 服务器的配置不当导致的信息泄露,通过它,我们有时可以收获大量子域名。
那什么是域传送?
DNS 服务是对可用性要求很高的服务,因此 DNS 提供了一种机制,能够允许后备服务器从主服务器中拷贝信息,以保障主服务器宕机能顶替主服务器提供服务。
当主服务器未配置妥当,允许任意匿名的“后备服务器”获取信息时,域传送漏洞便产生了。
我们如何知道是否存在域传送漏洞?
前面提到,该漏洞是由于域名服务器的配置不当造成的。
所以,我们第一步需要做的是,找到我们想要探测域名的权威 DNS 服务器。我们可以通过查询 DNS 的 NS(NameServer)记录,找到管理该域名的权威 DNS 服务器。
第二步,对该 DNS 服务器发送 AXFR 请求,申请完全区域传输(Full Zone Transfer)。
此时如果运气好,你将得到该服务器所管理的所有域名信息。
简单的利用命令如下:
$ nslookup -type=NS example.com
example.com nameserver = ns.example.com
$ nslookup
> server ns.example.com
> ls
在日常运维中需要注意:常用的 DNS 服务程序(如BIND9)中,允许传送域名信息数据库至任意主机通常是默认行为,请注意 allow-transfer 等参数的配置。
- 基于关联关系的分析方法,又快又准
相当数量的域名都指向了 Web 服务,这些服务之间又相互交织、关联。主站点到子站点的超链接、证书中的使用者可选名称、安全策略配置文件... 所有能够体现出一个站点与另一个站点之间存在关联的信息,都是我们关注的重点。
分析这些关联关系可以用很少的代价获取很多高质量的信息。通过请求分析得到的子域名,基本上是活跃且正在使用中的子域名。
- 重定向分析:分析重定向响应 header 中 Location 的值。
- 内容安全策略分析:Content-Security-Policy 内容安全策略 (CSP) 是一个额外的安全层,用于检测并削弱某些特定类型的攻击,包括跨站脚本 (XSS) 和数据注入攻击等。 配置内容安全策略涉及到添加 Content-Security-Policy HTTP头部到一个页面,并配置相应的值,以控制用户代理(浏览器等)可以为该页面获取哪些资源。 例如: Content-Security-Policy: default-src 'self'; img-src *; media-src media1.com media2.com; script-src userscripts.example.com
- sitemap.xml 分析
- crossdomain.xml 分析
- 页面分析:网站首页通常有指向子域名的超链接,可进行提取分析。
- JS 分析:现代前端页面常常有通过 JS 实现的跳转,页面引入的 JS 也是不能放过的一部分。
- 证书分析:在 https 网站使用的 SSL 证书中,包含着一项名为使用者可选名称的属性,其中也可能包含子域名信息。 下图为通过浏览器的查看证书功能,我们可以看到该证书使用者的可选名称。
- 爬虫分析:通过对其他方法得到的子域名访问,可不断得到新的可供分析的页面,直到不再有新的子域名发现时退出。这便构成了一个简单的爬虫。
既要功能,也要结果
xray 的子域名爆破提供了精美的报告输出,并通过前端,提供了强大的筛选能力。它可以只展示存在 WEB 站点或能正确解析到 IP 的域名,或 IP 位置信息的呈现、CNAME 的输出等,方便对域名有更直观的印象与认知。
小记
一年时间里,我们欣慰的看到以 xray 为漏扫核心,衍生出了大量出色的安全项目。
- xray-team 成员 TimWhite 结合 Rad 动态爬虫与 xray 打造了属于自己的分布式扫描器,获得了丰厚赏金。
- 安全专家 V1ll4n 将 xray 利用于企业安全建设,xray 源源不断地为企业安全大脑提供高质量的信息源。
- 宜信安全/Goby 等第三方安全厂商的集成,也足以说明 xray 值得信赖。
我们因各位白帽集成 xray 所打造的趁手利器而振奋!
当然,专业的事情,要交给专业的人做。全套的信息收集功能,资产管理功能,完善的分布式部署模式等,可详询洞鉴商业版。