Анализ CVE-2011-2462 – часть первая

Анализ CVE-2011-2462 – часть первая

Прежде чем отправиться спать прошлой ночью, я глянул на файлы, загруженные на PDF X-RAY, в надежде, что Рождество наступит раньше (CVE-2011-2462 в моих отчетах) и был удивлен, наткнувшись на файл с /U3D ссылками.

Автор: Brandon Dixon

Прежде чем отправиться спать прошлой ночью, я глянул на файлы, загруженные на PDF X-RAY, в надежде, что Рождество наступит раньше (CVE-2011-2462 в моих отчетах) и был удивлен, наткнувшись на файл с /U3D ссылками. Я дернул файл с сервера, открыл свои снимки с последней версией Adobe (9.4) и запустил файл. Adobe Reader аварийно завершился, после чего был успешно открыт новый документ. Этого было достаточно, чтобы разогнать сон, так что я начал анализ, результаты которого представлены ниже.

Увидеть примера бага можно здесь

https://www.pdfxray.com/interact/517fe6ba9417e6c8b4d0a0b3b9c4c9a9/

Порядок запуска объектов

  1. Объект 4 – событие OpenAction запускает ссылку на JavaScript
  2. Object 14 - JavaScript ссылается на объект 15
  3. Object 15 – Код на JavaScript выполняет распыление кода в кучу (heap spray1) и переходит на вторую страницу документа
  4. Object 11 – Определение 3D-данных и того, как следует их форматировать
  5. Object 10 - 3D-данные для рендеринга (похоже поврежденные)

Объекты интереса

  • Объект 10 – Ссылается на именованые словари - /3D, /U3D
  • Объект 11 - Ссылается на именованые словари - /3DI, /3DD, /3D, /3DA
  • Объект 15 – Содержит процедуру на JavaScript для осуществления распыления в кучу и перенаправления страницы (запускает рендеринг)
  • Объект 16 – Не может быть декодирован должным образом, но на него нет и ссылок (чистый файл, выбрасываемый при успешной реализации эксплоита)

Понимание U3D компонентов

Объект 11 определяет то, как U3D содержимое должно отображаться в PDF. Понимание именованных словарей помогает при поиске эксплуатируемой уязвимости. Ниже представлен список использованных именованных словарей и их краткие описания.

  • U3D – на текущий момент единственный поддерживаемый подтип и 3D-объект
  • 3DD - (необходим) – определяет поток или словарь с 3D-данными, подлежащими рендерингу
  • 3DA - (необязателен) – словарь активации, определяющий время, когда следует показывать 3D-данные
  • 3DI - (необязателен) – переменная логического типа, определяющая основной режим использования. Значение true соответствует интерактивному режиму, false – взаимодействию через JavaScript
  • DIS - (необязателен) – имя, определяющее состояние 3D-данных при деактивации
  • A – имя, под которым должна быть активирована аннотация
  • PO – аннотация должна активироваться как только открывается страница, содержащая аннотацию на 3D-данные

Детали, которые стоит отметить

Где-то в метаданных было обнаружено следующее:
<< /email (fo@gmail.com) /Author (Fo) /web (fo.googlepages.com) >>

Googlepages похоже переместились в Google Sites, так что данная страница более не активна.

Хэш Объекта 10 - 773793a36f0ba12e6e48f8483b845500 и его содержимое - загрузить.

Разбираем JavaScript

Как и в большинстве java-скриптов, наблюдаемых во вредоносных файлах, здесь производится проверка версии перед запуском основной процедуры. Любопытно, что в данном документе скрипт делает проверку версий, которые еще не существуют и уходит в бесконечный цикл, если пользователь использует версию выше 10.

Если требования к версии выполнены, то вызывается главная функция, осуществляющая распыление кода. Она завершается вызовом процедуры zzzzzzzzzzzz(), которая, похоже, является главной распыляющей процедурой. По завершении этого «распыления» выполняется еще одно, состоящее из обычного дополнения и нескольких специфичных для Adobe вызовов. Интересно отметить то, что происходит далее.

Выполняется проверка, является ли текущая платформа Windows и, если это так, делается указание просмотрщику перейти ко второй странице. Я полагаю, что этот кусок кода – триггер рендеринга 3D-данных. Страница 2 содержит ссылки на аннотации и содержимое объекта 11, который определяет показываемые 3D-данные (объект 10). Я не уверен, что без этого произошел бы запуск уязвимости. Похоже, что она запускается вручную, чтобы убедиться, что прошло достаточно времени для распыления кода в кучу.

Запуск PDF

При использовании Adobe Reader 9.4.6 запуск PDF обернулся аварийным завершением и открытием нового документа. Этот новый документ – опрос, относящийся к военному подрядчику ManTech.

Первый брошенный файл - "ctfmon.exe", который после нескольких изменений реестра становится "pretty.exe"

Файл имеет достаточно высокий показатель детектирования согласно VirusTotal:

http://www.virustotal.com/file-scan/report.html?id=b9231471a9af849ccf3690ebc12cdc7ac4d942f6e417ba7261e7a4414bf1e329-1323275615

Кроме того, вскоре выбрасывается другой файл с расширением TMP, который, похоже, является DLL.

http://www.virustotal.com/file-scan/report.html?id=21d58245c495b9ed4234577fa3fb43cd4c703f38a9b5ce83aa490613168a735f-1323275543

Обратные вызовы не делаются до тех пор, пока не будут открыты определенные процессы. (http://www.securelist.com/en/blog/2335/Sykipot_exploits_an_Adobe_Flash_Zero_Day). Я откатил мой снимок, запустил Internet Explorer, а затем pdf-файл. После некоторого ожидания можно было заметить инъекцию кода в Internet Explorer. Дамп трафика, сделанный PCAP, показывает обращение по адресу hXXps://www.prettylikeher.com (заметьте, SSL). Просмотр кода запущенного процесса обнаружил следующий запрос, который вероятно был бы сделан в рамках установленного соединения:

hXXps://www.prettylikeher.com/asp/kys_allow_get.asp?name=getkys.kys

Этот файл похоже каким-то образом зашифрован, но используется pretty.exe позднее. Если зайти на сайт напрямую, можно увидеть сайт, посвященный автомобилям, базирующийся в Роли (штат Северная Каролина). Брошенный исполняемый файл нуждается в дальнейшем анализе. Его результаты будут вскоре опубликованы.


1 heap spray или "распыление в кучу" - техника, позволяющая заполнять динамическую память блоками с одинаковым содержанием (как правило - заполнитель из некоторого количества NOP, за которым следует шеллкод). Данная техника позволяет выполнить шелл-код, если в атакуемом приложении есть уязвимость, в результате эксплуатации которой оно обратится в кучу по несуществующему адресу. (прим. пер.)

Устали от того, что Интернет знает о вас все?

Присоединяйтесь к нам и станьте невидимыми!