السلام عليكم ورحمة الله ,,,
تحدثنا في الدرس السابق عن قواعد إكتشاف الثغرة وعرضنا أبسط مثال في هذا المجال
أما اليوم سنقوم بدراسة شاملة لثغرة أكتشفت في أنظمة التشغيل وندوز NT
وهي الثغرة : Windows Lsasrv.dll RPC buffer overflow Remote
هذة الثغرة من أخطر الثغرات التي أكتشفت في سنة 2004 وبالتحديد في شهر 4
تم صناعة عشرات الفايروسات لهذة الثغرة ومن أهمها (الدودة ساسر Sasser )
ومن لايعرف ساسر ( أسرع فايروس إنتشاراً بين الأجهزة )
بمجرد وصل الجهاز بالإنترنت - يدخل هذا الفايروس إلى جهازك وينفذ مايريد.
وسنتعرف أيضاً على أشكال أخرى لإستغلال الثغرة يستخدمها المخترقين ومن أهمها
الأداة Netcat : الأداة السحرية لصناعة بروتوكولات التحكم والإرسال بطريقة لاتصدق
الأداة Ethereal : أفضل طريقة لمراقبة بروتوكولات الشبكة وكل بايت يكتب أو يقرأ
الأداة cryptcat : أداة تشفير البيانات المرسلة للحفاظ على السرية
ولحسن الحظ أن هذة الأدوات تعمل على كل أنظمة التشغيل !
بالإضافة إلى أننا سنطلع على المجهود الكبير الذي بذل لإكتشاف هذة الثغرة
وسنتعرف على قاعدة مهمة , وهي:
أن إكتشاف الثغرة شيء صعب ومعقد , ولكن إذا إكتشفتها فإن عملية الدخول إلى أي
جهاز وإختراقة - سيتطلب الموضوع كبسة زر فقط - وسترى الأمثلة في هذا الدرس
-----------------------------------
نبدأ بدراسة الثغرة :
برنامج الأمن في أنظمة وندوز NT هو البرنامج lsass.exe هذا البرنامج يكلفة النظام بالعمل فوق طاقتة
من بداية عملية الإقلاع ومروراً بالإتصالات والشبكات والمستخدمين و.و.. ولذلك فإن هذا البرنامج
لة نصيب الأسد من ثغرات النظام ( تقريباً 80 % من تحديثات النظام تخصص للبرنامج lsass.exe )
الثغرة التي سندرسها اليوم توجد في الملف lsasrv.dll هذا الملف من مجموعة ملفات البرنامج lsass.exe
الملف lsasrv.dll هذا الملف مسؤل عن الإتصالات وعمل بعض الخوادم المهمة والبروتوكولات
عندما يشتغل هذا الملف فإنة يقوم بخلق عدة عمليات أو أنابيب pipe عن طريق بعض الدوال مثل CreateNamedPipe
هذة الأنابيب مسؤلة عن نقل البيانات بين العمليات إما في جهاز واحد أو عدة أجهزة على شبكة
إذاً أول معلومة هي : تبادل البيانات بين أجهزة الشبكة يحدث عن طريق مايعرف بالأنابيب
مايهمنا في هذا الموضوع هو الأنبوب LSARPC وإسمة في الذاكرة
\PIPE\LSARPC
المهم في البرنامج lsass.exe وبالتحديد في المكتبة lsasrv.dll وبالتحديد أكثر في العملية lsarpc
تم إيجاد خطأ وهذا الخطأ أدى إلى وجود ثغرة أدت إلى إختراق الأجهزة ودخول الفايروسات
أولاً سنبدأ بدراسة كود أو دالة الخطأ , وبعد ذلك ندرس طريقة إكتشاف وإستغلال الثغرة
بداية الخطأ يوجد في الدالة المصدرة من المكتبة lsasrv.dll إسم الدالة DsRolerDcAsDc
تحتوي هذة الدالة على كود لكتابة ملف نصي في المسار WINDOWS\Debug\DCPROMO.LOG
يتم ترتيب بيانات هذا الملف بواسطة دالة wvsprintfW (في الأنظمة الأجنبية إسم الدالة vsprintf )
في هذة الدالة وجد الخطأ وصنعت الثغرة ,,, كيف ؟؟
لاحظ الصورة :

البارمتر الأول لهذة الدالة يمثل مخزن بيانات buf والبارمتر الثالث يمثل مصدر البيانات
تمكن المخترقين من إيجاد طريقة لتحميل البارمتر3 للدالة بحجم بيانات أكبر من المخزن buf
ممايؤدي إلى خطأ فيض - مشابهة للمثال الذي تحدثنا عنة في الدرس الأول - وبعد ذلك إدخال shellcode
--
إلى هنا يعتبر إكتشاف خطأ وبداية إكتشاف ثغرة ,, ولكن لاتوجد أي فائدة
ولكي نستفيد من هذا الخطأ يجب أن نجمع معلومات تفصيلية عن الخطأ لكي نعرف كيف نستغلة !
نبدأ بالبحث عن مجال الخطأ ,, أولاً الدالة DsRolerDcAsDc هي إحدى دوال مجموعة DS
هذا المختصر يعني خدمات الدليل Directory Service وهي إحدى مكونات الشبكة !
بالتأكيد مبرمجي المواقع والشبكات يعرفون هذا المصطلح : Active Directory
بكل إختصار DS :
عبارة عن قاعدة بيانات لتحديد وتسهيل الوصول إلى الموارد والمصادر المشتركة بين الأجهزة
مثل الطابعة في شبكة محلية تعتبر مصدر - تحديد صفحة أو ملف في موقع على شبكة الإنترنت
ولكي تجرب بعض إستخدامات هذا الدليل : شغل الدوس وقم بكتابة
net view \\199.1.1.1 لكي تعرض الموارد والمصادر المشتركة في الجهاز(الرقم يمثل ip)
ويمكن أن تستخدم أدوات متطورة لمراقبة كل بايت يكتب أو يقرأ , لاحظ الصورة. :

الصورة تمثل برنامج أو أداة Ethereal وهي من أهم الأدوات لمراقبة بروتوكولات الشبكة
لتثبيت الأداة يجب ـ تخزين برنامجين :
http://www.ethereal.com/distribution/win32/WinPcap_2_3.exe
http://www.ethereal.com/distribution/win32...etup-0.10.8.exe
-
نلاحظ في الصورة تبادل البيانات والوصول إلى ds عبر منفذ 445
والسؤال الآن , كيف يتم هذا التبادل وكيف يتم الوصو إلى مصادر الشبكة عن بعد ؟!
شغل برنامج الدوس وإكتب الأمر :
net use \\199.1.1.1\ipc$ "user"
هذا الأمر أو هذا التخطيط يوضح طريقة التبادل وإرسال البيانات
التخطيط يبدأ بعنوان ip و ipc$ يمثل المورد الإداري (خاص بمدراء الشبكة) وبعد ذلك بيانات المستخدم
يتم إرسال هذة المعلومات عبر بروتوكول يسمى SMB إختصار Server Message Blocks
يتم التعامل مع بروتوكول smb عن طريق الرسائل بإستخدام الدالة send
هل جربت يوم إستخدام رسائل أي بروتوكول في البرمجة , مثلاً هل جربت إرسال رسالة إلى بريد
بإستخدام بروتوكول smpt , هل لاحظت طريقة التفاهم مع الخادم عن طريق الرسائل
مثل الرسالة HELO و MAIL FROM: و RCPT TO وغيرها من الأوامر
هل جربت إستخدام بروتوكول ftp وهل رأيت طريقة المخاطبة لكي تحمل أو تخزن ملف.
كل هذة البروتوكولات يتم التعامل معها عن طريق إرسال رسالة أوإرسال طلب وإنتظار الرد
بروتوكول smb يستخدم هذة الرسائل , وتنقسم كل رسالة في هذا البروتوكول إلى 3 أقسام :
معرف الأمر - بارمترات الأمر - معلومات المستخدم
الرسائل في بروتوكول smb مختلفة عن الرسائل في البروتوكولات الأخرى
لأنها قد تعتبر غير مفهومة أو غامضة بالنسبة للمستخدم لأن معرف الأمر عبارة عن رقم بالهكس
وبارمترات الأمر غالبا ماتكون أرقام هكس وحتى معلومات المستخدم , لاحظ هذة الرسالة
00 00 00 DA FF 53 4D 42 73 00 00 00 00 18 07 C8 ...عےSMBs.... ب 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FE ..............ے 00 08 20 00 0C FF 00 DA 00 04 11 0A 00 00 00 00 . ..ے.ع. ..... 00 00 00 57 00 00 00 00 00 D4 00 00 80 9F 00 4E ...W.....ش..€ں.N
ولكن هذة الرسالة لها معنى إذا ما عرفنا أوامر البروتوكول smb والبارمترات
المهم , المراجع لأوامر البروتوكول smb كثيرة وبالأخص مكتبة مايكروسفت msdn
-----
أهم المعلومات التي ذكرت:
توجد الثغرة في بداخل إحدى دوال DS وبالتحديد في دالة النصوص wvsprintfW
يتم فتح منفذ في الجهاز لخدمات الدليل وإدارة الموارد وهو المنفذ 445
يتم تبادل المعلومات الخاصة بالموارد ومشاركة الملفات عبر بروتوكول smb
مانريدة : الدخول إلى الجهاز بإستخدام بروتوكول smb عن طريق المنفذ 445 وننفذ الدالة wvsprintfW
هذا ماسنقوم بة في القسم 2 ,,, تابع










