最近公司购买了一套Symantec的杀软,准备推广到个人笔记本上。笔者试用了一下,不知道是因为驱动的bug还是其他原因,笔者的Photoshop突然变得非常卡。好吧,要跟杀软说拜拜了!结果打开控制面板一看,直接悲剧了!如图1所示。
好吧,真是万恶的IT部门,竟然有密码保护。这个密码肯定是不会告诉我了,只好自己动手了。读到这里,读者们肯定会说了,完全可以直接秒了杀软的服务嘛。不过笔者出于好奇,还是挂上了这个进程,看看这个密码保护是怎么实现。
OD分析–内存爆破
看了看提示是中文的,下个MessageBoxW断点,果然断下来了。返回到MSIEXEC的领空,然后一直往上找,看看有没有办法绕过。
012BAAC0 012BAAC2 . . . . PUSH0 PUSHEBX ;T|itle ;T|ext 012BAAC3 PUSHDWORDPTRSS:[EBP-10] PUSHDWORDPTRDS:[ESI+20] 012BAAC6 ;h|Owner 012BAAC9 . CALL DWORD PTR DS:[<&USER32.MessageBoxW; \MessageBoxW 012BAACF . MOVECX,EDI 向上翻了翻,很幸运地看到了一个大跳转,会直接跳过这个MessageBoxW的调用。 012BAA5C 012BAA5D 012BAA5F 012BAA61 012BAA63 012BAA68 012BAA6D . . POPECX TESTAL,AL . JESHORTMSI8.012BAA6D;这里下断点 MOVECX,ESI . . . CALLMSI8.010425C7 JMPMSI8.012BAB0B CALLMSI8.0103ADF2 ;这里大跳转
我们在12BAA5F处下断,在OD里执行,nop掉这个jz跳转,继续执行,发现SEP已经不再询问密码了!到这里我们就可以做个简单的内存补丁,去爆破了。方法也很简单,先枚举窗口,找到PID以后改内存就行了,最终效果如图2所示。不过我们还得继续分析呢,所以赶紧点了取消。
密码保护分析
既然刚才已经追踪到了MSIExec的某个模块,我们干脆就去分析它吧!这里偷个懒,直接搜索字符串,最终发现了一处非常可疑的注册表读取调用,如图3所示。
这个逻辑很明显了,先读取名字为SmcInstData的键值,如果不存在就不需要密码了。
打开注册表一看,那个键值长度刚好16位,碰巧这个模块有一处CryptCreateHash调用,创建的刚好是MD5密码,看来八九不离十了!如图4所示。
试着直接干掉这个注册表键位,直接悲剧了,提示删除时出错。看来有Hook,拿出自写的工具统统Unhook掉。再次点击删除,键值果然消失了,顿时一阵快感袭来,终于能卸载了!再次点击删除,发现又提示输入密码。在注册表里按了下F5,发现SmcInstData被还原了。好吧,只好使出最后的一招了!
直接在注册表里去掉Everyone的读取权限,这下SEP没法读取了吧?再次运行卸载命令,SEP果然识别不了密码,直接跳到卸载步骤了!唉,百密一疏,杀软竟然不先去恢复注册表权限,就去解析密码了呢。
本文内容所提及均为本地测试或经过目标授权同意,旨在提供教育和研究信息,内容已去除关键敏感信息和代码,以防止被恶意利用。文章内提及的漏洞均已修复,作者不鼓励或支持任何形式的非法破解行为。