银狐应急
本文首发先知社区:https://xz.aliyun.com/news/92230
一、起因
2026.5.8 15:16,朋友告诉我说他的电脑又被黑了,黑客又用他的电脑给微信群里面群发广告
二、初步排查
由于这次上线与之前相隔时间不远并且上线后的行为高度一致,我想当然的以为上次清除的不干净,鉴于上次是创建了一个服务项作为后门,所以这里去查询安装新服务的系统日志,筛选id为7045,没有看到可疑的,然后常规排查服务项和计划任务也没有收获,倒是用户的开机自启动目录C:\Users\hp\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup下有两个文件很奇怪

lnk指向”C:\Program Files\SogouInput\15.12.0.2855\ExW38bJm\sgfeedbackhelper.exe”

虽然还有一个sgfeedbackhelperz.exe和sgfeedbackhelper.exe长得很像,有点奇怪,但是查看sgfeedbackhelper.exe的属性和签名,好像都没问题

于是我没有深究这里,开始按最朴素的方式排查->查外联
netstat -anob,执行完还真有收获:

查一下威胁情报

到这里就确认了外联进程

sgfeedbackhelper.exe…………嘶,这不是刚才那个搜狗程序吗???回到”C:\Program Files\SogouInput\15.12.0.2855\ExW38bJm”仔细端详这个sgfeedbackhelper.exe

签名信息也是一样的,这里没太搞明白,如果exe是正常的那就是有个黑dll,而且大概率里在同级目录下,这里我打开ProcessMonitor尝试查看他的行为

不看不知道,一看就知道,这又加载了一个dll,但是这是正常的dll,先不管

但是下面的比较有意思:在C:\Users\hp\AppData\Roaming\Tencent\beacon目录下进行了LockFile和UnLockFileSingle操作,本来看到beacon有点激动,后来了解了一下,Tencent Beacon是腾讯官方出品的一个PC端的数据分析、崩溃上报与遥测SDK,是正常的。
这里还有一个外联IP,查一下威胁情报:

这里有点奇怪,不知道为什么会有两个外联IP
到这里我决定把这个进程杀掉,重新运行,想看一下他在加载的时候到底在哪加载的dll

简单看了一下没找到,决定先放下,先对后门进行一个清除,后续在IDA里面分析一下,最后在虚拟机里面再仔细观察一下
三、样本分析
3.1 sgfeedbackhelper.exe
sgfeedbackhelper.exe 是搜狗输入法的”用户反馈助手”程序,具有合法的数字签名:
- 签名者:Beijing Sogou Technology Development Co., Ltd.
- PDB路径:
E:\landun\pinyin_agent\workspace\...\sgfeedbackhelper.pdb - 运行时通过
CheckSig3~CheckSig10系列函数校验自身签名,验证签名者为 “sogou” / “Beijing Sogou Technology Development Co., Ltd.”
该EXE的IAT(导入地址表)静态导入了同级目录下的两个DLL:
- HWSignature.dll → 导入函数GenHWID
- ImageMagik.dll → 导入函数 ImageMagickEx_FreePNGBuffer / ImageMagickEx_SVGToPNGBufferByDpi

3.2 hwsignature.dll
hwsignature.dll的大小达到了577MB,显然更可疑,IDA打开hwsignature.dll查看导入表

发现有bcrypt.dll的调用,而HWSignature.dll从导出函数名看是生成硬件指纹的模块,该功能不需要对称加解密操作,因此导入表中出现的BCrypt系列API是明显异常,由此入手分析。
在Imports窗口双击BCryptDecrypt跳转到其IAT条目,然后按X查看交叉引用,IDA会列出所有引用了该地址的代码位置,可以快速定位到实际调用它的恶意函数。
BCryptDecrypt 的交叉引用指向 sub_100173B0,反编译

不难看出这是一个解密的函数,而BCryptGenerateSymmetricKey函数的调用说明这是一个对称加解密,从下图可以看出密钥长度是128,且设置了分组链接模式

对 sub_100173B0 再次按X追溯调用者,定位到sub_100177B0,然后对sub_100177B0按X最终定位到 sub_10010B30,反编译该函数可以看到:

这里 v68 被设置了字符串 "123" 后,作为参数传入了sub_100177B0:

而sub_100177B0又调用了sub_100173B0,sub_100173B0 内部会把传入参数补零到16字节后用于 BCryptGenerateSymmetricKey——可以合理判断 "123" 是解密密钥,asvv.txt是加密数据
3.3 解密验证
已知条件:128位对称加密、有分组链接模式、密钥为 "123"。Windows BCrypt支持的128位对称算法中AES最常见,分组链接模式最常用的是CBC和ECB。逐一尝试:
- AES-128-ECB,密钥
"123"补零至16字节 → 仅第一个16字节块解密正确,后续数据损坏 - AES-128-CBC,密钥
"123"补零至16字节,IV为全零 → 全部解密正确,输出为有效PE文件


最终确认算法为 AES-128-CBC,密钥 “123” 零填充至16字节,IV全零。
解密 asvv.txt 得到PE DLL(446,480字节),解密 shouhu.txt 得到PE EXE(733,200字节)。
3.4 C2地址提取
解密得到的DLL需要进一步分析其通信目标。
首先对解密后的DLL提取所有ASCII字符串,未发现任何IP地址格式的内容。在CFF Explorer中查看asvv.dll的节表:
| 段名 | 大小(文件) | 用途 |
|---|---|---|
| .text | 0xB000 (44KB) | 代码 |
| .rdata | 0x1000 (4KB) | 只读常量 |
| .data | 0x5D000 (380KB) | 可读写数据 |
.data段的体积是代码段的近9倍——对一个44KB代码的DLL来说异常庞大,说明内部嵌入了大量数据内容。
在CFF Explorer中点击.data节查看其十六进制内容,注意到大面积的如下模式:

每个可见字符后面紧跟 00 字节,这是UTF-16LE编码的特征(ASCII范围的字符在UTF-16LE中高位字节恒为0)。
这与之前分析hwsignature.dll时的观察一致——IDA反编译中出现的 L"ChainingMode"、L"asvv"、L"123" 等字面量均带有 L"" 前缀,表明该程序框架内部统一使用UTF-16LE(宽字符)处理字符串。既然加载器使用UTF-16LE,其释放的payload中配置数据采用同样编码也在预期之中。
UTF-16LE字符串提取
对整个DLL文件按UTF-16LE编码提取所有字符串,提取所有3个字符以上的字符串

提取结果中包含大量有情报价值的字符串
杀软检测列表(反杀软/环境感知)
RAT(Remote Access Trojan,远程访问木马)内嵌了一份安全软件进程名列表,用于检测受害者主机的防护状况:
| 地区 | 产品 |
|---|---|
| 中国 | 360安全卫士、金山毒霸、火绒安全、电脑管家、百度卫士、联想管家 |
| 韩国 | 安博士V3 (V3Svc.exe)、韩国胶囊 (AYAgent.aye) |
| 巴西 | PSafe反病毒 (PSafeSysTray.exe) |
| 国际 | BitDefender、Avast、NOD32、卡巴斯基、McAfee、F-Secure、AVG、Dr.Web、Comodo、QuickHeal |
通信软件监控列表
| 进程名 | 软件 |
|---|---|
| QQ.exe | |
| WeChat.exe | 微信 |
| WXWork.exe | 企业微信 |
| DingTalk.exe | 钉钉 |
| Telegram.exe | Telegram |
反分析工具检测
包含网络分析和进程监控工具的进程名列表:
| 工具 | 用途 |
|---|---|
| Wireshark / Fiddler | 网络抓包 |
| ApateDNS | DNS欺骗/监控 |
| TCPEye / CurrPorts | TCP连接监控 |
| Process Monitor / Process Explorer | 进程行为分析 |
| Metascan | 多引擎扫描 |
系统信息收集
HDD:%d块 %d Gb Free %d Gb Mem: %d Gb— 硬盘和内存信息格式化模板SOFTWARE\Microsoft\Windows NT\CurrentVersion+InstallDate— 读取系统安装日期运行时间:%s 开机时间:%d.%d.%d-%d:%d:— 记录运行时长和开机时间
C2配置字符串
在提取结果中,以下两条长字符串明显区别于上述内容——它们是结构化的配置数据:
1 | |
这两条字符串具有明显的结构化特征:以 | 为分隔符,每个字段格式为 value:key,且包含带点号的数字序列。

格式分析与解码
观察 32.022.832.602——含有点号分隔的数字,形似IP地址但数值不合法,尝试将其逐字符反转:
1 | |
最终提取到两组C2通信地址:
| C2地址 | 端口 |
|---|---|
| 206.238.220.23 | 6666 |
| 112.213.106.27 | 446 |
3.5 UTF-16LE解码hwsignature.dll
同样的思路,解码hwsignature.dll看一下也有一些发现:
1 | |

转到IDA

显示sub_100105F0引用了这两条注册表路径,双击sub_100105F0跳转过去

合理推测这个dll禁用了UAC和Windows Defender
四、复现
根据前文的分析,我决定在win10虚拟机运行一下这个木马对分析的准确性进行验证,验证中发现
- 木马确实进行了注册表修改操作:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA→ 0HKLM\SOFTWARE\Policies\Microsoft\Windows Defender\DisableAntiSpyware→ 1



但在受害者win11的机器上,只修改了EnableLUA这一项,并没有对DisableAntiSpyware进行修改,于是我继续筛选sgfeedbackhelper.exe对注册表进行修改的事件,尝试验证AI给的分析结论是否和样本真实的行为一致,发现sgfeedbackhelper.exe并没有修改注册表,反而是sgfeedbackhelperz.exe对注册表进行了2处修改


这不禁让我思考,为什么这个操作不是由sgfeedbackhelper.exe来完成,sgfeedbackhelperz.exe在这个白加黑中扮演什么样的角色?为什么win11上面没有修改DisableAntiSpyware?于是我打开了idaAI进行分析。结果如下:
4.1 sgfeedbackhelperz.exe 的角色
sgfeedbackhelperz.exe 和 sgfeedbackhelper.exe 是完全相同的二进制文件(搜狗官方EXE的两份拷贝),但它们加载的 hwsignature.dll 内部通过命令行参数决定执行不同的代码路径。
hwsignature.dll 主线程 StartAddress(0x1000F890)中存在一个关键分支(0x1000F9D7):
1 | |
在 sgfeedbackhelper.exe 的C2主逻辑中(0x100103F0),存在以下调用:
1 | |
因此,完整的执行逻辑是:
| 进程 | 启动方式 | 命令行参数 | 分支结果 | 职责 |
|---|---|---|---|---|
| sgfeedbackhelper.exe | 开机LNK启动 | 无 | v88=0 → 条件不满足 | C2主逻辑:解密asvv.txt、反射加载RAT、网络通信 |
| sgfeedbackhelperz.exe | 被上者ShellExecute启动 | 随机6字符(如”kRmXfQ”) | v88=4 → 条件满足 | 调用sub_100105F0:禁用UAC + 禁用Defender → ExitProcess退出 |
设计意图(推测): 将高风险的注册表修改操作隔离到独立进程中执行后立即退出。即使该操作被安全软件拦截或导致进程崩溃,也不会影响主C2进程的存活。随机参数仅作为”触发开关”使用,具体内容无意义,目的是避免固定命令行特征被检测规则匹配。
4.2 为什么 DisableAntiSpyware 没有生效
sub_100105F0(0x100105F0)中两条注册表写入是顺序执行的,代码如下:
1 | |
sub_100161E0(0x100161E0)底层调用 RegOpenKeyExW + RegSetValueExW,但函数的返回值从未被 sub_100105F0 检查——即使写入失败,代码也静默继续。
根本原因: Windows 11 的 Tamper Protection(篡改防护)会拦截对 Windows Defender 策略键的注册表写入。该保护在内核层面(WdFilter.sys)生效,即使进程拥有管理员权限,RegSetValueExW 也会返回 ERROR_ACCESS_DENIED(或静默丢弃写入),但不会终止调用进程。由于代码不检查返回值并立即 ExitProcess,攻击者无法感知写入失败。
而 EnableLUA 属于 Policies\System 键,不受 Tamper Protection 保护,因此管理员权限即可修改成功。
总结: 这不是代码逻辑问题,而是Windows安全机制的主动防御。攻击者的代码尝试了两项修改,但Win11的篡改防护阻止了其中一项。
- sgfeedbackhelper.exe确实加载了同级目录下的hwsignature.dll来实现白加黑

- sgfeedbackhelper.exe在同级目录下读取了asvv.txt

- shouhu.txt的加载则是由sgfeedbackhelperz.exe来完成的

五、AI分析
以下是结合IDA逆向和AI辅助分析的完整结论:
5.1 开发者画像与攻击目标
杀软检测列表中以中文直接标注各产品名称(如”微软杀毒”、”小红伞”、”麦咖啡”),而非使用英文原名或代号,说明开发者的母语为中文。结合杀软列表大量覆盖中国国产安全软件、通讯软件监控列表几乎全为中国主流办公工具、以及RAT配置中分组标识直接使用中文”默认”——攻击目标明确锁定中国用户。
5.2 反分析环境检测
上述反分析工具列表覆盖了恶意软件分析人员常用的完整工具链。RAT运行时枚举当前进程,若发现这些工具正在运行则判定处于分析环境中,可能采取静默退出、延迟执行或隐藏部分功能等规避策略。这说明开发者对安全研究人员的分析手法有充分了解。
5.3 样本概述
| 文件名 | 大小 | 说明 |
|---|---|---|
| sgfeedbackhelper.exe | 3.29MB | 搜狗官方签名的合法程序(白利用载体) |
| sgfeedbackhelperz.exe | 3.29MB | 与上者MD5完全一致的副本 |
| hwsignature.dll | 577MB | 恶意DLL(膨胀至577MB用于反沙箱) |
| ImageMagik.dll | 6.15MB | 合法的ImageMagick图像处理库 |
| asvv.txt | 446KB | 加密的Payload/配置数据 |
| shouhu.txt | 733KB | 加密的守护进程配置(”守护”) |
| 7z.exe / 7z.dll | — | 7-Zip工具(用于解压部署) |
| 7.exe / 12.exe / 15.exe | 4.7~9MB | 自定义加壳投递器(详见下文分析) |
| 1.zip | 8MB | 银狐工具包部署压缩包(ZipCrypto加密) |
sgfeedbackhelper.exe 哈希:
- MD5:
be9d0fd7235fd9c760acabe2b26502ff - SHA256:
b2230f1e1e4fe538eb3c513e6612d82453e708ac94373b155624a656620f1bbc
5.4 攻击手法:DLL侧加载
当Windows加载EXE时,会按照DLL搜索顺序优先从EXE所在目录加载这些DLL。攻击者将恶意的 hwsignature.dll(577MB)放置于同一目录,实现侧加载。
5.5 EXE功能分析
WinMain (0x4242c0) 执行流程:
sub_4240C0— 初始化日志/错误上报系统(pzt_name → “fd.start”)sub_421B40—SGFeedbackApp::InitApp,初始化COM、DUI界面框架sub_422070— 创建互斥量SGFeedbackHelperUnique_E6BAD41F_84A0_4638_BF15_F5BFE746C12E,启动SGFeedbackUIThread线程,打开CEF浏览器窗口加载搜狗帮助页面CoUninitialize→ 清理退出
关键发现:EXE本身不包含任何网络外联代码。其WS2_32导入(gethostbyname/WSAStartup)仅用于 DuiLib::CIPAddressUI 控件获取本机IP地址。所有C2通信均由侧加载的恶意DLL完成。
5.6 恶意DLL深入分析
hwsignature.dll文件结构:
| 偏移范围 | 大小 | 内容 |
|---|---|---|
| 0x0 ~ 0x8AA00 | 554KB | 真实PE代码(32-bit DLL) |
| 0x8AA00 ~ 0x2268AA00 | ~550MB | NULL字节填充(反沙箱) |
| 0x2268AA00 ~ 0x2268DEA8 | 13.5KB | Authenticode证书(Thawte/Symantec时间戳签名) |
PE Security Directory指向文件尾部的证书,中间全部为0x00填充。这种结构使Windows仍能验证签名,同时让文件膨胀至577MB。
导出函数(陷阱设计):
1 | |
关键发现:所有导出函数均为Sleep(INFINITE)陷阱。EXE调用GenHWID后会永远阻塞在该调用上,但恶意代码已在DllMain阶段通过创建线程启动执行。这是一个精巧的设计——EXE的正常UI线程被冻住,进程保持存活但不产生可疑的窗口行为。
DllMain执行链:
1 | |
**反调试机制 (sub_10016880)**:
1 | |
两条分支最终都会创建线程执行StartAddress,但通过不同的调用路径实现——正常路径经过一层间接调用(sub_1000F860),调试器路径则直接创建线程。这种差异可能用于干扰动态分析时的断点设置。
主恶意逻辑 StartAddress (0x1000F890) — 完整执行流程:
阶段1:环境检查与权限验证
1 | |
阶段2:命令行分支判断(仅sgfeedbackhelperz.exe路径触发):
触发条件(0x1000f9e8):
1 | |
即:sgfeedbackhelper.exe <arg> 带参数启动时才会进入此分支。从Startup LNK直接启动(无参数)的实例不会触发此函数,而是继续执行下方的主C2逻辑。
执行架构:第一个实例(LNK启动,无参数)负责C2载荷加载;它随后通过ShellExecuteW携带参数启动sgfeedbackhelperz.exe,第二个实例满足条件后触发sub_100105F0,完成安全对抗后ExitProcess退出。
sub_100105F0 完整逻辑(0x100105F0):
1 | |
阶段3:互斥量与单实例控制
1 | |
阶段4:安全软件检测(进程枚举)
1 | |
如果检测到360系列安全软件,设置标志v104=0跳过部分持久化操作。
阶段5:持久化部署
1 | |
阶段6:启动载荷线程并执行副本
1 | |
5.7 载荷解密与反射加载
sub_10010B30:
这是hwsignature.dll最核心的功能——一个完整的反射式PE加载器。
金山毒霸检测:
1 | |
AES解密:
1 | |
解密参数:
- 算法:AES-128(密钥长度128-bit,
*pbInput = 128) - 密钥:字符串
"123"经零填充至16字节(0x31 0x32 0x33 0x00...) - 模式:CBC(零IV,即16字节全0)
- 已通过实际解密验证:解密后得到合法PE(MZ头 + 有效e_lfanew指向PE签名)
载荷来源:获取当前DLL所在目录路径,拼接 "asvv" + ".txt" 构成完整文件路径后读取
反射式PE加载(内存映射执行):
1 | |
这个反射加载器的特点:
- 支持基址重定位(type 3和type 10)
- 使用
LoadLibraryExA+GetProcAddress解析所有导入 - 通过链表管理已加载的DLL引用计数
- 使用InterlockedCompareExchange实现无锁链表操作
5.8 shouhu.txt守护进程加载
sub_10011500:
1 | |
shouhu(守护)模块的职责(解密后通过字符串分析确认):
- 监控主进程(sgfeedbackhelper.exe)存活状态(通过OpenProcess)
- 主进程被杀后自动重启(通过CreateProcessA)
- 内置金山/360安全软件对抗(与主DLL相同的检测列表)
5.9 对抗360安全软件
sub_10010700:
1 | |
5.10 ImageMagik.dll 分析
- 合法的ImageMagick/glib库
- PDB路径:
D:\data\landun\workspace\...\third_party_build\imagemagick\... - DllMain直接返回TRUE,无恶意行为
- 导出函数实现真实的SVG→PNG转换功能
- 虽然导入了WS2_32网络函数,但均为glib GIO通道的标准实现(
g_io_win32_sock_write等)
5.11 HWID指纹机制
EXE中 sub_4179A0 调用 GenHWID(来自 hwsignature.dll):
1 | |
但实际上GenHWID内部是Sleep(INFINITE)陷阱——EXE在调用这个函数时会被永远阻塞。真正的HWID生成和上报逻辑在反射加载的PE(asvv.txt解密后)中实现。这确保了EXE进程保持存活(作为恶意DLL的宿主),同时不会弹出搜狗反馈窗口。
5.12 加密载荷文件
asvv.txt 和 shouhu.txt 均为AES-128-CBC加密的PE文件:
- 加密算法:AES-128-CBC(BCrypt API,算法标识符
L"AES") - 密钥:
"123"硬编码明文,零填充至16字节(0x31 0x32 0x33 0x00...) - IV:16字节全零
- 文件名拼接规避:
"asvv"+".txt"/"shou"+"hu"+".txt" asvv.txt(446KB):解密后为易语言编写的32-bit DLL(Characteristics含0x2000),包含C2 RAT功能(键盘记录、通讯软件监控、双C2通信)shouhu.txt(733KB):解密后为32-bit EXE(Characteristics=0x010F,非DLL),内含字符串sgfeedbackhelper.exe和CreateProcessA调用,负责监控主进程存活并重启
C2配置提取:使用密钥"123" AES-128-CBC模式(零IV)成功解密asvv.txt,得到一个易语言编写的32-bit DLL(446KB)。该DLL内部以逆序字符串格式存储C2配置(|reversed_value:reversed_key|),提取到两组C2:
| 配置 | C2 IP | 端口 | 配置日期 | PE内偏移 |
|---|---|---|---|---|
| Config 1 | 206.238.220.23 |
6666 | 2026.3.15 | 0x046fc8 |
| Config 2 | 112.213.106.27 |
446 | 2026.3.9 | 0x063fb8 |
其他提取到的配置字段:
- 分组标识(
fz):默认 - 组ID:
d33f351a4aeea5e608853d1a56661059 - 注册表持久化路径:
SOFTWARE\Wancc下的IpDate/IpDates_info - RAT 内置的安全软件检测列表:360全家桶、金山、QQ电脑管家、百度杀毒、卡巴斯基(avp.exe)、BitDefender、Avast、NOD32、趋势(TMBMSRV)等
- 键盘记录功能([esc]、[enter]、[F1]-[F12]等按键标记字符串)
- 通讯软件监控:QQ.exe、WeChat.exe、DingTalk.exe、WXWork.exe、Telegram.exe
5.13 持久化机制
- 通过COM接口
IShellLink(CLSID:{00021401-0000-0000-C000-000000000046})在用户Startup目录创建LNK快捷方式 - LNK指向
C:\Program Files\SogouInput\15.12.0.2855\ExW38bJm\sgfeedbackhelper.exe - 同时通过
ShellExecuteW启动sgfeedbackhelperz.exe(相同MD5的备份副本),实现双进程驻留 - 利用搜狗输入法的正常安装路径进行伪装,即使用户查看快捷方式属性也不易察觉异常
5.14 关于两个外联IP的解释
通过解密 asvv.txt 直接从 RAT 的 PE 中提取到两组独立的 C2 配置:
| C2 | IP | 端口 | 配置写入日期 |
|---|---|---|---|
| C2 #1 | 206.238.220.23 |
6666 | 2026-03-15 |
| C2 #2 | 112.213.106.27 |
446 | 2026-03-09 |
每组配置内部有3个服务器槽位(p1/p2/p3),但都填写了相同的IP,说明当前没有组内冗余,而是两组之间构成双C2架构。netstat看到的两个外联就是分别连向这两个地址。
5.15 投递器分析:7.exe / 12.exe / 15.exe
5.15.1 1.zip — 银狐工具包部署压缩包
目录下存在一个1.zip(8MB,创建时间2026-03-21 11:03),使用ZipCrypto加密(ZIP flag bit 0 = encrypted, method = deflate)。通过ZIP头解析确认其内容列表为:
1 | |
这是银狐DLL侧加载工具包的完整部署压缩包。
5.15.2 三个投递器的静态分析
| 属性 | 7.exe | 12.exe | 15.exe |
|---|---|---|---|
| 伪装身份 | cTrader(外汇交易平台) | Postman(API测试工具) | Visions of Mana(SE游戏) |
| OriginalFilename | cTrader.exe | — | VisionsofMana-Win64-Shipping.exe |
| 架构 | PE32+(x86-64) | PE32+(x86-64) | PE32+(x86-64) |
| 编译时间 | 2026-04-05 14:30 | 2026-04-04 15:28 | 2026-03-25 15:28 |
| 数字签名 | 无 | 无 | 无 |
| 文件大小 | 9,047,552 | 8,812,544 | 4,763,136 |
| MD5 | 39bd13bf7c5f99d3fe351c8873c5d3c7 |
4d3cad9c3065c4c3ef4f30a525eb0e6b |
6d1ff03e75b8f5f7d5ae9ede10939077 |
PE结构(三者同构):
| Section | 说明 | 特征 |
|---|---|---|
| .text | 代码段 | 仅11~13KB,极小的shellcode-style stub |
| .rdata | 只读数据 | ~1.1MB,起始为DEFLATE长度表(3,4,5,…,258) |
| .bss | 未初始化数据 | ~11MB虚拟空间,0字节raw(运行时解压缓冲区) |
| .idata | 导入表 | 完全为空(无任何静态导入) |
| .rsrc ×2 | 资源段 | 两个资源段,包含伪装图标和版本信息 |
| OVERLAY | PE尾部追加数据 | 7.0MB / 7.0MB / 3.0MB 加密载荷 |
入口点分析(以15.exe为例):
entry point(0x40146c)为一个无导入的位置无关加载器:
- 通过PEB walking遍历
InMemoryOrderModuleList获取ntdll和kernel32的基址 - 解析目标DLL的导出表,使用API哈希(算法:
hash = hash * 15 + char,逐字符累加)匹配函数名 - 动态解析所有需要的Windows API后执行主逻辑
- .rdata中的DEFLATE常量表用于解压缩操作
- .bss的11MB虚拟空间作为解压后的输出缓冲区
Overlay加密格式:
1 | |
7.exe和12.exe的overlay大小完全相同:7,340,032字节(恰好7.0MB)。15.exe为3,145,728字节(恰好3.0MB)。
5.15.3 结论与置信度
事实:
- 三个文件使用同一打包器生成(同构PE结构、相同的API哈希算法、相同的DEFLATE表、相同的overlay格式头)
- 版本信息伪造自合法软件(cTrader/Postman/Visions of Mana),但无对应数字签名
- 无静态导入、通过PEB walking动态解析API = Shellcode级别的反检测设计
- Overlay为加密载荷(熵值8.0 + 完全无可读字符串)
1.zip包含完整的银狐工具包且使用ZipCrypto加密
合理推测(基于上下文和经验,未通过动态执行验证):
- 这三个文件是银狐的初始感染投递器(Initial Access Dropper)——受害者以为下载的是Postman/cTrader/游戏,实际运行后释放银狐工具包
- 7.exe和12.exe的7MB overlay解密后极可能就是银狐工具包的内容(大小与1.zip的压缩数据部分吻合)
- 15.exe的3MB overlay可能是一个精简版载荷或针对不同场景的部署包
- 感染链:受害者运行伪装EXE → stub解密overlay → 释放文件到
ExW38bJm目录 → 创建LNK持久化 → 银狐上线
无法确认的部分(需动态调试):
- overlay的具体解密算法和密钥(在13KB的stub中,需完整逆向PEB解析后的逻辑)
- 解密后释放的具体文件列表(只有实际解密才能100%确认)
- 受害者具体通过哪个文件感染(三个都有可能,也可能是其他未留存的变体)
六、流程图
以下流程标注了对应的函数地址
1 | |
EXE的命运:调用GenHWID() → Sleep(INFINITE) → 永远阻塞
→ 进程保持存活作为DLL宿主,但不弹窗、不执行正常UI逻辑
关键路径:LNK → 白EXE → DLL侧加载 → DllMain → 创建线程 → AES解密asvv.txt → 反射加载PE → C2上线
七、免杀手法
- 白加黑(DLL Side-Loading):使用搜狗官方签名的EXE作为载体,杀软白名单信任签名程序
- 文件膨胀(File Inflation):hwsignature.dll膨胀至577MB,PE实体仅554KB,中间550MB为NULL填充,绕过沙箱(文件大小阈值通常100MB)和杀软扫描
- 导出函数陷阱:
GenHWID/DLLGenHWID/GetDllVersionA均为Sleep(INFINITE),EXE调用后永久挂起,进程保活但不产生可疑行为 - 反射式PE加载:最终载荷(C2 RAT)不落地为独立文件,而是从加密txt解密后直接映射到内存执行,绕过文件扫描
- 伪装路径:植入
C:\Program Files\SogouInput\目录结构下,与真实搜狗输入法路径混淆 - 载荷加密:asvv.txt/shouhu.txt 使用AES-128-CBC加密(零IV),密钥为简单字符串”123”,静态扫描无法识别恶意内容
- 文件名拆分:
"shou"+"hu"+".txt"运行时拼接,避免字符串特征匹配 - 合法进程外联:网络通信由白进程(sgfeedbackhelper.exe)发起,防火墙/EDR基于进程名/签名放行
- 运行时签名校验:EXE内置CheckSig系列函数验证自身签名有效性,增加篡改检测的欺骗性(实际EXE未被修改)
- 主动对抗安全软件:检测360全家桶并启动专用线程对抗,同时通过注册表禁用UAC和Windows Defender
- 安全软件等待:启动前等待金山毒霸(kxetray.exe)退出,最多等待10秒,避免在杀软活跃时触发告警
八、沙箱分析
这次沙箱分析的不是很给力,也许是反沙箱做的很好吧,不过我在网上找到了一些相关的沙箱分析报告,时间很接近,行为也基本一致,甚至路径都是一样的:C:\Program Files\SogouInput\15.12.0.2855\[八位随机字符]\
https://bazaar.abuse.ch/sample/14f0f6c88eae66521b0ef4fabf6542f44e0f63239e11b3be7f2d7e7a0aaebac8/
https://hybrid-analysis.com/sample/718d8efde0ba4ba81ce3d1bf56a0e1a1acaace8f2dae94677473991b27276d91
https://tria.ge/260313-xn2b9adt7l/behavioral2
感兴趣的大佬可以研究一下
九、IOC(Indicators of Compromise)
文件哈希:
- sgfeedbackhelper.exe MD5:
be9d0fd7235fd9c760acabe2b26502ff - sgfeedbackhelper.exe SHA256:
b2230f1e1e4fe538eb3c513e6612d82453e708ac94373b155624a656620f1bbc - 7.exe MD5:
39bd13bf7c5f99d3fe351c8873c5d3c7(投递器,伪装cTrader) - 12.exe MD5:
4d3cad9c3065c4c3ef4f30a525eb0e6b(投递器,伪装Postman) - 15.exe MD5:
6d1ff03e75b8f5f7d5ae9ede10939077(投递器,伪装Visions of Mana)
文件路径:
C:\Program Files\SogouInput\15.12.0.2855\ExW38bJm\sgfeedbackhelper.exeC:\Program Files\SogouInput\15.12.0.2855\ExW38bJm\sgfeedbackhelperz.exeC:\Program Files\SogouInput\15.12.0.2855\ExW38bJm\hwsignature.dll(577MB)C:\Program Files\SogouInput\15.12.0.2855\ExW38bJm\asvv.txtC:\Program Files\SogouInput\15.12.0.2855\ExW38bJm\shouhu.txt%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\*.lnk(指向上述EXE)
注册表修改:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA→ 0HKLM\SOFTWARE\Policies\Microsoft\Windows Defender\DisableAntiSpyware→ 1
C2通信:
206.238.220.23:6666(配置日期 2026-03-15)112.213.106.27:446(配置日期 2026-03-09)- 组ID:
d33f351a4aeea5e608853d1a56661059 - RAT配置中的注册表路径(推测用于记录C2连接状态):
HKLM\SOFTWARE\Wancc\IpDate
行为特征:
- 进程枚举(CreateToolhelp32Snapshot)检测安全软件
- BCrypt AES-128-CBC解密(密钥”123”,零IV)
- 反射式PE内存加载(VirtualAlloc RWX + 手动映射)
- COM IShellLink创建启动项
十、MITRE ATT&CK 映射
| 战术 | 技术ID | 技术名称 | 具体实现 |
|---|---|---|---|
| 执行 | T1129 | Shared Modules | DLL侧加载hwsignature.dll |
| 执行 | T1620 | Reflective Code Loading | 内存映射解密后的PE并调用DllMain |
| 持久化 | T1547.001 | Registry Run Keys / Startup Folder | Startup目录LNK快捷方式 |
| 权限提升 | T1548.002 | Bypass UAC | 注册表禁用EnableLUA |
| 防御规避 | T1574.002 | DLL Side-Loading | 利用搜狗签名EXE加载恶意DLL |
| 防御规避 | T1027.001 | Binary Padding | 577MB文件膨胀绕过沙箱 |
| 防御规避 | T1027.002 | Software Packing | 投递器使用自定义壳(PEB walking + API hashing + DEFLATE) |
| 防御规避 | T1140 | Deobfuscate/Decode Files | AES-128-CBC解密asvv.txt/shouhu.txt |
| 防御规避 | T1562.001 | Disable or Modify Tools | 禁用Windows Defender |
| 防御规避 | T1036.005 | Masquerading: Match Legitimate Name | 投递器伪装cTrader/Postman/游戏 |
| 发现 | T1057 | Process Discovery | 枚举360/金山进程 |
| 发现 | T1082 | System Information Discovery | IsNTAdmin检查管理员权限 |
| 采集 | T1056.001 | Input Capture: Keylogging | RAT内置键盘记录([esc]/[enter]/[F1]-[F12]按键标记) |
| 命令与控制 | T1071 | Application Layer Protocol | 双C2: 206.238.220.23:6666 + 112.213.106.27:446 |
| 命令与控制 | T1008 | Fallback Channels | 两组独立C2配置,互为冗余 |
十一、总结
本次银狐样本采用了成熟的多层攻击架构:
- 投递层(推测):伪装为合法软件(cTrader/Postman/游戏)的加壳投递器,运行后解密释放银狐工具包
- 第一层:搜狗官方签名EXE(白文件)+ DLL侧加载(hwsignature.dll)
- 第二层:hwsignature.dll的DllMain完成环境准备(权限提升、安全软件对抗、持久化部署)
- 第三层:AES解密asvv.txt并反射加载为内存PE,作为最终C2 RAT运行
- 守护层:shouhu.txt解密后为独立EXE,通过OpenProcess/CreateProcessA监控sgfeedbackhelper.exe存活并自动重启
密钥为硬编码的”123”(AES-128-CBC,零IV),解密asvv.txt后提取到完整的C2配置:206.238.220.23:6666 和 112.213.106.27:446,组ID为d33f351a4aeea5e608853d1a56661059。解密后的RAT为易语言编写的DLL,具备键盘记录和通讯软件监控(微信/QQ/钉钉/Telegram)功能。GenHWID导出的Sleep(INFINITE)陷阱让宿主EXE永远停留在DLL初始化阶段,既保持进程存活又不触发任何GUI行为。
关于感染入口(推测):目录下发现了三个伪装为合法软件的投递器(7.exe/12.exe/15.exe)和一个包含完整银狐工具包的加密ZIP(1.zip),受害者极大概率是误下载并运行了其中某个投递器而感染。