一、前言
最近新出一部很火的电视剧,每天晚上更新两集,看完之后总觉得不过瘾,就去网上找后面的视频,还真被笔者找到。毫不犹豫点击播放,发现提示需要安装某某解码器。对于这类提示一点都不新鲜,尝试下载并运行解码器后,往往并没有达到预期效果,还会再次提醒下载,并没有网站上描述的那么管用。笔者很好奇既然没用,那运行的软件具体功能是什么。笔者便下载了一个“解码器”,果真不出所料,没有任何解码的功能,但是一个流氓推广软件。表面上看不出问题,只在后台搞鬼,笔者便花了点心思详细看了下该软件的实现,发现该软件作者在免杀和隐藏上下足了功夫。虽然功能老套但是思路不错,下面就请跟随笔者一起来看看这个所谓的“万能解码器”,还原真实“解码”。
二、技术特点
下载之后,没有图标,运行没有任何界面,并且多次运行效果相同。最后通过详细分析,总结该程序有如下特点:
1. 程序对重要字符串进行了加密处理,且有多个加密算法。
2. 释放的功能模块文件在本地经过RC算法加密,非正常的PE文件。
3. 无主进程运行,核心模块为内核驱动,找不到可疑进程。
4. 敏感操作放置在shellcode中,并进行加密,防止被第一时间杀掉。
5. 使用了内核技术,内核HOOK,设备HOOK。
6. 双驱动相互保护隐藏,并且通用32位和64位系统平台。
从对抗手法来看,该程序开发者无论在静态还是动态对抗上面都花了大量功夫,以达到免杀和隐藏行为的效果。
三、程序具体分析
下图是该程序的签名信息,从表面上看没有任何问题。
1. 加载器功能
该程序实际上是一个加载器,第一次运行后,后期都不再依靠该加载器运行。加载器通用于32位 和64位多个操作系统平台,根据不同系统平台释放不同文件。数据解密之后释放到系统目录下(PassProtect.sys和2.dat)。
解密shellcode并运行代码。
Shellcode中加载“PassProtect.sys”驱动文件,驱动加载状态为自动启动(开机自动加载)。
2. “PassProtect.sys”功能
首先清理“ntfs”和“fastfat”内核的所有设备,阻止自身被外部访问,执行完操作后会对其还原。
对“2.dat”文件解密,使用RC算法,解密和加密是同一个函数,解密后回写到文件。
通过内核函数ZwSetSystemInfomation加载“2.dat”驱动。
驱动加载之后再次通过RC加密回写数据“2.dat”,并还原“ntfs”和“fastfat”的设备栈,隐藏第二个驱动代码。
3. “2.dat”功能
通过设置线程创建回调,并主动触发回调来找到“ExCallBackBlockRoutineProc”函数地址。
挂钩“ExCallBackBlockRoutineProc”函数,通过过滤系统模块和自身模块,把其余所有模块的回调函数修改入口直接返回,达到反进程创建监视的作用。
设置模块加载回调和进程创建回调。
通过检查加载的模块是否是”kernel32.dll”判断创建进程,并且修改浏览器进程的命令行参数。
检查父进程为“explorer.exe”(用户打开运行),并且添加事件修改命令行参数。
修改进程命令行参数,改变浏览器主页。
创建系统线程,挂钩NTfs的create回调。
在Create回调中,保护第一个驱动文件“PassProtect.sys”不被任何程序访问。
四、总结
从上面分析看出,程序开发者通过各种技术手段,费劲心思,最终达到锁主页的目的。随着目前各大杀软对流氓推广软件的封杀,常规的推广手法已不在适用,升级后的对抗已经不在简单的修改注册表。更为猥琐和流氓的推广方式纷纷出现,各显神通,一不留神便被乘虚而入。当用户放行这个程序,流氓推广已经势不可挡,直捣黄龙。假如作者狠一点,后果将是不可不堪设想。所以笔者在这里提醒各位读者,对这类所谓解码器最好从正规网站下载。由于程序经过免杀处理,能够查杀的杀毒软件并不多(见下图VT扫描结果)。如果系统中曾经运行过该类解码器或播放器,可以安装下列可查杀的杀毒软件进行查杀。最后祝愿各位免受“流氓”困扰,金龙索玉柱,百毒不沾身。