Mot-clé - Malware

Fil des billets - Fil des commentaires

mardi, avril 27 2010

Plantes carnivores

Figurez vous que je me suis récemment découvert un intérêt pour les plantes carnivores et que j'ai acheté un livre explicatif sur le sujet (environnement naturel, divers genres, méthodes de culture, etc.). Après avoir relu le bouquin trois fois j'ai finalement craqué et j'ai acheté quatre petits plants ainsi que quelques graines (pour une représentativité totale de trois genres différents de plantes carnivores usuelles[1]). Et c'est en me renseignant sur ce nouvel univers que je me suis remémoré le premier billet de ce blog, qui parlait du honeypot à faible intéraction Nepenthes et je me suis dit qu'il était temps que je me repenche sur ce logiciel qui m'avait bien amusé à l'époque...

Mes dionaea - Creative common by Ozwald from ozwald.fr

Premier choc : Nepenthes n'est plus. Aux alentours de l'été 2009 ses concepteurs commençait à apercevoir des limites à leur architecture, ils ont alors freezé Nepenthes et se sont lancés dans un nouveau projet de honeypot à faible interaction, en repartant from scratch : dionaea[2]. Le développement initial de dionaea a donc eu lieu pendant l'été 2009, et actuellement c'est une solution qui semble bien plus aboutie que ne l'était Nepenthes (gestion du multithread, émulation avancée des shellcode à la place de simple pattern matching, etc.). Par contre, même si le logiciel en lui-même est bien plus avancé, son packaging général ne tient pas (encore ?) la comparaison avec ce qu'était celui de Nepenthes à la fin de sa vie. En effet dionaea n'est, à ma connaissance, actuellement packagé pour aucune distro[3] et pour tester dionaea vous devrez donc compiler vous-même une demi-douzaine de softs (sans vous planter au moment de les linker à dionaea bien sur). Ca n'a rien de titanesque ou même de compliqué, mais ça prend un peu de temps mine de rien.

En plus du coté technique c'est un projet qui a l'air vraiment sympa et vivant. Par exemple un petit billet d'un utilisateur sur les performances d'un script d'analyse des logs de dionaea a mené à une réflexion assez poussée sur la performance des accès aux logs directement sur le blog officiel du projet. Autre exemple : les auteurs de dionaea ont publié de grosses quantités de logs (anonymisés) issus de leurs propres sondes dionaea afin que chacun puisse mener les recherches qu'il souhaite dessus. Bref c'est un projet qui sent la bonne ambiance et j'espère bien en entendre un peu parler au SSTIC 2010[4]. D'ailleurs tant qu'on parle de SSTIC je me dis que le vieux pense-bête que j'avais rédigé il y a quelques mois pourrait être utile ;) ...

Notes

[1] Pour les curieux : sarracenia, dionaea, et drosera.

[2] Le genre "dionaea" correspondant aussi à des plantes carnivores. Ce sont celles qu'on connait sous le nom familier "attrape-mouche", et pour les curieux elles sont beaucoup plus facile à cultiver que les Nepenthes ^_^

[3] Oubliez donc tout de suite les "aptitude install dionaea", "emerge dionaea", et autres "pacman -S dionaea" qui pourraient vous passer par la tête. ERRATA : Pour Arch la procédure est simplifiée ;)

[4] Oui, oui, j'ai été assez rapide pour avoir une place :-D

jeudi, décembre 24 2009

Joyeuses Fêtes !

Mini billet pour souhaiter de bonnes fêtes à tout le monde et, puisque c'est de circonstance, je vous résume[1] la description faite sur VX Heaven du premier virus répandue à grande échelle sur un réseau informatique et en ayant notablement perturbé le fonctionnement : CHRISTMAS EXEC

Santa Claus - Creative Common by "kevindooley" on Flickr

CHRISTMAS EXEC a été écrit en 1987 (22 ans déjà...) par un étudiant de l'université de Clausthal-Zellerfield (Allemagne) dans le but de souhaiter un joyeux Noël à ses amis de l'université. A l'époque Internet tel qu'on le connait aujourd'hui n'existait pas, et le programme s'est donc répandu d'abord sur le réseau de l'université de Clausthal-Zellerfield (à mes souhaits), puis il a fuit sur le réseau de recherche européen EARNet, il a poursuivi sa folle épopée sur BitNet aux USA et a terminé sa course en paralysant VNet, un réseau privé utilisé par IBM pour communiquer avec ses fournisseurs et clients.

Rien de bien sorcier dans ce programme pourtant puisqu'il se contentait d'afficher un ascii-art de Noël ...et de s'envoyer par mail à tout les contacts qu'il trouvait sur l'ordinateur "infecté". Les guillemets autour de "infecté" sont d'ailleurs importants puisque pour s'exécuter le programme avait besoin d'être volontairement lancé par l'utilisateur (bah ouais, de la bonne vieille ingénierie sociale :) ).

Comme quoi on n'a rien inventé...et 22 ans après on trouve encore des gens capable d'exécuter n'importe quoi quand on leur demande (je pense en particulier aux codecs "indispensables" pour visionner des films interdit aux moins de 18 ans, ou encore aux super antivirus-de-la-mort-qui-tue et qui doivent absolument être installés parce qu'ils viennent d'identifier 35[2] infections différentes sur votre poste mais qu'ils peuvent vous aider à le nettoyer...)

Allez, pour conclure ce billet (et certainement l'année vu que je pars loin du net pour la fin du mois) je vous retranscrit l'ascii-art de CHRISTMAS EXEC, ça n'a pas vieillit d'un poil :) !

                    *
                    *
                   ***
                  *****
                 *******
                *********
              *************                A
                 *******
               ***********                VERY
             ***************
           *******************            HAPPY
               ***********
             ***************            CHRISTMAS
           *******************
         ***********************         AND MY
             ***************
           *******************         BEST WISHES
         ***********************
       ***************************     FOR THE NEXT
                 ******
                 ******                    YEAR
                 ******

Notes

[1] et je traduit également, si ça c'est pas trop gentil de ma part ?!

[2] Remplacez vous même pas 10D6 pour le résultat correspondant à votre ordinateur

mercredi, mai 6 2009

Bot Bot Botnet

Quand j'ai pensé au titre de ce billet je me suis tout de suite dit que c'était une excellente idée et j'ai carrément arboré un grand sourire niais tout seul devant mon écran...mais maintenant que je l'ai écrit je réalise que sans explication personne ne pourra deviner ce à quoi je pensais en le choisisant donc voici l'explication : C'est un jeu de mot (merdique, soit) avec l'onomatopé bien connu "Cot Cot Codec" que j'ai modifié en accord avec mon envie de parler de botnet aujourd'hui.

Volaille - Creative Common by avlxyz on Flickr

Quelques bases[1]

Même si c'est l'enfance de l'art pour quiconque s'interesse un minimum à la sécurité informatique je vais ré-expliquer quelques bases sur les botnet (mais c'est vraiment parce que je suis trop gentil ;) ).

Avant tout un botnet c'est quoi ? Un "botnet" c'est un ensemble d'ordinateurs sur lesquels un individu (ou un groupe d'individu) possède une certaine influence, généralement à l'insu de leurs propriétaire. En version plus simple à comprendre (mais un peu moins exacte du coup) : un botnet c'est un ensemble d'ordinateurs que controlent secrètement de vilains pirates.

Comment sont construits ces botnets ? Les botnets sont, pour l'écrasante majorité, composés d'ordinateurs appartenant "à madame Michu". Ce sont donc des ordinateurs de particuliers qui sont compromis par l'installation d'un logiciel malveillant. Pas de trait de génie à attendre pour installer ce logiciel sur des centaines/milliers/millions[2] d'ordinateurs d'ailleurs, les recettes classiques et évidentes s'appliquent :

  • Vers/Virus
  • Site web piégé
  • Distribution directe du programme via P2P ou sites web dédiés sous un nom sympa comme "Mi-grosSoft Office.exe", "Universal NoCD crack.exe", "Free Virus Remover.exe", etc.

Enfin à quoi ça sert un botnet ? Basiquement ça sert à créer un groupe important d'ordinateurs qui sont capables de récupérer les ordres d'un individu (ou d'un groupe d'individu) et de les exécuter. A partir de là il y a de nombreuses utilisations possibles pour une armée d'ordinateur zombies[3] et j'en expose quelques une dans un article en cours de rédaction (donc repassez sur ce blog dans les jours à venir si vous voulez une étude un petit peu plus en profondeur des usages qu'on peut faire d'un botnet ;) )

Zombies - Creative Common by "Mister Wind-Up Bird" on Flickr

A vos ordres, chef

Bon, maintenant que les concepts théoriques de bases sont connus de tous mes lecteurs[4] on va pouvoir passer à quelques études pratiques ! Le point auquel nous allons nous intéresser dans ce premier article sur les botnet c'est : comment les botmaster communiquent ils leurs ordres aux pc-zombie ?

Il y a bien longtemps, à l'époque des premiers botnets, le fonctionnement de base était simple. Une fois infecté un ordinateur allait systématiquement rejoindre un certain channel irc (éventuellement protégé par mot de passe) et il y recevait les ordres de son maitre puis y faisait son rapport. Simple, efficace, évident :) Peut être trop simple d'ailleurs...En effet cette méthode a beaucoup d'inconvénients : un chan IRC avec des centaines de milliers de personnes qui répondent "oui maitre" à l'un d'entre eux ça n'est pas très discret, de plus si le botnet se fait repérer il est facile pour les autorités de couper le serveur IRC et là c'est "bye bye botnet" pour le pirate qui avait passé du temps à le monter.

Du coup on a eu quelques raffinements. Par exemple au lieu d'ouvrir un channel sur irc.undernet.org les botmasters[5] se sont mis à installer leurs propres serveurs irc (de préférence sur des serveurs compromis et avec des versions customisées d'IRC pour réduire le traffic superflus). C'est tout de suite plus discret, mais pas encore parfait parce que pas mal d'ordinateurs (en particulier en entreprise) sont derrière des firewall et/ou proxy applicatifs qui bloquent les ports IRC et/ou carrément le protocol IRC. Du coup on a eu une petite mode de botnet controllés non pas par IRC mais via des serveurs web HTTP (bah ouais : le HTTP c'est vachement plus discret que l'IRC). Mais ça s'est vite avéré limité...

En effet un botnet ça prend du temps (et de l'argent ?) à construire donc ça serait bien si on pouvait assurer sa survie, or avec un point de rendez-vous unique comme un serveur HTTP (ou IRC) pour controller le botnet on met en danger la survie du réseau (en effet il suffit à une autorité quelconque de couper le serveur de ralliement pour que tout le botnet soit perdu[6]). Pour résoudre ce problème deux nouveaux concepts ont été introduits dans les botnets :

  • Le P2P > Des réseaux de P2P sont employés à tour de bras par énormément de monde pour partager des fichiers[7] ou pour discutter[8], donc il est tout à fait possible de les utiliser pour donner des ordres à ses ordinateurs zombie. Un exemple pratique serait de distribuer un fichier texte "mes_ordres.txt" sur le réseau Kad(eMule) : Le pirate partage ce fichier sur Kad, les zombie (qui sont également sur Kad) le télécharge et exécutent les ordres. Le premier avantage c'est que, contrairement au cas où les ordres sont posés sur un serveur web, il est impossible d'empécher les zombie d'obtenir les ordres en coupant un simple serveur. Le second avantage c'est qu'il devient très dur de remonter à l'IP qui a posté le fichier sur le réseau (i.e. : celle du botmaster).
  • OTP > "OTP" ça signifie "One Time Password" et c'est un concept assez intéressant : en très résumé un "One Time Password" c'est du texte construit à partir d'une règle secrète connues des seuls initiés. Par exemple je peux convenir avec un ami que notre OTP ça sera "le jour de la semaine concaténé à l'année", ainsi si je veux communiquer avec mon ami je n'aurai qu'à regarder quel jour on est et pour lui prouver que c'est bien moi qui lui parle je lui donnerai le mot de passe "lundi2009". La force de l'OTP, par rapport à simplement convenir d'un mot de passe unique avec mon ami, c'est que même si quelqu'un intercepte notre mot de passe il est incapable de savoir quel sera le mot de passe du lendemain (bon...avec l'exemple que j'ai donné c'est pas trop dur de deviner, mais si à la place du jour et de l'année on avait décider de concaténer un sel énorme avec un timestamp unix et notre OTP serait finalement le SHA256 de tout ça, ça devient plus délicat à deviner ;) )

Grâce à ces deux concepts on peut créer des choses extrèmement puissantes, la plus belle dont j'ai connaissance ayant été employé par Storm : Les bots calculaient chaque heure un nouvel OTP, ils se connectaient au réseau Skype[9] et rentraient en contact avec un compte qui avait pour identifiant l'OTP calculé; ce compte était la source des ordres. Résultat :

  • Utilisant Skype les communications passaient aisément tout les firewall/proxy/nat.
  • Utilisant Skype les communications étaient chiffrées donc discrètes.
  • Utilisant un OTP il était impossible de prédire la source des ordres et donc de l'usurper[10].
  • Utilisant Skype et un OTP il était imposible de couper le lien entre le botmaster et ses bot (à moins de couper Skype en intégralité...).

Bref : Du très bien pensé :) [11]

Full Metal Jacket - Screaming Sergeant

Mais...à quoi ça sert tout ça ?

Les utilités d'un botnet sont aussi vastes que l'imagination humaine. Je pourrai arrêter cette section là, mais vous seriez frustrés de ne pas en savoir plus. Je pourrai également commencer à expliquer les nombreuses utilités d'un botnet, mais là ça ferait un post vraiment beaucoup trop long. Donc à la place je vais arrêter cet article ici, et vous donner rendez vous dans quelques jours pour un article exposant quelques unes des utilités d'un botnet :) ! Donc comme on dit aux "zoo essai"[12] : stay tuned.

Notes

[1] "All your base are belong to us" de toute façon !

[2] Oui, on a vu des botnet de plusieurs millions de machines. Bien que la méthode de comptabilisation par IP soit remise en question par ce rapport d'observation de torpig qui aurait put être estimé à plus d'un milion de machines par le décomptes des IP alors qu'en fait il n'y avait qu'environ 180k machines

[3] Vocabulaire : on peut appeller un pc membre d'un botnet un pc-zombie

[4] Lecteurs adorés, bien entendu!

[5] Vocabulaire : botmaster = les gens qui dirigent les botnets

[6] C'est ce qu'on appelle un SPOF en jargon technique (Single Point Of Failure)

[7] Napster, Morpheus, eMule, etc.

[8] Skype

[9] Cerise sur le gateau : toutes les communications sont donc chiffrés

[10] On a vu des groupe de white hat usurper des botmaster afin de lancer un ordre de désinfection de tout le réseau par exemple :)

[11] Pour tout vous avouer je n'ai pas suivi la chute de Storm, et je ne sais donc pas si des failles ont été trouvées dans ce fonctionnement

[12] USA

samedi, avril 25 2009

Oh les belles plantes !

Savez vous ce que signifie "Nepenthes" ?

"Nepenthes" désigne un genre botanique qui regroupe des espèces de plantes carnivores à pièges passifs de la famille des Népenthacées[1]. Ces plantes ont donc pour particularité de générer des pièges (appellés "urnes") afin de capturer passivement toute proie assez bête[2] pour s'y introduire et se faire digérer. Ces plantes vivent en milieu chaud et humide (visez Sumatra ou Bornéo si vous voulez avoir une chance d'en croiser en milieu naturel ;) ) et sont plutôt jolies si vous voulez mon avis :

Nepenthes - Creative Common by "Eric in FS" on Flickr


Et l'informatique là dedans ?

Maintenant que vous avez quelques bases concernant les Nepenthes je peux vous parler du logiciel qui tire son nom de ces charmantes plantes carnivores. Nepenthes est un logiciel issue du projet mwcollect (dont je vous avoue ne pas avoir suivi les diverses péripéties mais qui semble relativement mal en point) et son but est donc dans la philosophie du projet : la collecte de malware.

Comme les Népenthacées, le logiciel Nepenthes fabrique des pièges passifs et attend gentiment qu'une proie vienne s'y aventurer afin de la capturer. En termes informatique : Nepenthes ouvre des ports correspondant à des services notoirement porteurs de failles (pour n'en citer que quelques un : 80, 135, 139, ...) puis il attend qu'on s'y connecte. Lorsqu'on établit une connection sur l'un des ports ouvert, Nepenthes commence à simuler une vulnérabilité connues. Si la simulation est convaincante (bonnes réponses aux bons stimulis) et qu'on est un malware se propageant par l'exploitation de cette faille, on va donc envoyer un shellcode.

Nepenthes tente alors de décoder le shellcode en s'aidant d'une bibliothèque de shellcode usuels, si il y parvient et que le shellcode est du type "download & execute" Nepenthes va gentiment aller télécharger le fichier en question et l'exécuter[3] le stocker dans un endroit sûr (enregistrement dans un répertoire local, upload sur site web, stockage en BDD, etc.). Et voilà le tour est joué ! Nepenthes vient de capturer un malware :)

Nepenthes - d'après l'ascii art original


A quoi ça sert alors ce Nepenthes ?

Résumons nous : Nepenthes est un logiciel qui permet la capture passive de malware exploitant des failles connues et des shellcodes usuels. Or la récolte de malware, même exploitant des failles connues, peut avoir beaucoup d'intérêt :)

Imaginez que vous soyez un éditeur d'antivirus : c'est une opportunité de collecter des fichiers malicieux encore inconnus dont vous pourrez extraire une signature pour votre bouffeur de ressources produit. Imaginez que vous soyez un chercheur en sécurité informatique : c'est un outil bien pratique pour "prendre la température" du net et suivre les tendances. Enfin imaginez que vous ne soyez rien de tout ça : collectionner des malware ce n'est, en fin de compte, pas plus étrange que de collectionner des papillons :) !!!

Pour ma part je me classerai donc dans la catégorie des collectionneurs de papillons (avec un petit bout de chercheur en sécurité informatique quand même, faut bien se jeter des fleurs de temps en temps ;) ). Du coup j'ai installé un Nepenthes dans une VM et j'espère bien capturer quelques malwares puis réussir à en tirer quelque chose[4] dans les mois à venir.

Butterfly - Creative Common by Museum Wales on Flickr


Comment on installe un Nepenthes ?

Mettre en place un Nepenthes est simplissime : je m'attendais à aller chercher les sources sur le site puis à compiler le schmilblick mais en fait un package existait pour ma distro et c'est le cas pour plusieurs distro majeures (ah oui, il semblerait qu'on puisse aussi l'utiliser sous windows et mac si on a envie...). Bref pour moi en une ligne l'installation était faite, et en 10mn la configuration aussi (d'ailleurs cette dernière gagnerait à être un peu plus simple : lorsque je m'y suis mis j'ai retrouvé quelques secondes l'impression que la découverte des fichiers de conf de postfix m'avait faite il y a quelques années de ça ^^)

Vous pouvez décider des vulnérabilités que vous vouler simuler, les méthodes de download que vous voulez supporter (http, ftp, tftp , etc.), et ce que vous désirez faire des fichiers téléchargés. Pour ma part j'ai laissé les vulnérabilités par défauts, toutes les méthodes de téléchargements de malware, et j'ai décidé d'enregistrer les malwares récoltés dans un répertoire local (tout simplement ^^). Ensuite j'ai été paramétrer mon routeur afin de rendre accessible depuis les net les ports sur lesquels mon Nepenthes écoute. Et voilà les pièges sont montés. Plus qu'à attendre patiemment des résultats intéressants pour en faire un futur billet, alors restez à l'affût !

Notes

[1] Merci Wikipedia

[2] Bétise toute relative tant la plante déploie d'astuces pour attirer les proies. On se laisserait berner aisément.

[3] Nepenthes est un honeypot à faible intéraction

[4] Des statistiques sur le pourcentage de malware reconnus par tel ou tel antivirus en fonction de son age par exemple. Ou pourquoi pas carrément un spécimen inconnu que je parviendrait à analyser et dont l'autopsie pourrait alors faire l'objet d'un billet sur ce blog. Etc.