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

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

В интернете очень часто встречаются вопросы вида «Как проверить, не находится ли мой роутер, компьютер, 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]
 ...

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

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

  • Поддержка 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    {kkbs2l3mdqjq} 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-подобных операционных системах. Позволяет получить доступ к информации из ядра о системных процессах. Необходима для выполнения таких команд как ps, w, top. Обычно её монтируют на /proc. Из этой директории можно получить любую информацию о вашей системе. Например сколько памяти подкачки сейчас используется, насколько велик размер кеша процессора, какие модули ядра загружены, сколько дисков или разделов доступно и т д.

Нас интересуют директории, содержащие информацию о найденных подозрительных процессах. Они имеют вид /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 достаточно просто перезагрузить роутер. Но в данном случае это бесполезно, так как на роутер с простым паролем вскоре залезет новая малварь, а менять чужой пароль — превышение сами знаете чего.
Источник: https://habr.com/ru/post/470513/


Интересные статьи

Интересные статьи

Часто от программистов PHP можно услышать: «О нет! Только не „Битрикс“!». Многие специалисты не хотят связываться фреймворком, считают его некрасивым и неудобным. Однако вакансий ...
Несмотря на то, что “в коробке” с Битриксом уже идут модули как для SOAP (модуль “Веб сервисы” в редакции “Бизнес” и старше), так и для REST (модуль “Rest API” во всех редакциях, начиная с...
В Челябинске проходят митапы системных администраторов Sysadminka, и на последнем из них я делал доклад о нашем решении для работы приложений на 1С-Битрикс в Kubernetes. Битрикс, Kubernetes, Сep...
По мнению чиновников из Еврокомиссии, Google намеренно подавляла конкуренцию в сфере онлайн-рекламы. В частности, компания запрещала рекламировать услуги конкурентов через свой сервис AdSense...
Как обновить ядро 1С-Битрикс без единой секунды простоя и с гарантией работоспособности платформы? Если вы не можете закрыть сайт на техобслуживание, и не хотите экстренно разворачивать сайт из бэкапа...