عُثر على مجموعة أدوات لينكس غير موثّقة سابقًا مُصرَّفة مباشرة داخل موازِنات أحمال HAProxy المُحوَّرة لدى منظمتين كوريتين جنوبيتين، حيث اعترضت حركة الويب وقدّمت صفحات معدَّلة لزوار مختارين، بحسب تقرير من Rapid7 Labs نقله The Hacker News. سمّى المهاجمون الزرعة ted في سلاسل تنقيح تركوها في الملف.
نسبت Rapid7 الأدوات بثقة متوسطة إلى فاعلين مدعومين من الدولة في كوريا الشمالية، ووضعت الضحيتين في قطاعي السيارات والإعلام في كوريا الجنوبية، مع تحفّظ صريح: «هناك حاجة إلى مزيد من الأدلة لتقييم أكثر حسمًا».
كيف تختبئ من كل شيء؟
طلبات التحكّم لا تصل أبدًا إلى خادم خلفي وتُمحى من عدّادات الاتصال الخاصة بـ HAProxy نفسه، فلا تسجّلها سجلات الخادم الخلفي ولا إحصاءات موازِن الأحمال.
- طلب لمسار صورة محدد يضع المرشّح في وضع التحكّم.
- تُنقص الزرعة عدّادات الاتصالات الحية في HAProxy، فيسقط الاتصال من الإحصاءات.
- تكتب جسم الأمر إلى أنبوب مسمّى تحت
/tmp، ثم تصفّر قناة الطلب فلا يبقى شيء لتمريره — ينتهي الأمر عند موازِن الأحمال. - يعود الخرج على المقبس الخام تحت ترويسة
HTTP/1.0 200 OKقياسية — فيبدو التبادل حركة ويب عادية.
عبر هذه القناة يستطيع المشغّل إرسال إشارات الحياة، ورفع الملفات وتنزيلها، وتنفيذ أوامر الصدفة، واستبدال إعدادات الزرعة.
من يرى الصفحة المعدَّلة؟
فقط الطلبات التي تجتاز أربعة فحوصات: أن تحمل User-Agent، وأن تطابق قاعدة تناسب نمطي URL وReferer معًا، ثم إما عضوية في قائمة بيضاء لعنوان العميل (تُفحص بدقة ثم على مستوى /24)، أو مفتاح مشغّل في ترويسة Accept-Language يتجاوز ترشيح العناوين كليًا.
في الطريق إلى الخارج تعيد الزرعة كتابة نوع المحتوى وطوله، وتفرض حالة 200، وتحذف ترويسة Accept-Ranges حتى لا يستطيع العميل طلب نطاقات بايت ويلاحظ تغيّر الحجم. تفاصيل تكشف مهاجمًا يفهم HTTP جيدًا.
بقية المجموعة: crond وsshd وRAT
يُنشر المُثبِّت فقط حيث يعمل HAProxy أو cron أصلًا، ويتحقق من صلاحيات root قبل أن يُسقط شيئًا. يستبدل ملف crond الشرعي ويمنح البديل طابع إنشاء /usr/bin/ssh الزمني، ثم يمسح الكلمات tmp وwget وcron وcrond من سجل bash الخاص بـ root ومن ستة سجلات نظام بينها auth.log وaudit/audit.log.
- sshd مُحوَّر يشفّر كلمات المرور الملتقطة بنص واضح ويكتبها إلى مسار ثابت.
- الشفرة نفسها وُجدت في ملفات agetty وatd وpolkitd مُحوَّرة.
- curlRAT: حصان طروادة مرافق يرسل إشارة كل 12 ساعة افتراضيًا وينزل إلى 30 ثانية عند رفع علم، ويتوقف ما لم يجد ملف علامة يثبت أن المضيف افتراضي. (مختلف عن CurlBack RAT المنسوب إلى SideCopy الباكستانية.)
كيف دخلوا؟ لا أحد يعرف بعد
قالت Rapid7 إن أدلتها لا تكفي لبناء جدول زمني أو تحديد نقطة الدخول الأولى. فرضيتها — بوابة Groupware مكشوفة (فئة من برمجيات التعاون المؤسسي الكورية) — تستند إلى بحث سابق من ENKI وثّق اختراق Kimsuky لمورّد groupware عبر ثغرة في خادم بريد.
النسب: ثلاث مجموعات في مقطع واحد
يستحق مقطع النسب قراءة متأنية. جزء منه يقوم على إدراج النطاقات تحت APT37 في مشروع maltrail مفتوح المصدر — وملف maltrail ينسب تلك الإدخالات إلى منشورين على X من يوليو 2025 لا إلى Rapid7. ونموذج التسليم يُقارَن بحملة Operation SyncHole المنسوبة إلى Lazarus، وفرضية الدخول تستدعي Kimsuky. ثلاث مجموعات كورية شمالية مختلفة في تقييم واحد؛ وقد سجّلت Mandiant في 2023 تشارك الأدوات وتداخل الاستهداف بينها محذّرةً: «نعتقد أن هذا سيجعل النسب الدقيق أصعب».
مؤشرات الاختراق
| domain | img[.]monderhouse[[.]]space | |
| domain | img[.]smartnords[[.]]site | |
| domain | img[.]darklights[[.]]store | |
| domain | img[.]responsive[.]pstatic[[.]]autos | ينتحل نطاق CDN كوري شائع |
| domain | img[.]socialteams[[.]]store | |
| domain | img[.]worksongo[[.]]store | |
| filename | ~/cache/haproxy-1000.cache | |
| filename | /var/lib/sshd/c8c68e629bba773a10ac80012d10bf19 | كلمات المرور الملتقطة |
| filename | /var/lib/snapd/g580 | |
| filename | /tmp/jasper-log | |
| sha256 | 72e70936f0dbe459142a1d867617c35f8d0cce5d18c6a49e1090a2a5adc8e558 | |
| sha256 | 4bb923eb040aa13ca8fd409c31ee4729c60ddff32e350efe1c5a4a9168a065f5 |
الروابط والعناوين معطَّلة (defanged) للحماية
أكد The Hacker News في 4 سبتمبر أن النطاقات الستة كلها تعيد NXDOMAIN. وثمة ستة نطاقات أخرى في إدخالات maltrail نفسها لم تُدرجها Rapid7 (primgs[.]lol وgrip-cdns[.]space وcleanos[.]online ونطاقاتها الفرعية)؛ لم تقل الشركة إن كانت البنية نفسها.
كيف تكتشف زرعة تعيش في موازِن الأحمال؟
- تحقق من سلامة الملفات التنفيذية للنظام: قارن بصمة
haproxyوcrondوsshdوagettyوatdوpolkitdبحزم التوزيعة (rpm -Vأوdebsums). أي ملف نظام لا يطابق حزمته يستحق تحقيقًا فوريًا. - طوابع زمنية مزوّرة: ملف
crondيحمل تاريخ إنشاء/usr/bin/sshنفسه — قارنstatعبر ملفات/usr/sbin. - فجوات في السجلات: غياب مفاجئ لكلمات wget أو tmp من سجل bash وسجلات التدقيق علامة على التنظيف لا على النظافة.
- أنابيب مسمّاة غريبة تحت
/tmpمملوكة لعملية HAProxy. - تناقض العدّادات: فرق بين عدد الاتصالات في إحصاءات HAProxy وما تراه على مستوى الشبكة (conntrack أو مجسّ حركة).
- ردود 200 على مسارات صور غير موجودة في الخادم الخلفي، وترويسات استجابة بلا
Accept-Rangesحيث يفترض وجودها.





