すべてのアプリケーションを閉じると、tcpdumpは、私のMacが散発的に少数のIPにパケットを送信していることを明らかにします。それらは、データペイロードがなく、異常なTCPシーケンス番号(秘密チャネルなど)を持つパケットのバーストです。コマンドラインまたはプログラムのいずれかからこれらのパケットを発信しているプロセスを特定する方法はありますか?
注:私はipfwを使用して宛先IPを出力フィルター処理したので、データの漏えいについて心配する必要はありません。
すべてのアプリケーションを閉じると、tcpdumpは、私のMacが散発的に少数のIPにパケットを送信していることを明らかにします。それらは、データペイロードがなく、異常なTCPシーケンス番号(秘密チャネルなど)を持つパケットのバーストです。コマンドラインまたはプログラムのいずれかからこれらのパケットを発信しているプロセスを特定する方法はありますか?
注:私はipfwを使用して宛先IPを出力フィルター処理したので、データの漏えいについて心配する必要はありません。
私は怠惰になり、Little Snitchをインストールするだけです(無料トライアルが利用可能です);)
ただし、TCP接続の場合netstat
、疑わしいパケットの送信中または送信直後にチェックすると、原因を簡単に見つけることができます。
そして、本当に凝ったものにしたいのなら、あなたが望むことをするカーネル拡張を自分で書いてください。Appleには、あなたが探していることを実行する素敵なガイドとサンプルコードさえあります。
Appleはtcpdumpに変更を加えたため、MacOSXのマニュアルページからいくつかのメタデータオプションをサポートします。
-k Control the display of packet metadata via an optional metadata_arg argument. This is useful when displaying packet saved in the pcap-ng file format
or with interfaces that support the PKTAP data link type.
By default, when the metadata_arg optional argument is not specified, any available packet metadata information is printed out.
The metadata_arg argument controls the display of specific packet metadata information using a flag word, where each character corresponds to a type
of packet metadata as follows:
I interface name (or interface ID)
N process name
P process ID
S service class
D direction
C comment
This is an Apple modification.
したがって、-k Nを指定してtcpdumpを実行すると、プロセス名が表示されます。
19:12:51.823518 pid Google Chrome.313 svc BK IP 192.168.100.191.49424 > 216.58.209.133.443: Flags [.], ack 74, win 4093, options [nop,nop,TS val 507317615 ecr 3185588461], length 0
19:12:51.823518 pid Google Chrome.313 svc BK IP 192.168.100.191.49424 > 216.58.209.133.443: Flags [.], ack 329, win 4088, options [nop,nop,TS val 507317615 ecr 3185588462], length 0
同じ質問がありましたが、1つの例外がありました。TCPトラフィックがlo0にあり、確立されていませんでしたが、一部のプロセスがローカルホストと一部のポートに接続しようとしていました。私の仕事は、誰が接続しようとしているのかを特定することでした。リトルスニッチはその時点では役に立たなかった。
nettop
しかし、それは非常に役立つことがわかりました。その出力にプロセスが常に変化するTCP接続状態SynSent/Fin / etcを見つけ、それが私が探していたものでした。