Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
machscope — Explorateur des IPC macOS, launchd, Mach-O et des relations de confiance — outil forensique natif du terminal, sans dépendance | Kitploit
Outils/GitHubGitHub/m10ust/machscope
ReconnaissanceAnalyse des VulnérabilitésRétro-ingénierieAnalyse ForensiqueCollecte d'InformationsAnalyse de MalwareCriminalistique NumériqueAnalyse de BinairesRenseignement sur les MenacesRéponse aux Incidents
GitHubm10ust/machscope
140il y a 20 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →

machscope

Explorateur des IPC macOS, launchd, Mach-O et des relations de confiance — outil forensique natif du terminal, sans dépendance

Voir le dépôt
Partager

machscope

machscope est un explorateur macOS natif du terminal qui transforme les processus, les jobs launchd, les services Mach, les bundles, les signatures, les entitlements et les liaisons Mach-O en un seul graphe interrogable.

Il existe pour répondre brutalement bien à une question simple :

À quoi ce processus, service, binaire ou bundle est-il réellement connecté ?

Il corrèle les processus, les exécutables, les jobs launchd, les services Mach, les bundles, les services XPC embarqués, les signatures de code, les entitlements, les liaisons Mach-O et les constats de confiance/anomalies en une seule vue.

Si Activity Monitor, ps, lsof, launchctl, codesign et otool avaient un enfant paranoïaque et orienté opérateur, ce serait cet outil.

Pourquoi il existe

Les internals de macOS sont élégants, mais la vérité est éparpillée.

Pour comprendre un processus suspect, on finit souvent par sauter entre :

  • ps
  • lsof
  • launchctl
  • codesign
  • otool
  • le Info.plist du bundle
  • les plists launchd
  • ses propres notes et suppositions

machscope condense ce flux de travail en un seul outil de terminal.

Il est conçu pour :

  • le triage de sécurité
  • la chasse aux malwares
  • l'investigation de persistance
  • l'exploration des services launchd et Mach
  • le débogage de comportements macOS étranges
  • la compréhension de la façon dont une application est réellement assemblée

Ce qu'il fait

Étant donné un PID, un chemin, un label launchd ou un nom de service Mach, machscope peut corréler :

  • les métadonnées de processus issues de ps
  • le chemin de l'exécutable et le contexte des fichiers ouverts issus de lsof
  • l'état launchd et les indices de label issus de launchctl
  • les métadonnées de plist launchd et les MachServices déclarés
  • l'identité du bundle et les services .xpc embarqués
  • l'identifiant de signature de code, le team ID, la chaîne d'autorité et les indices d'exécution
  • les données d'entitlements issues de codesign
  • les en-têtes Mach-O, les dylibs liées, les load commands et les rpaths issus de otool
  • les nœuds / arêtes du graphe pour une exportation en aval
  • les constats de confiance avec preuves

Il ne prétend pas observer chaque relation XPC vivante. Certaines relations sont déclarées, pas observées. Cette honnêteté est intentionnelle.

Pourquoi machscope plutôt que les outils macOS bruts ?

  • ps montre le processus, pas la chaîne de propriété
  • launchctl montre le job, pas le contexte complet binaire/bundle/confiance
  • codesign montre l'identité, pas les relations à l'exécution
  • otool montre les liaisons, pas l'exposition aux services launchd ou Mach
  • machscope corrèle tout cela en une seule passe

Fonctionnalités

  • Python sans dépendances
    • utilise uniquement la bibliothèque standard de Python
  • Natif du terminal
    • une sortie humaine lisible en premier, du JSON quand on le souhaite
  • Résolution de cible flexible
    • inspecter un PID, un exécutable, un bundle d'application, un label launchd ou un service Mach
  • Pivots du résolveur --follow
    • les cibles de type bundle se résolvent vers leur exécutable
    • les services Mach se résolvent vers le job launchd déclarant et l'exécutable
    • les labels launchd pivotent vers le PID vivant lorsqu'il est présent
  • Score de confiance/anomalies
    • fait remonter les bizarreries sans prétendre que toute bizarrerie est un malware
  • Modèle de graphe simple
    • graph.nodes et graph.edges sont conçus pour de futurs flux TUI, rendu ou diff

Commandes

root@kitploit:~
./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]

Exemples

Inspecter un processus vivant

root@kitploit:~
./machscope.py inspect 1
./machscope.py inspect 57382

Inspecter une application ou un binaire

root@kitploit:~
./machscope.py inspect /System/Applications/Calculator.app --follow
./machscope.py inspect /usr/libexec/remoted

Inspecter un job launchd

root@kitploit:~
./machscope.py inspect com.apple.WindowServer --follow
./machscope.py inspect ai.openclaw.gateway --follow

Inspecter un service Mach

root@kitploit:~
./machscope.py inspect com.apple.dnssd.service --follow

Rechercher des anomalies

root@kitploit:~
./machscope.py scan --limit 40 --min-score 1
./machscope.py scan --limit 10 --min-score 6

Parcourir les services déclarés

root@kitploit:~
./machscope.py services
./machscope.py services mDNS
./machscope.py services com.apple

Exemple de sortie

root@kitploit:~
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

Sortie JSON

inspect --json renvoie un objet structuré conçu pour les scripts et le futur travail d'interface.

Forme de plus haut niveau :

  • target
  • target_resolution
  • process
  • binary
  • bundle
  • launchd
  • trust
  • graph.nodes
  • graph.edges

Le graphe est volontairement simple pour pouvoir alimenter :

  • une future TUI
  • un rendu
  • un mode diff
  • d'autres outils

Comment fonctionne --follow

C'est avec --follow que machscope commence à ressembler moins à un extracteur de métadonnées et plus à un explorateur.

Il ajoute des pivots de résolution tels que :

  • cible bundle → exécutable
  • service Mach → job launchd déclarant → exécutable
  • label launchd → état launchctl print → PID vivant lorsqu'il est disponible

C'est important car les artefacts macOS les plus intéressants ne sont souvent pas la chose littérale que vous avez tapée, mais la chose qui se trouve derrière.

Constats de confiance

machscope inclut une couche simple de confiance/anomalies.

Exemples de ce qu'il peut faire remonter :

  • binaires manquants derrière des entrées de persistance
  • cibles d'exécution inscriptibles par l'utilisateur
  • entitlements sensibles sur du code non-Apple
  • incohérences entre label launchd et identité du bundle
  • suffixes launchd bizarres comme .reloaded
  • chemins à apparence système qui ne se valident pas comme prévu

Ce n'est pas un moteur de verdict malware. C'est un moyen de faire remonter des pistes, de réduire les angles morts et de rendre les chaînes suspectes plus faciles à interroger.

Choix de conception

Sans dépendances par conception

La première version utilise intentionnellement :

  • la bibliothèque standard de Python
  • uniquement les outils macOS natifs

Les outils enveloppés incluent :

  • ps
  • lsof
  • launchctl
  • codesign
  • otool
  • file

Cela rend l'outil facile à cloner, inspecter et exécuter sur un système quasi standard.

Honnête sur la visibilité

Certaines relations sont déclarées, pas observées.

Par exemple :

  • les plists launchd peuvent déclarer des services Mach
  • les bundles peuvent révéler des services XPC embarqués
  • mais les outils publics n'exposent pas toujours proprement les relations vivantes client/serveur XPC

machscope préfère être explicite plutôt que de feindre la certitude.

Prérequis

  • macOS
  • Python 3
  • accès aux outils natifs tels que ps, lsof, launchctl, codesign, otool et file

Privilèges

Exécutez-le d'abord en utilisateur normal.

C'est souvent suffisant pour obtenir des réponses utiles.

Certains détails peuvent être partiels sans privilèges élevés, notamment autour de :

  • lsof
  • launchctl
  • les détails de signature de code sur certaines cibles

Si vous élevez les privilèges, faites-le délibérément.

Cas d'usage pertinents

  • « Qu'est-ce qui possède exactement ce service Mach ? »
  • « Ce job launchd est-il normal, obsolète ou cassé ? »
  • « Pourquoi ce processus est-il parenté par launchd mais pas là où je l'attendais ? »
  • « Quels entitlements cet helper a-t-il réellement ? »
  • « Ce bundle d'application cache-t-il des services XPC embarqués ? »
  • « Pourquoi ce processus semble-t-il suspect ? »

Non-objectifs

machscope n'essaie pas d'être :

  • un EDR complet
  • un système de télémétrie noyau en direct
  • un observateur XPC parfait
  • une application GUI
  • un framework géant

C'est un outil local tranchant pour rendre les internals de macOS lisibles.

Statut

Précoce, mais déjà utile.

La sortie actuelle et le modèle de graphe sont délibérément façonnés pour que les futures versions puissent ajouter :

  • l'exploration TUI
  • le mode diff
  • les intégrations d'export/rendu
  • des règles de confiance plus riches
  • un meilleur parcours de graphe inter-cibles
Télécharger l’outil