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