# TideFinger **Repository Path**: breaks/TideFinger ## Basic Information - **Project Name**: TideFinger - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-04-06 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

# 技术原理及实现
## 指纹库整理
我们搜集了大量的开源指纹识别工具,从中提取了指纹库,进行了统一的格式化处理并进行去重,最终得到了一个大约2078条的传统指纹库。本来想把fofa的库也合并进来,发现格式差异有些大,便保持了fofa指纹库,并把WebEye的部分指纹和fofa指纹进行了合并。这样就保留了两个指纹库,其中cms指纹库为传统的md5、url库,大约2078条指纹,可通过关键字、md5、正则进行匹配,fofa库为2119指纹,主要对Header、url信息进行匹配。
## 指纹库优化
在对指纹库整理去重后,对每个指纹进行了命中率的标识,当匹配到某个指纹时该指纹命中率会加1,而在使用指纹时会从优先使用命中率高的指纹。
然后我们从互联网中爬取了10W个域名进行了命中率测试,然后对一些误报率比较高的指纹进行了重新优化,得到了一份相对更高效的指纹库。
## 未知指纹发现
目前新指纹的识别基本还是靠人工发现然后分析规则再进行添加,所以各平台都有提交指纹的功能,但是我们没有这种资源,只能另想办法。
于是想到了一个比较笨的方法:从网站中爬取一些静态文件,如png、ico、jpg、css、js等,提取url地址、文件名、计算md5写入数据库,这样再爬下一个网站,一旦发现有相同的md5,就把新的url也加入到那条记录中,并把hint值加1,这样爬取10W个站点后,就能得到一个比较客观的不同网站使用相同md5文件的数据了。
有兴趣的可以查看具体代码`https://github.com/TideSec/TideFinger/blob/master/count_file_md5.py`文件。
爬取的结果如下:
当然了,里面肯定很多都属于误报,比如上图中第一个其实是个500错误页面,所以出现的比较多,第二个是政府网站最下边那个常见的“纠错”的js,所以用的也比较多...
经过一些分析整理也发现了一些小众的CMS和建站系统的指纹,比如三一网络建站系统的`newsxx.php`,比如大汉JCM的`jhelper_tool_style.css`等等,后续会持续把这些新的指纹丰富到指纹库中去。
## 指纹识别脚本
有了指纹库之后,识别脚本就相对比较简单了,已有的一些也都比较成熟了,直接使用了webfinger和whatcms的部分代码并进行了整合优化,于是就有了TideFinger。
1、功能逻辑都比较简单,先用fofa库去匹配,然后获取一定banner,如果banner中识别除了cms,则返回结果,如果未识别到cms,则会调用cms规则库进行匹配各规则。
2、脚本支持代理模式,当设置了-p参数,且`proxys_ips.txt`文件包含代理地址时,脚本会随机调用代理地址进行扫描,以避免被封ip,不过这样的话效率可能会低一些。毕竟搜集的免费代理质量还是差一些,速度会慢很多。有钱人可以找收费代理池,然后每个规则都用不同代理去请求,这样肯定不会被封!
代理地址的搜集可以使用我修改的另一个代理池`https://github.com/TideSec/Proxy_Pool`,提供了自动化的代理ip抓取+评估+存储+展示+接口调用。
3、经测试,一般网站把所有指纹跑一遍大约需要30秒时间,个别的网站响应比较慢的可能耗时更长一些,可以通过设置网站超时时间进行控制。
# 指纹识别平台
在有了指纹库和识别脚本之后,我们想继续完善下这个功能,于是又加入了其他一些功能,有个这个在线指纹查询平台`http://finger.tidesec.net`。
开始想加的很多,但后来在速度和时间方面不得不进行了一定的取舍,于是就有了目前如下的功能。
1、网站信息:网站标题、状态码、302跳转信息等;
2、IP地址信息:IP归属地、IP服务商信息、GPS信息;
3、CDN识别:对目标是否使用CDN进行检测,但目前CDN识别指纹还不多,对部分识别出使用CDN的目标还会列出来CNAME;
4、中间件识别:主要通过http头信息中的XPB、server等字段获取中间件信息,如nginx、iis、tomcat等;
5、更多banner:主要是调用了whatweb和Wapplyzer进行更多banner信息的获取,如jquery、bootstrap等;
6、操作系统识别:识别比较简单,通过ttl值和文件大小写是否敏感...用nmap去识别的话速度太慢...
7、本来还加入了子域名发现、端口扫描和waf探测等等,但发现耗时相对较长,而且比较容易被封IP,所以又去掉了。
团队没有专门做前端的,看云悉界面比较美观,所以就参考了云悉和WTF_Scan的界面布局,大佬不要打我们...使用了TP5框架,因为平台的功能都比较low,以防被喷就不放源码了。
大家可以试用下,给我们提提意见`http://finger.tidesec.net`
注册需要验证码,关注下我们公众号回复“潮汐指纹”即可~~被逼拉流量O(∩_∩)O哈哈~~
# 待解决的问题
1、指纹库的继续完善:这是个旷日持久的工作,希望能坚持下去,我们也会持续的开源最新指纹库,希望大家手头有好的资源也可以贡献出来。
2、代理问题:虽然集成了代理功能,但经实际使用来看,搜集的免费代理质量还是差一些,速度会慢很多。
3、IP会被封:有的网站防护对目录枚举或一些路径非常敏感,会封IP地址;
4、下一步尝试对http头进行语义分析,从海量网站中提取分析header的共性,更高效的发现未知指纹。
# 小福利
1、指纹检测工具下载
我们把上面的13款**指纹识别工具**和搜集到的一些**论文资料**进行了汇总打包,大家可以直接下载。
`下载地址:https://pan.baidu.com/s/190K34cwjAWDUMLtR8EWvNA 提取码:5y4o 解压密码www.tidesec.net`
后续如有更新,会在我们公众号`TideSec安全团队`上提供下载,回复“指纹工具”即可获取最新指纹识别工具下载地址。
2、指纹库下载
我们在GitHub上提供的是2019年4月的指纹库(还未进行大量的命中率测试),后续我们还会优化调整命中策略、未知指纹识别方法,持续更新优化指纹库。
最新指纹库的下载请关注我们公众号`TideSec安全团队`,回复“指纹库”即可获取最新指纹库下载地址。
# 关注我们
**TideSec安全团队:**
Tide安全团队正式成立于2019年1月,是以互联网攻防技术研究为目标的安全团队,目前聚集了十多位专业的安全攻防技术研究人员,专注于网络攻防、Web安全、移动终端、安全开发、IoT/物联网/工控安全等方向。
想了解更多Tide安全团队,请关注团队官网: http://www.TideSec.net 或关注公众号:
