
Linux-Systemaufruf-Monitor auf Basis von ptrace zur Verfolgung von Datei-, Prozess-, Netzwerk- und Speicheraktivität, mit Namespace-Isolation und maschineller Lernklassifikation für die verhaltensbasierte Sicherheitsanalyse.
ptrace-basierter Linux-Syscall-Monitor und Sandbox zur Analyse von ELF-Binärdateien.
SysTrace führt ein Ziel in einer isolierten Linux-Namespace-Umgebung aus, verfolgt dessen Systemaufrufe und Kindprozesse, wendet regelbasierte Erkennung und gewichtete Risikobewertung an und nutzt anschließend einen Random-Forest-Klassifikator als sekundäres Signal.
ptrace-Syscall-Tracingfork, vfork, clone und execvepivot_root-SandboxSIGKILL-DurchsetzungKlonen Sie das Repository:
git clone https://github.com/tracebyte8/SysTrace.git
cd SysTrace
Machen Sie das Konfigurationsskript ausführbar:
chmod +x config.sh
SysTrace gegen eine kompilierte ELF-Binärdatei ausführen:
./config.sh ./tests/bin/mal_fileopen
config.sh automatisch:
gcc, make und python3.venvEs ist keine manuelle Installation von Python-Paketen erforderlich.
Das Ziel muss eine bereits kompilierte ELF-Binärdatei sein. Eine
.c-Quelldatei kann nicht direkt übergeben werden.
Target ELF
│
▼
Namespace Sandbox
│
├── CLONE_NEWUSER
├── CLONE_NEWPID
├── CLONE_NEWNS
└── pivot_root
│
▼
ptrace Tracer
│
├── Syscall tracing
├── fork/vfork/clone following
└── exec following
│
▼
System Call Monitors
│
├── File
├── Process
├── Memory
└── Network
│
▼
Statistics
│
▼
Rule Engine
│
├── Alerts
└── SIGKILL enforcement
│
▼
Risk Scoring
│
├── features.json
│
└── Random Forest
│
▼
security_report.html
| Kategorie | Verfolgte Syscalls |
|---|---|
| Datei | open, openat, read, close |
| Prozess | execve, fork, clone, wait4, ptrace |
| Speicher | mmap, mprotect |
| Netzwerk | socket, connect, sendto, recvfrom, bind, listen, accept |
Andere Syscalls werden ebenfalls in syscall.txt geschrieben, wenn ihre Namen in der Syscall-Tabelle verfügbar sind.
| Auslöser | Bedingung | Aktion |
|---|---|---|
| Zugriff auf sensible Dateien | /etc/passwd oder /etc/shadow | Alarm + SIGKILL |
| Übermäßiges Öffnen von Dateien | open > 100 | Alarm + SIGKILL |
| Übermäßige Lesevorgänge | read > 29 | Alarm + SIGKILL |
| Übermäßiges Forken | fork/clone > 8 | Alarm + SIGKILL |
| Übermäßige erneute Ausführung | execve > 8 | Alarm + SIGKILL |
| Netzwerkverbindung | Jedes connect() | Alarm + SIGKILL |
| Netzwerkversand | Verfolgter Send-Syscall | Alarm + SIGKILL |
| Änderung des Speicherschutzes | mprotect > 5 | Alarm + SIGKILL |
| Prozessübergreifende Verfolgung | Jedes ptrace() | Alarm + SIGKILL |
| Hohes Risiko | Score ≥ 70 | Alarm + SIGKILL |
| Mittleres Risiko | 40 ≤ Score < 70 | Alarm |
killit zeichnet die von der Regel-Engine ausgeführten SIGKILL-Aktionen auf.
SysTrace berechnet einen gewichteten Verhaltensscore:
score =
(sum of weighted syscall counts)
/ (total syscalls × 6.0)
× 100
Der Score wird auf 0–100 begrenzt.
Wenn die Regel-Engine einen Prozess beendet, wird der Risikoscore auf mindestens 90 erzwungen.
| Verhalten | Gewichtung |
|---|---|
ptrace | 6.0 |
connect | 5.0 |
| Netzwerk | 4.0 |
execve | 3.0 |
mprotect | 3.0 |
fork | 2.0 |
| Prozess | 1.5 |
open | 0.5 |
mmap | 0.5 |
| Datei | 0.3 |
read | 0.2 |
close | 0.1 |
SysTrace verwendet einen Random-Forest-Klassifikator als sekundäres Verhaltenssignal.
Das Modell befindet sich unter:
ml/syscall_model.pkl
Die überwachten Syscall-Statistiken werden exportiert nach:
features.json
ml/predict.py liest den neuesten Feature-Datensatz und erzeugt:
prediction.txt
Beispiel:
Program: ./tests/bin/mal_fileopen
Prediction: MALICIOUS
Confidence: 91.42%
Das ML-Ergebnis sollte als sekundäres Signal behandelt werden, nicht als endgültiges Urteil.
Das Repository enthält weder den ursprünglichen Trainingsdatensatz noch die veröffentlichte Modellgenauigkeit.
| Datei | Beschreibung |
|---|---|
security_report.html | Abschließender HTML-Sicherheitsbericht |
alerts.json | JSON-Sicherheitswarnungen |
features.json | ML-Merkmalsdatensätze |
prediction.txt | Neueste ML-Vorhersage |
log.txt | Menschenlesbare Warnungen |
syscall.txt | Roher Syscall-Trace |
features.json, alerts.json, log.txt und syscall.txt sammeln Datensätze über mehrere Läufe hinweg an.
security_report.html und prediction.txt werden bei jedem Lauf überschrieben.

Der HTML-Bericht enthält:
SysTrace/
├── src/
│ ├── tracer.c
│ ├── namespace.c
│ ├── set_root.c
│ ├── file_monitor.c
│ ├── process_monitor.c
│ ├── memory_monitor.c
│ ├── network_monitor.c
│ ├── rules.c
│ ├── score.c
│ ├── stat.c
│ └── dataset.c
│
├── include/
├── dashboard/
│ ├── index.c
│ └── style.css
│
├── ml/
│ ├── train.py
│ ├── predict.py
│ └── syscall_model.pkl
│
├── tests/
│ └── bin/
│
├── image/
├── Makefile
├── config.sh
└── README.md
Wenn Sie config.sh nicht verwenden möchten:
make
Bereinigen Sie das Projekt:
make clean
Neuaufbau:
make re
Manuelle Python-Einrichtung:
python3 -m venv .venv
source .venv/bin/activate
pip install numpy scikit-learn
| Programm | Verhalten |
|---|---|
benign_idle.c | Schläft und beendet sich |
benign_fileread.c | Erstellt, liest und entfernt eine temporäre Datei |
mal_fileopen.c | Öffnet/liest/schließt mehrere Dateien |
mal_forkbomb.c | Erzeugt eine begrenzte Anzahl von Kindprozessen |
mal_connect.c | Versucht mehrere Netzwerkverbindungen |
mal_mmap_mprotect.c | Wiederholte mmap/mprotect-Operationen |
Beispiel:
./config.sh ./tests/bin/mal_forkbomb
Dann öffnen Sie:
xdg-open security_report.html
SysTrace ist ein Werkzeug zur dynamischen Analyse für Forschung und Lernen, keine gehärtete Sicherheitsgrenze und kein produktionsreifes EDR.
Wichtige Einschränkungen: