هکر به روشهای مختلفی اقدام به پاک کردن ردپا میکند. اما هکرهای خلاق مواظب ردپای خود در حافظه هم هستند پس میروند دنبال اینکه اونو پاک کنند .
تابع RtlZeroMemory در ویندوز، یک تابع از NTDLL.DLL است که مسئول پاک کردن محتویات یک بخش از حافظه میباشد. هکرها از این تابع برای پاک کردن ردپاهای خود در حافظه استفاده میکنند تا تحلیلگران امنیتی یا ابزارهای فارنزیک نتوانند شواهدی از اجرای بدافزار را پیدا کنند. 🚨 روشهای استفاده از RtlZeroMemory برای پاک کردن ردپا
1️⃣ پاک کردن شواهد پردازش (Process Hollowing / Code Injection) 🔹 هکرها در حملات Process Hollowing یا DLL Injection، بعد از اجرای کد مخرب، از RtlZeroMemory برای پاک کردن بخشهای حساس حافظه استفاده میکنند. 🔹 این روش باعث میشود ابزارهای Memory Dump نتوانند دادههای مربوط به اجرای بدافزار را بازیابی کنند.
📌 مثال کد مخرب: #include <windows.h> #include <winternl.h>
EraseMemory(secretData, sizeof(secretData)); printf("After Erasing: %s\n", secretData); // اطلاعات پاک شده است return 0; }
2️⃣ حذف لاگهای امنیتی در حافظه 🔹 برخی بدافزارها لاگهای ذخیرهشده در حافظه (مثل ETW - Event Tracing for Windows) را شناسایی و پاک میکنند. 🔹 برای این کار، قبل از خاتمه اجرا، مقدار حافظه مرتبط با لاگها را با RtlZeroMemory پاک میکنند. 📌 مثال پاک کردن ساختار لاگها در حافظه: #include <windows.h> #include <evntprov.h>
void ClearETWLogs(PEVENT_TRACE_LOGFILE logFile) { RtlZeroMemory(logFile, sizeof(EVENT_TRACE_LOGFILE)); } 3️⃣ پنهانسازی کلیدهای رمزگذاری شده در حافظه 🔹 بدافزارها اطلاعاتی مثل کلیدهای رمزنگاری یا توکنهای احراز هویت را در حافظه ذخیره میکنند. 🔹 برای جلوگیری از بازیابی این دادهها با ابزارهای Memory Forensics، بعد از استفاده، مقدارشان را با RtlZeroMemory پاک میکنند. 📌 مثال حذف کلید رمزگذاری از حافظه: void SecureDelete(char* key, size_t length) { RtlZeroMemory(key, length); }
🔰 روشهای مقابله با RtlZeroMemory در تحلیل امنیتی
✅ 1. استفاده از Memory Dump قبل از پاک شدن حافظه 🔹 ابزارهایی مثل WinDbg, Volatility و Rekall میتوانند قبل از حذف حافظه، آن را تحلیل کنند. 🔹 راهکار: اجرای Volatility برای بررسی پردازشهای Hollowed یا Injecte ✅ 2. استفاده از SIEM برای لاگبرداری از API Calls 🔹 ابزارهایی مثل Splunk, ELK به کمک Sysmon میتوانند فراخوانی توابع مشکوک را لاگ کنند. 🔹 راهکار: ایجاد یک قانون Sysmon برای شناسایی استفاده از RtlZeroMemory ✅ 3. جلوگیری از Process Injection با EDR/XDR 🔹 بسیاری از EDRها مانند CrowdStrike, SentinelOne, و Microsoft Defender قابلیت شناسایی پردازشهای مشکوک را دارند. ✅ 4. بررسی رفتارهای مشکوک در حافظه 🔹 میتوان از ابزارهای Memory Monitoring مثل MemProcFS یا KAPE برای بررسی تغییرات مشکوک در حافظه استفاده کرد. 🔹 راهکار: مانیتورینگ تغییرات رجیستری و حافظه برای شناسایی پاک شدن دادهها.