Всем привет!
Меня зовут Гузель Хисматуллина, я руководитель группы аналитиков в Центре противодействия киберугрозам Innostage CyberART и глобального SOC на кибербитве Standoff.
В мае этого года наша команда судила 11-й Standoff, на котором этичные хакеры продемонстрировали свои навыки и буквально не давали выдохнуть командам защитников и организаторам кибербитвы. На этой битве красные, наконец-то, пробили промышленную инфраструктуру, а также реализовали несколько атак в банковском сегменте. Противостояние выдалось очень насыщенным и интересным.
В этой статье на примере одной из атак на сталелитейный завод «МеталлиКО» я поделюсь некоторыми инструментами команд атакующих и защитников. Статья будет полезна для начинающих специалистов по обе стороны баррикад. Видеоверсию данного разбора можно посмотреть тут (спасибо моим коллегам – Борисову Александру и Малышеву Михаилу – за помощь в подготовке материала).
Что было в мае
Прежде чем приступить к разбору атаки, кратко пройдусь по результатам Standoff 11.
В отличие от ноябрьской кибербитвы 2022 года, о которой я рассказывала здесь, к шести отраслям экономики добавилась еще одна – атомная промышленность с АЭС и заводом по обогащению урана. К слову, она сразу вошла в четверку популярных среди красных команд целей для атак.
Помимо этого, в инфраструктуре появились новые сервисы для клиники пластической хирургии, онлайн-школы английского языка, управления сервером платежей и др. Соответственно появились и новые сценарии атак и недопустимые события (НС).
Стоит отметить количество и качество команд этичных хакеров на майском Standoff, которые смогли реализовать 204 успешные атаки всего за четыре дня.
Наша команда судей просто тонула в отчетах от команд участников. Бывало, что процесс настолько затягивал и не отпускал, что мы проверяли отчеты до трех часов ночи, а утром снова возвращались к ним. Тут хочу сказать большое спасибо нашей команде Innostage CyberART, которая не сдавалась и сохраняла оптимизм на протяжении всей битвы.
Разбор атаки
Отрасль: металлургия
Задание: остановить работу машины непрерывного литья заготовок (МНЛЗ)
Примечание. Напомню, что все средства защиты на полигоне и даже сами защитники работали в режиме обнаружения, без активного блокирования атак.
1. Подготовка ресурсов & Первоначальный доступ (Resource Development & Initial Access)
T1587.001. Develop Capabilities: Malware, T1566.001. Phishing: Spearphishing Attachment
1.1. Действия атакующих
Атакующие направили фишинговое письмо с адреса dsharp@apps.stf на адреса HR-пользователей K_Workman@metall.stf и J_May@metall.stf, полученных с сайта-визитки landing.metall.stf (10.126.13.134). PT Sandbox в письме обнаружил несколько вредоносных вложений в письме, но документ, с которого все началось – Book2.xls:
Поведенческий анализ показал нам, что при открытии вложения порождается процесс powershell.exe с закодированной командой для запуска, а также предоставил вердикты:
Открытие письма с вложенным файлом Book2.xls, содержащим в себе вредоносный макрос, привело к загрузке инструментария Cobalt Strike 2.exe с командного центра атакующих 35.207.107[.]211:80 на доменном хосте HR-пользователя K_Workman: kworkman.metall.stf (10.156.33.137). Это можно увидеть по логам ОС, собираемых в MaxPatrol SIEM:
1.2. Инструменты атакующих
Для того, чтобы сгенерировать полезную нагрузку, команды атакующих использовали готовые инструменты с GitHub, применяли MSFVenom, а кто-то использовал Cobalt Strike для генерации зловредных макросов и дальнейшего использования в инфраструктуре.
Примеры инструментов:
Macro Reverse Shell (https://github.com/glowbase/macro_reverse_shell)
Reverse Shell Generator (https://www.revshells.com)
MSFVenom
Cobalt Strike
1.3. Методы обнаружения
Успешный фишинг на хосте можно обнаружить путем отслеживания запуска процессов (н-р, интерактивных интерпретаторов) от пакета Microsoft Office (winword.exe, excel.exe, powerpnt.exe, visio.exe, mspub.exe, eqnedt32.exe, outlook.exe, fltldr.exe, msaccess.exe).
2. Выполнение (Execution)
T1059.001. Command and Scripting Interpreter: PowerShell, T1204.002. User Execution: Malicious File
2.1. Действия атакующих
Процессом 2.exe, в свою очередь, на хост HR загружаются команды с С2-сервера p3mtl.b0t[.]me (167.99.138[.]88).
Дерево порождаемых процессов после открытия Book2.xls:
SiemMonkey – плагин к браузеру Google Chrome для эффективной работы с MaxPatrol SIEM от коллег из Экспертного центра безопасности Positive Technologies (PT ESC).
Запуск закодированной в Base64 команды через PowerShell, порожденный XLS-документом:
Запрос на создание сокета для установки соединения с C2-сервером (обратное соединение), обнаруженный после декодинга команды:
Факт запуска команды на создание сокета, выявленный правилом Dangerous_Command_Usage:
Загрузка бэкдора с C2-сервера и сохранение его локально под именем 2.exe:
Трансфер этого файла зафиксировал PT Network Attack Discovery (PT NAD), а сам файл благодаря интеграции с PT Sandbox был проанализирован в песочнице методом поведенческого анализа.
Процессом 2.exe, в свою очередь, загружаются дополнительные файлы с C2-сервера, а именно, файл aaa. Ниже на скрине в правой части можно увидеть, как сработал механизм обогащения событий цепочкой процессов в MaxPatrol SIEM, а в левой – загрузку файла через PowerShell:
Сессия, в которой происходит загрузка файла, PT NAD детектирует как шелл CobaltStrike:
Файл содержит PowerShell-команду с вызовом класса MemoryStream, который декодирует переданный в Base64-код и выполнит его непосредственно в памяти ОС:
В ОС видно выполнение обфусцированного PowerShell-кода:
В результате выполнения загружаются дополнительные инструменты, которые сохраняются локально в папку c:\zabbix\:
2.2. Методы обнаружения
На данном этапе можно отслеживать:
обфусцированные PowerShell-коды (Base64, ASCII, BXOR, Escape, Concat, Reverse и др.). Некоторые инструменты, которые используются для генерации полезной нагрузки, имеют обфускацию «под капотом», поэтому варианты обфусцированного кода на Standoff встречались (чаще всего в Base64);
использование потенциально опасных классов (н-р, MemoryStream может являться признаком бесфайловой атаки) или архивированных потоков данных внутри кода PowerShell.
3. Повышение привилегий (Privilege Escalation)
T1134.002. Access Token Manipulation: Create Process with Token
3.1. Действия атакующих
Повышение привилегий до привилегий УЗ system через эксплуатацию уязвимости в ОС Windows, связанной с привилегией SEImpersonatePrivilege («Олицетворение клиента после проверки подлинности»), имеющейся у HR-пользователя K_Workman (c:\users\public\documents\printspoofer.exe – загруженный на хост эксплойт PrintSpoofer): PrintSpoofer.exe -i -c cmd.exe.
Проверка привилегий на хосте с помощью команды whoami:
3.2. Инструменты атакующих
Атакующие часто использовали «картошку» для повышения привилегий. История Potato насчитывает уже несколько лет, и каждый год появляется несколько связанных уязвимостей. PrintSpoofer с Potato связан мало, но любая локальная уязвимость, которая использует его, так или иначе имеет отношение к «картошкам». И не важно, с чем работала использованная Potato, она в любом случае повышала привилегии до системы.
2016 год. Hot Potato
2016 год. RottenPotato
2017 год. LonelyPotato
2017 год. RottenPotatoNG
2018 год. JuicyPotato
2019 год. GhostPotato
2020 год. SweetPotato (все еще работает)
2020 год. PrintSpoofer (все еще работает)
2020 год. RoguePotato (все еще работает)
2021 год. GenericPotato (все еще работает)
2021 год. RemotePotato (! без Impersonate, запатчен 10.2022)
2022 год JuicyPotatoNG (все еще работает)
2022 год. CertPotato (техника, а не эксплойт)
2023 год. LocalPotato (! без Impersonate, запатчен 01.2023)
На Standoff некоторые атакующие подходили к повышению привилегий «академически». Они загружали WinPEAS (инструмент для поиска путей повышения привилегий), собирали и анализировали информацию об уязвимостях и мисконфигурациях на хосте, после чего адресно приносили на него либо Potato, либо эксплойты для найденных CVE (н-р, Win32k Elevation of Privilege Vulnerability – CVE-2020-1054). Другие команды поступали проще для экономии времени: загружали на хост несколько исполняемых файлов эксплойтов и по очереди запускали каждый из них.
Еще один способ повышения привилегий – команды атакующих при помощи adPEAS, PowerUP (PowerSploit) или других инструментов находили каталоги, в которые они могли записывать файлы от лица текущего пользователя и обращали внимание на сервисы, которые работают с этим каталогом. Если сервис работал или вызывался по расписанию, то они могли заменить исполняемый файл и через некоторое время получали сессию с правами того пользователя, от которого сервис был запущен. В данном случае, хакеры подменяли оригинальный исполняемый файл агента Zabbix (c:\zabbix\bin\zabbix_agentd.exe), запущенного с правами локального администратора.
3.3. Методы обнаружения
Повышение привилегий не самый тривиальный процесс, но есть признаки, которые говорят о том, что происходит что-то нелегитимное:
маркеры разведки: после повышения привилегий хакеры попытаются проверить, удалось ли им это. Поэтому исполнение команд разведки (н-р, whoami) от системных учетных записей должно вызывать подозрения;
запуск утилит из списка анализа средств защищенности, в т.ч. косвенные признаки их использования;
запуск неподписанных (без метаинформации) исполняемых файлов, а также открытие от них сетевых соединений или попытки внедрения в легитимный процесс;
создание специфичных для конкретных хакерских утилит именованных каналов (named pipes);
запуск процессов (event ID 4688 или 1, Sysmon) сразу после доступа к специфичным именованным каналам (event ID 5145).
4. Получение учетных данных (Credential Access)
T1134.002. Access Token Manipulation: Create Process with Token
4.1. Действия атакующих
Получение NT-хэша пароля HR-пользователя K_Workman и администратора рабочих станций b_gibbs_admin через дамп памяти процесса LSASS на хосте kworkman.metall.stf (10.156.33.137) утилитой mimikatz (c:\zabbix\bin\mimikatz.exe) и с последующим успешным подбором пароля.
4.2. Инструменты атакующих
После получения сессии обычного пользователя атакующие собирали как можно больше информации о том, какая роль у хоста и какие еще учетные данные и доступы есть на хосте. Одним из шагов может являться попытка дампа памяти процесса LSASS. В первую очередь в качестве инструмента использовался Mimikatz, чаще всего встроенный в Cobalt Strike. Помимо Mimikatz использовались:
nanodamp (https://github.com/fortra/nanodump)
LaZagne (https://github.com/AlessandroZ/LaZagne)
Secretsdump.py (https://github.com/fortra/impacket/blob/master/examples/secretsdump.py)
Cain & Abel (https://www.securitylab.ru/software/232833.php)
ProcDump (https://learn.microsoft.com/en-us/sysinternals/downloads/procdump)
4.3. Методы обнаружения
Техник для выполнения дампа памяти процесса LSASS множество. Примеры событий, которые нужно отслеживать:
Доступ к памяти процесса lsass.exe под специфическими масками доступа: 0x1fffff, 0x1410, 0x1f3fff, 0x1f1fff, 0x10147a, 0x143a, 0x1438, 0x1010, 0x1038) - логируется с помощью Sysmon и расширенного аудита ОС Windows (Event ID 4656, A handle to an object was requested).
Признаки удаленного дампа: доступ к именованным каналам SAMR, WINREG, SVCCTL и к каталогу C:\Windows (ADMIN$) после проверки подлинности пользователя для вывода данных через временные (.tmp) файлы. Н-р, так работает утилита SecretsDump из фреймворка Impacket.
Дамп памяти процесса LSASS с помощью диспетчера задач ОС Windows (taskmgr.exe).
Обнаружение запросов к файлам реестра, которые хранят локальные и закэшированные доменные учетные записи (SAM, SECURITY, SYSTEM), с помощью командной строки либо PowerShell.
5. Перемещение внутри периметра (Lateral Movement)
T1021.001. Remote Services: Remote Desktop Protocol
5.1. Действия атакующих
Подключение к RDG-серверу rdg.metall.stf (10.156.32.144) по протоколу RDP с узла kworkman.metall.stf (10.156.33.137) под УЗ K_Workman и загрузка инструментов с C2-сервера, в т.ч. утилиты для проксирования трафика updaters.exe:
Подключение к АРМ SCADA-инженера M_Barber, mbarber.metall.stf (10.156.34.38), по протоколу RDP с узла rdg.metall.stf (10.156.32.144) под УЗ K_Workman и b_gibbs_admin.
5.2. Инструменты атакующих
На данном этапе использовались встроенные механизмы взаимодействия с Windows-инфраструктурой, т.к. атакующие уже получили учетные записи с необходимыми правами. Примеры механизмов:
RDP
PowerShell через WinRM
WMI
SMB
Для удобства дополняли и своими утилитами:
инструменты из пакета Impacket;
PsExec из пакета Sysinternals;
5.3. Методы обнаружения
Примеры того, что можно отследить при боковом перемещении:
перехват RDP-сеансов с помощью утилиты ОС Windows –
tscon.exe
;косвенные признаки: запуск процессов от
wsmprovhost.exe
(WinRM),winrshost.exe
(WinRS),wmiprvse.exe
(WMI);отслеживание паттернов работы утилит. Например, для старых версий утилиты smbexec (из пакета Impacket):
cmd.exe /Q /c netstat -tulpn 1> \\127.0.0.1\ADMIN$\__1684419606.8165085 2>&1 или %COMSPEC% /Q /c echo net users /domain ^> \\127.0.0.1\C$\CEfJMQ 2
- для новых версий вместо адреса127.0.0.1
будет указано конкретное имя хоста, на котором выполняется команда;сетевая доставка исполняемых файлов. Н-р, создание запланированных заданий при помощи встроенной утилиты Windows ATSvc (Microsoft AT-Scheduler Service).
6. Сбор данных (Collection)
T1005. Data from Local System
6.1. Действия атакующих
Нахождение на mbarber.metall.stf (10.15sc6.34.38) информации о PLC-устройствах в документе Network Switch Replacement act.docx (c:\users\m_barber\downloads\).
6.2. Инструменты атакующих
Атакующие собирали информацию об инфраструктуре автоматически с помощью WinPEAS или PowerShell onleaner, а также руками копались в каталогах, которые на вид могли содержать интересные данные.
6.3. Методы обнаружения
При анализе событий обращать внимание на артефакты запуска инструментов атакующих и исполняемых команд разведки локального окружения. Очень часто злоумышленники не пользуются какими-то особенными инструментами, тем более что детектировать эти инструменты очень трудно, поскольку трафик их легитимный. Тем не менее, пытаться определить эту активность можно, в том числе при помощи инструментов для анализа средств защищенности.
7. Перемещение внутри периметра (Command and Control)
T1021.001. Remote Services: Remote Desktop Protocol
7.1. Действия атакующих
Загрузка утилиты для проксирования трафика lsysnetworkrestricted.exe на mbarber.metall.stf (10.156.34.38) с C2-сервера:
7.2. Инструменты атакующих
Примеры встречаемых утилит в инфраструктуре Standoff:
SharpSocks (https://github.com/nettitude/SharpSocks)
Chisel – его как всегда было очень много (https://github.com/jpillora/chisel)
Ligolo (https://github.com/sysdream/ligolo)
PoshC2 (https://github.com/nettitude/PoshC2)
Sliver C2 (https://github.com/BishopFox/sliver)
Stowaway (https://github.com/ph4ntonn/Stowaway/blob/master/README_EN.md)
CobaltStrike – Proxy Pivots
7.3. Методы обнаружения
детектировать инструменты атакующих C2-класса можно по артефактам, которые они оставляют;
через анализ сетевых запросов на нестандартные порты внешних сервисов (Sysmon, 3);
через поиск характерных для утилит сигнатур в сетевом пакете в решениях класса NTA (Network traffic analysis). Данный способ является самым эффективным с точки зрения обнаружения утилит данной тактики.
8. Деструктивное воздействие (Impact)
T1489. Service Stop
8.1. Действия атакующих
Реализация атаки: отключение промышленного контроллера 10.156.35.135 (PLC S7-314), отвечающего за работу МНЛЗ через модифицированный общедоступный эксплойт (https://github.com/ibaiape/s7_exploits):
Отправку команды PLC Stop на 10.156.35.135 (МНЛЗ) можно наблюдать в PT ISIM:
Заключение
Прошедший Standoff 11 запомнился:
тяжелыми атаками на технологическую и банковскую инфраструктуру. Тут мы, однозначно, все получили большой опыт;
-
командами атакующих с творческим подходом – ваши следы в инфраструктуре поднимали нам настроение. Отдельное спасибо за домены inostage[.]ru, standoff-365[.]ru, а также за «бархатные тяги»;
-
сильными защитниками, которые всего за четыре дня справлялись с атрибуцией 22 команд атакующих, расследованием атак, а также успевали желать нам хорошего дня:
А пока до следующего Standoff в ноябре еще есть время, мы не даем профессиональному сообществу скучать. 20-21 сентября пройдет Всероссийская студенческая кибербитва в рамках форума Kazan Digital Week 2023.
Всероссийская студенческая кибербитва – это открытое соревнование между командами атакующих, состоящими из студентов высших учебных заведений России с опытом участия в CTF-соревнованиях, и командами защитников, состоящими из выпускников Межвузовского студенческого провайдера услуг кибербезопасности (MSSP SOC), который работает на базе четырех вузов Республики Татарстан.
Мы, Innostage, являемся организаторами данной битвы и предоставляем участникам учебный киберполигон, имитирующий объекты коммерческих предприятий и государственных структур. Для дополнительной визуализации происходящего мы совместно c командой Positive Technologies, которая является соорганизатором кибербитвы, впервые развернем в Казани физический макет киберполигона Standoff, который позволит наблюдать за реализацией красными командами сценариев атак, приводящих к таким событиям, как нарушение работы городских светофоров, отключение уличного освещения, показ нежелательного контента на билбордах города и многих других.
Ждем вас на Kazan Digital Week 2023!
Комментарии (5)
Giz-A
11.09.2023 07:27+4@zelya0x0,спасибо за труд и экспертизу. статья большая (редко вижу на Хабре так МНОГАБУКВ), но интересная. очень интересно было узнать, что и как видно судейской команде. прочитав про поведенческий анализ, поняла, что вы в какой-то мере "социологи хакинга" - то есть изучаете мотивы и поведение атакующих в связке со статистикой. и это круто!
BI_Brainiam
11.09.2023 07:27+1В повышенном интересе к технологической и банковской инфраструктуре, конечно, нет ничего удивительного. То что атакующие берут готовые инструменты и решения с GitHub - тоже ожидаемо и отчасти даже хорошо (натопчут там "цифровых следов"). А вот с Potato - не ожидал, что у атакующих такая приверженность к "классике"
Zena10x
11.09.2023 07:27+1Очень порадовали послания типа "Хорошего Вам Дня")))
милое взаимодействие :)
WondeRu
Статья, как антиреклама Windows!
Elon_space
Ну а чё, к Windows реально есть вопросики )