Passthecert-rs

g0h4n g0h4n
Dépôt créer le : 09/09/2026
Release du : 10/09/2026 v1.0.0
Forks: 4 Watcher: 0 19
Choisir une liste...
FR

PassTheCert-rs

Rust editionLicensePlatformsTLSRustHound-CE #31

PassTheCert-rs est une mise en œuvre multiplateforme, pure-Rust PassTheCert technique : elle s'authentifie à un serveur LDAP/S certificat client via Schannel, et effectue un ensemble d'actions d'attaque LDAP sur cette session authentifiée de certificat, aucun mot de passe, aucun hash NT, aucun PKINIT.

Il a été construit pour prototype de support Pass-the-Certificate pour RustHound-CE (Numéro 31) et utilise la même pile TLS (ldap3 + rustls). L'authentification du certificat sans Kerberos est utile lorsqu'un contrôleur de domaine ne prend pas en charge PKINIT (par exemple, son certificat manque de Smart Card Logon EKU) mais LDAP sur Schannel est disponible. Comme l'authentification se fait via Schannel, elle fonctionne également là où la liaison de canaux LDAP est imposée.

  • AIDE.md - Comment le compiler ? Comment l'utiliser ? Toutes actions avec des exemples.
  • ROUTE.md - Mesures mises en œuvre et évolution planifiée.
  • CONTRIBUTION.md - Comment contribuer au projet.

Utilisation rapide

Recueil

# Build a release binary
cargo build --release
# Binary: ./target/release/passthecert-rs

Obtention d'un certificat

Utilisation Certipy pour obtenir un certificat, puis extraire le certificat PEM et la clé:

certipy req -u [email protected] -p 'password' -target ca.domain.local -ca 'DOMAIN-CA' -template User
certipy cert -pfx user.pfx -nokey -out user.crt
certipy cert -pfx user.pfx -nocert -out user.key

Le certificat doit porter le compte cible SID (Certipy l'inclut par défaut) pour la cartographie solide des certificats (KB5014754).

Utilisation

# Confirm the mapped identity (Schannel whoami)
passthecert-rs -d DOMAIN.LOCAL -f DC01.DOMAIN.LOCAL --crt user.crt --key user.key --ldaps --action whoami
# Getting ldapshell
passthecert-rs -d DOMAIN.LOCAL -f DC01.DOMAIN.LOCAL --crt user.crt --key user.key --ldaps --action ldapshell

Deux transports sont soutenus: LDAPS sur 636 (--ldaps, cartographie implicite du canal S) et Démarrer TLS sur 389 (par défaut, SASL EXTERNAL). Certains contrôleurs de domaine n'acceptent qu'un seul des deux, voir AIDE.md.

Plus d'exemples et la liste complète des actions page d'aide.

Démo

passthecert-rs demo

Actions

Description -- -- -- -- -- -- Autres whoami Confirmer l'identité cartographiée (RFC 4532). Autres ldapshell LDAP interactif exposant chaque action (recherche, élévation, RBCD, add computer, ...). Autres add_computer / del_computer Créer ou supprimer un compte machine. Autres modify_user Réinitialiser le mot de passe d'un utilisateur, ou --elevate pour accorder DCSync. Autres add_member / remove_member Ajouter ou supprimer un membre du groupe. Autres enable_account / disable_account Afficher le drapeau du compte. Autres read_rbcd / write_rbcd / remove_rbcd / flush_rbcd Gérer la délégation des ressources.

Voir AIDE.md pour une table complète avec des commandes exemple.

Avertissement

C'est un outil de sécurité offensant. Utilisez-le uniquement contre les systèmes que vous êtes explicitement autorisé à tester.

Crédits

Cet outil porte la technique et l'ensemble d'action de AlmondOffSec/PassTheCert (par drm / @lowercase drm) à Rust. Recherche originale: Amand blog post. Le traitement des certificats repose sur Certipy par Oliver Lyak.

Contributeurs GitHub

g0h4n
g0h4n
3 contributions