22 Mars 2022
Aide au reverse engineering avec GLIMPS Audit
Articles
Quoi de plus fastidieux, lorsqu’on débute la rétroconception d’un binaire, que ce soit pour une recherche de vulnérabilités ou une analyse de malware par exemple, de devoir commencer par retrouver le code connu ?
Dans certains firmwares, où il n’y a pas de symboles de debug et l’OS est propriétaire, on peut passer plusieurs mois simplement pour identifier les fonctions essentielles (memcpy, print to uart…).
GLIMPSAudit permet de passer cette étape en quelques secondes. Un binaire poussé est immédiatement comparé à des millions de bibliothèques et autres binaires que nous avons rassemblé et pour lesquels nous avons les symboles. En quelques secondes, nous voyons quel code est inclus dans le binaire, et nous pouvons rapatrier la documentation vers notre nouvelle analyse.
Nous vous proposons de débuter la rétroconception d’un exécutable. Vous pouvez le télécharger ici (le binaire fait 35M… et ne contient pas de malware).
Dans notre exemple, nous avons un elf de 14000 fonctions, dont 2 seulement identifiées par IDA : « _init_proc » et « _term_proc ». En temps normal, on se dirait que la journée va être longue…
La capture d’écran ci-dessous montre la situation :
Passons maintenant le binaire dans GLIMPS-Audit. On obtient la liste de bibliothèques proches suivantes :
- libgcrypt.so.20.2.4
- libsqlite3.so.0.8.6
- glxtrace.so
- RSQLite.so
- libsqlcipher.so.0.8.6
- libxml2.so.2.9.4
- egltrace.so
- libssl.so.1.1
- libgnutls.so.30.23.2
- libc-2.28.so
- libinproctrace.so
- libgcrypt.so.20.2.5
- libgcrypt.so.20.1.6
- libicuuc.so.63.2
- libcrypto.so.1.1
- libcrypto.so.1.0.0
- libstdc++.so.6.0.25
- libaria2.so.0.0.0
On en sait déjà un peu plus sur notre binaire ! Ainsi, la libc est présente, de la crypto, du xml, du sqlite, et la libaria2.
On génère donc un idc pour notre binaire. Vous pouvez télécharger le résultat ici. En appliquant le script, 5592 fonctions sont immédiatement renommées parmi nos 14000 fonctions. Bien sûr, il vous reste encore du travail, mais avec des fonctions appelées déjà nommées, comme on peut le voir ci-dessous, ce sera plus facile. Avouez que vous avez gagné quelques semaines !