Rootkit et PatchGuard sur Windows 64 Bits

Un billet concernant les Windows 64 bits et les protections embarquées sur ces plateformes.
Au vu des deux derniers billets sur les malwares Win32:RLoader-B : 247.sys / c_7265211.nls et Sirefef.B / Rootkit.Win32.ZAccess / MAX++, je me demandais ce qu’il en était sur ces plateformes.

PatchGuard et un peu d’histoire.

Qu’est ce que Patchguard

Comme vous le savez depuis Windows XP SP2 et encore plus vrais depuis Windows Vista et Seven avec  l’UAC notamment. Windows prends très à coeur la sécurité de ses systèmes d’exploitation.
Microsoft est aussi devenu un éditeur de sécurité avec Microsoft Security Essentials et possède maintenant un laboratoire qui suit l’évolution des différentes familles de malwares. Ce qui est une bonne chose pour connaître les techniques utilisées par ces derniers et pouvoir y répondre.

Depuis Windows 2003 SP1 et Windows XP 64 bits, et enfin Windows Vista et Seven sur les plateformes 64 bits, Windows incorpore des fonctionnalités de protection contre les rootkits.
La fonctionnalité principale est nommée PatchGuard qui empêche le patch au niveau du Kernel.

Vous trouverez une présentation rapide aux adresses suivantes :

et plus technique à cette adresse : http://www.codeproject.com/KB/vista-security/bypassing-patchguard.aspx

Le but de Patchguard est donc d’empécher des hooks au niveau du kernel, c’est à dire empécher toute modification au niveau du kernel pour qu’un programme puisse rediriger tout appel, fonction vers lui même et falsifier les résultats de cet appel, ce que font les rootkits.
PatchGuard est donc un mécanisme supplémentaire qui a pour but d’empécher l’altération du kernel.

En outre, enfin, sur les plateformes 64 bits, il est impossible de charger un driver non signé.
Du coup, les applications « maisons » qui utilisent un driver ne fonctionnent plus.
Si l’on prends le cas de GMER, ce dernier ne peux pas charger son driver et donc les fonctionnalités avancées, dont le scan Anti-Rootkit, ne sont pas possibles.
On a alors des menus grisés à droite.

Un peu d’histoire sur les malwares

Le SP1 pour Windows 2003 est sorti en Mai 2005.
Windows Vista est sorti en février 2007.

Soyons francs, sur les forums de désinfection, les versions 64 bits avaient un régime de faveur.
2008 à mi-2010, Rootkit.TDSS TDL 3 faisait fureur, ce dernier patchait des drivers existants. TDSS TDL 3 dans ces versions n’existaient pas sur Windows 64 bits.

Courant mi-2010, Symantec et Prevx postait cette new qui annonçait la mort de la version 3 :
http://www.symantec.com/connect/blogs/tidserv-64-bit-goes-hiding
http://www.prevx.com/blog/155/x-TDL-rootkit–follow-up.html

 

TDSS Alueron descendait au niveau du MBR et fonctionnait sur les plateformes 64 bits et donnait naissance à TDSS TDL 4.
A noter que ce n’est pas le premier bootkit (le premier étant Sinowal/mebroot puis Whistler Bootkit a suivi) mais je ne peux garantir que ces derniers fonctionnaient sur les plateformes 64 bits.

Courant Mai/Juin 2001, un nouveau rootkit Rootkit.Win64.Necurs.a a apparemment fait son apparition, ce dernier charge un rootkit avec un driver signé « en test ».
En effet, Microsoft pour les développeurs a permis de pouvoir charger des drivers signé en test (bcdedit.exe –set TESTSIGNING ON), cette fonction est utilisé par les auteurs de malwares pour charger leurs drivers (voir http://www.securelist.com/en/blog?print_mode=1&weblogid=473).
Nous sommes en septembre et on peux pas dire que ce rootkit soit très répandus.

Si l’on regarde donc, pendant 3 ans les plateformes 64 bits ont été exempts de rootkits, TDSS TDL 4 a vu le jour et contourne la difficulté en se chargeant au niveau du MBR.
Qu’en est-il des deux malwares dernièrement présentés ?

PatchGuard VS Win32:RLoader-B set Sirefef.B / Rootkit.Win32.ZAccess / MAX++

La seule façon de répondre est de lancer un dropper sur un Windows 64 bits.

ZAccess

On voit que le dropper injecte taskmgr.exe et ouvre une popup UAC d’élévation de privilèges.

En regardant ensuite, aucun des driver n’est patché et aucun ADS n’est chargé.
Comme cela a été évoqué sur la page suivante de Kaspersky http://www.securelist.com/en/blog/493/MAX_sets_its_sights_on_x64_platforms
Le malware infecte bien le système mais d’une manière différentes que sur les plateformes 32 bits.

Le malware modifie la clef Windows de HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems

En temps normal la clef est :

%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,20480,768 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off MaxRequestThreads=16
Le malware la modifie en :
%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,20480,768 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=consrv:ConServerDllInitialization,2 ProfileControl=Off MaxRequestThreads=16

qui permet de charger une DLL : C:\Windows\system32\consvr.dll dont voici la détection : http://www.virustotal.com/file-scan/report.html?id=d1606d0ba126d2c1f69661d75c079430a7d75b1d10c3c0cf94196e0dcf32e8d7-1315321844

File name: consrv.dll
Submission date: 2011-09-06 15:10:44 (UTC)
Current status: queued queued analysing finished
Result: 3/ 44 (6.8%)

Compact Print results
Antivirus Version Last Update Result
AntiVir 7.11.14.120 2011.09.06 TR/ATRAPS.Gen2
AVG 10.0.0.1190 2011.09.06 Generic24.BIKW
Microsoft 1.7604 2011.09.06 Trojan:Win64/Sirefef.B 

MD5   : 916c7adecd51aa70359ffa7fd4d6abf6
SHA1  : 9845a8eea09dfc512cd6eadfee4173348a4e2282
SHA256: d1606d0ba126d2c1f69661d75c079430a7d75b1d10c3c0cf94196e0dcf32e8d7

Note le fichier n’est pas verouillé et se supprime donc facilement.
Supprimer la DLL sans remettre la clef initiale conduit à un BSOD STOP c0000135 {Unable To Locate Component} – This application has failed to start because consrv was not found.

Win32:RLoader-B

Ci-dessous, une capture qui montre le dropper envoyer des informations vers ip-212-117-175-34.as5577.net et accéder à des fichiers et la base de registre de Windows.

A l’issu de l’execution du malware, le ping Google est normal

Un scan depuis un CD Live ne montre rien de probant

Pas de redirections Google.
Il semblerait donc que tout simplement, l’infection ne soit pas fonctionnelle sur les platesformes 64 bits.

Conlusion

Mi-2011 il existe toujours un régime de faveur pour les versions de Windows embarquant le Patchguard.
Si l’on regarde ZAccess qui dans sa version « normale » est une plaie sans nom à désinfecter, ADS+patch de fichiers systèmes (parfois deux patchs) et qui met en jeu la stabilité de Windows (parfois impossibilité de booter).
Sur Windows 64 bits, c’est une « simple » DLL, bien entendu il faut remettre la clef d’origine, mais cela doit pouvoir se faire par une restauration du système.

W32:RLoader-B lui ne semble pas fonctionner.

Avec l’intégration de  l’UAC, Microsoft a vraiment réhaussé le niveau de protection ses systèmes d’exploitation.

Comment lire d'autres tutoriels de malekal.com ?

Si le site vous a aidé, svp, débloquez les bloqueurs de publicités, n'hésitez pas non plus à partager l'article ou le site sur les réseaux sociaux.

Pour pouvoir lire plus d'articles et tutoriels, utilisez le menu en haut du site. Plein d'articles et tutos utiles vous attendent !

Besoin d'aide ?

Posez votre question ou soumettez votre problème sur le forum malekal.com pour obtenir une aide efficace : Aller sur le forum malekal.com
(Visited 98 times, 1 visits today)

4 thoughts on “Rootkit et PatchGuard sur Windows 64 Bits

  1. Ha ba voila.. ceci explique pourquoi j’ai survécu..
    Outpost en mode parano (pour les connexion suspectes de csrss.exe) et NOD qui a finit par détecter consrv.dll 🙂
    Ceci n’est pas une pub 🙂

  2. Bonsoir,

    Je suis infecté depuis 5 jours par ce maudit ZAccess, je suis sous Windows 7 64Bits, j’ai passer tout les logiciel antivirus en full scan etc et rien n’y fait 🙁

    Je viens de vérifié et j’ai bien le « consrv.dll » et la clé registre est bien modifiée comme expliquer sur cette page. Effacer le fichier consrv dll fait reboot ecran bleu au démarrage de windows comme dit ici.

    Comment modifier la clé de registre pour pouvoir effacer le fichier sans provoquer d’écran bleu? Quand je le fais par Regedit je clique ok et si je reouvre les propriété toujours consrv mis. la modification ne veut pas se faire.

    help 🙁

  3. Une procédure pour remettre la clef – faut la remettre depuis un CD Live.

    La clef modifiée avec le consrv qui remplace winsrv :
    Windows = %SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,20480,768 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=consrv:ConServerDllInitialization,2 ServerDll=sxssrv,4 ProfileControl=Off MaxRequestThreads=16

    Faut télécharger et graver OTLPE : http://forum.malekal.com/otlpe-live-t23453.html
    Faut booter desssus et lancer l’éditeur de registre (ça doit être menu Démarrer / Tools System )
    Faut dérouler l’arborescence en cliquant sur les + pour arriver à cette clef :
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems
    A droite tu dois avoir Windows, faut remplacer le consrv en gras plus haut par winsrv
    et redémarrer l’ordinateur.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *