Как ЦРУ вызывало дождь: использование Rain Maker для сбора сведений с закрытых объектов

Нашумевшая новость об утечке архива ЦРУ чаще всего преподносилась в контексте того, что спецслужба США могла подслушать, подсмотреть, узнать о нас с телефонов, компьютеров и даже телевизоров. Предлагаем вашему вниманию информацию об одном из их проектов с необычным названием Rain Maker. Он представляет собой набор утилит, направленный на скрытый сбор информации на исследуемом объекте, не подключенном к сети Интернет. Агент получает специальную флешку с музыкой и portable VLC-плеером, подключает ее к компьютеру жертвы и спокойно работает под современные хиты. Закончив работу, передает флешку со скрытыми на ней и зашифрованными данными координатору, который отправляет ее в центр на расшифровку. Как это реализовано технически?
4380c61d81464f17ad3865f009adb7f0.gif

* Из архива ЦРУ к этому проекту. У агентов тоже есть юмор!

Запуск вредоносного ПО


Пропустим этап специальной подготовки флешки (его мы раскроем чуть позже) и начнем с того, что происходит, когда пользователь запускает vlc.exe с этого носителя.

Первым делом плеер читает файл со своим xml-манифестом, чтобы понять, есть ли какие-то дополнительные зависимости, которые нужно подгрузить. Там заранее прописан вызов якобы стандартной библиотеки psapi.dll (process status application programming interface), но запускается ее аналог-заглушка, которая потом перенаправляет запросы в оригинальную библиотеку. Кроме важной функции перенаправления, заглушка определяет, нужно ли активировать основной функционал шпионской программы или все же выдавать себя не стоит. Для этого осуществляется проверка факта запуска файла именно с «подготовленной» флешки (а не с другого носителя) за счет сверки зашитого серийного номера тома диска и номера носителя, на котором исполняется программа. Таким образом, «шпион» не раскроет себя, если его куда-то перенесут.

Как обеспечивается persistense


Этот пример интересен еще и тем, что для загрузки payload, обеспечения persistense у ЦРУ есть большие наработки. Не нужно каждый раз думать, как это делать, — есть специальная библиотека и даже рекомендации по обеспечению устойчивости вредоноса к обнаружению. Например, дается совет использовать стандартные функции для загрузки библиотеки LoadLibrary, а загрузчик должен корректно обрабатывать все exit-статусы в соответствии с MSDN. Выполнение таких правил требует времени и бывает, что такие вещи просто игнорируются blackhat-разработчиками.

Тем не менее, атаки такого типа известны. Описание принципа реализации такой side-by-side атаки доступно тут. Есть шанс, что если бы реальный файл этого ПО попал в песочницу, то он был бы раскрыт. Однако еще есть человеческий фактор: обратил бы администратор внимание на рекомендацию от песочницы?

Если dll-заглушка была запущена с правильного носителя, то она преобразует серийный номер в AES-ключ и расшифровывает основную библиотеку Rain Maker DLL и загружает ее в отдельном потоке в рамках основного процесса VLC. Более того, заглушка устанавливает mutex в ОС, чтобы основной payload не запускался несколько раз во избежание ошибок в его работе.

Сбор данных


Новая часть вредоносного ПО, только что созданная из «ниоткуда», проверяет, как давно она запускалась на этом компьютере, запрашивая его имя и текущее время, и сравнивая md5-хэш имени с сохраненными. Если не прошло 7 дней, то искать новых файлов программа на компьютере не будет, если она не запускалась или уже давно не работала (7 и более дней), то перейдет к следующим шагам. Хранит сведения программа скрытно в NTFS-потоках. Данная техника не нова, но эффективна, тем более, что, судя по всему, в ЦРУ уже написаны библиотеки по работе с ними — нужно просто вызвать правильную функцию DTNtfsAds_BK (wchar_t* filenameToAppendADS), подключив заранее библиотеку, так что разработчику в команде даже не нужно думать, как ее использовать. Это лишний раз подтверждается простотой руководства для новичков. Данные пишутся в поток [буква_диска_подмонтированной_флешки]:\\:$DataIdN.

Как только программа определила, что места на диске достаточно, чтобы исключить переполнение флешки и не помешать слушать музыку агенту, она начинает сбор файлов по заранее зашитой в нее конфигурации. Например, настроить пакет перед заливкой можно было так:

RainMakerConfigurator.exe -t TargetDirectories.txt -e *.docx;*.doc;*.xls;*.xlsx;*.pdf; -f 23 -vlc E:\vlc-2.1.5\vlc.exe -r plugins\access\customplugins.dat -p RainMaker_PubKey.pem

Где:
-t TargetDirectories.txt — список директорий на целевом компьютере, где искать файлы
-e *.docx;*.doc;*.xls;*.xlsx;*.pdf — типы файлов для копирования
-f 23 — процент свободного места, который должен оставаться на флешке
-vlc E:\vlc-2.1.5\vlc.exe — исполняемый файл VLC, в который зашивается вредонос
-r plugins\access\customplugins.dat — место хранения шифрованного контейнера с данными
-p RainMaker_PubKey.pem — путь к сертификату, открытым ключом которого будут защищены данные в контейнере до момента передачи носителя обратно в ЦРУ и их расшифровки с помощью закрытого ключа, который агенту не выдается.

Резюме


Таким образом, сведения о том, какие файлы были собраны и каково их содержимое, остаются закрытыми до момента расшифровки и не защищаются от раскрытия, в случае если носитель окажется в чужих руках или данные с носителя будут скопированы на другой носитель. Скорее всего, такой вектор атаки использовался для сбора сведений в закрытых сетях, где нет доступа в сеть Интернет. К сожалению, проверить правдивость данных, опубликованных в архиве Wikileaks нет возможности, тем более, что исходных кодов инструмента никто не опубликовал, однако описание сценария атаки с «внутреннего портала ЦРУ» выглядит довольно правдоподобно, и его стоит рассматривать как актуальный способ проникновения для таких специфических объектов.

Комментарии (6)

  • 28 марта 2017 в 16:49

    0

    В ЦРУ умеют использовать авторан с флешек для запуска троянов?
    Или я не понимаю всей серьёзности показного вектора атаки?
    • 28 марта 2017 в 16:57

      0

      В данном случае, судя по описанию, либо агент сам запускал плеер с флешки (пришел подрядчик, хочет послушать музыку), либо носители использовали в рамках социальной инженерии (тот же подрядчик, например, дает сотрудникам заказчика послушать музыку со своей флешки).
      • 28 марта 2017 в 17:10 (комментарий был изменён)

        0

        Наверное послушать музыку с помощью плеера записанного на флешке, а не просто послушать музыку со своей флешки.
        Наверное формат музыки не поддерживается стандартным ПО, типа FLAC…

      • 28 марта 2017 в 17:24

        0

        То есть всё ещё страшней, даже автоматизации нет.
        • 28 марта 2017 в 19:01

          0

          В каком смысле — страшнее? Лично мне кажется, что тут ЦРУ все делало технически правильно, потому что зачастую остаться вне подозрений важнее чем получить данные. Пока ты вне подозрений — количество попыток не ограничено.

  • 28 марта 2017 в 17:49

    +3

    Ну если агент может вставить флешку и запустить с неё exe, то значит, что в организации нет службы безопасности. А если нет службы безопасности, то зачем все так усложнять?

© Habrahabr.ru