
مجموعة من العينات والمواد المتعلقة بحقن العمليات
مجموعة شاملة من تقنيات حقن العمليات لنظام لينكس، تعرض طرقاً مختلفة لحقن الأكواد في العمليات قيد التشغيل. هذه الأمثلة مخصصة للأغراض التعليمية والأبحاث الأمنية وفهم التعامل منخفض المستوى مع عمليات لينكس.
حقن العمليات هو أسلوب يُستخدم لتشغيل كود في سياق عملية أخرى. ورغم ارتباطه غالباً بالبرمجيات الخبيثة، فإن هذه التقنيات مفيدة أيضاً من أجل:
المجلد: ptrace/
طريقة حقن العمليات الكلاسيكية التي تستخدم استدعاء النظام ptrace() لكتابة الشيل كود مباشرةً في ذاكرة عملية ما وإعادة توجيه التنفيذ.
الخصائص الرئيسية:
حالة الاستخدام: فهم التحكم منخفض المستوى في العمليات والحقن المباشر للكود
المجلد: ld_preload/
اعتراض الدوال باستخدام متغير البيئة LD_PRELOAD لتحميل مكتبة خبيثة قبل تحميل أي مكتبات أخرى.
الخصائص الرئيسية:
حالة الاستخدام: ربط الدوال ومراقبة واجهات البرمجة وتعديل السلوك
المجلد: proc_mem/
كتابة مباشرة في الذاكرة من خلال واجهة نظام الملفات /proc/<pid>/mem، مع دمج ptrace للتحكم في العملية.
الخصائص الرئيسية:
حالة الاستخدام: حقن سريع للذاكرة بكميات كبيرة، وتجاوز قيود ptrace التقليدية
المجلد: dlopen_inject/
تقنية متطورة تُجبر عملية قيد التشغيل على تحميل مكتبة مشتركة عبر اختطاف التنفيذ لاستدعاء dlopen().
الخصائص الرئيسية:
حالة الاستخدام: حقن مستمر متقدم، والتلاعب بالمكتبات وقت التشغيل
# Build ptrace injection
cd ptrace && make all
# Build LD_PRELOAD injection
cd ../ld_preload && make all
# Build /proc/mem injection
cd ../proc_mem && make all
# Build dlopen injection
cd ../dlopen_inject && make all
تتبع كل تقنية نمطاً مشابهاً:
ابدأ العملية الضحية:
cd <technique>/victim-process
./sample
لاحظ رقم PID المعروض
نفّذ الحقن:
cd <technique>
sudo ./<injector> <PID> [additional args]
راقب النتائج: افحص مخرجات العملية الضحية بحثاً عن تنفيذ الكود المحقون
راجع ملفات README الفردية للحصول على تعليمات خاصة بكل تقنية.
Yama ptrace_scope: تقييد ptrace على المستخدمين المصرح لهم
echo 1 | sudo tee /proc/sys/kernel/yama/ptrace_scope
SELinux/AppArmor: ضوابط الوصول الإلزامية
المراقبة: استخدم auditd لتسجيل محاولات ptrace وحقن العمليات
auditctl -a exit,always -F arch=b64 -S ptrace
فحص السلامة وقت التشغيل: تحقق دورياً من ذاكرة العمليات
توقيع الكود: تحقق من توقيعات المكتبات
/proc/<pid>/maps بحثاً عن مناطق ذاكرة أو مكتبات غير متوقعةlsof وpmap وأدوات مراقبة العملياتهام: يجب استخدام هذه التقنيات فقط في سياقات مصرّح بها:
هذا المستودع مخصص للأغراض التعليمية والبحثية فقط. المؤلفون غير مسؤولين عن أي إساءة استخدام لهذه التقنيات. احصل دائماً على التصريح المناسب قبل الاختبار على أي نظام.
أخطاء رفض الصلاحية:
sudo/proc/sys/kernel/yama/ptrace_scopeفشل الحقن دون رسائل خطأ:
أخطاء التجزئة (Segmentation faults):
راجع ملفات README الخاصة بكل تقنية للحصول على إرشادات محددة لاستكشاف الأخطاء وإصلاحها.
المساهمات مرحّب بها! إضافات محتملة:
man 2 ptrace - استدعاء نظام تتبع العملياتman 5 proc - توثيق نظام الملفات /procman 3 dlopen - تحميل المكتبات الديناميكيةانظر LICENSE.txt للحصول على التفاصيل.
يُقدَّم هذا البرنامج "كما هو" للأغراض التعليمية. استخدمه بمسؤولية وأخلاقية. احصل دائماً على التصريح المناسب قبل اختبار تقنيات أمنية على أي نظام لا تملكه.
| التقنية | التعقيد | التخفي | الاستمرارية | السرعة | تعمل على عملية قيد التشغيل |
|---|
| ptrace | متوسط | منخفض | لا | متوسطة | نعم |
| LD_PRELOAD | منخفض | منخفض جداً | لا | سريعة | لا |
| /proc/mem | متوسط | منخفض | لا | سريعة | نعم |
| dlopen | عالٍ | متوسط | نعم | متوسطة | نعم |