引言:
在网络安全领域,Metasploit无疑是最强大、最广泛使用的渗透测试框架。它提供了大量的工具和模块,可以帮助安全研究人员和渗透测试人员对目标进行详细的攻击模拟和漏洞利用。通过深入了解和熟练使用Metasploit,我们可以更好地理解网络攻击的运作方式,进而更有效地防御这些攻击。
Metasploit 渗透测试框架介绍
Metasploit 简介
Metasploit 是一个渗透测试平台,使您能够查找,利用和验证漏洞。该平台包括 Metasploit 框架及其商业对手,如 Metasploit Pro。
Metasploit 是一个免费的、可下载的框架,通过它可以很容易对计算机软件漏洞实施攻击。它本身附带数百个已知软件漏洞的专业级漏洞攻击工具。当H.D.Moore 在2003 年发布 Metasploit 时,计算机安全状况也被永久性地改变了。仿佛一夜之间,任何人都可以成为黑客,每个人都可以使用攻击工具来攻击那些未打过补丁或者刚刚打过补丁的漏洞。软件厂商再也不能推迟发布针对已公布漏洞的补丁了,这是因为 Metasploit 团队一直都在努力开发各种攻击工具,并将它们贡献给所有 Metasploit 用户。
Postgresql概述:
Metasploit 程序需要使用 Postgresql数据库。
PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES4.2版本为基础的对象关系型数据库管理系统
注:PostgreSQL: 世界上最先进的开源关系数据库
扩展: PostgreSQL和 MySQL数据的应用场景区别:
从应用场景来说,PostgreSQL 更加适合严格的企业应用场景(比如金融、电信、ERP、CRM),而MySQL更加适合业务逻辑相对简单、数据可靠性要求较低的互联网场景
systemctl start postgresql
systemctl enable postgresql
Metasploit 基本使用方法
常用命令
命令类型
kali@kali:~$ msfconsole #进入msf
注:通过 help 查看帮助,可以对 msf 有个整体认识,可以看到 msf 相关命令可以分成以下类型:
Core Commands #核心命令
Module Commands #模块命令
Job Commands #后台任务命令
Resource Script Commands #资源脚本命令
Database Backend Commands #数据库后端命令
Credentials Backend Commands #证书/凭证后端命令
Developer Commands #开发人员命令
Core Commands
msf > help
Core Commands
=============
Command Description
------- -----------
? Help menu
back Move back from the current context
banner Display an awesome metasploit banner
cd Change the current working directory
color Toggle color
connect Communicate with a host
exit Exit the console
get Gets the value of a context-specific variable
getg Gets the value of a global variable
grep Grep the output of another command
help Help menu
history Show command history
load Load a framework plugin
quit Exit the console
repeat Repeat a list of commands
route Route traffic through a session
save Saves the active datastores
sessions Dump session listings and display information about sessions
set Sets a context-specific variable to a value
setg Sets a global variable to a value
show Displays modules of a given type, or all modules
sleep Do nothing for the specified number of seconds
unload Unload a framework plugin
unset Unsets one or more context-specific variables
unsetg Unsets one or more global variables
use Selects a module by name
version Show the framework and console library version numbers
Module Commands
Module Commands
=============
Command Description
------- -----------
advanced Displays advanced options for one or more modules
back Move back from the current context
creds List all credentials in the database
info Displays information about one or more modules
load Load a framework plugin
options Displays global options or for one or more modules
payload Set the payload to use
penumbra Alias for "run post/windows/gather/enum_powershell_env"
precision Alias for "run post/multi/manage/shell_to_meterpreter"
previous Sets the previously loaded module as the current module
reload Reloads the modules from the database
remove Unloads a module from memory
rename_command Rename a core command
route Route traffic through a session
run Executes the loaded module
save Saves the active datastores
search Searches module names and descriptions
show Displays modules of a given type, or all modules
sleep Do nothing for the specified number of seconds
use Selects a module by name
Job Commands
Job Commands
=============
Command Description
------- -----------
jobs Displays and manages background jobs
kill Kill a job
rename_job Rename a job
模块相关的命令 connect使用方法
connect 命令主要用于远程连接主机。一般用于内网渗透;该命令允许你连接到目标主机并执行一些与连接相关的操作。
msf > connect --help
Usage: connect [options] <host> <port>
Communicate with a host, similar to interacting via netcat, taking advantage of
framework features like SSL. For full-featured client interfaces see the 'sessions'
command.
OPTIONS:
-c <opt> Try to use 'opt' character for EOL instead of $/
-i <opt> The number of seconds to wait before interaction with the server
-p <opt> The local port to listen on.
-s <opt> SSL/TLS support: 'true', 'false', or 'sslv2'
-t <opt> The number of seconds to wait before disconnect
-v Show verbose output
模块相关的命令 show 使用方法
“show”命令的有效参数是: all,encoders,nops,exploits,payloads,auxiliary, postplugins, info, optionse
show exploits #列出 metasploit 框架中的所有渗透攻击模块。该命令列出数据较多,较为耗费时间
msf6 > show payloads #列出metasploit 框架中的所有攻击载荷。
msf6 > show auxiliary #列出 metasploit 框架中的所有辅助攻击载荷。
注:使用show命令会执行很慢
模块相关的命令 search 使用方法
search命令用于搜索与指定关键字相关的模块。该命令可以帮助你查找与你当前任务或目标相关的模块
search keyword参数:关键字
metasploit 支持模糊查找,不区分大小写,这样大家查找时更方便
通过名字参数name进行查找
msf > serach name:mysql
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
1 auxiliary/admin/mysql/mysql_version normal No MySQL Server Version Enumeration
2 auxiliary/analyze/jtr_mysql_fast normal No John the Ripper MySQL Password Cracker (Fast Mode)
#:编号 Name:名称
Disclosure Date:披露日期 Rank:排名
check:检查 Description:说明
通过路径参数path进行查找
当我们只记得模块的路径,但是却忘记了模块的名称。那么就可以用 path: 命令查找在该路径下的所有模块
search path:mysql
通过参数platform进行查找
作用: Modules affecting this platform 即: 列出可以影响此平台的模块,也就是比较好的漏洞
有时候我们会搜索到大量的模块,那么可以用 platform: 命今来缩小查询范围。使用 platform 命令后,所查询的结果会列出 rank 比较高的模块。
search platform:mysql
通过类型参数type进行查找
这里要使用到 type:命令。type:特定类型的模块(exploit, payload,auxiliary, encoder, evasion, post, or nop)
search type:mysql
联合查找
可以使用上面的参数自行搭配使用
search name:mysql type:exploite
根据 CVE搜索exploit 相关模块
CVE概述:CVE 的英文全称是“Common Vulnerabilities & Exposures”公共漏洞和暴露;CVE 就好像是一个字典表,为广泛认同的信息安全漏洞或者已经暴露出来的弱点给出一个公共的名称。使用一个共同的名字,可以帮助用户在各自独立的各种漏洞数据库中和漏洞评估工具中共享数据,虽然这些工具很难整合在一起。这样就使得 CVE 成为了安全信息共享的“关键字”。如果在一个漏洞报告中指明的一个漏洞,如果有 CVE 名称,你就可以快速地在任何其它 CVE 兼容的数据库中找到相应修补的信息解决安全问题。
模块相关的命令 use 的使用方法
use 使用参数。如你要使用到某个模块,就要使用到 use 命令
use 模块的名字
msf6 > use auxiliary/scanner/portscan/tcp
msf6 auxiliary(scanner/portscan/tcp) > set RHOSTS <目标主机>
msf6 auxiliary(scanner/portscan/tcp) > run
[*] TCP - 192.168.0.1:22 - Open
[*] TCP - 192.168.0.1:80 - Open
[*] TCP - 192.168.0.1:443 - Open
msf6 auxiliary(scanner/portscan/tcp) > use auxiliary/scanner/portscan/udp
msf6 auxiliary(scanner/portscan/udp) > set RHOSTS <目标主机>
msf6 auxiliary(scanner/portscan/udp) > run
[*] UDP - 192.168.0.1:53 - Open
msf> back #back 退出当前调用的模块
# 注:不要使用exit,exit 会直接退出 Metasploit 程序
模块相关的命令 info 的使用方法
info 模块名称
use装载模块后直接使用info
show option 查看设置的值
session命令
sessions命令用于管理与目标主机建立的会话。该命令允许你查看当前活动的会话列表、选择特定会话以进行操作,并提供一些选项用于管理会话。
sessions [options] or sessions [id]
rank字段解释
每一个漏洞利用模块基于它们对目标系统的潜在影响都被标记了一个 Rank 字段。用户可以基于 Rank 对漏洞利用模块进行搜索,分类以及排序。
Rank 按照可靠性降序排列:
- excellent 漏洞利用程序绝对坏会使目标服务崩溃,就像 SQL 注入、命令执行、远程文件包含本地文件包含等等。除非有特殊情况,典型的内存破坏利用程序不可以被评估为该级别。
- great 该漏洞利用程序有一个默认的目标系统,并且可以自动检测适当的目标系统,或者在目标服务的版本检查之后可以返回到一个特定的返回地址。
- good 该漏洞利用程序有一个默认目标系统,并且是这种类型软件的“常见情况”(桌面应用程序的Windows 7,服务器的2012等)
- normal 该漏洞利用程序是可靠的,但是依赖于特定的版本,并且不能或者不能可靠地自动检测。
- average 该漏洞利用程序不可靠或者难以利用。
- low 对于通用的平台而言,该漏洞利用程序几乎不能利用 (或者低于 50% 的利用成功率)
- manual 该漏洞利用程序不稳定或者难以利用并且基于拒绝服务(DOS)。如果一个模块只有在用户特别配置该模块的时候才会被用到,否则该模块不会被使用到,那么也可以评为该等级
使用msf渗透攻击Win7主机并远程执行命令
https://docs.microsoft.com/zh-cn/security-updates/securitybulletins/2017/ms17-010
永恒之蓝相关病毒,其实是利用了微软的 MS17-010 漏洞。MS17-010是Windows 系统一个底层服务的漏洞,恶意代码会扫描开放445 文件共享端口的 Windows机器,无需用户任何操作,只要开机上网,不法分子就能在电脑和服务器中植入勒索软件、远程控制木马、虚拟货币挖矿机等恶意程序。
这里展示主要流程,具体践行过程就不展示了^_^ os:复现小累了哈哈哈
流程图
graph TB 已知漏洞MS17-010 --> 查找模块 查找模块 --> 配置程序 配置程序 --> exploit exploit
流程
查找模块
- 搜索exploit–
- search MS17-010
- show exploits
- show payloads
- show auxiliary
配置参数
显示参数
- show options
- show targets
- show encoders
- show advanced
- info xxx
设置参数
- use xxx (exploit)
- set xxx (payload)
- set xxx xxx (参数)
exploit
- 执行exploit
- exploit(命令)
- run (命令)
总结使用metasploit攻击
- 查找CVE公布的漏洞
- 查找对应的exploit 模块
- 配置模块参数
- 添加 payload 后门
- 执行exploit开始攻击
结论
Metasploit是一个强大的工具,但也需要谨慎使用。未经许可的渗透测试可能会触法,因此在使用Metasploit时,一定要确保你的行为是合法且得到了适当的授权。此外,Metasploit也需要不断更新,以应对新的威胁和漏洞。只有通过持续学习和实践,我们才能充分利用Metasploit的潜力,提高我们的网络安全水平。