- PVSM.RU - https://www.pvsm.ru -
Как известно, PDF-файлы часто используются как контейнеры для вирусов и эксплоитов. Они применяются в фишинговых кампаниях и социальной инженерии, когда жертве присылают для просмотра «безобидный документ» в формате PDF, а тот запускает на исполнение вредоносный код через незакрытую уязвимость в браузере или PDF-ридере.
Перед открытием документа всегда желательно посмотреть, что находится внутри. Для этих целей существуют парсеры, которые разбирают PDF. Например, Interactive PDF Analysis [1] (IPA, на скриншоте вверху) и другие.
Даже если перед нами чистый PDF, иногда нужно изучить содержимое и извлечь полезные ресурсы в нетронутом виде — например, оригинальные изображения в JPG.
С помощью таких инструментов можно извлечь из PDF-файлов ресурсы и полезную нагрузку, понять взаимосвязи между объектами и сделать вывод о внутренних элементах.
Для создания IPA использовалась Rust-библиотека pdf-rs [2] для парсинга PDF, а также библиотека egui [3] для графических интерфейсов. Источником вдохновения автор называет замечательную программу PDF Dissector [4] от компании Zynamics, которую мы использовали ещё 10−15 лет назад. Новые версии уже не выпускаются, продукт заброшен, а исходный код так и не опубликован:

PDF Dissector
Несколько десятилетий назад основными инструментами для реверс-инжиниринга считались утилиты Дидье Стивенса [5], в том числе PDF Tools [6]. Вот как работает парсер pdf-parser.py из того набора:

Хотя они стали стандартом де-факто, но для их использования из консоли приходилось запоминать большую комбинацию флагов и сообщать номера различных объектов.

Шаблон PDFTemplate.bt для редактирования файлов PDF в текстовом редакторе 010 Editor [7]
Поэтому продолжаются попытки улучшить и упростить парсеры PDF — создать такие же мощные инструменты, только с графическим интерфейсом.
Графика даёт дополнительные возможности для анализа, например, наглядно показывает взаимосвязи между объектами, на какие страницы они ссылаются и типы объектов (изображения, шрифты, цвета, метаданные). Через GUI проще экспортировать содержимое потоков и просматривать содержимое словарей в виде таблиц.
Программа компилируется из исходного кода. Для этого нужно клонировать репозиторий и запустить cargo:
git clone https://github.com/seekbytes/IPA
cd IPA
cargo b --release
В системе должен быть установлен Rust, иных зависимостей нет.
pdf-rs.Вот некоторые другие похожие инструменты для просмотра внутреннего содержимого файлов PDF (исходные изображения и другие объекты):
Использование:
python3 -m pdfsyntax inspect foo.pdf > output.html
Использование:
polyfile --html output.html foo.pdf


Автор: GlobalSign_admin
Источник [19]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/pdf/405137
Ссылки в тексте:
[1] Interactive PDF Analysis: https://github.com/seekbytes/IPA
[2] pdf-rs: https://github.com/pdf-rs/pdf
[3] egui: https://github.com/emilk/egui
[4] PDF Dissector: https://web.archive.org/web/20110902114238/http://www.zynamics.com/dissector.html
[5] утилиты Дидье Стивенса: https://github.com/DidierStevens/DidierStevensSuite
[6] PDF Tools: https://blog.didierstevens.com/programs/pdf-tools/
[7] 010 Editor: http://www.sweetscape.com/010editor/
[8] PDF debugger: https://pdf.hyzyla.dev/
[9] PDFSyntax: https://github.com/desgeeko/pdfsyntax
[10] Polyfile: https://github.com/trailofbits/polyfile
[11] реализация libmagic: https://github.com/trailofbits/polyfile?tab=readme-ov-file#libmagic-implementation
[12] PDFViewer: https://www.reportmill.com/snaptea/PDFViewer/
[13] онлайн-демо: https://www.reportmill.com/snaptea/PDFViewer/pviewer.html
[14] PDF Inspector: https://sourceforge.net/projects/pdfinspector/
[15] в браузере: https://reportmill.com/snaptea/PDFViewer/pviewer.html
[16] PDFedit: http://pdfedit.cz/en/index.html
[17] iText RUPS: https://github.com/itext/i7j-rups
[18] PDFXplorer: https://www.o2sol.com/pdfxplorer/overview.htm
[19] Источник: https://habr.com/ru/companies/globalsign/articles/866806/?utm_campaign=866806&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.