Connect the dots #8: « Mouvement Latéral »
Le mouvement latéral abuse des relations de confiance du domaine pour attaquer le système d'information: Cela passe par plusieurs étapes dont l'inventaire des ordinateurs et des utilisateurs, la prise de contrôle à distance des systèmes sans utiliser le malware initial et l'exécution de codes à distance avec le payload "charge utile" du beacon, comme nous avons vu dans les articles précédents sur la post-exploitation et l'élévation de privilèges. Cette "charge utile" pourra servir à exécuter des commandes permettant de passer d'un système piraté à un autre, pour finalement aboutir au contrôle total du système d'informations de la victime. C'est cela qui est appelé "mouvement latéral".
(c) AFP – Archives
Pour ce faire, il y a plusieurs méthodes d'attaque comme le vol de tokens valides (jetons permettant l'accès à un système sans passer par la phase d'authentification), de craquage "d'identifiants-mot de passe", et le "graal" de l'attaquant qui consiste à réussir à générer des Golden Tickets Kerberos, comme nous avons vu dans l'article précédent sur l'élévation de privilèges.
Afin de mieux comprendre le mouvement latéral, il faut savoir que, dans un environnement Windows, il y a deux catégories d'utilisateur et deux catégories d'administrateur (c'est à dire un utilisateur avec des privilèges) :
1- Les utilisateurs locaux qui ne sont pas administrateurs, même de leur propre poste.
2- Les utilisateurs du domaine qui sont des utilisateurs dont les droits dépendant de "l'annuaire numérique" (c'est à dire le DC "Contrôleur de Domaine"). Cet annuaire est appelé chez Microsoft "l'AD" (pour Active Directory) et avec son extension ADFS (Services fédérés à l'AD). Un service fédéré permet le fait de s'authentifier une seule fois, au démarrage, pour tous les services "fédérés" comme vous le constatez tous les jours, par exemple, pour vous connecter à votre messagerie Exchange-Outlook. Une fois que vous vous êtes authentifiés, nul besoin de recommencer pour tous les services liés à cet AD, comme pour la messagerie de Microsoft. Le revers de cette médaille du SSO (Single Sign On – authentification unique) est que si vous vous faites pirater votre compte "AD", les attaquants auront accès non seulement à vos fichiers, mais également à vos messages et à tous les services fédérés par le contrôleur de domaine….
3- Les administrateurs locaux, qui, notamment, ont le droit d'installer un programme sur l'ordinateur ou de modifier les droits afférents aux fichiers, mais uniquement de cet unique ordinateur "local".
4- Les administrateurs de domaine qui ont tous les droits sur le Contrôleur de Domaine. Le DC lui même contient et administre tous les droits de tous les utilisateurs et services du domaine.
On voit donc que le mouvement latéral va consister à prendre le contrôle d'un maximum de comptes locaux, si possible administrateurs de leur poste, mais va essayer encore mieux cherchant des utilisateurs de domaine, voire encore mieux en prenant le contrôle d'un compte administrateur du domaine. On appelle le fait de prendre le contrôle d'un compte ou d'un ordinateur "pwned" (prononcé pawned en fait) dans le jargon des hackers: Le compte est compromis, littéralement "mis en gage", "hypothéqué", par l'attaquant.
Les attaquants vont commencer par utiliser l'accès initial pour effectuer une phase de "reconnaissance" afin de savoir quelle machines sont connectées au réseau et quels comptes ont des privilèges, en essayant naturellement de trouver l'emplacement et les compte d'administrateur des contrôleurs de domaine. C'est très simple à effectuer dès lors que l'on peut passer des commandes système de type powershell, notamment des commandes "net", comme "net view" , "net group" ou "net computers".
Avec la commande "run net domain_controllers" on va obtenir la liste des contrôleurs de domaine… La cible est donc aisément trouvée une fois que l'attaquant est capable de passer une commande système depuis l'une des machines connectée au réseau. C'est le système de beacons, que nous avons vu précédemment, qui va permettre à l'attaquant, en instaurant un dialogue avec le C2 (Le centre de commande à distance), de passer les commandes pour effectuer le mouvement latéral d'une machine piratée à une autre.
(c) Cobalt Strike
Afin de mieux comprendre le problème, il faut savoir que lors de l'accès authentifié à un domaine par un utilisateur, un jeton d'accès (access token) est créé. Ce jeton permettra à cet utilisateur d'obtenir les droits inhérents à son identifiant qui sont stockés dans le contrôleur de domaine. Si l'attaquant arrive a créer un access token de cet utilisateur il aura les mêmes droits de cet utilisateur, sans même avoir à s'authentifier ! Ceci est valable également pour les comptes administrateurs. Un exemple évident de recommandation ici est de n'avoir aucun utilisateur comme administrateur local de son propre poste. Cela évitera que l'attaquant arrive à installer des programmes sur le poste, ou bien arrive à exécuter des commandes système depuis ce poste, notamment pour effectuer son mouvement latéral vers d'autres postes et serveurs. La véritable question va donc être de maîtriser les droits et habilitations avec juste ce qu'il faut pour travailler et pas plus.
Mais il y a pire: L'attaquant peut faire un mouvement latéral sans utiliser autre chose que les UNC (Universal Naming Convention) existants, c'est à dire les partages réseau comme serveurpartagerepertoirefichier. Il pourra alors utiliser le protocole SMB (Server Message Block) qui permet l'accès à ce partage de ressources grâce à l'accès token de l'utilisateur piraté. Cela permettra deux actions typiques: le fait de répandre le chiffrement du ransomware sur toutes les ressources partagées et le fait de copier, puis d'exfiltrer des fichiers sensibles.
A ce niveau, une mesure de sécurité simple est d'inventorier tous les partages SMB et de vérifier qu'ils ont un intérêt pour cet utilisateur. D'après le "Financial Risk Report", une enquête de Varonis en 2020 sur les services financiers de grands pays du G20: 64 % des entreprises financières ont plus de 1000 dossiers sensibles auxquels l’ensemble de leurs employés ont un accès… Le fait d'analyser la pertinence de tous ces partages d'information est donc une mesure presque d'hygiène cyber !
L'autre effet des partages SMB est qu'ils concernent aussi les imprimantes. "Et alors ? Ils vont imprimer des bêtises sur nos imprimantes les pirates ?". Pas forcément: Les imprimantes des entreprises sont capables de scanner des documents et ont un disque dur qui contient potentiellement toutes les copies et tous les scans que cette imprimante a effectué depuis sa mise en service. Autrement dit, il peut y avoir de nombreux documents sensibles accessibles aux attaquants à travers ce disque dur. Est-il chiffré ? Pas forcément, c'est à vérifier. Comment a-t-on accès à ces données ? A vérifier aussi.
Une autre façon pour l'attaquant de procéder à un mouvement latéral est de combiner une commande d'accès distant (comme WinRM) avec une commande système powershell ou PSEXEC. C'est ce que la plupart des attaquants font pour activer Mimikatz, ce qui leur permettra ensuite de récupérer des hash valides des utilisateurs ciblés, puis de fabriquer des access token liés à ces comptes. Nous avons vu ces mécanismes dans l'article précédent sur l'élévation de privilèges.
Pour essayer de bloquer ces attaques il faut disposer de la version la plus récente de Windows Server avec aucune option "legacy" activée d'anciennes versions. Le fait d'accepter des authentifications de systèmes anciens, comme Windows XP, va obliger le système d'authentification du serveur à accepter des tokens plus faibles en termes de hash, et c'est là que les pirates vont s'insinuer. Le même problème va se poser avec les systèmes industriels dont certains sont encore Windows 2003 (voire Windows NT4 ou 2000) et, de plus, ne sont jamais mis à jour, mais pourtant interagissent de plus en plus avec les contrôleurs de domaine du réseau "bureautique".
Pour éviter le mouvement latéral, il faut mettre en place à la fois des mesures organisationnelles et techniques:
1- Le principe du moindre privilège: Ne pas octroyer des droits aux utilisateurs ou aux administrateurs par commodité. Leur donner accès uniquement aux programmes et fichiers dont ils ont besoin.
2- Gérer des autorisations par application et une "liste blanche" des applications autorisées
3- Mettre en place une gestion stricte des mots de passe (longueur, complexité, double authentification)
4- Mettre en place un "bastion d'admin" pour que tous les administrateurs accèdent aux ressources uniquement par cette machine et non pas directement sur les serveurs, surtout à distance.
5- Segmenter les réseaux (voire pratiquer la micro-segmentation) pour éviter qu'un réseau industriel ou un réseau bureautique puissent communiquer avec le réseau des serveurs.
Dans le prochain article nous verrons comment les pirates continuent à se maintenir et à polluer nos systèmes avec le principe du pivoting.