Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
MSSQLand — 面向 Microsoft SQL Server(MS SQL / MSSQL)的 C# 后渗透工具,能够遍历任意深度的链接服务器链,并在每一跳进行级联登录模拟。 | Kitploit
工具/GitHubGitHub/n3rada/mssqland
权限提升冒充工具横向移动配置审计信息收集后渗透利用渗透测试红队数据库安全
GitHubn3rada/mssqland

MSSQLand

面向 Microsoft SQL Server(MS SQL / MSSQL)的 C# 后渗透工具,能够遍历任意深度的链接服务器链,并在每一跳进行级联登录模拟。

759127天前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库

✈️ MSSQLand

优雅地降落在目标 Microsoft SQL Server (MS SQL) DBMS 上,就像手持香槟杯乘坐商务航班一样。🥂

MSSQLand 链式连接能力

MSSQLand 是一个 C# Microsoft SQL Server (MSSQL / MS SQL) 后渗透工具,专为红队操作人员设计。它旨在通过你的 Beacon 直接在目标环境内运行(例如,在 Cobalt Strike 或 Havoc 中使用 execute-assembly,或任何 dotnet 命令),让你能够遍历链接服务器链,模拟沿途遇到的任何登录账户,并从最后一跳执行任何期望的操作。所有操作均具有最小的 OPSEC 足迹,且无需外部依赖。

  • 链接服务器遍历:跨任意深度链自动包装 OPENQUERY / EXEC AT
  • 模拟:在每一跳使用 EXECUTE AS LOGIN,支持级联多用户模拟
  • 身份验证:当前 Windows 令牌、通过 Beacon 令牌模拟实现的哈希传递、Kerberos
  • 发现:SQL Browser(UDP 1434)、通过 LDAP 进行的 Active Directory SPN 枚举、广播、TDS 端口扫描
  • ConfigMgr / SCCM / MECM:专门的 cm-* 操作用于 Microsoft Configuration Manager 数据库的侦察与利用
  • 输出:带时间戳的 Markdown 友好表格,CSV 导出用于清晰的渗透测试交付物

[!TIP] MSSQLand 使用 .NET Framework 4.8 构建,考虑程序集执行,并使用当前上下文。如果需要使用 NT/LM 哈希或 Kerberos 票据进行连接,请参阅哈希传递。

[!NOTE] 不要忘记基础。在安全评估期间,有时使用 SQL Server Management Studio (SSMS) 会更简单。

🧸 用法

root@kitploit:~
MSSQLand.exe [options] <host> [options] <action> [action-options]
MSSQLand.exe <host> --probe

全局标志(-c、-l、--debug 等)可放在任何位置,包括操作名称之后;操作后无法识别的标记将原样传递给操作。

[!NOTE] 省略 <action> 仅执行连接测试。它会进行身份验证然后退出,不运行任何查询。非常适合在最小 OPSEC 足迹下验证凭据。

[!TIP] 避免手动输入所有 RPC Out 或 OPENQUERY 调用。让工具通过 -l 参数处理任何链接服务器链,让你专注于大局。

格式:server:port/user@database 或任意组合 server/user@database:port。

  • server(必需)- SQL Server 主机名或 IP
  • :port(可选)- 端口号(默认:1433,也常见:1434、14333、2433)
  • /user(可选)- 在此服务器上要模拟的用户("execute as login")
    • 支持级联模拟:/user1/user2/user3 执行 EXECUTE AS LOGIN = 'user1'; EXECUTE AS LOGIN = 'user2'; EXECUTE AS LOGIN = 'user3';
    • 每个 /user 将一个新的模拟上下文推入安全栈
  • @database(可选)- 数据库上下文
root@kitploit:~
# 连接探测:检查服务器是否存活,无需身份验证
MSSQLand.exe localhost --probe

# 仅连接测试(不执行操作,进行身份验证后退出)
MSSQLand.exe localhost -c token

# 执行特定操作
MSSQLand.exe localhost -c token info
MSSQLand.exe localhost:1434@db03 -c token info
MSSQLand.exe LAB-SQL01@AdventureWorks -c token tables -n Customer

🔗 链接服务器链

使用 -l 标志并通过分号 (;) 作为分隔符来链接多个 SQL 服务器:

root@kitploit:~
-l SQL01;SQL02/user;SQL03@database

语法:

  • 分号 (;) - 分隔链中的服务器
  • 正斜杠 (/) - 指定要模拟的用户("execute as login")
    • 支持级联模拟:/user1/user2 执行连续模拟
  • @ 符号 (@) - 指定数据库上下文
  • 方括号 ([...]) - 用于保护服务器名称不被分隔符分割

示例:

root@kitploit:~
# 简单链
-l SQL01;SQL02;SQL03

# 带模拟和数据库
-l SQL01/admin;SQL02;SQL03/manager@clients

# 级联模拟(在 SQL01 上先模拟 user1,再模拟 user2)
-l SQL01/user1/user2;SQL02;SQL03

# 混合级联(SQL01:user1→user2,SQL03:user3→user4→user5)
-l SQL01/user1/user2;SQL02;SQL03/user3/user4/user5@database

# 服务器名可包含连字符、点号(无需括号)
-l SQL-01;SERVER.001;HOST.DOMAIN.COM

# 仅当服务器名包含分隔符字符时才需要括号
-l [SERVER;PROD];SQL02;[SQL03@clients]@clientdb

[!NOTE] 端口规范(:port)仅适用于初始主机连接。链接服务器链(-l)使用在 sys.servers 中配置的链接服务器名称,而不是 hostname:port 组合。

🔍 发现

这些模式无需身份验证,可在获得凭据之前使用。

📡 浏览服务

SQL Server 浏览器服务监听 UDP 1434,并响应发现请求,返回主机上运行的 SQL Server 实例列表,包括其名称、版本和 TCP 端口。当目标在动态端口上运行命名实例时,这非常有用,无需猜测或扫描。

root@kitploit:~
# 查询特定主机上的 SQL Browser 服务(UDP 1434)
MSSQLand.exe LAB-SQL03 --browse

📂 LDAP 查询

Active Directory 通过存储在计算机和服务帐户上的服务主体名称 (SPN) 公开 SQL Server 注册。MSSQLand 通过 LDAP 查询 AD 中的 MSSQLSvc/* SPN,以枚举域内的 SQL Server 实例,或通过全局编录枚举整个林。

root@kitploit:~
# 通过 LDAP 在 Active Directory 中查找 SQL Server(当前域)
MSSQLand.exe --findsql

# 针对特定域
MSSQLand.exe --findsql pgd.lab

# 通过全局编录(端口 3268)进行林范围搜索
MSSQLand.exe --findsql pgd.lab --gc

发现是多层的。详情请参阅 FindSqlServers.cs。

📢 广播

SQL Server 浏览器也响应 UDP 广播数据包(UDP 1434),允许发现本地子网上所有自我广告的 SQL Server 实例。

root@kitploit:~
# 本地网络上的广播发现(UDP 1434)
MSSQLand.exe --broadcast
MSSQLand.exe --broadcast --timeout 5

[!TIP] 当 SQL Server 运行在未加入域的机器上,因此不会出现在任何 LDAP 或 SPN 查询中时,这尤其有用。考虑独立服务器、开发机器或在内部 VLAN 上启动的 rogue 实例。

🔌 端口扫描

使用 TDS 协议握手(不仅仅是 TCP SYN)验证开放端口是否对应活着的 SQL Server 实例。仅当端口响应 TDS 预登录数据包时才报告。

root@kitploit:~
MSSQLand.exe LAB-SQL03 --portscan
MSSQLand.exe LAB-SQL03 --portscan --all           # 查找所有实例(完整临时范围)
MSSQLand.exe LAB-SQL03 --portscan 65184           # 单个端口
MSSQLand.exe LAB-SQL03 --portscan 65180-65190     # 端口范围
MSSQLand.exe LAB-SQL03 --portscan 1433,5000,65184 # 逗号分隔列表

🔑 哈希传递

MSSQLand 作为 .NET 程序集在 Beacon 内运行,并且始终使用当前执行上下文进行身份验证(-c token)。当你拥有哈希时,正确的方法是先在 Beacon 级别伪造一个令牌,然后正常运行 MSSQLand。System.Data.SqlClient 会透明地继承该令牌,无需自定义 TDS 实现。

在 MSSQLand 内部从头实现 NTLMv2 意味着:

  • 用自制的 TDS 7.x 堆栈替换 System.Data.SqlClient(涉及大量套接字、TLS 和 NTLM 代码)。
  • 针对 SQL Server 版本的 quirks、TLS 策略更改和令牌流边缘情况维护该实现。
  • 在绝大多数参与中,与令牌方法相比没有任何功能优势。

如果你需要从外部位置使用 Kerberos 票据或 NT/LM 哈希进行身份验证,mssqlclient-ng 是正确的工具。这是一个为 Unix 端访问构建的 Python 3 客户端,可以轻松与从 Beacon 建立的 SOCKS5 代理配对。

🌉 通过 Linux 进行端口转发

如果你在 Windows 主机上运行 MSSQLand,但需要通过 Linux 环境(Hyper-V VM、VMware 或 WSL)访问 SQL Server 目标,你可以使用 socat 轻松转发连接:

root@kitploit:~
sudo socat TCP4-LISTEN:1433,fork,reuseaddr TCP:10.10.11.90:1433

此命令在你的 Linux 机器上监听端口 1433,并将所有流量转发到目标 SQL Server 10.10.11.90:1433。然后你可以从 Windows 主机将 MSSQLand 连接到你的 Linux VM 的 IP。

❓ 帮助

  • -h 或 --help - 显示所有可用操作
  • -h search_term - 过滤操作(例如,-h adsi 显示所有 ADSI 相关操作)
  • localhost -c token createuser -h - 显示特定操作的详细帮助

🔧 配置管理器 (ConfigMgr) 支持

MSSQLand 包含对 Microsoft Configuration Manager(原 SCCM / MECM)利用和侦察的全面支持。当你能够访问 ConfigMgr 数据库服务器时,可以利用专门的操作进行设备智能(例如,cm-devices)或基础设施映射。

所有 ConfigMgr 操作使用 cm- 前缀(例如,cm-scripts、cm-package),以与微软的官方 PowerShell cmdlet 命名约定(Get-CM*、Set-CM* 等)保持一致。

📸 清晰的输出,生成清晰的报告

该工具的输出带有时间戳和有价值的上下文信息,旨在产生美观且专业的结果,非常适合为你任何报告(例如,客户交付物、内部报告、红队评估)捕获高质量的截图。

所有输出表格都兼容 Markdown,可以直接复制粘贴到你的笔记中,无需任何格式麻烦。

[!TIP] 你也可以使用 --format csv 选项获得 .csv 兼容输出:MSSQLand.exe localhost -c token --format csv --silent procedures > procedures.csv

🤝 贡献

欢迎并感谢任何贡献!无论是修复错误、添加新功能、改进文档还是分享反馈,你的努力都很有价值且能带来改变。 开源依赖于协作和认可。无论是大是小,贡献都有助于改进工具及其社区。你的时间和努力真正受到重视。

在这里,没有人会从 Git 历史中被抹去。这里无需害怕。没有人会不遵守开源协作精神而复制粘贴你的代码。

请参阅 CONTRIBUTING.md 以获取详细的入门指南。

🥚 起源

如果你想知道为什么存在这个工具,而不是作为其他 SQL Server 项目的贡献,请参阅 ORIGIN.md。

⚠️ 免责声明

本工具严格仅用于防御性安全研究、教育和授权的渗透测试。 在针对任何你不拥有的系统运行此软件之前,你必须拥有明确的书面授权。

本工具仅用于教育目的,旨在帮助安全专业人员在授权参与中理解和测试 SQL Server 环境的安全性。

可接受的环境包括:

  • 你控制的私人实验室环境(本地虚拟机、隔离网络)。
  • 经认可的学习平台(CTF、Hack The Box、OffSec 考试场景)。
  • 具有书面客户同意的正式渗透测试或红队参与。

滥用本项目可能导致法律诉讼。

⚖️ 法律声明

在现实环境或未获得系统所有者明确许可的情况下,未经授权使用本工具的任何行为均被严格禁止,并可能违反法律和道德标准。本工具的创建者和贡献者不对任何误用或造成的损害负责。

请负责任且合乎道德地使用。始终遵守法律并获得适当的授权。

下载工具