Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
webshell-analyzer — ماسح ومحلل ويب شيل. | Kitploit
أدوات/GitHubGitHub/tstillz/webshell-analyzer
التحليل الثابتماسحات الثغرات الأمنيةالتحقيق الجنائي الرقميأمن الويبتحليل البرمجيات الخبيثة
GitHubtstillz/webshell-analyzer

webshell-analyzer

ماسح ومحلل ويب شيل.

عرض المستودع
11326منذ 3 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

محلل شل الويب

محلل شل الويب هو ملف ثنائي مستقل ومتعدد المنصات تم بناؤه لغرض وحيد هو تحديد وفك تشفير ووسم الملفات المشتبه بأنها شل ويب. محلل شل الويب هو الإصدار الأكبر لمشروع ماسح شل الويب (http://github.com/tstillz/webshell-scan)، الذي يقوم فقط بمسح الملفات عبر التعبيرات النمطية، دون فك تشفير أو تحليل سمات.

إخلاء مسؤولية

التعبيرات النمطية وروتينات فك التشفير المضمنة المقدمة مع الماسح ليست مضمونة للعثور على كل شل ويب على القرص وقد تُحدد بعض النتائج الإيجابية الخاطئة. يُوصى أيضًا باختبار المحلل وتقييم تأثيره قبل تشغيله على أنظمة الإنتاج. المحلل ليس له ضمان، استخدمه على مسؤوليتك الخاصة.

الميزات

  • ملف ثنائي متعدد المنصات ومُجمّع بشكل ثابت.
  • مخرجات بصيغة JSON
  • يدعم حاليًا معظم شل الويب من نوع PHP, ASP/X. أنواع JSP/X, CFM وغيرها قيد التطوير.
  • مسح متكرر ومتعدد الخيوط قادر على التنقل عبر الأدلة المتداخلة بسرعة
  • القدرة على التعامل مع طبقات متعددة من شل الويب المشفر مثل base64, gzinflate و char code.
  • يدعم إجراءات PRE/POST التي تدعم طبقات فك التشفير وفك الترميز لمحرك التحليل
  • منطق تعبيرات نمطية قابل للضبط مع واجهات نمطية لتوسيع قدرات المحلل بسهولة
  • وسم سمات قابل للضبط
  • التقاط محتويات خام عند المطابقة
  • معلومات النظام
  • تم اختباره مقابل مستودع شل الويب: https://github.com/tennc/webshell

إجراءات PRE/POST

يمكن تمرير كل ملف يتم مسحه عبر إجراءات PRE و/أو POST:

  • فك الترميز المسبق (PRE-Decoding): وظائف تُستدعى قبل إجراء المطابقة، مثل فك تشفير base64 أو استبدال السلاسل النصية.
  • فك الترميز اللاحق (POST-Decoding): وظائف تُستدعى بعد إجراء المطابقة، مثل تعطيل روابط URL.

الفكرة من وراء وظائف PreDecodeActions كانت استخدام التعبيرات النمطية لتحديد سلسلة أو نمط مطابق، والحصول على محتويات المطابقة الخام، وتنفيذ خطوات فك التشفير/التنظيف المعرفة، وإرسال المخرجات النهائية مرة أخرى إلى محرك التحليل لإعادة المسح/المعالجة. مثال بسيط جدًا على ذلك هو فك تشفير Base64. للتحقق من وجود أي منطق كشف ضد شل ويب مشفر بـ base64، يجب أولاً إزالة أي/جميع طبقات base64. للقيام بذلك، يمكننا استخدام إجراء PreDecodeAction التالي:

root@kitploit:~
{
    Name:        "PHP_Base64Decode",
    Regex:       *regexp.MustCompile(`(?i)(?:=|\s+)(base64_decode\('('?\"?[A-Za-z0-9+\/=]+'?\"?))`),
    DataCapture: *regexp.MustCompile(`(?i)((?:'|")[A-Za-z0-9+\/=]+(?:'|"))`),
    PreDecodeActions: []cm.Action{
        {Function: cm.StringReplace, Arguments: []interface{}{"\"", "", -1}},
        {Function: cm.StringReplace, Arguments: []interface{}{"'", "", -1}},
    },
    Functions: []cm.Base_Func{cm.DecodeBase64},
},

بالنظر إلى الكتلة أعلاه، لدينا أولاً اسم الوظيفة، والتعبير النمطي المستخدم للمطابقة، وتعبير نمطي لالتقاط البيانات (قد ترغب أحيانًا في تعديل ما يجب التقاطه مقابل ما يطابق) و PreDecodeActions. في هذه الحالة، قبل تطبيق الوظيفة cm.DecodeBase64 على النص المطابق، سيقوم النظام أولاً بإزالة العناصر التالية " و '. تعمل PostDecodeActions بالعكس، حيث يتم فحص المخرجات بعد إجراء فك الترميز. باستخدام هذا النموذج، يمكننا عمل أجهزة فك ترميز مخصصة متعددة تحتوي على وظائف PRE/POST وفك ترميز لا نهائية للتعامل مع معظم احتياجات تحليل شل الويب.

الاكتشافات

الاكتشاف هو تعبير نمطي مصحوب باسم ووصف. الفكرة من وراء هذا النموذج كانت جعل الاكتشافات نمطية وقابلة للتوسع مع الحفاظ على السياق مع الاكتشاف الفعلي. تشارك الاكتشافات نفس تنسيق السمات، فيما عدا أن السمات لا يمكنها توليد اكتشاف، بل يمكنها فقط إضافة سياق إلى اكتشاف موجود. لنلق نظرة على كتلة منطق الكشف المثال أدناه:

root@kitploit:~
{
    Name:        "Generic_Embedded_Executable",
    Description: "Looks for magic bytes associated with a PE file",
    Regex:       *regexp.MustCompile(`(?i)(?:(?:0x)?4d5a)`),
},

بناءً على التعبير النمطي، يمكننا رؤية أنه يبحث عن ملف PE ويندوز مضمن بناءً على بايتات الرأس السحرية 4D 5A. إذا تم العثور عليه، سيؤدي ذلك إلى اكتشاف وسيتم إنشاء تقرير JSON للملف. حاليًا، يتم تطبيق الاكتشافات بناءً على امتداد الملف أو بشكل عام لجميع أنواع الملفات. على سبيل المثال، يتم تعريف روتينات فك الترميز لـ PHP تحت cm.GlobalMap.Function_Php والوسوم للسمات تحت cm.GlobalMap.Tags_Php. تنطبق الوظائف cm.GlobalMap.Function_Generics والوسوم تحت cm.GlobalMap.Tags_Generics على جميع امتدادات شل الويب كأداة شاملة.

السمات

وسم السمات هو مفهوم جديد أنشأته يضيف "سياقًا" لاكتشاف شل ويب موجود. السمات وحدها لا تستطيع حاليًا توليد اكتشاف بنفسها. في محرك مسح تقليدي، سينبه الماسح فقط إذا تم اكتشاف شل ويب ولكنه لا يوفر سياقًا إضافيًا حول القدرات (السمات) التي قد يمتلكها شل الويب. تعمل وسوم السمات بنفس طريقة منطق الكشف، ولكنها تظهر فقط بعد تحديد اكتشاف ولا يمكنها توليد اكتشافات بنفسها. بالنظر إلى منطق المثال أدناه:

root@kitploit:~
cm.GlobalMap.Tags_Php = []cm.TagDef{
    {
        Name:        "PHP_Database_Operations",
        Description: "Looks for common PHP functions used for interacting with a database.",
        Regex:       *regexp.MustCompile(`(?i)(?:'mssql_connect\|mysql_exec\()`),
        Attribute: 	 true,
    },
}

نرى أنه تحت الهيكل Tags_Php، أنشأنا وسم PHP جديد. عند العثور على تطابق أثناء المسح، يتم التحقق من علامة Attribute وإذا تم تعيينها على True، سيتم إلحاق الوسم PHP_Database_Operations بشل الويب المكتشف في تقرير JSON الخاص به مع التكرار وكتلة النص المطابقة، كما هو موضح في مثال المخرجات أدناه:

root@kitploit:~
{
   "filePath": "/testers/1.php",
   "size": 66109,
   "md5": "6793d8ebab93e5a0f91e5a331221f331",
   "timestamps": {
      "birth": "2019-02-03 02:02:22",
      "created": "2020-07-29 02:50:15",
      "modified": "2019-02-03 02:02:22",
      "accessed": "2020-07-29 02:51:07"
   },
   "matches": {
      "FilesMAn": 5,
      "FilesMan": 29,
      "cmd": 20,
      "eval(": 4,
      "exec(": 2,
      "ipconfig": 1,
      "netstat": 2,
      "passthru(": 1,
      "shell_exec(": 1
   },
   "decodes": {
      "Generic_Base64Decode": 40,
      "Generic_Multiline_Base64Decode": 165
   },
   "tags": {
      "Generic_Embedding_Code_C": {
         "bind(": 2,
         "listen(": 2
      },
      "PHP_Banned_Function": {
         "exec(": 3,
         "get_current_user(": 1,
         "getmyuid(": 1,
         "link(": 7,
         "listen(": 2,
         "passthru(": 1,
         "realpath(": 1,
         "set_time_limit(": 1
      },
      "PHP_Database_Operations": {
         "mysql_query(": 1
      },
      "PHP_Disk_Operations": {
         "@chmod(": 1,
         "@filegroup(": 4,
         "@fileowner(": 4,
         "@rename(": 2,
         "fopen(": 7,
         "fwrite(": 6
      }
   }
}

هذه الوسوم لا تساعد فقط في تحديد ما يمكن أن يفعله شل الويب، بل تساعد أيضًا فرق مثل مستشاري الاستجابة للحوادث (IR) الذين يقومون بمشاركات استجابة حية بتوفير نقطة ارتكاز لمكان البحث المحتمل بعد ذلك.

المتطلبات

لا شيء! ببساطة قم بتنزيل الملف الثنائي لنظام التشغيل الخاص بك، وقدم الدليل الذي ترغب في مسحه (الوسائط الأخرى اختيارية) ودعه يعمل.

تشغيل الملف الثنائي

تشغيل wsa بدون وسائط يُظهر الخيارات التالية:

root@kitploit:~
/Users/beastmode$ ./wsa
Options:
      -dir string
           Directory to scan for web shells
     -pretty
           If set to true, the analyzer will output the results in a json indented form
     -raw_contents
           If a match is found, grab the raw contents and base64 + gzip compress the file into the JSON object.
     -size int
           Specify max file size to scan (default is 10 MB) (default 10)
     -verbose
           If set to true, the analyzer will print all files analyzer, not just matches

الوسيطة المطلوبة الوحيدة هي dir. يمكنك تجاوز الإعدادات الافتراضية الأخرى للبرنامج إذا كنت ترغب.

سيتم كتابة مخرجات المحلل إلى وحدة التحكم (المخرجات القياسية). مثال أدناه (للحصول على أفضل النتائج، أرسل stdout إلى ملف json وقم بالمراجعة/المعالجة اللاحقة دون اتصال):

root@kitploit:~
Linux: ./wsa -dir /opt/www
Windows: wsa.exe -dir C:\Windows\Inetput\wwwroot

### مع STDOUT ومحتوى شل الويب الكامل مشفرًا ومضغوطًا:
Linux: ./wsa -dir /opt/www -raw_contents=true > scan_results.json

بمجرد أن ينهي المحلل عمله، سيخرج إجمالي مقاييس المسح إلى STDOUT، كما هو موضح في المثال أدناه:

{"scanned":311,"matches":122,"noMatches":189,"directory":"/webshell-master/php","scanDuration":1.4757737378333333,"systemInfo":{"hostname":"Beast","envVars":[""],"username":"beastmode","userID":"501","realName":"The Beast","userHomeDir":"/Users/beastmode"}}

تنزيل الأداة