Злоумышленники используют Linux/Moose для компрометации Linux-embedded систем, часть 1
Вредоносное ПО Linux/Moose используется злоумышленниками для компрометации различных устройств под управлением Linux, включая, сетевые роутеры. На скомпрометированном роутере или другом устройстве Linux/Moose будет перехватывать сетевой трафик и обеспечивать ее операторов прокси-сервисом. Как правило, злоумышленников интересуют служебные файлы сессий HTTP (cookie) от популярных сетевых сервисов. Они будут использоваться злоумышленниками для выполнения в них различных нелегитимных действий через прокси.
Вредоносная программа представлена обычными исполняемыми ELF-файлами, из которых удалена вся отладочная информация. Linux/Moose использует в своей работе многопоточность, для выполнения различных задач он создает более 30 потоков. Многие из них используются для автоматического поиска и заражения других устройств.Общие сведения
Linux/Moose использует неординарные механизмы network-penetration в сравнении с другими вредоносными программами, ориентированными на роутеры. Он также специализируется на перенаправлении DNS-трафика (DNS hijacking) и принудительном завершении процессов других вредоносных программ в случае их активности в системе.
Нам удалось собрать различную статистику о работе Moose за счет создания специального окружения, а также отследить взаимодействие зараженной системы с сетевыми сервисами, на компрометацию которых нацелен вредоносный код. Вредоносная программа не имеет в своем арсенале механизмов, которые позволяли бы ей выживать после перезагрузки устройства. Она также не специализируется на предоставлении удаленного shell-доступа операторам ботнета.
Ниже перечислены ключевые находки, которые нам удалось получить при анализе Linux/Moose.
Вредоносная программа нацелена на компрометацию домашних роутеров и модемов, в том числе и тех, которые предоставляются пользователям ISP-провайдерами. Linux/Moose содержит механизмы для своего проникновения в сеть, обслуживаемую роутером. Вредоносная программа может перехватывать трафик, который проходит через скомпрометированное устройство, таким образом она может прослушивать различные типы устройств, включая, ПК, ноутбуки и смартфоны. Moose запускает на скомпрометированном устройстве комплексный прокси-сервис (SOCKS и HTTP), к которому можно получить доступ только с фиксированного списка IP-адресов. Операторы используют зараженные устройства для выполнения с них мошеннических действий в социальных сервисах Twitter, Facebook, Instagram, YouTube, и др. Злоумышленники могут сконфигурировать вредоносную программу таким образом, что она будет перенаправлять DNS-трафик, проходящий через роутер. Подобный прием позволяет им организовать атаку типа Man-in-the-Middle (MitM). Moose заражает т. н. Linux-based embedded устройства, которые работают на архитектуре MIPS и ARM. Исследование Moose показало нам следующие особенности этой вредоносной программы.Она обладает механизмами распространения своих файлов в сети Интернет при помощи LAN-интерфейсов скомпрометированного роутера. Сервис Moose прослушивает порт с номером 10073, который позволяет определенным IP-адресам выполнять прокси-подключения через скомпрометированное устройство. Для организации прокси используются протоколы HTTP/HTTPS и SOCKS. Вредоносная программа умеет направлять трафик от управляющего C&C-сервера к другим хостам, что позволяет эффективно обходить системы защиты NAT. Moose прослушивает сетевые соединения, проходящие через роутер, и отправляет часть полученного трафика на C&C-сервер. Moose периодически отслеживает присутствие в скомпрометированной ОС других вредоносных программ и принудительно завершает их процессы в случае обнаружения. Вредоносная программа не имеет особенных механизмов по компрометации других систем. Компрометации подвергаются только те из них, которые имеют слабые учетные данные входа в аккаунт. Moose не использует какие-либо уязвимости в ОС или ПО для компрометации других устройств. На самом деле такой простой метод компрометации все еще является весьма эффективным, согласно недавнему отчету FireEye, он является одной из десяти самых актуальных причин утечки или кражи данных компаний. Ниже приведена общая схема работы Moose.Рис. Общая схема работы Linux/Moose.
Вредоносная программа периодически взаимодействует со своими управляющими C&C-серверами, список которых жестко зашит в ее исполняемом файле. Для этого вредоносная программа выбирает один из таких серверов, который в дальнейшем будет предоставлять ей информацию о конфигурации и отправлять инструкции. Этот сервер мы называем конфигурационным C&C-сервером (configuration C&C server). Существуют также и другие типы управляющих серверов, которым мы дали названия отчетный C&C-сервер (report C&C server) и C&C-сервер ретрансляции (relay C&C server). На первый Moose передает отчеты о заражении, а второй используется для операция NAT traversal.
Компрометация сетевых сервисов и использование прокси
При анализе Moose мы обнаружили множество возможностей, которые она предоставляет для злоумышленников. Эти возможности были указаны выше. Для получения более детальной картины мы запустили свои собственные зараженные устройства. Ниже указаны HTTP cookie, которые бот пытается украсть для дальнейшего проведения мошеннических действий со стороны злоумышленников.
Twitter: twll, twid Facebook: c_user Instagram: ds_user_id Google: SAPISID, APISID Google Play / Android: LAY_ACTIVE_ACCOUNT Youtube: LOGIN_INFO Мы отслеживали состояние одного из зараженных роутеров, который находился под защитой брандмауэра, и смогли получить данные статистики прокси-трафика, проходящего через него. Статистика собиралась почти месяц весной 2015 г.Рис. Статистика прокси-трафика, распределенного по портам.
На диаграмме выше видно, что большая часть этого трафика является зашифрованным. Трафик оператора вредоносной программы проходит через TCP-порт под номером 2318. Этот порт используется для связи с внешним IP-адресом зараженного устройства и прокси-клиента. Стоит отметить, что большинство зафиксированного нами трафика на зараженном роутере принадлежало социальному сервису Instagram (HTTP), причем уровень протокола затем был повышен с HTTP до уровня защищенного соединения HTTPS с использованием поля Location: протокола.
Рис. Сервер сервиса Instagram переводит клиента (фальшивый аккаунт) на использование протокола HTTPS с использованием поля Location HTTP-протокола.
На первом этапе видно использование прокси по протоколу SOCKS, далее видно переключение клиента в режим HTTPS со стороны сервера. Хотя передаваемый трафик является зашифрованным, мы можем увидеть IP-адрес хоста назначения. Кроме того, мы можем проверить сертификат, который идентифицирует сервер и его т. н. Common Name (CN). CN представляет из себя обязательный атрибут, который позволяет проверить подлинность веб-сайта и предоставляющий нам точное описание назначения передаваемого трафика.
Рис. Распределение трафика HTTPS (прокси) по сервисам на примере скомпрометированного роутера.
Видно, что наибольшая часть трафика принадлежала сервисам Twitter, Instagram, Soundcloud. На диаграмме справа представлены сервисы, входящие в пункт «Другие». В дополнение к зашифрованным данным, мы смогли получить данные об автономных системах (Autonomous Systems, AS), в которые направлялся проксируемый трафик через механизм пассивной информации DNS (passive DNS information). Ниже приведен список организаций, которые были затронуты Linux/Moose.
Fotki (Yandex) Instagram (Facebook) Live (Microsoft) Soundcloud Twitter Vine Yahoo YouTube (Google) Мы также смогли получить информацию о количестве запросов на веб-сервисы, которые были сделаны через прокси и для какой задачи этот прокси использовался.Рис. Наглядное представление активности прокси, трафик распределен по типу передаваемой информации.
На диаграмме выше видно, что наибольшая часть трафика принадлежит сетевым сервисам, которые были идентифицированы благодаря вышеупомянутым сертификатам CN, пассивной информации DNS, а также IP адресам автономной системы. Трафик ботнета представляет из себя количество запросов прокси, которые были отправлены на управляющий C&C-сервер и всегда предназначались для TCP-порта 2318. Все остальные запросы относятся к типу «Другие». Очевидно, что вышеприведенная статистика показывает факт активного использования зараженных компьютеров злоумышленниками для нелегитимного доступа к социальным сервисам, причем, в среднем, ежедневно через зараженный роутер проходит более 500 запросов.
Несмотря на наши усилия, мы не смогли надежно подсчитать число скомпрометированных маршрутизаторов. Сам Moose создан таким образом, чтобы усложнить выполнение такой операции. Бот не использует P2P протокол, вместо этого в его коде жестко зашит IP-адрес управляющего C&C-сервера, он также позволяет подключаться к прокси только клиентам из определенного списка IP-адресов. Другой причиной нашей неудачи было отсутствие желания у хостинг-провайдеров помочь нам в расследовании. Мы использовали иные механизмы подсчета количества зараженных устройств, которые приведены ниже.
Одним из таких механизмов подсчета активности Moose на порт 10073 стал Internet Storm Center. Данный порт не регламентирован организацией IANA и не используется ни одним популярным ПО, поэтому аномально большое количество трафика, проходящее через этот порт, свидетельствует об активности этой вредоносной программы.
Рис. Активность потенциально скомпрометированных устройств на 10073 порту.
Выше на рисунке можно увидеть, что значительный рост активности Moose наблюдался с середины 2014 г., точнее, с апреля. Мы же впервые столкнулись с этим вредоносным ПО в конце июля 2014 г. В конце 2014 г. его активность стала снижаться, несмотря на то, что сами авторы постоянно занимаются обновлением вредоносной программы.
В сам бот злоумышленники заложили достаточно агрессивные механизмы распространения. Ниже приведена статистика активности бота по поиску новых устройств для компрометации за 24 часа.
Рис. Статистика сканирования ботом новых устройств для компрометации за 24 часа.
За 24 часа бот выполнил 170 тыс. попыток подключений на порт 10073, что соответствует 23 тыс. уникальных хостов. Из них 36 подключений оказались успешными и закончились TCP-подключениями (handshake), что означает потенциальную возможность компрометации этих устройств. Из 85 тыс. попыток подключений по Telnet, которые были выполнены на 18 тыс. уникальных хостов, 161 попытка закончилась запросом учетных данных Telnet.
На самом деле, эта статистика может быть неточной, поскольку она в значительной степени зависит от типа оборудования, на котором работает вредоносная программа. Мы запускали бот в режиме программной эмуляции, что является замедляющим фактором в работе вредоносной программы. Иными словами, мы не знаем, насколько эти данные соответствуют данным на реально зараженном устройстве.
Мы также попросили наших друзей из Rapid7 просканировать пространство адресов Интернет на предмет доступности обоих портов 10073 и 23 (Telnet) для того, чтобы представить себе общую картину устройств и компьютеров, подпадающих под «ориентировку Moose». Оказалось, что 1 млн. IP-адресов соответствуют этому требованию. Если мы вычтем из этого числа количество устройств (IP), которые не запрашивали учетные данные для подключения по Telnet, то мы получим около 50 тыс. потенциально зараженных хостов.
Вредоносное ПО Linux/Moose требует Linux ОС в качестве окружения для своего исполнения. Исполняемые ELF-файлы Moose зависят от популярной C-библиотеки для встраиваемых (embedded) систем под названием uClibc. На сегодняшний день множество т. н. встраиваемых систем работает под управлением Linux, это касается роутеров, а также сетевого оборудования более высокого уровня. Некоторые зараженные устройства легче опознать чем другие. Например, после своего запуска в системе, вредоносная программа проверяет присутствие на диске файла /home/hik/start.sh. Этот файл обычно расположен в устройствах DVR фирмы HikVision, которые уже становились жертвой вредоносного ПО для embedded систем.
Устройства следующих вендоров уязвимы для заражения Linux/Moose: Actiontec, HikVision, Netgear, Synology, TP-Link, ZyXEL, Zhone. Кроме этого, уязвимыми также являются медицинские устройства типа Hospira Drug Infusion Pump.
Как мы уже упоминали, злоумышленники используют Linux/Moose для кражи служебных данных HTTP сессий для различных социальных сервисов. Затем эти данные используются для мошеннических действий в этих сервисах, включая, операции по выставлению Like, накрутка новых Followers или подписчиков. Для выполнения всех этих операций используется бот, поэтому на одном из зараженных роутеров мы смогли наблюдать попытки вредоносной программы получить доступ к более чем 700 различных аккаунтов Instagram в течение месяца. Следующий фальшивый аккаунт был специально создан злоумышленниками для этой цели.
Рис. Фальшивый аккаунт злоумышленников.
Через несколько дней этот аккаунт уже следовал за 30–40 аккаунтами социального сервиса.
Рис. Фальшивые аккаунты злоумышленников.
Ниже приведен снимок HTTP-трафика в инструменте Wireshark. В поле Location заголовка протокола можно увидеть имя пользователя, эта строка выделена желтым цветом. Операторы накручивали список Following-пользователей не сразу, а через определенные промежутки деятельности, маскируя мошенническую активность.
Рис. Фрагмент проксируемого злоумышленниками HTTP-трафика сервиса Instagram.
Через несколько часов этот аккаунт уже следовал за 36 пользователями.
Рис. Фальшивый аккаунт Instagram.
Рис. Пользователи, за которыми следует аккаунт злоумышленников.
Мы обратили внимание на один из аккаунтов, за которым следует фальшивый пользователь Instagram, он указан ниже. Несмотря на небольшое количество публикаций, он имеет аномально большое количество последователей.
Рис. Аккаунт одного из пользователей, за которым следует вышеприведенный фальшивый аккаунт. Неделю спустя количество фолловеров для него увеличилось в несколько раз.
Компрометация DNS-сервисов роутера
Как мы упоминали выше, бот способен перенаправлять DNS-запросы (DNS hijacking) роутера на необходимые злоумышленникам адреса. Такая операция выполняется кодом полезной нагрузки, которая запускается только в процессе заражения роутера. Кроме этого, по умолчанию, C&C-сервер не отдает боту команду на использование перенаправления DNS. Ниже указана типичная схема компрометации DNS, которую злоумышленники могут использовать для своих целей.
Злоумышленники заражают вредоносной программой роутеры, располагающиеся недалеко друг от друга, например, домашние роутеры пользователей одного ISP провайдера. Moose ожидает перехвата cookie файлов сетевых сервисов. Когда пользователь заходит в свой аккаунт сервиса, вредоносная программа передает эти данные cookie злоумышленникам. Злоумышленники направляют боту команды, настраивая его соответствующим образом: выключается настройка проверки хоста на предмет компрометации перед подключением по Telnet, включается настройка DNS hijacking, потоки поиска новых устройств-жертв балансируются для заражения хостов с диапазоном IP-адресов, которые близко расположены по отношению к внешнему IP-адресу роутера. Из-за выключенной проверки хоста на предмет компрометации, Moose повторно заразит уже скомпрометированные им устройства. В процессе этого повторного заражения, бот введет в действие фальшивые IP-адреса DNS. Пользователь остается в неведении того, что его роутер скомпрометирован и перенаправляет его программы по фальшивым IP-адресам. Далее, бот может настроить записи DNS таким образом, что они будут указывать на фишинговые сайты, вредоносное ПО, а также позволят злоумышленникам выполнять атаку типа Man-in-the-Middle (MitM), которая позволит запретить клиенту переключаться на защищенное HTTPS подключение при работе с тем или иным сервером.Общая схема работы
Как мы уже упоминали, Linux/Moose представлен исполняемыми ELF-файлами, в которых полностью отсутствует отладочная информация. Эти файлы статически скомпилированы с библиотекой uLibc. При это вредоносная программа полагается на многопоточность при своем выполнении, одновременно создавая более чем 30 потоков во время процедуры заражения.
Рис. Информация о вредоносном исполняемом файле.
В качестве образца для анализа мы выбрали тот вариант вредоносной программы, который работает на архитектуре MIPS. Различные скриншоты фрагментов вредоносного кода принадлежат именно этой архитектуре. Мы также бегло просмотрели аналогичные семплы для архитектуры ARM, они оказались почти идентичными. Ниже представлена схема работы и взаимодействия различных компонентов Moose.
Рис. Схема взаимодействия компонентов Moose.
Вредоносная программа использует специальную функцию для обфускации сообщений, отправляемых на C&C-сервер. Эта функция идентична для различных вариантов и компонентов Moose. Ниже представлен ее код на Python.
Рис. Функция обфускации сообщений C&C-сервера.
Заражение устройств
Мы отнесли Moose к такому классу вредоносного ПО как червь (worm) из-за его способности к автоматическому размножению. Для этого бот запускает три набора потоков, первый занимается сканированием произвольных (random) IP-адресов, второй сканирует определенный диапазон адресов, третий представляет из себя потоки, создаваемые на каждый сетевой интерфейс роутера. Потоки исполняют один и тот же фрагмент кода, который мы назовем сканирующим потоком (scanner thread).
Количество потоков для каждого из этих наборов определяется конфигурационным C&C-сервером. Параметр cnccfg_nb_thdscan_local определяет количество потоков, которые будут сканировать диапазон IP-адресов, которые близко располагаются к внешнему IP-адресу роутера. Параметр cnccfg_nb_thdscan_ext определяет количество потоков, которые будут использоваться для сканирования произвольно взятых IP-адресов. Параметр cnccfg_flag_scanner_sniffer определяет последний случай. В реальной ситуации мы наблюдали 10 запущенных потоков первого набора, 20 потоков второго и 1 поток на каждый интерфейс роутера в последнем случае.
На рисунке ниже показана вышеприведенная схема сканирования пространства IP-адресов.
Рис. Механизм поиска новых жертв через сканирование пространства IP-адресов.
На каждом IP-адресе вредоносный код выполняет следующие действия: проверит возможность подключения к TCP-порту номер 10073. Если на нем успешно проходит TCP-процедура рукопожатия (handshake), он отказывается от дальнейших действий и считает, что этот хост уже заражен. Информация об этом будет отправлен на отчетный C&C-сервер.