
악성코드에 사용되는 프로세스 인젝션 및 메모리 조작을 탐지합니다. RWX 영역, 셸코드 패턴, API 후킹, 스레드 하이재킹, 프로세스 할로잉을 찾아냅니다. 속도를 위해 Rust로 제작되었습니다. CLI 및 TUI 인터페이스를 포함합니다.
Ghost는 Rust로 작성된 프로세스 인젝션 탐지 도구입니다. 실행 중인 프로세스를 감시하며 코드 인젝션, 메모리 조작, 그리고 맬웨어가 숨기기 위해 사용하는 기타 트릭과 같은 의심스러운 활동을 포착하려고 시도합니다.
핵심 아이디어는 간단합니다. 프로세스를 스캔하여 이상한 메모리 패턴, 후킹된 함수, 셸코드 등 변조의 징후를 찾는 것입니다. Windows, Linux, macOS에서 작동합니다 (현재 Windows 지원이 가장 완전합니다).
탐지 가능한 항목:
또한 탐지된 행동을 MITRE ATT&CK 프레임워크에 매핑하여 위협 문서화나 보고서 작성에 도움을 줍니다.



Rust (1.70 이상)가 설치되어 있어야 합니다. 그런 다음:
cargo build --release
Windows에서는 MSVC 빌드 도구도 필요합니다. Linux는 기본 개발 도구(gcc 등)가 필요하고, macOS는 Xcode 명령줄 도구가 필요합니다.
두 가지 인터페이스가 있습니다: 명령줄 도구와 대화형 터미널 UI.
CLI:
# 모든 프로세스 스캔
cargo run --bin ghost-cli --release
# 특정 프로세스 대상
cargo run --bin ghost-cli --release -- --pid 1234
# 결과를 JSON으로 출력
cargo run --bin ghost-cli --release -- --format json
# 설정 파일 사용
cargo run --bin ghost-cli --release -- --config ghost.toml
# 지속적 모니터링 모드
cargo run --bin ghost-cli --release -- --watch
# 사용자 정의 간격으로 감시 (10초)
cargo run --bin ghost-cli --release -- --watch --interval 10
TUI:
cargo run --bin ghost-tui --release
TUI는 실시간 통계, 탐지 기록이 포함된 대시보드를 제공하며 키보드 단축키(Tab으로 보기 전환, Q로 종료)로 탐색할 수 있습니다.
Ghost는 Bash, Zsh, Fish, PowerShell, Elvish에서 탭 완성을 지원합니다.
# 셸에 맞는 완성 생성
ghost completions bash > /etc/bash_completion.d/ghost
ghost completions zsh > ~/.zfunc/_ghost
ghost completions fish > ~/.config/fish/completions/ghost.fish
# 또는 설치 스크립트 사용
./completions/install.sh
자세한 설치 방법은 completions/README.md를 참조하세요.
Ghost는 빌드 시 활성화할 수 있는 선택적 기능을 지원합니다:
# YARA 규칙 스캔 (libyara 필요)
cargo build --features yara-scanning
# 신경망 ML 통합 (Python 및 훈련된 모델 필요)
cargo build --features neural-ml
# eBPF 탐지 (Linux만 해당, 현재 스텁 구현)
cargo build --features ebpf-detection
참고: ML 기능은 기능을 발휘하려면 훈련된 모델이 필요합니다. 훈련 방법은 ghost_ml/README.md를 참조하세요.
TOML 설정 파일로 동작을 조정할 수 있습니다. 시작점으로 examples/ghost.toml을 확인하세요. 특정 탐지 방법을 활성화/비활성화하고, 신뢰도 임계값을 설정하고, 시스템 프로세스를 건너뛰고, 스캔 간격을 제어할 수 있습니다.
설정 파일 예시:
shellcode_detection = true
hollowing_detection = true
hook_detection = true
confidence_threshold = 0.3
skip_system_processes = true
scan_interval_ms = 2000
기본적으로 Ghost는 탐지당 10개의 지표로 출력을 제한하고 유사한 발견 사항을 중복 제거합니다. 대규모 스캔의 경우 출력을 더 줄일 수 있습니다:
명령줄 옵션:
# 요약 모드 - 전체 세부 정보 대신 통계 출력
ghost-cli --summary
# 탐지당 지표 제한
ghost-cli --max-indicators 5
# 악성 탐지만 보고
ghost-cli --min-threat-level malicious
# 최소 출력을 위해 결합
ghost-cli --summary --quiet
설정 파일:
[output]
verbosity = "minimal" # minimal, normal, 또는 verbose
max_indicators_per_detection = 5
min_threat_level = "suspicious"
deduplicate_indicators = true
summary_mode = true
이는 많은 프로세스를 스캔하거나 출력 파일이 너무 커질 수 있는 지속적 모니터링을 실행할 때 유용합니다.
감시 모드를 사용하면 수동으로 스캔을 실행할 필요 없이 시스템을 지속적으로 모니터링할 수 있습니다. 인젝션 시도를 실시간으로 포착하는 데 유용합니다.
# 감시 시작 (기본값: 5초 간격)
ghost-cli --watch
# 사용자 정의 간격
ghost-cli --watch --interval 10
# 특정 프로세스 감시
ghost-cli --watch --pid 1234
# 조용한 모드 - 새로운 탐지에만 알림
ghost-cli --watch --quiet
감시 모드에서 Ghost는:
출력 예시:
[14:32:15] Scan #1: clean (142 processes, 89ms)
[14:32:20] Scan #2: 2 NEW detections! (2 total, 142 processes, 91ms)
[MALICIOUS] suspicious.exe (PID: 4521) - 87% confidence
[SUSPICIOUS] helper.dll (PID: 2201) - 54% confidence
[14:32:25] Scan #3: 2 known threats (142 processes, 88ms)
기준선 모드는 시스템의 현재 상태 스냅샷을 캡처합니다. 이후 스캔에서 이 기준선과 비교하여 변경 사항을 탐지할 수 있습니다. 알려진 문제를 일일이 확인하지 않고 새로운 위협을 찾는 데 유용합니다.
# 현재 상태를 기준선으로 저장
ghost-cli --save-baseline baseline.json
# 나중에: 기준선과 비교
ghost-cli --baseline baseline.json
# 감시 모드와 결합
ghost-cli --watch --baseline baseline.json
기준선과 비교할 때 Ghost는 다음을 보고합니다:
출력 예시:
3 changes from baseline:
New threats (1):
injector.exe (PID: 8821) - Malicious
Escalated threats (1):
helper.dll (PID: 2201): Suspicious -> Malicious
New indicators (1):
svchost.exe (PID: 1024):
- RWX memory region detected
- Shellcode pattern match
변경 사항이 감지되면 종료 코드 1, 깨끗하면 0을 반환합니다.
Ghost는 위협이 탐지될 때 Slack, Discord 또는 모든 HTTP 엔드포인트로 실시간 알림을 보낼 수 있습니다. SOC 통합 또는 휴대폰으로 알림을 받는 데 적합합니다.
# Slack 웹훅
ghost-cli --watch --webhook "https://hooks.slack.com/services/XXX/YYY/ZZZ"
# Discord 웹훅
ghost-cli --watch --webhook "https://discord.com/api/webhooks/123/abc"
# 일반 HTTP POST (JSON 페이로드)
ghost-cli --watch --webhook "https://your-siem.example.com/api/alerts"
# 자동 탐지된 유형 재정의
ghost-cli --webhook "https://custom.url" --webhook-type slack
Ghost는 URL에서 웹훅 유형을 자동 탐지합니다:
hooks.slack.com → 첨부 파일이 포함된 Slack 형식discord.com/api/webhooks → 임베드가 포함된 Discord 형식Slack 알림에는 위협 수준, 신뢰도 점수 및 주요 지표가 포함된 색상 코드 첨부 파일이 포함됩니다:
🚨 Ghost detected suspicious activity on *prod-server-01*
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🚨 suspicious.exe (PID: 4521)
• RWX memory region detected at 0x7ff...
• Shellcode pattern: NOP sled
Threat Level: Malicious | Confidence: 87%
Discord 알림은 깔끔한 형식의 리치 임베드를 사용합니다.
일반 웹훅은 JSON 페이로드를 전송합니다:
{
"event": "ghost.detection",
"timestamp": "2024-12-06T14:32:15Z",
"hostname": "prod-server-01",
"process_name": "suspicious.exe",
"pid": 4521,
"threat_level": "Malicious",
"confidence": 0.87,
"indicators": ["RWX memory region detected", "..."]
}
Ghost가 의심스러운 것을 발견하면 위협 수준을 Clean, Low, Medium, High, Critical로 할당합니다. 이는 발견된 지표의 개수와 심각도에 기반합니다.
높은 신뢰도가 항상 맬웨어를 의미하는 것은 아닙니다. 일부 합법적인 소프트웨어도 메모리에서 이상한 일을 합니다. 필요하면 판단을 내리고 추가 조사하세요.
Windows: 완전히 작동합니다. 프로세스 열거, 메모리 읽기, 후크 탐지, 프로세스 할로잉 탐지, PE 유효성 검사 및 스레드 분석이 모두 작동합니다.
Linux: 핵심 기능이 작동합니다. procfs(/proc)를 통한 프로세스 열거, 메모리 읽기, LD_PRELOAD 탐지 및 ptrace 기반 인젝션 탐지가 작동합니다. eBPF 지원은 ebpf-detection 기능 플래그가 필요하며 현재 스텁 구현입니다.
macOS: 부분 지원. 프로세스 열거, 메모리 영역 열거, 메모리 읽기 및 스레드 열거가 mach VM API를 사용하여 작동합니다. 후크 탐지에는 DYLD_INSERT_LIBRARIES 탐지 및 인라인 후크 탐지 프레임워크가 포함됩니다.
지속적 모니터링에 충분히 빠르게 설계되었습니다. 전체 시스템 스캔(200개 프로세스)은 일반적으로 5초 미만이 소요됩니다. 프로세스당 메모리 열거는 약 50-100ms입니다. 탐지 엔진 자체는 분석당 약 5-10ms를 추가합니다.
이 도구에는 YARA 규칙 통합이 포함되어 있습니다. 규칙은 rules/ 디렉토리에 저장되며 Metasploit, Cobalt Strike, 일반적인 셸코드 패턴 및 회피 기법과 같은 일반적인 맬웨어 군을 다룹니다. 자신의 규칙을 추가할 수 있습니다. 해당 폴더에 .yar 파일을 넣으면 됩니다.
이것은 사용자 공간 도구이며 다음과 같은 한계가 있습니다:
더 자세한 내용은 docs/ 폴더에 있습니다:
DETECTION_METHODS.md - 각 탐지 기술의 작동 방식 설명MITRE_ATTACK_COVERAGE.md - 적용되는 ATT&CK 기술 목록PERFORMANCE_GUIDE.md - 성능 튜닝 팁또한 기여하려면 CONTRIBUTING.md, 보안 정책은 SECURITY.md를 확인하세요.
MIT. LICENSE 파일을 참조하세요.
이 도구는 보안 연구, 자신의 시스템 테스트, 실제 위협 탐지를 위한 것입니다. 소유하지 않거나 테스트 권한이 없는 시스템에서 사용하지 마세요. 책임감 있게 사용하세요.
또한 실제 사고를 조사하는 경우 맬웨어가 분석 중임을 감지하고 다르게 행동하거나 종료할 수 있음을 기억하세요. Ghost는 은밀하게 작동하려고 하지만 고급 맬웨어가 눈치채지 못할 것이라는 보장은 없습니다.