السلام عليكم ورحمة الله ,,,
في البداية إذا لم تظهر الصور,, حمل الموضوع على شكل كتاب.
http://www.arabteam2000.com/files/Code/fil...tpPhbyJSpdf.zip
يعتبر هذا الموضوع مهم لمطوري برامج الشبكات والسيرفرات وبرامج الشات وكل مهتم
بالبرمجة المتقدمة للشبكات وأمن التطبيقات بشكل عام ؟!!!
سندخل ونناقش أكثر من مجال في برمجة الشبكات , وسنتعرف على أدوات مراقبة البيانات
برامج نادرة مثل SockMon و packetMon ..,,, أعتقد أنها لم تعرض من قبل
وسندخل في مواضيع أخرى متقدمة عن البروتوكولات وطريقة التخاطب ونقل الملفات .
وسنبدأ بدراسة أهم البروتوكولات وأكثراها إنتشاراً وهي:
بروتوكول نقل الملفات FTP
بروتوكولات رسائل البريد smpt ,pop3
وأخيراً بروتوكولات وخوادم صفحات الويب http
سنأخذ مقدمة عن طريقة برمجتها وكيفية عملها وفي النهاية أمثلة على أمنها وطرق إختراقها ؟؟!!!
ما أطول عليكم ... نبدأ في الموضوع :
بروتوكول ftp :
من أهم الخدمات الموجودة على الشبكة وهو المسؤل عن نقل الملفات بين الأجهزة
يستخدم المنفذ 21 لنقل البيانات وهو عبارة عن ربط بين برنامجين
أحدهما في جهاز المستخدم والآخر وهو السيرفر ويوجد في الجهاز الرئيسي على الشبكة
ويعتبر بروتوكول ftp من أسهل البروتوكولات من الناحية البرمجة ؟! عبارة عن
إرسال طلب وإستقبال الرد ( الدوال المستخدمة send و recv )
ولكي نفهم عمل هذا البروتوكول علينا بالتطبيق العملي , وسنقوم بإستخدام البرامج التالية
أولاً برنامج العميل أو برنامج المستخدم وهو الطرف الأول لنقل الملفات , وهذا البرنامج موجود في نظام الدوس
من قائمة start ثم run وأكتب ftp
ثانيا برنامج السيرفر , وإخترت في هذا الدرس السيرفر Golden FTP Server Pro
تجدة على الرابط , وحجمة صغير جداً 700 كيلوبايت تقريباً
http://www.sharemation.com/natirus26/Golde...erver-PRO-setup[www.sherman.blogfa.com].exe
بعد تخزين البرنامج قم بتثبيتة وبشكل تلقائي يفتح منفذ للإنصات وهو المنفذ 21
وبهذا نكون قد ثبتنا سيرفر ftp وللتأكد , شاهد المنافذ المستخدمة في الجهاز وتأكد من فتح المنفذ21
كما في الصورة

وبعد أن قمنا بتجهيز سيرفر ال ftp
ننتقل للمرحلة الثانية وهي تثبيت Sockmon ,, دائما عندما تريد تعلم طريقة عمل برنامج
أو قواعد برمجة بروتوكول عليك أن تبدأ بمراقبتة , واليوم سنقوم بإستخدام أداة جديدة في هذا المجال
وهي SockMon5,,, مشكلة هذة الأداة أنها بلغة غير مفهومة ولكنها سهلة الإستخدام
http://www.cnasm.com/upload/down/sockmon50.exe
وبعد ما تزل الأداة وتقوم بالتثبيت ,, أعد تشغيل الجهاز إذا طلب منك .... ثم إنتقل للمرحلة التالية
والآن قم بتشغيل سيرفر ftp وهو Golden FTP Server Pro تجدة في قائمة البرامج
وبعد ذلك شغل الأداة SockMon5وقم بالضغط على بداية المراقبة (أيقونة باللون الأحمر) وبعد ذلك أنزل النافذة
توجة لبرنامج ftp من قائمة start ثم run وأكتب ftp
ويعد مايشتغل البرنامج إتصل في السيرفر , من خلال الأمر
ftp> Open 127.0.0.1 21
وبعد تنفيذ الأمر توجهة مباشرة لنافذة SockMon5
ولاحظ ماذا يجري خلف الكواليس ؟ وكيفية التخاطب بين المستخدم والسيرفر ,,كما في الصورة

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

لاحظ نافذة لأهم المعلومات وخاصة لمبرمجي الإسمبلي.. مثل قيمة إرجاع الدالة وعنوان مخزن البيانات والحجم
والثريد ورقم العملية ,,, تعتبر مهمة جداً و مكملة لعمل برنامج olly كما سترى في نهاية الدرس
والآن سنبدأ في معرفة أهم الطلبات في بروتوكول ftp
أول مايبدأ برنامج العميل.. يقوم بالإتصال على السيرفر وعلى منفذ 21
وكأي إتصال عادي بإستخدام دالة API الموضحة
Connect(..127.0.0.1,..21..);
وبعد عملية الإتصال يقوم برنامج العميل بتلقي أي رد من السيرفر
وفي مثالنا تلقى الرد التالي
220 Golden FTP Server Pro Ready v2.52
مايهمك كمبرمج هو الرقم 220 وهو يمثل جاهزية السيرفر لتلقي أي معلومات
هذا الرقم لا يتغير في أي رد لأي سيرفر ولكن الجملة التي تأتي بعد الرد هي التي تتغير
وهي غير مهمة ,, وتقوم بعض المواقع من منطلق أمني بحذف الرسالة التي تأتي بعد الرقم
لكي لا يتم معرفة أنواع وإصدارات البرامج المستخدمة في الموقع !!
وهذا جدول يعرض لك بقية الأرقام وماذا يقصد بها سيرفر ال ftp
119=Terminal not available, will try mailbox. 120=Service ready in nnn minutes. 125=Data connection already open; transfer starting. 225=Data connection open; no transfer in progress. 150=File status okay; about to open data connection. 151=User not local; will forward to user@host. 152=User unknown; mail will be forwarded by the operator. 250=Requested file action okay, completed. 200=Command okay. 211=System status, or system help reply. 212=Directory status. 213=File status. 214=Help message. 220=Service ready for new user. 221=Service closing Telnet connection. 226=Closing data connection; requested file action successful (for example, file transfer or file abort). 227=Entering passive mode. 230=User logged in; proceed. 331=User name okay; need password. 332=Need account for login. 350=Requested file action pending further information. 450=Requested file action not taken: file unavailable (for example, file busy). 421=Service not available, closing Telnet connection. This can be a reply to any command if the service must shut down. 425=Cannot open data connection. 426=Connection closed; transfer aborted. 530=Not logged in. 532=Need account for storing files. 550=Requested action not taken
المهم بعد ذلك يبدأ برنامج العميل بتسجيل دخول للحساب , ويتطلب كلمة مرور وإسم مستخدم
يبدأ بإسم المستخدم ,, وفي مثالنا يتم إرسال هذة المعلومة USER JAAS ,عن طريق الدالة send
ليتم تسجيل الإسم ,,, لاحظ القيمة التي ينتهي بها الطلب , بترميز هكس وتساوي 0D0A
وبلغة السي \r\n, وهذة القيمة تكون دائما في نهاية كل طلب لتدل على نهاية البيانات
وبنفس الطريقة يتم إرسال كلمة المرور وبإستخدام نفس الدالة send , مثلاً الكلمة 123456
يتم إرسالها بهذا الشكل PASS 123456\r\n
والآن عرفنا أول طلبين في بروتوكول ftp ,, وهما يمثلان تسجيل دخول المستخدم .
البيانات المرسلة في أول طلبين هي التي تهمنا في هذا الدرس ؟!!! أكيد تعرف السبب!
لأن كل سيرفرات ftp الموجودة على أي موقع أو شبكة لا تستقبل من أي مستخدم مجهول غير هذا الطلب؟
وبالتأكيد أقصد السيرفرات العادية.. لأن بعض الأجهزة لا تقبل الإتصال مع أي رقم ip
المهم النقطة التي اريد إيصالها وهي أن
طلب تسجيل الدخول وهو إسم المستخدم الذي تكتبة وكلمة المرور التي تكتبها
بكل بساطة تدخل وتعالج في أعماق السيرفر والنظام الموجود على شبكة بعيدة...
إذا كنت مخترق أنظمة هل فكرت في إستغلال هذة النقطة ؟ معقولة معلومات تختارها ويسمح بدخولها ولاتستفيد منها
وإذا كنت مبرمج شبكات أو مختص في الأمن , معقولة تستقبل أي رموز وتسمح بدخولها ومعالجتها من أي مصدر مجهول على الشبكة
هذة الأفكار بنجمعها في الأمثلة القادمة,,,
تابع....2





