
GUI-анализатор для глубокого изучения PDF-файлов. Обнаруживайте вредоносные полезные нагрузки, понимайте связи между объектами и извлекайте ключевую информацию для анализа угроз.
Интерактивный анализ PDF (также называемый IPA) позволяет любому исследователю изучать внутренние детали любого PDF-файла. PDF-файлы могут использоваться для переноса вредоносных полезных нагрузок, эксплуатирующих уязвимости, и проблем PDF-просмотрщиков, а также могут применяться в фишинговых кампаниях в качестве артефактов социальной инженерии. Цель этого программного обеспечения — позволить любому аналитику самостоятельно глубоко изучить PDF-файл. С помощью IPA вы можете извлекать важные полезные нагрузки из PDF-файлов, понимать взаимосвязи между объектами и выводить элементы, которые могут быть полезны для триажа вредоносных или недоверенных полезных нагрузок.
Основное вдохновение исходит от фантастических людей из Zynamics и их превосходного продукта под названием PDF dissector.
Когда я начал заниматься реверс-инжинирингом вредоносного ПО, основным доступным инструментом для анализа вредоносных полезных нагрузок были превосходные инструменты Didier Stevens. Став де-факто стандартом, эти инструменты имели одну из главных проблем: их можно было использовать только из командной строки, приходилось запоминать очень большую комбинацию флагов и сообщать номера различных объектов. Хотя аналитикам и разработчикам ежедневно приходится иметь дело со всевозможными инструментами командной строки, это не означает, что мы не можем создать новый графический инструмент для инспекции файлов.
Фактически, часть области статического анализа и реверс-инжиниринга также сосредоточена на том, как отображать наиболее значимую информацию для аналитика с точки зрения пользовательского опыта. Инструменты Didier Stevens, а также peepdf уже используются и хорошо обкатаны. Однако аналитику могло бы пригодиться что-то графическое, чтобы понимать взаимосвязи между различными объектами, понимать, на какие страницы они ссылаются и какие типы объектов (изображения, шрифты, цвета, метаданные), экспортировать содержимое потоков простым способом и просматривать содержимое словарей в табличной форме.
Основной источник вдохновения — инструмент, разработанный Zynamics под названием PDF-dissector: превосходные отзывы некоторых бывших пользователей и постоянные просьбы выпустить его в открытый исходный код побудили меня потратить несколько дней на создание этого инструмента.
Инструмент можно скомпилировать с помощью Rust и cargo. Никаких зависимостей, кроме Rust и подтягиваемых крейтов, не требуется.
git clone https://github.com/seekbytes/IPA
cd IPA
## compile with debug symbols, the binary is inside ./target/debug/IPA
cargo b
## compile in release mode, the binary is inside ./target/release IPA
cargo b --release
На данный момент IPA имеет следующие ограничения:
В конечном счёте, инструмент можно действительно улучшить, и я готов поспорить, что некоторые заметят, насколько плох мой код. Если вы один из них, пожалуйста, сообщите мне о возможных улучшениях, лучших паттернах и любых предложениях.
Если у вас есть какие-либо проблемы, улучшения или вы просто хотите мне написать, отправьте письмо на [email protected].