Dynamic Malware Analysis for Dummies
Philippe Lagadec
NATO/NC3A philippe.lagadec(`)nc3a.nato.int a
R´sum´ Cet article d´crit diff´rentes m´thodes pour effectuer l’analyse de logiciels male e e e e veillants (malware), plus particuli`rement sur les plate-formes Windows. Il se penche en pare ticulier sur l’analyse dynamique, qui consiste a ex´cuter le code malveillant sur un syst`me e e sp´cialement configur´ pour enregistrer toutes ses actions. Cela permet d’obtenir rapidement e e des r´sultats pour d´terminer la nature du logiciel malveillant et d´cider comment r´agir. e e e e L’article montre ´galement comment construire un laboratoire d’analyse dynamique simple e et a moindre coˆt, d´taille la m´thode employ´e et propose quelques pistes pour aller plus ` u e e e loin.
1
Introduction
L’analyse de codes malveillants (malware analysis) est aujourd’hui devenue une activit´ tr`s e e importante dans le cadre de la gestion des incidents de s´curit´ informatique. Les organisations e e qui prennent s´rieusement en compte la s´curit´ de leurs r´seaux sont souvent confront´es a des e e e e e fichiers suspects captur´s grˆce ` leurs antivirus, IDS et syst`mes de supervision s´curit´, ou encore e a a e e e lors d’analyses forensics. Il est alors n´cessaire d’analyser rapidement ces fichiers pour d´terminer e e s’il s’agit de code malveillant connu, d’une attaque cibl´e ou bien d’une fausse alerte. Connaˆ le e ıtre comportement d’un code malveillant est capital pour d´terminer si d’autres machines sur le r´seau e e peuvent ˆtre compromises ou non, et pour d´cider comment r´agir. e e e L’analyse statique de code ex´cutable par d´sassemblage a beaucoup de succ`s et permet d’obtee e e nir d’excellents r´sultats, cependant la complexit´ de ce processus demande un long apprentissage, e e beaucoup de temps et d’´nergie. De plus il n’est pas rare de rencontrer des codes malveillants e prot´g´s contre le d´sassemblage et le d´bogage, ce qui peut ralentir consid´rablement l’analyse. e e e e e L’analyse dynamique de code malveillant est une autre m´thode qui consiste ` faire ex´cuter un e a e ´chantillon de code sur une plate-forme con¸ue pour observer toutes ses actions. Dans la plupart e c des cas, c’est une approche tr`s efficace et rapide pour d´terminer la nature et le comportement du e e code malveillant, au moins dans un premier temps. Cet article d´crit comment il est possible d’installer facilement et ` moindre coˆt un modeste e a u laboratoire d’analyse dynamique de code malveillant, mˆme sans comp´tences en d´sassemblage. e e e
2
Malware, code malveillant, maliciel
Il existe plusieurs sortes de codes malveillants, dont les d´finitions sont relativement bien connues e mais peuvent varier : Virus, vers, chevaux de Troie, portes d´rob´es (backdoors), bombes logiques, e e keyloggers, espiogiciels (spyware), rootkits, botnets, ... (cf. [1] par exemple) Au-del` de ces d´finitions, certaines caract´ristiques sont particuli`rement importantes pour a e e e l’analyse de code malveillant, notamment :
2
Actes du symposium SSTIC08
– – – – – –
capacit´ ` se r´pliquer ea e techniques de camouflage connexion r´seau externe pour contrˆle ` distance e o a protection contre le d´sassemblage et/ou le d´bogage e e d´tection de machine virtuelle e nature du code malveillant : fichier ex´cutable, document malform´ contenant un exploit, e e script dans une page web, ...
3
3.1
M´thodes d’analyse de code malveillant e
Objectifs
Voici quelques-uns des objectifs habituels d’une analyse de code malveillant : – V´rifier si un fichier suspect est effectivement malveillant ou s’il s’agit d’un faux positif. e – D´terminer s’il s’agit d’un code malveillant g´n´rique (connu ou non) ou bien d’une attaque e e e cibl´e. e – Obtenir des informations sur la source de l’attaque. – D´terminer toutes les actions du code malveillant sur le syst`me local : fichiers cr´´s/modifie e ee ´s/supprim´s, processus lanc´s/stopp´s, cl´s de registre, services install´s, ... e e e e e e – D´terminer toutes ses actions sur le r´seau : connexions sortantes, r´plication, serveur en e e e ´coute, ... e – D´terminer ses “fonctionnalit´s” malveillantes : virus, ver, cheval de Troie, porte d´rob´e, e e e e bombe logique, rootkit, ´coute clavier ou r´seau, t´l´chargement, relais de spam, d´ni de e e ee e service, botnet, ... – D´terminer quelles sont les machines cibl´es et lesquelles pourraient ˆtre vuln´rables ou d´j` e e e e ea compromises sur le r´seau. e – Fournir des informations pour mieux cibler une ´ventuelle analyse forensics d’autres machines e (noms de processus, empreintes MD5 de fichiers, cl´s de registre, mots cl´s, ...) e e – D´cider quelles actions entreprendre pour g´rer l’incident. e e – Comprendre comment la compromission s’est d´roul´e afin d’am´liorer les protections ` l’avee e e a nir. Pour tout cela il existe plusieurs m´thodes compl´mentaires d’analyse de code malveillant : e e 3.2 Analyse statique de fichiers
L’analyse statique de fichiers consiste ` explorer le contenu des fichiers suspects l’aide de divers a outils, dans le but d’extraire le maximum d’informations sans ex´cuter le code malveillant qu’ils e pourraient contenir. A ce stade il s’agit uniquement d’observer le contenu “visible” sans tenter de d´sassembler le code binaire. Le premier outil ` employer dans ce cas est toujours un simple e a afficheur texte/hexad´cimal. e Une analyse directe de ce type permet souvent de r´v´ler beaucoup d’informations utiles grˆce e e a aux chaˆ ınes de caract`res qui apparaissent en clair, aux entˆtes de fichiers, aux m´ta-donn´es, e e e e etc. Il est mˆme parfois possible d’extraire des donn´es camoufl´es par des m´thodes simples (i.e. e e e e “XOR”), sans recourir ` des m´thodes d’analyse sophistiqu´es. Dans le cas de document malform´s a e e e (par exemple des exploits pour MS Office), des outils de “file carving” [2] peuvent souvent extraire les fichiers ex´cutables malveillants stock´s ` l’int´rieur. e e a e Voici quelques exemples d’outils typiques employ´s dans ce type d’analyse : e
Actes du symposium SSTIC08
3
– – – – – – – Voici – – – – – – –
Afficheur ou ´diteur texte/hexad´cimal e e Antivirus Scanner d’exploits connus Outils pour rechercher des motifs ou des mots-cl´s particuliers e Outils d’analyse d’ex´cutables e Explorateur de documents OLE (MS Office) Outils de File carving le type d’informations utiles qu’il est souvent possible d’extraire : Types de fichiers Pr´sence de code malveillant connu ou non e Adresses IP, URLs, noms de domaines ou de machines (cibles du code malveillant, serveur de t´l´chargement ou bien connexion retour vers un serveur de contrˆle) ee o Date de cr´ation des fichiers, auteur, organisation et autres informations (m´tadonn´es dans e e e les documents) Encodages utilis´s (qui peuvent trahir une provenance exotique) e Pr´sence possible de shellcodes (“NOP sleds” : typiquement une longue suite d’octets 0x90) e Mots cl´s particuliers qui peuvent indiquer une attaque cibl´e : nom de l’entreprise, noms de e e serveurs, d’applications ou d’utilisateurs sp´cifiques, mots de passe internes, etc. e D´sassemblage e
3.3
Le d´sassemblage statique consiste ` ouvrir un fichier ex´cutable dans un outil comme IDA e a e Pro [19] afin de retrouver le code assembleur correspondant au contenu binaire du fichier. Certains produits proposent mˆme des fonctions de d´compilation pour reconstruire (dans une certaine e e mesure) le code source de haut niveau employ´ au d´part (en g´neral du C). e e e A la lecture du code assembleur il est alors possible de deviner le comportement de chaque partie du programme, pour en d´duire toutes les fonctionnalit´s. e e L’avantage principal de cette m´thode est que (en th´orie) tous les chemins d’ex´cution du e e e programme sont visibles “` plat”. Il est donc possible d’analyser l’int´gralit´ du code y compris a e e certaines parties qui ne s’ex´cutent que sous des conditions particuli`res. e e Cette m´thode permet ´galement de trouver d’´ventuelles routines de camouflage souvent eme e e ploy´es pour masquer les donn´es “sensibles” du code malveillant : mots de passe, adresses IP ou e e URLs de serveurs de contrˆle par exemple. o Cependant le d´sassemblage a quelques inconv´nients : e e – Il requiert un op´rateur tr`s comp´tent, form´ pour lire et analyser du code assembleur, qui e e e e connaˆ bien la correspondance entre ce code, les langages de haut niveau et les appels syst`me. ıt e – Une analyse compl`te d’un fichier peut demander beaucoup de temps (de plusieurs jours ` e a plusieurs semaines) et d’´nergie, en fonction de la taille et de la complexit´ du code. e e – De nombreux codes malveillants sont prot´g´s contre le d´sassemblage ` l’aide de techniques de e e e a compression ou de chiffrement (packers, encrypters). Ces protections ne sont jamais parfaites, mais certaines peuvent demander beaucoup d’efforts et ralentissent l’analyse. 3.4 D´bogage e
Le d´bogage consiste ` ex´cuter pas-`-pas le code malveillant en employant un d´bogueur e a e a e (comme Ollydbg, SoftIce, Syser Debugger ou encore Immunity Debugger), afin d’analyser son comportement en suivant le code assembleur, les registres du processeur et les donn´es en m´moire. e e
4
Actes du symposium SSTIC08
C’est une m´thode souvent employ´e en compl´ment du d´sassemblage, utile pour mieux come e e e prendre certaines parties du code ou pour contourner certaines protections. Comme pour le d´sassemblage, cette m´thode n´cessite un op´rateur tr`s comp´tent, et les e e e e e e auteurs de code malveillant emploient ´galement des techniques pour d´tecter ou perturber le e e d´bogage. e 3.5 Analyse dynamique, analyse comportementale
A l’inverse des m´thodes statiques, l’analyse dynamique consiste ` ex´cuter r´ellement le code e a e e malveillant dans un environnement ad´quat afin d’observer toutes ses actions et d’en d´duire son e e comportement global. Ce type de m´thode est parfois appel´e analyse comportementale, ou encore e e “dynamic malware analysis”, “runtime analysis”, “live analysis” ou “behavioral analysis” en anglais. Cette m´thode apporte plusieurs avantages par rapport au d´sassemblage statique : e e – Elle peut r´v´ler le comportement d’un code malveillant dans un temps tr`s court. Souvent e e e quelques minutes sont suffisantes pour obtenir les principaux r´sultats. e – Elle n’est pas sensible aux techniques de protection anti-d´sassemblage et anti-d´bogage. e e – Elle ne requiert pas autant de connaissances en assembleur que le d´sassemblage ou le d´bogage. e e Cependant, l’analyse dynamique n’est pas efficace dans tous les cas : – Si certaines fonctionnalit´s du code malveillant n´cessitent des conditions ou des ´v´nements e e e e particuliers pour s’ex´cuter, elles peuvent ne pas ˆtre d´tect´es lors de l’analyse. e e e e – Certains codes malveillants peuvent avoir ´t´ con¸us pour d´tecter les outils d’observation et ee c e ne pas s’ex´cuter dans ce cas. e Au final ce type de m´thode est tr`s efficace pour analyser rapidement des codes malveillants e e relativement simples, dont le comportement est automatique et reproductible. C’est par exemple le cas typique d’un cheval de Troie qui s’installe sur une machine et qui cherche ensuite ` se connecter a a ` l’ext´rieur pour recevoir des commandes, ou celui d’un ver qui cherche ` infecter d’autres machines e a vuln´rables sur le r´seau. e e Dans le cas de codes malveillants plus complexes, l’analyse dynamique constitue essentiellement une premi`re ´tape rapide, qui est souvent suivie d’un d´sassemblage/d´bogage lorsque cela est jug´ e e e e e n´cessaire. e 3.6 L´galit´ de l’analyse de codes malveillants e e
Dans la loi fran¸aise, les articles concernant la r´tro-conception ne couvrent pas explicitement le c e cas de l’analyse de codes malveillants. En th´orie cette activit´ n’est donc pas autoris´e, mˆme si elle e e e e est a priori indispensable, notamment chez les ´diteurs d’antivirus et autres IDS/IPS. Il ne semble e cependant pas exister de jurisprudence, et on voit mal un auteur de code malveillant poursuivre quelqu’un en justice pour avoir analys´ son oeuvre. e En revanche, la r´tro-conception est autoris´e dans le but d’assurer l’int´rop´rabilit´ entre logie e e e e ciels. On pourrait donc consid´rer que cela couvre l’analyse de codes malveillants, puisqu’il s’agit e justement d’assurer leur NON -interop´rabilit´ avec les syst`mes prot´g´s ! ;-) e e e e e
4
Un laboratoire d’analyse dynamique de codes malveillants
Ce chapitre d´crit comment construire simplement et ` coˆt r´duit un laboratoire d’analyse de e a u e codes malveillants pour effectuer des analyses statiques et dynamiques, en utilisant essentiellement des outils gratuits ou libres.
Actes du symposium SSTIC08
5
L’objectif principal est d’analyser soit des fichiers ex´cutables soit des documents malform´s, sur e e une plate-forme Microsoft Windows. Il serait bien sˆr possible cette approche ` d’autres syst`mes. u a e Le laboratoire n´cessite uniquement deux ordinateurs reli´s par un r´seau ind´pendant (i.e. un e e e e cˆble crois´ ou un petit concentrateur), appel´s “poste victime” (victim host) et “poste d’observaa e e tion” (monitoring server). Ces deux postes peuvent aussi ˆtre constitu´s de deux machines virtuelles e e sur une seule machine physique. Le poste victime contient le syst`me ou est ex´cut´ le code malveillant, tandis que le poste e e e d’observation permet de simuler une connexion Internet et d’enregistrer toute activit´ r´seau. e e Ce type d’architecture a d´j` ´t´ ´voqu´ dans plusieurs articles comme [3,4,5], on peut le d´signer eae ee e e par le terme “sandnet” par extension du terme classique “sandbox” (bac ` sable). a
4.1
Poste d’observation
Le poste d’observation a deux principales fonctions : – Il enregistre toute activit´ r´seau provenant du poste victime, pour d´tecter les ´ventuelles e e e e tentatives de connexion du code malveillant. – Il permet de simuler une connexion ` Internet afin de placer le code malveillant dans un a environnement o` il peut tenter de se connecter ` des serveurs externes. Pour cela il peut ˆtre u a e n´cessaire de simuler divers services comme DNS, HTTP, SMTP, FTP ou encore IRC. Il faut e ´galement pouvoir simuler n’importe quelle adresse IP sur demande du code malveillant. e Bien sˆr ce serveur ne doit pas ˆtre vuln´rable vis-`-vis du code malveillant : il doit ˆtre suffisamment u e e a e durci, s´curis´ et maintenu ` jour. Il est recommand´ d’employer un syst`me d’exploitation diff´rent e e a e e e du poste victime pour limiter les risques si jamais le code malveillant emploie un “zero-day” pour se r´pliquer. e Il est possible d’employer des outils de d´tection d’intrusion comme Snort [20] ou Bro [21] pour e d´tecter les tentatives d’attaque r´seau connues. Dans ce cas il est utile d’employer les signatures e e Bleeding Threats [22] pour am´liorer la d´tection de malware connus, comme l’indique [23]. e e 4.2 Poste victime
Le poste victime est l’ordinateur o` le code malveillant est lanc´. Il doit si possible contenir le u e mˆme syst`me d’exploitation et les mˆmes applications que le syst`me ` prot´ger ou que celui o` le e e e e a e u
6
Actes du symposium SSTIC08
sp´cimen a ´t´ captur´. Par exemple si le fichier suspect est un classeur Excel d´tect´ sur un poste e ee e e e Windows XP SP2 avec MS Office XP, alors le poste victime devrait avoir la mˆme configuration. e Au contraire des postes habituels, le but ici est de pouvoir ex´cuter le code malveillant sans le e bloquer. Il est donc n´cessaire (sauf cas particulier) de d´sactiver ou d´sinstaller toute protection e e e qui pourrait perturber l’analyse : – antivirus (` l’acc`s) a e – pare-feu personnel – logiciel de scan automatique – HIPS (syst`me de pr´vention d’intrusion local, maintenant int´gr´ ` de nombreux antivirus e e e ea et pare-feux personnels) – param`tres de s´curit´ trop restrictifs e e e La configuration r´seau du poste victime doit aussi ˆtre adapt´e pour diriger toute activit´ r´seau e e e e e ou Internet vers le poste d’observation : – Passerelle par d´faut e – Serveur DNS – Fichier “hosts” – Proxy web S’il est n´cessaire d’observer les capacit´s d’auto-r´plication du code malveillant, il est possible e e e d’´tendre l’architecture r´seau en ajoutant un ou plusieurs postes victimes suppl´mentaires connect´s e e e e au mˆme concentrateur. e 4.3 Virtualisation
L’architecture de test peut ˆtre install´e soit sur deux machines physiques, soit sur deux machines e e virtuelles. Aucune des deux solutions n’est id´ale pour couvrir tous les cas de figure, il est donc e utile de pr´voir les deux possibilit´s. e e Avantages de la virtualisation : – Coˆt et flexibilit´ : une seule machine physique permet de simuler deux machines ou plus, et u e de construire diff´rentes architectures r´seau suivant les besoins. e e – S´curit´ : les machines virtuelles peuvent ˆtre connect´es par un r´seau virtuel totalement e e e e e ind´pendant de tout r´seau op´rationnel, sans risque d’infecter d’autres machines. e e e – Rapidit´ et efficacit´ : une machine virtuelle peut ˆtre stopp´e, restaur´e et red´marr´e en e e e e e e e quelques secondes. – Facilit´ d’emploi : n’importe quel ´tat de fonctionnement peut ˆtre sauvegard´ dans un “snape e e e shot”en quelques secondes. Il est ensuite tr`s simple de restaurer tout snapshot pr´c´dent, et e e e de comparer plusieurs ´tats entre eux. e – Les machines virtuelles peuvent ˆtre facilement copi´es, dupliqu´es et modifi´es pour constie e e e tuer une biblioth`que de toutes les versions d’un syst`me d’exploitation ou d’une application. e e Inconv´nients de la virtualisation : e – Il existe de nombreuses techniques connues utilisables par un code malveillant pour d´tecter e s’il s’ex´cute dans une machine virtuelle, comme par exemple [6]. Dans ce cas il peut ´viter e e de s’ex´cuter ou perturber l’analyse. e
Actes du symposium SSTIC08
7
– Certains environnements de virtualisation peuvent ˆtre vuln´rables et permettre ` un code e e a malveillant sp´cifiquement con¸u de “s’´chapper” d’une machine virtuelle pour compromettre e c e le syst`me hˆte. Il est donc utile de prendre quelques pr´cautions lors de toute ex´cution de e o e e code malveillant. Avantages des machines physiques : – Au contraire des machines virtuelles, tout code malveillant devrait normalement s’ex´cuter e sans perturbation sur une machine physique, tant qu’il n’est pas con¸u pour d´tecter les outils c e d’observation employ´s. e – Il est tr`s simple de s’assurer que le r´seau physique constitu´ des quelques machines de test e e e est bien d´connect´ de tout autre r´seau. e e e Inconv´nients des machines physiques : e – Il est n´cessaire d’employer des outils de sauvegarde/restauration d’images disque ` chaque e a analyse, et ` chaque fois qu’un ´tat particulier doit ˆtre sauvegard´. Cette tˆche prend beaua e e e a coup de temps et peut vite se r´v´ler p´nible ` la longue, mˆme s’il est possible de l’automatiser e e e a e en partie. – Il n’est pas possible de “geler” le syst`me pour analyse et reprendre l’ex´cution sans que le e e code malveillant puisse s’en apercevoir. Configuration s´curis´e de VMware : VMware Workstation est un des outils de virtualisae e tion les plus utilis´s aujourd’hui pour l’analyse de code malveillant. Il a fait l’objet de nombreuses e recherches dans ce domaine et il existe de nombreux moyens connus pour d´tecter son utilisation dee puis une machine virtuelle, par exemple [6]. Il est cependant possible de se prot´ger contre certaines e m´thodes de d´tection en modifiant simplement quelques param`tres des machines virtuelles : e e e – D´sactiver les options d’acc´l´ration e ee – D´sactiver ou d´sinstaller les VMware tools e e – D´sactiver les fonctions de presse-papier, drag&drop et dossiers partag´s e e – D´sactiver toute connexion r´seau depuis une VM vers une machine physique (Host-only, e e Bridged ou NAT) – D´sactiver la connexion automatique de p´riph´riques USB e e e – Les lecteurs CD/DVD ne doivent pas ˆtre connect´s au d´marrage, sauf s’ils correspondent ` e e e a une image ISO 4.4 Similitude avec les pots de miel (honeypots)
L’analyse dynamique de codes malveillants a beaucoup de points communs avec la technique des pots de miel (honeypots, cf. [25]), puisque dans les deux cas il s’agit de faire ex´cuter du code e malveillant dans un environnement contrˆl´ pour observer son comportement. Il devrait donc ˆtre oe e possible de r´utiliser certains outils de type honeypot pour rendre l’analyse de code malveillant plus e efficace. On peut tout de mˆme noter quelques diff´rences importantes : e e – Un honeypot est g´n´ralement con¸u pour ˆtre connect´ ` Internet afin d’attirer d’´ventuels e e c e ea e attaquants. Un syst`me d’analyse de malware est plus souvent d´connect´ de tout r´seau, il e e e e doit donc simuler l’´quivalent d’une connection Internet. e
8
Actes du symposium SSTIC08
– Un honeypot peut g´n´rer beaucoup d’activit´ et capturer beaucoup de fichiers dont la plupart e e e n’est pas utile. Une fonction primordiale est donc de pouvoir d´tecter automatiquement (ou e pas) ce qui est r´ellement int´ressant et ce qui ne l’est pas. A l’inverse, un fichier ex´cut´ sur e e e e un syst`me d’analyse est d´j` suspect, il n’y a donc pas besoin d’effectuer ce tri parmi de e ea nombreux fichiers. Il est donc utile de r´utiliser et adapter certaines fonctionnalit´s des honeypots actuels, notamment e e les services syst`me et r´seau qui permettent de simuler un syst`me vuln´rable r´aliste et enregistrer e e e e e toutes les actions du code malveillant (cf. [26,28]).
5
Outils
Voici une liste (non exhaustive) d’outils permettant de construire un laboratoire d’analyse de codes malveillants. Cette liste contient essentiellement des logiciels gratuits ou libres. 5.1 – – – – Sur le poste d’observation Un outil de capture r´seau : Wireshark, tcpdump ou ´quivalent. e e En option un outil de d´tection d’instrusion r´seau : Snort, Bro. e e Un outil de scan de ports : nmap ou ´quivalent. e Un ´mulateur de serveur DNS pour rediriger toutes les requˆtes vers le poste d’observation : e e pyminifakedns [30], Malcode Analysis Pack [29] ou encore fauxdns.pl [35]. – Divers ´mulateurs de services r´seau (HTTP, SMTP, FTP, POP3, IRC, ...) permettant d’ene e registrer toutes les actions du code malveillant : fauxservers [35], scripts Honeyd [26] ou par exemple des scripts adapt´s bas´s sur les serveurs fournis en standard avec Python (HTTPe e Server, smtpd) ou Perl. 5.2 – – – – – – – – – – Sur le poste victime Afficheur ou ´diteur texte/hexad´cimal e e Antivirus : plusieurs si possible, avec d´tection “` l’acc`s” d´sactiv´e. e a e e e Scanner d’exploits connus : OfficeCat [7], Fess [8] Outils pour rechercher des motifs ou des mots-cl´s particuliers : grep, reScan [18], scripts e maison Outils d’analyse d’ex´cutables : PEiD [9], pefile [10], Dependancy Walker [11], Scanbin [12] e Explorateur de documents OLE (MS Office) : SSView [16], OleFileIO [17] File carving : Hachoir-subfile [13], Foremost [14], Scalpel [15] Process Monitor, Process Explorer, Autoruns, Strings [31] SysAnalyzer [29] interpr´teurs Python, Perl ou tout autre langage de script pour automatiser certaines actions e r´p´titives. e e
6
6.1
M´thodologie d’analyse e
Pr´paration e
Tout d’abord il est n´cessaire de mettre ` jour tous les outils contenant des signatures avant e a chaque analyse, en particulier les antivirus, IDS, ainsi qu’OfficeCat et Fess.
Actes du symposium SSTIC08
9
6.2
Analyse statique de fichiers
Cette phase de l’analyse consiste ` extraire toutes les informations possibles des fichiers suspects a sans avoir ` les ex´cuter ou ` les ouvrir dans l’application associ´e. a e a e Comme indiqu´ pr´c´demment, une bonne pratique est toujours de commencer par ouvrir un e e e fichier dans un ´diteur hexad´cimal, afin de se faire une premi`re id´e rapide sur sa nature et son e e e e contenu r´els. e Analyser un fichier ex´cutable : e 1. Tester le fichier avec tous les antivirus disponibles, pour v´rifier s’il s’agit d’un code malveillant e connu ou d’une variante. Si oui, consulter les d´tails fournis par les ´diteurs antivirus. La plupart e e des antivirus fournissent une interface ligne de commande permettant de scripter l’analyse. 2. D´tecter si le fichier est compress´ ou chiffr´ : PEiD pour d´tecter un packer connu, pefile e e e e pour calculer l’entropie des diff´rentes sections sinon. Une entropie ´lev´e (entre 7 et 8) est e e e g´n´ralement signe d’une section compress´e ou chiffr´e. e e e e 3. Observer les noms de section et les valeurs de l’entˆte PE (pefile, scanbin) : Des valeurs non e usuelles peuvent ´galement trahir un packer. e 4. Extraire toutes les chaˆ ınes en clair (Strings). 5. Rechercher des motifs ou mots-cl´s int´ressants (grep, reScan) : adresses IP, adresses e-mail, e e noms de domaines, URLs, noms de fichiers ex´cutables ou particuliers, noms de fonctions e Win32/JavaScript/VBScript particuli`res, etc. e 6. Rechercher des mots-cl´s li´s ` l’entreprise, qui pourraient indiquer une attaque cibl´e : nom de e e a e l’entreprise, noms de projets, de divisions internes, de personnels, de serveurs ou de machines internes, etc. 7. Tester en s´rie divers algorithmes de camouflage simples du style XOR ou d´calage, en faisant e e varier la cl´ et en recherchant les mˆmes motifs que pr´c´demment. Dans la pratique beaucoup e e e e d’auteurs de code malveillant ne sont pas des experts en cryptographie, heureusement pour nous. ;-) Analyser un document malform´ : Ces derni`res ann´es il est devenu de plus en plus courant e e e de d´tecter des codes malveillants camoufl´s dans des documents malform´s. Ces fichiers peuvent e e e ˆtre de divers types : MS Office, JPEG, GIF, archives, etc. Ils contiennent en g´n´ral un exploit core e e respondant a une vuln´rabilit´ dans un logiciel courant, qui d´clenche un shellcode de taille plus ou ` e e e moins r´duite. Ce shellcode peut se suffire a lui-mˆme, mais il s’agit souvent d’un code interm´diaire e ` e e pour activer un fichier ex´cutable plus ´volu´. Ce fichier ex´cutable se trouve g´n´ralement stock´ e e e e e e e dans le mˆme document, ou bien il doit ˆtre t´l´charg´ depuis un serveur sur Internet. Il est ensuite e e ee e ´crit sur le disque pour assurer la persistance du code malveillant, sous forme camoufl´e ou non. e e Voici un exemple de m´thodologie pour analyser un document suspect : e 1. Tester le fichier avec tous les antivirus disponibles, pour v´rifier s’il contient un code malveillant e connu ou une variante. Certains antivirus poss`dent des signatures g´n´riques pour d´tecter la e e e e plupart des exploits connus, mais dans la pratique la couverture n’est pas toujours aussi efficace qu’on pourrait l’esp´rer... (cf. [32]) e
10
Actes du symposium SSTIC08
2. Pour un document MS Office : explorer la structure OLE et les m´ta-donn´es (SSView, OleFie e leIO), d´tecter les ´ventuelles erreurs dans la structure OLE (OleFileIO). Ces outils permettent e e ´galement d’extraire les flux OLE internes s’il s’agit de fichiers camoufl´s ` l’int´rieur du doe e a e cument. Les m´ta-donn´es r´v`lent parfois des informations utiles (date de cr´ation, auteur, e e e e e soci´t´), car les auteurs de malware peuvent aussi oublier de nettoyer leurs documents... ee 3. D´tecter certains exploits connus (OfficeCat, Fess). e 4. Rechercher des motifs ou mots-cl´s int´ressants (grep, reScan) : comme pour les fichiers ex´e e e cutables, en y ajoutant la d´tection de s´ries de NOPs (0x90 par exemple) qui accompagnent e e souvent un exploit. 5. Utiliser des outils de file carving (hachoir-subfile, foremost, scalpel) pour extraire tous les fichiers ex´cutables qui pourraient ˆtre stock´s en clair dans le document. Comme pour les ex´cutables e e e e il peut ˆtre utile de refaire ce test apr`s divers d´codages simples (XOR par exemple). e e e 6.3 Analyse dynamique
Cette seconde phase consiste a ex´cuter ou ouvrir le document afin de d´clencher le code mal` e e veillant et observer/enregistrer toutes ses actions. Pr´paration : e 1. S’assurer que le poste victime et le poste d’observation sont dans un ´tat stable et sain. Si e besoin, restaurer une image compl`te du syst`me. e e 2. Sauvegarder une image la plus compl`te possible du syst`me initial du poste victime, qui servira e e de r´f´rence : soit une image du disque, soit une liste d´taill´e des fichiers du disque (par exemple ee e e “dir C :\ /s /a /o :n ¿list.txt”) et de la base de registre. On peut ´galement sauvegarder une e liste des empreintes de fichiers grˆce ` un outil de type “md5sum”. Cette image peut ˆtre soit a a e obtenue depuis le syst`me e 3. Sauvegarder la liste des processus actifs, des cl´s de registre int´ressantes (Autoruns), des utilie e sateurs, des services Windows, et de toute autre information susceptible d’ˆtre modifi´e par un e e code malveillant. 4. D´marrer les services r´seau ´mul´s sur le poste d’observation. e e e e 5. D´marrer et configurer tous les outils d’observation sur les deux postes : Wireshark, Snort, e Process Monitor, etc. Ex´cution : e 1. Lancer ou ouvrir le fichier suspect. Il est g´n´ralement pr´f´rable de le faire depuis un compte e e ee administrateur pour ´viter de brider le code malveillant. e 2. Observer les actions sur les deux postes, pour voir les nouveaux processus et les tentatives de connexion r´seau. e 3. Observer toutes les modifications sur le syst`me de fichiers et la base de registre (Process e Monitor). Faire une copie de tout fichier cr´´ par le code malveillant, au cas o` il serait effac´ ee u e par la suite.
Actes du symposium SSTIC08
11
4. Si le code malveillant essaye de se connecter ` une adresse IP pr´cise au lieu de faire une requˆte a e e DNS, il peut ˆtre n´cessaire de modifier la configuration r´seau du poste d’observation pour e e e qu’il soit accessible ` cette adresse. a 5. Il peut aussi ˆtre n´cessaire de simuler un nouveau service s’il essaye de se connecter ` un port e e a non ouvert. 6. Utiliser Sysanalyzer pour observer tous les appels syst`me int´ressants. Cet outil est aussi parfois e e capable de sauvegarder une image m´moire du processus malveillant, ce qui peut ˆtre tr`s utile e e e si le fichier ex´cutable est chiffr´ par un packer sur le disque. e e 7. Si les actions observ´es ne semblent pas compl`tes (pas de nouveau processus, pas de fichier e e cr´´), cela peut venir de plusieurs raisons : ee (a) Soit le code malveillant n’a pas pu s’ex´cuter car il n’est pas dans le bon environnement e (version du syst`me, application non vuln´rable). e e (b) Soit il a d´tect´ qu’il ´tait dans un environnement de test (virtualisation, outils employ´s, e e e e etc). (c) Soit il s’agit d’un rootkit capable de camoufler ses actions. Dans ce cas il peut ˆtre utile e d’employer des techniques de “forensics m´moire” comme d´crit dans [24], et de comparer e e les images disque compl`tes avant et apr`s compromission. e e 8. Observer l’´volution pendant quelques minutes : le code malveillant peut effectuer des actions e programm´es dans le temps. e
Apr`s ex´cution : e e 1. Sauvegarder une image compl`te du syst`me du poste victime en suivant la mˆme m´thode que e e e e pr´c´demment lors de la pr´paration. e e e 2. Il peut ˆtre utile de red´marrer la machine en employant un CD de d´marrage (par exemple e e e Linux ou BartPE) afin de sauver cette image depuis un syst`me sain. Cette pr´caution permet e e de s’affranchir d’un ´ventuel rootkit pour d´tecter les fichiers camoufl´s. e e e 3. Comparer les deux images sauvegard´es avant et apr`s ex´cution, pour d´tecter toutes les e e e e modifications : fichiers, cl´s de registre, processus, services, etc. e 4. Il pourrait ´galement ˆtre utile de placer le syst`me en hibernation, ou d’utiliser un snapshot e e e d’une machine virtuelle, afin d’inspecter la m´moire si le code malveillant n’est pas visible sur e le disque (cf. [24]).
6.4
Phases suivantes : D´sassemblage et D´bogage e e
Les deux premi`res phases (analyse statique et dynamique) permettent d’obtenir rapidement e une vue partielle du code malveillant et de son comportement. Si le temps le permet et si des fichiers int´ressants ont ´t´ obtenus, il est alors possible d’analyser e ee le code malveillant plus en profondeur, ` l’aide de techniques de d´sassemblage et de d´bogage. Ces a e e techniques, d´j` tr`s bien document´es, ne seront pas d´crites dans cet article. ea e e e
12
Actes du symposium SSTIC08
6.5
Document malform´ : D´terminer quelle vuln´rabilit´ est exploit´e e e e e e
Quand un document malform´ exploite une vuln´rabilit´ pour ex´cuter du code malveillant, un e e e e des objectifs est d’identifier quelle vuln´rabilit´ est concern´e, afin de mieux identifier le risque et e e e les autres machines vuln´rables. e Si les outils ` disposition (antivirus, OfficeCat, Fess) ne fournissent pas suffisamment d’infora mation, une m´thode simple permet d’en savoir plus : e 1. Commencer avec une version ancienne de l’application, non mise ` jour. a 2. Installer pas-`-pas chacun des correctifs de s´curit´ publi´s. a e e e 3. Apr`s chaque correctif, sauvegarder une nouvelle image saine du syst`me. Il est utile de les e e conserver pour de futures analyses, si l’espace disque le permet. 4. A chaque fois, ouvrir ensuite le fichier suspect, et v´rifier si le code malveillant s’ex´cute ou e e non. S’il ne s’ex´cute pas, la vuln´rabilit´ exploit´e correspond donc ` ce correctif. e e e e a 5. Cependant, un correctif corrige souvent plusieurs vuln´rabilit´s. Il est alors n´cessaire de corr´ler e e e e cette information avec les r´sultats des autres outils (OfficeCat, Fess, antivirus) et les infore mations disponibles en ligne (CVE, BugTraq, vendeur) pour deviner quelle(s) vuln´rabilit´ e e est(sont) exploit´e(s). e 6.6 Obtenir des informations ` propos de la source de l’attaque a
Il est parfois possible d’obtenir plus d’informations sur la source apparente d’une attaque en exploitant les diff´rentes donn´es collect´es lors de l’analyse (adresses IP, noms de domaines et de e e e serveurs sur Internet). Pour cela de nombreux outils existent pour faire des requˆtes aupr`s de bases e e de donn´es publiques : DNS, Whois [33], rWhois [34], etc. e Il faut cependant se m´fier des r´sultats obtenus car les codes malveillants emploient souvent e e des sites temporaires. Un nom de domaine peut changer de propri´taire tr`s rapidement, donc ce e e type de requˆte doit ˆtre fait et sauvegard´ le plus tˆt possible lors de l’analyse. e e e o
7
Am´liorations possibles e
L’architecture de test et la m´thodologie d´crites dans cet article sont avant tout con¸ue pour e e c ˆtre simples et peu coˆteuses. Il est bien sˆr possible d’am´liorer les r´sultats et l’efficacit´ du e u u e e e processus en ajoutant d’autres outils ou des logiciels commerciaux. 7.1 Analyse connect´e ou semi-connect´e e e
Dans certains cas il peut ˆtre n´cessaire de fournir une connexion Internet r´elle au code male e e veillant pour pouvoir analyser son comportement de fa¸on plus compl`te. Bien sˆr cela est plus c e u risqu´ car le code malveillant pourrait se r´pliquer, et son auteur peut voir qui ex´cute le code si e e e celui-ci se connecte ` un serveur de contrˆle. a o Dans cette configuration, le poste victime peut ˆtre consid´r´ comme un honeypot ` haute intere ee a action [25]. Certains outils permettent de restreindre la connection du code malveillant ` Internet a pour ´viter sa r´plication. e e
Actes du symposium SSTIC08
13
7.2
Automatisation
La m´thodologie d´crite emploie un grand nombre de petits outils ind´pendants pour effectuer e e e des tˆches simples. C’est donc un processus manuel tr`s lourd et sujet ` erreurs, en particulier a e a lorsqu’il faut analyser un grand nombre de fichiers suspects. Il serait possible d’automatiser une grande partie de ces tˆches en tirant partie des langages de a script et des APIs disponibles pour contrˆler certains logiciels (par exemple VMware) : o – l’analyse de nombreux fichiers par des outils de d´tection (antivirus, OfficeCat, Fess, ...) e – la sauvegarde des images syst`me avant et apr`s ex´cution e e e – la comparaison de ces images – le lancement des outils d’observation – le lancement des fichiers suspects, et la d´tection des actions (processus, fichiers, registre, etc) e – l’arrˆt de l’analyse apr`s un temps fix´ ou sous certaines conditions e e e Cependant, quelques tˆches n´cessitent r´ellement une action manuelle (notamment l’analyse staa e e tique et l’exploitation des r´sultats), et certains outils graphiques peuvent difficilement ˆtre contrˆl´s e e oe par script. Des outils comme [35] proposent une base int´ressante pour bˆtir un syst`me d’analyse dynae a e mique totalement automatis´. e 7.3 Outils et services d’analyse dynamique avanc´s e
Depuis quelques ann´es sont apparues diverses solutions commerciales pour effectuer des anae lyses dynamiques de code malveillant de fa¸on plus efficace et robuste. Elles sont bas´es sur c e diff´rentes technologies (virtualisation modifi´e, simulation d’API Windows, API hooking, ...), mais e e toutes ces m´thodes visent ` tracer le flot d’ex´cution d’un code malveillant pour en d´duire son e a e e comportement et ses caract´ristiques. e Certaines solutions sont accessibles en ligne, via une interface de d´pˆt de fichier, comme e o [37,36,38,39,40]. Ces interfaces sont g´n´ralement gratuites, mais la confidentialit´ des r´sultats e e e e n’est pas assur´e, et l’environnement de test est rigide puisqu’il est impossible de choisir une platee forme sp´cifique. De plus, il n’est g´n´ralement propos´ que l’analyse de fichiers ex´cutables Win32, e e e e e les documents malform´s ne sont donc pas couverts. e Certaines de ces solutions comme [36,38] sont aussi vendues comme des produits afin de pouvoir les installer localement dans un environnement qui peut ˆtre configur´ suivant les besoins. e e Avantages : – Automatisation : permet l’analyse automatis´e de tr`s nombreux fichiers. e e – R´sultats plus complets et reproductibles e – Fiabilit´ am´lior´e e e e Inconv´nients : e – Coˆt d’acquisition et de maintenance ´lev´, de l’ordre de plusieurs dizaines de milliers d’euros u e e par an. Ces produits sont donc plutˆt destin´s aux organisations et entreprises ayant besoin o e d’analyser r´guli`rement de tr`s nombreux fichiers suspects. e e e – Manque de confidentialit´ et de flexibilit´ pour les solutions gratuites en ligne. e e
14
Actes du symposium SSTIC08
7.4
Nouvelles fonctionnalit´s de VMware e
Les futures versions de VMware Workstation et ESX devraient int´grer de nouvelles fonctione nalit´s extrˆmement utiles pour l’analyse dynamique de code malveillant, notamment : e e – VProbes : interface limit´e de supervision pour VMware Workstation 6.5, permettant d’obsere ver les registres du processeur, les processus en cours ainsi que quelques autres informations. – Interface compatible gdb : pour d´boguer le noyau de la machine virtuelle. e – VMSafe : interface fournie par l’hyperviseur de VMware ESX permettant de contrˆler en o temps r´el toute la m´moire, les fichiers et les connexions r´seau de la machine virtuelle. e e e Toute lecture/´criture/ex´cution du code malveillant en m´moire pourrait alors ˆtre d´tect´e e e e e e e et trac´e, et les outils d’observation resteraient ind´tectables car situ´s ` l’ext´rieur de la e e e a e machine virtuelle.
8
Conclusion
Il est possible de bˆtir un laboratoire simple ` moindre coˆt pour effectuer des analyses dynaa a u miques de code malveillant. La m´thode d´crite dans cette article est loin d’ˆtre parfaite, mais elle e e e a l’avantage d’ˆtre accessible ` la plupart des organisations ou entreprises ayant besoin d’analyser e a des fichiers suspects et qui ne disposent pas toujours d’outils avanc´s et de personnels form´s au e e d´sassemblage. e Plusieurs pistes d’am´lioration ont ´t´ ´galement propos´es pour bˆtir un syst`me plus complet e eee e a e et professionnel pour l’analyse de codes malveillant. D’´ventuelles mises ` jour de ce document seront disponibles en version ´lectronique sur les sites e a e http://actes.sstic.org ou \http://www.decalage.info apr`s juin 2008. e
R´f´rences ee
1. Logiciel malveillant, malveillant Wikipedia, http://fr.wikipedia.org/wiki/Logiciel_
2. File carving, http://www.forensicswiki.org/wiki/Carving 3. An Environment for Controlled Worm Replication and Analysis or : Internet-inna-Box, Ian Whalley, Bill Arnold, David Chess, John Morar, Alla Segal, Morton Swimmer, IBM TJ Watson Research Center, http://www.research.ibm.com/antivirus/SciPapers/ VB2000INW.htm 4. Malware Analysis for Administrators, S. G. Masood, SecurityFocus, 2004-05-20, http: //www.securityfocus.com/infocus/1780 5. Behavioral Malware Analysis Using Sandnets, Joe Stewart, SecureWorks, http://www. sv-issa.org/sandnets.pdf 6. Trapkit - VMM fingerprinting, \\url{http://www.trapkit.de/research/vmm/index. html} 7. OfficeCat, SourceFire, http://www.snort.org/vrt/tools/officecat.html 8. Fess, SecureWorks, http://www.secureworks.com/research/tools/fess.html 9. PEiD, http://peid.has.it/ 10. pefile, http://dkbza.org/pefile.html 11. Dependancy Walker, http://www.dependencywalker.com/
23. Network Forensic : cherchez les traces sur le r´seau, Guillaume Arcas, MISC magazine e 35, janvier-f´vrier 2008 e 24. Analyse post mortem tout en m´moire sous Windows, Nicolas Ruff, Samuel Dralet, e MISC magazine 35, janvier-f´vrier 2008 e 25. Honeypots, Wikipedia, http://en.wikipedia.org/wiki/Honeypot_%28computing%29 26. Honeyd, http://www.honeyd.org/ 27. The Honeynet Project, http://www.honeynet.org/ 28. mwcollect : Nepenthes, HoneyTrap, HoneyBow, http://www.mwcollect.org/ 29. Malcode Analysis Software Tools, iDefense labs, http://labs.idefense.com/ software/malcode.php 30. Mini Fake DNS Server, http://aspn.activestate.com/ASPN/Cookbook/Python/ Recipe/491264 31. Windows Sysinternals, http://technet.microsoft.com/en-us/sysinternals 32. Investigating and responding to suspicious Office files, Maarten Van Horenbeeck, SANS Internet Storm Center, http://isc.sans.org/diary.html?storyid=2967 33. Whois, RIPE, http://www.db.ripe.net/whois 34. RWhois, http://www.rwhois.net/rwhois/prwhois.html 35. Truman - The Reusable Unknown Malware Analysis Net, Joe Stewart, http://www. secureworks.com/research/tools/truman 36. CWSandbox, http://www.cwsandbox.org/, Developer/Sunbelt-CWSandbox/ \http://www.sunbelt-software.com/