Initial Access
April 25

Windows Out Of Box Experience – так ли он безопасен?

Введение

Out Of Box Experience (OOBE) представляет собой мастер установки, относящийся к Windows и другим операционным системам, который запускается после того, как пользователь устанавливает ОС или сбрасывает ряд параметров пользовательского интерфейса. OOBE позволяет пользователю компьютера настраивать свою учетную запись, выбирать раскладку клавиатуры и другую важную информацию, необходимую ОС.

OOBE может быть использован в любое время после установки ОС если у пользователя вдруг возникает потребность сброса настроек Windows, близких к дефолтным, но без необходимости переустановки ОС.

В данной статье мы расскажем о возможности злоупотребления сценарием установки Windows, позволяющим выполнять вредоносную полезную нагрузку при вызове ошибки. Данный подход может быть использован в т.ч. и для более скрытного закрепления в ОС Windows.

Все необходимые файлы OOBE располагаются в одноименном каталоге:

C:\WINDOWS\system32\oobe

Среди них есть исполняемый файл Setup.exe.

Также для нас представляет интерес файл ErrorHandler.cmd. Это пользовательский скрипт, который выполняется во время или после процесса установки Windows.

Если программа установки Windows обнаруживает неустранимую ошибку и ей не удается завершить установку, программа установки Windows ищет командный скрипт в следующем каталоге:

%WINDIR%\Setup\Scripts\ErrorHandler.cmd 

Соответственно, если вы поместите свою полезную нагрузку в файл

C:\WINDOWS\Setup\Scripts\ErrorHandler.cmd

, то

C:\WINDOWS\system32\oobe\Setup.exe 

будет загружать ее при возникновении ошибки.

Реализация

Давайте рассмотрим практический пример. Создадим с помощью msfvenom полезную нагрузку:

И поместим в каталог C:\tests\ тестовой машины.
Также создадим файл ErrorHandler.cmd следующего содержания:

@echo off
"C:\tests\51203.exe"

Затем переместим наш ErrorHandler.cmd в каталог C:\Windows\Setup\Scripts\:

Вам потребуется создать каталог Windows\Setup\Scripts, для чего будут нужны административные права.

Далее остается запустить Setup.exe с ошибкой. Самый простой способ — выполнить Setup.exe без всяких аргументов.

В открывшемся окне выбираем «Да»:

И получаем на атакующей машине бэк-коннект:

Если мы откроем Process Hacker и посмотрим свойства нашей полезной нагрузки 51203.exe, то увидим, что ее родительским процессом является cmd.exe (PID 6828).

В рамках тестовой демонстрации было взято имя файла "51203". В реальных условиях, для еще более глубокой маскировки, можно указать имя файла связанное с системными процессами.

В свою очередь, родителем cmd.exe является Setup.exe (PID 6868):

Важно отметить, что Setup.exe и ErrorHandler.cmd являются «законной» частью операционной системы Windows, а значит продемонстрированная возможность может быть использована для более скрытной эксплуатации вашей полезной нагрузки.

Так что же с закреплением, о котором говорилось в начале статьи?

Можно, например, написать скрипт, который с определенной периодичностью запускает C:\WINDOWS\system32\oobe\Setup.exe без аргументов (что провоцирует запуск ErrorHandler.cmd и активирует нашу полезную нагрузку) и добавить его в автозагрузку.

Для большей убедительности можно добавить социальной инженерии и немного изменить код в ErrorHandler.cmd, чтобы он выдавал сообщение вроде «Идет проверка корректности пользовательских настроек… Вы можете продолжить работу» или что угодно, в зависимости от вашей фантазии.

Ведь ключевым моментом является то, что ваша полезная нагрузка будет запущена от легитимного процесса Setup.exe.

Заключение

В данной статье мы продемонстрировали возможность злоупотребления сценарием установки Windows, позволяющим скрыто выполнять вредоносную полезную нагрузку при вызове ошибки OOBE.