L’exécution d’application sous un compte administrateur est une problématique souvent abordée sur les nouveaux Windows. Il peut s’avérer nécessaire de créer de nouveaux comptes administrateurs pour exécuter tels ou tels processus avec ces droits.
Avec une vision plus négative, de potentiels attaquants ont régulièrement recours à la création d’un compte administrateur lorsqu’ils infectent un système. La raison? Ne pas interférer avec le compte de l’administrateur légitime, mais opérer en secret sous un compte qui dispose de tous les droits et ce le plus invisible possible.
En effet, une des fonctionnalités les plus répandue des Windows Server est le service TSE/RDS permettant la prise de contrôle à distante de l’environnement (écran / clavier / souris). Lorsqu’un Windows Server est compromis, les assaillants s’empressent de créer un compte administrateur caché pour conserver un accès permanent au système, même si le mot de passe de l’administrateur légitime est changé.
La création d’un compte administrateur sur un environnement Windows est on ne peut plus simple via un terminal. Deux commandes suffisent :
net user <login> <password> /add net localgroup administrateurs <login> /add
Comme illustré sur la figure précédente, la commande « net user » permet de lister tous les comptes du système et l’on voit bien la création de notre nouveau compte « NEW_LOGIN ». Toutefois, après l’exécution de ces commandes, ce compte est visible d’une part via la commande « net user » mais aussi à l’écran de connexion du système si celui-ci est activé. Un des mécanismes utilisés pour cacher ce compte de la commande « net user » est de faire suffixer le nom du compte par un « $ ». Celui-ci deviendra automatiquement invisible :
net user <login>$ <password> /add net localgroup administrateurs <login>$ /add
Cette solution satisfait amplement les assaillants souhaitant garder l’anonymat sur les machines Server. Toutefois, dans le cadre de postes clients qui listent les comptes existants sur le système dès le Winlogon, ce nouveau compte est visible. Exemple sur Windows 7 :
Ainsi, une solution additionnelle existe permettant de camoufler le compte dès le Winlogon. Pour réaliser ceci, une clé du registre de type « DWORD » doit être créée avec pour nom le compte à cacher et comme valeur « 00000000 » à cet emplacement : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList. Pour réaliser cet ajout au sein d’un terminal, la commande est la suivante :
C:\>reg add 'HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList' /v 'NEW_LOGIN$' /t REG_DWORD /d '00000000' L'opération a réussi.
A partir de là, le compte « NEW_LOGIN$ » sera invisible de la commande « net user » et du Winlogon :
Il est par conséquent nécessaire de bien contrôler les différents comptes créés localement sur un système. En particulier la clé du registre qui permet de les cacher du Winlogon. Pour ce qui est de la commande « net user » qui n’affiche pas les comptes suffixés d’un « $ », ce soucis ne s’applique pas avec la commande « net locagroup <nomdugroupe> » qui liste convenablement tous les membres du groupe, même ceux qui dispose d’un « $ ».