SQLRecon 是一款专为攻击性侦察和后渗透阶段设计的 Microsoft SQL Server 工具集。如需详细了解每个技术的使用方法,请参考维基。
您可以从 releases 页面下载 SQLRecon 的副本。也可以自行编译解决方案——克隆仓库、双击解决方案文件并生成即可,过程简单直接。
针对防御者,我们还提供了预防、检测与缓解指南。
欢迎阅读我在 IBM Security Intelligence 网站上的博文。如果您更喜欢视频,可以观看我在 Black Hat 的演讲。
枚举模块不需要提供身份验证提供者。这些模块必须传递到枚举模块标志(/e:, /enum:)中。维基页面有关于使用枚举模块的详细信息。```
Info - Show information about the SQL server.
/h:, /host -> SQL server hostname or IP. Multiple hosts supported.
/port: -> (OPTIONAL) Defaults to 1434 (UDP).
/t:, timeout: -> (OPTIONAL) Defaults to 3s.
SqlSpns - Use the current user token to enumerate the AD domain for MSSQL SPNs. /d:, /domain: -> (OPTIONAL) NETBIOS name or FQDN of domain.
# 认证提供者
SQLRecon 支持多种认证提供者(`/a:, /auth:`),以便与 Microsoft SQL Server 进行交互。```
WinToken - Use the current users token to authenticate against the SQL database
/h:, /host: -> SQL server hostname or IP
WinDomain - Use AD credentials to authenticate against the SQL database
/h:, /host: -> SQL server hostname or IP. Multiple hosts supported.
/d:, /domain: -> NETBIOS name or FQDN of domain.
/u:, /username: -> Username for domain user.
/p:, /password: -> Password for domain user.
Local - Use local SQL credentials to authenticate against the SQL database
/h:, /host: -> SQL server hostname or IP. Multiple hosts supported.
/u:, /username: -> Username for local SQL user.
/p:, /password: -> Password for local SQL user.
EntraID - Use Azure EntraID credentials to authenticate against the Azure SQL database
/h:, /host: -> SQL server hostname or IP. Multiple hosts supported.
/d:, /domain: -> FQDN of domain (DOMAIN.COM).
/u:, /username: -> Username for domain user.
/p:, /password: -> Password for domain user.
AzureLocal - Use local SQL credentials to authenticate against the Azure SQL database
/h:, /host: -> SQL server hostname or IP. Multiple hosts supported.
/u:, /username: -> Username for local SQL user.
/p:, /password: -> Password for local SQL user.
Pth - Authenticate using an NT hash (pass-the-hash) over raw TDS/NTLM. Elevated privileges or SeImpersonate is not required.
/h:, /host: -> SQL server hostname or IP. Multiple hosts supported.
/d:, /domain: -> NETBIOS domain name.
/u:, /username: -> Domain username.
/hash: -> NT hash (32 hex chars, 8846f7eaee8fb117ad06bdd830b7586c) or LM:NT format.
/h: 或 host: 标志是必需的,允许指定一个或多个 SQL 服务器。如果要针对多个 SQL 服务器执行模块,请用逗号分隔主机,例如 /h:SQL01,10.10.10.2,SQL03。master 数据库,但可以通过 数据库 (/database:) 标志提供自定义数据库名称来更改此项。/debug 标志是可选的,它会显示模块将要执行的所有 SQL 查询,而不会在远程主机上实际执行它们。相关示例可以在 wiki 中找到。1433 连接数据库,但可以通过 /port: 标志更改此项。3 秒,但可以通过提供超时值(/t: 或 /timeout:)更改此项,该值表示终止连接尝试前的秒数。/v 或 /verbose 标志是可选的,它会在远程主机上执行模块之前显示该模块将要执行的所有 SQL 查询。相关示例可以在 wiki 中找到。请注意,EntraID 身份验证提供程序要求 Azure Active Directory 身份验证库(ADAL)或 Microsoft 身份验证库(MSAL)存在于运行 SQLRecon 的系统上。这是用于 Azure EntraID 身份验证和授权功能的。
SQL 模块针对一个或多个 Microsoft SQL server 实例执行。这些模块必须通过模块标志(/m: 或 /module:)传入。