Analyse technique d'un échantillon PDF Adobe Acrobat avec JavaScript multi-étapes
Vue d'ensemble
Ce dépôt publie une analyse rétro-ingénierie orientée code d'un échantillon PDF malveillant intégrant du JavaScript Adobe Acrobat par étapes.
L'échantillon analysé utilise un champ de formulaire masqué comme chargeur initial, reconstruit un corps JavaScript de deuxième étape via le décodage de flux Acrobat, effectue un triage de l'environnement et un abus d'interfaces spécifiques à Acrobat, établit une mise en scène soutenue par le réseau, puis déchiffre, décompresse et exécute une charge utile de troisième étape différée.
L'objectif de ce dépôt est l'analyse défensive et la documentation. L'accent est mis sur le comportement observable, la structure du code récupéré et la reconstruction de la chaîne d'attaque.
Principales conclusions
- Le PDF contient un chargeur de première étape intégré stocké dans un champ de formulaire masqué (
Btn1).
- Le JavaScript de deuxième étape récupéré désactive les groupes de contenu optionnels pour réduire les indicateurs visuels.
- L'échantillon construit ses propres wrappers d'exécution privilégiés autour des API Acrobat telles que
app.beginPriv() et app.endPriv().
- Il effectue un triage de la cible, notamment :
viewerVersion
viewerType
platform
- inférence du système d'exploitation basée sur le système de fichiers
- analyse de l'en-tête PE pour détecter le Reader x64
- Il met en place des primitives orientées exploitation impliquant des getters élaborés et des interfaces natives Acrobat telles que
ANShareFile(...) et ANFancyAlertImpl(...).
- Il construit des URL de balise riches en télémétrie pour un point de terminaison distant codé en dur et utilise des flux JavaScript RSS dans le cadre de son processus de mise en scène.
- Le chemin de chargeur visible final est explicite :
- décodage hexadécimal de
bird1
- déchiffrement AES-CTR
- décompression DEFLATE
- stockage sous
global.final_js
- exécution via
eval(...) différé
Résumé de la chaîne d'attaque
- Le JavaScript du PDF lit le champ masqué
Btn1
- La première étape décode et planifie la deuxième étape
- La deuxième étape initialise la logique obscurcie et masque les couches OCG
- L'environnement cible est identifié par empreinte
- La configuration orientée exploitation native Acrobat est tentée
- Les canaux de télémétrie et de mise en scène sont préparés
- Le script interroge le contenu de charge utile renseigné à l'exécution
- Le contenu chiffré est déchiffré et décompressé en mémoire
- Une charge utile JavaScript de troisième étape est exécutée via
setTimeOut
Pourquoi cet échantillon est important
L'échantillon est significatif car il ne s'agit pas d'un simple PDF statique avec des fragments de script intégrés. Il se comporte comme un chargeur multi-étapes structuré qui :
- qualifie l'environnement cible
- abuse des fonctionnalités privilégiées spécifiques à Acrobat
- prépare la livraison ultérieure de la charge utile
- reconstruit entièrement le code de suivi en mémoire
Cette combinaison le rend pertinent à la fois pour l'analyse des malwares PDF et pour l'étude du comportement de confiance et de mise en scène du JavaScript Acrobat.
Analyse
L'analyse complète est disponible ici.