『红蓝对抗』教你如何搞定某擎EDR卸载密码
日期:2021-04-01
作者:Zero
介绍:逆向某终端安全管理软件卸载密码,红队活动在没有其他收获时,多一个密码组合规律,就多一种路子不是?
小编提示:关注『宸极实验室』,回复 『卸载密码』,获取脚本。
0x00 水水水
又是一年 HW 时,曾梦想仗剑走天涯,后来工作忙没去,拿历史库存产物水一篇文章,也不晓得适不适用最新版本,还请各路大佬多担待。
0x01 前言
现在很多环境中都会安装终端安全管理软件
以保护系统的安全,管理员当然不会允许用户擅自退出或者卸载软件,往往会在服务端配置一个密码,用以运维时使用,此类运维密码往往是红队活动中梦寐以求的东西,拿到一个说不定就一码通了呢!
之前做这件事的起因是这样,跟红队大佬好基友闲聊时,说起杀软卸载密码的问题,重点不是要卸载,而是关注密码如何验证,以及是否存在获取明文密码的可能,若不是随机密码,就可以从密码分析组合规律,在没有其他收获时,多一个密码组合规律,就多一种路子不是?
一想很有道理啊,再加上正好懂一点点逆向,那就安排一下。
0x02 关键分析
直接进入正题,打开控制面板 – 程序和功能,找到目标右键卸载,会弹出对话框要求输入密码,这样的。
挂上调试器,找到验证密码的地方,其实在这里已经可以实现无密码卸载
的效果了,但这不是我们的目的,我们继续分析。
向上找到函数头部,下断点顺一遍整体流程,从函数头开始,可以看到读取了文件 EntBase.dat
。
过去看一眼这个文件的内容,稍微对内容留个印象,根据名字盲猜这两个 HASH
一个是卸载密码
另一个是退出密码
。
顺一遍最主要目的是看一下 HASH
怎么生成的,找到生成 HASH
函数后发现特征与 MD5
很像啊。
这里最简单的验证办法就是下个断点,看一下参数输入以及结果输出值,将参数代入标准的 MD5
算法对比一下就知道了,视情况而定,有时候没必要硬撸代码,验证后发现结果是一模一样啊,这里就不贴图了。
找一下参数来源,原来是将输入的内容与固定字符串进行拼接。
整个验证流程里存在两个算法,两个的核心都是拼接固定字符串进行MD5
,区别就是进行MD5
的次数,个人猜测是历史遗留问题,需要兼容旧版本。
最终整理一下流程:
-
读取
EntBase.dat
。 -
将输入的密码与固定字符串进行拼接。
-
将结果带入
MD5
方法计算HASH
,两种算法分别计算。 -
最后与
EntBase.dat
中的HASH
进行对比,两个算法的结果通过一个即可。
至此可以确定,卸载密码无法逆向还原,也无法使用在线的网站查询(因为拼接+多次计算),但是可以正向碰撞一下,所以还是存在获取明文密码的可能,只是需要一个稍微强大亿点点的字典进行配合。
0x03 验证测试
根据分析结果,写个脚本跑一下,字典使用 TOP 系列
以及定制化生成字典进行碰撞测试,如单位名加日期、座机号等信息。
拿去测试一下是否正确,先试一下退出。
退出没有问题, 卸载应该也没有问题。
0x04 总结
临近攻防演练,各路大佬肯定也在丰富自己的武器库,文中提到的思路是下下策,而且这个验证脚本并没有完全工具化,使用起来也不怎么方便。本文内容可能会有些敏感,且无技术干货,涉及到的脚本就不公布在文章里了,需要的朋友可以在公众号回复 卸载密码
获取。
来源:freebuf.com 2021-04-06 20:08:45 by: 宸极实验室Sec
请登录后发表评论
注册