恶意软件有哪些方案检测自己处于沙箱中

1. 基于环境特征的检测

沙箱为了快速分析大量样本,通常会使用标准化的、不完整的系统配置。恶意软件可以利用这些不寻常的特征来判断自己是否被分析

  • 硬件特征
    • CPU 指令:通过 cpuid 指令查询 CPU 供应商字符串。虚拟机通常会返回 VMwareVMware, KVMKVMKVMMicrosoft Hv 等特殊字符串,而真实的物理机则会返回 GenuineIntelAuthenticAMD
    • MAC 地址:检查网卡(MAC)地址。某些虚拟化厂商的 MAC 地址范围是公开的,例如 VMware 的 MAC 地址通常以 00-50-56 开头
    • 内存大小:沙箱为了节省资源,通常会分配较少的内存(例如 1GB 或 2GB)。恶意软件可以查询系统内存大小,如果远低于正常桌面系统的配置,就可能怀疑自己处于沙箱中
  • 文件系统和注册表
    • 特定文件:检查是否存在某些虚拟化工具或分析工具的特定文件,例如 C:\windows\System32\Drivers\VBoxGuest.sys (VirtualBox) 或 C:\Program Files\VMware\VMware Tools\vmtoolsd.exe (VMware Tools)
    • 注册表项:查询与虚拟化相关的注册表键值,例如 HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\Scsi Port 0\Scsi Bus 0\Target Id 0\Logical Unit Id 0\Identifier,其值可能会包含 VBOXVMware 等字符串

2. 基于行为和用户交互的检测

正常的桌面环境会有频繁的用户活动,而沙箱通常是自动化运行的,缺乏这些活动

  • 用户活动检测
    • 鼠标移动:检查鼠标自启动以来的移动距离。如果鼠标几乎没有移动,可能表明没有真实用户在操作
    • 窗口数量:查询桌面上的窗口数量。沙箱通常只运行一个应用程序,所以窗口数量可能很少
    • 键盘输入:监控键盘输入事件。如果长时间没有按键操作,也可能是沙箱
    • 屏幕分辨率:沙箱环境通常使用一个固定的、非标准的分辨率
  • 执行时间检测
    • 延迟执行:恶意软件会在运行初期休眠一段较长的时间(例如几分钟或几小时)。沙箱通常只运行几十秒到几分钟,无法捕捉到后续的恶意行为
    • 时间戳:检查系统启动时间,或使用 Sleep 函数,然后比较前后两次获取系统时间的时间差。如果时间差比预期的短得多(因为沙箱可能通过加快时钟来加速分析),就表明处于虚拟化环境

3. 基于进程和文件分析工具的检测

沙箱环境通常会运行一些监控工具,这些工具的进程或文件名可能暴露它的身份

  • 进程列表:遍历运行中的进程列表,查找常见的分析工具进程名,例如:
    • procmon.exe (Process Monitor)
    • wireshark.exe (Wireshark)
    • Fiddler.exe
    • idaq64.exe (IDA Pro)
  • 文件名:恶意软件可以检查自身的可执行文件名。一些自动化分析系统会把样本重命名为固定的、可预测的名字,例如 sample.exemalware.exe

4. 基于硬件和底层代码的检测

这是更高级的反沙箱技术,直接利用虚拟机和物理机底层实现的差异

  • 指令时序分析:某些 CPU 指令在虚拟机中执行所需的时间与在物理机上不同。恶意软件可以执行这些特定指令,然后测量其执行时间,通过比较时间差来判断
  • 中断描述符表(IDT)检测:虚拟机管理程序(Hypervisor)通常会修改 IDT 以拦截某些特权指令。恶意软件可以检查 IDT 的地址或内容,寻找被篡改的迹象
  • 内存布局:检查内存布局,如某些特殊的地址或结构,它们在虚拟机中可能会有独特的模式
Copyright © 版权信息 all right reserved,powered by Gitbook该文件修订时间: 2025-09-25 03:13:05

results matching ""

    No results matching ""