Day23 - 针对 Metasploitable 3 进行渗透测试(4) - 认识 Metasploit

复习

  1. 透过 nmap 扫描 port
  2. 利用版本查询已知漏洞
  3. 透过人家撰写好 exploit 进行攻击
  4. 透过攻击取得受害主机的权限

提升权限

我们透过上一篇介绍 bash、netcat、socat、程序语言、Msfvenom 与 Metasploit 中的模组 multi/handler,甚至学习如何从 bash 提升到 Meterpreter 的 shell。

至於这个 Metasploit、multi/handler 与 Meterpreter 是什麽呢?现在就来一探究竟吧!

简介 Metasploit

Metasploit 是开放社群与 Rapid7 之间的开源专案,提供许多渗透测试的工具,和漏洞资讯与漏洞 payload。

Metasploit Framework (MSF)

该框架可让使用者自己撰写漏洞的 payload 透过,很多模组(modules)都是由 Ruby 这个程序语言撰写而成的,该工具还包含 外挂 plugins、脚本 scripts 与很多使用者可以互动的工具。

Metasploit auxiliary modules

辅助模组,主要用来收集目标的资讯,如同之前介绍的主动扫描。

其中辅助模组包含端口扫描、识别服务、监听密码、确认 Windows Patch(是否有上更新)、暴力破解、模糊测试(SSH、FTP、SQL等)。

Metasploit Exploit modules

利用模组,透过撰写好的攻击程序,针对目标进行攻击,主要会根据这个攻击程序设定需要的参数,常见的参数设定为攻击目标的 IP、攻击 port、攻击成功之後在目标系统执行的程序/指令(Reverse Shell 或Bind Shell)。

Metasploit 客制化

提到 Metasploit 可以根据自己的需求写攻击程序 exploits、模组 modules、外挂 plugins 与脚本 scripts.

Metasploit UI 介面

CLI
透过 msfconsole 执行 Metasploit 的 command Line 介面,执行速度快,还可以使用外部指令如 ping 或是透过【
tab】补完指令。

GUI
Metasploit 也有图形化介面,叫做 Armitage。Armitage(http://www.fastandeasyhacking.com/)的官方网站这个图形化介面主要利用 Java 撰写而成,目前没有更新维护。

WEB UI
Metasploit Pro 属於商业版工具,需要钱,有十四天免费的版本。

基础指令

启动 Metasploit CLI - Msfconsole
msfconsole

每一次开启的欢迎页面都不一同,只要看到,以下的资讯表示开启成功。

msf6 >

指令整理
指令可分成三种类型:一般基本指令、攻击设定指令、攻击执行指令。

指令类型 名称 说明
Core 一般基本指令 常用的指令,如search、set、version、cd、exit
Module Commands 模组相关指令 从使用特定模组到列出资讯等,如 show、use、info
Job 连线指令 管理连线,如 jobs、kill、handler
Resource Script 批次处理指令 如果有想重复作的脚本可以利用 makerc 储存攻击流程,在利用 resource 引入。
Database Backend 资料库相关指令 支援 PostgreSQL 储存扫描资讯、攻击结果。
Credentials Backend 密码相关指令 测试过程中可能取得密码相关的值,如帐号、密码、NTLM Hash、md、JTR、REALM
Developer 开发者相关指令 查看 framework.log 或是重载 Ruby 函示库

帮助列表
msf6 > help? 会列出所有可以使用的指令。

如果想要找指定的指令,是否有参数可以使用:
msf6 > help [command]

寻找指定POC
因为 Metasploit 内建 2100 种不同的漏洞脚本,因此透过搜寻关键字找到自己需要的脚本。
msf6 > search <keyword>
范例示范
msf6 > search wordpress

寻找关键字POC
透过特定的关键字可以更快找到自己需要的脚本。

确认 search 有哪些关键字和参数可以使用:
msf6 > help search

查询 cve 2021 且类型为攻击的脚本:
msf6 > search cve:2021 type:exploit

查询 cve 2021 且受害类型为 windows 平台:
msf6 > search cve:2021 platform:windows

增加新脚本
如果发现 Metasploit 没有内建的攻击脚本,可以寻找网路上是否已经有人写好,以下是增加新脚本的方法:

  1. 切换到想要放入的资料夹
    cd /usr/share/metasploit-framework/modules/exploits/linux/http
  2. 下载 exploit
    sudo wget https://www.exploit-db.com/download/49096 -O 49096.rb
  3. 开启 CLI 介面
    msfconsole
  4. 重载内容
    msf6 > reload_all

使用指定 exploit
当我们找到想要使用的脚本之後,透过use 加上脚本路径,就可以使用该脚本。
msf6 > use <exploit path>

查看该 exploit 的资讯
进入 exploit 可以看到 CLI 前面变成脚本的路径,此时输入 info 可以查看该 exploit 的资讯,包含名称、是用平台、架构等。

msf6 exploit(xxxxxx) > info

显示攻击参数设定
输入 show options 可以找到

msf6 exploit(xxxxxx) > show options

设定参数内容
从上图可以知道可以分成主要攻击模组设定(Module options)与攻击程序设定(Payload options)与攻击目标(Exploit target)。

set <参数名称> <参数值>`` ![](https://i.imgur.com/4iLjHiF.png)
显示可用的攻击成功後要执行的程序
显示用可用 payload
show payloads

设定指定 payload
set payload <路径>

其中 lhost、lport 也就是 Reverse Shell 中攻击机的 IP与监听的 port。

set lhost [your IP address]

set lport [listening port]

想要把目标参数储存於全域变数

  1. LHOST 的 IP 都是固定,可以利用 setg 设定成全域变数
    setg LHOST [ip]
  2. 储存
    save

进阶参数

如果想要避免自己的攻击被发现,可以利用进阶的设定。

进阶设定
show advanced

开启进阶设定
set disablepayloadhandler true

显示编码器
透过使用编码器可以用来避免简单的 IDS/IPS 侦测。
show encoders

set encoders <Name>

利用 NOP(No Operation)
显示 NOP 生成器。
show nops

可使用防御的技术列表
show evasion


<<:  [神经机器翻译理论与实作] 从头建立英中文翻译器 (IV)

>>:  那些被忽略但很好用的 Web API / Animation On Scroll

[Day26] Telegram Bot 对话

在昨天讲解了指令集後 今天来讲解Bot的回传方式 文字 这是最基本也是最基础的纯文字 在前几天的程序...

损失函数的演进--1

人脸辨识技术在Deepface出现後,就开始使用Deep learning来进行人脸辨识,在使用各种...

Day5_HTML语法2

HTML文件元素 < html > < html >开始标签要放在後面 这里...

[Day3] Rust 函数 基本 / 进阶 使用

那麽最一开始学一个程序语言的起手式想必不用我多说吧。 「Hello World!」 fn hello...

# Day 29 Page Migration (四)

文件 原文文件:Page migration 翻译: 监控迁移 ======== 下列事件 (计数器...