
Outil d'extraction basé sur Frida.re pour RunPE (et MapViewOfSection)
FridaExtract est un outil d'extraction basé sur Frida.re pour RunPE. L'injection de type RunPE est une technique courante utilisée par les malwares pour cacher du code dans un autre processus. C'est également le dernier stade de nombreux packers : )
NOTE : Frida supporte désormais également l'extraction de fichiers PE injectés en utilisant la technique "MapViewOfSection" mieux décrite ici.
Avec FridaExtract, vous pouvez automatiquement extraire et reconstruire un fichier PE qui a été injecté en utilisant la méthode RunPE... et contourner ces packers !
Il existe de nombreux excellents outils qui extraient déjà le code injecté par RunPE, FridaExtract n'est pas meilleur que ceux-ci. Mais il est plus facile à installer, plus facile à construire (lol), plus facile à exécuter et plus facile à bidouiller. Pas de compilateurs, pas d'environnements de compilation, juste un simple « pip install » et vous êtes prêt.
Le code est spécifiquement commenté et organisé pour servir de modèle vous permettant de construire vos propres projets Frida. Il s'agit davantage d'une preuve de concept qui montre comment configurer des hooks dans un environnement Windows. N'hésitez pas à copier-coller-bidouiller ce code comme bon vous semble !
Avertissement : FridaExtract fonctionne uniquement sous Windows 32 bits. Il y a actuellement quelques bugs mystérieux avec wow64, nous recommandons donc de s'en tenir à Windows 7 32 bits ou Windows Server 2008 32 bits.
pip install frida dans l'invite de commandesFridaExtract n'est capable d'extraire que les fichiers PE injectés par RunPE, il est donc assez limité. Si vous utilisez une VM facile à prendre en photo, exécuter et restaurer, vous pouvez simplement essayer FridaExtract à l'aveugle sur chaque échantillon de malware et voir ce qui en sort, mais nous ne le recommandons pas. FridaExtract est plutôt un bon complément à un sandbox (on adore malwr). Exécutez d'abord l'échantillon dans un sandbox et notez les appels API.
Pour la technique RunPE, si vous voyez les appels API suivants, alors FridaExtract peut être l'outil qu'il vous faut :
Pour la technique MapViewOfSection, si vous voyez les appels API suivants, alors FridaExtract peut être l'outil qu'il vous faut :
Par défaut, FridaExtract tentera d'extraire automatiquement le fichier PE injecté, de le reconstruire et de le vider dans un fichier appelé dump.bin.
python FridaExtract.py bad.exe
Un fichier de vidage peut être spécifié à l'aide de la commande --out_file.
python FridaExtract.py bad.exe --out_file extracted.exe
Si le fichier PE packé que vous tentez d'extraire nécessite des arguments, vous pouvez les passer à l'aide de la commande --args. Plusieurs arguments peuvent être passés séparés par des virgules.
python FridaExtract.py bad.exe --args password
FridaExtract tentera automatiquement de reconstruire la mémoire vidée en un fichier PE. Si cela ne fonctionne pas et que vous souhaitez simplement un vidage brut de toute la mémoire écrite dans le sous-processus, vous pouvez utiliser la commande --raw. Au lieu d'écrire le PE reconstruit dans le fichier de vidage, les segments de mémoire bruts seront écrits dans l'ordre des adresses.
python FridaExtract.py bad.exe --raw
FridaExtract utilise des hooks sur les API suivantes pour extraire le fichier PE injecté :
Pour tracer ces API et afficher les résultats, utilisez la commande -v ou --verbose.
python FridaExtract.py bad.exe --verbose
Frida utilise des hooks en espace utilisateur qui peuvent être facilement contournés. Si vous avez besoin d'un outil DBI plus robuste, essayez PIN ! Un excellent exemple d'utilisation de PIN pour extraire RunPE est fourni ici.
Frida injecte un runtime javascript dans le processus que vous analysez, il n'est pas furtif. Pour un bon aperçu de la façon dont Frida peut être détectée par les malwares, jetez un œil ici.