
攻撃的な偵察とポストエクスプロイトのために設計されたC# MS SQLツールキット
SQLReconは、攻撃的な偵察とポストエクスプロイテーション用に設計されたMicrosoft SQL Serverツールキットです。各テクニックの使用方法の詳細については、wikiを参照してください。
SQLReconのコピーはreleasesページからダウンロードできます。あるいは、自分でソリューションをコンパイルしても構いません。リポジトリをクローンし、ソリューションファイルをダブルクリックしてビルドするだけなので、簡単です。
予防、検出、軽減のガイダンスも防御側の皆様のために提供されています。
私のブログ記事をIBM Security Intelligenceウェブサイトでチェックしてください。動画がお好みなら、Black Hatでのプレゼンテーションをご覧ください。
列挙モジュールは、認証プロバイダーを指定する必要がありません。これらのモジュールは列挙モジュールフラグ(/e:, /enum:)に渡す必要があります。wikiには列挙モジュールの使用方法の詳細があります。```
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:)は必須であり、1つ以上の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 Authentication Library (ADAL) または Microsoft Authentication Library (MSAL) がSQLReconを実行するシステムに存在する必要があることに注意してください。これはAzure EntraIDの認証および許可機能のためのものです。
SQLモジュールは、1つ以上のMicrosoft SQL Serverのインスタンスに対して実行されます。これらのモジュールは、モジュールフラグ(/m:, /module:)に渡す必要があります。