Device code phishing: inloggen op een echte Microsoft-pagina en toch gehackt
De klassieke phishing-tip is: kijk goed naar de adresbalk. Staat er echt login.microsoftonline.com? Bij device code phishing helpt die tip niet, want het slachtoffer logt in op de echte inlogpagina van Microsoft, met het echte wachtwoord en de echte MFA-prompt. En toch krijgt de aanvaller toegang.
Wat is de device code flow?
Sommige apparaten hebben geen fatsoenlijk toetsenbord of browser: een smart-tv, een vergaderscherm in de Teams Room, een printer of een commandoregeltool. Daarvoor bestaat de device authorization grant uit OAuth 2.0, beter bekend als de device code flow:
- Het apparaat vraagt een code aan bij Microsoft en toont die op het scherm, bijvoorbeeld
F7KQ-2LMX. - Jij gaat op je telefoon of laptop naar
microsoft.com/deviceloginen vult de code in. - Je logt in met je account en doorloopt MFA.
- Microsoft geeft het apparaat dat de code aanvroeg een toegangstoken. Het apparaat is nu namens jou ingelogd.
Dat is handig en veilig, zolang jij degene bent die het apparaat bedient. Het zwakke punt zit in stap 1: niets controleert of het apparaat dat de code aanvroeg wel van jou is.
Hoe de aanval werkt
Bij device code phishing vraagt de aanvaller zelf een code aan en laat het slachtoffer de rest doen.
- De lokker. De aanvaller benadert het slachtoffer, vaak eerst via WhatsApp, Signal of Teams, en bouwt vertrouwen op. Daarna volgt een uitnodiging voor een Teams-vergadering of een “beveiligd document”.
- De code. In de uitnodiging staat een code met de instructie om die in te vullen op
microsoft.com/deviceloginom deel te nemen. De pagina is echt, het domein klopt, het slotje is groen. - Inloggen. Het slachtoffer vult de code in, logt in en keurt de MFA-prompt goed. Alles ziet er normaal uit.
- De buit. Microsoft geeft de tokens aan het apparaat dat de code aanvroeg: de computer van de aanvaller. Die heeft nu een access token en een refresh token, en daarmee toegang tot mail, OneDrive, Teams en de Graph API. Zonder wachtwoord, en de refresh token blijft lang geldig.
Microsoft beschreef in februari 2025 een campagne van de groep Storm-2372 die precies zo werkte, met nep-vergaderuitnodigingen aan overheden, NGO’s en bedrijven. Na het inbreken doorzochten de aanvallers mailboxen op woorden als password en admin, en verstuurden ze vanuit het overgenomen account nieuwe phishing naar collega’s. In een latere variant registreerden ze zelfs een eigen apparaat in Entra ID, om zo een Primary Refresh Token te bemachtigen en nog langer binnen te blijven.
Waarom MFA hier niet helpt
MFA beschermt het inloggen. Bij deze aanval logt de echte gebruiker in, dus MFA slaagt gewoon. Het probleem zit erna: het token gaat naar het verkeerde apparaat. Zelfs phishingbestendige methoden zoals een FIDO2-sleutel of Windows Hello houden dit niet tegen, want de gebruiker logt op de legitieme pagina in.
De enige echte tijdsdruk voor de aanvaller: een device code is maar ongeveer 15 minuten geldig. Daarom sturen nieuwere phishingkits geen vaste code mee, maar genereren ze op het moment dat het slachtoffer op de link klikt een verse code.
Zo zet je het dicht
1. Blokkeer de device code flow met Conditional Access. In Microsoft Entra kun je bij Conditional Access de voorwaarde Authentication flows gebruiken. Maak een beleid dat Device code flow blokkeert voor alle gebruikers. Dit is de belangrijkste maatregel. De meeste organisaties hebben deze flow niet nodig.
2. Maak uitzonderingen klein en gericht. Gebruik je wel apparaten die de flow nodig hebben, zoals vergaderruimtes, dan sluit je alleen die accounts uit van het blokbeleid. Beperk hun toegang verder, bijvoorbeeld tot bekende locaties of netwerken.
3. Beperk wie apparaten mag registreren. Zet in Entra ID de registratie en join van apparaten dicht voor gewone gebruikers, of vereis daarbij MFA. Dan kan een aanvaller met een gestolen token niet zomaar een eigen apparaat toevoegen.
4. Monitor op device code-aanmeldingen. In de aanmeldlogboeken van Entra is het authenticatieprotocol zichtbaar. Een device code-aanmelding van een gebruiker die zo’n apparaat nooit gebruikt, is een sterk signaal. Zet er een melding op in je SIEM of in Defender.
5. Weet hoe je reageert.
Wachtwoord resetten is niet genoeg, want de aanvaller heeft tokens, geen wachtwoord. Trek bij een vermoedelijke compromittering de sessies in (Revoke sessions in Entra, of revokeSignInSessions via Graph), controleer of er nieuwe apparaten zijn geregistreerd en kijk naar inbox-regels die de aanvaller kan hebben aangemaakt.
6. Vertel het je gebruikers. De boodschap is simpel: voer nooit een code in die iemand anders je stuurt. Een echte Teams-vergadering vraagt je nooit om een code in te vullen op een Microsoft-pagina. Alleen als je zelf een apparaat voor je neus hebt dat om een code vraagt, is het legitiem.