
DCOM POC горизонтального перемещения, эксплуатирующий интерфейс IMsiServer — загружает и выполняет полезную нагрузку удалённо.
DCOM Lateral movement POC abusing the IMsiServer interface
https://www.deepinstinct.com/blog/forget-psexec-dcom-upload-execute-backdoor
Решение содержит 2 проекта
DCOMUploadExec — проект на C++, который содержит код атаки для lateral movement
AssemblyPayload — .NET DLL, которая выводит MessageBox. Это payload по умолчанию, который использует DCOMUploadExec
Скомпилируйте решение
Usage: DCOMUploadExec.exe [domain]\[user]:[password]@[address]
Local Usage: DCOMUploadExec.exe LOCALHOST (Run this as administrator)
DCOMUploadExec.exe будет:
Загружать DLL payload по умолчанию, AssemblyPayload, на удалённый ПК
Загружать DLL в удалённый процесс MSIEXEC.exe
Выполнять экспорт из DLL
Получать результат от экспорта
Payload должен быть строго именованной .NET сборкой
PayloadConfig.h используется для настройки payload, который будет использовать DCOMUploadExec.
По умолчанию он указывает на результат сборки AssemblyPayload.
Для использования собственного payload:
создайте строго именованную .NET сборку, которая экспортирует функцию с именем InitializeEmbeddedUI — именно эту функцию DCOMUploadExec в конечном итоге выполнит на удалённой цели
Заполните данные вашего payload в PayloadConfig.h:
PAYLOAD_ASSEMBLY_PATH = // локальный путь к созданному вами payload
ASSEMBLY_NAME = // имя сборки
ASSEMBLY_BITNESS = // "64" для x64 payload, "32" для x86 payload;
ASSEMBLY_VERSION = // значение из sigcheck.exe -n PAYLOAD_ASSEMBLY_PATH
ASSEMBLY_PUBLIC_KEY = // значение
из
sn.exe -T PAYLOAD_ASSEMBLY_PATH
Скомпилируйте DCOMUploadExec и используйте его
Машины атакующего и жертвы должны находиться в одном домене или лесу.
Машины атакующего и жертвы должны соответствовать исправлению DCOM Hardening — либо исправление установлено на обеих системах, либо отсутствует на обеих.
Сборка payload должна иметь строгое имя.
Сборка payload должна быть либо x86, либо x64 (не может быть AnyCPU).