Статья

Что делают боты, когда подобрали пароль к серверу: опыт ловушки с H100

Что делают боты, когда подобрали пароль к серверу: опыт ловушки с H100

Все про ИИ и РоботовВсе про ИИ и Роботов·2 ч назад·
2
··0·
Если коротко: когда бот подбирает пароль к серверу, за ним не стоит человек, который выбрал именно вас. Это программа, которая ходит по всему интернету подряд и пробует «root / 123456». Подобрав пароль, она за несколько минут делает три вещи: оставляет себе вход без пароля, выгоняет хозяина и конкурентов и ставит майнер — а заодно превращает ваш сервер в ещё одного взломщика. Поэтому «у меня на сервере нет ничего ценного» не спасает: ценность — сам процессор и адрес. А весь этот конвейер ломается об одну настройку: вход по паролю выключен.
Это канал «Всё про ИИ и Роботов», и сегодня у нас роботы не из лаборатории, а из журнала SSH — те самые, что круглые сутки стучатся в любой сервер с белым адресом. Поводом стал один из самых читаемых материалов недели: как рассказал автор на Хабре, он поставил ловушку, нарядил её сервером для обучения нейросетей с четырьмя видеокартами NVIDIA H100 и посмотрел, что будет. Мы пересказываем его наблюдения своими словами, сверяем выводы с отчётами исследователей и разбираем главное — почему эта схема вообще окупается.

Ловушка, которая притворяется сервером мечты

Ловушки такого рода называют honeypot — «горшок с мёдом». Автор взял старую и проверенную Cowrie: программу, которая изображает SSH-сервер. Она пускает «внутрь», показывает заготовленную файловую систему, эмулирует команды и записывает всё до последнего нажатия клавиши. Скачанные файлы сохраняются отдельно и никогда не запускаются. Настоящий вход на машину остался только для своих адресов, всех остальных на порту 22 незаметно перенаправляли в ловушку.
Самое интересное в этой истории — сколько сил ушло на правдоподобие. Ловушка «из коробки» пускает почти с любым паролем, и опытный бот быстро понимает, где он: если подходит и `123`, и `qwerty`, и что угодно — это не живой сервер. Поэтому автор сделал вход «как по-настоящему»: новый адрес пускают лишь после нескольких неудач, и первая сработавшая пара логин-пароль закрепляется за ним навсегда. Внутри — сервер мечты: 128 ядер, терабайт памяти, четыре H100, в выводе `nvidia-smi` идёт обучение модели, в домашней папке лежат «чекпоинты» и помеченные фейковые ключи от облаков.
Нашлись и проколы, по которым ботов можно было бы спугнуть. Самый показательный — с поиском видеокарт. Боты массово проверяют машину командой `lspci | grep -i nvidia`, а эмуляция `grep` в ловушке не понимала ключ `-i` (игнорировать регистр) и молча отвечала пустотой. В итоге разведчик одного ботнета 34 раза докладывал хозяевам, что видеокарт тут нет. Когда ошибку исправили, он зашёл ещё четыре раза, увидел четыре H100 — и пропал.

Что показали двенадцать с половиной часов

Первый чужой бот пришёл через шесть минут после запуска. Дальше за 12,5 часа (с вечера 24 октября до утра 25-го по UTC) ловушка насчитала:
Показатель → Значение Подключений к SSH → 1 846 Разных адресов → 126 Неудачных попыток входа → 1 536 Успешных входов → 175 с 70 адресов Сессий, где вводили команды → 102 с 65 адресов Команд всего → 1 524 Скачиваний файлов → 219 (47 разных файлов)
Две трети всех подключений — 1 198 из 1 846 — сделал один-единственный адрес. Его программа тупо шла по словарю: подключилась, попробовала пару, отключилась. Логин почти всегда `root` (728 попыток из 1 711), пароли — те же, что и десять лет назад: `123456`, `123`, `1234`, `admin`, `12345678`. Это совпадает с куда большей выборкой: в ловушке исследователя SANS, где собрали больше 3,6 млн попыток, на `root` пришлась почти половина всех логинов — 48,5%.
Важная оговорка: 175 успешных входов — это не про слабые пароли, а про настройку ловушки, которая пускает любого достаточно настойчивого. Ценна не эта цифра, а то, что боты делали после входа. И вот тут картина оказалась на удивление однообразной.
Воронка ловушки: из 1 846 подключений почти вся «работа» внутри пришлась на один ботнет. Справа — самые частые пароли; две странные строки — подпись этого ботнета

Почему вас ломают, даже если вы никому не нужны

Здесь главный механизм, без которого непонятно всё остальное. Перебор паролей — это не охота на конкретную жертву, а промысел сетью. Ещё в 2013 году авторы сканера ZMap показали на конференции USENIX Security, что одна обычная машина способна опросить всё адресное пространство IPv4 меньше чем за 45 минут. Адресов в IPv4 около 4,3 миллиарда, и найти среди них все с открытым портом 22 — задача на вечер.
Дальше работает арифметика. Пусть словарь из сотни самых популярных пар срабатывает на одном сервере из нескольких тысяч. Для человека это провал, для программы — отличный результат: она не устаёт, не платит за время и не ждёт. Каждая попытка стоит почти ноль, а каждый успех даёт бесплатный процессор, канал и чистый IP-адрес. Поэтому в журнал любого сервера с белым адресом через минуты после включения сыплются `Failed password for root` — интернет непрерывно прочёсывают.
Отсюда и первый развенчанный миф. «Кому нужен мой маленький VPS» — вопрос из неправильной картины мира. Никто не решал, нужны ли вы. Программа просто дошла до вашего адреса в списке. Ловушка это хорошо иллюстрирует: подписи клиентов показали 1 305 подключений от программы на Go и около 400 — от библиотеки libssh, а PuTTY, которым пользуются люди, встретился всего три раза.

Ботнет на 59 адресов: пять минут по одному сценарию

Из 65 адресов, которые вводили команды, 59 выполнили один и тот же сценарий — слово в слово. В SSH-ключе, который он оставляет, стоит подпись `mdrfckr`, и разбор DShield связывает эту команду с группой Outlaw, которую Trend Micro описала ещё в 2018 году. То есть автор поймал не экзотику, а «рабочую лошадку» интернета, которая пасётся на чужих серверах много лет.
Почерк у ботнета узнаваемый. Подобрав пароль root, тот же адрес за несколько секунд пробует две свои странные пары: логин `345gs5662d34` и root с паролем `3245gs5662d34`. Отсюда и «загадочные» строки на втором и третьем месте в топе паролей. Зачем они — точно не известно; автор Хабра предполагает проверку «а не наш ли это уже сервер». Эта же строка давно смущает исследователей: в 2023 году аналитик SANS отмечал логин `345gs5662d34` среди десяти самых частых в своей ловушке и просил подсказать, откуда он взялся.

Что именно делает бот после входа

Сценарий занимает четыре-пять минут и от 18 до 27 команд. Если пересказать его по смыслу, получится такой список:
Шаг → Что делает → Зачем 1 → Стирает папку `.ssh` и записывает туда свой ключ → входить без пароля, даже если пароль сменят 2 → Меняет пароль root → выгнать конкурентов, подобравших тот же пароль, и самого владельца 3 → Ищет и убивает чужие процессы → снести майнеры других ботнетов 4 → Смотрит процессор, память, архитектуру → оценить, сколько тут можно намайнить 5 → Ставит задание в cron и загружает архив dota → закрепиться и запустить свою «начинку»
Обратите внимание на второй и третий шаги — они многое объясняют. Сервер со слабым паролем никогда не взламывают один раз: его находят десятки ботнетов, и между ними идёт драка за процессор. Поэтому первое, что делает победитель, — запирает дверь за собой и выкидывает остальных. В ловушке пароль root за полсуток сменился 42 раза: ботнет снова и снова «перезапирал» машину, на которую сам же приходил с разных адресов.

Майнер, которому не нужны видеокарты

Теперь «ага»-момент всей истории. Автор нарядил ловушку сервером с четырьмя H100, рассчитывая, что для майнера это джекпот. Но главный ботнет на видеокарты даже не посмотрел: ни одной команды `nvidia-smi` за всё время. И это не случайность, а прямое следствие того, что именно он майнит.
Эксперты Elastic, разобравшие архив Outlaw, нашли внутри три части: модифицированный майнер XMRig для криптовалюты Monero, бэкдор Shellbot с управлением через IRC-чат и модуль BLITZ — тот самый перебор паролей SSH. А Monero сознательно добывается на обычных процессорах: её алгоритм RandomX создан под процессоры общего назначения — он исполняет случайно сгенерированные программы и требует много памяти, чтобы специализированное железо не получало большого преимущества. Для такого майнера сервер с видеокартами и без них одинаково хорош, если у него много ядер. А ядра есть у любого сервера.
Отсюда второй миф: «боты ищут мощные машины с GPU». Отдельные разведчики видеокарты действительно ищут — тот самый бот с `lspci` из истории с `grep`. Но массовый промысел устроен иначе: ему подходит любой процессор, лишь бы чужой и бесплатный. Мы уже разбирали, почему нейросети считают на видеокартах; у криптомайнинга на Monero логика ровно обратная — его специально сделали «процессорным».
Цикл ботнета Outlaw: взломанный сервер сам становится взломщиком. Цикл рвётся, если вход по паролю выключен

Как взломанный сервер становится взломщиком

Модуль перебора в архиве — ключ к тому, почему такие ботнеты живут годами. Заражённая машина не только майнит, но и начинает подбирать пароли к соседям по интернету. Каждая новая жертва добавляет ботнету и вычислительной мощности, и новых адресов, с которых можно сканировать. Получается цепная реакция, в которой людям почти нечего делать: сеть растит сама себя.
Есть и неприятное следствие для владельца. Узнаёт он о взломе обычно не по взлому, а по последствиям: хостинг присылает жалобу на исходящий перебор паролей, процессор весь день загружен на 100%, а сервер подозрительно тормозит. К этому моменту на машине уже чужой ключ, чужие задания в планировщике и новый пароль root.
Интересно, что за полсуток майнер на ловушку так никто и не поставил: архивы скачивались, но до запуска дело не дошло. Автор честно оставляет это открытым — то ли разведка и заражение работают по разным расписаниям, то ли ботов что-то насторожило. Это ещё одно напоминание: ловушка — не настоящая машина, и её выводы стоит читать с поправкой.

Одна настройка, о которую ломается весь конвейер

Вернёмся к механизму. Вся цепочка начинается с одного предположения: на сервер можно войти, угадав пароль. Если убрать эту возможность, боту нечего перебирать — и неважно, насколько большой у него словарь. Вход по ключу устроен иначе: сервер хранит ваш публичный ключ, а вы доказываете, что владеете парным секретным, не передавая его. Угадать такой ключ перебором невозможно на практике: пространство вариантов несопоставимо с любым словарём.
Поэтому базовый рецепт для своего сервера короткий. Сначала убедитесь, что вход по ключу работает, и только потом отключайте пароли: в настройках OpenSSH это `PasswordAuthentication no` и `KbdInteractiveAuthentication no`. Для root разумно оставить вход только по ключу — `PermitRootLogin prohibit-password`. В самом OpenSSH это значение по умолчанию, как сказано в документации sshd_config, но образы у хостингов нередко переопределяют его на `yes`, так что проверить стоит. Текущую сессию не закрывайте, пока не убедились из второго окна, что ключ пускает, — иначе можно запереть самого себя.
Блокировщики вроде fail2ban при выключенных паролях уже не столько защищают, сколько чистят журналы: тот бот, что сделал почти 1 200 подключений, отлетел бы после пятой неудачи. А если пароль был слабым и есть подозрение, что к вам уже заходили, ищите следы этого ботнета: чужие ключи в `authorized_keys` (особенно с подписью `mdrfckr`), незнакомые задания в cron, всплеск неудачных входов в журнале. Найдёте — чистить такую машину руками бессмысленно: проще перенести данные на новый сервер и сменить все пароли и ключи, которые на старом лежали.
Логика та же, что и для любых учётных записей: пароль можно подобрать или украсть, поэтому его стараются убрать из цепочки входа совсем. Про то, почему одни секреты можно сменить, а другие нет, у нас есть отдельный разбор — о том, чем утечка биометрии страшнее утечки пароля.

Коротко

- Подбор паролей к SSH — не охота на вас лично, а промысел программами: весь IPv4 можно прочесать меньше чем за час, каждая попытка почти бесплатна. - В ловушке за 12,5 часа было 1 846 подключений, и почти вся «работа» внутри пришлась на один ботнет — Outlaw с подписью `mdrfckr`. - После входа он за пять минут ставит свой ключ, меняет пароль root, убивает чужие майнеры и закрепляется через cron. - Видеокарты ему не нужны: майнер XMRig добывает Monero на алгоритме RandomX, созданном под обычные процессоры. - Заражённый сервер сам начинает перебирать пароли соседей — поэтому такие сети живут годами. - Весь конвейер ломается об вход только по ключу: `PasswordAuthentication no`, а root — только по ключу.
0

Пока нет комментариев

Что делают боты после взлома сервера по SSH: ловушка