What?我竟然用游戏修改器卸载了X擎
前言
声明:本人是Web选手,对逆向知识掌握浅薄,文中如有错误还请多多包含,不吝赐教。
声明2:该问题已经在8、9月提交过补天,给的回复是不关注、无影响,据说新版本中已经修复。
某次去客户那边做渗透,现场使用X擎做了准入系统,要求我们必须安装X擎,可是等到项目结束,想要卸载的时候,客户那边的技术负责人也不知道卸载密码,说是只有总部的人才有,最后就是建议我重装系统。
重装系统是不可能重装系统的,辣么麻烦。祭出OD用我三脚猫的逆向功夫搞一把试试?
这篇文章是基于之前测试的记录来写的,所以截图里客户端更新日期也是当时的
Bypass原理
下面说说我是如何绕过卸载密码并成功卸载掉X擎的,总体思路是爆破
。
1、正常启动卸载x擎客户端,发现是一个进程为uninst.exe的程序,使用OD加在并启动,设置一个消息框断点BP MessageBoxW
,因为密码错误会弹窗。
2、输入任意错误密码,程序便会断线,堆栈窗口中跟随到函数调用处。
3、往上拉一点发现一个0x6DF5585C的地址,可以跳过关键函数,因此可以通过修改这里的je为jmp,达到bypass卸载密码的目的。
4、记住该函数包含在模块名为360trayexit.dll
里
编写修改器
1、打开CheatEngine,使用自动汇编功能制作修改器,这里的地址使用的是模块名加地址的方式
[ENABLE]
360trayexit.dll+585C:
jmp 360trayexit.dll+58B0
[DISABLE]
360trayexit.dll+585C:
je 360trayexit.dll+58B0
2、使用CE直接,画一下界面,绑定F2热键来触发自动汇编脚本,然后生成修改器。这样在卸载窗口按下F2就可以输入任意密码卸载了
版本为测试时的最新版
总结
这篇文章首发T00ls,同时也会放在我的Github里,卸载演示视频、CT脚本、PoC程序我会打包放在这里:https://github.com/f1tz/SecurityNotes
由于X擎客户端都是每家公司定制的,可能地址偏移会不同,如果想用CE做通用的卸载工具,个人觉得可以考虑使用特征码来定位关键代码再修改,我这里之前只是为了证明一下,就没做那么麻烦。
通过演示视频可以看出,X擎保护全开的情况下,不会对修改器进行查杀(WindowsDefender会查杀),整个过程也没有出现任何告警的。这里不需要使用任何驱动技术,直接修改内存就bypass了,证明X擎并没有保护卸载程序的进程。
下图这是补天的回复,X擎厂商在6.7版本后应该就解决了这个问题,由于我也搞不到6.7版本(自动升级好像不能提升程序版本)的安装包,所以无法进行测试。
自评TCV:1
评论22次
别问,问就是新版本已修复
一看就是老版本,因为新版本叫“奇安信 天擎”
问就是修复 确实是 很烦。
找个QAX的员工要内部文档
我们这里的天擎卸载的时候是提示要输入密码的。。
一看就是老版本,因为新版本叫“奇安信 天擎”
是不是感觉打开了一扇新大门。
现在的厂商真的是鱼肉白帽
ionCube 天擎的代码解密方法有么 老哥们
上次我也是去某国企,给我装了个这玩意,搞了半天没搞掉 最后联xi的阿里的人帮我问到的密码,,,
碟中谍啊
都是打工人
推送过来的,前排学xi
您发现的下一刻,我们就已经修复了
多谢大佬们的努力
您发现的下一刻,我们就已经修复了
这个思路可以,但是没必要这么麻烦的,这个客户端卸载只要删除特定的存储密码的文件就好了啊
不关注,无影响。新版本已修复。。。。
天擎的 安装包有么?
抱歉,安装包里有客户定制化信息,不方便提供
经典老套路,新版已修复
天擎的 安装包有么?
研究研究总是会有结果 的。
我安装了其他准入,也是要卸载密码,不过我是直接粉碎文件,用安全模式删除了,楼主的测试思路可以,又学xi到了。
别问,问就是新版本已修复