Обнаружен вредоносный модуль Turla/Snake/Uroburos для Linux-машин
Недавно на мультисканер был загружен интересный вредоносный образец, который сразу привлёк наше внимание. Дело в том, что он, по всей видимости, представляет ранее неизвестную часть известной головоломки. Название головоломки – Turla; это одна из наиболее сложных APT-угроз в мире.
Мы уже писали о Turla в блогпостах «Кампания Epic Turla» и «Agent.btz — источник вдохновения?»
До сих пор каждый образец Turla, попадавший нам в руки, был предназначен для ОС Microsoft Windows – 32- или 64-битной версии. Недавно найденный образец необычен тем, что это первый обнаруженный нами образец Turla, предназначенный для ОС Linux.
Вновь обнаруженный компонент Turla предназначен для Linux – таким образом расширяется число поддерживаемых ОС на компьютерах жертв. Это средство атаки расширяет известный нам инструментарий злоумышленников, в который входит руткит Snake, а также компоненты, о которых впервые упоминалось применительно к данной группировке пару лет назад. Мы подозреваем, что этот компонент годами работал на зараженном компьютере, но не располагаем конкретными данными в поддержку этого предположения.
Linux-модуль Turla – это исполняемый файл C/C++, статически скомпонованный с использованием множества библиотек, что значительно увеличило размер файла. Вся текстовая информация из файла убрана – скорее всего, не для того чтобы уменьшить размер файла, а для того чтобы усложнить анализ для сторонних исследователей. Функционал модуля включает скрытый обмен данными по сети, удаленное исполнение произвольных команд и удаленное управление. Большая часть кода взята из публично доступных источников.
MD5-сумма | Размер | Вердикт |
0994d9deb50352e76b0322f48ee576c6 | 627.2 kb | Отсутствует (файл поврежден) |
14ecd5e6fc8e501037b54ca263896a11 | 637.6 kb | HEUR:Backdoor.Linux.Turla.gen |
Общие характеристики исполняемого файла:
Исполняемый 32-разрядный ELF-файл, совместим с Linux Standard Base, Intel 80386, версия 1 (SYSV), статически скомпонован, для GNU/Linux 2.2.5, текстовая информация удалена.
Статически скомпонованные библиотеки:
- glibc2.3.2 — библиотека GNU C
- openssl v0.9.6 – более старая библиотека OpenSSL
- libpcap – библиотека для захвата сетевого трафика, входящая в состав утилиты Tcpdump
В коде жестко прописан адрес командного сервера news-bbc.podzone[.]org, известного в связи активностью Turla. Домен имеет IP-адрес 80.248.65.183 в PowerDNS.
1 2 3 4 5 6 7 8 9 10 11 |
80.248.65.183 aut-num: AS30982 announcement: 80.248.65.0/24 as-name: CAFENET descr: CAFE Informatique et telecommunications admin-c: YN2-AFRINIC tech-c: AN39-AFRINIC org: ORG-CIet1-AFRINIC mnt-by: AFRINIC-HM-MNT mnt-lower: CAFENET-NOC source: AFRINIC # Filtered |
Примечание. В данный момент трафик на командный сервер, расположенный по данному адресу, перенаправляется на sinkhole-маршрутизатор «Лаборатории Касперского».
Описание функционала
Образец представляет собой бэкдор, скрывающий свое присутствие в зараженной системе и основанный на исходном коде cd00r.
Этот вредоносный компонент Turla на основе кода cd00r обеспечивает незаметность работы, не требуя повышения привилегий в системе и при этом позволяя удаленно исполнять произвольные команды. Его нельзя обнаружить через популярное средство администрирования netstat. Он использует методы, не требующие root-прав, и потому может более широко использоваться на большем количестве зараженных компьютеров. Даже если его запускает обычный пользователь с ограниченными правами, данный компонент может перехватывать входящие пакеты и исполнять в системе присылаемые команды.
Запуск и исполнение
Для запуска процесс требует два параметра: ID (числовое значение, используемое как часть «магического пакета для аутентификации») и имя существующего сетевого интерфейса. Параметры можно ввести двумя различными путями: из STDIN или через дроппер, запускающий образец. Речь идет НЕ о параметре командной строки, а о реальной строке приглашения, в котором атакованному пользователю предлагается указать входные параметры. После ввода ID и имени интерфейса и запуска процесса возвращается значение идентификатора процесса (PID) бэкдора. Вот скриншот этого простого интерфейса:
Соединение с командным сервером сразу после заражения не предусмотрено, однако одна из секций кода содержит строку с жестко прописанным адресом командного сервера – «news-bbc.podzone[.]org». Это полное доменное имя зарегистрировано в 2010 г.; можно предположить, что данный исполняемый файл используется в кампаниях Turla относительно недавно. Кроме того, мы не наблюдали активного скачивания файлов данным инструментом с этого сервера; вероятно, он использовался как своеобразный файловый сервер.
Магические пакеты для исполнения удаленных команд
Данный модуль статически компонует библиотеки PCAP и использует этот код для получения сокета прямого доступа, к которому применяет фильтр, проверяя выполнение определенного условия (этот метод впервые использован в исходном бэкдоре cd00r на основе портов и SYN-пакетов). Данное условие сформулировано ниже – оно основано на значении ID, введенном злоумышленником при запуске атаки:
ID = 321 Filter = (tcp[8:4] & 0xe007ffff = 0x1bebe) or (udp[12:4] & 0xe007ffff = 0x1bebe)
Проще говоря, проверяется значение ACK в заголовке TCP или второй байт из тела UDP-пакета.
Если принят такой пакет и проверка показала, что условие выполняется, то начинает выполняться вредоносный функционал, который содержится в пакете, и создаётся обычный сокет. Бэкдор оперирует этим сокетом как файлом, открытым для чтения и записи. В данном коде не используются обычные команды receive/send. Новый сокет используется для установления соединения с адресом, с которого приходят «магические пакеты». Затем бэкдор отправляет на удаленный адрес свой PID и IP-адрес и запускает бесконечный цикл по приёму удаленных команд. Когда приходит команда, она выполняется с помощью скрипта «/bin/sh -c «.
Более подробный анализ функциональных возможностей этого образца будет представлен позднее.
Заключение
Хотя ранее было известно о существовании модулей под Linux для платформы Turla, до настоящего времени мы не наблюдали ни одного такого модуля «в дикой среде».
По всей видимости, данный модуль большей частью составлен из кода, доступного из публичных источников, однако часть функционала добавлена киберпреступниками. Некоторые части вредоносного кода, по-видимому, неактивны – возможно, они остались от более старых версий модуля. Наверное, самая интересная часть – это необычный механизм управления, основанный на обмене данными через TCP/UDP пакеты, а также то, что имя хоста командного сервера уже было использовано в кампаниях Turla.
Обнаружение этого модуля Turla приводит нас к важному вопросу: сколько же еще существует неизвестных вариантов Turla?
Примечание. После публикации этого блогпоста мы обнаружили ещё один модуль Turla для Linux. По сравнению с ранее известными образцами, он, по всей видимости, относится к другому поколению зловреда.
Новый образец был эвристически детектирован нашим продуктом благодаря сходству с ранее обнаруженными образцами.
MD5-сумма | Размер | Вердикт |
19fbd8cbfb12482e8020a887d6427315 | 801 561 байтов | HEUR:Backdoor.Linux.Turla.gen |
Turla: теперь и под Linux