- بواسطة x32x01 ||
أداة Volatility أداة مفتوحة المصدر متخصصة في تحليل الذاكرة (RAM). بتساعد محللي الأمن والـ digital forensics إنهم يسحبوا معلومات مهمة من صورة الذاكرة بتاعة جهاز متأثر ببرمجيات خبيثة أو أثناء تحقيقات أمنية. تقدر تلاقي بيها عمليات شغالة، اتصالات الشبكة، ملفات مفتوحة، سلاسل الـ DLL، وحتى آثار الـ malware اللي مش ظاهرين في القرص.
الميزتين الأساسيتين:
لو هتشتغل عملي لازم تكون جاهز: جهاز Kali Linux محدث، وصلاحيات root أو sudo، ومساحة كافية لتخزين صور الذاكرة.
تثبيت Volatility على Kali:
ممكن كمان تثبت Volatility 3 لو محتاج نسخة أحدث، أو تستعمل Python virtualenv لو حابب عزل الحزم.
مش هتقدر تحلل من غير ما تاخد صورة للـ RAM. فيه أدوات مشهورة:
بعد ما عندك memory.dmp، أول حاجة تعملها هي تحديد نوع الـ OS والبروفايل المناسب:
الـ imageinfo هيقول لك معلومات زي: نظام التشغيل (Windows/Linux)، النسخة، وبروفايل ممكن تستخدمه بعد كده (مثلاً Win7SP1x64).
علشان تجيب قائمة بالعمليات اللي كانت شغالة وقت أخذ الصورة:
النتيجة هتديك PID، PPID، وقت التشغيل، واسم العملية - مفيد جدًا لتحديد عمليات مشبوهة أو malware مخفي.
لو محتاج تعرف الجهاز كان متصل بإيه وقت اللقطة:
ده بيجيب عناوين الـ IP، البورتات المفتوحة، وconnections اللي كانت موجودة - مهم لتعقب C2 servers أو اتصالات خبيثة.
تقدر تشوف الملفات المفتوحة والـ DLLs المرتبطة بكل عملية:
الـ filescan بيساعدك تلاقي آثار ملفات في الذاكرة حتى لو تم حذفها من القرص.
نفترض إن عندك صورة اسمها memory.dmp والـ imageinfo رجعلك البروفايل Win7SP1x64.
ده مثال مش مباشر لـ Volatility لكن بيوضح ازاي الذاكرة بتترجم أسماء لمفاهيم - مثال بسيط ببايثون لتحويل اسم الدومين لآي بي باستخدام DNS (زي ما الـ OS بيعمل):

الميزتين الأساسيتين:
- استخراج معلومات من memory dump من غير ما تغير الحالة الأصلية للنظام.
- تحليل لحظي لأن الذاكرة بتحتوي حالة النظام في وقت معين - مفيد جداً لما تكون الملفات على القرص محذوفة أو مش واضحة.
قبل ما تبدأ: تحضير البيئة على Kali Linux
لو هتشتغل عملي لازم تكون جاهز: جهاز Kali Linux محدث، وصلاحيات root أو sudo، ومساحة كافية لتخزين صور الذاكرة.تثبيت Volatility على Kali:
Bash:
sudo apt-get update
sudo apt-get install volatility نصيحة: خلي نسخة Volatility متوافقة مع نوع الصورة اللي هتتعامل معاها (خصوصاً لو الصورة من Windows بنسخ مختلفة).
إزاي تاخد صورة من الذاكرة (Memory Dump)
مش هتقدر تحلل من غير ما تاخد صورة للـ RAM. فيه أدوات مشهورة:- LiME: أداة ممتازة لأخذ image من لينكس (تشتغل كـ kernel module).
- DumpIt: أداة شائعة على Windows وسهلة للاستخدام.
- أدوات تانية زي FTK Imager أو أدوات متخصصة حسب النظام.
خطوة مهمة: تحديد نوع النظام وملف البروفايل (imageinfo)
بعد ما عندك memory.dmp، أول حاجة تعملها هي تحديد نوع الـ OS والبروفايل المناسب: Bash:
volatility -f memory.dmp imageinfo
تحليل العمليات الجارية (pslist) ومتابعة الـ Processes
علشان تجيب قائمة بالعمليات اللي كانت شغالة وقت أخذ الصورة: Bash:
volatility -f memory.dmp --profile=Win7SP1x64 pslist
استخراج اتصال الشبكة والـ Sockets
لو محتاج تعرف الجهاز كان متصل بإيه وقت اللقطة: Bash:
volatility -f memory.dmp --profile=Win7SP1x64 netscan
استرجاع الملفات المفتوحة وملفات الـ DLL
تقدر تشوف الملفات المفتوحة والـ DLLs المرتبطة بكل عملية: Bash:
volatility -f memory.dmp --profile=Win7SP1x64 filescan
volatility -f memory.dmp --profile=Win7SP1x64 dlllist -p <PID>
مثال عملي خطوة بخطوة
نفترض إن عندك صورة اسمها memory.dmp والـ imageinfo رجعلك البروفايل Win7SP1x64.- تعرف البروفايل:
Bash:
volatility -f memory.dmp imageinfo - تجيب قائمة العمليات:
Bash:
volatility -f memory.dmp --profile=Win7SP1x64 pslist - تعمل فحص للنتورك:
Code:
volatility -f memory.dmp --profile=Win7SP1x64 netscan - لو شفت PID مريب، تفحص الـ DLLs والملفات المرتبطة:
Bash:
volatility -f memory.dmp --profile=Win7SP1x64 dlllist -p 1234 - لو عاوز تستخرج الـ process memory لبحث أعمق:
Bash:
volatility -f memory.dmp --profile=Win7SP1x64 memdump -p 1234 -D ./dumps
أدوات مفيدة تكمل مع Volatility
- LiME لأخذ الـ memory image من لينكس.
- DumpIt لأخذ image من Windows.
- Strings و yara لفحص الذاكرة عن علامات معينة أو سلاسل نصية للـ malware.
- scalpel, foremost لو عايز تستخرج ملفات من dump.
نصايح أمان واعتبارات قانونية
- اشتغل دايمًا على نسخة من الـ memory image، مابتغيرش الأصل.
- حافظ على chain of custody لو الشغل جزء من تحقيق رسمي (سجل مين لمسك الملف وإمتى).
- الحصول على صور الذاكرة من أجهزة ناس تانية لازم يكون بقانون أو تصريح - ما تعملش حاجة غير قانونية.
- تحليل الذاكرة ممكن يحتوي بيانات حساسة (كلمات سر، مفاتيح)، تعامل معاها بحذر.
أمثلة كودية سريعة لفهم فكرة الـ DNS (مثال تعليمي بسيط)
ده مثال مش مباشر لـ Volatility لكن بيوضح ازاي الذاكرة بتترجم أسماء لمفاهيم - مثال بسيط ببايثون لتحويل اسم الدومين لآي بي باستخدام DNS (زي ما الـ OS بيعمل): Python:
import socket
domain = "google.com"
ip = socket.gethostbyname(domain)
print(f"IP for {domain}: {ip}")
الخلاصة - ليه Volatility لازم تكون في شنطة الأدوات بتاعتك؟
- لأنها بتخليك تشوف الحالة الحقيقية للنظام في وقت معين.
- بتكشف آثار malware والـ rootkits اللي مش واضحين على القرص.
- مناسبة للاستخدام في التحقيقات الجنائية، استجابة الحوادث، وتحليل البرمجيات الخبيثة.