sourcefu - sstic · 2019. 6. 8. · mais ça existe déjà! •l’approhe en elle-même n’est...
TRANSCRIPT
![Page 1: SourceFu - SSTIC · 2019. 6. 8. · Mais ça existe déjà! •L’approhe en elle-même n’est pas nouvelle –CCC 2010 : Code Deobfuscation by Optimization, B. Spasojevic –Automatic](https://reader033.vdocuments.site/reader033/viewer/2022051920/600c69410dc91736f2539e7d/html5/thumbnails/1.jpg)
SourceFu utilisation de l’interprétation partielle pour la désobfuscation de sources
Zilio Nicolas, @Big5_sec
Conférence SSTIC 2019
![Page 2: SourceFu - SSTIC · 2019. 6. 8. · Mais ça existe déjà! •L’approhe en elle-même n’est pas nouvelle –CCC 2010 : Code Deobfuscation by Optimization, B. Spasojevic –Automatic](https://reader033.vdocuments.site/reader033/viewer/2022051920/600c69410dc91736f2539e7d/html5/thumbnails/2.jpg)
Genèse
SSTIC 2019 - SourceFu 2
![Page 3: SourceFu - SSTIC · 2019. 6. 8. · Mais ça existe déjà! •L’approhe en elle-même n’est pas nouvelle –CCC 2010 : Code Deobfuscation by Optimization, B. Spasojevic –Automatic](https://reader033.vdocuments.site/reader033/viewer/2022051920/600c69410dc91736f2539e7d/html5/thumbnails/3.jpg)
Constat • Outils à base de Regex + formatage
– Faciles à mettre en œuvre – Performances pas forcément au rendez-vous
• Outils de type Sandbox/Interprétation instrumentée – Potentiellement très efficace – on perd l’accès au source – Potentiellement auto-pown + anti-analyse
• Méthode manuelle – Long et fastidieux mais 100% efficace
SSTIC 2019 - SourceFu 3
![Page 4: SourceFu - SSTIC · 2019. 6. 8. · Mais ça existe déjà! •L’approhe en elle-même n’est pas nouvelle –CCC 2010 : Code Deobfuscation by Optimization, B. Spasojevic –Automatic](https://reader033.vdocuments.site/reader033/viewer/2022051920/600c69410dc91736f2539e7d/html5/thumbnails/4.jpg)
Objectifs
SSTIC 2019 - SourceFu 4
• « Framework » de désobfuscation de sources • IDE de désobfuscation
• Intégration avec d’autres outils d’analystes
• Garder l’accès au source
• support des langages les plus communs • Powershell, Javascript, VB*
![Page 5: SourceFu - SSTIC · 2019. 6. 8. · Mais ça existe déjà! •L’approhe en elle-même n’est pas nouvelle –CCC 2010 : Code Deobfuscation by Optimization, B. Spasojevic –Automatic](https://reader033.vdocuments.site/reader033/viewer/2022051920/600c69410dc91736f2539e7d/html5/thumbnails/5.jpg)
Une autre approche
• Approche intermédiaire entre la regex et la sandbox
– Et si on interprétait que certaines parties de code?
– Globalement, il suffirait d’optimiser le code pour le « désobfusquer »
• Simplification des expressions
• Evaluation des parties constantes
SSTIC 2019 - SourceFu 5
![Page 6: SourceFu - SSTIC · 2019. 6. 8. · Mais ça existe déjà! •L’approhe en elle-même n’est pas nouvelle –CCC 2010 : Code Deobfuscation by Optimization, B. Spasojevic –Automatic](https://reader033.vdocuments.site/reader033/viewer/2022051920/600c69410dc91736f2539e7d/html5/thumbnails/6.jpg)
Idée de base
Source obfusquée
Source « désobfusquée »
Optimisations (réduction AST)
AST
réécriture
SSTIC 2019 - SourceFu 6
parsing
-> ANTLR
-> ANTLR
![Page 7: SourceFu - SSTIC · 2019. 6. 8. · Mais ça existe déjà! •L’approhe en elle-même n’est pas nouvelle –CCC 2010 : Code Deobfuscation by Optimization, B. Spasojevic –Automatic](https://reader033.vdocuments.site/reader033/viewer/2022051920/600c69410dc91736f2539e7d/html5/thumbnails/7.jpg)
Mais ça existe déjà!
• L’approche en elle-même n’est pas nouvelle – CCC 2010 : Code Deobfuscation by Optimization, B. Spasojevic
– Automatic Binary Deobfuscation, Journal in Computer Virology, Y. Guillot and A. Gazet
• Concernant le source, des outils utilisant ce principe ont même été publiés – JsDetox by @svent_t
– Jstillery by OpenMinded
SSTIC 2019 - SourceFu 7
![Page 8: SourceFu - SSTIC · 2019. 6. 8. · Mais ça existe déjà! •L’approhe en elle-même n’est pas nouvelle –CCC 2010 : Code Deobfuscation by Optimization, B. Spasojevic –Automatic](https://reader033.vdocuments.site/reader033/viewer/2022051920/600c69410dc91736f2539e7d/html5/thumbnails/8.jpg)
SSTIC 2019 - SourceFu 8
![Page 9: SourceFu - SSTIC · 2019. 6. 8. · Mais ça existe déjà! •L’approhe en elle-même n’est pas nouvelle –CCC 2010 : Code Deobfuscation by Optimization, B. Spasojevic –Automatic](https://reader033.vdocuments.site/reader033/viewer/2022051920/600c69410dc91736f2539e7d/html5/thumbnails/9.jpg)
Sous le capot
Optimisations 1-Passe
Tant que ( une des optimisations de la boucle retourne un changement dans le code :
| optimisations multi-passes
Nettoyage
SSTIC 2019 - SourceFu 9
Suppression commentaires Remplacement constantes du langage
Suppression code mort Evaluation des expressions Propagation des constantes Simplification CFG
Renommage symboles Beautify
![Page 10: SourceFu - SSTIC · 2019. 6. 8. · Mais ça existe déjà! •L’approhe en elle-même n’est pas nouvelle –CCC 2010 : Code Deobfuscation by Optimization, B. Spasojevic –Automatic](https://reader033.vdocuments.site/reader033/viewer/2022051920/600c69410dc91736f2539e7d/html5/thumbnails/10.jpg)
Sous le capot - 1 • interprétation des expressions
– toute grammaire contient un truc du genre :
Remplacer un mix de sous expressions par l’expression finale simplifiée
SSTIC 2019 - SourceFu 10
![Page 11: SourceFu - SSTIC · 2019. 6. 8. · Mais ça existe déjà! •L’approhe en elle-même n’est pas nouvelle –CCC 2010 : Code Deobfuscation by Optimization, B. Spasojevic –Automatic](https://reader033.vdocuments.site/reader033/viewer/2022051920/600c69410dc91736f2539e7d/html5/thumbnails/11.jpg)
Sous le capot - 2
• Exemple de simplification de code
– Blocs « IF-ELSE IF -ELSE »
• Supprimer les conditions vérifiant « Faux »
• Ne garder que la condition « Vrai » si toutes les conditions précédentes vérifient « Faux »
SSTIC 2019 - SourceFu 11
![Page 12: SourceFu - SSTIC · 2019. 6. 8. · Mais ça existe déjà! •L’approhe en elle-même n’est pas nouvelle –CCC 2010 : Code Deobfuscation by Optimization, B. Spasojevic –Automatic](https://reader033.vdocuments.site/reader033/viewer/2022051920/600c69410dc91736f2539e7d/html5/thumbnails/12.jpg)
Sous le capot - 3
• Renommage des symboles
– Eviter les variables avec un nom trop ressemblant
– Les variables sont listées par "scope", puis renommées en fonction de celui-ci avec un index
SSTIC 2019 - SourceFu 12
![Page 13: SourceFu - SSTIC · 2019. 6. 8. · Mais ça existe déjà! •L’approhe en elle-même n’est pas nouvelle –CCC 2010 : Code Deobfuscation by Optimization, B. Spasojevic –Automatic](https://reader033.vdocuments.site/reader033/viewer/2022051920/600c69410dc91736f2539e7d/html5/thumbnails/13.jpg)
SSTIC 2019 - SourceFu 13
![Page 14: SourceFu - SSTIC · 2019. 6. 8. · Mais ça existe déjà! •L’approhe en elle-même n’est pas nouvelle –CCC 2010 : Code Deobfuscation by Optimization, B. Spasojevic –Automatic](https://reader033.vdocuments.site/reader033/viewer/2022051920/600c69410dc91736f2539e7d/html5/thumbnails/14.jpg)
Pourquoi le projet peut être intéressant • SOC/CERT
• Amélioration capacités IDE et outils de traitement
de sources/données
• Fuzzing à base de grammaires
• Recherche académique?
SSTIC 2019 - SourceFu 14
![Page 15: SourceFu - SSTIC · 2019. 6. 8. · Mais ça existe déjà! •L’approhe en elle-même n’est pas nouvelle –CCC 2010 : Code Deobfuscation by Optimization, B. Spasojevic –Automatic](https://reader033.vdocuments.site/reader033/viewer/2022051920/600c69410dc91736f2539e7d/html5/thumbnails/15.jpg)
Etat actuel : SourceFu
• Version pre-alpha-0.01
• Supporte un peu le VBA, à peine le Javascript, et pas encore le Powershell….
• Plein d’améliorations possibles… – Intéraction directe AST, Évaluation plus complète,
amélioration grammaires, intégration travail analyste…
SSTIC 2019 - SourceFu 15
![Page 16: SourceFu - SSTIC · 2019. 6. 8. · Mais ça existe déjà! •L’approhe en elle-même n’est pas nouvelle –CCC 2010 : Code Deobfuscation by Optimization, B. Spasojevic –Automatic](https://reader033.vdocuments.site/reader033/viewer/2022051920/600c69410dc91736f2539e7d/html5/thumbnails/16.jpg)
Devenez contributeurs !
SSTIC 2019 - SourceFu 16
https://github.com/Big5-sec/SourceFu
• Un simple intérêt pour l’outil suffit
![Page 17: SourceFu - SSTIC · 2019. 6. 8. · Mais ça existe déjà! •L’approhe en elle-même n’est pas nouvelle –CCC 2010 : Code Deobfuscation by Optimization, B. Spasojevic –Automatic](https://reader033.vdocuments.site/reader033/viewer/2022051920/600c69410dc91736f2539e7d/html5/thumbnails/17.jpg)
[Teaser] On se revoit plus tard dans l’année…