
ptraceを使用してファイル、プロセス、ネットワーク、メモリのアクティビティをトレースするLinuxシステムコールモニター。名前空間分離と、行動ベースのセキュリティ解析のための機械学習分類を備えています。
ptraceベースのトレーシング、軽量な名前空間分離、機械学習による分類を組み合わせた、Linuxシステムコール監視および挙動セキュリティ分析ツール。
SysTraceは、対象プログラムの実行時挙動をシステムコールレベルで観察し、挙動特徴を抽出して、トレーニング済みのランダムフォレストモデルを使用して観察された活動を良性または悪性として分類します。低レベルのトレーシングと分離には主にC言語で構築され、分類とレポート生成にはPython/scikit-learnコンポーネントを使用しています。
SysTraceは、ptraceを使用して対象プロセスをトレースし、ファイルアクセス、プロセス生成、ネットワーク活動、メモリ操作に関連するシステムコールをキャプチャします。キャプチャされた挙動はシステムコール統計と特徴ベクトルに集約され、トレーニング済みのランダムフォレスト分類器に渡されて良性/悪性の予測が生成されます。結果は構造化されたHTMLセキュリティレポートにまとめられます。
このプロジェクトには、トレース中に対象プロセスを分離するために使用される、Linux名前空間上に構築された軽量サンドボックス層も含まれています。

ptraceに基づき、対象プロセスにアタッチして、システムコール引数やレジスタを含むプロセスを検査します。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にシリアライズされます。DATASETfeatures.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によるLinux内部構造とシステムコールトレーシングclone、pivot_root、マウント名前空間)を使用したファイルシステム分離| カテゴリ | スタック |
|---|
| コアトレーサー | C、Linux ptrace |
| 分離 | Linux名前空間、clone、マウント名前空間、pivot_root、tmpfs |
| 機械学習 | Python、scikit-learn、ランダムフォレスト |
| データ/出力 | JSON、HTML |
| ビルド | Make |