Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Di Mario Hewardt
Pubblicato: 26 marzo 2026
Scaricare l'ascolto per macOS (GitHub)
Introduzione
Strumento da riga di comando per individuare ed elencare i diritti di firma del codice per i file binari eseguibili macOS. Supporta l'analisi statica, il monitoraggio dei processi in tempo reale e l'operazione del daemon in background.
listent analizza in modo ricorsivo le directory per trovare i file binari eseguibili ed estrae i relativi diritti di firma del codice. È progettato per ricercatori, sviluppatori e amministratori di sistema che devono controllare o comprendere le autorizzazioni richieste dalle applicazioni macOS.
Features
Funzionalità principali
- Analisi rapida: attraversa in modo efficiente gli alberi delle directory con indicatori di filtro e avanzamento intelligenti
-
Estrazione privilegi: Usa macOS
codesignper estrarre i privilegi dai file binari - Filtro flessibile: filtrare in base a percorsi e chiavi entitlement specifiche con supporto dei criteri GLOB
- Formati di output multipli: output JSON leggibile e strutturato
- Più percorsi: analizzare più directory in un singolo comando
- Interruzioni eleganti: cancellazione pulita con Ctrl+C
Modalità operative
1. Modalità analisi statica (impostazione predefinita)
Analizzare file e directory per ottenere i diritti:
# 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. Modalità di monitoraggio in tempo reale
Monitorare i nuovi processi per i diritti:
# 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. Modalità daemon
Eseguire il monitoraggio in modo continuo in primo piano (utile per il test o l'operazione manuale del daemon):
# Run as daemon in foreground
listent daemon run
# Daemon with custom config file
listent daemon run --config /etc/listent/custom.toml
Modello di file di configurazione personalizzato (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 = []
Eseguire query sui log con:
# 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. Servizio daemon di background
Eseguire il monitoraggio come servizio di sistema persistente gestito da 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
Examples
Analisi statica
# 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
Process Monitoring (Monitoraggio del processo)
# 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
Gestione del daemon
# 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
Configurazione
Opzioni da riga di comando
-
Percorsi: è possibile specificare più percorsi come argomenti posizionali:
listent /path1 /path2 -
Filtro entitlement:
-e "pattern"supporta corrispondenze esatte e glob (*,?,[]) -
Formato di output:
--jsono-jper l'output strutturato, il valore predefinito è leggibile -
Modalità non interattiva:
--quieto-qelimina gli avvisi relativi ai file illeggibili -
Monitoraggio:
listent monitorsottocomando abilita il monitoraggio dei processi in tempo reale -
Intervallo di monitoraggio:
--interval SECONDSimposta la frequenza di polling (0,1-300.0, impostazione predefinita: 1,0) -
Modalità daemone:
listent daemon runviene eseguita come un processo in background -
Gestione del daemon:
listent daemon install|uninstall|status|stop|logs -
File di configurazione:
--config FILEo-c FILEspecifica il percorso di configurazione del daemon
Modelli entitlement
# 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.*"
Configurazione del daemon
Le impostazioni del daemon vengono configurate tramite un file di configurazione TOML:
-
Percorso predefinito:
~/.config/listent/daemon.toml -
Percorso personalizzato: usare
--configcondaemon install
Per modificare la configurazione, modificare il file di configurazione e riavviare il daemon:
# Edit config
nano ~/.config/listent/daemon.toml
# Restart daemon
listent daemon stop
sudo listent daemon install
Configurazione del daemon di esempio:
[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"
Risoluzione dei problemi
CTRL+C Non funziona nei terminali esterni
Se CTRL+C non interrompe l'analisi in Terminal.app o iTerm2, ciò è dovuto a un problema di gestione dei segnali del terminale macOS.
Soluzione alternativa: prima di eseguire listent, eseguire:
trap - INT
In questo modo vengono rimosse eventuali trap di interrupt esistenti e viene ripristinato il comportamento SIGINT predefinito. Al termine, CTRL+C dovrebbe funzionare normalmente.
Nota: questo problema non influisce sul terminale integrato di VS Code.
Formati di output
Human-Readable (impostazione predefinita)
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
Formato JSON
{
"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
}
}
sicurezza
Se si ritiene di aver rilevato un problema di sicurezza, segnalarlo tramite il repository GitHub del progetto anziché aprire un problema pubblico.
Scaricare jcd per Linux e macOS (GitHub)
Viene eseguito in:
- macOS