November 4, 2026
Лабораторная работа по Threat Intelligence: расследование кампании Tusk Infostealer
Область исследования

By Maram Raboudi
7 min read
Блокчейн-компания обнаружила подозрительную активность после того, как сотрудник был перенаправлен на поддельный веб-сайт во время использования платформы DAO (Decentralized Autonomous Organization). Вскоре после этого несколько криптовалютных кошельков компании оказались опустошены. Команда безопасности подозревает, что злоумышленники использовали вредоносное программное обеспечение для кражи учетных данных и получения доступа к кошелькам.
Indicators of Compromise (IOC)
Domains: tidyme[.]io, tidyme[.]app, tidymeapp[.]io, runeonlineworld[.]io, voico[.]io
StealC C2: 46.8.238.240, 23.94.225.177
Other C2 / hosting: 79.133.180.213 (pivot IP), 77.91.77.200 (madHcCtrl files), 89.169.52.59, 81.19.137.7, 194.116.217.148, 85.28.47.139
Staging: testload.pythonanywhere[.]com/getbytes/*, Dropbox updateload.rar
Host artifacts: %APPDATA%\AD_Security, scheduled task FJ_load, %TEMP%\archive-*, POSTs to /api.php
Wallets: см. таблицу выше.
Выводы для обнаружения угроз и защиты
- Выявляйте Electron-приложения, запускаемые из доступных для записи пользователем каталогов, которые затем запускают файлы .exe из %TEMP%.
- Настройте оповещения при запуске explorer.exe процессов msiexec.exe или rundll32.exe, а также при установлении исходящих соединений процессом OpenWith.exe.
- Проверьте наличие задачи FJ_load и каталога AD_Security.
- Рассматривайте ссылки Dropbox на файлы .rar, размещённые на недавно зарегистрированных доменах, имитирующих легитимные ресурсы, как подозрительные.
- Проверяйте адреса криптовалютных кошельков на втором устройстве перед отправкой средств.
- Используйте аппаратный кошелёк с подтверждением адреса непосредственно на устройстве. Это предотвращает подмену адресов через буфер обмена.
- Мониторинг доменов и оповещения о нарушении защиты бренда помогают обнаруживать поддельные ресурсы на ранних этапах.
MITRE ATT&CK MAPPING: TUSK CAMPAIGN
RESOURCE DEVELOPMENT
T1583.001 Acquire Infrastructure: Domains
→ Домены, имитирующие легитимные названия (tidyme.io, voico.io, runeonlineworld.io).
T1583.006 Acquire Infrastructure: Web Services
→ Dropbox и PythonAnywhere использовались для хостинга.
T1608.001 Stage Capabilities: Upload Malware
→ Вредоносные загрузчики размещались на Dropbox.
INITIAL ACCESS / EXECUTION
T1566 Phishing
→ Фишинговые сайты копировали peerme.io, Rise Online World и YOUS.
T1204.002 User Execution: Malicious File
→ Жертва запускает поддельный установщик.
T1059.007 Command and Scripting Interpreter: JavaScript
→ Логика загрузчика на основе Electron.
DEFENSE EVASION
T1036.005 Masquerading: Match Legitimate Name
→ Использование скопированного брендинга легитимных проектов.
T1497.002 Sandbox Evasion: User Activity Checks
→ CAPTCHA блокирует автоматизированные sandbox-среды.
T1027 Obfuscated Files or Information
→ Base64-кодированная конфигурация и защищённый паролем RAR-архив.
T1027.001 Binary Padding
→ К полезной нагрузке добавлено 750,000,000 байт.
T1055 Process Injection
→ cmd.exe, explorer.exe, OpenWith.exe.
T1574.002 DLL Side-Loading
→ madHcCtrl.exe загружает вредоносный madHcNet32.dll.
T1218.007 System Binary Proxy Execution: Msiexec
T1218.011 System Binary Proxy Execution: Rundll32
→ Загруженные MSI- и DLL-файлы запускаются через подписанные системные бинарные файлы.
T1070.004 File Deletion
→ Loader удаляет себя после выполнения инъекции.
PERSISTENCE
T1053.005 Scheduled Task
→ Задача "FJ_load" запускает madHcCtrl.exe при входе пользователя в систему.
DISCOVERY
T1082 System Information Discovery
T1033 System Owner/User Discovery
T1057 Process Discovery
T1518 Software Discovery
T1016 System Network Configuration Discovery
→ StealC собирает HWID, информацию об ОС, пользователе, приложениях, процессах, IP-адресе и стране.
CREDENTIAL ACCESS
T1555.003 Credentials from Web Browsers
→ Модуль StealC "browsers".
COLLECTION
T1005 Data from Local System
→ Данные приложений криптовалютных кошельков.
T1113 Screen Capture
→ Снимок экрана рабочего стола жертвы.
T1115 Clipboard Data
→ Clipper, написанный на Go, отслеживает скопированные адреса кошельков.
COMMAND AND CONTROL
T1071.001 Application Layer Protocol: Web Protocols
→ HTTP/HTTPS C2 (например, POST-запросы к /api.php).
T1105 Ingress Tool Transfer
→ Payloads второго этапа загружаются с Dropbox и PythonAnywhere.
EXFILTRATION
T1041 Exfiltration Over C2 Channel
→ Украденные данные отправляются на серверы StealC C2.
IMPACT
T1565.002 Data Manipulation: Transmitted Data Manipulation
→ Clipper подменяет адрес кошелька получателя.
T1657 Financial Theft
→ Криптовалютные средства переводятся на кошельки, контролируемые злоумышленниками.RESOURCE DEVELOPMENT
T1583.001 Acquire Infrastructure: Domains
→ Домены, имитирующие легитимные названия (tidyme.io, voico.io, runeonlineworld.io).
T1583.006 Acquire Infrastructure: Web Services
→ Dropbox и PythonAnywhere использовались для хостинга.
T1608.001 Stage Capabilities: Upload Malware
→ Вредоносные загрузчики размещались на Dropbox.
INITIAL ACCESS / EXECUTION
T1566 Phishing
→ Фишинговые сайты копировали peerme.io, Rise Online World и YOUS.
T1204.002 User Execution: Malicious File
→ Жертва запускает поддельный установщик.
T1059.007 Command and Scripting Interpreter: JavaScript
→ Логика загрузчика на основе Electron.
DEFENSE EVASION
T1036.005 Masquerading: Match Legitimate Name
→ Использование скопированного брендинга легитимных проектов.
T1497.002 Sandbox Evasion: User Activity Checks
→ CAPTCHA блокирует автоматизированные sandbox-среды.
T1027 Obfuscated Files or Information
→ Base64-кодированная конфигурация и защищённый паролем RAR-архив.
T1027.001 Binary Padding
→ К полезной нагрузке добавлено 750,000,000 байт.
T1055 Process Injection
→ cmd.exe, explorer.exe, OpenWith.exe.
T1574.002 DLL Side-Loading
→ madHcCtrl.exe загружает вредоносный madHcNet32.dll.
T1218.007 System Binary Proxy Execution: Msiexec
T1218.011 System Binary Proxy Execution: Rundll32
→ Загруженные MSI- и DLL-файлы запускаются через подписанные системные бинарные файлы.
T1070.004 File Deletion
→ Loader удаляет себя после выполнения инъекции.
PERSISTENCE
T1053.005 Scheduled Task
→ Задача "FJ_load" запускает madHcCtrl.exe при входе пользователя в систему.
DISCOVERY
T1082 System Information Discovery
T1033 System Owner/User Discovery
T1057 Process Discovery
T1518 Software Discovery
T1016 System Network Configuration Discovery
→ StealC собирает HWID, информацию об ОС, пользователе, приложениях, процессах, IP-адресе и стране.
CREDENTIAL ACCESS
T1555.003 Credentials from Web Browsers
→ Модуль StealC "browsers".
COLLECTION
T1005 Data from Local System
→ Данные приложений криптовалютных кошельков.
T1113 Screen Capture
→ Снимок экрана рабочего стола жертвы.
T1115 Clipboard Data
→ Clipper, написанный на Go, отслеживает скопированные адреса кошельков.
COMMAND AND CONTROL
T1071.001 Application Layer Protocol: Web Protocols
→ HTTP/HTTPS C2 (например, POST-запросы к /api.php).
T1105 Ingress Tool Transfer
→ Payloads второго этапа загружаются с Dropbox и PythonAnywhere.
EXFILTRATION
T1041 Exfiltration Over C2 Channel
→ Украденные данные отправляются на серверы StealC C2.
IMPACT
T1565.002 Data Manipulation: Transmitted Data Manipulation
→ Clipper подменяет адрес кошелька получателя.
T1657 Financial Theft
→ Криптовалютные средства переводятся на кошельки, контролируемые злоумышленниками.Мне был предоставлен только один Indicator of Compromise:
Моей целью было превратить этот единственный hash в полную картину кампании: инфраструктуру, инструменты, TTPs и финансовый след злоумышленников.
Step 1: Triage the hash
Как обычно, я начала с платформ Threat Intelligence. Моя любимая платформа VirusTotal. Hash помечен как вредоносный и идентифицирован как DLL.
Q1: Каков размер вредоносного файла в KB?
A1: 921.36
Step 2: Understanding the campaign
Затем я проверила Kaspersky OpenTIP, однако поиск по этому MD5 не дал никаких результатов.
Однако на этом я не остановилась и решила выполнить поиск непосредственно по хешу, что привело меня к отчёту Kaspersky GERT под названием Tusk: unraveling a complex infostealer campaign, опубликованному на Securelist.
После ознакомления с отчётом общая картина стала понятнее. Tusk, это не единичная атака, а целая серия взаимосвязанных кампаний. Согласно исследованию Kaspersky, кампания включает несколько подкампаний, организованных русскоязычными киберпреступниками, движимыми финансовой мотивацией. Исследователи обнаружили 3 активные и 16 неактивных подкампаний. Каждая из них копирует легитимный проект, незначительно изменяет его название и брендинг, а также использует поддельные аккаунты в социальных сетях, чтобы выглядеть достоверно.
Название кампании происходит из собственных логов злоумышленников. Они называют жертв словом "Mammoth" русскоязычным сленговым обозначением жертвы киберпреступления. Кроме того, в прошлом на мамонтов охотились ради их бивней (tusks). В логах загрузчика, написанных на русском языке, встречаются строки вроде "Mammoth opened the launcher…".
Q2: Какое слово злоумышленники используют в логах для обозначения своих жертв, основываясь на названии древнего животного, на которого охотились?
A2: Mammoth
Этот же отчёт помог ответить на следующий вопрос. Первая подкампания копирует peerme.io платформу для создания и управления DAO на блокчейне MultiversX. Это соответствует нашему сценарию: сотрудник DAO был перенаправлен на поддельную копию платформы.
Кнопка "Download" на фальшивом сайте отправляет User-Agent посетителя на сервер, который затем выбирает соответствующую версию для macOS или Windows. Кроме того, сайт предлагает жертвам напрямую подключить свои криптовалютные кошельки.
Q3: Злоумышленник создал вредоносный веб-сайт, имитирующий платформу для создания и управления децентрализованными автономными организациями (DAO) на блокчейне MultiversX (peerme.io). Как называется вредоносный сайт, созданный для имитации этой платформы?
A3: tidyme.io
Step 3: Dissecting the delivery chain
Все активные подкампании размещали свой загрузчик первого этапа на Dropbox. Злоупотребление известным сервисом снижает эффективность веб-фильтрации и уменьшает подозрения пользователей. Другой сервер, testload.pythonanywhere[.]com/getbytes/{f,m,s,h}, использовался для доставки дополнительных payloads.
Q4: Какой облачный сервис хранения данных операторы кампании использовали для размещения образцов вредоносного ПО как для macOS, так и для Windows?
A4: Dropbox
Первый этап представляет собой приложение Electron (TidyMe.exe). В нём выделяются две особенности:
- CAPTCHA gate. Отображается CAPTCHA, реализованная локально в
captcha.js. Вредоносная активность не начинается до тех пор, пока жертва не пройдёт проверку. Это позволяет обходить sandbox-среды, которые не взаимодействуют с пользовательским интерфейсом. - Встроенный
config.jsonсодержащий Base64-кодированные URL и пароль для распаковки архивов. В отчёте приведены оба значения.
Q5: Вредоносный исполняемый файл содержит файл конфигурации с Base64-кодированными URL и паролем, используемым для распаковки архивных данных, что позволяет загружать payloads второго этапа. Какой пароль для распаковки был обнаружен в этом файле конфигурации?
A5: newfile2024
Логика загрузчика находится в preload.js, и реализована с помощью двух функций:
downloadAndExtractArchiveдекодирует ссылку Dropbox, сохраняет файл в%TEMP%\archive-<random>, распаковывает защищённый паролем RAR-архив и запускает каждый находящийся внутри файл.exe.loadFileполучает массив байтов с URL PythonAnywhere, записывает его в%TEMP%\<MD5-of-time>.exe, добавляет к файлу 750,000,000 байт и запускает его. Русскоязычное сообщение в логах этого этапа переводится как "Я раздуваю файл" ("I'm inflating the file"). Такое дополнение размера файла является техникой anti-analysis, поскольку сканеры и sandbox-среды часто пропускают файлы чрезмерно большого размера.
Q6: Как называется функция, отвечающая за получение поля archive из файла конфигурации?
A6: downloadAndExtractArchive
Время выполнения действий также выбрано намеренно. Архив загружается через 10 секунд после прохождения CAPTCHA, а функция loadFile запускается через 100 секунд. Кроме того, загрузчик отправляет оператору информацию о ходе выполнения посредством POST-запросов наhttps://tidyme[.]io/api.php.
Третья подкампания (Voico) имитирует AI-переводчик под названием YOUS. Она использует ту же логику загрузчика, но с другим пользовательским интерфейсом.
Q7: В третьей подкампании, организованной злоумышленниками, атакующие имитировали проект AI-переводчика. Как называется легитимный переводчик и как называется вредоносный переводчик, созданный злоумышленниками?
A7: YOUS.ai, voico.io
Step 4: The payloads
Загруженный payload второго этапа использует HijackLoader модульный загрузчик. Он внедряет shellcode в cmd.exe, удаляет себя, а затем выполняет инъекцию в explorer.exe, где запускается финальный payload. В некоторых вариантах цепочка продолжается процессом OpenWith.exe, легитимным процессом Windows, который редко подвергается мониторингу. Выполнение внутри доверенных процессов помогает вредоносному ПО обходить обнаружение.
Финальные payloads:
- StealC infostealer. Он отправляет HWID жертвы (полученный на основе серийного номера диска C:), build ID (
meowsterioland4), IP-адрес и страну, информацию об ОС и архитектуре, имя пользователя, установленные приложения, список процессов и снимок экрана. Затем он запрашивает у C2, какие данные необходимо украсть:browsers,plugins(расширения браузера) иwallets(настольные приложения криптовалютных кошельков). - Danabot, ещё один infostealer, доставляемый через цепочки RuneOnlineWorld и Voico.
- Clipper на Go, загружаемый в момент, когда
madHcCtrl.exeвыполняет DLL side-loading вредоносногоmadHcNet32.dll. Поскольку это единственная вредоносная DLL, упомянутая в отчёте, вероятнее всего, именно она соответствует моему hash, хотя подтвердить это исключительно на основании отчёта мне не удалось. Clipper отслеживает содержимое буфера обмена и заменяет любой скопированный адрес кошелька адресом злоумышленника. Жёстко прописанные пути, такие какC:/Users/Helheim/…,указывают на то, что он основан на коде open-source clipper.
Для обеспечения persistence payload помещает шесть файлов в %APPDATA%\AD_Security\и создаёт scheduled task с именем FJ_load, которая запускает madHcCtrl.exe при каждом входе пользователя в систему.
Именно механизм работы Clipper объясняет, как была реализована атака. Сотрудник копирует адрес криптовалютного кошелька, Clipper незаметно подменяет его, и в результате средства отправляются злоумышленнику.
Q8: Загрузчик должен доставлять дополнительные образцы вредоносного ПО на компьютер жертвы, в первую очередь infostealers, такие как StealC и Danabot. Какие IP-адреса серверов StealC C2 использовались в этой кампании?
A8: 46.8.238.240, 23.94.225.177
Step 5: Infrastructure pivoting
Именно на этом этапе один hash превращается в целую кампанию.
Kaspersky выполнила pivoting, используя DNS-записи tidyme[.]io. Одна из MX-записей разрешалась в IP-адрес 79.133.180[.]213. Анализ Passive DNS этого IP выявил 19 связанных доменов, включая две другие активные подкампании и множество неактивных (partyroyaleplay[.]com, dustfightergame[.]com, supme[.]ioи несколько доменов *sports[.]shop).
Главный вывод: злоумышленники используют общую инфраструктуру для распространения различных поддельных брендов. Таким образом, один индикатор позволил обнаружить остальные связанные элементы.
Злоумышленники также действуют очень быстро. В ходе анализа они перешли на tidymeapp[.]io и tidyme[.]app, используя более скрытный загрузчик. Один из читателей оставил комментарий к отчёту с новым доменом, на что Kaspersky ответила, что ей уже известно ещё о 87 связанных доменах. Быстрая смена доменов и образцов вредоносного ПО является типичной особенностью TTPs кампании Tusk.
Step 6: Following the money
Q9: Каков адрес Ethereum-кошелька, использованного в этой кампании?
A9: 0xaf0362e215Ff4e004F30e785e822F7E20b99723A
В отчёте были обнаружены три адреса, извлечённые из образцов Clipper:
ETH
0xaf0362e215Ff4e004F30e785e822F7E20b99723A
Активность: с 4 марта по 31 июля; получено 9.137 ETH.
BTC
bc1qqkvgqtpwq6g59xgwr2sccvmudejfxwyl8g9xg0
Активность: со 2 апреля по 6 августа; получено 0.0209 BTC.
BTC
1DSWHiAW1iSFYVb86WQQUPn57iQ6W1DjGo
На момент написания статьи транзакций не было.ETH
0xaf0362e215Ff4e004F30e785e822F7E20b99723A
Активность: с 4 марта по 31 июля; получено 9.137 ETH.
BTC
bc1qqkvgqtpwq6g59xgwr2sccvmudejfxwyl8g9xg0
Активность: со 2 апреля по 6 августа; получено 0.0209 BTC.
BTC
1DSWHiAW1iSFYVb86WQQUPn57iQ6W1DjGo
На момент написания статьи транзакций не было.Takeaways
Начиная с одного hash, мне удалось восстановить три подкампании, многоэтапную цепочку доставки вредоносного ПО, общую инфраструктуру и финансовый след криптовалютных кошельков.
Злоумышленники Tusk не используют сложные эксплойты. Вместо этого они полагаются на убедительные подделки, доверенные хостинговые сервисы и быструю смену доменов.
Главный вывод для специалистов по информационной безопасности: важно связывать индикаторы компрометации через общую инфраструктуру, а не ограничиваться анализом отдельных образцов вредоносного ПО.