Как вызвать синий экран (BSOD) в Windows машине пользователя при входе в систему.
Для рабочих нужд необходимобыло найти решение чтобы можно было по необходимости вызывать BSOD на удаленной машине пользователя и как либо воспрепятствовать вход в систему для пользователей, при этом систма должна оставаться функционально живой.
Подумав с коллегами, решили что проще всего вызывать 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
.
— Remote Scheduled Tasks Management (RPC)
— Remote Scheduled Tasks Management (RPC-EPMAP)
— Windows Management Instrumentation (DCOM-In)
— Windows Management Instrumentation (WMI-In)
— Windows Management Instrumentation (ASync-In)
В противном случае подключение к удаленному Task Schedule завершится неудачей. В доменной среде это легко можно включить при помощи GPO.
Описание
Рабочий каталог утилиты — C:\Program Files\BadDay
. В нем распологается файл bcry.exe
, который вызывает BSOD при исполнении.
При активации режима BadDay создается задание в Task Schedule работающее от имени SYSTEM
и запускает bcry.exe
при входе пользователя в систему или если он заблокировал ПК и при последующей его разблокировки.

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