Хадзимэ! Разбираемся, как устроен Hajime, известный троян для IoT

5 октября 2016 года на одном из ханипотов, принадлежащих исследовательской группе Rapidity Networks, был обнаружен подозрительный трафик. По всем признакам выходило, что в заботливо приготовленную специалистами по информационной безопасности ловушку угодил очередной клон Mirai — как минимум симптомы заражения казались очень похожими. Однако стоило исследователям взглянуть на находку чуть пристальнее, чтобы прийти к выводу: они имеют дело с чем-то принципиально новым.

Вредонос оказался не просто трояном для работающих под управлением Linux умных устройств, а самым настоящим сетевым червем, способным объединять зараженные девайсы в ботнеты. Трой получил имя Hajime — это слово используется в японских единоборствах в качестве команды к началу поединка. Схватка между Linux.Hajime и интернетом вещей получилась увлекательной, но главное — она продолжается до сих пор.

 

Взлом устройства

Как и в случае Mirai, в архитектуре Hajime используется генератор случайного диапазона IP, из которого исключаются локальные и служебные адреса, после чего полученный массив данных передается сканеру. Тот последовательно стучится на 23-й TCP-порт по каждому из адресов, пробуя установить Telnet-соединение. Если попытка увенчалась успехом, Hajime начинает брутить атакуемый хост с использованием словаря, зашитого в самом трояне.

Список логинов и паролей в словаре аналогичен тому, который использует Mirai, разве что к нему добавились пары значений root/5up и Admin/5up, с помощью которых Hajime атакует ряд моделей роутеров TP-Link и Atheros с дефолтной прошивкой. Главное отличие кроется в том, что Mirai пытается авторизоваться на удаленном устройстве, перебирая логины и пароли в случайном порядке, в то время как Hajime строго следует списку, причем после каждой неудачной попытки авторизации он закрывает текущее Telnet-соединение и создает новое.

Подобно разработчикам Mirai, создатели Hajime предполагали, что пользователи умных устройств далеко не всегда меняют заводские настройки, поэтому словарь содержит набор дефолтных логинов и паролей для разных девайсов. Взлом будет успешен только в том случае, если владелец аппарата поленился изменить предустановленные на заводе-изготовителе параметры авторизации, то есть сам себе злобный антропоморфный дендромутант.

Словарик для брута Hajime

Если брут удался, Hajime отправляет устройству команду enable, чтобы получить доступ к привилегированному режиму интерфейса командной строки. За ней следует команда system для перехода в меню системных опций, а затем команды shell и sh запускают командный интерпретатор. Чтобы проверить, запустился ли нужный для его работы шелл, Hajime передает на атакуемый хост строку /bin/busybox ECCHI. Специфические оболочки не смогут обработать эту команду, в то время как стандартный sh запустит BusyBox, который вернет сообщение об ошибке в аргументе — ECCHI: applet not found. Это позволит Hajime понять, что он на верном пути.

 

Исследование девайса

Окончательно убедившись в том, что он попал в Linux-окружение и имеет доступ к командной строке, Hajime начинает исследовать взломанное устройство. Для начала он получает из файла /proc/mounts список смонтированных файловых систем и ищет открытые на запись папки. Обнаружив первую такую папку, отличную от /proc, /sys или /, Hajime проверяет, действительно ли в нее разрешена запись и не хранится ли уже в ней троянский бинарник. В дальнейшем эта папка будет использоваться в качестве рабочей директории.

Затем Hajime исследует заголовок файла /bin/echo, чтобы определить тип процессора скомпрометированного устройства. В зависимости от аппаратной архитектуры на девайс будет скачан соответствующий ELF-файл, в котором реализован инфектор, доставляющий в систему полезную нагрузку. Hajime поддерживает ARMv5, ARMv7, MIPS и, конечно же, Intel x86-64.

Источник: xakep.ru

Ответить

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