
Проверять подозрительные 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-файлов.
Автор: YELIA MAMDOUH EL GHALY