Как известно, любая атака выполняется в несколько этапов. Мы успешно провели разведку, повысили собственные привилегии, продвинулись, куда только захотели, и в итоге сумели захватить всю сеть. Но вот проблема: нас обнаружили, отрезали от сети и поймали. Чтобы избежать подобного развития событий, настало время рассмотреть методы защиты от обнаружения.
Вся информация предоставлена исключительно в ознакомительных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный материалами этой статьи.
Любые действия в системе так или иначе регистрируются, и полностью скрыться от опытного наблюдателя никогда не получится. Но можно максимально замаскироваться. Большинство команд Red Team или пентестеров при атаке на домен используют PowerShell. Причем он стал настолько популярен, что появились целые фреймворки, к примеру Empire и PowerSploit. Кроме того, скрипты PowerShell могут быть обфусцированы с помощью того же Invoke-Obfuscation. В ответ на появление всех этих инструментов сторона защиты разработала методы их обнаружения, такие как выявление странных родительских-дочерних связей, подозрительные аргументы командной строки и даже различные способы деобфускации PowerShell.
Одно из самых передовых средств для атак на домены Windows с возможностью скрытия активности — Cobalt Strike, в частности использование модуля execute-assembly
. Есть возможность выполнять близкие к PowerShell-скриптам программы, написанные на C#. К примеру, собранный на C# get-users
, который дублирует функции модуля Get-NetUser
из пакета PowerView
. В данном примере у контроллера домена запрашиваются свойства SAMAccountName
, UserGivenName
и UserSurname
для каждой учетной записи.
Давай посмотрим, что происходит в это время на целевой машине. Сделать это можно с помощью ProcMon.
Процесс powershell.exe
содержит нагрузку Cobalt Strike, а процесс rundll32.exe
используется для загрузки и выполнения get-users
. Стоит сказать, что powershell.exe
является родителем rundll32.exe
только потому, что нагрузка Cobalt Strike была запущена из-под PowerShell.
Но нагрузку Cobalt Strike можно запускать из-под любого процесса, при этом также имеется возможность мигрировать в разные процессы. Кроме того, некоторые функции Cobalt Strike выгружаются в новые процессы, что позволяет обеспечить стабильную работу этого ПО. Помимо прочего, библиотеки DLL, загруженные в процесс rundll32
, включают в себя те, которые необходимы для get-users
, например библиотеки LDAP и аутентификацию Kerberos.
Главное преимущество данного модуля заключается в том, что файл никогда не пишется на диск, то есть сборка выполняется строго в памяти. При этом во время анализа памяти большое внимание уделяется функции CreateRemoteThread
, благодаря которой вредоносные программы мигрируют в другие процессы и загружаются образы. Модуль execute-assembly
загружает пользовательскую сборку при помощи встроенной функции LoadImage
, а так как эта функция используется в основном легитимными процессами для загрузки DLL, обнаружить загрузку сборки очень сложно.
Стоит добавить, что PowerShell — не единственный легитимный процесс, использование которого пристально отслеживается стороной защиты. Другие распространенные программы и службы (такие как WMIC или schtasks/at) также подлежат тщательному контролю. Но и функции этих инструментов могут быть воспроизведены в пользовательских сборках .NET. А это значит, что есть возможность их скрытного использования с помощью того же модуля execute-assembly
.
Endpoint Detection and Response (EDR) — технология обнаружения угроз и реагирования на оконечном оборудовании. EDR постоянно отслеживает и анализирует подозрительную активность и принимает необходимые меры в ответ нее. Так как большинство организаций сосредотачиваются на безопасности сети, то они оставляют без внимания активность на оконечном оборудовании. Являясь одним из основных источников информации для SOC, EDR помогает закрыть эту брешь за счет настройки разных политик, включающих в себя контроль запуска приложений, контроль макросов и скриптов, анализ действий с памятью и многое другое.
Все описанные в статье методы могут перекликаться с темой уклонения от EDR, но именно в этом разделе хотелось бы рассмотреть скрытую работу критического ПО (такого как mimikatz) и доставление первоначальной нагрузки.
Как правило, почти все EDR обнаруживают использование одного из главных инструментов любого пентестера, редтимщика или злоумышленника, атакующего Windows-системы, — mimikatz. Поэтому использование данного инструмента в чистом виде, когда имеешь дело с серьезными организациями, не имеет никакого смысла.
Как вариант, можно сдампить процесс LSASS, с которым и работает mimikatz для получения важных данных. Но использование ProcDump EDR также обнаружит из-за перехвата соответствующих вызовов API. Таким образом, если отсоединить процесс LSASS от соответствующих API, то его можно незаметно сдампить. Именно так и работает инструмент под названием Dumpert. Благодаря прямым системным вызовам и отсоединению API данный инструмент позволяет сделать укороченный дамп процесса LSASS в обход антивирусных средств и EDR.
И теперь можно использовать mimikatz для извлечения информации из дампа, предварительно указав файл дампа.
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее
1 год3690 р. |
1 месяц720 р. |
Я уже участник «Xakep.ru»
Читайте также
Последние новости