Vmware导入主机
- 攻击机kali linux
- Web服务器Windows7
- 域控Windows2008
- 域成员Windows2003
环境搭建
网络配置
win7作为web服务器,需要外部能够访问,因此网卡需要走NAT,同样攻击机kali也要能够被外部(主要是反弹shell)访问以及访问win7,因此kali也走NAT。域控、域成员不接触外网,因此需要设置其网卡为仅主机模式(网段需与NAT的不同),同时win7需要能够访问内网,因此win7也得配置一张仅主机模式的网卡
首先配置一下网络编辑器,三台主机一开始都被分配了固定的ip网段192.168.52.0/24了,因此需要添加一张仅主机模式、子网地址为192.168.52.0的网卡


接下来是为四台主机配置网卡:
Win7两张,一张内网一张外部访问:
1 | 这里有本人踩过的坑,必须是网络适配器1是主机模式,适配器2是NAT。建议把预装的NAT改为自定义的,再添加一张新的设置为NAT,总之就是很玄学。。。更改设置的时候都处于关机状态,然后重开机 |

域控(Windows2008)一张,用于内网:

域成员(Windows2003)一张,用于内网:

win7、win8再把所有防火墙都关一下
最终的结果:
- win7能够ping通外部以及攻击机kali以及内网其他2台主机
- Windows2008能够ping通内网其他两台主机但是无法ping通外部以及kali
- Windows2003同上
- kali能够与外界访问,能够ping通win7的NAT的ip,无法Ping通所有52网段内网ip
各主机的ip
1 | kali : 192.168.227.137(NAT) 192.168.52.129 |
启动web服务
win7的C盘下找到phpstudy并启动web服务,能够杯外部访问:
当时我直接启动是不成功的,会一直报错,后面网上找解决方案的时候告诉我需要升级win7虚拟机,当我将其升级到16.x,也就是我自己VMware的版本的时候重新启动虚拟机,就可以成功启动web服务了
外点getshell
探针的页面下,MySQL弱口令存在root/root,但是似乎是内网存在,外部无法连接上
用dirsearch扫一下,发现有phpMyAdmin后台以及phpinfo

在这里有sql执行的地方,自然就想到了通过sql来getshell的操作
并且还是在windows系统下,所以用写日志的方式来进行getshell
具体操作可查看:https://www.sqlsec.com/2020/11/mysql.html#%E6%97%A5%E5%BF%97%E6%96%87%E4%BB%B6%E5%86%99-shell
从虚拟机中也可以看到成功写进了

然后就可以用蚁剑成功连上了
后渗透阶段
上线cs
在kali中启动teamserver,配置好ip和密码(ip是kali本身的ip

然后起一个beacon http的监听器

生成windows端后门文件


然后再将该exe通过蚁剑上传到win7机子上,执行cs.exe成功上线


为了方便后续操作把会话派生到msf,先在msf配置好模块和payload,lhost以及端口等信息,开个反向连接

在CS创建一个新的监听器,payload选foreign http,host填msf的服务ip,端口填msf的监听端口

在cs会话中选中新建会话

拿到meterpreter

检查是否为虚拟机,一般是用于检测蜜罐的
1 | run post/windows/gather/checkvm |

随手关杀软(靶场是没有的,但是实战中拿到shell第一件事就是关杀软)
1 | run post/windows/manage/killav |

扫了下机子,发现还是有非常多能利用的漏洞的

目前是管理员权限

但我们还可以提权到system级别的权限,在meterpreter中通过getsystem命令进行提权

在CS使用logonpasswords获取用户名密码,可在CS中开启RDP后远程桌面连接(亲手测试后表示超卡

内网信息收集
1 | ipconfig /all #查询当前网络情况(DNS,域等) |
先执行whoami查看身份,发现是god域下的administrator权限,也来一手提权到system,要不然后面有点的命令权限不太够

更好的建议是通过cs内置的模块进行提权到system


最后会生成一个新listener会话,user是system级别的
执行net config workstation,发现存在域god

可能存在多个域,因此,接下来执行net view /domain,发现只有一个域GOD

net view查看一下域内一共有三台主机

查看域下的分组

直接net group "domain controllers" /domain查看域管理员

至此域内关键信息所收集的差不多了,梳理一下
存在一个域GOD,GOD域下有三台主机,域控是OWA主机,即192.168.52.138,win7主机内网ip为192.168.52.129,接下来就是要扫描内网主机了
msf拿下域控
先进行端口扫描,这里使用CS的portscan或者msf的auxiliary/scanner/portscan/tcp 模块

发现OWA主机开放了445、636、593等端口

先用nmap粗略扫一下域控主机开放端口的可能存在漏洞
1 | nmap --script=vuln -p636,593,464,389,135,139,88,80,53,445 192.168.52.138 |
哈希传递攻击
前面端口扫描过的目标主机都会在Targets中显示:

我们可以创建SMB监听隧道,首先我们新增一个SMB监听器,如下所示:
在beacon执行logonpasswords来获取明文密码以及哈希凭据
然后在Targets中选中目标主机右键,进行Jump,方式选psexec攻击
监听器选择我们刚刚新建的SMB
这里我们选择system权限的session进行哈希传递,其他的可能权限不够

成功横移到域控主机上

接着我们要做的是关闭域控的防火墙(这是一个好习惯
黄金票据维持权限
在内网渗透中,黄金票据(Golden Ticket)是一种权限维持技术,允许攻击者在获取域控权限后,伪造有效的Kerberos票据授予票据(TGT),从而长期、隐蔽地重新获得域内访问权限
要理解黄金票据,需先了解Kerberos认证流程。当用户登录域时,域控制器(作为密钥分发中心KDC)的身份认证服务(AS)会验证用户凭证。若成功,AS会向用户签发一个TGT。该TGT由KDC的一个特殊账户——krbtgt账户的NTLM哈希进行加密签名
用户后续申请访问其他服务的票据(Service Ticket)时,只需出示此TGT,而无需再次输入密码。
黄金票据攻击的核心在于,一旦攻击者获取了krbtgt账户的密码哈希(NTLM Hash),就可以离线伪造任意用户(包括域管理员)的TGT。因为KDC在验证TGT时,使用其持有的krbtgt哈希进行解密验证,只要攻击者使用正确的krbtgt哈希加密伪造的TGT,该票据就会被KDC认为是合法的。更关键的是,即使域管理员后期更改了密码,只要krbtgt账户的哈希未变,之前伪造的黄金票据依然有效,这使得它成为一种非常危险的持久化后门
成功制作黄金票据需要满足以下几个关键条件
已获得域管理员级别权限:这是前提中的前提,因为你需要借此去获取下一步的关键信息。
获取域的标识信息:
- 域名:目标Active Directory域的完整域名。
- 域SID:域的安全标识符,可以通过命令如
whoami /user或wmic useraccount get name,sid获取,使用时需要去掉末尾表示用户的RID部分。
获取krbtgt账户的NTLM哈希:这是最核心的要素。在已控制域控制器的情况下,常用工具和技术获取:
使用Mimikatz的DCSync功能:此功能可模拟域控制器,向真实的域控制器请求数据同步,从而获取指定账户的哈希,无需登录域控制器
1
mimikatz # lsadump::dcsync /domain:<域名> /user:krbtgt
在域控制器上直接转储:若已直接在域控制器上执行代码,可使用Mimikatz从LSASS进程转储哈希。
1
2mimikatz # privilege::debug
mimikatz # lsadump::lsa /inject /name:krbtgt
下面是利用cs来创建黄金票据
首先拿到krbtgt账户的哈希

再通过logonpasswords拿到明文密码

然后利用cs中内置的黄金票据模块来进行创建,user名可以自己创


这样子我们就成功创建了属于我们自己的黄金票据了

痕迹清理
1 | shell wevtutil cl security //清理安全日志 |
msf
1 | clearev #清除事件日志 |