首页 健康生活文章正文

流氓联盟欺软怕硬,多链路恶意推广

健康生活 2025年08月16日 08:45 1 admin

随着国内互联网的爆发式增长,流氓软件也在不断地发展。其推广手段的不断迭代升级,反映出技术、商业与监管各方之间的复杂博弈。多数流氓软件都具备强制安装,难以卸载,捆绑推广,弹窗广告等恶意行为,通过挟持用户终端资源变现。从合作捆绑到群魔乱舞,网民的觉醒是否让流氓软件黔驴技穷了呢?并不见得,如今流氓软件也具备了“柿子挑软的捏”的特质。会尝试规避有杀软的电脑,规避访问技术论坛的技术人士,甚至规避短时间内成功卸载过流氓软件的用户。一方面我们希望源头处做好监管,一方面我们也希望每个人都能了解到流氓软件的恶行并加以规避。

近期,火绒威胁情报中心监测到名为“小蓝鸽极速卸载”软件频繁推广至用户,通过溯源发现其源头有“多标签文件管理器”、“DX强力修复”、“EchoFind 文件搜索”等软件,软件中包含的插件极其相似,分析过程中选择了其中的一个名为“DX 强力修复”的软件进行分析,分析初期发现该软件有锁屏广告,随后发现还会进行桌面弹窗推广、任务栏图标闪烁推广、直接静默安装后展示一定时间弹窗、若错过则保持安装等行为,甚至浏览器访问特定页面时额外跳转至推广页面。其推广行为都是由下发的云控配置决定,且下发的配置中包含各种规避行为,例如规避安全软件、读取浏览器历史记录匹配特定 URL 进行规避等。火绒安全产品可对上述流氓软件进行拦截查杀。

流氓联盟欺软怕硬,多链路恶意推广

查杀图

流程图如下:

流氓联盟欺软怕硬,多链路恶意推广

流程图

市面上可以下载该软件主要通过三个渠道,分别为联想商店、3DM 以及百度竞价推广。

流氓联盟欺软怕硬,多链路恶意推广

多渠道推广

一、 样本分析

启动插件:“DX 强力修复”软件主进程为 dxrepair.exe,启动初期不仅初始化自身相关,创建软件窗口,还会加载并初始化推广插件或插件必要模块,随后分别执行插件主函数。

多个推广插件:插件是以独立文件的形式存储在安装目录下的 Bin 或 Plugins 文件夹下,其中推广相关插件分别有弹窗推广、锁屏推广、任务栏托盘推广、静默下载安装推广、浏览器广告等模块。其他插件例如 cache.dll 和 cachestub.dll 主要是用于云控配置的下载和分发至插件。
下图为文件名称所对应的插件功能介绍表:

流氓联盟欺软怕硬,多链路恶意推广

推广插件列表

下图是 DLL 类插件的加载并启动的逻辑:

流氓联盟欺软怕硬,多链路恶意推广

插件初始化并启动

下图是 PLN 类插件的加载并启动的逻辑

流氓联盟欺软怕硬,多链路恶意推广

查找 pln 文件并循环调用插件主函数

1.1 tpihub.pln(桌面弹窗推广模块)

大致流程:该插件的主要功能为弹窗推广,通过请求云控配置获取到弹窗推广模块下载地址列表,随后通过下载地址下载不同的软件推广模块,例如 BlueDove(小蓝鸽)软件被推广方式为独立的模块进行弹窗,若想要推广 A 软件则可以将 A 软件的弹窗推广模块的下载地址和配置信息加入到 tpihub.pln 会请求的云控配置中即可。

互斥体创建:插件初始化时会创建互斥体 TpiHubSingleInstance,从而防止冲突。

流氓联盟欺软怕硬,多链路恶意推广

插件初始化

流氓联盟欺软怕硬,多链路恶意推广

防止冲突

获取云控配置:随后该模块开始获取云控配置,具体网页链接为 http://base.heheshield.com/p/tpihub,参数为分别有 mid2(机器 ID)、winver(操作系统版本)、appver(主进程版本)、modver(更新模块版本)、pid(下载平台,例如 lx_store 联想商店)、app(主进程名,例如 dxrepair)。后续其他请求云控配置时都会带有这些参数,区别是携带数量的不同。

参数获取方式:

  • HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\DXRepair 注册表中获取 mid 字段值和 pid 字段值。
  • 利用 MsiGetFileVersionW 函数获取文件版本 appver 与 modver。
  • 利用 RtlGetNtVersionNumbers 函数获取操作系统版本 winver
  • 主进程名 app 则是通过主进程文件路径目录名获取。

拼接字符串:其中部分字符串通过单字符拼接的方式获取,从而规避静态字符串提取,加大逆向分析复杂度。

流氓联盟欺软怕硬,多链路恶意推广

字符串拼接

解析弹窗推广云控配置:获取到的云控配置中含有多个推广模块,本文以 bdtpi.dll(小蓝鸽弹窗推广模块)为示例进行分析,可以看到其中含有模块本地名、模块下载地址、模块哈希值、模块等待秒数,随后该模块对云控配置进行解析并准备下载。

流氓联盟欺软怕硬,多链路恶意推广

弹窗推广云控配置

下载并加载获取其中初始化函数地址:随后先获取文件存放路径,随后检查该路径文件的 MD5 值是否与云控配置中的 MD5 值一致,如果不一致则会删掉原文件并通过 tpi_url 下载新的弹窗推广模块并加载该模块,获取其中 CreatePlugin 初始化函数地址。

流氓联盟欺软怕硬,多链路恶意推广

下载并加载初始化函数地址

初始化并调用主函数:调用到此步骤时将会转移至 bdtpi.dll 模块内部。

流氓联盟欺软怕硬,多链路恶意推广

初始化并调用主函数

1.1.1 bdtpi.dll(弹窗推广模块—小蓝鸽)

创建互斥体:该模块也与分发模块类似,初始化时创建互斥体 BlueDoveUnistSingleInstance,只是名称不同,且后续也会等待互斥体,防止出现冲突。

流氓联盟欺软怕硬,多链路恶意推广

创建互斥体

获取云控配置:随后开始获取云控配置,请求链接 http://base.heheshield.com/k/bluedove/install 并传入参数 pid(下载平台,例如 lx_store 联想商店)。可以看到其中包含下载链接、执行参数、安装包哈希值、控制弹窗等数据。其中 command 为经过密钥 blowfish 加密(密钥LAG9R1ZFWIS3J2LDHBAWZ50OGSAB99US)与 base64 编码后形成的数据,解密发现是 /S --pid=lite_n3 --optimize --run,其中测试得知 /S 参数为无弹窗静默安装参数。

流氓联盟欺软怕硬,多链路恶意推广

云控配置

随后通过云控配置对弹窗频率和规避操作进行控制,最终创建弹窗:

  1. 检测 BlueDove 是否被安装,若被安装则会等待一天后再检测。
  2. 检测开机时间,若小于云控配置中 interval_time_ex 时间则过一个小时再检测一次。
  3. 检测进程,若存在需要规避的进程名则会过 5 分钟再检测一次。
  4. 检测是否全屏,若是全屏则过 5 分钟再检测一次。
  5. 检测是否处于不再打扰的时间范围内,测试时云控配置中时间为 30 天,若处于不再打扰的时间范围内则等待至不再打扰时间结束。
  6. 检测是否处于弹窗冷却期,测试时云控配置中为 1 天,处理方式与上条一致。
  7. 遍历出 x >= 3 天的时间,x = 当前时间 - 最后一次弹窗时间。
  8. 最后会初始化并创建弹窗,随后设置一天后再次循环这一流程。
流氓联盟欺软怕硬,多链路恶意推广

创建弹窗

窗口按钮:随后窗口中会有 btn_close、btn_inst、dont_show 等按钮,其中 btn_inst 按钮即“立即卸载”按钮,点击该按钮则会执行下载操作。

流氓联盟欺软怕硬,多链路恶意推广

按钮点击事件

安装逻辑:随后先检查 Temp 目录下是否存在 bluedove_setup.exe 文件,如果存在则直接删除,随后通过云控配置中 url 下载并计算 MD5 值是否与云控配置中 md5 相同,若不同则删除,相同则返回 True 并执行安装程序。

流氓联盟欺软怕硬,多链路恶意推广

下载安装程序并安装

1.2 lckscr.dll(桌面锁屏推广)

大致流程:锁屏广告由 lckscr.dll 负责,该模块通过获取云控配置获取到需要锁屏推广的网址,随后通过 cefwebview.exe 并传入网址和全屏横纵坐标,从而进行锁屏展示。

初始化:初期会先将软件相关 URL、类名、软件名等信息存储至全局变量中,随后通过读取 AppData\Roaming\cdheheyoudun\config.ini 中读取 lockscreen 项下 enable 字段,如果为 1,则会继续执行。随后会请求至 base.heheshield.com/k/sp 获取锁屏相关云控配置。

流氓联盟欺软怕硬,多链路恶意推广

锁屏推广云控配置例子

创建互斥体与云控配置写入共享内存:随后解析云控配置并从中提取 lockscreen_mutex 字段值作为名称创建互斥体,随后利用全局变量获取软件名,并与 6CBA6EFE-0D50-46A5-B68A-114B848B1733_ 拼接为指定文件映射对象的名称并创建内存映射将云控数据写入到其中。

流氓联盟欺软怕硬,多链路恶意推广

创建互斥体与写入共享内存

读取云控数据并检查必要字段:随后再通过内存映射对象获取云控数据,解析并判断是否 data->sp 字段下 ids、url(锁屏推广时所打开的网页链接) 等字段数据是否存在,若存在则执行锁屏监听倒计时。这里并非只读取上述字段,也会读取其他频率相关字段并设置锁屏广告频率,只是不会影响锁屏广告的出现。例如,其中 lksecond 字段值为监听倒计时的默认秒数。

流氓联盟欺软怕硬,多链路恶意推广

读取云控数据并检查必要字段

倒计时监听器设置:设置三个 Timer 监听器,其中 0x463 与 0x464 事件可以利用用户输入与鼠标移动幅度刷新监听时间,0x465 事件可以在倒计时结束后调用锁屏广告。

流氓联盟欺软怕硬,多链路恶意推广

调用锁屏广告

展示锁屏广告:随后通过 webstub.dll 间接创建 cefwebview.exe 程序,并传入参数 url(网页地址)与 tab_rect(横纵坐标)设置为全屏大小,从而实现全屏展示锁屏广告,其中进程 cefwebview.exe 是 Chromium Embedded Framework (CEF) 的内核,可在独立窗口中渲染指定 URL 网页内容。

流氓联盟欺软怕硬,多链路恶意推广

创建 cefwebview.exe 展示锁屏广告

下图为锁屏广告:

流氓联盟欺软怕硬,多链路恶意推广

锁屏广告

1.3 pwnd.dll(桌面弹窗以及托盘闪烁推广模块)

大致流程:获取 cachestub.dll 分发的云控配置中 ppw_slow 字段值,其中 usual 字段值用于弹窗推广,tray_icon 用于托盘推广(主要为传奇微端推广),随后pwnd.dll会下载并执行两个字段值中不同的脚本,例如控制频率和规避脚本以及安装脚本,从而实现弹窗与托盘闪烁,其中点击托盘会打开网页,并根据云控配置判断是否下载传奇微端并执行。

云控配置的获取路径:包括该模块,以及 runext.pln 和 wsadd.pln ,三者并不是独立获取云控配置,而是通过 cache.dll 请求 intf-pc.heheshield.com/cfg/dxrepair_detail.php 下载云控配置,随后利用 COPYDATA 消息将云控数据传输至 cachestub.dll 中,随后 cachestub.dll 再分发至这三个模块中。

流氓联盟欺软怕硬,多链路恶意推广

弹窗和任务栏图标推广云控配置

Lua 脚本执行:随后开始执行 Lua 脚本,其中 Lua 脚本执行是通过调用 bapi.dll 导出函数 GetBasicObj,随即获取到 Lua 解释器对象,并利用对象中解释器函数进行解释执行。

流氓联盟欺软怕硬,多链路恶意推广

获取解释器对象

1.3.1 夸克弹窗推广

推广夸克弹窗时首先会控制频率和规避杀毒软件并展示弹窗:

  1. 检测是否为 32 位系统(64 位继续)
  2. 24 小时内是否弹过(没弹过继续)
  3. 30 天内是否选择不再弹出(超过 30 天继续)
  4. 60 天内安装过夸克(超过 60 天则继续)
  5. 2 小时内弹过游戏相关弹窗或图标(没弹过则继续)
  6. 请求云控确定是否展示该软件(等待云控返回值)
  7. 检测是否存在夸克软件(不存在则继续)
  8. 检测杀毒软件(如果不存在指定杀毒软件则继续)
流氓联盟欺软怕硬,多链路恶意推广

控制频率与规避脚本

随后如果用户点击相应按钮则会执行相应脚本,包括不再提示、安装、关闭等脚本,其中关闭脚本为空,即不执行任何操作。

不再提示脚本:设置 %APPDATA%\tjch\config.ini 中 quark_popup 项中 last_dontshow 字段值为当前时间。

安装脚本:点击安装按钮后开始下载,随后静默安装并检查是否安装完成,安装完成后打开夸克。

流氓联盟欺软怕硬,多链路恶意推广

不再提示脚本

流氓联盟欺软怕硬,多链路恶意推广

安装脚本

流氓联盟欺软怕硬,多链路恶意推广

夸克推广弹窗

1.3.2 传奇微端推广

推广传奇微端时首先会控制频率和规避杀毒软件并展示弹窗:

  1. 检测是否为 XP(不是 XP 则继续)
  2. 检测安全卫士是否设置禁止弹窗(没设置则继续)
  3. 检测安全卫士弹窗拦截是否为强力模式(非强力模式则继续)
  4. 检测杀毒软件(无指定杀毒软件则继续)
  5. 检测用户是否设置为不再提示(没设置则继续)
  6. 检测当前产品是否在 4 小时内展示托盘弹窗(未展示则继续)
  7. 检测所有产品是否在 3 小时内展示托盘弹窗(未展示则继续)
流氓联盟欺软怕硬,多链路恶意推广

控制频率与规避脚本

选择需推广的游戏,创建托盘并闪烁:随后通过概率选择推广的游戏,下图代码示例为 100%概率推广“wjcq”游戏,这是因为该表中的其他游戏 percent 值都为 0,所以 10 概率则为 100%推广,随后创建托盘并闪烁。

流氓联盟欺软怕硬,多链路恶意推广

选择推广的游戏

流氓联盟欺软怕硬,多链路恶意推广

托盘闪烁

点击托盘回调:此时如果用户点击该托盘图标则会先打开 URL,以及若没有 360 则下载 wd_url 字段值中的 URL 指向的文件并执行。

流氓联盟欺软怕硬,多链路恶意推广

点击托盘图标

1.4 runext.pln(脚本执行模块)

大致流程:该 runext.pln 模块主要功能为接收云控配置后下载 Lua 脚本并执行,脚本主要目的为静默下载安装需要推广的软件,其中不乏控制频率和规避等操作,比较有趣的是静默下载安装完成后将会弹出应用推荐窗口,此时如果不选择“我不需要”(btn_dontshow)按钮的话则会保持安装状态,即使点击右上角的“关闭”按钮也会保持安装,还存在其他脚本会通过获取浏览器历史记录和收藏进行对特定人群的规避。

云控配置来源:与 pwnd.dll 模块一样,也是通过 cache.dll 获取云控配置并通过cachestub.dll 传输,不同的是 pwnd.dll 会利用 ppw_slow 字段值,runext.pln 会利用 run_extention_slow 字段值执行脚本,下图中 script_url 与 script_url_zip 分别为非压缩和压缩包形式的被加密 Lua 脚本。

流氓联盟欺软怕硬,多链路恶意推广

静默安装云控配置

执行脚本前期准备以及创建 runext.exe 执行脚本进程:获取到 cachestub.dll 模块发送过来的数据后,通过 event 数值进行不同的操作,若 event 值为 1 或 3 时则会准备执行脚本,而值为 2 的时候将会执行删除缓存操作。如下图所示,其中 1 或 3 时会先解析传过来的 JSON 数据后构造出新的 JSON 数据(该数据中包含 event 值与 url 值),随后将 0x1401 消息传递出去,该消息的含义是该模块中为执行脚本。

随后将 JSON 数据写入至共享内存中,以便之后跨进程获取数据,随后将开始构造参数并将参数利用 blowfish 加密和 base64 编码,并将结果存储于 %APPDATA%\DXRepairData\config.ini 文件中的 mechanism 项 cdl 字段中,也便于跨进程获取数据,随后创建 runext.exe 程序进行执行脚本操作。

流氓联盟欺软怕硬,多链路恶意推广

获取 JSON 数据并准备数据

runext.exe 进程通过ini 文件与共享内存,加载和调用执行脚本的函数:在 runext.exe 进程中,将会通过解密上述 config.ini 文件中 cdl 字段值获取到共享内存名称,随后读取共享内存中的 JSON 数据并获取 event 与 url 值。随后通过参数中的 --dll 与 --entry 获取到插件名称 runext.pln(即本模块) 与导出函数名称(runext,用于执行脚本的函数),分别加载和调用。

流氓联盟欺软怕硬,多链路恶意推广

获取参数并加载与调用导出函数

不同 event 值的操作——下载或使用缓存:随后利用 event 值进行不同操作,值为 3 的时候通过 url 值下载脚本(被加密),并先后通过 base64 算法与 blowfish 算法解密出原始脚本并执行,然后将 url 字符串的 md5 值作为文件名并写入被加密脚本。值为 1 的时候将会通过 url 字符串的 md5 值为文件名读取缓存并解密后执行。

流氓联盟欺软怕硬,多链路恶意推广

下载或读取缓存并解密执行

Lua 脚本弹窗:随后开始执行 Lua 脚本,该系列脚本都是静默安装后通过弹窗 30 秒(或任意秒)让用户交互一下,其中只有当用户在 30 秒或任意时间内点击“我不需要”(btn_dontshow) 时才会删除静默安装的内容。

静默安装软件列表:测试时获取到的脚本中静默安装的软件有以下内容,可能还会有其他软件(与云控配置下发的脚本相关)。

  • DustAway
  • colorx
  • 迅读PDF
  • 迅读CAD
  • FastZip

其中静默安装 DsutAway 清理软件的 Lua 脚本具体逻辑如下

  1. 删除旧安装包、检测当天是否执行过、若执行过则进行标记。
  2. 检测是否安装过、若被删除则两个月内不会安装。
  3. 规避安装的部分推广软件、规避卡巴、火绒、2345 卫士安全软件,但是注释掉了腾讯管家和金山毒霸(部分脚本会注释)。
  4. 下载 DustAway 安装包,随后静默安装。
  5. 弹窗 30 秒(或任意秒)、只有弹窗时间内点击“我不需要”(btn_dontshow)时才会进行删除,点击右上角关闭也会保持安装结果。
流氓联盟欺软怕硬,多链路恶意推广

弹出窗口

流氓联盟欺软怕硬,多链路恶意推广

DustAway 静默安装 Lua 脚本具体逻辑

规避特定浏览器历史记录与收藏中 URL:其中某个 Lua 脚本还会获取浏览器历史记录与收藏的网址进行规避,猜测是不想干扰特定人群,从而避免麻烦。

流氓联盟欺软怕硬,多链路恶意推广

利用浏览器历史记录或收藏进行规避

自带注释与文档链接:其中有些 Lua 脚本自带整体注释或插件推广需求文档链接:

流氓联盟欺软怕硬,多链路恶意推广

脚本整体注释

流氓联盟欺软怕硬,多链路恶意推广

推广需求文档链接

1.5 wsadd.pln(浏览器广告模块)

大致流程:获取到云控配置后会下载不同的配置文件,随后通过配置进行规避操作,若无需要规避的选项时将会匹配特定网页并弹出推广网页,例如匹配京东商品页面并弹出。

云控配置来源和作用:与 pwnd.dll 模块一样,不同的是 wsadd.pln 会利用 alice_assist_v3_slow 字段值。其中 avoid_bro、avoid_web_cdn、sensitive_soft_path_cdn 分别规避特定浏览器、访问特定网址、特定软件;global_script_cdn 为动态开关(一般为 Lua 脚本 return "1");resource_url 为匹配特定网页并弹出推广网页所用。

流氓联盟欺软怕硬,多链路恶意推广

云控配置

每次用户访问符合推广条件的网页时将会触发规避函数,具体规避行为如下:

规避特定浏览器(avoid_bro):若用户使用 slbrowser(联想浏览器)、iexplore(IE 浏览器)、sogouexplorer(搜狗浏览器)等浏览器则不会推送广告。

规避访问特定网址(avoid_web_cdn):若用户访问以下带有技术性或投诉相关网址时会将 ini 文件中的推广开关字段(WebADSwitch 字段)设置为 0,从而禁止推广(下文中称为“设置禁止推广”)。

流氓联盟欺软怕硬,多链路恶意推广

规避特定网址

检测安装的软件(sensitive_soft_path_cdn):遍历注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall 获取安装列表并获取其中 DisplayName,与需要规避的软件列表比较,若符合规避条件,则终止推广操作。

流氓联盟欺软怕硬,多链路恶意推广

遍历安装列表并进行规避

检测控制面板窗口:检测标题名为“所有控制面板项”或“控制面板”以及类名为 CabinetWClass 的窗口,经过确认发现该类名为控制面板特有的类名。

流氓联盟欺软怕硬,多链路恶意推广

检测控制面版窗口

检测进程:将会进行检测的进程有三种,分别为必须规避、系统管理进程、远程控制进程,对应的处理方式也会不同。

  1. 如若碰到必须规避的进程,例如 windbg.exe、procmon.exe 等逆向分析的进程则会设置禁止推广
  2. 若碰到系统管理进程,例如 regedit.exe(注册表管理)或 taskmgr.exe(任务管理器)则会关闭一天推广(通过 today_valid 字段)。
  3. 若碰到远程控制进程,例如 mstsc.exe(微软自带远程桌面程序),则与第二条一致,也会关闭一天推广,只是往服务器报告的内容为 rmt_quit。
流氓联盟欺软怕硬,多链路恶意推广

MD5 值所对应名称

匹配网页并请求云控配置(resource_url):随后通过云控配置 resource_url 中 url_reg对用户访问的网页进行匹配,随后通过请求 link_req_url 链接获取到被加密的推广网页。

流氓联盟欺软怕硬,多链路恶意推广

resource_url 云控配置

通过各类工具解密被加密的推广网页,获取原始数据。

流氓联盟欺软怕硬,多链路恶意推广

解密

随后将会弹出推广网页。

流氓联盟欺软怕硬,多链路恶意推广

弹出推广页面

二、溯源分析

初期关注到该事件是因为火绒威胁情报系统中小蓝鸽数据异常,从而判断可能是有其他软件正在推广该软件,其中通过数据发现主要是来源于“多标签文件管理器”、“DX强力修复”、“Echofind”等多种软件,通过数字签名和隐私声明中发现这些软件是由“成都有望科技有限公司”和“重庆赫赫有盾科技有限公司”等制作。

流氓联盟欺软怕硬,多链路恶意推广

签名和公司

因为分析时发现 DX 强力修复软件会推广自家其他软件或其他公司的软件(例如 BlueDove 小蓝鸽签名为“天津简诚科技有限公司”),所以通过“天眼查”等查询软件发现这些公司之间有一些细微的联系,例如电话号码、姓名、邮箱后缀等地方出现意外关联。

流氓联盟欺软怕硬,多链路恶意推广

天眼查

随后分析过程中搜索其中进程名时意外搜索到编译这些软件包的CCNet服务器日志,其中包含多个软件包,例如 BlueDove、DustAway 等,还有多个编译选项,其中不乏 cqhhyd、tjch、tjxinyuan 等,火绒工程师通过分析多个公司之间的联系时获取到了一些信息,通过这些信息推测出了多个名称的含义。

流氓联盟欺软怕硬,多链路恶意推广

编译选项中公司名称

流氓联盟欺软怕硬,多链路恶意推广

编译选项

三、 附录

HASH:

流氓联盟欺软怕硬,多链路恶意推广

发表评论

泰日号Copyright Your WebSite.Some Rights Reserved. 网站地图 备案号:川ICP备66666666号 Z-BlogPHP强力驱动