فارنزیک حافظه فرایندی تخصصی برای جمعآوری و تحلیل دادههای موجود در حافظهٔ اصلی (RAM) سیستم است؛ دادههایی که ماهیت فرّار دارند و با خاموش شدن سیستم از بین میروند. به همین دلیل، فارنزیک حافظه معمولاً در سناریوهای پاسخ به رخداد زنده انجام میشود و هدف آن کشف فعالیتهایی است که یا هرگز روی دیسک ثبت نشدهاند یا عمداً از ردپاگذاری اجتناب کردهاند، مانند بدافزارهای fileless، تزریق کد، نشستهای فعال، ارتباطات شبکهای زنده و دادههای حساس مانند credentialها.
فرایند از مرحلهٔ تصمیمگیری اولیه آغاز میشود. تحلیلگر باید تعیین کند که سیستم روشن باقی بماند یا خیر و آیا جمعآوری حافظه ریسک فعالسازی بیشتر بدافزار را دارد یا نه. در اغلب سناریوهای حرفهای، سیستم خاموش نمیشود زیرا خاموشکردن به معنای نابودی کامل شواهد حافظه است. در این مرحله ابزار مناسب انتخاب میشود و رسانهٔ ذخیرهسازی امن آماده میگردد.
مرحلهٔ بعد، جمعآوری حافظه یا Memory Acquisition است. هدف، گرفتن یک تصویر کامل و دقیق از RAM با کمترین اثر جانبی است. ابزارهایی مانند FTK Imager, Magnet RAM Capture, Belkasoft RAM Capturer یا WinPMEM در ویندوز و ابزارهایی مانند LiME در لینوکس برای این منظور استفاده میشوند. فایل خروجی معمولاً روی یک حافظهٔ خارجی ذخیره میشود و بلافاصله از آن هشگیری (MD5 یا SHA256) انجام میگیرد تا یکپارچگی شواهد حفظ شود.
پس از جمعآوری، حفظ زنجیره شواهد یا Chain of Custody اهمیت پیدا میکند. هرگونه انتقال، کپی یا تحلیل فایل حافظه باید مستند شود. ابزارهایی مانند HashCalc یا قابلیتهای هشگیری در خود ابزارهای فارنزیک برای ثبت صحت فایل به کار میروند. بدون این مرحله، شواهد از نظر حقوقی قابل اتکا نخواهند بود.
پیش از تحلیل محتوا، تحلیلگر باید مشخصات دقیق سیستم عامل را شناسایی کند؛ از جمله نسخه، معماری و kernel. این کار معمولاً در ابتدای تحلیل با ابزار Volatility Framework یا Rekall انجام میشود، زیرا ساختار دادههای حافظه کاملاً به سیستم عامل وابسته است.
در مرحلهٔ تحلیل ساختاری، پردازههای فعال بررسی میشوند. Volatility با پلاگینهایی مانند pslist، psscan و pstree امکان شناسایی پردازههای عادی و مخفی را فراهم میکند. تمرکز تحلیلگر روی پردازههایی است که مسیر فایل مشکوک دارند، والد غیرعادی دارند یا اصلاً فایل متناظر روی دیسک ندارند.
سپس تحلیل ماژولها و DLLها انجام میشود. در این مرحله با استفاده از پلاگینهایی مانند dlllist و ldrmodules در Volatility مشخص میشود چه کتابخانههایی در حافظه بارگذاری شدهاند و آیا ماژولهایی وجود دارند که بهصورت غیرمعمول یا تزریقی در حافظه قرار گرفتهاند. این بخش برای کشف rootkitها و loaderهای حافظهای بسیار کلیدی است.
تحلیل شبکه یکی از مزیتهای بزرگ فارنزیک حافظه است. حتی اگر لاگها پاک شده باشند، اطلاعات ارتباطات شبکهای ممکن است همچنان در RAM موجود باشد. ابزار Volatility با پلاگین netscan امکان مشاهدهٔ connectionهای فعال، portها و ارتباط هر پردازه با شبکه را فراهم میکند.
در ادامه، تحلیل credential و دادههای حساس انجام میشود. ابزارهایی مانند Mimikatz (در چارچوب تحلیل کنترلشده) یا پلاگینهای تخصصی Volatility برای استخراج tokenها، hashها و کلیدهای رمزنگاریشده استفاده میشوند. این مرحله مشخص میکند مهاجم به چه سطحی از دسترسی رسیده و آیا امکان lateral movement وجود داشته است یا خیر.
پس از استخراج artefactها، تحلیلگر وارد مرحلهٔ همبستسازی میشود. دادههای بهدستآمده از پردازهها، شبکه، ماژولها و credentialها کنار هم قرار میگیرند تا سناریوی حمله بازسازی شود. در این مرحله معمولاً از ترکیب Volatility، تحلیل دستی و ابزارهای کمکی مانند Timeline Explorer استفاده میشود.
در نهایت، گزارش فارنزیک تهیه میشود. گزارش باید شامل روش جمعآوری، ابزارهای استفادهشده، یافتههای فنی، تحلیل، نتیجهگیری و محدودیتها باشد. این گزارش باید بهگونهای نوشته شود که هم برای تیم فنی و هم در صورت لزوم برای مراجع حقوقی قابل دفاع باشد.
در جمعبندی میتوان گفت فارنزیک حافظه تنها راه مشاهدهٔ واقعیت حملات مدرن است؛ حملاتی که اغلب هیچ اثری روی دیسک باقی نمیگذارند. دقت در ترتیب مراحل، انتخاب صحیح ابزار و مستندسازی دقیق، تفاوت بین یک تحلیل موفق و از دست رفتن غیرقابل بازگشت شواهد را رقم میزند.
مثال عملی
فرض کنید در یک سیستم ویندوزی مشکوک به نفوذ آنتیویروس چیزی پیدا نکرده ولاگها ناقصاند وسیستم هنوز روشن است واز RAM سیستم یک فایل به نام memdump.raw گرفتهایم و حالا میخواهیم ببینیم چه چیزی واقعاً در حافظه اجرا شده است.
مرحله 1: شناسایی سیستم عامل (Profile)
اولین قدم در Volatility این است که بفهمیم RAM مربوط به چه نسخهای از ویندوز است.
volatility -f memdump.raw imageinfo
خروجی چیزی شبیه این خواهد بود:
Suggested Profile(s) : Win7SP1x64
این مرحله حیاتی است؛ اگر Profile اشتباه باشد، کل تحلیل غلط میشود.
مرحله 2: مشاهده پردازههای فعال
حالا میخواهیم ببینیم چه پردازههایی در زمان گرفتن RAM فعال بودهاند.
volatility -f memdump.raw --profile=Win7SP1x64 pslist
این دستور لیست پردازههای ثبتشده توسط سیستم را نشان میدهد. اما بدافزارها گاهی خودشان را پنهان میکنند، پس یک روش دیگر هم لازم است.
مرحله 3: کشف پردازههای مخفی
برای یافتن پردازههایی که از لیست رسمی حذف شدهاند:
volatility -f memdump.raw --profile=Win7SP1x64 psscan
اگر پردازهای در psscan دیده شود ولی در pslist نباشد، بسیار مشکوک است. این یکی از نشانههای کلاسیک بدافزارهای حافظهای است.
مرحله 4: بررسی ارتباط پردازه با شبکه
فرض کنید یک پردازه مشکوک پیدا کردهایم و میخواهیم ببینی آیا ارتباط شبکهای داشته یا نه.
volatility -f memdump.raw --profile=Win7SP1x64 netscan
خروجی نشان میدهد چه IPهایی متصل بودهاند وروی چه پورتهایی و کدام پردازه این اتصال را ایجاد کرده
اینجا ممکن است یک ارتباط outbound به IP ناشناس ببینیم که هیچ لاگی از آن روی فایروال وجود ندارد.
مرحله 5: بررسی DLLهای تزریقشده
حالا میخواهیم ببینیم آیا پردازه مشکوک DLL غیرعادی در حافظه دارد یا نه.
volatility -f memdump.raw --profile=Win7SP1x64 dlllist -p 2480
(عدد 2480 یعنی PID پردازه مشکوک)
اگر DLLهایی ببینیم که مسیر فایل ندارند یا از مسیرهای غیرمعمول Load شدهاند احتمال DLL Injection وجود دارد.
مرحله 6: استخراج کد یا ماژول مشکوک
اگر بخواهیم محتوای یک پردازه را استخراج کنیم:
volatility -f memdump.raw --profile=Win7SP1x64 procdump -p 2480 -D output/
این فایل استخراجشده بعداً میتواند با آنتیویروس یا ابزار Reverse Engineering تحلیل شود.
مرحله 7: بررسی فرمانهای اجراشده (Command History)
برای دیدن دستورهایی که در خط فرمان اجرا شدهاند:
volatility -f memdump.raw --profile=Win7SP1x64 cmdscan
یا:
volatility -f memdump.raw --profile=Win7SP1x64 consoles
اینجا ممکن است دستورهایی مثل: دانلود فایل اجرای PowerShell یا تغییر تنظیمات امنیتی را ببینیم، حتی اگر history پاک شده باشد.