Tous les ans, le SSTIC propose un challenge ouvert à tous en lien avec la sécurité informatique. Cette année, le concours est organisé par l'ANSSI. L'ANSSI est l'agence gouvernementale dérivant de la DCSSI, suite aux recommandations du livre blanc sur la défense nationale. Elle a volonté de devenir autorité dans les systèmes de sécurité informatiques. A mon avis il n'y a pas de hasard quant à la présence de l'ANSSI comme organisateur du challenge cette année. Quitte à faire phosphorer des participants, autant leur montrer la direction :)
Débutons par la recherche de la personne qui a créé ce challenge. Généralement, si l'auteur est connu, il a publié un certains nombres de conférences ou d'articles, il est facile de cerner le domaine d'activité ou les pistes générales de résolution. Ici, l'identité de l'auteur n'est pas connue. Dommage. Pas de labo smartphones sur le site de l'ANSSI, pas de publication non plus.
Il s'agit d'un challenge de forensics sous linux, d'un CPU ARM, du système Android. Après quelques recherches rapides, on apprend que le fonctionnement des programmes sous Android utilise une machine virtuelle appelée Dalvik, grossièrement comparable une machine Java, et que le format d'exécutables est de type .dex, optimisé à chaud en .odex.
Revenons à l'ANSSI. Quel a été son but en proposant ce challenge? Je ne pense pas qu'il s'agisse de savoir si les participants savent utiliser les commandes strings et grep ;)
Pour décompiler du code dex, ça a été fait juste avant le challenge: http://www.illegalaccess.org/undx/ . Pour décompiler de l'odex ça existe depuis un peu plus de temps: http://code.google.com/p/smali/
Mais comment analyser cette RAM? Il existe des outils d'analyse de dump mémoire sous windows: http://www.moonsols.com/. Certains vieux trucs, non cités ici, permettent dans certains cas de lire une image mémoire sous linux avec un noyau patché.
Sinon, côté outil d'analyse de RAM sous linux, c'est le néant. Et je pense que c'est ce qu'attends l'ANSSI! A ce titre, le double concours est clair. Il est clairement indiqué qu'ils attendent non seulement la solution, mais surtout une explication détaillée de celle-ci. Je pense à ce titre que la valeur monétaire d'un outil de forensics sous linux dépasse de loin la valeur des lots :) [ Wild Guess de ma part, je n'ai pas de chiffre en tête. ]
Quel serait cet outil dans ce cas? A mon avis, pour s'approcher de la solution, il faut recréer la table des process dans l'image mémoire. Un process est une structure, définie dans <linux/sched.h> task_struct. Les process font partie d'une liste doublement chaînée.
Yapluka trouver un process dans le dump Android, remonter la chaîne reconstruire l'équivalent de /proc/ et de lister les fichiers ouverts, les lignes de commandes utilisées, les arguments, etc.. Le process initial cible évident semble être init, de pid 1. Je dis "yapluka", je pense qu'on doit vite tomber dans pas mal de subtilités, et ça explique pourquoi je n'ai pas poussé mon idée. Une fois les fichiers trouvés, à mon avis, il faut iliser undx et/ou baksmali pour comprendre le code, faire l'opération inverse, et voir afficher "Bravo ! Va lancer le binaire" ;)
Est-ce que le challenge SSTIC cette année consistait pour l'ANSSI de créer des outils de forensics? Je me trompe peut-être, j'espère que l'intégralité des solutions seront fournies sur le site du SSTIC, elles seront sûrement intéressantes à consulter. Réponse le 10 juin.
http://code.google.com/p/draugr/
RépondreSupprimerPour les publications de l'ANSSI, c'est vrai qu'il faut chercher...
RépondreSupprimerhttp://www.ssi.gouv.fr/publications
non vraiment c'est trop dur à trouver ;-)
"A mon avis, pour s'approcher de la solution, il faut recréer la table des process dans l'image mémoire." Bien vu ;) :
RépondreSupprimerhttp://pentester.fr/blog/index.php?post/2010/06/03/Challenge-SSTIC-2010-in-a-nutshell
@Anonyme: draugr fonctionne?
RépondreSupprimer@Anonyme: publications sur le forensics Android? La seule référence à Android sur le site de l'ANSSI concerne une offre d'emploi :)
@Anonyme: Si je lis bien les commentaires du blog d'Hurukan, il semble que newsoft n'ait ni trouvé les énigmes, ni cassé lui même le GPG. Pourtant il est cité parmi les gagnants... Une autre solution? Du social engineering? Le piratage de la boite mail d'un autre vainqueur :) ? Le cassage du bloc RC4?
@Kevin:
RépondreSupprimerou alors il a demandé à ses collègues les solutions de ces parties, et il a fait le reste ;)
on verra bien sa solution
@Kevin : sur du X86 linux
RépondreSupprimer