Как всё началось
Решил поднять SSH honeypot (использовал Cowrie), чтобы посмотреть, кто ломится в мои открытые порты. Буквально через несколько часов в логах появилось знакомое: бесконечные попытки входа под root
, admin
, test
, и т.п. Сюрпризом стали команды, которые выполнялись после удачного входа.
Сценарий почти всегда один и тот же:
cd ~ && rm -rf .ssh && mkdir .ssh && echo "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEArDp4cun2lhr4KUhBGE7VvAcwdli2a8dbnrTOrbMz1+5O73fcBOx8NVbUT0bUanUV9tJ2/9p7+vD0EpZ3Tz/+0kX34uAx1RV/75GVOmNx+9EuWOnvNoaJe0QXxziIg9eLBHpgLMuakb5+BgTFB+rKJAw9u9FSTDengvS8hX1kNFS4Mjux0hJOK8rvcEmPecjdySYMb66nylAKGwCEE6WEQHmd1mUPgHwGQ0hWCwsQk13yCGPK5w6hYp5zYkFnvlC8hGmd4Ww+u97k6pfTGTUbJk14ujvcD9iUKQTTWYYjIIu5PmUux5bsZ0R4WFwdIe6+i6rBLAsPKgAySVKPRK+oRw== mdrfckr">>.ssh/authorized_keys && chmod -R go= ~/.ssh && cd ~
Тот самый ключ с комментарием mdrfckr
. И да, один и тот же ключ с, буквально, сотен уникальных IP.
Что это за ключ такой?
Первым делом проверил fingerprint:
SHA256:MkYY9qiVsFGBC5WkjoClCkwEFW5iSjcGQF7m4n4H7Cw
Оказалось, ключ - не просто случайность. Он засвечен в ряде отчётов по безопасности начиная с 2018 года. Постоянно используется в автоматизированных атаках:
Брутфорс -> добавление публичного ключа для бэкдора
Иногда установка криптомайнера (чаще всего XMRig)
IRC-шеллботы вроде Shellbot, Dota3, Outlaw
Обнаружен в системах Linux, часто на VPS и домашнем железе
Коммент mdrfckr
, похоже, служит как маркер принадлежности к конкретной группе или тулкиту. Иногда просто как "подпись" скрипта.
Поведение атакующего
После добавления ключа:
Иногда шлётся wget или curl на бинарник
Иногда просто молчание (вероятно, доступ сохраняется на потом)
Логика стандартная: установить постоянный доступ и ждать команды
Упрощённый сценарий действий:
Удаление
.ssh
, чтобы убрать предыдущие ключиСоздание новой папки
.ssh
Добавление публичного ключа
Закрытие доступа для остальных (
chmod -R go= ~/.ssh
)
Откуда IP?
Из собранных 50+ IP:
Преобладают DigitalOcean, Hetzner, OVH, Alibaba Cloud
География: Европа, Азия, Южная Америка
Подключения происходят с интервалом в секунды/минуты
Больше всего IP-адресов оказалось из Китая - что, в общем-то, неудивительно: на страну приходится огромная доля заражённых хостов, открытых прокси и активно используемых VPS с минимальной модерацией. Китайские IP уже давно лидируют по числу SSH-сканеров и брутфорсеров в большинстве публичных отчётов по кибербезопасности.
Это говорит о массовой бот-сети, где на каждый IP отрабатывает один и тот же скрипт. Очень похоже на заранее заражённые хосты, действующие по одной схеме.
Что делать, если вы это нашли
Заблокировать доступ по паролю (PasswordAuthentication no)
Включить fail2ban или аналог
Ограничить доступ по IP, если это возможно
Мониторить изменения в .ssh/authorized_keys
Итог
Ключ mdrfckr
- явный индикатор активности ботнета, распространяющегося через SSH. Используется с 2018 года, и по сей день остаётся в арсенале. Honeypot отлично сработал: один вечер, и у меня уже была своя коллекция IOC и список IP для блеклиста.
Если у вас открыт SSH наружу - рекомендую хотя бы раз заглянуть в свои логи. Возможно, mdrfckr
уже там.
JBFW
Как-то не продуманно, если влез подбором пароля - это ещё не значит что хозяин туда не по ключу ходит, мог просто забыть закрыть. Снесут .ssh - сразу вспомнит, зайдет по паролю же и исправит.
А сам скрипт пароль не отключает..
s4q Автор
Видимо, упор ботоводы делали на массовость, а не на устойчивость доступа: такой скрипт проще и быстрее выполнить, чем сохранять все пароли, которые были получены подбором. Да и кто знает, может пароль поменяют?
aborouhin
Так нет, речь про то, чтобы не затирать существующий authorized_keys, а дописывать свой ключик в конец. Просто убрав "rm -rf ~/.ssh", без всяких сложностей.
aborouhin
Скорее всего, по изначальному замыслу создателя бота ключик и дописывался в конец authorized_keys (иначе зачем там ">>", а не ">", если мы только что всё потёрли). А потом очередной кулхацкер столкнулся с какой-нибудь нетипичной ситуацией (разрешения хитрые, опции ssh и т.п.) и решил её топорным добавлением "rm -rf ~/.ssh".