Blog

Akerva

Faites l’expérience de la sécurité active & réactive

R&D

Baboossh – La propagation SSH facilitée pour les Red Team pressées

R&D | 24/01/2020 La gestion des identités et des accès est une des clefs de voûte de la sécurité des systèmes d’information. Cela se décline de plusieurs manières, mais l’un des éléments clefs est une politique de mots de passe robuste. Dans beaucoup de cas, le mot de passe est le seul élément qui protège un compte des accès non-désirés. Pour se protéger, les utilisateurs sont encouragés...

La gestion des identités et des accès est une des clefs de voûte de la sécurité des systèmes d’information. Cela se décline de plusieurs manières, mais l’un des éléments clefs est une politique de mots de passe robuste. Dans beaucoup de cas, le mot de passe est le seul élément qui protège un compte des accès non-désirés. Pour se protéger, les utilisateurs sont encouragés à utiliser un mot de passe difficile à deviner. Mais, bien souvent, l’usage de coffres-forts de mots de passe n’est pas répandu et les utilisateurs peinent à les retenir. Cela entraîne une autre vulnérabilité : la réutilisation de mots de passe.
L’utilisation d’un même mot de passe pour accéder à différentes ressources est très répandue, et présente un risque de compromission important : une fois qu’un attaquant connaît les informations d’authentification d’une machine ou d’un service, il peut tenter de réutiliser ces mêmes informations pour compromettre d’autres services.

C’est ce principe qui est exploité par différents outils populaires, comme CrackMapExec, qui permettent de tester des informations d’authentification sur un grand nombre de serveurs. Dans les réseaux d’entreprises reposant sur les technologies Microsoft, la cible classique est le service SMB. Toutefois, beaucoup de serveurs métiers utilisent Linux et ne seront donc généralement pas compromis par ces outils.

Les serveurs Linux sont généralement administrés à l’aide du protocole SSH, qui permet d’obtenir une invite de commande sur un système distant. Pour cela, SSH permet de s’authentifier avec un nom d’utilisateur et un secret, généralement un mot de passe ou une paire de clefs RSA dont la clef publique aura été préalablement autorisée. Le même principe est utilisable, puisqu’en ayant connaissance d’un nom d’utilisateur et de son mot de passe ou de sa clef privée, il est souvent possible de compromettre plus de serveurs.


Illustration 1 – Exemple de réutilisation d’une clef permettant la compromission de plusieurs machines

L’utilisation de SSH laisse également des traces sur un poste, qu’il s’agisse de fichiers de configuration ou de données dans l’historique : il est par conséquent souvent possible de collecter des informations sur une machine compromise pointant vers d’autres machines également accessibles en SSH. Il est également possible d’utiliser SSH pour transférer du trafic vers une autre machine via un « tunnel SSH », ce qui permet parfois d’atteindre par pivot des machines situées sur un réseau précédemment inaccessible.

 

Illustration 2 – Utilisation de la machine rouge comme pivot pour atteindre la machine verte via un tunnel SSH

Cette technique consistant à compromettre une machine, collecter les informations pour pivoter vers d’autres machines et réutiliser les informations d’authentification SSH est bien connue et peut être utilisée avec succès pour compromettre un périmètre important et des serveurs critiques.

Bien que des outils existent pour faciliter la compromission dans le monde Windows (avec SMB par exemple), peu d’outils sont disponibles pour aider une équipe offensive à compromettre rapidement un nombre important de machines Linux via rebond SSH.

Les équipes offensives d’Akerva rencontrant souvent ces situations dans leurs engagements Red Teams et leurs audits offensifs de systèmes d’information, nous avons développé un outil pour répondre à ce scénario avec pour objectif d’offrir flexibilité et gain de temps :

 


SSH spreading made easy for red teams in a hurry.

BabooSSH fournit à l’auditeur une boîte à outils permettant de tester rapidement des informations d’authentification sur un périmètre donné pour trouver des connexions fonctionnelles. Une fois ces connexions découvertes, BabooSSH permet d’exécuter du code tel que des commandes système, de la récupération de fichiers, ou encore d’ouvrir des tunnels SSH, mais aussi d’automatiser la collecte de traces permettant de rebondir vers d’autres serveurs pour se répandre à travers le réseau, afin d’obtenir une compromission la plus large possible.

Une fois la première machine compromise, il suffit d’ajouter son adresse IP, le nom d’utilisateur et les informations d’authentification (mot de passe, clef privée…) découvertes dans BabooSSH pour commencer à se connecter et à exécuter des opérations, comme récupérer un fichier depuis le serveur compromis :

Illustration 3 – Ajout d’une cible (endpoint), d’un utilisateur et d’un mot de passe à BabooSSH, connexion et récupération d’un fichier sur le serveur

Il est également possible d’importer directement un scan NMAP pour cibler un grand nombre de cibles à la fois :

Illustration 4 – Ajout de cibles depuis un scan NMAP et tentative de connexion avec les identifiants connus

BabooSSH permet alors de se connecter à une cible précise avec des identifiants et mots de passe précis, ou alors d’essayer différentes combinaisons de paramètres pour obtenir une connexion fonctionnelle. Par exemple, si on sait qu’un utilisateur donné se connecte à une machine donnée mais qu’on ne sait pas quelle clef il utilise parmi l’ensemble de clefs découvertes, il suffit de renseigner les paramètres connus et de laisser BabooSSH tester les différents secrets d’authentification enregistrés dans l’espace de travail :

Illustration 5 – Découverte du secret d’authentification pour l’utilisateur PTO sur la machine 10.0.1.104 : ici il s’agit du secret #4, soit une clef privée récupérée précédemment

Une fois la connexion établie vers un hôte, il est possible de collecter les traces SSH qu’il contient, qui seront ajoutées à l’espace de travail pour réitérer le processus sur une nouvelle cible et ainsi étendre la compromission :



Illustration 6 – Collecte de traces sur une machine compromise pour trouver d’autres cibles

Le pivot via une machine compromise est géré de manière transparente par BabooSSH, qui permet d’exécuter des commandes sur une machine dans le même réseau ou sur une machine se trouvant à cinq rebonds de là :



Illustration 7 – Connexion à une machine « ssh5 » via 3 pivots

Enfin, pour simplifier le travail de l’auditeur, BabooSSH met à disposition des fonctionnalités pratiques telles que des espaces de travail, la gestion du périmètre ou encore l’export de la compromission sous forme de graphes :



Illustration 8 – Exemple de graphe exportable depuis BabooSSH

L’outil est disponible sur GitHub sous licence GNU-GPLv3.0 : la communauté est encouragée à le tester, remonter les bugs éventuels et étendre ses fonctionnalités.
Développé en Python3, BabooSSH adopte une conception modulaire qui permet à chacun de développer de nouvelles charges actives, de nouveaux modes d’authentification ou encore des moteurs d’importation et d’exportation de données :



Illustration 9 – Liste des modules existants et exemple du code d’un module « payload »

BabooSSH est utilisable dès maintenant dans sa version 1.0 pour assister les auditeurs dans leurs phases d’engagement, et de nouvelles fonctionnalités sont prévues pour la suite !
Parmi les développements à venir, nous envisageons un mode non-interactif pour lancer directement des charges actives en une ligne de commande, une gestion des serveurs compromis par groupes, des améliorations de l’interface, le chiffrement des espaces de travail, etc.
Selon les besoins, de nouveaux modules seront également susceptibles d’être ajoutés : n’hésitez pas à développer vos propres modules et à nous les soumettre pour les intégrer à l’outil.

Actualités & blog

Restez informé des dernières actualités

RESTEZ INFORMÉ DES ACTUALITÉS AKERVA

ABONNEZ-VOUS À NOTRE NEWSLETTER