Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Oleh Mario Hewardt
Diterbitkan: 26 Maret 2026
Unduh listent untuk macOS (GitHub)
Pendahuluan
Perangkat lunak baris perintah untuk menemukan dan mencantumkan hak istimewa penandatanganan kode untuk biner yang dapat dieksekusi di macOS. Mendukung pemindaian statis, pemantauan proses real time, dan operasi daemon latar belakang.
listent secara rekursif memindai direktori untuk menemukan biner yang dapat dieksekusi dan mengekstrak hak penandatanganan kode. Ini dirancang untuk peneliti keamanan, pengembang, dan administrator sistem yang perlu mengaudit atau memahami izin yang diminta oleh aplikasi macOS.
Features
Kemampuan Inti
- Pemindaian cepat: Menjelajahi pohon direktori secara efisien dengan pemfilteran pintar dan indikator progres
-
Ekstraksi hak istimewa: Menggunakan macOS
codesignuntuk mengekstrak hak istimewa dari biner - Pemfilteran fleksibel: Filter menurut jalur dan kunci pemberian izin tertentu dengan dukungan pola glob
- Beberapa format output: Output JSON yang dapat dibaca manusia dan terstruktur
- Beberapa jalur: Memindai beberapa direktori dalam satu perintah
- Interupsi yang halus: Pembatalan bersih dengan Ctrl+C
Mode Operasi
1. Mode Pemindaian Statis (Default)
Memindai file dan direktori untuk hak akses
# 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 Pemantauan Waktu Nyata
Pantau proses baru untuk pemberian izin:
# 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 Daemon
Jalankan pemantauan terus menerus di latar depan (berguna untuk pengujian atau operasi daemon manual):
# Run as daemon in foreground
listent daemon run
# Daemon with custom config file
listent daemon run --config /etc/listent/custom.toml
Templat file konfigurasi kustom (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 = []
Catat log kueri dengan:
# 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. Layanan Daemon Latar Belakang
Jalankan pemantauan sebagai layanan sistem persisten yang dikelola oleh 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
Pemindaian Statis
# 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
Pemantauan Proses
# 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
Manajemen 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
Konfigurasi
Opsi Baris Perintah
-
Jalur: Beberapa jalur dapat ditentukan sebagai argumen posisi:
listent /path1 /path2 -
Pemfilteran hak akses:
-e "pattern"mendukung kecocokan tepat dan pola umum (*,?,[]) -
Format output:
--jsonatau-juntuk output terstruktur, defaultnya dapat dibaca manusia -
Mode diam:
--quietatau-qmenyembunyikan peringatan tentang file yang tidak dapat dibaca -
Pemantauan:
listent monitorsubperintah memungkinkan pemantauan proses waktu nyata -
Interval pemantauan:
--interval SECONDSmengatur frekuensi polling (0.1-300.0, default: 1.0) -
Mode Daemon:
listent daemon runberjalan sebagai proses layanan latar belakang -
Manajemen daemon:
listent daemon install|uninstall|status|stop|logs -
File konfigurasi:
--config FILEatau-c FILEmenentukan jalur konfigurasi daemon
Pola Pemberian Izin
# 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.*"
Konfigurasi Daemon
Pengaturan Daemon dikonfigurasi melalui file konfigurasi TOML:
-
Lokasi default:
~/.config/listent/daemon.toml -
Jalur kustom: Gunakan
--configdengandaemon install
Untuk mengubah konfigurasi, edit file konfigurasi dan mulai ulang daemon:
# Edit config
nano ~/.config/listent/daemon.toml
# Restart daemon
listent daemon stop
sudo listent daemon install
Contoh konfigurasi daemon:
[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"
Troubleshooting
Ctrl+C Tidak Berfungsi di Terminal Eksternal
Jika Ctrl+C tidak mengganggu pemindaian di Terminal.app atau iTerm2, ini disebabkan oleh masalah penanganan sinyal terminal macOS.
Solusi sementara: Sebelum menjalankan listent, jalankan:
trap - INT
Ini menghapus perangkap interupsi yang ada dan memulihkan perilaku SIGINT default. Setelah ini, Ctrl+C akan bekerja secara normal.
Catatan: Masalah ini tidak memengaruhi terminal terintegrasi VS Code.
Format Hasil
Dapat Dibaca Manusia (Bawaan)
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
}
}
Keamanan
Jika Anda yakin telah menemukan masalah keamanan, silakan laporkan melalui repositori GitHub proyek daripada membuka masalah publik.
Unduh jcd untuk Linux dan macOS (GitHub)
Berjalan pada:
- macOS