-
UID:17777
-
- 注册时间2007-05-02
- 最后登录2025-05-02
- 在线时间18636小时
-
- 发帖786303
- 搜Ta的帖子
- 精华0
- 飞翔币211574
- 威望215717
- 飞扬币2615136
- 信誉值8
-
访问TA的空间加好友用道具
- 发帖
- 786303
- 飞翔币
- 211574
- 威望
- 215717
- 飞扬币
- 2615136
- 信誉值
- 8
|
3)内核态流量劫持模块 HSoftDoloEx.exe接收C&C服务器云控指令发送给MsVwmlbkgn.sys进行HTTP收发包的流量劫持。从C&C服务器接收到的云控指令包含了普通导航站的劫持和百度网盟广告的劫持。 在x64系统zethelpEx64.exe(3.2.0.3)负责发送云控指令给MsVwmlbkgn.sys。 内核态负责流量劫持的模块列表: 内核态负责流量劫持的C&C服务器指令接口: 3.1 云控指令获取 HSoftDoloEx.exe连接C&C服务器( http://update.qyllq.net)得到的加密的云控指令,解密后通过API函数DeviceIoControl,发送给设备“\.{D87A9329-ED85-49C3-A8D2-534474363333}”对应的驱动程序”MsVwmlbkgn.sys“。 HSoftDoloEx.exe通过C&C服务器获取运控制令流程: 图 40、HSoftDoloEx.exe和C&C服务器通信流程 请求格式如下: 3.2 云控指令解密 从C&C服务器返回的http:\d.qyllq.netDBiecomv2.7z"下载地址是一个压缩文件。HSoftDoloEx.exe下载后解压文件到%HOMEPATH%AppDataRoaming Internet Explorer目录,一共三个文件分别是cfg.dat、iecompa.dat和iecompb.dat。 除cfg.dat是明文保存云控指令版本外。其余的iecompa.dat和iecompb.dat都是加密过的二进制数据。 iecompa.dat(后文简称指令A)和iecompb.dat(后文简称指令B)的格式如下: [url=http://www.secpulse.com/wp-content/uploads/2017/02/image_41.png] 图 41、iecompa.dat XOR 0xB5后得到的控制指令 图 42、iecompb.dat XOR 0xB5后得到的控制指令 图中前0x16个字节中蓝色框中内容和版本相关,绿色是指令长度,黄色是校验和。在0x16字节后面的数据XOR 0xB5,就可以得到为被加密的具体指令。 指令A(iecompa.dat) [url=http://www.secpulse.com/wp-content/uploads/2017/02/image_43.png] 图 43、控制指令的完整列表(指令A) 指令B(iecompb.dat) 图 44、控制指令的完整列表(指令B) 获取云控指令后的HSoftDoloEx.exe使用DeviceIoControl函数和MsVwmlbkgn.sys进行通信。一共有三组控制码(HSoftDoloEx.exe版本3.2.0.4,MsVwmlbkgn.sys版本0.6.60.70),分别是: a)222000 发送指令A的内容给MsVwmlbkgn.sys b)222004 发送指令B的内容给MsVwmlbkgn.sys c)222008 控制流量劫持功能的开关 目前3.2.0.4版HSoftDoloEx.exe还没有使用222008这个控制码, 因为在0.6.60.70版本的MsVwmlbkg.sys中,流量劫持功能默认为开。 “指令A”和“指令B” 分工合作, 在指令A中不同的劫持类型对应指令B给出不同处理劫持方案,根据具体的劫持内容可以分为三种情况,不同的劫持方案在下文会有详细分析: [url=http://www.secpulse.com/wp-content/uploads/2017/02/image_45.png] 图 45、劫持指令说明3.3 劫持流程 MsVwmlbkgn.sys是一个WFP驱动程序,该驱动会向WFP FWPM_LAYER_STREAM_V4和FWPM_LAYER_STREAM_V6注册Callout(我们标记为wfp_classify_callout)来分别过滤IPv4和IPv6的TCP数据流: 图 46、注册IPv4和IPv6数据流过滤Callout wfp_classify_callout中会调用http_hijack函数对TCP发送和接收的数据进行协议分析并按照一定的逻辑进行劫持: [url=http://www.secpulse.com/wp-content/uploads/2017/02/image_47.png] 图 47、wfp_classify_callout函数 http_hijack函数中,根据HSoftDoloEx.exe接收C&C服务器云控指令对收发数据有选择地进行劫持,具体劫持流程如下: 图 48、内核态劫持流程图 3.3.1 发包流程 MsVwmlbkgn有一个全局开关决定是开启劫持功能,这个全局开关在MsVwmlbkgn中由控制码222008进行控制(70版本默认是打开的,上层没有对应控制的流程)。 除了全局开关以外,MsVwmlbkgn还会根据请求包中“Host”字段的网址,在C&C服务器给出的指令中查找,根据指令有不同的处理方式,C&C给出的指令包含:需要劫持的网站、劫持概率、使用何种方式劫持和浏览器名称。 [url=http://www.secpulse.com/wp-content/uploads/2017/02/image_49.png] 图 49、发包流程判断逻辑1 如果请求的URL在C&C服务器返回的劫持列表中,接下来驱动还会对当前发起进程进行判断,最后再计算C&C服务器返回的对当前URL的劫持概率。 图 50、发包流程判断逻辑2 如果上述判断逻辑均通过,则会根据C&C服务器返回的针对当前请求URL的劫持类型,有选择地分别执行两类劫持逻辑: 标记为“2”的劫持方式: 首先将要劫持到的目标URL保存在redir_url。接下来,将当前HTTP Flow的句柄保存在flowHandle_lo/hi,在收包劫持流程中做判断使用。 [url=http://www.secpulse.com/wp-content/uploads/2017/02/image_51.png] 图 51、保存收包劫持所需数据 MsVwmlbkgn会保留请求包中原始”Host“地址,在地址前添加“http://”子串后进行base64编码,在编码后的字符串前添加"&s=",构成一个新的字符串,结果保存在url_from_http_get_request。恶意代码制造者会通过该字符串统计截取流量的来源。 图 52、分析HTTP发送请求完整URL [url=http://www.secpulse.com/wp-content/uploads/2017/02/image_53.png] 图 53、拼接劫持来源统计信息 标记为“8”的劫持方式: 如果是方式“8”直接添加插入一个请求数据包,在”Host“地址后面修改推广号,具体实现在construct_send_hijack_packet中完成。 图 54、发包劫持流程 3.3.2 收包流程 如果当前HTTP Flow为发包时记录下的需要被劫持的Flow (flowHandle_lo/hi与当前句柄相同),则表示这个收到的HTTP数据是需要被劫持的。这时,则会在应答流程中插入一个302重定向应答包,并将重定向地址指向redir_url,且将劫持来源统计信息(url_from_http_get_request)同时拼接到重定向URL中。 [url=http://www.secpulse.com/wp-content/uploads/2017/02/image_55.png] 图 55、收包劫持流程 图 56、拼接302重定向应答包 3.3.3 百度网盟广告劫持 通过云控指令一节中可以看到,指令A中劫持的网站列表中绝大多数都是导航站,但是最后两个却是百度网盟的广告js脚本,劫持关系如下表: 用户访问有投放百度广告的网站时,恶意代码会劫持百度广告,具体流程如下: 5)”cw3.js”脚本就是最终得到负责劫持的百度网盟广告的js脚本。 图 57、百度网盟广告劫持流程图 “cw3.js”脚本劫持百度网盟广告的流程如下: 1)首先拼接劫持到的目的网址,这些网址都是跳转链接: 图 58、劫持后的广告链接 2)查找页面中的iframe标签,判断链接是否是”pos.baidu.com”并且不是”duba”: 3)如果条件匹配,判断第一步准备的广告有没有大小合适的,找到合适大小则将原始链接保存下来: function e() { var d = [".hao123.co", ".3567.com", ".www2345.com",".www9991.com", ".365wz.net", ".2345.net", ".2345.org",".77816.com", ".365wz.com",".hao184.com", ".d1wz.com", ".to128.com", ".42.62.30.178",".42.62.30.180", ".2345soso.com", ".2345kankan.com", ".ku118.com",".hh361.com", ".v2233.com", ".ie567.com", ".2345ii.com", ".kuku2.com", ".yes115.com",".kabasiji.com", ".5599.net", ".te99.com",".duote.com.cn", ".duote.net", ".51ct.cn",".zhangyu.com", ".537.com", ".cc62.com", ".cn220.com",".k986.com", ".555k.net", ".wzeh.com",".yl234.com", ".2345download.com", ".g3456.com",".duote.com", ".duote.cn", ".9991.com", ".50bang.org", ".2345.com.cn",".duote.org", ".haozip.com", ".2345.com", ".2345.cn",".tt5000.com", ".4585.com", ".728.com",".game56.com", ".fa3000.com", ".yy5000.com",".777ge.com", ".hao774.com"]; var T = location.hostname; for (var s = 0; s < d.length; s++) { if (T.indexOf(d) > 0) { return true } } var U = ["hao123.co", "3567.com", "www2345.com","www9991.com", "365wz.net", "2345.net", "2345.org", "77816.com", "365wz.com","hao184.com", "d1wz.com", "to128.com", "42.62.30.178","42.62.30.180", "2345soso.com", "2345kankan.com","ku118.com", "hh361.com", "v2233.com","ie567.com", "2345ii.com", "kuku2.com","yes115.com", "kabasiji.com", "5599.net","te99.com", "duote.com.cn", "duote.net", "51ct.cn", "zhangyu.com", "537.com","cc62.com", "cn220.com", "k986.com", "555k.net", "wzeh.com", "yl234.com","2345download.com", "g3456.com", "duote.com", "duote.cn","9991.com", "50bang.org", "2345.com.cn","duote.org", "haozip.com", "2345.com", "2345.cn", "tt5000.com", "4585.com","728.com", "game56.com", "fa3000.com", "yy5000.com", "777ge.com","hao774.com"]; for (var s = 0; s < U.length; s++) { if (T == U) { return true } } return false} |
|
5) 如果不在放过列表中,”cw3.js”劫持时用第一步中保存跳转链接替换原始的广告链接,达到劫持百度网盟广告的目的: [url=http://www.secpulse.com/wp-content/uploads/2017/02/image_59.png] 图 59、cw3.js劫持流程 五、附录 1. 恶意代码攻击时间线 图 60、时间线 另外,火绒安全实验室还在http://dl.123juzi.net服务器上发现其他版本的恶意代码释放器,但是在实验室环境中并没有发现这些释放器何时被使用。
|