فناوری eBPF (extended Berkeley Packet Filter) سالهاست که به عنوان یکی از تحسینشدهترین قابلیتهای هسته (Kernel) لینوکس شناخته میشود. این ابزار به توسعهدهندگان اجازه میدهد تا برنامههای ایزوله شده (Sandboxed) را بدون نیاز به نوشتن ماژولهای هسته، مستقیماً در محیط Kernel اجرا کنند و از نظارت بر شبکه تا ابزارهای امنیتی را پشتیبانی نماید.
تغییر پارادایم در طراحی روتکیتها
همان قابلیتهایی که برای مدافعان جذاب است، میتواند به سلاحی قدرتمند در دست مهاجمان تبدیل شود. تحلیلهای اخیر نشان میدهد که در انجمنهای زیرزمینی، کدهای مربوط به روتکیتهای eBPF و آموزشهای گامبهگام برای پیادهسازی آنها به اشتراک گذاشته شده است.
روتکیتهای سنتی لینوکس معمولاً بر ماژولهای قابل بارگذاری هسته (LKM) برای قلاب کردن (Hooking) فراخوانهای سیستمی و پنهان کردن فعالیتهای مخرب تکیه میکنند. این روش برای مدافعان شناخته شده است و اکثر راهکارهای EDR بارگذاری ماژولهای مشکوک را رصد میکنند. اما eBPF متفاوت عمل میکند.
- عدم نیاز به LKM: بدافزارهای eBPF بدون بارگذاری ماژول هسته اجرا میشوند، بنابراین بررسیهای روتینی مانند دستور
lsmodنمیتوانند آنها را شناسایی کنند. - دسترسی گسترده: این بدافزارها میتوانند توابع هسته را قلاب کنند، فراخوانهای سیستمی را مشاهده کرده و ترافیک شبکه را از طریق رابط
bpf()تغییر دهند.
بررسی نمونههای عملی و حملات
تکامل این تهدیدات را میتوان در چندین نمونه مشاهده کرد:
- BPFDoor: یک بکدور غیرفعال (Passive) که توسط عامل تهدید چینی (Red Menshen) استفاده شد. این بدافزار از فیلترهای سوکت BPF برای شناسایی بستههای خاص TCP، UDP یا ICMP استفاده میکرد تا یک Reverse Shell باز کند.
- Symbiote: این بدافزار از لینکرهای پویا (Dynamic Linker) برای پیشبارگذاری یک کتابخانه مشترک مخرب استفاده میکند تا ترافیک خاصی را از دید ابزارهای Packet Capture پنهان کند.
- LinkPro: این نمونه از برنامههای eBPF برای پنهان کردن فعالیتها در میزبان و فعالسازی بکدور هنگام دریافت بستههای دستکاری شده استفاده کرده است.
سلاحسازی در انجمنهای زیرزمینی
شواهد نشان میدهد که این تکنیکها از مقالات آکادمیک و کنفرانسهای امنیتی به محیطهای عملیاتی مهاجمان منتقل شدهاند. در برخی انجمنهای روسیزبان، آموزشهایی برای ساخت روتکیتهای eBPF منتشر شده که ویژگیهای زیر را دارند:
- فعالسازی ایمپلنت با بستههای TCP SYN با اندازه Window خاص.
- پنهان کردن پروسهها از طریق قلاب کردن تابع
getdents64. - رمزنگاری ترافیک فرمان و کنترل (C2) با استفاده از AES-256-GCM.
- استفاده از XDP برای بازرسی ترافیک HTTP و حذف بستههای مربوط به IPهای شرکتهای آنتیویروس.
همچنین گزارش شده است که برخی مهاجمان از مدلهای هوش مصنوعی مانند Claude برای تولید دستورالعملهای BPF در کدهای اکسپلویت استفاده کردهاند.
راهکارهای مقابله و شناسایی
به دلیل اینکه تهدیدات مبتنی بر eBPF از طریق یک رابط قانونی هسته عمل میکنند، شناسایی آنها دشوار است. برای مقابله با این تهدیدات، اقدامات زیر توصیه میشود:
- حسابرسی منظم: استفاده از دستور
bpftool prog listبرای بررسی برنامههای بارگذاری شده در eBPF. - محدود کردن دسترسی: فعالسازی تنظیم
kernel.unprivileged_bpf_disabled=1و محدود کردن قابلیتهای CAP_BPF و CAP_NET_ADMIN. - رصد بستههای خاص: نظارت بر ترافیک شبکه برای شناسایی «بستههای جادویی» (Magic Packets) که برای فعالسازی بکدورها استفاده میشوند.
- بهروزرسانی سریع: رفع سریع آسیبپذیریهای مربوط به BPF Verifier برای جلوگیری از ارتقای سطح دسترسی (LPE).