Extraction d'informations d'identification cryptées à partir d'outils courants PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Extraction d'informations d'identification chiffrées à partir d'outils communs

La majorité des cyberattaques s'appuyer sur des informations d'identification volées, obtenues soit en incitant les employés et les utilisateurs finaux à les partager, soit en récupérant les informations d'identification de domaine mises en cache sur les postes de travail et d'autres systèmes du réseau. Ces informations d'identification volées permettent aux attaquants de se déplacer latéralement dans l'environnement lorsqu'ils passent d'une machine à l'autre, à la fois sur site et dans le cloud, jusqu'à ce qu'ils atteignent des actifs critiques pour l'entreprise.

Dans le Violation d'Uber en septembre, les attaquants trouvé les informations d'identification dans un script PowerShell spécifique. Mais il existe de nombreuses façons moins flashy, mais tout aussi dommageables, pour les attaquants de trouver des informations d'identification qui leur permettraient d'accéder à l'environnement. Il s'agit notamment des informations d'identification locales communes, des utilisateurs locaux avec des mots de passe similaires et des informations d'identification stockées dans des fichiers sur des partages réseau.

Dans nos recherches, nous avons été confrontés à la question de savoir quel type d'informations peut être extrait d'une machine compromise - sans exploiter aucune vulnérabilité - afin de se déplacer latéralement ou d'extraire des informations sensibles. Tous les outils que nous avons utilisés ici sont disponibles sur notre GitHub dépôt.

Les organisations s'appuient sur plusieurs outils pour s'authentifier auprès des serveurs et des bases de données à l'aide des protocoles SSH, FTP, Telnet ou RDP - et nombre de ces outils enregistrent les informations d'identification afin d'accélérer l'authentification. Nous examinons trois de ces outils - WinSCP, Robomongo et MobaXterm - pour montrer comment un attaquant pourrait extraire des informations d'identification non en clair.

WinSCP : informations d'identification masquées

Lorsqu'un contrôleur de domaine n'est pas disponible, un utilisateur peut accéder aux ressources système à l'aide des informations d'identification mises en cache qui ont été enregistrées localement après une connexion réussie au domaine. Étant donné que l'utilisateur était précédemment autorisé, l'utilisateur peut se connecter à la machine à l'aide du compte de domaine via des informations d'identification mises en cache même si le contrôleur de domaine qui a authentifié l'utilisateur dans le passé n'est pas disponible.

WinSCP offre la possibilité d'enregistrer les informations d'identification utilisées pour se connecter à des machines distantes via SSH. Bien que les informations d'identification soient masquées lorsqu'elles sont enregistrées dans le registre Windows (ComputerHKEY_CURRENT_USERSOFTWAREMartin PrikrylWinSCP 2Sessions), elles ne sont pas du tout chiffrées. Toute personne connaissant l'algorithme utilisé pour obscurcir peut accéder aux informations d'identification.

Le code source de WinSCP étant disponible sur GitHub, nous avons pu trouver l'algorithme d'obfuscation. Nous avons utilisé un outil qui implémentait le même algorithme pour désobscurcir les informations d'identification, et nous avons eu accès aux informations d'identification en texte clair.

La mise en œuvre d'un algorithme d'obscurcissement pour sécuriser les informations d'identification stockées n'est pas la meilleure pratique, car elle peut être facilement inversée et conduire au vol d'informations d'identification.

Robomongo : pas une clé secrète

Robomongo (maintenant Robo 3T) est un client MongoDB utilisé pour se connecter aux serveurs de base de données Mongo. Lorsque vous enregistrez vos informations d'identification, elles sont cryptées et enregistrées dans un robo3t.json Fichier JSON. La clé secrète utilisée pour chiffrer les identifiants est également enregistrée localement, en clair, dans un robot3t.key fichier.

Cela signifie qu'un attaquant qui accède à une machine peut utiliser la clé enregistrée en texte clair pour déchiffrer les informations d'identification.

Nous avons examiné le code source de Robomongo sur GitHub pour comprendre comment la clé est utilisée pour chiffrer le mot de passe et avons appris qu'il utilise la bibliothèque SimpleCrypt de Qt. Bien que Robomongo utilise le cryptage pour stocker en toute sécurité les informations d'identification, le fait que la clé secrète soit enregistrée en texte clair n'est pas la meilleure pratique. Les attaquants pourraient potentiellement le lire, car tout utilisateur ayant accès au poste de travail peut déchiffrer les informations d'identification. Même si l'information est codée d'une manière que les humains ne peuvent pas lire, certaines techniques pourraient déterminer quel encodage est utilisé, puis décoder l'information.

MobaXterm : décrypter le mot de passe

MobaXterm est un outil puissant pour se connecter à des machines distantes en utilisant divers protocoles tels que SSH, Telnet, RDP, FTP, etc. Un utilisateur qui souhaite enregistrer ses informations d'identification dans MobaXterm sera invité à créer un mot de passe principal pour protéger ses données sensibles. Par défaut, MobaXterm demande le mot de passe principal uniquement sur un nouvel ordinateur.

Cela signifie que le mot de passe principal est enregistré quelque part et que MobaXterm le récupérera pour accéder aux informations d'identification cryptées. Nous avons utilisé Procmon de la suite Sysinternals pour mapper toutes les clés de registre et tous les fichiers accessibles par MobaXterm, et nous avons trouvé le mot de passe principal enregistré dans le registre Windows (ComputerHKEY_CURRENT_USERSOFTWAREMobatekMobaXtermM). Les informations d'identification et les mots de passe sont enregistrés dans les clés de registre C et P, respectivement.

Initialement, nous n'avons pas pu déchiffrer le mot de passe principal, qui a été chiffré à l'aide de DPAPI. Nous avons finalement compris que les 20 premiers octets DPAPI, qui sont toujours les mêmes lors de l'utilisation de DPAPI, avaient été supprimés. Lorsque nous avons ajouté les 20 premiers octets, nous avons pu déchiffrer le chiffrement DPAPI pour obtenir le hachage SHA512 du mot de passe principal. Ce hachage est utilisé pour chiffrer et déchiffrer les informations d'identification.

Ici, la clé de chiffrement utilisée pour stocker en toute sécurité les informations d'identification est enregistrée à l'aide de DPAPI. Cela signifie que seul l'utilisateur qui a enregistré les informations d'identification peut y accéder. Cependant, un utilisateur disposant d'un accès administrateur, ou un attaquant qui accède à la session de la victime, peut également déchiffrer les informations d'identification stockées sur la machine.

Connaître les risques

Les développeurs, DevOps et l'informatique utilisent divers outils pour se connecter à des machines distantes et gérer ces détails d'accès. Les fournisseurs doivent stocker ces informations sensibles de la manière la plus sécurisée. Cependant, le chiffrement est toujours côté client et un attaquant peut répliquer le comportement de l'outil afin de déchiffrer les informations d'identification.

Comme toujours, il n'y a pas de solution magique qui puisse résoudre tous les problèmes dont nous avons discuté ici. Les organisations pourraient toutefois commencer par examiner les services qu'elles utilisent actuellement. Ils peuvent construire une matrice des risques précise et être mieux préparés aux violations de données en ayant une meilleure compréhension des types de données sensibles et d'informations d'identification qu'ils stockent.

Horodatage:

Plus de Lecture sombre