如何针对大量目标进行指纹识别

  • A+
所属分类:安全文章

针对某个企业进行渗透测试,通过前期信息收集,会收集到非常多的子域名,有大量应用系统需要我们做测试,当然不可能所有系统都是企业自研,也许会用到比较多的开源系统或者开源组件,那么如何针对大量目标进行指纹识别呢?

网上也有很多开源的指纹识别工具,但是速度会比较慢,比如 Tide 团队的这个指纹识别工具:

https://github.com/TideSec/TideFinger

使用上也比较简单,直接指定目标即可,也支持多线程,如果想要针对大量目标进行指纹识别的话,有多种方式,但是直接使用它的话,会比较慢,所以我就基于他们整理的指纹库,进行了二次开发,写了一个可以快速识别指纹的脚本。

从它们的代码中,可以看到,指纹库 cms_finger.db 中,包含两种指纹,fofa 和 cms,将其中的指纹进行提取之后,了解其指纹信息结构,fofa 的规则:

(1, u'Huawei-Firewall', u'header="Eudemon Server" || body="Modify by wangxiangguang"')

其规则中,第二列是指纹的名称,第三列是规则,上面的规则中,header 中包含 Eudemon Server 或者 body 中包含 Modify by wangxiangguang 则认为该系统为 Huawei-Firewall,然后看一下 cms 的规则:

(1, u'08cms', u'/images/admina/arrow.jpg', u'4d31afa41252d32d8a9aefe04796eb4e', u'md5', 0)

第二列是指纹命令,第三列为路径,第四列为规则,第五列为规则类型,比如上面的规则的意思,当目标网站上存在路径 /images/admina/arrow.jpg 并且该文件的 md5 值为 4d31afa41252d32d8a9aefe04796eb4e 时,则认为该系统为 08cms,规则其实很好理解,这是指纹识别的核心。

在做指纹识别的时候,如果一个目标一个目标的去做全面的指纹探测,那么在短时间内,会对目标进行多次访问,很容易触发网站的安全策略,由于我们需要指纹识别的网站数量比较大,所以,可以将访问的请求打乱,将同一网站的访问请求频率降低。

首先提取出 cms 规则中的所有路径,然后以路径列表作为第一层循环,然后以目标列表作为第二层循环,这样进入队列中的顺序就是乱的,每探测一轮路径才会请求一次目标网站,这样的访问,在目标看来不是短时间多次,而是每隔一段时间一次。

最后结合多线程,实现快速扫描,最终获得想要的结果,最后我扫描四万多个目标,用了四五天的样子,开的一百个线程,结果如下:

如何针对大量目标进行指纹识别

因为访问一次网站也不容易,所以在指纹识别的同时,将页面中链接提取出来,进入下一步的漏洞探测阶段,漏洞探测阶段采用的是 xray 的被动扫描,编写一个调用 firefox 的脚本,使用 xray 启动的代理,自动访问,自动漏洞扫描,效果还是不错的,如果想要看详细的情况,可以加入信安之路的知识星球查看。

如何针对大量目标进行指纹识别

最后,大家肯定关心,这个脚本哪里可以获取?当然是知识星球啦,之前也做过直播讲解,但是未分享脚本。今天就把脚本分享到知识星球,有需要的可以前往获取,参考一下,编写属于自己的指纹识别工具。

如何针对大量目标进行指纹识别

本文始发于微信公众号(信安之路):如何针对大量目标进行指纹识别

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: