Feb 10 2013

Durcissement du contrôleur de domaine: Dump du NTDS.

Une fois que des pirates sont en possession des droits administrateur du domaine et ont accès aux contrôleurs de domaine, ils essayent en général de dumper le contenu de la base NTDS (voir chapitre Dumping All The Hashes–ntdsgrab.rb). Ceci afin de cracker les mots de passe de tous les utilisateurs du domaine, c’est ce qui s’est d’ailleurs passé lors de la récente cyberattaque contre le New York Times. Nous allons voir dans ce post comment rendre cette tâche plus difficile à un attaquant en modifiant certains paramètres de sécurité sur nos contrôleurs de domaine.

Un script Ruby (ntdsgrab.rb réalisé par R3dy) permet d’extraire avec BackTrack le fichier NTDS.dit et la ruche SYSTEM d’un DC nécessaires pour obtenir tous les hash de mots de passe du domaine: Pour cela copier le fichier sous /pentest/exploits/framework/modules/auxiliary/admin/smb, nous le nommons grab.rb:

backtrack-installmodule

Ne vous reste plus qu’à charger le module et à paramétrer les bonnes options:

msf > use auxiliary/admin/smb/grab
msf  auxiliary(grab) > set RHOSTS 192.168.206.134
RHOST => 192.168.206.134
msf  auxiliary(grab) > set SMBUser Administrator
SMBUser => Administrator
msf  auxiliary(grab) > set SMBDomain LDAP389
SMBDomain => LDAP389
msf  auxiliary(grab) > set SMBPass MyPassword
SMBPass => MyPassword
msf  auxiliary(grab) > show options
 
Module options (auxiliary/admin/smb/grab):
 
   Name       Current Setting  Required  Description
   ----       ---------------  --------  -----------
   LOGDIR     /tmp/NTDS_Grab   yes       This is a directory on your local attacking system used to store the ntds.dit and SYSTEM hive
   RHOSTS     192.168.206.134  yes       The target address range or CIDR identifier
   RPORT      445              yes       Set the SMB service port
   SMBDomain  LDAP389          no        The Windows domain to use for authentication
   SMBPass    MyPassword    no        The password for the specified username
   SMBSHARE   C$               yes       The name of a writeable share on the server
   SMBUser    Administrator    no        The username to authenticate as
   THREADS    1                yes       The number of concurrent threads
   VSCPATH                     no        The path to the target Volume Shadow Copy
   WINPATH    WINDOWS          yes       The name of the Windows directory (examples: WINDOWS, WINNT)
msf  auxiliary(grab) > run

Et exécuter le module:

runexploitsuccess

Le module utilise l’outil vssadmin.exe afin de créer une shadow copy de la partition contenant le NTDS. Cet outil repose sur le service VSS, qui permet de sauvegarder vos DCs.

Nous allons donc via GPO modifier la sécurité du service VSS:

  • Pour les DCs que nous ne sauvegardons pas: Oui vous n’êtes pas obligé de sauvegarder tous vos DCs, MS recommande un minimum de deux DCs par domaine (1 avec rôle FSMO, 1 sans). En cas de désastre ces derniers sont réinstallés complètement via dcpromo ou via Installation from Media pour gagner du temps. Vous pouvez désactiver le service VSS, empêcher tout compte de démarrer le service et de modifier sa sécurité, enfin activer l’audit d’accès au service. La GPO est filtré via le groupe de sécurité LDAP389-DC-NOBACKUP auxquels appartiennent les DCs non sauvegardés:
  • disableVSSGPO

  • Pour les DCs que nous sauvegardons: Nous allons laisser le service VSS en démarrage manuel, empêcher tout compte de démarrer le service et permettre seulement au compte SYSTEM de modifier sa sécurité. La tâche de sauvegarde réalisée via une tâche planifiée sera détaillée plus tard. La GPO est filtrée via le groupe LDAP389-DC-BACKUP auxquels appartiennent seulement les DCs sauvegardés:

enablevss

Une fois cette configuration appliquée le module ntdsgrab.rb ne fonctionne plus:

runexploitfailed2

On peut par ailleurs retrouver dans le journal d’application l’erreur lancement de VSSadmin.exe (Source VSS, ID 7001), comme l’audit sur ce service est activé via GPO on voit dans le journal de sécurité que le compte administrateur du domaine ne peut lancer le service VSS (Audit failure, ID 4656). Enfin il est facile d’identifier la machine attaquant le DC en regardant les événements de sécurité juste avant l’échec d’accès au service:

events

Pour que nôtre sauvegarde légitime fonctionne nous créons une tâche planifiée tournant sous le compte SYSTEM et lançant le batch backup.cmd. Nous allons utiliser wbadmin.exe pour faire la sauvegarde sur un autre disque (partition E:), mais avant cela le compte SYSTEM se donnera les droits de lancer le service VSS grâce à la commande sc sdset. Une fois la sauvegarde effectuée le service VSS est stoppé et les permissions poussées via GPO appliquées de nouveau.

Le contenu du batch backup.cmd est le suivant:

sc sdset vss D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWLOCRSDRC;;;BA)(A;;CCLCSWLOCRRC;;;IU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)
wbadmin.exe start backup -backupTarget:E: -allCritical -systemState -quiet
net stop vss
sc sdset vss D:(A;;CCDCLCSWLOCRSDRCWDWO;;;SY)(A;;CCDCLCSWLOCRSDRC;;;BA)(A;;CCLCSWLOCRRC;;;IU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)

Ci dessous on voit que les backup qui sont bien réalisés, voici aussi la tâche planifiée:

scheduled

Bien entendu, comme ennoncé en début de post si le pirate est administrateur du domaine, rien ne l’empêche de se loguer sur le DC, d’obtenir les privilèges SYSTEM, changer les permissions sur le service en ligne de commande et utiliser vssadmin pour extraire le NTDS. Mais l’atténuation décrite ci dessus l’aura au moins frêné et aura surêment permis de le détecter (via une alerte sur les erreurs VSS dans le journal d’application).

Enfin, quand cela est possible utiliser des RODCs sur vos sites distants et configurer la stratégie de réplication de mots de passe pour que la base NTDS ne stocke les mots de passe utilisateurs et machine du site. Si le RODC est compromis, vous pouvez reseter les mots de passe des utilisateurs qui ont leur mot de passe stocké dans le NTDS du RODC.

This post is also available in: Anglais

2 Comments

  • By r0llb4ck, February 11, 2013 @ 3:31 pm

    TODO : hooker le journal d’applications pour que les alertes VSS ne remontent pas aux paresseux admins

  • By ldap389, February 11, 2013 @ 7:21 pm

    Bravo… On reconnait bien la touche Regre$$ion $oftware 😉

Other Links to this Post

RSS feed for comments on this post. TrackBack URI

Leave a comment

*

WordPress Themes

Blossom Icon Set

Software Top Blogs