Загрузка данных
@echo off
setlocal enabledelayedexpansion
:: =============================================================================
:: OMEGA SANDBOX - СКРЫТИЕ VMWARE TOOLS С СОХРАНЕНИЕМ РАБОТОСПОСОБНОСТИ (v4.1)
:: Требует АДМИНИСТРАТОРА и ОТКЛЮЧЕННОГО HVCI/VBS
:: =============================================================================
echo [*] Проверка прав администратора...
net session >nul 2>&1
if %errorlevel% neq 0 (
echo [X] Ошибка: запустите BAT-файл от имени Администратора!
pause
exit /b 1
)
set "VMWARE_DIR=C:\Program Files\VMware\VMware Tools"
set "VMWARE_PARENT=C:\Program Files\VMware"
set "DRV_SRC=%TEMP%\vmhider.c"
set "DRV_BIN=%TEMP%\vmhider.sys"
set "DRV_NAME=VmHider"
echo.
echo ╔══════════════════════════════════════════════════════╗
echo ║ УСТАНОВКА СКРЫТИЯ VMWARE TOOLS (СТЕЛС-РЕЖИМ) ║
echo ╠══════════════════════════════════════════════════════╣
echo ║ 1. Скрытие папки и файлов ║
echo ║ 2. Скрытие процессов ║
echo ║ 3. Скрытие служб ║
echo ║ 4. Установка минифильтра ║
echo ╚══════════════════════════════════════════════════════╝
:: =================================================================
:: ШАГ 1: МОДИФИКАЦИЯ ФАЙЛОВОЙ СИСТЕМЫ (ТОЛЬКО SYSTEM ДОСТУП)
:: =================================================================
echo [1/6] Настройка безопасности папки VMware Tools...
takeown /F "%VMWARE_DIR%" /A /R /D Y >NUL 2>&1
icacls "%VMWARE_DIR%" /inheritance:r /grant:r "SYSTEM:(OI)(CI)F" /remove:g "Все" "Пользователи" "Администраторы" "Administrators" "TrustedInstaller" >NUL 2>&1
icacls "%VMWARE_DIR%" /deny "Все:(RX,W,WDAC,DC)" >NUL 2>&1
icacls "%VMWARE_PARENT%" /inheritance:r /grant:r "SYSTEM:(OI)(CI)F" /deny "Все:(RX)" >NUL 2>&1
attrib +S +H +R "%VMWARE_DIR%" /S /D >NUL 2>&1
attrib +S +H +R "%VMWARE_PARENT%" /S /D >NUL 2>&1
:: =================================================================
:: ШАГ 2: СКРЫТИЕ В ПРОВОДНИКЕ И АВТОЗАГРУЗКЕ
:: =================================================================
echo [2/6] Удаление из автозагрузки и настройка Проводника...
reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "VMware Tools" /f 2>NUL
reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "VMware Tools" /f 2>NUL
reg delete "HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run" /v "VMware Tools" /f 2>NUL
del /F /Q "%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\VMware*.lnk" 2>NUL
del /F /Q "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\VMware*.lnk" 2>NUL
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v Hidden /t REG_DWORD /d 2 /f >NUL
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v ShowSuperHidden /t REG_DWORD /d 0 /f >NUL
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL" /v CheckedValue /t REG_DWORD /d 0 /f >NUL
:: =================================================================
:: ШАГ 3: СКРЫТИЕ СЛУЖБ (ЗАПРЕТ ДОСТУПА К КЛЮЧАМ РЕЕСТРА)
:: =================================================================
echo [3/6] Скрытие служб VMware из оснастки services.msc...
for %%S in (VMTools VMwareAliasManager "VMware Physical Disk Helper Service") do (
reg add "HKLM\SYSTEM\CurrentControlSet\Services\%%S" /v Start /t REG_DWORD /d 2 /f >NUL 2>&1
set SVCKEY=HKLM\SYSTEM\CurrentControlSet\Services\%%S
:: Установка владельца SYSTEM и запрет чтения для всех, кроме SYSTEM
:: Используем SetACL (встроенный в Windows, либо PowerShell)
powershell -Command "$path='HKLM:\SYSTEM\CurrentControlSet\Services\%%S'; $acl=Get-Acl $path; $acl.SetOwner([System.Security.Principal.NTAccount]'NT AUTHORITY\SYSTEM'); $rule=New-Object System.Security.AccessControl.RegistryAccessRule('Everyone','FullControl','Deny'); $acl.AddAccessRule($rule); Set-Acl $path $acl" >NUL 2>&1
)
:: Отключение трея VMware
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" /v NoTrayItemsDisplay /t REG_DWORD /d 1 /f >NUL
:: Скрыть определенные значки (через реестр, маска на исполняемый файл)
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\TrayNotify" /v IconStreams /t REG_BINARY /d 00 /f >NUL
:: =================================================================
:: ШАГ 4: СБОРКА И ЗАГРУЗКА ДРАЙВЕРА-СТЕЛС
:: =================================================================
echo [4/6] Формирование исходного кода драйвера...
:: Исходный код в отдельном файле (см. раздел 2)
call :WriteDriverSource
echo [5/6] Компиляция драйвера (необходим WDK/EWDK)...
where cl.exe >NUL 2>&1
if %errorlevel% neq 0 (
echo [!] WDK не найден в PATH. Укажите путь к x64 Native Tools Command Prompt для VS 2022/WDK.
pause
exit /b 1
)
cd /d "%TEMP%"
cl.exe /nologo /Gs- /Gz /O1 /Fo:vmhider.obj /c vmhider.c
link.exe /nologo /DRIVER /RELEASE /MACHINE:X64 /OUT:vmhider.sys vmhider.obj
if not exist vmhider.sys (
echo [X] Ошибка компиляции драйвера. Проверьте наличие WDK.
pause
exit /b 1
)
echo [*] Драйвер скомпилирован: %TEMP%\vmhider.sys
:: Подпись самоподписанным сертификатом (если нет)
powershell -Command "$cert = New-SelfSignedCertificate -Subject 'CN=OmegaStealth' -Type CodeSigning -CertStoreLocation 'Cert:\CurrentUser\My'; Export-Certificate -Cert $cert -FilePath '%TEMP%\omegastealth.cer'; Import-Certificate -FilePath '%TEMP%\omegastealth.cer' -CertStoreLocation 'Cert:\LocalMachine\Root'"
:: Подписать драйвер
signtool sign /v /s CurrentUser /n "OmegaStealth" /t http://time.certum.pl/ "%TEMP%\vmhider.sys"
echo [6/6] Установка драйвера...
sc create %DRV_NAME% binPath= "%TEMP%\vmhider.sys" type= kernel start= auto
sc start %DRV_NAME%
:: Включение тестового режима, если ещё не включён
bcdedit /enum | find "testsigning Yes" >NUL
if %errorlevel% neq 0 (
echo [*] Включение тестового режима загрузки...
bcdedit /set testsigning on
)
echo.
echo ╔══════════════════════════════════════════════════════╗
echo ║ СКРЫТИЕ VMWARE TOOLS ЗАВЕРШЕНО. ПЕРЕЗАГРУЗИТЕ ПК. ║
echo ║ После перезагрузки: ║
echo ║ - Папка VMware недоступна и невидима ║
echo ║ - Процессы скрыты ║
echo ║ - Службы скрыты, но работают ║
echo ║ - Система полностью функциональна ║
echo ╚══════════════════════════════════════════════════════╝
pause
exit /b 0
:WriteDriverSource
(
echo // OMEGA Sandbox - Драйвер скрытия VMware Tools (Minifilter + ObCallbacks^)
echo #include ^<ntifs.h^>
echo #include ^<fltKernel.h^>
echo #define VMWARE_DIR L"\\Program Files\\VMware"
echo #define PROCESS_NAMES { L"vmtoolsd.exe", L"VMwareTray.exe", L"vmusrvc.exe", NULL }
echo.
echo NTSTATUS MiniFilterInstanceSetupCallback(
echo _In_ PCFLT_RELATED_OBJECTS FltObjects,
echo _In_ FLT_INSTANCE_SETUP_FLAGS Flags,
echo _In_ DEVICE_TYPE VolumeDeviceType,
echo _In_ FLT_FILESYSTEM_TYPE VolumeFilesystemType
echo ^) { return STATUS_SUCCESS; }
echo.
echo FLT_PREOP_CALLBACK_STATUS MiniFilterPreCreateCallback(
echo _Inout_ PFLT_CALLBACK_DATA Data,
echo _In_ PCFLT_RELATED_OBJECTS FltObjects,
echo _Flt_CompletionContext_Outptr_ PVOID *CompletionContext
echo ^) {
echo PFLT_FILE_NAME_INFORMATION fileNameInfo;
echo NTSTATUS status = FltGetFileNameInformation(Data, FLT_FILE_NAME_NORMALIZED, ^&fileNameInfo^);
echo if (NT_SUCCESS(status^)^) {
echo if (wcsstr(fileNameInfo-^>Name.Buffer, VMWARE_DIR^) != NULL^) {
echo FltReleaseFileNameInformation(fileNameInfo^);
echo return FLT_PREOP_COMPLETE; // Прячем, возвращаем STATUS_OBJECT_NAME_NOT_FOUND
echo }
echo FltReleaseFileNameInformation(fileNameInfo^);
echo }
echo return FLT_PREOP_SUCCESS_NO_CALLBACK;
echo }
echo.
echo OB_PREOP_CALLBACK_STATUS PreOpenProcessCallback(
echo _In_ PVOID RegistrationContext,
echo _In_ POB_PRE_OPERATION_INFORMATION OperationInformation
echo ^) {
echo if (OperationInformation-^>KernelHandle^) return OB_PREOP_SUCCESS; // Не трогаем системные
echo PEPROCESS process = (PEPROCESS^)OperationInformation-^>Object;
echo PUNICODE_STRING imageName = NULL;
echo NTSTATUS st = SeLocateProcessImageName(process, ^&imageName^);
echo if (NT_SUCCESS(st^) && imageName != NULL^) {
echo if (wcsstr(imageName-^>Buffer, L"vmtoolsd") != NULL ^|^|
echo wcsstr(imageName-^>Buffer, L"VMwareTray"^) != NULL ^|^|
echo wcsstr(imageName-^>Buffer, L"vmusrvc"^) != NULL^) {
echo DbgPrint("Omega: denying open to process %%wZ\n", imageName^);
echo ExFreePool(imageName^);
echo OperationInformation-^>Parameters-^>CreateHandleInformation.DesiredAccess = 0;
echo return OB_PREOP_CALLBACK_STATUS_DENY;
echo }
echo ExFreePool(imageName^);
echo }
echo return OB_PREOP_SUCCESS;
echo }
echo.
echo DRIVER_INITIALIZE DriverEntry;
echo NTSTATUS DriverEntry(
echo _In_ PDRIVER_OBJECT DriverObject,
echo _In_ PUNICODE_STRING RegistryPath
echo ^) {
echo NTSTATUS status;
echo // Регистрация минифильтра
echo PFLT_FILTER filter;
echo const FLT_OPERATION_REGISTRATION callbacks[] = {
echo { IRP_MJ_CREATE, 0, MiniFilterPreCreateCallback, NULL },
echo { IRP_MJ_OPERATION_END }
echo };
echo const FLT_REGISTRATION reg = {
echo sizeof(FLT_REGISTRATION^),
echo FLT_REGISTRATION_VERSION,
echo 0, NULL, callbacks,
echo NULL, NULL,
echo NULL, NULL,
echo NULL, NULL,
echo MiniFilterInstanceSetupCallback,
echo NULL, NULL, NULL
echo };
echo status = FltRegisterFilter(DriverObject, ^®, ^&filter^);
echo if (!NT_SUCCESS(status^)^) return status;
echo FltStartFiltering(filter^);
echo // Регистрация ObCallback для процессов
echo OB_CALLBACK_REGISTRATION obReg;
echo OB_OPERATION_REGISTRATION opReg[2];
echo memset(^&opReg, 0, sizeof(opReg^)^);
echo opReg[0].ObjectType = PsProcessType;
echo opReg[0].Operations = OB_OPERATION_HANDLE_CREATE;
echo opReg[0].PreOperation = PreOpenProcessCallback;
echo opReg[0].PostOperation = NULL;
echo RtlZeroMemory(^&obReg, sizeof(obReg^)^);
echo obReg.Version = OB_FLT_REGISTRATION_VERSION;
echo obReg.OperationRegistrationCount = 1;
echo obReg.Altitude = RTL_CONSTANT_STRING(L"1000"^);
echo obReg.Operations = opReg;
echo ObRegisterCallbacks(^&obReg, NULL^);
echo return STATUS_SUCCESS;
echo }
) > "%DRV_SRC%"
goto :eof