Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
process-watcher — 익스플로잇 탐지를 시도하는 프로세스 모니터링 도구 | Kitploit
도구/GitHubGitHub/neo23x0/process-watcher
Defensive ToolsDynamic Analysis (Sandboxing)Malware AnalysisThreat IntelligenceIntrusion DetectionIncident ResponseLog Analysis
GitHubneo23x0/process-watcher

process-watcher

익스플로잇 탐지를 시도하는 프로세스 모니터링 도구

저장소 보기
131651일 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

process-watcher 로고

process-watcher

익스플로잇을 탐지하려고 시도하는 프로세스 모니터링 도구

[!IMPORTANT] 신종 위협: 2026년 10월 21일 14:00 UTC, PHP 보안 긴급 릴리스. PHP 프로젝트가 10월 20일에 이를 발표했습니다 (발표문): 두 개의 치명적 취약점이며, 둘 다 CVSS v4.0 9.2로 평가되었습니다. 세부 정보, 영향을 받는 버전 및 수정 사항은 릴리스와 함께 공개되며, 세부 정보가 공개되거나 익스플로잇이 시작되면 더 일찍 나올 수 있습니다. 지금 PHP 업데이트를 준비하십시오.

발표문에는 이 결함이 어떤 종류인지 나와 있지 않습니다. 공격으로 PHP가 프로그램을 시작하게 되면, process-watcher는 각 프로그램을 명령줄과 함께 보여주고 선택적으로 지정한 프로그램을 종료할 수 있습니다. 이 도구는 이러한 결함을 찾지 않습니다: 아무것도 예방하지 못하며 프로세스를 시작하지 않고 PHP 내부에서 실행되는 코드는 놓치므로, 탐지 계층을 추가할 뿐 패치를 대체하지는 않습니다.

여기서 시작하십시오: process-watcher로 PHP 감시하기, 또는 전체 PHP 가이드를 읽으십시오.

서비스가 무엇을 시작하는지 확인하십시오. process-watcher는 서비스(웹 서버, 애플리케이션 서버, ...)와 그 서비스가 생성하는 모든 프로세스를 실시간으로 추적하고, 각 시작, 프로그램 변경 및 종료를 JSON으로 기록하며 선택적으로 명령줄도 함께 기록합니다. 웹 서버가 갑자기 셸이나 curl을 실행하면, 무엇이 시작되었는지, 어느 프로세스에 의해, 어느 서비스에서 시작되었는지 확인할 수 있습니다. Linux(amd64, arm64)용 단일 정적 바이너리입니다: 다운로드하고, 압축을 풀고, 실행하십시오.

이 도구는 활동을 가시화할 뿐, 판단하지는 않습니다. 기준선을 구축하거나 공격 여부를 결정하는 일은 사용자 또는 이벤트를 수신하는 시스템(로그 파일, SIEM, 웹훅)에 맡겨집니다. 선택적으로 특정 자식 프로세스에 표적화된 SIGKILL로 대응할 수 있습니다(종료 규칙).

process-watcher의 작동 방식: 이름에 지정한 텍스트(여기서는 php-fpm)가 포함된 모든 프로그램과 그 프로그램이 시작하는 모든 것을 감시하고, 각 시작, 프로그램 변경 및 종료를 로컬 JSON 로그에 기록하며, 선택적으로 TCP, UDP 또는 웹훅을 통해 이벤트를 전송하고, 리버스 셸과 같이 일치하는 자식 프로세스를 종료할 수 있습니다(종료 규칙).

빠른 시작

1. 다운로드 및 압축 해제 최신 릴리스(amd64 또는 arm64, 사용 중인 머신에서 감지됨; 아카이브 이름에 버전이 포함되어 있으므로 두 번째 줄에서 최신 태그를 조회합니다):

ARCH=$(uname -m | sed 's/x86_64/amd64/; s/aarch64/arm64/')
VERSION=$(curl -fsSLI -o /dev/null -w '%{url_effective}' https://github.com/Neo23x0/process-watcher/releases/latest | sed 's#.*/##')
curl -fsSLO https://github.com/Neo23x0/process-watcher/releases/download/$VERSION/process-watcher_${VERSION}_linux_${ARCH}.tar.gz
tar xzf process-watcher_${VERSION}_linux_${ARCH}.tar.gz && cd process-watcher_${VERSION}_linux_${ARCH}

2. 실행하기 관찰하려는 서비스에 대해 실행합니다. root 권한과 BTF를 지원하는 Linux 5.15 이상이 필요합니다; sudo ./process-watcher doctor를 실행하면 호스트가 요구 사항을 충족하는지 확인할 수 있습니다.

sudo ./process-watcher --watch-image-contains nginx --capture-argv=true

nginx는 서비스 실행 파일 이름(apache2, php-fpm, java, ...)의 부분 문자열입니다. Ctrl-C로 에이전트를 중지하면 이벤트가 ./process-watcher.jsonl에 기록됩니다. --capture-argv=true는 비밀 정보가 포함될 수 있는 명령줄을 기록합니다(인자 캡처). 파일을 선호하시나요? 바이너리 옆에 있는 process-watcher.yaml을 편집하고(자동으로 찾아짐) sudo ./process-watcher를 실행하세요.

3. 서비스가 시작하는 항목 관찰 (두 번째 터미널, 동일 디렉터리; jq를 사용하면 JSON을 읽기 쉽게 볼 수 있음):

sudo tail -f process-watcher.jsonl | jq -r '
  select(.event_type=="process.exec" and .lineage.role=="descendant")
  | "\(.timestamp[:19])Z  \(.root.image) > \(.process.image)  \(.process.argv // [] | join(" "))" | gsub("[[:cntrl:]]"; "?")'

예시: nginx라는 서비스가 셸과 몇 가지 프로그램(대체 프로그램으로 시뮬레이션됨)을 실행하도록 만듭니다:

2026-10-17T19:15:16Z  nginx > dash  sh -c id; uname -s
2026-10-17T19:15:16Z  nginx > id  id
2026-10-17T19:15:16Z  nginx > uname  uname -s
2026-10-17T19:15:16Z  nginx > curl  curl --version
2026-10-17T19:15:16Z  nginx > sleep  sleep 1

셸, 다운로드 도구 또는 인터프리터(sh, curl, wget, nc, python, ...)를 실행하는 웹 또는 애플리케이션 서버는 웹 셸 또는 원격 코드 실행의 전형적인 흔적입니다. 부모가 종료된 후에도 모든 세대가 추적됩니다. (jq는 표시를 위해 인수들을 결합할 뿐이며, 이벤트는 이들을 배열로 유지합니다. sh는 실제로 실행된 프로그램인 이미지이기 때문에 dash로 표시됩니다.)

다음: systemd 서비스로 계속 실행하기 · --tcp-address, --udp-address 또는 --webhook-url을 사용하여 이벤트를 SIEM 또는 로그 파이프라인으로 전송하기 (출력) · 의심스러운 자식 프로세스 자동 종료하기 (Kill 규칙).

요구 사항

요구 사항값
운영 체제Linux, amd64 또는 arm64
커널5.15 이상 BTF 포함 (/sys/kernel/btf/vmlinux). 버전 번호만으로는 보장되지 않습니다: 시작 시 에이전트가 필요한 함수와 커널 구조체 필드를 확인합니다.
권한root, 또는 CAP_BPF + CAP_PERFMON (다른 사용자 프로세스의 /proc/<pid>/exe에 대해서는 CAP_SYS_PTRACE, kill 기능에 대해서는 CAP_KILL, 커널 5.11 이전에는 CAP_SYS_RESOURCE). 커널 잠금 confidentiality는 작동을 방해합니다.
PID 네임스페이스호스트의 초기 PID 네임스페이스 (모든 PID는 호스트 PID); 컨테이너 내부에서 실행하는 것은 거부됩니다.

요구 사항이 충족되지 않으면 에이전트는 구체적인 진단과 함께 종료 코드 3으로 중지됩니다. 단명 프로세스를 놓치게 되는 /proc 폴링으로 절대 대체하지 않습니다. sudo ./process-watcher doctor는 모든 것을 확인하고, 프로그램을 로드하며, 자체적인 프로브 프로세스를 실행합니다. 테스트된 커널: docs/compatibility.md.

설치

다운로드 확인

# in the directory the archive was downloaded to, with $VERSION and $ARCH from step 1
curl -fsSLO https://github.com/Neo23x0/process-watcher/releases/download/$VERSION/SHA256SUMS
sha256sum --check --ignore-missing SHA256SUMS
gh attestation verify process-watcher_${VERSION}_linux_${ARCH}.tar.gz --repo Neo23x0/process-watcher   # build provenance

모든 아카이브에는 단일 정적 바이너리(eBPF 프로그램이 내장되어 있으며 런타임에 다른 것은 필요 없음), 주석이 달린 예제 구성 process-watcher.yaml, LICENSE, php/ 아래에 emerging-threats/의 PHP 키트 구성 두 개가 즉시 사용 가능한 형태로(process-watcher --config php/php-observe.yaml) 포함되어 있으며, packaging/에는 이를 설치하는 스크립트와 함께 systemd 유닛이 들어 있습니다. amd64와 arm64만 제공됩니다: eBPF 수집기는 64비트 커널 포인터를 가정하므로 32비트 커널(x86, ARM)은 지원되지 않습니다.

systemd 서비스로 사용하기

압축을 푼 아카이브에서:

sudo ./packaging/install.sh ./process-watcher    # binary, configuration and unit; starts nothing
sudoedit /etc/process-watcher/config.yaml        # adjust the watch list
sudo process-watcher doctor
sudo systemctl enable --now process-watcher

세부 사항, 저장소 클론에서 설치하는 방법 및 유닛 설정의 이유: packaging/INSTALL.md. systemd가 없는 경우 바이너리를 복사하고 root 권한으로 시작하십시오.

사용 예시

# Log file elsewhere, remote outputs and an exclusion
sudo ./process-watcher --watch-image-contains nginx --exclude-image-contains legitimate-helper \
  --log-file /var/log/process-watcher/events.jsonl \
  --tcp-address collector.example.net:9000 --udp-address 192.0.2.20:9001 \
  --webhook-url https://collector.example.net/hooks/processes

# YAML plus overriding single values
sudo ./process-watcher --config /etc/process-watcher/config.yaml \
  --watch-image-contains nginx --watch-image-contains apache2 --capture-argv=true

# Without root, without observation or network access
./process-watcher check-config --config ./process-watcher.yaml
./process-watcher print-config --config ./process-watcher.yaml

# React to child processes (see Kill rules)
sudo ./process-watcher --watch-image-contains nginx --capture-argv=true --kill-enabled=true \
  --kill-field image --kill-field argv --kill-string demo-long-running-helper \
  --kill-regex '^(useradd|usermod)$'

예제 구성 파일은 examples/에 있으며, 각 파일은 테스트에서 엄격한 로더로 검증됩니다. 간단히 시험해 볼 수 있는 수신기(Python 3 표준 라이브러리만 사용)는 examples/receivers/에 있습니다; nc -lk 9000(TCP)과 nc -lu 9001(UDP)만으로도 첫 확인에는 충분합니다.

명령과 종료 코드

도구 다운로드