lundi 9 juillet 2012

RMLL (suite) - reverse engineering

Ce message est la suite de mon live blogging pour la première journée sécurité aux RMLL 2012.

5/ Reverse Engineering RootBSD
La conférence est captée en Audio Vidéo. Conférence présentée par r00tBSD aka Paul Rascagneres, mainteneur et auteur du projet malware.lu. malware.lu c'est 1.2Million de malwares et 800 utilisateurs, ainsi que des articles.

Cette présentation va montrer et décrire les outils libres utilisés pour faire du reverse, mais elle démarre par des rappels juridiques. Il semblerait que vis-à-vis de la loi française, le reverse de malware soit possible.
  • Les outils ltrace & strace: Ces outils donnent les syscalls utilisés par les binaires, mais ont toutefois le défaut de devoir lancer le binaire. Ces deux appels utilisent en fait ptrace. ptrace est lancé avant le binaire, lui donne la main et peut la reprendre à tout moment. ptrace permet vraiment de monitorer entièrement un binaire, il a notamment servi à reverser skype.
  • LD_PRELOAD: une variable d'environnement connue sous tous les unix, qui permet sous linux de donner des bibliothèques qui seront chargées en priorité (hook de librairie). Cela permet de surcharger les fonctions de librairies de l'OS. Cette méthode ne fonctionne pas sur les binaires setuid pour des raisons de sécurité.
  • SystemTap: développé par redhat, qui ressemble à dtrace de solaris. Il existe un grand nombre de sondes (réseaux, IO, etc..) et systemtap permet d'écrire des programmes qui s'appuyent sur les données de ces sondes. Sert aussi pour mesurer les perfs.
  • Wireshark: quelquefois le reverse est inutile, une simple trame réseau est suffisante.
  • Analyse de mémoire: généralement un binaire malveillant sur disque est compressé ou obfusqué et se déchiffre en mémoire. Dans une VM on peut lancer le malware, et dumper la RAM de la VM. L'analyse de dumps windows se fait avec volatility et volatilitux pour linux. Une live demo est montrée sur une machine windows. Puisque voloatility n'est pas lancé sur la machine cible, il est impossible pour le binaire malveillant de modifier les outils d'analyse.
La suite de la présentation est plus tourné vers l'assembleur, les non geeks et les personnes facilement impressionnables sont priés de quitter la salle :) Quatre outils vont être évoqués.

  • Cuckoo: cuckoo est une sandbox virtualbox qui logge tout ce qu'un binaire fait (fichiers, réseaux, Base de registre windows, etc) et  produit un rapport. En fin d'analyse, la VM est restaurée. L'analyse est automatique.
  • gdb et winegdb: le debugger le plus connu. gdb permet de mettre des points de pause (breakpoints), fonctionner en pas à pas, montrer le code assembleur et beaucoup d'autres choses. Une demo sur un binaire est présenté avec mode pas à pas et présentation des registres.
  • Virtualbox et gdb: lorsque gdb ne suffit pas, il est possible de l'utiliser avec virtual box. Le conférencier fait très fort en présentant l'analyse de Flame (un virus dont vous avez entendu parler). Le conférencier fait une bonne explication en indiquant comment utiliser Flame contre lui-même en lui faisant décoder chacune des chaînes obfusquées, tout ça sans même connaître le code de déchiffrement!
  • ripper metasm: il s'agit d'un wrapper permettant d'extraire une fonction d'un malware et de trouver les arguments qui lui sont passés. Ceci permet ensuite d'inclure cette fonction dans n'importe quel programme. Ceci es très utile lorsque des opérations d'obfuscation existent dans les malwares. Les phases d'analyse de ces fonctions étant fastidieuses autant demander au malware de faire le travail lui même :)
Mais l'analyse dynamique n'est pas le seul mode d'analyse car quelquefois les malwares détectent les environnements de debugs. Il faut donc effectuer des analyses statiques du code. metasm permet de faire de l'analyse statique. Une courte demo est faite, puisque tout ceci sera revu dans le workshop de mardi matin. Dans les questions est posé la question d'Ida. Le conférencier indique qu'Ida est encore au dessus des outils libres bien que metasm progresse bien.

Je ne ferais pas de suivi demain matin, étant au workshop reverse engineering.

Aucun commentaire:

Enregistrer un commentaire