Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Par Mario Hewardt
Publication : 26 mars 2026
Télécharger listent pour macOS (GitHub)
Présentation
Outil en ligne de commande permettant de découvrir et de répertorier les droits de signature de code pour les fichiers binaires exécutables macOS. Prend en charge l’analyse statique, la surveillance des processus en temps réel et l'exécution de programmes d'arrière-plan.
listent Analyse de manière récursive les répertoires pour rechercher des fichiers binaires exécutables et extrait leurs droits de signature de code. Il est conçu pour les chercheurs en sécurité, les développeurs et les administrateurs système qui doivent auditer ou comprendre les autorisations demandées par les applications macOS.
Fonctionnalités
Fonctionnalités principales
- Analyse rapide : traverse efficacement les arborescences d’annuaires avec des indicateurs de filtrage et de progression intelligents
-
Extraction des droits d’utilisation : utilise macOS
codesignpour extraire les droits des fichiers binaires - Filtrage flexible : Filtrer par chemins et clés d'autorisation spécifiques avec prise en charge des modèles glob
- Plusieurs formats de sortie : sortie JSON lisible par l’homme et structurée
- Chemins d’accès multiples : analyser plusieurs répertoires dans une seule commande
- Interruptions élégantes : Annulation propre avec Ctrl+C
Modes de fonctionnement
1. Mode d’analyse statique (par défaut)
Analysez les fichiers et les répertoires pour obtenir les autorisations :
# Scan default locations (/usr/bin and /usr/sbin)
listent
# Scan specific paths
listent /usr/bin /usr/sbin
# Filter by entitlement patterns
listent -e "com.apple.security.*"
listent -e "*network*" -e "*debug*"
# JSON output for automation
listent /usr/bin -e "*security*" --json
2. Mode moniteur en temps réel
Surveillez les nouveaux processus pour les droits d’utilisation :
# Monitor all new processes
listent monitor
# Monitor with custom polling interval
listent monitor --interval 0.5
# Monitor specific entitlements only
listent monitor -e "com.apple.security.network.*"
3. Mode démon
Exécutez la surveillance en continu au premier plan (utile pour tester ou effectuer une opération de démon manuelle) :
# Run as daemon in foreground
listent daemon run
# Daemon with custom config file
listent daemon run --config /etc/listent/custom.toml
Modèle de fichier de configuration personnalisé (daemon.toml) :
[daemon]
# How often to poll for new processes, in seconds (0.1 - 300.0)
polling_interval = 1.0
# Start automatically when loaded by launchd (RunAtLoad)
auto_start = true
[monitoring]
# Filesystem paths to scan for running process binaries.
# Empty list = monitor processes from all paths.
path_filters = ["/usr/bin", "/usr/sbin"]
# Entitlement patterns to match (glob syntax). Empty list = all entitlements.
# Examples: "com.apple.security.*", "*network*"
entitlement_filters = []
Journaux de requêtes avec :
# View listent logs in real-time
log stream --predicate 'subsystem == "com.microsoft.sysinternals.listent"' --level info
# View recent logs
log show --predicate 'subsystem == "com.microsoft.sysinternals.listent"' --last 1h
# Filter for errors only
log show --predicate 'subsystem == "com.microsoft.sysinternals.listent" AND messageType == error' --last 24h
4. Service démon d'arrière-plan
Exécutez la surveillance en tant que service système persistant géré par launchd.
# Install and start daemon
sudo listent daemon install
# Check daemon status
listent daemon status
# View daemon logs
listent daemon logs
listent daemon logs --since 1h
listent daemon logs --since 30m
listent daemon logs --since "2025-01-15 10:00"
listent daemon logs --format json
listent daemon logs -f # Follow logs in real-time
# Stop daemon process
listent daemon stop
# Uninstall service
sudo listent daemon uninstall
Exemples
Analyse statique
# Basic scan with progress (uses default /usr/bin and /usr/sbin)
listent
# Multi-directory scan with filtering
listent /usr/bin /usr/sbin -e "*security*"
# Find all network-related entitlements
listent -e "*network*" --json | jq '.results[].entitlements'
# Scan quietly (suppress warnings)
listent /usr/bin --quiet
Analyse des processus
# Monitor all processes with 2-second intervals
listent monitor --interval 2.0
# Monitor only security-related entitlements
listent monitor -e "com.apple.security.*"
# Run as daemon with custom config
listent daemon run --config /etc/listent/daemon.toml
Gestion des daemons
# Install daemon with default monitoring (requires sudo)
sudo listent daemon install
# Install with custom configuration file
sudo listent daemon install --config /path/to/config.toml
# View recent daemon activity
listent daemon logs --since 1h
# Check if daemon is running
listent daemon status
# Stop and remove daemon
listent daemon stop
sudo listent daemon uninstall
Paramétrage
Options de la ligne de commande
-
Chemins d’accès : plusieurs chemins peuvent être spécifiés en tant qu’arguments positionnels :
listent /path1 /path2 -
Filtrage des droits d’utilisation :
-e "pattern"prend en charge les correspondances exactes et les glob (*,?,[]) -
Format de sortie :
--jsonou-jpour la sortie structurée, la valeur par défaut est lisible par l’homme -
Mode silencieux :
--quietou-qsupprime les avertissements relatifs aux fichiers non lisibles -
Supervision :
listent monitorla sous-commande active la surveillance des processus en temps réel -
Intervalle du moniteur :
--interval SECONDSdéfinit la fréquence d’interrogation (0.1-300.0, valeur par défaut : 1.0) - Mode démon :
listent daemon runen tant que processus démon en arrière-plan -
Gestion des démons :
listent daemon install|uninstall|status|stop|logs -
Fichier de configuration :
--config FILEou-c FILEspécifie le chemin de configuration du démon
Modèles de droits
# Exact match
-e "com.apple.security.network.client"
# Wildcard patterns
-e "com.apple.security.*" # All Apple security entitlements
-e "*network*" # Any entitlement containing "network"
-e "*.debug.*" # Debug-related entitlements
# Multiple patterns (OR logic)
-e "com.apple.private.*" -e "*.debug.*"
Configuration du démon
Les paramètres de démon sont configurés via un fichier de configuration TOML :
-
Emplacement par défaut :
~/.config/listent/daemon.toml -
Chemin d’accès personnalisé : utiliser
--configavecdaemon install
Pour modifier la configuration, modifiez le fichier de configuration et redémarrez le démon :
# Edit config
nano ~/.config/listent/daemon.toml
# Restart daemon
listent daemon stop
sudo listent daemon install
Exemple de configuration de démon :
[daemon]
polling_interval = 1.0
auto_start = true
[monitoring]
path_filters = []
entitlement_filters = ["com.apple.security.*", "*network*"]
[logging]
level = "info"
subsystem = "com.microsoft.sysinternals.listent"
category = "daemon"
Résolution des problèmes
Ctrl+C ne fonctionne pas dans les terminaux externes
Si Ctrl+C n’interrompt pas l’analyse dans Terminal.app ou iTerm2, cela est dû à un problème de gestion des signaux de terminal macOS.
Solution de contournement : Avant d’exécuter listent, exécutez :
trap - INT
Cela supprime tout piège d'interruption existant et restaure le comportement SIGINT par défaut. Après cela, Ctrl+C doit fonctionner normalement.
Remarque : ce problème n’affecte pas le terminal intégré de VS Code.
Formats de sortie
Humainement lisible (par défaut)
Found 2 binaries with 5 total entitlements:
/usr/bin/security:
com.apple.private.platformsso.security: true
/usr/bin/nc:
com.apple.security.network.client: true
com.apple.security.network.server: true
Scan Summary:
Scanned: 156 files
Matched: 2 files
Duration: 2.34s
JSON Format
{
"results": [
{
"path": "/usr/bin/security",
"entitlements": {
"com.apple.private.platformsso.security": true
},
"entitlement_count": 1
}
],
"summary": {
"scanned": 156,
"matched": 2,
"duration_ms": 2340,
"skipped_unreadable": 0
}
}
Sécurité
Si vous pensez avoir trouvé un problème de sécurité, signalez-le via le dépôt GitHub du projet plutôt que d’ouvrir un problème public.
Télécharger jcd pour Linux et macOS (GitHub)
S’exécute sur :
- macOS