Quels outils et techniques existent pour décompiler ou analyser le bytecode dans un fichier SWF? De quelles ressources dispose le reverse engineering pour en savoir plus sur les composants internes SWF?
Quels outils et techniques existent pour décompiler ou analyser le bytecode dans un fichier SWF? De quelles ressources dispose le reverse engineering pour en savoir plus sur les composants internes SWF?
Il existe un bon outil flasm, qui est open-source, et contient à la fois un assembleur et un désassembleur flash. Et flare, qui est gratuit, mais de source fermée, et contient un décompilateur flash. On dirait que les deux sont abandonnés (dernière mise à jour de 2007) et ne prennent pas en charge ActionScript 3, mais peut-être que quelqu'un pourrait les étendre.
Tout d'abord, je recommanderais de lire les spécifications du format de fichier SWF et ActionScript. Je ne recommanderais pas de tout lire (cela devient ennuyeux). Juste les trois ou quatre premiers chapitres. Cela aidera à avoir une base de connaissances pour la structure et les mots-clés. Voici les deux que je recommanderais.
Format de fichier SWF PDF, Présentation de la machine virtuelle ActionScript 2 (AVM2) PDF
Une fois que vous avez une base de vérification des connaissances sur quelques messages sur Flash Exploits. Voici une liste de messages sans ordre ni valeur particulière 1, 2, 3, 4, 5, 6, 7. La recherche dans RE Reddit est également une autre bonne ressource pour l'analyse SWF / Flash.
Pour le meilleur ou pour le pire, la communauté des exploitants a fait beaucoup de travail pour le reverse engineering SWF / ActionScript / Flash / etc. Là, un certain nombre de chercheurs que je recommanderais à Google de traquer leur travail. Haifei Li est une personne remarquable. Une recherche rapide sur Google pour le type de fichier: PDF + "Haifei Li" vous apportera de nombreuses ressources intéressantes. Exemple: lien.
SI vous en avez assez de lire, je vous recommande de télécharger quelques exemples. Contagiodump est un bon endroit pour prélever des échantillons. En général, l'échantillon a le numéro CVE approprié. Cela peut être utile car un rapide google du numéro CVE + "analyse" vous permettra de faire la version de suivi à la maison. Bien sûr, vous aurez besoin d'outils. Personnellement, je recommanderais REMnux de Lenny Zeltser. Presque tous les outils répertoriés dans ce fil y sont déjà installés. Si vous travaillez avec des SWF intégrés dans des documents, je vous recommande xxxswf.py pour les extraire. Le code source n'est pas si mal commenté, il vous donnera donc quelques notions de base sur la structure des fichiers. Clause de non-responsabilité: mon outil.
Quelques outils non répertoriés que je recommanderais sont Flash Decompiler de Trillix et Yogoda. Ces deux outils sont destinés à Windows.
A utilisé SWFWire Debugger une fois pour extraire une clé AES d'un jeu flash. Il peut tracer les fonctions et leurs paramètres lors de l'exécution. Je trouve cela extrêmement utile.
Consultez le travail de Sebastian Porst [1] (voir en particulier le répertoire / slides pour un aperçu, puis le reste du code peut être trouvé à partir de la racine).
Il existe un plugin IDA Pro qui vous permet de désassembler les fichiers SWF comme n'importe quel autre exécutable.
Il existe déjà de nombreux outils pour ce faire, il suffit de faire une recherche rapide sur Google.
Un exemple serait asdec
Voici également une question répétée "does-an-actionscript-decompiler-get-actionscript-from-dynamically-linked-as-file"
Aussi Gnash et Lightspark sont des implémentations open source de Flash qui devraient être intéressantes.
J'ai utilisé le package SWFTools ( http://www.swftools.org) dans le passé pour l'analyse des fichiers swf.
L'outil swfextract de ce package vous permet de extraire toutes sortes d'artefacts d'un fichier swf.
L'outil swfdump dans le même package peut désassembler toutes les versions d'ActionScript (v1-3). La bonne chose à propos de swfdump est qu'il affichera la sortie au format p-code lisible par l'homme, ce qui aide beaucoup à l'analyse.
De plus, il existe des décompilateurs commerciaux tels que Sothink SWF Decompiler et Flash Decompiler Trillix. Je n'ai aucune expérience de leur utilisation et je ne peux pas recommander leur fonctionnement.
Si vous vous souciez surtout du code brut, je peux vous recommander RABCDAsm
https://github.com/CyberShadow/RABCDAsm
Ceci générera un bytecode Actionscript très fonctionnel et vous permettra également de le corriger.
J'aime beaucoup le Flash Decompiler de Sothink. Bien que ce soit commercial, cela en vaut vraiment la peine si vous faites parfois de l'ingénierie inverse des fichiers flash.
La version complète (que je possède et utilise) peut décompiler des fichiers SWF entiers vers FLA, prend en charge les dernières versions d'AS (lorsque d'autres sont gratuits tools ne l’étaient pas), vous permet de modifier et d’exécuter des fichiers SWF ainsi que de créer une version SWF modifiée, de modifier tous les types de ressources (pas seulement le code) et de disposer d’une interface graphique riche en fonctionnalités.