16.11.2015

Пример анализа вредоносного PDF-файла

image

Проверять подозрительные PDF-файлы можно либо при помощи антивирусов, либо вручную с использованием сторонних утилит. Часто антивирусные сканеры не столь эффективны, когда дело касается вредоносных PDF-файлов, содержащих зашифрованный шелл код, в котором обычно эксплуатируются уязвимости в Adobe Acrobat Reader нулевого дня. Перед началом анализа познакомимся со структурой PDF-документа, что лучше понять, как работает и где находится шелл код.

Автор: YELIA MAMDOUH EL GHALY

Проверять подозрительные PDF-файлы можно либо при помощи антивирусов, либо вручную с использованием сторонних утилит. Часто антивирусные сканеры не столь эффективны, когда дело касается вредоносных PDF-файлов, содержащих зашифрованный шелл код, в котором обычно эксплуатируются уязвимости в Adobe Acrobat Reader нулевого дня. Перед началом анализа познакомимся со структурой PDF-документа, что лучше понять, как работает и где находится шелл код.

Структура PDF-документа

Заголовок

Первая строка указывает на версию, при помощи которой был создан PDF-файл. Например, %PDF-1.4 означает, что файл был создан в четвертой версии.

Тело

Тело PDF-файла включает объекты, формирующие содержимое документа. Под объектами подразумеваются шрифты, изображения, аннотации и текст. Кроме того, пользователь может добавить невидимые объекты или элементы. Объекты могут иметь отношение к функциям, например, к анимации или функциям, связанным с безопасностью. Тело PDF-файла поддерживает два типа чисел – целые и вещественные.

Таблица перекрестных ссылок (xref table)

Эта таблица содержит все ссылки на объекты и элементы, поддерживаемые форматом PDF. Кроме того, таблица перекрестных ссылок позволяет просматривать содержимое остальных страниц. Когда пользователь изменяет файл, таблица обновляется автоматически.

Завершающая часть

Завершающая часть содержит ссылки на таблицу перекрестных ссылок и всегда заканчивается словом %%EOF, которое означает, что файл закончился. В завершающей части могут находиться ссылки на другие страницы.

Создание вредоносного PDF-файла через Metastploit

После того как мы вкратце познакомились со структурой PDF-файла, установим старую версию Adobe Acrobat Reader (9.4.6 или 10-10.1.1) с уязвимостью Adobe U3D Memory Corruption Vulnerability. Вредоносный PDF-файл будем создавать при помощи Metasploilt. Анализ будет проводиться на базе дистрибутива KALI Linux. Откройте терминал и наберите команду msfconsole. Чтобы все работал без сучка и задоринки, необходимо установить некоторые переменные.

После выбора вида эксплоита, необходимо указать полезную нагрузку, которая будет использоваться во время эксплуатации уязвимости на удаленной машине. Затем открываем в Meterpreter.

Один из параметров при создании файла – LHOST, куда заносится IP-адрес нашей машины (чтобы выяснить IP-адрес, можно ввести команду ifconfig в другом терминале). После настройки параметров указываем тип эксплоита и создаем вредоносный PDF-файл.

Файл сохранился в папке /root/.msf4/local.

Копируем созданный файл на рабочий стол:

root@kali :~# cd /root/.msf4/local
root@kali :~# mv msf.PDF /root/Desktop

Утилита PDFid

Для просмотра содержимого PDF-файлов, например, элементов, объектов или JavaScript-кода, мы будем использовать утилиту PDFid. В файле одна страница. Вроде ничего подозрительного. А вот несколько JavaScript-объектов уже наталкивает на размышления. Также присутствует объект OpenAction, который будет запускать вредоносный JavaScript.

Утилита Peepdf

Peepdf – утилита, написанная на Python и предназначенная для анализа PDF-файлов. В peepdf есть все компоненты, которые нужны специалисту по компьютерной безопасности. Peepdf заменяет сразу несколько утилит. Поддерживается шифрование, Object Stream, эмуляция шелл кода, анализ Javascript и т. д. Кроме того, утилита показывает потенциальные уязвимости и подозрительные элементы, имеет функциональную интерактивную консоль, детектирует обфускацию (которую часто не замечают антивирусы) и содержит много других полезных функций.

Анализ вредоносного файла

Заходим в папку с вредоносным файлом и вводим команду /usr/bin/peepdf –f msf.pdf. Параметр –f заставляет утилиту игнорировать все ошибки. Вначале мы видим подсвеченный объект «object 15» с JavaScript-кодом. Далее – один объект «object 4» с двумя элементами: /AcroForm и /OpenAction. Последний объект - /U3D, свидетельствующий о том, что PDF-файл пытается эксплуатировать известную уязвимость. Найденные объекты будем просматривать в интерактивной консоли. Вводим команду /usr/bin/peepdf –i msf.pdf.

Команда tree показывает иерархическую структуру файла. Начнем с анализа объекта «object 4» (/Acro-Form). Если мы введем команду object 4, появится другой объект. На данный момент мы не видим ничего важного или подозрительного за исключением объекта «object 2» (XFA-массив), содержащего элемент <fjdklsaj fodpsaj fopjdsio>, который также не содержит ничего подозрительного. Переходим к следующему объекту (Open Action) Здесь мы видим JavaScript-код, который будет запускаться при открытии PDF-файла. Остальная часть JavaScript-кода немного обфусцирована при помощи нескольких переменных с содержимым в шестнадцатеричной системе счисления. Далее мы видим распыление кучи (heap spraying) в связке с шелл кодом плюс несколько дополнительных байтов. Шелл код обычно кодируется при помощи Unicode, после чего используется функция unescape для перевода результатов кодирования в бинарный формат (теперь мы точно знаем, что имеем дело с вредоносным файлом).

Методы защиты

Вот некоторые способы защиты от вредоносных файлов:

  • Фильтрация электронной почты и содержимого веб-страниц.
  • Использование системы предотвращения вторжений.
  • Запрет JavaScript.
  • Запрет отображения PDF-файлов в браузерах.
  • Запрет доступа к файловой системе и сетевым ресурсам для приложений, предназначенных для чтения PDF-файлов.