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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
IPCDump — BPFベースのLinux IPCトレーサー。パイプ、シグナル、Unixソケット、ループバック、疑似端末を対象とし、メタデータとコンテンツのキャプチャ、フィルタリング、JSON出力をサポート。 | Kitploit
ツール/GitHubGitHub/guardicore/ipcdump
動的分析 (サンドボックス)デバッガフォレンジックインシデントレスポンス
GitHubguardicore/ipcdump

IPCDump

BPFベースのLinux IPCトレーサー。パイプ、シグナル、Unixソケット、ループバック、疑似端末を対象とし、メタデータとコンテンツのキャプチャ、フィルタリング、JSON出力をサポート。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

ipcdump

アナウンス投稿

ipcdumpは、Linux上でプロセス間通信(IPC)をトレースするためのツールです。パイプ、FIFO、シグナル、Unixソケット、ループバックベースのネットワーキング、擬似端末など、一般的なIPCメカニズムのほとんどをカバーしています。マルチプロセスアプリケーションのデバッグに役立つツールであり、システム内のさまざまなコンポーネントがどのように相互に通信しているかを理解する簡単な方法でもあります。ipcdumpは、この通信のメタデータと内容の両方をトレースでき、特に短命なプロセス間のIPCのトレースに適しています。これは、straceやgdbのような従来のデバッグツールでは困難な場合があります。また、大量のイベントを選別するのに役立つ基本的なフィルタリング機能も備えています。 ipcdumpが収集する情報のほとんどは、カーネル内の主要な関数のkprobeとtracepointに配置されたBPFフックから取得されますが、/procファイルシステムから一部のブックキーピングデータも補充します。この目的のために、ipcdumpはbccフレームワーク向けのgolangバインディングを提供するgobpfを多用しています。

必要条件と使用方法

  • golang >= 1.15.6

テスト済みオペレーティングシステムとカーネル

Ubuntu 18.04 LTSUbuntu 20.04 LTS
4.15.0テスト済み未テスト
5.4.0未テストテスト済み
5.8.0未テストテスト済み*

*bccをソースからビルドする必要があります

ビルド

依存関係

  1. golangのインストール
root@kitploit:~
snap install go --classic

または 直接 golang website から

  1. 選択したオペレーティングシステムに応じて、iovisorの指示に従ってBCCをインストールします(通常、新しいバージョンではソースからビルドする必要があります)

ipcdumpのビルド

root@kitploit:~
git clone https://github.com/guardicore/IPCDump
cd IPCDump/cmd/ipcdump
go build

使用方法

root@kitploit:~
./ipcdump -h
Usage of ./ipcdump:
  -B uint
        max number of bytes to dump per event, or 0 for complete event (may be large). meaningful only if -x is specified.
  -D value
        filter by destination comm (can be specified more than once)
  -L    do not output lost event information
  -P value
        filter by comm (either source or destination, can be specified more than once)
  -S value
        filter by source comm (can be specified more than once)
  -c uint
        exit after <count> events
  -d value
        filter by destination pid (can be specified more than once)
  -f string
        <text|json> output format (default is text) (default "text")
  -p value
        filter by pid (either source or destination, can be specified more than once)
  -s value
        filter by source pid (can be specified more than once)
  -t value
        filter by type (can be specified more than once).
        possible values: a|all  k|signal  u|unix  ud|unix-dgram  us|unix-stream  t|pty  lo|loopback  lt|loopback-tcp  lu|loopback-udp  p|pipe
  -x    dump IPC bytes where relevant (rather than just event details).

ワンライナー

rootで実行:

root@kitploit:~
# dump all ipc on the system
./ipcdump

# dump signals sent between any two processes
./ipcdump -t kill

# dump loopback TCP connection metadata to or from pid 1337
./ipcdump -t loopback-tcp -p 1337

# dump unix socket IPC metadata and contents from Xorg
./ipcdump -t unix -x -S Xorg

# dump json-formatted pipe i/o metadata and first 64 bytes of contents
./ipcdump -t pipe -x -B 64 -f json

機能

  • パイプとFIFOのサポート
  • ループバックIPC
  • シグナル(通常およびリアルタイム)
  • Unixストリームとデータグラム
  • 疑似端末ベースのIPC
  • プロセスのPIDまたは名前に基づくイベントフィルタリング
  • 人間に優しいまたはJSON形式の出力

設計

ipcdumpは一連のコレクタで構成されており、各コレクタが特定のタイプのIPCイベントを担当します。例えば、IPC_EVENT_LOOPBACK_SOCK_UDP や IPC_EVENT_SIGNAL などです。

実際には、すべてのコレクタはkprobeとtracepointにアタッチされたbpfフックを使用して構築されています。ただし、それらの実装は完全に独立しています。情報が常にbpfから得られるとは限らないからです。とはいえ、異なるコレクタは共通のコードを共有する必要があるため、単一のbpfモジュールを共有する必要があります。この目的のために、単一のBpfBuilder(本質的にはbccコードの文字列を連結するラッパー)を共有し、各コレクタはそのビルダーに自身のコードを登録します。そして、完全なbccスクリプトがgobpfでロードされ、各モジュールが必要なフックを配置します。

現在、IPCコレクタ間で共有されるブックキーピングには2種類あります:

  • SocketIdentifier (internal/collection/sock_id.go) -- カーネルの struct sock* とそれを使用するプロセスとの間のマッピング。
  • CommIdentifier (internal/collection/comm_id.go) -- pid番号と対応するプロセス名 (/proc/<pid>/comm) の間のマッピング。

これらのブックキーピングは、特に短命なプロセスにとって重要です。この情報は後でユーザーモードで/procを解析して埋め込むこともできますが、イベントがハンドラに到達する頃には関連プロセスが消えていることがよくあります。とはいえ、/procから情報を埋め込むこともあります。これは主にipcdumpが実行される前に存在していたプロセスに対して行われます。この場合、プロセスの命名などのイベントはキャッチできません。SocketIdentifierとCommIdentifierは、bccコードと/proc解析の二重性を単一のAPIの背後に抽象化しようとしますが、完全にきれいではありません。ちなみに、超新しいバージョンのLinux(5.8)では、bpfイテレータがこのブックキーピングを完全に置き換えることができますが、後方互換性のために、今のところはフックとprocfsのパラダイムに固執するべきでしょう。

イベント出力は共通のEmitIpcEvent()関数を通じて行われ、この関数は標準的なイベント形式(送信元プロセス、宛先プロセス、メタデータのキーと値のペア、内容)を受け取り、統一された形式で出力します。イベント帯域幅を節約するため、コレクタは通常、-xフラグが指定されていない場合、IPC内容を出力しません。これはinternal/collection/ipc_bytes.go内のいくつかの華麗な前処理マジックによって行われます。

貢献

ぜひご参加ください!本当に重要なことはTODOを確認してください。ipcdumpの初期の作業のほとんどは、異なるカーネルバージョンやシンボルへの調整を含む可能性があります。

ツールをダウンロード