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

    В интернете очень часто встречаются вопросы вида «Как проверить, не находится ли мой роутер, компьютер, 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 достаточно просто перезагрузить роутер. Но в данном случае это бесполезно, так как на роутер с простым паролем вскоре залезет новая малварь, а менять чужой пароль — превышение сами знаете чего.
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 18

      +1
      Может им там светом помигать, морзянкой…
        0
        к сожалению не нашел документации по управлению этой штукой через терминал
          +12
          Я несколько раз печатал сообщение с советами про смену пароля/конфигурации на принтер, который смотрит в сеть. Даже точные инструкции и ссылки дал.
          Стоит ли говорить, что принтер до сих пор открыт?
          К сожалению, не все знают как или даже не понимают зачем.
            +10

            Тем временем владельцы принтера звонят в саппорт вендора с претензией: "Ваш принтер впаривает нам ваш антивирус! Совсем в край берега потеряли!"

              0
              Это был бы тоже неплохой вариант, так как там могли бы им доступно объяснить что и как. Но увы.
                +8

                Ботнет захватил дом и выгнал человеков на мороз.

                  +1
                  Как обычно «УВЧ!».
                  0
                  там могли бы им доступно объяснить что и как
                  «Если бы люди были невежественны только потому, что ничему не учились, то их, пожалуй, ещё можно было просветить; но нет, в их ослеплении есть система… Можно образумить человека, который заблуждается невольно; но с какой стороны атаковать того, кто стоит на страже против здравого смысла?» (Дени Дидро).
                +5
                Надо повторять сообщение листах эдак на 10-20 и большим кеглем — потому что одну страничку с какими-то непонятными словами секретарши/бухгалтерши просто выкинут и все. У меня был такой случай — пока принтер не «сьел» всю бумагу за ночь, никто даже не знал что происходит.
                  0

                  Был довольно распространен несколько лет назад вирус, печатавший мусор на сетевых принтерах, печатал кракозябры до тех пор, пока печать возможна.

              0
              Когда уже запретят устройства с обычной авторизацией без MFA?
                +1
                Какой mfa, это soho роутер. Вон посмотрите на Dlink, там и логин не нужен, у них все железо как решето, из серии /gui.asp?ROOT_ACCESS=1. А по причине их стоимости они стоят у многих жлобов и не обновляется с момента покупки. Да и обновления не спасут особо, ибо DLink не подерживает железо дольше года, в том числе не латает двры в нем.

                Уже не раз поднимался вопрос на международных конференциях о халатных производителях и об отсутствии закона который бы эти инцыденты регулировал. А пункты которым должен соответствовать домашний маршрутизатор простореализуемы:
                1. Отсутствие заводского пароля по умолчанию, пароль должен быть сгенерирован в ходе первой настройки.
                2. При инициализации и при дальнейшем изменении пароля перед применением пароля, он должен быть проверен на сложность.
                3. По умолчанию ни один сервис удаленного доступа не должен быть включен на устройстве.
                4. При включении удаленного доступа пользователь должен быть проинформирован, и возможно даже при включении этой функции требоветь указать более сложный пароль если установленный пароль имел минимально допустимую надежность.
                5. Автообновление. Это наверное самая спорная, но самая важная функция. Главный плюс — софт будет максимально актуален, главный минус — кривизна реализации данной функции разрабом может привести к катастрофическим последствиям.
                6. Ssh не должен быть вообще доступен по паролю, хватило ума его включить, так юзайте rsa ключи, это не сложно.
                7. Веб интерфейс настроек маршрутизатора должен быть доступен по https и желательно с возможностью включить авторедирект.
                0
                Написать в техподдержку Calix GigaSpire? Не факт, что их это сильно заинтересует, но у вас появится тема для новой статьи )
                  +3

                  в случае с кибербезопасностью «тема для новой статьи» звучит довольно двусмысленно.

                    0
                    Мне кажется что их не заинтересует единичные случаи не верной конфигурации их оборудование. Это должно быть массово. Можно просто сказать что их софт потенциально позволяет небезопасную конфигурацию. Но на стаью это точно не растянуть)
                    0
                    root — ссылка на папку суперпользователя
                    Таки man proc говорит, что это ссылка на корень файловой системы с точки зрения процесса.
                      0

                      Я вот всегда ограничиваю управление роутером только из LAN и пробрасываю только необходимые порты наружу.
                      От уязвимостей и закладок не спасет, но, по крайней мере, никто извне не стучится по SSH на лампочку, например . Сильно спасает в нашем мире, когда в обычной домашней локалке десятки устройств сомнительного происхождения.

                        0
                        я еще поднял гостевую сеть на роутере и все левые устройства, включая телефон ребенка имеют доступ только к ней. А она только шлюзом в интернет

                      Only users with full accounts can post comments. Log in, please.