CVE-2023-23397 Hashes to hashes

Met CVE-2023-23397 kan een aanvaller een e-mail versturen met een schadelijke payload, bijv. een UNC-locatie onder controle van de aanvaller, die ervoor zorgt dat de Outlook-client van het slachtoffer automatisch verbinding maakt om daar de wachtwoordhash van de Net-NTLMv2-gebruiker te plaatsen. Wachtwoordhashing gebruikt iedereen dagelijks; Bij het aanmelden op een systeem wordt je ingegeven password 'gehashed' en vergeleken met de hash van je password dat het systeem al heeft. Als dat matched krijg je toegang tot het systeem. En daarna wordt deze hash gebruikt voor authorisatie van handelingen, zodat je niet steeds je wachtwoord hoeft op te geven. Als iemand die hash heeft kan hij deze dus gebruiken om oneigenlijk toegang te krijgen tot systemen als de gebruiker waar de hash van is.

Met wachtwoordhashing verandert je wachtwoord (of andere gegevens) in een korte reeks letters en/of cijfers met behulp van een versleutelingsalgoritme, bijv. MD5 of SHA256. Normaliter worden deze hashes in files gestopt.

Het password "helloworld" wordt met MD5 deze hash: fc5e038d38a57032085441e7fe7010b0

Het password "hell0world" wordt met MD5 deze hash: 0a123b92f789055b946659e816834465

Het gevaarlijke aan dit lek, is dat er geen enige interactie van gebruikers voor is vereist. Alleen het versturen van een e-mail is voldoende. Het malafide bericht hoeft ook niet in het voorbeeldvenster te worden geladen, zodra de e-mail door de Outlook-client wordt verwerkt is diefstal van de Net-NTLMv2-hash mogelijk. Vervolgens kan de aanvaller deze hash gebruiken om zich bij andere diensten als het slachtoffer te authenticeren.

Het probleem, aangeduid als CVE-2023-23397, is aanwezig in alle ondersteunde versies van Microsoft Outlook voor Windows. Andere versies zijn niet kwetsbaar. Microsoft heeft beveiligingsupdates voor de kritieke kwetsbaarheid uitgebracht, die op een schaal van 1 tot en met 10 beoordeeld is met een 9.8. Het gaat hier om een "Elevation of Privilege" kwetsbaarheid. Dergelijke beveiligingslekken worden meestal niet als kritiek bestempeld, maar dit is nu wel het geval.

Door de malafide e-mail kan de aanvaller het slachtoffer bij zijn server laten inloggen, waarbij de hash wordt verstuurd, die vervolgens kan worden onderschept. Daarbij maakt het niet uit of het slachtoffer bijvoorbeeld het laden van remote images heeft uitgeschakeld. De kwetsbaarheid werd ontdekt door het Computer Emergency Response Team van Oekraïne, Microsoft Incident Response en Microsoft Threat Intelligence. Volgens Microsoft is de kwetsbaarheid door een vanuit Rusland opererende groep gebruikt. Microsoft heeft een script beschikbaar gemaakt waarmee beheerders kunnen controleren of ze via de kwetsbaarheid zijn aangevallen.

De te ondernemen akties zijn:

1. Mailflow naar binnen tijdelijk onderbreken.

2. Outlook sluiten en overschakelen op webmail.

3. Outlook patchen via geleverde patch, middels Windows Updates, handmatig of bijv. via een start-up script.

4. Firewall aanpassen, voor zover nog niet gedaan, om UNC paden naar buiten en binnen tegen te gaan én het SMB protocol dat hiervoor gebruikt wordt, naar buiten te blokkeren.

4. Dekking van de patch controleren.

5. Mailflow naar binnen weer herstellen. 

6. Mailserver scannen met een door Microsoft geleverd script CVE-2023-23397.ps1

Script prerequisites

Het script moet gedraaid worden op een mailserver zelf. Het praat tegen Exchange Web Services(EWS) om user mailboxen te controleren of er mails inzitten met een UNC pad erin. Een UNC pad ziet eruit als \\hostname\sharename\filename een internationale standaard. Het is op zich niet vreemd dat er een UNC pad in een e-mail staat, het komt alleen niet vaak voor. 

Eerst dient er een role group gemaakt te worden zodat het account waarmee je het script gaat draaien de ApplicationImpersonation role krijgt.

New-RoleGroup -Name "CVE-2023-23397-Script" -Roles "ApplicationImpersonation" -Description "Permission to run the CVE-2023-23397 script"

Aan deze role group moet het account dat het script draait worden toegevoegd. Daarnaast moet het account dat het script draait Global Admin zijn én Exchange Organizational Management role hebben.

Script draaien

Start een Powershell shell als administrator, navigeer naar de folder waar het script staat. Vervolgens moet je de volgende oneliner gebruiken. 

Get-Mailbox -ResultSize Unlimited | .\CVE-2023-23397.ps1 -Environment Onprem -EWSServerURL https://127.0.0.1/EWS/Exchange.asmx -IgnoreCertificateMismatch

De "Get-mailbox" haalt alle user mailboxes op van de organisatie. Daarna worden deze aan het script gegeven. Deze heeft als parameters staan dat het om "onprem" Exchange gaat. Om gedoe met certificaten te voorkomen geef je het EWSServerURL mee als https://127.0.0.1/EWS/Exchange.asmx met de parameter "-IgnoreCertificateMismatch"

Vervolgens begint het script alle user mailboxen te scannen, dit duurt best lang want het gaat stuk voor stuk. De output naar het scherm laat dit zien. Het eindresultaat is een CSV bestand met mails waarin een UNC pad gebruikt is. Dit wil dus niet zeggen dat er iets kwalijks binnen is gekomen, alleen dat dit nagekeken dient te worden.

Zo. Op naar het volgende lek.


Reacties

Populaire posts van deze blog

It's alive!

Do it your way

Never gonna load you up, never gonna load you down