تبلیغات

خرید از معتبرترین فروشگاههای

تبلیغات

فروشگاه اینترنتی آفتاب بازار

جعل هويت در وب به صورت ساده - قسمت دوم

در قسمت اول اين مقاله دلايل استفاده از نشست ها و همچنين دسته بندي از آنها بيان كرديم. در اين مقاله يك مثال عملي آورده ايم كه از پيش روي شما مي گذرد:

 

يك مثال واقعي

حتما خيلي از شما تا به حال به سايت www.iranianchat.com رفته ايد وقتي وارد اتاق گفتگو مي شويد برنامه كاربردي سايت يك chatID به شما مي دهد و هر بار كه شما پيغامي ارسال مي كنيد پيغام شما به همراه يان chatID كه نمايانگر شما مي باشد براي برنامه كاربردي ارسال مي گردد و اين برنامه از طرف شما اطلاعات زير را ذخيره كرده است :

chatID = 3087.2

Name = "Kalantar"

Color = "#b2b2b2

Msg = Your Message

حال وقتي پيغامي به همراه ChatID شما براي برنامه كاربردي سايت ارسال مي شود اين برنامه اين پيغام را از طرف شما و با نام شما در اتاق گفتگو مي نويسد.

حال وقتي يك نگاه ساده به ChatID هاي داده شده توسط برنامه كاربردي وب بياندازيم مي بينيم كه آنها شباهتي با هم دارند و روي يك الگوريتم خاصي به كاربران داده مي شود:

 

http://www.englishpersian.com/Chat1/Chat.asp?ChatID=3087.2

k1 omad 5/9/2004 12:51:27 AM (213.17.8.4)

 

http://www.englishpersian.com/Chat1/Chat.asp?ChatID=3091.507

k2 omad 5/9/2004 12:51:31 AM (213.17.8.4)

 

http://www.englishpersian.com/Chat1/Chat.asp?ChatID=3095.512

k3 omad 5/9/2004 12:51:35 AM (213.7.8.4)

 

http://www.englishpersian.com/Chat1/Chat.asp?ChatID=3107.239

k4 omad 5/9/2004 12:51:47 AM (213.7.8.4)

 

http://www.englishpersian.com/Chat1/Chat.asp?ChatID=3111.235

k5 omad 5/9/2004 12:51:51 AM (213.17.8.4)

 

http://www.englishpersian.com/Chat1/Chat.asp?ChatID=3116.242

k6 omad 5/9/2004 12:51:56 AM (213.17.8.4)

 

با جمع آوري اعداد و ارقام به دست آمده و آمارگيري آنها الگوريتم به كار رفته براي ساختن نشانه نشست به دست مي آيد:

 

12:51:31 - 12:51:27 = 00:00:04  ==>  3091-3087 = 4

12:51:35 - 12:51:31 = 00:00:04  ==>  3095 - 3091= 4

12:51:47 - 12:51:35 = 00:00:12  ==>  3107 - 3095= 12

 

الگوريتمي كه برنامه نويس سايت (RoyaAz ) براي مديريت نشست ها به كار برده است به صورت زير مي باشد:

 

ChatID = Num1.Num2

OldNum1 = Num1 براي آخرين نفر

Num1 = (زمان ورود آخرين نفر - زمان ورود شخص  ) + OldNum1

Num2 = يك عدد تصادفي بين 0 تا 999

 

به عنوان مثال عملي تر ، فرض كنيد پس از نفر K6 آقاي X وارد مي شود كه اطلاعات آن به صورت زير مي باشد :

.......................................................................

k6 omad 5/9/2004 12:51:56 AM (213.17.8.4)

K6 : Salammmmm

K6 :

X omad 5/9/2004 12:52:16 AM (10.7.28.157)

X : Hi !

X: Salam K6

........................................................................

 

در اين هنگام K6 نگاهي به ChatID خود مي كند و نگاهي به زماني كه وارد شده است. اطلاعات آن به صورت زير مي باشد :

 

ChatID = 3116.242

Time = 12:51:56

 

و از زماني كه آقاي X وارد شده اند ( 12:52:16 ) مي تواند به راحتي قسمت اول نشست را پيدا كند يعني ChatID آقاي X به صورت زير مي باشد :

 

12:51:56 - 12:52:16 = 20

ChatID = 3116 + 20 = 3136

 

خوب به راحتي مي توان نشست نفر بعدي را به دست آورد البته فقط كمي وقت براي پيدا كردن عدد تصادفي Num2 لازم مي باشد كه آن هم به وسيله يك اسكريپت به صورت خودكار  انجام مي شود.

هنگامي كه آقاي K6 قسمت دوم عدد نشست را پيدا كرد آنگاه URL زير را مي فرستد كه به صورت زير مي باشد :

 

http://www.englishpersian.com/Chat1/Chat.asp?ChatID=3136.35

 

صفحه اصلي اتاق گفتگو براي آقاي K6 باز مي شود در اين هنگام اگر پيغامي را ارسال كند پيغام به نام شخص X در سايت نوشته مي شود.

X : I'm K6 !

X : I'm K6 !

X : I'm K6 !

X : hehehehehehe !

 

 

راههاي مقابله

طراحي ها و پياده سازي هاي ما چگونه بايد تغيير كند تا اينگونه حملات محدود شود؟

براي امن كردن برنامه هاي كاربردي تحت وب از اينگونه حملات فقط بايد نشست هاي سمت سرور و سمت مشتري را به درستي مديريت كرد. در زير بعضي از راههاي مقابله آمده است:

 

1- افزايش طول داده ها در كوكيها و ID هاي نشست

براي مثال اگر طول داده هاي حساب كاربري در كوكيها 32 كاراكتر باشد احتمال موفقيت نفوذگر در كشف  نشانه بسيار كمتر مي شودد.براي فهم اين منظور مي توانيد اندازه عدد (1 -1032 ) را با ( 1-103 ) مقايسه كنيد.

 

2- قسمتهاي تصادفي را در نشانه نشست خود افزايش دهيد

براي پتانسيل امنيتي بالاتر قسمتهايي از داده هاي نشانه نشست را ، كه به صورت تصادفي به دست مي آيد ؛ افزايش دهيد. هيچگاه از داده هاي ترتيبي براي نشانه ها استفاده نكنيد. البته اين كار ممكن است شما را كمي درگير كاراكتر هاي مشروع و غير مشروع كند.

 

3- كوكيهايتان را پيچيده و نامفهوم كنيد

نا مفهوم كردن مدخل هاي كوكيها باعث مي شود كه وضعيت و مفهوم آن پيچيده تر شود و نتوان به درستي به ساختمان بندي كوكيها پي برد. همين امر باعث مي شود كه افراد بد انديش مانند K6 نتوانند به راحتي كوكيها را دست كاري كنند  و با برگرداندن اين كوكي خودشان را جاي كس ديگري بزنند. البته هر چه اطلاعات رد و بدل شده در كوكيها مهم تر باشد پيچيدگي آن نيز بايد بيشتر شود.

 

4- از نشانه هاي نشست توليد شده توسط سرور استفاده كنيد

يك پيشنهاد مناسب براي ايجاد كردن نشانه هاي نشست استفاده از نشانه هاي توليد شده توسط برنامه كاربردي سرور مي باشد. مثال هايي از چنين نشستهايي ASPSESSIONID و JSESSIONID مي باشد. اين نشانه تمامي مواردي كه در بالا بيان شد را دارا مي باشند.

 

5- از محرمانگي داده هاي نشست محافظت كنيد

جداي از دستكاري كوكيها و نشانه هاي نشست ، ممكن است نفوذگران نشانه هاي نشست را از روي شبكه بدزدند. براي اينكه اين گونه حمله نيز عقيم بماند از پروتكلهاي رمز كننده اطلاعات مانند SSL استفاده كنيد.

 

البته به خاطر داشته باشيد كه يك برنامه كاربردي وب هيچگاه به صورت كامل ايمن نمي باشد و بايد يك امنيت چند لايه در نظر بگيريد تا برنا مه هاي شما در مقابل اين حملات ايمن باشد. كه مي تواند شامل موارد زير باشد:

- بعد از يك مدت زماني نشانه هاي نشست را بي اعتبار كنيد. بدين وسيله شما به نفوذگر وقت محدودي را براي پي بردن و يا دزديدن نشانه هاي نشست داده ايد.

- در سمت سرور تمامي ورودي ها را كنترل كنيد تا از حملاتي چون CSS يا XSS  كه باعث دزديده شدن نشانه هاي نشست توسط نفوذگران مي شود ، محافظت شويد.

 

Trackback URI: http://aftab.ws/index.php/trackback/128