
POC de movimiento lateral DCOM abusando de la interfaz IMsiServer - carga y ejecuta un payload de forma remota
POC de movimiento lateral DCOM que abusa de la interfaz IMsiServer
https://www.deepinstinct.com/blog/forget-psexec-dcom-upload-execute-backdoor
La solución contiene 2 proyectos
DCOMUploadExec - Un proyecto de C++ que aloja el código de ataque de movimiento lateral
AssemblyPayload - Una DLL de .NET que muestra un MessageBox. Es el payload predeterminado que usa DCOMUploadExec
Compile la solución
Usage: DCOMUploadExec.exe [domain]\[user]:[password]@[address]
Local Usage: DCOMUploadExec.exe LOCALHOST (Run this as administrator)
DCOMUploadExec.exe hará lo siguiente:
Cargará la DLL de payload predeterminada, AssemblyPayload, en el PC remoto
Cargará la DLL en un proceso remoto de MSIEXEC.exe
Ejecutará un export de la DLL
Recibirá un resultado del export
El payload debe ser un ensamblado .NET con nombre seguro
PayloadConfig.h se utiliza para configurar el payload que usará DCOMUploadExec.
Su valor predeterminado es la salida de AssemblyPayload.
Para utilizar un payload personalizado:
Cree un ensamblado .NET con nombre seguro que exporte una función llamada InitializeEmbeddedUI - esta será la función que DCOMUploadExec ejecutará finalmente en el objetivo remoto
Rellene los detalles de su payload personalizado en PayloadConfig.h:
PAYLOAD_ASSEMBLY_PATH = // ruta local a su payload creado
ASSEMBLY_NAME = // el nombre del ensamblado
ASSEMBLY_BITNESS = // "64" para un payload x64, "32" para un payload x86;
ASSEMBLY_VERSION = // el valor de sigcheck.exe -n PAYLOAD_ASSEMBLY_PATH
ASSEMBLY_PUBLIC_KEY = // el valor
de
sn.exe -T PAYLOAD_ASSEMBLY_PATH
Compile DCOMUploadExec y utilícelo
Las máquinas del atacante y de la víctima deben estar en el mismo dominio o bosque.
Las máquinas del atacante y de la víctima deben ser consistentes con el parche de refuerzo de DCOM - ya sea con el parche aplicado en ambos sistemas o ausente en ambos.
El payload del ensamblado debe tener un nombre seguro.
El payload del ensamblado debe ser x86 o x64 (no puede ser AnyCPU).