首页 > 其他分享 >【攻防技术系列+沙箱】反虚拟机+基于时间的沙箱逃逸

【攻防技术系列+沙箱】反虚拟机+基于时间的沙箱逃逸

时间:2024-12-09 12:20:56浏览次数:4  
标签:攻防 虚拟机 virtual NtDelayExecution machine sleep time 沙箱

沙箱仿真时间很少超过3-5分钟,恶意软件可以sleep一段时间再运行恶意功能,但是现在沙箱有sleep-skipping技术很快执行完sleep,类似加速器,一次可以检测时间差来判断

#include <windows.h>
#include <stdio.h>

// Definitions for NtDelayExecution
typedef NTSTATUS (WINAPI *fnNtDelayExecution)(
  BOOLEAN Alertable,
  PLARGE_INTEGER DelayInterval
);

// Function to check if the system is a virtual machine
BOOL checkVM() {
  // Get the system uptime before sleeping
  ULONG64 uptimeBeforeSleep = GetTickCount64();

  // Dynamically obtain the address of NtDelayExecution
  HMODULE ntdll = GetModuleHandle("ntdll.dll");
  fnNtDelayExecution myNtDelayExecution = (fnNtDelayExecution)GetProcAddress(ntdll, "NtDelayExecution");

  // Check if the function is successfully obtained
  if (!myNtDelayExecution) {
    printf("Failed to obtain NtDelayExecution function address.\n");
    return FALSE;
  }

  // Set the sleep time (in 100-nanosecond intervals) - adjust as needed
  LARGE_INTEGER sleepInterval;
  sleepInterval.QuadPart = -10000000; // 1 second

  // Call NtDelayExecution to sleep
  myNtDelayExecution(FALSE, &sleepInterval);

  // Get the system uptime after sleeping
  ULONG64 uptimeAfterSleep = GetTickCount64();

  // Calculate the actual sleep time in milliseconds
  ULONG64 actualSleepTime = uptimeAfterSleep - uptimeBeforeSleep;

  // Print the actual sleep time
  printf("Actual sleep time: %llu milliseconds\n", actualSleepTime);

  // Check if the actual sleep time is close to the expected sleep time
  // This is just a basic example, you might want to adjust the threshold based on your specific use case
  if (actualSleepTime < 1000 && actualSleepTime > 800) {
    printf("Likely not a virtual machine.\n");
  } else {
    printf("Possibly a virtual machine.\n");
  }

  return TRUE;
}

int main() {
  if (checkVM()) {
    // Handle virtual machine detected case
    MessageBox(NULL, "Meow!", "=^..^=", MB_OK);
  } else {
    // Handle non-virtual machine case
    MessageBox(NULL, "Squeak!", "=^..^=", MB_OK);
  }
  return 0;
}

编译

x86_64-w64-mingw32-g++ -O2 hack.c -o hack.exe -I/usr/share/mingw-w64/include/ -s -ffunction-sections -fdata-sections -Wno-write-strings -fno-exceptions -fmerge-all-constants -static-libstdc++ -static-libgcc -fpermissive

计算时间差值,判断是不是在沙箱中

标签:攻防,虚拟机,virtual,NtDelayExecution,machine,sleep,time,沙箱
From: https://www.cnblogs.com/o-O-oO/p/18594617

相关文章

  • #渗透测试#红队攻防 火狐浏览器插件大全并支持一键导入
    目录标题一、前言二、效果1.Hackbar2.FoxyProxy3.FindSomething4.Wappalyzer-Technologyprofiler5.X-Forwarded-ForHeader6.User-AgentSwitcherandManage7.superSearchPlus8.Ctool程序开发常用工具9.fly63工具箱10.Cookie-Editor11.HTTPHeaderLive1......
  • 探索 .vmp.exe:虚拟机保护与逆向工程的挑战
    探索.vmp.exe:虚拟机保护与逆向工程的挑战在数字世界中,软件保护是开发者们面临的重要课题之一。为了防止软件被逆向工程、破解或盗版,开发者们采用了各种技术手段。其中,虚拟机保护(VMProtect)是一种非常强大的保护工具,它通过将原始代码转换为虚拟机代码(VMcode)来实现保护。本......
  • 虚拟机(VM)中毒排查涉及一系列步骤,目的是定位并清除虚拟机内可能存在的恶意软件或病毒。
    虚拟机(VM)中毒排查涉及一系列步骤,目的是定位并清除虚拟机内可能存在的恶意软件或病毒。虚拟机的安全性不仅需要保证虚拟机内部的操作系统和应用程序的安全,还需要考虑宿主机的安全,以及虚拟化平台的整体防护。以下是虚拟机中毒排查的常见步骤:1. 确认中毒的症状性能下降:虚拟机运行......
  • 20222408 2024-2025-1 《网络与系统攻防技术》实验八实验报告
    1.实验内容1.1实验基本内容概述(1)编写含有表单的前端代码,启用Apache,可以访问对应网页。(2)在前端代码中添加javascript代码,进行验证和登录回显的操作,并对其进行注入攻击。(3)启动MySQL,并对其进行基础操作。(4)修改前端代码,编写PHP代码,使网页可以通过请求PHP文件,连接数据库,进行用户认......
  • 城市攻防战(C++#)
    #include<bits/stdc++.h>#include<windows.h>#include<stdio.h>#include<conio.h>#include<time.h>usingnamespacestd;typedefBOOL(WINAPI*PROCSETCONSOLEFONT)(HANDLE,DWORD);PROCSETCONSOLEFONTSetConsoleFont;POINTWindowpo......
  • 在虚拟机中部署Windows server系统
    本文章讲述的是虚拟化平台部署Windowsserver(参照虚拟化平台为Fusioncomputer)系统版本Windowsserver2019首先找到首页中的创建虚拟机进入创建新虚拟机下一步点击名称可以设置自己想要的名称可以是中文也可以是英文描述可以为了方便以后自己认识到这个虚拟机的用途(虽......
  • 20222311 2024-2025-1 《网络与系统攻防技术》实验八实验报告
    1.学习内容Web前端:负责开发用户所看到的内容。前端语言:HTML、JavaScript(JS):与Java没有关系,与JSP两回事,CSS。Web前端框架:Vue.js(中国人尤雨溪)、Bootstrap(Twitter)、Layui(极简单)、Element-UI(基于Vue.js2.0,饿了么)、Angular(Google)……Web后端:主要使用各种库,API,Web服务等技术搭建后端......
  • 20222302 2024-2025-1 《网络与系统攻防技术》实验八实验报告
    1.实验内容(1)Web前端HTML能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。(2)Web前端javascipt理解JavaScript的基本功能,理解DOM。在(1)的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“欢迎+输入的用户名”尝......
  • 20222406 2024-2025-2 《网络与系统攻防技术》实验八实验报告
    202224062024-2025-2《网络与系统攻防技术》实验八实验报告1.实验内容本次实验涵盖Web前端HTML(安装启停Apache、理解运用HTML表单及GET/POST方法)、Web前端JavaScript(理解功能与DOM,编写验证规则及进行注入攻击)、Web后端MySQL基础(安装启动、建库建表等操作)、Web后端编写PHP网页......
  • 20222327 2021-2022-2 《网络与系统攻防技术》实验八实验报告
    一、实验内容1.复习了Web前端语言:HTML、JavaScript(JS)、CSS,对JS、Java、Jsp进行了辨析;后端语言:C、Java、PHP、Python、C#2.对于数据库:增删改查,、create/select/delete/update/insert………………3.SQLServe、MySql、Oracle。4.针对Web的攻击主要有以下三种:SQL注入XSS跨站脚本......