反编译ex4文件(reflector反编译exe)

反编译ex4文件(reflector反编译exe)p style margin left 0 text align justify 本学期在所有的教室都发现学生端更新了新版本 p 启动项变成了服务无法使用 taskkill 关闭且行为管控组件更多 信息收集 官方居然直接公开了行为管控相关文件的信息这省去了很多分析的时间 好 行为管控 禁用外网禁用外设不生效等 噢易云

大家好,我是讯享网,很高兴认识大家。



 <p style="margin-left:0;text-align:justify;">本学期在所有的教室都发现学生端更新了新版本</p> 

讯享网

启动项变成了服务无法使用taskkill关闭且行为管控组件更多

信息收集

官方居然直接公开了行为管控相关文件的信息这省去了很多分析的时间(好!)

行为管控 | 禁用外网禁用外设不生效等_噢易云


讯享网

不过还是有必要分析一下主程序。。。

国际惯例使用IDA和procexp64(IDA9.0貌似用不了ctrl+x交叉引用?或者是我不习惯这里使用的是8.3)

启动进程MMPC.exe

似乎是直接启动student.exe不再是通过DeviceControl启动

退出开始分析MMPC.exe

查看字符串这里可以发现有两个进程的字样

交叉引用student.exe

进入sub_437DF0

进入sub_439BC0

这里先是导出了应用层的进程表然后比对是否存在传入进程

然后再查看sub_405B00

这是在获取文件路径

进入sub_43B3A0

进入sub_

似乎在复制Token

这是在启动进程其实我不理解为什么要使用用户权限运行。。。

这会导致可以使用taskkill结束进程而且导致低权限用户可以用于提权操作。。。

交叉引用DEVICECONTROL_X64.exe进入sub_438B70

进入sub_

依靠kernel32.dll判断64位系统还是32位

向下分析还发现启动MultiClient.exe不过不知道为什么没发现有这个进程。。。

回到启动student.exe的函数交叉引用进入sub_

进入sub_

看到很多Tea字样(教师)还有文件TeaSide.ini

还真有这个文件不过Flag=0

一样的获取文件路径后读取了这个文件

这里如果flag不等于0则进入Teacher规则否则进入Student规则

这里应该就是分辨启动教师端还是学生端的地方

至此MMPC分析的差不多了

分析DeviceControl_x64.exe

貌似没什么好东西跳过(就是懒。。。)

Emmmn突然发现好像要连接教师端才会激活行为管控所以没有以前那些控制进程

分析Student.exe

没啥东西

不过通过火绒剑发现他在使用res.config

貌似是词典库看看有什么发现

这里应该就是WrongPassword

修改文件内容发现弹窗改变

在student.exe查找字符串

交叉引用

这里是弹窗逻辑

尝试找到突破点

爱死IDA图形化!!!

这里是判断按下哪个按钮是确定还是取消

这里应该就是判断密码的地方不对就弹出错误弹窗改jnz

退出成功。。。

相当于 == 改成了 !=

正确密码判断错误而错误密码判断正确

至此student.exe的主要激活成功教程任务完成

趁下课连接教师端试试

果然启动了MultiClient.exe

程序目录下存在MultiClient.txt内容如下

不过进程里没有里面的字符串

结合进程加载了其他dll推测是dll里的

含Lock和keyboard字样的文件是LockKeyboard.dll额。。。这太明显了

翻译过来就是键盘锁

LockKeyboard.dll分析

搜索字符串

果然

看样子日志类型还挺多

搜DisableKeyboard

交叉引用进入sub_

可以发现\Device\KeyboardClass0那么就是加载了驱动

这个KbFilter.sys就是锁键盘的驱动

0xB2004应该就是锁键盘的通信编号

0xB2008是解锁

分析KbFilter.sys

标准的WDM驱动

进入sub_15008

Bypass DSE签名注册设备(应该是没有WHQL认证哈哈)

这里有DbPrint那就是有信息输出直接查看字符串

交叉引用进入sub_110AC

0xB2004是锁键盘的编号10进制是

而传入0xB2004()这里v5就是0

然后 !v5 = True

V11 = KEYBOARD_ALL_DISALE (全键盘禁用)

这里就成功验证了刚刚的分析

进入sub_111C4

这里就是过滤键盘的扫描码

至此键盘管控代码分析的差不多了

解锁代码

这两个驱动就不分析了毕竟没用到

U盘禁用是通过深信服禁用的,对抗深信服(EDR)可以单独开一个

其他行为管控功能例如网络限制/移动设备限制/进程限制等功能的驱动在我目前所有上课的教室里都没有启用

不过为了研究这里还是来分析一下

可以看到在管控组件完全开启的情况下学生端进程完全无法被访问

哪怕是特权全开

但是MMPC服务可以关闭不过不影响student.exe

打开debugview可以看到一堆输出

都是学生端的驱动

这里明显有个进程监控(启动进程后输出了对应进程名字)

使用ARK文件分析发现加载了多个驱动

进程回调

键盘和文件系统过滤

甚至SSDT

那么常规对抗思路就不行了得上内核对抗

这里我们先开一个进程黑名单

使用ARK工具挨个卸载驱动发现有关黑名单进程启动的驱动是ProcFireWall.sys但是dbgprint的是OeNetLimit.sys         很神奇对吧。。。

不过两个驱动卸载后student.exe还是不可访问。。。

分析mtdrpt.sys

这可以发现有MMPC

这是文件夹保护保护运行目录文件不被修改

在mtpcpt.sys可以发现

这是一个含有obregistercallbacks的驱动

Obregistercallbacks可以监控进程的句柄,常用于进程保护,例如游戏的反作弊在sub_可以看到这里在将a2(推测是回调传入的被访问进程的PID)和dword_数组里的数据进行对比

在sub_中我们可以找到dword_的修改代码通过DbgPrint的信息可以看出这就是在保存PID

这段代码的大致意思是在保护指定PID进程使其被访问的句柄降权

附上句柄的宏

#define PROCESS_TERMINATE                  (0x0001)

#define PROCESS_CREATE_THREAD              (0x0002)

#define PROCESS_SET_SESSIONID              (0x0004)

#define PROCESS_VM_OPERATION               (0x0008)

#define PROCESS_VM_READ                    (0x0010)

#define PROCESS_VM_WRITE                   (0x0020)

#define PROCESS_DUP_HANDLE                 (0x0040)

#define PROCESS_CREATE_PROCESS             (0x0080)

#define PROCESS_SET_QUOTA                  (0x0100)

#define PROCESS_SET_INFORMATION            (0x0200)

#define PROCESS_QUERY_INFORMATION          (0x0400)

#define PROCESS_SUSPEND_RESUME             (0x0800)

#define PROCESS_QUERY_LIMITED_INFORMATION  (0x1000)

#define PROCESS_SET_LIMITED_INFORMATION    (0x2000)

禁用了以下句柄权限

PROCESS_TERMINATE     结束进程权限

PROCESS_VM_OPERATION      更改内存权限

PROCESS_VM_READ        读取内存权限

PROCESS_VM_WRITE      写入内存权限

这也解释了为什么student.exe在一开始无法被访问除非进程在内核层强制结束后重启才行

推测是驱动中只预留了8个PID保护位已经被沾满了无法再添加PID

这个驱动的功能可以被恶意利用例如保护恶意进程不被访问

MMPC中并不包含该驱动的链接

使用procexp64查看加载的dll可以发现AntiHelper.dll

反编译AntiHelper.dll发现设备名

交叉引用查看AddProcessPid函数

在MMPC的sub_F7A40可以看到调用的方法

在往上就是一开始分析的

编写代码

利用成功

单exe代码

对抗思路就是修改IOCTL代码为0x22A404就是DelProcessPid

由于没有禁用PROCESS_SUSPEND_RESUME所以我们可以挂起进程

解锁代码

关闭文件夹保护只需要执行ResetProtectDirectory函数即可

解锁代码

通过行为监控我们发现了日志文件

似乎DeviceControl_x64.exe在控制整个管控系统

结束进程后黑名单进程也能启动了

那么接下来分析DeviceControl_x64.exe

交叉引用

可以说非常离谱

这个程序利用驱动获取启动的进程名然后在应用层结束

怪不得驱动里没有返回禁止启动

这里有白名单的策略

只要路径里有这些字符就可以运行

接着分析OeNetLimit.sys        官方文档说明这是网络限制模块

进入DriverEntry函数后可以看到几个进程名在白名单函数下

那么想上网就改成这几个名字就好了

进入sub_13D08函数

看输出信息感觉像是名单添加函数

查看字符串

这里有个添加白名单DNS的字符串(翻译过来的意思)

交叉引用到sub_11030

对sub_11030再次交叉引用进入sub_12F84

貌似是入站规则

在sub_11B10找到了网速限制的字样

byte_17220和byte_1721F似乎是网速宽带的限制如果 != 0 就激活下面的逻辑

在sub_13B1C中找到了ZwReadFile函数(内核层文件读取函数)

似乎在读取\SystemRoot\WhiteProcessPath.txt

在系统目录中确实找到了这个文件

貌似是激活程序的路径?

确定这是白名单文件但是这个函数仅在驱动启动时运行所以还需要找IOCTL代码伪造命令修改

回调部分也调用了sub_13D08

在sub_11CCC看到了WFP字样基本能确定这是利用WFP封装的防火墙达成的操作

这里我们可以发现IOCTL代码

分析NetLimitInterface.dll可以发现有多个功能的字符串

交叉引用多次后到sub_F0可以看到加载了OeNetlimit.dll

分析OeNetlimit.dll可以找到字符串\.\OeNetLimit交叉引用找到和驱动建立连接的代码

这只是判断WFP驱动加载情况搜索DeviceIoControl字符串找IOCTL代码

找到触发DbgPrint(“OEDRV WfpSampleIRPDispatch Check OEDRV_IsPassProcess ”);的代码

是SetBlackUrl函数里调用的函数看着名字似乎是设置黑名单URL

那么我们看看哪个函数是开网函数

这个EnableNet看上去就像开网的(字面意思)

Emmmn就是刚刚那个,那么可以推测设置黑名单URL是要先开网然后设置?

一样的写一个代码加载这个dll调用开网函数就行

解锁代码

日志分析里有一个Call EasyUsb_StopWorking查找字符串发现是调用了easyusbctrl.dll

分析easyusbctrl.dll发现和驱动设备EasyUsbflt通信

在student_install_control.bat可以发现安装了easyusbflt驱动

分析easyusbflt.sys

含有移动设备处理代码

分析easyusbctrl.dll的EasyUsb_StopWorking

可以发现stopworking是将dword_14420设为0

交叉引用可以发现禁用USB的代码

那么对抗禁用USB就执行EasyUsb_StopWorking这个函数的功能就行

解锁代码

不过还是无法使用USB

看到Windbg输出OEDRV FbdATS OEDRV_IsPassProcess

这应该就是FbdATS.sys的输出

分析FbdATS.sys

这是一个文件微过滤驱动

通信代码在DeviceControl_x64.exe里面

有点乱不过IDA断点调试后就好啦

附解锁代码

小讯
上一篇 2025-06-11 09:45
下一篇 2025-04-24 14:54

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/193889.html