极域电子教室研究记录
2021/6/18 – 2020/6/19
学生端DLL方面
LibTDUsbHook10.dll
说明:此DLL用于禁用启用光驱或U盘,依赖于C++,依赖文件包括mfc*.dll、msvcr*.dll、Micossft.VC80.*.manifest。
函数:
# 部分函数给予研究说明
TDUsbFilterInit() 用于初始化DLL(获取U盘列表等信息)
TDCdFilterInit() 用于初始化DLL(获取光驱等信息)
TDUsbFilterDone() 用于释放DLL(释放U盘信息),程序关闭时调用
TDUCdFilterDone() 用于释放DLL(释放光驱等信息),程序关闭时调用
# 下面函数中的“*”代表Usb或Cd,只是对象为U盘或光驱的区别
TD*FiltFree() 设置光驱或U盘全部开放
TD*FiltReadonly() 设置光驱或U盘只读
TD*FiltNoExecute()设置光驱或U盘禁止运行可执行程序
TD*FiltBlock() 设置光驱或U盘完全禁止
LibTDFileFilter.dll
说明:此DLL用于禁用运行可执行程序,依赖于C++,依赖文件包括mfc*.dll、msvcr*.dll、Micossft.VC80.*.manifest。
函数:
# 部分函数给予研究说明
TDProcHookInit()
用于初始化DLL
TDProcHookSetExecuteRule()
用于设置可运行的文件的规则,需传入若干的参数。用于极域电子教室在每次接收到教师端的禁止信号时都会调用此函数,DLL不开源,我使用OD等多个反汇编软件都无法直接查看传入参数,目前已知的一个参数是一串字符串内含有运行执行的程序名,并且以“xx\nxx\n”(一行一个程序名)的形式。
TDProcHookDone()
用于释放DLL
TDProcHookDisableProcFilter()
设置应用程序限制解除
TDProcHookEnableProcFilter()
设置应用程序限制开启
LibTDFileFilter.dll
说明:此DLL用于处理图片、屏幕截图等。属于FFmpeg的动态链接库,使所以会有文档,在学生端截图上传教师端时会调用如下三个函数:
sws_getContext():初始化一个SwsContext。
sws_scale():处理图像数据。
sws_freeContext():释放一个SwsContext。
资料见:sws_getContext()_傻眼哥的博客-CSDN博客
学生端通讯方面
执行命令UDP端口
说明:学生端会打开一个端口进行UDP,教师端会通过这个端口发送消息、执行命令等,不同版本的端口号不同。我使用的是学生端2021豪华版,这个端口是4988。
因为极域电子教室忘记进行身份验证,所以可以通过FireShare截获流量并模拟发送进行控制学生端。
此想法来自:https://github.com/ht0Ruial/Jiyu_udp_attack
使用Python编程,我进行重新捕获并编写了易语言代码,并修改了其中的不能同一时间发送多个命令的BUG。分析图片如下:
截获的数据流中(选中部分),DMOC为通讯指令(极域电子教室自己定的,用于发送消息),后面的4e部分是一段随机字符,学生端应该是用来在同一时间(约15s内)判断教师端命令是否重复设置的。65 00那里开始就是消息了。编程后:
同样捕获执行命令数据段,大体与上面一样: