تکنولوژی

آموزش فارنزیک حافظه (Memory Forensics) با Volatility | راهنمای جامع گام‌به‌گام

ستاره غیر فعالستاره غیر فعالستاره غیر فعالستاره غیر فعالستاره غیر فعال
 

فارنزیک حافظه به تحلیل محتوای حافظه ی  RAMیک سیستمِ روشن گفته می‌شود تا شواهدی مثل فرایندهای در حال اجرا، کانکشن‌های شبکه، ماژول‌ها، رشته‌های درون‌حافظه‌ای، توکن‌ها و کلیدهای رمزیابی‌شده را استخراج کند. Volatility 3 (نسل جدید Volatility) چارچوب متن‌باز و فعالی است که پشتیبانی از Windows, Linux و macOS را فراهم می‌کند و از سال‌های اخیر به‌عنوان استاندارد در جامعهDFIR  رشد کرده است.

معرفی ابزار Volatility

وقتی یک سیستم آلوده می‌شود، همیشه همه‌چیز در هارد ذخیره نمی‌ماند. بسیاری از ردپاهای مهم مهاجم مثل رمزهای عبور در حافظه، پردازش‌های مخفی، بدافزارهای بدون فایل (Fileless Malware)، کانکشن‌های لحظه‌ای و حتی بخش‌هایی از کدهای مخرب فقط در RAM قرار می‌گیرند. به همین دلیل، در فارنزیک دیجیتال همیشه گفته می‌شود:

حافظه، صحنه‌ی جرمِ زنده‌ی سیستم است.

اینجاست که ابزار Volatility اهمیت پیدا می‌کند.

Volatility مجموعه‌ای از ابزارهای open source است که به متخصصان امنیت اجازه می‌دهد snapshot حافظه‌ی RAM را تحلیل کنند و اطلاعاتی را استخراج کنند که با هیچ ابزار دیگری قابل‌دستیابی نیست. اگر یک مهاجم، بدافزاری را فقط در حافظه اجرا کرده باشد (بدون اینکه چیزی روی دیسک ذخیره کند)، Volatility می‌تواند همان بدافزار را پیدا و بازسازی کند.

برای اینکه تصویر واضح‌تری داشته باشیم، فرض کن شما یک فایل dump از حافظه دارید. مثلاً memory.raw. با Volatility می‌توانید:

✔️ لیست پردازش‌های فعال سیستم را ببینید.

✔️ پردازش‌های مخفی (Hidden Processes) را کشف کنید.

✔️ بدافزارهایی که فقط در حافظه اجرا شده‌اند را استخراج کنید.

✔️ محتوای رجیستری در RAM را بخوانید.

✔️ دستورهای اخیر CMD یا PowerShell را بازسازی کنید.

✔️ کانکشن‌های شبکه و سوکت‌های فعال را پیدا کنید.

✔️ DLLهای بارگذاری‌شده توسط هر پردازش را بررسی کنید.

✔️ و حتی نمونه‌ی کامل یک بدافزار در RAM را Dump کنید.

دید کلی فرایند (چک‌لیست مرحله‌ای)

در ابتدای هر تحلیل حافظه، مهم است که بدانیم این فرایند دقیقاً چگونه پیش می‌رود و چه مراحلی باید با نظم و دقت انجام شود. در ادامه یک دید کلی و مرحله‌به‌مرحله از این جریان ارائه می‌شود:

 آماده‌سازی محیط و ابزارها

ایجاد یک محیط امن و جدا برای تحلیل (ماشین فیزیکی جدا یا VM)، نصب ابزارهای ضروری مانند Volatility، ابزارهای کمکی acquisition و اطمینان از عدم تغییر تصادفی داده‌ها هنگام تحلیل.

 گرفتن تصویر حافظه (Memory Acquisition)

تهیه dump کامل حافظه با استفاده از ابزارهای معتبر و قابل‌اعتماد مثل:

✔️ WinPmem

✔️ DumpIt

✔️ Magnet RAM Capture

هدف این مرحله جمع‌آوری داده خام است بدون ایجاد تغییر در حافظه تا حد ممکن.

 ثبت و تأیید ادله

مستندسازی دقیق شامل:

✔️ ثبت تاریخ، ساعت، نسخه سیستم‌عامل، ابزار استفاده‌شده

✔️ تولید هش (مثل SHA256 یا SHA512) برای فایل dump

✔️ ذخیره‌سازی فایل و متادیتا در محیط امن
این کار برای حفظ اعتبار حقوقی و علمی ادله ضروری است.

 آنالیز پایه‌ای

شروع تحلیل با مشاهده بخش‌های عمومی و قابل‌مشاهده سیستم:

✔️ پردازش‌ها (pslist, pstree)

✔️ اتصالات شبکه (netscan)

✔️ ماژول‌ها و DLLهای لودشده (dlllist)

✔️ هندل‌های باز (handles)

این مرحله تصویر اولیه‌ای از فعالیت‌های جاری سیستم ارائه می‌دهد.

 جستجوی بدافزار یا کد مخرب

تمرکز روی نشانه‌های رفتار مخرب با استفاده از:

✔️ پلاگین‌های شناسایی فعالیت مشکوک مثل malfind

✔️ تحلیل strings

✔️ اجرای قوانین YARA برای شناسایی بدافزار یا shellcode
این مرحله معمولاً جایی است که رفتارهای مخفی، injectها و پردازش‌های غیرعادی دیده می‌شود.

 استخراج شواهد حساس

بازیابی و استخراج داده‌هایی که در تحقیق یا Incident Response اهمیت کلیدی دارند. مثل:

✔️ اطلاعات اعتبارسنجی (credentials)

✔️ آرتیفکت‌های مرورگر

✔️ کلیدهای رمزنگاری، session keys، master keys
این شواهد مسیر ادامه تحلیل را مشخص می‌کنند.

 گزارش‌دهی و حفظ زنجیره نگهداری مدرک (Chain of Custody)

تهیه گزارش دقیق شامل:

✔️ مراحل انجام‌شده

✔️ ابزارهای مورد استفاده

✔️ نتایج و شواهد کلیدی

✔️ تصمیمات و تحلیل نهایی

در کنار آن، مستندسازی chain of custody تضمین می‌کند که مدرک قابل‌استفاده در فرایندهای فنی و حقوقی باقی بماند.

بخش ۱. آماده‌سازی محیط و نصب Volatility 3

پیش از آنکه وارد تحلیل حافظه شویم، ضروری است محیطی کنترل‌شده، ایزوله و استاندارد برای کار فراهم کنیم. فارنزیک حافظه یک فعالیت حساس است و کوچک‌ترین تغییر روی سیستم اصلی می‌تواند داده‌ها را آلوده، خراب یا غیرقابل‌استناد کند. بنابراین همواره توصیه می‌شود تمام تحلیل‌ها روی یک ماشین جداگانه یا یک ماشین مجازی (VM) انجام شود و سیستم اصلی صرفاً برای گرفتن تصویر حافظه استفاده گردد.

انتخاب محیط تحلیل (Analysis Environment)

✔️ استفاده از ماشین مجازی با سیستم‌عامل‌های لینوکس (به‌خصوص Ubuntu و Kali) رایج است.

VM ✔️باید تمام ابزارهای فارنزیک،‌ کتابخانه‌ها و پایتون را داشته باشد و اینترنت آن ترجیحاً محدود باشد.

✔️ بهتر است یک Snapshot اولیه از VM داشته باشید تا اگر محیط دچار آلودگی شد، سریع به وضعیت سالم بازگردید.

نصب Volatility 3

Volatility 3  کاملاً ماژولار، قابل توسعه و مبتنی بر Python 3 است. نصب آن نسبتاً ساده است اما نیازمند چند requirement است.

روش پیشنهادی: نصب از سورس (GitHub)

۱. نصب پیش‌نیازها

sudo apt update
sudo apt install -y python3 python3-pip git

۲. کلون کردن مخزن Volatility 3

git clone https://github.com/volatilityfoundation/volatility3.git
cd volatility3

۳. نصب  requirement‌ها

pip3 install -r requirements.txt

۴. اجرای تست سریع

python3 vol.py -h

اکنون Volatility 3 روی سیستم قابل استفاده است.

نکته مهم درباره Symbol Tables

Volatility برای تحلیل ساختارهای داخلی سیستم‌عامل، به Symbol Table نیاز دارد.

✔️ برای لینوکس باید kernel-profile یا symbol table مخصوص همان نسخه تهیه شود.

✔️ برای ویندوز، Volatility 3 می‌تواند بخش زیادی از سمبل‌ها را به‌طور خودکار دانلود کند.

✔️ اگر symbol ‌ها در دسترس نباشند، برخی پلاگین‌ها تحلیل کامل ارائه نمی‌دهند.

مثال اطلاع‌رسانی خطای symbol ‌ها:

Required symbol table not found for module: ntoskrnl

نصب Volatilityدر ویندوز (اختیاری)

هرچند توصیه‌ی DFIR استفاده از محیط لینوکسی است، اما Volatility 3 روی ویندوز نیز قابل اجراست:

۱. نصب Python 3
۲. نصب Git
۳. کلون پروژه و اجرای دستورات مشابه بالا

نکته:
در ویندوز بعضی پلاگین‌ها یا requirement‌ها دچار مشکل می‌شوند. بنابراین برای کار حرفه‌ای، لینوکس مناسب‌تر است.

ساخت پوشه کاری استاندارد

بهتر است یک ساختار پوشه‌ای مشخص ایجاد کنید:

Case-001/
 ├── evidence/
 │     ├── memdump.raw
 │     └── hash.txt
 ├── analysis/
 │     ├── processes.txt
 │     ├── netscan.txt
 │     └── malfind/
 └── report/
       └── final_report.pdf

این ساختار نظم پرونده را حفظ می‌کند و در صورت ارائه به مراجع قانونی، روند بررسی را استاندارد نشان می‌دهد.

۲. گرفتن تصویر حافظه (Memory Acquisition)

گام دوم در فارنزیک حافظه، گرفتن یک نمونه ی دقیق، قابل‌اعتماد و تغییر‌نیافته از RAM است. این مرحله نقطه‌ی آغاز تمام تحلیل‌هاست و هرگونه خطا در آن می‌تواند باعث از بین رفتن شواهد یا غیرقابل‌قبول شدن پرونده از نظر حقوقی شود. بنابراین ابزار باید معتبر باشد، خروجی باید هش‌گذاری شود و تمام عملیات باید ثبت گردد.

اصول کلیدی در Acquisition

پیش از شروع، این سه اصل باید رعایت شود:

  1. کمترین دخالت (Minimal Interaction)
    ابزار باید کمترین تغییر را در حافظه ایجاد کند. ابزارهای حرفه‌ای مانند WinPmem یا Magnet RAM Capture  دقیقاً برای این هدف طراحی شده‌اند.
  2. استفاده از ابزار قابل‌استناد و استاندارد
    ابزارهای غیررسمی یا ناشناس ممکن است داده‌ها را تغییر دهند و روند Chain of Custody را مخدوش کنند.
  3. ثبت کامل عملیات
    زمان شروع، ابزار مورد استفاده، نسخه ابزار، مسیر خروجی و وضعیت نهایی باید ثبت شود.

ابزارهای استاندارد Memory Acquisition

   WinPmem (پیشنهاد اصلی برای ویندوز)

ابزار متن‌باز و مورد اعتماد جامعه‌ی DFIR، سازگار با نسخه‌های جدید ویندوز.

  • فرمت خروجی:  RAW  یا AFF4
  • امکان ایجاد هش در لحظه
  • مناسب برای استفاده روی سیستم‌های زنده (Live Response)

مثال اجرای WinPmem :

winpmem.exe --format raw --output C:\dump\memdump.raw

 DumpIt (ساده‌ترین گزینه برای Incident Response)

  • اجرای تک‌فایلی
  • مناسب برای تیم‌های IR در شرایط اضطراری
  • فرمت خروجی همیشه RAW است

مثال اجرا:
دو بار کلیک : خودکار فایل memory.dmp  ایجاد می‌شود.

 Magnet RAM Capture (محیط کاربرپسند)

محصول شرکت Magnet Forensics، بسیار پایدار و مورد استفاده تجاری.

  • رابط گرافیکی
  • خروجی RAW
  • کاربرد در سازمان‌هایی که نیاز به ابزار با اعتبار حقوقی دارند

فرآیند استاندارد Acquisition در ویندوز (نمونه عملی)

۱. شناسایی و آماده‌سازی مسیر خروجی

mkdir C:\forensic

۲. اجرای ابزار (مثلاً WinPmem)

winpmem.exe --format raw --output C:\forensic\memdump.raw

۳. محاسبه هش برای ثبت قانونی

certutil -hashfile C:\forensic\memdump.raw SHA256

خروجی هش در یک فایل text ذخیره شود:

SHA256: 9f8a3d9c2e47c93b23b...

این هش در گزارش نهایی باید ذکر شود.

نکات Acquisition در Linux

پردازش حافظه در لینوکس پیچیده‌تر است. ابزارهای معتبر عبارت‌اند از:

 LiME (Linux Memory Extractor)

ماژول Kernel که RAM را با کمترین دخالت استخراج می‌کند.

نمونه اجرا (بسته به توزیع متفاوت است):

sudo insmod lime.ko path=/tmp/memdump.lime format=lime

 AVML (ابزار رسمی Microsoft)

  • مناسب برای Azure و سرورهای ابری
  • خروجی LIME
  • سبک و بسیار سریع

sudo avml dump.lime

نکات Acquisition در macOS

ابزارهای قابل‌اعتماد شامل:

  • osxpmem  از پروژه Rekall
  • ابزار تجاری MacQuisition

(بسیاری از نسخه‌های جدید macOS سیاست‌های امنیتی سخت‌گیرانه دارند، لذا acquisition ممکن است نیاز به انجام در حالت Recovery یا با سطح دسترسی خاص داشته باشد).

توصیه‌های حیاتی در مرحله Acquisition

نکته ۱ همیشه به جای سیستم آلوده، روی یک USB اجرا کنید.

ابزار روی USB باشد تا کمترین تغییر روی حافظه ایجاد شود.

نکته ۲ هیچ‌وقت فایل Dump را روی درایوی که ممکن است خودش آلوده باشد ذخیره نکنید.

نکته ۳ زمان دقیق، نام اپراتور، نسخه ابزار و هش باید ثبت شود.

این اطلاعات برای Chain of Custody ضروری‌اند.

نکته ۴ اگر سیستم در حال اجرای بدافزار است، سریعاً Acquisition را انجام دهید.

برخی بدافزارها داده‌ها را در حافظه نگه می‌دارند و پس از ری‌استارت یا Kill Process، شواهد از بین می‌روند.

تایید یکپارچگی شواهد (Hashing & Chain-of-Custody)

پس از تولید فایل memory dump :

  • تولید هش SHA256/MD5 :
    sha256sum memory.raw > memory.raw.sha256
  • ثبت متادیتا (hostname، زمان capture، ابزار و ورژن، نام اپراتور).
    این مرحله تضمین می‌کند هرگونه تغییر بعدی قابل‌ردیابی و تشخیص باشد.

شروع آنالیز گام‌به‌گام با Volatility3 

برای اجرای هر پلاگین در Volatility 3 از یک قالب مشخص استفاده می‌شود که پارامتر اصلی آن فایل تصویر حافظه است. در سطح پایه این قالب به‌صورت زیر است:

volatility3 -f <memoryfile> <os>.<plugin> [--plugin-options]

نکته مهم: در Volatility 3 پلاگین‌ها براساس سیستم‌عامل و حوزه کاری نام‌گذاری می‌شوند، مثلاً windows.pslist  برای فهرست پردازش‌ها در ویندوز یا linux.pslist برای همان عملکرد در لینوکس. این نام‌گذاری به شما کمک می‌کند دقیقاً پلاگین مناسب هر OS را اجرا کنید.

پلاگین‌های پراستفاده و شرح کوتاه هرکدام

✔️ windows.pslist  : فهرست پردازش‌های فعال (snapshot از EPROCESS)

✔️ windows.pstree  : نمایش درختی پردازش‌ها (رابطه parent/child)

✔️ windows.netstat یا windows.netscan  : نمایش سوکت‌ها و کانکشن‌های شبکه‌ای که در حافظه دیده می‌شوند.

✔️ windows.dlllist : DLLها و ماژول‌های لودشده برای یک پردازش.

✔️ windows.malfind  : شناسایی بخش‌های مشکوک حافظه (code injection / shellcode) .

✔️ معادل‌های linux.* و mac.* برای سیستم‌های متناظر وجود دارند و قواعد مشابهی دارند.

مثال‌های عملی (نمونه دستورها)

فهرست پردازش‌ها در ویندوز:

volatility3 -f mem.raw windows.pslist

درخت پردازش‌ها و ذخیره خروجی در فایل:

volatility3 -f mem.raw windows.pstree > pstree.txt

اجرای پلاگین تشخیص بخش‌های مشکوک حافظه:

volatility3 -f mem.raw windows.malfind

بررسی کانکشن‌های شبکه:

volatility3 -f mem.raw windows.netscan > netscan.txt

نکته عملی:  بسیاری از پلاگین‌ها گزینه‌هایی مانند --pid <PID> یا پارامترهای فیلترینگ دارند که به‌وسیله مستندات رسمی یا دستور -h برای هر پلاگین می‌توان آن‌ها را مشاهده کرد. همچنین برای حفظ مستندات، خروجی‌ها را همیشه به فایل هدایت و نسخه خام خروجی‌ها را ضمیمه پرونده تحلیل کنید.

تحلیل عمیق‌تر و تکنیک‌های پیشرفته

  • Symbol & Profile support :  Volatility 3 از سمبل‌ها و فایل‌های profile برای تفسیر ساختارهای کرنل استفاده می‌کند. در موارد جدیدِ OS یا هسته‌های خاص ممکن است نیاز به دانلود یا تولید symbol/major-tree داشته باشید. مستندات و ریپو Volatility راهنما دارند.
  • پلاگین‌های جدید و community plugins :  Volatility 3 به‌سرعت پلاگین‌های جدید برای لینوکس و macOS اضافه می‌کند. حتماً ریپوزیتوری رسمی و release notes را بررسی کن تا از پلاگین‌های جدید بهره ببرید.
  • جستجوی اثرات ضد‌فارنزیک (anti-forensic) : رمزگذاری، پاک‌سازی حافظه، یا تکنیک‌هایی که سعی در پنهان‌سازی هستند را دنبال کن. مقالات اخیر نشان داده‌اند که تحلیل RAM می‌تواند حتی در برابر برخی از روش‌های ضدفارنزیک کلیدها یا متن‌های رمزگشایی‌شده را بیرون بکشد.

مثال:

  1. گرفتن dump با WinPmem :


winpmem64.exe -o target_memory.raw --format raw

  1. تولید هش

sha256sum target_memory.raw > target_memory.raw.sha256

  1. اجرای Volatility برای فهرست فرایندها:


volatility3 -f target_memory.raw windows.pslist > pslist.txt

  1. اگر فرایند مشکوکی دیدی، جزئیات cmdline و ماژول‌ها را بررسی کن:


volatility3 -f target_memory.raw windows.cmdline --pid <PID>
volatility3 -f target_memory.raw windows.modules --pid <PID>

  1. اجرای windows.malfind و بررسی نتایج برای کد تزریقی یا آدرس‌های غیرعادی.

نکات عملیاتی و Best Practices در فارنزیک حافظه

رعایت استانداردهای عملیاتی در فارنزیک حافظه فقط باعث سرعت و دقت بیشتر نمی‌شود. بلکه اعتبار قانونی و استنادپذیری شواهد را تضمین می‌کند. هر خطا در این مرحله می‌تواند شواهد را مخدوش کرده یا ارزش حقوقی آن‌ها را از بین ببرد. موارد زیر مجموعه‌ای از مهم‌ترین Best Practiceهای پذیرفته‌شده در جامعه DFIR  و استانداردهای بین‌المللی است:

۱. همیشه روی کپی Read-Only  تحلیل انجام دهید.

فایل dump اصلی باید بدون تغییر باقی بماند.

✔️ یک نسخه اصلی (Original Evidence) نگه‌داری می‌شود.

✔️ یک یا چند نسخه کپی برای تحلیل ساخته می‌شود.

✔️ دسترسی نسخه اصلی روی Read-Only تنظیم می‌شود تا هیچ‌گونه عملیات ناخواسته آن را تغییر ندهد.

این کار بخشی از زنجیره نگه‌داری مدرک (Chain of Custody) است.

۲. محیط تحلیل باید کاملاً ایزوله باشد

تحلیل حافظه ممکن است شامل بدافزار فعال، Keylogger، Backdoor یا Processهای مخفی باشد.
به همین دلیل:

✔️ تحلیل در VM اختصاصی انجام شود.

✔️ اتصال به اینترنت در تمام مراحل قطع یا بسیار محدود باشد.

Snapshot ✔️اولیه از VM گرفته شود تا در صورت آلودگی، محیط فوراً بازیابی گردد.

این یک اصل کلیدی برای جلوگیری از نشت داده یا آلوده شدن محیط تحلیل است.

۳. ابزارهای Acquisition را فقط از منابع رسمی دانلود کنید + تأیید هش

ابزارهایی مثل WinPmem، DumpIt یا AVML باید فقط از GitHub رسمی، وب‌سایت سازنده یا مخازن معتبر دانلود شوند.

سپس:

✔️ هش SHA256 فایل ابزار با مقدار ارائه‌شده در سایت سازنده مقایسه شود.

✔️ در مستندات پرونده ثبت گردد که ابزار از منبع رسمی دانلود شده و هش آن معتبر است.

۴. Documentationضروری است

در فارنزیک، چیزی که مستند نشده باشد، عملاً رخ نداده است. مواردی که باید ثبت شوند:

✔️ اسکرین‌شات از مراحل Acquisition

✔️ تمام خروجی‌های CLI (مثلاً خروجی plugins مثل pslist, netscan, malfind)

✔️ نسخه ابزارها مثل نسخه Volatility، Winpmem، Python

✔️ تمام دستورات مورد استفاده

✔️ موقعیت قرارگیری فایل dump و هش آن

✔️ تاریخ و زمان دقیق عملیات

این مستندسازی بعداً برای گزارش رسمی یا ارائه در دادگاه حیاتی است.

۵. رعایت استانداردها برای شواهد حقوقی (Court-Admissible Evidence)

اگر هدف، ارائه شواهد در پرونده‌های قضایی باشد:

✔️ از رویه‌های پذیرفته‌شده سازمان (SOP) یا استانداردهای محلی پیروی کن.

استانداردهای بین‌المللی مثل:

✔️ ISO/IEC 27037  (Guidelines for evidence handling)

✔️ ISO/IEC 27041  (Incident investigation)

✔️ ISO/IEC 27042  (Digital evidence analysis)

✔️ ISO/IEC 27043  (Incident investigation principles)

پیروی از این استانداردها باعث می‌شود:

  • مسیر شواهد شفاف و قابل‌ردیابی باشد (Chain of Custody)
  • شواهد قابل‌قبول در دادگاه باشند
  • تحلیل قابل دفاع باشد و قابل نقد و بررسی توسط تیم‌های دیگر

اگر سازمان رویه داخلی دارد (مثل CERT یا SOC متمرکز)، باید دقیقاً مطابق آن‌ها عمل شود.

مثال‌های کاربردی (Use-cases)

✔️ تحلیل آلوده شدن یک سرور به Ransomware برای یافتن کلیدها یا فرایندهای فعال.

✔️ بازیابی دسترسی‌های لاگین (cleartext credentials که در حافظه نگهداری شده‌اند).

✔️ شناسایی backdoorها و ارتباطات C2 (از طریق بررسی سوکت‌ها و رشته‌ها).

✔️ مشاهده ماژول‌های کرنل مشکوک یا درایورهای جاسازی‌شده.

جمع‌بندی

فارنزیک حافظه یک ابزار بالقوه قوی برای کشف شواهدیست که روی دیسک دیده نمی‌شود. از فرایندهای تزریقی تا کلیدهای رمزیابی‌شده و ارتباطات شبکه‌ایِ مخفی. Volatility 3 به‌عنوان ابزار متن‌باز و در حال توسعه، اکنون گزینه اصلی برای تحلیل‌گران DFIR است. ترکیب acquisition صحیح، مستندسازی دقیق و اجرای سیستماتیک پلاگین‌های Volatility3، مسیرِ استاندارد و مؤثری برای تحلیل حافظه فراهم می‌آورد.

 

تمام حقوق سایت برای سلام دیجی و نويسندگان آن محفوظ می باشد