شکار بد افزار از طریق کانالهای جانبی (Side-Channel Analysis): وقتی بدافزار سکوت میکند
روزبه نوروزی
هوشمندانهترین بدافزارها میدانند که هرگونه فعالیت شبکهای یا تغییر در فایل سیستم، ردپایی از خود به جای میگذارد. بنابراین، ممکن است برای مدتی طولانی کاملاً غیرفعال بمانند تا زمانی که یک شرط بسیار خاص (مثلاً اتصال یک USB با شماره سریال مشخص) محقق شود. چطور میتوان چنین بدافزار خفتهای را تحلیل کرد؟ رویکرد من: ما به آنچه بدافزار “انجام میدهد” نگاه نمیکنیم، بلکه به “اثرات جانبی وجودش” نگاه میکنیم.
تحلیل حافظه نهان پردازنده (CPU Cache Analysis): تکنیکهایی مانند Flush+Reload به ما اجازه میدهند بفهمیم که آیا یک بخش خاص از کد (مثلاً یک تابع در یک DLL سیستمی) توسط یک پروسه دیگر اجرا شده است یا خیر، بدون اینکه نیازی به دیباگ کردن آن پروسه داشته باشیم. سناریو: ما به یک تابع رمزنگاری در crypt32.dll مشکوک هستیم. ابتدا خطوط کش مربوط به آن تابع را از حافظه نهان CPU پاک میکنیم (Flush). سپس منتظر میمانیم. بعد از مدتی، دوباره زمان دسترسی به آن خطوط را اندازهگیری میکنیم (Reload). اگر زمان دسترسی بسیار کم باشد، یعنی پروسه دیگری (بدافزار ما) آن تابع را فراخوانی کرده و آن را دوباره به کش آورده است! ما بدون هیچ API hooking یا دیباگینگ، متوجه فعالیت پنهانی بدافزار شدیم.