
Implementazione di Mimikatz in puro Python
Se ti piace questo progetto, considera l'acquisto di licenze di OctoPwn, la nostra suite completa di penetration testing che gira nel tuo browser!
Per notifiche su nuove build/rilasci e altre informazioni, unisciti al nostro Discord
Implementazione di Mimikatz in puro Python. Almeno una parte di esso :)
Funziona su tutti i sistemi operativi che supportano Python>=3.6

Questo progetto, insieme a molti altri strumenti per penetration tester, gira nel browser grazie alla potenza di OctoPwn!
Dai un'occhiata alla versione community su OctoPwn - Live
Dalla versione 0.1.1 la riga di comando è cambiata un po'. Non preoccuparti, ho un'ottima WIKI per te.
Installalo tramite pip o clonandolo da GitHub.
L'installer creerà un eseguibile pypykatz nella directory Script di Python. Puoi eseguirlo da lì, dovrebbe essere nel tuo PATH.
Attenzione: la versione master di GitHub potrebbe fallire perché sono pigro per creare un branch appropriato per le nuove versioni. Cercherò comunque di creare un branch della versione stabile.
pip3 install pypykatz
Installa i prerequisiti
pip3 install minidump minikerberos aiowinreg msldap winacl
Clona questo repository
git clone https://github.com/skelsec/pypykatz.git
cd pypykatz
Installalo
python3 setup.py install
Indipendente dalla piattaforma – tutti i comandi hanno una versione "live" e una versione normale dove applicabile. La versione "live" utilizza il sistema corrente e funziona solo su Windows. I comandi normali sono indipendenti dalla piattaforma.
Può essere utilizzato come libreria per i tuoi progetti.
Può analizzare i segreti nascosti nel processo LSASS. Questo è simile a sekurlsa:: di mimikatz, ma con comandi diversi.
La differenza principale è che tutta la logica di parsing è separata dalla fonte dei dati, quindi se definisci un nuovo oggetto reader puoi eseguire il parsing di LSASS da qualsiasi luogo.
Fonti dati attualmente supportate:
il tuo progetto qui seriamente, è super-semplice da integrare.Analizza gli hive del registro per ottenere credenziali memorizzate, come hash NT e LM, credenziali memorizzate nella cache di dominio (DCC/DCC2) e segreti LSA.
Fonti dati attualmente supportate:
il tuo progetto qui seriamente, è super-semplice da integrare.DPAPI è il protettore dei segreti locali di vario tipo. Attualmente il progetto supporta la decifratura di masterkey, blob dpapi, file di credenziali, file vault.
I risultati non sono corretti al 100%, poiché non esiste molta documentazione sulla maggior parte di queste cose. Le pull request sono sempre benvenute!
Fonti dati attualmente supportate:
per favore non integrare questa parte nel tuo progetto, è in betaPuò avviare un nuovo processo come qualsiasi utente che abbia un processo in esecuzione sulla macchina.
Può assegnare qualsiasi token disponibile alla tua thread.
Questa è solo una funzionalità di base. Il motivo per cui esiste è che odio usare costantemente psexec per ottenere una shell di sistema da amministratore...
sì... controlla il codice. Ha commenti e roba...
Motivo per cui esiste questo parametro: per scegliere la struttura corretta per il parsing abbiamo bisogno delle informazioni sul timestamp del file dll msv. Rekall purtroppo non sempre ha queste informazioni, quindi il parsing potrebbe fallire.
Se il parsing fallisce, questo potrebbe risolvere il problema.
Parametro: -t
Valori: 0 o 1
Esempio:
pypykatz.py rekall <file_dump_memoria> -t 0
Ci sono due modi per utilizzare il parsing della memoria basato su Rekall.
pypykatz rekallDovrai specificare il file di memoria da analizzare.
AVVISI IMPORTANTI:
rekall, tieni presente che DEVE essere eseguito in un virtualenv, e dovrai installare pypykatz nello stesso virtualenv!out_file e kerberos_dir!Puoi trovare un file plugin rekall chiamato pypykatz_rekall.py nella cartella plugins di pypykatz.
Dovrai copiarlo nella cartella plugins/windows di rekall e rinominarlo in pypykatz.py.
Dopodiché modifica il file __init__.py situato nella stessa cartella e aggiungi la seguente riga alla fine: from rekall.plugins.windows import pypykatz.
Se tutto è a posto, puoi usare il comando pypykatz direttamente dalla riga di comando di rekall.
Se vuoi aiutarmi a portare questo progetto a una versione stabile, puoi inviare i minidump del processo lsass.exe al seguente link: https://nx5494.your-storageshare.de/s/SJteWj3PPbg8jBA
IMPORTANTE: per favore NON inviare dump del processo lsass della tua macchina personale!!! Potrò vedere i tuoi segreti, inclusi hash/password! Invia file dump da macchine come sistemi di test virtuali per i quali non ti dispiace che qualcuno veda le credenziali. (se hai un sistema di test di dominio con Kerberos configurato, sarebbe l'ideale)
Inoltre, apprezzerei se non mi spammassi...
Per creare mimikatz in Python, bisognerebbe creare definizioni di struttura per una miriade di strutture diverse (controlla il codice originale) senza l'aiuto del parser integrato che si otterrebbe naturalmente usando un compilatore nativo. Ora, il problema è che anche un singolo byte di disallineamento renderà il parsing di queste strutture soggetto a errori. Il problema riguarda principalmente gli allineamenti 32-64, quindi sono apprezzati anche i dump LSASS di Windows a 32 bit!
Ho bisogno di dati su cui poter verificare il codice e apportare le modifiche necessarie ai parser finché tutto non funzioni correttamente.
Inviare segnalazioni su questa pagina GitHub non aiuterebbe affatto senza il file reale, e a GitHub non piacerebbero allegati di 40-300 MB.
La maggior parte dei miei grandi progetti Python mirano alla massima portabilità, quindi utilizzo pacchetti di terze parti solo dove assolutamente necessario. Al momento vengono utilizzati tre pacchetti aggiuntivi, e intendo mantenerli tali.
Python>=3.6
minidump
minikerberos
asn1crypto
Benjamin DELPY @gentilkiwi per Mimikatz
Francesco Picasso per il plugin mimikatz.py per volatility
Alberto Solino (@agsolino) per impacket
Richard Moore per il modulo AES
Todd Whiteman per il modulo DES
David Buxton per lo script di conversione dei timestamp