
攻撃的偵察とポストエクスプロイテーション用に設計されたC# MS SQLツールキット。
SQLRecon は、攻撃的な偵察とポストエクスプロイテーションのために設計された Microsoft SQL Server ツールキットです。各テクニックの使用方法の詳細については、wiki を参照してください。
SQLRecon のコピーは リリース ページからダウンロードできます。あるいは、ご自身でソリューションをコンパイルしてもかまいません。リポジトリをクローンし、ソリューションファイルをダブルクリックしてビルドするだけなので、非常に簡単です。
予防、検出、緩和のガイダンス も、ディフェンダーの皆様のために提供されています。
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.
# Authentication Providers
SQLReconは、Microsoft SQL Serverと対話するための多様な認証プロバイダー(`/a:, /auth:`)をサポートしています。```
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.
/h:, host:)は必須で、1つ以上のSQL Serverを指定できます。複数のSQL Serverに対してモジュールを実行する場合は、ホストをカンマで区切ります。例: /h:SQL01,10.10.10.2,SQL03。master データベースに接続しますが、データベースフラグ(/database:)でカスタムデータベース名を指定することで任意に変更できます。/debug フラグは省略可能で、モジュールによって実行されるすべてのSQLクエリを、リモートホスト上で実際に実行せずに表示します。この例は、ウィキにあります。1433 を介してデータベースに接続しますが、/port: フラグを使用して任意に変更できます。3 秒ですが、接続試行を終了するまでの秒数を示すタイムアウト値(/t:, /timeout:)を指定することで、この値を任意に変更できます。/v, /verbose フラグは省略可能で、モジュールがリモートホスト上で実行する前に、実行されるすべてのSQLクエリを表示します。この例は、ウィキにあります。なお、EntraID 認証プロバイダーを使用するには、SQLRecon を実行するシステムに Azure Active Directory 認証ライブラリ(ADAL)または Microsoft 認証ライブラリ(MSAL)が存在している必要があります。これは、Azure EntraID の認証および承認機能のためです。
SQL モジュールは、1つ以上の Microsoft SQL Server インスタンスに対して実行されます。これらのモジュールは、モジュールフラグ(/m:, /module:)に渡す必要があります。