
Windows 名前付きパイプフッキングツールキット
Windowsの名前付きパイプ通信をインターセプトするFridaベースのプロジェクト
このプロジェクトは、特定のWinAPI関数をフックし、WebSocketを使用してHTTPプロキシに転送することでIPC通信をインターセプトすることを目的としています。
名前付きパイプへの読み書きは、さまざまな関数で発生する可能性があります。このセクションでは、WriteFileは名前付きパイプへの書き込みを表し、ReadFileは名前付きパイプからの読み取りを表します。
インターセプトされると、書き込まれるデータは次のスキーマに従います。
WriteFile --> frida hook --> python process --> websocket client --> HTTP Proxy --> websocket server --> python process --> frida hook --> WriteFile
反対側では、プロセスによって読み取られるデータは次のスキーマに従います。
ReadFile --> frida hook --> python process --> websocket server --> HTTP Proxy --> websocket client --> python process --> frida hook --> ReadFile
アクションが名前付きパイプへの書き込みの場合、HTTPプロキシは「to the server」というメッセージを受信し、アクションが名前付きパイプからの読み取りの場合、「to the client」というメッセージを受信します。
ポート8090にプロキシを追加し、すべてのインターフェースでリッスンします
make buildを使用してfridaエージェントスクリプトをビルドします。エージェントはagent/dist/に配置されます。
backend/*.pyとbackend/requirements.txt(バックエンド)およびagent/dist/agent.js(エージェント)をWindowsホストにコピーしますpy -m pip install -r requirements.txtpy .\main.py <pid_of_target> .\agent.js --ws-port 9090 --ws-host <ip_of_windows> --http-proxy-port 8090 --http-proxy-host <ip_of_burp> --handle-regexes '.*' --log-level INFOHTTPプロキシに送信されるデータは、docs/format.mdで定義された特定の形式に従います。このカスタム形式を操作するためのツールはtools/に提供されています。
メタデータを変更すると、プロジェクトがメッセージを認識して正しい名前付きパイプにルーティングできなくなる可能性があります。
fridaスクリプトは応答を無期限に待機するため、メッセージをドロップするとプロセスが無期限にハングする可能性があります。
新しいメッセージの注入は、現在プロジェクトではサポートされていません。
Fridaはエージェントを開発するためのTypeScriptバインディングを提供します。devDependenciesがインストールされると、VSCodeはタイプを自動的に認識するはずです。
開発環境を簡単にセットアップするためのMakefileターゲットmake dev-envが提供されています。