通过某云音乐实现白加黑上线
字数 986 2025-08-22 12:22:54
通过某云音乐实现白加黑上线技术分析
文章声明
本教学文档所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与使用者无关。
工具准备
- Process Monitor - 微软提供的系统进程监视软件
- StudyPE - PE32/PE64查看/剖析集成化工具,提供丰富的PE编辑功能
- sgn - 多态二进制编码器,用于生成静态不可检测的二进制payloads
技术实现步骤
一、使用Process Monitor定位目标DLL
- 打开Process Monitor,默认会显示大量进程信息
- 通过名称筛选功能过滤出某云音乐相关进程
- 在监控结果中查找位于某音乐安装目录下的DLL文件
- 示例发现目标DLL:
swresample-3.dll
二、使用StudyPE工具进行DLL劫持
- 将目标DLL(
swresample-3.dll)拖入StudyPE - 查看该DLL的导入表结构
- 备份原始DLL文件以防损坏
- 通过StudyPE的"添加导入函数"功能,将恶意DLL的函数导入到目标DLL中
- 保存修改后的DLL
- 将恶意DLL与修改后的DLL一同放入程序目录
- 测试结果:
- 在核晶防护状态下成功上线
- 卡巴斯基免费版环境下成功上线
三、恶意DLL的编写技术
使用sgn编码器
- sgn是一个专为进攻性安全设计的多态二进制编码器
- 主要功能:生成静态不可检测的二进制payloads
- 使用方法:
- 先用Cobalt Strike生成bin文件
- 使用sgn对bin文件进行编码,增强免杀能力
回调函数执行技术
示例代码片段:
// 获取解密后的shellcode的地址
char *shllcode = (char *)buf;
// 声明一个DWORD变量用于存储旧的内存保护属性
DWORD dwOldPro = 0;
// 更改内存保护属性,允许执行、读、写
BOOL ifExec = VirtualProtect(shllcode, sizeof(buf), PAGE_EXECUTE_READWRITE, &dwOldPro);
// 使用EnumUILanguages函数执行解密后的shellcode
EnumUILanguages((UILANGUAGE_ENUMPROC)shllcode, 0, 0);
关键技术点:
- 使用
VirtualProtect修改内存属性为可执行 - 通过
EnumUILanguages等合法API函数回调执行shellcode - 这种技术可以绕过部分行为检测
防御建议
- 应用程序应使用绝对路径加载DLL
- 实施DLL签名验证机制
- 监控异常的DLL加载行为
- 对关键应用程序目录设置适当的访问权限
- 使用高级威胁检测系统监控API调用异常
总结
这种白加黑技术利用合法软件的DLL加载机制,通过精心构造的恶意DLL实现隐蔽上线。关键在于:
- 选择合适的劫持目标DLL
- 正确处理导入表
- 使用编码技术绕过静态检测
- 使用合法API回调执行shellcode绕过行为检测
防御方应加强应用程序的DLL加载安全机制,并实施多层次的检测手段。