Qualys

Security CommunityLa communauté des experts sécuritéen savoir plus

SecurityVibesQualys Community

Left content

La mémoire vive, le maillon faible de vos systèmes

auteur de l'article Jerome Saiz , dans la rubrique Menaces

1291302675_Ram.pngAvec sa présentation baptisée « J’ai la mémoire qui flanche« , Arnaud Malard a surtout fait flancher bien des certitudes à l’occasion des GS Days2010 ! Et si vous êtes vous aussi de ceux qui estiment que leur PC est protégé une fois mis en veille avec son mot de passe de session, la présentation d’Arnaud Malard va probablement vous faire également l’effet d’une douche froide. Il a notamment démontré la facilité avec laquelle il est possible, en attaquant la mémoire vive, de prendre le contrôle d’une machine en quelques minutes seulement à l’aide d’un vulgaire iPod (ou, comme le fait remarquer Arnaud Malard, avec un émulateur d’iPod sous Linux aujourd’hui).

Consultant pour Devoteam, Arnaud s’est donc penché sur la mémoire vive des systèmes Windows : comment l’exploiter, avec quels outils et pour quels résultats ? Bien entendu il n’y a rien de nouveau ici tellement les attaques contre la RAM sont connues depuis longtemps (et pas uniquement pour Windows !). Mais le travail de synthèse d’Arnaud Malard offre un tour d’horizon complet des techniques et des outils disponibles à ce jour, ainsi qu’un aperçu des dégâts qu’une telle attaque peut provoquer.

La mémoire vive voit en effet passer des données qui ne sont généralement pas stockées sur le disque dur (des mots de passe ou certains historiques, par exemple), et son altération est généralement bien plus discrète qu’une modification du système de fichiers. Explorez la mémoire, et vous aurez par exemple bien souvent accès aux mots de passe de nombreux services web (Facebook, LinkedIn, divers webmails…). Ou alors patchez en mémoire la DLL d’authentification de Windows et vous aurez immédiatement accès au système sans laisser de traces sur le disque dur. Et, comme le démontre Arnaud Malard, tout cela peut être réalisé très rapidement, notamment sur une machine laissée en veille prolongée au bureau ou dans une chambre d’hôtel.

Copier la mémoire

La première étape de ces attaques est d’accéder à la mémoire vive du système afin d’en récupérer une image complète sous forme d’un fichier. Pour y parvenir pas moins de six possibilités s’offrent à l’attaquant :

Exploiter une vulnérabilité afin d’obtenir un accès administrateur sur le système cible. C’est la voie royale : une fois l’accès obtenu des outils tels MDD, Memoryze ou Win32DD peuvent être utilisés pour écrire le contenu de la RAM dans un fichier qui sera analysé ultérieurement. Et bien entendu l’incontournable Metasploit simplifiera encore une fois la vie de l’attaquant en offrant un moyen d’accéder au système à distance, d’y déposer et d’y lancer l’un des outils mentionnés (MDD) puis de récupérer le fichier de la RAM, et enfin d’effacer les traces de l’intrusion.

Exploiter un crash Windows afin de récupérer le fichier de dump de la mémoire créé automatiquement par le système. La méthode est plus aléatoire car par défaut Windows ne génère qu’une sortie partielle, et le fichier ne représente que l’état de la mémoire au moment du crash, qui peut dater (à moins de provoquer le plantage soi-même, par exemple avec l’outil StartBlueScreen.exe). La méthode est néanmoins à mentionner du fait de sa grande simplicité (les fichiers du dump ne sont pas effacés automatiquement par Windows et traînent ainsi longtemps sur les systèmes !).

Exploiter le fichier hyberfil.sys afin d’obtenir une image parfaite de la mémoire vive, réalisée cette fois-ci par le système au moment de la dernière mise en hibernation de la machine. Problème ici : soit la machine est déjà en hibernation et on ne peut y accéder directement, soit elle fonctionne et Windows interdit alors l’accès à ce fichier. Arnaud Malard offre cependant deux solutions : retirer le disque dur de la machine en fonctionnement afin de le connecter sur une autre et récupérer ainsi le fameux fichier (l’image de la RAM sera alors la plus fraîche qui soit !), ou alors utiliser un outil tel que HoBoCopy afin de contourner l’interdiction de Windows. Dans les deux cas, le fichier d’hibernation est une excellent source d’image de la RAM à ne pas négliger ! L’attaque nécessite cependant que la machine soit en hibernation et que le disque dur ne soit pas chiffré.

Exploiter le port série RS232 afin d’accéder au contenu de la mémoire du système cible depuis une autre machine. Cette technique implique d’utiliser le debugger de Windows (Windbg) afin de lire les processus actifs (et éventuellement de les modifier, notamment pour élever ses privilèges).

Exploiter une connexion Firewire, PCMCIA ou ExpressCard afin d’accéder directement à la mémoire grâce au DMA (Direct Memory Access). C’est la voie la plus élégante et la plus efficace car elle offre non seulement un accès complet en lecture et en écriture à la mémoire (pour patcher la DLL d’authentification de Windows afin d’accéder librement au système, par exemple), mais surtout sa mise en oeuvre est extrêmement rapide : il suffit de connecter au PC un iPod modifié afin de lancer automatiquement la procédure, qui ne prendra en tout et pour tout que quelques minutes (7 minutes pour copier 1go de mémoire RAM). C’est la technique idéale pour une intervention clandestine en chambre d’hôtel, par exemple (et ce n’est d’ailleurs pas pour rien que nous avons récemment identifié lors de Milipol Qatar 2010 des solutions d’intrusion commerciales basées sur Firewire).

Seul inconvénient de cette technique : les journaux de la machine cible mentionneront la connexion d’un périphérique de stockage de masse.

Congeler les barrettes de RAM selon la fameuse attaque ColdBoot. Equipé d’une simple bombe d’air sec il est possible de refroidir suffisamment les barrettes de mémoire afin qu’elles conservent 80% de leurs informations pendant 10 minutes. Largement le temps de les extraire pour les insérer dans un lecteur approprié connecté à un portable sous Linux afin de les copier. Inconvénient de la méthode : si la machine cible était en veille prolongée elle doit ensuite être re-démarrée, ce qui n’est guère discret.

Enfin, dans le cas d’une machine virtuelle les choses sont beaucoup plus simples : si un attaquant prend le contrôle de l’hôte il pourra copier librement le contenu du fichier .vmem des invités et l’analyser tranquillement…

Lire la mémoire

Une fois le contenu brut de la RAM copié dans un fichier l’attaquant pourra passer à son étude. Et il risque fort d’y découvrir bien des choses intéressantes, dont pour l’essentiel des clés de chiffrement ou des identifiants qui y figurent en clair. On trouve ainsi parmi les mauvais élèves cités dans la présentation d’Arnaud des services tels GMail, Outlook Web Access, les webmails de Free ou Voila, le client MSN, ainsi que les cookies d’authentification de Facebook, LinkedIn ou Viadeo. Plus grave, certains outils de sécurité sont aussi concernés : c’est le cas par exemple de SecurityBox Freeware, de VNC ou d’OpenVPN. Tous les secrets de ces outils ou services figurent donc en clair dans la mémoire vive d’une machine sous Windows.

Pour les extraire l’approche la plus simple est bien entendu de rechercher des chaînes de caractères via la commande strings de Linux ou l’outil BinText sous Windows. Cela permettra déjà une jolie moisson face à des logiciels développés sans considération sécuritaire particulière. Et si les mots de passe apparaissent en hexadécimal et non en ASCII, aucun problème là non plus : un outil de conversion vers l’ASCII saura faire le sale boulot !

Il est également possible d’aller plus loin dans l’analyse des informations récupérées grâce à l’outil Volatility, qui donnera une vue complète du système au moment où sa mémoire a été copiée. Il indiquera notamment les processus actifs, les objets utilisés de la base de registre, les connexions socket qui était ouvertes, les fichiers et DLL ouverts, et bien entendu il livrera les hash LM et NTLM de la base SAM (uniquement sous Windows XP), la clé LSA et le cache MS-Cache… les clés du royaume, en quelques sorte.

Un autre outil, Memoryze, permettra quant à lui d’identifier aussi des traces de rootkits dans la mémoire, ce qui se révèle fort utile dans le cadre d’une analyse forensique (à condition d’avoir préservé la RAM bien entendu…)

Modifier la mémoire

Lors d’un accès via le port série ou via DMA (Firewire, PCMCIA ou ExpressCard) sur une machine mise en veille prolongée il est également possible de modifier à la volée le contenu de la RAM. L’utilisation principale de telles modifications est bien entendu de violer l’accès au système. Le script WinLockPwn modifie ainsi la mémoire de Windows afin de contourner l’authentification qui sera exigée au réveil. Il utilise pour cela plusieurs techniques (selon que le changement rapide d’utilisateur soit activé ou non, par exemple), et il peut modifier la DLL d’authentification de Windows (plus efficace) ou tout simplement ouvrir un shell administrateur en détournant l’outil par défaut Utilman (toujours accessible via la touche Win-U) , ce qui permet alors à l’attaquant de se créer lui-même un compte.

Enfin une autre approche pour modifier la mémoire consiste à éditer le fichier hiberfil.sys afin de neutraliser l’authentification qui sera demandée au réveil. Pour cela, et les amateurs d’assembleur apprécieront, il suffit d’utiliser un éditeur hexadécimal afin de remplacer une condition (JNE) par le bon vieux opcode 90 (no operation). « En restaurant le fichier après l’avoir modifié avec un éditeur hexadécimal et en réveillant la machine, un mauvais mot de passe saisi pour déverrouiller la session ouvre celle-ci quelque soit le nom d’utilisateur (existant, ndlr) employé« , explique Arnaud Malard.

La technique est vieille comme le monde : votre serviteur confesse l’avoir largement utilisée contre les images osées que certains magazines d’informatique offraient à la fin des années 80, avec obligation de consacrer quelques crédits Minitel pour obtenir le code de déverrouillage ! Mea culpa à ces éditeurs, d’ailleurs…

Se protéger

Arnaud Malard propose quelques pistes afin de protéger les systèmes contre de telles attaques. Outre les conseils de sécurisation habituels ses préconisations visent à rendre plus difficile le dump de la mémoire, l’élévation de privilèges et l’accès physique à la machine :

  • Désactiver dans le BIOS les accès directs à la mémoire par DMA (Firewire, PCMCIA…)
  • Désactiver l’accès via RS232, toujours dans le BIOS
  • Désactiver la capacité à démarrer la machine depuis un support externe (encore dans le BIOS)
  • Protéger le BIOS par un mot de passe fort
  • Désactiver le mode hibernation (« Mise en veille prolongée » dans Windows)
  • Contrôler la connexion de périphériques de mémoire de masse USB
  • Limiter la taille des fichiers de crash dumps afin qu’ils ne contiennent pas l’intégralité de la mémoire au moment du crash
  • Ouvrir les sessions avec un compte utilisateur non privilégié

Enfin, et même si les outils de chiffrement intégral du disque dur peuvent être contournés, il serait naïf de s’en priver !

Si vous souhaitez essayez par vous même ces techniques, prenez le temps de lire l’excellent rapport d’Arnaud Malard, que nous publions en pièce jointe à cet article ou consultable en ligne dans notre rubrique documents. C’est un travail très documenté, avec des exemples concrets et surtout les adresses des outils nécessaires. Une lecture passionnante !

Et le chiffrement de disque ?

Chiffrer le disque dur permet-il de se protéger contre une telle attaque ? Arnaud Malard est catégorique : non ! « Chiffrer les disques durs système ne permet pas de se protéger totalement du vol des données depuis la mémoire physique. En effet, en possession d’une image de la mémoire physique, un attaquant peut en extraire les clefs de chiffrement et de déchiffrement du disque« . D’après le consultant une telle attaque concerne des outils bien connus tels que TrueCrypt (Linux, Windows), McAfee SafeBoot, DM-Crypt/LUKS (Linux), BitLocker (Windows Vista) ou FileVault (Mac).

L’attaque est bien entendu ici un peu plus complexe, car ces outils ne laissent généralement pas traîner leurs clés en clair dans la mémoire (bien que Arnaud Malard cite un whitepaper indiquant, pour certains d’entre eux, le contraire. Mais nous ne l’avons pas consulté).

Même bien protégés, des attaques contre les outils de chiffrement sont de toute manière envisageables dès lors que l’attaquant dispose d’un accès à la mémoire vive du système.. et d’un peu de savoir faire ! Avec TrueCrypt par exemple il sera nécessaire de fabriquer un nouveau volume chiffré (vide) à l’aide d’une version de TrueCrypt dont le code source aura été modifié, puis de fusionner l’en-tête chiffré de ce volume dont on détient la clé avec les données que l’on souhaite casser et dont on a récupéré une version chiffrée de la clé.


Vous avez aimé cet article?

Cliquez sur le bouton J'AIME ou partagez le avec vos amis!

Notez L'article

Participez ou lancez la discussion!

4 réponses à La mémoire vive, le maillon faible de vos systèmes

Catégories

Étiquettes

Archives

Ce site est une archive des messages à SecurityVibes de Septembre 2000 à Juillet 2014. S'il vous plaît visitez le Qualys Community pour les dernières nouvelles.