
ptrace를 사용하여 파일, 프로세스, 네트워크 및 메모리 활동을 추적하는 Linux 시스템 호출 모니터로, 네임스페이스 격리와 머신러닝 분류를 통한 행동 기반 보안 분석을 제공합니다.
ptrace 기반 추적, 경량 네임스페이스 격리, 머신러닝 분류를 결합한 Linux 시스템 콜 모니터링 및 행동 보안 분석 도구.
SysTrace는 시스템 콜 수준에서 대상 프로그램의 런타임 동작을 관찰하고, 행동 특징을 추출하며, 학습된 Random Forest 모델을 사용하여 관찰된 활동을 정상 또는 악성으로 분류합니다. 저수준 추적과 격리는 주로 C로 구현되었으며, 분류 및 보고를 위한 Python/scikit-learn 구성 요소를 포함합니다.
SysTrace는 ptrace를 사용하여 대상 프로세스를 추적하고, 파일 접근, 프로세스 생성, 네트워크 활동, 메모리 작업과 관련된 시스템 콜을 캡처합니다. 캡처된 동작은 시스템 콜 통계와 특징 벡터로 집계되며, 학습된 Random Forest 분류기에 전달되어 정상/악성 예측을 생성합니다. 결과는 구조화된 HTML 보안 보고서로 컴파일됩니다.
이 프로젝트는 또한 추적 중 대상 프로세스를 격리하는 데 사용되는 Linux 네임스페이스 기반의 경량 샌드박싱 계층을 포함합니다.

ptrace 기반으로 대상 프로세스에 attach하여 시스템 콜 인자와 레지스터를 포함한 정보를 검사합니다.open/openat, read, close, chmodexecve, fork, clone, killsocket, connectmmap, mprotect휴리스틱 규칙이 다음과 같은 의심스러운 행동 패턴을 플래그로 표시합니다:
mmap/mprotect 사용)Linux 네임스페이스 프리미티브로 직접 구축된 격리 계층:
CLONE_NEWUSER, CLONE_NEWPID, CLONE_NEWNS와 함께 clone() 사용MS_PRIVATE를 통한 마운트 네임스페이스 구성pivot_root 및 umount2를 사용한 루트 파일시스템 전환/tmp/systrace-root 아래에 런타임 시 구성되는 tmpfs 기반 최소 루트 파일시스템이는 추적 대상에 대한 기본적인 프로세스, PID, 마운트 격리를 제공합니다 — 컨테이너 런타임을 대체하는 것은 아닙니다.
file, process, network, fork, connect, execve, read, open, close, memory, chmod, kill, labelRandomForestClassifier(scikit-learn)가 이러한 벡터로 학습되어 정상 동작과 악성 동작을 구분합니다.ml/syscall_model.pkl로 직렬화됩니다.데이터셋features.json(원시 특징 데이터) 및 report.html(사람이 읽을 수 있는 보고서) 형태의 구조화된 출력[file, process, network, fork, connect, execve, read, open, close, memory, chmod, kill]
[15, 2, 0, 0, 0, 2, 1, 10, 4, 14, 6, 0]
linux-syscall-monitor/
├── include/
├── src/
│ ├── tracer.c # Core ptrace-based syscall tracer
│ ├── syscall.c # Syscall interception/handling
│ ├── namespace.c # Namespace/clone setup
│ ├── set_root.c # pivot_root / minimal rootfs setup
│ ├── file_monitor.c # File operation monitoring
│ ├── process_monitor.c # Process creation/execution monitoring
│ ├── network_monitor.c # Network activity monitoring
│ ├── memory_monitor.c # Memory-related activity monitoring
│ ├── fd_tables.c # File descriptor tracking
│ ├── rules.c # Rule-based detection logic
│ ├── alert.c # Security alert generation
│ ├── stat.c # Syscall statistics aggregation
│ └── dataset.c # Feature vector / dataset generation
├── ml/
│ ├── train.py # Random Forest training script
│ ├── predict.py # Classification / inference script
│ └── syscall_model.pkl # Trained model
├── dashboard/ # Report/dashboard assets
├── tests/
├── Makefile
├── dataset.csv
└── README.md
ptrace 기반 추적은 관찰 가능한 오버헤드를 발생시키며, 충분히 정교한 악성코드에 의해 탐지되거나 회피될 수 있습니다.SysTrace는 Linux 내부 구조, 시스템 콜 추적, 네임스페이스 기반 격리, 머신러닝을 사용한 행동 기반 악성코드 탐지를 탐구하는 연구 및 학습 프로젝트입니다. 인증되었거나 프로덕션 준비가 된 보안 도구가 아니며, 악성 소프트웨어에 대한 유일한 방어 수단으로 의존해서는 안 됩니다. 격리된 통제 환경에서만 사용하십시오.
이 프로젝트는 다음을 탐구하고 시연하기 위해 제작되었습니다:
ptrace를 통한 시스템 콜 추적clone, pivot_root, 마운트 네임스페이스)| 분류 | 기술 스택 |
|---|
| 핵심 추적기 | C, Linux ptrace |
| 격리 | Linux 네임스페이스, clone, 마운트 네임스페이스, pivot_root, tmpfs |
| 머신러닝 | Python, scikit-learn, Random Forest |
| 데이터 / 출력 | JSON, HTML |
| 빌드 | Make |