分析系统内存布局和特征,以识别特定沙箱的内存特征。例如,某些沙箱可能会留下特定的内存足迹或标识符。
检查系统中的硬件设备,如磁盘驱动器、网络适配器和显卡。虚拟机和沙箱通常使用特定的虚拟硬件,这些硬件在物理机器上不太可能存在。
监视系统调用和API调用以检测沙箱特征。例如,某些沙箱可能会模拟系统调用的返回值,以便在执行恶意代码时更好地控制其行为。
许多沙箱环境使用调试器和分析器来监视程序行为。使用反调试技术(例如检测调试器附加、设置硬件断点和异常处理程序)可以帮助检测这些工具的存在。
使沙箱分析更困难,恶意代码可能会在运行之前等待一段时间、检测用户输入或检查网络连接等。这些行为通常在沙箱分析中不会被触发。
通过计算执行特定代码段所需的CPU指令数,可以检测沙箱中可能存在的性能差异。沙箱环境中的指令计数可能与物理机器上的计数有显著差异。
这种技术使用硬件虚拟化功能(如Intel VT-x或AMD-V)来检测沙箱环境。在硬件虚拟化环境中,操作系统和应用程序运行在虚拟机中,因此可以使用CPU的虚拟化指令集来检测沙箱。
沙箱通常会隐藏或修改一些系统信息,以便隐藏其真实环境。因此,通过检查系统信息(如CPU类型、硬件信息、文件系统和网络配置等),可以检测沙箱环境。
沙箱环境通常会限制应用程序的网络访问权限,因此可以通过监视应用程序的网络行为来检测沙箱。例如,可以检查应用程序的DNS查询、网络流量和代理设置等。
一些沙箱环境可能具有特定的系统指纹,例如预安装的软件、特定的系统设置等。恶意软件可以检测这些系统指纹,以判断是否运行在沙箱环境中。
沙箱通常会挂钩延迟执行程序的API,通过检测这些程序状态是否被挂钩来检测沙箱。
恶意软件可能会依赖特定的网络活动或通信,以判断是否处于沙箱环境中。例如,恶意软件可能会尝试连接到某个特定的服务器或检测网络流量中的特定数据包。通过监测网络活动,可以识别出沙箱环境。
x86_64-w64-mingw32-g++ stub.cpp -s -w -lpsapi -Wl,--subsystem,console -static //控制台
x86_64-w64-mingw32-g++ stub.cpp -s -w -lpsapi -Wl,--subsystem,windows -static //应用程序