无线宝宝wifi热点共享软件刷流量行为分析

  近日,腾讯反病毒实验室截获到了大量通过传入特殊参数实现刷流量行为的恶意程序,经过回溯发现,这些恶意程序均是由某wifi热点共享软件下载并解密运行进行传播,感染量非常大。该恶意程序的主要功能是后台定向的流量推广等操作,目前腾讯电脑管家已全面拦截和查杀。

0x01 木马样本简介

  如果你电脑上存在C:\ProgramData\AppData*app\(Win7)、C:\Documents and Settings\All Users\Application Data\AppData*app\(XP)目录,那很可能你已经中招了。
  感染表现:
  Alt text
  
  木马文件wifiinit.dll是南宁博纵科技有限责任公司的wifi热点共享软件——WifiBaby,安装后释放的dll文件。其在安装后注册为系统服务,主要功能为从服务端获取需要执行的任务,下载恶意程序到本地并执行。其下载的恶意程序通常重命名为系统exe,解析传入的参数执行特定的行为。截止到编写该文档,分析到的大部分行为为后台刷流量。
  木马功能大致流程图:
  Alt text

0x02 详细分析

1. Wifiinit.dll行为分析

  Wifibaby安装完成后,在其安装目录下会生成Wifiinit.dll,该dll被注册为系统服务随系统开启自启动,并与驱动程序wifinat.sys绑定。
  其导出函数大部分为服务安装与卸载功能以及服务功能函数。
  Alt text
  当服务异常的情况下,驱动wifinat.sys会调用其中RundllInstall来完成对驱动、服务的重新安装。
  Alt text
  经过分析,定位到服务中恶意行为部分主要外层代码如下:
  Alt text

  当服务启动后,首先判断是否有windbg、ida、OllDbg、Wireshark、Sniffer等进程存在,若有,则不触发恶意行为。Anti_debug内容如下:
  Alt text
  若未发现调试工具,则尝试与服务器获取联系,获得服务器返回后的Taskid结构体后。程序会在GetTask函数里另起一个进程来处理获取到的Taskid:
  Alt text

  在该线程中,首先按程序自身的协议构造包含有任务派发url:Dispatch.se.17wangwang.com的结构体,而后以udp形式与服务器进行通信,所有流量均经过解密处理。
  Alt text
  在udp在经过通信协商,并获取到Taskid后,程序首先删除现有AppData/{Taskid}app/目录下的文件,此后再遍历并删除该目录下所有文件:
  Alt text
  而后,程序将首先判断AppData目录下是否存在app.cfg,app.cfg是一个sqlite数据库,其以taskid为主键,data字段中存放对应taskid执行所需的加密后的exe文件数据。如下图:
  Alt text
  若app.cfg文件不存在,则执行create table新建一个数据sqlite数据库文件:
  Alt text
  若存在app.cfg文件,则先搜索数据库,判断对应taskid所需的exe是否存在:
  Alt text

  若id存在,则直接读取数据库中data字段,生成一个以Taskid命名的raw文件,如图1中“79”文件。
  倘若该id不存在,则再次解析服务端返回的数据,提取其中下载url和执行exe所需的参数以及exe解密所需的密钥。
  提取到url后,执行下载:
  Alt text
  下载成功后,程序还将对下载的文件进行校验,判断其大小及md5是否符合。验证通过后再将下载的数据写回到app.cfg:
  Alt text
  此后,程序将其解密并以常见的系统进程名对其重命名。再通过获取到的Taskid结构体中信息来判断下载得到的程序为dll还是exe,并分别执行起来:
  Alt text
  在GotoRunDll函数中,程序将加载该dll并调用其中PlugWork函数,传入获取到的taskid结构体中的参数:
  Alt text
  同样,在GotoRunExe中,程序可利用CreateProcessAsUserW以及CreateProcessW,调用程序:
  Alt text

  由上可知,该dll主要功能是定时与服务端连理链接进行通信,获取任务。解析任务结构体,下载相应可执行文件。下载后解密并以任务结构体中得到的参数运行该可执行文件。
  

2. exe文件分析

  上一节对wifiinit.dll的分析可以知道,wifiinit.dll作为母体主要下载可执行文件并执行。因此,对下载回来的可执行文件进行分析是必不可少的。
  在样本回溯过程中,笔者收集并整理到的目录名及样本MD5对应关系如下(其后文件名为随机系统进程名):

  ├─44app 6d8dd8e97e8c5856f454eb2323c5d43d *SearchFilterHost.exe
  ├─50app f415810f3e513624c4081809792402bc *SearchFilterHost.exe
  ├─63app b8b9b3d5b0ba82260f3db9c011c82c86 *taskmgr.exe
  ├─65app b2d8bad6a7949b1f2902215eec875815 *ctfmon.exe
  ├─74app 17072cd99b3a7403e2af883db189070b *taskhost.exe
  ├─75app bdd569f5c76e5f492d212b34f5203fc5 *lsm.exe
  ├─79app 3851021f81ad2e62f52d51e0b53f6c1c *alg.exe
  ├─81app b94c6c76c7f9d113049e0139cadbb7c3|b94c6c76c7f9d113049e0139cadbb7c3 *lsass.exe
  ├─83app 9297ed57e3f04fb1bc5b20efd91d0ab6 *SearchProtocolHost.exe
  └─85app 4e9e1b1c152521f3111e92e4d0fe6226|38b628edabba1d5fae6f93c7582e0ad4 *svchost.exe

  由于exe文件过多,就不对其进行一一分析,下文将抽取其中几个样本,大致描述其功能。这一些列可执行程序都是需要传入特殊构造的参数才能正确的去执行其中功能的,以样本f415810f3e513624c4081809792402bc为例,笔者截获到其中的一条参数如下:

a1e9a397a1e8eff1a3f5e9e9edeea7b2b2f5fcf2b3aeabadb3fef3b2a2eeeffea0f1f0bbf1eea0f3acabaea9a9aca8fea4fca1b2e8eff1a397a1e9f4f0f8f2e8e9a3aeabadada1b2e9f4f0f8f2e8e9a397a1fef1f8fceffef2f2f6f4f8a3aeabada1b2fef1f8fceffef2f2f6f4f8a397a1f6eabdeaf8f4faf5e9a0bfa4adbfa351714d592b342635b12e392927bd5e5d5058505824275065b14a6b296f51384d752b7d54445a33a1b2f6eaa397a1eef8fceffef5c2edfcfaf8bdeee9fce4a0bfaca8b1aeadbfbdeefeeff2f1f1a0bfacbfbdfef1f4fef6a0bfafbfbdfcf9c2eaf8f4faf5e9a0bfa8adbfbdedfcfaf8c2eaf8f4faf5e9a0bfaaadbfb2a397a1f0fcf4f3c2edfcfaf8bdeee9fce4a0bfa9adb1abadbfbdeefeeff2f1f1a0bfacbfbdfef1f4fef6a0bfacbfbdf1e9c2eaf8f4faf5e9a0bfaaadbfbdefe9c2eaf8f4faf5e9a0bfaaadbfbdefffc2eaf8f4faf5e9a0bfaaadbfbdf1ffc2eaf8f4faf5e9a0bfaaadbfb2a397a1f2e9f5f8efc2edfcfaf8bdeee9fce4a0bfa9adb1abadbfbdeefeeff2f1f1a0bfacbfbdfef1f4fef6a0bfacbfb2a397a1b2e9a3

  程序运行时,首先会判断是否安装有杀毒软件:
  Alt text
  如果机器未装有杀毒软件,则对程序传入的参数进行解密,若有则结束进程: