블로그로 돌아가기
·10분 분량·productdevbook

Mac 앱이 네트워크로 사용자를 감시하는지 알아내는 법

필요 이상으로 자주 본사로 통신하는 Mac 앱을 분간하는 현실적인 가이드입니다. 잡음과 실제 감시 행위를 구분하는 신호들을 다룹니다.

  • Privacy
  • Security
  • macOS
  • Network monitoring

화면 녹화 앱을 설치하고, 그것이 요청하는 권한을 부여하고, 일주일 후 매일 밤 새벽 3시에 몇백 킬로바이트를 전송하고 있다는 것을 알아챕니다. 스파이 행위를 하고 있나요? 아마 아닙니다. 가입하지 않은 무언가를 하고 있나요? 가능합니다. Mac 앱이 네트워크에서 스파이 행위를 하고 있는지에 대한 질문은 실제 답을 가지고 있고, 그것은 "예" 또는 "아니오"가 아닙니다 — "실제로 무엇이 컴퓨터를 떠나고 있고, 어디로 가고 있고, 그것이 앱이 하겠다고 말한 것과 일치하는가"입니다.

이는 기술적인 글이지 편집증이 아닙니다. 대부분의 앱은 괜찮습니다. 일부 앱은 시끄럽습니다. 매우 적은 수가 해서는 안 되는 일을 합니다. 목표는 기분이 아니라 증거로 그것들을 구별하는 것입니다.

텔레메트리 대 감시 — 같지 않습니다

종종 함께 묶이는 매우 다른 두 가지:

  • 텔레메트리. 앱이 익명-비슷한 사용 데이터를 보고합니다. 기능 카운트, 충돌 로그, 설치 정보, 때때로 거친 인구 통계. 보통 프라이버시 정책에 공개됩니다. 종종 옵트아웃 가능합니다. 일반적으로 악의적이지 않습니다, 짜증날 때도 그렇습니다.
  • 감시. 앱이 콘텐츠를 유출합니다 — 입력한 것, 연 파일, 화면에 있는 것, 연락처, 카메라 입력 — 공개 없이 또는 의도적으로 모호한 공개로 서버에. 이는 주류 Mac App Store 앱에서는 드물지만 일어납니다, 특히 불분명한 수익화가 있는 무료 앱에서.

대역폭 모니터는 네트워크 활동의 양과 타이밍을 보여줄 수 있습니다. 암호화된 연결의 콘텐츠는 알려줄 수 없습니다. 공개된 동작과 관찰된 동작 사이의 불일치는 보통 네트워크에서 스파이 행위를 하는 Mac 앱을 표시하기에 충분합니다 — 또는 더 자주, 의심스러워 보이던 것이 실제로는 평범한 것이라는 것을 확인하기에 충분합니다.

네트워크에서 스파이 행위를 하는 Mac 앱의 신호

더 가까이 살펴볼 만한 패턴은 다음과 같습니다.

영업 외 시간 업로드

자고 있을 때 새벽 3시에 데이터를 업로드하는 앱, 어떤 사용자 동작도 그것을 트리거할 수 없을 때 — 질문을 받을 만합니다. 일부 정당한 이유가 존재합니다(분석 일괄 처리, 오류 로그 업로드, 콘텐츠 동기화). 하지만 녹화 기능이 사용 중이 아닌데 새벽 3시에 80MB를 업로드하는 화면 녹화기는 적어도 물어볼 만합니다.

지속적인 재연결

장수 연결을 유지하거나 몇 초마다 재연결하는 앱은 라이브 통신을 하고 있습니다. 채팅 앱과 협업 도구(Slack, Discord, Figma)는 이것이 필요합니다. PDF 리더는 그렇지 않습니다.

지속적인 느린 업로드

5~20KB/s의 지속적인 흐름은 텔레메트리 스트리밍의 지문입니다. 그것이 키스트로크인지, 화면 프레임인지, 그저 분석 이벤트인지는 앱에 따라 다릅니다. 그 뒤에 무엇이 있는지 알 만합니다.

많은 다른 호스트로의 연결

대부분의 정당한 앱은 적은 수의 백엔드와 통신합니다 — 자체 서버, 어쩌면 한 분석 제공자, 어쩌면 한 CDN. 30개의 다른 호스트와 통신하는 앱은 많은 서드파티 SDK를 사용하거나(광고 지원 앱에 일반적) 더 흥미로운 무언가를 하고 있습니다.

알려지지 않은 IP 범위로의 암호화된 목적지

거의 모든 현대 앱이 HTTPS를 사용하므로, 암호화 자체는 의심스럽지 않습니다. 흥미로운 것은 어느 호스트인지입니다. 자체 도메인에 더해 Cloudflare CDN과 Apple 분석 엔드포인트와 통신하는 앱은 정상입니다. 개발자와 무관한 국가의 맨 IP 주소와 통신하는 앱은 적어도 호기심을 자아냅니다.

실제로 볼 수 있는 것과 없는 것

macOS의 앱별 대역폭 모니터는 다음을 제공합니다.

  • 프로세스 이름(그리고 적절히 귀속될 때 도우미 프로세스).
  • 시간에 걸친 보낸 바이트와 받은 바이트.
  • 라이브 속도, 기록 포함.
  • 종종 연결 수.

다음을 제공하지 않습니다.

  • 암호화된 연결의 콘텐츠.
  • 추가 도구 없이 목적지 도메인 또는 IP.
  • 앱이 마이크, 화면, 또는 키스트로크를 읽고 있는지 여부.

목적지 측면에 대해서는, lsof -i -n -P가 프로세스당 현재 열린 연결을 보여줍니다. 도메인 해석에 대해서는, 그것을 DNS 로그 또는 Little Snitch 같은 도구와 짝지을 수 있습니다. 콘텐츠에 대해서는, 설치된 루트 인증서가 있는 중간자 프록시가 필요할 것이고, 이는 대부분의 사람이 원하는 것보다 더 침입적인 설정입니다.

대부분의 사용자에게 현실적인 스택은 다음과 같습니다.

  1. 언제얼마나를 위한 메뉴 바 대역폭 모니터.
  2. 앱이 무엇에 접근할 수 있는지를 위한 macOS의 프라이버시 권한 패널.
  3. 그것이 누구와 통신하고 있는지를 위한 가끔의 lsof.

그것이 중요한 거의 모든 것을 잡기에 충분합니다.

실용적인 조사 루틴

앱의 동작이 의심스럽게 만든다면:

1. 기준선 얻기

개입 없이 일주일 동안 앱을 지켜보세요. 정상 업로드 패턴은 무엇인가요? 언제 데이터를 전송하나요? 하루에 얼마나? 기준선 없이는 모든 급증이 의심스러워 보입니다. 기준선과 함께라면, 진짜 이상만 두드러집니다.

2. 프라이버시 권한 확인

시스템 설정 → 개인정보 보호 및 보안. 다음을 보세요.

  • 전체 디스크 접근(매우 강력함 — 대부분의 앱은 이것을 필요로 하지 않음).
  • 화면 녹화.
  • 손쉬운 사용.
  • 카메라, 마이크.
  • 파일 및 폴더.

교차 참조하세요: 이 앱의 명시된 목적이 이 권한을 요구하는가? 메모 앱은 화면 녹화가 필요하지 않습니다. 키보드 유틸리티는 전체 디스크 접근이 필요하지 않습니다.

3. 네트워크 목적지 확인

앱이 호기심을 일으킨 어떤 일을 하는 동안 lsof -i -n -P | grep AppName을 실행하세요. 원격 호스트를 보세요. 비정상적으로 보이는 어떤 것이든 역방향 DNS 또는 WHOIS 조회를 하세요.

4. 프라이버시 정책 읽기

네, 지루합니다. 하지만 관련 질문은 "정책이 관찰하는 것을 공개하는가"입니다. 앱이 일일 텔레메트리를 업로드하고 정책이 "익명 사용 데이터를 수집한다"고 말한다면, 그것은 일관됩니다. 앱이 일일 텔레메트리를 업로드하고 정책이 데이터 수집에 대해 아무것도 말하지 않는다면, 그것은 불일치입니다.

자기 컴퓨터에서 이를 지켜보기

ova는 라이브 앱별 속도와 과거 타임라인을 보여주는 메뉴 바 대역폭 모니터입니다. 이 글의 종류의 조사를 위해 중요한 것은:

  • 도우미 프로세스를 올바르게 처리하는 앱별 귀속(그래서 Chrome Helper가 자체 행이 아님).
  • 스크럽할 수 있는 기록, 그래서 "지난 화요일 새벽 3시에 이 앱이 무엇을 했는가"가 답이 있음.
  • 로컬 전용 데이터, 그래서 클라우드 모니터링 서비스에 넘겨서 보호하려는 바로 그 정보를 공유하지 않음.
설계상 로컬 전용
ova는 앱별 샘플 데이터를 디스크에 로컬로 저장합니다. 텔레메트리 없음, 클라우드 동기화 없음, 계정 없음. 모니터링 도구 자체가 보는 것을 업로드한다면, 프라이버시 우려를 모니터링하는 요점이 훼손됩니다.

정상이 무엇인가 — 몇 가지 예

모르는 경우 의심스러워 보이는 일부 앱:

  • mdworker_shared. macOS Spotlight 인덱서. 백그라운드 작업, 네트워크가 무겁지 않음.
  • trustd. SSL 인증서를 검증합니다. Apple 서버와 통신합니다. 정상.
  • apsd. Apple Push 서비스. Apple과의 장수 연결을 유지합니다. 정상.
  • nsurlsessiond. 백그라운드 네트워크 작업 스케줄러. 많은 앱이 이를 통해 업로드/다운로드를 큐잉합니다. 원본 앱이 아니라 워커로 나타납니다.
  • syncdefaultsd. iCloud를 통해 환경설정을 동기화합니다. 낮은 볼륨, 자주.
  • Dropbox / Google Drive / OneDrive. 동기화 클라이언트. 높은 볼륨, 의심스럽지 않음.
  • Slack Helper (Renderer). Slack의 도우미 프로세스. 그것들이 많이 있습니다. 함께 Slack의 트래픽을 차지합니다.

프로세스를 인식하지 못한다면, 따옴표로 정확한 이름을 검색하세요 — "process_name" macOS — 그러면 보통 5분 안에 명확한 답을 찾을 것입니다.

앱이 온라인에서 실제로 무엇을 하는지 보세요

ova는 한눈에 볼 수 있는 메뉴 바 대역폭 모니터입니다 — 로컬, 서명, 약 3MB. 계정 없음, 클라우드 없음.

macOS용 다운로드

정말로 잘못되어 보일 때

일주일 동안 앱을 지켜보았고, 패턴이 명시된 목적과 일치하지 않고, 프라이버시 정책이 보고 있는 것을 언급하지 않고, lsof가 말이 되지 않는 호스트로의 연결을 보여줍니다. 이제 어떻게 해야 하나요?

순서대로:

  1. 앱을 종료하고 제거하세요. 휴지통으로 끌어다 놓는 것이 항상 충분하지는 않습니다 — 많은 앱이 지속되는 LaunchAgent나 LaunchDaemon을 설치합니다. AppCleaner 같은 도구가 도움이 됩니다. ~/Library/LaunchAgents/Library/LaunchAgents의 수동 검사가 더 철저합니다.
  2. 가지고 있던 모든 프라이버시 권한을 취소하세요.
  3. 신고할지 결정하세요. Apple은 Mac App Store 신고를 진지하게 받아들입니다. Apple 피드백 어시스턴트와 App Store 신고 흐름이 적절한 채널입니다.
  4. 앱을 계속 사용할 컴퓨터에서 방화벽 수준에서 "차단"하려고 하지 마세요. 그것은 방화벽 사용 사례입니다(Little Snitch 영역). 모니터는 가시성을 위한 것입니다. 차단하고 싶다면 차단 도구를 사용하세요. ova는 모니터이지 방화벽이 아닙니다.

마무리

대부분의 앱은 괜찮습니다. 일부는 시끄럽습니다. 적은 수가 해서는 안 되는 선을 넘습니다. 네트워크에서 스파이 행위를 하는 Mac 앱을 발견하는 것은 편집증이 아닙니다 — 위생입니다. 일주일 동안 컴퓨터를 지켜보고, 기준선을 개발하면, 비정상이 노력 없이 두드러집니다.

ova를 설치하고, 조용히 실행되게 두면, 다음번에 앱이 잘못된 느낌이 들 때 직감 대신 데이터를 갖게 될 것입니다.