Криптомайнер на сервере компании: как обнаружить, удалить и не допустить повторения
Меня зовут Семёнов Евгений Сергеевич, я уже 15 лет руковожу АйТи Фреш — IT-аутсорсингом для офисов до 50 рабочих мест в Москве. За это время через моих инженеров прошло около 40 серверов с криптомайнерами разной степени запущенности. В этой статье — конкретный кейс из практики марта 2026-го: торговая компания, сервер 1С, загрузка 100% круглые сутки. Расскажу, как мы нашли проблему за 15 минут, устранили за 2 часа и что сделали, чтобы это не повторилось.
Звонок: «1С работает в 10 раз медленнее, чем месяц назад»
Мне позвонил IT-директор торговой компании, которая занимается оптовыми поставками промтоваров, — дело было в понедельник утром. У них в офисе на Шаболовке 32 рабочих места, и сервер 1С физически находится прямо в их серверной. Звонок был полон отчаяния: проведение документа в 1С УТ вместо привычной 1 секунды вдруг стало занимать 15-20 секунд! Бухгалтерия, конечно, криком кричит, продажи остановились, а директор, я слышал, был готов рвать на себе волосы.
Я не стал терять ни минуты, взял с собой одного из инженеров, и уже через час мы были на месте. Первым делом подключились к серверу по RDP под админской учёткой и сразу же открыли диспетчер задач. И знаете, какая картина нам предстала? Процессор Intel Xeon E-2236 (у него 6 ядер и 12 потоков) был загружен на все 100%! При этом в 1С активно работали всего четверо пользователей. А график загрузки за последний час вообще был похож на ровную полку в 99%, без единого провала, даже ночью.
Как опытный системщик, я сразу понял, в чём дело. Обычный, здоровый сервер 1С, рассчитанный на 30 пользователей, в нормальном режиме загружает свой CPU где-то на 15-30%. Даже при закрытии месяца бывают пики, но не выше 60%. А вот такая постоянная «полка» в 99% — это явный признак либо зависшего процесса, либо чего-то совсем чужеродного. Мы тут же открыли вкладку «Подробности» в диспетчере задач, отсортировали всё по загрузке CPU. И что вы думаете? На самой первой строчке красовался процесс WindowsHostHelper.exe, который единолично отъедал аж 91% процессора. Имя, конечно, выглядело как системное, но я-то знаю: на здоровом Windows Server такого процесса быть не должно. Классическая маскировка, одним словом.
Подтверждение: что именно делает подозрительный процесс
Сразу убивать процесс нельзя — сначала надо понять, что он делает, откуда запущен и нет ли механизма автоперезапуска. Открыл командную строку с правами администратора и посмотрел детали:
PS C:\> Get-Process WindowsHostHelper | Format-List *
Name : WindowsHostHelper
Id : 4128
Path : C:\ProgramData\WindowsHostService\bin\WindowsHostHelper.exe
StartTime : 02.03.2026 03:14:22
CPU : 154892,73
Threads : {...12 потоков...}
Modules : {WindowsHostHelper.exe, ntdll.dll, ...}
Запущен из C:\ProgramData\WindowsHostService\ — папка, которой по умолчанию в Windows Server нет, и которая не создаётся легитимными приложениями. Стартовое время — 2 марта в 3:14 ночи. Сейчас 31 марта. То есть майнер крутится 29 дней, накопив на счётчике CPU больше 154 тысяч секунд (это 42 часа чистого процессорного времени).
Проверил, с кем он общается:
PS C:\> Get-NetTCPConnection -OwningProcess 4128
LocalAddress LocalPort RemoteAddress RemotePort State
10.0.10.5 49321 176.124.107.214 14444 Established
Активное соединение с IP 176.124.107.214 на порту 14444 — это типичный порт для пулов Monero (XMR). Whois IP-адреса показал, что это сервер в Германии, известный как пул для XMRig-майнеров. Диагноз подтвердился: на сервере работает криптомайнер, добывающий Monero и отдающий результат в чужой пул.
Поиск механизмов перезапуска
Важно помнить: прежде чем мы нажмём кнопку «убить процесс» и начнём удалять файлы, нужно обязательно найти всё, что может его перезапускать. Иначе через 5 минут он вернётся, как ни в чём не бывало! Вот что я проверил в первую очередь:
1. Запланированные задачи:
PS C:\> Get-ScheduledTask | Where-Object {$_.TaskPath -notlike "\Microsoft\*"} | Format-Table TaskName, TaskPath, State
TaskName TaskPath State
WindowsHostMonitor \Microsoft\Windows Ready
WindowsHostUpdater \ Running
Нашёл две задачи. Первая — каждые 5 минут проверяет, запущен ли майнер, и если нет — запускает. Вторая — раз в сутки скачивает свежую версию с командного сервера. Обе создал злоумышленник.
2. Службы Windows:
PS C:\> Get-Service | Where-Object {$_.DisplayName -like "*Helper*" -or $_.DisplayName -like "*Host Service*"}
Status Name DisplayName
Running WinHostHlpr Windows Host Helper Service
Ещё один механизм — служба, которая стартует при загрузке системы. Тоже создана злоумышленником, но имя выглядит «системным».
3. Автозагрузка через реестр:
PS C:\> Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Run
WindowsHostHelper : C:\ProgramData\WindowsHostService\bin\WindowsHostHelper.exe
И третий — стандартный ключ реестра автозагрузки. Тройная страховка: даже если убрать одно, два других перезапустят майнер. Видно, что злоумышленник опытный.
Зачистка инфраструктуры
Порядок зачистки важен — сначала отключаем все механизмы перезапуска, потом убиваем процесс и только потом удаляем файлы:
# 1. Удаляем запланированные задачи
PS C:\> Unregister-ScheduledTask -TaskName "WindowsHostMonitor" -Confirm:$false
PS C:\> Unregister-ScheduledTask -TaskName "WindowsHostUpdater" -Confirm:$false
# 2. Останавливаем и удаляем службу
PS C:\> Stop-Service -Name "WinHostHlpr" -Force
PS C:\> sc.exe delete WinHostHlpr
# 3. Удаляем ключ автозапуска
PS C:\> Remove-ItemProperty -Path "HKLM:\Software\Microsoft\Windows\CurrentVersion\Run" `
-Name "WindowsHostHelper"
# 4. Убиваем процесс
PS C:\> Stop-Process -Id 4128 -Force
# 5. Удаляем файлы майнера
PS C:\> Remove-Item -Path "C:\ProgramData\WindowsHostService\" -Recurse -Force
После этого открыл диспетчер задач — загрузка CPU мгновенно упала до 8%. Зашёл в 1С, провёл тестовый документ — секунда. Бухгалтерия выдохнула, директор перестал нервничать. Но работа далеко не закончена — нужно понять, как майнер попал на сервер, и закрыть эту дыру. Иначе через неделю всё повторится.
Расследование: точка входа
Я полез в журнал событий безопасности Windows и отфильтровал записи по событию 4624, что означает успешный вход в систему. При этом меня интересовал только тип логона 10, или Remote Interactive, — то есть входы по RDP:
PS C:\> Get-WinEvent -FilterHashtable @{LogName='Security';ID=4624;StartTime=(Get-Date).AddDays(-35)} `
| Where-Object {$_.Message -like "*Logon Type:*10*"} `
| Select-Object TimeCreated, @{N='Account';E={$_.Properties[5].Value}}, `
@{N='SourceIP';E={$_.Properties[18].Value}} `
| Group-Object SourceIP | Sort-Object Count -Descending | Select-Object -First 10
Картина оказалась шокирующей. За месяц на сервер было 14 700 успешных RDP-логинов с IP-адресов из Бразилии, Вьетнама, Нигерии и Болгарии. То есть кто-то методично подбирал пароль, и в какой-то момент подобрал. Проверил неудачные попытки (событие 4625) — 2.3 миллиона за месяц. Брутфорс работал постоянно, и в итоге пароль был подобран.
Дальше выяснилось, что у клиента:
- RDP-порт 3389 открыт в интернет на роутере (проброс с белого IP);
- Учётка администратора называется
Administrator(стандартное имя — половина дела для атакующего); - Пароль
Qwerty2024!— выглядит сложным, но он в любом списке для брутфорса; - Нет ограничений по числу попыток входа, нет блокировки после неудачных попыток;
- Нет лимита по IP-адресам, с которых можно подключаться по RDP.
Знаете, это типичная история для многих небольших компаний. Они когда-то «попросили IT-шника на удалёнке настроить, чтобы можно было работать из дома». IT-шник, конечно, настроил, убедился, что всё работает, и благополучно забыл. А злоумышленники тем временем круглосуточно сканируют интернет, ищут открытые 3389 порты и ждут, пока кто-нибудь не попадётся.
Закрытие дыры: как мы переделали удалённый доступ
Мы не стали тянуть. В тот же день мы полностью переделали схему удалённого доступа для клиента. Изначально мы закладывали на это 3 часа работы, но справились даже быстрее — уложились реально в 2.5:
- Закрыли проброс RDP с роутера в интернет. Никаких 3389 наружу больше нет, точка.
- Развернули WireGuard на роутере Mikrotik. 7 пользователей (директор, главбух, кладовщик, 4 менеджера) получили персональные конфиги. Подключение к VPN, и уже из VPN — RDP к серверу. На каждое подключение — отдельный ключ, можно отозвать.
- Переименовали учётку Administrator в нестандартное имя (по политике безопасности АйТи Фреш — что-то вроде
adm-itfresh-svnv). Старое имя оставлено, но отключено — это ловушка. - Сменили все админские пароли на 18-символьные с генератором. Сохранили в Bitwarden, поделились с клиентом через защищённую ссылку.
- Включили блокировку учётки после 5 неудачных попыток на 30 минут (групповая политика «Account Lockout Threshold»).
- Включили журнал безопасности с увеличенным размером (1 ГБ) и настроили выгрузку в SIEM (у клиента — Wazuh).
- Установили мониторинг загрузки CPU через Zabbix — алерт инженеру, если CPU >70% дольше 30 минут вне рабочих часов.
Конечно, такая работа стоит денег. Клиенту наши разовые работы обошлись в 28 000 рублей. До этого они платили нам почасовку, но уже на следующей неделе, осознав всю серьёзность ситуации, подписали договор абонентского обслуживания. Теперь это 95 000 руб./мес — потому что они поняли, что инфраструктура, оставленная без присмотра, обходится в десятки раз дороже.
Признаки майнера на сервере: чек-лист для самопроверки
На всякий случай, если вы вдруг подозреваете, что на вашем сервере завёлся майнер, вот что можно проверить буквально за 5 минут. Уверяю, с этим справится любой админ:
| Признак | Что проверить | Норма |
|---|---|---|
| Загрузка CPU | Диспетчер задач, график за последние сутки | Должны быть провалы ночью и в обеденное время |
| Температура сервера | iDRAC/iLO/IPMI или термодатчики | На 5-15 °C выше базового уровня — повод проверить |
| Странные процессы | Get-Process отсортировать по CPU | В топе должны быть знакомые: 1cv8.exe, sqlservr.exe, agntsrvc |
| Подозрительные подключения | Get-NetTCPConnection | Не должно быть исходящих на порты 3333, 5555, 7777, 14444 |
| Папки в ProgramData | dir C:\ProgramData /AD | Только папки с именами известных программ |
| Запланированные задачи | Get-ScheduledTask | Без задач с подозрительными именами вне Microsoft\Windows |
| Скачки потребления электричества | Счётчик электроэнергии по серверной | Стабильное потребление, без скачков на 30-50% |
Как мы предотвращаем майнеры у клиентов АйТи Фреш
Кстати, о защите. Каждый наш клиент АйТи Фреш, который находится на абонентском обслуживании, автоматически получает базовый пакет защиты серверов от компрометации. Это не какая-то отдельная услуга, а просто часть нашей стандартной абонентки. Например, для офиса на 25 ПК с одним сервером это стоит 90 000 руб./мес. И вот что туда входит:
- Никакого RDP в интернет. Удалённый доступ только через VPN (WireGuard на роутере или OpenVPN на сервере), с персональными ключами для каждого сотрудника.
- Аудит паролей раз в квартал. Проверяем, что админские пароли — не из списков для брутфорса, длиной 16+ символов, не повторяются между серверами.
- Мониторинг загрузки CPU и памяти 24/7 через Zabbix. Аномалии (например, 100% CPU на сервере 1С в 4 утра) сразу всплывают на дежурной смене.
- Бэкапы в две локации с тестовым восстановлением раз в квартал. Если майнер всё-таки прорвался — мы знаем, что у нас есть чистая копия за 24 часа до инцидента.
- Аудит безопасности раз в полгода с письменным отчётом — что нужно дозакрыть, какие сервисы выставлены наружу, какие пароли пора сменить.
Я понимаю, может показаться, что я тут рекламируюсь, — но, поверьте, без этих базовых вещей любой сервер, который хоть как-то доступен из интернета, заражается буквально за пару месяцев. Это не вопрос «если» это случится, это вопрос «когда». А мы просто делаем так, чтобы это «когда» наступило максимально нескоро и было под полным контролем.
Подозреваете майнер на своём сервере? Позвоните прямо сейчас
Итак, если ваш сервер вдруг начал капризничать: тормозит, греется как утюг, ест много электричества, а вы не понимаете, в чём дело, — это вполне может быть майнер. Не тяните! Я лично или один из моих опытных инженеров приедет к вам в офис в Москве в течение 2-4 часов, проведёт полную диагностику, найдёт и, главное, удалит майнер, а потом закроет все точки входа, чтобы такое больше не повторилось. Экстренный выезд стоит от 12 000 руб., а если вы уже на абонентке — это без доплат.
Телефон: +7 903 729-62-41 (звоните сейчас, отвечу лично)
Telegram: @ITfresh_Boss
Семёнов Евгений Сергеевич, директор АйТи Фреш
FAQ — частые вопросы про криптомайнеры на серверах
- Как понять, что на сервере работает криптомайнер?
- Главный признак — постоянная загрузка CPU 90-100% при отсутствии реальной работы пользователей. На сервере 1С это особенно заметно: ночью нагрузка должна быть минимальной, а майнер держит её на максимуме круглосуточно. Также повышается температура, шумят кулеры, растут счета за электричество.
- Опасен ли майнер для данных компании?
- Сам майнер не крадёт данные, его задача — генерировать криптовалюту. Но факт его установки означает, что злоумышленник получил доступ к серверу. И через эту же дыру он может загрузить шифровальщик, скачать базы или подменить документы. Поэтому майнер — всегда сигнал о компрометации.
- Как майнер попадает на сервер компании?
- Три основных пути: открытый RDP с слабым паролем, уязвимости в публично доступных сервисах (старая 1С-публикация, веб-сайт компании на сервере, веб-морда видеонаблюдения), и физический доступ через флэшку. В 70% случаев в моей практике — это именно RDP.
- Нужно ли переустанавливать сервер после обнаружения майнера?
- Если майнер установлен недавно, точка входа понятна и других следов компрометации нет — достаточно зачистки и закрытия дыры. Если злоумышленник имел доступ долго (недели и месяцы), есть смысл переустанавливать ОС с нуля и восстанавливать данные из проверенного бэкапа — нельзя гарантировать, что не остался скрытый бэкдор.
- Сколько стоит чистка сервера от майнера?
- В АйТи Фреш разовая зачистка с поиском точки входа и базовым харденингом — от 12 000 руб. Полное расследование инцидента с переустановкой ОС и восстановлением — от 35 000 руб. Клиентам на абонентке инцидент закрывается без доплат.
