Mac이 느려져 활성 상태 보기를 열었더니 nsurlsessiond, photoanalysisd, trustd 같은 낯선 이름이 목록 위쪽에 보입니다. 설치한 기억은 없고 검색 결과도 서로 다른 답을 내놓습니다. 이 글에서는 정상 macOS 서비스와 실제로 조사할 필요가 있는 프로세스를 구분하는 네 가지 점검 방법을 설명합니다.
빠른 답변
이름이 낯선 Mac 프로세스 대부분은 정상적인 시스템 서비스지만, 이름만으로 안전하다고 결론 내릴 수는 없습니다. 먼저 실행 파일의 위치와 코드 서명이 유효하며 주장하는 신원과 일치하는지 확인하세요. 시스템처럼 보이는 이름이 임시 폴더나 사용자가 쓸 수 있는 폴더에서 실행되거나, 서명이 유효하지 않거나, 서명자가 예상과 다르면 조사해야 합니다. 다만 이것만으로 악성 여부가 증명되지는 않으므로 부모 프로세스, 지속성, 실제 동작도 함께 봐야 합니다. 활성 상태 보기는 서명 정보를 보여 주지 않지만 ProcXray에서는 전체 실행 경로와 함께 확인할 수 있습니다.
이름만으로 판단할 수 없는 이유
macOS는 bird, secd, distnoted, rapportd, hidd처럼 짧고 낯선 이름의 백그라운드 프로세스를 수백 개 실행합니다. 반대로 악성 프로그램도 자신을 WindowServer나 mdworker라고 부를 수 있습니다. 이름은 공격자가 가장 쉽게 복제할 수 있는 정보이므로 위치, 코드 신원, 실행 문맥이 더 중요합니다.
점검 1: 실행 파일은 어디에 있는가?
Catalina는 읽기 전용 시스템 볼륨을 도입했고, Big Sur는 여기에 Signed System Volume의 암호화 보호를 추가했습니다. 기본 보안 설정이 유지되는 한 실행 중인 소프트웨어가 /System/에 임의로 바이너리를 추가할 수 없습니다. System Integrity Protection도 다른 보호 영역의 변경을 제한합니다.
정상 시스템 소프트웨어가 흔히 있는 위치:
/System/Library/...— 시스템 프레임워크와 구성 요소/usr/libexec/— 여러 백그라운드 데몬/usr/sbin/,/usr/bin/— 시스템 유틸리티/sbin/—launchd를 포함한 핵심 도구/Applications/— 설치된 앱이 있는 곳이지만, 위치만으로 신뢰할 수는 없음
주의해서 볼 위치:
/tmp/,/var/tmp/,/private/tmp/— 장기간 실행되는 프로세스에는 이례적~/Library/,/Users/Shared/— 사용자가 쓸 수 있는 위치/usr/local/bin/,/opt/homebrew/bin/— Intel 및 Apple silicon의 일반적인 Homebrew 경로이며 안전성을 보장하지 않음
PID로 이름과 부모를 빠르게 확인하려면:
ps -o pid,ppid,user,comm -p <pid>
프로세스가 표시하는 명령행을 보려면:
ps -ww -o pid,ppid,user,args -p <pid>
comm, 특히 args는 단서일 뿐 신뢰할 수 있는 출처가 아닙니다. 프로세스가 ps에 표시되는 인수를 바꿀 수 있고 실제 실행 파일 경로가 항상 나타나는 것도 아닙니다. 활성 상태 보기의 열린 파일 및 포트에서 실행 파일을 찾을 수 있지만 전용 경로 열은 없습니다. Mac에서 실행 중인 프로세스 확인 방법도 참고하세요.
점검 2: 누가 서명했는가?
서명 무결성 검증과 서명 정보 표시는 별개의 작업입니다.
# 서명 무결성을 검증합니다. 성공하면 출력이 없습니다.
codesign --verify --strict --verbose=2 /usr/libexec/trustd
# 서명 정보를 표시합니다.
codesign -dvvv /usr/libexec/trustd
첫 번째 명령이 실제 검증을 수행하며 codesign -d만 실행하면 메타데이터만 표시됩니다. 출력은 macOS 버전과 바이너리에 따라 다릅니다.
- Apple 시스템 코드는 검증에 성공하고 보호된 시스템 경로에 있어야 합니다. Apple 인증서 체인, Apple 식별자 또는 플랫폼 서명 속성이 보일 수 있습니다. 많은 시스템 바이너리에는
TeamIdentifier가 없어도 정상입니다. - **
Authority=Developer ID Application: Company (AB12CD34EF)**는 App Store 밖에서 배포된 타사 앱입니다. 회사가 예상한 제품과 일치해야 합니다. - **
Authority=Apple Mac OS Application Signing**은 Mac App Store 앱에서 볼 수 있습니다.
검증 실패, 다운로드한 상주 앱의 무서명 상태, 보호된 시스템 위치 밖의 Signature=adhoc는 조사해야 합니다. Ad-hoc 서명에는 검증된 개발자 신원이 없지만 일부 Apple 시스템 코드도 비슷하게 표시되므로 경로와 함께 판단해야 합니다.
Gatekeeper 평가:
spctl --assess --verbose=4 /Applications/SomeApp.app
accepted, source=Notarized Developer ID는 Apple의 자동화된 서비스가 해당 빌드를 검사하고 티켓을 발급했다는 뜻입니다. 유용한 신뢰 신호지만 안전 보장은 아닙니다. rejected 역시 현재 정책을 충족하지 못했다는 의미일 뿐, 오래된 앱이나 로컬 빌드도 같은 결과가 나올 수 있습니다.
점검 3: 무엇이 실행했는가?
PPID가 1이면 현재 부모는 launchd입니다. 설정된 작업으로 실행했을 수도 있고 원래 부모가 종료된 프로세스를 맡았을 수도 있습니다. 이것만으로 종료 후 자동 재시작을 의미하지는 않습니다. 재실행은 KeepAlive와 온디맨드 트리거 같은 설정에 달려 있습니다.
지속성 위치를 확인하세요.
# 사용자 작업
ls -la ~/Library/LaunchAgents/
# 모든 사용자 대상 작업
ls -la /Library/LaunchAgents/ /Library/LaunchDaemons/
Apple 작업은 /System/Library/LaunchAgents/와 /System/Library/LaunchDaemons/에 있습니다. /Library/ 아래의 같은 폴더는 타사 설치 프로그램도 사용합니다. 낯선 .plist가 임시 폴더나 홈 폴더의 바이너리를 가리키면 조사할 가치가 있습니다.
점검 4: 무엇을 하고 있는가?
경로, 서명, 부모가 예상과 일치하면 즉각적인 우려는 줄지만 안전이 증명되는 것은 아닙니다.
- 네트워크 연결: 설명되지 않는 호스트와 계속 통신하는지 확인합니다.
nsurlsessiond와cloudd는 정상적으로 Apple 서버와 통신합니다. - 로드된 라이브러리: 보호된 시스템 프로세스가 사용자 쓰기 가능 폴더의 라이브러리를 불러오면 이례적입니다. 단, 타사 앱과 플러그인 호스트는 사용자 모듈을 정상적으로 로드할 수 있습니다. macOS 프로세스의 로드 모듈 확인 방법을 참고하세요.
- 설명되지 않는 지속적 사용량: 사진을 가져온 직후
photoanalysisd가 CPU를 사용하는 것은 정상일 수 있지만 며칠간 유휴 상태였던 Mac에서는 추가 확인이 필요합니다.
바이러스로 오해하기 쉬운 프로세스
| 프로세스 | 역할 | 일반적인 위치 |
|---|---|---|
kernel_task | 커널 및 열 부하 관리 | 경로 없음 — 커널 자체 |
launchd | PID 1, 서비스 시작 및 감독 | /sbin/ |
WindowServer | 화면에 그려지는 내용을 합성 | /System/Library/PrivateFrameworks/ |
mds, mds_stores, mdworker | Spotlight 인덱싱 | /System/Library/Frameworks/ |
nsurlsessiond | 앱과 iCloud의 백그라운드 전송 | /usr/libexec/ |
trustd | TLS 인증서 신뢰 평가 | /usr/libexec/ |
syspolicyd | Gatekeeper와 보안 정책 | /usr/libexec/ |
bird | iCloud Drive 문서 동기화 | /usr/libexec/ |
cloudd | 앱의 CloudKit 데이터 처리 | /System/Library/PrivateFrameworks/ |
secd | 키체인과 iCloud 키체인 | /usr/libexec/ |
photoanalysisd | 사진 속 얼굴과 장면 분석 | /System/Library/PrivateFrameworks/ |
mediaanalysisd | 라이브 텍스트와 시각 자료 찾아보기 | /System/Library/PrivateFrameworks/ |
rapportd | 연속성, Handoff, 공통 클립보드 | /usr/libexec/ |
sharingd | AirDrop과 공유 서비스 | /usr/libexec/ |
distnoted | 프로세스 간 알림 전달 | /usr/sbin/ |
coreaudiod | 오디오 하위 시스템 | /usr/sbin/ |
hidd | 키보드, 트랙패드 등 입력 장치 | /usr/libexec/ |
backupd | Time Machine | /System/Library/CoreServices/ |
com.apple.WebKit.WebContent | Safari 또는 WebKit 렌더링 | WebKit 프레임워크 내부 |
이 경로는 일반적인 위치일 뿐 Apple이 버전 사이에 구성 요소를 옮길 수 있습니다. 사용자 쓰기 가능 폴더에 같은 이름이 있으면 강한 경고 신호지만, 다른 보호된 시스템 경로라면 악성으로 단정하기 전에 검증하세요. kernel_task, WindowServer, mds_stores 관련 글도 참고하세요.
실제로 의심스러운 신호
- 시스템처럼 보이는 이름이 비시스템 경로에서 실행됨
- 이례적인 위치에서 무서명 또는 ad-hoc 서명으로 실행됨
- 서명자가 주장하는 제품 신원과 일치하지 않음
- 문자 하나, 공백, 중복 문자가 다른 유사 이름
- LaunchAgent가 임시 또는 다운로드 폴더의 바이너리를 가리킴
- 종료 후 새 PID로 빠르게 다시 나타나며 정상 Apple 작업으로 추적되지 않음
XProtect는 알려진 악성 코드를 자동으로 탐지·차단하고 주기적으로 감염을 확인하는 치료 기술도 포함합니다. 경고가 없으면 알려진 위협에 대한 우려는 줄지만 모든 프로세스의 안전을 증명하지는 않습니다. macOS에서 의심스러운 프로세스 탐지 방법을 확인하세요.
ProcXray로 네 가지 항목을 한 번에 확인하기
ProcXray는 코드 서명과 entitlements, 전체 경로, 프로세스 트리, 연결과 열린 파일, 로드된 모듈을 한 패널에서 보여 줍니다. 새 프로세스는 녹색으로 강조되고 종료된 프로세스는 빨간색으로 남아 재시작을 쉽게 확인할 수 있습니다. Regex 검색은 이름, PID, 인수, 경로를 함께 찾습니다.
단, /System 밖의 모든 프로세스를 타사로 간주하면 안 됩니다. 많은 Apple 프로세스가 /usr/libexec, /usr/sbin, /usr/bin, /sbin에서 정상적으로 실행됩니다.
자주 묻는 질문
nsurlsessiond는 바이러스인가요?
아닙니다. iCloud 및 URLSession을 사용하는 앱의 백그라운드 네트워크 전송을 담당하는 Apple 서비스입니다. 일반적으로 /usr/libexec/에 있고 Apple이 서명합니다.
Mac 프로세스가 정상인지 어떻게 확인하나요?
경로를 확인한 뒤 codesign --verify --strict --verbose=2 <path>로 서명을 검증하고 codesign -dvvv <path>로 신원을 확인하세요. 보호된 경로, 일치하는 서명, 예상한 부모, 설명 가능한 동작은 서로 보강하는 신호이며 어느 하나도 절대적인 증거는 아닙니다.
활성 상태 보기는 왜 안전 여부를 알려 주지 않나요?
활성 상태 보기는 자원 사용량에 초점을 맞추며 서명, 서명 기관, 공증 상태를 표시하는 열이 없습니다. 실행 경로도 열린 파일 목록에서 간접적으로만 확인할 수 있습니다.
악성 코드가 시스템 프로세스를 흉내 낼 수 있나요?
이름은 복제할 수 있습니다. 그러나 기본 보안 설정에서는 Signed System Volume에 파일을 임의로 추가하거나 Apple 명의의 유효한 서명을 만들 수 없습니다. 읽기 전용 볼륨은 Catalina, 암호화 SSV 보호는 Big Sur에서 도입됐습니다.
모르는 프로세스를 종료해야 하나요?
먼저 신원을 확인하세요. 필수 서비스일 수 있고 설정에 따라 다시 실행될 수도 있습니다. 원치 않는 소프트웨어라면 프로세스만 종료하지 말고 지속성 구성도 올바르게 제거해야 합니다.
macOS에 악성 코드 보호 기능이 있나요?
있습니다. XProtect는 앱의 첫 실행, 앱 변경, 서명 업데이트 때 알려진 악성 콘텐츠를 검사합니다. Gatekeeper는 다운로드한 소프트웨어를 확인하고 공증은 자동화된 Apple 검사를 추가합니다. 강력한 기본 방어이지만 보장은 아닙니다.
출처 및 참고 자료
- Apple: macOS의 악성 코드 방어
- Apple: Signed System Volume 보안
- Apple: System Integrity Protection
- macOS 매뉴얼 페이지 미러: codesign(1)
- macOS 매뉴얼 페이지 미러: spctl(8)
ProcXray 다운로드 → — 무료 기본 버전과 14일 Premium 평가판, macOS Sonoma 이상.