블로그로 돌아가기
macOS security system tools

macOS에서 의심스러운 프로세스를 탐지하는 법

코드 서명 검증, Gatekeeper 점검, 프로세스 검사 기법을 사용해 Mac에서 악성코드와 의심스러운 프로세스를 식별하는 방법을 배워보세요.

이 페이지의 목차

Mac은 언제나 수백 개의 프로세스를 실행합니다. 대부분은 정상적인 시스템 서비스와 직접 설치한 앱입니다. 하지만 서명되지 않았거나, 비정상적인 경로에서 실행되거나, 조용히 네트워크 연결을 여는 단 하나의 악성 프로세스가 컴퓨터 전체를 위협할 수 있습니다. 건강한 시스템 데몬과 의심스러운 침입자를 구별하는 법을 아는 것은 macOS 사용자가 익힐 수 있는 가장 실용적인 보안 기술 중 하나입니다.

빠른 답변

macOS에서 의심스러운 프로세스를 탐지하려면, codesign -dvvv로 누락되거나 유효하지 않은 코드 서명을 점검하고, spctl --assess로 Gatekeeper 승인을 확인하며, 각 프로세스의 실행 경로, 부모 프로세스, 네트워크 활동, entitlements를 검사하세요. Apple이나 개발자 서명 없이 /tmp, /var/folders, 또는 사용자가 쓰기 가능한 위치에서 실행되는 프로세스는 즉시 조사할 가치가 있습니다.

위험 신호: 의심스러운 프로세스의 징후

낯선 프로세스가 모두 악성코드는 아니지만, 특정 패턴은 경계 수준을 높여야 합니다:

단계별: 의심스러운 프로세스 조사하기

프로세스 목록에서 낯선 것을 발견하면, 이 점검 항목들을 체계적으로 진행하세요.

1. 코드 서명 검증하기

가장 중요한 단일 점검입니다. 바이너리에 대해 codesign을 실행하세요:

codesign -dvvv /path/to/suspicious-binary

Authority 체인을 살펴보세요. 건강한 앱은 다음과 같은 내용을 보여줍니다:

Authority=Developer ID Application: Company Name (TEAMID)
Authority=Developer ID Certification Authority
Authority=Apple Root CA

code object is not signed at all이 보이거나 권한 체인이 없다면, 그 바이너리는 식별된 개발자가 서명한 적이 없는 것입니다.

2. Gatekeeper 및 공증 상태 점검하기

Apple의 Gatekeeper는 소프트웨어가 공증되었는지, 즉 자동화된 악성코드 검사를 위해 Apple에 제출되었는지 검증합니다:

spctl --assess --verbose /path/to/suspicious-binary

공증된 앱은 accepted, source=Notarized Developer ID를 반환합니다. 그 외의 결과는 해당 바이너리가 Apple의 공증 요구를 우회했거나 그 이전에 만들어졌음을 의미합니다.

3. 실행 경로와 인수 검사하기

프로세스 바이너리가 실제로 어디에 있는지 찾아보세요:

ps -eo pid,comm,args | grep <process-name>

정상적인 시스템 프로세스는 /usr/libexec, /System/Library, 또는 /Applications에서 실행됩니다. com.apple.something이라는 이름의 프로세스가 /Users/you/Library/LaunchAgents/에서 실행되고 바이너리가 /tmp에 있다면, 시스템 서비스를 흉내 내고 있는 것입니다.

4. 지속성 메커니즘 점검하기

악성코드는 보통 재부팅에서 살아남기 위해 LaunchAgent나 LaunchDaemon을 설치합니다:

# User-level persistence
ls ~/Library/LaunchAgents/

# System-level persistence
ls /Library/LaunchDaemons/
ls /Library/LaunchAgents/

낯선 .plist 파일을 열고 ProgramArguments 키를 확인해 어떤 바이너리를 실행하는지 보세요.

5. 네트워크 연결 살펴보기

프로세스가 무엇과 통신하는지 확인하세요:

lsof -i -n -P | grep <PID>

낯선 IP로의 연결, 특히 C2(명령 제어) 서버가 흔히 사용하는 4444, 8080 같은 포트나 그 외의 비표준 포트로의 연결을 살펴보세요.

6. entitlements 검토하기

entitlements는 프로세스가 어떤 시스템 리소스에 접근할 수 있는지 정의합니다:

codesign -d --entitlements - /path/to/binary

정상적인 PDF 뷰어라면 com.apple.security.device.camera나 com.apple.security.network.server가 필요하지 않아야 합니다.

의심스러워 보이는 흔한 정상 프로세스

당황하기 전에 이 목록을 확인하세요. 다음 Apple 시스템 프로세스들은 사용자를 자주 혼란스럽게 합니다:

프로세스실제로 하는 일
kernel_taskmacOS 커널; 높은 CPU는 악성코드가 아니라 발열 조절을 의미하는 경우가 많음
mds / mds_storesSpotlight 인덱싱 엔진; 앱 설치나 파일 복사 후 급증함
WindowServer전체 GUI의 컴포지터; 높은 CPU는 보통 디스플레이 배율 문제를 의미함
nsurlsessiondApp Store 업데이트와 iCloud 동기화를 위한 백그라운드 다운로드
trustd인증서 및 신뢰 평가 데몬
syspolicydGatekeeper 정책 시행
clouddiCloud Drive 동기화 데몬
birdiCloud 문서 동기화 도우미
mediaanalysisd얼굴/객체 인식을 위한 사진 앱의 ML 처리
suggestdSiri 제안 및 Spotlight 지식 인덱싱

이들 중 하나가 유효한 Apple 서명을 가지고 /usr/libexec나 /System/Library에서 실행된다면, 거의 확실히 정상입니다.

프로세스 보안 감사를 위한 도구

Activity Monitor

활성 상태 보기(Activity Monitor)는 CPU, 메모리, 기본적인 프로세스 정보를 보여주지만, 코드 서명, entitlements, 부모-자식 프로세스 트리, 실행 경로를 유용한 방식으로 표시하지 못합니다. 보안 작업에서는 기껏해야 출발점에 불과합니다.

Terminal: codesign과 spctl

명령줄 도구 codesign과 spctl은 서명 및 공증 검증의 가장 확실한 근거입니다. 필수적이지만 수십 개의 프로세스를 감사해야 할 때는 번거롭습니다. 각각 바이너리 경로를 수동으로 찾아야 하기 때문입니다.

ProcXray

ProcXray는 코드 서명 검증과 entitlements 검사를 프로세스 모니터링 UI 안으로 직접 가져옵니다. 실행 중인 모든 프로세스에 대해 다음을 볼 수 있습니다:

각 바이너리에 대해 수동으로 codesign -dvvv를 실행하는 대신, ProcXray는 모든 프로세스의 보안 컨텍스트를 실시간으로 보여줍니다. 서명되지 않았거나 예상치 못한 위치에서 실행되는 것을 발견하면, Terminal로 전환하지 않고도 그 계보와 네트워크 컨텍스트를 조사할 수 있습니다.

자주 묻는 질문

프로세스가 악성코드인지 정상적인 시스템 서비스인지 어떻게 구별하나요?

세 가지를 확인하세요: (1) 코드 서명 — codesign -dvvv를 실행해 Apple 또는 식별된 개발자 권한 체인을 찾으세요, (2) 실행 경로 — 정상 서비스는 /tmp나 숨김 디렉터리가 아니라 /System이나 /usr/libexec에서 실행됩니다, (3) 지속성 — ~/Library/LaunchAgents와 /Library/LaunchDaemons에 바이너리를 가리키는 낯선 plist 파일이 있는지 확인하세요.

악성코드가 Activity Monitor에 숨을 수 있나요?

네. 루트킷은 시스템 호출을 후킹해 사용자 공간 도구로부터 프로세스를 숨길 수 있습니다. macOS 시스템 무결성 보호(SIP)는 이를 훨씬 어렵게 만듭니다. SIP가 활성화되어 있으면(csrutil status) 최신 macOS에서 커널 수준의 은닉이 차단됩니다. 다만 악성코드는 여전히 정상처럼 들리는 이름을 사용하거나 서명된 프로세스에 주입하는 방식으로 위장할 수 있습니다.

Gatekeeper가 모든 악성코드를 막아주나요?

아니요. Gatekeeper와 공증은 강력한 1차 방어선을 제공합니다. 기본적으로 서명되지 않고 공증되지 않은 소프트웨어의 실행을 차단합니다. 하지만 사용자가 Gatekeeper를 명시적으로 우회하거나(우클릭 > 열기), 악성코드가 이미 실행 중인 프로세스를 통해 전달되면(예: 브라우저 익스플로잇) Gatekeeper는 우회됩니다. 심층 방어 — 서명 점검, 프로세스 동작 모니터링, 지속성 메커니즘 감사 — 는 여전히 필수적입니다.

관련 가이드

출처 및 참고 자료

ProcXray 다운로드 → — 코드 서명 검증 내장, macOS Sonoma+.