Нашумевшая новость об утечке архива ЦРУ чаще всего преподносилась в контексте того, что спецслужба США могла подслушать, подсмотреть, узнать о нас с телефонов, компьютеров и даже телевизоров. Предлагаем вашему вниманию информацию об одном из их проектов с необычным названием 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.5vlc.exe -r pluginsaccesscustomplugins.dat -p RainMaker_PubKey.pem
Где:
-t TargetDirectories.txt — список директорий на целевом компьютере, где искать файлы
-e *.docx;*.doc;*.xls;*.xlsx;*.pdf — типы файлов для копирования
-f 23 — процент свободного места, который должен оставаться на флешке
-vlc E:vlc-2.1.5vlc.exe — исполняемый файл VLC, в который зашивается вредонос
-r pluginsaccesscustomplugins.dat — место хранения шифрованного контейнера с данными
-p RainMaker_PubKey.pem — путь к сертификату, открытым ключом которого будут защищены данные в контейнере до момента передачи носителя обратно в ЦРУ и их расшифровки с помощью закрытого ключа, который агенту не выдается.
Резюме
Таким образом, сведения о том, какие файлы были собраны и каково их содержимое, остаются закрытыми до момента расшифровки и не защищаются от раскрытия, в случае если носитель окажется в чужих руках или данные с носителя будут скопированы на другой носитель. Скорее всего, такой вектор атаки использовался для сбора сведений в закрытых сетях, где нет доступа в сеть Интернет. К сожалению, проверить правдивость данных, опубликованных в архиве Wikileaks нет возможности, тем более, что исходных кодов инструмента никто не опубликовал, однако описание сценария атаки с «внутреннего портала ЦРУ» выглядит довольно правдоподобно, и его стоит рассматривать как актуальный способ проникновения для таких специфических объектов.
Автор: Инфосистемы Джет