PRO вирусы. Версия 4.0 (Холмогоров) - страница 70

и 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.


Инфектор

Выяснив, какой процессор установлен на взломанном устройстве, Hajime отправляет командному интерпретатору директиву wget для загрузки бинарника для соответствующей архитектуры. Этот ELF-файл занимает менее 500 байт и изначально написан на ассемблере. Образцы бинарника, разработанные под различную аппаратную конфигурацию, отличаются друг от друга незначительно, в частности имеют разную структуру sockaddr размером 6 байт, в которой сохраняется IP-адрес и номер порта девайса, откуда изначально выполнялся взлом скомпрометированного устройства. В этом и есть одна из особенностей Hajime: адрес для получения полезной нагрузки записан в структуре sockaddr самого инфектора, а не определяется динамически.

Инфектор устанавливает TCP-соединение с указанным хостом и принимает оттуда поток байтов. Этот поток перенаправляется на стандартный вывод stdout и по конвейеру сохраняется в файл, который будет запущен на выполнение. Так на взломанное устройство попадает основной модуль трояна. Где-то с середины 2017 года создатели некоторых версий Hajime перестали заморачиваться с ассемблерными инфекторами и вместо этого начали качать полезную нагрузку с помощью Wget или TFTP. Процесс заражения стал проще, но при этом несколько потерял в надежности.