Autopsie d'un malware (pourriciel) Nicolas RUFF nicolas.ruff@edelweb.fr page 1
Plan Introduction Situation initiale 1ère analyse :: le le spyware 2ème analyse :: l'injecteur 3ème analyse :: le le code binaire Compléments Conclusion page 2
Introduction Le Le fléau des des Spywares est est réel réel Croissance exponentielle du du nombre de de "codes douteux" La La limite limite légal légal // illégal illégal est est incertaine Il Il devient difficile de de faire faire confiance à un un logiciel téléchargé sur sur Internet Et Et pourtant les les Spywares ne ne sont sont pas pas perçus perçus comme une une menace pour pour la la sécurité Les Les auteurs de de Spywares utilisent des des techniques de de pointe Attaques non non patchées, voire voire non non documentées L'intérêt financier est est motivant Cf. Cf. attaque massive baptisée "Ject" "Ject" page 3
Situation initiale Comportement aberrant d'un poste Le Le fond de de la la page d'accueil IE IE pointe sur sur le le moteur de de recherche "searchx.cc" Et Et pourtant la la page d'accueil configurée est est "about:blank"!! Environnement Windows XP XP "raisonnablement" patché Antivirus "raisonnablement" à jour jour Poste "vivant" (nombreux logiciels installés) Réseau d'entreprise classique (proxy) page 4
1ère analyse Analyse Le Le comportement comportement du du navigateur navigateur a été été modifié modifié par par un un "Browser "Browser Helper HelperObject" (BHO) (BHO) Solutions brutales Faire Faire une une recherche recherche sur sur tous tous les les fichiers fichiers contenant contenant la la chaîne chaîne "searchx.cc" "searchx.cc" Faire Faire une une recherche recherche par par date date de de création création de de fichier fichier entre entre "avant" "avant" et et "après" "après" Solution élégante Analyse Analyse avec avec "HiJackThis!" "HiJackThis!" Tri Tri entre entre les les modules modules ("connus", ("connus","inconnus" "inconnus" et et "suspects") "suspects") Résultat Identification Identification de de la la DLL DLL fautive fautive Destruction Destruction de de toutes toutes les les instances instances sur sur disque disque Conclusion Le Le problème problème est est résolu résolu au au reboot reboot page 5
Le problème Oui, mais moins d'une ½ heure après le le composant est réinstallé!! page 6
2ème analyse Que s'est-il passé? "Quelque chose" a réinstallé de de manière asynchrone le le BHO fautif Comment? Soit Soit le le fichier est est présent sur sur le le poste Sous Sous une une forme forme compressée ou ou modifiée car car toutes toutes les les instances de de la la DLL DLL d'origine (contenant "searchx.cc") ont ont été été détruites Soit Soit le le fichier a été été téléchargé depuis l'extérieur du du poste Que faire? Identifier la la méthode utilisée Identifier le le "quelque chose" page 7
2ème analyse Identification de de la la méthode :: logs du du proxy nobody@nowhere:~$ cat cataccess.log grep 192.168.5.78 grep octet-stream [...] [...] 192.168.5.78 TCP_MISS/200 37185 37185 GET GET http://66.98.144.29/m.bin -- DIRECT/66.98.144.29 application/octet-stream [...] [...] nobody@nowhere:~$ wget http://66.98.144.29/m.bin nobody@nowhere:~$ strings m.bin egrep -i -i searchx.cc <form <formid=formweb style="float: left" left" action="http://searchx.cc/search.php" method="get"> <form <formid=formweb action="http://searchx.cc/search.php" method=get target="_main"> Le Le composant a bien été téléchargé depuis l'extérieur page 8
2ème analyse Identification du du "quelque chose" :: logs Windows Security // Audit des des succès // Accès aux aux objets 560 560 // Ouverture d'un d'un objet :: Objet Objet Serveur :: Security Objet Objet Type Type :: File File Objet Objet Nom Nom :: C:\WINNT\system32\bmnnjc.dll Nº Nº du du nouveau handle handle :: 2772 2772 Nº Nº d'opération :: {0,1008865} Nº Nº de de processus :: 1924 1924 [ ] [ ] page 9
2ème analyse Security // Audit des des succès // Suivi détaillé 592 592 // Un Un nouveau processus a été été créé créé :: Nº Nº du du nouveau processus :: 1924 1924 Nom Nom du du fichier fichier image image ::\Program Files\Internet Explorer\IEXPLORE.EXE Nº Nº du du processus créateur :: 1296 1296 Nº Nº de de la la session :: (0x0,0xE735) C'est donc Internet Explorer lui-même qui est à l'origine du du téléchargement On suspecte un un autre BHO, mais lequel??? page 10
2ème analyse HiJackThis! n'indique rien Ni Ni en en mode normal Ni Ni en en mode sans échec TaskInfo indique une DLL "suspecte" dans l'espace du du processus IE IE Taille :: 0 octets!! Cette DLL DLL est est trouvée dans le le répertoire "system32" par par la la fonction "rechercher un un fichier" Mais elle elle est est invisible dans l'explorateur et et la la ligne de de commande!! page 11
2ème analyse La La DLL est capturée par un un redémarrage sur un un environnement "sain" Multiboot CD CD bootable Linux (Knoppix, etc.) etc.) CD CD bootable Windows (BartPE, ERD Commander, etc.) etc.) Le Le poste est alors "désinfecté" page 12
3ème analyse La La DLL capturée est un un véritable "rootkit" Code autodécryptable Récupère dynamiquement les les adresses de de toutes les les fonctions importées (pas (pas d'imports) Crée et et enregistre le le BHO Se Se masque sur sur le le disque et et dans la la base de de registres par par API API Hooking Heureusement imparfait page 13
Compléments Mais pourquoi est-il si si méchant? nobody@nowhere:~$ host 66.98.144.29 66.98.144.29 does doesnot notexist (Authoritative answer) nobody@nowhere:~$ whois 66.98.144.29 OrgName: Everyones Internet, Inc. Inc. OrgID: OrgID: EVRY EVRY Address: 2600 2600 Southwest Freeway Address: Suite Suite 500 500 City: City: Houston Country: US US [...] [...] "Everyones Internet" est est un un fournisseur d'accès américain page 14
Compléments nobody@nowhere:~$ whois searchx.cc OrgName:.TV.TV Corporation Registrant: Galina Charmandjieva (xboy66a@yahoo.com) Address: City City Chess 8.1 8.1 Elista, NONE 358000 RU RU Birth Date: 5-41-62 Brillante page d'erreur sur "whois www.tv" http://www.idotz.net/whois.cfm?domain=www&tld=tv page 15
Compléments telnet 66.98.144.29 80 80 HEAD // HTTP/1.0 HTTP/1.1 404 404 Not NotFound Server: Apache/1.3.29 (Unix) PHP/4.3.4 nmap 66.98.144.29 tcp/53 open (BIND 9.2.1) tcp/80 open (Apache 1.3.29) Linux kernel 2.4.x page 16
Points en suspens Comment a été infecté le le poste? Probablement via via un un site site Web Manquait-il un un patch IE, IE, ou ou non non (0-day)? Quelles sont les fonctions "cachées" du du spyware? Rétroanalyse longue et et complexe Evolution possible du du code téléchargé sur sur le le Web page 17
Conclusion Le Le code installé sur le le poste est réellement "malveillant" Techniques de de dissimulation Il Il est mis à jour toutes les 30 30 minutes depuis le le site de de l'auteur Aucun contrôle sur le le code téléchargé n'est effectué, ce ce qui permet à un un tiers malveillant d'utiliser ce ce mécanisme Ex. Ex. spoofing DNS L'antivirus ne ne voit que la la première partie page 18