Windows Local Privilege Escalation
Bestes Tool zur Suche nach Windows-Lokalen Privileg-Eskalationsvektoren: WinPEAS
Grundlegende Windows-Theorie
Zugriffstoken
Wenn du nicht weißt, was Windows-Zugriffstoken sind, lies die folgende Seite, bevor du fortfährst:
Access TokensACLs - DACLs/SACLs/ACEs
Überprüfe die folgende Seite für weitere Informationen zu ACLs - DACLs/SACLs/ACEs:
ACLs - DACLs/SACLs/ACEsIntegritätsstufen
Wenn du nicht weißt, was Integritätsstufen in Windows sind, solltest du die folgende Seite lesen, bevor du fortfährst:
Integrity LevelsWindows-Sicherheitskontrollen
Es gibt verschiedene Dinge in Windows, die dich daran hindern könnten, das System zu enumerieren, ausführbare Dateien auszuführen oder sogar deine Aktivitäten zu erkennen. Du solltest die folgende Seite lesen und all diese Abwehrmechanismen enumerieren, bevor du mit der Privileg-Eskalationsenumeration beginnst:
Windows Security ControlsSysteminformationen
Versionsinformationen enumerieren
Überprüfe, ob die Windows-Version bekannte Schwachstellen aufweist (überprüfe auch die angewendeten Patches).
Version Exploits
Diese Seite ist nützlich, um detaillierte Informationen über Microsoft-Sicherheitsanfälligkeiten zu suchen. Diese Datenbank hat mehr als 4.700 Sicherheitsanfälligkeiten, die die massive Angriffsfläche zeigen, die eine Windows-Umgebung bietet.
Auf dem System
post/windows/gather/enum_patches
post/multi/recon/local_exploit_suggester
winpeas (Winpeas hat watson eingebettet)
Lokal mit Systeminformationen
Github-Repos von Exploits:
Umgebung
Gibt es Anmeldeinformationen/saftige Informationen, die in den Umgebungsvariablen gespeichert sind?
PowerShell Verlauf
PowerShell-Transkriptdateien
Sie können lernen, wie man dies aktiviert unter https://sid-500.com/2017/11/07/powershell-enabling-transcription-logging-by-using-group-policy/
PowerShell Modulprotokollierung
Details zu PowerShell-Pipeline-Ausführungen werden aufgezeichnet, einschließlich ausgeführter Befehle, Befehlsaufrufe und Teile von Skripten. Es könnten jedoch nicht alle Ausführungsdetails und Ausgabeergebnisse erfasst werden.
Um dies zu aktivieren, folgen Sie den Anweisungen im Abschnitt "Transkriptdateien" der Dokumentation und wählen Sie "Modulprotokollierung" anstelle von "Powershell-Transkription".
Um die letzten 15 Ereignisse aus den Powershell-Protokollen anzuzeigen, können Sie ausführen:
PowerShell Script Block Logging
Ein vollständiger Aktivitäts- und Inhaltsnachweis der Ausführung des Skripts wird erfasst, um sicherzustellen, dass jeder Codeblock dokumentiert wird, während er ausgeführt wird. Dieser Prozess bewahrt eine umfassende Prüfspur jeder Aktivität, die für die Forensik und die Analyse bösartigen Verhaltens wertvoll ist. Durch die Dokumentation aller Aktivitäten zum Zeitpunkt der Ausführung werden detaillierte Einblicke in den Prozess bereitgestellt.
Die Protokollereignisse für den Script Block können im Windows-Ereignisanzeiger unter dem Pfad: Anwendungs- und Dienstprotokolle > Microsoft > Windows > PowerShell > Betrieb gefunden werden. Um die letzten 20 Ereignisse anzuzeigen, können Sie Folgendes verwenden:
Internet-Einstellungen
Laufwerke
WSUS
Sie können das System kompromittieren, wenn die Updates nicht über httpS, sondern über http angefordert werden.
Sie beginnen damit, zu überprüfen, ob das Netzwerk ein nicht-SSL WSUS-Update verwendet, indem Sie Folgendes ausführen:
Wenn Sie eine Antwort wie folgt erhalten:
Und wenn HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU /v UseWUServer
gleich 1
ist.
Dann ist es ausnutzbar. Wenn der letzte Registrierungseintrag gleich 0 ist, wird der WSUS-Eintrag ignoriert.
Um diese Schwachstellen auszunutzen, können Sie Tools wie: Wsuxploit, pyWSUS verwenden - Dies sind MiTM-waffenfähige Exploit-Skripte, um 'falsche' Updates in nicht-SSL WSUS-Verkehr einzuspeisen.
Lesen Sie die Forschung hier:
WSUS CVE-2020-1013
Lesen Sie den vollständigen Bericht hier. Im Grunde ist dies der Fehler, den dieser Bug ausnutzt:
Wenn wir die Möglichkeit haben, unseren lokalen Benutzerproxy zu ändern, und Windows Updates den im Internet Explorer konfigurierten Proxy verwendet, haben wir daher die Möglichkeit, PyWSUS lokal auszuführen, um unseren eigenen Verkehr abzufangen und Code als erhöhter Benutzer auf unserem Asset auszuführen.
Darüber hinaus verwendet der WSUS-Dienst die Einstellungen des aktuellen Benutzers, daher wird auch dessen Zertifikatspeicher verwendet. Wenn wir ein selbstsigniertes Zertifikat für den WSUS-Hostnamen generieren und dieses Zertifikat in den Zertifikatspeicher des aktuellen Benutzers einfügen, können wir sowohl HTTP- als auch HTTPS-WSUS-Verkehr abfangen. WSUS verwendet keine HSTS-ähnlichen Mechanismen, um eine Validierung des Zertifikats nach dem Prinzip "Vertrauen beim ersten Gebrauch" zu implementieren. Wenn das präsentierte Zertifikat vom Benutzer vertraut wird und den richtigen Hostnamen hat, wird es vom Dienst akzeptiert.
Sie können diese Schwachstelle mit dem Tool WSUSpicious ausnutzen (sobald es freigegeben ist).
KrbRelayUp
Eine lokale Privilegieneskalation-Schwachstelle existiert in Windows Domänen-Umgebungen unter bestimmten Bedingungen. Diese Bedingungen umfassen Umgebungen, in denen LDAP-Signierung nicht durchgesetzt wird, Benutzer Selbstrechte besitzen, die es ihnen ermöglichen, ressourcenbasierte eingeschränkte Delegation (RBCD) zu konfigurieren, und die Fähigkeit für Benutzer, Computer innerhalb der Domäne zu erstellen. Es ist wichtig zu beachten, dass diese Anforderungen mit Standard-Einstellungen erfüllt sind.
Finden Sie den Exploit in https://github.com/Dec0ne/KrbRelayUp
Für weitere Informationen über den Ablauf des Angriffs überprüfen Sie https://research.nccgroup.com/2019/08/20/kerberos-resource-based-constrained-delegation-when-an-image-change-leads-to-a-privilege-escalation/
AlwaysInstallElevated
Wenn diese 2 Registrierungen aktiviert sind (Wert ist 0x1), können Benutzer mit beliebigen Berechtigungen *.msi
-Dateien als NT AUTHORITY\SYSTEM installieren (ausführen).
Metasploit-Payloads
Wenn Sie eine Meterpreter-Sitzung haben, können Sie diese Technik mit dem Modul exploit/windows/local/always_install_elevated
automatisieren.
PowerUP
Verwenden Sie den Befehl Write-UserAddMSI
von PowerUP, um im aktuellen Verzeichnis eine Windows MSI-Binärdatei zu erstellen, um Privilegien zu eskalieren. Dieses Skript erstellt einen vorkompilierten MSI-Installer, der nach einer Benutzer-/Gruppenzusammenführung fragt (Sie benötigen also GUI-Zugriff):
Just execute the created binary to escalate privileges.
MSI Wrapper
Lies dieses Tutorial, um zu lernen, wie man einen MSI-Wrapper mit diesen Tools erstellt. Beachte, dass du eine ".bat" Datei umwickeln kannst, wenn du nur Befehlszeilen ausführen möchtest.
MSI WrapperCreate MSI with WIX
Create MSI with WIXCreate MSI with Visual Studio
Generiere mit Cobalt Strike oder Metasploit eine neue Windows EXE TCP Payload in
C:\privesc\beacon.exe
Öffne Visual Studio, wähle Ein neues Projekt erstellen und gib "installer" in das Suchfeld ein. Wähle das Setup Wizard Projekt und klicke auf Weiter.
Gib dem Projekt einen Namen, wie AlwaysPrivesc, verwende
C:\privesc
für den Speicherort, wähle Lösung und Projekt im selben Verzeichnis platzieren und klicke auf Erstellen.Klicke weiter auf Weiter, bis du zu Schritt 3 von 4 (Dateien auswählen) gelangst. Klicke auf Hinzufügen und wähle die gerade generierte Beacon-Payload aus. Klicke dann auf Fertigstellen.
Markiere das AlwaysPrivesc Projekt im Solution Explorer und ändere in den Eigenschaften TargetPlatform von x86 auf x64.
Es gibt andere Eigenschaften, die du ändern kannst, wie den Autor und den Hersteller, die die installierte App legitimer erscheinen lassen können.
Klicke mit der rechten Maustaste auf das Projekt und wähle Ansicht > Benutzerdefinierte Aktionen.
Klicke mit der rechten Maustaste auf Installieren und wähle Benutzerdefinierte Aktion hinzufügen.
Doppelklicke auf Anwendungsordner, wähle deine beacon.exe Datei aus und klicke auf OK. Dies stellt sicher, dass die Beacon-Payload ausgeführt wird, sobald der Installer gestartet wird.
Ändere unter den Eigenschaften der benutzerdefinierten Aktion Run64Bit auf True.
Schließlich baue es.
Wenn die Warnung
File 'beacon-tcp.exe' targeting 'x64' is not compatible with the project's target platform 'x86'
angezeigt wird, stelle sicher, dass du die Plattform auf x64 eingestellt hast.
MSI Installation
Um die Installation der bösartigen .msi
Datei im Hintergrund auszuführen:
Um diese Schwachstelle auszunutzen, können Sie verwenden: exploit/windows/local/always_install_elevated
Antivirus und Detektoren
Audit-Einstellungen
Diese Einstellungen entscheiden, was protokolliert wird, daher sollten Sie darauf achten
WEF
Windows Event Forwarding, es ist interessant zu wissen, wohin die Protokolle gesendet werden.
LAPS
LAPS ist für die Verwaltung von lokalen Administratorpasswörtern konzipiert, die sicherstellen, dass jedes Passwort einzigartig, randomisiert und regelmäßig aktualisiert wird auf Computern, die einer Domäne beigetreten sind. Diese Passwörter werden sicher in Active Directory gespeichert und können nur von Benutzern abgerufen werden, die über ausreichende Berechtigungen durch ACLs verfügen, die es ihnen ermöglichen, lokale Admin-Passwörter anzuzeigen, wenn sie autorisiert sind.
LAPSWDigest
Wenn aktiv, werden Klartextpasswörter in LSASS (Local Security Authority Subsystem Service) gespeichert. Weitere Informationen zu WDigest auf dieser Seite.
LSA-Schutz
Beginnend mit Windows 8.1 führte Microsoft einen verbesserten Schutz für die Local Security Authority (LSA) ein, um Versuche untrusted Prozesse zu blockieren, ihre Speicher zu lesen oder Code zu injizieren, was das System weiter absichert. Weitere Informationen zum LSA-Schutz hier.
Credentials Guard
Credential Guard wurde in Windows 10 eingeführt. Sein Zweck ist es, die auf einem Gerät gespeicherten Anmeldeinformationen vor Bedrohungen wie Pass-the-Hash-Angriffen zu schützen.| Weitere Informationen zu Credentials Guard hier.
Cached Credentials
Domänenanmeldeinformationen werden von der Local Security Authority (LSA) authentifiziert und von Betriebssystemkomponenten verwendet. Wenn die Anmeldedaten eines Benutzers von einem registrierten Sicherheits-Paket authentifiziert werden, werden in der Regel Domänenanmeldeinformationen für den Benutzer erstellt. Weitere Informationen zu Cached Credentials hier.
Benutzer & Gruppen
Benutzer & Gruppen auflisten
Sie sollten überprüfen, ob eine der Gruppen, zu denen Sie gehören, interessante Berechtigungen hat.
Privilegierte Gruppen
Wenn Sie zu einer privilegierten Gruppe gehören, können Sie möglicherweise Privilegien eskalieren. Erfahren Sie hier mehr über privilegierte Gruppen und wie man sie missbraucht, um Privilegien zu eskalieren:
Privileged GroupsToken-Manipulation
Erfahren Sie mehr darüber, was ein Token ist, auf dieser Seite: Windows Tokens. Überprüfen Sie die folgende Seite, um mehr über interessante Tokens zu erfahren und wie man sie missbraucht:
Abusing TokensEingeloggte Benutzer / Sitzungen
Home-Ordner
Passwort-Richtlinie
Holen Sie sich den Inhalt der Zwischenablage
Ausgeführte Prozesse
Datei- und Ordners Berechtigungen
Zunächst einmal, listen Sie die Prozesse überprüfen Sie Passwörter in der Befehlszeile des Prozesses. Überprüfen Sie, ob Sie eine laufende Binärdatei überschreiben können oder ob Sie Schreibberechtigungen für den Binärordner haben, um mögliche DLL Hijacking-Angriffe auszunutzen:
Immer prüfen, ob mögliche electron/cef/chromium-Debugger laufen, die Sie missbrauchen könnten, um Privilegien zu eskalieren.
Überprüfen der Berechtigungen der Prozess-Binärdateien
Überprüfung der Berechtigungen der Ordner der Prozess-Binärdateien (DLL Hijacking)
Memory Password mining
Sie können einen Speicherabbild eines laufenden Prozesses mit procdump von Sysinternals erstellen. Dienste wie FTP haben die Anmeldeinformationen im Klartext im Speicher, versuchen Sie, den Speicher abzuleiten und die Anmeldeinformationen zu lesen.
Unsichere GUI-Apps
Anwendungen, die als SYSTEM ausgeführt werden, können einem Benutzer erlauben, eine CMD zu starten oder Verzeichnisse zu durchsuchen.
Beispiel: "Windows-Hilfe und Support" (Windows + F1), suchen Sie nach "Eingabeaufforderung", klicken Sie auf "Klicken Sie hier, um die Eingabeaufforderung zu öffnen"
Dienste
Holen Sie sich eine Liste der Dienste:
Berechtigungen
Sie können sc verwenden, um Informationen über einen Dienst zu erhalten.
Es wird empfohlen, die Binärdatei accesschk von Sysinternals zu haben, um das erforderliche Berechtigungsniveau für jeden Dienst zu überprüfen.
Es wird empfohlen zu überprüfen, ob "Authentifizierte Benutzer" einen Dienst ändern können:
Sie können accesschk.exe für XP hier herunterladen
Dienst aktivieren
Wenn Sie diesen Fehler haben (zum Beispiel mit SSDPSRV):
Systemfehler 1058 ist aufgetreten. Der Dienst kann nicht gestartet werden, entweder weil er deaktiviert ist oder weil keine aktivierten Geräte damit verbunden sind.
Sie können ihn aktivieren, indem Sie
Beachten Sie, dass der Dienst upnphost von SSDPSRV abhängt, um zu funktionieren (für XP SP1)
Eine weitere Lösung dieses Problems besteht darin, Folgendes auszuführen:
Ändern des Dienst-Binärpfads
In dem Szenario, in dem die Gruppe "Authentifizierte Benutzer" SERVICE_ALL_ACCESS für einen Dienst besitzt, ist die Modifikation der ausführbaren Binärdatei des Dienstes möglich. Um sc zu modifizieren und auszuführen:
Dienst neu starten
Privilegien können durch verschiedene Berechtigungen erhöht werden:
SERVICE_CHANGE_CONFIG: Ermöglicht die Neukonfiguration der Dienst-Binärdatei.
WRITE_DAC: Ermöglicht die Neukonfiguration von Berechtigungen, was zur Fähigkeit führt, Dienstkonfigurationen zu ändern.
WRITE_OWNER: Erlaubt den Erwerb von Eigentum und die Neukonfiguration von Berechtigungen.
GENERIC_WRITE: Erbt die Fähigkeit, Dienstkonfigurationen zu ändern.
GENERIC_ALL: Erbt ebenfalls die Fähigkeit, Dienstkonfigurationen zu ändern.
Für die Erkennung und Ausnutzung dieser Schwachstelle kann das exploit/windows/local/service_permissions verwendet werden.
Schwache Berechtigungen von Dienst-Binärdateien
Überprüfen Sie, ob Sie die Binärdatei, die von einem Dienst ausgeführt wird, ändern können oder ob Sie Schreibberechtigungen für den Ordner haben, in dem sich die Binärdatei befindet (DLL Hijacking). Sie können jede Binärdatei, die von einem Dienst ausgeführt wird, mit wmic (nicht in system32) abrufen und Ihre Berechtigungen mit icacls überprüfen:
Sie können auch sc und icacls verwenden:
Dienste-Registry-Berechtigungen ändern
Sie sollten überprüfen, ob Sie eine Dienst-Registry ändern können. Sie können Ihre Berechtigungen über eine Dienst-Registry überprüfen, indem Sie:
Es sollte überprüft werden, ob Authenticated Users oder NT AUTHORITY\INTERACTIVE FullControl
-Berechtigungen besitzen. Wenn ja, kann die von dem Dienst ausgeführte Binärdatei geändert werden.
Um den Pfad der ausgeführten Binärdatei zu ändern:
Berechtigungen für AppendData/AddSubdirectory im Registrierungsdienst
Wenn Sie diese Berechtigung über eine Registrierung haben, bedeutet dies, dass Sie Unterregistrierungen von dieser erstellen können. Im Fall von Windows-Diensten ist dies ausreichend, um beliebigen Code auszuführen:
AppendData/AddSubdirectory permission over service registryUnquoted Service Paths
Wenn der Pfad zu einer ausführbaren Datei nicht in Anführungszeichen steht, versucht Windows, jede Endung vor einem Leerzeichen auszuführen.
Zum Beispiel wird Windows für den Pfad C:\Program Files\Some Folder\Service.exe versuchen, Folgendes auszuführen:
Liste alle nicht zitierten Dienstpfade auf, die nicht zu integrierten Windows-Diensten gehören:
Sie können diese Schwachstelle erkennen und ausnutzen mit metasploit: exploit/windows/local/trusted\_service\_path
Sie können manuell eine Dienst-Binärdatei mit metasploit erstellen:
Recovery Actions
Windows ermöglicht es Benutzern, Aktionen festzulegen, die ergriffen werden sollen, wenn ein Dienst fehlschlägt. Diese Funktion kann so konfiguriert werden, dass sie auf eine Binärdatei verweist. Wenn diese Binärdatei ersetzbar ist, könnte eine Privilegieneskalation möglich sein. Weitere Details finden Sie in der offiziellen Dokumentation.
Applications
Installed Applications
Überprüfen Sie die Berechtigungen der Binärdateien (vielleicht können Sie eine überschreiben und Privilegien eskalieren) und der Ordner (DLL Hijacking).
Schreibberechtigungen
Überprüfen Sie, ob Sie eine Konfigurationsdatei ändern können, um eine spezielle Datei zu lesen, oder ob Sie eine Binärdatei ändern können, die von einem Administratorkonto (schedtasks) ausgeführt wird.
Eine Möglichkeit, schwache Ordner-/Dateiberechtigungen im System zu finden, besteht darin:
Beim Start ausführen
Überprüfen Sie, ob Sie einige Registrierungs- oder Binärdateien überschreiben können, die von einem anderen Benutzer ausgeführt werden. Lesen Sie die folgende Seite, um mehr über interessante Autorun-Standorte zur Eskalation von Rechten zu erfahren:
Privilege Escalation with AutorunsTreiber
Suchen Sie nach möglichen drittanbieter-seltsamen/anfälligen Treibern.
PATH DLL Hijacking
Wenn Sie Schreibberechtigungen in einem Ordner haben, der im PATH vorhanden ist, könnten Sie in der Lage sein, eine von einem Prozess geladene DLL zu hijacken und Privilegien zu eskalieren.
Überprüfen Sie die Berechtigungen aller Ordner im PATH:
Für weitere Informationen darüber, wie man diese Überprüfung ausnutzen kann:
Writable Sys Path +Dll Hijacking PrivescNetzwerk
Freigaben
hosts file
Überprüfen Sie, ob andere bekannte Computer im Hosts-Datei fest codiert sind.
Netzwerkinterfaces & DNS
Offene Ports
Überprüfen Sie eingeschränkte Dienste von außen
Routing-Tabelle
ARP-Tabelle
Firewall-Regeln
Überprüfen Sie diese Seite für firewallbezogene Befehle (Regeln auflisten, Regeln erstellen, ausschalten, ausschalten...)
Mehr Befehle zur Netzwerkanalyse hier
Windows-Subsystem für Linux (wsl)
Binary bash.exe
kann auch in C:\Windows\WinSxS\amd64_microsoft-windows-lxssbash_[...]\bash.exe
gefunden werden.
Wenn Sie den Root-Benutzer erhalten, können Sie auf jedem Port lauschen (beim ersten Mal, wenn Sie nc.exe
verwenden, um auf einem Port zu lauschen, wird über die GUI gefragt, ob nc
von der Firewall erlaubt werden soll).
Um bash einfach als root zu starten, können Sie --default-user root
versuchen.
Sie können das WSL
-Dateisystem im Ordner C:\Users\%USERNAME%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\
erkunden.