Best Programmer
چهارشنبه 27 خرداد 1383, 16:07 عصر
نقطه ضعف جدیدی در پروتکل TCP ( Transmission Control Protocol ) کشف شده که بسیار جالب هست.
قبل از توضیح این آسیب پذیری که منجر به یک حمله ( Denial of Service) DOS یا عدم سرویس می گردد اندکی درباره پروتکل Tcp توضیح می دهم. جهت برقراری یک ارتباط TCPاحتیاج به انجام یک فرآیند به نام Handshaking می باشد که طی آن دستگاهی که قصد برقراری ارتباط با یک کامپیوتر هدف را دارد بسته Tcp با تنظیم بیت SYN=1 به سمت کامپیوتر مقصد می فرستد و در جواب ؛ کامپیوتر مقصد یک بسته با بیتهای SYN=1 و ACK=1 خواهد فرستاد و در نهایت ارتباط برقرار می گردد. همچنین گزینه ای بنام Sequence Number نیز در این ارتباط تعریف می گردد تا توالی بسته ها در مقصد مشخص باشد. رنج Sequence Number به گزینه دیگری بنام Window که در حقیقب مقدار فضای بافر اختصاص داده شده به ارتباط Tcp را مشخص می نماید ؛ بستگی دارد و در واقع تفاضل دو Sequence Number پی در پی در یک کامپیوتر از مقدار فضای Windowای که در طرف دیگر تعیین شده نمی تواند بیشتر باشد. در پایان نیز جهت خاتمه ارتباط ؛ یک بسته با تنظیم بیت RST=1 به کامپیوتر مقابل فرستاده می شود و ارتباط قطع می گردد.
حال می پردازیم به نقطه ضعف کشف شده . در این نقطه ضعف ؛ هکر با استفاده از یک بسته TCP/IP که آدرس IP و شماره پورت آن جعلی و برابر با شماره IP و پورت کامپیوتر هدف می باشد و نیز بیت RST آن برابر 1 تنظیم شده است ؛ این بسته را به سمت کامپیوتر یا روتری که کامپیوتر قربانی با آن در ارتباط است می فرستد که باعث گمراه شدن آن و قطع ارتباط کامپیوتر قربانی با آن می شود. نکته ماجرا در
تعیین Sequence Number صحیح جهت گمراه کردن کامپیوتر یا دستگاه مقصد می باشد. در گذشته چنین کاری تقریباً غیر ممکن می نمود اما شواهد حاکی از چیز دیگریست . مسئله اینجاست که هنگام فرستادن یک بسته Tcp با بیت RST=1 ؛ مقدار Sequence Number می تواند هر عددی در محدوده رنج گزینه Window باشد و به همین دلیل حدس زدن آن برای هکر بسیار راحتتر می باشد که در نهایت هکر را قادر به بستن ارتباط کامپیوتر هدف( که می تواند یک سرور باشد) با دستگاهی که سرور با آن یک ارتباط برقرار کرده است (مثل روتر ) ؛ می نماید.
جهت اطلاعات بیشتر به لینکهای زیر مراجعه نمائید:
http://www.cisco.com/warp/public/707/cisco-sa-20040420-tcp-ios.shtml
Peymann39
قبل از توضیح این آسیب پذیری که منجر به یک حمله ( Denial of Service) DOS یا عدم سرویس می گردد اندکی درباره پروتکل Tcp توضیح می دهم. جهت برقراری یک ارتباط TCPاحتیاج به انجام یک فرآیند به نام Handshaking می باشد که طی آن دستگاهی که قصد برقراری ارتباط با یک کامپیوتر هدف را دارد بسته Tcp با تنظیم بیت SYN=1 به سمت کامپیوتر مقصد می فرستد و در جواب ؛ کامپیوتر مقصد یک بسته با بیتهای SYN=1 و ACK=1 خواهد فرستاد و در نهایت ارتباط برقرار می گردد. همچنین گزینه ای بنام Sequence Number نیز در این ارتباط تعریف می گردد تا توالی بسته ها در مقصد مشخص باشد. رنج Sequence Number به گزینه دیگری بنام Window که در حقیقب مقدار فضای بافر اختصاص داده شده به ارتباط Tcp را مشخص می نماید ؛ بستگی دارد و در واقع تفاضل دو Sequence Number پی در پی در یک کامپیوتر از مقدار فضای Windowای که در طرف دیگر تعیین شده نمی تواند بیشتر باشد. در پایان نیز جهت خاتمه ارتباط ؛ یک بسته با تنظیم بیت RST=1 به کامپیوتر مقابل فرستاده می شود و ارتباط قطع می گردد.
حال می پردازیم به نقطه ضعف کشف شده . در این نقطه ضعف ؛ هکر با استفاده از یک بسته TCP/IP که آدرس IP و شماره پورت آن جعلی و برابر با شماره IP و پورت کامپیوتر هدف می باشد و نیز بیت RST آن برابر 1 تنظیم شده است ؛ این بسته را به سمت کامپیوتر یا روتری که کامپیوتر قربانی با آن در ارتباط است می فرستد که باعث گمراه شدن آن و قطع ارتباط کامپیوتر قربانی با آن می شود. نکته ماجرا در
تعیین Sequence Number صحیح جهت گمراه کردن کامپیوتر یا دستگاه مقصد می باشد. در گذشته چنین کاری تقریباً غیر ممکن می نمود اما شواهد حاکی از چیز دیگریست . مسئله اینجاست که هنگام فرستادن یک بسته Tcp با بیت RST=1 ؛ مقدار Sequence Number می تواند هر عددی در محدوده رنج گزینه Window باشد و به همین دلیل حدس زدن آن برای هکر بسیار راحتتر می باشد که در نهایت هکر را قادر به بستن ارتباط کامپیوتر هدف( که می تواند یک سرور باشد) با دستگاهی که سرور با آن یک ارتباط برقرار کرده است (مثل روتر ) ؛ می نماید.
جهت اطلاعات بیشتر به لینکهای زیر مراجعه نمائید:
http://www.cisco.com/warp/public/707/cisco-sa-20040420-tcp-ios.shtml
Peymann39