كشف الأنظمة والخدمات باستخدام banner-grabbing

تخيل أنك تتصفح موقعاً، أخطأت مرةً في كتابة مسار الصفحة في هذا الموقع، والطبيعي أن تظهر صفحة 404 Page Not Found. ظهرت الصفحة ولكن أسفل الصفحة أخبرك المتصفح أن المخدم هو مخدم Sun! مع أنك كنت تظن أنه Apache (لعلك تستعمل Header Spy أو من Head / HTTP/1.1). في حال كنت مهتماً بالحواسيب فستهتم كيف فعلوا ذلك، ولم؟ إن تغيير عنوان محد الويب ليس بالأمر الصعب، ولا يحتاج أدنى جهد. لكن هل يعني تغييره إخفاء المعلومات عن المخدم والإصدار؟ يبحث هذا المقال في الكشف عن نوع وإصدار المخدمات من هذا النوع، بغض النظر عما تظهره للمستخدم.

الأمن بالغموض لا يعمل

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

ولا ينبغي الاعتماد على نوع كهذا من الغموض، لأنه قابل للكسر بأسهل الطرق، كالهندسة العكسية، أو مزيد من البحث في مواطن أخرى، وسحب العناوين، أو صيغة رد المخدمات فيما يسمى بالـ banner-grabbing من هذا القبيل.

banner-grabbing

في كل رزمة من رزم أي بروتوكول يتقيد المخدم بالمواصفات البروتوكول وإعداداته، لكنه يطلق حريته فيما عدا ذلك، كترتيب بعض المعلومات المسموح بترتيبها، والإغضاء عن رسائل لا يوجب البروتوكول تقديمها، أو تقديم تقديمها.

وهذا النوع من الاختلافات بين المخدمات يقود إلى تحديد نوع المخدم بدقة، بل وإصداره في كثير من الأحيان.

مثال ذلك، رسائل مخدم Apache 2.2.4 لرزمة Head / HTTP/1.0 ترد بالشكل التالي:

1
2
3
4
5
6
7
8
9
HTTP/1.1 200 OK
Date: Mon, 21 Apr 2008 05:38:37 GMT
Server: Apache/2.2.4 (Unix) DAV/2 PHP/5.2.3
Last-Modified: Tue, 15 Apr 2008 16:51:15 GMT
ETag: "341419-93-355f06c0"
Accept-Ranges: bytes
Content-Length: 147
Connection: close
Content-Type: text/html

قارن بالمثال التالي وهو رد Microsoft IIS 5.0 على نفس الطلب HEAD / HTTP/1.0:

1
2
3
4
5
6
7
8
9
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Expires: Tue, 17 Jun 2003 01:41:33 GMT
Date: Mon, 16 Jun 2003 01:41:33 GMT
Content-Type: text/html
Accept-Ranges: bytes
Last-Modified: Wed, 28 May 2003 15:32:21 GMT
ETag: "b0aac0542e25c31:89d"
Content-Length: 7369

لا حظ كيفية الترتيب:

  1. في Apahce الترتيب كان: التاريخ، ثم نوع المخدم، ثم باقي المعلومات.
  2. في IIS الترتيب كان: نوع المخدم، ثم التاريخ بعد خانتين.

في مخدمات أخرى قد يتغير الترتيب أيضاً، كذلك في الإصدارات المختلفة كما في IIS 6.0. ففي حال كان التريب: نوع المخدم أولاً فيمكنك الافتراض أنه ليس Apache. هذه هي الفكرة ببساطة يمكنك أيضاً استخدام PUT / HTTP/1.0 (عملية غير مسموحة) وستكون إجابة Apache:

HTTP/1.1 405 Method Not Allowed

بينما في حال IIS:

1
2
HTTP/1.1 403 Forbidden
GET / ANYTHING/1.0 (خطأ في اسم البروتوكول)

فـ Apache سيحولها إلى

1
2
HTTP/1.1
HTTP/1.1 200 OK

بينما IIS سيفهمها على أنها خطأ

1
2
HTTP/1.1 400 Bad Request
GET / HTTP/3.0 (خطأ في إصدار البروتوكول )

ستكون استجابة Apache على أنه خطأ

HTTP/1.1 400 Bad Request

بينما يقلبه IIS على أنه

1
2
HTTP/1.1
HTTP/1.1 200 OK

وهكذا يمكنك الرجوع إلى وثائق مخدمات الويب، (ووثائق RFC) لمزيد من المعلومات عن رسائل الأخطاء وكيفية استجابة المخدم لكل حدث.

وطبعاً قد تختلف المعلومات لكن ترتيب الحزمة سيكون كما السابق. وهكذا من أجل مخدمات FTP و SMTP وغيرها، فالاختلاف وارد كما مر.

بصمة المخدم

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

كيف تحمي مخدمك؟

أولاً وقبل كل شيء اعتبر نفسك مخترقاً وقد حصل على جميع المعلومات اللازمة:

  • اكتب هذه المعلومات عن مخدمك
  • نوع المخدم وماذا يدعم وأي إصدار.
  • كذلك نوع نظام التشغيل وإصداره وإصدار النواة.
  • كذلك أنواع كل خدمة من الخدمات وإصداراتها HTTP, SMTP, FTP و Cpanel مثلاً.
  • الآن اذهب إلى Google وإلى مواقع أمن المعلومات وابحث عن ثغرات للمعلومات المتوفرة لديك (exploit-db, securityfocus.org, …) إن أغلب المخترقين إنما ينفذون ثغرات لم يكتشفوها ولم يكتبوها أنفسهم.
  • عندما تجد أي ثغرة رقع المنتج أو حدث إلى أصدار أحدث.
  • استخدم وسائل الأمان الأخرى Firewalls, IDS وانتبه إلى الإعدادات.
  • بعد ذلك افعل ما تستطيعه من إخفاء للمعلومات حتى تبطئ الوصول وإن كانت الحماية جيدة.
  • انظر في الوثائق الخاصة بالمخدم ثم:
    • غير نوع المخدم المعطى في عناوين الردود.
    • أعد ترتيب المعلومات المعطاة فيها أيضاً.
    • عدل رسائل الأخطاء.
    • يمكن بنفس الطريقة تقريباً البحث في الخدمات الباقية FTP, SMTP.
  • كما يمكن البحث في نظام التشغيل وإصداره.

ملاحظات أمنية عامة

  • الأمن بالغموض لا يعمل، فلا تعتمد عليه.
  • لا تخبر اللص أنك تملك جهاز إنذار. بعض المواقع في حال أخطأت مثلاً وأدخلت قيمة غير صحيحة يظهر عبارة ”Hacking Attempt“ أو ما شابه، والكثير منهم يكشف أسلوبه بهذه الطريقة. اعمد إلى إعادة توجيه للصفحة نفسها دون أن يشعر المستخدم بطريقة التحليل.
  • لا تضع قضبان حديدية على النوافذ وتترك الباب مفتوح! الكثير من مدراء المواقع والمخدمات يفعل أقصى حماية لمخدمه ويغفل عن الأشياء البسيطة فيترك مثلاً الإعدادات الافتراضية كما هي (مثلاً: user:admin pass: admin, أو يترك حساب sa (Microsoft SQLServer) بدون كلمة سر!). بل يمكن كتابة برنامج صغير لتجربة الخدمات بكلمات المرور الافتراضية.

وصلات مفيدة