专栏名称: FreeBuf
国内关注度最高的全球互联网安全新媒体
目录
相关文章推荐
家电圈  ·  松下断舍离的企业困境与产业警示 ·  19 小时前  
家电圈  ·  松下断舍离的企业困境与产业警示 ·  19 小时前  
安天集团  ·  攻击DeepSeek的相关僵尸网络样本分析 ·  2 天前  
南京广播电视台  ·  官宣:暂停向中国市场供应 ·  2 天前  
南京广播电视台  ·  官宣:暂停向中国市场供应 ·  2 天前  
道与术抓妖  ·  DPSK热度太高了——2.4 ·  2 天前  
道与术抓妖  ·  DPSK热度太高了——2.4 ·  2 天前  
51好读  ›  专栏  ›  FreeBuf

MAT:一款针对MSSQL服务器的安全检测与审计工具

FreeBuf  · 公众号  · 互联网安全  · 2024-09-03 19:07

主要观点总结

关于MAT这款针对MSSQL服务器的安全检测与审计工具的介绍,包括其功能、要求、安装、使用示例和注意事项。

关键观点总结

关键观点1: 工具介绍

MAT是一款MSSQL服务器的安全检测与审计工具,采用C#开发,用于快速识别和发现MSSQL服务器中的安全问题。

关键观点2: 功能特点

包括自动检查安全问题、登录身份验证、激活XP_cmdshell、执行系统命令和SQL命令、触发NTLM请求、自定义存储过程等。

关键观点3: 工具要求

需要Visual Studio和CommandLineParser.2.9.1(NuGet包)、Costura.Fody(NuGet包)等工具和库的支持。

关键观点4: 安装方法

通过源码编译安装,研究人员可以克隆项目源码至本地,然后在Visual Studio中加载项目代码进行编译。

关键观点5: 使用示例

提供了使用MAT进行安全检测和审计的示例命令和参数选项说明,包括如何建立连接、执行命令等。

关键观点6: 注意事项

在使用工具时需要注意SQL Server的连接参数、用户权限、命令执行等细节,以及遵循MIT开源许可协议。


正文


关于MAT


MAT是一款针对MSSQL服务器的安全检测与审计工具,该工具使用C#开发,可以帮助广大研究人员快速识别和发现MSSQL 服务器中的安全问题,并实现安全检测与审计目的。



功能介绍


1、执行自动检查并识别安全问题;

2、允许通过 Windows 集成身份验证以及 SQL 身份验证登录;

3、如果权限存在则快速激活 XP_cmdshell(本地以及链接服务器上);

4、通过 XP_cmdshell 方便地执行系统命令(本地以及单/双链接服务器);

5、方便执行 SQL 命令(本地以及链接服务器上);

6、通过 XP_dirtree 快速触发 NTLM 请求;

7、自定义存储过程-用于执行操作系统命令(本地);

8、自动检查并启用 RPC OUT(如果链接服务器禁用 RPC OUT,则链接服务器上的存储程序(如 xp_cmdshell)将不可用);

9、自动转储 MSSQL 用户哈希;


工具要求


Visual Studio

CommandLineParser.2.9.1(NuGet包)

Costura.Fody(NuGet包)


工具安装


源码编译


广大研究人员可以直接使用下列命令将该项目源码克隆至本地:

git clone https://github.com/SySS-Research/MAT.git

然后打开Visual Studio,加载项目代码,根据操作系统平台架构编译项目代码即可。


发布版本


除此之外,我们也可以直接访问该项目的 Releases页面 下载最新版本的MAT可执行程序。


工具使用


Example: MAT.exe [options]
Example: MAT.exe --server localhost -u sqlusername -p sqlpassword --os-command "whoami"


如果可执行文件在没有凭据的情况下执行(没有选项“-u:”或“-p:”),它将默认尝试使用 Windows 集成身份验证(当前登录的 Windows 用户)登录。


工具参数选项


Options:

-s, --server SQL 服务器(必填)
-u, --user SQL 用户
-p, --password SQL 密码
-d, --database 数据库名称 (默认: 'master')
-r, --relay 通过XP_DIRTREE触发到给定IP的NTLM中继
-i, --impersonate 模拟指定的SQL用户
--dumphashes 如果当前用户具有管理员权限,则转储MSSQL用户哈希
-l, --linked-server 链接的SQL服务器
-e 在本地(-e)或链接服务器(-e LINKEDSERVER)上启动XP_CMD Shell
--os-command 在所选目标系统中执行的OS命令
--sql-command 在所选目标系统中执行的SQL命令
--double-link 使用双链接通过XP_CMD执行OS命令
--stoprox 通过自定义程序集存储进程执行OS命令
--help 显示工具帮助信息
--version 显示版本信息

工具运行演示


在执行安全检测和审计期间,如果在本地服务器上识别出本地 MSSQL Server 实例,我们就可以直接使用MAT手动与目标实例建立连接:

MAT.exe --server localhost


该工具显示收集到的Windows用户凭证可以登录 SQL Server“COM1”(Windows 集成身份验证 - 无需输入用户名/密码)。该工具提供以下输出:



用户属于“sysadmin”组。这允许用户激活 XP_CMD shell 并执行系统命令或列出 SQL 用户登录(这在后面很重要)。


激活 XP_cmdshell 后(MAT.exe --server localhost -e),可以随后执行系统命令(MAT.exe --server localhost --os-command "whoami")。


使用参数“--os-command”而不使用附加参数“--linked-server”会告诉工具在条目 SQL Server(COM1)上本地执行该命令:



下一步,可以测试用户 COM1\user 是否可用于访问链接服务器,MAT识别出了以下链接服务器:



在 SQL Server 上查询链接服务器时,服务器本身(在本例中为 COM1)也始终会列出。此处的实际链接服务器是“COM2”。直接尝试使用受感染的用户在此链接服务器上执行 SQL 命令会失败(MSSQL 工具会自动执行这些检查):



这是因为 COM1 上没有当前用户的登录映射,登录映射可以确定 SQL Server COM1 中的哪个用户与 COM2 中的哪个用户相关联。


因此,了解 COM1 上有哪些用户非常重要,这样才能测试这些用户是否存在登录映射(如果权限足够高,则可以通过 SQL Management Studio 直接在链接服务器对象“COM2”中检查这一点)。此前,MAT检测到以下用户登录:

userx

user1

adminuser


拥有“sysadmin”权限的用户com1\user也可以模拟SQL用户。


因此,可以尝试模拟用户“userx”。通过参考用户/权限图表,可以发现模拟用户“userx”可以以“usery”的身份在 COM2 上执行 SQL 命令。需要注意的是,模拟后执行的所有操作都以模拟用户的身份进行。相关命令如下:

MAT.exe --server localhost --impersonate userx


使用该工具可获得以下结果:



在此演示场景中,该工具不仅能够在本地或链接服务器 COM2 上执行 OS 命令(通过 1 个链接),还可以从那里使用 SQL Server COM1 作为链接服务器(通过 2 个链接)。在三重链接场景中,COM1 将首先通过链接连接到 COM2,然后返回 COM1,然后再次通过链接连接到 COM2。指示“Pwn3d!”表示链接服务器上的映射用户属于“sysadmin”组,因此可以完全控制 SQL Server。


下图显示了每个 MSSQL 服务器的现有用户及其映射:



许可证协议


本项目的开发与发布遵循 MIT 开源许可协议。


项目地址


MAT

https://github.com/SySS-Research/MAT


FreeBuf粉丝交流群招新啦!






请到「今天看啥」查看全文