Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
MacPersistenceChecker — macOS 지속성 메커니즘 스캐너 (코드 서명 검증 및 타임라인 추적 포함) | Kitploit
도구/GitHubGitHub/pinperepette/macpersistencechecker
OSINT (Open Source Intelligence)Persistence MechanismsVulnerability AnalysisForensicsMalware AnalysisDigital ForensicsThreat IntelligenceLearning & EducationIncident ResponseAI Security
GitHubpinperepette/macpersistencechecker

MacPersistenceChecker

268131개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

macOS 지속성 메커니즘 스캐너 (코드 서명 검증 및 타임라인 추적 포함)

저장소 보기

MacPersistenceChecker

Mac에서 실행되는 모든 것을 확인하세요. 왜 실행되는지 이해하세요. 무엇을 유지할지 결정하세요.

Main UI

How It Works

TL;DR

MacPersistenceChecker는 Mac에서 자동으로 실행되는 모든 것을 보여주고, 왜 중요한지 설명하며, 무엇을 유지하거나 제거할지 결정하는 데 도움을 줍니다.

→ 악성코드 찾기 → 숨겨진 지속성 감지 → 시스템을 몇 분 안에 이해하기

다운로드

MacPersistenceChecker v2.0.0 (DMG) 다운로드

→ 30초 안에 Mac 스캔 → 설치 마법사 없이 열어서 바로 실행 → 네이티브 macOS, 유니버설 (Apple Silicon 및 Intel), macOS 13+

macOS에서 앱이 손상되었다고 표시되면: xattr -cr /Applications/MacPersistenceChecker.app

실제 사용 사례

  • "Mac이 왜 느리죠?" → 숨겨진 자동 시작 앱 및 로그인 항목 찾기
  • "감염됐나요?" → 의심스러운 지속성, 서명되었지만 위험한 바이너리 감지
  • "이 설치 프로그램이 무엇을 추가했나요?" → 설치 전/후 스냅샷 비교 및 AI 설명
  • "로그인 시 무엇이 실행되나요?" → 22개 이상의 지속성 메커니즘에 대한 전체 가시성
  • "안전한가요?" → AI가 평이한 언어로 설명하고 MITRE ATT&CK 매핑 제공

다른 도구(Autoruns 등)와의 차별점

  • macOS용으로 제작 — Windows 포트가 아님. LaunchAgents, TCC, 커널 확장, dylib 하이재킹, BTM, MDM 프로파일 등을 모두 알고 있음.
  • AI 지원 분류(선택 사항) — Claude가 수천 개의 항목을 몇 초 안에 분류하고 시간이 지남에 따라 환경 학습
  • 평면 목록 대신 지식 그래프 — 개념당 한 번 결정하면 관련 항목 전체에 판정 전파
  • 행동 및 컨텍스트 인식 — 위험 점수는 서명, 행동, 의도 불일치, 수명 이상, LOLBins 등을 결합
  • 원격 측정 없음, 클라우드 동기화 없음 — 모든 분석은 로컬에서 수행. AI는 옵트인이며 사용자 본인의 Anthropic 키를 통해 사용자가 비용 부담

개인정보 보호 및 보안

  • AI 기능을 옵트인하지 않는 한 어떤 데이터도 기기를 떠나지 않음
  • 모든 스캔, 위험 점수 평가, 그래프 추론은 로컬에서 실행
  • AI 호출은 사용자 고유의 API 키로 Anthropic에 직접 전송 — 프록시 없음, 로깅 없음
  • API 키는 macOS 키체인에 저장
  • 소스 코드 공개: 어떤 데이터를 보내는지 확인 가능

AI 기반 분석

앱이 시스템을 학습하고 수천 개의 항목을 자동으로 분류합니다.

  • 🧠 유사한 항목을 개념 클러스터로 그룹화 (6800개 항목 → 약 280개 클러스터)
  • 📚 신뢰하는 것을 학습 — 판정이 관련 항목(미래 항목 포함)에 전파됨
  • 🔇 시간이 지남에 따라 노이즈 감소 — 첫 번째 분류가 가장 크며, 이후에는 조용히 유지
  • 🎯 5가지 AI 도구: 항목별 분석, 배치 클러스터 분류, 전체 시스템 보고서, 위협 헌팅 Q&A, 스냅샷 차이점 설명

빠른 시작:

  1. 설정 → AI → Anthropic API 키 붙여넣기 (macOS 키체인에 저장됨)
  2. 설정 → 모니터링 → AI 사용 토글 켜기
  3. 도구 모음 → 분류로 클러스터를 대량 분류하거나, 헌팅으로 자연어 질문하기

실제 비용: 활성 사용 시 <월 $1, 정상 상태에서는 무료.

작동 방식 (기술적)

앱은 Mac의 모든 지속성 항목에 대한 지식 그래프를 구축하고 Claude(Anthropic)를 사용하여 추론합니다. 수천 개의 항목을 신속하게 분류하고, 실제로 중요한 것만 에스컬레이션하며, 시스템을 학습하여 추가 AI 호출 없이도 대부분의 질문에 답변할 수 있습니다.

추론 흐름```

root@kitploit:~
             ┌──────────────────────────┐
             │   Persistence scan       │
             │   (e.g. 6800 items)      │
             └─────────────┬────────────┘
                           ▼
        ┌────────────────────────────────────────┐
        │  Concept Extraction (deterministic)    │
        │  6 extractors → vendor / software /    │
        │  pathCategory / pattern / mechanism /  │
        │  filename. No AI calls here.           │
        └─────────────┬──────────────────────────┘
                      ▼
        ┌────────────────────────────────────────┐
        │  Knowledge Graph (SQLite)              │
        │  • concepts (~280 typically)           │
        │  • concept_links (subsumes / instance) │
        │  • item_concepts (m:n)                 │
        │  • concept_verdicts                    │
        └─────────────┬──────────────────────────┘
                      ▼
        ┌────────────────────────────────────────┐
        │  Concept Resolver                      │
        │  for every item, picks the strongest   │
        │  verdict via a deterministic ladder:   │
        │  severity → confidence → specificity   │
        │  → source → recency.                   │
        └─────────────┬──────────────────────────┘
                      │
          ┌───────────┴────────────┐
          ▼                        ▼
도구 다운로드

┌──────────────────┐ ┌──────────────────────┐ │ Item is already │ │ Item is unresolved │ │ classified. │ │ → goes to a cluster. │ │ Filter hides it │ └──────────┬───────────┘ │ from "Suspicious"│ ▼ └──────────────────┘ ┌──────────────────────┐ │ Cluster Builder │ │ groups items by │ │ identical concept │ │ signature (sorted │ │ ids). 6800 items → │ │ ~280 clusters. │ └──────────┬───────────┘ ▼ ┌──────────────────────────────────────────┐ │ User decides per cluster (one click = │ │ N items decided), OR sends batch to AI: │ │ │ │ • Trust / Watch / Block (manual) │ │ • Send unresolved clusters to AI │ │ → Haiku batch (15 cluster per call) │ │ → AI returns verdicts attached to │ │ concepts (not items) — propagate │ │ to ALL items linked to those │ │ concepts, including future ones. │ └──────────────────────────────────────────┘

root@kitploit:~
### AI 도구

| 도구 | 위치 | 모델 | 호출당 비용 |
|---|---|---|---|
| AI로 분석 (단일 항목) | 항목 상세 → 지식 그래프 | Haiku | ~$0.003 |
| 스마트 분류 배치 | 도구 모음 → 분류 | Haiku 배치 | ~$0.005 (15개 클러스터) |
| 시스템 보고서 | 도구 모음 → 보고서 | Sonnet | ~$0.05-0.10 |
| 위협 헌트 | 도구 모음 → 헌트 | Haiku | ~$0.003 |
| 스냅샷 차이 | 기록 → 비교 → AI로 분석 | Haiku | ~$0.003 |

일일 호출 제한(기본 30)은 설정 → AI에서 구성 가능. 하드 상한이며, 도달 시 AI가 자동으로 비활성화됩니다.

### 신뢰 제어

사용자 정의 규칙은 **항상** AI 추출 규칙보다 우선합니다:

- **이 항목 신뢰** — 단일 항목 규칙, 귀하의 판결이 AI 감시 목록보다 우선
- **이 패턴 신뢰** — TeamID/서명 앵커 기반 패턴 규칙 (서명된 바이너리만 해당)
- **신뢰 제거** — 실수로 추가한 사용자 정의 규칙 삭제
- **감시 / 차단** — 스마트 분류에서 전체 클러스터에 감시 목록/악성 판결 적용

</details>

---

## 지속성 스캔

### 핵심 스캐너
- **Launch Daemons** - 시스템 전체 서비스 (`/Library/LaunchDaemons`, `/System/Library/LaunchDaemons`)
- **Launch Agents** - 사용자 수준 에이전트 (`~/Library/LaunchAgents`, `/Library/LaunchAgents`)
- **로그인 항목** - 로그인 시 시작되는 앱
- **커널 확장** - 레거시 kext
- **시스템 확장** - 최신 시스템 확장 (DriverKit, NetworkExtension, EndpointSecurity)
- **권한 있는 도우미 도구** - 상승된 권한을 가진 XPC 서비스
- **Cron 작업** - 예약된 작업
- **구성 프로파일** - MDM 및 구성 프로파일
- **애플리케이션 지원** - 백그라운드 앱 및 도우미

### 확장 스캐너 (선택 사항)
- **주기적 스크립트** - `/etc/periodic/`에 있는 일일, 주간, 월간 스크립트
- **셸 시작 파일** - 의심스러운 패턴 탐지가 적용된 `.zshrc`, `.bashrc`, `/etc/profile`
- **로그인/로그아웃 훅** - `com.apple.loginwindow`를 통한 레거시 로그인 훅
- **인증 플러그인** - `/Library/Security/SecurityAgentPlugins`의 보안 에이전트 플러그인
- **Spotlight 임포터** - 사용자 정의 메타데이터 임포터
- **Quick Look 플러그인** - 악용될 수 있는 미리보기 생성기
- **디렉터리 서비스 플러그인** - 인증 플러그인
- **Finder Sync 확장** - pluginkit를 통한 Finder 확장
- **BTM 데이터베이스** - 백그라운드 작업 관리 항목 (macOS 13+)
- **Dylib 하이재킹** - `DYLD_INSERT_LIBRARIES` 및 의심스러운 dylib 주입 탐지
- **TCC/접근성** - TCC 데이터베이스에서 접근성 권한이 있는 앱

---

## 위험 평가

모든 지속성 항목은 여러 요인에 기반한 **위험 점수(0-100)** 를 받습니다:

- 유효하지 않거나 누락된 코드 서명
- 누락된 하드닝된 런타임 보호
- 임시 서명된 바이너리
- 의심스러운 파일 위치
- 지속적인 자동 시작 구성 (RunAtLoad, KeepAlive)
- 알려진 악성 코드 패턴

**심각도 수준:** 낮음, 중간, 높음, 치명적 - 신속한 위협 식별을 위해 항목이 위험도별로 정렬됩니다.

### 실행 빈도 이상 탐지
- **마이크로 재시작** - StartInterval < 60초 (가능한 워치독 남용)
- **공격적 워치독** - KeepAlive + 낮은 StartInterval 조합
- **조절 제한 없음** - ThrottleInterval 없는 KeepAlive (충돌-재시작 루프 위험)

### 서명되었지만 위험한 탐지
- **위험한 권한** - 위험한 권한 탐지 (`com.apple.security.cs.disable-library-validation` 등)
- **Apple 사칭** - Apple로 보이려는 비 Apple 소프트웨어
- **숨겨진 위치** - 의심스러운 디렉터리에 있는 서명된 앱
- **공증 격차** - 공증이 없는 최근 앱
- **개발자 인증서 분석** - 알려진 공급업체에 대한 TeamID 검증

### LOLBins 탐지 (합법 이진 파일 악용)
지속성 컨텍스트에서 합법적인 macOS 바이너리의 의심스러운 사용을 탐지합니다. **조합이 중요합니다:**

- **osascript + 지속성** = AppleScript와 자동 시작 (GUI 자동화 남용)
- **curl/wget + RunAtLoad** = 다운로드 및 실행 패턴
- **python + 권한 있는 도우미** = 상승된 스크립트 실행
- **security + KeepAlive** = 자격 증명 수집 위험
- **launchctl + 자동 시작** = 메타 지속성 설치자
- **netcat + 지속성** = 리버스 셸 / C2 채널

40개 이상의 LOLBins가 MITRE ATT&CK 매핑 및 컨텍스트 인식 심각도 점수로 추적됩니다.

### 바이너리 평판 및 행동 분석
의심스러운 행동 패턴을 감지하는 고급 휴리스틱:

- **숨겨진 지속성 가드** - 명백한 워치독 목적이 없는 KeepAlive 에이전트
- **공격적 지속성** - 비서비스 항목에 대한 RunAtLoad + KeepAlive
- **은밀한 자동 시작** - 알 수 없는 공급업체의 백그라운드 프로세스
- **고아 지속성** - 존재하지 않는 실행 파일을 가리키는 Plist
- **의심스러운 위치** - `/tmp/`, `/Users/Shared/` 또는 숨겨진 디렉터리의 실행 파일
- **권한 상승 위험** - 권한 있는 작업을 시도하는 사용자 에이전트
- **네트워크 지원 지속성** - 네트워크 기능이 있는 지속성
- **스크립트 기반 지속성** - 인터프리터를 통한 인라인 스크립트
- **시스템 프로세스 사칭** - Apple 유사 이름을 사용하는 비 Apple 항목
- **빈번한 재시작 패턴** - StartInterval < 60초

### Plist와 바이너리 의도 불일치
Plist가 선언하는 내용과 바이너리가 실제로 수행하는 작업이 일치하지 않을 때를 감지합니다 - **정확히 현대 드로퍼가 하는 일:**

- **무해한 Plist, 무거운 바이너리** - 간단한 구성이지만 바이너리에 위험한 권한이 있음
- **수동적인 도우미와 네트워크** - 네트워크 클라이언트/서버 접근이 있는 백그라운드 도우미
- **수동적인 도우미와 Dylib 로딩** - 서명되지 않은 코드를 로드할 수 있는 도우미
- **최소 구성, 최대 기능** - 최소한의 Plist지만 광범위한 권한
- **키체인 접근이 있는 간단한 작업** - 자격 증명 접근이 있는 간단한 작업

### 바이너리 연령과 지속성 연령
설치 후 악성 업데이트를 나타내는 의심스러운 타임스탬프 패턴을 감지합니다:

- **오래된 Plist, 새로운 바이너리** - 전형적인 "설치 후 악성 업데이트" 패턴
- **조용한 바이너리 교체** - Plist 변경 없이 바이너리 수정
- **타임스탬프 조작** - 생성 날짜 이전의 수정 날짜 (불가능)
- **의심스러운 수정 시간** - 오전 2-5시에 수정된 바이너리
- **설치 후 수정된 바이너리** - 초기 설치 후 변경된 비업데이터 바이너리

### 신뢰 수준
- 🟢 **Apple** - Apple이 서명
- 🔵 **알려진 공급업체** - 검증된 타사 소프트웨어
- 🟡 **서명됨** - 유효한 서명이지만 공증되지 않음
- ⚪ **알 수 없음** - 확인할 실행 파일 없음
- 🟠 **의심스러움** - 만료된 인증서 또는 의심스러운 경로
- 🔴 **서명되지 않음** - 유효한 서명 없음

---

## 타임라인 및 포렌식

각 지속성 항목에 대한 포괄적인 포렌식 타임라인:

**발견**
- 최초 발견 - 항목이 처음 발견된 시간

**구성 파일 (Plist)**
- 생성됨 - 파일 생성 타임스탬프
- 수정됨 - 마지막 수정 타임스탬프

**실행 파일 (바이너리)**
- 생성됨 - 바이너리 생성 타임스탬프
- 수정됨 - 마지막 수정 타임스탬프
- 마지막 실행 - 마지막 접근/실행 시간

### 타임스탬프 이상 탐지
- **타임스탬프 조작** - 생성 날짜가 수정 날짜 이후 (안티 포렌식 기술)
- **파일 교체** - 초기 발견 후 생성된 파일
- **바이너리 교체** - 오래된 Plist와 최근에 수정된 바이너리 (가능한 트로이 목마)
- **최근 실행** - 현재 로드되지 않았지만 최근에 접근된 바이너리

---

## MITRE ATT&CK 통합

모든 지속성 메커니즘이 MITRE ATT&CK 프레임워크에 매핑됨:

- **전술**: 지속성, 권한 상승, 방어 회피, 실행
- **기술**: T1543.001, T1543.004, T1547.001, T1547.015 등
- MITRE ATT&CK 문서로 직접 연결

---

## 앱 침투성 보고서

설치된 앱의 포괄적인 분석을 통해 "침투성" 수준 평가:

### 이중 점수 시스템

**지속성 점수 (0-100)** - 지속성 메커니즘 평가:
- 트리거 유형 (RunAtLoad, KeepAlive)
- 권한 수준 (LaunchDaemons, 커널 확장, 권한 있는 도우미)
- 복원력 (자동 재시작, 업데이터)
- 중복성 (동일 공급업체의 여러 항목)
- 신뢰 수준 (서명되지 않음/의심스러움 패널티)

**설치 점수 (0-100)** - "정크" 설치 공간 평가:
- Library 폴더 전체에 분산된 파일
- 총 디스크 사용량
- 고아 파일 (일치하는 앱 없는 지속성)
- 캐시 부풀림
- 시스템 전체 설치

### 등급 시스템
앱은 결합 점수를 기준으로 **A부터 F까지** 등급이 매겨지며, 모든 점수 요인에 대한 상세 분석이 제공됩니다.

---

## 시각화

### 통계 대시보드
- **위험 분포 히스토그램** - 위험 대역별 항목 (낮음, 중간, 높음, 치명적)
- **신뢰 수준 도넛 차트** - 신뢰 수준별 분포
- **카테고리 분류 차트** - 지속성 카테고리별 항목
- **타임라인 시각화** - 항목 생애주기 이벤트 (생성, 수정, 실행, 발견)

### 대화형 그래프
- **전체 시스템 그래프** - 모든 지속성 항목 및 관계 개요
- **초점 항목 그래프** - 개별 항목 분석을 위한 방사형 그래프
- **분석 모드**: 기본 (신뢰/카테고리) 또는 전체 (dylib 종속성, 네트워크 연결 포함)
- **대화형 캔버스** - 확대, 축소, 관계 탐색
- **신뢰 수준별 색상 코드** - 빠른 시각적 위협 평가

### 보안 프로필 레이더
신뢰, 서명, 안전, 안정성, 투명성, 연령 차원을 한눈에 보여주는 포괄적인 레이더 차트.

---

## 실시간 모니터링

두 가지 분석 모드를 사용한 지속성 변경 사항의 지속적인 모니터링.

### 모니터링 모드

**표준 모드**
- FSEvents 기반 실시간 파일 시스템 모니터링
- 구성 가능한 디바운스를 통한 지능적 노이즈 억제
- 중요하지 않은 변경 사항을 필터링하는 관련성 점수
- 높은 관련성 변경 사항에 대한 즉각적인 알림

**AI 모드** (Claude API 키 필요)
- Claude AI가 감지된 각 변경 사항 분석
- 전체 컨텍스트를 AI에 전송: 서명 정보, LOLBins, 행동 이상, 위험 점수
- AI가 실제 위협 수준에 따라 변경 사항이 알림을 받을 가치가 있는지 결정
- 구성 가능한 확인 간격 (30초 ~ 1시간)
- 심각도 임계값 필터링 (정보, 낮음, 중간, 높음, 치명적)

### 메뉴 바 통합
- 실시간 모니터링 상태 표시기
- "AI" 또는 "Std" 모드 배지
- 빠른 제어 (모니터링 시작/중지, 스캔 실행)
- 설정 접근
- 확인되지 않은 변경 사항에 대한 배지 수
- 마지막 감지된 변경 사항 미리보기

### 알림 중복 제거
- 동일 항목은 쿨다운 기간 내에 반복 알림을 트리거하지 않음
- 구성 가능한 쿨다운 (1-24시간, 기본 2시간)
- 자주 변경되는 항목으로 인한 알림 피로 방지

### 시작 알림
모니터링이 시작되면 다음을 확인하는 알림을 받습니다:
- 활성 모드 (AI 모드 또는 표준 모드)
- 확인 간격 (AI) 또는 "실시간" (표준)
- 알림 임계값 설정

### 변경 감지
- **추가됨** - 새로운 지속성 항목
- **제거됨** - 삭제된 항목
- **수정됨** - 구성 변경 (활성화/비활성화, 경로 변경 등)
- **활성화/비활성화됨** - 상태 변경

### AI 분석 세부 정보
AI 모드가 활성화되면 각 변경 사항이 완전한 항목 데이터를 Claude에 전송합니다:
- 기본 정보 (이름, 카테고리, 경로, plist 내용)
- 서명 세부 정보 (서명됨, Apple, 공증됨, 팀 ID, 인증서 상태)
- 위험 평가 (점수, 상세 분석)
- LOLBins 탐지와 MITRE 매핑
- 행동 이상
- 의도 불일치 (plist와 바이너리 간)
- 연령 이상 (타임스탬프 분석)
- 서명되었지만 위험한 플래그

Claude는 다음으로 응답합니다:
- `shouldNotify` - 사용자에게 알릴지 여부
- `severity` - 위협 수준 평가
- `title` - 알림 제목
- `explanation` - 이것이 의심스럽거나 그렇지 않은 이유
- `recommendation` - 제안된 조치
- `mitreTechniques` - 관련 ATT&CK 기술

### AI 사용자 정의

**설정 → AI**를 통해 AI가 변경 사항을 분석하는 방식 제어:

**구조화된 옵션**
| 옵션 | 기본값 | 효과 |
|--------|---------|--------|
| Apple 서명 무시 | 켜짐 | Apple이 서명한 항목(com.apple.*) 우선순위 낮춤 |
| 시스템 경로 무시 | 켜짐 | /System 및 /Library 경로 우선순위 낮춤 |
| 서명되지 않음 우선 | 켜짐 | 서명되지 않은 실행 파일에 추가 주의 |
| LOLBins에 집중 | 켜짐 | Living-off-the-Land 바이너리 탐지 우선 |
| 최소 위험 점수 | 0 | 위험 점수 >= 임계값인 항목만 분석 |
| 무시된 경로 | - | 건너뛸 사용자 정의 경로 (쉼표로 구분) |

**알림 임계값**
- `정보` - 모든 것 알림
- `낮음` - 낮음 심각도 이상 알림
- `중간` - 중간 이상 알림 (기본값)
- `높음` - 높음 및 치명적만 알림
- `치명적` - 치명적 위협만 알림

**사용자 정의 프롬프트**
AI 프롬프트에 추가되는 자신만의 지침을 추가하세요. 예시:```
Always notify me if an item uses python or osascript.
Ignore anything from Microsoft.
Be more aggressive with unsigned items from ~/Downloads.

AI는 이러한 선호도를 사용하여 더 스마트한 결정을 내립니다. 예를 들어:

  • /tmp/의 서명되지 않은 LaunchAgent → 중요 알림
  • 서명된 Dropbox 업데이트 → 알림 없음 (정보)
  • RunAtLoad가 있는 osascript → 높음 알림

MCP 서버 (Claude Code 통합)

MacPersistenceChecker에는 Claude Code, Claude Desktop 및 기타 MCP 호환 클라이언트가 지속성 데이터를 쿼리할 수 있도록 하는 MCP(Model Context Protocol) 서버가 포함되어 있습니다.

MCP 서버 빌드하기```bash

swift build --target MPCServer

root@kitploit:~
바이너리는 `.build/debug/mpc-server`에 생성됩니다.

### 사용 가능한 MCP 도구

| Tool | Description |
|------|-------------|
| `get_current_state` | 선택적 필터를 적용하여 모든 현재 지속성 항목 가져오기 |
| `get_diff` | 기준선 또는 특정 스냅샷으로부터 변경 사항 가져오기 |
| `get_summary` | 개수와 주요 위협에 대한 간결한 개요 |
| `get_item_details` | 식별자로 특정 항목의 전체 세부 정보 가져오기 |
| `get_risk_analysis` | 권장 사항이 포함된 집계 위험 분석 |
| `get_snapshots` | 메타데이터와 함께 사용 가능한 스냅샷 나열 |
| `compare_snapshots` | 두 스냅샷을 비교하여 변경 사항 확인 |

### Claude Code 구성

Claude Code MCP 설정 (`~/.claude/claude_desktop_config.json` 또는 유사 파일)에 추가:```json
{
  "mcpServers": {
    "macpersistence": {
      "command": "/path/to/mpc-server",
      "args": []
    }
  }
}

예시 쿼리

구성 완료 후, Claude Code에게 다음과 같이 요청할 수 있습니다:

  • "이 Mac에 있는 지속성 항목은 무엇인가요?"
  • "서명되지 않은 높은 위험 점수의 항목을 보여주세요"
  • "마지막 스냅샷 이후 무엇이 변경되었나요?"
  • "LaunchAgents 카테고리 항목의 위험을 분석해 주세요"
  • "오늘의 스냅샷과 어제의 스냅샷을 비교해 주세요"

MCP 서버 기능

  • MacPersistenceChecker의 SQLite 데이터베이스에 대한 읽기 전용 접근
  • stdio를 통한 JSON-RPC 2.0 프로토콜
  • 카테고리, 신뢰 수준, 위험 점수, Apple 서명 상태별 필터
  • 전체 스냅샷 및 차이 비교 기능
  • 별도의 API 키 불필요 (로컬 데이터베이스 사용)

스냅샷 및 비교

  • 시스템 상태의 스냅샷 생성
  • 스냅샷을 비교하여 시간에 따른 변경 사항 감지
  • 새로 추가, 제거 또는 수정된 지속성 항목 추적
  • 의심스러운 항목이 추가된 시점 식별

포렌식 JSON 내보내기

보안 파이프라인을 위한 기계 판독 가능 내보내기:

  • SIEM 통합 - Splunk, Elastic 등에서 수집 가능
  • SOAR 호환성 - 자동화된 대응 워크플로우에 사용 가능
  • LLM 분석 - AI 기반 분석을 위한 구조화된 데이터
  • IR 파이프라인 - OSINT 및 사고 대응 도구와 호환

내보내기 내용

  • 전체 시스템 메타데이터 (호스트명, macOS 버전, 하드웨어 모델, 시리얼)
  • 완전한 분석을 포함한 모든 지속성 항목
  • 위험 점수, LOLBins, 행동 이상, 의도 불일치, 기간 분석
  • MITRE ATT&CK 매핑
  • Unix 타임스탬프가 포함된 전체 포렌식 타임라인
  • 권장 사항이 포함된 중요 발견 사항

스캔 완료 후에만 버튼이 활성화됩니다.


격리 시스템

영구 삭제 없이 의심스러운 지속성 항목을 안전하게 무력화:

격리 작업

  • 빠른 격리 - 지속성 비활성화 + 네트워크 차단 (권장)
  • 비활성화만 - 네트워크 차단 없이 자동 시작에서 제거
  • 네트워크 차단만 - 지속성은 유지하면서 네트워크 접근 차단

안전 기능

  • 자동 백업 - 수정 전 원본 plist 저장
  • 시간 제한 해제 - 설정 가능한 시간 초과 후 자동 복원 (기본 24시간)
  • 수동 해제 - 격리된 항목 즉시 복원
  • 작업 로그 - 모든 격리 작업의 완전한 감사 추적

네트워크 차단

  • 아웃바운드 연결을 차단하는 PF 방화벽 규칙
  • 실행 파일 경로별 바이너리 차단
  • 앱 재시작 후에도 유지

사용 사례

  • 조사 중 의심스러운 항목 격리
  • 지속성 제거가 기능을 손상시키는지 테스트
  • 구성을 잃지 않고 일시적으로 비활성화

작업

  • Finder에서 보기 - 파일을 빠르게 찾기
  • Plist 열기 - 설정 파일 보기
  • 그래프 보기 - 항목별 그래프 시각화
  • 비활성화/활성화 - 항목을 안전하게 비활성화 (시스템 항목은 관리자 권한 필요)
  • 격리 - 자동 백업으로 의심스러운 항목 격리
  • JSON 내보내기 - SIEM/SOAR/IR용 포렌식 보고서 내보내기

스크린샷

메인 화면

항목 상세

스냅샷 비교

스냅샷 비교

확장 스캐너

확장 스캐너 설정

앱 침투성

메뉴 막대


소스에서 빌드하기```bash

git clone https://github.com/Pinperepette/MacPersistenceChecker.git cd MacPersistenceChecker ./build.sh

root@kitploit:~
Copy `MacPersistenceChecker.app`를 `/Applications/`로 복사하십시오.

### 요구 사항
- macOS 13.0+
- Xcode 15+ 또는 Swift 5.9+

### 종속성
- [GRDB.swift](https://github.com/groue/GRDB.swift) - SQLite 데이터베이스

---

## 권한

스캔하려면 **전체 디스크 접근**이 필요합니다:
- `/Library/LaunchDaemons`
- 시스템 구성 파일
- TCC 데이터베이스
- 쉘 시작 파일

전체 디스크 접근 권한이 없으면 일부 항목이 표시되지 않을 수 있습니다.

---

## 라이선스

MIT 라이선스 - 자세한 내용은 [LICENSE](https://github.com/pinperepette/macpersistencechecker/blob/HEAD/LICENSE)를 참조하십시오.

## 저자

**pinperepette** - 2025

## Star 기록

<a href="https://www.star-history.com/?repos=Pinperepette%2FMacPersistenceChecker&type=date&legend=top-left">
 <picture>
   <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/chart?repos=Pinperepette/MacPersistenceChecker&type=date&theme=dark&legend=top-left" />
   <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/chart?repos=Pinperepette/MacPersistenceChecker&type=date&legend=top-left" />
   Star History Chart
 </picture>
</a>

---

*Mark Russinovich의 Windows용 [Autoruns](https://docs.microsoft.com/en-us/sysinternals/downloads/autoruns)에서 영감을 받음*