تکنولوژی

آموزش کامل فارنزیک حافظه با Rekall | تحلیل RAM در DFIR با مثال عملی

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

در مقاله قبلی درباره آموزش کامل فارنزیک حافظه با Volatility توضیح دادیم که چرا تحلیل RAM یکی از مهم‌ترین مراحل در DFIR است و چگونه می‌توان با استفاده از Volatility رفتار مهاجم، پردازش‌های مشکوک، ارتباطات شبکه و تزریق کد را از دل حافظه شناسایی کرد.
اما Volatility تنها ابزار موجود برای Memory Forensics نیست.

در این مقاله به سراغ Rekall  می‌رویم. ابزاری که زمانی یکی از رقبای جدی Volatility بود و هنوز هم در بسیاری از تحقیقات، IR داخلی سازمان‌ها و تحلیل‌های خاص، به‌ویژه برای نسخه‌های قدیمی‌تر ویندوز، کاربرد دارد.

  Rekall چیست و چرا مهم است؟

Rekall  یک فریم‌ورک فارنزیک حافظه open source است که ابتدا به‌عنوان یک انشعاب (Fork)  از Volatility 2 ایجاد شد. پروژه توسط Google Rapid Response (GRR) و جامعه DFIR توسعه یافت و تمرکز اصلی آن روی سرعت بیشتر در اجرا، دقت بالا در پروفایل‌های ویندوز، تحلیل ساختارهای عمیق‌تر حافظه kernel و قابلیت اجرا روی ویندوز، لینوکس و macOSبود.

اگرچه Volatility 3 در سال‌های اخیر نقش استاندارد صنعت را دارد، اما Rekall هنوز هم در موارد زیر بسیار کاربرد دارد:

 وقتی Volatility پروفایل مناسب برای نسخه خاصی از OS ندارد
 برای تحلیل snapshotهای قدیمی یا .EWF
 وقتی خروجی‌های سریع و سبک نیاز است
 زمانی‌که ساختارهای Kernel ویندوز باید دقیق‌تر بررسی شود

  مقایسه کوتاه Rekall با Volatility

ویژگی

Volatility

Rekall

پشتیبانی از نسخه‌های جدید OS

بسیار قوی (به‌خصوص v3)

محدودتر

سرعت اجرای پلاگین‌ها

متوسط

سریع‌تر

پروفایل‌های kernel

جامع

بسیار دقیق

جامعه توسعه‌دهنده

فعال

محدود اما پایدار

Syntax

ساختاریافته

ساده و روان

 

به همین دلیل بسیاری از تحلیل‌گران به این روش عمل می‌کنند:

🔸 مرحله ۱: تحلیل اصلی با Volatility
🔸 مرحله ۲: تأیید نتایج حساس با Rekall
🔸 مرحله ۳:  Cross-Validation برای پرونده‌های قضایی یا حساس

  قابلیت‌های کلیدی و برتری Rekall نسبت به ابزارهای دیگر

ویژگی / قابلیت

توضیح

انتخاب خودکار پروفایل

Rekall  با استفاده از کتابخانه‌ی وسیع پروفایل‌های کرنل، از Guessing global symbols صرف نظر می‌کند، بنابراین تشخیص ساختارهای حافظه دقیق‌تر و سریع‌تر انجام می‌شود.

پشتیبانی از چند سیستم‌عامل

ویندوز، لینوکس و macOS .مناسب برای محیط‌های هیبرید و سرورهای متنوع.

API  مبتنی بر JSON + انعطاف در اسکریپت‌نویسی

خروجی های ساخت‌یافته امکان پردازش خودکار، گزارش‌گیری یا ادغام با سیستم‌های دیگر را می‌دهند.

حالت Live Analysis

امکان استفاده بدون Dump‌کردن حافظه .مفید برای triage سریع یا زمانی که نمی‌خواهیم سیستم را خاموش کنیم.

مناسب برای مقیاس‌پذیری و اتوماسیون

از طریق بخش Agent طراحی‌شده، Rekall قابلیت اجرا روی صدها یا هزاران endpoint را داراست.

 

  نصب Rekall (Windows / Linux)

📌  نصب روی لینوکس (بهترین و پایدارترین روش)

Rekall  روی لینوکس بیشترین سازگاری را دارد و معمولاً بدون نیاز به وابستگی‌های اضافی نصب می‌شود. برای نصب کامل ابزار و ماژول‌های مربوط به تحلیل حافظه، این دستورات را اجرا کنید:

pip install rekall-agent rekall rekall-gui

در برخی سیستم‌ها (خصوصاً Debian/Ubuntu جدید) ممکن است پیغام‌های مربوط به PEP517 دریافت کنید. در این صورت، نصب به حالت legacy انجام می‌شود:

pip install --use-pep517 rekall

پس از نصب، می‌توانید نسخه گرافیکی را اجرا کنید که برای مرور سریع Memory Artifacts بسیار کاربردی است:

rekall-gui

📌  نصب روی ویندوز

نسخه رسمی Windows Binary سال‌هاست به‌روزرسانی نشده، اما همچنان چند روش قابل اعتماد وجود دارد:

۱. اجرای Rekall در WSL

بهترین و مطمئن‌ترین راه‌حل:

✔️ فعال‌سازی Windows Subsystem for Linux

✔️ نصب یک توزیع مانند Ubuntu

✔️ اجرای همان دستورهای pip لینوکس در WSL

این روش بیشترین سازگاری با پلاگین‌ها و پروفایل‌های حافظه را دارد.

۲. استفاده از نسخه‌های Mirror شده

بعضی Repoها و Mirrorهای جامعه DFIR نسخه‌های قدیمی Rekall را نگه‌داری می‌کنند، اما چون رسمی نیستند، توصیه می‌شود فقط برای بررسی سریع استفاده شوند.

۳. استفاده از GRR / Rekall Bootable Builds

پروژه GRR ابزارهای Memory Acquisition و نسخه‌های سازگار Rekall را ارائه می‌دهد. این روش برای تحلیل فارنزیک در محیط‌های Air-gapped و Incident Response بسیار مناسب است.

 شروع تحلیل حافظه با Rekall

فرمت کلی اجرای دستورها در Rekall به این شکل است:

rekall -f <memory.raw> <plugin> [options]

پلاگین‌ها بسیار شبیه Volatility هستند اما ساده‌تر. در ادامه گام‌به‌گام جلو می‌رویم.

🔷  گام 1: شناسایی سیستم‌عامل (Profile Detection)

روند شناسایی سیستم در Rekall بسیار سریع است:

rekall -f mem.raw probe

یا:

rekall -f mem.raw auto

خروجی شامل:

✔️ نسخه ویندوز

build number ✔️

address space layout ✔️

kernel debugger data ✔️ است.

این مرحله برای سازگاری پلاگین‌ها ضروری است.

🔷 گام 2: فهرست پردازش‌ها (Process Analysis)

 مشابه pslist در Volatility :

rekall -f mem.raw pslist

 نمایش Process Tree :

rekall -f mem.raw pstree

در این بخش به موارد زیر توجه کنید:

✔️ پردازش‌های بدون parent

✔️ پردازش‌های با زمان اجرای غیرمنطقی

✔️ پردازش‌های Session 0 مشکوک

🔷 گام 3: بررسی ماژول‌ها و DLLها

rekall -f mem.raw dlllist

مواردی که باید بررسی شوند:

DLL ✔️بدون path

DLL ✔️لود‌شده از مسیر Temp

✔️ ماژول‌های ناشناس در kernel

🔷 گام 4: تحلیل شبکه

Rekall  پلاگین‌های شبکه دقیقی دارد:

rekall -f mem.raw netscan

جزئیات شامل:

✔️ پورت‌های باز

✔️ ارتباطات خارجی

✔️ سوکت‌های orphan

✔️ کانکشن‌های در وضعیت Closing / FIN_WAITاست.

🔷  گام ۵: شناسایی Injected Code و Indicators of Compromise (IoCs)

یکی از حیاتی‌ترین مراحل در Memory Forensics، کشف کد تزریق‌شده و رفتارهای مخرب در فضای حافظه است.  Rekall ابزارهای پیشرفته‌ای برای این کار دارد و در برخی سناریوها به‌ویژه هنگامی که مهاجم ساختارهای استاندارد ویندوز را دور زده از Volatility دقیق‌تر عمل می‌کند.

اجرای تحلیل اولیه با Malfind

rekall -f mem.raw malfind

این پلاگین بخش‌هایی از حافظه را که احتمال وجود کد مخرب در آن‌ها بالاست علامت‌گذاری کرده و اطلاعاتی مانند Virtual Address، Permissionها، حجم و Hexdump را ارائه می‌دهد.

موارد بسیار مهم هنگام بررسی خروجی Malfind

 صفحات حافظه با سطح دسترسی RWX

اگر یک Memory Region دارای دسترسی Read/Write/Execute باشد، تقریباً همیشه باید آن را مشکوک در نظر گرفت. زیرا فرایندهای سالم به‌ندرت به چنین سطح دسترسی نیاز دارند.
عموماً بدافزارها برای تزریق shellcode یا اجرای کد، از صفحات RWX استفاده می‌کنند.

 وجود Shellcode یا بایت‌های اجرایی در انتهای DLL

کد مخرب معمولاً در فضاهای خالی (Slack Space) انتهای DLL تزریق می‌شود.
نشانه‌ها:

✔️ الگوهای بایتی غیرعادی

Jump ✔️یا Call به آدرس‌های ناشناخته

✔️ عدم همخوانی امضای DLL با ساختار اصلی

Rekall  اغلب این مناطق را بهتر از Volatility تشخیص می‌دهد چون mapping و page boundary ها را با دقت بیشتری تحلیل می‌کند.

 Threads تزریق‌شده (Injected Threads)

کد مخرب معمولاً برای اجرای پایدار نیاز به ایجاد Thread جدید دارد.
نشانه‌های هشداردهنده:

Thread✔️هایی که به یک DLL معتبر تعلق ندارند

Start Address ✔️ در Memory Region غیرعادی

Thread ✔️هایی که PID والدشان Legitimate است اما رفتار مخرب دارند (Classic Code Injection)

 ماژول‌های unlinked (Unlinked Modules)

مهاجمان گاهی DLL خود را از لیست بارگذاری شدهی ویندوز (PEB LDR) حذف می‌کنند تا ابزارهای عادی قادر به مشاهدهی آن نباشند.
این DLLها در لیست ماژول‌های استاندارد دیده نمی‌شوند اما در حافظه همچنان وجود دارند. اغلب در کنار کد تزریق‌شده مشاهده می‌شوند.

Rekall  در تشخیص این نوع Stealthy Modules  بسیار موفق عمل می‌کند زیرا ساختارهای حافظه را مستقیم اسکن می‌کند، نه صرفاً لیست سیستم‌عامل را.

اینجا جایی است که تحلیل‌گر DFIR از یک بررسی سطحی وارد مرحله ی threat hunting واقعی می‌شود.

🔷  گام ۶: استخراج شواهد حساس (Sensitive Artifacts Extraction)

پس از شناسایی رفتارهای مشکوک در حافظه، مرحله بعدی تمرکز بر استخراج داده‌های ارزشمند است. داده‌هایی که می‌توانند نشان دهند مهاجم چه کار کرده، از کجا وارد شده و چه اطلاعاتی را هدف گرفته است.  Rekall در این بخش ابزارهای بسیار قدرتمندی در اختیار تحلیل‌گران DFIR قرار می‌دهد.

 ۱. استخراج رشته‌های متنی (Strings Analysis)

Strings  یکی از مهم‌ترین منابع شواهد در حافظه است. زیرا بسیاری از اطلاعات کلیدی مانند نام دامنه C2، مسیر بدافزار، دستورات PowerShell، کلیدهای رجیستری، نام فایل‌ها و حتی Credentialها ممکن است به‌صورت plaintext در RAM ذخیره شده باشد.

دستور پایه:

rekall -f mem.raw strings

این دستور معمولاً خروجی بسیار بزرگی تولید می‌کند، اما می‌توان آن را با روش‌های زیر تحلیل کرد:

✔️ فیلتر کردن نتایج با grep یا ابزارهای مشابه

✔️ جستجوی IOCهایی مثل:

  • آدرس IPهای غیرعادی
  • URLهای مشکوک
  • مسیرهای ناشناخته مثل %APPDATA%\<random>

نکته: در بسیاری از حملات، اولین سرنخ از طریق همین strings پیدا شده. مثلاً یک C2 URL که در هیچ پلاگین دیگری دیده نمی‌شد.

 ۲. استخراج Credential Artifacts (LSASS Dumping)

یکی از مهم‌ترین اهداف مهاجمان پس از نفوذ، دسترسی به Credentialهاست. در ویندوز، حساس‌ترین نقطه ی حافظه در این زمینه LSASS.exe  است. سرویسی که اطلاعات ورود کاربران را نگهداری می‌کند.

Rekall  امکان استخراج حافظهLSASS  را فراهم می‌کند تا تحلیل‌گر بتواند بررسی کند آیا مهاجم عملیات mimikatz-like انجام داده یا Credentialها در معرض خطر قرار گرفته‌اند.

دستور استخراج حافظهLSASS :

rekall -f mem.raw memdump --pid <LSASS PID>

برای به‌دست آوردن PID مربوط به LSASS :

rekall -f mem.raw pslist | grep lsass

بسیاری از مهاجمان Credentialهای Domain Admin را از LSASS استخراج می‌کنند.

رفتارهایی مثل sekurlsa: : logonpasswords یا DLL Injection در LSASS نشانهی صریح حمله است.

اگر ساختارهای LSASS دچار hook یا patch شده باشند، می‌توان از Memory Dump  این هک‌ها را تحلیل کرد.

 نمونه ی کاربرد عملی این گام (واقعی و کاربردی)

در یک بررسی DFIR :

✔️ مهاجم با PowerShell یک DLL را به LSASS inject کرده بود

Strings ✔️  فایل dump شامل یک URL مخرب بود

thread ✔️های LSASS با Start Address ناشناخته اجرا شده بودند

✔️ همین یافته‌ها مسیر تحلیل را کاملاً تغییر داد و منشأ حمله افشا شد

این نشان می‌دهد که این گام یکی از کلیدی‌ترین مراحل تحلیل حافظه است.

🔷 گام ۷: اسکن حافظه با YaraScan (شناسایی رشته‌ها و Indicators)

پس از شناسایی پردازش‌ها و استخراج شواهد حساس، گام بعدی یافتن الگوها و امضاهای شناخته‌شده در حافظه است. در این مرحله از YaraScan در Rekall استفاده می‌کنیم. YaraScan  به شما اجازه می‌دهد که رشته‌ها، بایت‌کدها یا Rules تعریف‌شده برای بدافزارها را در RAM جست‌وجو کنید.

دستور پایه:

rekall yarascan --string "Microsoft"

توضیح:

✔️ حافظه RAM را اسکن می‌کند و تمام مکان‌هایی که رشته "Microsoft" در آنها وجود دارد نشان می‌دهد.

✔️ خروجی شامل: نام پردازش، PID، Virtual Address، Physical Offset و snippet از داده‌ها است.

کاربردهای عملی:

✔️ یافتن DLLهای inject شده یا کد مخرب

✔️ شناسایی artefactها یا Credentialهای پنهان

✔️ تشخیص رفتار بدافزار یا IOCهای شناخته‌شده

✔️ فیلتر کردن رشته‌ها و داده‌های حساس برای تحلیل دقیق‌تر

نکته:

  • YaraScan در Rekall سریع‌تر و دقیق‌تر از Volatility اجرا می‌شود، مخصوصاً در اسکن صفحات حافظه‌ی inject شده یا packed.
  • می‌توان Rules پیشرفته YARA را نیز بارگذاری کرد تا اسکن بر اساس signatureهای بدافزار انجام شود.

Best Practices  در کار با Rekall

✔️ همیشه روی کپی readonly حافظه کار کنید.

✔️ هش‌گذاری فایل dump قبل و بعد از تحلیل

✔️ ثبت دقیق metadata

✔️ ذخیره تمام خروجی‌ها در قالب log

✔️ انجام cross-check با ابزارهای دیگر (Volatility / pypykatz)

  نتیجه‌گیری

اگرچه Volatility 3 امروز ابزار اصلی Memory Forensics است، اما Rekall  همچنان یکی از سریع‌ترین و دقیق‌ترین ابزارها برای تحلیل برخی ساختارهای حافظه، به‌ویژه نسخه‌های قدیمی ویندوز، باقی‌مانده است. ترکیب این دو ابزار بهترین رویکرد برای یک تحلیل‌گر حرفه‌ای DFIR  محسوب می‌شود:

  • Volatility :  تحلیل عمیق، پلاگین‌های گسترده
  • Rekall : سرعت، پروفایل دقیق، اعتبارسنجی نتایج

 

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