国护红队新活?伪装成微信的CS 图像隐写术loader分析
C#可执行文件,用微信loga伪装一下:
MainAPP方法里面隐藏了一个B64编码的PS1脚本:
1 | |
解码之后脚本:
1 | |
从 http://121[.]37[.]221[.]98:11111/121.png 下载图片。使用像素隐写术提取隐藏数据,每像素存储半个字节,通过 B 和 G 通道的低4位组合)。
- 分辨率:1920×2 像素(仅读取前两行)
- 总像素:3840 像素
- 每个像素提取 1 字节 → 共 3840 字节有效载荷
然后反射调用System.Management.Automation.AmsiUtils绕过AMSI保护。最后再执行(PowerShell.AddScript)提取的shellcode。
在绕过AMSI的过程中,还用了强制amsiContext和amsiSession为NULL的方法。
下面是去混淆之后的完整脚本:
1 | |
下载图像之后,二阶段shellcode脚本特征,下载beacon,Base64 编码 → XOR 解密 → 再次 Base64 解码。
提取的CS配置文件:
| 字段 | 值 | 说明 |
|---|---|---|
| Version | 4.6 |
Cobalt Strike 版本号 |
| Socket Port | 11443 |
C2 通信端口(HTTPS) |
| Interval | 60 秒 |
心跳间隔,每 60 秒回连一次 |
| URL | https://121.37.221.98/load |
C2 服务器主地址 |
| User-Agent | Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; MDDRJS) |
伪装成旧版 IE 浏览器 |
| Beacon Type | HTTPS |
使用加密 HTTPS 通道 |
| MaxGetSize | 1048576 |
最大 GET 请求大小(1MB) |
| 字段 | 值 | 说明 |
|---|---|---|
| Encryption Key | MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDf+Q1bBhu6OnW+G1vfTY1dZ+gn5s27t0zMyJ2Xg0LO2FGXL1ghBbss97vsHYKdIV+O+OHcZCfQ8znW4GFGiYmcggQSnli2qaCD5pghicSg7SHfYSZc7PD8qBUwL0SSwAEJCgUDwvAg+uY+6FWcCatimdxG9XymEuaF7lG7Um+bjwIDAQAB |
RSA 公钥,用于加密通信 |
| Watermark | 987654321 |
Cobalt Strike 授权水印,可识别团队服务器 |
| 字段 | 值 | 说明 |
|---|---|---|
| HttpPostUri | /submit.php |
数据回传路径(POST 请求) |
| HTTPGetClient | base64 |
GET 请求参数使用 base64 编码 |
| HTTPPostClient | print, parameter "id", header Content-Type: application/octet-stream |
POST 数据通过 id 参数发送,伪装成二进制流 |
| HTTPGet_Verb | GET |
任务获取方式 |
| HTTPPost_Verb | POST |
数据回传方式 |
| Proxy_Behavior | Use IE settings |
使用系统 IE 代理设置 |
| 字段 | 值 | 说明 |
|---|---|---|
| spawnto_x64 | %windir%\\sysnative\\rundll32.exe |
64 位注入目标进程 |
| spawnto_x86 | %windir%\\syswow64\\rundll32.exe |
32 位注入目标进程 |
| ProcInject_Execute | CreateThread, SetThreadContext, CreateRemoteThread, RtlCreateUserThread |
支持的注入技术 |
| ProcInject_AllocationMethod | VirtualAllocEx |
内存分配方式 |
国护红队新活?伪装成微信的CS 图像隐写术loader分析
http://example.com/2025/07/24/国护红队新活?伪装成微信的CS-图像隐写术loader分析/

