免责声明
由于传播、利用本公众号所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!
前言
参与了多次攻防演练后,每当看到其他队伍攻陷了我们未能拿下的目标时,我总会疑惑他们是否使用了 0day。明明这些资产我都进行过查看,可为何他们却能攻破呢?随着参与次数的增多,好奇心愈发强烈,在演练结束后,我便会询问他们的攻击方法。最终得出一个并非十分准确的结论:大约 70%的情况是由于自己前期信息收集不全面,而 30%则是凭借大佬们的手法(如 WAF 绕过、代审 0day、社工钓鱼、近源攻击等)。不过,总体而言,大部分问题还是源于自身前期信息收集工作做得不够到位。
常规信息收集手法
攻防当中,经常会面对大量的企业或单位资产。此时,我们通常会借助搜索引擎如 FoFa、鹰图和 Quake 来进行信息收集。然而,目前市面上公开的工具中,没有一个能够批量将所有单位或企业资产全部导出。往往我们需要通过鹰图的“icp.name==‘某公司’”,或者 360 Quake 的“icp_keywords:'某公司'”等等方式进行搜索。可以发现,对于一个公司的信息收集,往往需要借助多个搜索引擎和多种搜索语法。
工具编写
我开始尝试自行编写工具。在资产处理方面主要分为以下几个步骤:
第一步:借助备案平台和搜索引擎平台(如鹰图、Quake)收集主域名。之所以借助搜索引擎,是因为存在一些主域名在备案平台上无法找到。
第二步:将收集到的主域名通过 FoFa、鹰图、Quake 全部提取出来并进行去重处理,其中包括域名以及域名对应的 IP。
第三步:处理 IP。在 IP 处理上,我分为两方面:第一部分是通过搜索引擎收集到的 IP;第二部分是通过 nslookup 收集的 IP。之所以使用 nslookup 而不是 ping,是因为如果名称和源域名不符,基本上这个 IP 就可以丢弃了,一般来说,这种情况要么是CDN要么是防DDoS.如下图所示。
第四步:在处理 IP 时,此处拿到的 IP 有两个来源,一个是搜索引擎,另一个是 nslookup。然而,即便如此,仍然会存在许多垃圾 IP。此前,朋友提供了一个思路,即扫描 1 至 10 端口,判断其开放情况,若开放,则大概率是防火墙或者 CDN。不过,我尝试后发现,在很多情况下,这种方法会把真正的资产 IP 过滤掉。最后,我选择借助 FoFa 搜索引擎,搜索当前 IP 下的资产数量,以此来去除垃圾 IP(垃圾 IP 在搜索引擎中的资产一般很多)。
第五步:关于快速的资产扫描,通常我们收集到的 URL 资产在使用扫描工具时,可能刚扫描几个漏洞利用脚本(POC)就会被封掉 IP,导致后续 POC 无法进行验证。所以在这里,我添加了一个功能,即将容易存在高频漏洞的资产快速扫描一遍,例如 nacos、heapdump、xxl-job 等。这样做的好处是,这种简单的目录扫描不会被拦截,能够更有效地找到可攻击点。
工具痛点:
鹰图和Quake KEY的使用量需要提前判断,不然资产过多会消耗大量额度。
没有一个好的方法去除垃圾IP,只能尽最大程度上收集较全的资产IP。
很多容易存在高频漏洞的WEB资产往往出现在二级目录甚至三级目录下,仅能通过burp的被动扫描发现。