反沙箱杂谈
字数 1807 2025-08-05 08:20:05

反沙箱技术全面解析与实战指南

导论

沙箱技术是现代安全防御体系中的重要组成部分,NIST将其定义为"允许不受信任的应用程序在高度受控环境中运行的系统,其中应用程序的权限被限制为一组基本的计算机权限"。作为攻击方,了解如何绕过沙箱检测是免杀技术的关键环节。

沙箱分类与常见平台

沙箱类型

  1. 软件沙箱:Sandboxie、VMware、Docker等
  2. 硬件沙箱:企业级解决方案如华为FireHunter6000
  3. 云沙箱:在线分析平台

主流云沙箱平台

  • 微步沙箱:https://s.threatbook.com/
  • VirusTotal:https://www.virustotal.com/
  • Any.Run:https://any.run/ (可交互式)
  • Joe Sandbox:https://www.joesandbox.com/#windows
  • Hybrid Analysis:https://www.hybrid-analysis.com/
  • 安恒云沙箱:https://sandbox.dbappsecurity.com.cn/
  • 奇安信沙箱:https://sandbox.ti.qianxin.com/sandbox/page
  • FreeBuf沙箱:https://sandbox.freebuf.com/
  • 360云沙箱:https://ata.360.net/
  • 腾讯哈勃沙箱:https://habo.qq.com/

反沙箱前提条件

  1. 静态免杀基础

    • 确保静态资源无敏感信息
    • 避免加壳处理
    • 若使用shellcode形式加载,需预先加密(避免短密钥对称加密)
  2. 执行流程设计

    • 避免前置执行条件干扰
    • 确保程序首先执行反沙箱逻辑

反沙箱技术详解

1. 特定沙箱特征检测

微步沙箱检测示例
微步会在C盘生成随机字符串文件夹运行样本,可通过正则匹配检测:

std::string workingdir() {
    char buf[256];
    GetCurrentDirectoryA(256, buf);
    return std::string(buf);
}

bool check_run_path() {
    std::string test(workingdir());
    std::regex pattern("^C:\\\\[A-Za-z0-9_]+");
    return !std::regex_match(test, pattern);
}

2. 时间判断技术

常规方法

  • NtDelayExecution
  • WaitForSingleObject
  • SetTimer
  • SetWaitableTimer
  • CreateTimerQueueTimer

进阶技术

  • API Flooding(API泛洪)
  • GetSystemTimeAdjustment
  • 自定义定时算法
  • 从其他进程获取时间
  • 配合网络时间协议(NTP)或第三方API校验

实战示例

bool check_time() {
    auto url = "http://api.pinduoduo.com";
    httplib::Client cli(url);
    
    // 第一次获取时间
    auto res = cli.Get("/api/server/_stm");
    std::string time_str1 = filterDigits(res->body);
    long long api_time1 = std::stoll(time_str1);
    time_t currentTime1 = time(0);
    
    // 休眠300秒
    HANDLE hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
    WaitForSingleObject(hEvent, 300000);
    CloseHandle(hEvent);
    
    // 第二次获取时间
    res = cli.Get("/api/server/_stm");
    std::string time_str2 = filterDigits(res->body);
    long long api_time2 = std::stoll(time_str2);
    
    // 判断时间差是否正常
    if (api_time2 - api_time1 > 290000) return true;
    else exit(0);
}

3. 系统特征检测

硬件特征

  • CPU核心数(dwNumberOfProcessors)
  • 内存大小(GlobalMemoryStatus)
  • 硬盘容量(PhysicalDrive0)
  • 显卡显存
  • CPU温度(建议通过GetSystemFirmwareTable获取SMBIOS信息)

系统环境

  • 用户名检测(注意现代系统多为DESKTOP-XXX随机命名)
  • 工作组/域环境检测
  • 系统语言(GetSystemDefaultLangID,俄罗斯APT常用检测俄语)
  • 系统启动时间(GetTickCount(),对服务器目标可能无效)

文件系统特征(Pocket Litter技术)

  • 桌面文件数量(沙箱通常较少)
  • 常用软件检测(微信、QQ等国民软件缺失)
  • 临时文件数量(沙箱通常较多)
  • Office文档数量(沙箱通常较少)
  • 自身文件名是否被修改
  • 进程运行时间范围检测(APT常用)

网络特征

  • IP地理位置检测
bool check_ip() {
    auto url = "http://ip-api.com";
    httplib::Client cli(url);
    auto res = cli.Get("/csv");
    return res->body.find("China") != std::string::npos;
}

外设检测

  • 扬声器可用性
  • 麦克风响应
  • 前台窗口数量(虚拟机通常较少)
  • 鼠标移动检测(经典三角形算法)
double distance(POINT p1, POINT p2) {
    double dx = p2.x - p1.x;
    double dy = p2.y - p1.y;
    return sqrt(dx * dx + dy * dy);
}

bool check_mouse() {
    POINT p1, p2, p3;
    GetCursorPos(&p1);
    Sleep(3000); GetCursorPos(&p2);
    Sleep(3000); GetCursorPos(&p3);
    
    double d1 = distance(p1, p2);
    double d2 = distance(p2, p3);
    double d3 = distance(p3, p1);
    
    return (d1 + d2 > d3) && (d2 + d3 > d1) && (d1 + d3 > d2);
}

4. 非常规技术

  • 体积膨胀:制作大体积样本(>300MB)绕过上传限制
  • 反向指纹收集:主动收集沙箱特征建立数据库
  • 压缩炸弹:释放大量压缩数据挤占资源

注意事项

  1. 避免使用敏感API如WMI,会触发行为检测
  2. 反调试技术较为敏感,需谨慎使用
  3. 反虚拟化对云服务器可能无效(多数运行在虚拟化环境)
  4. 方法贵精不贵多,选择适合目标环境的检测组合

参考资源

  1. Anti-Sandbox项目
  2. MITRE ATT&CK T1497
  3. Check Point Evasions
  4. al-khaser项目

总结

随着沙箱技术向AI方向发展,反沙箱技术也需要持续进化。关键在于:

  • 理解沙箱工作原理
  • 选择低敏感度的检测方法
  • 根据目标环境定制检测策略
  • 保持技术更新,关注沙箱新特征

通过系统性地应用上述技术,可以有效提高样本在沙箱环境中的存活率,为后续攻击链展开创造有利条件。

反沙箱技术全面解析与实战指南 导论 沙箱技术是现代安全防御体系中的重要组成部分,NIST将其定义为"允许不受信任的应用程序在高度受控环境中运行的系统,其中应用程序的权限被限制为一组基本的计算机权限"。作为攻击方,了解如何绕过沙箱检测是免杀技术的关键环节。 沙箱分类与常见平台 沙箱类型 软件沙箱 :Sandboxie、VMware、Docker等 硬件沙箱 :企业级解决方案如华为FireHunter6000 云沙箱 :在线分析平台 主流云沙箱平台 微步沙箱:https://s.threatbook.com/ VirusTotal:https://www.virustotal.com/ Any.Run:https://any.run/ (可交互式) Joe Sandbox:https://www.joesandbox.com/#windows Hybrid Analysis:https://www.hybrid-analysis.com/ 安恒云沙箱:https://sandbox.dbappsecurity.com.cn/ 奇安信沙箱:https://sandbox.ti.qianxin.com/sandbox/page FreeBuf沙箱:https://sandbox.freebuf.com/ 360云沙箱:https://ata.360.net/ 腾讯哈勃沙箱:https://habo.qq.com/ 反沙箱前提条件 静态免杀基础 确保静态资源无敏感信息 避免加壳处理 若使用shellcode形式加载,需预先加密(避免短密钥对称加密) 执行流程设计 避免前置执行条件干扰 确保程序首先执行反沙箱逻辑 反沙箱技术详解 1. 特定沙箱特征检测 微步沙箱检测示例 : 微步会在C盘生成随机字符串文件夹运行样本,可通过正则匹配检测: 2. 时间判断技术 常规方法 NtDelayExecution WaitForSingleObject SetTimer SetWaitableTimer CreateTimerQueueTimer 进阶技术 API Flooding(API泛洪) GetSystemTimeAdjustment 自定义定时算法 从其他进程获取时间 配合网络时间协议(NTP)或第三方API校验 实战示例 : 3. 系统特征检测 硬件特征 CPU核心数( dwNumberOfProcessors ) 内存大小( GlobalMemoryStatus ) 硬盘容量( PhysicalDrive0 ) 显卡显存 CPU温度(建议通过 GetSystemFirmwareTable 获取SMBIOS信息) 系统环境 用户名检测(注意现代系统多为DESKTOP-XXX随机命名) 工作组/域环境检测 系统语言( GetSystemDefaultLangID ,俄罗斯APT常用检测俄语) 系统启动时间( GetTickCount() ,对服务器目标可能无效) 文件系统特征(Pocket Litter技术) 桌面文件数量(沙箱通常较少) 常用软件检测(微信、QQ等国民软件缺失) 临时文件数量(沙箱通常较多) Office文档数量(沙箱通常较少) 自身文件名是否被修改 进程运行时间范围检测(APT常用) 网络特征 IP地理位置检测 外设检测 扬声器可用性 麦克风响应 前台窗口数量(虚拟机通常较少) 鼠标移动检测(经典三角形算法) 4. 非常规技术 体积膨胀 :制作大体积样本(>300MB)绕过上传限制 反向指纹收集 :主动收集沙箱特征建立数据库 压缩炸弹 :释放大量压缩数据挤占资源 注意事项 避免使用敏感API如WMI,会触发行为检测 反调试技术较为敏感,需谨慎使用 反虚拟化对云服务器可能无效(多数运行在虚拟化环境) 方法贵精不贵多,选择适合目标环境的检测组合 参考资源 Anti-Sandbox项目 MITRE ATT&CK T1497 Check Point Evasions al-khaser项目 总结 随着沙箱技术向AI方向发展,反沙箱技术也需要持续进化。关键在于: 理解沙箱工作原理 选择低敏感度的检测方法 根据目标环境定制检测策略 保持技术更新,关注沙箱新特征 通过系统性地应用上述技术,可以有效提高样本在沙箱环境中的存活率,为后续攻击链展开创造有利条件。