Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2015_лекции / Лекция 4.1 Анализ вредоносных pdf-файлов

.pdf
Скачиваний:
97
Добавлен:
22.03.2016
Размер:
3.91 Mб
Скачать

СТатистика

Инструменты для анализа 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

Каскадирование фильтров