
ptrace का उपयोग करके फ़ाइल, प्रोसेस, नेटवर्क और मेमोरी गतिविधि को ट्रेस करने वाला लिनक्स सिस्टम-कॉल मॉनिटर, जिसमें नेमस्पेस आइसोलेशन और व्यवहार संबंधी सुरक्षा विश्लेषण के लिए मशीन लर्निंग वर्गीकरण शामिल है।
ELF बाइनरीज़ के विश्लेषण के लिए ptrace-आधारित Linux सिस्टम कॉल मॉनिटर और सैंडबॉक्स।
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
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
| श्रेणी | ट्रैक किए गए syscalls |
|---|---|
| फ़ाइल | open, openat, read, close |
| प्रोसेस | execve, fork, clone, wait4, ptrace |
| मेमोरी | mmap, mprotect |
| नेटवर्क | socket, connect, sendto, recvfrom, bind, listen, accept |
अन्य syscalls भी syscall.txt में लिखे जाते हैं जब उनके नाम syscall तालिका में उपलब्ध होते हैं।
| ट्रिगर | शर्त | क्रिया |
|---|---|---|
| संवेदनशील फ़ाइल एक्सेस | /etc/passwd या /etc/shadow | अलर्ट + SIGKILL |
| अत्यधिक फ़ाइल ओपन | open > 100 | अलर्ट + SIGKILL |
| अत्यधिक रीड | read > 29 | अलर्ट + SIGKILL |
| अत्यधिक फ़ोर्किंग | fork/clone > 8 | अलर्ट + SIGKILL |
| अत्यधिक पुनः-निष्पादन | execve > 8 | अलर्ट + SIGKILL |
| नेटवर्क कनेक्शन | कोई भी connect() | अलर्ट + SIGKILL |
| नेटवर्क सेंड | ट्रैक किया गया सेंड syscall | अलर्ट + 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
निगरानी किए गए syscall आँकड़े यहाँ निर्यात किए जाते हैं:
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 के माध्यम से होता है; यह कर्नेल-स्तरीय syscall ब्लॉकिंग नहीं है।pivot_root का उपयोग करता है।SysTrace को केवल उन्हीं बाइनरीज़ के विरुद्ध चलाएँ जिनके आप स्वामी हैं या जिनका विश्लेषण करने के लिए आप अधिकृत हैं।
अविश्वसनीय बाइनरीज़ के लिए, एक समर्पित VM या अन्य उपयुक्त रूप से पृथक वातावरण का उपयोग करें।
SysTrace 2.0