
ptraceを使用してファイル、プロセス、ネットワーク、メモリのアクティビティをトレースするLinuxシステムコールモニター。名前空間分離と、行動ベースのセキュリティ解析のための機械学習分類を備えています。
ptraceベースのLinuxシステムコールモニターおよびELFバイナリ解析用サンドボックス。
SysTraceは対象を分離されたLinux名前空間環境内で実行し、そのシステムコールと子プロセスをトレースし、ルールベースの検出と重み付きリスクスコアリングを適用した後、二次的なシグナルとしてRandom Forest分類器を使用します。
ptraceシステムコールトレースfork、vfork、clone、execveの追跡pivot_rootサンドボックスSIGKILL強制を伴うルールベース検出リポジトリをクローンします:
git clone https://github.com/tracebyte8/SysTrace.git
cd SysTrace
設定スクリプトを実行可能にします:
chmod +x config.sh
コンパイル済みの ELF バイナリに対して SysTrace を実行します:
./config.sh ./tests/bin/mal_fileopen
config.sh は自動的に以下を実行します:
gcc、make、python3 をチェック.venv を作成手動での Python パッケージのインストールは不要です。
ターゲットはすでにコンパイル済みの ELF バイナリである必要があります。
.cソースファイルを直接渡すことはできません。
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
| カテゴリ | 追跡されるシステムコール |
|---|---|
| ファイル | open、openat、read、close |
| プロセス | execve、fork、clone、wait4、ptrace |
| メモリ | mmap、mprotect |
| ネットワーク | socket、connect、sendto、recvfrom、bind、listen、accept |
その他のシステムコールも、システムコールテーブルに名前が存在する場合は syscall.txt に書き込まれます。
| トリガー | 条件 | アクション |
|---|---|---|
| 機密ファイルへのアクセス | /etc/passwd または /etc/shadow | アラート + SIGKILL |
| 過剰なファイルオープン | open > 100 | アラート + SIGKILL |
| 過剰な読み取り | read > 29 | アラート + SIGKILL |
| 過剰なフォーク | fork/clone > 8 | アラート + SIGKILL |
| 過剰な再実行 | execve > 8 | アラート + SIGKILL |
| ネットワーク接続 | 任意の connect() | アラート + SIGKILL |
| ネットワーク送信 | 追跡対象の送信システムコール | アラート + SIGKILL |
| メモリ保護の変更 | mprotect > 5 | アラート + SIGKILL |
| プロセス間トレース | 任意の ptrace() | アラート + SIGKILL |
| 高リスク | スコア ≥ 70 | アラート + SIGKILL |
| 中程度のリスク | 40 ≤ スコア < 70 | アラート |
killit はルールエンジンによって実行された SIGKILL アクションを記録します。
SysTrace は重み付けされた行動スコアを計算します:
score =
(sum of weighted syscall counts)
/ (total syscalls × 6.0)
× 100
スコアは 0–100 にクランプされます。
ルールエンジンがプロセスを強制終了した場合、リスクスコアは少なくとも 90 に強制されます。
| 動作 | 重み |
|---|---|
ptrace | 6.0 |
connect | 5.0 |
| ネットワーク | 4.0 |
execve | 3.0 |
mprotect | 3.0 |
fork | 2.0 |
| プロセス | 1.5 |
open | 0.5 |
mmap | 0.5 |
| ファイル | 0.3 |
read | 0.2 |
close | 0.1 |
SysTrace は二次的な行動シグナルとして Random Forest 分類器を使用します。
モデルは次の場所にあります:
ml/syscall_model.pkl
監視対象のシステムコール統計は次にエクスポートされます:
features.json
ml/predict.py は最新の特徴量レコードを読み取り、以下を生成します:
prediction.txt
例:
Program: ./tests/bin/mal_fileopen
Prediction: MALICIOUS
Confidence: 91.42%
MLの結果は二次的なシグナルとして扱うべきであり、決定的な判定ではありません。
このリポジトリには、元のトレーニングデータセットや公開されたモデル精度は含まれていません。
| ファイル | 説明 |
|---|---|
security_report.html | 最終的なHTMLセキュリティレポート |
alerts.json | JSONセキュリティアラート |
features.json | ML特徴量レコード |
prediction.txt | 最新のML予測 |
log.txt | 人間が読める形式のアラート |
syscall.txt | 生のシステムコールトレース |
features.json、alerts.json、log.txt、syscall.txt は実行ごとにレコードが蓄積されます。
security_report.html と prediction.txt は実行ごとに上書きされます。

HTMLレポートには以下が含まれます:
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
config.sh を使用したくない場合:
make
プロジェクトをクリーンアップします:
make clean
再ビルド:
make re
手動でのPythonセットアップ:
python3 -m venv .venv
source .venv/bin/activate
pip install numpy scikit-learn
| プログラム | 動作 |
|---|---|
benign_idle.c | スリープして終了する |
benign_fileread.c | 一時ファイルを作成、読み取り、削除する |
mal_fileopen.c | 複数のファイルを開く/読み取る/閉じる |
mal_forkbomb.c | 上限付きの数の子プロセスを生成する |
mal_connect.c | 複数のネットワーク接続を試みる |
mal_mmap_mprotect.c | mmap/mprotect 操作を繰り返す |
例:
./config.sh ./tests/bin/mal_forkbomb
次に開きます:
xdg-open security_report.html
SysTrace は研究/学習用の動的解析ツールであり、堅牢なセキュリティ境界や本番環境向け EDR ではありません。
重要な制限事項:
SIGKILL によって行われ、カーネルレベルのシステムコールブロックではありません。pivot_root を使用します。SysTrace は、自身が所有する、または解析を許可されているバイナリに対してのみ実行してください。
信頼できないバイナリの場合は、専用の VM またはその他適切に分離された環境を使用してください。
SysTrace 2.0