Wiresharkを使用して特定のプロセス ID に基づいてTCP / SSLストリームをフィルタリング/追跡する方法はありますか?
11 に答える
別の方法を探していて、使用している環境が Windows である場合に備えて、Microsoft のNetwork Monitor 3.3 は適切な選択です。プロセス名の列があります。コンテキスト メニューを使用してフィルターに簡単に追加し、フィルターを適用します。いつものように、GUI は非常に直感的です...
方法がわかりません。PID は (一般的に言えば) 回線上に到達しません。さらに、Wireshark を使用すると、回線上にあるもの (回線上で通信しているすべてのマシン) を見ることができます。とにかく、プロセス ID は異なるマシン間で一意ではありません。
たとえば、wireshark のポート番号をnetstatのポート番号と一致させると、そのポートでリッスンしているプロセスの PID がわかります。
Microsoft Message Analyzer v1.4 を使用する
フィールド チューザーから ProcessId に移動します。
Etw
-> EtwProviderMsg
--> EventRecord
---> Header
----> ProcessId
右クリックして列として追加
Windows では、これを行う実験的なビルドがあり、メーリング リストのFilter by local process nameで説明されています。
これは、特定のプロセスが接続しようとする場所を監視するために実行できる重要なことであり、Linux でこれを行う便利な方法はないようです。ただし、いくつかの回避策が考えられるため、言及する価値があると思います。
インターネットにアクセスせずにプログラムを実行できるようにする、 nonetというプログラムがあります (私のシステムにはほとんどのプログラム ランチャーがセットアップされています)。setguid を使用してグループ nonet でプロセスを実行し、このグループからのすべての接続を拒否するようにiptablesルールを設定します。
更新: 今では、さらに単純なシステムを使用しています。ferm を使用して読み取り可能な iptables 構成を簡単に作成し、プログラムを使用sg
して特定のグループでプログラムを実行するだけです。iptables を使用すると、トラフィックを別のインターフェイスにルーティングしたり、ポート上のローカル プロキシにルーティングしたりできます。これにより、wireshark でフィルタリングしたり、iptables から直接パケットを記録したりできますトラフィックをチェックしています。
グループでプログラムを実行し、実行期間中 iptables で他のすべてのトラフィックをカットするように適応させることはそれほど複雑ではありません。その後、このプロセスからのトラフィックのみをキャプチャできます。
もし私がそれを書くようになったら、ここにリンクを投稿します。
別の注意として、いつでも仮想マシンでプロセスを実行し、正しいインターフェイスをスニッフィングして接続を分離することができますが、それは非常に劣ったソリューションになります...
場合によっては、プロセス ID でフィルタリングできないことがあります。たとえば、私の場合、1 つのプロセスからのトラフィックを盗聴する必要がありました。しかし、私はその構成ターゲットマシンのIPアドレスで見つけ、フィルターip.dst==someip
と出来上がりを追加しました。いずれにしても機能しませんが、一部の人にとっては便利です。
Wireshark で次のコマンド例を使用して、ポート番号を確認できます。
tcp.port==80
tcp.port==14220