我们透过上一篇介绍 bash、netcat、socat、程序语言、Msfvenom 与 Metasploit 中的模组 multi/handler,甚至学习如何从 bash 提升到 Meterpreter 的 shell。
至於这个 Metasploit、multi/handler 与 Meterpreter 是什麽呢?现在就来一探究竟吧!
Metasploit 是开放社群与 Rapid7 之间的开源专案,提供许多渗透测试的工具,和漏洞资讯与漏洞 payload。
该框架可让使用者自己撰写漏洞的 payload 透过,很多模组(modules)都是由 Ruby 这个程序语言撰写而成的,该工具还包含 外挂 plugins、脚本 scripts 与很多使用者可以互动的工具。
辅助模组,主要用来收集目标的资讯,如同之前介绍的主动扫描。
其中辅助模组包含端口扫描、识别服务、监听密码、确认 Windows Patch(是否有上更新)、暴力破解、模糊测试(SSH、FTP、SQL等)。
利用模组,透过撰写好的攻击程序,针对目标进行攻击,主要会根据这个攻击程序设定需要的参数,常见的参数设定为攻击目标的 IP、攻击 port、攻击成功之後在目标系统执行的程序/指令(Reverse Shell 或Bind Shell)。
提到 Metasploit 可以根据自己的需求写攻击程序 exploits、模组 modules、外挂 plugins 与脚本 scripts.
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 没有内建的攻击脚本,可以寻找网路上是否已经有人写好,以下是增加新脚本的方法:
cd /usr/share/metasploit-framework/modules/exploits/linux/http
sudo wget https://www.exploit-db.com/download/49096 -O 49096.rb
msfconsole
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]
想要把目标参数储存於全域变数
setg
设定成全域变数setg LHOST [ip]
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
在昨天讲解了指令集後 今天来讲解Bot的回传方式 文字 这是最基本也是最基础的纯文字 在前几天的程序...
人脸辨识技术在Deepface出现後,就开始使用Deep learning来进行人脸辨识,在使用各种...
HTML文件元素 < html > < html >开始标签要放在後面 这里...
那麽最一开始学一个程序语言的起手式想必不用我多说吧。 「Hello World!」 fn hello...
文件 原文文件:Page migration 翻译: 监控迁移 ======== 下列事件 (计数器...