Macアプリがネットワーク経由でスパイしているかを見抜く方法
本来必要ない通信を頻繁に行うMacアプリを見抜く現実的なガイド。ノイズと本物の監視を分けるシグナルを解説します。
- Privacy
- Security
- macOS
- Network monitoring
画面録画アプリをインストールし、要求された権限を与え、1週間後に毎晩午前3時に数百キロバイト転送していることに気づきます。スパイしているのか? おそらく違う。同意していない何かをしているか? 可能性はある。Macアプリがネットワークでスパイしているかの問いには本物の答えがあり、それは「はい」か「いいえ」ではなく——「実際何がマシンを離れて、どこへ行くのか、それはアプリが言ったことと一致するか」です。
これは技術記事であって、妄想記事ではありません。ほとんどのアプリは問題なし。少数のアプリはおしゃべり。非常に少数はすべきでないことをします。雰囲気ではなく証拠で見分けるのが目標です。
テレメトリ vs 監視——同じではない
しばしば一緒くたにされる2つの非常に異なるもの:
- テレメトリ。 アプリが匿名っぽい使用データを報告する: 機能カウント、クラッシュログ、インストール情報、時に粗いデモグラフィック。通常プライバシーポリシーで開示。しばしばオプトアウト可能。煩わしくとも一般的に悪意はない。
- 監視。 アプリがコンテンツを流出させる——入力したもの、開いたファイル、画面に映るもの、連絡先、カメラ入力——を、開示なしまたは故意に曖昧な開示でサーバへ。これはメインストリームのMac App Storeアプリではまれですが、特に収益化が不明確な無料アプリで起こります。
通信量モニターはネットワーク活動の量とタイミングを見せられます。暗号化された接続のコンテンツは見せられません。開示された挙動と観察された挙動の不一致は、Macアプリがネットワークでスパイしているとフラグを立てるのに通常十分です——あるいは、より頻繁に、疑わしく見えたものが実は平凡だと確認するのに。
Macアプリがネットワークでスパイしている兆候
詳しく見る価値のあるパターン。
時間外アップロード
寝ているときの午前3時、ユーザのアクションが何もトリガーできないのにデータをアップロードするアプリは質問に値します。正当な理由(分析バッチ処理、エラーログアップロード、コンテンツ同期)もありますが、録画機能を使っていない画面録画アプリが午前3時に80MBアップロードするのは少なくとも問う価値あり。
持続的な再接続
長く生きた接続を保つか数秒ごとに再接続するアプリはライブ通信をしています。チャットアプリとコラボレーションツール(Slack、Discord、Figma)はこれが必要。PDFリーダーは違います。
持続的な遅いアップロード
5〜20KB/sの細流は、ストリーミングテレメトリの指紋。それがキーストロークか、画面フレームか、ただの分析イベントかはアプリ次第。背後にあるものを知る価値あり。
多くの異なるホストへの接続
ほとんどの正当なアプリは少数のバックエンドと話します——自分のサーバ、おそらく1つの分析プロバイダ、おそらく1つのCDN。30の異なるホストと話すアプリは、多くのサードパーティSDKを使っているか(広告サポートアプリで典型的)、より興味深いことをしているかのどちらか。
未知のIPレンジへの暗号化された宛先
ほぼすべてのモダンアプリはHTTPSを使うので、暗号化自体は疑わしくない。興味深いのはどのホストか。自分のドメイン+CloudflareのCDN+Apple分析エンドポイントと話すアプリは正常。開発者と無関係の国のむき出しIPアドレスと話すアプリは少なくとも好奇心をそそる。
実際に見えるもの、見えないもの
macOSのアプリ別通信量モニターが与えるもの:
- プロセス名(と適切に帰属されたヘルパープロセス)。
- 時間軸での送受信バイト。
- 履歴付きのライブレート。
- しばしば接続数。
与えないもの:
- 暗号化された接続のコンテンツ。
- 追加ツールなしでの宛先ドメインまたはIP。
- アプリがマイク、画面、キーストロークを読んでいるか。
宛先側には、lsof -i -n -Pがプロセス別に現在開いている接続を表示。ドメイン解決には、それをDNSログまたはLittle Snitchのようなツールと組み合わせる。コンテンツには、ルート証明書をインストールした中間者プロキシが必要で、ほとんどの人が望むより侵略的なセットアップです。
ほとんどのユーザの現実的なスタックは:
- いつとどれだけにメニューバー通信量モニター。
- アプリが何にアクセスできるかにmacOSのプライバシー権限パネル。
- 誰と話しているかに時々の
lsof。
それで重要なほぼすべてを捕まえるのに十分。
実用的な調査ルーチン
アプリの挙動が疑わしく感じたら:
1. ベースラインを取る
介入なしで1週間アプリを観察。通常のアップロードパターンは? いつデータを転送するか? 1日にどれだけか? ベースラインなしには、すべてのスパイクが疑わしく見えます。あれば、本物の異常だけが目立ちます。
2. プライバシー権限を確認
システム設定 → プライバシーとセキュリティ。見るもの:
- フルディスクアクセス(非常に強力——ほとんどのアプリは要らない)。
- 画面録画。
- アクセシビリティ。
- カメラ、マイク。
- ファイルとフォルダ。
相互参照: このアプリの述べた目的にこれらの権限が必要か? メモ取りアプリは画面録画を必要としません。キーボードユーティリティはフルディスクアクセスを必要としません。
3. ネットワーク宛先を確認
好奇心をそそった何かをアプリがしている間にlsof -i -n -P | grep AppNameを実行。リモートホストを見ます。異常に見えるものに逆引きDNSまたはWHOISルックアップ。
4. プライバシーポリシーを読む
はい、退屈です。ただ、関連する問いは「ポリシーが観察しているものを開示しているか」です。アプリが毎日テレメトリをアップロードしポリシーが「匿名使用データを収集」と言うなら一致。アプリが毎日テレメトリをアップロードしポリシーがデータ収集について何も言わないなら不一致。
自分のマシンでこれを観察する
ovaはライブのアプリ別レートと過去のタイムラインを表示するメニューバー通信量モニターです。本稿のような調査には、重要なのは:
- ヘルパープロセスを正しく扱うアプリ別帰属(Chrome Helperが独自の行にならない)。
- スクラブできる履歴で「先週火曜午前3時にこのアプリが何をしたか」に答えがあること。
- ローカル限定データなので、保護しようとするまさにその情報をクラウドモニタリングサービスに渡して共有しない。
正常なもの——いくつかの例
知らないと疑わしく見える一部のアプリ:
mdworker_shared。 macOSのSpotlightインデクサ。バックグラウンド作業、ネットワーク重くない。trustd。 SSL証明書を検証。Appleサーバと話す。正常。apsd。 Apple Push Service。Appleへの長く生きた接続を保つ。正常。nsurlsessiond。 バックグラウンドネットワークタスクスケジューラ。多くのアプリがアップロード/ダウンロードをこれ経由でキューする。元のアプリではなくワーカーとして表示。syncdefaultsd。 環境設定をiCloud経由で同期。低量、頻繁。Dropbox/Google Drive/OneDrive。 同期クライアント。高量、疑わしくない。Slack Helper (Renderer)。 Slackのヘルパープロセス。多数。合わせるとSlackのトラフィックを占める。
プロセスを認識しないなら、引用符付きの正確な名前で検索——"process_name" macOS——通常5分以内に明確な答えが見つかります。
アプリがオンラインで実際に何をしているかを見る
ovaは一目で分かるメニューバー通信量モニター——ローカル、署名済み、約3MB。アカウントなし、クラウドなし。
本当におかしく見えるとき
アプリを1週間観察し、パターンが述べた目的と一致せず、プライバシーポリシーが見ていることに触れず、lsofが筋の通らないホストへの接続を表示する。今度は?
順序:
- アプリを終了して削除。 ゴミ箱にドラッグは常に十分ではない——多くのアプリはLaunchAgentsやLaunchDaemonsをインストールし、それらは残ります。AppCleanerのようなツールが助けます。
~/Library/LaunchAgentsと/Library/LaunchAgentsの手動検査がより徹底的。 - 持っていたプライバシー権限を取り消す。
- 報告したいか決める。 AppleはMac App Storeレポートを真剣に受け取ります。Apple Feedback AssistantとApp Storeレポートフローが正しいチャンネル。
- アプリを使い続けるマシンでファイアウォールレベルで「遮断」しようとしない。 それはファイアウォールのユースケース(Little Snitch領域)。モニターは可視性のため。遮断したいなら遮断ツールを使う。ovaはファイアウォールではなくモニターです。
まとめ
ほとんどのアプリは問題なし。少数はおしゃべり。一部はすべきでない線を越える。Macアプリがネットワークでスパイしているのを発見することは妄想ではない——衛生です。1週間マシンを観察し、ベースラインを構築すれば、異常は努力なしに目立ちます。
ovaをインストールし、静かに動かしましょう。次にアプリがおかしく感じたら、勘ではなくデータを持つことになります。