Metasploit渗透测试框架:基础应用与安全防护

引言:

在网络安全领域,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

流程

查找模块

  1. 搜索exploit–
  2. search MS17-010
  3. show exploits
  4. show payloads
  5. show auxiliary

配置参数

显示参数

  1. show options
  2. show targets
  3. show encoders
  4. show advanced
  5. info xxx

设置参数

  1. use xxx (exploit)
  2. set xxx (payload)
  3. set xxx xxx (参数)

exploit

  1. 执行exploit
  2. exploit(命令)
  3. run (命令)

总结使用metasploit攻击

  1. 查找CVE公布的漏洞
  2. 查找对应的exploit 模块
  3. 配置模块参数
  4. 添加 payload 后门
  5. 执行exploit开始攻击

结论

Metasploit是一个强大的工具,但也需要谨慎使用。未经许可的渗透测试可能会触法,因此在使用Metasploit时,一定要确保你的行为是合法且得到了适当的授权。此外,Metasploit也需要不断更新,以应对新的威胁和漏洞。只有通过持续学习和实践,我们才能充分利用Metasploit的潜力,提高我们的网络安全水平。


   转载规则


《Metasploit渗透测试框架:基础应用与安全防护》 Bevis23 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
Metasploit信息收集 Metasploit信息收集
引言信息收集有:主动信息收集和被动信息收集;基于各类工具,这次利用渗透框架Metasploit进行目标信息收集,,这个过程包含了前面所有的方式以及多了一些更加极端的获取信息方式,比如获取服务器的硬件信息,系统用户信息、进程信息等。 基于tc
2023-07-27
下一篇 
NESSUS:网络安全的守护神 NESSUS:网络安全的守护神
引言 在网络安全的领域中,漏洞扫描工具扮演着至关重要的角色。其中,NESSUS漏洞扫描工具以其全面和有效的扫描能力脱颖而出。本文将详细介绍NESSUS的基本功能和操作流程,以期帮助读者更好地理解和使用这款工具。 NESSUS简介背景199
2023-07-16
  目录
切换