Phishing-simulatieprogramma's In Microsoft 365

💼 Management Samenvatting

Phishing-simulatieprogramma's zijn een essentieel onderdeel van effectieve security awareness binnen Microsoft 365. Door medewerkers regelmatig bloot te stellen aan realistische maar veilige phishing-scenario's, leren zij verdachte e-mails te herkennen en ontwikkelen zij automatismen die helpen bij het voorkomen van echte aanvallen.

Aanbeveling
IMPLEMENT
Risico zonder
High
Risk Score
9/10
Implementatie
72u (tech: 24u)
Van toepassing op:
M365
Microsoft Defender for Office 365
Exchange Online
Microsoft Teams

Phishing blijft de meest gebruikte aanvalsmethode tegen Nederlandse organisaties, met meer dan 90% van alle succesvolle cyberaanvallen die beginnen met een phishing-e-mail. Medewerkers vormen daarmee de eerste verdedigingslinie, maar zonder training en oefening blijkt deze linie vaak kwetsbaar. Een eenmalige training over phishing herkenning heeft beperkt effect omdat kennis wegzakt zonder herhaalde oefening. Phishing-simulatieprogramma's lossen dit op door medewerkers regelmatig te confronteren met verschillende typen phishing-scenario's in een gecontroleerde omgeving. Wanneer een medewerker op een gesimuleerde phishing-link klikt of bijlagen opent, volgt direct educatieve feedback in plaats van een echte security incident. Deze aanpak helpt medewerkers om automatisch te letten op signalen zoals verdachte afzenders, ongebruikelijke taal, urgente verzoeken om actie en verdachte links. Voor Nederlandse overheidsorganisaties is het implementeren van phishing-simulatieprogramma's bovendien essentieel voor naleving van BIO-, AVG- en NIS2-vereisten rondom bewustmaking en training van medewerkers. Binnen Microsoft 365 kan Microsoft Defender for Office 365 worden gebruikt voor het uitvoeren van gestructureerde phishing-simulaties, maar ook aanvullende tools kunnen worden geïntegreerd voor geavanceerde scenario's en gedetailleerde rapportages.

PowerShell Modules Vereist
Primary API: Microsoft 365 Defender Portal
Connection: Microsoft Graph PowerShell
Required Modules: Microsoft.Graph.Identity.SignIns

Implementatie

Een phishing-simulatieprogramma in Microsoft 365 is een gepland, herhaald en meetbaar programma waarin medewerkers worden blootgesteld aan gesimuleerde phishing-e-mails die lijken op echte aanvallen. Het programma begint met een baseline-meting om het huidige risiconiveau in kaart te brengen, gevolgd door regelmatige campagnes met verschillende phishing-typen zoals spear phishing, CEO-fraude, business email compromise en credential harvesting. Elke simulatie wordt vooraf gecommuniceerd aan medewerkers dat er periodiek simulaties plaatsvinden, maar zonder te verklappen wanneer precies. Medewerkers die op een gesimuleerde phishing-link klikken of een bijlage openen, worden doorgestuurd naar een educatieve landingspagina die uitlegt welke signalen hadden kunnen wijzen op phishing en hoe men in de toekomst anders kan handelen. Deze feedback is respectvol en leerzaam, niet bestraffend, omdat het doel is om gedrag te veranderen en niet om medewerkers te veroordelen. De resultaten van elke simulatie worden vastgelegd in rapportages die trends over tijd laten zien, zoals dalende klikpercentages, stijgende meldingscijfers en verbeterde reactietijden. Deze data wordt gebruikt om het programma te optimaliseren, gerichte training te organiseren voor teams met verhoogd risico en het management te informeren over de voortgang van het awarenessprogramma.

Ontwerp van een effectief phishing-simulatieprogramma

Het ontwerp van een effectief phishing-simulatieprogramma begint met het vaststellen van duidelijke doelstellingen en succescriteria. Bepaal wat u wilt bereiken: is het primaire doel om medewerkers bewust te maken van verschillende phishing-typen, om het algemene klikpercentage te verlagen, om het aantal meldingen van verdachte berichten te verhogen, of om te voldoen aan compliance-vereisten? Deze doelstellingen bepalen de scope, frequentie en complexiteit van de simulaties. Voor Nederlandse overheidsorganisaties is het verstandig om te starten met een baseline-meting waarin alle medewerkers worden blootgesteld aan een standaard phishing-scenario om het uitgangsniveau te bepalen. Op basis van deze baseline kunnen realistische doelstellingen worden geformuleerd, bijvoorbeeld een daling van het klikpercentage van 25% naar onder de 10% binnen een jaar, of een stijging van het meldingspercentage van 15% naar boven de 40%. Deze doelstellingen moeten worden gecommuniceerd met het management en gekoppeld worden aan het bredere security awareness-programma van de organisatie.

Vervolgens wordt een campagnestrategie ontwikkeld die de verschillende typen phishing-scenario's, de planning en de communicatie beschrijft. Het programma moet modulair zijn opgebouwd, beginnend met relatief eenvoudige phishing-scenario's waarbij de signalen duidelijk zichtbaar zijn, zoals verdachte afzendernamen, spellingsfouten of onrealistische verzoeken. Naarmate medewerkers beter worden in het herkennen van deze basisscenario's, kunnen de simulaties geleidelijk complexer worden met meer geavanceerde technieken zoals spear phishing, waarbij de e-mail persoonlijker is en gebaseerd op openbaar beschikbare informatie, of CEO-fraude waarbij aanvallers zich voordoen als leidinggevenden. Binnen Microsoft 365 kan Microsoft Defender for Office 365 Attack simulation training worden gebruikt voor het uitvoeren van simulaties, waarbij verschillende templates beschikbaar zijn voor verschillende scenario's zoals credential harvesting, malware in bijlagen, drive-by download en phishing-link. Het programma moet bovendien rekening houden met de timing van simulaties: te frequente simulaties leiden tot vermoeidheid en afname van aandacht, terwijl te weinig simulaties onvoldoende oefening bieden. Een praktische aanpak is om maandelijks een organisatiebrede simulatie uit te voeren, aangevuld met gerichte simulaties voor specifieke doelgroepen of afdelingen die uit eerdere resultaten blijken extra aandacht nodig te hebben.

Een cruciale succesfactor in het ontwerp van een phishing-simulatieprogramma is de communicatie en transparantie naar medewerkers. Hoewel het belangrijk is dat medewerkers niet weten wanneer precies een simulatie plaatsvindt om realistische resultaten te krijgen, moeten zij wel op de hoogte zijn van het bestaan van het programma en het doel ervan begrijpen. Dit voorkomt verwarring, frustratie en wantrouwen. In de communicatie moet worden benadrukt dat simulaties onderdeel zijn van een leerprogramma en niet bedoeld zijn om medewerkers te 'pakken', maar om hen te helpen hun vaardigheden te verbeteren. Het is ook belangrijk om duidelijk te maken dat het klikken op een gesimuleerde phishing-link geen negatieve gevolgen heeft voor de medewerker, maar juist een leermoment creëert. Binnen Microsoft 365 kan deze communicatie worden ondersteund via een centrale SharePoint-site of Teams-kanaal waar informatie wordt gedeeld over het programma, veelgestelde vragen worden beantwoord en successen worden gevierd. Door medewerkers te betrekken bij het programma en hun feedback te vragen, ontstaat meer draagvlak en wordt het programma gezien als een ondersteunend instrument in plaats van een controlemechanisme.

Het programma moet bovendien duidelijke rollen en verantwoordelijkheden vastleggen voor het beheer, de uitvoering en de evaluatie van simulaties. Meestal is de CISO of security awareness-coördinator eigenaar van het programma en verantwoordelijk voor de planning en strategie. De uitvoering kan worden gedaan door het securityteam of een gespecialiseerde afdeling, waarbij Microsoft 365-beheerders de technische configuratie verzorgen en communicatie- of HR-afdelingen zorgen voor de interne communicatie. Voor de evaluatie en rapportage is het belangrijk om een vaste cyclus te hanteren waarin resultaten worden geanalyseerd, trends worden geïdentificeerd en bijsturingen worden voorgesteld. Deze resultaten moeten periodiek worden gedeeld met het management, zodat zij inzicht hebben in de effectiviteit van het programma en kunnen beslissen over eventuele investeringen in aanvullende training of tools. Door het programma op deze manier te structureren, ontstaat een professioneel en duurzaam programma dat aantoonbaar bijdraagt aan de beveiliging van de organisatie en voldoet aan de eisen van toezichthouders en auditors.

Implementatie in Microsoft 365 met Defender for Office 365

De technische implementatie van een phishing-simulatieprogramma in Microsoft 365 begint met het inschakelen en configureren van Microsoft Defender for Office 365 Attack simulation training. Dit onderdeel van Microsoft 365 Defender biedt een geïntegreerde oplossing voor het uitvoeren van phishing-simulaties zonder dat aanvullende tools nodig zijn. Om gebruik te kunnen maken van deze functionaliteit moet de organisatie beschikken over Microsoft Defender for Office 365 Plan 2 of Microsoft 365 E5 licenties. Na activering kan in de Microsoft 365 Defender-portal een nieuwe campagne worden aangemaakt waarbij verschillende phishing-templates beschikbaar zijn, zoals credential harvesting waarbij gebruikers worden verleid om hun inloggegevens in te voeren op een nagemaakte website, malware in bijlagen waarbij gebruikers worden gevraagd om bijlagen te openen, of phishing via link waarbij gebruikers op een verdachte link moeten klikken. Voor elke campagne kan worden gekozen welke gebruikers of groepen worden getarget, bijvoorbeeld alle medewerkers, specifieke afdelingen of gebruikers met een bepaalde rol.

Na het selecteren van een template en doelgroep kan de simulatie verder worden aangepast door de timing in te stellen, bijvoorbeeld wanneer de e-mail moet worden verstuurd, en door de landingspagina en educatieve content te personaliseren. De landingspagina is cruciaal omdat dit het eerste contactpunt is met medewerkers die op een gesimuleerde link hebben geklikt. Deze pagina moet duidelijk uitleggen dat het om een simulatie gaat, welke signalen hadden kunnen wijzen op phishing en wat de medewerker de volgende keer kan doen om phishing te herkennen. Microsoft biedt standaard templates voor deze landingspagina's, maar deze kunnen worden aangepast met organisatie-specifieke informatie, huisstijl en aanvullende links naar trainingen of handleidingen. Het is belangrijk om de toon van de landingspagina respectvol en ondersteunend te houden, zodat medewerkers niet worden ontmoedigd maar juist gemotiveerd worden om te leren. Naast de landingspagina kan ook aanvullende educatieve content worden toegevoegd, zoals korte video's, infographics of links naar uitgebreidere trainingen over phishing-herkenning.

Gebruik PowerShell-script phishing-simulation-programs.ps1 (functie Invoke-SimulationCampaign) – Ondersteunt het plannen en monitoren van phishing-simulatiecampagnes in Microsoft 365 Defender, inclusief configuratie van doelgroepen en het analyseren van resultaten..

Voor organisaties die meer geavanceerde functionaliteit nodig hebben of aanvullende integraties willen met HR-systemen of learning management systemen, kunnen ook gespecialiseerde phishing-simulatietools worden geïntegreerd naast of in plaats van de native Microsoft-functionaliteit. Deze tools bieden vaak meer flexibiliteit in het ontwerpen van scenario's, gedetailleerdere rapportages en integraties met andere awareness-tools. Ongeacht welke oplossing wordt gebruikt, is het essentieel dat de resultaten van simulaties worden vastgelegd en geanalyseerd. Microsoft Defender for Office 365 biedt uitgebreide rapportages waarin per campagne wordt getoond hoeveel e-mails zijn verstuurd, hoeveel gebruikers op links hebben geklikt, hoeveel bijlagen hebben geopend, hoeveel gebruikers credentials hebben ingevoerd en hoeveel gebruikers verdachte berichten hebben gemeld. Deze data kan worden geëxporteerd voor verdere analyse en kan worden gebruikt om trends over tijd te identificeren, bijvoorbeeld of het klikpercentage daalt naarmate medewerkers meer ervaring krijgen met simulaties, of welke afdelingen of doelgroepen extra aandacht nodig hebben.

Monitoring, rapportage en continue verbetering

Effectieve monitoring van een phishing-simulatieprogramma vereist een combinatie van kwantitatieve metrics en kwalitatieve feedback. De belangrijkste kwantitatieve indicatoren zijn het klikpercentage (het percentage medewerkers dat op een gesimuleerde phishing-link heeft geklikt), het openpercentage (het percentage medewerkers dat een gesimuleerde bijlage heeft geopend), het credential-entry percentage (het percentage medewerkers dat inloggegevens heeft ingevoerd op een nagemaakte website) en het meldingspercentage (het percentage medewerkers dat een verdacht bericht heeft gemeld aan het securityteam). Deze metrics moeten per campagne worden bijgehouden en over tijd worden geanalyseerd om trends te identificeren. Een dalend klikpercentage en stijgend meldingspercentage wijzen op een effectief programma, terwijl een stabiel of stijgend klikpercentage aangeeft dat het programma moet worden bijgestuurd. Naast deze organisatiebrede metrics is het ook waardevol om metrics per afdeling, functie of locatie te verzamelen, zodat gerichte interventies kunnen worden ingezet voor teams met verhoogd risico.

Kwalitatieve feedback wordt verzameld via evaluatiegesprekken met medewerkers, enquêtes na campagnes en input van leidinggevenden. Deze feedback helpt om te begrijpen waarom medewerkers op bepaalde simulaties klikken, welke scenario's als moeilijk of makkelijk worden ervaren en hoe de communicatie en educatieve content kunnen worden verbeterd. Het is belangrijk om deze feedback serieus te nemen en te gebruiken voor het verbeteren van het programma. Binnen Microsoft 365 kunnen deze gegevens worden gecombineerd in Power BI-dashboards die inzicht geven in de effectiviteit van het programma, trends over tijd en risicoprofielen per organisatieonderdeel. Deze dashboards kunnen worden gedeeld met het management en gebruikt worden tijdens audits om aan te tonen dat de organisatie actief werkt aan het verbeteren van security awareness. Het PowerShell-script dat bij dit artikel hoort, kan worden gebruikt om data uit Microsoft 365 Defender te exporteren, te structureren en te analyseren, zodat trends zichtbaar worden en gerichte acties kunnen worden geformuleerd.

Gebruik PowerShell-script phishing-simulation-programs.ps1 (functie Invoke-Monitoring) – Analyseert de resultaten van phishing-simulatiecampagnes en genereert rapportages met trends, risicoprofielen en aanbevelingen voor verbetering..

Continue verbetering van het phishing-simulatieprogramma betekent dat op basis van de monitoring en feedback regelmatig bijsturingen worden doorgevoerd. Wanneer bepaalde afdelingen of doelgroepen structureel hoger scoren op risicovolle acties, kunnen gerichte interventies worden ingezet zoals aanvullende trainingen, een-op-een gesprekken met leidinggevenden of meer frequente simulaties voor deze specifieke groepen. Ook kunnen nieuwe phishing-scenario's worden ontwikkeld op basis van actuele dreigingen of incidenten die in de praktijk hebben plaatsgevonden binnen de organisatie of sector. Het is belangrijk om het programma dynamisch te houden en aan te passen aan veranderende dreigingen en organisatiebehoeften. Tegelijkertijd moet positieve ontwikkeling worden gevierd en zichtbaar gemaakt, bijvoorbeeld door teams met een sterke daling in klikpercentages of hoge meldingscijfers te benoemen als voorbeeldteams. Door monitoring te verbinden met positieve erkenning en concrete verbeteracties, groeit het phishing-simulatieprogramma van een compliance-activiteit naar een volwassen, datagedreven programma dat aantoonbaar bijdraagt aan de weerbaarheid van de organisatie tegen phishing-aanvallen.

Compliance & Frameworks

Automation

Gebruik het onderstaande PowerShell script om deze security control te monitoren en te implementeren. Het script bevat functies voor zowel monitoring (-Monitoring) als remediation (-Remediation).

PowerShell
<# .SYNOPSIS Phishing Simulation Programs - Campaign Planning and Monitoring .DESCRIPTION Ondersteunt het plannen en monitoren van phishing-simulatiecampagnes binnen Microsoft 365 Defender Attack Simulation Training. Het script helpt bij het analyseren van resultaten, identificeren van trends en genereren van aanbevelingen voor verbetering van het awareness-programma. .NOTES Filename: phishing-simulation-programs.ps1 Author: Nederlandse Baseline voor Veilige Cloud Category: awareness Related JSON: content/m365/awareness/phishing-simulation-programs.json .EXAMPLE .\phishing-simulation-programs.ps1 -Monitoring Analyseert beschikbare simulatiecampagne-resultaten en toont trends en risicoprofielen. .EXAMPLE .\phishing-simulation-programs.ps1 -Remediation -WhatIf Genereert aanbevelingen voor verbetering op basis van campagne-resultaten. .EXAMPLE .\phishing-simulation-programs.ps1 -PlanCampaign -CampaignName "Q1-2025-Baseline" -Template "CredentialHarvest" -WhatIf Toont wat er zou gebeuren bij het plannen van een nieuwe campagne. #> #Requires -Version 5.1 #Requires -Modules Microsoft.Graph.Identity.SignIns [CmdletBinding()] param( [Parameter(Mandatory = $false)] [switch]$Monitoring, [Parameter(Mandatory = $false)] [switch]$Remediation, [Parameter(Mandatory = $false)] [switch]$PlanCampaign, [Parameter(Mandatory = $false)] [switch]$Revert, [Parameter(Mandatory = $false)] [string]$InputFile, [Parameter(Mandatory = $false)] [string]$CampaignName, [Parameter(Mandatory = $false)] [ValidateSet("CredentialHarvest", "MalwareInAttachment", "DriveByUrl", "LinkInAttachment")] [string]$Template, [Parameter(Mandatory = $false)] [switch]$WhatIf ) $ErrorActionPreference = 'Stop' Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "Phishing Simulation Programs" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan function Connect-RequiredServices { <# .SYNOPSIS Controleert en stelt verbindingen met Microsoft Graph in. .DESCRIPTION Verifieert of de benodigde Microsoft Graph modules zijn geïnstalleerd en verbindt indien nodig met de juiste scopes voor Attack Simulation Training. #> try { $requiredModule = Get-Module -Name "Microsoft.Graph.Identity.SignIns" -ListAvailable if (-not $requiredModule) { throw "Microsoft.Graph.Identity.SignIns module niet gevonden. Installeer met: Install-Module Microsoft.Graph.Identity.SignIns" } $context = Get-MgContext -ErrorAction SilentlyContinue if (-not $context) { Write-Host "Verbinding maken met Microsoft Graph..." -ForegroundColor Yellow Connect-MgGraph -Scopes "SecurityEvents.ReadWrite.All", "AttackSimulation.ReadWrite.All" -NoWelcome Write-Host "Verbonden met Microsoft Graph." -ForegroundColor Green } else { Write-Verbose "Al verbonden met Microsoft Graph." } } catch { throw "Kon geen verbinding maken met Microsoft Graph: $($_.Exception.Message)" } } function Read-SimulationMetrics { <# .SYNOPSIS Leest phishing-simulatie statistieken uit een CSV-bestand of haalt ze op via Microsoft Graph. .DESCRIPTION Indien een InputFile is opgegeven, worden gegevens uit CSV gelezen. Anders wordt geprobeerd om data op te halen via Microsoft Graph API. Verwacht CSV-kolommen: - CampaignName (string) - StartDate (date) - EndDate (date) - EmailsSent (int) - UsersClicked (int) - ClickRate (percentage 0-100) - UsersReported (int) - ReportRate (percentage 0-100) - CredentialsEntered (int) #> param( [Parameter(Mandatory = $false)] [string]$Path ) if ($Path -and (Test-Path -Path $Path -PathType Leaf)) { Write-Verbose "Lezen van CSV-bestand: $Path" try { $data = Import-Csv -Path $Path if (-not $data) { throw "Het CSV-bestand '$Path' bevat geen regels." } return $data } catch { throw "Kon het CSV-bestand '$Path' niet lezen: $($_.Exception.Message)" } } else { Write-Host "Geen CSV-bestand opgegeven. Verzamel data handmatig uit Microsoft 365 Defender-portal." -ForegroundColor Yellow Write-Host "Exporteer campagne-resultaten naar CSV met kolommen: CampaignName, StartDate, EndDate, EmailsSent, UsersClicked, ClickRate, UsersReported, ReportRate, CredentialsEntered" -ForegroundColor Yellow throw "InputFile parameter is vereist voor monitoring en analyse." } } function Get-PhishingRiskScore { <# .SYNOPSIS Berekent een risicoscore op basis van phishing-simulatie resultaten. .PARAMETER ClickRate Percentage gebruikers dat op phishing-links heeft geklikt (0-100). .PARAMETER ReportRate Percentage gebruikers dat verdachte berichten heeft gemeld (0-100). .PARAMETER CredentialEntryRate Percentage gebruikers dat credentials heeft ingevoerd (0-100). #> param( [Parameter(Mandatory)] [double]$ClickRate, [Parameter(Mandatory)] [double]$ReportRate, [Parameter(Mandatory)] [double]$CredentialEntryRate ) # Normaliseer componenten $clickScore = [Math]::Min([Math]::Max($ClickRate, 0), 100) / 100 $reportScore = 1 - ([Math]::Min([Math]::Max($ReportRate, 0), 100) / 100) $credentialScore = [Math]::Min([Math]::Max($CredentialEntryRate, 0), 100) / 100 # Weging: klikgedrag en credential entry wegen zwaarder dan meldingspercentage $score = ($clickScore * 0.40) + ($reportScore * 0.25) + ($credentialScore * 0.35) # Schaal naar 0-10 voor leesbaarheid return [Math]::Round($score * 10, 2) } function Invoke-Monitoring { <# .SYNOPSIS Analyseert phishing-simulatie campagne-resultaten en toont trends en risicoprofielen. #> if (-not $InputFile) { throw "Gebruik de parameter -InputFile om een CSV met campagne-resultaten op te geven." } $metrics = Read-SimulationMetrics -Path $InputFile $results = @() foreach ($row in $metrics) { $clickRate = if ($row.ClickRate) { [double]$row.ClickRate } else { if ($row.EmailsSent -gt 0) { ([double]$row.UsersClicked / [double]$row.EmailsSent) * 100 } else { 0 } } $reportRate = if ($row.ReportRate) { [double]$row.ReportRate } else { if ($row.EmailsSent -gt 0) { ([double]$row.UsersReported / [double]$row.EmailsSent) * 100 } else { 0 } } $credentialRate = if ($row.CredentialEntryRate) { [double]$row.CredentialEntryRate } else { if ($row.EmailsSent -gt 0) { ([double]$row.CredentialsEntered / [double]$row.EmailsSent) * 100 } else { 0 } } $score = Get-PhishingRiskScore -ClickRate $clickRate ` -ReportRate $reportRate ` -CredentialEntryRate $credentialRate $classification = if ($score -ge 7) { 'Hoog risico' } elseif ($score -ge 4) { 'Gemiddeld risico' } else { 'Laag risico' } $results += [PSCustomObject]@{ CampaignName = $row.CampaignName StartDate = $row.StartDate ClickRate = [Math]::Round($clickRate, 2) ReportRate = [Math]::Round($reportRate, 2) CredentialEntryRate = [Math]::Round($credentialRate, 2) PhishingRiskScore = $score RiskClassification = $classification } } Write-Host "Samenvatting phishing-simulatie resultaten per campagne:`n" -ForegroundColor Gray $results | Sort-Object StartDate -Descending | Format-Table -AutoSize if ($results.Count -gt 1) { $avgClickRate = ($results.ClickRate | Measure-Object -Average).Average $avgReportRate = ($results.ReportRate | Measure-Object -Average).Average $avgScore = ($results.PhishingRiskScore | Measure-Object -Average).Average Write-Host "`nTrendanalyse:" -ForegroundColor Cyan Write-Host " Gemiddeld klikpercentage: $([Math]::Round($avgClickRate, 2))%" -ForegroundColor Gray Write-Host " Gemiddeld meldingspercentage: $([Math]::Round($avgReportRate, 2))%" -ForegroundColor Gray Write-Host " Gemiddelde Phishing Risk Score: $([Math]::Round($avgScore, 2))" -ForegroundColor Gray # Trend detectie $sortedResults = $results | Sort-Object StartDate if ($sortedResults.Count -ge 2) { $recentClick = $sortedResults[-1].ClickRate $previousClick = $sortedResults[-2].ClickRate if ($recentClick -lt $previousClick) { Write-Host "`n[POSITIEF] Klikpercentage daalt over tijd - programma lijkt effectief." -ForegroundColor Green } elseif ($recentClick -gt $previousClick) { Write-Host "`n[WAARSCHUWING] Klikpercentage stijgt - heroverweeg strategie of verhoog frequentie." -ForegroundColor Yellow } } } $overallScore = if ($results.Count -gt 0) { ($results.PhishingRiskScore | Measure-Object -Average).Average } else { 0 } if ($overallScore -ge 7) { Write-Host "`n[ALERT] Algehele phishing-risicoscores zijn hoog. Versnel het awareness-programma en plan extra campagnes." -ForegroundColor Red exit 1 } elseif ($overallScore -ge 4) { Write-Host "`n[INFO] Gemiddeld risiconiveau. Blijf regelmatig simulaties uitvoeren en stuur gericht bij." -ForegroundColor Yellow exit 0 } else { Write-Host "`n[OK] Phishing-risicoscores zijn relatief laag. Blijf programma borgen en periodiek meten." -ForegroundColor Green exit 0 } } function Invoke-Remediation { <# .SYNOPSIS Genereert aanbevelingen voor verbetering op basis van campagne-resultaten. #> if (-not $InputFile) { throw "Gebruik de parameter -InputFile om een CSV met campagne-resultaten op te geven." } if ($WhatIf) { Write-Host "[WhatIf] Er worden geen wijzigingen doorgevoerd. Alleen aanbevelingen worden gegenereerd." -ForegroundColor Yellow } $metrics = Read-SimulationMetrics -Path $InputFile $latestCampaign = $metrics | Sort-Object -Property {[DateTime]$_.EndDate} -Descending | Select-Object -First 1 if (-not $latestCampaign) { throw "Geen campagne-resultaten gevonden om te analyseren." } $clickRate = if ($latestCampaign.ClickRate) { [double]$latestCampaign.ClickRate } else { if ($latestCampaign.EmailsSent -gt 0) { ([double]$latestCampaign.UsersClicked / [double]$latestCampaign.EmailsSent) * 100 } else { 0 } } $reportRate = if ($latestCampaign.ReportRate) { [double]$latestCampaign.ReportRate } else { if ($latestCampaign.EmailsSent -gt 0) { ([double]$latestCampaign.UsersReported / [double]$latestCampaign.EmailsSent) * 100 } else { 0 } } $recommendations = @() Write-Host "`nAanbevelingen voor verbetering van phishing-simulatieprogramma:`n" -ForegroundColor Cyan if ($clickRate -gt 15) { $recommendations += "[HOOG] Klikpercentage is hoog ($([Math]::Round($clickRate, 2))%). Overweeg:" $recommendations += " - Meer frequente simulaties uitvoeren (bijv. tweewekelijks in plaats van maandelijks)" $recommendations += " - Gerichte training organiseren voor teams met hoogste klikpercentages" $recommendations += " - Landingspagina's verbeteren met meer concrete voorbeelden en visuele signalen" } elseif ($clickRate -gt 10) { $recommendations += "[MIDDEL] Klikpercentage is matig ($([Math]::Round($clickRate, 2))%). Overweeg:" $recommendations += " - Extra phishing-scenario's toevoegen met verschillende moeilijkheidsgraden" $recommendations += " - Feedback en communicatie over simulaties verbeteren" } else { $recommendations += "[GOED] Klikpercentage is acceptabel ($([Math]::Round($clickRate, 2))%). Blijf programma borgen." } if ($reportRate -lt 30) { $recommendations += "" $recommendations += "[VERBETERING] Meldingspercentage is laag ($([Math]::Round($reportRate, 2))%). Overweeg:" $recommendations += " - Communicatie verbeteren over hoe en waar verdachte berichten te melden" $recommendations += " - 'Report phishing'-functionaliteit prominenter maken in Outlook" $recommendations += " - Positieve feedback geven aan medewerkers die wel melden" } $recommendations | ForEach-Object { Write-Host $_ -ForegroundColor $(if ($_ -match '\[HOOG\]') { 'Red' } elseif ($_ -match '\[MIDDEL\]') { 'Yellow' } elseif ($_ -match '\[GOED\]') { 'Green' } else { 'Gray' }) } if (-not $WhatIf) { Write-Host "`nLet op: Implementeer deze aanbevelingen in overleg met het security awareness-team." -ForegroundColor Cyan } } function Invoke-SimulationCampaign { <# .SYNOPSIS Plaatshouder voor het plannen van nieuwe phishing-simulatiecampagnes. .DESCRIPTION Deze functie is bedoeld om te ondersteunen bij het plannen van campagnes. Daadwerkelijke configuratie gebeurt via de Microsoft 365 Defender-portal of Microsoft Graph API calls. #> if (-not $CampaignName) { throw "Gebruik de parameter -CampaignName om een campagne-naam op te geven." } if ($WhatIf) { Write-Host "[WhatIf] Zou volgende campagne plannen:" -ForegroundColor Yellow Write-Host " Campagne-naam: $CampaignName" -ForegroundColor Gray if ($Template) { Write-Host " Template: $Template" -ForegroundColor Gray } Write-Host "`nVoor daadwerkelijke planning, gebruik de Microsoft 365 Defender-portal:" -ForegroundColor Cyan Write-Host " https://security.microsoft.com/attacksimulator" -ForegroundColor Cyan return } Write-Host "Campagne planning wordt ondersteund via de Microsoft 365 Defender-portal." -ForegroundColor Yellow Write-Host "Bezoek: https://security.microsoft.com/attacksimulator" -ForegroundColor Cyan Write-Host "`nAanbevolen stappen:" -ForegroundColor Cyan Write-Host "1. Log in op Microsoft 365 Defender-portal" -ForegroundColor Gray Write-Host "2. Ga naar Attack simulation training" -ForegroundColor Gray Write-Host "3. Klik op 'Create simulation' of 'Launch simulation'" -ForegroundColor Gray Write-Host "4. Selecteer template en configureer doelgroep" -ForegroundColor Gray Write-Host "5. Stel timing en educatieve content in" -ForegroundColor Gray } function Invoke-Revert { <# .SYNOPSIS Plaatshouder voor revert-acties. #> Write-Host "Er zijn geen configuratiewijzigingen om terug te draaien voor dit script." -ForegroundColor Yellow Write-Host "Dit script ondersteunt alleen monitoring en analyse van campagne-resultaten." -ForegroundColor Gray } try { if ($PlanCampaign) { Invoke-SimulationCampaign } elseif ($Revert) { Invoke-Revert } elseif ($Monitoring) { Invoke-Monitoring } elseif ($Remediation) { Invoke-Remediation } else { Write-Host "Usage:" -ForegroundColor Yellow Write-Host " -Monitoring Analyseer campagne-resultaten en toon trends" -ForegroundColor Gray Write-Host " -Remediation Genereer aanbevelingen voor verbetering" -ForegroundColor Gray Write-Host " -PlanCampaign Toon informatie over campagne planning (vereist -CampaignName)" -ForegroundColor Gray Write-Host " -InputFile Pad naar CSV met campagne-resultaten (vereist voor -Monitoring en -Remediation)" -ForegroundColor Gray Write-Host " -CampaignName Naam van campagne (voor -PlanCampaign)" -ForegroundColor Gray Write-Host " -Template Template type (CredentialHarvest, MalwareInAttachment, etc.)" -ForegroundColor Gray Write-Host " -WhatIf Toon alleen wat zou gebeuren zonder wijzigingen door te voeren" -ForegroundColor Gray Write-Host "`nVoorbeelden:" -ForegroundColor Yellow Write-Host " .\phishing-simulation-programs.ps1 -Monitoring -InputFile 'campaign-results.csv'" -ForegroundColor Cyan Write-Host " .\phishing-simulation-programs.ps1 -Remediation -InputFile 'campaign-results.csv' -WhatIf" -ForegroundColor Cyan } } catch { Write-Host "`n[FAIL] ERROR: $_" -ForegroundColor Red Write-Host "Details: $($_.Exception.Message)" -ForegroundColor Red exit 2 } finally { Write-Host "`n========================================`n" -ForegroundColor Cyan }

Risico zonder implementatie

Risico zonder implementatie
High: Zonder een structureel phishing-simulatieprogramma blijft de organisatie kwetsbaar voor phishing-aanvallen, die meer dan 90% van alle succesvolle cyberaanvallen veroorzaken. Dit leidt tot een verhoogd risico op datalekken, financiële schade, continuïteitsverstoringen, reputatieschade en niet-naleving van BIO-, NIS2- en AVG-vereisten rondom bewustmaking en training.

Management Samenvatting

Implementeer een gestructureerd phishing-simulatieprogramma binnen Microsoft 365 met behulp van Microsoft Defender for Office 365 Attack simulation training. Het programma moet regelmatige campagnes omvatten met verschillende phishing-scenario's, educatieve feedback voor medewerkers die klikken, uitgebreide monitoring en rapportage, en continue verbetering op basis van resultaten. Dit verlaagt aantoonbaar het risico op succesvolle phishing-aanvallen en ondersteunt naleving van relevante normen en wetgeving.