Как обойти AppLocker при атаке на Active Directory

Обход AppLocker при атаке на Active Directory. Пентест Active Directory

Средство под названием AppLocker снижает риск компрометации рабочих машин. Правила Applockrt применяются к целевому приложению, которое может быть исполняемым файлом, скриптом, файлом установщика и даже DLL. У каждого правила есть условия — это критерии идентификации приложения, к которому это правило применяется.

Другие статьи на тему пентеста Active Directory:

Обход AppLocker

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

Перечисление правил AppLocker

Первым делом грамотный оператор постарается узнать правила AppLocker. В большинстве случаев применяются правила по умолчанию, но также встречаются и пользовательские настройки. Так как правила AppLocker обычно являются объектом групповой политики, то их можно запросить в Active Directory. В PowerShell даже существует модуль AppLocker, c помощью которого можно запросить правила, применяемые в данной системе. Например, следующий скрипт представит правила AppLocker в удобном формате.

Import-Module AppLocker
[xml]$data = Get-AppLockerPolicy -effective -xml

Write-Output "[+] Printing Applocker Rules [+]`n"
($data.AppLockerPolicy.RuleCollection | ? { $_.EnforcementMode -match "Enabled" }) | ForEach-Object -Process {
    Write-Output ($_.FilePathRule | Where-Object {$_.Name -NotLike "(Default Rule)*"}) | ForEach-Object -Process {Write-Output "=== File Path Rule ===`n`n Rule Name : $($_.Name) `n Condition : $($_.Conditions.FilePathCondition.Path)`n Description: $($_.Description) `n Group/SID : $($_.UserOrGroupSid)`n`n"}
    Write-Output ($_.FileHashRule) | ForEach-Object -Process { Write-Output "=== File Hash Rule ===`n`n Rule Name : $($_.Name) `n File Name :  $($_.Conditions.FileHashCondition.FileHash.SourceFileName) `n Hash type : $($_.Conditions.FileHashCondition.FileHash.Type) `n Hash :  $($_.Conditions.FileHashCondition.FileHash.Data) `n Description: $($_.Description) `n Group/SID : $($_.UserOrGroupSid)`n`n"}
    Write-Output ($_.FilePublisherRule | Where-Object {$_.Name -NotLike "(Default Rule)*"}) | ForEach-Object -Process {Write-Output "=== File Publisher Rule ===`n`n Rule Name : $($_.Name) `n PublisherName : $($_.Conditions.FilePublisherCondition.PublisherName) `n ProductName : $($_.Conditions.FilePublisherCondition.ProductName) `n BinaryName : $($_.Conditions.FilePublisherCondition.BinaryName) `n BinaryVersion Min. : $($_.Conditions.FilePublisherCondition.BinaryVersionRange.LowSection) `n BinaryVersion Max. : $($_.Conditions.FilePublisherCondition.BinaryVersionRange.HighSection) `n Description: $($_.Description) `n Group/SID : $($_.UserOrGroupSid)`n`n"}
}

Обход правила хеша файлов

В качестве алгоритма хеширования в этом правиле по умолчанию используется SHA-256. Единственный способ, которым можно получить нелегитимные функции исполняемых приложений в обход данного правила, — это инъекция DLL (конечно, если приложение загружает DLL). К примеру, в Process Explorer была уязвимость, которая позволяла загрузить через DLL вредоносный код.

Таким образом, если существует правило, позволяющее запускать Process Explorer, то можно выполнить код. На иллюстрации ниже была загружена DLL, запускающая calc.exe.

Правило для Process Explorer

Правило для Process Explorer

Запуск calc.exe с помощью Process Explorer

Запуск calc.exe с помощью Process Explorer

Вместо запуска калькулятора можно использовать более существенную нагрузку. Тем не менее главная задача выполнена — получилось обойти AppLocker.

Обход правила пути

Это правило — самое распространенное, его применяют почти везде. Так как условием данного правила является расположение файла в файловой системе компьютера или в сети, то и обойти его довольно легко. На одной из конференций было представлено правило, которое позволяло запуск исполняемого файла из директории C:\Python27.

Правило, разрешающее запуск из директории C:\Python27

Правило, разрешающее запуск из директории C:\Python27

Таким образом, если каталог доступен для записи, есть возможность разместить в нем (а впоследствии и выполнить) любой файл.

Запуск файла из директории C:\Python27 в обход AppLocker

Запуск файла из директории C:\Python27 в обход AppLocker

Обход правила издателя

Цифровая подпись содержит информацию о компании — разработчике приложения, то есть об издателе. Таким образом, это правило идентифицирует приложение на основе его цифровой подписи и расширенных атрибутов. В случае исполняемых файлов, DLL и установщиков Windows эти атрибуты содержат название продукта, частью которого будет файл, предоставленное издателем оригинальное имя файла и номер его версии. В случае упакованных приложений и их установщиков расширенные атрибуты содержат имя и версию приложения.

Указанный тип правил — один из самых безопасных, и обходные пути очень ограничены. AppLocker проверяет, действительна подпись или нет, поэтому оператор не может просто подписать приложение ненадежными сертификатами. Но данное правило можно обойти с помощью того же способа, что и правило хеша, ведь инъекцию DLL с использованием этого правила никак не обнаружить.

Техника LOLBas

Эта техника демонстрирует функции приложений, о которых большинство системных администраторов могут и не знать. Полный список приложений, а также способы эксплуатации различных функций этих программ можно посмотреть тут. К примеру, с помощью Wsreset.txt можно обойти UAC, а с помощью Advpack.dll — выполнять команды ОС.

LOLBas для некоторых приложений

LOLBas для некоторых приложений

Ниже представлен пример выполнения команды ОС с помощью Advpack.dll.

Вызов cmd.exe с помощью Advpack.dll

Вызов cmd.exe с помощью Advpack.dll

Заключение

На этом мы заканчиваем тему защиты от обнаружения. Помни, главное — не достичь цели, а остаться незамеченным! Для тех, кто хочет получить больше информации о проникновении в Active Directory, я создал телеграм-канал @RalfHackerChannel. Здесь ты сможешь задать свои вопросы (или ответить на вопросы других юзеров). До встречи в следующих статьях!

Другие статьи на тему пентеста Active Directory

ВКонтакте
OK
Telegram
WhatsApp
Viber

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *