
Más ejemplos que usan la librería Impacket diseñados para fines de aprendizaje.
Este repositorio contiene algunos scripts cortos de Python creados con la librería Impacket. El objetivo principal de este proyecto es ayudarme a mí mismo y a otros que buscan pasar de usar los ejemplos proporcionados de impacket a modificar/crear sus propios scripts. Estos scripts no están necesariamente optimizados para utilidad o preocupaciones de OPSEC, sin embargo, he intentado hacerlos lo más dinámicos posible en caso de que alguien quiera cambiar su comportamiento predeterminado.

El script wmi_reg_exec.py está diseñado para ejecutar un archivo exclusivamente a través de WMI escribiendo en el registro de Windows. Para ello, primero escribe el archivo codificado en base64 en una ubicación del registro de destino junto con un bypass de AMSI/ETW de PowerShell. Luego se utiliza un stager de PowerShell para ejecutar el bypass de AMSI/ETW y el archivo proporcionado en memoria de forma reflectiva. Los binarios de C# son compatibles 'de forma nativa' siempre que su namespace, clase y método principal sean públicos. Si no se proporcionan, el script intentará adivinar automáticamente el namespace basándose en el nombre del archivo. Si se proporciona un archivo que no es .NET, primero se convierte en shellcode utilizando la rama syscall de Donut de @s4ntiago_p y luego se inserta en el autoinyector C# D/Invoke de @Snovvcrash. El autoinyector se compila entonces usando MCS y se utiliza igual que cualquier otro binario C#.
usage: wmi_reg_exec.py [-h] [-f file] [-a args] [-n namespace] [-r key] [-p patch] [-rp remotePath] [-nooutput] [-H hash] [-k]
[-dc-ip IPAddress]
target
Store exe in registry and execute via powershell
positional arguments:
target Target host to execute file on
optional arguments:
-h, --help show this help message and exit
-f file, -file file File to execute
-a args, -args args Command line arguments for file
-n namespace, -namespace namespace
Namespace.Class containing main method to execute (Ex: Rubeus.Program)
-r key, -reg-key key Registry key to write file to (Default: HKLM\Software\Microsoft\Edge)
-p patch, -patch patch
File containing AMSI/ETW patch to perform before execution
-rp remotePath, -remote-path remotePath
The remote path to write files to (Default: C:\Windows\Temp)
-nooutput Do not attempt to get/print output
authentication:
-H hash, -hash hash NTHash for login via PtH
-k Use Kerberos authentication with credentials from the KRB5CCNAME ccache file
-dc-ip IPAddress IP Address of the domain controller (useful for Kerberos auth)
El script dll_proxy_exec.py está diseñado para ejecutar un archivo DLL determinado utilizando un LOLBin mediante DLL Hijacking/Proxying/Side-Loading/como quieras llamarlo. El DLL proporcionado se subirá primero al objetivo a través de SMB. A continuación, el script copiará el exe de System32 especificado en la misma carpeta que el DLL subido. Finalmente, el exe de System32 se ejecutará desde la nueva ubicación, lo que provocará que cargue/ejecute el DLL proporcionado.
usage: dll_proxy_exec.py [-h] [-f file] [-e exe] [-output] [-H hash] [-k] [-dc-ip IPAddress] [-rp remotePath] target
Execute file via DLL proxying on a remote host.
positional arguments:
target [[domain/]username[:password]@]<hostname or address>
optional arguments:
-h, --help show this help message and exit
-f file, -file file DLL file to execute
-e exe, -exe exe System32 EXE used to execute DLL file
-output Attempt to get output
-rp remotePath, -remote-path remotePath
The remote path to write files to (Default: C:\Windows\Temp)
authentication:
-H hash, -hash hash NTHash for login via PtH
-k Use Kerberos authentication with credentials from the KRB5CCNAME ccache file
-dc-ip IPAddress IP Address of the domain controller (useful for Kerberos auth)
El script remote_ssp_dump.py está diseñado para volcar credenciales de LSASS desde un host remoto utilizando el DLL SSP de Nanodump. Por defecto, el script utilizará el DLL SSP y el loader sin modificar, que están incrustados en el archivo. Alternativamente, el script utilizará un DLL o Loader modificado si están presentes en el directorio actual con sus nombres estándar (nanodump_ssp.x64.dll y load_ssp.x64.exe, respectivamente). Al ejecutarse, el script subirá el DLL y el loader al objetivo, ejecutará el loader, descargará el volcado de LSASS y lo analizará en busca de hashes utilizando Pypykatz. Además, este script se ha integrado con los scripts wmi_reg_exec.py y dll_proxy_exec.py, lo que permite diferentes formas de ejecutar el loader SSP.
usage: remote_ssp_dump.py [-h] [-t timeout] [-rp remotePath] [-re] [-dp] [-f dll] [-e exe] [-r key] [-H hash] [-k]
[-dc-ip IPAddress]
target
Dump creds from LSASS remotely using Nanodump SSP
positional arguments:
target [[domain/]username[:password]@]<hostname or address>
optional arguments:
-h, --help show this help message and exit
-t timeout, -timeout timeout
Timeout in seconds to wait for LSASS dump file to be created (Default: 3)
-rp remotePath, -remote-path remotePath
The remote path to write files to (Default: C:\Windows\Temp)
-re, -reg-exec Execute SSP loader by writing it to the registry and executing it in memory with PowerShell
-dp, -dll-proxy Execute SSP loader via DLL Proxying (See below for options)
dll proxying options:
-f dll, -file dll DLL file to execute
-e exe, -exe exe System32 EXE used to execute DLL file
registry execute options:
-r key, -reg-key key Registry key to write file to (Default: HKLM\Software\Microsoft\Edge)
authentication:
-H hash, -hash hash NTHash for login via PtH
-k Use Kerberos authentication with credentials from the KRB5CCNAME ccache file
-dc-ip IPAddress IP Address of the domain controller (useful for Kerberos auth)
El script dump_ntds_creds.py está diseñado para volcar, exfiltrar y analizar todos los hashes de dominio desde un controlador de dominio objetivo. Primero ejecuta el LOLBin ntdsutil.exe a través de WMI para crear el volcado y luego descarga los archivos ntds.dit, SYSTEM y SECURITY resultantes a través de SMB. A continuación, analizará todas las credenciales de dominio del archivo volcado y guardará los resultados en un archivo.
usage: dump_ntds_creds.py [-h] [-nooutput] [-o filename] [-H hash] [-k] [-dc-ip IPAddress] [-rp remotePath] target
Dump NTDS.dit file, exfiltrate, and parse locally.
positional arguments:
target [[domain/]username[:password]@]<hostname or address>
optional arguments:
-h, --help show this help message and exit
-nooutput Do not print dumped hashes to console
-o filename, -outfile filename
Name to save output files with (Default: DomainDump)
-rp remotePath, -remote-path remotePath
The remote path to write files to (Default: C:\Windows\Temp)
authentication:
-H hash, -hash hash NTHash for login via PtH
-k Use Kerberos authentication with credentials from the KRB5CCNAME ccache file
-dc-ip IPAddress IP Address of the domain controller (useful for Kerberos auth)
wmi_reg_exec.py no puede obtener la salida de un archivo PE que no sea .NET sin escribir en el disco. Si quieres intentar obtener la salida en este caso, debes hacer que el propio archivo PE escriba su salida utilizando el nombre de archivo especificado en el script. Esto podría estar hardcodeado en el archivo PE, o podría suministrarse mediante el flag -a del script si el PE ya tiene un argumento para escribir su salida a un archivo. Para ver un ejemplo de esto, consulta el gif "Example PE Demo" que demuestra este proceso con Mimikatz.wmi_reg_exec.py escribe en el registro es LENTA. Según mis pruebas, puede tardar más de 4 minutos por MB. No estoy muy seguro de por qué es así. Si conoces alguna forma de acelerarlo sin tener que reescribir todo, los pull requests siempre son bienvenidos. :)remote_ssp_dump.py: https://github.com/helpsystems/nanodumpwmi_reg_exec.py: https://github.com/S4ntiagoP/donut/tree/syscallswmi_reg_exec.py: https://twitter.com/snovvcrash/status/1558837027122167810