🔰0x01 前言
⛅指纹混淆技术是我在2021年研究的,前后发表过四篇文章,今天整合到一起,给大家介绍一个全新玩法,指纹混淆技术。
<!-- 演示站点 -->
https://sbbbb.cn/
🔰0x02 介绍
⛅指纹混淆技术是通过纯前端伪造指纹,造成迷惑攻击队扫描器以及指纹识别技术。在特殊的应用场景中,还可更高效捕获0day。在微步的蜜罐上取得了不错的成绩。
🔰0x03 开端
⛅想伪装成某个CMS,第一个想到的就是WordPress,因为WordPress在国内外的使用率蛮高的,而且公开的漏洞也不少。
⛅首先,攻击者想知道网站是用什么CMS制作的,通常会使用wappalyzer插件查询、指纹扫描器或者是在线CMS查询等。
🔰0x04 前期
⛅这是我的站点是一个导航站
⛅这是混淆之前的wappalyzer显示的信息
🔰0x05 混淆初探
⛅最开始的时候,是没有去分析wappalyzer的检测规则,于是尝试添加了WordPress的文件夹,但是wappalyzer还是没有显示我的站点是使用了WordPress技术,还尝试了添加了个WordPress后台,也失败了,说明这些查询CMS的工具或者网站应该不是通过目录抓取特征的。
🔰0x06 首次成功
⛅经过前面几次失败的尝试,最后使用在网站的前端添加上WordPress的CSS和JS路径,终于成功了。
<link rel="stylesheet" type="text/css" href="http://域名/wp-content/themes/wpcalm/style.css" media="screen" />
<script type="text/javascript" src="http://域名/wp-content/themes/wpcalm/js/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="http://域名/wp-content/themes/wpcalm/js/leonhere.js"></script>
⛅之后分别使用wappalyzer和在线CMS查询检测特征
🔰0x07 改良
⛅如WordPress就把这个混淆网站后台或者蜜罐地址改成wp-login.php,再加上指纹混淆。如运用在蜜罐场景,建议前端引入的同时,在对应的网站下创建目录,引入官方正常的JS和CSS。如运用在混淆其他场景时,为了避免引入的JS和CSS造成网站排版混乱,需要前端注释或者是文件内注释,亦或者不引入文件。
🔰0x08 深入研究wappalyzer规则库
⛅在研究wappalyzer规则库时得出结论,指纹识别一般都是匹配CMS的JS、CSS文件路径或者是头部的meta标签信息,使用头部信息检测的CMS指纹,后面的数值可任意修改,在指纹识别的时候,也能混淆版本号。
🔰0x09 指纹特征代码样本
✅dedecms
<script language="javascript" type="text/javascript" src="/include/dedeajax2.js"></script>
✅Wix
<meta name="generator" content="Wix.com Website Builder"/>
✅Drupal
<meta name="generator" content="Drupal 9 ()" />
✅Joomla
<meta name="generator" content="Joomla! - Open Source Content Management" />
✅Ghost
<meta name="generator" content="Ghost 1.26" />
✅Odoo
<meta name="generator" content="Odoo"/>
✅Sitefinity
<meta name="Generator" content="Sitefinity 13.3.7600.0 PU" />
✅Grav
<meta name="generator" content="GravCMS" />
✅Pligg
<meta name="generator" content="Pligg" />
🔰0x10 指纹特征挖掘
⛅想挖掘特定CMS的特征,一般测试是否能别识别分为两种方法。
⛅第一种:寻找头部特征,直接在前端代码搜索CMS的名字,寻找mata标签。
⛅第二种:若未找到头部特征或者头部特征不识别,那就找带有CMS特征的CSS和JS。
🔰0x02 深挖指纹特征识别模式
⛅指纹识别常用的分为wappalyzer和工具识别,这两款是不一样的,wappalyzer是检测前端代码是否包含特征,工具是跑目录下的特征文件
🔰0x11 深挖Wappalyzer指纹库
⛅首先,我们要找到Wappalyzer指纹库的路径,开始我们先打开插件详情,找到ID编号
⛅文件路径
C:UsersAdministratorAppDataLocalgoogleChromeUser DataDefaultExtensions插件ID编号版本号technologies
⛅就可以看到Wappalyzer指纹特征库
⛅指纹库里所有文件用nodepad++打开 全局搜索想伪造指纹的名字 如WordPress
🔰0x12 实战场景运用
⛅使用的环境不一样,操作步骤也不一样,比如想在自己的站点加一个假指纹+假后台,就可以按照自己想混淆的CMS进行操作,或者大家想在站点部署一个蜜罐捕获一些东西,就可以以蜜罐的方式进行混淆。但是不管是自定义站点或者是蜜罐方式,都是换汤不换药,实战过程也都差不多。
🔰0x13 实验环境
⛅HFish蜜罐要载入自定义web的话,只能采用HTML,所以本次就不修改成PHP,还有一个官方自带的JS来返回一些密码输入错误的弹窗的,如果大家不使用蜜罐的话,可以自己修改成PHP还有WordPress官方的密码错误提示,还有文件名wp-login.php本次也不做修改,因为要来兼容蜜罐。
🔰0x14 准备工作
⛅WordPress官方版来对照源文件和一些指纹识别工具来进行定向混淆
🔰0x15 头部混淆
⛅因为WordPress没有特定的头部标签,各种识别CMS的都是检查JS和CSS文件,但是因为是要精确混淆,所以我们还是给蜜罐加上头部的一些WordPress自带的信息,除了自带的信息外,还有CSS文件,下面会讲到。若CMS有ICO图标,也得加上ICO图标
🔰0x16 CSS混淆
⛅CSS混淆的话,如果是自制伪装CMS的过程中,css自己设计也行,拿官方的CSS也行,我这边就直接拿HFish蜜罐的CSS基础上加了点改动,改了路径,更能便于识别。自己设计的话记得更改跟官方CMS一样的路径。
🔰0x17 JS混淆
✅1.自制混淆指纹情况下,前台后台都要加上官方JS和CSS的路径,确保可以访问,确保访问有内容。
✅2.最好是添加官方的JS和CSS,前提是不影响主业务的运行,若影响主业务运行,可选择注释后再进行加密,这样确保可以访问,访问有文件,但是不会影响主业务。
✅3.HFish蜜罐是没有前台的,只有一个后台,所以我们将后台的JS和CSS所需的文件附上就行了,只要不影响蜜罐运行,不影响前端样式,可不必注释和加密,正常使用官方JS即可。
✅4.自制全套前后台的话,可以将官方下所有的CSS和JS文件放在目录底下,尽管可能在前端代码中不会显示,但是还是会被扫描器扫到,达到混淆的目的。
🔰0x18 HFish蜜罐展示
⛅这是我在官方原有的基础上进行的改动,将CSS和JS移植到WordPress对应的文件夹
🔰0x19 上线实测
⛅在进行混淆后,要确保业务正常运行(不止是蜜罐正常运行,各位实战的时候自己的业务也要正常运行),我们把做好的蜜罐放入HFish运行试试看。
混淆指纹的核心就是不影响前后端
⛅蜜罐捕获功能实测
🔰0x20 全副武装
⛅在线指纹检测和软件指纹检测的方式是不一样的,软件一般偏向于CSS和JS的文件扫描,扫到特征就检测出来,所以,在做全套指纹混淆的时候,不管前端有没有指引的CSS和JS,最好把官方CMS文件夹里的所有CSS和JS都拷贝出来混淆,这样被软件扫的话也不怕。
🔰0x21 总结
⛅指纹混淆技术,实战起来并没有太大难度,从各个维度各个场景进行混淆使用,实战场景还是很广泛的,大家有兴趣可以自己研究一下。如果喜欢的话,请给`安全社`公众号点个关注吧。感谢观看!
原文始发于微信公众号(安全社):指纹混淆技术与实战场景
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论