
mssqlproxyは、侵害されたMicrosoft SQL Serverを介してソケット再利用により制限された環境での横方向の移動を実行することを目的としたツールキットです。
mssqlproxy は、侵害されたMicrosoft SQL Serverを経由してソケット再利用を通じて制限された環境で横断移動(ラテラルムーブメント)を実行するためのツールキットです。クライアントには impacket とSQLサーバー上の sysadmin 権限が必要です。
続行する前に こちらの記事 をよくお読みください。
これは3つの部分から構成されています:
ライブラリをコンパイルするか、リリース (x64) からダウンロードできます。
コアDLLを生成するには、Visual Studio にプロジェクト (reciclador.sln) をインポートしてコンパイルしてください。
CLRアセンブリを生成するには、まずC#コンパイラを見つける必要があります:
Get-ChildItem -Recurse "C:\Windows\Microsoft.NET\" -Filter "csc.exe" | Sort-Object fullname -Descending | Select-Object fullname -First 1 -ExpandProperty fullname
次に、
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /target:library .\assembly.cs
2つのライブラリがコンパイルされたら、コアDLL (reciclador) をターゲットサーバーにアップロードします。
認証オプションは 元の mssqlclient と同じです。mssqlproxy のオプション:
proxy mode:
-reciclador path サーバー上のDLLが保存されているリモートパス
-install CLRアセンブリをインストール
-uninstall CLRアセンブリをアンインストール
-check CLRの準備ができているか確認
-start プロキシを起動
-local-port port ローカルでリッスンするポート
-clr local_path ローカルCLRのパス
-no-check-src-port 直接接続でない場合(例:プロキシ経由)に使用
また、(SQLシェル内で) ファイルのダウンロードとアップロードのための2つのコマンドも実装しています。プロキシ関連のコマンドは4つです:
-clr パラメータを指定して、ローカルDLLファイルから生成されたCLRを読み込む必要があります。-reciclador) を指定する必要があります。これは upload コマンドを使ってアップロードできます。-local-port が指定されていない場合、ポート1337/tcpでリッスンします。プロキシが起動したら、proxychains を接続できます ;)
注意点1: 非直接接続(例:中間にプロキシがある場合)を使用する場合は -no-check-src-port フラグが必要です。これにより、サーバーは送信元アドレスのみをチェックします。
注意点2: 現時点では、IPv4ターゲットのみサポートしています(DNSやIPv6アドレスはサポートしていません)。
注意点3: 注意して使用してください!現時点では、複数の同時接続を確立しようとするとMSSQLサービスがクラッシュします。
重要: クライアントでCtrl+Cを押してmssqlproxyを停止することが重要です。そうしないとサーバーがクラッシュし、手動でMSSQLサービスを再起動する必要があります。
Pablo Martinez (@xassiz), Juan Manuel Fernandez (@TheXC3LL) [ www.blackarrow.net - www.tarlogic.com ]
このプロジェクトに含まれるすべてのコードは、MITライセンスの条件に基づいてライセンスされています。mssqlclient.py は Impacket をベースとしています。