Metasploit基础和命令的使用

Metasploit是什么?

Metasploit是一款开源的安全漏洞检测工具,同时Metasploit是免费的工具,因此安全工作人员常用Metasploit工具来检测系统的安全性。Metasploit Framework (MSF) 在2003年以开放源码方式发布,是可以自由获取的开发框架。它是一个强大的开源平台,供开发,测试和使用恶意代码,这个环境为渗透测试、shellcode 编写和漏洞研究提供了一个可靠平台。

做渗透测试的目的是什么?

渗透测试是通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种评估方法。这个过程包括对系统的任何弱点、技术缺陷或漏洞的主动分析,这个分析是从一个攻击者可能存在的位置来进行的,并且从这个位置有条件主动利用安全漏洞。

换句话来说,渗透测试是指渗透人员在不同的位置(比如从内网、从外网等位置)利用各种手段对某个特定网络进行测试,以期发现和挖掘系统中存在的漏洞,然后输出渗透测试报告,并提交给网络所有者。网络所有者根据渗透人员提供的渗透测试报告,可以清晰知晓系统中存在的安全隐患和问题。

Metasploit结构

体系结构

Metasploit模块

模块是通过Metasploit框架所装载、集成并对外提供的最核心的渗透测试功能实现代码。分为辅助模块(Aux)、渗透攻击模块(Exploits)、后渗透攻击模块(Post)、攻击载荷模块(payloads)、编码器模块(Encoders)、空指令模块(Nops)。

辅助模块(Aux)

在渗透信息搜集环节提供了大量的辅助模块支持,包括针对各种网络服务的扫描与查点、构建虚假服务收集登录密码、口令猜测等模块。此外,辅助模块中还包括一些无须加载攻击载荷,同时往往不是取得目标系统远程控制权的渗透攻击,例如:拒绝服务攻击。
msfconsle中输入命令:show auxiliary 可以查看当前Metasploit支持的辅助模块,如下图所示:
在这里插入图片描述

渗透攻击模块(Exploits)

利用发现的安全漏洞或配置弱点对远程目标进行攻击,以植入和运行攻击载荷,从而获得对远程目标系统访问的代码组件。流行的渗透攻击技术包括缓存区溢出、Web应用程序漏洞攻击、用户配置错误等。

主动渗透攻击:发送网络数据,触发安全漏洞。比如web应用程序渗透攻击、SCADA工业控制系统服务渗透攻击等。

被动渗透攻击:浏览器软件漏洞攻击和文件格式漏洞攻击,引诱目标用户打开触发。

msfconsle中输入命令:show exploits 可以查看当前Metasploit支持的渗透攻击模块,如下图所示:
在这里插入图片描述

攻击载荷模块(payloads)

攻击载荷是在渗透攻击成功后促使目标系统运行的一段植入代码,通常作用是为渗透攻击者打开在目标系统上的控制会话连接。在传统的渗透代码开发中,攻击载荷只是一段功能简单的ShellCode代码,以汇编语言编制并转换为目标系统CPU体系结构支持的机器代码,在渗透攻击触发漏洞后,将程序执行流程劫持并跳转入这段机器代码中执行,从而完成ShellCode中实现的单一功能。
   metasploit攻击载荷模块分为独立(Single)、传输器(Stager)、传输体(Stage)三种类型。 独立攻击载荷是完全自包含的,可直接独立地植入目标系统进行执行,比如“windows/shell_bind_tcp”是适用于Windows操作系统平台,能够将Shell控制会话绑定在指定TCP端口上的攻击载荷。在一些比较特殊情况下,可能会对攻击载荷的大小、运行条件有所限制,比如特定安全漏洞利用时可填充邪恶攻击缓冲区的可用空间很小、windows 7等新型操作系统所引入的NX(堆栈不可执行)、DEP(数据执行保护)等安全防御机制,在这些场景情况下,Metasploit提供了传输器和传输体配对分阶段植入的技术,由渗透攻击模块首先植入代码精悍短小且非常可靠的传输器载荷,然后在运行传输器载荷时进一步下载传输体载荷并执行。
   目标系统被渗透攻击之后需要执行的代码。比如反弹式shell、bind shell等。
在msfconsole界面输入:show payloads 可以查看当前系统支持的payloads,如下图所示:
在这里插入图片描述

空指令模块(Nops)

空指令(NOP)是一些对程序运行状态不会造成任何实质影响的空操作或无关操作指令,最典型的空指令就是空操作,在X86 CPU体系结构平台上的操作码是ox90.
   在渗透攻击构造邪恶数据缓冲区时,常常要在真正要执行的Shellcode之前添加一段空指令区,这样当触发渗透攻击后跳转执行ShellCode时,有一个较大的安全着陆区,从而避免受到内存地址随机化、返回地址计算偏差等原因造成的ShellCode执行失败,提高渗透攻击的可靠性。
   在msfconsole中输入show nops 可以查看当前系统支持的空指令,如下图所示:
   在这里插入图片描述

编码器模块(Encoders)

攻击载荷与空指令模块组装完成一个指令序列后,在这段指令被渗透攻击模块加入邪恶数据缓冲区交由目标系统运行之前,Metasploit框架还需要完成一道非常重要的工序——编码。
   编码模块的第一个使命是确保攻击载荷中不会出现渗透攻击过程中应加以避免的”坏字符“。
   编码器第二个使命是对攻击载荷进行”免杀“处理,即逃避反病毒软件、IDS入侵检测系统和IPS入侵防御系统的检测与阻断。 
   在msfconsole界面输入:show encoders 可以查看当前系统支持的编码器,如下图所示:
   在这里插入图片描述

后渗透攻击模块(post)

主要支持在渗透攻击取得目标系统远程控制权之后,在受控系统中进行各种各样的后渗透攻击动作,比如获取敏感信息,进一步括展,实施跳板攻击等。
在msfconsole界面输入show post 可以显示当前系统支持的后渗透攻击模块,如下图所示:
在这里插入图片描述

Metasploit基础命令

首先输入命令行输入msfconsole进入msf模块。
在这里插入图片描述

info
展示出制定渗透攻击或模块的相关信息。

Use:
use 命令的作用就是装载
use name 装载一个渗透攻击或模块。
use incognito 加载incognito功能(用来盗窃目标主机的令牌或假冒用户)
use priv 加载特权提升扩展模块,来扩展metasploit库。
use sniffer 加载嗅探模式。

Set:
set function 设置特定的配置参数(设置本地或远程主机参数)。
set target num 指定你所知道的目标的操作系统以及补丁版本类型。
set payload name 指定想要使用的攻击载荷。

Check 检测目标是否选定渗透攻击存在相应的安全漏洞。

Exploit:
exploit 执行渗透攻击或模块来攻击目标。
exploit -j 在计划任务下进行渗透攻击(攻击将在后台进行)。
exploit -z 渗透攻击完成后不与回话进行交互。
exploit -e encoder 制定使用的攻击载荷编码方式(exploit -eshikata_ga_nai)
exploit -h 列出exploit命令的帮助信息。

List:
list_tokens -u 列出目标主机用户的可用令牌。
list_tokens -g 列出目标主机用户组的可用令牌。

Sessions:
sessions -l 列出可用的交互会话(在处理多个shell时使用)。
sessions -l -v 列出所有可用的交互会话以及详细信息,EG:攻击系统时使用了哪 个安全漏洞。
sessions -s script 在所有活跃的metasploit会话中运行一个特定的metasploit 脚本。
sessions -c cmd 在所有活跃的metasploit会话上执行一个命令。
sessions -u sessionID 升级一个普通的win32 shell到metasploit shell。

sniffer:
sniffer_interfaces 列出目标主机所有开放的网络端口。
sniffer_dump interfaceID pcapname 在目标主机上启动嗅探。
sniffer_start interfaceID packet-buffer 在目标主机上针对特定范围的数据包 缓冲区启动嗅探。
sniffer_stats interfaceID 获取正在实施嗅探网络接口的统计数据。
sniffer_stop interfaceID 停止嗅探。

猜你喜欢

转载自blog.csdn.net/w1304099880/article/details/114978509