Pull to refresh
149.6
Инфосистемы Джет
российская ИТ-компания

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

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


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

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


Пропустим этап специальной подготовки флешки (его мы раскроем чуть позже) и начнем с того, что происходит, когда пользователь запускает 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 нет возможности, тем более, что исходных кодов инструмента никто не опубликовал, однако описание сценария атаки с «внутреннего портала ЦРУ» выглядит довольно правдоподобно, и его стоит рассматривать как актуальный способ проникновения для таких специфических объектов.

Юрий Сергеев, Центр информационной безопасности компании «Инфосистемы Джет».
Tags:
Hubs:
+16
Comments 36
Comments Comments 36

Articles

Information

Website
jet.su
Registered
Founded
1991
Employees
1,001–5,000 employees
Location
Россия