Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
TripleCross — روتكيت Linux eBPF مع باب خلفي، خادم تحكم وأوامر (C2)، حقن مكتبات، اختطاف تنفيذ، قدرات الثبات والخفاء. | Kitploit
أدوات/GitHubGitHub/h3xduck/triplecross
تصعيد الامتيازاتآليات الاستمراريةالقيادة والسيطرةالتعلم والتعليم
GitHubh3xduck/triplecross

TripleCross

روتكيت Linux eBPF مع باب خلفي، خادم تحكم وأوامر (C2)، حقن مكتبات، اختطاف تنفيذ، قدرات الثبات والخفاء.

عرض المستودع
2.0k243منذ 3 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

TripleCross

License GitHub release (latest by date including pre-releases) Maintainability GitHub last commit

TripleCross هو روتكيت (rootkit) لنظام لينكس يعتمد على تقنية eBPF، ويوضح القدرات الهجومية لهذه التقنية.

تم استلهام TripleCross من تصاميم سابقة في هذا المجال، خاصة أعمال Jeff Dileo في DEFCON 271، و Pat Hogan في DEFCON 292، و Guillaume Fournier و Sylvain Afchain أيضًا في DEFCON 293، و Boopkit لكريس نوفا4. نحن نعيد استخدام ونوسع بعض التقنيات التي ابتكرتها هذه الاستكشافات السابقة للقدرات الهجومية لتقنية eBPF.

تم إنشاء هذا الروتكيت كجزء من مشروع نهاية درجة البكالوريوس في جامعة UC3M. توجد تفاصيل إضافية حول تصميمه في وثيقة الأطروحة.

إخلاء مسؤولية

هذا الروتكيت هو لأغراض تعليمية وأكاديمية بحتة. يتم توفير البرنامج "كما هو" والمؤلفون غير مسؤولين عن أي ضرر أو مشاكل قد تحدث أثناء استخدامه.

لا تحاول استخدام TripleCross لانتهاك القانون. قد يؤدي سوء استخدام البرنامج والمعلومات المقدمة إلى تهم جنائية.

المحتويات

  1. الميزات
  2. نظرة عامة على TripleCross
  3. البناء والتثبيت
  4. وحدة حقن المكتبات
  5. الباب الخلفي وC2
  6. وحدة اختطاف التنفيذ
  7. استمرارية الروتكيت
  8. تخفي الروتكيت
  9. الترخيص

Features

  1. وحدة حقن مكتبات لتنفيذ تعليمات برمجية خبيثة عن طريق الكتابة في الذاكرة الافتراضية لعملية.
  2. وحدة اختطاف تنفيذ تقوم بتعديل البيانات المرسلة إلى النواة لتنفيذ برامج خبيثة.
  3. وحدة رفع صلاحيات محلي تتيح تنفيذ برامج خبيثة بصلاحيات الجذر (root).
  4. باب خلفي مع قدرات C2 يمكنه مراقبة الشبكة وتنفيذ أوامر مرسلة من عميل الروتكيت عن بُعد. يتضمن مشغلات تفعيل متعددة لنقل هذه الإجراءات بشكل متخفي.
  5. عميل الروتكيت يسمح للمهاجم بإنشاء 3 أنواع مختلفة من الاتصالات الشبيهة بالشل (shell) لإرسال الأوامر والإجراءات التي تتحكم في حالة الروتكيت عن بُعد.
  6. وحدة استمرارية تضمن بقاء الروتكيت مثبتًا مع الحفاظ على الصلاحيات الكاملة حتى بعد إعادة التشغيل.
  7. وحدة تخفي تخفي الملفات والدلائل المتعلقة بالروتكيت عن المستخدم.

TripleCross overview

يوضح الشكل التالي بنية TripleCross ووحداته.

مكتبة المقابس الخام RawTCP_Lib المستخدمة في إرسالات الروتكيت هي من تأليفي ولها مستودع خاص بها.

يصف الجدول التالي ملفات وأدلة المصدر الرئيسية لتسهيل التصفح:

Build and Install

المتطلبات

تم اختبار هذا المشروع البحثي في البيئات التالية:

التوزيعةالنواةGCCCLANGGLIBC
الإصدارUbuntu 21.045.11.010.3.012.0.02.33

نوصي باستخدام Ubuntu 21.04، والذي سيتضمن افتراضيًا إصدارات البرامج الموضحة هنا. بخلاف ذلك، تم وصف بعض المشكلات التي قد تواجهها هنا.

التجميع

يتم تجميع الكود المصدري للروتكيت باستخدام ملفي Makefile.```

Build rootkit

cd src make all

Build rootkit client

cd client make

root@kitploit:~
الجدول التالي يصف الغرض من كل ملف Makefile بالتفصيل:

| ملف Makefile  | الأمر | الوصف | الملفات الناتجة |
| ------------- | ------------- | ------------- | ------------- |
| src/client/Makefile  | make  | تجميع عميل الروتكيت | src/client/injector |
| src/Makefile  | make help  | تجميع البرامج لاختبار إمكانيات الروتكيت، والبرنامج الخبيث والمكتبة لوحدتي اختطاف التنفيذ وحقن المكتبة، على التوالي | src/helpers/simple_timer, src/helpers/simple_open, src/helpers/simple_execve, src/helpers/lib_injection.so, src/helpers/execve_hijack |
| src/Makefile | make kit | تجميع الروتكيت باستخدام مكتبة libbpf | src/bin/kit |
| src/Makefile | make tckit | تجميع برنامج الخروج TC للروتكيت | src/bin/tc.o |

### التثبيت
بمجرد إنشاء ملفات الروتكيت داخل src/bin/، يجب تحميل برامج *tc.o* و *kit* بالترتيب. في المثال التالي، سيعمل الباب الخلفي للروتكيت على واجهة الشبكة *enp0s3*:```
// TC egress program
sudo tc qdisc add dev enp0s3 clsact
sudo tc filter add dev enp0s3 egress bpf direct-action obj bin/tc.o sec classifier/egress
// Libbpf-powered rootkit
sudo ./bin/kit -t enp0s3

نصوص سيناريوهات الهجوم

هناك نصان برمجيان، packager.sh و deployer.sh، يقومان بتجميع وتثبيت الروتكيت تلقائيًا، تمامًا كما يفعل المهاجم في سيناريو هجوم حقيقي.

  • تنفيذ packager.sh سيُنتج جميع ملفات الروتكيت داخل دليل apps/.

  • تنفيذ deployer.sh سيُثبّت الروتكيت ويُنشئ ملفات الاستمرارية.

يجب تكوين هذه النصوص أولاً بالمعاملات التالية لضمان عمل وحدة الاستمرارية بشكل صحيح:

النص البرمجيالثابتالوصف
src/helpers/deployer.shCRON_PERSISTمهمة كرون ليتم تنفيذها بعد إعادة التشغيل
src/helpers/deployer.shSUDO_PERSISTإدخال سودو لمنح صلاحيات بدون كلمة مرور

وحدة حقن المكتبات

يمكن للروتكيت اختطاف تنفيذ العمليات التي تستدعي استدعاءات النظام sys_timerfd_settime أو sys_openat. يتم تحقيق ذلك عن طريق الكتابة فوق قسم جدول العناوين العام (GOT) في الذاكرة الافتراضية للعملية التي تقوم بالاستدعاء. يؤدي هذا إلى تنفيذ مكتبة ضارة (src/helpers/injection_lib.c). ستقوم المكتبة بإنشاء شل عكسي إلى آلة المهاجم، ثم تُعيد تدفق التنفيذ إلى الوظيفة الأصلية دون تعطل العملية.

TripleCross مُعدّ لتجاوز تقنيات تحصين ELF الشائعة، بما في ذلك:

  • ASLR
  • Stack canaries
  • DEP/NX
  • PIE
  • Full RELRO

كما أنه مُعدّ للعمل مع كود متوافق مع Intel CET.

يمكن التحقق من وظائف الوحدة باستخدام برنامجين اختباريين src/helpers/simple_timer.c و src/helpers/simple_open.c. بدلاً من ذلك، يمكنك محاولة اختطاف أي عملية نظام (تم اختبارها وتعمل مع systemd).

يتم ضبط تكوين الوحدة عبر الثوابت التالية:

اسم الملف

يمكن استقبال شل عكسي من آلة المهاجم باستخدام netcat:``` nc -nlvp <ATTACKER_PORT>

root@kitploit:~
### تقنية حقن المكتبات عبر اختطاف GOT
تتكون التقنية المدمجة في TripleCross من 5 مراحل:

#### تحديد موقع GOT وعنوان الإرجاع
يقوم الروت كيت بخطف استدعاء النظام باستخدام برنامج تتبع (tracepoint). من هناك، يحدد العنوان في قسم GOT الذي استخدمه كعب PLT لإجراء الاتصال بدالة glibc المسؤولة عن استدعاء النظام.

من أجل الوصول إلى قسم GOT، يستخدم برنامج eBPF عنوان الإرجاع المخزن في المكدس. لاحظ ما يلي:
* يقوم قسم .text بإجراء *call* إلى .plt، لذلك يتم حفظ *rip* كـ *ret* في المكدس.
* يقوم قسم .plt بإجراء *jump* إلى glibc باستخدام .got، لذلك لا يتم حفظ أي *rip* آخر. كما أنه لا يغير أو يحفظ قيمة *rbp*.
* تقوم glibc بإجراء *syscall*، والذي لا يحفظ *rip* في المكدس، بل يحفظه في *rcx*.

<img src="https://assets.kitploit.com/production/public/readmes/5614/d216fa5b7b656bb52587027db28f3e3902fa8389d0b2944a1f7e870d6d2e6bee.jpg" float="left">

لذلك، للتحقق من eBPF أن عنوانًا في المكدس هو عنوان الإرجاع الذي سيقودنا إلى GOT الصحيح، يجب علينا التحقق من أنه عنوان الإرجاع لكعب PLT الذي يستخدم عنوان GOT الذي يقفز إلى دالة glibc التي تقوم باستدعاء النظام الذي اختطفناه من eBPF.

تم دمج تقنيتين للعثور على عنوان الإرجاع:
* مع sys_timerfd_settime، يقوم برنامج eBPF بالمسح للأمام باستخدام وسائط استدعاء النظام.
* مع sys_openat، يقوم برنامج eBPF بمسح البيانات الموجودة في بنية *pt_regs* الخاصة بنقاط التتبع لمسح عنوان الإرجاع.

<img src="https://assets.kitploit.com/production/public/readmes/5614/61217fb3fd84bec65cbbee906dd27860e5e1c211912cfe450ea4cf9051fa480b.png" float="left">

#### تحديد موقع الدوال الرئيسية للشيل كود
يجب إنشاء الشيل كود ديناميكيًا لتجاوز ASLR و PIE، اللذين يغيران عنوان الدوال مثل dlopen() في كل تشغيل للبرنامج.

<img src="https://assets.kitploit.com/production/public/readmes/5614/6cbb620495d8cb9711e499fd5b1ae9ea845c03d0c33019cf008b456a95d5ddd6.png" float="left">

#### حقن الشيل كود في كهف شيفرة (Code Cave)
يمكن العثور على كهف شيفرة عن طريق الهندسة العكسية لملف ELF إذا تم إيقاف ASLR و PIE، ولكن هذا ليس هو الحال عادةً. يقوم برنامج eBPF بإرسال طلب إلى برنامج الروت كيت في مساحة المستخدم الذي يستخدم نظام الملفات /proc لتحديد موقع كهف شيفرة في قسم .text (القابل للتنفيذ) والكتابة فيه.

<img src="https://assets.kitploit.com/production/public/readmes/5614/c7daea0eed684437b5c7d971d0f69f5aac9138861d44da36c5368be9f97666d1.png" float="left">

#### الكتابة فوق قسم GOT
اعتمادًا على ما إذا كان Partial أو Full RELRO نشطًا على الملف القابل للتنفيذ، يقوم برنامج eBPF بالكتابة فوق قسم GOT مباشرة أو باستخدام نظام الملفات /proc.

<img src="https://assets.kitploit.com/production/public/readmes/5614/7e69ec2982ee8c77c39b42f364ab25e52c40d96890f7413b3afe04dde1b825c3.png" float="left">

#### انتظار استدعاء النظام التالي
عندما يتم إصدار استدعاء النظام التالي في البرنامج المخترق، يستخدم قسم PLT قسم GOT المعدل، مما يختطف تدفق التنفيذ الذي يتم إعادة توجيهه إلى الشيل كود في كهف الشيفرة. يتم إعداد الشيل كود لمنع البرنامج من الانهيار، ويستدعي المكتبة الخبيثة (*src/helpers/lib_injection.so*). تقوم هذه المكتبة بإصدار fork() وتوليد شيل عكسي (reverse shell) مع جهاز المهاجم. بعد ذلك، يتم استعادة تدفق التنفيذ.

<img src="https://assets.kitploit.com/production/public/readmes/5614/4e780cbcba855fe11a55f6a34709d83d855a4235960b15b69470233147f04318.png" float="left">

## الباب الخلفي (Backdoor) و C2
يعمل الباب الخلفي فورًا دون الحاجة إلى أي تكوين. يمكن التحكم في الباب الخلفي عن بُعد باستخدام برنامج عميل الروت كيت:

| وسائط العميل | وصف الإجراء |
| ------------- | ------------- |
| ./injector -c \<عنوان IP الضحية\> | إنشاء شيل زائف بنص عادي باستخدام وحدة اختطاف التنفيذ |
| ./injector -e \<عنوان IP الضحية\> | إنشاء شيل زائف مشفر عن طريق إصدار أوامر للباب الخلفي باستخدام مشغل قائم على النمط |
| ./injector -s \<عنوان IP الضحية\> | إنشاء شيل زائف مشفر عن طريق إصدار أوامر للباب الخلفي باستخدام مشغل متعدد الحزم (من كلا النوعين) |
| ./injector -p \<عنوان IP الضحية\> | إنشاء شيل شبح (phantom shell) عن طريق إصدار أوامر للباب الخلفي باستخدام مشغل قائم على النمط |
| ./injector -a \<عنوان IP الضحية\> | أمر للروت كيت بتفعيل جميع برامج eBPF |
| ./injector -u \<عنوان IP الضحية\> | أمر للروت كيت بفصل جميع برامج eBPF الخاصة به |
| ./injector -S \<عنوان IP الضحية\> | عرض توضيحي لكيفية إخفاء الباب الخلفي لرسالة من النواة (PoC بسيط) |
| ./injector -h | عرض المساعدة |

### مشغلات الباب الخلفي

يتم إرسال الإجراءات إلى الباب الخلفي باستخدام مشغلات الباب الخلفي، والتي تشير إلى الباب الخلفي للإجراء الذي سيتم تنفيذه اعتمادًا على قيمة السمة **K3**:

| قيمة K3 | الإجراء |
| ------------- | ------------- |
| 0x1F29 | طلب بدء اتصال شيل زائف مشفر |
| 0x4E14 | طلب بدء اتصال شيل شبح |
| 0x1D25 | طلب تحميل وربط جميع برامج eBPF للروت كيت |
| 0x1D24 | طلب فصل جميع برامج eBPF للروت كيت (باستثناء برنامج الباب الخلفي) |

#### مشغل قائم على النمط
يخفي هذا المشغل الأمر ومعلومات العميل بحيث يمكن التعرف عليه من قبل الباب الخلفي، ولكن في نفس الوقت يبدو عشوائيًا بما يكفي لمشرف الشبكة الخارجي. يعتمد على المشغل المستخدم في الروت كيت NSA المكتشف مؤخرًا [Bvp47](https://www.pangulab.cn/files/The_Bvp47_a_top-tier_backdoor_of_us_nsa_equation_group.en.pdf).

<img src="https://assets.kitploit.com/production/public/readmes/5614/58cec7ee2dbd89b6c7d71d60c006a1a98d7b9165b20bdbe006467a82d5dc30ab.png" float="left">

#### مشغل متعدد الحزم
يتكون هذا المشغل من حزم TCP متعددة حيث يتم إخفاء حمولة الباب الخلفي في رؤوس الحزم. يعتمد هذا التصميم على زرع [Hive](https://wikileaks.org/vault7/document/hive-DevelopersGuide/hive-DevelopersGuide.pdf) التابع لـ CIA والموصوف في تسرب Vault 7. يتم استخدام الحمولة التالية:

<img src="https://assets.kitploit.com/production/public/readmes/5614/45a8348c3d366af4941d9cca845c281fc8c5a565353fc8fe3fb91350f39dd5f8.png" float="left">

ثم يتم حساب XOR المتداول (rolling XOR) على الحمولة أعلاه وتقسيمها إلى أجزاء متعددة، اعتمادًا على الوضع الذي يختاره عميل الروت كيت. يدعم TripleCross الحمولات المخفية في رقم تسلسل TCP:

<img src="https://assets.kitploit.com/production/public/readmes/5614/2b9d7fd46f7133e3eeda694e0b4791fbed2a51616b7d2f14e989a9e0e56af9e2.png" float="left">

وفي منفذ مصدر TCP:

<img src="https://assets.kitploit.com/production/public/readmes/5614/1a6ea6da628a9902eaf55cc3c1549a2ecf26cba211275acdce6bc5491b34140c.png" float="left">

### شيلات الباب الخلفي الزائفة
يمكن للعميل إنشاء شيلات زائفة للروت كيت، وهي اتصال خاص بين الروت كيت وعميله يحاكي برنامج الشيل، مما يمكّن المهاجم من تنفيذ أوامر Linux عن بُعد والحصول على النتائج كما لو كان ينفذها مباشرة في الجهاز المصاب. تم دمج العديد من الشيلات الزائفة في الروت كيت الخاص بنا:

#### شيل زائف بنص عادي
يتم إنشاء هذا الشيل بعد تشغيل ناجح لوحدة اختطاف التنفيذ، والتي ستنفذ ملفًا خبيثًا ينشئ اتصالاً مع عميل الروت كيت على النحو التالي:

<img src="https://assets.kitploit.com/production/public/readmes/5614/6495b5b62c33ae136b8c965658d9c5f501e609029bde7fcefe7266966f8effbb.png" float="left">
<img src="https://assets.kitploit.com/production/public/readmes/5614/5301e208d9853760eabdc14772c57a3639f28d71d050ee82d151bff93a76cedf.png" float="right">

#### شيل زائف مشفر
يمكن طلب شيل زائف مشفر من قبل عميل الروت كيت في أي وقت، ويتكون من اتصال TLS بين الروت كيت وعميل الروت كيت. داخل الاتصال المشفر، يتم اتباع بروتوكول إرسال لتوصيل الأوامر والمعلومات، على غرار الشيلات الزائفة بنص عادي.

يتطلب إنشاء شيل زائف مشفر أن يستمع الباب الخلفي للمشغلات، والتي تقبل إما المشغلات القائمة على النمط أو كلا النوعين من المشغل متعدد الحزم:

<img src="https://assets.kitploit.com/production/public/readmes/5614/d4929247af8895f78522f28c4ac8087e74d76b91320c67e0b37ea841cd8869d0.png" float="left">
<img src="https://assets.kitploit.com/production/public/readmes/5614/6e2a72d04028212a4917397b75b052a4bdf3c0529fb6c5e336b7fc0a06571728.png" float="right">

#### شيل شبح (Phantom shell)
يستخدم شيل الشبح مزيجًا من برامج XDP و TC للتغلب على قيود eBPF على مستوى الشبكة، وتحديدًا عدم قدرته على إنشاء حزم جديدة. لهذا، يقوم الباب الخلفي بتعديل حركة المرور الحالية، واستبدال الحمولة ببيانات إرسال C2. لا يتم فقدان الحزم الأصلية نظرًا لأن إعادة إرسال TCP ترسل الحزمة الأصلية (بدون تعديلات) مرة أخرى بعد وقت قصير.

يوضح البروتوكول التالي حركة المرور أثناء تنفيذ أمر باستخدام شيل شبح:
<img src="https://assets.kitploit.com/production/public/readmes/5614/0aafe6b672757e4e9d37402c72ce14893a8a7f198030b2f2386df631c345d16b.png" float="left">

يتم طلب شيل شبح من قبل عميل الروت كيت الذي يصدر أمرًا لتنفيذه بواسطة الباب الخلفي:

<img src="https://assets.kitploit.com/production/public/readmes/5614/e07dec48ff6a22e708b6d4b0d762473cc6483f065011cd6cdccdac49f12f916b.png" float="left">

بعد أن يرسل الجهاز المصاب أي حزمة TCP، يقوم الباب الخلفي بالكتابة فوقها ويظهر العميل الاستجابة:

<img src="https://assets.kitploit.com/production/public/readmes/5614/19bea585b78a0bb1d52aa7c63ff05a0111551a0cc767732775491641e1dec021.png" float="left">

## وحدة اختطاف التنفيذ
من حيث المبدأ، لا يمكن لبرنامج eBPF بدء تشغيل برنامج بمفرده. توضح هذه الوحدة كيف يمكن للروت كيت الخبيث الاستفادة من البرامج العادية لتنفيذ شيفرة خبيثة في مساحة المستخدم. تحقق هذه الوحدة هدفين:
* تنفيذ برنامج مستخدم خبيث بالاستفادة من تنفيذ برنامج آخر.
* أن يكون شفافًا لمساحة المستخدم، أي إذا اختطفنا تنفيذ برنامج بحيث يتم تشغيل آخر، يجب أيضًا تنفيذ البرنامج الأصلي بأقل تأخير.

تعمل هذه الوحدة عن طريق اختطاف استدعاء النظام sys_execve()، وتعديل وسائطه بحيث يتم تشغيل برنامج خبيث (*src/helpers/execve_hijack.c*). يتم إجراء هذا التعديل بطريقة تمكن البرنامج الخبيث بعد ذلك من تنفيذ البرنامج الأصلي مع الوسائط الأصلية لتجنب إثارة المخاوف في مساحة المستخدم. يلخص الرسم البياني التالي الوظيفة العامة:

<img src="https://assets.kitploit.com/production/public/readmes/5614/601610696506e303f91a7957ec2a3d61f73f7d0e036430a9f67bd80a6f19b2d3.png" float="left">

يتم تعديل وسائط استدعاء sys_execve() الأصلي بطريقة لا يتم فقدان الوسائط الأصلية (باستخدام argv[0]) بحيث يمكن تنفيذ البرنامج الأصلي بعد البرنامج الخبيث:

<img src="https://assets.kitploit.com/production/public/readmes/5614/e483317a3bdac422cdfc49ca92acdcefe624ddceb5b2ed036ccec141c8d1e5e6.png" float="left">

لقد أدرجنا برنامج اختبار عينة (*src/helpers/simple_execve.c*) لاختبار وحدة اختطاف التنفيذ. يمكن للوحدة أيضًا اختطاف أي استدعاء في النظام، اعتمادًا على التكوين:

| اسم الملف | الثابت | الوصف |
| ------------- | ------------- | ------------- |
| src/common/constants.h | PATH_EXECUTION_HIJACK_PROGRAM | موقع البرنامج الخبيث الذي سيتم تنفيذه عند نجاح استدعاء sys_execve |
| src/common/constants.h | EXEC_HIJACK_ACTIVE | إلغاء تنشيط (0) أو تنشيط (1) وحدة اختطاف التنفيذ |
| src/common/constants.h | TASK_COMM_RESTRICT_HIJACK_ACTIVE | اختطاف أي استدعاء sys_execve (0) أو فقط تلك المشار إليها في TASK_COMM_NAME_RESTRICT_HIJACK (1) |
| src/common/constants.h | TASK_COMM_NAME_RESTRICT_HIJACK | اسم البرنامج الذي سيتم اختطاف استدعاءات sys_execve منه |

بعد اختطاف ناجح، ستوقف الوحدة نفسها. سيقوم البرنامج الخبيث *execve_hijack* بالاستماع لطلبات شيل زائف بنص عادي من عميل الروت كيت.

## استمرارية الروت كيت
بعد إعادة تشغيل الجهاز المصاب، سيتم تفريغ جميع برامج eBPF من النواة وسيتم قتل برنامج الروت كيت في مساحة المستخدم. علاوة على ذلك، حتى إذا كان من الممكن تشغيل الروت كيت مرة أخرى تلقائيًا، فإنه لن يتمتع بعد الآن بصلاحيات الجذر اللازمة لربط برامج eBPF مرة أخرى. تهدف وحدة استمرارية الروت كيت إلى معالجة هذين التحديين:
* تنفيذ الروت كيت تلقائيًا وبدون تفاعل المستخدم بعد إعادة تشغيل الجهاز.
* بمجرد أن يكتسب الروت كيت صلاحيات الجذر في المرة الأولى التي يتم تنفيذها على الجهاز، يجب أن يحتفظ بها حتى بعد إعادة التشغيل.

يستخدم TripleCross ملفين سريين، تم إنشاؤهما تحت *cron.d* و *sudoers.d*، لتنفيذ هذه الوظيفة. تضمن هذه الإدخالات تحميل الروت كيت تلقائيًا وبصلاحية كاملة بعد إعادة التشغيل. يتم إنشاء هذه الملفات وإدارتها بواسطة سكربت *deployer.sh*:

<img src="https://assets.kitploit.com/production/public/readmes/5614/88500b779b9ad5ba771803900a8abfffd08f3a6be59518e690534779a4134cf8.png" float="left">
<img src="https://assets.kitploit.com/production/public/readmes/5614/5ae61ed98af6d7c8aa9448fed3de553712ffb5c63e95d98a6f4300ff407bce23.png" float="right">

يحتوي السكربت على ثابتين يجب تكوينهما للمستخدم الذي سيتم إصابته في النظام المستهدف:

| السكربت | الثابت | الوصف |
| ------------- | ------------- | ------------- |
| src/helpers/deployer.sh | CRON_PERSIST | مهمة cron ليتم تنفيذها بعد إعادة التشغيل |
| src/helpers/deployer.sh | SUDO_PERSIST | إدخال sudo لمنح صلاحيات بدون كلمة مرور |

## تمويه الروت كيت
تعتمد وحدة الاستمرارية على إنشاء ملفات إضافية، ولكنها قد يتم اكتشافها في النهاية من قبل مالك النظام أو بعض أدوات البرامج، لذا يوجد خطر في تركها في النظام. بالإضافة إلى ذلك، ستحتاج ملفات الروت كيت إلى التخزين في موقع ما، حيث قد يتم اكتشافها.

مع أخذ ما سبق في الاعتبار، توفر وحدة التمويه الوظائف التالية:
* إخفاء دليل بالكامل عن المستخدم (حتى نتمكن من إخفاء جميع ملفات الروت كيت بداخله).
* إخفاء ملفات محددة في دليل (نحتاج إلى إخفاء ملفات الاستمرارية، لكن لا يمكننا إخفاء أدلة *sudoers.d* أو *cron.d* بالكامل، لأنها تنتمي إلى الأداء الطبيعي للنظام).

يمكن تخصيص الملفات والأدلة التي يخفيها الروت كيت بواسطة ثوابت التكوين التالية:

| اسم الملف | الثابت | الوصف |
| ------------- | ------------- | ------------- |
| src/common/constants.h | SECRET_DIRECTORY_NAME_HIDE | اسم الدليل المراد إخفاؤه |
| src/common/constants.h | SECRET_FILE_PERSISTENCE_NAME | اسم الملف المراد إخفاؤه |

افتراضيًا، سيقوم TripleCross بإخفاء أي ملفات تُسمى "*ebpfbackdoor*" ودليل يُسمى "*SECRETDIR*". يتم تنشيط هذه الوحدة تلقائيًا بعد تثبيت الروت كيت.

تتمثل التقنية المستخدمة لتحقيق هذه الوظيفة في العبث بوسائط استدعاء النظام sys_getdents():

<img src="https://assets.kitploit.com/production/public/readmes/5614/7f928351c1c07e7b6a534846c5374788449e03455191cddf8c7f02af2c885852.png" float="left">

## الترخيص
روت كيت TripleCross وعميل الروت كيت مرخصان بموجب رخصة GPLv3. انظر [LICENSE](https://github.com/h3xduck/TripleCross/blob/master/LICENSE).

مكتبة [RawTCP_Lib](https://github.com/h3xduck/RawTCP_Lib) مرخصة بموجب رخصة MIT.

وثيقة الأطروحة الأصلية والأشكال المضمنة منشورة بموجب [Creative Commons BY-NC-ND 4.0](https://creativecommons.org/licenses/by-nc-nd/4.0/).

Footnotes

  1. J. Dileo. Evil eBPF: إساءات عملية لبيئة تشغيل البايت كود داخل النواة. DEFCON 27. الشرائح ↩

  2. P. Hogan. تشويه الواقع: إنشاء ومواجهة الجيل التالي من روتكيتات لينكس باستخدام eBPF. DEFCON 27. العرض ↩

  3. G. Fournier و S. Afchain. eBPF، ظننت أننا أصدقاء! DEFCON 29. الشرائح ↩

  4. Kris Nóva. Boopkit. github ↩

تنزيل الأداة
الدليلالوصف
docsوثيقة الأطروحة الأصلية
src/clientالكود المصدري لعميل الروتكيت
src/client/libمكتبة RawTCP_Lib المشتركة
src/commonالثوابت والإعدادات للروتكيت. يتضمن أيضًا تنفيذ العناصر المشتركة بين جانب eBPF وجانب مساحة المستخدم للروتكيت، مثل المخزن المؤقت الحلقي (ring buffer)
src/ebpfالكود المصدري لبرامج eBPF المستخدمة من قبل الروتكيت
src/helpersيتضمن برامج لاختبار وظائف عدة وحدات للروتكيت، بالإضافة إلى البرنامج الخبيث والمكتبة المستخدمة في وحدتي اختطاف التنفيذ وحقن المكتبات، على التوالي
src/libbpfيحتوي على مكتبة libbpf المدمجة مع الروتكيت
src/userالكود المصدري لبرامج مساحة المستخدم المستخدمة من قبل الروتكيت
src/vmlinuxرؤوس تحتوي على تعريف لهياكل بيانات النواة (هذه هي الطريقة الموصى بها عند استخدام libbpf)
الثابت
الوصف
src/common/constants.hTASK_COMM_NAME_INJECTION_
TARGET_TIMERFD_SETTIME
اسم العملية المطلوب اختطافها عند استدعاء النظام sys_timerfd_settime
src/common/constants.hTASK_COMM_NAME_INJECTION_
TARGET_OPEN
اسم العملية المطلوب اختطافها عند استدعاء النظام sys_openat
src/helpers/injection_lib.cATTACKER_IP & ATTACKER_PORTعنوان IP ومنفذ آلة المهاجم