2015_лекции / Лекция 4.1 Анализ вредоносных pdf-файлов
.pdf
СТатистика
Инструменты для анализа pdf-файлов
PDFtk — кросс-платформенная программа для работы с PDF-файлами, позволяющая проводить декомпрессию их сжатого контента;
PDFiD — позволяет сканировать файл на наличие определенных ключевых слов, позволяя сразу выяснить, используется ли в PDF-файле JavaScript или нет;
PDF-parser и pdfwalker производят разбор файла, позволяя установить все элементы, из которых он состоит;
pdfextract и pdf.py извлекают JavaScript из PDF-файлов;
Malzilla и SpiderMonkey пригодятся для деобфускации внедренного в PDF
JavaScript-кода;
PDF Stream Dumper — многофункциональная утилита для исследования PDFфайлов, собравшая всю мощь многих утилит под одним графическим интерфейсом;
Peepdf и pdfsh предоставляют интерактивный шелл для исследования PDFфайлов;
SWF mastah извлекает SWF-объекты из PDF-файлов.
Libemu’s sctest.(http://libemu.carnivore.it/), анализ шелл-кодов
«Активное» содержимое файла
«Событие» PDF-формата
JavaScript
Flash (ActionScript)
Название объекта |
Функция |
/OpenAction и /AA (Additional Action) |
определяют скрипт или действие, запускаемое автоматически |
/Names, /AcroForm, /Action |
могут устанавливать и запускать скрипты или действия |
|
|
JavaScript |
задает JavaScript-код для выполнения |
/GoTo |
меняет отображение на указанное место внутри исходного или |
|
другого PDF-файла; |
|
|
/Launch |
запускает программу или открывает документ |
/URI |
обращается к ресурсу по его URL |
/SubmitForm и /GoToR |
могут отправлять данные на заданный URL |
/RichMedia |
используется для встраивания Flash в PDF |
/ObjStm |
может прятать объекты внутри Stream’a |
|
|
«Событие» PDF-формата: обращение к ресурсу
«Событие» PDF-формата: выполнение команды
Запуска JavaScript-скрипта
Уязвимости в JavaScript-методах
app.doc.Collab.getIcon()
util.printf()
Сollab.collectEmailInfo()
media.newPlayer()
…
Общий принцип эксплуатации уязвимости в JavaScript
1.Передача управления JavaScript-коду
2.Проверка наличия уязвимых функции
3.Heap spraying
4.Вызов уязвимой функции
Механизмы противодействия анализу
Синтаксические изменения
Каскадирование преобразований (фильтры)
JavaScript-обфускация
Внедрение PDF внутрь PDF
Синтаксические изменения
HEX-представление маркеров
/JavaScript -> /#4A#61va#53#63ri#70#74
Изменение текстовых данных
▪Разбиение строк с помощью символа ‘\’
▪Представление символов в восьмеричной системе
▪Представление символов в шестнадцатеричной системе
▪Вставка символов пробела
Изменение порядка объектов в файле
Использование синонимов (alias)
▪ASCIIHexDecode -> AHx; ASCII85Decode -> A85
▪LZWDecode -> LZW; FlateDecode -> Fl
▪RunLengthDecode -> RL; CCITTFaxDecode -> CCF
▪DCTDecode -> DCT
Каскадирование фильтров
