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.