前言
近期,360核心安全团队接到用户举报多款流氓软件,包括屏幕亮度调节器、超级老板键等软件采取同一手法植入恶意代码并通过各大下载站传播,在用户电脑上偷偷执行远程代码,严重影响用户的信息安全。
以下是该系列软件在下载站上的发布列表,最早可追溯到2013年,涉及各类辅助软件。
图1
下面我们以“屏幕亮度调节器”这款软件为例,分析该系列软件的运作流程。
图2
样本分析
运行软件“屏幕亮度调节.exe”,表面上显示正常功能界面。而实际上,作者毫不掩饰,直接在窗口创建时展开行为。
图3
首先加载恶意模块“ScreenFlash.dll”,并调用其导出函数“StartScreenFlashWork”来设置全局消息钩子。这一操作会使得“ScreenFlash.dll”被系统注入到每一个窗口进程中,而该模块则会在初始化加载的时候直接运行Shellcode,从而增加Shellcode的运行机会。除此之外,软件本身也创建了恶意线程来运行相同的Shellcode。
图4
Shellcode分多段运行,ShellcCode1的主要功能是检测加密的ShellCode2是否已经存在,不存在则会联网获取加密的ShellCode2执行。首先通过TEB获取kernel32.dll的模块基址,进而解析kernel32的导出表获取GetProcAddress的地址,然后批量获取自身所需的其他API地址。
图5
接着打开注册表项“SOFTWARE\ScreenBright”,并查询键值HeadData。该注册表项是用来判断是否已经下载了ShellCode2,若是查询失败,则意味着还未下载,样本将进入下载流程;反之,则进入读取文件、解密执行的流程,如下图所示:
图6
联网下载的ShellCode都是采用同一套模式,先访问加密配置后获得资源下载地址和解密key,再下载资源进行解密执行,如本例软件下载ShellCode2是先访问“http://www.baidu-home.com/screen/checkupdate.txt”后解密得到资源下载地址“http://www.2k2u.com/screen/screenjump.dat”和解密key“0x004271e4”,继而下载该资源并通过密钥解密出下一段ShellCode执行。
图7
ShellCode2的功能其实和ShellCode1差不多,主要是负责再次更新下载新的ShellCode3来执行。ShellCode3则由一段LoadPE代码和一个头部信息被摧毁的恶意dll模块组成,其功能主要是加载该模块运行。
准备完所需API后,ShellCode3首先申请一段内存来拷贝恶意dll模块,从下图可见其PE头部信息被大量抹除,只保留导入表、重定位表等必要的定位信息,但是数据目录原导出表位置存放了OEP以及OEP所指向的4字节内容(用于校验)。
图8
LoadPE代码根据导入表重构IAT表、修复重定位,再简单校验OEP处4字节代码之后就开始从OEP执行恶意dll模块代码了。
程序首次运行会写注册表项SOFTWARE\\Classes\\CLSID\\{2B53F0A7-3238-4b4d-8582-E53618739C90}\LockData,此时并不展开行为。
当程序再次运行并且发现LockData中的日期和当前日期不同时,便展开行为。
过程中还有一些进行环境检测,检测虚拟机、常用分析工具
图9
检测环境通过之后首先获取当前浏览器进程名称,并根据不同的浏览器展开相应的改主页操作,支持浏览器包括360安全浏览器、360极速浏览器、qq浏览器、搜狗浏览器等主流浏览器。
图10
感染分布
以下是此类软件在全国各地区的传播占比统计,可以看出软件主要分布在沿海各省份,其中广东为重灾区。
图11
查杀与总结
这一系列软件主要是通过在常用软件工具中安插恶意代码的方式进行伪装,虽然目前只是在用户电脑中通过诱导或强制的方式来修改浏览器首页,但是软件作者可以随时替换服务器上的shellcode来达到控制用户电脑的目的,其风险性不言而喻。
目前360已针对此类样本全面查杀,为用户电脑保驾护航,同时也提醒广大用户安装软件时使用正规的下载渠道,避免上当受骗。
图12
*本文作者:360安全卫士,转载请注明来自Freebuf.COM