网络安全 频道

热门游戏被病毒团伙利用 日感染数十万电脑

  【IT168 资讯】近日,火绒安全实验室发出警报,病毒团伙正在利用多款热门游戏疯狂传播后门病毒“Backdoor/Jsctrl”,每天有数十万台电脑受到感染。感染病毒之后,病毒制作者可随时通过远程指令对电脑做出下载其他病毒程序、劫持流量在内的多种破坏行为,牟取利益。

  据火绒安全团队分析,该病毒被制作者伪装成安装数据统计组件,植入到《传奇世界》、《传奇霸业》、《蓝月传奇》、《九天封神》等热门游戏的微端安装包内。用户在PChome、下载吧等网站下载某些软件时,会被捆绑安装这些游戏微端,而病毒也借机进入用户电脑。

  这些游戏推广力度非常大,重金邀请张家辉、古天乐等知名港星代言,网络推广铺天盖地,病毒也得以借势传播。根据“火绒威胁情报系统”的统计和评估,目前每天约有30-50万台电脑感染病毒。火绒安全团队表示,该病毒团伙很可能是部分游戏推广渠道商,建议以上游戏厂商尽快彻查自家游戏推广渠道。

  病毒入侵电脑后,病毒制作者可以通过修改服务器上的后门代码,远程操控受害者电脑,进行多种破坏行为,包括下载其他病毒程序、后台暗刷流量等。

  病毒“Backdoor/Jsctrl”极为顽固、隐蔽,不仅无法通过卸载游戏清除,还具备“反追踪”设置,可以监测远程协助软件(如安全厂商常用的TeamViewer等)中的运行窗口,一旦发现正在被远程协助,则会彻底删除病毒相关所有文件,以免被安全研究人员追踪。

  目前,“火绒安全软件”已升级病毒库,可以率先拦截、查杀“Backdoor/Jsctrl”。火绒工程师提醒广大用户,尽量通过官方网站下载软件,以免在被捆绑推广的同时,感染病毒。

  样本分析

  近期,火绒发现“下载吧”、“PCHome”软件下载中心等下载站的高速下载器所推广的《传奇世界》、《传奇霸业》、《蓝月传奇》、《九天封神》等多款游戏微端安装包内包含后门病毒。该后门病毒在上述游戏微端按转包运行后即被植入,且即便游戏被卸载仍然会常驻系统,该病毒会在远程C&C服务器存放的JavaScript代码控制下,利用病毒中封装的JavaScript对象可以执行任意Windows API或其他后门逻辑(如:下载、运行命令行等)。并且,在我们近段时间的分析和追踪过程中,该C&C服务器下发的后门脚本仍处于持续更新状态。

  上文所述的几款游戏微端安装包中都包含有相同恶意代码,下文中我们以cqsj_Y_905908_feitian.exe(《传奇世界》游戏微端安装包)为例展开详细分析。此类安装包的文件名通常为“xxxx_Y_nnnnnn_*.exe”(‘x’代表任意字母,‘n’代表任意数字,‘*’代表部分内容不固定)。安装包整体逻辑如下图所示:

热门游戏被病毒团伙利用 每天感染数十万台电脑
▲病毒执行流程图

  游戏微端安装包

  该病毒安装包中都包含有一个病毒动态库(病毒动态库名通常为“游戏全拼首字母.dll”,如:“tdzs.dll”对应“天地诸神”)。文件属性如下图所示:

热门游戏被病毒团伙利用 每天感染数十万台电脑
▲安装包文件属性

  将NSIS安装包进行解包后,我们可以在NSIS脚本中看到tdzs.dll调用逻辑。如下图所示:

热门游戏被病毒团伙利用 每天感染数十万台电脑
▲NSIS脚本中调用tdzs.dll代码

  运行安装包之后,我们可以通过火绒剑看到其进程调用关系及tdzs.dll调用参数。如下图所示:

热门游戏被病毒团伙利用 每天感染数十万台电脑
▲安装包运行

  安装后,游戏登陆界面如下:

热门游戏被病毒团伙利用 每天感染数十万台电脑
▲游戏运行界面

  通过安装我们发现,虽然安装包文件信息为“天地诸神微端”,但是安装后的游戏界面却是《37传奇世界》登录界面,安装逻辑较为混乱。

  tdzs.dll

  tdzs.dll动态库在文件信息中说明自己是“安装数据统计”程序,且在软件卸载时,该病毒动态库也会被一起删除,从而诱使用户误以为该动态库只进行“安装数据统计”操作。文件信息如下图所示:

热门游戏被病毒团伙利用 每天感染数十万台电脑
▲安装包释放的病毒动态库文件属性

  微端卸载程序删除tdzs.dll相关NSIS脚本,如下图所示:

热门游戏被病毒团伙利用 每天感染数十万台电脑
▲卸载相关NSIS脚本

  虽然tdzs.dll会被卸载程序删除,但是该动态库是直接被安装包进行调用的,所以通常在用户对游戏微端进行卸载时,病毒逻辑已经执行完毕。tdzs.dll动态库执行参数,如下图所示:

热门游戏被病毒团伙利用 每天感染数十万台电脑
▲tdzs.dll运行参数

  在tdzs.dll被rundll32调用后,首先会在全局构造过程中创建名为external的JavaScript对象,在该对象中封装了很多较为底层的方法(相较于在浏览器中执行的JavaScript脚本),用于执行其从远端服务器获取到的后门代码。

  在报告中所提及的三个病毒样本(tdzs.dll、随机名服务和up_zlib1.dll)中,关键的字符串数据都是经过XOR加密的,每一个字符串解密都对应一个独立的解密函数。解密代码举例,如下图所示:

热门游戏被病毒团伙利用 每天感染数十万台电脑
▲解密字符串

  构造external对象的相关逻辑以在对象中添加callapi方法为例,如下图所示:

热门游戏被病毒团伙利用 每天感染数十万台电脑
▲向external对象添加方法

热门游戏被病毒团伙利用 每天感染数十万台电脑
▲callapi函数实现

  除了callapi函数外,external对象中还实现有诸多方法,本文所提及的三个病毒样本运行远程后门脚本逻辑全部都依托于external对象,下文不再赘述。部分关键方法列表,如下图所示:


▲external中封装的方法列表

  在构造external对象之后,会统计当前进程关系信息和一些本地计算机信息(如:IP地址、MAC地址、CPU ID等),之后再将数据转为字符所对应的二进制字符串,经过加密后将最终数据发送到C&C服务器(hxxp://cdn.37wanyou.com)的53端口。相关代码如下所示:


▲获取进程关系信息


▲获取本地计算机信息

  最终上传至服务器中的数据,如下图所示:


▲上传的数据

  在将加密后的数据上传C&C服务器之后,C&C服务器会返回一段被加密的压缩数据。在将数据还原后,程序会得到一个后门JavaScript脚本,通过运行脚本执行后门逻辑(其他病毒组件也同样存在相同逻辑,下文不再赘述)。

  下载数据解密逻辑如下图所示:


▲下载解密JavaScript脚本

  调用ScriptControl.AddObject引用external对象后,执行后门JavaScript代码。脚本执行逻辑,如下图所示:


▲执行后门JavaScript代码

  程序执行的后门脚本可以通过云端控制,现阶段病毒已经进入蛰伏期,tdzs.dll所执行的远程脚本已经不再释放后续病毒,只有个别环境才能运行出远程脚本调用逻辑,进行软件推广。在我们通过火绒终端威胁情报系统检索与该病毒相关的行为信息时,我们发现,除了《传奇世界》游戏微端带有tdzs.dll病毒动态库外,还有其他游戏微端安装程序(下图为《九天封神》相关数据)也会释放运行该病毒,且调用参数与前文所述完全相同。火绒捆绑拦截功能日志,如下图所示:


▲捆绑拦截日志

  随机名服务

  该病毒服务的文件名是通过固定字典随机组合两个英文单词而成,文件名例如:AcceleratorLeaders.exe、AcronymOcclude.exe等等。病毒服务启动后会创建一个相同的子进程,父进程为守护进程,当子进程被结束时会重启启动子进程。代码逻辑,如下图所示:


▲等待进程退出


▲重新创建进程

  在子进程创建之后,父进程会执行与tdzs.dll中相似的信息收集流程(收集进程关系信息和本地计算机信息),之后由父进程将加密后的数据上传至C&C服务器(hxxp:// update.wanyou7.com:3900/config/gameupdate.asp)。上传后,服务器会返回JavaScript脚本进行下一步病毒释放和执行(执行JavaScript脚本相关逻辑与上文相同)。但如上文推断,现阶段该病毒已经进入“蛰伏期”,该链接已经无法访问。在服务还可以继续释放病毒文件的时,病毒服务会释放up_zlib1.dll并使用rundll32进行执行,由于服务文件说明为“游戏微端更新”,使得其释放其他病毒文件时不会引起用户注意。

  病毒服务的文件信息,如下图所示:


▲病毒服务文件信息

  病毒服务所使用的签名并不固定,如火绒截获的另一个相同的病毒服务文件信息,如下图所示:


▲文件信息

  病毒服务使用rundll32调用up_zlib1.dll,如下图所示:


▲病毒服务调用up_zlib1.dll日志

  子进程也会将上述进程信息和计算机数据发送至C&C服务器的另一个服务页面(hxxp:// update.wanyou7.com:3900/config/crm.asp),上传数据后返回JavaScript脚本并进行执行。

  JavaScript脚本逻辑,如下图所示:


▲crm.asp页面中获取到的JavaScript脚本

  如上图,如果检测到远程协助窗口类名(如:TeamViewer等)和数据包过滤分析工具进程(包括WireShark、Fidder、HttpAnalyze),则会调用external对象中的SvcExecScript方法执行远程C&C服务器(hxxp://update.wanyou7.com:3900/config/service.asp)中存放的JavaScript脚本执行自毁逻辑。自毁主逻辑代码,如下图所示:


▲自毁代码

  如图,JavaScript脚本会依次执行close_proc_has_module、del_self和del_dllservice三个函数执行自毁逻辑。close_proc_has_module函数用于遍历遍历进程,将进程模块中包含“up_zlib1.dll”的进程全部结束。具体逻辑,如下图所示:


▲结束所有加载指定模块名的进程

  del_self函数主要用于删除当前进程镜像文件,如下图所示:


▲del_self函数代码逻辑

  del_dllservice函数逻辑会先检测是否存在指定服务名的注册表启动项(如果未指定则删除自身服务项),如果存在则通过调用“sc delete”和“sc stop”结束并删除病毒服务。如下图所示:


▲del_dllservice函数代码逻辑

  up_zlib1.dll

  up_zlib1.dll动态库被rundll32调用后会创建隐藏的web控件,在后台暗刷流量,并且在访问导航页面的同时,病毒还利用JavaScript脚本模仿用户操作,欺骗导航站的作弊检测逻辑。在显示web控件窗口后,执行效果如下图所示:


▲执行效果

  up_zlib1.dll动态库由服务进行调用。调用参数,如下图所示:


▲up_zlib1.dll调用参数

  调用参数网址(hxxp://121.43.33.129:8064/apithird/getlink)中存放有一段JavaScript脚本,如下图所示:


▲JavaScript脚本片段

  在进行上述访问时,host_id属性是随机的,每个host_id所对应的script链接属性各不相同。在拿到host_id后,动态库会使用rundll32再次调用up_zlib1.dll动态库,网址参数中传入了host_id和来自delay成员中的任意数值。如下图所示:


▲运行参数

  此次在服务器中获取到的内容,如下图所示:


▲第二次请求获取的内容

  url_list属性中存放的是web控件在刷取流量时要跳转的网址,如果网址为“about:blank”,则跳转网址会由script属性网址返回的JavaScript脚本进行设置。病毒会创建出一个隐藏的窗体,之后在该窗体上绘制web控件。在创建窗体之前,程序先会检测当前模块文件所在目录下是否存在扩展名为“.debug”的同名文件,如果存在则会显示web控件所在窗体,病毒作者可能在测试时使用。

  创建窗体相关代码,如下图所示:


▲创建窗体


▲窗口类初始化

  在窗口响应WM_CREATE消息时会设置一个Timer,间隔为8秒。在窗口回调函数接收到WM_Timer消息后,如果网页加载状态readyState值为complete或者interactive,则在网页中插入从远端服务器地址(http://tj.im991.com/dh/view_360_uv_so.asp)中获取到的JavaScript脚本。相关代码,如下图所示:


▲窗口回调函数

  检测readyState相关逻辑,如下图所示:


▲检测readyState

  如果页面加载完成,则在页面中插入script标签执行JavaScript脚本。如下图所示:


▲创建script标签


▲添加脚本内容

  程序会在获取到C&C服务器地址(http://tj.im991.com/dh/view_360_uv_so.asp)末尾拼接“t=1”参数,如果没有该参数则无法获取到完整的JavaScript代码。“t=1”参数所影响的关键代码,如下图所示:


▲脚本关键逻辑

  __get_url函数用于从网址列表中随机获取网址,如下图所示:


▲__get_url函数逻辑

  模拟用户操作部分主要可以进行搜索关键字和点击网页连接操作,如下图所示:


▲模拟用户操作

0
相关文章