В первой части нашего ресерча мы рассмотрели несколько особенностей вредоносной программы Linux/Remaiten, а именно, внутреннее устройство загрузчика бота, его взаимодействие с управляющим C&C-сервером, обрабатываемые ботом команды, а также сканер telnet для поиска других потенциальных жертв. Мы также отметили присутствие компонентов вредоносной программы для микропроцессоров архитектур MIPS и ARM. Кроме этого, мы удивились, обнаружив намек на присутствие ботов для таких платформ Power PC и SuperH.
Во второй части мы более детально остановимся на процессе заражения вредоносной программой других устройств, а также другой интересной функции, которая позволяет Linux/Remaiten завершать процессы других ботов и программ в Linux.
Заражение других устройств
Первым шагом в этом процессе является поиск записываемой (writable) директории. Бот содержит список популярных путей к таким директориям, их список указан ниже на скриншоте.
Рис. 19. Список директорий на устройстве жертвы, куда может быть скопирован загрузчик.
После этого бот, по непонятным причинам, создает исполняемые файлы под названием «.t», «retrieve» и «binary». Файл «retrieve» будет содержать сам загрузчик, а «binary» запрашивается ботом с управляющего C&C-сервера. Файл «.t» вредоносной программой не используется.
Рис. 20. Десятый кейс специализируется на подготовке переноса полезной нагрузки на устройство и его исполнении.
Вредоносная программа использует странный способ создания пустых исполняемых файлов: она копирует стандартный исполняемый файл под названием busybox, который присутствует в большинстве embedded-устройств, а затем удаляет из него все содержимое командой «>file». Загрузчик передается на устройство через telnet простой echo-командой, при этом каждый байт исполняемого файла кодируется с использованием escape-последовательности «xHH». Мы наблюдали схожую технику распространения в другой вредоносной программе под названием Linux/Moose.
Рис. 21. Код из 11-го кейса, который специализируется на передаче полезной нагрузки с использованием команды echo.
Исполнение загрузчика и IRC-бота
После того как загрузчик был скопирован на устройство жертвы, он пытается загрузить на него полезную нагрузку вредоносной программы. Загрузчик запрашивает исполняемый файл бота с управляющего C&C-сервера и записывает его в поток stdout. В начале своего запуска, загрузчик перенаправляет поток stdout в файл с названием «binary». Наконец, файл «binary» запускается на исполнение и IRC-бот становится активным.
Рис. 22. Код из 13-го кейса, который специализируется на запуске на исполнение загрузчика и бота.
Отправка статуса на управляющий C&C-сервер
Последним этапом для бота является информирование C&C-сервера об успешности заражения другого устройства. В обоих случаях, т. е. как в случае успешного заражения, так и нет, бот также отправляет на сервер пару логин/пароль, которая использовалась для доступа к аккаунту telnet. Возможно, операторы попытаются заразить устройство вручную, если с этим не справится используемый автоматический метод вредоносной программы.
Рис. 23. Код 14-го кейса, который специализируется на информировании C&C-сервера о статусе заражения другого устройства.
Завершение работы других ботов
Другой интересной командой бота является команда «KILLBOTS». В случае ее получения, вредоносная программа извлекает список запущенных процессов и выполняет поиск тех из них, которые нужно завершить. Поиск основывается на нескольких критериях, основным из которых является поиск по названию.
Рис. 24. Список названий процессов для завершения.
Рис. 25. Список процессов, которые бот игнорирует.
Вредоносная программа Linux/Remaiten специализируется на завершении только тех процессов, которые были запущены от интерактивной оболочки (shell) /dev/tty. Она также отправляет на C&C-сервер название завершенного процесса. Возможно, такая операция осуществляется для улучшения белого и черного списка процессов вредоносной программы.
Рис. 26. Бот отправляет сообщение на сервер, а потом убивает сам процесс API-функцией kill.
Эволюция бота
Между различными версиями бота присутствуют несущественные изменения, например, различается состав белых и черных списков процессов для завершения, отличаются директории, используемые загрузчиком для копирования туда тела бота и др. Логично предположить, что эти и другие аналогичные изменения в каждом новом билде вредоносной программы, присутствуют в одной и той же версии вредоносной программы. Загрузчик не подвергается изменению, за исключением изменения списка жестко зашитых IP-адресов и номеров портов.
Однако, в версии 2.2 вредоносной программы авторы внесли существенное изменение. Оно заключается в использовании команд wget/tftp для загрузки скрипта shell, который, в свою очередь, специализируется на загрузке бота. Схожая схема используется вредоносной программой Gafgyt. В том случае, когда эти две команды не выполняют свою работу корректно, он загружает на устройство сам загрузчик.
Рис. 27. Вредоносная программа информирует свой C&C-сервер о развертывании бота с использованием инструментов wget/tftp.
Скрипт командной строки распространяется через другой сервер, который также используется для вредоносной программы Gafgyt.
Рис. 28. Командный shell-скрипт, который распространяется через другой сервер.
Командный файл al.sh указывает на присутствие у злоумышленников ботов для микропроцессоров архитектур PowerPC и SuperH. До вредоносной программы Remaiten мы не наблюдали использование злоумышленниками ботов для таких архитектур.
Рис. 29. Поддерживаемые злоумышленниками архитектуры.
Рис. 30. Начало файла скрипта.
Управляющий C&C-сервер, который используется в версии 2.0 вредоносной программы, использует странное welcome-сообщение. Оно содержит ссылку на известный блог исследователей вредоносных программ под названием MalwareMustDie.
Рис. 31. Welcome-сообщение версии бота 2.0 содержит отсылку к блогу MalwareMustDie.
Мы предполагаем, что это попытка скомпрометировать команду MalwareMustDie в глазах пользователей, т. к. они размещали достаточное количество материала, который изобличает деятельность Gafgyt и Tsunami.
Индикаторы компрометации (IoC)
Версия бота 2.0
Версия бота 2.1
Версия бота 2.2
Версия загрузчика 2.0
Версия загрузчика 2.1
Версия загрузчика 2.2
C&C версии 2.0
Бот: 185.130.104.131:443
Загрузчик: 185.130.104.131:25566
C&C версии 2.1
Бот: 185.130.5.201:53
Загрузчик: 185.130.5.201:25566
C&C версии 2.2
Бот:185.130.5.202:23
Загрузчик: 185.130.5.202:443
Во второй части мы более детально остановимся на процессе заражения вредоносной программой других устройств, а также другой интересной функции, которая позволяет Linux/Remaiten завершать процессы других ботов и программ в Linux.
Заражение других устройств
Первым шагом в этом процессе является поиск записываемой (writable) директории. Бот содержит список популярных путей к таким директориям, их список указан ниже на скриншоте.
Рис. 19. Список директорий на устройстве жертвы, куда может быть скопирован загрузчик.
После этого бот, по непонятным причинам, создает исполняемые файлы под названием «.t», «retrieve» и «binary». Файл «retrieve» будет содержать сам загрузчик, а «binary» запрашивается ботом с управляющего C&C-сервера. Файл «.t» вредоносной программой не используется.
Рис. 20. Десятый кейс специализируется на подготовке переноса полезной нагрузки на устройство и его исполнении.
Вредоносная программа использует странный способ создания пустых исполняемых файлов: она копирует стандартный исполняемый файл под названием busybox, который присутствует в большинстве embedded-устройств, а затем удаляет из него все содержимое командой «>file». Загрузчик передается на устройство через telnet простой echo-командой, при этом каждый байт исполняемого файла кодируется с использованием escape-последовательности «xHH». Мы наблюдали схожую технику распространения в другой вредоносной программе под названием Linux/Moose.
Рис. 21. Код из 11-го кейса, который специализируется на передаче полезной нагрузки с использованием команды echo.
Исполнение загрузчика и IRC-бота
После того как загрузчик был скопирован на устройство жертвы, он пытается загрузить на него полезную нагрузку вредоносной программы. Загрузчик запрашивает исполняемый файл бота с управляющего C&C-сервера и записывает его в поток stdout. В начале своего запуска, загрузчик перенаправляет поток stdout в файл с названием «binary». Наконец, файл «binary» запускается на исполнение и IRC-бот становится активным.
Рис. 22. Код из 13-го кейса, который специализируется на запуске на исполнение загрузчика и бота.
Отправка статуса на управляющий C&C-сервер
Последним этапом для бота является информирование C&C-сервера об успешности заражения другого устройства. В обоих случаях, т. е. как в случае успешного заражения, так и нет, бот также отправляет на сервер пару логин/пароль, которая использовалась для доступа к аккаунту telnet. Возможно, операторы попытаются заразить устройство вручную, если с этим не справится используемый автоматический метод вредоносной программы.
Рис. 23. Код 14-го кейса, который специализируется на информировании C&C-сервера о статусе заражения другого устройства.
Завершение работы других ботов
Другой интересной командой бота является команда «KILLBOTS». В случае ее получения, вредоносная программа извлекает список запущенных процессов и выполняет поиск тех из них, которые нужно завершить. Поиск основывается на нескольких критериях, основным из которых является поиск по названию.
Рис. 24. Список названий процессов для завершения.
Рис. 25. Список процессов, которые бот игнорирует.
Вредоносная программа Linux/Remaiten специализируется на завершении только тех процессов, которые были запущены от интерактивной оболочки (shell) /dev/tty. Она также отправляет на C&C-сервер название завершенного процесса. Возможно, такая операция осуществляется для улучшения белого и черного списка процессов вредоносной программы.
Рис. 26. Бот отправляет сообщение на сервер, а потом убивает сам процесс API-функцией kill.
Эволюция бота
Между различными версиями бота присутствуют несущественные изменения, например, различается состав белых и черных списков процессов для завершения, отличаются директории, используемые загрузчиком для копирования туда тела бота и др. Логично предположить, что эти и другие аналогичные изменения в каждом новом билде вредоносной программы, присутствуют в одной и той же версии вредоносной программы. Загрузчик не подвергается изменению, за исключением изменения списка жестко зашитых IP-адресов и номеров портов.
Однако, в версии 2.2 вредоносной программы авторы внесли существенное изменение. Оно заключается в использовании команд wget/tftp для загрузки скрипта shell, который, в свою очередь, специализируется на загрузке бота. Схожая схема используется вредоносной программой Gafgyt. В том случае, когда эти две команды не выполняют свою работу корректно, он загружает на устройство сам загрузчик.
Рис. 27. Вредоносная программа информирует свой C&C-сервер о развертывании бота с использованием инструментов wget/tftp.
Скрипт командной строки распространяется через другой сервер, который также используется для вредоносной программы Gafgyt.
Рис. 28. Командный shell-скрипт, который распространяется через другой сервер.
Командный файл al.sh указывает на присутствие у злоумышленников ботов для микропроцессоров архитектур PowerPC и SuperH. До вредоносной программы Remaiten мы не наблюдали использование злоумышленниками ботов для таких архитектур.
Рис. 29. Поддерживаемые злоумышленниками архитектуры.
Рис. 30. Начало файла скрипта.
Управляющий C&C-сервер, который используется в версии 2.0 вредоносной программы, использует странное welcome-сообщение. Оно содержит ссылку на известный блог исследователей вредоносных программ под названием MalwareMustDie.
Рис. 31. Welcome-сообщение версии бота 2.0 содержит отсылку к блогу MalwareMustDie.
Мы предполагаем, что это попытка скомпрометировать команду MalwareMustDie в глазах пользователей, т. к. они размещали достаточное количество материала, который изобличает деятельность Gafgyt и Tsunami.
Индикаторы компрометации (IoC)
Версия бота 2.0
Версия бота 2.1
Версия бота 2.2
Версия загрузчика 2.0
Версия загрузчика 2.1
Версия загрузчика 2.2
C&C версии 2.0
Бот: 185.130.104.131:443
Загрузчик: 185.130.104.131:25566
C&C версии 2.1
Бот: 185.130.5.201:53
Загрузчик: 185.130.5.201:25566
C&C версии 2.2
Бот:185.130.5.202:23
Загрузчик: 185.130.5.202:443