一个淘宝客劫持木马的分析

近期,我们收到很多淘宝卖家的投诉,报告说他们的淘宝联盟付费推广被莫名奇妙地扣除了一部分,而这个商品是没有经过推广的。360病毒响应中心的工程师收 到投诉后,经过一系列的分析和追踪,发现了一种专门通过劫持淘宝客骗取卖家推广费的木马,我们将其称为淘宝客劫持木马。

说起淘宝客劫持木马,就要先从淘宝客说起。淘宝客是指通过互联网帮助淘宝卖家推广商品,并按照成交效果获得佣金的人或者集体(可以是个人,网站,团体,公司)。简单地说,现在卖家在淘宝上开了一个店,但是没人知道怎么办呢?做广告呗。有一种广告形式就是淘宝客,有的人拥有一些流量很大的网站,就想在上面放点广告赚点钱,于是他们可以去申请一个淘宝客ID,然后挂一个广告到淘宝。当买家通过他的广告进入淘宝并购买了东西的时候,卖家就需要为这位广告主支付一定的广告费,这就是淘宝客佣金,而一件产品分配多少钱给淘宝客的比例就叫做佣金比例。

淘宝客流程介绍,图片来自百度百科,由ganlifu贡献

既然有了这种赚钱的方法,就会有人动歪脑筋。于是有人想:“我要是写个木马,住在用户机器上,不管他访问淘宝上面的什么商品,都加上我的广告号码,淘宝不就认为是我带的流量,就会给我打钱了吗”。于是,就有了淘宝客劫持木马这种东西。那么,这些淘宝客木马作者是如何做到劫持用户的网络访问,并添加上自己的广告编号的呢?下面就是我们的工程师对其中一种木马手段的分析。

我们分析的这个样本来自一个盗版软件下载网站。这种网站经常会发布一些被处理或打包过的工具软件,号称免费版或破解版,供别人去下载。例如在网站www.ta****.com/down这个网站上的众多工具,第一眼看上去确实都是众多网友需求量比较高的软件:

当广大网友下载下来任意一款工具使用的时候,确实如网站描述:挺好使不说吧,还免费,最重要的一点是并没有捆绑病毒。但事实真的是如此么?我们下载下来这么一个叫:亿家QQ群刷皇冠管家V9.6的软件下来看看这个网站上的工具提供商到底在搞什么猫腻。

此压缩文件MD5:3ad31f62ac898a58fdb3e97eeba53f18
解压后包含如下所示的一些文件:

Txt文档里自然是做一些像告诉用户运行的时候最好关掉杀毒软件,本软件绝对无毒等贼喊捉贼的说明。有的善良的用户确实会相信他们,并且将安全软件退出。

下面我们运行文件:亿家QQ群刷钻皇冠管家V9.6.exe,当然,我们模拟一个裸奔的用户,机器上没有装任何安全软件。

在整个执行过程中,有以下的几个可见现象:

  1. 弹出一个极具诱惑力的色情游戏网站(太过诱惑,打个码再发)
  2. 打开刷钻界面

除此之外,系统看起来运作一切正常。

现在让我们看看它在后台到底干了什么:

我们再次运行QQ群刷钻皇家管家V9.6.exe,只是这次我们用工具监控它的行为,并附加上OllyDbg,发现程序首先将本目录下的yjiashuai目录放到了临时目录中。
然后我们在OD中下断CreateProcessW断点,发现程序暂停在下面的位置,参数如下:

程序用cmd去启动temp目录下的“QQ群刷钻皇家管家V9.6.exe”,这个新起来的进程会将yjiashuai目录放到其他多个目录,然后开启一个IE,弹出色情游戏推广页面,并展示刷钻管家的界面。

有趣的是,当用户关掉后面启动的这个刷钻管家的时候,第一个刷钻管家就会启动一个httpd.exe进程,并在C:\Windows下的Temp目录当中释放出配置文件system.ini。

这个东西是做什么的呢?我们试试访问淘宝,并且在首页上面随便打开一个商品的详细页面,仔细看网址发现,商品最后的部分被加上了一段奇怪的字符。

而天猫(淘宝商城)上的商品也不能幸免:

被圈出来的部分就是这个木马作者的淘宝客的广告编号,如果你在这个页面下了单,卖家就糊里糊涂地需要将钱付给这个木马作者了。

那问题就出在这个httpd.exe上,原本这是开源的web服务器Apach服务器上的一个文件,它运行的时候要加载一个dll文件(libapr-1.dll),而这个文件被人恶意修改,这个dll里进行了一些非常规的操作,下面我们就进一步分析。

运行httpd.exe之后会加载libapr-1.dll文件。此dll会导出ServerStart函数,在该函数中有如下的代码片段:

在这里,程序在用户机器上安装了一个LSP,分层服务则是由mswsck2.dll文件提供的。这个文件名称仿冒成微软官方的文件名,用来迷惑用户。我们先去看一下mswsock2.dll文件中都实现了哪些功能。

mswsock2.dll 作为LSP的提供者,需要实现一系列的函数,我们先看 WSPStartup 这个函数的实现。这个函数负责整体的初始化:

上来先打调试日志,干脆搜了一下这个调试文本,发现微软提供的SPI/LSP的实例代码当中就有,估计木马作者就是直接拿这个改的。继续分析也验证了这一点:函数紧接着是一个循环枚举出下层协议的提供者,并在循环中依次打印出本层协议的ID、以及下层协议的ID,下层协议提供者的文件路径、并加载下层协议提供者的文件路径、加载每层协议提供者dll、获取每层协议提供者dll的WSPStartup函数并执行之,这都是示例代码当中的内容。随后,木马启动一个线程:

这个线程当中,木马会从网上下载更新几个组件并放在下面几个目录当中:

  • 使用的文件路径:C:\WINDOWS\MSAgent
  • 备份的文件路径:C:\WINDOWS\Installer\{89F4137D-6CD6-4AF4-BDB8-2E5ACBB71E00}

UpdateFileFromWebSite 当中指定了下载的域名:

更新后的目录当中的内容:

更新完成之后,会立即启动httpd.exe:

再回到 WSPStartup 这个函数的最后,WSPStartup函数将自己的几个函数注册给 LSP:

这三个函数的主要功能就是对进程本系统的流量重新定向到本地的Apcah代理服务器。该代理的本地监听端口为:6786。其中最关键的是 WSPConnect:

这其中的逻辑就是,如果要connect的远端IP不是 127.0.0.1,就将对远端IP的连接请求劫持到本地的 127.0.0.1:6786 端口。

那么127.0.0.1:6786 是什么呢?你猜对了,就是刚刚被启动起来的httpd.exe 程序。

这个httpd.exe 是一个正常的开源 Apache 程序,只是它启动时会加载当前目录下的libapr-1.dll文件,执行函数ServerStart函数,而木马就劫持了这个DLL,先从 ServerStart看起:

两个函数、三个线程构成了这个淘宝客木马的主体部分。

首先 Check_BakFile()函数会看一下木马文件是否都在,在前面我们已经分析过,当启动主程序的时候,主程序会释放文件到多个目录,并启动httpd.exe。在这里httpd.exe就来检测一下是否文件都完整,完整的话继续往下执行。

然后我们看线程函数:Do_Confile_File线程函数:

这个线程函数主要是做一些配置文件相关的操作。获得程序运行的过程中需要的各种配置文件。

在开启的update_config_file线程函数中,从服务器上取得如下的配置信息:

访问该网址,获取的信息如下:

该信息将被用于后面淘宝客挟持的工作。

在GetConfigFileFromWebSite_1函数中有读取配置信息的函数:

获取的信息为:

记录要搞哪个浏览器。

在do_statis函数中,只是为了做一个后台感染量的统计。其中有如下的代码:

第一步,获取到的信息如下:

然后发送统计信息到c4.gostats.cn/bin/count/a_362678/t_5/i_1/counter.png这个页面,而 gostats.cn 是一家合法的web统计提供商。

另外两个线程,MakeSure_mswsock2Exist 和 MakeSure_RegKeyExists 就是不断监控木马文件(和备份文件),以及LSP的注册表键是否存在,如果不存在就回写,是很典型的木马行为,这里不再展开说。

截止到这里,我们明显看出,这个木马有一套非常成熟的云端交互机制,可以保证木马的更新、配置文件的更新、使用的淘宝推广ID的更新,甚至于感染量统计的更新。这也是现在的木马的一个典型的特征,即一切皆在服务器上控制,用来逃避淘宝的监管和杀软的侦测。

接下来到了这个淘宝客最为核心的技术,即该淘宝客是如何达到劫持的目的。主要是现在 StartServer 的最后部分调用的那个函数。我们分析这个函数的时候会发现目前市面上的绝大部分浏览器全部在它的监控之列:

首先这个函数会建立socket并侦听在 6786 端口,成为一个代理,并对于到来的连接开启工作线程进行处理:

通过前面的分析我们已经知道,进出被感染系统的流量都被LSP模块重新发送到本地的6786端口,在这里就是开启了一个本地的代理处理往来的连接。进入到mainloop函数中看看这个代理的一个核心操作——读取转发到该端口上的数据,判断是否满足修改条件、进行修改、转发出去。

核心函数就是read_socket函数,跟进这个函数。其中V3是从端口已经得到的将要发送出去的数据包。

首先,判断此次数据包的请求格式是不是以GET的方式请求的,如果是的话,分析一下URL的后缀,如果是exe,rar等下载文件就不处理(这个逻辑在 is_not_download当中),否则会进入 hijack 函数进行处理。继续跟进hajack函数,是下面这种逻辑:其中Str 是请求的URL, Str1是请求的域名:

这个列表当中,淘宝和天猫的主要域名赫然在列,而木马如果发现用户正在访问以上的域名中的任意一个,就会开始调用相应的函数进行数据包格式的解析与替换,如下图所示的函数即完成了这样的一个功能:

而对数据的修改是这样做的:

这里面还很仔细地考虑了广告ID的格式,可见木马作者对于淘宝客这种方式的熟悉程度了。

除了处理对外发送的数据之外,这个木马对于浏览器接收到的数据包也做了处理,关于这部分的逻辑大部分和发送端逻辑很相似,其中有一些与发包不同的处理方式,比如通过劫持HTTP返回包,更改成 302重定向并添加广告ID等等。就不展开说了。

经过木马这么一处理,用户机器上所有对于淘宝的访问都带上了 mm_32616990_0_0 这个推广ID了,然后这个木马作者就在用户日常的淘宝交易当中,不断的从卖家那里偷走每笔交易额的 5-10%。这一切对于很多出售利润本来就薄的产品的卖家来说,也是笔不小的损失,说不定一件商品本身的利润都没这么高。我们在日常的过程当中,如果发现或监控到的这种推广ID,都已经第一时间报告给了淘宝。也正是因为这个原因,木马作者才将自己的推广ID都放在服务器上,随时可以更改。但是我们相信通过 360和淘宝和通力合作,不管木马作者怎么变,我们都能一起将他们揪出来,打击掉。

虽然这一切暂时看起来对于买家用户还没有影响,但是请别忘了,这个木马是可以被木马作者远程控制的,而我们在分析过程当中也看到它对于淘宝的搜索关键词以及淘宝的浏览记录做了一些特殊处理,如果木马作者愿意,它随时也可以将黑手伸向买家,窃取买家的隐私,甚至劫持交易过程,谁又能保证他们不会这么干呢?

一个淘宝客劫持木马的分析相关推荐

  1. 【从零搭建一个淘宝客公众号01】- 开篇介绍

    2020年元宵节了,新冠状病毒依然疯狂施虐,冬天快过完了,春天也要来了,武汉加油!中国加油! 前言介绍 春节在家期间研究了一下淘宝客开放平台,并写了一个公众号[嗨皮搜券],功能是可以查询淘宝和天猫内部 ...

  2. 【从零搭建一个淘宝客公众号03】- 如何创建一个微信公众号

    什么是微信公众号 相信大家肯定都用过微信,百分之80以上的微信用户都关注微信公众号.那么什么是微信公众号呢?腾讯在微信现有的基础上开发了一个新的功能模块,叫微信公众平台.开发者或者商家可以在微信公众平 ...

  3. 再谈淘宝客PID被劫持之事! [复制链接]

    再谈淘宝客PID被劫持之事! http://www.admin5.net/thread-4350063-1-1.html 购买淘宝客程序最怕的就是: 1.程序用的人太多了,信息重复遭百度封杀. 淘宝客 ...

  4. 将淘宝客链接转换为正常淘宝、天猫商品链接

    前一阵有个朋友采集了一堆的淘宝客推广链接,但很多都是加密后的格式 http://s.click.taobao.com/t?e=zGU34CA7K%2BPkqB07S4%2FK0CITy7klxxrJ3 ...

  5. 淘宝客如何通过小红书引流?如何找出你的目标人群有哪些?

    淘宝客如何通过小红书引流?如何找出你的目标人群有哪些? 做淘宝客引流是头等大事,也是非常重要的开始,引流好相当于已经成功了80%.选品再好,基本上就能成功实现躺赚了,这篇文章就给大家分享下,做淘宝客如 ...

  6. 【新闻资讯】淘宝客达人:网赚盈利模式之淘宝客盈利技巧分享

    来源:站长网 淘宝客一词相信很多个人站长都熟悉,但不是人人都是成功的淘客.做淘宝客也许不是个人做站生涯的最好的选择,但确实网赚盈利模式上一个不错的方式. 10月14日站长网论坛周四版聊活动,邀请淘宝客 ...

  7. 程万云:做淘宝客需要思考和实践还要有成功的欲望 .

    很多人都想通过网络赚钱,但是用什么方式,很多人都在寻找.为什么有人一下子找到合适自己的网赚方式,有人却还在不断寻找中.淘宝客是一段时间以来,站长比较关注的网赚方式之一,有人说已经过了,有人说还有机会. ...

  8. 淘宝客网站的链接跳转形式

    今天看到一个淘宝客网站采用的链接跳转形式很值得学习,我放出代码供大家参考: 首先在模版文件中需要调用淘宝客链接的地方调用一个html文件,该文件格式如下: <!DOCTYPE html PUBL ...

  9. 使用 Python 全栈打造淘宝客微信机器人

    1 .前言 1.1.什么是淘宝客 相信很多人都听过或者接触过各类导购 APP.QQ 群.微信群分享一些淘宝商品的优惠券或是其他的优惠信息. 用户可以在这些渠道上获取到相较于从淘宝平台搜索出来的商品更加 ...

最新文章

  1. 加载spring上下文的多种方式总结
  2. android 浮动文字提示,怎么在Android中实现一个自由拖动并显示文字的悬浮框
  3. inputType属性
  4. CSDN会员免费拿,实现CSDN会员自由的机会到了!!!
  5. 信号与系统公式笔记(9)——Z变换
  6. red hat linux7下载地址,Red Hat Enterprise Linux 7 百度下载地址分享
  7. 微信红包随机数字_微信红包随机算法初探
  8. 数字 IC 笔试面试必考点(1)FPGA 芯片架构
  9. 计算机微信接收excel打不开怎么回事,微信打不开收到的Excel
  10. oracle procmpt,oracle ebs 接口程序
  11. java自动红包_Java一个简单的红包生成算法
  12. c语言检测邮箱地址,c语言实现邮箱地址验证
  13. hadoop集群基本配置
  14. 爬虫 动态加载数据获取——曲线救国
  15. bga焊盘怎么做_一种bga焊盘封装结构的制作方法
  16. 双重 for循环概述
  17. JAVA中将图片转化为圆形图片
  18. 架构解读:如何快速搭建直播答题方案
  19. 【算法】【题解】【usaco】 最受欢迎的牛
  20. HW及各大公司软侧面试题

热门文章

  1. MacOS国产单片机正版Jlink调试配置和eclipse开发配置
  2. 国产单片机有盗版吗? 侵权了吗?
  3. CAD制图初学入门:CAD软件中怎么画双跑楼梯?
  4. 北京微软在清交_谈创新与创业(心得)
  5. 迪杰斯特拉算法求经纬度坐标的最短路径_【图的最短路径】迪杰斯特拉算法求图的最短路径...
  6. Java第0章 带你走进Java
  7. 纳税计算——案例2_7
  8. 哈工大软件构造Lab1(2022)
  9. SimLab Composer 10 for Mac(3D场景制作软件)
  10. 继 K3s 之后,又来个 K0s...