Аналитики Guardicore Labs рассказали об обнаружении написанной на Go малвари FritzFrog, которая брутфорсит SSH-серверы с начала 2020 года, а также одноименного P2P-ботнета.
По данным исследователей, к настоящему моменту ботнет совершил около 13 000 атак и взломал не менее 500 SSH-серверов, принадлежащих правительственным, образовательным, финансовым, медицинским и телекоммуникационным организациям и учреждениям по всему миру. Известно, что от атак пострадали известные университеты в США и Европе, а также железнодорожная компания.

Основной целью FritzFrog является добыча криптовалюты Monero. Для этого в зараженных системах разворачивается майнер XMRig, подключенный к пулу web.xmrpool.eu через порт 5555.
Интересно, что P2P протокол, используемый ботнетом, является проприетарным и не базируется на какой-либо существующей имплементации, подобной μTP. По мнению исследователей, это может свидетельствовать о том, что за созданием FritzFrog стоят профессионалы. Так, аналитики отмечают, что им удалось выявить некоторые сходства между FritzFrog и ботнетом Rakos, обнаруженным в 2016 году.
«Благодаря своей децентрализованной инфраструктуре FritzFrog распределяет контроль между всеми своими узлами, — пишут исследователи. — В этой сети нет ни одной точки отказа, а пиры постоянно общаются друг с другом, чтобы поддерживать работу, устойчивость и актуальность сети».
Если брутфорс SSH-сервера удался, малварь не оставляет почти никаких следов в атакованной системе, так как выполняется в памяти и относится к бесфайловым вредоносам. После запуска FritzFrog, малварь распаковывается под именами ifconfig и NGINX и слушает порт 1234 в ожидании команд. Так как подобные коммуникации нетрудно обнаружить, злоумышленники подключаются к жертве через через SSH, посредством netcat. Также стоит упомянуть, что файлы полезной нагрузки передаются между пирами в стиле BitTorrent, с использованием сегментированной передачи данных.
Как правило, первая же полученная команда присоединяет машину-жертву к P2P-ботнету. Прочие команды, зашифрованные AES, включают добавление публичного ключа SSH-RSA в файл authorized_keys для создания бэкдора, а также запуск shell-команд для мониторинга ресурсов зараженной машины, использования процессора, а также мониторинга сети. Если какие-то процессы на сервере занимают ресурсы ЦП, малварь может ликвидировать их, чтобы майнер мог работать эффективнее.

«Слабые пароли — это основная движущая сила для атак FritzFrog. Мы рекомендуем выбирать надежные пароли и использовать аутентификацию с публичным ключом, что намного безопаснее. Роутеры и устройства IoT часто имеют открытый SSH и поэтому уязвимы для FritzFrog. Рассмотрите возможность изменения их порта SSH или полного отключения доступа по SSH, если он не используется», — предупреждают эксперты Guardicore Labs.
miradmin
20.08.2020 в 16:57
«…использовать аутентификацию с публичным ключом…» — правильно.
«…изменения их порта SSH…» — бесполезно. Порт находят всё-равно.
Прямо сейчас идёт перебор паролей на немецких, шведских, голландских и британских серверах с нестандартным портом SSH. На российских серверах замечено не было…
Как-то так:
Aug 20 11:22:25 server_name sshd[10153]: Invalid user wzy from 138.68.40.92
Aug 20 11:23:17 server_name sshd[10230]: Invalid user xuxijun from 37.187.104.135
Aug 20 11:25:29 server_name sshd[10403]: Invalid user howard from 103.87.196.252
Aug 20 11:27:39 server_name sshd[10578]: Invalid user konica from 220.249.114.237
Aug 20 12:26:09 server_name sshd[15806]: Invalid user po from 120.71.147.115
Aug 20 12:27:35 server_name sshd[15912]: Invalid user wqy from 120.70.103.239
Aug 20 12:28:05 server_name sshd[15989]: Invalid user git from 200.0.236.210
Aug 20 12:49:50 server_name sshd[17769]: Invalid user dpi from 152.32.166.32
Aug 20 13:26:22 server_name sshd[20762]: Invalid user douglas from 182.61.43.202
Aug 20 13:32:14 server_name sshd[21283]: Invalid user mysql from 5.135.182.84
Aug 20 13:39:04 server_name sshd[21877]: Invalid user arch from 61.84.196.50
Aug 20 13:40:58 server_name sshd[22009]: Invalid user lhp from 117.103.2.114
Aug 20 13:41:52 server_name sshd[22101]: Invalid user www from 162.243.192.108
Aug 20 13:42:44 server_name sshd[22183]: Invalid user postgres from 218.75.211.14
Aug 20 13:43:32 server_name sshd[22276]: Invalid user ellis from 186.10.245.152
Aug 20 13:43:38 server_name sshd[22278]: Invalid user woody from 51.75.76.201
Aug 20 13:48:15 server_name sshd[22707]: Invalid user postgres from 103.217.243.63
Aug 20 13:53:59 server_name sshd[23166]: Invalid user user from 204.44.66.96
Aug 20 13:55:36 server_name sshd[23324]: Invalid user kfy from 42.104.109.194
Aug 20 14:42:49 server_name sshd[27170]: Invalid user ceph from 139.155.127.59
Aug 20 14:49:02 server_name sshd[27651]: Invalid user deploy from 115.134.128.90
Aug 20 14:53:54 server_name sshd[28066]: Invalid user money from 49.233.212.154
Aug 20 14:55:23 server_name sshd[28248]: Invalid user om from 206.189.22.230
Aug 20 14:56:28 server_name sshd[28342]: Invalid user wpadmin from 117.50.20.77
Aug 20 14:57:15 server_name sshd[28431]: Invalid user isp from 118.89.120.110
Aug 20 14:58:27 server_name sshd[28518]: Invalid user znc from 120.79.254.133
Aug 20 14:58:46 server_name sshd[28526]: Invalid user postgres from 2.139.209.78
Aug 20 14:59:43 server_name sshd[28625]: Invalid user appldisc from 106.12.201.16
Aug 20 15:03:18 server_name sshd[29020]: Invalid user ec2-user from 189.4.3.172
Aug 20 15:25:54 server_name sshd[30973]: Invalid user zhanglei from 89.248.169.143
Aug 20 15:40:13 server_name sshd[32331]: Invalid user sss from 54.37.71.203
Aug 20 15:50:04 server_name sshd[763]: Invalid user web from 101.78.149.142
Aug 20 16:22:18 server_name sshd[3572]: Invalid user zkh from 2.227.254.144
Aug 20 16:44:36 server_name sshd[5360]: Invalid user erik from 114.67.105.220
Aug 20 16:45:05 server_name sshd[5365]: Invalid user musicbot from 106.54.245.12
Aug 20 16:45:43 server_name sshd[5460]: Invalid user hadoopuser from 120.27.242.37
Aug 20 16:46:04 server_name sshd[5507]: Invalid user moodle from 106.13.238.1