
macOS-Persistenzmechanismus-Scanner mit Codesignatur-Verifizierung und Zeitleistenverfolgung.
Sieh ALLES, was auf deinem Mac läuft. Verstehe WARUM es läuft. Entscheide WAS bleibt.


MacPersistenceChecker zeigt dir alles, was automatisch auf deinem Mac läuft, erklärt warum es wichtig ist und hilft dir zu entscheiden, was behalten oder entfernt werden soll.
→ Finde Malware → Erkenne versteckte Persistenz → Verstehe dein System in Minuten
MacPersistenceChecker v2.0.0 (DMG) herunterladen
→ Scanne deinen Mac in unter 30 Sekunden → Kein Installationsassistent, einfach öffnen und ausführen → Natives macOS, universell (Apple Silicon & Intel), macOS 13+
Falls macOS die App als beschädigt meldet:
xattr -cr /Applications/MacPersistenceChecker.app
Die App lernt dein System und klassifiziert Tausende von Einträgen automatisch.
Schnellstart:
Realistische Kosten: <1 $/Monat bei aktiver Nutzung, 0 $ im Normalbetrieb.
Die App erstellt einen Wissensgraphen aller Persistenzeinträge auf deinem Mac und verwendet Claude (Anthropic), um darüber zu argumentieren. Klassifiziere Tausende von Einträgen schnell, eskaliere nur, was wirklich zählt, und lerne dein System, so dass es die meisten Fragen ohne weitere KI-Aufrufe beantwortet.
┌──────────────────────────┐
│ 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. │ └──────────────────────────────────────────┘
### KI-Tools
| Tool | Wo | Modell | Kosten / Aufruf |
|---|---|---|---|
| Mit KI analysieren (einzelner Eintrag) | Elementdetails → Wissensgraph | Haiku | ~0,003 $ |
| Smart Triage Stapelverarbeitung | Werkzeugleiste → Triage | Haiku Stapel | ~0,005 $ (15 Cluster) |
| Systembericht | Werkzeugleiste → Bericht | Sonnet | ~0,05-0,10 $ |
| Bedrohungssuche | Werkzeugleiste → Suche | Haiku | ~0,003 $ |
| Snapshot-Diff | Verlauf → Vergleichen → Mit KI analysieren | Haiku | ~0,003 $ |
Tägliches Aufruflimit (Standard 30) konfigurierbar unter Einstellungen → KI. Harte Obergrenze, KI deaktiviert sich automatisch bei Erreichen.
### Vertrauenssteuerungen
Benutzerdefinierte Regeln **haben immer Vorrang** vor KI-extrahierten:
- **Diesem Element vertrauen** — Einzelregel, Ihr Urteil überschreibt KI-Beobachtungsliste
- **Diesem Muster vertrauen** — Musterregel mit TeamID/Signaturanker (nur signierte Binärdateien)
- **Vertrauen entfernen** — Löscht eine versehentlich hinzugefügte benutzerdefinierte Regel
- **Beobachten / Blockieren** — Wendet Beobachtungsliste/Schadsoftware-Urteil auf ein gesamtes Cluster in Smart Triage an
</details>
---
## Persistenz-Scan
### Kern-Scanner
- **Launch-Daemons** — Systemweite Dienste (`/Library/LaunchDaemons`, `/System/Library/LaunchDaemons`)
- **Launch-Agents** — Benutzerebene-Agents (`~/Library/LaunchAgents`, `/Library/LaunchAgents`)
- **Anmeldeobjekte** — Apps, die beim Start automatisch ausgeführt werden
- **Kernel-Erweiterungen** — Legacy-Kexts
- **Systemerweiterungen** — Moderne Systemerweiterungen (DriverKit, NetworkExtension, EndpointSecurity)
- **Privilegierte Hilfsprogramme** — XPC-Dienste mit erhöhten Privilegien
- **Cron-Jobs** — Geplante Aufgaben
- **Konfigurationsprofile** — MDM- und Konfigurationsprofile
- **Anwendungsunterstützung** — Hintergrund-Apps und Helfer
### Erweiterte Scanner (optional)
- **Periodische Skripte** — Tägliche, wöchentliche, monatliche Skripte in `/etc/periodic/`
- **Shell-Startup-Dateien** — `.zshrc`, `.bashrc`, `/etc/profile` mit Erkennung verdächtiger Muster
- **Anmelde-/Abmelde-Hooks** — Legacy-Anmelde-Hooks über `com.apple.loginwindow`
- **Autorisierungs-Plugins** — Sicherheitsagent-Plugins in `/Library/Security/SecurityAgentPlugins`
- **Spotlight-Importierer** — Benutzerdefinierte Metadaten-Importierer
- **Quick-Look-Plugins** — Vorschau-Generatoren, die missbraucht werden könnten
- **Verzeichnisdienst-Plugins** — Authentifizierungs-Plugins
- **Finder-Sync-Erweiterungen** — Finder-Erweiterungen über pluginkit
- **BTM-Datenbank** — Hintergrundaufgabenverwaltungseinträge (macOS 13+)
- **Dylib-Hijacking** — Erkennung von `DYLD_INSERT_LIBRARIES` und verdächtiger Dylib-Injektion
- **TCC/Barrierefreiheit** — Apps mit Barrierefreiheits-Berechtigungen in der TCC-Datenbank
---
## Risikobewertung
Jeder Persistenzeintrag erhält eine **Risikobewertung (0-100)** basierend auf mehreren Faktoren:
- Ungültige oder fehlende Codesignaturen
- Fehlender gehärteter Runtime-Schutz
- Ad-hoc signierte Binärdateien
- Verdächtige Dateispeicherorte
- Dauerhafte Auto-Start-Konfigurationen (RunAtLoad, KeepAlive)
- Bekannte Malware-Muster
**Schweregrade:** Niedrig, Mittel, Hoch, Kritisch – Einträge nach Risiko sortiert für schnelle Bedrohungsidentifikation.
### Erkennung von Startintervall-Anomalien
- **Mikro-Neustart** — StartInterval < 60 Sekunden (möglicher Watchdog-Missbrauch)
- **Aggressiver Watchdog** — KeepAlive + niedriger StartInterval-Kombination
- **Kein Drossellimit** — KeepAlive ohne ThrottleInterval (Absturz-Neustart-Schleifenrisiko)
### Erkennung von signierten, aber gefährlichen Elementen
- **Gefährliche Berechtigungen** — Erkennung riskanter Berechtigungen (`com.apple.security.cs.disable-library-validation`, usw.)
- **Apple-Imitation** — Nicht-Apple-Software, die versucht, als Apple zu erscheinen
- **Versteckte Speicherorte** — Signierte Apps in verdächtigen Verzeichnissen
- **Notarisierungslücken** — Neuere Apps ohne Notarisierung
- **Entwicklerzertifikatanalyse** — Team-ID-Überprüfung gegenüber bekannten Anbietern
### LOLBins-Erkennung (Living-off-the-Land Binaries)
Erkennt verdächtige Nutzung legitimer macOS-Binärdateien in Persistenzkontexten. **Die Kombination macht den Unterschied:**
- **osascript + Persistenz** = AppleScript mit Auto-Start (GUI-Automatisierungs-Missbrauch)
- **curl/wget + RunAtLoad** = Herunterladen & Ausführen-Muster
- **python + privilegierter Helfer** = Erhöhte Skriptausführung
- **security + KeepAlive** = Risiko des Passwortdiebstahls
- **launchctl + Auto-Start** = Meta-Persistenz-Installer
- **netcat + Persistenz** = Reverse-Shell / C2-Kanal
40+ LOLBins mit MITRE ATT&CK-Zuordnungen und kontextabhängiger Schweregradbewertung.
### Binärsignatur und Verhaltensanalyse
Fortschrittliche Heuristiken zur Erkennung verdächtiger Verhaltensmuster:
- **Versteckter Persistenzwächter** — KeepAlive-Agent ohne erkennbaren Watchdog-Zweck
- **Aggressive Persistenz** — RunAtLoad + KeepAlive bei Nicht-Dienstleistungs-Elementen
- **Heimlicher Auto-Start** — Hintergrundprozess von unbekanntem Anbieter
- **Verwaiste Persistenz** — Plist verweist auf nicht vorhandene ausführbare Datei
- **Verdächtiger Speicherort** — Ausführbare Datei in `/tmp/`, `/Users/Shared/` oder versteckten Verzeichnissen
- **Privilegieneskalationsrisiko** — Benutzer-Agent versucht privilegierte Operationen
- **Netzwerkfähige Persistenz** — Persistenz mit Netzwerkfähigkeiten
- **Skriptbasierte Persistenz** — Inline-Skripte über Interpreter
- **Systemprozess-Imitation** — Nicht-Apple-Element mit Apple-ähnlicher Benennung
- **Häufiges Neustartmuster** — StartInterval < 60 Sekunden
### Plist vs. Binärabsichtsinkongruenz
Erkennt, wenn das, was die Plist deklariert, nicht mit dem übereinstimmt, was die Binärdatei tatsächlich tut – **genau das, was moderne Dropper tun:**
- **Harmlose Plist, schwere Binärdatei** — Einfache Konfiguration, aber Binärdatei hat gefährliche Berechtigungen
- **Passiver Helfer mit Netzwerk** — Hintergrundhelfer mit Netzwerk-Client/Server-Zugriff
- **Passiver Helfer mit Dylib-Laden** — Helfer, der nicht signierten Code laden kann
- **Minimale Konfiguration, maximale Fähigkeiten** — Minimale Plist, aber umfangreiche Berechtigungen
- **Einfache Aufgabe mit Schlüsselbundzugriff** — Einfach aussehende Aufgabe mit Zugriff auf Anmeldeinformationen
### Binäralter vs. Persistenzalter
Erkennt verdächtige Zeitstempelmuster, die auf bösartige Updates nach der Installation hinweisen:
- **Alte Plist, neue Binärdatei** — Klassisches "bösartiges Update nach der Installation"-Muster
- **Stiller Binärtausch** — Binärdatei geändert ohne Plist-Änderung
- **Zeitstempelmanipulation** — Änderungsdatum vor Erstellungsdatum (unmöglich)
- **Verdächtiger Änderungszeitpunkt** — Binärdatei zwischen 2-5 Uhr geändert
- **Binärdatei nach Installation geändert** — Nicht-Updater-Binärdatei nach Erstinstallation geändert
### Vertrauensstufen
- 🟢 **Apple** — Von Apple signiert
- 🔵 **Bekannter Anbieter** — Verifizierte Drittanbieter-Software
- 🟡 **Signiert** — Gültige Signatur, aber nicht notarisiert
- ⚪ **Unbekannt** — Keine ausführbare Datei zum Überprüfen
- 🟠 **Verdächtig** — Abgelaufenes Zertifikat oder verdächtiger Pfad
- 🔴 **Nicht signiert** — Keine gültige Signatur
---
## Zeitachse & Forensik
Umfassende forensische Zeitachse für jeden Persistenzeintrag:
**Erkennung**
- Erstmaliges Auftreten — Wann das Element zum ersten Mal entdeckt wurde
**Konfigurationsdatei (Plist)**
- Erstellt — Zeitstempel der Dateierstellung
- Geändert — Zeitstempel der letzten Änderung
**Ausführbare Datei (Binärdatei)**
- Erstellt — Zeitstempel der Erstellung der Binärdatei
- Geändert — Zeitstempel der letzten Änderung
- Zuletzt ausgeführt — Letzter Zugriffs-/Ausführungszeitpunkt
### Erkennung von Zeitstempel-Anomalien
- **Timestomping** — Erstellungsdatum nach Änderungsdatum (Anti-Forensik-Technik)
- **Dateiaustausch** — Datei nach der ersten Erkennung erstellt
- **Binärtausch** — Kürzlich geänderte Binärdatei mit alter Plist (möglicher Trojaner)
- **Kürzliche Ausführung** — Binärdatei kürzlich zugegriffen, aber nicht aktuell geladen
---
## MITRE ATT&CK-Integration
Jeder Persistenzmechanismus wird dem MITRE ATT&CK-Framework zugeordnet:
- **Taktiken**: Persistenz, Privilegieneskalation, Verteidigungsumgehung, Ausführung
- **Techniken**: T1543.001, T1543.004, T1547.001, T1547.015 und mehr
- Direkte Links zur MITRE ATT&CK-Dokumentation
---
## App-Aufdringlichkeitsbericht
Umfassende Analyse installierter Apps zur Bewertung ihrer „Aufdringlichkeit":
### Duales Bewertungssystem
**Persistenzbewertung (0-100)** — Bewertet Persistenzmechanismen:
- Auslöser-Typen (RunAtLoad, KeepAlive)
- Privilegienstufen (Launch-Daemons, Kernel-Erweiterungen, privilegierte Helfer)
- Resilienz (automatischer Neustart, Updater)
- Redundanz (mehrere Elemente vom selben Anbieter)
- Vertrauensstufe (nicht signiert/verdächtig-Abzüge)
**Installationsbewertung (0-100)** — Bewertet den „Schrott"-Fußabdruck:
- Dateiverteilung über Library-Ordner
- Gesamte Festplattennutzung
- Verwaiste Dateien (Persistenz ohne passende App)
- Cache-Aufblähung
- Systemweite Installationen
### Notensystem
Apps werden mit **A bis F** bewertet, basierend auf der kombinierten Punktzahl mit detaillierter Aufschlüsselung aller Bewertungsfaktoren.
---
## Visualisierung
### Statistik-Dashboard
- **Risikoverteilungs-Histogramm** — Elemente nach Risikostufen (Niedrig, Mittel, Hoch, Kritisch)
- **Vertrauensstufen-Ringdiagramm** — Verteilung über Vertrauensstufen
- **Kategorie-Aufschlüsselungsdiagramm** — Elemente pro Persistenzkategorie
- **Zeitachsenvisualisierung** — Lebenszyklusereignisse von Elementen (Erstellt, Geändert, Ausgeführt, Entdeckt)
### Interaktiver Graph
- **Vollständiger Systemgraph** — Übersicht über alle Persistenzelemente und Beziehungen
- **Fokussierter Elementgraph** — Radialgraph für die Analyse einzelner Elemente
- **Analysemodi**: Basis (Vertrauen/Kategorien) oder Vollständig (enthält Dylib-Abhängigkeiten, Netzwerkverbindungen)
- **Interaktive Leinwand** — Zoomen, Schwenken, Beziehungen erkunden
- **Nach Vertrauensstufe farbcodiert** — Schnelle visuelle Bedrohungsbewertung
### Sicherheitsprofil-Radar
Umfassendes Radardiagramm, das Vertrauen, Signatur, Sicherheit, Stabilität, Transparenz und Altersdimensionen auf einen Blick zeigt.
---
## Echtzeit-Überwachung
Kontinuierliche Überwachung von Persistenzänderungen mit zwei Analysemodi.
### Überwachungsmodi
**Standard-Modus**
- FSEvents-basierte Echtzeit-Dateisystemüberwachung
- Intelligente Rauschunterdrückung mit konfigurierbarem Entprellen
- Relevanzbewertung zur Filterung unbedeutender Änderungen
- Sofortige Benachrichtigungen bei hochrelevanten Änderungen
**KI-Modus** (erfordert Claude-API-Schlüssel)
- Claude-KI analysiert jede erkannte Änderung
- Vollständiger Kontext an KI gesendet: Signaturinfo, LOLBins, Verhaltensanomalien, Risikobewertungen
- KI entscheidet, ob eine Änderung basierend auf der tatsächlichen Bedrohungsstufe eine Benachrichtigung erfordert
- Konfigurierbares Prüfintervall (30 Sekunden bis 1 Stunde)
- Filterung nach Schweregrad-Schwellenwert (Info, Niedrig, Mittel, Hoch, Kritisch)
### Menüleisten-Integration
- Echtzeit-Überwachungsstatusanzeige
- Modus-Abzeichen mit „KI" oder „Std"
- Schnellsteuerung (Überwachung starten/stoppen, Scan auslösen)
- Einstellungszugriff
- Abzeichenanzahl für nicht bestätigte Änderungen
- Vorschau der letzten erkannten Änderung
### Benachrichtigungs-Deduplizierung
- Gleiches Element löst innerhalb der Abkühlphase keine wiederholten Benachrichtigungen aus
- Konfigurierbare Abkühlzeit (1-24 Stunden, Standard 2 Stunden)
- Verhindert Benachrichtigungsmüdigkeit durch sich häufig ändernde Elemente
### Startbenachrichtigung
Wenn die Überwachung startet, erhalten Sie eine Benachrichtigung mit Bestätigung von:
- Aktivem Modus (KI-Modus oder Standard-Modus)
- Prüfintervall (KI) oder „Echtzeit" (Standard)
- Benachrichtigungsschwellenwerteinstellungen
### Änderungserkennung
- **Hinzugefügt** — Neue Persistenzelemente
- **Entfernt** — Gelöschte Elemente
- **Geändert** — Konfigurationsänderungen (aktiviert/deaktiviert, Pfadänderungen usw.)
- **Aktiviert/Deaktiviert** — Zustandsänderungen
### KI-Analysedetails
Wenn der KI-Modus aktiv ist, sendet jede Änderung vollständige Elementdaten an Claude:
- Basisinformationen (Name, Kategorie, Pfade, Plist-Inhalt)
- Signaturdetails (signiert, Apple, notarisiert, Team-ID, Zertifikatsstatus)
- Risikobewertung (Punktzahl, detaillierte Aufschlüsselung)
- LOLBins-Erkennungen mit MITRE-Zuordnungen
- Verhaltensanomalien
- Absichtsinkongruenzen (Plist vs. Binärdatei)
- Altersanomalien (Zeitstempelanalyse)
- Signiert-aber-gefährlich-Flags
Claude antwortet mit:
- `shouldNotify` — Ob der Benutzer benachrichtigt werden soll
- `severity` — Bedrohungsstufenbewertung
- `title` — Benachrichtigungstitel
- `explanation` — Warum dies verdächtig ist oder nicht
- `recommendation` — Empfohlene Aktion
- `mitreTechniques` — Relevante ATT&CK-Techniken
### KI-Anpassung
Steuern Sie, wie die KI Änderungen analysiert, über **Einstellungen → KI**:
**Strukturierte Optionen**
| Option | Standard | Wirkung |
|--------|----------|---------|
| Apple-signiert ignorieren | EIN | Elemente von Apple signiert (com.apple.*) herabstufen |
| Systempfade ignorieren | EIN | /System- und /Library-Pfade herabstufen |
| Nicht signierte priorisieren | EIN | Besondere Aufmerksamkeit für nicht signierte ausführbare Dateien |
| Fokus auf LOLBins | EIN | Living-off-the-Land Binaries-Erkennung priorisieren |
| Minimale Risikobewertung | 0 | Nur Elemente mit Risiko >= Schwellenwert analysieren |
| Ignorierte Pfade | - | Benutzerdefinierte zu überspringende Pfade (kommagetrennt) |
**Benachrichtigungsschwellenwert**
- `Info` — Alles benachrichtigen
- `Niedrig` — Benachrichtigen bei niedriger Schwere und darüber
- `Mittel` — Benachrichtigen bei mittlerer Schwere und darüber (Standard)
- `Hoch` — Nur hohe und kritische
- `Kritisch` — Nur kritische Bedrohungen
**Benutzerdefinierte Eingabeaufforderung**
Fügen Sie Ihre eigenen Anweisungen hinzu, die an die KI-Eingabeaufforderung angehängt werden. Beispiele:```
Always notify me if an item uses python or osascript.
Ignore anything from Microsoft.
Be more aggressive with unsigned items from ~/Downloads.
Die KI nutzt diese Einstellungen, um intelligentere Entscheidungen zu treffen. Zum Beispiel:
/tmp/ → Kritische Benachrichtigungosascript mit RunAtLoad → Hohe BenachrichtigungMacPersistenceChecker enthält einen MCP-Server (Model Context Protocol), der es Claude Code, Claude Desktop und anderen MCP-kompatiblen Clients ermöglicht, Persistenzdaten abzufragen.
swift build --target MPCServer
Die Binärdatei wird unter `.build/debug/mpc-server` erstellt.
### Verfügbare MCP-Werkzeuge
| Werkzeug | Beschreibung |
|------|-------------|
| `get_current_state` | Alle aktuellen Persistenzelemente mit optionalen Filtern abrufen |
| `get_diff` | Änderungen von der Basislinie oder einem bestimmten Snapshot abrufen |
| `get_summary` | Kompakte Übersicht mit Zählwerten und den häufigsten Bedrohungen |
| `get_item_details` | Vollständige Details für ein bestimmtes Element anhand der Kennung |
| `get_risk_analysis` | Aggregierte Risikoanalyse mit Empfehlungen |
| `get_snapshots` | Verfügbare Snapshots mit Metadaten auflisten |
| `compare_snapshots` | Zwei Snapshots auf Änderungen vergleichen |
### Claude Code Konfiguration
Fügen Sie zu Ihren Claude Code MCP-Einstellungen hinzu (`~/.claude/claude_desktop_config.json` oder ähnlich):```json
{
"mcpServers": {
"macpersistence": {
"command": "/path/to/mpc-server",
"args": []
}
}
}
Sobald konfiguriert, können Sie Claude Code fragen:
Maschinenlesbarer Export für Sicherheitspipelines:
Schaltfläche erst nach Abschluss des Scans aktiviert.
Verdächtige Persistenzeinträge sicher neutralisieren, ohne dauerhafte Löschung:








git clone https://github.com/Pinperepette/MacPersistenceChecker.git cd MacPersistenceChecker ./build.sh
Kopieren Sie `MacPersistenceChecker.app` nach `/Applications/`.
### Anforderungen
- macOS 13.0+
- Xcode 15+ oder Swift 5.9+
### Abhängigkeiten
- [GRDB.swift](https://github.com/groue/GRDB.swift) – SQLite-Datenbank
---
## Berechtigungen
Erfordert **Full Disk Access (Vollzugriff auf die Festplatte)** zum Scannen:
- `/Library/LaunchDaemons`
- Systemkonfigurationsdateien
- TCC-Datenbank
- Shell-Startdateien
Ohne Full Disk Access sind einige Elemente möglicherweise nicht sichtbar.
---
## Lizenz
MIT-Lizenz – Siehe [LICENSE](https://github.com/pinperepette/macpersistencechecker/blob/HEAD/LICENSE) für Details.
## Autor
**pinperepette** – 2025
## Sternverlauf
<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>
---
*Inspiriert von [Autoruns](https://docs.microsoft.com/en-us/sysinternals/downloads/autoruns) für Windows von Mark Russinovich*