malware · cryptomining · rootkit · linux · kernel · monero · privilege-escalation · cve-2026-31431 · container-escape

Rootpacket: عُدّة تعدين عملات على Linux تختبئ في النواة

حلّلت Kinryū Labs عُدّة Rootpacket، وهي عُدّة تعدين عملات على Linux تحمل جذر اختراق على مستوى النواة لتزييف استخدام المعالج والذاكرة، وترفع امتيازها إلى root عبر CVE-2026-31431 (خلل في ذاكرة صفحات AF_ALG يهرب أيضاً من الحاويات إلى المضيف)، وتتنكّر كمشغّل تعريف من Intel، وتعطّل الخدمات المكشوفة ذاتها التي يدخل منها عمّال التعدين المنافسون.

بقلم Davis Zheng·

CVE
CVE-2026-31431
CVSS
7.8 (CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)

TLP:CLEAR. أُجيز للنشر العام. هذا تحليل ساكن فقط: لم تُشغَّل أي عيّنة، وكل استنتاج يأتي من استخراج السلاسل، والتفكيك، ومراجعة الشيفرة المصدرية. محفظة مونيرو والتجمّع والبنية التحتية للمهاجم تُنشَر كمؤشرات دفاعية.

ملخص تنفيذي

  • ~45%ما يعرضه top من المعالج بينما يعمل قرب 100%
  • 3آليات استمرارية
  • 7.8CVSS، CVE-2026-31431 (رفع امتياز محلي عبر page-cache في AF_ALG)
  • المضيفroot من حاوية بلا امتياز

‏Rootpacket عُدّة تعدين عملات متعددة المكوّنات على Linux. تجمع جذر اختراق على مستوى النواة للتخفّي، واستغلالاً لرفع الامتياز لـ CVE-2026-31431 في واجهة التشفير AF_ALG في Linux، وعامل تعدين مونيرو XMRig 6.26.0 مُغلَّفاً بـ UPX ومُعاد تسميته إلى xrandom، وبرنامج إزالة منافسين. الشيفرة مكتوبة بمعظمها بالتركية (أسماء المتغيرات، التعليقات، سلاسل الحالة)، ما يشير إلى مشغّل ناطق بالتركية.

تعمل العُدّة بأحد وضعين. في وضع root تحمّل جذر اختراق من نوع وحدة نواة قابلة للتحميل (LKM) متنكّراً باسم intel_uncore_freq_aux، وتثبّته عبر DKMS كي ينجو من ترقيات النواة، وتسجّل خدمة systemd، وتنظّف الجهاز من المنافسين. وحين تعجز عن نيل root، ترتدّ إلى وضع فضاء المستخدم الذي يستمرّ عبر crontab ويشغّل عامل التعدين كعفريت (daemon). يتصل عامل التعدين بـ pool.supportxmr.com:443 عبر stratum+ssl ويعدّن مونيرو بخوارزمية RandomX.

المكوّن الجدير بالتمعّن هو جذر الاختراق. بينما يثبّت عامل التعدين المعالج قرب مئة بالمئة، يعيد جذر الاختراق كتابة /proc/stat بحيث يبلّغ top وhtop عن 40 إلى 50 بالمئة هادئة، ويُذبذب ذلك الرقم باستخدام jiffies كي يبدو الحمل حقيقياً لا ثابتاً عند قيمة واحدة. ويفعل الأمر ذاته بـ /proc/meminfo، ويصفّي قوائم الأدلّة ليخفي عملياته وملفاته.

التقييمات الرئيسية

  • الهدف هو تعدين العملات (ثقة عالية). تحمل العُدّة XMRig 6.26.0، ومحفظة مونيرو مُضمَّنة بالكود، وإعداد تعدين على pool.supportxmr.com، مع إطفاء التبرّع لمطوّر XMRig كي تذهب كل العائدات إلى المشغّل.
  • رفع الامتياز هو CVE-2026-31431 (“Copy Fail”)، كتابة حتمية في ذاكرة الصفحات على مسار algif_aead في AF_ALG في Linux (CVSS 7.8، أُفصح عنها في أبريل 2026). ولأن ذاكرة الصفحات مشتركة على مستوى المضيف كله، فإن الكتابة ذاتها تهرب من الحاوية لتنال root على المضيف، فالحاوية المصابة هي مضيف مخترَق (ثقة عالية).
  • المشغّل أعلى بكثير من طاقم «أسقِط وعدّن» النمطي (ثقة عالية). جذر اختراق LKM مخصّص بخطّافات ftrace، واستمرارية DKMS تعيد البناء تلقائياً للنوى الجديدة، واستغلال page-cache عامل لـ CVE-2026-31431، واستمرارية متعددة الطبقات systemd/DKMS/cron، كلها مستوى هندسي لا يبلغه معظم عمّال تعدين العملات أبداً.
  • المشغّل على الأرجح ناطق بالتركية (ثقة متوسطة). أسماء متغيرات وتعليقات ورسائل حالة بالتركية مثل ROOT ele gecirildi! تسري في العُدّة كلها.
  • صُمّمت Rootpacket لتملك مضيفاً حصرياً وتحتفظ به. يزيل killservice.sh الخاص بها عمّال التعدين المنافسين ثم يعطّل الخدمات المكشوفة للخارج التي يستخدمها عمّال تعدين العملات للوصول الأولي، بما فيها Docker API على 2375/2376، الناقل ذاته الذي وثّقناه في مقال RedTail. هذه الطواقم تتقاتل على الأجهزة المُهيّأة بسوء نفسها.

بنية العُدّة

‏Rootpacket أداة مُسقِطة معيارية. أجزاؤها:

setup.sh         Entry point. Checks privilege level, picks a deployment mode.
getroot          Privilege escalation. Exploits CVE-2026-31431 (AF_ALG) for local root.
xrandom          UPX-packed XMRig 6.26.0, renamed to dodge name-based detection.
kernel/
  stealth.c      LKM rootkit, compiled via DKMS, disguised as an Intel driver.
  install.sh     DKMS persistence engine.
killservice.sh   Competitor elimination and "hardening".
rootpacket.tar.gz  An inner copy of the whole toolkit, packaged for redistribution.

وضع root. يشغّل setup.sh الأمر getroot إن لم يكن بالفعل root، وينسخ xrandom إلى /opt/kernel-kd/، وينشئ خدمة systemd، ويشغّل kernel/install.sh ليجمّع جذر الاختراق ويحمّله عبر DKMS، ويشغّل killservice.sh لإخلاء المنافسة، ويبدأ عامل التعدين كخدمة دائمة.

ارتداد فضاء المستخدم. حين يكون root بعيد المنال، ينسخ setup.sh الأمر xrandom إلى ~/.xrandom/، ويكتب مُشغّلاً بقفل PID، ويثبّت مدخل crontab يُطلَق عند إعادة التشغيل وكل دقيقة، ويبدأ عامل التعدين بـ setsid كي ينجو من الصدفة الأم.

الميزةوضع rootوضع فضاء المستخدم
موقع عامل التعدين/opt/kernel-kd/xrandom~/.xrandom/xrandom
الاستمراريةsystemd (kernel-kd.service)crontab (@reboot + */1 * * * *)
جذر الاختراقنعم (LKM عبر DKMS)لا
قتل المنافسيننعم (killservice.sh)لا
يعمل بصفةroot (systemd)المستخدم الحالي (عفريت setsid)

getroot: CVE-2026-31431، root عبر إفساد ذاكرة الصفحات

getroot ثنائي ELF64 x86-64 مربوط ساكناً وغير مُجرَّد (not stripped)، مبني من getroot.c. يستغلّ CVE-2026-31431 (“Copy Fail”)، خللاً منطقياً في واجهة algif_aead في AF_ALG في نواة Linux أُفصح عنه في 29 أبريل 2026 (CVSS 7.8). يمنح الخلل كتابة حتمية بطول 4 بايت يتحكم فيها المهاجم في ذاكرة صفحات النواة، ويستخدمها getroot ليرقّع ثنائي SUID في الذاكرة ويخرج بصفة root.

الخاصيةالقيمة
النوعELF 64-bit LSB executable، x86-64، مربوط ساكناً، غير مُجرَّد
CVECVE-2026-31431 “Copy Fail” (CVSS 7.8، AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
النظام الفرعيAF_ALG algif_aead، قالب AEAD authencesn(hmac(sha256),cbc(aes))
المتأثرLinux 4.14 إلى 6.19.11 (وصل الخلل في 2017، الإيداع 72548b093ee3)؛ أُصلح في 6.18.22 و6.19.12 و7.0+
الهدف/usr/bin/su — يُرقَّع .text الخاص به في الذاكرة داخل ذاكرة الصفحات
الموثوقيةحتمي، بلا حالة سباق
الاستخدام / الارتداد./getroot <cmd> [args...]؛ إن لم يُصِب الاستغلال، يشغّل الأمر بالامتيازات الحالية على أي حال

الآلية. ترك تحسينٌ في مكانه عام 2017 في شيفرة AEAD صفحاتِ ذاكرة الصفحات التي جرى عليها splice قابعةً في كلٍّ من قائمة المبعثرات المصدر والوجهة. حين يكتب قالب authencesn قيمته المؤقتة ESN بطول 4 بايت عند الإزاحة التي يختارها المهاجم assoclen + cryptlen، تهبط تلك الكتابة داخل صفحة ذاكرة الصفحات لملف يقرأه المستخدم. عندئذ يفشل فحص HMAC ويُرجِع recvmsg() الخطأ EBADMSG، لكن النواة لا تتراجع عن الكتابة أبداً. يحلّل getroot رؤوس ELF لـ /usr/bin/su ليحسب إزاحة ملف نقطة دخوله، ثم يكرّر splicesendmsg (حاملاً البايتات الأربع المراد كتابتها في الـ AAD) ← recvmsg، مرة لكل مقطع 4 بايت من الشِفرة، مرقّعاً /usr/bin/su في ذاكرة الصفحات. ثم ينفّذ execve لـ /usr/bin/su: تحمّل النواة الصفحة المُفسَدة الآن، تعمل الشِفرة بصفة SUID-root، ويؤكّد getroot أن getuid() == 0 قبل تشغيل أمر المشغّل (طابعاً التركية [+] ROOT ele gecirildi!). لا يُمسّ الملف على القرص قط، فلا ترى مراقبةُ سلامة الملفات شيئاً.

الهروب من الحاوية إلى المضيف. ذاكرة صفحات Linux عامة على مستوى المضيف؛ لا تملك الحاويات واحدةً خاصة بها. العملية داخل حاوية بلا امتياز التي تُجري splice على /usr/bin/su الخاص بالمضيف تُفسد النسخة المُخزَّنة للمضيف، فيمنح execve root على المضيف، لا داخل الحاوية فقط. لذا فالحاوية المصابة مضيف مخترَق، ويمضي setup.sh ليحمّل جذر اختراق النواة في المضيف. إيقاف الحاوية وإزالتها لا يكفي؛ يجب إعادة بناء المضيف.

شغّلنا getroot مرة واحدة في جهاز افتراضي معزول (Kali، نواة 6.6.15). نفّذ تسلسل AF_ALG كاملاً لكنه لم ينل root على ذلك البناء وارتدّ إلى تشغيل الأمر بلا امتياز، وهو ما يتوافق مع استغلال يستهدف تخطيطات نواة محددة. لم نشغّل عامل التعدين.

xrandom: عامل التعدين

xrandom نسخة مُعاد تسميتها ومُغلَّفة بـ UPX من XMRig 6.26.0، عامل تعدين مونيرو مفتوح المصدر.

الخاصيةالقيمة
الهوية الحقيقيةXMRig 6.26.0
التغليفUPX 4.2.4 (2.8 ميغابايت مُغلَّفاً، 10.1 ميغابايت بعد فك التغليف)
الخوارزميةRandomX (rx/0)
التجمّعpool.supportxmr.com:443 عبر stratum+ssl
المحفظة46NVDFL6v5STw5Qw4j77PoBSHRTYnHZGZ8WRoGvHmpaMX7ZyhNUP2u24TLV9pNgncz1bZF2Vm8KkaNTzU7SXqrnFUx5zgHQ
مستوى التبرّع0 (تبرّع مطوّر XMRig مُعطَّل)

التعدين عبر المنفذ 443 مع TLS يدع حركة المرور تمتزج للوهلة الأولى بـ HTTPS عادي، رغم أن مصافحة stratum لها بصمة TLS مختلفة لمن ينظر عن قرب.

stealth.c: جذر اختراق النواة

هذا أكثر أجزاء العُدّة تطوّراً. إنه جذر اختراق LKM يستخدم خطْف دوال ftrace لاعتراض دوال النواة ومحو أثر البرمجية الخبيثة، ويتنكّر طوال الوقت كمشغّل عتاد من Intel.

الخاصيةالقيمة
اسم الوحدةintel_uncore_freq_aux
بيانات وصفية مزيّفةMODULE_AUTHOR("Intel Corporation")، MODULE_DESCRIPTION("Intel Uncore Frequency Control Driver")، MODULE_VERSION("1.2.0")
الخطْفftrace عبر kallsyms_lookup_name (يُحلّ عبر kprobe في النوى 5.7 فأحدث)
التحكمsysfs عند /sys/kernel/intel_uncore_freq/ (enabled، cpu_lo، cpu_hi، mem_lo، mem_hi، hide_tag)

ما الذي يخطفه ولماذا:

  • تقنيع المعالج. يخطف show_stat ليعيد كتابة /proc/stat، مزيّفاً الاستخدام بين حدّين قابلين للضبط (40 إلى 50 بالمئة افتراضياً) ويُذبذب بـ jiffies كي يتحرك الرقم كحمل حقيقي لا أن يقبع ثابتاً.
  • تقنيع الذاكرة. يخطف meminfo_proc_show ليعيد كتابة /proc/meminfo، مزيّفاً MemFree وMemAvailable وBuffers وCached وActive وInactive.
  • إخفاء العمليات. يخطف iterate_dir ليصفّي قوائم /proc، مخفياً معرّفات العمليات (PID) التي تطابق أسماؤها مجموعة مُضمَّنة بالكود: stealth، masscan، sshruns، ransomx، cpumask، xrandom، cpm_، kcpm، mask_helper، ftrhook، kintel_aux. ويستطيع المشغّل إضافة أسماء وقت التشغيل عبر /sys/kernel/intel_uncore_freq/hide_tag.
  • إخفاء الملفات. يخفي المسارات المطابقة لـ stealth وcpumask وkintel_aux وintel_uncore_freq_aux، ودليل sysfs نفسه.
  • إخفاء الذات. عند التحميل يزيل نفسه من /proc/modules و/sys/module/ بـ list_del_init، ويحذف كائن sysfs الخاص به، ويزيد عدّاد مراجعه بـ try_module_get كي لا يستطيع rmmod تفريغه.

تلك القائمة المخفية أيضاً دليل: إلى جانب عامل التعدين يخفي masscan وsshruns وransomx، فالمشغّل على الأرجح يشغّل ماسحاً وقد يكون في العُدّة أكثر من مجرد عامل تعدين.

الأثر العملي أن المسؤول الذي يراقب top يرى جهازاً مشغولاً لكنه طبيعي، لا يجد عملية مارقة، ولا يستطيع رؤية وحدة النواة التي تكذب. الدلائل مادية وخارج النطاق: يسخن الجهاز، وتدور المراوح، ويرتفع سحب الطاقة، ولا شيء من ذلك يستطيع جذر الاختراق تزييفه.

الاستمرارية: ثلاث آليات، مقسومة بحسب الوضع

تعتمد استمرارية Rootpacket على الوضع الذي تهبط فيه. في وضع root تُطبّق آليتين تعزّز كلٌّ منهما الأخرى؛ وفي وضع فضاء المستخدم ترتدّ إلى ثالثة.

#الآليةالوضعالتفصيل
1خدمة systemdrootkernel-kd.service، Type=simple، Restart=always، RestartSec=3
2وحدة DKMSrootتثبّت جذر الاختراق تحت /lib/modules/$(uname -r)/extra/؛ ينجو من ترقيات النواة
3crontabuser@reboot بالإضافة إلى كل دقيقة (* * * * *)، بقفل PID وsetsid

مدخل DKMS هو العنيد: يثبّت جذر الاختراق عبر نظام بناء وحدات النواة نفسه، فترقية نواة روتينية تعيد بناءه وتسليحه بدل إزالته.

killservice.sh: إخلاء الجهاز وإغلاقه

يسمّي البرنامج نفسه “cryptojacker hardening” (“تحصين عامل تعدين العملات”) في لافتته، وذلك الوصف دقيق من وجهة نظر المشغّل. يعمل في ثلاث مراحل.

المرحلة 1: إطفاء الخدمات المكشوفة. يستهدف خدمات تنصت على 0.0.0.0 وهي نقاط دخول شائعة لتعدين العملات، موقِفاً ومعطِّلاً ومُقنِّعاً كلاً منها، وضابطاً chmod 000 على الثنائيات، ومضيفاً قواعد DROP في iptables:

الخدمةالمنفذ
Redis6379
Docker2375/2376
PostgreSQL5432
MongoDB27017
Elasticsearch9200/9300
Memcached11211
Hadoop YARN8088
Jenkins8080
Confluence8090

سطر Docker هو النسيج الرابط بـ تقرير RedTail لدينا: تغلق Rootpacket بالضبط باب 2375/2376 الذي يدخل منه RedTail. المشغّل الذي يهبط أولاً يعدّن على المضيف ثم يقفل الباب أمام الطاقم التالي، محصّناً الجهاز ضد التقنيات التي كانوا سيستخدمونها.

المرحلة 2: إزالة عمّال التعدين المنافسين. يقتل العمليات، ويحذف الملفات، وينظّف مهام cron، ويطهّر مفاتيح SSH المرتبطة بعائلات تعدين عملات معروفة، منها XMRig وKinsing (kdevtmpfsi) وTeamTNT (tntrecht، mdrfckr) وsustes وwatchdogs وminerd، إضافة إلى ماسحات مثل masscan وpnscan وzgrab.

المرحلة 3: إزالة جذور اختراق فضاء المستخدم. ينتزع مدخلات LD_PRELOAD الخبيثة المعروفة (libprocesshider.so، libjdk.so، libpamx.so، وlibselinux.so.3 مزيّف، وxhide) من /etc/ld.so.preload ويحذف المكتبات، مخلياً جذور اختراق فضاء المستخدم للمنافسين التي قد تتداخل مع جذره.

العزو

أسماء المتغيرات والتعليقات وسلاسل الحالة التركية في العُدّة (مثل ROOT ele gecirildi!، “تمّ الاستيلاء على root”) تشير بثقة متوسطة إلى مشغّل ناطق بالتركية. وجدنا رابط توزيع أو تحضير على linuxutil5.pages[.]dev، مُستضافاً على Cloudflare Pages، وهو ما يناسب نمط تحضير الحمولات على بنية تحتية مجانية وذات سمعة للامتزاج. والـ rootpacket.tar.gz الداخلي، نسخة مكتفية ذاتياً من العُدّة كلها، يمنح المشغّل حزمة جاهزة لدفعها إلى المضيف التالي.

مؤشرات الاختراق

الشبكة

المؤشرالسياق
pool.supportxmr.com / pool.supportxmr.com:443تجمّع تعدين مونيرو الأساسي، stratum+ssl
linuxutil5.pages[.]devتوزيع / تحضير (Cloudflare Pages)
api.xmrig.com، randomx.xmrig.com:443نقاط نهاية API وقياس أداء XMRig
donate.v2.xmrig.com، donate.ssl.xmrig.comتجمّعات تبرّع مطوّر XMRig (موجودة، التبرّع معطَّل)
stratum+ssl:// إلى المنفذ 443حركة تعدين TLS صادرة

محفظة مونيرو: 46NVDFL6v5STw5Qw4j77PoBSHRTYnHZGZ8WRoGvHmpaMX7ZyhNUP2u24TLV9pNgncz1bZF2Vm8KkaNTzU7SXqrnFUx5zgHQ

الملفات (SHA-256)

الملفSHA-256MD5
rootpacket.tar.gz (خارجي)e2d0dab6b29df89d123fe8581047a03ac9b89ae8fa0d1f334b5aefbb93152857
getrootdda96d8a4bcc39dc7679347a4386bf1024152d2ccc46d333725ad0cda855d952
xrandom (مُغلَّف)ec3ef3dce99fa6cbc480f0f0b0c292676afed68704c44396271c7dc6afea2937

‏Build ID: getroot 148d8d902efd93ed892a541972fbcea3a99d05a3، xrandom d7a91225bdd2e3ab67cabded9d7809bcc724401f.

آثار على المضيف

المسارالسياق
/opt/kernel-kd/xrandomثنائي عامل التعدين (وضع root)
~/.xrandom/xrandom، ~/.xrandom/run.shعامل التعدين والمُشغّل (وضع فضاء المستخدم)
/tmp/.xrandom.lockقفل PID (وضع فضاء المستخدم)
/etc/systemd/system/kernel-kd.serviceوحدة systemd خبيثة
/usr/src/intel_uncore_freq_aux-1.2.0/مصدر DKMS لجذر الاختراق
/sys/kernel/intel_uncore_freq/واجهة تحكم جذر الاختراق في sysfs
/lib/modules/*/extra/intel_uncore_freq_aux.koوحدة جذر الاختراق المُجمَّعة

سلوكية

  • عملية باسم xrandom تعمل بصفة root أو المستخدم الحالي.
  • أرقام معالج في /proc/stat لا تتفق مع عدّادات أداء العتاد (perf stat)، أو مع سرعة المراوح وسحب الطاقة.
  • خدمة systemd باسم kernel-kd (مُفعَّلة، Type=simple، Restart=always).
  • مدخل cron موسوم بـ # xrandom-userland-autostart.
  • وحدة نواة intel_uncore_freq_aux تُحمَّل عند الإقلاع لكنها غائبة عن lsmod.

الكشف

إذا لم يكن جذر الاختراق محمّلاً

systemctl status kernel-kd.service
ls -la /opt/kernel-kd/ ~/.xrandom/
dkms status | grep intel_uncore_freq
crontab -l | grep xrandom
lsmod | grep intel_uncore

إذا كان جذر الاختراق محمّلاً

عروض فضاء المستخدم مخترَقة، فيجب أن يأتي الكشف من تحت جذر الاختراق أو من جانبه:

  • قارن معالج /proc/stat بعدّادات العتاد عبر perf stat. الفجوة الكبيرة هي الدليل.
  • راقب خطّافات ftrace على show_stat وmeminfo_proc_show وiterate_dir.
  • عامل أي تناقض بين المعالج المُبلَّغ عنه والطاقة أو الحرارة أو سرعة المراوح الحقيقية كإشارة قوية.

اصطياد رفع الامتياز

  • مقبس AF_ALG، SOCK_SEQPACKET تفتحه عملية ليست أداة تشفير معروفة (cryptsetup، openssl، gpg، systemd-cryptsetup) هو الدليل الأساسي. الترتيب الكامل هو socket(AF_ALG)bindsetsockopt(SOL_ALG)acceptpipesplicesendmsgsplicerecvmsg (متكرّر)، ثم execve(/usr/bin/su).
  • قارن بايتات كل ثنائي SUID على القرص بعرضها في ذاكرة الصفحات. يقرأ sha256sum عبر الذاكرة المؤقتة ويُظهر النسخة المُفسَدة، فاقرأ القرص مباشرةً بـ dd if=<file> iflag=direct واحسب بصمته، ثم قارن. عدم تطابق في ثنائي SUID هو إفساد لذاكرة الصفحات.

قاعدة YARA مرشّحة

rule Rootpacket_Cryptojacker
{
    meta:
        description = "Rootpacket Linux cryptojacking toolkit"
        reference   = "Kinryu Labs CTI 2026-06-16"
    strings:
        $wallet = "46NVDFL6v5STw5Qw4j77PoBSHRTYnHZGZ8WRoGvHmpaMX7ZyhNUP2u24TLV9pNgncz1bZF2Vm8KkaNTzU7SXqrnFUx5zgHQ" ascii
        $svc    = "kernel-kd" ascii
        $cron   = "xrandom-userland-autostart" ascii
        $mod    = "intel_uncore_freq_aux" ascii
    condition:
        $wallet or 2 of ($svc, $cron, $mod)
}

المعالجة

  1. أزل جذر الاختراق من حالة نظيفة معلومة. أقلِع من وسيط حيّ أو وسيط استرداد. احذف /lib/modules/*/extra/intel_uncore_freq_aux.ko* وشغّل dkms remove intel_uncore_freq_aux/1.2.0 --all، ثم احذف /usr/src/intel_uncore_freq_aux-1.2.0/ وأعد بناء initramfs (update-initramfs -u أو dracut -f أو mkinitcpio -P). مدخل DKMS يجب أن يزول وإلا أُعيد بناؤه.
  2. أزل الخدمة: systemctl stop kernel-kd; systemctl disable kernel-kd; rm /etc/systemd/system/kernel-kd.service; systemctl daemon-reload.
  3. أزل عامل التعدين: rm -rf /opt/kernel-kd/ ~/.xrandom/ /tmp/.xrandom.lock، ثم pkill -9 -f xrandom.
  4. نظّف cron من أسطر # xrandom-userland-autostart.
  5. استعد ما كسره killservice.sh. يضبط chmod 000 على Redis وDocker وPostgreSQL وMongoDB وثنائيات أخرى ويضيف قواعد DROP في iptables. أعد تثبيت الحزم المتأثرة وراجع جدار الحماية.
  6. اصطد جانبياً. الـ rootpacket.tar.gz الداخلي مبني لإعادة التوزيع، ففحص مضيفين آخرين بحثاً عن المؤشرات ذاتها، وراجع السجلات بحثاً عن استغلال خدمات killservice.sh لإيجاد طريق الدخول.
  7. أغلق CVE-2026-31431. رقّع إلى نواة مُصلَحة (6.18.22 أو 6.19.12 أو 7.0+ أو النقل الخلفي لتوزيعتك). وحيث لا تستطيع الترقيع دفعةً واحدة، عطّل الواجهة المعرَّضة: echo 'install algif_aead /bin/false' > /etc/modprobe.d/disable-algif-aead.conf ثم rmmod algif_aead. للحاويات، احجب AF_ALG (family 38) في ملف seccomp.
  8. افترض اختراق المضيف من حاوية. لأن كتابة ذاكرة الصفحات تعبر حدّ الحاوية، عامل أي مضيف شغّل setup.sh، ولو من داخل حاوية، كمخترَق بالكامل. أعد بناء المضيف بدل إزالة الحاوية فحسب.

مخطط MITRE ATT&CK

التكتيكالتقنية
Initial AccessT1190 Exploit Public-Facing Application (Redis، Docker، MongoDB، Elasticsearch، Jenkins، Hadoop YARN، ضمنياً)
ExecutionT1059.004 Unix Shell
Privilege EscalationT1068 Exploitation for Privilege Escalation (CVE-2026-31431، AF_ALG algif_aead); T1611 Escape to Host (ذاكرة صفحات مشتركة)
PersistenceT1543.002 Systemd Service; T1053.003 Cron; T1547.006 Kernel Modules (DKMS)
Defense EvasionT1014 Rootkit; T1036.005 Masquerading: Match Legitimate Name; T1027.002 Software Packing (UPX); T1070.004 File Deletion; T1564.001 Hidden Files
DiscoveryT1057 Process Discovery (مطاردة المنافسين)
Lateral MovementT1570 Lateral Tool Transfer (حزمة إعادة توزيع داخلية)
ImpactT1496 Resource Hijacking (تعدين مونيرو)

المنهجية وملاحظات المحلل

  • كان التحليل ساكناً بمعظمه (استخراج السلاسل، التفكيك، مراجعة الشيفرة المصدرية، التحليل البنيوي) على Kali Linux x86-64. كما شغّلنا getroot مرة واحدة في جهاز افتراضي معزول (نواة 6.6.15) لمراقبة سلوكه: حاول تسلسل AF_ALG، لم ينل root على ذلك البناء، وارتدّ إلى تشغيل الأمر بلا امتياز. لم يُشغَّل عامل التعدين، ولم يُرفَع أي شيء.
  • مكوّن رفع الامتياز هو CVE-2026-31431، حُدِّد من قالب authencesn(hmac(sha256),cbc(aes)) المربوط بمقبس AF_ALG، وهدف ذاكرة الصفحات /usr/bin/su، وحلقة الكتابة splice/sendmsg/recvmsg في الثنائي.
  • العيّنات (العُدّة ومكوّناتها) متاحة للباحثين والمدافعين الآخرين عند الطلب. راسل [email protected] مع ملاحظة قصيرة عمّن أنت وما حاجتك إليها.
How to cite
Kinryū Labs (2026). Rootpacket: عُدّة تعدين عملات على Linux تختبئ في النواة. https://kinryu.sh/ar/reports/rootpacket-linux-cryptojacking-rootkit/