Доморощенная команда Red: от рабочей станции до контроллера домена с помощью Havoc C2 и Microsoft EDR
Добро пожаловать обратно! В этой записи блога мы еще раз столкнемся с Microsoft Defender For Endpoint EDR, чтобы посмотреть, сможем ли мы перейти от контекста с низкой целостностью к администратору домена и получить удаленное выполнение кода на контроллере домена!
За последние пару месяцев я погружался в различные методы, чтобы посмотреть, что мы можем сделать с помощью инструментов с открытым исходным кодом против одного из самых популярных EDR.
В этом блоге я расскажу о некоторых общих концепциях доступа к контроллеру домена, но с использованием различных методов, которые я нашел.
Это включает:
- Обход UAC с помощью пользовательского двоичного файла UACME
- Боковое перемещение с помощью CrackMapExec и SharpWMI.exe
- Сессия переходит в Ковенант
- DCSync с Соглашением
Хаос C2
Я уже рассказал, как запустить Havoc. Если вы не знакомы с ним, вы можете прочитать мой пост Получение системы в Windows 11 с помощью Havoc C2 .
Подключив C2, я собираюсь сгенерировать шелл-код и запустить его с помощью моего собственного инструмента шелл-кода, Harriet.
Теперь, когда у меня есть двоичный файл FUD, я могу перенести его на первую рабочую станцию в своей среде AD.
Согласно моим предыдущим сообщениям, у нас очень маленькая среда AD. Из соображений экономии времени и места в блоге мы начнем с известного DA в среднем контексте.
Я переношу свой имплантат в Win11-Blue.blueteam.local и возвращаю наш первоначальный маяк.
Давайте проверим EDR и посмотрим, прошло ли первоначальное выполнение.
Все тихо! Хорошо! Мы можем двигаться дальше. Выполнение простой команды «whoami» показывает нам, что Дэнни находится в группе DA.
Запуск SharpUp сообщает нам, что мы можем обойти UAC, чтобы получить права администратора.
Пользовательский двоичный файл UACME
В предыдущем посте я использовал метод ComputerDefaults для получения прав администратора, но в настоящее время он перехватывается Defender For Endpoint. Мы хотим получить DA без предупреждений, поэтому мы собираемся сделать что-то возмутительное: сбросить что-нибудь на диск!
На моей машине разработки Windows 11 я клонирую проект UACME.
клон git https://github.com/hfiref0x/UACME.git
Мы загружаем файл sln, и наш проект загружается.
После компиляции двоичный файл UACME называется Akagi, поэтому мы начнем настраивать файлы, найденные в этом разделе обозревателя решений.
Развернув проект, мы видим несколько разделов для заголовочных файлов, ресурсов и т.д.
Мы можем начать наш процесс с быстрого поиска и замены общих строк, найденных в проекте.
Некоторые другие строки, которые мы можем заменить, приведены ниже:
Акаги
УАКМЕ
ОАК
ПОЛЕЗНАЯ НАГРУЗКА
Если мы попытаемся создать решение сейчас, оно потерпит неудачу.
Он не может найти файл значка, потому что мы не изменили его имя. Поэтому нам нужно изменить его имя в папке Akagi.
Как только мы изменим имя значка, он будет успешно создан.
Теперь, если мы посмотрим на детали построенного двоичного файла, мы увидим, что у него есть некоторые важные свойства.
Делаем быстрый поиск APT 92 в нашем проекте, находим файл Resources.rc с этими описаниями.
Перебирая исходные файлы, мы видим папку с методами.
Каждый из этих файлов методов представляет различные обходы UAC, которые будут использоваться в скомпилированном двоичном файле. Если мы пройдемся по каждому из этих методов, мы увидим различные комментарии с именами методов. Чтобы обойти Defender и другие AV-движки, нам нужно удалить эти комментарии из каждого файла метода.
Удаление всех комментариев из файлов методов может занять много времени, но нам нужно сделать это только один раз, прежде чем двоичный файл не будет обнаружен антивирусом.
И после того, как мы удалили все комментарии из файла и перекомпилировали, мы получили наш бинарник. Запустив его против AntiScan.me, мы видим, что мы обошли несколько антивирусных поставщиков.
Сканируя его с помощью Защитника Windows, мы видим, что он не обнаружен.
Получение администратора
Вернувшись к Havoc, нам просто нужно загрузить двоичный файл в нашу цель.
Давайте проверим EDR Microsoft, чтобы узнать, не поймали ли нас еще.
Не похоже. Давайте продолжим!
С нашим двоичным файлом UACME на цели нам нужно выполнить его с помощью нашего метода. Powershell и команды оболочки могут нас поймать, поэтому давайте воспользуемся WMI. К счастью, SharpWMI позволяет нам выполнять команды в памяти.
Но сначала нам нужен метод для Windows 11.
59 выглядит хорошо. Давайте вызовем наш метод с помощью SharpWMI.
dotnet inline-execute /home/user/Desktop/SharpWMI.exe action=exec имя_компьютера=WIN11-BLUE.blueteam.local command=”C:\Users\danny\Downloads\Acaji.exe 59 C:\Users\danny\Downloads \inj3c13.exe”
И мы вернем наш админ-маяк!
Проверяя наш EDR, у нас нет обнаружений.
Большой! Итак, теперь, когда мы определили, что можем получить выполнение кода без запуска EDR, мы можем использовать тот же метод для перемещения через домен к контроллеру домена.
ПРИМЕЧАНИЕ. Конечно, вы бы не сделали этого в реальном приложении. У нас есть DA, так что мы можем просто DCsync, но мы хотим посмотреть, сможем ли мы двигаться, не изменяя EDR.
Боковое движение
Итак, на WIN11-BLUE у нас была возможность загрузить наш двоичный файл, но как нам это сделать, если у нас нет маяка на DC?
В предыдущем посте я доказал, что мы можем сделать это с помощью Powershell и запланированной задачи. В этой статье мы будем использовать другой метод. Мы собираемся загрузить наш двоичный файл в цель с помощью CrackMapExec, а затем вызвать его с помощью SharpWMI.
Подготовка к нашей атаке
Итак, для этого POC мы собираемся еще раз притвориться, что в округе Колумбия есть совершенно секретный документ, который нам нужно удалить. Первое, что нам нужно сделать, это получить пароль или хэш для нашего пользователя Дэнни.
Поскольку мы являемся администратором, мы можем использовать несколько методов для получения хэшей, но самый простой для меня — передать сеанс в Covenant и использовать их команду DCsync.
Итак, в Covenant мы настраиваем наш файл шеллкода и загружаем его в нашу локальную систему.
Для простоты я изменю имя файла на grunt.bin, а затем прогоню его через Harriet. Это зашифрует его, чтобы мы могли обойти EDR.
Теперь, когда у нас есть двоичный файл, мы можем использовать Donut, чтобы превратить его обратно в шелл-код.
И последняя часть — внедрить его в процесс нашего исполняемого файла Havoc.
Успешно внедрив шелл-код, мы переходим к Covenant, и нас проверяет новый ворчун.
Давайте взглянем на EDR.
Здесь нечего смотреть! Мы можем двигаться дальше!
Вернувшись к Ковенанту, мы можем использовать команду DCsync и получить хэш Дэнни. И через несколько секунд Дэнни и домен стали владельцами.
Ладно, круто. Итак, мы продемонстрировали, что можем получить хэш DA. Но что вы делаете с ним, когда он у вас есть? Помните, что целью наших действий было не получение контроля над доменом, а получение секретного документа на контроллере домена.
Переходим к контроллеру домена
У нас есть исполняемый файл FUD, который нам нужно загрузить в DC. Для этого мы будем использовать CrackMapExec. Итак, вот наша команда.
crackmapexec smb 192.168.1.9 -u danny -H 83c4be1a3fd33a182dafc8bd3bf53d00 -d blueteam.local — пут-файл /home/kali/Desktop/Inj3c13.exe \\WINDOWS\\TEMP\\25N0v3.exe
Мы используем модуль SMB, и у нас есть IP-адрес контроллера домена. Затем мы используем имя пользователя danny и вводим его хэш NTLM. У нас есть домен, а затем мы используем команду «—put-file» с путем к нашему исполняемому файлу FUD, а затем каталогом, в который мы хотим поместить файл на контроллере домена.
Давайте попробуем.
И вот так наш исполняемый файл находится на DC! Теперь нам нужно его вызвать. Мы можем использовать SharpWMI.exe, чтобы сделать это в памяти так же, как мы делали с WIN11-BLUE.
И теперь у нас есть маяк в высокой целостности на DC!
Найдем добычу!
После небольшого перебора находим его в папке Danny's Documents.
Давайте загрузим его.
Прежде чем мы посмотрим, давайте проверим EDR.
На что эта штука вообще годится?
А вот и добыча!
Хорошо! Итак, в заключение этой статьи, давайте немного поговорим о том, что мы сделали и как мы это сделали.
Мы начали с маяка с низкой целостностью и расширили наши привилегии, создав настроенный двоичный файл UACME, который прошел через Защитника Windows и Защитника Windows для конечной точки.
Затем мы вызвали двоичный файл UACME с файлом SharpWMI.exe в памяти для более скрытного подхода к Powershell или командам оболочки.
Как только наши привилегии были максимальными, мы передали сеанс в Covenant, чтобы использовать команду DCsync для получения хэша DA NTLM. Затем мы использовали CrackMapExec для загрузки маяка на контроллер домена и вызвали его с помощью SharpWMI.exe.
Итак, как эта среда была приспособлена для нашего успеха? WMI не включен по умолчанию для контроллеров домена, серверов Windows или рабочих станций Windows 11.
Однако в современной корпоративной среде на большинстве этих машин WMI будет включен, чтобы облегчить системным администраторам поиск и устранение неисправностей. Мы также начали наше путешествие по учетной записи окружного прокурора, но это было просто для того, чтобы сделать материал более удобным для написания статьи.
Также важно понимать, что в наших системах не было установлено никаких других антивирусов. Если вы помните, BitDefender посчитал наш двоичный файл UACME вредоносным. Так что будьте осторожны при использовании его на реальном пентесте.
Если вам понравилась эта запись и вы хотите увидеть, что я еще делаю, подписывайтесь на меня здесь или в Твиттере @assume_breach

![В любом случае, что такое связанный список? [Часть 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































