
مراقب استدعاءات النظام في لينكس يستخدم ptrace لتتبع نشاط الملفات والعمليات والشبكة والذاكرة، مع عزل مساحات الأسماء وتصنيف التعلم الآلي لتحليل الأمان السلوكي.
مراقب استدعاءات النظام (syscall) على Linux وصندوق رمل (sandbox) مبني على ptrace لتحليل ملفات ELF الثنائية.
يشغّل SysTrace هدفًا داخل بيئة Linux namespace معزولة، ويتتبّع استدعاءات النظام الخاصة به وعملياته الفرعية، ويطبّق كشفًا قائمًا على القواعد وتقييمًا مرجّحًا للمخاطر، ثم يستخدم مصنّف Random Forest كإشارة ثانوية.
ptracefork وvfork وclone وexecvepivot_rootSIGKILLاستنسخ المستودع:
git clone https://github.com/tracebyte8/SysTrace.git
cd SysTrace
اجعل سكربت الإعداد قابلاً للتنفيذ:
chmod +x config.sh
تشغيل SysTrace مقابل ملف ثنائي ELF مُجمَّع:
./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 | تتبع syscall الخام |
تتراكم السجلات في 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 فقط على الملفات التنفيذية التي تملكها أو المصرّح لك بتحليلها.
بالنسبة للملفات التنفيذية غير الموثوقة، استخدم جهازًا ظاهريًا مخصصًا أو بيئة معزولة مناسبة أخرى.
SysTrace 2.0