listent 1.0

마리오 헤워드

게시 날짜: 2026년 3월 26일

macOS용 Listent 다운로드 (GitHub)

소개

macOS 실행 파일 이진 파일에 대한 코드 서명 자격을 검색하고 나열하는 명령줄 도구입니다. 정적 검색, 실시간 프로세스 모니터링 및 백그라운드 디먼 작업을 지원합니다.

listent 디렉터리를 재귀적으로 검색하여 실행 가능한 이진 파일을 찾고 코드 서명 자격을 추출합니다. macOS 애플리케이션에서 요청한 권한을 감사하거나 이해해야 하는 보안 연구원, 개발자 및 시스템 관리자를 위해 설계되었습니다.

Features

핵심 기능

  • 빠른 검색: 디렉터리 트리를 스마트 필터링 및 진행률 표시기를 사용하여 효율적으로 탐색합니다.
  • 권한 추출: macOS codesign 를 사용하여 이진 파일에서 자격 추출
  • 유연한 필터링: glob 패턴 지원을 사용하여 경로 및 특정 권한 키별로 필터링
  • 여러 출력 형식: 사람이 읽을 수 있고 구조화된 JSON 출력
  • 여러 경로: 단일 명령으로 여러 디렉터리 검색
  • 우아한 인터럽트: Ctrl+C로 깨끗하게 취소

운영 모드

1. 정적 검사 모드(기본값)

자격에 대한 파일 및 디렉터리를 검색합니다.

# 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. 실시간 모니터 모드

자격에 대한 새 프로세스를 모니터링합니다.

# 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. 디먼 모드

포그라운드(테스트 또는 수동 디먼 작업에 유용)에서 모니터링을 지속적으로 실행합니다.

# Run as daemon in foreground
listent daemon run

# Daemon with custom config file
listent daemon run --config /etc/listent/custom.toml

사용자 지정 구성 파일 템플릿(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 = []

다음을 사용하여 로그를 쿼리합니다.

# 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. 백그라운드 디먼 서비스

시작 시 관리되는 영구 시스템 서비스로 모니터링을 실행합니다.

# 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

예제

정적 검사

# 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

프로세스 모니터링

# 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

디먼 관리

# 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

Configuration

명령줄 옵션

  • 경로: 여러 경로를 위치 인수로 지정할 수 있습니다. listent /path1 /path2
  • 권한 필터링: -e "pattern" 정확한 일치 항목 및 글롭(*, ?, []) 지원
  • 출력 형식: --json 또는 -j 구조적 출력의 경우 기본값은 사람이 읽을 수 있습니다.
  • 조용한 모드: --quiet 읽을 수 없는 파일에 대한 경고를 -q 표시하지 않습니다.
  • 모니터링: listent monitor 하위 명령을 사용하면 실시간 프로세스 모니터링이 가능합니다.
  • 모니터 간격: --interval SECONDS 폴링 빈도 설정(0.1-300.0, 기본값: 1.0)
  • 디먼 모드: listent daemon run 백그라운드 디먼 프로세스로 실행
  • 디먼 관리: listent daemon install|uninstall|status|stop|logs
  • 구성 파일: --config FILE 또는 -c FILE 디먼 구성 경로를 지정합니다.

자격 패턴

# 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.*"

데몬 구성

디먼 설정은 TOML 구성 파일을 통해 구성됩니다.

  • 기본 위치: ~/.config/listent/daemon.toml
  • 사용자 지정 경로: --configdaemon install와 함께 사용하십시오.

구성을 변경하려면 구성 파일을 편집하고 디먼을 다시 시작합니다.

# Edit config
nano ~/.config/listent/daemon.toml

# Restart daemon
listent daemon stop
sudo listent daemon install

예제 디먼 구성:

[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가 작동하지 않음

Ctrl+C가 Terminal.app 또는 iTerm2에서 검사를 중단하지 않는 경우 이는 macOS 터미널 신호 처리 문제 때문입니다.

해결 방법: 실행 listent하기 전에 다음을 실행합니다.

trap - INT

이렇게 하면 기존 인터럽트 트랩이 제거되고 기본 SIGINT 동작이 복원됩니다. 이 후에는 Ctrl+C가 정상적으로 작동합니다.

참고: 이 문제는 VS Code의 통합 터미널에 영향을 주지 않습니다.

출력 형식

사람이 읽을 수 있는 형태(기본값)

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 형식

{
  "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
  }
}

보안

보안 문제를 발견했다고 생각되면 공개 문제를 열지 않고 프로젝트의 GitHub 리포지토리 를 통해 보고하세요.

Linux 및 macOS용 jcd 다운로드(GitHub)

다음에서 실행됩니다.

  • macOS