در مقاله قبلی درباره آموزش کامل فارنزیک حافظه با 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 : سرعت، پروفایل دقیق، اعتبارسنجی نتایج


