الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف: طريقة التفاهم بين Client / Server عبر الشبكة

مغلق
بدأه Xacker في 26 نوفمبر 2007 · 30 رد · 6,457 مشاهدة · في منتدى الشبكات العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لنفرض التالي, برنامج يعمل على جهاز client وليكن برنامج محاسبة ما, برنامج يعمل على جهاز server وليكن برنامج يقوم بادارة قاعدة البيانات الرئيسية التي يتم استمداد البيانات منها.

الآن بصورة عامة, ما الذي يلزم الـ client حتى يقوم بالاتصال بالـ server بصورة برنامج ما عبر بروتوكولات الشبكة المحلية؟

ماذا لو كان هذا البرنامج عبارة عن فيروس, ما الذي يسهل عمله وما الذي قد يوقفه؟

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

جزيتم الخير.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#3

هذا فيما يتعلق بـ SQL, ليس شيئاً مستغربا عندما يتعلق الامر بجدار ناري.

اود فقط التنويه الى نقطة, الـ client والـ server الذي اتكلم عنه ليس بيئة trojan فيها client/server وانما اقصد بها مجموعة من الكمبيوترات الطرفية clients المرتبطة بـ server رئيسي لنقل بأن نسخة احتياطية من البيانات موجودة عليه هي التي يتم طلبها كل يوم صباحاً.

لو استطعت عملت poisoning لهذه البيانات لا تهمني بقية الاجهزة لانها مجرد واجهات لا اكثر.

بالتالي لو ان التطبيق الذي اعمل عليه يبدأ من client (بتصوري), فانا املك امكانية تخطي الـ firewall لان الاتصال يأتي من IP مسموح ضمن نطاق الشبكة وليس من نطاق خارجي, تبقى بالنسبة لي تفصيلات البروتوكولات المملة على نطاق الشبكات وليس النطاق البرمجي.

ما رأي خبراء الشبكات بمثل هذه المواضيع؟ :)

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#4

هل تريد معرفة الية الاتصال بين الاجهزه في بيئة Client/Server ...

يعني كيف تتم عملية ال Authentication ... و ال Resource Requesting و ما الى ذلك ؟؟؟

أم انك تقصد الية اتصال في ظل وجود تطبيق موزع على الشبكه ؟؟؟

It's hard to stay in such ridiculous situation

#5

لربما البعض من الاثنتين

فلنفرض انك مبرمج وانك تريد كتابة برنامج يقوم بالانتقال من جهاز الى آخر عبر الشبكة

بماذا تفكر من وجهة نظرك كخبير شبكات اولا قبل ان تكون مبرمجا؟

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#6
اقتباس
فلنفرض انك مبرمج وانك تريد كتابة برنامج يقوم بالانتقال من جهاز الى آخر عبر الشبكة

بماذا تفكر من وجهة نظرك كخبير شبكات اولا قبل ان تكون مبرمجا؟

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

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

وبالتالي .. عندما يعمل البرنامج .. سيبدأ محاولاً الإتصال بأي جهاز في الشبكة .. هنا يلجأ البرنامج للمتغيرات : هل المستخدم الذي يحاول الإتصال مسموح له أم لا ؟ هل الجهاز نفسه مسموح له أم لا ؟ ..... إلخ من الأسئلة ..

أتمنى أن تكون الصورة قد اتضحت

،،

System Administrator

#7

لكن أخي ياسين أعتقد ان الأخ Junkie محتاج لمعلومات للبنيه التحتيه لما قلته أنت !

#8

أولاً ما هو البروتوكول الذى تود من خلاله الاتصال؟

فهناك عددة طبقات (Layers) تتحرك عبرهم البيانات قبل الانتقال من جهاز للأخر

1) Physical Layer: هو الوصلات واسلاك الشبكه وبعد المعدات (مثل الـ Hub قديماً) ، وهيئة الإشارة الكهربية التى تمر بهم

2) Datalink Layer: يحدد شكر الـ Farme

3) Network Layer: يحدد شكر الـ Packet والبرتكول المستخدم

بعد ذلك يبدء التفرع فى البرتوكولات حتى تصل غلى Application Layer

post-98027-1196175174_thumb.gif

للمزيد حول TCP/IP حيث الأشهر والأكثر استخداماً راجع: http://www.uga.edu/~ucns/lans/tcpipsem/

Eng. Usama El-Mokadem

Nothing is impossible, the word impossible itself says that: I M - Possible

#9

لن اقوم بتمديد طبقة لماذا اهتم اذن بطبقاتها؟ لدي خبرة بسيطة في MCSE لكن اتصور ان كل ما انا بحاجة اليه هو على سبيل المثال netbios او winsock (أفضل)

في حال كان الجهاز العميل على الشبكة متصلاً بالسيرفر ومخولاً له الاتصال بالسيرفر اليس بالامكان عندها من خلال الـ winsock الاتصال بالسيرفر وارسال شئ اليه؟

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#10

بناء على ماسبق

Junkie كتب:
... تبقى بالنسبة لي تفصيلات البروتوكولات المملة على نطاق الشبكات وليس النطاق البرمجي.

ما رأي خبراء الشبكات بمثل هذه المواضيع؟ :)

hazzoom كتب:
لكن أخي ياسين أعتقد ان الأخ Junkie محتاج لمعلومات للبنيه التحتيه لما قلته أنت !

كتبت ردى السابق

اما إذا اردت على نطاق برمجى (عكس ما ذكرت)، راجع: /index.php?showtopic=126667

Eng. Usama El-Mokadem

Nothing is impossible, the word impossible itself says that: I M - Possible

#11

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

راكان الحنيطي

Be Open Source

opensource-550x4752.gif

#12

لم افهم جيدا ما تريد لكن اسهل طريقة فتح Port والتنصت

ثم عند الاتصال استقبال المعلومات والتنفيذ

d4baa0.gif
#13
اقتباس
لم افهم جيدا ما تريد لكن اسهل طريقة فتح Port والتنصت

ثم عند الاتصال استقبال المعلومات والتنفيذ

وفي هذه الحالة يجب أن تكون الـ session لها credentials مختلفة عن التي يستخدمها برنامج الداتا بيس اللي انت تقصده كمثال ,,,

#14

شكرا اخ اسامة على الرابط - من خلاله تلزمني بعض المعلومات

اما للتوضيح اكثر فلا يهمني فعليا قاعدة البيانات ولا اي شئ على السيرفر

ما اريده في الوقت الحالي ان يكون هناك ملف على جهاز client ما ان يتم تنفيذه حتى يقوم بالانتقال كمبدأ عمل الدودة الى الجهاز الـ server.

سأعتبر نفسي غبياً ان كان سيتعمد على نفسه بدون وجود اي ثغرة على نظام السيرفر نفسه

لكن لنفرض انه موجود على شبكة LAN وليس على WAN وان هذا ال client مصرح له ضمن الـ firewall واي برنامج آخر وليكن مثلا ISA على السيرفر

هل هناك اي طريقة من خدمات الشبكة نفسها استطيع من خلالها ارسال الملف على الجهاز السيرفر بدون ان يكون هناك تطبيق آخر يجلس بالانتظار على الجهاز ال server لتلقي اوامر الارسال مثلا ؟

مثلا netbios من خلال الـ file sharing (لن افترض وجوده) اريد ان اعرف ماذا يمكن ان يتم استخدامه

تم تعديل هذه المشاركة بواسطة Junkie في 28 نوفمبر 2007 في 19:25

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#15

تقصد ملف ينتقل من جهاز الى جهاز بنفسه !

غير ممكن دون استغلال ثغرة

لكن ان كان في الجهاز المنتقل اليه يوجد Server فالامر سهل، فهو مجرد ارسال ملف من جهاز الى جهاز ِباستخدام Socket مثلا

d4baa0.gif
#16

خذ على سبيل المثال موضوع المشاركة الافتراضية في ويندوز

ADMIN$ و IPC$ وغيره

تستطيع الفيروسات (worms) استغلاله للتنقل الى جهاز اخر من خلال خدمات الشبكة وبالتحديد netbios

هذا ليس ثغرة لكن تم استغلاله, ضعف في النظام

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

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#17
Junkie كتب:
netbios

هذا ليس ثغرة لكن تم استغلاله, ضعف في النظام

ضعف في النظام! نحتاج لمرجع نفق عليك في تسمة الاشياء

المهم ان كان النظام ضعيف فالامر محسوم ان استطعت برمجة شيئ مثل مجموعة Mark Russinovich

http://www.microsoft.com/technet/sysintern...es/PsTools.mspx

جرب المجموعة كاملة وخاصة PsExec

-

ايضا يمكنك دراسة سورس بعض الفيروسات الشهيرة فهو متوفر...

d4baa0.gif
#18

قرأت عن PsExec ظهرا لكن انشغلت وعدت للموضوع الآن

لدي بعض الشفرات التي اقوم بدراستها لفيروسات worms استغلت netbios

سأرى ما اصل اليه ان شاء الله

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#19

PsExe تقوم تماما بما تريده

تنقل برنامج للجهاز الاخر وتنفذه هناك

طبعا تحتاج للصلاحية وهنا يدخل عامل ضعف النظام الذي تحدثت عنه انت :lol:

d4baa0.gif
#20

هناك عدة طرق:

1) حيله قديمه كنت استغلها ومازالت تعمل حتى الان

الا وهى زرع KeyLogger على جهازى، او كل أجهزة الـ LAN إذا اتيحت لى الفرصة لذلك

- فى حالة زرعها على كل جهاز ... يفضل ان تكتبها بنفسك (الموضوع بسيط) بحيث انها ترسل ما تخزنه إلى جهازك (بدلاً من مراجعة كل جهاز) -

ثم تتسبب فى مشكله تحتاج تدخل الـ Administrator لحلها أو للدخول إلى الخادم Remotely من جهازك

فمثلاً - لو أنك ضمن Domain - يمكنك إعادة تثبيت الويندوز، وزرع الـ KeyLogger قبل الدخول على الـ Domain لأن ذلك يتطلب حساب اعلى من مستخدم عادى (غالباً Administrator Account)، وبهذه الطريقة أو بأى طريقة أخرى يمكنك الحصول على Administrator Password

فى ذلك الحين أصبح الخادم ملك لك، فيمكنت استغلال Administartion Share كالتالى، من Run أكتب:

LEFT TO RIGHT
\\Server\C$
للوصول لـ :C ، كذلك يمكنك الدخل على الـ Registry والـ Services للخادم Remotly

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

2) عمل Port Scan على الخادم ودراسة الـ Ports المفتوحة (أى البرامج التى تعمل على الخادم، لأن غالباً كل برنامج لديه رقم منذ معروف وبالتالى من خلال رقم المنفذ يمكن معرفة البرنامج الذى يخصه) والبحث عن ثغرة معروفة فى احد هذه البرامج.

فمثلاً منفذ 21 خالص بـ FTP، وغالباُ عند الدخول على FTP من خلال سطر الاواامر، يعطى اسم خادم FTP ورقم اصداره، ومن هنا تبدء بالبحث عن ثغرة معروفة وطريقة استغلالها لهذه الخدمة.

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

3) من خلال الـ Port Scan محاولات تجربة اسم المستخدم وكلمة المرور الافتراضية للبرامج، فهذا يعتمد على ترك احد البرامج بالوضع الافتراضى (Miss Configured)، وهى من أكثر الاخطاء شيوعاً فى الشبكات، ومن اكثرها استغلالاً للهاكرز.

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

4) محاولة استخدام احد الخدمات التى قد يكون استخدمها الـ Administrator لتجريب شيئ ما ثم تركة سهواً مثل Telnet

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

5) هى صعبة وغير مضمونة النتائج، وهى الحصول على نسخة من احد البرامج التى تعمل على السيرفر (البرامج التى تم برمجتها من خلال شركات صغيرة ذو خبرات محدودة) والبحث عن ثغرة فى البرنامج يمكن استغلالها، (ستحتاج لهندسة عكسية).

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

6) لو لديك المقدرة للوصول للخادم، يمكن استخدام اسطوانة مثل WinPE لتشغيل الجهاز منها ثم وضع أى برنامج على الخام، ثم عمل اختصار لها فى مجلد Start UP

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

7) محاولة خدام الـ Administrator عن طريق اقناعه تشغيل برنامج ما، أو ارسال له رابط على بريده يحتوى برنامج ما (بالطبع تكون مجهزه مسبقاً) ، وانت وحظك ان يقوم بتجربته على الخادم.

هذه الافكار التى تحضرنى الأن، ولكن انا واثق ان هناك عشرات الافكار الاخرى قد تجد احداهم تأتى ثمارها :)

Eng. Usama El-Mokadem

Nothing is impossible, the word impossible itself says that: I M - Possible

#21

افكار خطر ببالي معظمها, البعض الآخر لا يفيد في حالتي لأني لست ضمن كادر الشركة بالأصل لكن لنقل, موظف فاسد لا علاقة له بالأمر سيقوم بما اطلبه دون ان يدري ما يحدث :D

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

الموضوع لست على عجلة من أمري فيه, لذلك لو تأخرت في ايجاد شئ هذا لا يعني اني مللت منه او لم اصل الى نتيجة :)

شكرا على الردود الى الآن

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#22

حقيقة استمتعت بقرائة الردود رغم تباينها ...

اخي junkie ...

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

هل تسعى لصناعة Worm معين ؟ ان كان كذلك فالامور ستأخذ طابعا اخر في ردي ... اما ان كان عن الية صناعة برنامج client/server فأيضا الوضع سيختلف.

اقتباس
في حال كان الجهاز العميل على الشبكة متصلاً بالسيرفر ومخولاً له الاتصال بالسيرفر اليس بالامكان عندها من خلال الـ winsock الاتصال بالسيرفر وارسال شئ اليه؟

كلا اؤيده 100% ...

توضيح اكثر عن هذه النقطه.

الاتصال بالسيرفر يتم من خلال انشء session ... و متطلبات الاتصال هي تحديد نوع البروتوكول المستخدم هل هو UDP ام TCP.

الان تتم ال session من خلال Three Way Hand Shake و هذا في حالة اتصال ال TCP ... اما في حالة ال UDP فلا يتم اي عملية تحقق و يتم البدء بعملية الارسال مباشرة.

الان يتصل ال client مع ال Server من خلال ارسال IP و Port ... و يتم تعريف ال credential اي عملية ال authention اذا كانت هذه العمليه مطلوبه كإعطاء يوزر و باسوورد.

يقوم السيرفر بالرد بناءا على ال Authentication Validation .....

الان لنفترض ان ال session اخذ الموافقه و بدأت عملية ال Transmitting ... يتم تحديد طبيعة الاتصال هل هي TCP ام UDP و ذلك على مستوى ال Transport Layer ....

في حال كان TCP ... تتم عملية تحديد طرفي الاتصال (اي العناوين) و ال Port الذي يقوم السيرفر بعمل listening من خلال ... طبعا هذا البورت يطلبه ال client ... و يوافق السيرفر على فتحه كما اوضحت سالفا من عملية التحقق و التي هي هنا Three Hand Shake ...

في حال كان UDP ... يتم تحديد الطرفين ... الطرف الاول المرسل و الثاني لا يتم تحديده او يتم تحديده ... بمعنى ... يحدد المرسل Port لعملية ال listening ... أي جهاز في ال LAN قادر على الاستماع لها البورت و عندها تصبح القضيه Broadcasting ... او قد تصبح Multicast ...

كل هذه العمليه تستخدم ال Sockets لارسال الرساله او معلومات الاتصال على شكل stream ...

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

اقتباس
وفي هذه الحالة يجب أن تكون الـ session لها credentials مختلفة عن التي يستخدمها برنامج الداتا بيس اللي انت تقصده كمثال ,,,

100% يا حازم ... لكن خذ بعين الاعتبار ان ال Credential في كل الاحوال مطلوبه للإتصال سواء أكن Network Request عادي او DB Activities ....

اقتباس
ما اريده في الوقت الحالي ان يكون هناك ملف على جهاز client ما ان يتم تنفيذه حتى يقوم بالانتقال كمبدأ عمل الدودة الى الجهاز الـ server

كدوده ولا دوده :unsure:

هناك بعض السكريبتات تقوم بمثل هذه الامور.

اقتباس
هل هناك اي طريقة من خدمات الشبكة نفسها استطيع من خلالها ارسال الملف على الجهاز السيرفر بدون ان يكون هناك تطبيق آخر يجلس بالانتظار على الجهاز ال server لتلقي اوامر الارسال مثلا ؟

ال Scripts وضعت لهذا الهدف.

اقتباس
مثلا netbios من خلال الـ file sharing (لن افترض وجوده) اريد ان اعرف ماذا يمكن ان يتم استخدامه

ليست فضية وجوده من عملها ... سبق و ان كانت عملية ال ARP Poinsoning مرهقه نوعا ما و ذلك بسبب ال netbios ... و لكن حاليا يمكن إلغاء ال NetBois Over TCP بسهوله ... و في الوضع الافتراضي هي مفعله ... لكن اي system admin مصحصح شوي و لا يستخدم اي كلاينت اقل من 2000 فسيقوم بإلغاء ال netbios تماما.

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

سأقوم بتوضيح بعض ال Services الخاصه بويندوز المتعلقه بعمليات الاتصال لاحقا.

أخ أسامه ...

طبعا ما تفضلت به جميل لكنه غير مجدي.

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

أرجو ان تكون مداخلتي قد اوضحت الامور نوعا ما.

It's hard to stay in such ridiculous situation

#23

فعلا أنا لم اعد أفهم ما يقصده أخي Junkie بدقة لكن هل يفيد الـ Remote Deployment في هذه الحالة ؟

تم تعديل هذه المشاركة بواسطة hazzoom في 1 ديسمبر 2007 في 21:10

#24
محمد أكرم عليان كتب:
أخ أسامه ...

طبعا ما تفضلت به جميل لكنه غير مجدي.

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

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

Eng. Usama El-Mokadem

Nothing is impossible, the word impossible itself says that: I M - Possible

#25

للتوضيح, (نعم اقوم بعمل دودة لشبكة LAN فقط)

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

ولديها على سبيل المثال 5 اجهزة طرفية متصلة بهذا السيرفر هي الـ clients وهم الموظفين الذين يملكون الواجهة التطبيقية لهذا البرنامج المحاسبي

لنفرض اني استطيع الوصول الى احد اجهزة الـ clients

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

كلامك جميل جدا اخي محمد, من خلاله استشف ان الأمر ممكن من وجهة نظري المحدودة, فما رأيك انت؟

بالمناسبة, أذكر, البرنامج المحاسبي يوجد على جميع اجهزة الموظفين clients, قاعدة البيانات وسيرفر البرنامج المحاسبي host لنسميه, موجود على الجهاز السيرفر الذي يقوم بتزويدهم بما يريدونه من قاعدة البيانات تلك.

بالتالي يجب ان يكون هناك اتصال دائم مع هذا الجهاز وبالتالي يوجد اتصال تم انشاؤه عندما تم فتح البرنامج المحاسبي.

هل من الممكن استخدام هذا المنفذ طالما عملية الـ authentication تحققت عليه من اجل البرنامج ام انها تكون محدودة على البرنامج فقط (:blink:)

السلام عليكم

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…