45 lines
3.7 KiB
Markdown
45 lines
3.7 KiB
Markdown
### 恶意软件有哪些方案检测自己处于沙箱中
|
||
|
||
**1. 基于环境特征的检测**
|
||
|
||
沙箱为了快速分析大量样本,通常会使用标准化的、不完整的系统配置。恶意软件可以利用这些不寻常的特征来判断自己是否被分析
|
||
|
||
- **硬件特征**:
|
||
- **CPU 指令**:通过 `cpuid` 指令查询 CPU 供应商字符串。虚拟机通常会返回 `VMwareVMware`, `KVMKVMKVM` 或 `Microsoft Hv` 等特殊字符串,而真实的物理机则会返回 `GenuineIntel` 或 `AuthenticAMD`
|
||
- **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`,其值可能会包含 `VBOX` 或 `VMware` 等字符串
|
||
|
||
**2. 基于行为和用户交互的检测**
|
||
|
||
正常的桌面环境会有频繁的用户活动,而沙箱通常是自动化运行的,缺乏这些活动
|
||
|
||
- **用户活动检测**:
|
||
- **鼠标移动**:检查鼠标自启动以来的移动距离。如果鼠标几乎没有移动,可能表明没有真实用户在操作
|
||
- **窗口数量**:查询桌面上的窗口数量。沙箱通常只运行一个应用程序,所以窗口数量可能很少
|
||
- **键盘输入**:监控键盘输入事件。如果长时间没有按键操作,也可能是沙箱
|
||
- **屏幕分辨率**:沙箱环境通常使用一个固定的、非标准的分辨率
|
||
- **执行时间检测**:
|
||
- **延迟执行**:恶意软件会在运行初期休眠一段较长的时间(例如几分钟或几小时)。沙箱通常只运行几十秒到几分钟,无法捕捉到后续的恶意行为
|
||
- **时间戳**:检查系统启动时间,或使用 `Sleep` 函数,然后比较前后两次获取系统时间的时间差。如果时间差比预期的短得多(因为沙箱可能通过加快时钟来加速分析),就表明处于虚拟化环境
|
||
|
||
**3. 基于进程和文件分析工具的检测**
|
||
|
||
沙箱环境通常会运行一些监控工具,这些工具的进程或文件名可能暴露它的身份
|
||
|
||
- **进程列表**:遍历运行中的进程列表,查找常见的分析工具进程名,例如:
|
||
- `procmon.exe` (Process Monitor)
|
||
- `wireshark.exe` (Wireshark)
|
||
- `Fiddler.exe`
|
||
- `idaq64.exe` (IDA Pro)
|
||
- **文件名**:恶意软件可以检查自身的可执行文件名。一些自动化分析系统会把样本重命名为固定的、可预测的名字,例如 `sample.exe` 或 `malware.exe`
|
||
|
||
**4. 基于硬件和底层代码的检测**
|
||
|
||
这是更高级的反沙箱技术,直接利用虚拟机和物理机底层实现的差异
|
||
|
||
- **指令时序分析**:某些 CPU 指令在虚拟机中执行所需的时间与在物理机上不同。恶意软件可以执行这些特定指令,然后测量其执行时间,通过比较时间差来判断
|
||
- **中断描述符表(IDT)检测**:虚拟机管理程序(Hypervisor)通常会修改 IDT 以拦截某些特权指令。恶意软件可以检查 IDT 的地址或内容,寻找被篡改的迹象
|
||
- **内存布局**:检查内存布局,如某些特殊的地址或结构,它们在虚拟机中可能会有独特的模式 |