Откуда взялся Mirai? Разбираемся, как устроен ботнет из видеокамер

camer

Что за Mirai? Вы о чём?

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

Это же сколько компьютеров он поработил для этого?

Нисколько. Или, по крайней мере, очень мало. Целевые устройства Mirai вовсе не компьютеры, а IoT устройства — видеорегистраторы, камеры, тостеры… По статистике Level 3 Communications к концу октября под контролем трояна находилось уже около полумиллиона устройств.

И что, он прям любые камеры с холодильниками может захватить?

Не совсем. Mirai заточен под устройства, работающие на базе Busybox — упрощённого набора UNIX-утилит командной строки, который используется в качестве основного интерфейса во встраиваемых операционных системах. Троян атакует только определенные платформы, например ARM, ARM7, MIPS, PPC, SH4, SPARC и x86. В зоне риска находятся только устройства с заводскими настройками или совсем слабой защитой — инфицирование происходит с помощью брутфорс-атаки на порт Telnet, для которого используется список учётных данных администратора по умолчанию.

Как-то неэффективно получается — искать по всему интернету камеры без паролей — разве нет?

А вот и не угадали. Журналист из The Atlantic провёл эксперимент — арендовал сервер, и написал программу, которая изображает из себя тостер. Первая атака на «бытовой прибор» произошла уже спустя 40 минут! В течении последующих 11 часов «тостер» пытались взломать более чем 300 раз. Дело в том, что ботнеты достигли невиданных размеров, и пространство адресов IPv4 для них очень маленькое. Причём стоит помнить, что хакеры ищут уязвимые устройства не вручную — это делают участники ботнета. И, так как каждый новообращённый «работник» сам тоже начинает искать жертв, ботнет растёт в геометрической прогрессии.

В геометрической прогрессии? То есть через год ботнеты будут содержать триллионы устройств?!

Конечно нет 😀 Дело в том, что количество IoT устройств конечно. И это уже достаточно актуальная проблема. Автор Mirai признаётся, что максимальное число устройств в его сети было 380 тысяч, и после нескольких атак, когда пользователи и провайдеры стали предпринимать меры защиты, число устройств упало до 300 тысяч и продолжает снижаться.

После того, как исходный код Mirai был выложен в открытый доступ, все, кому не лень очень многие хакеры стали использовать его. В настоящее время количество крупных ботнетов на основе этого трояна — около 52. Стоит уточнить, что каждое устройство может принадлежать только к одной сети — сразу после захвата устройства зловред обеспечивает его защиту от повторного заражения. Единственный случай, когда устройство может перейти другому «владельцу» — это перезапуск устройства. По словам специалистов, после перезапуска устройство будет заражено снова в течение 30 секунд.

То есть эффективность Mirai снижается?

Да. Хакеры вынуждены бороться за ограниченное количество ресурсов, которое скорее сокращается (за счёт мер предосторжности), чем растёт. Ситуацию осложняет ещё то, что хакеры на редксоть эгоистичны — так, после крупной атаки на Либерию управляющий сервер (Command and Control, C&C) ботнета был просто выключен — теперь ботсеть оказалась бесполезной, да и неуязвимой к новым атакам. Каждая новая сеть на основе Mirai будет меньше предыдущих и сможет осуществлять только атаки малой мощности. К примеру, во время выборов в США были произведены слабые атаки на сайты Клинтон и Трампа. Они не нанесли никакого ущерба, и их вообще никто не заметил (кроме компании, которая специально следит за действиями этого трояна).

Понятно. А что ещё интересного известно про этот троян?

Он является наследником другого трояна, который известен под именами Gafgyt, Lizkebab, BASHLITE, Bash0day, Bashdoor и Torlus. Последний известен тем, что смог подчинить себе около миллиона веб-камер по оценке всё той же Level 3 Communications. Известно также, что большинство ботнетов используют не чистую копию Mirai, а свои, модифицированные версии (что весьма ожидаемо).

Ещё один интересный факт состоит в том, что пользователи рунета нашли в исходном коде Mirai русский след — в файле cnc/admin.go есть вывод комментариев на русском языке:

cnc/admin.go: this.conn.Write([]byte(«\033[34;1mпользователь\033[33;3m: \033[0m»))
cnc/admin.go: this.conn.Write([]byte(«\033[34;1mпароль\033[33;3m: \033[0m»))
cnc/admin.go: this.conn.Write(append([]byte(«\r\033[37;1mпроверив счета… \033[31m»), spinBuf[i % len(spinBuf)]))

С другой стороны, это выглядит скорее как шутка — «проверив счета…» явная калька (машинный перевод?) с «checking accounts».

Пётр Соковых, транслятор двоичного кода в русский язык