在资产梳理过程中,如何通过证书有效地排除干扰

admin 2023年5月23日19:53:07评论28 views字数 1507阅读5分1秒阅读模式

在资产梳理过程中,如何通过证书有效地排除干扰

▌背景痛点
FOFA工程师一个主要的业务场景就是做攻击面梳理,又叫暴露面管理。核心的要求就是尽可能全面,并且尽可能准确。一个行之有效的方式是通过cert.is_valid语法来做组合查询,快速验证资产的证书是否是由受信任的证书颁发机构所颁发,比如使用语法
cert="fofa.info" && cert.is_valid=true
cert.is_valid是判断这个证书有效的方式,但是后来大家发现在梳理攻击面的时候容易出现干扰:有很多不是企业资产,但是被人绑定DNS记录(比如很多网站被DDoS攻击后,故意把DNS绑定到baidu.com,会把攻击流量引导到大型互联网公司),如下图所示:

在资产梳理过程中,如何通过证书有效地排除干扰

这个时候我们就发现那些故意绑定到大公司官方IP的域名并非我们需要梳理的有效攻击面,因此需要对这些干扰进行处理。

▌解决思路

一个最简单粗暴的方式就是,我们模拟浏览器的行为,判断域名跟证书内的信息是否匹配。但是这个方式马上会带来另一个问题:一个证书是有效的,但是并不匹配域名的资产,是否就不是目标暴露面的一部分?是我们认为的干扰数据?

我们看这个例子:

在资产梳理过程中,如何通过证书有效地排除干扰

上面的搜索结果中,我们已知IP肯定都是某银行的资产,因为只有有证书私钥的情况下才可以绑定证书,打开后浏览器会提示证书无效,如果通过证书是否匹配,这个域名就被我们丢弃掉了,实际上我们肉眼可见的可以判断出来,这其实是我们目标的暴露面。

这种情况大量存在,我们推测一下情况应该是这样的:运维团队把有效的证书放到了一台服务器,内部有一个业务域名,但是不在证书中进行登记。有可能运维团队后续会进行更新只是目前还没有登记,也或者内部觉得证书是可信的就行了,不用再去登记,反正可以使用,至少比自签名的证书要强。

基于上面的案例,我们抛弃了简单的加一个“证书可信”的开关,而是要兼顾到全面性和准确性的要求,最终,我们在研究的基础上,添加了cert.is_match语法,同时顺便解决了证书是否过期的判断。

我们将以前的判断语法和新添加的两个语法放在一起进行解释:

    • cert.is_valid 证书是否可信(非自签名的验证是否为信任证书机构颁发,true可信、false不可信)

    • cert.is_match 证书是否匹配(资产的域名和证书使用者的域名是否匹配,true匹配、false不匹配)

    • cert.is_expired 证书是否过期(true为已过期、false为未过期)

我们回到举证的案例中,加上这个语法:

cert="fofa.info" && cert.is_valid=true && cert.is_match=true

 就可以将干扰资产排除掉。

在资产梳理过程中,如何通过证书有效地排除干扰

当然除此之外,还有当可信性是true,是否匹配是false,但是资产仍然是自身资产的情况,也就是我们上文中提到的案例,也可以通过这个语法获取到:

cert="abchina.com.cn" && cert.is_valid=true && cert.is_match=false

在资产梳理过程中,如何通过证书有效地排除干扰

▌写在最后

关于新添加的证书验证语法,可以在资产收集的过程中起到了很大的作用,包括FOFA开放实验室里的攻击面梳理也已经应用了这个语法。


同时这种判断方式的语法可以单一使用,也可以多组合使用,更大程度上地给到了大家可选性。欢迎各位表哥们开发这套语法,发现他更多的新姿势。

▌End

欢迎各位白帽师傅们加入我们的社区大家庭,一起交流技术、生活趣事、奇闻八卦,结交无数白帽好友。
也欢迎投稿到 FOFA,审核通过后可获得F点奖励,快来加入微信群体验吧~~~
微信群:扫描下方二维码,加入 FOFA 社群!获取更多一手信息!
在资产梳理过程中,如何通过证书有效地排除干扰


原文始发于微信公众号(FOFA):在资产梳理过程中,如何通过证书有效地排除干扰

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年5月23日19:53:07
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   在资产梳理过程中,如何通过证书有效地排除干扰http://cn-sec.com/archives/1755246.html

发表评论

匿名网友 填写信息