Важная новость в мире информационной безопасности появилась на прошлой неделе от компании Microsoft о том, что китайская группировка HAFNIUM атакует американские компании и организации с использованием 0-day уязвимости в Microsoft Exchange Server. Новость стала настолько резонансной, что ее транслировали даже федеральные каналы, а ведущие ИБ-компании незамедлительно публиковали подробности атак, которые они наблюдали (Volexity, Fireeye, Cisco Talos Intelligence Group).
Вопрос, который всю предыдущую неделю задавал себе, наверное, каждый специалист по ИБ в России: а как же мы? Нас тоже атаковали с использованием 0-day уязвимости? Спойлер – да. Технические подробности под катом.
В целом сценарий работы группировки HAFNIUM при атаках на российские компании схож с тем, что наблюдалось при атаках на американские организации. При этом мы немного дополним свои наблюдения интересными техническими деталями.
На момент получения образов жестких дисков часть логов и журналов безопасности, к сожалению, ротировалась, а восстановить их нам не удалось. Поэтому, например, следов эксплуатации CVE-2021-26857 в журнале безопасности Application, мы не обнаружили. Зато
CVE-2021-27065 и CVE-2021-26855 видно достаточно ярко.
Cледы CVE-2021-27065 в C:\Program Files\Microsoft\Exchange Server\V15\Logging\ECP\Server
Cледы CVE-2021-26855 в C:\Program Files\Microsoft\Exchange Server\V15\Logging\HttpProxy
В результате эксплуатации злоумышленники загружали на сервер два Web Shell-а: один для загрузки на сервер произвольных файлов, второй для запуска команд через cmd.exe /c:
Web Shell для загрузки произвольных файлов
Web Shell для запуска команд через cmd.exe /c
Имена Web Shell-ов были различные, но расположение и User-agent во всех случаях были схожими:
Web Shells
owa\auth\current\themes\resources\Expiredtoken.aspx
owa\auth\current\themes\resources\owafont_ki.aspx
owa\auth\current\themes\resources\owafont.aspx
owa\auth\expire.aspx
owa\auth\owafont_ki.aspx
owa\auth\Expiredtoken.aspx
owa\auth\one.aspx
owa\auth\RedirSuites.aspx
User-Agents
python-requests/2.25.1
Mozilla/5.0+(Windows+NT+6.1;+Win64;+x64;+rv:86.0)+Gecko/20100101+Firefox/86.0
Работу злоумышленника через Web Shell всегда хорошо видно в логах IIS, кроме того,
в данном случае там еще и частично видна активность по эксплуатации уязвимостей:
Следы обращений в логах IIS
После загрузки на сервер Web Shell-ов, злоумышленники собирали различную информацию о хосте, учетных записях, выгружали архивы электронной почты, интересовавших их людей (именно так, точечно) и забирали всю эту информацию, предварительно архивируя. Cтоит отметить, что с точки зрения стандартного хостового мониторинга сделано это было достаточно шумно, хотя после этого злоумышленники удаляли за собой эксфильтруемые файлы и дополнительные инструменты:
cmd.exe /c wmic process list full|findstr /i commandline
c:\windows\system32\cmd.exe /c schtasks /create /tn ddd /tr "cmd /c reg save HKLM\SAM
c:\windows\cluster\samBkup.hiv && reg save HKLM\SYSTEM c:\windows\cluster\systemBkup.hiv" /sc onstart /ru system /F
c:\windows\system32\cmd.exe" /c c:\programdata\as.log a -pqweasd123#@!MB
c:\programdata\hiv.png c:\windows\cluster\*.hiv
cmd.exe /c reg query
HKEY_LOCAL_MACHINE\system\currentcontrolset\control\securityproviders\wdigest && hostname
cmd.exe /c reg add
HKEY_LOCAL_MACHINE\system\currentcontrolset\control\securityproviders\wdigest /v uselogoncredential /t reg_dword /d 1 /f
rundll32.exe C:\Windows\System32\comsvcs.dll, MiniDump 848 c:\programdata\dm.bin full
cmd.exe /c powershell -execu bypass -f c:\programdata\n.ps1
cmd.exe /c powershell -exec bypass -w 1 -file c:\programdata\exinfo.ps1
Скрипт n.ps1 был использован для выгрузки электронной почты и сбора статистики через скрипт excshell.psc1 (стандартный механизм).
Скрипт n.ps1
Результат работы данного скрипта хорошо виден при настроенном аудите логов Exchange
Логи Exchange после выгрузки электронной почты скриптом n.ps1
Скрипт exinfo.ps1 необходим для сбора достаточно большой информации о хосте (часть кода заимствована из проекта Nishang) и запуска кастомной сборки Mimikatz
Основная функция exeinfo.ps1
Перечислять каждую функцию по сбору информации нет смысла, поэтому мы покажем только первую и вторую, а дальше остановимся на своеобразной сборке Mimikatz, используемой злоумышленниками при данных атаках.
Функции t1 и t2 (сбор информации) из exeinfo.ps1
Mimikatz запускается через запуск исполняемого файла, содержащего в себе две динамические библиотеки, и загрузку одной из них в память процесса lsass.exe через вызов функции NdrClientCall3
Функция t6 (запуск mimikatz) из exeinfo.ps1
C:\windows\Cluster\ accace.exe (SHA256: 0D648339C975CF04F6C8DC99CD09EA508F16C553A47847B522341CE5857424A2).
Данный файл содержит в себе две библиотеки:
- twindump.dll (находится в ресурсах accace.exe в открытом виде)
- lsadll.dll (закодирована в base64 и зашифрована с помощью AES CBC)
Запускается следующим образом: cmd.exe" /c r <ключ> <вектор инициализации> .
Ключ и вектор инициализации необходимы, чтобы расшифровать lsadll.dll. Если ввести их неправильно, файл не отработает. Параметр path задает путь, по которому создается библиотека twindump.dll. По умолчанию – C:\ProgramData\twindump.dll.
accace.exe.exe использует библиотеку CryptoPP
lsadll.dll (SHA256: EE91A2ADF1581CEEAEB690125A60A3CCD94B98ECE545679D1E95E609AB9666F9)
Библиотека имеет одну экспортную функцию «DO», задача которой, используя API AddSecurityPackage (через RPC), заставить процесс lsass.exe загрузить библиотеку twindump.dll.
При этом данную технику можно детектировать путем отслеживания загрузки неподписанных библиотек в процесс lsass.exe.
Вызов AddSecurityPackage
twindump.dll (SHA256: 94512C434290405BEFD159FC3C4ED01F18722F966D53DAC45760DD36C4D9B918)
Содержит в себе зашифрованную библиотеку mimikatz.dll.
DllEntryPoint twindump.dll
Экспортируемая функция «Do» библиотеки mimikatz.dll
Вместо заключения
Как мы показали, китайская группировка HAFNIUM действовала схожим образом при атаках как на американские, так и на российские организации, и, если честно, это немного удивляет. Ведь обычно APT-группировки, имея в запасе эксплойт для 0-day уязвимости, стараются его использовать редко, в исключительных случаях. Но, как мы видим, в этих историях кратковременный результат оказался важнее.
Хочется напомнить, что, сетевые индикаторы в данном случае малоэффективны, ведь это даже не CnC, которые живут некоторые время, а обычные хостинги, VPS-серверы и proxy-цепочки, цель которых единожды запустить код на вашем непропатченном Exchange-сервере. А если вы хотите провести ретроспективную проверку, то куда более эффективно будет проверить ваши Exchange-логи на наличие определённых признаков (все это описано в статье Microsoft).
Напоследок мы в очередной раз призываем всех обновляться. И если вдруг по каким-то причинам вы не можете это сделать, то скорее настраивайте аудит и организуйте мониторинг событий информационной безопасности – ведь даже несмотря на то, что это были 0-day уязвимости, активность злоумышленника возможно было своевременно обнаружить с помощью описанных ниже правил детекта.