Хабрахабр

Как я нашел умный дом во власти ботнета

В интернете очень часто встречаются вопросы вида «Как проверить, не находится ли мой роутер, компьютер, ip-камера или какое другое устройства в составе ботнета?». Это мотивировало меня рассказать об одном из немногих случаев столкновения с ботнетами из моей практики.

image

Изучая подозрительный трафик я наткнулся на IP-адрес маршрутизатора, с которого производилась неудачные попытки подключения по SSH к моему HONEYPOT. В /var/log/auth.log я увидел вот это:

...
Oct 9 23:52:04 dvrh sshd[3523]: Failed password for root from 129.***.***.29 port 35276 ssh2
Oct 9 23:52:04 dvrh sshd[3523]: Connection closed by authenticating user root 129.***.***.29 port 35276 [preauth]
Oct 9 23:52:05 dvrh sshd[3525]: Connection closed by authenticating user root 129.***.***.29 port 35278 [preauth]
Oct 9 23:52:06 dvrh sshd[3529]: Failed password for root from 129.***.***.29 port 35280 ssh2
Oct 9 23:52:06 dvrh sshd[3529]: Connection closed by authenticating user root 129.***.***.29 port 35280 [preauth]
Oct 9 23:52:06 dvrh sshd[3531]: Invalid user admin from 129.***.***.29 port 35282
Oct 9 23:52:07 dvrh sshd[3531]: Failed password for invalid user admin from 129.***.***.29 port 35282 ssh2
Oct 9 23:52:07 dvrh sshd[3531]: Connection closed by invalid user admin 129.***.***.29 port 35282 [preauth]
Oct 9 23:52:08 dvrh sshd[3533]: Invalid user test from 129.***.***.29 port 35286
Oct 9 23:52:11 dvrh sshd[3533]: Failed password for invalid user test from 129.***.***.29 port 35286 ssh2
Oct 9 23:52:11 dvrh sshd[3533]: Connection closed by invalid user test 129.***.***.29 port 35286 [preauth]
Oct 9 23:52:11 dvrh sshd[3535]: Invalid user test from 129.***.***.29 port 35288
Oct 9 23:52:12 dvrh sshd[3535]: Failed password for invalid user test from 129.***.***.29 port 35288 ssh2
Oct 9 23:52:12 dvrh sshd[3535]: Connection closed by invalid user test 129.***.***.29 port 35288 [preauth]
Oct 9 23:53:12 dvrh sshd[3537]: Invalid user admin from 129.***.***.29 port 35290
Oct 9 23:53:12 dvrh sshd[3537]: Connection closed by invalid user admin 129.***.***.29 port 35290 [preauth] ...

Вывод сделать было не сложно: кто-то пытался получить доступ на мой сервер используя набор стандартных логинов и паролей. Причем (судя по интервалам времени) делалось это в автоматическом режиме. А значит, что вероятнее всего это очередной роутер, являющийся участником бот-сети.

Вы можете сами убедиться в этом: откройте ssh для доступа из внешнего интернета, разрешите вход по паролю, и боты не заставят себя ждать. На самом деле такая картина типична для хостов с открытым 22 портом. При этом ~80% попыток будет из Китая.

К моему счастью, спустя некоторое время, мне удалось зайти на этот злополучный IP по ssh, используя один из стандартных логинов и паролей (Удивлены? Я — нет). Но оказалось, что это не обычный роутер, а некоторый девайс под названием Calix GigaSpire.

GigaSpire включает в себя следующий функционал: Calix GigaSpire представляет из себя систему управления умным домом под операционной системой EXOS.

  • Поддержка Wi-Fi 6 (802.11ax), с 8x8 @ 5 ГГц и 4x4 при 2,4 ГГц
  • Мульти-гигабитный сервис
  • Услуги уровня 2 и уровня 3
  • Управляется Calix Support Cloud
  • поддержку Интернета вещей (Bluetooth Low Energy, Zigbee 3.0 и Z-Wave Pro)
  • Голосовой ассистент Amazon Alexa

Первое что я сделал, зайдя в систему, я посмотрел список запущенных процессов, чтобы найти что-то интересное. И это «что-то интересное» выглядело так:

[router] / # ps
... 2978 root 1444 S ipjq2njq5qjq 9729 root 1584 S {kkbs2l3mdqjq} ipjq2njq5qjq
14871 root 5532 S {hgoj42jadsjvebc} m6ojj5oj5gojj2h08b8l
19037 root 308 S {hgoj42jadsjvebc} m6ojj5oj5gojj2h08b8l
19041 root 284 S {hgoj42jadsjvebc} m6ojj5oj5gojj2h08b8l
...

Подозрения вызывает «рандомность» названий этих процессов. Чтобы понять, что это за процессы, я предлагаю вспомнить что такое файловая система /proc:

Позволяет получить доступ к информации из ядра о системных процессах. procfs — специальная файловая система, используемая в UNIX-подобных операционных системах. Обычно её монтируют на /proc. Необходима для выполнения таких команд как ps, w, top. Например сколько памяти подкачки сейчас используется, насколько велик размер кеша процессора, какие модули ядра загружены, сколько дисков или разделов доступно и т д.
Из этой директории можно получить любую информацию о вашей системе.

Нас интересуют директории, содержащие информацию о найденных подозрительных процессах. Они имеют вид /proc/PID, где PID — ID процесса, информацию о котором содержит данная директория. Если посмотреть их содержимое, можно найти такие файлы:

  • cmdline — содержит команду с помощью которой был запущен процесс, а также переданные ей параметры
  • cwd — символическая ссылка на текущую рабочую директорию процесса
  • exe — ссылка на исполняемый файл
  • root — ссылка на папку суперпользователя
  • environ — переменные окружения, доступные для процесса
  • fd — содержит файловые дескрипторы, файлы и устройства, которые использует процесс
  • maps, statm, и mem — информация о памяти процесса
  • stat, status — состояние процесса

Что мы можем с этим сделать? Первое, что приходит в голову — это подсчитат0ь контрольную сумму одного из исполняемых файлов и поискать совпадения в интернете:

/ # md5sum /proc/2978/exe
d204e97ac15a6d0a3ed7e415edfa582e /proc/2978/exe

Данный md5 я обнаружал в списке контрольных сумм Mirai, что говорит о природе происхождения файла. Но что мы можем теперь сделать? Чтобы избавить от бота Mirai достаточно просто перезагрузить роутер. Но в данном случае это бесполезно, так как на роутер с простым паролем вскоре залезет новая малварь, а менять чужой пароль — превышение сами знаете чего.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть