sha1:
- f4ec358ae772d954b661dc9c7f5e4940a2c733e2
Описание
Trojan.ChimeraWire.2 — это троянская программа, написанная на языке программирования Go и работающая на компьютерах под управлением ОС Microsoft Windows. Она использует функциональность проектов с открытым исходным кодом zlsgo и Rod для автоматизированного управления веб-сайтами и веб–приложениями. Вредоносная программа способна создавать скриншоты и собирать данные с веб-страниц, отображаемых на стороне клиента, автоматически заполнять формы и выполнять клики на веб-страницах. Основной задачей данного варианта Trojan.ChimeraWire.2 является имитация посещения сайтов пользователями, а также накрутка поисковой выдачи и статистики поиска интернет-ресурсов.
Принцип действия
Trojan.ChimeraWire.2 по ссылке hxxps[:]//registry.npmmirror[.]com/-/binary/chromium-browser-snapshots загружает на зараженный компьютер архив chrome-win.zip с браузером Chrome. Далее, он пытается установить в браузер расширения NopeCHA и Buster, предназначенные для автоматизированного распознавания капчи (CAPTCHA). Для этого используется команда вида –headless –load-extension.
Для выполнения вредоносной функциональности Trojan.ChimeraWire.2 запускает браузер Chrome через командный интерпретатор cmd.exe с параметром –headless (режим без окна) со следующими аргументами: remote-debugging-port, --use-mock-keychain, --user-data-dir. После этого происходит подключение к автоматически выбранному порту отладки по протоколу WebSocket.
Возможные аргументы при запуске браузера последовательно перечислены в методе github_com_go_rod_rod_lib_launcher_New, который вызывается из github_com_zlsgo_browser__ptr_Browser_init:
- headless — запуск браузера без графического интерфейса (без окна);
- no-startup-window — не открывать окно при старте, даже если нет аргумента headless;
- disable-background-networking — отключает фоновые сетевые запросы (обновления, загрузки компонентов);
- disable-backgrounding-occluded-windows — не переводить скрытые окна в фоновый режим;
- disable-breakpad — отключает механизм отправки отчетов о сбоях;
- disable-client-side-phishing-detection — отключает встроенную защиту от фишинга;
- disable-component-extensions-with-background-pages — не загружать системные расширения с фоновой страницей;
- disable-default-apps — отключает установленные по умолчанию приложения Chrome;
- disable-hang-monitor — отключает механизм контроля зависаний браузера;
- disable-ipc-flooding-protection — отключает защиту от flood-атак между процессами Chrome;
- disable-popup-blocking — отключает блокировку всплывающих окон;
- disable-prompt-on-repost — не показывать предупреждение при повторной отправке формы;
- disable-renderer-backgrounding — не переводить вкладки в фоновый режим для экономии ресурсов;
- disable-site-isolation-trials — отключает эксперименты с изоляцией сайтов;
- enable-automation — включает режим автоматизации;
- metrics-recording-only — собирать метрики, но не отправлять их;
- use-mock-keychain — использовать имитацию keychain (для macOS);
- user-data-dir — указывает каталог с профилем пользователя;
- remote-debugging-port — включает удаленную отладку через указанный порт;
- site-per-process — включает строгую изоляцию процессов по сайту (Site Isolation);
- disable-features — отключает перечисленные функции браузера;
- enable-features — включает перечисленные функции браузера;
- no-sandbox — отключает песочницу (sandbox) для процессов Chrome.
Получение конфигурации
В методе main_init_2 происходит декодирование base64-строки aHR0cHM6Ly9naXQudGVtcC14eS5jb20, из которой троян получает адрес C2-сервера git[.]temp-xy[.]com.
После этого в функции app_internal_module_rpa_init_func4_2_2 Trojan.ChimeraWire.2 через протокол HTTPS отправляет POST-запрос на этот сервер для получения зашифрованных данных. В запросе используется следующий User-Agent:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Geck0) Chrome/99.0.0.0 Safari/537.1
В ответ C2-сервер возвращает base64-строку. В декодированной строке находится конфигурация в формате JSON, которая зашифрована алгоритмом AES-GCM.
Для ее расшифровки используется ключ JRBicvy1Tx/3gpSxWByIxyWBSModOR0V. Одноразовый код Nonce занимает первые 12 байт данных, тэг аутентификации tag – последние 16 байт данных.
Код дешифровки конфигурации:
import base64
from Crypto.Cipher import AES
with open("response.bin", "r") as f:
decoded_bytes = base64.b64decode(f.read())
key = 'JRBicvy1Tx/3gpSxWByIxyWBSModOR0V'
cipher = AES.new(key.encode('utf-8'), AES.MODE_GCM, nonce=decoded_bytes[:12])
try:
decrypted = cipher.decrypt_and_verify(decoded_bytes[12:-16], decoded_bytes[-16:])
with open("decrypted_response.bin", "wb") as f:
f.write(decrypted)
except Exception as e:
print(str(e))
После дешифровки конфигурация имеет следующий вид:
[{"动作":"等待","说明":"等待 5000-20000 秒","等待时间":"1-5"},{"动作":"google","关键字":["plus size swimwear","plus size dresses","plus size bathing suits","plus size swimsuits"],"最多翻页次数":10,"每页随机点击":["1:90","2:10"],"链接等待时间":["380","500"],"匹配链接":["*bloomchic[.]com/*"]},{"动作":"google","关键字":["Semi Auto Hot Foil Stamping Machine","hot stamping machine","automatic silk screen press","best silk screen machine"],"最多翻页次数":10,"每页随机点击":["1:60","2:40"],"链接等待时间":["360","510"],"匹配链接":["*[.]cn-superfine[.]com/*"]},{"动作":"google","关键字":["plus size summer dresses","plus size swim","plus size women's clothing","plus size clothes","plus size swimwear for women"],"最多翻页次数":10,"每页随机点击":["1:60","2:40"],"链接等待时间":["390","530"],"匹配链接":["*bloomchic[.]com/*"]},{"动作":"google","关键字":["silk screen printing machine automatic","cosmetics printing machines","hot foil stamping equipment"],"最多翻页次数":10,"每页随机点击":["2:70","3:30"],"链接等待时间":["330","500"],"匹配链接":["*www[.]cn-superfine[.]com/*"]},{"动作":"google","关键字":["low cost business ideas","low risk business ideas","low cost business opportunities","low risk businesses","low cost business to start","low-cost business ideas with high","business low cost"],"最多翻页次数":10,"每页随机点击":["0:90","1:10"],"链接等待时间":["320","600"],"匹配链接":["*businessideashunter[.]com/*"]},{"动作":"等待","说明":"随机待 10000 - 60000 秒","等待时间":"480,1400"}]
Конфигурация с учетом перевода на английский язык:
[{"action":"wait","illustrate":"wait 5000-20000 Second","Waiting time":"1-5"},{"action":"google","Keywords":["plus size swimwear","plus size dresses","plus size bathing suits","plus size swimsuits"],"Maximum number of page turns":10,"Random clicks per page":["1:90","2:10"],"Link wait time":["380","500"],"Matching Links":["*bloomchic[.]com/*"]},{"action":"google","Keywords":["Semi Auto Hot Foil Stamping Machine","hot stamping machine","automatic silk screen press","best silk screen machine"],"Maximum number of page turns":10,"Random clicks per page":["1:60","2:40"],"Link wait time":["360","510"],"Matching Links":["*[.]cn-superfine[.]com/*"]},{"action":"google","Keywords":["plus size summer dresses","plus size swim","plus size women's clothing","plus size clothes","plus size swimwear for women"],"Maximum number of page turns":10,"Random clicks per page":["1:60","2:40"],"Link wait time":["390","530"],"Matching Links":["*bloomchic[.]com/*"]},{"action":"google","Keywords":["silk screen printing machine automatic","cosmetics printing machines","hot foil stamping equipment"],"Maximum number of page turns":10,"Random clicks per page":["2:70","3:30"],"Link wait time":["330","500"],"Matching Links":["*www[.]cn-superfine[.]com/*"]},{"action":"google","Keywords":["low cost business ideas","low risk business ideas","low cost business opportunities","low risk businesses","low cost business to start","low-cost business ideas with high","business low cost"],"Maximum number of page turns":10,"Random clicks per page":["0:90","1:10"],"Link wait time":["320","600"],"Matching Links":["*businessideashunter[.]com/*"]},{"action":"wait","illustrate":"Random Wait 10000 - 60000 Second","Waiting time":"480,1400"}]
Получаемая конфигурация содержит задания и связанные с ними параметры:
- целевая поисковая система (поддерживаются системы Google и Bing);
- ключевые фразы для поиска сайтов в заданной поисковой системе и их последующего открытия;
- максимальное количество последовательных переходов по веб-страницам;
- случайные распределения для выполнения автоматических кликов на веб-страницах;
- время ожидания загрузки страниц;
- целевые домены.
Для дополнительной имитации деятельности реального человека и обхода систем, отслеживающих постоянную активность, в конфигурации также предусмотрены параметры, отвечающие за паузы между сессиями работы.
Функциональность кликера
Trojan.ChimeraWire.2 способен выполнять клики следующих видов:
- для навигации по поисковой выдаче;
- для открытия найденных релевантных ссылок в новых фоновых вкладках.
В соответствии с условиями из принятого JSON вредоносная программа через нужную поисковую систему выполняет поиск сайтов по ключевым фразам и указанным доменам. Для работы с системой Google используются методы app_internal_module_rpa_InlayGoogle и app_internal_module_rpa_SearchGoogleAction. Для работы с системой Bing используются методы app_internal_module_rpa_InlayBing и app_internal_module_rpa_SearchWebAction.
Управление найденными ссылками выполняется в функции app_internal_module_rpa__ptr_SearchWebType_runMatchLinks.
Для распознавания CAPTCHA от поисковой системы Google используется функция app_internal_module_rpa_handleGoogleCaptcha.
Троян переходит по целевым ссылкам из поисковой выдачи и выполняет клики на загружаемых веб-сайтах.
Пример открытия страницы с использованием функциональности из проектов zlsgo и Rod
При открытии страницы последовательно вызываются несколько функций:
- github_com_zlsgo_browser__ptr_Page_WaitOpen — ожидание полного открытия страницы;
- github_com_go_rod_rod__ptr_Page_Activate — активация вкладки браузера;
- github_com_zlsgo_browser__ptr_Page_WaitLoad — ожидание загрузки с таймаутом в 2 секунды.
Кроме того, вызываются функции:
- github_com_zlsgo_browser__ptr_Element_Element — поиск HTML-элемента гиперссылки по тегу <a>;
- github_com_zlsgo_browser__ptr_Element_Property — получение значения из href.
Поиск HTML-элемента гиперссылки по тегу <a> и получение значения из href
Trojan.ChimeraWire.2 помещает все найденные элементы в массив данных и перемешивает его, чтобы объекты в нем располагались в последовательности, отличной от последовательности на веб-странице.
Затем у каждого элемента из селектора <a href> извлекается значение href для определения структуры URL. Далее Trojan.ChimeraWire.2 проверяет, что полученные ссылки начинаются с допустимых схем вида http и https. Если ссылка не проходит проверку, метод возвращает ошибку.
После этого троян проверяет, совпадают ли полученные ссылки с целевыми адресами веб-сайтов из конфигурации, а также подсчитывает число совпадений. В зависимости от этого числа, троян в дальнейшем использует различные алгоритмы работы.
Если на странице имеются совпадения со словарем в достаточном количестве, используется контекстно-детерминированный алгоритм. Trojan.ChimeraWire.2 сканирует загруженную страницу и сортирует найденные на ней ссылки по релевантности (первыми идут URL, наиболее соответствующие ключевым словам). После этого выполняется клик по одной или нескольким подходящим ссылкам.
Если на странице недостаточно совпадений или их нет совсем, используется алгоритм с вероятностной моделью поведения, который максимально имитирует действия настоящего пользователя. Trojan.ChimeraWire.2 определяет количество ссылок, по которым необходимо перейти, используя параметры из конфигурации и взвешенное случайное распределение (метод WeightedRand). Например, распределение ["1:90", "2:10"] означает, что троян кликнет 1 ссылку с вероятностью 90%, и 2 ссылки — с вероятностью 20%. В результате с большой долей вероятности он перейдет по одной ссылке. Троян случайным образом (через метод RandPickN) выбирает ссылку из составленного ранее массива и выполняет клик.
После каждого перехода по ссылке из поисковой выдачи и выполнения кликов на загружаемой странице Trojan.ChimeraWire.2, в зависимости от задачи, возвращается на предыдущую вкладку или переходит к следующей. Алгоритм действий повторяется до тех пор, пока не будет исчерпан лимит по кликам для целевых веб-сайтов.
Функциональность, ответственная за управление кликами
Примеры вызовов основных функций, предназначенных для выполнения кликов:
- github_com_go_rod_rod__ptr_Element_Click — основная функция для имитации нажатий;
- github_com_go_rod_rod__ptr_Element_Hover — функция наведения курсора на целевой элемент;
- github_com_go_rod_rod__ptr_Element_WaitEnabled — ожидание, пока элемент станет активным и доступным для клика;
- github_com_go_rod_rod__ptr_Mouse_Click — выполнение клика мышью по координатам элемента.