Зловмисники використовують бот Linux/Remaiten для компрометації embedded-пристроїв, частина 1

Спеціалісти ESET активно відстежують діяльність шкідливих програм, які використовуються зловмисниками для компрометації вбудованих пристроїв (embedded devices), наприклад, роутерів. Нещодавно ми виявили IRC-бот, який містить у собі функції декількох вже відомих шкідливих програм для Linux: Linux/Tsunami (a.k.a Kaiten) і Linux/Gafgyt. Шкідлива програма отримала назву Linux/Remaiten і оснащена новими функціями, які відрізняють її від цих шкідливих програм.



Ми спостерігали три версії Linux/Remaiten – 2.0, 2.1 та 2.2. На основі виявлених артефактів в коді ми встановили, що самі автори назвали це шкідливе ПЗ як «KTN-Remastered» або «KTN-RM». У нашому дослідженні ми опублікуємо дані аналізу Remaiten, а також розповімо про його унікальний механізм поширення, який був обраний зловмисниками. Цей механізм розрізняється в різних версіях бота.

Характерною особливістю сімейства інших шкідливих програм під назвою Linux/Gafgyt є сканування різних IP-адрес на предмет підключення на порт з номером 23 (Telnet). У разі виявлення такої жертви, шкідлива програма спробує підібрати облікові дані зі списку, зашитої в тіло шкідливої програми. У разі успішного входу, бот відправить жертві команди на завантаження виконуваних файлів шкідливої програми для різних архітектур мікропроцесорів.

Шкідлива програма Linux/Remaiten поліпшила використовуваний Gafgyt підхід. Замість завантаження виконуваних файлів всіх підтримуваних архітектур в пам'ять пристрою, туди завантажується тільки спеціальний завантажувач (downloader), який підтягує за собою компонент відповідної архітектури: MIPS або ARM. Завантажувач звертається до віддаленого C&C-сервера для завантаження файлу бота відповідної архітектури з його подальшим виконанням.

Технічний аналіз завантажувача

Завантажувач Linux/Remaiten представляє із себе невеликий виконуваний ELF-файл, який впроваджений в файл самого бота. При виконанні файлів на сервері жертви, завантажувач і бот підключаються до одного і того ж C&C-сервера, але на різні порти. При цьому туди буде відправлена одна з наступних команд:

  • «mips»
  • «mipsel»
  • «armeabi»
  • «armebeabi»
На ці команди керуючий C&C-сервер відповість виконуваним ELF-файл для запитуваної платформи.


Рис. 1. Завантажувач запитує ELF-файл з керуючого C&C-сервера для мікропроцесора архітектури MIPS.


Рис. 2. Код підключення завантажувача до C&C-сервера.

Завантажувач відправляє сигнатуру «mips» на C&C-сервер і відправляє відповідь потік stdout.


Рис. 3. Завантажувач запитує файл бота з C&C-сервера.

Сам бот працює в системі за умовчанням як сервіс або демон. Запуск бота з ключем «d» інструктує його активність як звичайного застосування (foreground). Після свого запуску в такому режимі, назва його процесу буде змінено на назву якого-небудь стандартного легітимного процесу, наприклад, «-bash» або «-sh». Ми спостерігали використання назви «-bash» у версії 2.1 і «-sh» у версії 2.2.


Рис. 4. Код запуску бота.

Функція під назвою create_daemon створює ім'я файлу під назвою «.kpid» в одному з зумовлених директорій цього демона і записує туди ідентифікатор (PID) свого процесу.


Рис. 5. Файлові директорії бота.

У разі присутності файлу «.kpid», шкідлива програма зчитує звідти ідентифікатор PID, при цьому процес з таким ідентифікатором завершується, а файл видаляється.


Рис. 6. Створення файлу демона з ідентифікатором PID.

Взаємодія з C&C-сервером

Потім бот випадковим чином підбирає адресу керуючого C&C-сервера з жорстко зашитого списку IP-адрес і підключається до певного порту.


Рис. 7. Процес підключення бота до C&C-сервера.

Потім бот реєструється на IRC-сервер і отримує від нього вітальне повідомлення з подальшими інструкціями. Ці інструкції будуть проаналізовані ботом і виконані на зараженому пристрої.


Рис. 8. Вітальне повідомлення, яке відправляє боту C&C-сервер.

Команди

Бот може відповідати керуючому C&C-сервера на різні IRC-команди. Вони вказані у спеціальному масиві в тілі шкідливої програми разом з їх обробниками.


Рис. 9. IRC-команди, підтримувані ботом.

Найбільш цікавою серед наведених команд є команда «PRIVMSG». Вона використовується C&C-сервером для інструктування бота на виконання різних шкідливих дій, таких як флудинг (flooding), завантаження файлів, сканування IP-адрес для підключення telnet, і т. д. Підтримувані «PRIVMSG» команди знаходяться також у спеціальному масиві в тілі шкідливої програми.


Рис. 10. Команди зловмисників, які підтримує бот.

Як видно, більшість перерахованих вище функцій бота були запозичені у шкідливої програми Linux/Tsunami, а також Linux/Gafgyt. Нижче на скріншоті представлені приклади рядків у файлі шкідливої програми, які видають її зловмисне поведінку. Рядки розгорнуто описують виконуються ботом функції, що полегшує їх розуміння.


Рис. 11. Можливості флудинга.


Рис. 12. Рядки, що відносяться до функцій сканування відкритих портів telnet, завантаження файлів, а також вбивства інших роботів.

Завантажувач

Як ми згадували вище, бот Linux/Remaiten використовує унікальний метод зараження інших пристроїв. Його виконуваний файл містить у собі кілька компактних завантажувачів для різної архітектури, кожен з яких буде використовуватись для зараження жертви відповідної архітектури. Після свого запуску на пристрої, завантажувач намагається завантажити з C&C-сервера виконуваний файл бота.


Рис. 13. Покажчики на завантажувачі різної архітектури для вбудованих пристроїв.


Рис. 14. Структура в тілі бота, яка описує властивості зберігаються завантажувачів.

Сканер telnet

Для активації сканера telnet, зловмисники посилають боту команду «QTELNET». Сканер є покращеною версією того ж компонента, який використовується під шкідливий ПО Gafgyt. Процес сканування поділяється на кілька етапів:
  1. на першому етапі довільно вибирається IP-адресу і бот намагається підключитися до порту з номером 23;
  2. на другому бот намагається підібрати правильну зв'язку логін/пароль для успішного входу на сервіс;
  3. на третьому визначається мікропроцесорна архітектура пристрою жертви.

Рис. 15. Процес підбору ботом пари логін/пароль для входу в аккаунт telnet.

Для виконання останнього етапу використовується команда «cat $SHELL», яка виконується на скомпрометованому пристрої, далі відбувається аналіз отриманого результату. Змінна оточення SHELL містить шлях до виконуваного ELF-файл, який маскується під процес інтерпретатора командного рядка. Бот аналізує заголовок ELF-файл для визначення його архітектури.


Рис. 16. Восьмий і дев'ятий кейси відповідають за визначення платформи жертви і перевіряють доступність завантажувача для неї.


Рис. 17. Частину коду функції, яка спеціалізується на розборі ELF-заголовка.

Далі бот вибирає підходящу для жертви корисну навантаження.


Рис. 18. Функція бота, яка спеціалізується на виборі корисного навантаження для відповідної архітектури.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.