فحص ذاكرة العملية
يفحص أمر sd scan-memory ذاكرة العمليات الجارية للكشف عن البرامج الضارة الخالية من الملفات والـ shellcode المُحقَّن والتهديدات الموجودة في الذاكرة التي لا تلمس القرص أبداً. هذا ضروري لالتقاط التهديدات المتقدمة التي تتهرب من الفحص التقليدي المستند إلى الملفات.
المتطلبات
- صلاحيات الجذر مطلوبة -- فحص الذاكرة يقرأ
/proc/<pid>/mem، وهو يتطلب root أوCAP_SYS_PTRACE. - لينكس فقط -- فحص ذاكرة العملية مدعوم حالياً على لينكس. دعم ماك أو إس مخطط له.
كيف يعمل
يقرأ فحص ذاكرة العملية تخطيطات الذاكرة الافتراضية للعملية الجارية ويطبق نفس خط أنابيب الكشف المستخدم لفحص الملفات:
- تعداد مناطق الذاكرة -- تحليل
/proc/<pid>/mapsللعثور على مقاطع الذاكرة القابلة للقراءة (heap، stack، تخصيصات مجهولة، الملفات المرتبطة). - قراءة محتويات الذاكرة -- قراءة كل منطقة من
/proc/<pid>/mem. - فحص قواعد YARA -- تطبيق قواعد YARA للذاكرة المحسَّنة للكشف عن أنماط shellcode والـ DLL المُحقَّنة وتوقيعات البرامج الضارة المعروفة في الذاكرة.
- تحليل الأنماط -- التحقق من الأنماط المشبوهة مثل مناطق ذاكرة RWX ورؤوس PE في التخصيصات غير المرتبطة بملف وحمولات استغلال معروفة.
الاستخدام الأساسي
فحص جميع العمليات الجارية:
sudo sd scan-memoryفحص عملية محددة بـ PID:
sudo sd scan-memory --pid 1234فحص عمليات محددة متعددة:
sudo sd scan-memory --pid 1234 --pid 5678 --pid 9012خيارات الأمر
| الخيار | المختصر | الافتراضي | الوصف |
|---|---|---|---|
--pid | -p | الكل | فحص معرف العملية المحدد فقط (قابل للتكرار) |
--json | -j | إيقاف | مخرجات النتائج بتنسيق JSON |
--exclude-pid | لا شيء | استبعاد PIDs محددة من الفحص | |
--exclude-user | لا شيء | استبعاد العمليات المملوكة لمستخدم محدد | |
--min-region-size | 4096 | الحد الأدنى لحجم منطقة الذاكرة للفحص (بايت) | |
--skip-mapped-files | إيقاف | تخطي مناطق الذاكرة المرتبطة بملف |
مثال على المخرجات
sudo sd scan-memoryPRX-SD Memory Scan Report
=========================
Processes scanned: 142
Memory regions scanned: 8,451
Total memory scanned: 4.2 GB
[MALICIOUS] PID 3847 (svchost)
Region: 0x7f4a00000000-0x7f4a00040000 (anon, RWX)
Match: YARA rule: memory_cobalt_strike_beacon
Details: CobaltStrike Beacon shellcode detected in anonymous RWX mapping
[SUSPICIOUS] PID 12045 (python3)
Region: 0x7f8b10000000-0x7f8b10010000 (anon, RWX)
Match: Pattern analysis
Details: Executable code in anonymous RWX region, possible shellcode injection
Duration: 12.4sمخرجات JSON
sudo sd scan-memory --pid 3847 --json{
"scan_type": "memory",
"timestamp": "2026-03-21T15:00:00Z",
"processes_scanned": 1,
"regions_scanned": 64,
"threats": [
{
"pid": 3847,
"process_name": "svchost",
"region_start": "0x7f4a00000000",
"region_end": "0x7f4a00040000",
"region_perms": "rwx",
"region_type": "anonymous",
"verdict": "malicious",
"rule": "memory_cobalt_strike_beacon",
"description": "CobaltStrike Beacon shellcode detected"
}
]
}حالات الاستخدام
الاستجابة للحوادث
أثناء تحقيق نشط، افحص جميع العمليات للعثور على الخدمات المخترقة:
sudo sd scan-memory --json > /evidence/memory-scan-$(date +%s).jsonكشف البرامج الضارة الخالية من الملفات
تنفذ البرامج الضارة الحديثة كلياً في الذاكرة دون الكتابة على القرص. التقنيات الشائعة تشمل:
- حقن العملية -- تُحقن البرامج الضارة كوداً في العمليات المشروعة باستخدام
ptraceأو كتابات/proc/pid/mem - تحميل DLL الانعكاسي -- يُحمَّل DLL من الذاكرة دون لمس نظام الملفات
- تنفيذ Shellcode -- يُخصَّص shellcode خام في ذاكرة RWX ويُنفَّذ مباشرةً
يكشف sd scan-memory هذه الأنماط بالبحث عن:
| المؤشر | الوصف |
|---|---|
| تخصيصات RWX مجهولة | كود قابل للتنفيذ في ذاكرة غير مرتبطة بملف |
| رؤوس PE في الذاكرة | هياكل Windows PE في ذاكرة عملية لينكس (حمولات متعددة المنصات) |
| توقيعات shellcode المعروفة | أنماط Metasploit وCobaltStrike وSliver beacon |
| مقاطع syscall مشبوهة | نقاط دخول syscall مربوطة أو مُرقَّعة |
فحص صحة الخادم
تشغيل فحوصات ذاكرة دورية على خوادم الإنتاج:
# إضافة إلى cron: فحص كل 6 ساعات
0 */6 * * * root /usr/local/bin/sd scan-memory --json --exclude-user nobody >> /var/log/prx-sd/memory-scan.log 2>&1تأثير الأداء
يقرأ فحص الذاكرة ذاكرة العملية وقد يزيد I/O بشكل مؤقت. على خوادم الإنتاج، فكّر في الفحص خلال فترات انخفاض حركة المرور أو استبعاد العمليات غير الحيوية.
القيود
- يقرأ فحص الذاكرة لقطة من ذاكرة العملية في وقت الفحص. قد تُنتج مناطق الذاكرة المتغيرة بسرعة نتائج غير مكتملة.
- لا تُفحص ذاكرة النواة بـ
scan-memory. استخدمsd check-rootkitللكشف عن التهديدات على مستوى النواة. - قد تتهرب الحمولات المُشوَّشة أو المشفرة بشدة في الذاكرة من قواعد YARA. توفر طبقة تحليل الأنماط آلية كشف ثانوية.
الخطوات التالية
- كشف Rootkit -- كشف rootkit على مستوى النواة ومستوى المستخدم
- فحص الملفات والأدلة -- الفحص التقليدي المستند إلى الملفات
- قواعد YARA -- فهم محرك القواعد المستخدم لفحص الذاكرة
- محرك الكشف -- كيف تعمل جميع طبقات الكشف معاً