
macOS IPC, launchd, Mach-O 및 신뢰 관계 탐색기 — 제로 의존성 터미널 네이티브 포렌식 도구
machscope는 터미널 기반 macOS 탐색기로, 프로세스, launchd 작업, Mach 서비스, 번들, 서명, entitlements 및 Mach-O 연결을 하나의 탐색 가능한 그래프로 변환합니다.
하나의 간단한 질문을 잔인할 정도로 잘 답하기 위해 존재합니다:
이 프로세스, 서비스, 바이너리, 또는 번들은 실제로 무엇에 연결되어 있는가?
프로세스, 실행 파일, launchd 작업, Mach 서비스, 번들, 내장 XPC 서비스, 코드 서명, entitlements, Mach-O 연결, 및 신뢰/이상 징후 발견을 하나의 뷰로 연결합니다.
Activity Monitor, ps, lsof, launchctl, codesign, otool이 편집증적이면서 운영자 친화적인 자식을 낳았다면 바로 이것일 것입니다.
macOS 내부는 우아하지만, 진실은 흩어져 있습니다.
의심스러운 프로세스 하나를 이해하려면 종종 다음 사이를 오가야 합니다:
pslsoflaunchctlcodesignotoolInfo.plistmachscope는 이 워크플로를 단일 터미널 도구로 압축합니다.
다음을 위해 만들어졌습니다:
PID, 경로, launchd 레이블, 또는 Mach 서비스 이름이 주어지면, machscope는 다음을 연결할 수 있습니다:
ps에서 가져온 프로세스 메타데이터lsof에서 가져온 실행 파일 경로 및 열린 파일 컨텍스트launchctl에서 가져온 launchd 상태 및 레이블 힌트MachServices.xpc 서비스codesign에서 가져온 코드 서명 식별자, 팀 ID, 인증서 체인 및 런타임 힌트codesign에서 가져온 엔타이틀먼트 데이터otool에서 가져온 Mach-O 헤더, 연결된 dylib, 로드 명령어 및 rpath모든 실시간 XPC 관계를 관찰한다고 주장하지 않습니다. 일부 관계는 선언된 것이지 관찰된 것이 아닙니다. 그 정직함은 의도적입니다.
ps는 프로세스만 보여주고 소유권 체인은 보여주지 않습니다.launchctl은 작업만 보여주고 전체 바이너리/번들/신뢰 컨텍스트는 보여주지 않습니다.codesign은 신원만 보여주고 런타임 관계는 보여주지 않습니다.otool은 연결만 보여주고 launchd 또는 Mach 서비스 노출은 보여주지 않습니다.machscope는 이 모든 것을 한 번에 연결합니다.--follow 리졸버 피벗
graph.nodes와 graph.edges는 향후 TUI, 렌더러 또는 diff 워크플로를 위해 설계됨./machscope.py inspect <pid|path|launchd-label|mach-service>
./machscope.py inspect <target> --follow
./machscope.py inspect <target> --json
./machscope.py scan --limit 40 --min-score 1
./machscope.py services [filter]
./machscope.py inspect 1
./machscope.py inspect 57382
./machscope.py inspect /System/Applications/Calculator.app --follow
./machscope.py inspect /usr/libexec/remoted
./machscope.py inspect com.apple.WindowServer --follow
./machscope.py inspect ai.openclaw.gateway --follow
./machscope.py inspect com.apple.dnssd.service --follow
./machscope.py scan --limit 40 --min-score 1
./machscope.py scan --limit 10 --min-score 6
./machscope.py services
./machscope.py services mDNS
./machscope.py services com.apple
Target: com.apple.dnssd.service [mach-service follow]
Resolved via: mach-service-launchd
Executable: /usr/sbin/mDNSResponder
Launchd: com.apple.mDNSResponder.reloaded
Plist: /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
Signature: apple-platform team=not set id=com.apple.mDNSResponder
Mach services: com.apple.dnssd.service, com.apple.mDNSResponder.control, com.apple.mDNSResponder.log_utility
Entitlements: 0
Linked dylibs: 25 RPATHs: 0
Trust: score=1 verdict=ordinary
Findings:
- [LOW] T012 Odd launchd label suffix
inspect --json은 스크립팅 및 향후 UI 작업을 위해 설계된 구조화된 객체를 반환합니다.
최상위 구조:
targettarget_resolutionprocessbinarybundlelaunchdtrustgraph.nodesgraph.edges그래프는 의도적으로 단순하게 설계되어 다음에 공급될 수 있습니다:
--follow 작동 방식--follow는 machscope가 단순한 메타데이터 덤퍼라기보다 탐색기처럼 느껴지게 만드는 부분입니다.
다음과 같은 리졸버 피벗을 추가합니다:
launchctl print 상태 → 사용 가능한 경우 활성 PID이것이 중요한 이유는 가장 흥미로운 macOS 아티팩트가 종종 입력한 그 자체가 아니라 그 뒤에 있는 것이기 때문입니다.
machscope는 간단한 신뢰/이상 징후 레이어를 포함합니다.
표면화할 수 있는 것들의 예:
.reloaded와 같은 이상한 launchd 접미사이는 악성코드 판정 엔진이 아닙니다. 단서를 표면화하고, 맹점을 줄이며, 의심스러운 체인을 더 쉽게 조사할 수 있게 하는 방법입니다.
첫 번째 버전은 의도적으로 다음을 사용합니다:
포함된 도구:
pslsoflaunchctlcodesignotoolfile이를 통해 도구를 복제, 검사 및 기본 시스템에서 실행하기 쉽게 유지합니다.
일부 관계는 선언된 것이지 관찰된 것이 아닙니다.
예를 들어:
machscope는 확실하지 않은 것을 확실한 척하기보다 명시적으로 처리합니다.
ps, lsof, launchctl, codesign, otool, file과 같은 기본 도구에 대한 접근먼저 일반 사용자로 실행하십시오.
그것만으로도 유용한 답변을 얻을 수 있는 경우가 많습니다.
일부 세부 정보는 상승된 권한 없이 부분적일 수 있으며, 특히 다음 영역에서 그렇습니다:
lsoflaunchctl권한을 상승시킬 경우 신중하게 하십시오.
machscope는 다음이 되려고 하지 않습니다:
macOS 내부를 읽기 쉽게 만드는 날카로운 로컬 도구입니다.
초기 단계이지만 이미 유용합니다.
현재 출력 및 그래프 모델은 향후 버전이 다음을 추가할 수 있도록 의도적으로 형성되었습니다: