
Monitor delle chiamate di sistema per Linux che usa ptrace per tracciare l'attività di file, processi, rete e memoria, con isolamento dei namespace e classificazione tramite machine learning per l'analisi comportamentale della sicurezza.
Uno strumento di monitoraggio delle chiamate di sistema Linux e di analisi comportamentale della sicurezza che combina tracciamento basato su ptrace, isolamento leggero tramite namespace e classificazione tramite apprendimento automatico.
SysTrace osserva il comportamento a runtime di un programma target a livello di chiamate di sistema, estrae caratteristiche comportamentali e classifica l'attività osservata come benigna o dannosa utilizzando un modello Random Forest addestrato. È costruito principalmente in C per il tracciamento e l'isolamento a basso livello, con un componente Python/scikit-learn per la classificazione e il reporting.
SysTrace traccia un processo target utilizzando ptrace, catturando le chiamate di sistema relative all'accesso ai file, alla creazione di processi, all'attività di rete e alle operazioni di memoria. Il comportamento catturato viene aggregato in statistiche delle chiamate di sistema e in un vettore di caratteristiche, che viene passato a un classificatore Random Forest addestrato per produrre una previsione benigna/dannosa. I risultati vengono raccolti in un report di sicurezza HTML strutturato.
Il progetto include anche un livello di sandboxing leggero basato sui namespace Linux, utilizzato per isolare il processo target durante il tracciamento.

ptrace di Linux per collegarsi ai processi target e ispezionarli, inclusi argomenti delle chiamate di sistema e registri.open/openat, read, close, chmodexecve, fork, clone, killsocket, connectmmap, mprotectLe regole euristiche segnalano pattern comportamentali sospetti, tra cui:
mmap/mprotect)Un livello di isolamento costruito direttamente sui primitivi dei namespace Linux:
clone() con CLONE_NEWUSER, CLONE_NEWPID, CLONE_NEWNSMS_PRIVATEpivot_root e umount2tmpfs, costruito a runtime in /tmp/systrace-rootQuesto fornisce un isolamento di base per processi, PID e mount per il target tracciato — non è un sostituto di un runtime container.
file, process, network, fork, connect, execve, read, open, close, memory, chmod, kill, labelRandomForestClassifier (scikit-learn) viene addestrato su questi vettori per distinguere il comportamento benigno da quello dannoso.ml/syscall_model.pkl.DATASETfeatures.json (dati grezzi delle caratteristiche) e report.html (report leggibile).[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 introduce un overhead osservabile e può essere rilevato/eluso da malware sufficientemente sofisticato.SysTrace è un progetto di ricerca e apprendimento che esplora gli internals di Linux, il tracciamento delle chiamate di sistema, l'isolamento basato su namespace e il rilevamento comportamentale di malware tramite apprendimento automatico. Non è uno strumento di sicurezza certificato o pronto per la produzione e non deve essere considerato l'unica difesa contro software dannoso. Utilizzalo solo in ambienti isolati e controllati.
Questo progetto è stato creato per esplorare e dimostrare:
ptraceclone, pivot_root, mount namespaces)| Categoria | Stack |
|---|
| Tracer principale | C, Linux ptrace |
| Isolamento | Linux namespaces, clone, mount namespaces, pivot_root, tmpfs |
| Apprendimento automatico | Python, scikit-learn, Random Forest |
| Dati / output | JSON, HTML |
| Build | Make |