Живой рассказ вирусного аналитика об исследовании RCS и Finspy
Денис Макрушин: Индустрия информационной безопасности за последние несколько лет хорошо продемонстрировала, насколько она многогранна. Если еще каких-то 5 лет назад бизнес в этой сфере опирался исключительно на защиту от действий киберпреступников и продуктов их «жизнедеятельности», то сейчас на сцену выходят очень неоднозначные игроки. Так, например, стала широко распространена продажа «оружия», а именно эксплойтов. Теперь любой желающий (ну хорошо, почти любой желающий – стоимость подобного оружия не ограничивается пятью нулями) может приобрести средство эксплуатации уязвимости и использовать по своему усмотрению. Это можно сравнить с продажей боевых патронов.
Однако рынок пошел еще дальше, и теперь некоторые бизнесмены предлагают приобрести у них полноценный троян, нашпигованный антиотладочными фичами и имеющий в своем распоряжении функционал, который не уступает самым технологичным представителям «черного рынка» киберпреступности. А это уже сравнимо с продажей укомплектованного истребителя. Вот о нескольких таких истребителях и поговорим.
Business-to-government: RCS
Сергей Голованов: Середина далекого 2012 года принесла нам (в антивирусную лабораторию – прим. ред.) письмо, в котором содержался файл adobeupdate.jar. В нем находился сэмпл под MacOS. Наши антивирусные аналитики сразу направили его мне для детального анализа.
Внутри у данного экземпляра зловреда ничего не было зашифровано – все читалось, как открытая книга, и, как следствие, на следующий день начались публикации других антивирусных компаний о новой атаке, названной ими «Crisis». Дело в том, что один из модулей назывался «Crisis» (здесь нужно сказать спасибо Objective-C за голый код). Файлы RCS для ОС Windows написаны на языке программирования C++. Чтобы программа не привлекала внимание антивирусов, ее создатели не предусмотрели методы защиты от анализа, а это характерно для программ, используемых при проведении целевых атак.
В jar-файле также лежал сэмпл под Windows, функционал которого был аналогичен сэмплу Mac. В нём содержалась забавная строчка «elementary!penguiNs;-)SingingHarekrishna_».». Сначала мне показалось, что это своего рода «пасхальное яйцо», но низкоуровневый анализ моего коллеги – Николаса Брюле – продемонстрировал, что это далеко не забавы разработчиков. Дело в том, что известная утилита Skype имеет в своем распоряжении возможность подключения плагинов, которые позволяют пользователю изменять голос, использовать всякие нестандартные смайлики и т.п. Для того чтобы разработчик мог выпустить подобный плагин, его требуется подписать у Microsoft и для этого нужно сделать следующее: указать полный путь к плагину, посчитать MD5 ко всем файлам плагина и указать некоторую «соль». В нашем случае найденная строка оказалась этой самой «солью», которая в свою очередь, была предназначена для подписи плагина перехвата всех скайп-звонков. Интересный эксклюзивный функционал, который мы до того, как столкнулись с этой малварой, больше нигде не встречали. Обычно вирмейкеры хакали все внутри скайпа, но идея установки новых плагинов в скайп еще никому в голову не приходила.
Заголовки электронного письма, пришедшего в антивирусную лабораторию
Все имеющиеся строки, которые создатели не потерли в процессе компиляции, демонстрировали аббревиатуру «RCS». RCS, также известная с 2011 как Remote Control System, разработана, как говорит Wikileaks, компанией HackingTeam, помогающей правительствам разных стран следить за своими гражданами.
Использование сочетания букв RCS во вредоносной программе под MAC
Та самая загадочная фраза, оказавшаяся «солью»
Двигаемся дальше. В процессе анализа был найдет эксплойт, который грузил пэйлоад со следующего URL: rcs-demo.hakingteam.it. Плюс в сэмпле под Mac были найдены пути к файлам для компиляции, и было что-то вроде: «/Users/guido». При этом нашлась учетная запись пользователя “Guido ***” на сайте LinkedIn, указавшего HackingTeam в качестве своего места работы.
Упоминание имени пользователя «guido» в коде вредоносной программы
Охота за эксплойтами, которые малвара использует для своего распространения, показал, что мы словили 0-day в Adobe Flash Player. Разработчики затем присвоили ей CVE-2010-3333. Затем мы посмотрели CVE всех эксплойтов, которые мы нашли в семпле. JAR-файл представляет собой архив, а значит можно посмотреть, когда в него были добавлены файлы. Так вот, файлы в этот архив попадали за несколько месяцев до того, как были обнаружены CVE. Получалось так, что в течение нескольких лет у ребят из HackingTeam есть 0-day (и не один) и, как следствие, способы для распространения RCS.
Одной из ключевых особенностей данного зловреда является то, что он имеет функционал самообновления и может выкачивать дополнительные модули. Учитывая тот факт, что одним из основных назначений RCS является слежение за компьютерами подозреваемых, становится не по себе от мысли, что разработчик малвары может закачать на компьютер жертвы какой-нибудь интересный и незаконный контент (например, детскую порнографию), а затем произвести самоудаление вируса с компьютера пользователя. Другими словами, объекта слежки можно попросту подставить. И при этом никакое исследование не способно обнаружить факт наличия зловреда в системе в прошлом, потому что тот после своего удаления перезаписывал себя случайными данными.
После наших публикаций в СМИ о данном зловреде, ребята из HackingTeam начали избегать наших систем мониторинга, разбив все модули RCS на отдельные файлы. Другими словами, система перестала быть монолитной.
Суммарное число зафиксированных попыток установки RCS на компьютерах пользователей в разных странах мира, январь 2012 – февраль 2013
Итак, RCS имеет следующий функционал:
- Механизм самораспространения через USB-флешки:
- Использование стандартного механизма Autorun.inf (аналогично большинству червей, детектируемых ЛК как Worm.Win32.AutoRun);
- Использование фальшивой записи «Open folder to view files» (популярный метод, использующийся для самораспространения червей, в частности червя Kido/Confiker);
- Использование уязвимости CVE-2010-2568 (ее использовал Stuxnet при самораспространении через LNK-файлы).
- Заражение виртуальных машин vmWare с самокопированием в папку автозапуска виртуального диска.
- Заражение мобильных устройств BlackBerry и Windows CE.
- Механизм самообновления.
- Использование алгоритма шифрования AES для работы с файлами и серверами управления.
- Установка драйверов.
Это вторжение: Finspy/Finfisher
Первое знакомство со вторым ярким представителем правительственной малвары состоялось также в середине 2012 года, когда обнаружились первые семплы Finfisher и мобильные семплы Finspy. Я сразу же подумал, что анализ зловреда пойдет так же хорошо, как в случае с продуктом HackingTeam. Но Gamma (разработчик Finfisher/Finspy – прим. ред.) преподнесла неожиданные сюрпризы.
Общее количество зафиксированных попыток установки FinSpy за период июнь 2012 – июнь 2013
Стало сразу же интересно, а может ли Finspy выполнять произвольный код оператора? Если с RCS узнать это, разобрав протокол общения с командным центром, особых проблем не доставило, то в случае с продуктом Gamma все было куда сложнее – у дизассемблеров срывало крышу от обилия инструкций типа «EB FF» (джампы на минус 1 байт, которые вновь ведут к попаданию на половину инструкции джампа). И так каждые 10 инструкций. Если же пытаться смотреть все это дело в IDA, то нужно писать специальный скрипт, который фильтрует эту гадость.
Антиотладка – это был лишь первый круг ада. Дальше меня ждали упаковка, за ней крипторы, виртуальная машины, после нее снова крипторы и только тогда становятся видны строки, которые, в свою очередь, были зашифрованы совершенно разными способами. В конце концов, когда мы уже получили код заражений и поняли, что и куда внедряется, мы снова столкнулись с проблемой. Пытаясь отлавливать обращения трояна к командному центру, мы поняли, что зловред имеет специальный криптор, который в реальном времени расшифровывает и зашифровывает блоки кода в процессе его исполнения. Соответственно дампить его было практически бесполезно. Finspy также являлся буткитом и обладал методами противодействия отладчикам уровня ядра.
Был найдет огромный буфер, куда зловред складывал команды в формате опкодов (код какой-либо операции – прим. ред.) – это усложняло их чтение. У Gamma есть вирус для множества платформ, включая мобильные. Я предположил, что протокол их общения с командным центром должен быть одинаковым. Тем более мобильное приложение куда проще анализировать без всяких хитрозакрученных механизмов антиотладки…
Конфигурация андроид-семпла
В отличие от RCS, который мог повысить свои привилегии в системе, Finspy не обладал кодом, ответственным за эскалирование привилегий. Разработчики предполагают распространение зловреда альтернативными способами, например, на уровне доступа к провайдеру (классический MitM, когда в скачиваемые преступником бинарники внедряется код малвары и далее все идет через UAC) (говоря более простым языком – когда преступник скачивает какой-нибудь exe-файл из Интернета, его провайдер «на лету» внедряет в этот файл троян – прим. ред.).
Тем не менее, остался главный вопрос: есть ли у данного зловреда функционал, позволяющий выполнить произвольный код (например, скачать и запустить нового трояна с новым функционалом – прим. ред.)? В андроидном семпле были найдены операционные коды выполнения произвольного кода: «download_and_execute», «execute_shellcode» и им подобные! Значит, ответ на вопрос следующий: функционал есть, потенциально малвара может выполнять произвольный код, но в обнаруженных семплах данный функционал отсутствует. Можно предположить, что есть некая pro-версия трояна, в которой это реализовано.
Вместо заключения
За последние годы в мире произошли значительные изменения, о которых пользователи узнали не так давно: были обнаружены программы, которые использовались как кибероружие и как средства кибершпионажа.
Появились также частные компании, которые, согласно информации на их официальных сайтах, разрабатывают и предлагают правоохранительным органам программы для сбора информации с компьютеров пользователей. Страны, у которых нет соответствующих технических возможностей, могут покупать программы с подобным функционалом у частных компаний. Несмотря на наличие в большинстве стран законов, запрещающих создание и распространение вредоносных программ, программы-шпионы предлагаются практически без какой-либо маскировки их функций.
Пока таких компаний мало и конкуренции на этом рынке почти нет, что создаёт благоприятные условия для появления новых игроков и начала технологической гонки между ними. При этом компании, по нашим данным, не несут ответственности за дальнейшую судьбу созданных ими программ, которые могут использоваться для слежки, в межгосударственном шпионаже либо с традиционной для обычного киберкриминала целью обогащения.
Ситуация осложняется возможностью появления подобных программ и на открытом рынке, где их могут перепродавать, например, подставные компании — кому и когда угодно. Короче, это еще не конец…
И напоследок
О FinSpy и детектах в России…
Многие наверно удивлены, что Россия на карте заражений FinSpy раскрашена красным цветом. Во время проведения исследования у нас на этот счет было 3 основные теории:
1. Какая-то российская структура закупила и вовсю использует данную программу.
2. Зарубежные правоохранительные органы следят за людьми, находящимися на территории России.
3. Кто-то использует краденную версию данной программы.
Но реальность оказалась совсем другой…
Всем известно, что в Сети есть большое количество сервисов, предлагающих проверку файлов на их детектирование антивирусами. Так вот, все детекты FinSpy на территории России — это не живые пользователи, а роботы, которые используют триальные версии продуктов Лаборатории Касперского под виртуальными машинами. Таким образом, текущая теория про Россию и FinSpy гласит, что кто-то проводит регулярную проверку FinSpy на детектирование антивирусами на серверах, находящихся на территории России. Вот.
О FinSpy, наркобаронах и беспилотниках…
Для захвата лидера криминальной мексиканской организации – Мигеля Ангель Тревино Моралиса, ВМФ США вообще не использовало беспилотные самолеты, которые обычно запускаются на границах с Мексикой. Вместо этого, спецслужбы для уточнения координат наркобарона использовали средства прослушивания телефонных разговоров и программное обеспечение FinSpy. Подробнее
Материал опубликован в журнале “Хакер” (#180)