
Analyseur GUI pour l'exploration approfondie des fichiers PDF. Détectez les charges utiles malveillantes, comprenez les relations entre objets et extrayez les informations clés pour l'analyse des menaces.
L'analyse interactive de PDF (également appelée IPA) permet à tout chercheur d'explorer les détails internes de n'importe quel fichier PDF. Les fichiers PDF peuvent être utilisés pour transporter des charges malveillantes exploitant des vulnérabilités, ou des failles de visionneuses PDF, ou encore être employés dans des campagnes de phishing comme artefacts d'ingénierie sociale. L'objectif de ce logiciel est de permettre à tout analyste d'approfondir par lui-même le fichier PDF. Via IPA, vous pouvez extraire une charge utile importante des fichiers PDF, comprendre les relations entre les objets et déduire des éléments qui peuvent être utiles pour le triage de charges utiles malveillantes ou non fiables.
L'inspiration principale vient des personnes formidables derrière Zynamics, et de leur excellent produit, appelé PDF dissector.
Lorsque j'ai commencé le reverse engineering de malwares, le principal outil disponible pour analyser des charges utiles malveillantes consistait en les excellents outils de Didier Stevens. Devenus un standard de facto, l'un des principaux problèmes de ces outils était le fait qu'ils s'utilisaient en ligne de commande, avec l'obligation de mémoriser une très grande combinaison de flags, et de reporter les numéros des différents objets. Bien que les analystes et les développeurs doivent composer quotidiennement avec toutes sortes d'outils en ligne de commande, cela ne signifie pas que nous ne pouvons pas créer un nouvel outil graphique d'inspection de fichiers.
En fait, une partie des domaines de l'analyse statique et du reverse engineering se concentre aussi sur la manière de présenter à l'analyste les informations les plus saillantes du point de vue de l'expérience utilisateur. Les outils de Didier Stevens, ainsi que peepdf, sont déjà utilisés et bien rodés. Cependant, l'analyste pourrait utiliser quelque chose de graphique afin de pouvoir comprendre la relation entre les différents objets, comprendre à quelles pages ils se réfèrent et quels types d'objets (images, polices, couleurs, métadonnées), exporter le contenu des flux de manière simple et voir le contenu des dictionnaires sous forme de tableau.
La principale source d'inspiration vient de l'outil développé par Zynamics appelé PDF-dissector : les excellents retours de certains anciens utilisateurs et les demandes constantes de le publier en open source m'ont poussé à consacrer quelques jours à la création de cet outil.
L'outil peut être compilé avec Rust et cargo. Aucune dépendance n'est requise en dehors de Rust et des crates récupérées.
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 présente pour l'instant les limitations suivantes :
Au final, l'outil peut vraiment être amélioré et je parie que certaines personnes remarqueront à quel point mon code est mauvais. Si vous êtes l'une d'entre elles, faites-moi part des améliorations potentielles, des meilleurs patterns et de toute suggestion.
Si vous rencontrez des problèmes, avez des améliorations, ou souhaitez simplement m'écrire, envoyez un email à [email protected].