Conférence DEFCON 20. Capture en 60 secondes: d'un compte invité à un administrateur de domaine Windows. Partie 1La bonne chose est que nous pouvons entrer dans le réseau local en simulant le DNS. Qu'en est-il de l'ingénierie sociale qui prend en compte les préférences et les inclinations des utilisateurs? Les pentesters savent que dans IE, vous pouvez mettre des balises de fichier image, par exemple, au format .jpg, pour le chemin d'accès au réseau UNC, puis IE le transférera à Windows et se connectera automatiquement au dossier réseau, essayant d'obtenir l'image demandée ou autre chose, par exemple , JavaScript, iFrame, etc. Donc pour aujourd'hui, IE a une authentification automatique.

La même chose peut être faite dans Firefox et Chrome, bien que les gens pensent que ces navigateurs sont plus sécurisés. Cette capture d'écran montre la console d'erreur Firefox, qui indique que le navigateur ne peut pas télécharger ce fichier image à partir du réseau public, car la politique de sécurité empêche le téléchargement de fichiers qui ne sont pas dans le contexte de sécurité du navigateur. Une fonctionnalité intéressante de notre outil est que les navigateurs Firefox et Chrome peuvent être forcés de télécharger des fichiers simplement en envoyant des en-têtes HTTP pour forcer Content-Type: application / force-download à télécharger, puis ouvrez ces fichiers à partir du dossier Temp ou directement à partir du bureau. Ainsi, nous avons défini le contexte de sécurité des fichiers et activé l'authentification automatique dans le SMB général, vous pouvez donc maintenant forcer les utilisateurs à s'authentifier sur votre serveur frauduleux.
Mais que se passe-t-il s’ils ne cliquent pas sur «télécharger le fichier» ou l’ouvrent à partir du dossier Temp? Dans ce cas, vous pouvez faire en sorte que les utilisateurs s'authentifient automatiquement simplement lors de l'affichage d'une page HTML dans un navigateur. Pour ce faire, les plug-ins doivent être connectés à Firefox et Chrome. Mon attention a été attirée sur le plugin QuickTime, qui est souvent installé par défaut par les utilisateurs. Je sais qu'il existe des dizaines de plugins différents, mais le plus souvent, vous rencontrez des gens avec iTunes sur vos iPhones et installé QuickTime. J'ai parcouru la liste des fonctionnalités de QuickTime et je me suis demandé comment le visser sur mon serveur réseau frauduleux afin de forcer les gens à s'authentifier en entrant leur nom d'utilisateur et leur mot de passe.
Nous avons réfléchi un peu et décidé que vous pouvez insérer une liste de lecture dans le chemin réseau UNC, puis les utilisateurs s'authentifieront automatiquement et contourneront le contexte de sécurité local. Nous devons travailler un peu plus sur les deux autres plugins, mais pour l'instant, QuickTime fait un excellent travail de notre tâche.
Une autre façon de forcer les gens à s'authentifier automatiquement sur notre serveur est par e-mail. Certaines personnes savent que dans Outlook, vous pouvez utiliser des e-mails HTML ou des e-mails utilisant un modèle HTML. Si nous avons une ressource réseau partagée, nous pouvons l'insérer dans un tel e-mail, et si l'utilisateur ouvre cet e-mail, il se connectera automatiquement à cette ressource et l'authentifiera.
Pour nos besoins, vous pouvez utiliser des fichiers au format .docs. Tout document peut être utilisé de la même manière qu'une image ou un fichier HTML inséré dans un UNC, dont l'ouverture se connectera automatiquement à un partage réseau.
N'oubliez pas le fichier desktop.ini. Ce n'est pas trop connu, mais vous pouvez générer ce fichier pour installer des ressources de bureau telles que des icônes et des fonds d'écran, et le placer dans un dossier «partagé». Dans ce cas, encore une fois, le système se connectera automatiquement pour recevoir ces icônes et «se connecter» à l'aide du compte d'utilisateur actuel.

De la même manière, vous pouvez modifier les paramètres du fichier de raccourci avec l'extension .lnk pour vous connecter automatiquement à la ressource.
Ainsi, notre outil crée rapidement et facilement automatiquement ces fichiers .ini ou HTML.
La dernière chose dont je veux parler est le MITM, ou "l'homme au milieu". Vous pouvez rediriger les demandes d'authentification NTLM ou incorporer du contenu HTML dans les pages, comme l'outil ne le fait pas, et ainsi l'aider à faire son travail. De cette façon, vous pouvez forcer les clients à se connecter à un serveur frauduleux afin d'implémenter le relais NTLM. Il existe d'autres outils qui vous permettent d'effectuer le relais NTLM via SMB ou HTTP et forcent les utilisateurs à s'authentifier pour vous.
Une autre fonctionnalité intéressante de Squirtle est la possibilité d'en faire un point de départ pour la création de demandes d'API, où vous pouvez utiliser n'importe quel outil que vous avez écrit pour recevoir des messages de type 2 et 3. Le message de type 3 est la dernière demande d'authentification, vous devez envoyer un message d'API pour le recevoir. Tapez 2 et récupérez-le. J'ai rapidement écrit une API qui vous permet d'utiliser n'importe quel ensemble d'outils que vous souhaitez, vous pouvez modifier le code source et utiliser des serveurs frauduleux pour vous connecter, etc.
Cependant, si vous êtes un pentester ou testez des utilisateurs, vous avez besoin de relations, d'une interaction inverse. Par conséquent, notre outil comprend un ensemble de règles. J'ai déjà dit que tous les outils existants envoient des utilisateurs à la même source, et nous devons déterminer qui sont ces utilisateurs. Je voulais le faire en un seul clic pour que, comme je l'ai dit, il soit possible d'obtenir l'autorisation d'un administrateur de domaine en 60 secondes.
J'ai écrit dans nos règles d'application basées sur le fait que les utilisateurs appartiennent à des groupes et que les objectifs appartiennent à des groupes d'objectifs.
Dès que nous découvrons que l'utilisateur appartient à un groupe et peut accéder à quelque chose avec une connexion automatique, nous n'avons pas besoin de le forcer à se connecter, à attendre et à espérer qu'il reviendra. Nous avons mis en place une règle simple, plus tard, je vais le montrer dans l'interface utilisateur que si un utilisateur entre dans le groupe X, un certain module Y est utilisé pour effectuer l'action Z par rapport aux groupes cibles T. Après quelques secondes, je montrerai comment cela fonctionne.
Les règles consistent également à vérifier immédiatement les demandes d'API, à vérifier les règles générales et à les répéter jusqu'à ce qu'un timeout se produise. Dès que le délai d'expiration se produit, vous devez répondre avec un appel statique et maintenir l'état d'authentification, ne permettant pas à l'utilisateur de se déconnecter.
Nous pouvons utiliser SMB pour se connecter à SMB, HTTP pour se connecter à HTTP, HTTP pour se connecter à SMB, etc., en mettant en œuvre le relais NTLM. Le problème est que les gens n'utilisent pratiquement pas beaucoup d'autres protocoles, j'ai donc décidé d'examiner de plus près les protocoles tels que LDAP et MSSQL.
Je parlerai de LDAP un peu plus tard, mais pour l'instant je remarquerai que MSSQL est une bonne chose, car nous pouvons obtenir une base de données, nous pouvons accéder aux données, et c'est incroyable.

Puisque nous traitons avec des clients, nous voulons que les actions soient effectuées automatiquement immédiatement après la connexion. Par conséquent, nous avons répertorié les utilisateurs et les groupes utilisant Metasploit, qui a été présenté lors de la conférence BlackHat de cette année. Ainsi, en tant que pentester, j'ai eu accès à des fichiers partagés, j'ai eu la possibilité d'exécuter des commandes et j'ai pris possession d'informations sur les utilisateurs et les groupes cibles, sans privilèges d'administrateur. Cependant, avec tout cela, je ne peux pas me connecter aux contrôleurs de domaine. La raison en est que, par défaut, la plupart des contrôleurs de domaine ont une signature SMB. Pour ceux qui ne connaissent pas la signature SMB, je dirai qu'il s'agit du mécanisme de sécurité du protocole SMB, également appelé signatures de sécurité. Il utilise le hachage NTLM d'origine pour signer la session et signe chaque paquet, et s'il n'y a pas de signature, il vous déconnecte. Par conséquent, par défaut, nous ne pouvons pas appliquer le relais NTLM à un contrôleur de domaine. Cela m'a énervé, alors j'ai décidé de découvrir à quel point il était facile et rapide d'accéder à ce contrôleur. Revenons quelques diapositives.

Il s'est avéré que LDAP est activé par défaut dans le contrôleur de domaine, ce qui permet d'utiliser l'authentification NTLM, ce qui est génial. Mais nous n'avons pas pu modifier le mot de passe, car, en règle générale, la modification du mot de passe ou l'ajout d'un utilisateur nécessite SSL et SSL est inclus dans LDAP si le domaine possède un certificat CA. Ce que nous avons fait, c'est entrer dans notre outil que vous pouvez modifier les mots de passe des utilisateurs, exclure et ajouter des utilisateurs, répertorier les domaines, extraire les hachages d'utilisateurs actifs de la mémoire, vous connecter au contrôle de domaine et faire d'autres choses intéressantes. La chose intéressante est que vous pouvez ajouter des utilisateurs à des groupes sans SSL et autres choses, donc en tant que pentester, vous pouvez prendre et connecter les comptes d'autres utilisateurs, les ajouter au groupe d'administrateurs de domaine si vous avez des privilèges d'administrateur, etc., etc.
Revenons à SMB. Pendant mon vol de 4 heures ici depuis Chicago, j'ai pensé à utiliser le proxy SMB SOCKS pour nos besoins. Quiconque le sait sait que ce protocole permet aux applications de communiquer via un pare-feu qui bloque une connexion directe à l'aide d'un serveur intermédiaire auquel les deux clients peuvent se connecter. Autrement dit, le proxy SOCKS envoie des données propres d'un client à un autre et vice versa. Ainsi, ce proxy peut remplacer les paquets NTLM par des données relayées.

En utilisant HTTP, nous pouvons lier des serveurs SharePoint à des sites Web internes. Certaines personnes pensent qu'il n'y aura pas de problème avec NTLM car vous êtes sur un réseau interne, mais qu'en est-il des réseaux externes? Il y a aussi parfois des serveurs SharePoint, mais pas trop souvent. Je pensais que de nombreuses organisations sont ouvertes à l'accès externe, prennent en charge NTLM et permettent l'échange de services Web. Pour ceux qui ne connaissent pas les services Web Exchange (EWS), je dirai qu'il s'agit d'une sorte d'API HTTP, qui sont généralement situées sur le même serveur qu'Outlook Web Access. Par défaut, ils utilisent la méthode d'authentification HTTP Negotiate, qui prend en charge NTLM, afin que nous puissions faire un relais HTTP externe au service situé dans EWS.
Cela est troublant, car de l'extérieur, vous pouvez accéder à votre correspondance, vos contacts, votre calendrier des événements et définir vos propres règles de courrier électronique à l'aide des points de connexion HotSpot. Vous pouvez accéder au serveur EWS via Internet s'ils n'ont pas de règles de pare-feu pour les connexions sortantes qui ne vous permettent pas de vous connecter à un serveur SMB frauduleux et de recevoir automatiquement une authentification. Et tout cela est possible grâce au fait que tout le monde a un téléphone mobile connecté aux services EWS et synchronisé avec eux.
Et maintenant, j'ai besoin d'un verre, car dans cet endroit, je voulais commencer une démo. Donc, cette diapositive montre à quoi ressemble l'interface graphique de mon application ZackAttack. Je vais faire défiler la page juste en dessous pour voir les paramètres des actions, des objectifs, des groupes cibles et des groupes d'utilisateurs.

Vous pouvez ainsi vous faire une idée de sa fonctionnalité et de sa puissance. Un serveur HTTP frauduleux, un serveur SMB frauduleux et un serveur HTTP de gestion fonctionnent actuellement. La diapositive montre en outre dans quels groupes se trouvent les utilisateurs.

Il indique qui et quand est connecté au réseau, afin que vous puissiez voir quel utilisateur s'est reconnecté.

À droite, les comptes système et les comptes des utilisateurs existants sont affichés en rouge, d'où vous pouvez répertorier les objectifs via SMB en un seul clic, recevoir des messages des services Web Exchange, utiliser le shell de commande si vous êtes administrateur de session, accéder aux fichiers partagés, SharePoint, etc.

Comme je l'ai dit, nous pouvons créer des règles et nous pouvons ajouter des utilisateurs à des groupes par énumération automatique ou en créant manuellement des groupes, par exemple, en créant un groupe appelé «moo».

Quelque chose que je ne peux pas faire, comme je l'ai dit, les dieux démo ne m'aiment pas. Nous devrons revenir en arrière et modifier quelque chose dans le programme.

Désolé les gars, mais ce n'est qu'une version alpha, j'ai écrit ce code seul en 3 semaines. Maintenant, je vais ajouter un groupe appelé "yar", maintenant vous voyez que ces deux groupes sont apparus en bas, dans lequel l'utilisateur sélectionné a été ajouté.

Comme je l'ai dit, nous pouvons également répertorier divers groupes d'utilisateurs à partir du contrôleur de domaine, il s'agit de l'onglet «Groupes d'utilisateurs» et créer des règles d'authentification automatique en utilisant l'onglet «Règles d'attaque» - «Règles d'attaque».
Vous voyez ici les utilisateurs du groupe Yar nouvellement créé qui peuvent être connectés aux services Web Exchange à des fins spécifiques des groupes cibles, et ici vous pouvez également ajouter n'importe quelle adresse IP, par exemple, 10.1.10.250 au groupe cible.

Dès qu'une demande d'authentification est reçue de quelqu'un du groupe d'utilisateurs, nous nous connectons automatiquement au serveur Web intégré et retirons toutes les lettres de la boîte de réception, du dossier Brouillons, nous pouvons facilement ajouter un autre dossier, par exemple, Éléments envoyés.

La meilleure partie de cet outil est qu'après l'authentification, la session est maintenue ouverte pendant toute la connexion au serveur frauduleux et toutes ces actions sont effectuées. Ainsi, nous n'avons pas besoin de nous authentifier à nouveau pour recevoir les e-mails entrants.
Comme nous avons 30 demandes provenant du système, nous pouvons d'abord établir environ 30 règles, puis effectuer diverses actions dans cette connexion particulière. Comme je l'ai dit, nous pouvons répéter toutes ces étapes pour tous les utilisateurs et à toutes fins de cette connexion ou à des fins spécifiques.
Dans le même temps, nous pouvons générer une charge utile en cliquant sur l'onglet Auth Payloads. À partir de là , vous pouvez créer des fichiers HTML pour déterminer l'OC de l'utilisateur et utiliser l'une des 3 méthodes pour forcer le navigateur à s'authentifier automatiquement.

Ici, vous pouvez créer desktop.ini pour télécharger des fichiers dans des dossiers partagés et utiliser le générateur de fichiers pour injecter UNC Path dans un fichier xml .doc, créer des raccourcis .lnk et archiver des fichiers Zip, tout comme créer automatiquement des fichiers courrier XTML. Tout cela est aussi simple que possible à l'aide de Firesheep et du relais NTLM.
Enfin, via l'onglet Résultats + journaux, mon outil suit les hachages utilisateur comme il le faisait avant l'authentification statique, et vous pouvez donc essayer de casser les mots de passe.

Il s'agissait donc d'une démonstration des capacités de ZackAttack. Alors, comment pouvons-nous nous protéger de cela? La défense est de limiter la surface d'attaque.

Chacun a ses propres méthodes de défense contre des attaques de ce type. Les gens suggèrent d'utiliser NTLM version 2. Mon outil prend en charge cette version, mais il n'y a pas de différence significative entre la version 2 et la version 1.
Vous pouvez installer un pare-feu sur le port sortant 445, qui vous protégera de toute personne envoyant des charges utiles frauduleuses qui forceraient l'authentification automatique. Cependant, cela ne protège pas contre la pénétration à travers les appareils mobiles.
Vous pouvez configurer des stratégies de groupe pour restreindre l'utilisation des programmes GPO dans Windows 7 afin de limiter les objectifs de l'authentification NTLM. Tout le monde prétend que la meilleure solution est Kerberos. Cependant, le problème est que l'organisation devra tout basculer vers Kerberos, et cela ne fonctionnera pas, car il y a beaucoup de choses qui ne prennent pas en charge Kerberos. Une autre chose est que si vous activez Kerberos, vous ne pourrez pas du tout prendre en charge NTLM, il en va de même pour la signature, car pour ceux que vous ne connaissez pas, vous devrez signer chaque package avec un hachage de mot de passe d'origine. Signature LDAP, signatures SMB, authentification HTTP avancée - tout cela n'est pas pris en charge par Cerberus, donc les gens se trompent en pensant que les signatures vont résoudre tous les problèmes. Si vous appliquez des signatures obligatoires, cela peut désactiver de nombreuses choses.
Par conséquent, pour protéger l'organisation, vous devez maintenir un certain équilibre. Si vous êtes un utilisateur final, vous ne vous inquiétez généralement pas de telles choses, mais si vous êtes administrateur système d'une entreprise, le plus gros problème pour vous sera la nécessité de refuser d'utiliser NTLM.
Étant donné que Windows 8 et Windows 2012 prennent toujours en charge NTLM par défaut, il faudra un certain temps pour y renoncer et passer à l'utilisation de Kerberos, et j'espère que mon outil vous aidera. Il sera publié le mardi 31 juillet dès mon retour à la maison sur
zfasel.com/tools . Il est également disponible sur le DVD de cette conférence, ainsi que mes diapositives. Si vous voulez me dire à quel point mes performances et ma démo étaient nulles, envoyez des e-mails à dc20@zfasel.com ou recherchez sur Twitter mon surnom @zfasel.
Merci de rester avec nous. Aimez-vous nos articles? Vous voulez voir des matériaux plus intéressants? Soutenez-nous en passant une commande ou en le recommandant à vos amis, une
réduction de 30% pour les utilisateurs Habr sur un analogue unique de serveurs d'entrée de gamme que nous avons inventés pour vous: Toute la vérité sur VPS (KVM) E5-2650 v4 (6 cœurs) 10 Go DDR4 240 Go SSD 1 Gbps à partir de 20 $ ou comment diviser le serveur? (les options sont disponibles avec RAID1 et RAID10, jusqu'à 24 cœurs et jusqu'à 40 Go de DDR4).
VPS (KVM) E5-2650 v4 (6 cœurs) 10 Go DDR4 240 Go SSD 1 Gbit / s jusqu'au printemps gratuitement lors du paiement pendant
six mois, vous pouvez commander
ici .
Dell R730xd 2 fois moins cher? Nous avons seulement
2 x Intel Dodeca-Core Xeon E5-2650v4 128 Go DDR4 6x480 Go SSD 1 Gbps 100 TV à partir de 249 $ aux Pays-Bas et aux États-Unis! Pour en savoir plus sur la
création d'un bâtiment d'infrastructure. classe utilisant des serveurs Dell R730xd E5-2650 v4 coûtant 9 000 euros pour un sou?