当前位置: 首页 > news >正文

反沙箱 反虚拟机的一些笔记

1.判断是否有虚拟机的文件


#include <Windows.h>
#include "shlwapi.h"
#pragma comment(lib, "shlwapi.lib")int main(int argc, CHAR* argv[])
{if (PathIsDirectoryA("C:\\Program Files\\VMware")){	MessageBox(NULL, TEXT("YES"), TEXT(""), MB_OK);}else{MessageBox(NULL, TEXT("NO"), TEXT(""), MB_OK);}return 0;
}

2.通常虚拟机中有一个进程叫做 因此判断是否存在该进程


#include <Windows.h>
#include "shlwapi.h"
#include <tlhelp32.h>
#pragma comment(lib, "shlwapi.lib")int main(int argc, CHAR* argv[])
{DWORD hlistmodules;HANDLE hsnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);if (hsnapshot == INVALID_HANDLE_VALUE) {return false;}//该结构体用于存储一个进程信息PROCESSENTRY32 pe32;pe32.dwSize = sizeof(pe32);if (Process32First(hsnapshot, &pe32)){do{if (StrCmpW(pe32.szExeFile, L"vmtoolsd.exe") == 0){MessageBox(NULL, TEXT("YES"), TEXT(""), MB_OK);}} while (Process32Next(hsnapshot, &pe32));}CloseHandle(hsnapshot);return 0;
}

3.判断该进程的父进程是否是explore,因为当我们点击的时候父进程应该是explore.exe,如果不是的可能就是沙箱在运行(报毒!)

当在vs上运行的时候是不一样的


#include <Windows.h>
#include "shlwapi.h"
#include <tlhelp32.h>
#include <stdio.h>
#pragma comment(lib, "shlwapi.lib")int main(int argc, CHAR* argv[])
{DWORD hlistmodules;HANDLE hsnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);if (hsnapshot == INVALID_HANDLE_VALUE) {return false;}DWORD currentProcessId = GetCurrentProcessId();PROCESSENTRY32 pe32;pe32.dwSize = sizeof(pe32);int parentId = 0;int explorerId = 1;if (Process32First(hsnapshot, &pe32)){do{//获取到当前遍历的进程的ID判断是否与当前exe进程是否相同,如果是的话则代表找到了。if (pe32.th32ProcessID == currentProcessId){//获取父进程的IDparentId = pe32.th32ParentProcessID;printf("parentId:%d ", parentId);}//获取explorer的IDif (StrCmpW(pe32.szExeFile, L"explorer.exe") == 0){explorerId = pe32.th32ProcessID;printf("explorerId:%d ", explorerId);}} while (Process32Next(hsnapshot, &pe32));}CloseHandle(hsnapshot);if (explorerId == parentId){//执行shellcodeMessageBox(NULL, TEXT("the same id"), TEXT(""), MB_OK);}else {exit;}return 0;
}

直接点击的话

4.沙箱中的进程数量不会太多与物理机不同 通过这种方式 来判断是不是沙箱

 HANDLE snapShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);if(INVALID_HANDLE_VALUE==snapShot){return; }PROCESSENTRY32 pe = { sizeof(pe) };int num=0;
for(BOOL ret=Process32First(snapShot,&pe);ret;ret=Process32Next(snapShot,&pe))
{num++;
}
if(num<=50)
{exit(1);
} 

5.60秒之后运行

waitforsignleobject

sleep_for

ntdelayexcution

void delay(int seconds) {for (int i = 0; i < seconds; i++) {for (int j = 0; j < 100000000; j++) {// 空循环,增加延时时间}}
}

内存大于多少G运行

6.判断是否有一些物理接口/USB接口判断是否为虚拟机

7.判断沙箱的内存大小20G..

8.判断内存是否大于4g

9.判断当前exe是否名字被修改

10.申请500M的内存填充垃圾字符,绕过扫描,延长扫描的时间

11.钓鱼环境下用户模拟的角度:鼠标是否移动、是否有微信、钉钉

12.识别分析机、判断是否有ida.exe x64dbg.exe olldbg.exe

13.创建互斥体,确保一定时间只有一个进程在访问互斥资源

14.上木马之前,判断当前用户名,在loader中再判断是否与这个用户名相同不同则代表在另外一台主机上(getusername==whoami)

15.在白加黑的时候,沙箱运行dll的进程是rundll32.exe,就不是目标的白程序

16.判断操作系统语言是不是中文(不是中文则是国外的),国外一律是沙箱、或者判断时区


http://www.mrgr.cn/news/71180.html

相关文章:

  • Windows虚拟机开启失败
  • хорошо哈拉少wordpress俄语主题
  • 一段新闻(CRYPTO)
  • 多个页面一张SQL表,前端放入type类型
  • 系统看门狗配置--以ubuntu为例
  • Vue.js组件开发-实现图片裁剪
  • 【Linux实践2】实验三:死锁的避免
  • 系统架构师-考点梳理
  • uniapp vuex的使用
  • Transformer(三):论文 Attention Is All You Need
  • 【2024最新】渗透测试工具大全(超详细),收藏这一篇就够了!
  • 【comfyui教程】comfyui攻略:故障报错应对指南!
  • 神经网络算法
  • 基于51单片机俄罗斯方块游戏—可暂停
  • 安卓全屏实现
  • 【锁】聊一聊ReentrantLock 和 Synchronized 的区别
  • 丹摩征文活动|CogVideoX-2b:从安装到上线,轻松搞定全过程!
  • QML —— 圆形波浪进度条控件(附上源码)
  • docker save 和 docker load介绍
  • 常用的8款电脑加密软件分享|电脑办公文件加密软件推荐!
  • 【软考】系统架构设计师-计算机系统基础(1):计算机硬件
  • Linux的进程,线程;FreeRTOS的任务
  • 错误:No bean named ‘cxf‘ is defined
  • 酷炫的鼠标移入效果(附源码!!)
  • 【Spring】Spring框架中有有哪些常见的设计模式
  • 磁集成技术给磁性材料带来哪些新要求?