You are on page 1of 400

‫تحلیل داده شبکه‬

‫در‬

‫مهندس کمال کمایی‬


‫کارشناسی ارشد امنیت اطالعات و شبکه از‬
‫دانشگاه تهران‬
‫‪ :‬کمایی‪ ،‬کمال‪- 1353 ،‬‬ ‫سرشناسه‬
‫‪ :‬تحلیل داده شبکه در ‪ /wireshark‬ترجمه و تألیف کمال کمایی‪.‬‬ ‫عنوان و نام پدیدآور‬
‫‪ :‬اهواز‪ :‬پژوهندگان راه دانش‪.1394،‬‬ ‫مشخصات نشر‬
‫‪41۷ :‬ص‪ :.‬مصور‪،‬جدول‪،‬نمودار‪.‬‬ ‫مشخصات ظاهری‬
‫‪ 190000 :‬ریال‪:978-600-345-040-0‬‬ ‫شابک‬
‫وضعیت فهرست نویسی ‪ :‬فیپا‬
‫‪ :‬راهنمای کاربردی نرمافزار وایرشارک‪.‬‬ ‫عنوان دیگر‬
‫‪ :‬پروتکلهای شبکه کامپیوتری‬ ‫موضوع‬
‫‪ :‬گزینش بستهای (انتقال دادهها)‬ ‫موضوع‬
‫‪ :‬ساندرز‪ ،‬کریس‪ - 1986 ،‬م‪.‬‬ ‫شناسه افزوده‬
‫‪Sanders, Chris :‬‬ ‫شناسه افزوده‬
‫‪31394 :‬ت‪83‬ک‪TK5105/5/‬‬ ‫رده بندی کنگره‬
‫‪004/66 :‬‬ ‫رده بندی دیویی‬
‫شماره کتابشناسی ملی ‪401۷996 :‬‬

‫ااشتنرات ژپوهندگان راه دانش‬

‫عنوان ‪ :‬تحلیل داده شبکه در ‪wireshark‬‬


‫ناشر‪ :‬پژوهندگان راه دانش‬
‫نویسنده ‪ :‬کریس ساندرز‬
‫تألیف و ترجمه ‪ :‬مهندس کمال کمایی‬
‫چاپ‪ :‬تورنگ‬
‫تیراژ‪5000:‬‬
‫شماره نشر ‪1025 :‬‬
‫شابک ‪978-600-345-040-0:‬‬
‫نوبت چاپ‪ :‬اول ‪1394‬‬
‫صفحهآرایی‪ :‬جوانه‬
‫قیمت‪19000 :‬تومان‬
‫‪www.ketab.ir/Pajo‬‬

‫‪09128884969‬‬ ‫تهران‪ :‬خیابان ‪ 16‬آذرشمالی‪ ،‬ساختمان بعثت‪ ،‬طبقه سوم ‪66120566 - 66120554‬‬
‫اهواز ‪ :‬خیابان نادری شرقی نبش خیابان کرمی خراط پ دوم ‪32219202- 32202802 09161185118‬‬
‫فهرست‬
‫مقدمه مترجم ‪1 ........................... ................................ ................................ ................................‬‬
‫مقدمه نویسنده ‪2 ......................... ................................ ................................ ................................‬‬
‫تحلیل بسته داده و اصول شبکه ‪6 ................................. ................................ ................................‬‬
‫تحلیل بسته و شنود بسته ‪۷ ........... ................................ ................................ ................................‬‬
‫ارزیابی شنودکننده بسته‪۷ .......... ................................ ................................ ................................ :‬‬
‫پروتکلهای پشتیبانی شده‪8................................................................................................................. :‬‬
‫کارایی ساده‪8..................................................................................................................................... :‬‬
‫هزینه ‪8.................................................................................................................................................‬‬
‫پشتیبانی نرمافزار‪9................................................................................................................................:‬‬
‫پشتیبانی از سیستمعامل ‪9 ............. ................................ ................................ ................................‬‬
‫چگونه شنود بسته کار میکند ‪9 .................................... ................................ ................................‬‬
‫جمعآوری ‪10 ......................................................................................................................................‬‬
‫تبدیل ‪10 ..............................................................................................................................................‬‬
‫تجزیهوتحلیل ‪10 ..................................................................................................................................‬‬
‫کامپیوترها چگونه ارتباط برقرار میکنند‪10 .........................................................................................:‬‬
‫پروتکلها شبکه ‪10 ..................... ................................ ................................ ................................‬‬
‫مدل هفت الیهای ‪12 .......... ................................ ................................ ................................ OSI‬‬
‫الیه ‪ :۷‬الیه کاربرد ‪13 ..........................................................................................................................‬‬
‫الیه ‪ :6‬الیه ارائه ‪13 ..............................................................................................................................‬‬
‫الیه ‪ :5‬الیه نشست‪13 ...........................................................................................................................‬‬
‫الیه ‪ :4‬الیه انتقال‪13 .............................................................................................................................‬‬
‫الیه ‪ :3‬الیه شبکه‪13 .............................................................................................................................‬‬
‫الیه ‪ :2‬الیه پیوند داده ‪14 ......................................................................................................................‬‬
‫الیه ‪ :1‬الیه فیزیکی ‪14 .........................................................................................................................‬‬
‫کپسوله سازی داده ‪16 ................. ................................ ................................ ................................‬‬
‫سختافزار شبکه ‪19 ................... ................................ ................................ ................................‬‬
‫هاب ‪20 ...............................................................................................................................................‬‬
‫سوئیچ ‪22 .............................................................................................................................................‬‬
‫مسیریاب ‪23 .........................................................................................................................................‬‬
‫طبقهبندی ترافیک ‪26 .................. ................................ ................................ ................................‬‬
‫پخش فراگیر ‪26 ...................................................................................................................................‬‬
‫ترافیک چندپخشی‪28 ..........................................................................................................................‬‬
‫ترافیک پخش واحد ‪28 ........................................................................................................................‬‬
‫خالصه فصل ‪29 ......................... ................................ ................................ ................................‬‬
‫نفوذ به شبکه ‪32 ......................... ................................ ................................ ................................‬‬
‫زندگی بیقاعده ‪33 .................... ................................ ................................ ................................‬‬
‫شنود در اطراف هاب ‪34 ............. ................................ ................................ ................................‬‬
‫شنود در اطراف سوئیچ ‪36 .......... ................................ ................................ ................................‬‬
‫مانیتورینگ پورت ‪3۷ ...........................................................................................................................‬‬
‫هاب بیرونی ‪39 ....................................................................................................................................‬‬
‫پیدا کردن هاب واقعی‪41 .....................................................................................................................‬‬
‫کاربرد دستگاه ‪41 ........................................................................................................................ Tap‬‬
‫دستگاه ‪ Tap‬متراکم ‪42 ........................................................................................................................‬‬
‫دستگاه ‪ Tap‬غیرمتراکم ‪43 ...................................................................................................................‬‬
‫انتخاب دستگاه ‪ Tap‬شبکه‪44 ............................................................................................................. :‬‬
‫آلودهسازی حافظه ‪45 ................................................................................................................. ARP‬‬
‫شنود در تجهیزات مسیریابی شده ‪4۷ ............................ ................................ ................................‬‬
‫استفاده از ‪49 ......... ................................ ................................ ................................ Cain&Abel‬‬
‫توجه برای آلودهسازی حافظه ‪52 ............................................................................................... ARP‬‬
‫شنود در محیط مسیریابی شده ‪53 ................................. ................................ ................................‬‬
‫نقشههای شبکه ‪55 ................................................................................................................................‬‬
‫تمرین استقرار شنودگر ‪55 ........... ................................ ................................ ................................‬‬
‫مقدمهای بر ‪60 ......... ................................ ................................ ................................ Wireshark‬‬
‫تاریخچهای مختصر از ‪60 ......................... ................................ ................................ Wireshark‬‬
‫مزایای ‪61 ............... ................................ ................................ ................................ Wireshark‬‬
‫پروتکلهای پشتیبانی شده ‪61 ...............................................................................................................‬‬
‫کاربرپسند بودن‪61 ............................................................................................................................. :‬‬
‫هزینه‪62 ............................................................................................................................................. :‬‬
‫پشتیبانی برنامه‪62 ................................................................................................................................ :‬‬
‫پشتیبانی سیستمعامل ‪63 ........................................................................................................................‬‬
‫نصب ‪63 ........................................................................................................................... Wireshark‬‬
‫نصب روی سیستمهای ‪ Windows‬مایکروسافت ‪64 ..................................... ................................‬‬
‫نصب روی سیستمهای ‪66 ................................ ................................ ................................ Linux‬‬
‫سیستمهای مبتنی بر ‪66 ...................................... ................................ ................................ RPM‬‬
‫سیستمهای مبتنی بر ‪6۷ ...................................... ................................ ................................ DEB‬‬
‫کامپایل کردن از منبع ‪6۷ ............. ................................ ................................ ................................‬‬
‫نصب روی سیستمهای ‪68 ....................... ................................ ................................ Mac OS X‬‬
‫مبانی ‪69 .................. ................................ ................................ ................................ Wireshark‬‬
‫نخستین ربایش بسته ‪69 .............. ................................ ................................ ................................‬‬
‫پنجرهی اصلی ‪۷1 .................................... ................................ ................................ Wireshark‬‬
‫لیست بسته ‪۷2 ......................................................................................................................................‬‬
‫جزئیات بسته ‪۷3 ...................................................................................................................................‬‬
‫بایتهای بسته ‪۷3 .................................................................................................................................‬‬
‫تنظیمات ‪۷3 ............ ................................ ................................ ................................ Wireshark‬‬
‫واسط کاربر ‪۷4 ....................................................................................................................................‬‬
‫ربایش‪۷4 .............................................................................................................................................‬‬
‫چاپ‪۷5 ...............................................................................................................................................‬‬
‫آمار ‪۷5 ................................................................................................................................................‬‬
‫پروتکلها ‪۷5 .......................................................................................................................................‬‬
‫کدگذاری رنگ بسته ‪۷5 ......................................................................................................................‬‬
‫کار با بستههای ربایش شده ‪80 .................................... ................................ ................................‬‬
‫کارکردن با ربایش فایلها ‪80 ...................................... ................................ ................................‬‬
‫یافتن بستهها ‪80 ....................................................................................................................................‬‬
‫نشانگذاری بستهها‪82 ..........................................................................................................................‬‬
‫ذخیره و صادر کردن فایلهای ربایش ‪82 ..................... ................................ ................................‬‬
‫ادغام فایلهای ربایش ‪84 ............ ................................ ................................ ................................‬‬
‫چاپ کردن بستهها ‪85 ................. ................................ ................................ ................................‬‬
‫فرمتهای نمایش زمان و مرجعها ‪86 ........................... ................................ ................................‬‬
‫فرمتهای نمایش زمان ‪86 ...................................................................................................................‬‬
‫ارجاع به زمان بسته ‪8۷ ..........................................................................................................................‬‬
‫تنظیم گزینههای ربایش ‪88 ...................................................................................................................‬‬
‫تنظیمات ربایش ‪88 ..............................................................................................................................‬‬
‫تنظیمات فیلتر(های) ربایش ‪90 .............................................................................................................‬‬
‫تنظیمات توقف ربایش ‪92 ....................................................................................................................‬‬
‫تنظیمات تفکیک نام ‪93 .......................................................................................................................‬‬
‫استفاده از فیلترها ‪93 .................... ................................ ................................ ................................‬‬
‫فیلترهای ربایش ‪94 ..............................................................................................................................‬‬
‫فیلترهای نمایش ‪96 ..............................................................................................................................‬‬
‫دیالوگ عبارت فیلتر (روش ساده) ‪9۷ ......................... ................................ ................................‬‬
‫ساختار نحو ‪( Filter Expression‬روش سخت) ‪98 ...................................... ................................‬‬
‫عملگرهای مقایسهای‪99 .......................................................................................................................‬‬
‫نحو ربایش ‪100 ........................................................................................................................... BPF‬‬
‫فیلترهای نام میزبان و آدرسدهی ‪102 ..................................................................................................‬‬
‫فیلترهای پورت و پروتکل ‪103 .................................... ................................ ................................‬‬
‫عبارات فیلتر ربایش نمونه ‪106 .............................................................................................................‬‬
‫عبارات فیلتر نمایش نمونه ‪10۷ .............................................................................................................‬‬
‫ذخیره کردن فیلترها ‪10۷ ............. ................................ ................................ ................................‬‬
‫ویژگیهای پیشرفتهی ‪112 ....................... ................................ ................................ Wireshark‬‬
‫نقاط انتهایی شبکه و گفتگوها ‪112 .............................. ................................ ................................‬‬
‫دیدن نقاط انتهایی ‪113 ................ ................................ ................................ ................................‬‬
‫دیدن گفتگوهای شبکه ‪114 ........ ................................ ................................ ................................‬‬
‫رفع اشکال توسط پنجرههای ‪ Endpoints‬و ‪115 ................. ................................ Conversations‬‬
‫آمار سلسله مراتب پروتکل ‪118 ................................... ................................ ................................‬‬
‫تفکیک نام ‪120 .......................... ................................ ................................ ................................‬‬
‫فعالسازی تفکیک نام ‪120 ......... ................................ ................................ ................................‬‬
‫تفکیک نام ‪120 ............... ................................ ................................ ................................ MAC‬‬
‫تفکیک نام شبکه ‪121 ................. ................................ ................................ ................................‬‬
‫تفکیک نام انتقال ‪121 ................. ................................ ................................ ................................‬‬
‫ایرادهای بالقوهی تفکیک نام ‪122 ............................... ................................ ................................‬‬
‫تجزیهی پروتکل ‪123 .................. ................................ ................................ ................................‬‬
‫تغییر دادن تجزیه کننده ‪123 ........ ................................ ................................ ................................‬‬
‫دیدن کد مبدأ تجزیه کننده ‪12۷ .................................. ................................ ................................‬‬
‫دنبال کردن جریانهای ‪128 ............................... ................................ ................................ TCP‬‬
‫نمودارکشی ‪132 ......................... ................................ ................................ ................................‬‬
‫دیدن نمودارهای ‪132 ............ ................................ ................................ ................................ IO‬‬
‫ترسیم نمودار زمان رفت و برگشت ‪135 ...................... ................................ ................................‬‬
‫ترسیم نمودار جریان ‪13۷ ............ ................................ ................................ ................................‬‬
‫اطالعات خبره ‪138 ..................... ................................ ................................ ................................‬‬
‫پیغامهای ‪139 .............................................................................................................................. Chat‬‬
‫پیغامهای ‪139 ............................................................................................................................. Note‬‬
‫پیغامهای ‪140 .......................................................................................................................Warning‬‬
‫پیغامهای ‪140 ............................................................................................................................. Error‬‬
‫پروتکلهای رایج الیهی پایینتر ‪144 ........................... ................................ ................................‬‬
‫پروتکل تفکیک آدرس ‪144 ....................................... ................................ ................................‬‬
‫سرآیند ‪14۷ ...................... ................................ ................................ ................................ ARP‬‬
‫بستهی ‪ :1‬درخواست ‪149 ............................................................................................................ ARP‬‬
‫بستهی ‪ :2‬پاسخ ‪150 .................................................................................................................... ARP‬‬
‫‪ ARP‬بالعوض‪150 ..............................................................................................................................‬‬
‫پروتکل اینترنت ‪152 ................... ................................ ................................ ................................‬‬
‫آدرسهای ‪153 ..................... ................................ ................................ ................................ IP‬‬
‫سرآیند ‪156 ...................... ................................ ................................ ................................ IPv4‬‬
‫‪15۷ .............................................................................................................................. Time to Live‬‬
‫چندتکه کردن ‪161 ................ ................................ ................................ ................................ IP‬‬
‫پروتکل کنترل انتقال ‪164 ............ ................................ ................................ ................................‬‬
‫سرآیند ‪165 ................................................................................................................................ TCP‬‬
‫پورتهای ‪166 ............................................................................................................................TCP‬‬
‫دستدهی سهطرفهی ‪1۷0 ............................................................................................................ TCP‬‬
‫پایانکار ‪1۷4 ...................... ................................ ................................ ................................ TCP‬‬
‫بازنشانیهای ‪1۷6 ............... ................................ ................................ ................................ TCP‬‬
‫پروتکل دادهنگار کاربر ‪1۷8 ........ ................................ ................................ ................................‬‬
‫سرآیند ‪1۷8 ................................................................................................................................UDP‬‬
‫پروتکل کنترل پیامهای اینترنتی ‪180 ............................ ................................ ................................‬‬
‫سرآیند ‪180 .............................................................................................................................. ICMP‬‬
‫انواع و پیامهای ‪181 ..................................................................................................................ICMP‬‬
‫درخواستها و پاسخهای ‪181 .................................................................................................... Echo‬‬
‫‪185 ........................ ................................ ................................ ................................ Traceroute‬‬
‫پروتکلهای رایج الیهی باالتر ‪192 .............................. ................................ ................................‬‬
‫پروتکل پیکربندی میزبان به صورت پویا ‪192 ............... ................................ ................................‬‬
‫ساختار بستهی ‪192 .................................................................................................................. DHCP‬‬
‫فرآیند تجدید ‪194 ...................................................................................................................DHCP‬‬
‫بستهی کشف ‪195 ............................................................................................................... Discover‬‬
‫بستهی ارائه (‪198 ...................................................................................................................... )Offer‬‬
‫بستهی درخواست (‪199 ....................................................................................................... )Request‬‬
‫بستهی تصدیق (‪200 ........................................................................................... )Acknowledgment‬‬
‫‪ DHCP‬در اجاره‪201 ...........................................................................................................................‬‬
‫گزینهها و انواع پیام ‪201 ................................. ................................ ................................ DHCP‬‬
‫سیستم نام دامنه ‪202 .................... ................................ ................................ ................................‬‬
‫ساختار بستهی ‪203 ..................................................................................................................... DNS‬‬
‫یک پرس و جوی سادهی ‪205 .................................................................................................... DNS‬‬
‫انواع پرسش ‪208 ........................................................................................................................ DNS‬‬
‫بازگشت ‪208 ............................................................................................................................. DNS‬‬
‫انتقال ناحیهی ‪213 ...................................................................................................................... DNS‬‬
‫جستجو با ‪21۷ ................ ................................ ................................ ................................ HTTP‬‬
‫پست کردن دادهها با ‪220 ......................................................................................................... HTTP‬‬
‫ایدههای آخر ‪222 ................................................................................................................................‬‬
‫سناریوهای واقعی پایه ‪224 ......... ................................ ................................ ................................‬‬
‫شبکه اجتماعی در سطح بسته ‪225 ............................... ................................ ................................‬‬
‫ربایش ترافیک توییتر ‪225 ........... ................................ ................................ ................................‬‬
‫فرآیند ورود به توییتر ‪226 ....................................................................................................................‬‬
‫فرستادن دادهها توسط یک توییت ‪228 .................................................................................................‬‬
‫پیامدهی مستقیم توییتر ‪230 ...................................................................................................................‬‬
‫ربایش ترافیک فیسبوک ‪231 .................................... ................................ ................................‬‬
‫فرآیند ورود به فیسبوک‪232 ..............................................................................................................‬‬
‫پیامدهی خصوصی با فیسبوک ‪233 .....................................................................................................‬‬
‫مقایسه کردن روشهای توییتر در برابر فیسبوک ‪235 ................................. ................................‬‬
‫ربایش ترافیک ‪236 ................................ ................................ ................................ ESPN.com‬‬
‫استفاده از پنجرهی ‪23۷ ............................................................................................... Conversations‬‬
‫استفاده از پنجرهی ‪238 ..................................................................... Protocol Hierarchy Statistics‬‬
‫دیدن ترافیک ‪239 ............ ................................ ................................ ................................ DNS‬‬
‫دیدن درخواستهای ‪240 ............................... ................................ ................................ HTTP‬‬
‫مسائل دنیای واقعی ‪242 .............. ................................ ................................ ................................‬‬
‫عدم دسترسی به اینترنت ‪242 ....................................... ................................ ................................‬‬
‫دسترسی پیدا کردن از طریق سیم ‪243 ......................... ................................ ................................‬‬
‫تحلیل ‪243 ................................. ................................ ................................ ................................‬‬
‫درسهای فراگرفته شده ‪246 ....................................... ................................ ................................‬‬
‫عدم دسترسی به اینترنت‪ :‬تعیین جهت ناخواسته ‪24۷ ..................................... ................................‬‬
‫دسترسی پیدا کردن از طریق سیم ‪248 ......................... ................................ ................................‬‬
‫تحلیل ‪248 ................................. ................................ ................................ ................................‬‬
‫عدم دسترسی به اینترنت‪ :‬مشکالت باالدستی ‪252 ......... ................................ ................................‬‬
‫تحلیل ‪253 ................................. ................................ ................................ ................................‬‬
‫درسهای فراگرفته شده ‪25۷ ....................................... ................................ ................................‬‬
‫چاپگر ناسازگار ‪25۷ ................... ................................ ................................ ................................‬‬
‫دسترسی پیدا کردن از طریق سیم ‪25۷ ..................................................................................................‬‬
‫تحلیل ‪258 ...........................................................................................................................................‬‬
‫درسهای فراگرفته شده ‪261 ....................................... ................................ ................................‬‬
‫گیر افتاده در یک شعبهی اداره ‪262 ............................. ................................ ................................‬‬
‫دسترسی پیدا کردن از طریق سیم ‪263 ......................... ................................ ................................‬‬
‫تحلیل ‪263 ................................. ................................ ................................ ................................‬‬
‫درسهای فراگرفته شده ‪26۷ ....................................... ................................ ................................‬‬
‫توسعه دهندگان ناراضی ‪26۷ ....................................... ................................ ................................‬‬
‫دسترسی پیدا کردن از طریق سیم ‪268 ......................... ................................ ................................‬‬
‫درسهای فراگرفته شده ‪2۷3 ....................................... ................................ ................................‬‬
‫آخرین نظرات ‪2۷4 ..................... ................................ ................................ ................................‬‬
‫جنگیدن با شبکهَکُند ‪2۷6 ............ ................................ ................................ ................................‬‬
‫ویژگیهای ترمیم خطای ‪2۷۷ ............................. ................................ ................................ TCP‬‬
‫ارسالهای مجدد ‪2۷۷ ......... ................................ ................................ ................................ TCP‬‬
‫تصدیقهای المثنی ‪ TCP‬و ارسالهای مجدد سریع ‪283 ................................ ................................‬‬
‫کنترل جریان ‪290 .............. ................................ ................................ ................................ TCP‬‬
‫تنظیم اندازهی پنجره ‪292 ............ ................................ ................................ ................................‬‬
‫متوقف کردن جریان داده با یک آگهی پنجرهی صفر ‪293 ........................... ................................‬‬
‫پنجرهی لغزان ‪ TCP‬در عمل ‪294 ................................ ................................ ................................‬‬
‫فراگرفتن از بستههای کنترل خطای و کنترل جریان‪299 ...................... ................................ TCP‬‬
‫بستههای ارسال مجدد ‪299 .......... ................................ ................................ ................................‬‬
‫بستههای ‪ ACK‬المثنی ‪300 .......... ................................ ................................ ................................‬‬
‫بستههای پنجرهی صفر و ‪300 ................... ................................ ................................ keep-alive‬‬
‫تعیین منشأ تأخیر باال ‪301 ........... ................................ ................................ ................................‬‬
‫ارتباطات معمولی ‪301 ................. ................................ ................................ ................................‬‬
‫ارتباطات کند ‪302 ...................... ................................ ................................ ................................‬‬
‫تاخیرکابل ‪302 .....................................................................................................................................‬‬
‫تأخیر کاربر ‪304 ..................................................................................................................................‬‬
‫تأخیر سرور ‪305 ..................................................................................................................................‬‬
‫چارچوب تعیین مکان تأخیر ‪306 ................................. ................................ ................................‬‬
‫مبناسازی شبکه ‪30۷ .................... ................................ ................................ ................................‬‬
‫خط مبنای سایت ‪308 ................. ................................ ................................ ................................‬‬
‫خط مبنای میزبان ‪309 ................. ................................ ................................ ................................‬‬
‫خط مبنای برنامهی کاربردی ‪311 ................................ ................................ ................................‬‬
‫نکات دیگر در خصوص خطوط مبنا ‪312 .................... ................................ ................................‬‬
‫اسکن ‪318 ........................ ................................ ................................ ................................ SYN‬‬
‫استفاده از فیلترها در خصوص اسکنهای ‪321 .................................... ................................ SYN‬‬
‫شناسایی پورتهای باز و بسته ‪323 .............................. ................................ ................................‬‬
‫‪ Fingerprinting‬سیستم عامل ‪324 .............................. ................................ ................................‬‬
‫‪ Fingerprinting‬منفعل ‪325 ........ ................................ ................................ ................................‬‬
‫‪ Fingerprinting‬فعال ‪328 .......... ................................ ................................ ................................‬‬
‫بهرهکشی ‪328 ............................ ................................ ................................ ................................‬‬
‫عملیات ‪329 .................. ................................ ................................ ................................ Aurora‬‬
‫آلوده کردن حافظه ‪338 ..................................... ................................ ................................ ARP‬‬
‫تروجان دسترسی از راه دور ‪345 ................................. ................................ ................................‬‬
‫آخرین نظرات ‪355 ..................... ................................ ................................ ................................‬‬
‫تحلیل بستهی بیسیم ‪358 ............ ................................ ................................ ................................‬‬
‫مالحظات فیزیکی ‪358 ................ ................................ ................................ ................................‬‬
‫شنود یک کانال در هر بار ‪359 .................................... ................................ ................................‬‬
‫احراز هویت ناموفق ‪382 ................................... ................................ ................................ WEP‬‬
‫احراز هویت موفق ‪383 ..................................... ................................ ................................ WPA‬‬
‫احراز هویت ناموفق ‪386 ................................... ................................ ................................ WPA‬‬
‫مقدمه مترجم‬
‫برنامههای کاربردی بسیاری برای شنود و ربایش بستههای‬
‫داده جهت تحلیل شبکه وجود دارد‪ ،‬ولی‪Wireshark‬‬
‫بهعنوان یک ابزار شنود بسته در شبکه مزایای زیادی نسبت به‬
‫سایرین دارد که آن را برای استفادهی حرفهایهای شبکه‬
‫جذاب مینماید‪ .‬این برنامه هم برای افراد تازهکار و هم برای‬
‫تحلیلگر حرفهای بسته است و ویژگیهای گوناگونی را برای‬
‫جلب نظر هر گروه را دارا است‪.‬این برنامه ادامه پروژه متنباز‬
‫‪ Etheral‬است و از آنجایی که ‪ Wireshark‬تحت یک مدل متنباز طراحیشده است‪ ،‬بنابراین‪،‬‬
‫پشتیبانی پروتکلهای جدید با هر بهروزآوری اضافه میشود‪.‬‬
‫محبوبیت ‪ Wireshark‬بهطور قابل توجهی افزایش پیدا کرده است و هم اکنون در تیم طراحی‬
‫آن بیش از ‪ 500‬نفر شرکت دارند‪.‬‬
‫با توجه به اینکه سناریوهای این کتاب در نسخه قدیمی نرمافزار ‪ Wireshark‬اجرا شده بود‬
‫در این ترجمه تمام سناریوها در نسخه به روز اجرا و تصاویر آن درج شده است ‪ .‬از طرفی‬
‫مباحثی که دیگر کاربردی در این نرم افزار نداشته حذف و موضوعات کاربردی جدیدی‬
‫گردآوری و درج شده است ‪ .‬امید است این اثر مفید و مؤثر واقع شود ‪ .‬لطفاً نظرات و‬
‫پیشنهادات خود را به آدرس ایمیل ‪ kkamaei@ut.ac.ir‬ارسال نمایید‪.‬‬

‫کمال کمایی‬
‫پائیز ‪ – 94‬دانشگاه تهران‬

‫‪1‬‬
‫مقدمه نویسنده‬
‫ویرایش دوم کتاب تحلیل داده شبکه در دوره یک سال ونیمه از ‪ 2009‬تا اواسط ‪2011‬‬
‫نوشتهشده‪ ،‬تقریباً ‪ 4‬سال بعد از اولین نسخه است‪ .‬این کتاب شامل همه مفاهیم جدید با‬
‫سناریوهای کاملی از ربایش‪ 1‬فایلها میباشد‪.‬‬

‫چرا این کتاب؟‬


‫ممکن است کمی برایتان عجیب باشد که چرا باید این کتاب را بخرم در حالیکه کتابهای‬
‫مشابه زیادی در مورد تحلیل داده وجود دارد؟ جواب در عملی بودن این کتاب بانگاه‬
‫کاربردی نهفته است!‬
‫هیچ چیزی به اندازه یک تجربه واقعی نیست‪ .‬خوب باآن روبهرو شوید‪ .‬در این کتاب تا جای‬
‫ممکن سعی شده با تجربههای عملی تحلیل داده آشنا شوید و مثالهای زیادی را عملیکنید‪.‬‬

‫مفاهیم و دیدگاهها ‪:‬‬


‫من عموماً شخص خونسردی هستم به همین دلیل وقتی چیزی را آموزش میدهم با آرامش‬
‫کامل به ارائه مفاهیم آن میپردازم‪ .‬بیانی که در این کتاب بهکاررفته گویای این واقعیت‬
‫خواهد بود‪ .‬گمشدن در میان اصطالحات فنی و نامفهوم در بیان مفاهیم کار ساده ایست‪ ،‬اما‬
‫تمام سعی خودم را کردهام تا حد امکان از موارد غیر ضروری خوداری کنم‪.‬‬
‫تمام تعاریف را واضح با اشاره مستقیم و بدون اضافات بیان کردهام‪ .‬به هر حال من از ایالت‬
‫بزرگ کنتاکی هستم و سعی میکنم واژههای بزرگ را در بیان کوچک بگنجانم‪ .‬اگر واقعاً‬
‫میخواهید تحلیل داده را فرا بگیرد بایستی به چند فصل اول کتاب به دلیل در بر داشتن مفاهیم‬
‫مهم و اصلی توجه خاصی داشته باشید‪.‬‬

‫‪ Capture 1‬به معنی دریافت و به چنگ آوردن است به روش قاپیدن به کار میرود در این کتاب واژه ربایش نزدیکترین معنی‬
‫به آن انتخاب شده است‪ .‬مترجم‬

‫‪2‬‬
‫فصل سوم به بعد کتاب در اصل بهصورت عملی است‪ .‬ممکن است شما در محیط کاریتان‬
‫چنین سناریوهایی ندیده باشید اما باید توانایی کاربرد مفاهیمی را که در پیش رو میآموزید‬
‫داشته باشید‪.‬‬
‫در اینجا تفکیک فصول این کتاب را مشاهده مینمایید‪.‬‬
‫فصل ‪ :1‬تحلیل بسته داده و اصول شبکه‬
‫فصل ‪ :2‬نفوذ به کابل شبکه‬
‫فصل ‪ :3‬مقدمهای بر ‪Wireshark‬‬
‫فصل ‪ :4‬کار با بستههای ربایش شده‬
‫فصل ‪ :5‬خصوصیات پیشرفته ‪Wireshark‬‬
‫فصل ‪ :6‬پروتکلهای رایج الیههای پائین‬
‫فصل ‪ :۷‬پروتکل الیههای باالتر‬
‫فصل ‪ :8‬اصول سناریوهای دنیای واقعی‬
‫فصل ‪ :9‬مبارزه با شبکه کند‬
‫فصل ‪ :10‬تحلیل بسته برای امنیت‬
‫فصل ‪ :11‬تحلیل بستهای بیسیم‬

‫چگونه از این کتاب استفاده کنیم؟‬


‫این کتاب را به دو صورت قابل استفاده برای دانشجویان و یا متخصصین است‪.‬‬
‫بهعنوان یک متن آموزشی که فصل به فصل با هدف درک تحلیل بسته داده در شبکه‬
‫میخوانید‪ .‬یعنی توجه مخصوص به سناریوها واقعی در فصول آخر‪.‬‬
‫و بهعنوان یک مرجع عملی مشخصاتی از ‪ Wireshark‬وجود دارد که اغلب استفاده‬
‫نمیشوند‪ .‬بنابراین ممکن است فراموش کنید که آنها چه طور کار میکنند‪ .‬این کتاب‪،‬‬
‫کتابی عالی در قفسه کتابخانه شما خواهد بود که خصوصیات مشخص را سریعاً میتوانید به‬

‫‪3‬‬
‫کار ببرید‪ .‬همچنین چارتها‪ ،‬دیاگرامها‪ ،‬و متدولوژهایی منحصر به فردی که در زمان کار‬
‫تحلیل بسته بهعنوان مرجع به کمک شما میآید‪ .‬همه فایلهای ربایش شده در این کتاب در‬
‫آدرس ‪ http://www.nostarch.com/packet2.htm‬زیر قابل دسترسی خواهد بود‪.‬‬
‫برای افزایش کارآیی کتاب توصیه میکنم این فایلها دانلود کنید و بهعنوان مثال شروع به‬
‫تحلیل نمایید‪.‬‬

‫صندوق فنّاوری روستایی‬


‫نمیتوانم مقدمه بنویسم در حالیکه به بهترین چیزهایی که این کتاب برایم آورده بیتوجه‬
‫باشم‪ .‬بعد از انتشار اولین نسخه این کتاب من سازمان غیر انتفاعی ‪ 501‬را تأسیس کردم که‬
‫در اوج بزرگترین رویاهای من است‪.‬‬
‫دانشآموزان روستایی حتی آنهایی که بهترین نمرات را دارند اغلب کمترین شانس‬
‫بهرهگیری از فنّاوری را نسبت به هم کالسهای خود در شهر و حومه دارند‪.‬‬
‫صندوق فنّاوری روستایی برای کاهش فاصله دیجیتالی بین جوامع روستایی و شهری تالش‬
‫میکند‪ .‬با ارائه برنامههای بورسیه‪ ،‬وتشویقات عمومی به دفاع از فنّاوری در مناطق روستایی‬
‫بپردازد‪.‬‬
‫برنامه بورسیه ما دانشآموزانی را هدف گرفته که در مناطق روستایی زندگی میکنند و عالقه‬
‫شدیدی به فنّاوری کامپیوتر با قصد ادامه آن در آینده را دارند‪.‬‬
‫خوشوقتم از اعالم اینکه ‪ 100‬درصد حق تألیف این کتاب مستقیماً به این صندوق اختصاص‬
‫داده شده تا بتواند این بورسیه را تدارک ببیند‪.‬‬

‫‪4‬‬
‫فصل اول‬
‫تحلیل بسته داده‬
‫تحلیل بسته داده در شبکه‬ ‫فصل اول‬

‫تحلیل بسته داده و اصول شبکه‬


‫روزانه میلیونها داده در شبکههای کامپیوتری به دلیل آلودگی به نرمافزار جاسوسی درون‬
‫پیکربندی یک مسیریاب‪ 1‬به خطا میرود‪ .‬و غیرممکن است آن را به سرعت رفع کرد‪.‬‬
‫بهترین راهی که میشود امیدوار بود‪ ،‬خود را با دانش و ابزار الزم برای پاسخ به مسائل کامالً‬
‫آماده کنیم‪.‬‬
‫ریشه همه مسائل شبکهها از سطح بسته داده است‪ ،‬بطوریکه برنامههای کاربردی با ظاهری‬
‫زیبا میتواند پیادهسازی وحشتناکی داشته باشندگرفته تا پروتکل قابل اعتمادی که مانند بد‬
‫افزار‪ 2‬عمل میکند‪.‬‬
‫برای درک بهتر شبکههای کامپیوتری‪ ،‬ما به سطح بستهها میرویم‪ .‬در این سطح چیزی برای‬
‫ما مخفی نیست‪ .‬چیزی تار و ساختار گمراهکننده ندارد‪ .‬گرافیکهای قابل توجه و یا کارمندان‬
‫غیر قابل اعتماد وجود ندارد‪ .‬در این سطح هیچ راز واقعی وجود ندارد مگر رمز شده باشد‪.‬‬
‫کنترل شبکه و حل مشکالت آن بیشترین کاری است که درسطح بسته میتوانیم انجام دهیم‪.‬‬
‫این دنیای تحلیل بسته داده است‪.‬‬
‫این کتاب به دنیای تحلیل بسته داده شیرجه میزند‪ .‬چگونه به شبکههای ارتباطی کُند متصل‬
‫شویم و گلوگاههای نرمافزارها را مشخص کنیم و همین طور هکرها را از میان سناریوهای‬
‫واقعی ردیابی نماییم‪ .‬بعد از اتمام این کتاب شما قادر خواهید بود تکنیکهای پیشرفته تحلیل‬
‫داده را پیادهسازی کنید که بسیار در حل مشکالت شبکه شما مؤثر خواهد بود‪ .‬در این فصل‬
‫با مباحثی پایه از شبکه ارتباطی شروع میکنیم‪.‬‬

‫‪1‬‬
‫‪Router‬‬
‫‪2‬‬
‫‪Malicious‬‬
‫‪6‬‬
‫تحلیل بسته داده در شبکه‬ ‫فصل اول‬

‫تحلیل بسته و شنود بسته‬


‫تحلیل بسته معموالً به شنود‪ 1‬بسته یا تحلیل پروتکل نسبت داده میشود‪ ،‬پروسه ربایش و تفسیر‬
‫بستههای جاری در شبکه با هدف درک بهتر از آنچه در شبکه اتفاق میافتد سودمند است‪.‬‬
‫تحلیلگر بسته را معموالً شنودکننده بسته نیز گویند‪ ،‬تحلیلگر از ابزاری برای ربایش داده از‬
‫درون کابلها بهره میگیرد‪ .‬تحلیلگر بسته در موارد زیر میتواند کمک نماید‪.‬‬
‫‪ -‬درک خصوصیات شبکه‬
‫اینکه چه کسی روی شبکه است‬ ‫‪-‬‬
‫‪ -‬تشخیص استفادهکنندگان پهنای باند موجود شبکه‬
‫‪ -‬مشخص نمودن زمان اوج‪ 2‬استفاده از شبکه‬
‫‪ -‬مشخص نمودن حملههای ممکن یا فعالیت بدافزارها‬
‫‪ -‬یافتن نرمافزارهای غیرامن و باگدار‬
‫انواع گوناگونی نرم افزارهای شنود بسته بهصورت رایگان و تجاری وجود دارد‪ .‬هر کدام‬
‫برای اهداف مختلفی طراحی شدن‪ .‬تعدای شامل ‪ Tcpdump‬و ‪ Omnipeek‬و‬
‫‪(Wireshark‬که اختصاصاً در این کتاب مورد استفاده قرار میگیرد) هستند‪Tcpdump .‬‬
‫برنامه خط دستوری است و ‪ Omnipeek‬و ‪ Wireshark‬رابط گرافیکی کاربر یا ‪ GUI‬دارند‪.‬‬

‫ارزیابی شنودکننده بسته‪:‬‬


‫الزم است هنگام انتخاب یک شنودکننده بسته عوامل زیر را درنظر داشته باشید‪.‬‬

‫‪ Sniff 1‬به معنی بو کشیدن است ولی در دنیای تحلیل داده و شبکه به نوعی به معنی نظارت بر داده ها از طریق ردیابی و بو‬
‫کشیدن تفسیر میشود‪ .‬به همین دلیل نزدیکترین واژه به این عمل‪ ،‬واژه شنود انتخاب شده است ‪ .‬مترجم‬
‫‪2‬‬
‫‪Pick‬‬
‫‪۷‬‬
‫تحلیل بسته داده در شبکه‬ ‫فصل اول‬

‫پروتکلهای پشتیبانی شده‪:‬‬


‫همه شنود کنندههای بسته پروتکلهای گوناگونی را تفسیر میکنند‪ .‬بیشترشان قادرند‬
‫پروتکلهای رایج شبکه مانند ‪ IPv4‬و ‪ ICMP‬در الیه انتقال ‪ TCP‬و‪ UDP‬و حتی در الیه‬
‫کاربرد مانند ‪ DNS‬و ‪ HTTP‬را تفسیر نمایند ‪.‬‬
‫اگرچه ممکن است این ابزارهای شنود نتوانند پروتکلهای جدیدتر یا غیر معمول مانند‬
‫‪ IPv6,SMBv2,SIP‬را پشتیبانی کنند‪ .‬وقتی یک ابزار شنود را انتخاب میکنید‪ ،‬مطمئن‬
‫شوید که پروتکل مورد نظر شما در شبکه را پشتیبانی میکند‪.‬‬
‫کارایی ساده‪:‬‬
‫نصب ساده و روان کلیه عملیاتهای استاندارد در ساختار برنامه شنود بسته باید مورد توجه‬
‫باشد‪ .‬برنامه انتخابی شما بایستی در سطح مهارت شما باشد‪ .‬اگر تجربه بسیار کمی در زمینه‬
‫تحلیل داده و بسته دارید بهتر است از برنامههای پیشرفته نظیر شنود بسته خط دستوری‪ 1‬نظیر‬
‫‪ Tcpdump‬خوداری کنید‪.‬‬
‫به سخن دیگر اگر شخص با تجربهای هستید برنامه پیشرفته جذابتر هستند‪ .‬ممکن است برای‬
‫سناریوی خاصی چند برنامه شنود بسته را با هم ترکیب کنید و خروجی مناسب را بدست‬
‫آورید‪.‬‬
‫هزینه‪:‬‬
‫موضوع جالب در مورد شنود بسته وجود تعداد زیادی برنامههای رایگان و تجاری در حال‬
‫رقابت با هم است‪ .‬برجستهترین تفاوت بین نسخههای رایگان و تجاری نوع موتور گزارش‬
‫گیری آن است ‪ .‬نوع تجاری ماژولهای گزارشگیری بسیار متنوعی دارند که در نوع رایگان‬
‫وجود ندارد‪.‬‬

‫‪1‬‬
‫‪Command line‬‬
‫‪8‬‬
‫تحلیل بسته داده در شبکه‬ ‫فصل اول‬

‫پشتیبانی نرمافزار‪:‬‬
‫بعد از تسلط کافی در اصول نرم افزارشنود بسته اغلب با مشکالتی در طول کار با برنامه‬
‫برمیخورید و نیاز به پشتیبانی دارید‪ .‬برای ارزیابی پشتیبانی نرمافزار‪ ،‬به مستندات تکمیلی‪،‬‬
‫اطاقهای گفتگو‪ ،‬و لیستهای ایمیل نگاهی بیندازید‪ .‬هرچند ممکن است نرمافزارهای‬
‫رایگان مانند ‪ Wireshark‬توسط تولیدکننده پشتیبانی نشود اما جامعه کاربران که از این‬
‫نرمافزار بهره میگیرند این خأل را جبران میکنند‪.‬‬
‫این جوامع کاربران‪ ،‬حامیان صفحات بحث‪ ،‬وبالگ و اطالعرسانیهایی را به وجود آوردهاند‬
‫که به شما در استفاده از این نرمافزار کمک میکند‪.‬‬

‫پشتیبانی از سیستمعامل‬
‫متأسفانه اکثر برنامههای شنود بسته تمام سیستم عاملها را پشتیبانی نمیکنند‪ .‬بنابراین برنامهای‬
‫را استفاده کنید که سیستم مورد نظر شما را پشتیبانی میکند و اگر مشاور و متخصصی هستید‬
‫که بایستی تحلیل در همه سیستم عاملها داشته باشید‪ ،‬بایستی مدلی از شنود بسته را انتخاب‬
‫کنید که روی همه سیستم عاملها کار کند‪ .‬در نظر داشته باشید که گاهی ممکن است شما‬
‫بستهای را از یک دستگاه تحلیل کنید و به دستگاهی با سیستم عامل متفاوت بفرستید که این‬
‫موضوع خود سبب خواهد شد تا برای هر سیستم عامل از نرم افزار شنود متفاوتی استفاده‬
‫کنید‪.‬‬

‫چگونه شنود بسته کار میکند‬


‫پروسه شنود بسته شامل همکاری و تالشی مشترک بین سختافزار و نرمافزار است‪ .‬این تالش‬
‫به سهگام دستهبندی میشود‪.‬‬

‫‪9‬‬
‫تحلیل بسته داده در شبکه‬ ‫فصل اول‬

‫جمعآوری‬
‫در اولین گام برنامه شنود‪ ،‬داده باینری را از درون کابل جمعآوری میکند‪ .‬معموالً این کار‬
‫با سوئیچینگ رابط‪ 1‬شبکه انتخابی در حالت بیقاعده انجام میشود‪.‬‬
‫در این حالت کارت شبکه فقط به ترافیک آدرسدهی شده گوش نمیکند بلکه به تمام‬
‫ترافیک شبکه گوش میکند‪.‬‬
‫تبدیل‬
‫در این گام داده شنود شده در گام اول به فرم قابل خواندن تبدیل میشود‪ .‬این جایی است‬
‫که اکثر نرم افزارهای پیشرفته شنود بسته خط دستوری متوقف میشوند‪ .‬در این لحظه داده‬
‫شبکه به فرمی است که در الیه اول یا فیزیکی تفسیر شده‪ ،‬و عمده تحلیل برای کاربر نهایی‬
‫واگذار میشود‪.‬‬
‫تجزیهوتحلیل‬
‫سومین و آخرین گام یک تجزیه و تحلیل دقیق داده بسته دریافتی است‪.‬نرمافزارتحلیلگر با‬
‫شنود‪ ،‬داده شبکه را گرفته و با بازبینی پروتکل آن بر اساس اطالعات استخراج شده شروع به‬
‫تجزیه و تحلیل خصوصیات پروتکل آن مینماید‪.‬‬

‫کامپیوترها چگونه ارتباط برقرار میکنند‪:‬‬


‫برای اینکه تجزیه و تحلیل بسته داده را بهتر بفهمید ابتدا باید بدانید که کامپیوترها چگونه با‬
‫هم ارتباط برقرار میکنند‪ .‬در این بخش به آموزش مبانی شبکه میپردازیم و مدل ‪ ۷‬الیهای‬
‫‪ ،OSI‬فریمهای شبکه داده و سخت افزاری که آنرا پشتیبانی میکند‪ ،‬را بررسی میکنیم‪.‬‬

‫پروتکلها شبکه‬
‫شبکههای مدرن امروزی از سیستمهای گوناگونی ساخته شدهاند که بر روی سختافزارهای‬
‫متفاوتی اجرا میشوند‪ .‬برای کمک به این ارتباط ما از مجموعهای از زبانهای رایج به نام‬

‫‪1‬‬
‫‪interface‬‬
‫‪10‬‬
‫تحلیل بسته داده در شبکه‬ ‫فصل اول‬

‫پروتکل‪ 1‬استفاده میکنیم‪ .‬رایجترینها شامل ‪ TCP‬پروتکل کنترل انتقال‪ IP ،‬پروتکل‬


‫اینترنت‪ ARP ،‬پروتکل تفکیک آدرس و ‪ DHCP‬میباشد‪.‬‬
‫یک پشته پروتکلی‪ 2‬یک گروه منطقی از پروتکلهایی است که با هم کار میکنند‪ .‬یکی از‬
‫بهترین راههای درک پروتکلها شبیه دانستن آنها به دستور زبانی است که نوشتن و بیان زبان‬
‫انسانها حاکم است‪ .‬هر زبانی مثالً برای صرف فعلها‪ ،‬چه طور احوالپرسی کنیم‪ ،‬چه طور‬
‫تشکر کنیم‪ ،‬دستور خودش را دارد‪ .‬پروتکل هم بیشتر کارهایش را به همین روش انجام‬
‫میدهد‪ .‬اجازه اینکه مشخص کنیم کدام بسته باید مسیریابی شود‪ ،‬چه طور ارتباط اولیه برقرار‬
‫کنیم و چه طور از رسیدن داده آگاهی پیدا کنیم‪.‬‬
‫پروتکل با توجه به عملکردش میتواند خیلی ساده ویا بسیار پیچیده باشد‪ .‬اگرچه پروتکلهای‬
‫گوناگون اغلب تفاوتهای شدیدی دارند ولی بیشتر پروتکلهای رایج موارد زیر را مدنظر‬
‫دارند‪.‬‬
‫آغاز ارتباط‪ :‬کاربر یا سرور ارتباط را آغاز میکند؟ چه اطالعاتی بایستی از پیش برای‬
‫برقراری ارتباط تغییر کند؟‬
‫مذاکره مشخصههای اتصال‪ :‬آیا ارتباط پروتکل رمزنگاریشده است؟ چگونه کلیدهای‬
‫رمزنگاری بین کاربران ردوبدل میشود؟‬
‫فرمت داده ‪ :‬چگونه داده در بستههای مورد درخواست قرار میگیرد؟ چه پردازشی هنگام‬
‫دریافت بسته توسط دستگاه مقصد صورت میگیرد؟‬
‫خطا یابی و تصحیح ‪ :‬چه میشود اگر بستهای به دلیلی خیلی طول بکشد تا به مقصد برسد؟‬
‫کاربر چگونه در زمان قطع ارتباط کوتاه با سرور خود را بازیابی کند؟‬
‫پایان ارتباط ‪ :‬چگونه یک میزبان به دیگران خاتمه ارتباط را اطالع دهد؟ چه نوع اطالعات‬
‫نهایی باید برای پایان مطبوع ارتباط ارسال شود؟‬

‫‪1‬‬
‫‪Protocol‬‬
‫‪2‬‬
‫‪Protocol Stack‬‬
‫‪11‬‬
‫تحلیل بسته داده در شبکه‬ ‫فصل اول‬

‫مدل هفت الیهای ‪OSI‬‬


‫پروتکلها بر اساس نوع عملیاتشان توسط مدل ‪ OSI‬الیهبندی شدهاند‪ .‬این مدل پروتکلهای‬
‫ارتباطی را در هفت الیه‪ 1‬متمایز تقسیم کرده در شکل ‪ 1-1‬نشان دادهشده است‪ .‬این مدل‬
‫سلسله مراتبی سبب درک بهتر و سادگی شبکههای ارتباطی شده است‪ .‬الیه کاربرد در الیه‬
‫باالیی برنامههای اصلی را به منابع شبکه دسترسی دارند‪ ،‬را ارائه میکند‪ .‬الیه پائینی که الیه‬
‫فیزیکی‪ ،‬دادههای واقعی شبکه عبور میکنند‪ .‬پروتکلها برای اطمینان از عبور بی عیب داده‬
‫در الیههای گوناگون الیه باالدست و پائیندست‪ ،‬با هم کار میکنند‪.‬‬

‫شکل ‪ : 1-1‬مدل ‪ ۷‬الیه‬

‫یادداشت‪ :‬مدل ‪ OSI‬در سال ‪ 1983‬توسط سازمان بینالمللی استانداردسازی منتشر شد‪ .‬با‬
‫سند شماره ‪ ۷498 ISO‬نامیده میشود‪ .‬این مدل مورد حمایت صنایع و توسعهدهندگان‬
‫پروتکل نبوده‪ .‬بنابراین ‪ OSI‬تنها مدل شبکه موجود نیست‪ ،‬بعضی افراد مدل شناختهشده‬
‫‪ TCP/IP‬محصول وزارت دفاع آمریکا را ترجیح میدهند‪.‬‬

‫‪Layer‬‬
‫‪1‬‬

‫‪12‬‬
‫تحلیل بسته داده در شبکه‬ ‫فصل اول‬

‫الیه ‪ :7‬الیه کاربرد‬


‫باالترین الیه مدل ‪ OSI‬است‪ .‬این الیه دستگاهای است تا کاربر نهایی به منابع حقیقی شبکه‬
‫دسترسی داشته باشد‪ .‬این تنها الیهای است که توسط کاربر دیده میشود و رابط گرافیکی‬
‫مناسب تمام فعالیتهای شبکهای کاربر را دارد‪.‬‬
‫الیه ‪ :6‬الیه ارائه‬
‫این وظیفه تبدیل داده دریافتی به فرمتی که قابلخواندن برای الیه کاربرد باشد‪ .‬الیه ارائه‬
‫انواع مختلفی از رمزگذاری و رمزگشایی را به کار میبرد که برای امنیت داده استفاده‬
‫میشود‪ .‬دادههای که در این الیه رمزگذاری یا رمزگشایی میشوند بسته به الیه کاربرد دارد‪.‬‬
‫الیه ‪ :5‬الیه نشست‬
‫این الیه مدیریت گفتگو یا نشست بین دو کامپیوتر را به عهده دارد‪ .‬این الیه ارتباط بین تمام‬
‫دستگاههای ارتباطی را آغاز‪ ،‬مدیریت و خاتمه مینماید‪ .‬این الیه مسئول برقراری اینکه آیا‬
‫ارتباط دوطرفه است؟ یکطرفه است؟ ختم ارتباط بین دو میزبان به نحو مناسب بهجای قطع‬
‫آن بهصورت خیلی سریع‪.‬‬
‫الیه ‪ :4‬الیه انتقال‬
‫هدف اولیه از الیه انتقال‪ ،‬انتقال با اطمینان داده به الیههای پائینی میباشد‪ .‬در خالل قطعهبندی‪،‬‬
‫تفکیک قطعهبندی وکنترل خطا‪ ،‬جریان داده الیه انتقال از نقطهای به نقطه دیگر بدون خطا‬
‫صورت میگیرد‪ .‬به خاطر اطمینان از کار طاقت فرسای انتقال داده‪ ،‬مدل ‪ OSI‬تمام الیه را به‬
‫انتقال اختصاص داده است‪Firewall .‬های معین و پروکسی سرورها دراین الیه کار میکنند‪.‬‬
‫الیه ‪ :3‬الیه شبکه‬
‫این الیه مسئول مسیردهی داده در شبکه فیزیکی است و البته یکی از پیچیدهترین الیههای‬
‫‪ OSI‬است‪ .‬این الیه مسئول آدرس دهی منطقی میزبانهای شبکه است‪ .‬برای مثال آدرس ‪IP‬‬
‫این الیه‪ ،‬قطعهسازی بستهها و در بعضی موارد خطایابی در این الیه به کار میبرد‪.‬‬

‫‪13‬‬
‫تحلیل بسته داده در شبکه‬ ‫فصل اول‬

‫الیه ‪ :2‬الیه پیوند داده‬


‫این الیه ابزار انتقال داده در طول شبکه فیزیکی را مهیا میکند‪ .‬قصد اولیه این الیه ارائه طرح‬
‫آدرسیدهی برای شناسایی تمام دستگاههای فیزیکی است (مانند ‪ MAC‬آدرس)‪ .‬پلها و‬
‫سوئیچ دستگاههای فیزیکی هستند که در الیه پیوند داده عمل میکنند‪.‬‬

‫الیه ‪ :1‬الیه فیزیکی‬


‫پایینترین الیه در مدل ‪ OSI‬الیه فیزیکی است که دادههای شبکه انتقال مییابد‪ .‬این الیه‬
‫خصوصیات فیزیکی و الکتریکی کلیه دستگاهها را مانند ولتاژ‪ ،‬هاب‪ ،‬آداپتور شبکه‪ ،‬رپیتررز‪،‬‬
‫و خصوصیات کابلکشی مشخص میکند‪.‬‬
‫الیه فیزیکی اتصالها را آغاز میکند و پایان میدهد‪ ،‬دستگاه منابع ارتباطی مشترک را فراهم‬
‫میآورد‪ ،‬و تبدیل امواج از دیجیتال به آنالوگ و برعکس را انجام میدهد‪.‬‬
‫لیست جدول ‪ 1-1‬بعضی از پروتکلهای رایج که در هر الیه اختصاصی ‪ OSI‬استفاده میشود‬
‫نشان داده‪.‬‬

‫جدول ‪ :1-1‬پروتکلهای رایج در هر الیه‬

‫‪14‬‬
‫تحلیل بسته داده در شبکه‬ ‫فصل اول‬

‫باید بدانید که مدل ‪ OSI‬بیشتر از یک مدل استاندارد پیشنهادی نیست‪ .‬همینطور در این کتاب‬
‫که پیش میرویم متوجه میشوید که کنش پروتکلها در الیههای مختلف‪ ،‬شیوههای برخورد‬
‫با مسائل شبکه را شکل میدهد‪.‬‬
‫بهعنوان مثال موضوعات مسیریاب مسائل الیه سوم و موضوعات نرمافزار مسائل الیه هفت‬
‫شناخته میشوند‪.‬‬
‫یادداشت‪ :‬در یک بحث کاری‪ ،‬همکاری به من گفت کاربری از اینکه نمیتواند به منابع‬
‫شبکه دسترسی داشته باشد شاکی بود‪ .‬دلیل مسئله وارد کردن خطای کلمه عبور بود‪.‬‬
‫به همین دلیل همکارم به این مسئله الیه ‪ 8‬نسبت داد‪ .‬الیه ‪ 8‬یکالیه غیر رسمی برای‬
‫کاربر است‪.‬‬
‫دادهها چه طور در مدل ‪ OSI‬جریان مییابند؟ انتقال اولیه داده از الیه کاربرد در سیستم انتقال‬
‫شروع میشود‪ .‬داده مسیرش را رو به پائین تا رسیدن به الیه فیزیکی دنبال میکند تا به نقطه‬
‫ارسال الیه فیزیکی به گیرنده سیستم مقصد برسد‪ .‬پس از آن همین جهت را معکوس طی‬
‫کرده تا به الیه کاربرد در سیستم دیگر برسد‪.‬‬
‫این سرویس توسط پروتکلهای مختلف در الیههای مدل ‪ OSI‬بهصورت غیرتکراری ارائه‬
‫میشود‪ .‬برای مثال اگر پروتکلی دریک الیه سرویس ویژهای ارائه کند این سرویس در سایر‬
‫الیهها ارائه نخواهد شد‪ .‬پروتکلها در الیههای مختلف ممکن است جزئیاتی با اهداف مشابه‬
‫داشته باشند ولی عملکرد آنها در هر الیه کمی متفاوت است‪ .‬پروتکلها در الیههای مشابه‬
‫در سیستم ارسال و دریافت دیگر را همتا میگویند‪ .‬برای مثال اگر الیه ‪ ۷‬در کامپیوتر‬
‫ارسالکننده مسئول رمزنگاری داده است‪ ،‬در کامپیوتر گیرنده نیز الیه ‪ ۷‬مسئول رمزگشایی‬
‫میباشد‪.‬‬

‫‪15‬‬
‫تحلیل بسته داده در شبکه‬ ‫فصل اول‬

‫در شکل ‪ 2-1‬نمایش گرافیکی مدل ‪ OSI‬برای تبادل داده میان دو کاربر را نمایش میدهد‪.‬‬
‫همانطور که مشاهده میکنید داده از باال به پائین از یک کاربر به دیگری ارسال و پس از‬
‫رسیدن به کاربر دوم‪ ،‬همان مسیر را بهصورت معکوس طی میکند‪.‬‬

‫شکل ‪ :2-1‬نمایش مدل گرافیکی ‪OSI‬‬

‫هر الیه در مدل ‪ OSI‬فقط قابلیت ارتباط با الیه باالیی و پائینی خود را دارد‪ .‬برای مثال الیه ‪2‬‬
‫میتواند فقط از الیه ‪ 1‬و ‪ 3‬ارسال و دریافت داشته باشد‪.‬‬

‫کپسوله سازی داده‬


‫پروتکلها در الیههای مختلف مدل ‪ OSI‬با کمک کپسولهسازی‪ 1‬ارتباط برقرار میکنند‪ .‬هر‬
‫الیه در پشته الیهها مسئول اضافه کردن سرآیند و پاآیند‪( 2‬بیتهای اضافهای که هر الیه جهت‬
‫مسیریابی به بستهها میافزاید) برای ارتباط میباشد‪.‬‬

‫‪1‬‬
‫‪Encapsolation‬‬
‫‪2‬‬
‫‪Header and Footer‬‬
‫‪16‬‬
‫تحلیل بسته داده در شبکه‬ ‫فصل اول‬

‫برای مثال وقتی الیه انتقال از الیه نشست داده دریافت میکند‪ ،‬به آن سرآیند اطالعاتی‬
‫خودش را قبل از عبور آن به الیه بعدی اضافه میکند‪.‬‬
‫پروسه کپسولهسازی پروتکل واحد داده یا‪ PDU‬شامل داده ارسالی و کلیه سرآیندهای‬
‫اضافهشده به آن میباشد‪ .‬وقتی داده در مدل ‪ OSI‬به پائین میرود ‪ PDU‬تغییر و به دلیل اضافه‬
‫نمودن سرآیند هر الیه بزرگتر میشود‪ PDU1 .‬وقتی به الیه فیزیکی میرسد فرم نهایی خود‬
‫را دارد و نقطه ارسال به کامپیوتر مقصد میباشد‪ .‬در کامپیوتر مقصد سرآیندها از ‪PDU‬‬
‫جداشده و وقتی به الیه کاربرد میرسد‪ ،‬فقط داده اصلی باقی میماند‪.‬‬
‫یادداشت‪ :‬عبارت بسته‪ 2‬اشاره به ‪ PDU‬دارد که شامل سرآیند تمام الیهها در مدل ‪ OSI‬است‪.‬‬
‫درک اینکه چگونه کپسوله سازی کار میکند کمی گیجکننده است‪ .‬بنابراین با ساخت‪،‬‬
‫انتقال و دریافت در مدل ‪ OSI‬نگاهی به یک مثال کاربردی میاندازیم‪.‬‬
‫به یاد داشته باشید که در طول این کتاب ما بحثی در مورد الیه نشست و الیه ارائه نخواهیم‬
‫داشت و این دوالیه غایب خواهند بود‪.‬‬
‫در این سناریو ما در کامپیوترمان سعی داریم آدرس ‪ http://www.google.com‬را در موتور‬
‫جستجوی خود وارد کنیم‪ .‬برای این پروسه‪ ،‬بایستی یک درخواست بسته تولید کنیم که از‬
‫کاربر مبدأ به سرور مقصد برود‪ .‬فرض میکنیم نشست ‪ TCP/IP‬آغازشده بود‪ .‬شکل ‪3-1‬‬
‫کپسوله سازی داده را نشان میدهد‪.‬‬

‫‪1‬‬
‫‪Protocol Data Unit‬‬
‫‪2‬‬
‫‪Packet‬‬
‫‪1۷‬‬
‫تحلیل بسته داده در شبکه‬ ‫فصل اول‬

‫شکل ‪ : 3-1‬فرآیند کپسوله سازی‬

‫یادداشت‪ :‬طراحی باال به پائین مدل ‪ OSI‬سبب شده که ما اغلب میگوییم یک پروتکل روی‬
‫یک پروتکل دیگر مینشیند‪ .‬یک پروتکل کاربردی مانند ‪ HTTP‬سرویس خاص خود را‬
‫ارائه مینماید و به پروتکل ‪ TCP‬جهت اطمینان از تحویل سرویسهایش اتکا میکند‪.‬‬
‫همچنین بهزودی میآموزید که ‪ DNS‬روی ‪ UDP‬مینشیند و ‪ TCP‬روی ‪.IP‬‬
‫به دلیل اینکه الیه ‪ 3‬مسئول آدرسدهی منطقی بسته میزبان الیه ‪ TCP‬بسته را به الیه ‪ IP‬رد‬
‫میکند‪ IP.‬سرآیند آدرس منطقی را تولید میکند و بسته را به الیه پیوند داده عبور میدهد‪.‬‬
‫آدرس فیزیکی اترنت‪ 1‬اکنون در سرآیند اترنت قرارگرفته و بسته کامالً اَسمبل شده و آماده‬
‫عبور از الیه فیزیکی بهصورت صفر و یک میباشد‪.‬‬
‫بسته کامل از سیستم شبکه کابلی عبور میکند تا اینکه به وب سرورهای گوگل برسد‪ .‬وب‬
‫سرور با خواندن بسته از پائین تا باال شروع میکند یعنی اینکه ابتدا الیه پیوند داده را میخواند‬
‫که شامل اطالعات آدرسدهی فیزیکی اترنت کارت شبکه برای مشخص کردن اینکه بسته‬

‫‪1‬‬
‫‪Ethernet‬‬
‫‪18‬‬
‫تحلیل بسته داده در شبکه‬ ‫فصل اول‬

‫برای سرور است‪ .‬وقتی این اطالعات پردازش میشوند اطالعات سرآیند الیه ‪ 2‬دور ریخته‬
‫میشود و اطالعات الیه ‪ 3‬پردازش میشود‪.‬‬
‫اطالعات آدرس ‪ IP‬به همان حالتی که در الیه ‪ 2‬خوانده شد‪ ،‬برای اطمینان از آدرسدهی‬
‫مناسب و عدم تکهتکه شدن بسته خوانده میشود‪ .‬این اطالعات نیز دور ریخته میشود تا‬
‫اینکه نوبت به پردازش الیه ‪ 4‬برسد‪.‬‬
‫اطالعات ‪ TCP‬الیه ‪ 4‬اکنون خوانده میشود تا اطمینان حاصل شود بسته بهصورت متوالی‬
‫دریافت شده است‪ .‬سپس سرآیند الیه ‪ 4‬نیز دور ریخته میشود و بسته به الیه کاربرد به برنامه‬
‫وب سرور ارسال میشود‪.‬‬
‫در پاسخ به بسته ارسالی از سوی کاربر‪ ،‬سرور بسته تصدیق ‪ TCP‬دریافت به سویکاربر ارسال‬
‫میکند‪ ،‬بنابراین کاربر متوجه دریافت پیامش شده و به دنبال آن فایل ‪ Index.html‬را دریافت‬
‫میکند‪.‬‬
‫همه بستهها مانند آنچه در مثال گفتهشده‪ ،‬بدون توجه به اینکه از چه پروتکلی استفاده میکنند‪،‬‬
‫ساخته و پردازش میشوند‪ .‬اما توجه داشته باشید که همه بستهها در شبکه از پروتکل الیه‬
‫کاربرد تولید نمیشوند‪ ،‬بنابراین بستههایی شامل فقط اطالعاتی از پروتکلهای الیه ‪ 2‬و ‪ 3‬و‬
‫‪ 4‬خواهید دید‪.‬‬

‫سختافزار شبکه‬
‫اکنون بر روی چند سختافزار که قطعات رایج در شبکه هستند مانند ‪ Switch ،HUB‬و‬
‫‪ Router‬متمرکز میشویم‪.‬‬

‫‪19‬‬
‫تحلیل بسته داده در شبکه‬ ‫فصل اول‬

‫هاب‬
‫هاب عموماً جعبهای با چند پورت ‪ RJ-45‬است مانند ‪ NETGEAR‬که در شکل ‪ 4-1‬نشان‬
‫دادهشده‪ .‬هابها از خیلی کوچک شامل ‪ 4‬پورت تا بزرگ شامل ‪ 48‬پورت باقابلیت نصب‬
‫در رک‪ 1‬بهصورت یکپارچه طراحی میشوند‪.‬‬

‫شکل ‪ : 4-1‬یک هاب با ‪ 4‬پورت‬


‫به دلیل اینکه ‪ HUB‬در شبکه ترافیک زیادی تولید میکند و فقط توانایی ارتباط یک طرفه‬
‫دارد (یعنی بهطور همزمان امکان ارسال و دریافت ندارد) غالباً در شبکههای مدرن دیده‬
‫نمیشود و بهجای آنها از ‪ Switch‬استفاده میشود‪ .‬اگرچه بایستی بدانید که هاب چه طور‬
‫کار میکند و وقتی این مهمتر میشود که بهعنوان یک تحلیلگر بسته از تکنیک ‪hubing‬‬
‫‪ out‬که در فصل ‪ 2‬بحث میشود بخواهید استفاده نمایید‪.‬‬
‫هاب چیزی بهجز یک دستگاه تکرارکننده نیست که در الیه فیزیکی از مدل ‪ OSI‬عمل‬
‫میکند‪ .‬هاب بستههای ارسالی از یک پورت را گرفته و آنها را روی سایر پورتهای دستگاه‬
‫منتقل (تکرار) میکند‪ .‬برای مثال اگر یک کامپیوتر در پورت ‪ 1‬از ‪ 4‬پورت هاب بخواهد به‬
‫کامپیوتری روی پورت ‪ 2‬هاب بسته ارسال نماید‪ ،‬هاب تمام این بستهها را به پورتهای ‪1،2،3‬‬
‫و ‪ 4‬میفرستد‪ .‬کاربر متصل به پورت ‪ 3‬و ‪ 4‬با بررسی آدرس ‪ MAC‬در سرآیند اترنت بسته‬
‫متوجه میشوند که بسته متعلق به آنها نیست‪ ،‬بنابراین بسته را دور میاندازند‪.‬‬

‫‪1‬‬
‫‪Rack‬‬
‫‪20‬‬
‫تحلیل بسته داده در شبکه‬ ‫فصل اول‬

‫شکل ‪ 5-1‬مثالی بهکاربرده که کامپیوتر ‪ A‬به کامپیوتر ‪ B‬داده انتقال میدهد‪ .‬وقتی کامپیوتر‬
‫‪ A‬این داده را منتقل میکند همه کامپیوترهای متصل به هاب آنرا دریافت میکنند ولی فقط‬
‫کامپیوتر ‪ B‬آنرا میپذیرد و مابقی دور میاندازند‪.‬‬

‫شکل ‪ : 5-1‬عملکرد یک هاب در شبکه‬

‫بهعنوان تشابه فرض کنید که برای همه کارمندانتان در شرکت ایمیلی بهعنوان " توجه همه‬
‫کارمندان بازاریابی" ارسال میکنید‪ ،‬بهجای اینکه به اشخاصی بفرستید که فقط در بخش‬
‫بازاریابی هستند‪ .‬همه کارمندان ازجمله بخش بازاریابی ایمیل را میبینند و باز میکنند ولی‬
‫آنها به آن توجه میکنند که متعلق به آن میزبان و سایرین آن را پاک میکنند‪ .‬بنابراین‬
‫میبینید این سبب تولید مقادیر زیادی ترافیک غیرضروری و اتالف وقت خواهد بود‪ .‬این‬
‫دقیقاً همان کاری است که هاب انجام میدهد‪.‬‬
‫بهترین جایگزین هابها در شبکههای فشرده و ظرفیت باال سوئیچها هستند که ارتباط دوطرفه‬
‫(ارسال و دریافت همزمان) میباشند‪.‬‬
‫‪21‬‬
‫تحلیل بسته داده در شبکه‬ ‫فصل اول‬

‫سوئیچ‬
‫مانند هاب‪ ،‬سوئیچ برای تکرار بستهها طراحیشدهاند‪ .‬اگرچه مثل هاب نیستتند‪ ،‬بهجای ارسال‬
‫داده به هر پورتی‪ ،‬سوئیچ داده را به تنها پورتی ارسال میکند که باید برود‪ .‬سوئیچها شبیه‬
‫هابها هستند شکل ‪ 6-1‬را ببینید‪.‬‬

‫شکل ‪ : 6-1‬نمونهای از یک دستگاه سوئیچ با ‪ 48‬پورت‬

‫چند تا سوئیچ مطرح در بازار مانند ‪ Cisco‬با نرمافزارهای خاص و یا رابط وب‪ ،‬مدیریت‬
‫میشوند‪ .‬به این سوئیچها معموالً سوئیچهای قابلکنترل گویند‪.‬‬
‫سوئیچهای قابلکنترل خصوصیات گوناگونی را ارائه میکنند که در مدیریت شبکه بسیار‬
‫مفید میباشد ازجمله قابلیت فعال و غیرفعال کردن پورتهای مشخص‪ ،‬دیدن مشخصات‬
‫پورت‪ ،‬تغییرات در پیکربندی‪ ،‬و کنترل از راه دور‪.‬‬
‫سوئیچها وقتی قرار باشد که انتقال بسته را انجام دهند عملکرد پیشرفتهای از خود ارائه‬
‫میدهند‪ .‬سوئیچ برای اینکه بتواند با هر دستگاه مستقیماً ارتباط داشته باشد بایستی هر دستگاه‬
‫را از روی آدرس ‪ MAC‬آن شناسایی کند‪ ،‬به این معنی است که باید در سطح پیوند داده در‬
‫مدل ‪ OSI‬عمل کند‪.‬‬
‫سوئیچها آدرس الیه ‪ 2‬هر دستگاه متصل را در جدول ‪ MAC‬ذخیره میکنند که شبیه پلیس‬
‫ترافیک عمل میکند‪ .‬وقتی یک بسته در حال انتقال است‪ ،‬سوئیچ سرآیند آدرس الیه ‪ 2‬آنرا‬
‫میخواند و از جدول ‪ MAC‬بهعنوان مرجعی برای انتقال بسته به پورت مقصد استفاده میکند‪.‬‬

‫‪22‬‬
‫تحلیل بسته داده در شبکه‬ ‫فصل اول‬

‫سوئیچها بستهها را به پورتهای مشخصی میفرستند بنابراین بهطور عمدهای از ترافیک شبکه‬
‫کاسته میشود‪ .‬شکل ‪ ۷-1‬جریان ترافیک در یک سوئیچ را نمایش میدهد‪.‬‬

‫شکل ‪ : ۷-1‬جریان ترافیک در یک سوئیچ‬


‫دراین شکل کامپیوتر ‪ A‬داده را به گیرنده موردنظر ‪ B‬میفرستد چندین مکالمه در شبکه‬
‫بهطور همزمان اتفاق میافتد ولی اطالعات مستقیماً بین سوئیچ و گیرنده موردنظر مبادله‬
‫میشود نه بین سوئیچ و همه کامپیوترهای متصل‪.‬‬
‫مسیریاب‬
‫مسیریاب دستگاه پیشرفته شبکه با سطح بسیار باالیی از عملکرد نسبت به سوئیچ و یا هاب‬
‫است‪ .‬مسیریاب میتواند شکل و فرمهای گوناگونی داشته باشد اما بیشترشان چندین دیود‬
‫نوری در جلو و چندین پورت در عقب دارند‪ ،‬بسته بهاندازه شبکه‪ .‬در شکل ‪ 8-1‬نمونهای از‬
‫مسیریاب نشان داده شده‪.‬‬
‫مسیریاب در الیه ‪ 3‬از مدل ‪ OSI‬عمل میکند که وظیفه هدایت بستهها بین دو یا چند شبکه‬
‫را به عهده دارد‪ .‬به پروسه مسیریابها در هدایت جریان بسته در میان شبکهها را مسیریابی‬
‫‪23‬‬
‫تحلیل بسته داده در شبکه‬ ‫فصل اول‬

‫گویند‪ .‬چندین نوع پروتکلهای مسیریابی دستوردهی میکنند تا چگونه انواع مختلفی از‬
‫بستهها در انواع شبکهها مسیردهی شوند‪.‬‬
‫مسیریابها معموالً از آدرسدهی الیه ‪ )IP( 3‬برای شناسایی دستگاههای روی شبکه استفاده‬
‫میکنند‪.‬‬

‫شکل ‪ : 8-1‬نمونهای از دستگاه مسیریاب‬

‫یک راه برای درک مفهوم مسیریابی‪ ،‬قیاس آن با مکان زندگی و خیابانهای اطراف شماست‪.‬‬
‫خانهها و آدرسهایشان را بهعنوان کامپیوتر و هر خیابان را بهعنوان بخشی از شبکه در نظر‬
‫بگیرید‪ ،‬همانطور که در شکل ‪ 9-1‬نشان دادهشده‪ .‬از خانهتان در خیابانتان میتوانید بهراحتی‬
‫به همسایهات ارتباط برقرار کنید‪ .‬این شبیه کاری است که سوئیچ اجازه میدهد تمام‬
‫کامپیوترهای درون یک شبکه باهم ارتباط داشته باشند‪ .‬اگرچه ارتباط با یک همسایه در‬
‫خیابان دیگر شبیه ارتباط با کامپیوتری است که در همان شبکه نیست‪.‬‬

‫‪24‬‬
‫تحلیل بسته داده در شبکه‬ ‫فصل اول‬

‫شکل ‪ : 9-1‬تشابه مسیریابی در مسیریاب و آدرسدهی خیابانها‬

‫در شکل ‪ 9-1‬فرض کنید شما در شماره ‪ 503‬خیابان ‪ Vine‬هستید و تمایل دارید به شماره‬
‫‪ Dogwood lane 202‬بروید‪ .‬به همین دلیل شما بایستی از خیابان ‪ Oak‬عبور کنید و سپس‬
‫وارد ‪ Dogwood lane‬شوید‪ .‬این شبیه عبور داده در شبکه است اگر دستگاه در آدرس‬
‫‪ 192.168.0.3‬بخواهد با دستگاه ‪ 192.168.0.58‬ارتباط برقرار کند‪ ،‬باید از دستگاه مسیریاب‬
‫شبکه در آدرس ‪ 10.100.1.1‬عبور کند و وارد شبکه مقصد شود‪.‬‬
‫سایز و اندازه مسیریابها در شبکه‪ ،‬معموالً بهاندازه شبکه و عملکرد آن بستگی دارد‪ .‬شبکه‬
‫شخصی خانگی یا دفتری معموالً از مسیریاب کوچک که در مرکز شبکه قرار دارد استفاده‬
‫میکنند‪ .‬سازمانهای بزرگ ممکن است چند مسیریاب داشته باشند‪ ،‬که در دپارتمانهای‬
‫گوناگون قرار دارد و همه به یک مسیریاب بزرگ مرکزی یا سوئیچ الیه ‪( 3‬نوع پیشرفته‬
‫سوئیچ که قابلیت عمل مانند مسیریاب را دارد) وصل باشند‪.‬‬
‫هرچه به دیاگرام شبکههای بیشتر بنگرید‪ ،‬بیشتر پی به چگونگی جریان داده در این شبکهها‬
‫خواهید برد‪ .‬در شکل ‪ 10-1‬ساختار خیلی رایج از فرم مسیریابی شبکه را نشان میدهد‪ .‬در‬
‫این مثال ‪ 2‬شبکه جداگانه با یک مسیریاب به هم متصل هستند‪.‬‬

‫‪25‬‬
‫تحلیل بسته داده در شبکه‬ ‫فصل اول‬

‫اگر کامپیوتر ‪ A‬بخواهد با کامپیوتر ‪ B‬ارتباط برقرار کند‪ ،‬داده منتقلشده باید از مسیریاب‬
‫عبور کند‪.‬‬

‫شکل ‪ : 10-1‬ساختار مسیریابی در مسیریاب بین دو شبکه‬

‫طبقهبندی ترافیک‬
‫‪3‬‬
‫ترافیک شبکه به سه دسته اصلی تقسیمشده‪ :‬پخش فراگیر‪ ،1‬پخش چندتایی‪ 2‬و پخش واحد‬
‫هر دستهبندی خصوصیات متمایزی دارد که مشخص میکند چگونه بسته در هر دسته توسط‬
‫سختافزار شبکه به کار گرفته میشود‪.‬‬
‫پخش فراگیر‬
‫پخش یک بسته به صورت فراگیر به همه پورتهای عناصر شبکه بدون توجه به اینکه آیا این‬
‫پورتها‪ ،‬هاب است یا سوئیچ ‪ ،‬فرستاده میشود‪.‬‬
‫همه ترافیک پخش فراگیر بهطور مساوی به وجود نمیآید اگرچه فرم ترافیک در الیه ‪ 2‬و‬
‫الیه ‪ 3‬متفاوت است‪ .‬مثالً در الیه ‪ 2‬آدرس ‪ MAC‬به شکل ‪ FF:FF:FF:FF:FF:FF‬یک‬

‫‪1‬‬
‫‪Broadcast‬‬
‫‪2‬‬
‫‪Multicast‬‬
‫‪3‬‬
‫‪Unicast‬‬
‫‪26‬‬
‫تحلیل بسته داده در شبکه‬ ‫فصل اول‬

‫آدرس رزرو شده است و هر ترافیکی با این آدرس ارسال شود به تمام عناصر شبکه پخش‬
‫فراگیر میشود‪ .‬الیه ‪ 3‬نیز پخش فراگیر بخصوصی دارد‪.‬‬
‫باالترین رنج ‪ IP‬ممکن در هر شبکه برای پخش فراگیر رزرو میشود‪ .‬برای مثال اگر در شبکه‬
‫با رنج آدرس‪ 192.168.0.x‬و ماسک زیر شبکه ‪ 255.255.255.0‬پیکربندیشده‪ ،‬آدرس‬
‫پخش فراگیر آن ‪ 192.168.0.255‬خواهد بود‪.‬‬
‫در شبکههای بزرگتر با چندین هاب و یا سوئیچ متصل به چندین رسانه‪ ،‬بستههای عبور داده‬
‫شده پخش فراگیر توسط یک سوئیچ به همه مسیرها و پورتها در روی سوئیچهای شبکه‬
‫میرسد و این بستهها در هر سوئیچ تکرار میشوند‪.‬‬
‫دامنه پخش فراگیر به وسعت طی مسیر یک بسته بهطور مستقیم از یک کامپیوتر به کامپیوتر‬
‫دیگر بدون نیاز به مسیریاب نامیده میشود‪ .‬شکل ‪11-1‬‬

‫شکل ‪ : 11-1‬نمایش پخش فراگیر در هر شبکه‬

‫در شکل دو دامنه پخش فراگیر در شبکه کوچک را مالحظه میکنید‪ .‬بستههای پخش فراگیر‬
‫تا زمانی که به مسیریاب برسند در میدان پخش فراگیر خود میچرخند‪.‬‬
‫مثال اخیر بیان میکند که مسیریابی به عناصر مجاور و همسایگی مرتبط بوده و درک درستی‬
‫ازکار میدان پخش فراگیر به ما میدهد‪.‬‬

‫‪2۷‬‬
‫تحلیل بسته داده در شبکه‬ ‫فصل اول‬

‫اگر شما از بالکن خانه خود فریاد بزنید فقط کسانی که در خیابان شما هستند فریادتان را‬
‫میشنوند‪ .‬اگر بخواهید با شخصی در خیابان دیگر سخن بگویید بهجای فریاد زدن (پخش‬
‫فراگیر) از روی بالکن منزلتان ناچارید راهی برای ارتباط مستقیم بیابید‪.‬‬
‫ترافیک چندپخشی‬
‫چندپخشی به معنی انتقال همزمان بسته از یک مبدأ به چند مقصد است‪ .‬هدف چندپخشی‬
‫ساده کردن این پروسه با استفاده از پهنای باند کوچک تا حد امکان است‪ .‬این ترافیک با‬
‫تعداد دفعات تکرار جریان داده تا رسیدن به مقصد موردنظر بهینهسازی شده است‪.‬‬
‫بهکارگیری دقیق ترافیک چندپخشی بهشدت وابسته به پیادهسازی آن در پروتکلهای‬
‫اختصاصی دارد‪.‬‬
‫شیوه اولیه پیادهسازی چندپخشی بهدستگاه آدرسدهی است که به گیرندگان بسته یک گروه‬
‫چندپخشی الحاق میشود‪ ،‬تا نشان دهد ‪ IP‬چندپخشی چگونه کار میکند‪ .‬این طرح اطمینان‬
‫میدهد که بستهها به کامپیوترهای مقصد معین نشده‪ ،‬ارسال نمیشوند‪ .‬درواقع ‪ IP‬تمام رنج‬
‫آدرسهایش را به چندپخشی اختصاص میدهد‪ .‬اگر شما ‪ IP‬آدرسی به رنج ‪ 224.0.0.0‬تا‬
‫‪ 239.255.255.255‬ببینید بهاحتمال زیاد ترافیک چندپخشی است‪.‬‬
‫ترافیک پخش واحد‬
‫انتقال بسته از یک کامپیوتر را مستقیماً به کامپیوتر دیگر را پخش واحد گویند‪ .‬جزئیات اینکه‬
‫پخش واحد چه طور عمل میکند به پروتکل استفادهشده بستگی دارد‪ .‬برای مثال در نظر‬
‫بگیرید یک دستگاه میخواهد با یک وب سرور ارتباط برقرار کند‪ ،‬این یک ارتباط‬
‫یکبهیک است بنابراین این پروسه از ارتباط دستگاههای انتقال بسته کاربر به وب سرور‬
‫شروع خواهد شد‪ .‬این فرم ارتباطات مثال سادهای از ترافیک پخش واحد است‪.‬‬

‫‪28‬‬
‫تحلیل بسته داده در شبکه‬ ‫فصل اول‬

‫خالصه فصل‬
‫این فصل اصول پایهای را که شما برای تحلیل بستهها نیاز دارید را پوشش داده است‪ .‬بایستی‬
‫قبل از اینکه به رفع اشکال شبکههای کامپیوتری بپردازید درک درستی از الیههای شبکه‬
‫داشته باشید‪ .‬در فصل بعدی ما روی این مفاهیم کار میکنیم و بحث بیشتری روی اصول‬
‫ارتباطات شبکههای پیشرفته خواهیم داشت‪.‬‬

‫‪29‬‬
‫فصل دوم‬
‫نفوذ به شبکه‬
‫نفوذ به شبکه‬ ‫فصل دوم‬

‫نفوذ به شبکه‬
‫قرار دادن شنودکننده بسته در موقعیت مناسب برای ربایش‪ 1‬دادههای شبکه یک تصمیم مؤثر‬
‫در تحلیل بسته است‪ .‬بیشتر اوقات برای خرید به نرمافزارهایی مانند‪، Sniffing the wire‬‬
‫‪Tapping the network‬و یا ‪ Tapping in to the wire‬مراجعه میشود‪.‬‬
‫بهسادگی این برنامهها را در مکان فیزیکی مناسب قرار دهید‪ .‬قراردهی نرمافزار شنود در شبکه‬
‫کار مهمی است‪ .‬متأسفانه شنود بسته بهسادگی اتصال لپتاپ به پورت شبکه و ربایش‬
‫ترافیک شبکه نیست‪ .‬درواقع بعضی وقتها قرار دادن شنود بسته در سیستم کابلی شبکه برای‬
‫تحلیل دقیق بسته کار بسیار مشکلی است‪ .‬به دلیل وجود شبکههای مختلف با سختافزارهای‬
‫گوناگون چالش قراردهی شنودگر بسته وجود دارد‪.‬‬
‫شکل ‪ 1-2‬وضعیت نمونه را نشان میدهد‪ .‬به دلیل وجود دستگاههای اصلی شبکه مدرن مانند‬
‫هاب‪ ،‬سوئیچ‪ ،‬و مسیریاب که هرکدام ترافیک را بهصورت متفاوت هدایت میکنند‪ ،‬بایستی‬
‫کامالً از تنظیمات فیزیکی شبکه که تحلیل میکنید آگاه باشید‪.‬‬
‫شکل ‪ :1-2‬قراردهی شنودگر بسته گاهی یکی از بزرگترین چالشهای پیش روی شماست‬

‫شکل ‪ :1-2‬قرار دهی شنودگر بسته در مکان مناسب یکی از بزرگترین‬


‫چالش پیش روی شماست‪.‬‬

‫‪1‬‬
‫‪Capture‬‬
‫‪32‬‬
‫نفوذ به شبکه‬ ‫فصل دوم‬

‫هدف از این فصل کمک به درک بهتر شما از قرار دهی شنودگر بسته در انواع گوناگون‬
‫توپولوژیهای شبکه است‪ .‬اما ابتدا بایستی نگاهی دقیق به بستههای عبوری از کابل بیاندازیم‪.‬‬

‫زندگی بیقاعده‬
‫قبل از شروع به شنود بستهها روی شبکه به کارت رابط شبکه که درایور یا راهانداز حالت‬
‫بیقاعده‪ 1‬را پشتیبانی میکند نیاز دارید‪ .‬درایور حالت بیقاعده به کارت شبکه اجازه دیدن‬
‫کلیه بستههای عبوری از کابل را میدهد‪.‬‬
‫همانگونه که در فصل یک آموختید‪ ،‬در پخش ترافیک شبکه بسیار عادی است که کاربر‬
‫بستههایی را دریافت کند که برای وی فرستاده نشده‪ ،‬پروتکل‪ ARP‬مشخص میکند که کدام‬
‫آدرس ‪ MAC‬مختص به کدام ‪ IP‬است‪ ،‬این از اجزاء ثابت شبکه است‪ ،‬و مثالی عالی از‬
‫ارسال ترافیک به کارت شبکه شما در عوض گیرنده مقصد میباشد‪.‬‬
‫برای یافتن آدرسهای‪، MAC‬پروتکل ‪ ARP‬یک بسته فراگیر به همه دستگاهها در محدوده‬
‫پخش خود با امید پاسخ صحیح کاربران ارسال میکند‪ .‬دامنه یا محدوده پخش (شامل عناصر‬
‫شبکه که بتوانند با یکدیگر بدون نیاز به مسیریاب و بهطور مستقیم باهم ارتباط داشته باشند)‬
‫شامل چندین کامپیوتر است‪ ،‬اما فقط یکی از کاربران در محدوده بایستی به بسته ‪ARP‬‬
‫ارسالشده عالقهمند باشد‪ .‬اگر هر کامپیوتر ‪ ARP‬را پردازش کند این واقعاً سبب ناکارآمدی‬
‫شبکه خواهد شد‪ .‬کارت شبکه یا ‪ NIC‬هر کامپیوتر وقتی متوجه شود که بسته ‪ ARP‬متعلق‬
‫به او نیست بهجای اینکه آنرا به ‪ CPU‬بفرستد آنرا دور میاندازد‪ .‬دور انداختن بستههای‬
‫‪ARP‬سبب افزایش قابلیت پردازش سیستم میشود ولی موجبات دردسر تحلیلگر بسته را به‬
‫وجود میآورد‪ .‬بهعنوان یک تحلیلگر معموالً دوست داریم عبورکلیه بستهها از کابل را رصد‬
‫کنیم و هیچ کدام از قطعه اطالعات تعیین کننده را از دست ندهیم‪.‬‬

‫‪1‬‬
‫‪Promiscuous mode‬‬
‫‪33‬‬
‫نفوذ به شبکه‬ ‫فصل دوم‬

‫با استفاده از حالت بیقاعده کارتهای شبکه میتوانیم از ربایش همه ترافیک مطمئن باشیم‪.‬‬
‫کارت شبکه در حالت بیقاعده همه بستههای عبوری از کارت شبکه را به پردازنده میزبان‬
‫هدایت میکند بدون اینکه به آدرسدهی بستهها توجه داشته باشد‪ .‬وقتی بسته به پردازنده‬
‫برسد میتوان آنرا با برنامههای ربایش بسته برای تحلیل ربایش کرد‪.‬‬
‫اکثر کارت شبکههای امروزی از حالت بیقاعده پشتیبانی میکنند‪Wireshark ،‬نیز داری‬
‫درایور ‪ WinPcap/LibPcap‬است که مستقیماً اجازه سوئیچ شدن پورت شبکه به حالت‬
‫بیقاعده را میدهد‪( .‬توضیحات بیشتر در فصل ‪)3‬‬
‫به دلیل اهداف این کتاب بایستی کارت شبکه و سیتم عاملی که حالت بیقاعده را پشتیبانی‬
‫میکند داشته باشید‪ .‬تنها زمانی نیاز به داشتن شنود در حالت بیقاعده ندارید که بخواهید‬
‫ترافیک ارسالی رابط آدرس ‪ MAC‬را که مشاهده میکنید‪ ،‬شنود کنید‪.‬‬
‫یادداشت‪ :‬بیشتر سیستمهای عامل به شما اجازه استفاده از کارت شبکه در حالت بیقاعده‬
‫را نمیدهند مگر اینکه امتیاز کاربران عالیرتبه را داشته باشید‪ .‬اگر بهطور قانونی نمیتوانید‬
‫این امتیاز را برای یک سیستم به دست آورید‪ ،‬بنابراین شما شانس انجام شنود بر روی شبکه‬
‫موردنظر را ندارید‪.‬‬

‫شنود در اطراف هاب‬


‫شنود از شبکهای که هاب در آن نصبشده‪ ،‬رویای هر تحلیلگر بسته است‪ .‬همانطور که در‬
‫فصل ‪ 1‬آموختید‪ ،‬ترافیک ارسالی از درون هاب به همه پورتهای متصل به آن عبور میکند‪.‬‬
‫بنابراین تنها کاری که برای تحلیل یک شبکه دارای هاب الزم است اتصال کابل به یک‬
‫پورت خالی روی هاب است‪ .‬با این کار قادر خواهیم بود تمامی ارتباطات بین کامپیوترها و‬
‫یا هر دستگاه متصل به هاب را مانیتور کرد‪ .‬همانطور که در شکل ‪ 2-2‬مشاهده میکنید‬
‫روزنه دید شنودکننده در شبکههای داری هاب بیحد و نامحدود است‪.‬‬

‫‪34‬‬
‫نفوذ به شبکه‬ ‫فصل دوم‬

‫شکل ‪ :2-2‬شنود در شبکههای دارای هاب روزنه دید نامحدودی میدهد‪.‬‬

‫یادداشت‪ :‬روزنه دید همانطور که در سراسر این کتاب در دیاگرامهای گوناگون نشان‬
‫دادهشده دستگاههایی درون شبکه است که با شنود بسته میتوانید ترافیک آنها را مشاهده‬
‫کنید‪.‬‬
‫متأسفانه برای ما شبکههای دارای هاب به خاطر سردردی که برای مدیر شبکه به وجود می‪-‬‬
‫آورند بسیار نادر هستند‪ .‬به دلیل اینکه در هر زمان یک دستگاه متصل به هاب قادر به مخابره‬
‫است بنابراین باید با سایر دستگاهها به رقابت بپردازد‪ .‬وقتی دو و یا چند دستگاه همزمان‬
‫مخابره کنند تصادم بسته به وجود میآید‪ ،‬همانطور که در شکل ‪ 2-3‬نشان دادهشده‪ ،‬نتیجه‬
‫ممکن است از دست دادن بستهها باشد‪ ،‬دستگاهها با ارسال مجدد بسته خطا را اصالح میکنند‬
‫ولی سبب باال رفتن ترافیک و ازدحام و تصادم بیشتر شبکه میشود‪ .‬وقتی سطح ترافیک و‬
‫تعداد ازدحام و تصادم افزایش مییابد دستگاه ممکن است برای ارسال بسته سه یا چهار بار‬
‫تالش کند‪ ،‬کاهش کارآرایی شبکه کامالً چشمگیر است‪ .‬به همین دلیل بهراحتی میتوان‬
‫دلیل استفاده شبکههای مدرن از سوئیچ را در مقیاسهای بزرگ و کوچک فهمید‪.‬‬

‫‪35‬‬
‫نفوذ به شبکه‬ ‫فصل دوم‬

‫شکل ‪ :3-2‬تصادم هنگام ارسال همزمان ‪ 2‬دستگاه یا بیشتر به وجود میآید‪.‬‬

‫شنود در اطراف سوئیچ‬


‫همانطورکه در فصل اول گفته شد‪ ،‬سوئیچ رایجترین دستگاهی است که در محیط شبکههای‬
‫مدرن به کار میرود‪ .‬سوئیچ روشهای کارا برای انتقال داده بهصورت پخش فراگیر‪،‬‬
‫چندپخشی و تکپخشی ارائه میکنند‪ .‬سوئیچها امکان ارتباط دوطرفه همزمان را میدهند‪،‬‬
‫به این معنی که میتوانند همزمان ارسال و دریافت داده داشته باشند‪.‬‬
‫متأسفانه برای تحلیلگر بسته سوئیچها یک سطح کامالً جدید از پیچیدگی اضافه نموده است‪.‬‬
‫وقتی یک شنودگر به پورت یک سوئیچ متصل میکنید‪ ،‬فقط میتوانید ترافیک ارسالی و‬
‫دریافتی دستگاه خود را ببیند‪ .‬شکل ‪4-2‬‬

‫‪36‬‬
‫نفوذ به شبکه‬ ‫فصل دوم‬

‫چهار روش اصلی ربایش ترافیک از دستگاه هدف در شبکههای سوئیچ وجود دارد‪.‬‬
‫مانیتورینگ پورت‪ ،‬هاب بیرونی‪ ،‬استفاده از ‪ ،Tap‬آلودهسازی حافظه نهان‪. ARP1‬‬

‫شکل ‪ :4-2‬روزنه دید در شبکه سوئیچ محدود به پورتی است که به آن متصل هستید‪.‬‬

‫مانیتورینگ پورت‬
‫مانیتورینگ پورت‪ 2‬یا نظارت درگاه شاید سادهترین راه ربایش ترافیک از دستگاه موردنظر‬
‫در شبکه سوئیچ است‪ .‬در این نوع راهاندازی بایستی به خط دستور یا رابط اجرا وب سوئیچ‪،‬‬
‫روی کامپیوتر موردنظر دسترسی داشته باشید‪ .‬همچنین سوئیچ بایستی مانیتورینگ پورت را‬
‫پشتیبانی کرده و یک پورت خالی برای اتصال شنودکننده شما را داشته باشد‪.‬‬
‫با صدور دستور میتوانید سوئیچ را وادار به کپی همه ترافیک از یک پورت به پورت دیگر‬
‫کنید‪.‬‬

‫‪1‬‬
‫‪ARP cache poisoning‬‬
‫‪2‬‬
‫‪Port monitoring‬‬
‫‪3۷‬‬
‫نفوذ به شبکه‬ ‫فصل دوم‬

‫مثالً برای ربایش ترافیک دستگاه در پورت ‪ 3‬یک سوئیچ میتوانید بهسادگی شنودکننده را‬
‫به پورت ‪ 4‬متصل کنید و ترافیک پورت ‪ 3‬را به پورت ‪ 4‬منعکس کنید‪ ،‬تا به شما امکان‬
‫مشاهده همه ترافیک انتقالی دریافت و ارسال دستگاه موردنظر را بدهد‪ .‬شکل ‪2-5‬‬

‫شکل ‪ :5-2‬مانیتورینگ پورت روزنه دید شما را در شبکههای سوئیچ وسیعتر میکند‪.‬‬

‫روشی که پورت را انعکاس میدهید بستگی به سازنده سوئیچ شما دارد‪ .‬برای اکثر سوئیچها‬
‫بایستی به رابط خط دستور وارد شوید و دستور انعکاس پورت را صادر کنید‪ .‬میتوانید لیستی‬
‫از دستوارت رایج انعکاس پورت را در جدول ‪ 2-1‬بیابید‪.‬‬
‫یادداشت‪ :‬بعضی از سوئیچها رابط گرافیکی تحت وب دارند که انعکاس پورت را بهعنوان‬
‫یک گزینه پیشنهاد میکنند‪ ،‬ولی رایج و استاندارد شده نیست‪ .‬بههرحال اگر سوئیچ شما‬
‫روشهای موثری برای انعکاس پورت از طریق ‪ GUI‬ارائه کرد‪ ،‬به هر قیمتی استفاده کنید‪.‬‬

‫‪38‬‬
‫نفوذ به شبکه‬ ‫فصل دوم‬

‫جدول ‪ :1-2‬دستوراتی برای فعال نمودن انعکاس پورت‬

‫وقتی انعکاس پورت را انجام میدهید‪ ،‬از توان عبوردهی پورتهای مورد نظرآگاه باشید‪.‬‬
‫بعضی ازتولیدکنندگان سوئیچ امکان انعکاس چند پورت روی یک پورت بخصوص را‬
‫میدهند‪ ،‬که وقتی ارتباط بین دو یا چند دستگاه روی یک سوئیچ را تحلیل میکنیم بسیار‬
‫مفید است‪ .‬بگذارید به روش ریاضی نشان دهیم چه اتفاقی میافتد‪ .‬اگر شما یک سوئیچ ‪24‬‬
‫پورت داشته و ‪ 23‬پورت تمام دوطرفه ‪ Mbps 100‬را روی یک پورت انعکاس دهید‪ ،‬بهطور‬
‫بالقوه جریان داده ‪ Mbps 4600‬روی آن پورت دارید‪ .‬این خیلی فراتر از آستانه فیزیکی هر‬
‫پورت است‪ ،‬بنابراین اگر ترافیک به حد مشخصی برسد سبب گمشدن بستهها و یا کند شدن‬
‫شبکه میشود‪ .‬در این شرایط‪ ،‬سوئیچها کامالً بستههای مازاد را پایین میآورد یا مدارات‬
‫داخلی را متوقف میکند تا از ارتباط همه با همدیگر جلوگیری کند‪ .‬مطمئن شوید! وقتی‬
‫سعی دارید ربایشتان را انجام دهید این وضعیت ‪ ،‬اتفاق نمیافتد‪.‬‬

‫هاب بیرونی‬
‫روش دیگر ربایش ترافیک دستگاه هدف در شبکه سوئیچ‪ ،‬هاب بیرونی‪ 1‬است‪ .‬این تکنیک‬
‫با اتصال هاب به شبکه‪ ،‬شنودکننده و کامپیوتر هدف را به آن شبکه متصل میکنید‪.‬‬
‫اکثر افراد فکر میکنند هاب بیرونی یک تقلب است ولی بهترین راهحلی است زمانی که‬
‫نمیتوانید انعکاس پورت را اجرا کنید ولی هنوز دسترسی فیزیکی به دستگاه هدف دارید‪،‬‬

‫‪1‬‬
‫‪Hubbing Out‬‬
‫‪39‬‬
‫نفوذ به شبکه‬ ‫فصل دوم‬

‫که به سوئیچ متصل است‪ .‬برای هاب بیرونی همه چیزی که نیاز دارید چند متر کابل شبکه و‬
‫سوکت و یک هاب است‪ .‬وقتی سختافزارتان آماده شد به مراحل زیر عمل کنید‪.‬‬
‫‪ -1‬سوئیچی که دستگاه هدف به آن متصل است را بیابید وسوکت دستگاه هدف را از‬
‫آن جدا کنید‪.‬‬
‫‪ -2‬سوکت خارجشده از دستگاه هدف را به هاب متصل کنید‪.‬‬
‫‪ -3‬توسط کابل دیگر تحلیگر را به هاب متصل نمایید‪.‬‬
‫‪ -4‬دستگاه هدف جدا شده را به هاب وصل کنید‪.‬‬
‫حاال دستگاه هدف و تحلیلگر در یک دامنه پخش پیام شبکه قرار دارند و همه ترافیک‬
‫دستگاه هدف توسط تحلیلگر ربایش میشود‪ .‬شکل ‪2-6‬‬

‫شکل ‪ :6-2‬هاب بیرونی دستگاه هدف و تحلیلگر را قرنطینه میکند‪.‬‬

‫در اکثر حاالت هاب بیرونی ارتباط دوطرفه دستگاه هدف را به یکطرفه تقلیل میدهد‪.‬‬
‫بنابراین این روش مناسبی برای اتصال (نفوذ) به شبکه نیست‪ ،‬گاهی که سوئیچ انعکاس پورت‬

‫‪40‬‬
‫نفوذ به شبکه‬ ‫فصل دوم‬

‫را پشتیبانی نمیکند راهی بهجز این روش نیست‪ .‬در نظر داشته باشید که هابتان یک اتصال‬
‫برق نیز میخواهد‪ ،‬که در مواردی یافتنش مشکل است‪.‬‬
‫یادداشت‪ :‬برای یادآوری معموالً هشدار دادن به کاربر دستگاهی که میخواهید کابلش را از‬
‫سوکت خارج کنید‪ ،‬کار خوبی است بهخصوص اگر این کاربر رئیس هیات مدیره باشد‪.‬‬

‫پیدا کردن هاب واقعی‬


‫وقتی هاب بیرونی نصب میکنید اطمینان حاصل کنید که از یک هاب واقعی استفاده میکنید‬
‫و یک سوئیچ با برچسب تقلبی هاب به کار نمیبرید‪ .‬بعضی از تولیدکنندگان سختافزار‬
‫عادتهای بد بازاریابی دارند و دستگاهی را بهعنوان هاب میفروشند در حالیکه دقیقاً مانند‬
‫یک سوئیچ سطح پایین عمل میکند‪ .‬اگر با یک هاب تستشده کار نکنید فقط قادر به دیدن‬
‫ترافیک خود خواهید بود‪ ،‬نه ترافیک دستگاه هدف‪.‬‬
‫وقتی یک هاب یافتید‪ ،‬تست کنید تا مطمئن شوید‪ .‬اگر بود نگهش دارید بهترین راه تشخیص‬
‫هاب بودن یا سوئیچ بودن‪ ،‬به چند تا کامپیوتر متصلش کنید و ببینید آیا یک کامپیوتر میتواند‬
‫ترافیک میان سایر کامپیوترها و دستگاههای شبکه را شنود کند‪ .‬از زمانی که هابها منسوخ‬
‫شدند‪ ،‬دیگر تولید انبوه نمیشوند‪ ،‬بنابراین باید خالقانه یکی پیدا کنید‪ .‬میتوانید در حراج‬
‫مؤسسات و یا حراجهای ‪ ebay‬خریداری کنید اما همواره مراقب سوئیچهای با برچسب‬
‫هاب باشید‪.‬‬

‫کاربرد دستگاه ‪Tap‬‬


‫دستگاه ‪ ، 1Tap‬سختافزاری است که میتوانید برای ربایش بستههای شبکه بین دو نقطه قرار‬
‫دهید‪ .‬همانند هاب بیرونی این سختافزار در قسمتی از شبکه قرار میگیرد که اجازه ربایش‬

‫‪ 1‬این دستگاه برای مانیتورینگ و نظارت در ترافیک شبکه به صورت دستی و قابل حمل طراحی شده است ‪.‬‬

‫‪41‬‬
‫نفوذ به شبکه‬ ‫فصل دوم‬

‫بستههای آن را دارید‪ .‬تفاوت با هاب در این است که از سختافزاری بهره میگیرید که‬
‫بهصورت اختصاصی برای تحلیل شبکه طراحیشده است‪.‬‬
‫دو نوع دستگاه ‪ Tap‬موجود است‪ .‬نوع متراکم و غیرمتراکم‪ .‬هر دو نوع برای ربایش ترافیک‬
‫مابین دستگاههای شبکه قرار میگیرند‪ .‬تفاوت اصلی بین نوع متراکم و غیرمتراکم‪ ،‬این است‬
‫که نوع غیرمتراکم ‪ 4‬پورت دارد‪ ،‬همانطور که در شکل ‪ 2-۷‬نشان دادهشده است ولی نوع‬
‫متراکم ‪ 3‬پورت دارد‪.‬‬

‫شکل ‪ :۷-2‬دستگاه ‪ Tap‬مدل ‪ Barracuda‬غیرمتراکم‬

‫در نظر داشته باشید که این دستگاه نیز نیاز به کابل برق دارد ولی مدلهایی دارد که برای‬
‫کارهای محدود بوده و از باطری استفاده میکند‪.‬‬
‫دستگاه ‪ Tap‬متراکم‬
‫دستگاه ‪ Tap‬متراکم سادهترین‪ ،‬ازنظر نوع کاربرد است‪ .‬این دستگاه یک پورت ‪monitor‬‬
‫فیزیکی برای شنود دو جهته دارد‪ .‬برای ربایش همه ترافیک در یک کامپیوتر متصل به سوئیچ‬
‫بهدستگاه دستگاه ‪ Tap‬متراکم گامهای زیر را دنبال کنید‪.‬‬
‫‪ -1‬اتصال کامپیوتر را از سوئیچ جدا کنید‪.‬‬
‫‪ -2‬یک طرف کابل شبکه را به کامپیوتر و طرف دیگر را به پورت "‪ "in‬دستگاه ‪Tap‬‬
‫متصل کنید‪.‬‬

‫‪42‬‬
‫نفوذ به شبکه‬ ‫فصل دوم‬

‫‪ -3‬یک کابل شبکه دیگر به پورت "‪ "Out‬دستگاه ‪ Tap‬متصل و سر دیگر آنرا به‬
‫سوئیچ شبکه متصل کنید‬
‫‪ -4‬کابل آخر را به پورت "‪ "Monitor‬دستگاه ‪ Tap‬متصل و سر دیگر را به کامپیوتری‬
‫وصل کنید که میخواهید بهعنوان شنودگر شما عمل کند‪.‬‬
‫دستگاه ‪ Tap‬متراکم مانند شکل ‪ 2-8‬بایستی متصل شود‪ .‬در این نقطه شنودگر قادر است تمام‬
‫ترافیک ورودی و خروجی کامپیوتری را که به دستگاه ‪ Tap‬متصل است را ربایش کند‪.‬‬

‫شکل ‪ :8-2‬کاربرد دستگاه نظارت متراکم برای رهگیری ترافیک شبکه‬

‫دستگاه ‪ Tap‬غیرمتراکم‬
‫دستگاه ‪ Tap‬غیرمتراکم از دستگاه نظارت متراکم اندکی پیچیدهتر است‪ ،‬اما در هنگام ربایش‬
‫ترافیک انعطاف پذیر است‪ .‬بهجای یک پورت مانیتور‪ 2 ،‬پورت مانیتور دارد‪ .‬یکی برای شنود‬
‫ترافیک در یک جهت از کامپیوتر متصل شده به دستگاه ‪ Tap‬و دیگری بلعکس‪ .‬برای ربایش‬
‫همه ترافیک از یک کامپیوتر متصل به سوئیچ گامهای زیر را دنبال کنید‪.‬‬

‫‪43‬‬
‫نفوذ به شبکه‬ ‫فصل دوم‬

‫‪ -1‬اتصال کامپیوتر را از سوئیچ جدا کنید‪.‬‬


‫‪ -2‬یک طرف کابل شبکه را به کامپیوتر و طرف دیگر را به پورت "‪ "in‬دستگاه ‪Tap‬‬
‫متصل کنید‪.‬‬
‫‪ -3‬یک کابل شبکه دیگر به پورت "‪ "out‬دستگاه ‪ Tap‬متصل و سر دیگر آنرا به سوئیچ‬
‫شبکه متصل کنید‬
‫‪ -4‬کابل سوم شبکه را در پورت "‪ "monitorA‬دستگاه ‪ Tap‬و سر دیگر را به کارت‬
‫شبکه کامپیوتری که نقش دستگاه ‪ Tap‬را دارد متصل کنید‪.‬‬
‫‪ -5‬کابل آخر شبکه را در پورت "‪ "monitorB‬و سر دیگر را به دومین کارت شبکه‬
‫که نقش دستگاه ‪ Tap‬را دارد متصل کنید‪.‬‬
‫شنودافزار غیر متراکم مانند شکل ‪ 2-9‬زیر متصل میشود‪.‬‬

‫شکل ‪ :9-2‬کاربرد دستگاه ‪ Tap‬غیرمتراکم برای رهگیری ترافیک شبکه‬

‫انتخاب دستگاه ‪ Tap‬شبکه‪:‬‬


‫از تفاوتهای دادهشده میان این دو نوع دستگاه ‪ Tap‬کدام بهتر است؟ در اکثر شرایط نوع‬
‫دستگاه نظارت متراکم‪ ،‬ترجیح داده میشود‪ ،‬چرا که کابلکشی کمتری میخواهد و نیازی‬

‫‪44‬‬
‫نفوذ به شبکه‬ ‫فصل دوم‬

‫به دوکارت شبکه روی کامپیوتر شنودگر ندارد‪ .‬اگرچه در شرایطی که حجم زیادی از‬
‫ترافیک ربایش میکنید و یا ترافیک ورودی و خروجی اهمیت دارد‪ ،‬دستگاه ‪ Tap‬غیرمتراکم‬
‫سودمند هستند‪ .‬میتوانید دستگاه ‪ Tap‬گوناگونی به کار ببرید‪ ،‬مدلهای ساده اترنت تا‬
‫مدلهای فیبرنوری در پنج رنج مختلف ارائه میشوند‪.‬‬

‫آلودهسازی حافظه ‪ARP‬‬


‫یکی از روشهای موردعالقه من برای نفوذ در کابل‪ ،‬تکنیک آلودهسازی حافظه‪ARP 1‬است‪.‬‬
‫توضیحات بیشتر در رابطه با پروتکل ‪ ARP‬در فصل‪ 6‬خواهد آمد‪ ،‬توضیحات مختصری در‬
‫ادامه به خاطر درک کارکرد این تکنیک ارائه خواهد شد‪.‬‬
‫پردازش‪: ARP‬‬
‫با یادآوری از فصل ‪ ،1‬دو نوع اصلی آدرسدهی بسته در الیه ‪ 2‬و ‪ 3‬از مدل ‪ OSI‬وجود دارد‪.‬‬
‫آدرسهای الیه ‪ 2‬یا آدرسهای ‪ MAC‬با سیستم آدرسدهی الیه ‪ 3‬ترکیب میشوند‪ .‬در این‬
‫کتاب‪ ،‬براساس اصطالحات استاندار شرکتها‪ ،‬به آدرسدهی الیه ‪ 3‬بهصورت آدرسدهی‬
‫‪ IP‬اشاره میکنم‪.‬‬
‫همه دستگاههای مرتبط با هم در الیه ‪ 3‬از آدرسدهی ‪ IP‬استفاده میکنند‪ .‬چراکه سوئیچهای‬
‫الیه ‪ 2‬از مدل ‪ OSI‬فقط از آدرسهای ‪ MAC‬الیه ‪ 2‬باخبر هستند‪ ،‬بنابراین دستگاهها باید‬
‫قادر باشند این اطالعات را در بستههایی که میسازند قرار دهند‪ .‬وقتی یک آدرس‪MAC‬‬
‫ناشناخته شده است‪ ،‬بایستی آدرسهای الیه ‪ 3‬شبکه یا ‪ IP‬را احراز کند تا بتواند ترافیک را‬
‫برای رسیدن به دستگاه مناسب پشت سر بگذارد‪ .‬این پروسه ترجمه در پروتکل الیه‪ 2‬توسط‬
‫پروتکل‪ ARP‬صورت میگیرد‪.‬‬

‫‪1‬‬
‫‪ARP Cache Poisoning‬‬
‫‪45‬‬
‫نفوذ به شبکه‬ ‫فصل دوم‬

‫پردازش ‪ ARP‬از زمانی که یک کامپیوترمتصل به شبکه اترنت قصد ارتباط با دیگری دارد‬
‫شروع میشود‪ .‬کامپیوتر فرستنده ابتدا حافظه ‪ ARP‬خودش را چک میکند تا آدرس مک‬
‫مربوط به آدرس ‪ IP‬کامپیوتر مقصد را پیدا کند‪ .‬اگر نبود یک درخواست ‪ ARP‬به الیه‬
‫لینک داده با آدرس بخش فراگیر زیر‪ ، FF:FF:FF:FF:FF:FF‬همانطور در فصل ‪ 1‬گفته‬
‫شد‪ ،‬ارسال میشود‪ .‬بهعنوان بسته پخش فراگیر‪ ،‬این بسته توسط همه کامپیوترها در بخش‬
‫مشخص اترنت دریافت میشود‪ .‬این بسته میپرسد‪ " :‬کدام آدرس ‪ IP‬به آدرس ‪MAC‬‬
‫‪ XX:XX:XX:XX:XX:XX‬تعلق دارد؟"‬
‫کامپیوترهایی که آدرس ‪ IP‬مقصد را ندارند‪ ،‬بهسادگی درخواست ‪ ARP‬را دور میاندازند‪.‬‬
‫دستگاه مقصد با آدرس ‪ MAC‬خود به بسته پاسخ میدهد‪ .‬دراین زمان‪ ،‬کامپیوتر اصلی‬
‫فرستنده آدرس الیه ‪ 2‬لینک مورد نیاز جهت ارتباط با کامپیوتر مقصد را داراست‪ ،‬و‬
‫اطالعاتش را در حافظه ‪ ARP‬برای بازیابی سریع ذخیره میکند‪.‬‬

‫شکل ‪ :10-2‬انتخاب دستگاه موردنظر برای آلودگی ‪ARP‬‬

‫یادداشت ‪ :‬بهعنوان یادداشت آخر در مورد آلودهسازی حافظه ‪ ARP‬بایستی مراقب سیستمی‬
‫که این پروسه را روی آن پیادهسازی میکنید باشید ‪ .‬برای مثال از این تکنیک برای دستگاه‬
‫هدفی که سرویسدهنده فایل با استفاده خیلی باال از شبکه است‪ .‬وقتی لینک هدف ‪1‬‬
‫گیگابیت در ثانیه است و دستگاه شنود شما فقط قادر است ‪ 100‬مگابیت در ثانیه را شنود‬

‫‪46‬‬
‫نفوذ به شبکه‬ ‫فصل دوم‬

‫کند‪ .‬وقتی دست به چنین کاری میزنید همه ترافیک شبکه از برنامه تحلیلگر شما عبور‬
‫میکند و تحلیلگر شما را تبدیل به یک گلوگاه میکند‪ .‬که سبب اثر انکار سرویس و خطا‬
‫در تحلیل داده میشود‪.‬‬

‫شنود در تجهیزات مسیریابی شده‬


‫همه تکنیکهای نفوذ در شبکه سوئیچ از طریق کابل در شبکه مسیردهیشده نیز قابلدسترسی‬
‫است‪ .‬تنها نگرانی عمده در کار با تجهیزات مسیردهی شده اهمیت محل استقرار دستگاه‬
‫شنودگر هنگام اشکالیابی یک خطای پخششده در چندین شبکه است ‪ .‬براساس آموختهی‬
‫اخیر شما پخش فراگیر در کل شبکه گسترش مییابد تا به مسیریاب برسد ‪ .‬در این نقطه‬
‫ترافیک در مسیریاب به شبکه دیگر دستبهدست میشود‪ .‬ارتباط شما با بستهی داده ارسالی‬
‫تا زمان دریافت تأیید بسته ارسالی توسط گیرنده‪ ،‬قطع میشود‪ .‬درچنین شرایطی که ترافیک‬
‫داده از چندین مسیریاب بایستی عبور کند ‪ ،‬خیلی مهم است که ترافیک هر دو طرف‬
‫مسیریاب را تحلیل کنیم‪ .‬برای مثال در نظر بگیرید مشکل ارتباطی ممکن است شما را با‬
‫چندین بخش که شبکههایی با مسیریابهای گوناگون است مواجهه کند‪ .‬در چنین شبکهای‬
‫هر بخش به جهت ذخیره و بازیابی داده با بخش باالدستی ارتباط برقرار میکند‪ .‬مشکلی که‬
‫ما سعی داریم حل کنیم این است که زیر شبکه پائیندست ‪ ،‬شبکه ‪ D‬نمیتواند با هیچ‬
‫دستگاهی از شبکه ‪ A‬ارتباط برقرار کند(شکل ‪.)11-2‬‬

‫‪4۷‬‬
‫نفوذ به شبکه‬ ‫فصل دوم‬

‫شکل ‪ : 11-2‬کامپیوتر روی شبکه ‪ D‬نمیتواند با کامپیوتر در شبکه ‪ A‬ارتباط برقرار کند‬

‫ممکن است بخواهید ترافیک روی دستگاه شبکه ‪ D‬را شنود کنید ‪ .‬وقتی این کار را انجام‬
‫میدهید میبینید که ترافیک به بخش‪ A‬انتقال مییابد ولی بدون دریافت تأیید انتقال وقتی‬
‫شبکه باالدست را جهت یافتن منبع مشکل شنود میکنید‪ ،‬مشاهده میکنید که ترافیک توسط‬
‫مسیریاب شبکه ‪ B‬دور انداخته میشود ‪ .‬سرانجام این موضوع شما را به تنظیمات مسیریاب‬
‫هدایت میکند که با حل آن معمای بزرگ حل میشود‪ .‬این یک مثال ساده از اینکه چرا‬
‫گاهی الزمه ترافیک چند دستگاه در بخشهای مختلف به دلیل یافتن جزئیات‪ ،‬شنود شود‪.‬‬

‫‪48‬‬
‫نفوذ به شبکه‬ ‫فصل دوم‬

‫استفاده از ‪Cain&Abel‬‬
‫وقتی در تالش برای آلودهسازی حافظه ‪ ARP‬هستید اولین گام بدست آوردن ابزار مورد نیاز‬
‫و گردآوری بعضی دادهها است‪ .‬برای ارائه خود از ابزار امنیتی رایج به نام ‪ Cain&Abel‬از‬
‫سایت ‪ www.oxid.it‬استفاده میکنیم‪ ،‬این ابزار توسط ویندوز قابل پشتیبانی است‪ .‬این‬
‫برنامه را دانلود و نصب کنید‪ .‬وقتی روی گزینه ‪sniffer‬کلیک کنید جدولی خالی مانند شکل‬
‫‪ 11-2‬مشاهده میکنید‪.‬‬

‫شکل ‪ :11-2‬گزینه ‪ sniffer‬یا شنود در برنامه ‪Cain&Abel‬‬

‫برای تکمیل این جدول بایستی برنامه داخلی شنود را فعال تا شبکه را برای یافتن میزبانها‬
‫اسکن کنید‪ .‬برای این کار مراحل زیر را انجام دهید‪.‬‬
‫‪ -1‬دومین آیکون از سمت چپ در نوار ابزار را که شباهت به کارت شبکه دارد‪ ،‬را‬
‫کلیک کنید‪.‬‬

‫‪49‬‬
‫نفوذ به شبکه‬ ‫فصل دوم‬

‫‪ -2‬از شما در مورد رابط مورد نظر برای شنود پرسش میشود‪ .‬این رابط‪ ،‬رابط شبکهای‬
‫است که قصد آلوده کردن حافظه ‪ ARP‬آن را دارید ‪ .‬این رابط را انتخاب کنید و‬
‫‪ Ok‬را کلیک کنید‬
‫‪ -3‬برای ساختن لیست میزبانهای قابل دسترسی در شبکه بر روی آیکون(‪ )+‬کلیک‬
‫کنید‪ .‬جعبه دیالوگ اسکنر آدرس ‪ MAC‬ظاهر میشود‪ .‬در شکل ‪ 12-2‬نشان‬
‫دادهشده ‪.‬با انتخاب دکمه رادیویی میتوانید همه زیر میزبانها را انتخاب کنید و یا‬
‫اینکه محدوده مشخصی از آدرس ‪ IP‬را انتخاب و سپس ‪ OK‬کنید‪.‬‬

‫شکل ‪ :12-2‬اسکنر آدرس ‪MAC‬‬

‫در این مرحله تمام دستگاههای موجود در شبکه شما اسکن شده و در جدول آدرس ‪MAC‬‬
‫‪ IP ،‬آنها و اطالعات شرکت سازنده آنها به نمایش در میآید‪ .‬این لیستی است که وقتی‬
‫میخواهید روی آلودهسازی حافظه ‪ ARP‬کار کنید به آن نیاز دارید‪.‬‬
‫در پایین پنجره برنامه ‪ sniffer‬چندین گزینه دیگر قرار دارد‪ .‬اکنون باید لیست خود برای کار‬
‫برروی ‪ ARP‬از تب )‪ (ARP Poision Routing‬را بسازید‪.‬‬

‫‪50‬‬
‫نفوذ به شبکه‬ ‫فصل دوم‬

‫با کلیک روی تب به پنجره ‪ ARP‬بروید ‪ .‬در پنجره ‪ ARP‬با دو جدول خالی روبه رو میشوید‪.‬‬
‫بعد از اینکه گامهای اولیه تنظیمات را تکمیل کردید‪ .‬جدول باالیی دستگاههایی را که توسط‬
‫‪ ARP‬آلوده شدهاند را نشان میدهد‪ .‬جدول پایین کلیه ارتباطات بین دستگاههای آلوده شده‬
‫را نشان میدهد‪ .‬برای تنظیمات آلودهسازی مراحل زیر را انجام دهید‪.‬‬
‫‪ -1‬با کلیک در بخش باالیی عالمت (‪ )+‬در نوار ابزار‪ ،‬پنجره ظاهر میشود و روی آن‬
‫کلیک کنید‪.‬‬
‫‪ -2‬پنجره ظاهر شده دارای دو پنل است ‪ .‬در پنل سمت چپ تمام میزبانهای قابل‬
‫دسترسی در شبکه خود را مالحظه میکنید‪ .‬برروی ‪ IP‬هدف که قصد شنود‬
‫ترافیک آنرا دارید کلیک کنید‪ .‬در پنل سمت راست لیست همه میزبانها به جز‬
‫آدرس ‪ IP‬ماشین هدف را نشان میدهد‪.‬‬
‫‪ -3‬در پنل راست برروی آدرس ‪ IP‬مسیریاب که باالدست دستگاه هدف است‬
‫کلیک کنید‪ .‬و در انتها ‪ OK‬را کلیک کنید‪ .‬همانطور که در شکل ‪ 13-2‬نشان‬
‫دادهشده ‪ ،‬حال ‪ IP‬هر دو دستگاه در جدول باالیی از پنجره برنامه اصلی لیست‬
‫میشود‪.‬‬

‫‪ :13-2‬انتخاب دستگاهی که قصد داریم آلودگی حافظه ‪ ARP‬را اجرا کنیم‬

‫‪51‬‬
‫نفوذ به شبکه‬ ‫فصل دوم‬

‫‪ -1‬برای تکمیل پروسه آیکون زرد و سیاه در نوار ابزار را کلیک کنید ‪ .‬این باعث‬
‫فعال شدن وآلوده کردن حافظه ‪ ARP‬میشود و به شما اجازه میدهد بهعنوان‬
‫فردی در میان به تحلیل کلیه ترافیک بین مسیریاب باالدست و دستگاه هدف‬
‫بپردازید‪.‬‬
‫اکنون بایستی قادر باشید نرمافزار شنودگر خود را آتش کنید و پروسه تحلیل را شروع کنید‪.‬‬
‫وقتی ربایش ترافیک را به پایان رساندید‪ ،‬بهسادگی برروی آیکون زرد و سیاه رنگ کلیک‬
‫کنید تا آلودهسازی حافظه ‪ ARP‬متوقف شود ‪.‬‬

‫‪ :14-2‬نمایش پنل در آلودگی حافظه ‪ARP‬‬

‫توجه برای آلودهسازی حافظه ‪ARP‬‬


‫بهعنوان آخرین یادداشت درباره آلودهسازی حافظه ‪ ARP‬بایستی از شرایط سیستمی که‬
‫میخواهید آنرا هدف قرار دهید آگاه باشید ‪ .‬برای مثال وقتی دستگاه هدف ترافیک باال ‪،‬‬

‫‪52‬‬
‫نفوذ به شبکه‬ ‫فصل دوم‬

‫مانند سرور فایل با لینک ‪1‬گیگا بیت ‪ ،‬به کار میبرد از این تکنیک استفاده نکنید ‪ .‬سعی کنید‬
‫از این تکنیک فقط برای لینکهای ‪100‬مگا بیت استفاده کنید ‪.‬‬
‫وقتی از این تکنیک استفاده میکنید همه ترافیکی که قبالً از دستگاه هدف عبور میکرد‬
‫اکنون از دستگاه شما عبور میکند‪ .‬ممکن است کارت شبکه شما قادر به مدیریت این‬
‫ترافیک نباشد و دستگاه شما را به نقطه گلوگاه ترافیک تبدیل کند ‪ .‬این مسیریابی ممکن‬
‫باعث اثر ‪ DOS‬در سیستمی که شما تحلیل میکنید شود و در کل باعث کاهش کارایی شبکه‬
‫و ایجاد خطا در تحلیل داده میشود‪.‬‬
‫یادداشت‪ :‬میتوانید با خصوصیتی به نام مسیریابی نامتقارن‪ 1‬از عبور کلیه ترافیک از سیستم‬
‫‪http://www.oxid.it/ca_um/topics/apr.htm‬‬ ‫تحلیلگر اجتناب کنید‪ .‬برای اطالعات بیشتر به‬
‫مراجعه نمایید‪.‬‬

‫شنود در محیط مسیریابی شده‬


‫همه تکنیکهای نفوذ به کابل در شبکههای تحت سوئیچ روی شبکههای مسیریابی شده به‬
‫خوبی قابل دسترسی هستند ‪ .‬تنها نگرانی اصلی هنگام کار با محیطهای مسیریابی شده اهمیت‬
‫محل استقرار شنودگر هنگام خطایابی یک مشکل است که بخشهای چند شبکه را گسترش‬
‫میدهد‪ .‬همانگونه که آموختید‪ ،‬دستگاهها در حالت پخش فراگیر تا محدوده مسیریاب عمل‬
‫میکنند و از مسیریاب به بعد ترافیک به مسیریاب باال دست بعدی دستبهدست میشود‪ .‬در‬
‫شرایطی که ترافیک بایستی از چند مسیریاب عبور کند‪ ،‬بسیار مهم است که ترافیک همه‬
‫جهات مسیریاب را تحلیل کنیم ‪ .‬برای مثال‪ ،‬خطای ارتباطی در شبکهای با بخشهای مختلف‬
‫که با چند مسیریاب به هم متصل هستند را در نظر بگیرید‪ .‬هر بخش از طریق یک مسیریاب‬
‫باالدست با ذخیره و بازیابی داده ‪ ،‬ارتباط برقرار میکند‪ .‬بر اساس شکل ‪ 15-2‬مشکلی که‬

‫‪1‬‬
‫‪asymmetric routing‬‬
‫‪53‬‬
‫نفوذ به شبکه‬ ‫فصل دوم‬

‫قصد داریم حل کنیم این است که زیر شبکه ‪ ،‬شبکه ‪ D‬قادر به ارتباط با دستگاههای شبکه‬
‫‪ A‬نیست‪.‬‬
‫اگر ترافیک دستگاهها در شبکه ‪ D‬را شنود کنید که مشکل ارتباط با دستگاهها در سایر‬
‫شبکهها را دارند‪ ،‬ممکن است به وضح مشاهده کنید که داده به بخشهای دیگر شبکه انتقال‬
‫مییابد ولی برنمیگردد‪ .‬اگر در قراردهی شنودگر خود تجدید نظر کنید و شروع به شنود‬
‫ترافیک در بخش باالدستی (شبکه ‪ )B‬نمایید تصویر دقیقتری از آنچه اتفاق میافتد خواهید‬
‫داشت‪.‬در این نقطه ممکن است ترافیک کاهش یابد و یا به شکل غیردرستی توسط مسیریاب‬
‫شبکه ‪ B‬مسیریابی شود ‪.‬سرانجام این شما را به تنظیمات مسیریاب هدایت میکند که وقتی‬
‫حل شد مشکل بزرگی برطرف میشود‪ .‬اگرچه این سناریو کمی حوصله سربر است ‪ ،‬پند‬
‫داستان این است که وقتی با چند مسیریاب و بخشهای شبکه کار میکنید‪ ،‬شاید الزم باشد‬
‫محل استقرار شنودگر خود را جابهجا کنید تا شاید تصویر بهتری از شبکه داشته باشید‪.‬‬
‫در این مثال اولیه نشان میدهد که چرا شنود ترافیک چندین دستگاه در چندین بخش به‬
‫خاطر یافتن دقیق مشکل ضروری است‪.‬‬

‫شکل ‪ :15-2‬دستگاه در شبکه ‪ D‬قادر به ارتباط با شبکه ‪ B‬نیست‬

‫‪54‬‬
‫نفوذ به شبکه‬ ‫فصل دوم‬

‫نقشههای شبکه‬
‫در بحث مختصرمان درباره استقرار شبکه ‪ ،‬به نقشههای مختلف شبکه نگاهی انداختیم ‪.‬نقشه‬
‫شبکه یا دیاگرام شبکه ‪ ،‬طرحی است که کلیه دستگاهها و منابع شبکه و چگونگی ارتباط‬
‫آنها را نشان میدهد‪ .‬راهی بهتر از این برای قراردهی شنودگر که بتواند شبکه را بهوضوح‬
‫مشاهده کرد‪ ،‬وجود ندارد‪ .‬اگر به نقشه شبکه دسترسی دارید این بهترین راه است‪ ،‬چراکه‬
‫بهترین راه برای اشکالزدایی و تحلیل پردازش میباشد‪ .‬به خاطر داشته باشید که نیمی از نبرد‬
‫در اشکالزدایی شبکه‪ ،‬اشاره به جزئیات مشکل است پس بهتر است همیشه نقشهای با جزئیات‬
‫داشته باشید‪.‬‬

‫تمرین استقرار شنودگر‬


‫تا حاال به ‪ 4‬روش مختلف برای ربایش ترافیک شبکه در محیطهای سوئیچ را بررسی کردیم‪.‬‬
‫روش دیگر این است که بهسادگی بتوانیم نرمافزار شنود را در دستگاهی که میخواهیم شنود‬
‫کنیم‪ ،‬نصب کنیم‪ .‬بنابراین قادر خواهیم بود ترافیک آنرا شنود کنیم (روش نصب مستقیم)‪.‬‬
‫این پنج روش ممکن است کمی گیجکننده باشند‪ ،‬اینکه کدام مناسب است جدول‪ 2-2‬برای‬
‫هر روش راهنماییهایی را ارائه داده است‪.‬‬
‫بهعنوان تحلیلگر تا حد ممکن باید مخفی باشیم‪ .‬در دنیای واقعی ما دادههای موردنیاز خود‬
‫را جمعآوری میکنیم بدون اینکه اثری از خود بهجای بگذاریم ‪ .‬بهعنوان بازرس قانونی قصد‬
‫نداریم با صحنه جرم در ارتباط باشیم ‪ ،‬همچنین با فایل ربایش شده ترافیک شبکه را آلوده‬
‫کنیم ‪.‬‬
‫همانطور که بهصورت عملی در فصول آینده پیش میرویم در مورد بهترین روش ربایش‬
‫فایل و داده موردنیاز‪ ،‬مورد به مورد‪ ،‬بحث میکنیم ‪ .‬شکل ‪ 16-2‬به شما کمک میکند که‬
‫بهترین روش برای ربایش فایل را انتخاب کنید‪ .‬در نظر داشته باشید این چارت یک مرجع‬
‫ساده است و همه تراکنشهای ممکن برای نفوذ در شبکه را پوشش نمیدهد‪.‬‬

‫‪55‬‬
‫نفوذ به شبکه‬ ‫فصل دوم‬

‫جدول ‪ : 2-2‬راهنمایی برای روشهای شنود در محیط سوئیچ‬


‫راهنمایی‬ ‫روش‬
‫این روش معموالً ترجیح داده میشود‪ ،‬چون اثری از خود برجای‬ ‫‪‬‬
‫نمیگذارد و در خالل فعالیت آن بسته اضافی تولید نمیشود‪.‬‬
‫نظارت پورت‬
‫بدون در نظر گرفتن کاربر‪ ،‬به صورت آفالین نیز میتوان آنرا تنظیم کرد‬ ‫‪‬‬
‫که مناسب انعکاس پورت در مسیریاب و سرور است‪.‬‬
‫زمانی مناسب است که اگر میزبان بهطور موقت آفالین شود نگرانی ایجاد‬ ‫‪‬‬
‫نکند‪.‬‬
‫زمانی که بخواهید از چند میزبان ‪ ،‬ترافیک را ربایش کنید بیاثر است چرا‬ ‫‪‬‬
‫هاب بیرونی‬
‫که تصادم و از بین رفته بستهها قریبالوقوع خواهد بود‪.‬‬
‫باعث مفقود شدن بستهها در میزبانها با سرعت ‪100‬تا ‪ 1000‬مگا بیت در‬ ‫‪‬‬
‫ثانیه میشود چون اکثر هابها فقط داری سرعت ‪ 10‬مگا بایت هستند‪.‬‬
‫زمانی مناسب است که نگران از دسترس خارج کردن میزبان بهطور موقت‬ ‫‪‬‬
‫نباشید‪.‬‬
‫تنها گزینه برای شنود ترافیک از فیبر نوری است‪.‬‬ ‫‪‬‬
‫استفاده از ‪Tap‬‬
‫‪ Tap‬برای کارهای دستی در شبکههای مدرن طراحیشده و نسبت به هاب‬ ‫‪‬‬
‫بیرونی بهتر است‪.‬‬
‫ممکن است این روش وقتی بودجه شما محدود است‪ ،‬گران باشد‪.‬‬ ‫‪‬‬
‫جهت تغییر مسیریابی و عبور بسته از سیستم تحلیلگر کارکرد آلودهسازی‬ ‫‪‬‬
‫بسته ممکن است کمی در هم و برهم به نظر برسد‪.‬‬ ‫آلودهسازی‬
‫وقتی الزم است بدون آفالین کردن وعدم دسترسی به انعکاس پورت‪،‬‬ ‫‪‬‬ ‫حافظه ‪ARP‬‬

‫ربایش سریع از دستگاهی داشته باشید‪ ،‬این روش میتواند مؤثر باشد‪.‬‬
‫معموالً پیشنهاد نمیشود چون اگر حالتی در میزبان باشد که سبب‬ ‫‪‬‬
‫کاهش ترافیک و یا دستکاری بستهها در چنین روشی شود ‪ ،‬قادر به ارائه‬
‫دقت الزم نیست‪.‬‬
‫نصب مستقیم‬
‫ضرورتی به بودن کارت شبکه در حالت بیقاعده نیست‪.‬‬ ‫‪‬‬
‫بهترین روش برای تست محیطها ‪ ،‬بررسی و کارایی ‪ Baselining‬و‬ ‫‪‬‬
‫بررسی فایلهای ربایش شده در جای دیگر‪.‬‬

‫‪56‬‬
‫نفوذ به شبکه‬ ‫فصل دوم‬

‫نفوذ به شبکه‬

‫از روش انعکاس پورت‬


‫بله‬ ‫ایا سوئیچ انعکاس‬
‫استفاده میشود‪.‬‬ ‫پورت را پشتیبانی‬
‫میکند؟‬

‫خیر‬
‫خیر‬

‫خیر‬
‫دستگاه میتواند‬
‫از روش آلودگی‬
‫به طور موقت‬
‫حافظه‪ARP‬‬
‫آفالین شود؟‬
‫استفاده میکنیم ‪.‬‬

‫بله‬

‫خیر‬ ‫دسترسی به‬ ‫بله‬


‫‪Tap‬‬
‫دارید؟‬

‫استفاده از‬ ‫استفاده از دستگاه‬


‫هاب بیرونی‬ ‫‪Tap‬‬

‫شکل ‪ :16-2‬چارت برای تعیین بهترین روش نفوذ در شبکه‬

‫‪5۷‬‬
‫فصل سوم‬
‫مقدمهای بر ‪Wireshark‬‬
‫مقدمه بر ‪Wireshark‬‬ ‫فصل سوم‬

‫مقدمهای بر ‪Wireshark‬‬
‫همانطوری که در فصل ‪ 1‬بیان شد‪ ،‬برنامههای کاربردی شنود بسته‪ 1‬متعددی برای تحلیل‬
‫شبکه وجود دارد‪ ،‬ولی ما در این کتاب از ‪ Wireshark‬استفاده خواهیم کرد‪ .‬این فصل‬
‫‪ Wireshark‬را معرفی مینماید‪.‬‬

‫تاریخچهای مختصر از ‪Wireshark‬‬


‫‪ Wireshark‬تاریخچهای بسیار غنی دارد‪ .‬جرالد کامبز‪ 2‬فارغالتحصیل علوم کامپیوتر از‬
‫دانشگاه میسوری در کانزاس سیتی آن را به سبب ضرورت طراحی کرد‪ .‬نسخهی نخست از‬
‫برنامه کاربردی کامبز به نام ‪ Ethereal‬در سال ‪ 1998‬تحت مجوز عمومی ‪)GPL( 3 GNU‬‬
‫منتشر شد‪.‬‬
‫کامبز هشت سال پس از انتشار ‪ Ethereal‬کار خود را ترک کرد تا فرصتهای شغلی دیگری‬
‫را دنبال نماید‪ .‬متأسفانه کارفرمایش در آن زمان برای مارکهای تجاری ‪ Ethereal‬حقوق‬
‫کامل را در اختیار داشت‪ ،‬و کامبز نمیتوانست به توافقی دست پیدا کند که به او اجازه دهد‬
‫تا برند ‪ Ethereal‬را کنترل نماید‪ .‬در عوض کامبز و بقیهی تیم طراحی برنامه در اواسط سال‬
‫‪ 2006‬این پروژه را با عنوان ‪ Wireshark‬دوباره برندگذاری کردند‪.‬‬
‫محبوبیت ‪ Wireshark‬بهطور قابلتوجهی افزایش پیدا کرده است و هم اکنون در تیم طراحی‬
‫آن بیش از ‪ 500‬نفر شرکت دارند‪ .‬برنامهای که تحت نام ‪ Ethereal‬وجود دارد دیگر مورد‬
‫توسعه قرار نگرفته است‪.‬‬

‫‪1‬‬
‫‪packet sniffing‬‬
‫‪2‬‬
‫‪Gerald Combs‬‬
‫‪3‬‬
‫)‪GNU Public License (GPL‬‬
‫‪60‬‬
‫مقدمه بر ‪Wireshark‬‬ ‫فصل سوم‬

‫مزایای ‪Wireshark‬‬
‫‪ Wireshark‬مزایای زیادی دارد که آن را برای استفادهی هر روزه جذاب مینماید‪ .‬این برنامه‬
‫هم برای افراد تازهکار و هم برای تحلیلگر حرفهای بسته است و ویژگیهای گوناگونی را‬
‫برای جلب نظر هر گروه داراست‪ .‬اجازه دهید ‪ Wireshark‬را بر اساس معیارهای تعریفشده‬
‫در فصل ‪ 1‬بهعنوان یک ابزار شنود بسته مورد بررسی قرار دهیم‪.‬‬

‫پروتکلهای پشتیبانی شده‬


‫‪ Wireshark‬در تعداد پروتکلها که پشتیبانیشان میکند برتری دارد ؛ یعنی بیش از ‪850‬‬
‫پروتکل در تاریخ نگارش این متن‪ .‬اینها در دامنهای از پروتکلهای عمومی نظیر ‪ IP‬و‬
‫‪ DHCP‬تا پروتکلهای اختصاصی پیشرفتهتر نظیر ‪ AppleTalk‬و ‪ BitTorrent‬قرار میگیرند‪،‬‬
‫و از آنجایی که ‪ Wireshark‬تحت یک مدل متن باز‪ 1‬طراحی شده است‪ ،‬بنابراین‪ ،‬پشتیبانی‬
‫پروتکل جدید با هر بهروزآوری اضافه میشود‪.‬‬

‫نکته‪ :‬در مورد نادری که ‪ Wireshark‬پروتکل مورد نیاز شما را پشتیبانی نکند‪ ،‬خودتان‬
‫میتوانید آن را ‪ code‬کنید و ‪ code‬خود را برای گنجاندن در این برنامه کاربردی به طراحان‬
‫‪ Wireshark‬ارائه دهید (البته اگر ‪ code‬شما پذیرفته شود)‪.‬‬

‫کاربرپسند بودن‪:‬‬
‫درک واسط ‪ Wireshark‬یکی از سادهترین واسطها در میان تمام برنامههای کاربردی‬
‫شنودگر بسته است‪ .‬این واسط مبتنی بر ‪ GUI‬و متنی است که بهروشنی نوشتهشده است و‬
‫همچنین طرح و چیدمانی آسان دارد‪ .‬این واسط همچنین ویژگیهای متعددی را فراهم‬
‫میآورد که برای ارتقای قابلیت استفاده طراحی شدهاند که از آن جمله میتوان به کدگذاری‬
‫رنگ مبتنی بر پروتکل و نمایشهای گرافیکی پر جزئیات از دادههای خام اشاره کرد‪ .‬رابط‬

‫‪1‬‬
‫‪open source‬‬
‫‪61‬‬
‫مقدمه بر ‪Wireshark‬‬ ‫فصل سوم‬

‫گرافیکی کاربر (‪ Wireshark )GUI‬برخالف بعضی از انواع دیگر که مبتنی بر خط فرمان‬


‫هستند – نظیر ‪ – tcpdump‬برای کسانی عالی است که تازه در حال ورود به دنیای تحلیل‬
‫بسته هستند‪.‬‬
‫هزینه‪:‬‬
‫ازآنجاییکه ‪ Wireshark‬متنباز است‪ ،‬بنابراین قیمتگذاری آن نمیتواند زیاد باشد‪.‬‬
‫‪ Wireshark‬بهصورت یک نرمافزار رایگان تحت ‪ GPL‬منتشر میشود‪ .‬شما برای هر‬
‫مقصودی میتوانید ‪ Wireshark‬را دانلود نمایید؛ خواه به مقصود شخصی و خواه تجاری‪.‬‬

‫نکته‪ :‬اگرچه ‪ Wireshark‬میتواند رایگان باشد‪ ،‬اما بعضی این اشتباه را کردهاند که تصادفاً‬
‫برای آن پول پرداخت نمودهاند‪ .‬اگر برای ‪packet sniffer‬ها یا نرمافزارهای شنود بسته سری‬
‫به ‪ eBay‬بزنید‪ ،‬آنگاه تعجب خواهید کرد از اینکه میبینید چه تعداد خواهان آن هستند تا‬
‫مجوز تصدی حرفهای‪ 1‬را به قیمت پایین ‪ 39/95‬دالر برای ‪ Wireshark‬بفروشند‪ .‬مسلماً این‬
‫یک نمایش خندهدار است‪ ،‬در حالیکه میتوانید آنرا بهرایگان دریافت نمایید‪.‬‬

‫پشتیبانی برنامه‪:‬‬
‫سطح پشتیبانی بستهی یک نرمافزار میتواند آن را بهتر یا نابود کند‪ .‬وقتی با نرمافزاری مانند‬
‫‪ Wireshark‬سروکار دارید که بهطور رایگان توزیع میشود‪ ،‬ممکن است هیچ پشتیبانی‬
‫رسمیای وجود نداشته باشد و به همین دلیل است که جامعهی متنباز برای فراهم کردن‬
‫پشتیبانی اغلب بر کاربرانش تکیه میکند‪ .‬بخت با ما یار است و جامعهی ‪ Wireshark‬یکی‬
‫از فعالترینها در میان پروژههای متنباز است‪ .‬صفحهی وب ‪ Wireshark‬مستقیماً با چندین‬
‫فرم پشتیبانی – ازجمله مستندات آنالین‪ ،‬ویکی‪ 2‬پشتیبانی و توسعه‪ ،‬سؤاالت رایج پرسیده‬
‫شده (‪ ،)FAQs‬و مکانی برای ‪ sign up‬کردن لیست پستی (که توسط اغلب طراحان ارشد‬

‫‪1‬‬
‫‪professional enterprise license‬‬
‫‪2‬‬
‫‪wiki‬‬
‫‪62‬‬
‫مقدمه بر ‪Wireshark‬‬ ‫فصل سوم‬

‫این برنامه نظارت میشود) – پیوند دارد‪ .‬پشتیبانی پولی برای ‪ Wireshark‬نیز از سوی ‪CAGE‬‬
‫‪ Technologies‬و از طریق برنامهی ‪ SharkNet‬مهیا است‪.‬‬
‫پشتیبانی سیستمعامل‬
‫‪ Wireshark‬همهی سیستمهای عامل مدرن اصلی را – ازجمله ‪ ،Mac OS X ،Windows‬و‬
‫پلتفورمهای مبتنی بر ‪ – Linux‬پشتیبانی میکند‪ .‬شما میتوانید فهرست کاملی از سیستمهای‬
‫عامل پشتیبانی شده را در صفحهی خانهی ‪ Wireshark‬پیدا کنید‪.‬‬

‫نصب ‪Wireshark‬‬
‫فرآیند نصب ‪ Wireshark‬بهطور شگفتآوری ساده است‪ .‬اما‪ ،‬پیش از نصب ‪Wireshark‬‬
‫اطمینان حاصل کنید که سیستم شما الزامات و نیازمندیهای زیر را برآورده مینماید‪:‬‬
‫‪ ‬پردازشگر ‪ 400 MHz‬یا سریعتر‬
‫‪128 MB RAM ‬‬
‫‪ ‬حداقل ‪ ۷5 MB‬فضای ذخیرهی دیسک سخت‬
‫‪ NIC ‬که حالت بیقاعده‪ 1‬را پشتیبانی کند‬
‫‪ ‬درایور ربایش ‪WinPcap 2‬‬
‫درایور ربایش ‪ WinPcap‬در ‪ Windows‬رابط برنامهنویسی نرمافزار‪ 3‬ربایش بستهی ‪pcap‬‬
‫است‪ .‬به بیان ساده‪ ،‬این درایور با سیستمعامل شما تعامل میکند تا بستههای اطالعاتی‪ 4‬خام‬
‫را ربایش کند‪ ،‬فیلترها را اجرا نماید‪ ،‬و ‪ NIC‬را به داخل حالت بیقاعده یا خارج از آن‬
‫جهتدهی نماید‪.‬‬

‫‪1‬‬
‫‪promiscuous mode‬‬
‫‪2‬‬
‫‪capture‬‬
‫‪3‬‬
‫)‪application programming interface (API‬‬
‫‪4‬‬
‫‪packet data‬‬
‫‪63‬‬
‫مقدمه بر ‪Wireshark‬‬ ‫فصل سوم‬

‫اگرچه میتوانید ‪WinPcap‬را بهطور جداگانه دانلود کنید از ‪http://www.wmpcap.org/‬‬


‫ولی بهطور معمول بهتر آن است که ‪ WinPcap‬را از بستهی نصب ‪ Wireshark‬نصب نمایید‪،‬‬
‫زیرا نسخهی لحاظ شدهی ‪ WinPcap‬برای کار با ‪ Wireshark‬آزمایش شده است‪.‬‬

‫نصب روی سیستمهای ‪ Windows‬مایکروسافت‬


‫نخستین گام در هنگام نصب ‪ Wireshark‬تحت ‪ Windows‬عبارت است از به دست آوردن‬
‫آخرین ‪ build‬نصب از صفحهی رسمی وب ‪ .http://www.wireshark.org/‬مسیر خود را‬
‫تا بخش ‪ Downloads‬در وبسایت پیدا کنید و یک ‪ mirror‬را انتخاب نمایید‪ .‬زمانی که‬
‫بسته را دانلود کردید مراحل زیر را دنبال نمایید‪:‬‬
‫‪ .1‬برای شروع نصب روی فایل‪ exe‬دوبار کلیک کنید‪ ،‬و سپس روی ‪ Next‬در پنجرهی‬
‫مقدمه کلیک کنید‪.‬‬
‫‪ .2‬موافقتنامهی بهرهبرداری را مطالعه نمایید و اگر با آن موافق هستید روی ‪I Agree‬‬
‫کلیک کنید‪.‬‬
‫‪ .3‬مؤلفههای ‪ Wireshark‬که مایل به نصب آنها هستید را انتخاب کنید (همان طوری‬
‫که در شکل ‪ 1-3‬نشان داده شده است)‪ .‬برای مقصود ما‪ ،‬شما میتوانید با کلیک‬
‫کردن بر روی ‪ Next‬حاالت پیشفرض را بپذیرید‪.‬‬
‫‪ .4‬روی ‪ Next‬در پنجرهی ‪ Additional Tasks‬کلیک کنید‪.‬‬
‫‪ .5‬مکانی را انتخاب کنید که میخواهید ‪ Wireshark‬آنجا نصب شود‪ ،‬و سپس بر روی‬
‫‪ Next‬کلیک کنید‪.‬‬
‫‪ .6‬وقتی که ‪ dialog‬میپرسد که آیا میخواهید ‪ WinPcap‬را نصب کنید یا نه‪ ،‬اطمینان‬
‫حاصل کنید که جعبهی ‪ Install WinPcap‬تیک خورده باشد (همان طوری که در‬
‫شکل ‪ 2-3‬نشان داده شده است)‪ ،‬و سپس بر روی ‪ Install‬کلیک کنید‪ .‬فرآیند نصب‬
‫باید شروع شود‪.‬‬

‫‪64‬‬
‫مقدمه بر ‪Wireshark‬‬ ‫فصل سوم‬

‫‪ .۷‬درحدود نصف راه تا نصب ‪ ،Wireshark‬نصب ‪ WinPcap‬باید آغاز بشود‪ .‬زمانی‬


‫که این اتفاق رخ داد‪ ،‬روی ‪ Next‬در پنجرهی مقدمه کلیک کنید‪ ،‬موافقتنامهی‬
‫بهرهبرداری را مطالعه نمایید و روی ‪ I Agree‬کلیک کنید‪.‬‬
‫‪ WinPcap .8‬باید در کامپیوتر شما نصب شود‪ .‬پس از کامل شدن این نصب‪ ،‬روی‬
‫‪ Finish‬کلیک کنید‪.‬‬
‫‪ Wireshark .9‬باید نصب خود را کامل نماید‪ .‬زمانی که به پایان رسید روی ‪Next‬‬
‫کلیک کنید‪.‬‬
‫‪ .10‬در پنجرهی تأیید نصب روی ‪ Finish‬کلیک کنید‪.‬‬

‫شکل ‪ :1-3‬انتخاب کردن مؤلفههای ‪ Wireshark‬که میخواهید نصب کنید‬

‫‪65‬‬
‫مقدمه بر ‪Wireshark‬‬ ‫فصل سوم‬

‫شکل ‪ :2-3‬انتخاب کردن گزینه برای نصب درایور ‪WinPcap‬‬

‫نصب روی سیستمهای ‪Linux‬‬


‫نخستین مرحله در زمان نصب ‪ Wireshark‬روی سیستم ‪ Linux‬عبارت است از دانلود کردن‬
‫بستهی نصب مناسب‪ .‬همهی نسخههای ‪ Linux‬پشتیبانی نشده است‪ ،‬و بنابراین‪ ،‬اگر توزیع‬
‫بخصوص شما بستهی نصب خود را نداشت تعجب نکنید‪.‬‬
‫بهطور معمول‪ ،‬برای نرمافزار ‪ ،system-wide‬دسترسی به ریشه یک ضرورت است‪ .‬اما‪،‬‬
‫نصبهای نرمافزار محلی گردآوری شده از منبع را میتوان بهطور معمول بدون دسترسی به‬
‫ریشه نصب کرد‪.‬‬

‫سیستمهای مبتنی بر ‪RPM‬‬


‫برای توزیعهای مبتنی بر ‪ – RPM‬نظیر ‪ – Red Hat Linux‬بستهی نصب مناسب را از‬
‫صفحهی وب ‪ Wireshark‬دانلود نمایید‪ .‬سپس یک پنجرهی فرمان را باز کنید و عبارت زیر‬
‫را وارد نمایید (نام فایل بستهی دانلود خود را بهطور مقتضی جایگزین کنید)‪:‬‬
‫‪▐ Rpm -ivh wireshark-0.99-3.1386.rpm‬‬

‫‪66‬‬
‫مقدمه بر ‪Wireshark‬‬ ‫فصل سوم‬

‫اگر وابستگیها گم شدهاند‪ ،‬آنگاه آنها را نصب کنید و نصب ‪ Wireshark‬را تکرار نمایید‪.‬‬

‫سیستمهای مبتنی بر ‪DEB‬‬


‫در یک توزیع مبتنی بر ‪ – DEB‬نظیر ‪ Debian‬یا ‪ – Ubuntu‬میتوانید ‪ Wireshark‬را از‬
‫مخزنهای سیستم نصب نمایید‪ .‬یک پنجرهی فرمان را باز کنید و عبارت زیر را وارد نمایید‪:‬‬
‫‪▐ Apt-get install wireshark‬‬
‫کامپایل کردن از منبع‬
‫اگر توزیع لینوکس شما از یک نرمافزار مدیریت بستهی خودکار استفاده نمیکند‪ ،‬آنگاه‬
‫مؤثرترین راه برای نصب ‪ Wireshark‬کامپایل کردن آن از منبع است‪ .‬برای انجام این کار‬
‫مراحل زیر را کامل نمایید‪:‬‬
‫‪ .1‬بستهی منبع را از صفحهی وب ‪ Wireshark‬دانلود کنید‪.‬‬
‫‪ .2‬آرشیو را با تایپ کردن عبارت زیر استخراج کنید (نام فایل بستهی دانلود خود را‬
‫بهطور مقتضی جایگزین کنید)‪:‬‬
‫‪▐ Tar -jxvf wireshark-i.2.2.tar.bzz‬‬

‫‪ .3‬وارد دایرکتوری تازه ساخته شده شوید که فایلها از آن استخراج شدهاند‪.‬‬


‫‪ .4‬این منبع را همانند کاربر سطح ریشه بهگونهای پیکربندی کنید که برای توزیع‬
‫لینوکس شما با استفاده از دستور ‪ ./Configure‬بهدرستی کار کند‪ .‬اگر میخواهید‬
‫از گزینههای پیش فرضِ نصب استفاده نکنید‪ ،‬آنگاه میتوانید آن گزینهها را در این‬
‫مرحلهی نصب مشخص نمایید‪ .‬اگر هر کدام از وابستگیها گم شده باشد‪ ،‬آنگاه‬
‫بهاحتمال بسیار زیاد یک پیغام خطا را دریافت خواهید کرد‪ .‬اگر نصب موفق باشد‪،‬‬
‫آنگاه همان طوری که در شکل ‪ 3-3‬نشان داده شده است باید پیغامی را ببینید که به‬
‫موفقیت اشاره دارد‪.‬‬
‫‪ .5‬برای ساختن منبع در یک ‪ binary‬دستور ‪ make‬را وارد کنید‪.‬‬

‫‪6۷‬‬
‫مقدمه بر ‪Wireshark‬‬ ‫فصل سوم‬

‫‪ .6‬نصب نهایی را با ‪ make install‬به راه اندازید‪.‬‬

‫شکل ‪ :3-3‬خروجی موفق دستور ‪. /configure‬‬

‫نصب روی سیستمهای ‪Mac OS X‬‬


‫برای نصب ‪ Wireshark‬روی ‪ Mac OS X Snow Leopard‬چند هشدار وجود دارد‪ ،‬اما‬
‫نصب آن کار سختی نیست و من مراحل نصب را در اینجا برشمردهام‪ .‬این مراحل بهقرار زیر‬
‫است‪:‬‬
‫‪ .1‬بستهی ‪ DMG‬را از صفحهی وب ‪ Wireshark‬دانلود کنید‪.‬‬
‫‪ Wireshark.app .2‬را در پوشهی ‪ Applications‬کپی کنید‪.‬‬
‫‪ .3‬پوشهی ‪ Utilities‬را در ‪ Wireshark.app‬بازکنید‪.‬‬
‫‪ .4‬در ‪ Finder‬بر روی ‪ Go‬کلیک کنید و ‪ Go To Folder‬را انتخاب کنید‪.‬‬
‫‪ /user/local/bin/‬را تایپ کنید تا دایرکتوری باز شود‪.‬‬

‫‪68‬‬
‫مقدمه بر ‪Wireshark‬‬ ‫فصل سوم‬

‫‪ .5‬محتوای پوشهی ‪ Command Line‬را در ‪ /user/local/bin/‬کپی کنید‪ .‬برای انجام‬


‫این کار باید رمز عبور خود را وارد نمایید‪.‬‬
‫‪ .6‬در پوشهی ‪ ،Utilities‬پوشهی ‪ ChmodBPF‬را در پوشهی ‪ StartupItems‬کپی‬
‫کنید‪ .‬برای انجام این کار و تکمیل نصب نیز باید رمز عبور خود را وارد نمایید‪.‬‬

‫مبانی ‪Wireshark‬‬
‫پس از نصب موفقیتآمیز ‪ Wireshark‬روی سیستم خود میتوانید آشنا شدن خود با آن را‬
‫آغاز نمایید‪ .‬اکنون سرانجام میتوانید ‪ packet sniffer‬یا شنودکننده بسته کامالً فعال خود را‬
‫بازکنید و ببینید که هیچ چیزی وجود ندارد!‬
‫بسیار خوب‪ ،‬پس ‪ Wireshark‬برای اولین بار که آن را باز میکنید خیلی جالب نیست‪ .‬برای‬
‫آنکه کارها خیلی جالب شود باید قدری اطالعات وارد کنید‪.‬‬

‫نخستین ربایش بسته‬


‫برای وارد کردن بستهی اطالعاتی در ‪ ،Wireshark‬نخستین ربایش بستهی خود را اجرا‬
‫خواهید کرد‪ .‬ممکن است فکر کنید‪" ،‬وقتی مشکلی در شبکه وجود ندارد چطور قرار است‬
‫بستهها را ربایش کنم؟"‪.‬‬
‫نخست‪ ،‬همیشه مشکلی در شبکه وجود دارد‪ .‬اگر حرف مرا باور ندارید‪ ،‬پس ادامه بدهید و‬
‫برای همهی کاربران شبکهتان یک نامهی الکترونیک بفرستید و به آنها بگویید که همه چیز‬
‫عالی است‪.‬‬
‫دوم‪ ،‬برای آنکه تحلیل بسته خود را اجرا کنید نیازی نیست که مشکلی وجود داشته باشد‪.‬‬
‫درواقع‪ ،‬اغلب تحلیلگران بسته برای تحلیل کردن ترافیک بدون مشکل زمان بیشتری صرف‬
‫میکنند تا برای ترافیکی که مشغول رفع اشکال در آن هستند‪ .‬شما برای مقایسه کردن به یک‬
‫خط مبنا نیاز دارید تا بتوانید ترافیک شبکه را بهطور مؤثری رفع اشکال نمایید‪ .‬برای مثال‪،‬‬

‫‪69‬‬
‫مقدمه بر ‪Wireshark‬‬ ‫فصل سوم‬

‫اگر میخواهید مشکلی در خصوص ‪ DHCP‬را با تحلیل کردن ترافیک آن حل کنید‪ ،‬آنگاه‬
‫باید این امر را درک کنید که جریان کار ‪ DHCP‬چه شکلی دارد‪.‬‬
‫به بیان گستردهتر‪ ،‬برای یافتن ناهنجاریها در فعالیت روزانهی شبکه‪ ،‬باید بدانید که فعالیت‬
‫بهنجار روزانهی شبکه چگونه است‪ .‬زمانی که شبکهی شما به شکلی بدون اشکال کار‬
‫میکند‪ ،‬میتوانید خط مبنای خود را بهصورتی قرار دهید که بفهمید ترافیک در یک وضعیت‬
‫نرمال و بهنجار چه شکلی دارد‪.‬‬
‫پس بیایید تا بستههایی را ربایش کنیم!‬
‫‪ Wireshark .1‬را بازکنید‪.‬‬
‫‪ .2‬از منوی کشویی باال گزینه ‪ Capture‬و سپس ‪ Interfaces‬را انتخاب کنید‪ .‬باید‬
‫دیالوگی را ببینید که انواع واسطهایی را فهرست میکند که از آنها میتوان برای‬
‫ربایش بستهها‪ ،‬همراه با نشانیهای ‪IP‬شان استفاده کرد‪.‬‬
‫‪ .3‬واسطی را انتخاب کنید که میخواهید از آن استفاده نمایید (همان طوری که در‬
‫شکل ‪ 4-3‬نشان داده شده است) و سپس بر روی ‪ Start‬کلیک کنید و یا تنها بر‬
‫روی واسط زیر بخش ‪ Interface List‬از صفحهی خوشامدگویی کلیک نمایید‪.‬‬
‫دادهها باید شروع به پر شدن کنند‪.‬‬

‫شکل ‪ :4-3‬انتخاب کردن یک واسط که در آن ربایش بسته را اجرا میکنید‪.‬‬

‫‪۷0‬‬
‫مقدمه بر ‪Wireshark‬‬ ‫فصل سوم‬

‫‪ .4‬در حدود یک دقیقه یا همین حدود صبر کنید‪ ،‬و زمانی که برای متوقف کردن‬
‫ربایش آماده بودید به دادههایتان نگاه کنید؛ روی دکمهی ‪ Stop‬از منوی کشویی‬
‫‪ Capture‬کلیک کنید‪.‬‬
‫زمانی که این مراحل را تکمیل کردید و فرآیند ربایش را به پایان رساندید‪ ،‬پنجرهی اصلی‬
‫‪ Wireshark‬باید با نمایش دادهها پدیدار شود‪ .‬در واقع‪ ،‬ممکن است از حجم اطالعاتی که‬
‫ظاهر میشود شوکه شوید‪ ،‬اما وقتی پنجرهی اصلی ‪ Wireshark‬را یک به یک توضیح دهیم‪،‬‬
‫آنگاه اینها بهسرعت به خود معنی گرفته و معقول میشوند‪.‬‬

‫پنجرهی اصلی ‪Wireshark‬‬


‫شما بیشتر وقت خود را در پنجرهی اصلی ‪ Wireshark‬خواهید گذراند‪ .‬اینجایی است که‬
‫همهی بستههایی که ربایش میکنید نمایش داده میشوند و به قالبی قابل فهمتر تجزیه‬
‫میگردند‪ .‬با استفاده از ربایش بستهای که انجام دادهاید‪ ،‬بیایید نگاهی به پنجرهی اصلی‬
‫‪ Wireshark‬بیندازیم (همان طوری که در شکل ‪ 5-3‬نشان داده شده است)‬

‫شکل ‪ :5-3‬پنجرهی اصلی ‪ Wireshark‬که از یک طراحی سه قسمتی استفاده میکند‪.‬‬

‫‪۷1‬‬
‫مقدمه بر ‪Wireshark‬‬ ‫فصل سوم‬

‫این سه قسمت در پنجرهی اصلی(باال ‪ -‬میانی‪ -‬پایین) به یکدیگر وابسته هستند‪ .‬برای دیدن‬
‫جزئیات یک بستهی منفرد در قسمت پنجره میانی ‪ ،Packet Details‬نخست باید آن بسته را‬
‫با کلیک کردن روی آن در قسمت پنجره باال ‪ Packet List‬انتخاب نمایید‪ .‬وقتی این بسته را‬
‫انتخاب کردید‪ ،‬آنگاه میتوانید بایتهایی را ببینید که – وقتی روی آن بخش از بسته در‬
‫‪ Packet Details‬کلیک میکنید – با بخش معینی از بسته در بخش پنجره پایین ‪Packet‬‬
‫‪ Bytes‬متناظر هستند‪.‬‬

‫نکته‪ :‬توجه داشته باشید که شکل ‪ 5-3‬تعداد محدودی از پروتکلهای مختلف در بخش‬
‫‪ Packet List‬را فهرست میکند‪ .‬هیچ تفکیک بصری پروتکلها در الیههای مختلف وجود‬
‫ندارد؛ همهی بستهها آنطور نشان داده شدهاند که در کابل دریافت شدهاند‪ .‬محتوای هر بخش‬
‫بهقرار زیر است‪:‬‬
‫لیست بسته‬
‫لیست بسته‪ 1‬بخش باالیی جدولی را نشان میدهد که حاوی کلیهی بستهها در فایل ربایش‬
‫جاری است‪ .‬این جدول ستونهایی دارد که حاوی شمارهی بسته‪ ،‬زمان نسبی بسته ربایش‬
‫شده‪ ،‬مبدأ و مقصد بسته‪ ،‬پروتکل بسته‪ ،‬و بعضی از اطالعات عمومی یافت شده در بسته است‪.‬‬

‫نکته‪ :‬زمانی که به ترافیک اشاره میکنم‪ ،‬به کلیهی بستههای نمایش داده شده در بخش‬
‫‪ Packet List‬اشاره دارم‪ .‬زمانی که به ترافیک ‪ DNS‬اشاره میکنم‪ ،‬منظورم بستههای پروتکل‬
‫‪ DNS‬در بخش ‪ Packet List‬است‪.‬‬

‫‪1‬‬
‫‪Packet list‬‬
‫‪۷2‬‬
‫مقدمه بر ‪Wireshark‬‬ ‫فصل سوم‬

‫جزئیات بسته‬
‫جزئیات بسته‪ 1‬بخش میانی حاوی یک نمایش سلسله مراتبی از اطالعات دربارهی یک بستهی‬
‫منفرد است‪ .‬این نمایشگر را میتوان بسته و یا بزرگ کرد تا همهی اطالعات گردآوری شده‬
‫دربارة آن بستهی منفرد را نشان دهد‪.‬‬

‫بایتهای بسته‬
‫بایتهای بسته‪ 2‬بخش پایینی – و شاید گیج کنندهترین بخش – یک بسته را در شکل خام و‬
‫پردازش نشدهاش نمایش میدهد‪ .‬به عبارت دیگر‪ ،‬این بخش نشان میدهد که یک بسته به‬
‫هنگام حرکت در کابل چه شکلی دارد‪ .‬این اطالعاتی خام و هیچ چیزی برای سادهتر کردن‬
‫جریان آن وجود ندارد‪ .‬این اطالعات بهصورت مبنای ‪ 16‬نشان داده میشود که میتوانید آنرا‬
‫بهصورت مبنای‪ 2‬نیز‪ -‬با راست کلیک و انتخاب در این بخش‪ -‬نمایش دهید‪.‬‬

‫تنظیمات ‪Wireshark‬‬
‫‪ Wireshark‬تنظیمات متعددی دارد که میتواند برای برآورده کردن نیازهایتان سفارشی‬
‫شوند‪ .‬برای دسترسی به تنظیمات ‪ Wireshark‬باید ‪ Edit‬را از منوی کشویی اصلی انتخاب‬
‫کنید و سپس بر روی ‪ Preferences‬کلیک نمایید‪ .‬دیالوگ ‪ Preferences‬را خواهید دید که‬
‫حاوی چندین گزینهی قابل سفارشی کردن است (همان طوری که در شکل ‪ 6-3‬نشان داده‬
‫شده است)‪.‬‬

‫‪1‬‬
‫‪Packet details‬‬
‫‪2‬‬
‫‪Packet bytes‬‬
‫‪۷3‬‬
‫مقدمه بر ‪Wireshark‬‬ ‫فصل سوم‬

‫شکل ‪ :6-3‬شما میتوانید ‪ Wireshark‬را با استفاده از گزینههای دیالوگ ‪ Preferences‬سفارشی کنید‪.‬‬

‫تنظیمات ‪ Wireshark‬به شش بخش اصلی تقسیم میشود‪:‬‬

‫واسط کاربر‬
‫این تنظیمات تعیین میکنند که ‪ Wireshark‬چگونه دادهها را ارائه دهد‪ .‬در اینجا میتوانید‬
‫مطابق با ترجیحهای شخصیتان اغلب گزینهها را تغییر دهید که از آن جمله میتوان به ذخیره‬
‫شدن یا نشدن موقعیت پنجره ‪ ،‬آرایش سه بخش اصلی‪ ،‬تعیین ‪ ، scroll bar‬تعیین ستونهای‬
‫بخش ‪ ،Packet List‬فونتهای مورد استفاده برای نمایش دادههای ربایش شده‪ ،‬و رنگهای‬
‫پسزمینه و پیشزمینه اشاره کرد‪.‬‬
‫ربایش‬
‫این تنظیمات شما را قادر میسازند تا گزینههای مربوط به روشی را مشخص کنید که بسته‬
‫ربایش میشود؛ از جمله واسط پیشفرض ربایش شما‪ ،‬حالت بیقاعده استفاده بشود یا نه‪ ،‬و‬
‫آیا بخش ‪ Packet List‬بالدرنگ بهنگام شود یا نه‪.‬‬

‫‪۷4‬‬
‫مقدمه بر ‪Wireshark‬‬ ‫فصل سوم‬

‫چاپ‬
‫تنظیمات این بخش شما را قادر میسازند تا گزینههای مختلف مربوط با روشی را مشخص‬
‫کنید که ‪ Wireshark‬دادههایتان را چاپ میکند‪.‬‬
‫تفکیک نام‬
‫تفکیک نام‪ 1‬از طریق این تنظیمات میتوانید ویژگیهایی از ‪ Wireshark‬را فعال نمایید که‬
‫آن را قادر میسازد تا نشانیها را به اسامی قابل تشخیصتر تجزیه کند (از جمله تفکیک نامِ‬
‫انتقال‪ ،MAC ،‬و شبکه) و حداکثر تعداد درخواستهای تفکیک نامِ همزمان را مشخص‬
‫میکند‪.‬‬
‫آمار‬
‫این بخش چندگزینهی قابل پیکربندی را برای ویژگیهای آماری ‪ Wireshark‬فراهم‬
‫مینماید‪.‬‬
‫پروتکلها‬
‫تنظیمات در این بخش شما را قادر میسازند تا گزینههای مرتبط با ربایش و نمایش بستههای‬
‫مختلفی را دستکاری کنید که ‪ Wireshark‬قادر به رمزگشایی آنها است‪ .‬هر پروتکلی‬
‫تنظیمات قابل پیکربندی ندارد‪ ،‬اما بعضی از آنها دارای چندین گزینه هستند که میتواند‬
‫تغییر داده شوند‪ .‬بهترین کار آن است که این گزینهها در حالت پیشفرض خود باقی گذاشته‬
‫شوند‪ ،‬مگر آنکه برای تغییر دادنشان دلیل بخصوصی داشته باشید‪.‬‬
‫کدگذاری رنگ بسته‬
‫اگر شما آدمی مثل من باشید‪ ،‬آنوقت ممکن است از چیزهای پرزرق و برق و رنگهای‬
‫قشنگ لذت ببرید‪ .‬اگر اینطور باشد‪ ،‬احتماالً همان طوری که در شکل ‪ ۷-3‬نشان دادهشده‬
‫زمانی که همهی این رنگهای مختلف را در بخش ‪ Packet List‬میبینید هیجانزده خواهید‬
‫شد (خوب‪ ،‬درست است که این شکل سیاه و سفید است‪ ،‬ولی میتوانید ایده را بگیرید)‪.‬‬

‫‪1‬‬
‫‪Name Resolution‬‬
‫‪۷5‬‬
‫مقدمه بر ‪Wireshark‬‬ ‫فصل سوم‬

‫ممکن است به نظر برسد که این رنگها بهطور تصادفی به هر بسته تخصیص داده شدهاند‪،‬‬
‫ولی اینطور نیست‪.‬‬

‫شکل ‪ :۷-3‬کدگذاری رنگ ‪ Wireshark‬برای شناسایی سریع پروتکل‪.‬‬

‫هر بسته به دلیلی با یک رنگ بخصوص نمایش داده میشود‪ .‬این رنگها منعکس کنندهی‬
‫پروتکل بسته هستند‪ .‬برای مثال‪ ،‬کل ترافیک ‪ DNS‬آبی‪ ،‬و کل ترافیک ‪ HTTP‬سبز است‪.‬‬
‫کدگذاری رنگ شما را قادر میسازد تا بهسرعت بین پروتکلهای مختلف تمییز قائل شوید‪،‬‬
‫بهطوری که نیازی نیست که برای هر بسته فیلد پروتکل را در بخش ‪ Packet List‬بخوانید‪.‬‬
‫درخواهید یافت که این کار تا حد بسیار زیادی به زمان الزم برای جستجو در میان فایلهای‬
‫بزرگ کامپیوتری سرعت میبخشد‪.‬‬
‫همان طوری که در شکل ‪ 8-3‬دیده میشود‪ Wireshark ،‬دیدن اینکه چه رنگی برای هر‬
‫پروتکل تخصیص داده شده است را از طریق پنجرهی ‪ Coloring Rules‬ساده کرده است‪.‬‬
‫برای باز کردن این پنجره ‪ View‬را از منوی کشویی اصلی انتخاب کنید و بر روی ‪Coloring‬‬
‫‪ Rules‬کلیک نمایید‪.‬‬

‫‪۷6‬‬
‫مقدمه بر ‪Wireshark‬‬ ‫فصل سوم‬

‫شکل ‪ :8-3‬پنجرهی ‪ Coloring Rules‬شما را قادر میسازد تا رنگ کردن بستهها را ببینید و اصالح کنید‪.‬‬

‫میتوانید قوانین رنگآمیزی خودتان را تعریف و قوانین موجود را اصالح نمایید‪ .‬برای مثال‪،‬‬
‫بهمنظور تغییر دادن رنگ به کار رفته برای پسزمینهی ترافیک ‪ HTTP‬از رنگ سبزِ‬
‫پیشفرض به بنفش کمرنگ مراحل زیر را دنبال کنید‪:‬‬
‫‪ Wireshark .1‬را بازکنید و به پنجرهی ‪ Coloring Rules‬برسید ( ► ‪View‬‬
‫‪.)Coloring Rules‬‬
‫‪ .2‬قانون رنگآمیزی ‪ HTTP‬را در فهرست قوانین رنگآمیزی پیدا کنید و آن را با‬
‫یک بار کلیک کردن انتخاب نمایید‪.‬‬
‫‪ .3‬بر روی دکمهی ‪ Edit‬کلیک کنید‪ .‬همان طوری که در شکل ‪ 9-3‬نشان داده شده‬
‫است دیالوگ ‪ Edit Color Filter‬را خواهید دید‪.‬‬
‫‪ .4‬روی دکمهی ‪ Background Color‬کلیک کنید‪.‬‬
‫‪ .5‬رنگی که مایل هستید را روی چرخهی رنگها انتخاب کنید و سپس بر روی ‪OK‬‬
‫کلیک نمایید‪.‬‬

‫‪۷۷‬‬
‫مقدمه بر ‪Wireshark‬‬ ‫فصل سوم‬

‫‪ .6‬دو بار دیگر روی ‪ OK‬کلیک کنید تا تغییرات پذیرفته شود و به پنجرهی اصلی‬
‫برگردید‪ .‬پنجرهی اصلی باید سپس باید خود را دوباره بارگذاری نماید تا طرح‬
‫رنگ بهروز شده نشان داده شود‪.‬‬

‫شکل ‪ :9-3‬در زمان ویرایش یک فیلتر رنگ‪ ،‬میتوانید هر دو رنگ پیش زمینه‬
‫و پس زمینه را اصالح کنید‪.‬‬
‫همچنان که با ‪ Wireshark‬در شبکهی خودکار میکنید‪ ،‬مالحظهی خواهید کرد که با بعضی‬
‫از پروتکلها بیش از بقیه سروکار دارید‪ .‬اینجایی است که بستههای کدگذاری شده با رنگ‪،‬‬
‫زندگی شما را خیلی سادهتر میکنند‪ .‬برای مثال‪ ،‬اگر فکر میکنید که یک سرور ‪DHCP‬‬
‫فریبکار در شبکهی شما وجود دارد که ‪ IP‬را توزیع میکند‪ ،‬بهراحتی میتوانید قانون‬
‫رنگآمیزی را برای پروتکل ‪ DHCP‬بهگونهای اصالح کنید که به رنگ زرد روشن (یا رنگ‬
‫دیگری که بهراحتی قابلتشخیص باشد) نشان داده شود‪ .‬این کار شما را قادر خواهد کرد که‬
‫کل ترافیک ‪ DHCP‬را خیلی سریعتر برگزینید و این امر تحلیل بستهی شما را بسیار مؤثرتر‬
‫مینماید‪ .‬این قوانین رنگآمیزی را همچنین میتوان بر اساس فیلترهای سفارشی خودتان باز‬
‫و بسط دهید‪ .‬اکنون که ‪ Wireshark‬را آماده و فعال در اختیار دارید‪ ،‬آماده هستید تا قدری‬
‫تحلیل بسته انجام دهید‪ .‬فصل بعد توضیح میدهد که چگونه میتوانید با بستههایی که ربایش‬
‫کردهاید‪ ،‬کار نمایید‬

‫‪۷8‬‬
‫فصل ‪4‬‬
‫کار با بستههای ربایش شده‬
‫کار با بستههای ربایش شده‬ ‫فصل چهارم‬

‫کار با بستههای ربایش شده‬


‫اکنون که با ‪ Wireshark‬آشنا شدهاید آماده هستید تا ربایش و تحلیل بستهها را آغاز کنید‪.‬‬
‫در این فصل فرا خواهید گرفت تا چگونه با ربایش فایلها‪ ،‬بستهها‪ ،‬و فرمتهای زمان نمایش‬
‫کار کنید‪ .‬ما همچنین گزینههای پیشرفتهتر را برای ربایش بستهها پوشش خواهیم داد و وارد‬
‫دنیای فیلترها خواهیم شد‪.‬‬

‫کارکردن با ربایش فایلها‬


‫همچنان که تحلیل بسته را اجرا میکنید خواهید فهمید که بخش خوبی از تحلیلی که انجام‬
‫خواهید داد پس از ربایشتان رخ خواهد داد‪ .‬بهطور معمول‪ ،‬در زمانهای مختلف ربایشهای‬
‫متعددی را اجرا خواهید کرد؛ آنها را ذخیره کنید و همه را یکجا مورد تحلیل قرار دهید‪.‬‬
‫بنابراین‪ Wireshark ،‬شما را قادر میسازد تا فایلهای ربایش خود را برای تحلیلهای آتی‬
‫ذخیره نمایید‪ .‬همچنین میتوانید چندین فایل ربایش را ادغام کنید‪.‬‬
‫یافتن بستهها‬
‫برای یافتن بستههایی که با معیارها و ضوابط بخصوصی تطابق داشته باشند‪ ،‬با فشار دادن‬
‫‪ CTRL-F‬دیالوگ ‪ – Find Packet‬که در شکل ‪ 1-4‬نشان داده شده است – را باز کنید‪.‬‬

‫شکل ‪ :1-4‬پیدا کردن بستهها در ‪ Wireshark‬بر اساس ضوابط بخصوص‬

‫این دیالوگ برای یافتن بستهها سه گزینه را ارائه میدهد‪:‬‬

‫‪80‬‬
‫کار با بستههای ربایش شده‬ ‫فصل چهارم‬

‫‪ ‬گزینهی فیلتر‪ Display ،‬شما را قادر میسازد تا یک فیلترِ مبتنی بر عبارت را وارد‬
‫نمایید که تنها آن بستههایی را پیدا خواهد کرد که آن عبارت را برآورده مینمایند‪.‬‬
‫‪ ‬گزینهی مقدار ‪ Hex‬به دنبال بستههایی با مقدار مبنای شانزده (با بایتهای جدا شده‬
‫توسط دو نقطهها) میگردد که شما مشخص میکنید‪.‬‬
‫‪ ‬گزینهی ‪ String‬به دنبال بستههایی با یک رشتهی متن‪ 1‬میگردد که شما مشخص‬
‫میکنید‪ .‬جدول ‪ 1-4‬مثالهایی از این شکلهای جستجو را نشان میدهد‪.‬‬

‫جدول ‪ :1-4‬انواع جستجو برای پیدا کردن بستهها‬

‫گزینههای دیگر شامل توانایی برای انتخاب پنجرهای است که شما میخواهید جستجو را در‬
‫آن انجام دهید‪ ،‬و همچنین مجموعه کاراکتر برای استفاده‪ ،‬و جهت جستجو‪ .‬میتوانید این‬
‫قابلیت جستجوهای رشته را با مشخص کردن بخشی از پنجره که جستجو در آن اجرا میشود‪،‬‬
‫و نیز تنظیم مجموعه کاراکتر مورد استفاده‪ ،‬و حساس کردن جستجو به بزرگی یا کوچکی‬
‫حرف افزایش دهید‪.‬‬
‫پس از آنکه انتخابهای خود را انجام دادید‪ ،‬معیارهای جستجوی خود را در جعبهی متن‬
‫وارد کنید‪ ،‬و بر روی ‪ Find‬کلیک کنید تا نخستین بستهای که با معیارهای شما تطابق دارد‬
‫پیدا شود‪ .‬برای پیدا کردن بستهی منطبق بعدی ‪ CTRL-N‬را فشار دهید؛ با فشار دادن ‪CTRL-‬‬
‫‪ B‬بستهی منطبق قبلی را پیدا کنید‪.‬‬

‫‪1‬‬
‫‪text string‬‬
‫‪81‬‬
‫کار با بستههای ربایش شده‬ ‫فصل چهارم‬

‫نشانگذاری بستهها‬
‫پس از پیدا کردن بستههایی که با معیارهای شما تطابق دارند‪ ،‬میتوانید آنهایی که توجه نظر‬
‫خاصی دارید نشاندار کنید‪ .‬برای مثال‪ ،‬ممکن است بخواهید بستهها را نشاندار کنید تا بتوانید‬
‫آن بستهها را بهطور جداگانه ذخیره نمایید یا آنها را بر اساس آرایش رنگها بهسرعت پیدا‬
‫کنید‪ .‬همان طوری که در شکل ‪ 2-4‬نشان داده شده است‪ ،‬بستههای نشاندار شده با یک‬
‫پسزمینهی سیاه و متن سفید برجسته میشوند‪( .‬همچنین میتوانید در زمان ذخیره کردن‬
‫ربایشهای بسته تنها بستههای نشاندار را طبقهبندی نمایید‪).‬‬
‫برای نشاندار کردن یک بسته‪ ،‬در بخش پنجرهی ‪ Packet List‬روی آن کلیک راست انجام‬
‫دهید و ‪ Mark Packet‬را از منوی باالپر‪ 1‬انتخاب کنید‪ ،‬یا بر روی یک بسته در بخش پنجرهی‬
‫‪ Packet List‬کلیک کنید و ‪ CTRL-M‬را فشار دهید‪ .‬برای برداشتن نشانهی یک بسته‪ ،‬با‬
‫استفادهی دوبارهی ‪ CTRL-M‬این تنظیم را خاموش کنید‪ .‬میتوانید هر تعداد بسته که‬
‫میخواهید را در ربایش بسازید‪ .‬برای جستجو جلوو عقب بین بستههای نشاندار به ترتیب‬
‫‪ SHIFT-CTRL-N‬و ‪ SHIFT-CTRL-B‬را فشار دهید‪.‬‬

‫شکل ‪ :2-4‬بستهی نشاندار در صفحهی نمایشگر شما پررنگ شده است؛ در این‬
‫مثال‪ ،‬بستهی ‪ 2‬نشاندار شده و تیرهتر به نظر میرسد‪.‬‬

‫ذخیره و صادر کردن فایلهای ربایش‬


‫برای ذخیره کردن ربایش یک بسته‪ File ► Save As ،‬را انتخاب کنید‪ .‬همان طوری که‬
‫در شکل ‪ 3-4‬نشان داده شده است‪ ،‬باید یک دیالوگ ‪ Save File As‬را مشاهده نمایید‪ .‬از‬

‫‪1‬‬
‫‪popup menu‬‬
‫‪82‬‬
‫کار با بستههای ربایش شده‬ ‫فصل چهارم‬

‫شما مکانی برای ذخیره کردن فایل ربایش شده و نوع فرمت آن پرسیده میشود‪ .‬اگر فرمت‬
‫فایل را مشخص نکنید‪ ،‬آنگاه ‪ Wireshark‬از فرمت فایل پیشفرض ‪ .pcap‬استفاده خواهد‬
‫کرد‪.‬‬

‫شکل ‪ :3-4‬دیالوگ ‪ Save File As‬شما را قادر میسازد تا ربایشهای بستهی خود را ذخیره نمایید‪.‬‬

‫یکی از ویژگیهای قدرتمندتر دیالوگ ‪ Save File As‬توانایی آن در ذخیره کردن یک‬
‫دامنهی بستهی مشخص است‪ .‬این یک راه عالی برای کم کردن حجم ربایش بسته است‪.‬‬
‫شما میتوانید انتخاب کنید که بستهها را تنها در یک محدودهی اعداد بخصوص‪ ،‬بستههای‬
‫نشاندار‪ ،‬یا بستههای مشهود در نتیجهی یک فیلتر نمایش ذخیره نمایید (بستههای نشاندار و‬
‫فیلترها بعداً در همین فصل مورد بحث قرار خواهند گرفت)‪.‬‬
‫شما میتوانید دادههای ربایش ‪ Wireshark‬را برای مشاهده در رسانههای دیگر به چندین‬
‫فرمت صادر کنید و یا میتوانید آنها را به ابزارهای تحلیل بستهی دیگر صادر نمایید‪ .‬فرمتها‬

‫‪83‬‬
‫کار با بستههای ربایش شده‬ ‫فصل چهارم‬

‫شامل ‪ ،CSV1 ،PostScript ،plaintext‬و ‪ XML‬است‪ .‬برای صادرکردن ربایش بستهتان‬


‫‪ File ► Export‬را انتخاب کنید‪ ،‬و سپس فرمت را برای فایل مورد صدور انتخاب نمایید‪.‬‬
‫یک دیالوگ ‪ Save As‬را خواهید دید که حاوی گزینههای مرتبط با آن فرمت بخصوص‬
‫است‪.‬‬

‫ادغام فایلهای ربایش‬


‫انواع بخصوصی از تحلیل نیازمند توانایی برای ادغام چندین فایل ربایش هستند‪ .‬این کار در‬
‫زمان مقایسه کردن دو جریان داده‪ 2‬یا ترکیب کردن جریانهای دادهی همان ترافیک – که‬
‫بهطور جداگانه ربایش کردهایم – شیوهای رایج است‪.‬‬

‫شکل ‪ :4-4‬دیالوگ ‪ Merge With Capture File‬شما را قادر میسازد تا دو فایل ربایش شده را ادغام نمایید‪.‬‬

‫‪1‬‬
‫‪comma-separated values‬‬
‫‪2‬‬
‫‪data stream‬‬
‫‪84‬‬
‫کار با بستههای ربایش شده‬ ‫فصل چهارم‬

‫بهمنظور ادغام کردن فایلهای ربایش ‪ ،‬یکی از فایلهای ربایش که میخواهید ادغام کنید را‬
‫باز نمایید و ‪ File ► Merge‬را انتخاب کنید تا دیالوگ ‪ – Merge With Capture File‬که‬
‫در شکل ‪ 4-4‬نشان داده شده است – باال بیاید‪ .‬فایل جدیدی که میخواهید در فایل از قبل‬
‫باز شده ادغام کنید را انتخاب نمایید‪ ،‬و سپس روش مورد استفاده برای ادغام کردن فایلها‬
‫را انتخاب کنید‪ .‬میتوانید فایل انتخاب شده را به ابتدای فایلی که هم اینک باز شده متصل‬
‫نمایید؛ به انتهای آن اضافه کنید‪ ،‬یا فایلها را بر اساس مهرهای زمانیشان به ترتیب زمان ادغام‬
‫نمایید‪.‬‬

‫چاپ کردن بستهها‬


‫اگرچه بیشتر تحلیل روی صفحهی نمایشگر انجام میشود‪ ،‬ولی ممکن است نیاز به چاپ‬
‫دادههای ربایش شده پیدا کنید‪ .‬من اغلب بستهها را چاپ میکنم و آنها را به میزم میچسبانم‬
‫و به این ترتیب در هنگام انجام تحلیلی دیگر میتوانم بهسرعت به محتوای آنها رجوع کنم‪.‬‬
‫قادر بودن به چاپ بستهها در یک فایل ‪ PDF‬نیز بسیار ساده است؛ بهویژه زمانی که گزارشها‬
‫را تهیه مینمایید‪.‬‬

‫شکل ‪ :5-4‬دیالوگ ‪ Print‬برای چاپ کردن بستههایی که مشخص میکنید‪.‬‬

‫‪85‬‬
‫کار با بستههای ربایش شده‬ ‫فصل چهارم‬

‫برای چاپ کردن بستههای ربایش شده‪ ،‬با انتخاب کردن ‪ File ► Print‬از منوی اصلی‬
‫دیالوگ ‪ Print‬را باز کنید‪ .‬همان طوری که در شکل ‪ 5-4‬نشان داده شده است دیالوگ‬
‫‪ Print‬را خواهید دید‪ .‬میتوانید دادههای انتخاب شده را بهصورت ‪ plaintext‬یا ‪،PostScript‬‬
‫یا در یک فایل خروجی چاپ کنید‪ .‬همانند دیالوگ ‪ Save File As‬میتوانید یک دامنهی‬
‫بستهی مشخص؛ فقط بستههای نشاندار‪ ،‬یا بستههای نمایش داده شده در نتیجهی یک فیلتر‬
‫را چاپ نمایید‪ .‬همچنین میتوانید انتخاب کنید که کدام یک از سه بخش اصلی ‪Wireshark‬‬
‫برای هر بسته چاپ شود‪ .‬وقتی گزینهها را انتخاب کردید‪ ،‬بر روی ‪ Print‬کلیک کنید‪.‬‬

‫فرمتهای نمایش زمان و مرجعها‬


‫زمان نوعی شرط است؛ بهویژه در تحلیل بسته‪ .‬هر آنچه در یک شبکه رخ میدهد به لحاظ‬
‫زمانی حساس و مهم است و شما به آن نیاز خواهید داشت که روندها و تأخیر شبکه را تقریباً‬
‫در هر ربایش فایلی مورد بررسی قرار دهید‪ Wireshark .‬اهمیت زمان را تصدیق میکند و‬
‫چندین گزینهی قابل پیکربندی را در ارتباط با آن تدارک دیده است‪ .‬در این بخش‪ ،‬به‬
‫فرمتهای نمایش زمان و مرجعها نگاهی خواهیم داشت‪.‬‬
‫فرمتهای نمایش زمان‬
‫به هر بستهای که ‪ Wireshark‬ربایش میکند یک مهر زمانی داده میشود که توسط سیستم‬
‫عامل برای بسته اعمال میشود‪ Wireshark .‬میتواند مهر زمانی مطلقی را نشان دهد که‬
‫لحظهی دقیق ربایش بسته‪ ،‬و همچنین زمان را در ارتباط با آخرین بستهی ربایش شده و آغاز‬
‫و پایان ربایش را نشان میدهد‪.‬‬
‫گزینههای مرتبط با نمایش زمان زیر عنوان ‪ View‬در منوی اصلی پیدا میشوند‪ .‬بخش ‪Time‬‬
‫‪ Display Format‬که در شکل ‪ 6-4‬نشان داده شده است شما را قادر مینماید تا قالب نمایش‬
‫و همچنین دقت زمان نمایش را پیکربندی نمایید‪ .‬قالب نمایش به شما اجازه میدهد تا‬
‫گزینههای مختلف برای نمایش را انتخاب نمایید‪ .‬گزینههای دقت‪ ،‬شما را قادر میسازند تا‬

‫‪86‬‬
‫کار با بستههای ربایش شده‬ ‫فصل چهارم‬

‫دقت زمان نمایش را بر روی خودکار یا یک تنظیم دستی – نظیر ثانیه‪ ،‬میلیثانیه‪ ،‬میکروثانیه‬
‫و مانند آن – قرار دهید‪ .‬ما بعداً این گزینهها را در کتاب تغییر خواهیم داد و بنابراین اکنون‬
‫باید خود را با آنها آشنا نمایید‪.‬‬

‫شکل‪ : 6-4‬پیکربندی قالب نمایش و زمان نمایش‬

‫ارجاع به زمان بسته‬


‫ارجاع به زمان بسته شما را قادر میسازد تا یک بستهی بخصوص را طوری پیکربندی نمایید‬
‫که همهی محاسبات زمانی بعدی در ارتباط با آن بستهی بخصوص انجام شوند‪ .‬این ویژگی‬
‫بهویژه در زمانی سودمند است که مشغول بررسی یک سری از رویدادهای ترتیبی باشید که‬
‫جایی غیر از آغاز ربایش فایل آغاز شده باشند‪.‬‬
‫بهمنظور تنظیم یک مرجع زمانی برای یک بستهی بخصوص‪ ،‬بستهی مرجع را در بخش‬
‫‪ Packet List‬انتخاب کنید‪ ،‬و سپس ‪ Edit ► Set Time Reference‬را از منوی اصلی‬
‫انتخاب کنید‪ .‬بهمنظور حذف یک مرجع زمانی از بستهای بخصوص‪ ،‬این بسته را انتخاب کنید‬
‫و ‪ Edit ► Set Time Reference‬را خاموش کنید‪.‬‬

‫‪8۷‬‬
‫کار با بستههای ربایش شده‬ ‫فصل چهارم‬

‫همان طوری که در شکل ‪ ۷-4‬نشان داده شده است‪ ،‬زمانی که یک مرجع زمانی را در یک‬
‫بستهی بخصوص فعال میکنید‪ ،‬ستون ‪ Time‬در بخش ‪ Packet List‬عبارت *‪ *REF‬را نشان‬
‫میدهد‪.‬‬
‫یادداشت‪ :‬قرار دادن یک مرجع زمانی تنها زمانی سودمند است که قالب نمایش زمان یک‬
‫ربایش برای نمایش زمان در ارتباط با شروع ربایش تنظیم شده باشد‪ .‬هرگونه تنظیم دیگر‬
‫هیچ نتیجهی سودمندی را به دنبال نخواهد داشت و مجموعهای از زمانها را به وجود خواهد‬
‫آورد که میتوانند بسیار گیج کننده باشند‪.‬‬

‫شکل ‪ :۷-4‬یک بسته با مرجع زمان دارای ضامن فعال شده‬

‫تنظیم گزینههای ربایش‬


‫ما ربایش بسته را بهطور اجمالی در فصل ‪ 3‬مرور کردیم‪ Wireshark .‬چند گزینهی ربایش‬
‫دیگر را در دیالوگ ‪ – Capture Options‬که در شکل ‪ 8-4‬نشان داده شده است – ارائه‬
‫میدهد‪ .‬برای باز کردن این دیالوگ‪ Capture ► Interfacess ،‬را انتخاب کنید و بر روی‬
‫دکمهی ‪ Options‬در کنار واسطی کلیک نمایید که میخواهید در آن بستهها را ربایش کنید‪.‬‬
‫دیالوگ ‪ Capture Options‬امکانات جانبی بسیاری دارد که همگی برای آن است که در‬
‫هنگام ربایش بستهها انعطافپذیری بیشتری به شما بدهند‪ .‬این امکانات به بخشهای‬
‫‪ ،Display Options ،Stop Capture ،Capture Files ، Capture‬و ‪Name Resolution‬‬
‫تقسیم میشوند که ما آنها را بهطور جداگانه مورد بررسی قرار خواهیم داد‪.‬‬
‫تنظیمات ربایش‬
‫فهرست کشویی ‪ Interface‬در بخش ‪ Capture‬جایی است که میتوانید در آن واسط شبکه‬
‫را برای پیکربندی انتخاب نمایید‪ .‬فهرست کشویی سمت چپ شما را قادر مینماید مشخص‬
‫‪88‬‬
‫کار با بستههای ربایش شده‬ ‫فصل چهارم‬

‫کنید که آیا واسط محلی باشد یا راه دور‪ ،‬و فهرست کشویی سمت راست همهی واسطهای‬
‫ربایش موجود را نشان میدهد‪ .‬آدرسهای ‪ IP‬واسطی که انتخاب کردهاید مستقیماً در زیر‬
‫فهرست کشویی نمایش داده میشود‪.‬‬

‫شکل ‪ :8-4‬دیالوگ ‪Capture Options‬‬

‫دو جعبهی چک‪ 1‬در سمت چپ جعبهی دیالوگ شما را قادر مینمایند تا حالت بیقاعده را‬
‫فعال یا غیرفعال نمایید (بهطور پیشفرض همیشه در وضعیت فعال)؛ بستهها را در فرمتِ هم‬
‫اینک آزمایشی ‪ pcap-ng‬ربایش نمایید؛ و اندازهی هر ربایش بسته را بر اساس بایت محدود‬
‫نمایید‪.‬‬
‫پنل سمت چپ بخش ‪ Capture‬به شما اجازه میدهد تا به تنظیمات بیسیم و راه دور (در‬
‫‪2‬‬
‫صورت قابل اجرا بودن) دسترسی پیدا نمایید‪ .‬در زیر آنها گزینهی اندازهی حافظهی بافر‬
‫قرار دارد که تنها در سیستمهایی موجود است که ‪ Windows‬مایکروسافت را اجرا میکنند‪.‬‬

‫‪1‬‬
‫‪checkbox‬‬
‫‪2‬‬
‫‪Buffer‬‬
‫‪89‬‬
‫کار با بستههای ربایش شده‬ ‫فصل چهارم‬

‫شما میتوانید مقدار دادههای ربایش بستهای که در بافر هسته‪ 1‬ذخیره شده است را پیش از‬
‫نوشته شدن آن روی دیسک مشخص و تصریح نمایید‪( .‬این مقداری است که بهطور معمول‬
‫اصالح و تغییر نخواهید داد‪ ،‬مگر آنکه شروع به مالحظهی آن کنید که در حال از قلم انداختن‬
‫بستههای زیادی هستید‪ ).‬گزینهی ‪ Capture Filter‬شما را قادر میسازد تا یک فیلتر ربایش‬
‫را مشخص و تصریح نمایید‪.‬‬
‫تنظیمات فیلتر(های) ربایش‬
‫بخش )‪ Capture File(s‬شما را قادر میسازد تا بهجای ربایش کردن بستهها و سپس ذخیره‬
‫کردن آنها در یک فایل بهطور خودکار آنها را در یک فایل ذخیره نمایید‪ .‬انجام چنین‬
‫امری به شما در مدیریت کردن چگونگی ذخیرهی بستهها انعطافپذیری بسیار بیشتری‬
‫میدهد‪ .‬شما میتوانید ذخیره کردن آنها بهصورت یک فایل منفرد یا مجموعهی فایل را‬
‫انتخاب کنید‪ ،‬یا حتی از یک بافر حلقهای‪ 2‬برای مدیریت کردن تعداد فایلهای به وجود آمده‬
‫استفاده نمایید‪ .‬برای فعال کردن این گزینه‪ ،‬یک مسیر فایل کامل و نام را در جعبهی متن ‪File‬‬
‫وارد کنید‪.‬‬
‫به هنگام ربایش مقدار زیادی از ترافیک یا اجرای ربایشهای بلند مدت‪ ،‬مجموعههای فایل‬
‫در عمل میتوانند سودمندی خود را به اثبات برسانند‪ .‬یک مجموعه فایل گروهی از چندین‬
‫فایل است که توسط شرایط مشخص جدا شدهاند‪ .‬برای ذخیره کردن یک مجموعهی فایل‪،‬‬
‫گزینهی ‪ Use Multiple Files‬را در اینجا تیک بزنید‪.‬‬
‫‪ Wireshark‬برای مدیریت کردن ذخیره کردن در مجموعههای فایل بر اساس شرط اندازهی‬
‫فایل یا زمان‪ ،‬سازوکارهای راهاندازی مختلفی دارد‪ .‬برای فعال کردن این گزینهها در کنار‬
‫گزینهی ‪ Next File Every‬تیک بزنید (گزینهی باالیی برای ساز و کارهای راهاندازی‬
‫اندازهی فایل و گزینهی زیر آن برای ساز و کارهای راهاندازی مبتنی بر زمان)‪ ،‬و سپس مقدار‬

‫‪1‬‬
‫‪kernel‬‬
‫‪2‬‬
‫‪Ring buffer‬‬
‫‪90‬‬
‫کار با بستههای ربایش شده‬ ‫فصل چهارم‬

‫و واحدی را مشخص کنید که میخواهید راهاندازی بر اساس آن انجام شود‪ .‬برای مثال‪ ،‬همان‬
‫طوری که در شکل ‪ 9-4‬نشان داده شده است‪ ،‬میتوانید سازوکار راهاندازی را به طوری‬
‫تنظیم کنیدکه یک فایل جدید را پس از هر یک مگابیت ربایش یا پس از هر دقیقه ربایش‬
‫ترافیک به وجود آورد‪.‬‬

‫شکل ‪ :9-4‬یک مجموعه فایل ایجاد شده توسط ‪ Wireshark‬در بازههای زمانی یک دقیقهای‬

‫این گزینهها را همچنین میتوان در ترکیب با هم مورد استفاده قرار داد‪ .‬برای مثال‪ ،‬اگر هر‬
‫دو سازوکار فعال کننده را مشخص نمایید‪ ،‬یک فایل جدید زمانی ساخته شد که ‪1 MB‬‬
‫اطالعات ربایش شده باشد یا وقتی که یک دقیقه سپری گشته باشد (هر کدام که اول پیش‬
‫آمد)‪.‬‬
‫گزینهی ‪ Ring Buffer With‬شما را قادر میسازد تا در زمان به وجود آوردن یک مجموعه‬
‫فایل از یک بافر حلقهای استفاده نمایید‪ .‬این گزینه بهعنوان یک روش اولین ورود اولین‬
‫خارج میشود‪ )FIFO( 1‬نوشتن چندین فایل توسط ‪ Wireshark‬مورد استفاده قرار میگیرد‪.‬‬
‫اگرچه اصطالح بافر حلقهای در فنآوری اطالعات معانی متعددی دارد‪ ،‬اما برای مقصود ما‬
‫در اینجا‪ ،‬بافر حلقهای اساساً یک مجموعه فایل است که مشخص میکند بهمجرد تکمیل‬

‫‪1‬‬
‫)‪first in, first out (FIFO‬‬
‫‪91‬‬
‫کار با بستههای ربایش شده‬ ‫فصل چهارم‬

‫نوشتن آخرین فایل‪ ،‬وقتی دادههای بیشتری باید روی دیسک نوشته شود‪ ،‬آنگاه روی نخستین‬
‫فایل دوباره نوشته میشود‪ .‬شما میتوانید این گزینه را تیک بزنید و حداکثر تعداد فایلهایی‬
‫که میخواهید ‪ cycle through‬کنید را مشخص نمایید‪ .‬برای مثال‪ ،‬فرض کنید انتخاب‬
‫مینمایید که برای ربایش خود از چندین فایل با یک فایل جدید که هر ساعت درست‬
‫میشود استفاده کنید و بافر حلقهای خود را روی ‪ 6‬تنظیم نمایید‪ .‬بهمحض آنکه فایل ششم به‬
‫وجود آید‪ ،‬بافر حلقهای به عقب چرخه میزند و بهجای ایجاد فایل هفتم‪ ،‬دوباره روی فایل‬
‫اول مینویسد‪ .‬این امر تضمین مینماید که بیشتر از شش فایل (یا در این مورد‪ ،‬ساعتها) از‬
‫دادهها در هارد درایو شما باقی نخواهد ماند‪ ،‬و با این حال هنوز اجازه میدهد تا دادههای‬
‫جدید نوشته شوند‪.‬‬
‫گزینهی ‪ Stop Capture After‬شما را قادر مینماید تا ربایش جاری را بهمجرد به وجود‬
‫آمدن تعداد مشخصی فایل متوقف نماید‪.‬‬
‫تنظیمات توقف ربایش‬
‫بخش ‪ Stop Capture‬شما را قادر مینماید تا اجرای ربایش را پس از برآورده شدن‬
‫آغازگرهای مشخص متوقف نمایید‪ .‬همانند چند مجوعه فایل‪ ،‬شما میتوانید آغازگری را بر‬
‫اساس اندازه و بازهی زمانی‪ ،‬و همچنین تعداد بستهها انجام دهید‪ .‬این گزینهها را میتوان با‬
‫گزینههای چند فایلی مورد استفاده قرار داد که پیشتر مورد بحث قرار گرفتند‪.‬‬

‫گزینههای نمایش‬
‫بخش ‪ Display Options‬چگونگی نشان دادن بستههایی که ربایش میشوند را کنترل‬
‫مینماید‪ .‬گزینهی ‪( Update List of Packets in Real Time‬بهنگام کردن فهرست بستهها‬
‫در زمان واقعی) نیازی به توضیح ندارد و آن را میتوان با گزینهی ‪Automatic Scrolling‬‬
‫‪( in Live Capture‬نوردش خودکار در ربایش زنده) جفت کرد‪ .‬زمانی که هر دو این‬

‫‪92‬‬
‫کار با بستههای ربایش شده‬ ‫فصل چهارم‬

‫گزینهها فعال شوند‪ ،‬همهی بستههای ربایششده روی نمایشگر نشان داده میشوند و‬
‫جدیدترین بستههای ربایش شده بالفاصله نشان داده خواهند شد‪.‬‬

‫هشدار‪ :‬جفت کردن گزینههای ‪ Update List of Packets in Real Time‬و ‪Automatic‬‬
‫‪ Scrolling in Live Capture‬با یکدیگر میتواند پردازشگر را حتی در زمان ربایش مقدار‬
‫معقولی از دادهها بشدت درگیر نماید‪ .‬بهترین کار آن است که این دو گزینه را انتخاب نکنید‪،‬‬
‫مگر آنکه برای دیدن بستهها در زمان واقعی دلیل بخصوصی داشته باشید‪.‬‬

‫گزینهی ‪ Hide Capture Info Dialog‬به شما اجازه میدهد تا نمایش یک پنجرهی کوچک‬
‫را متوقف نمایید که تعداد و درصد بستههایی را نشان میدهد که توسط پروتکل ربایش‬
‫شدهاند‪.‬‬
‫تنظیمات تفکیک نام‬
‫گزینههای بخش تفکیک نام یا ‪ Name Resolution‬شما را قادر میسازند تا عمل تفکیک‬
‫نامِ خودکار ‪( MAC‬الیهی ‪ ،)2‬شبکه (الیهی ‪ ،)3‬و انتقال (الیهی ‪ )4‬را برای ربایشتان فعال‬
‫نمایید‪ .‬ما در فصل پنج تفکیک نام و ایرادات آن در ‪ Wireshark‬را با جزئیات بیشتر‬
‫موردبحث قرار خواهیم داد‪.‬‬

‫استفاده از فیلترها‬
‫فیلترها شما را قادر مینمایند که دقیقاً مشخص کنید کدام بستهها را برای تحلیل در اختیار‬
‫دارید‪ .‬به بیان ساده‪ ،‬فیلتر عبارتی است که معیاری را برای شامل یا مستثنای کردن بستهها‬
‫تعریف مینماید‪ .‬اگر بستههایی وجود داشته باشند که شما نمیخواهید آنها را ببینید‪،‬‬
‫میتوانید فیلتری را بنویسید که شما را از شر آنها خالص نماید‪ .‬اگر بستههایی وجود دارند‬
‫که مایل هستید منحصراً آنها را ببینید‪ ،‬میتوانید فیلتری را بنویسید که تنها آن بستهها را نشان‬
‫دهد‪ Wireshark .‬دو نوع فیلتر اصلی را ارائه میدهد‪:‬‬

‫‪93‬‬
‫کار با بستههای ربایش شده‬ ‫فصل چهارم‬

‫‪ ‬فیلترهای ربایش زمانی تصریح شدهاند که بستهها مورد ربایش قرار میگیرند و تنها‬
‫بستههایی را ربایش میکنند که در عبارت مفروض شمول‪ /‬استثنا تصریح شده باشند‪.‬‬
‫‪ ‬فیلترهای نمایش برای مجموعهای موجود از بستههای ربایش شده و بهمنظور پنهان‬
‫کردن بستههای ناخواسته یا نشان دادن بستههای مطلوب بر پایهی عبارت تصریح شده‬
‫مورد استفاده قرار میگیرند‪.‬‬
‫اجازه دهید که نخست به فیلترهای ربایش نگاهی داشته باشیم‪.‬‬
‫فیلترهای ربایش‬
‫فیلترهای ربایش در طول فرآیند ربایش بسته مورد استفاده قرار میگیرند‪ .‬یک دلیل اصلی‬
‫برای استفاده از فیلتر ربایش ‪ ،‬کارارایی است‪ .‬اگر میدانید که نیازی به تحلیل شکل‬
‫بخصوصی از ترافیک ندارید‪ ،‬میتوانید بسادگی آن را با یک فیلتر ربایش فیلتر نمایید و در‬
‫توان پردازشی صرفهجویی کنید که بهطور معمول برای ربایش این بستهها مورد استفاده قرار‬
‫میگیرد‪.‬‬
‫توانایی برای به وجود آوردن فیلترهای سفارشی ربایش در هنگام سر و کار داشتن با مقادیر‬
‫باالی دادهها سودمند میشود‪ .‬با اطمینان حاصل کردن از اینکه تنها به بستههایی نگاه میکنید‬
‫که با موضوع در دستتان ارتباط دارند‪ ،‬فرآیند تحلیل میتواند سرعت بگیرد‪.‬‬
‫یک مثال ساده برای وقتی که میتوانید از یک فیلتر ربایش استفاده کنید در زمان ربایش‬
‫ترافیک در یک سرور با چند نقش است‪ .‬فرض کنید که در حال رفع اشکال موضوعی در‬
‫ارتباط با سرویسی هستید که در پورت ‪ 262‬اجرا میشود‪ .‬اگر سروری که تحلیل میکنید‬
‫چندین سرویس مختلف را در پورتهای گوناگون اجرا میکند‪ ،‬آنگاه یافتن و تحلیل کردنِ‬
‫فقط ترافیک در پورت ‪ 262‬خود بتنهایی میتواند کار پر زحمتی باشد‪ .‬شما میتوانید تنها‬
‫برای ربایش ترافیک پورت ‪ 262‬از یک فیلتر ربایش استفاده نمایید‪ .‬برای انجام این کار‪،‬‬

‫‪94‬‬
‫کار با بستههای ربایش شده‬ ‫فصل چهارم‬

‫شما میتوانید بهقرار زیر از دیالوگ ‪ – Capture Options‬که پیشتر در این فصل مورد بحث‬
‫قرار گرفت – استفاده کنید‪:‬‬
‫‪ Capture ► Interfaces .1‬را انتخاب کنید و بر روی دکمهی ‪ Options‬در کنار‬
‫واسطی کلیک نمایید که میخواهید در آن بستهها را ربایش نمایید تا دیالوگ‬
‫‪ Capture Options‬باز شود‪.‬‬
‫‪ .2‬واسطی را انتخاب کنید که میخواهید در آن بستهها را باز کنید‪ ،‬و یک فیلتر ربایش‬
‫را انتخاب نمایید‪.‬‬
‫‪ .3‬با وارد کردن یک عبارت در کنار دکمهی ‪ Capture Filter‬میتوانید یک فیلتر‬
‫ربایش را اعمال نمایید‪ .‬ما میخواهیم که فیلترمان تنها ترافیک وارده و خارجه به‪/‬‬
‫از پورت ‪ 262‬را نشان دهد و بنابراین همان طوری که در شکل ‪ 10-4‬نشان داده‬
‫شده است پورت ‪ 262‬را وارد میکنیم‪( .‬ما عبارات را بهطور مفصلتر در بخش‬
‫بعدی شرح خواهیم داد‪).‬‬
‫‪ .4‬وقتی فیلتر خود را برقرار کردید‪ ،‬برای شروع ربایش بر روی ‪ Start‬کلیک کنید‪.‬‬

‫شکل ‪ :10-4‬به وجود آوردن یک فیلتر ربایش در دیالوگ ‪Capture Options‬‬

‫‪95‬‬
‫کار با بستههای ربایش شده‬ ‫فصل چهارم‬

‫پس از انتخاب کردن یک نمونهی کافی‪ ،‬اکنون فقط باید ترافیک پورت ‪ 262‬را ببینید و‬
‫بتوانید که بهطور مؤثرتری این دادههای بخصوص را مورد تجزیه و تحلیل قرار دهید‪.‬‬

‫فیلترهای نمایش‬
‫فیلتر نمایش فیلتریست که در زمان اعمال برای ربایش فایل به ‪ Wireshark‬میگوید که تنها‬
‫بستههایی را نشان دهد که با آن فیلتر تطابق داشته باشند‪ .‬شما میتوانید یک فیلتر نمایش را‬
‫در جعبهی متن ‪ Filter‬در باالی بخش پنجرهی ‪ Packet List‬وارد نمایید‪.‬‬
‫فیلترهای نمایش اغلب بیش از فیلترهای ربایش مورد استفاده قرار میگیرند‪ ،‬زیرا شما را قادر‬
‫میسازند تا دادههای بسته را بدون از قلم انداختن بقیهی دادهها در فایل ربایش فیلتر نمایید‪.‬‬
‫بدین طریق‪ ،‬اگر نیاز داشته باشید که به فایل اصلی رجوع کنید‪ ،‬آنگاه براحتی میتوانید‬
‫عبارت فیلتر را پاک کنید‪.‬‬
‫شما میتوانید از یک فیلتر نمایش برای پاک کردن ترافیک انتشارِ ‪ broadcast‬نامربوط از‬
‫یک فایل ربایش استفاده کنید؛ برای مثال‪ ،‬برای پاک کردن انتشارهای ‪ ARP‬از بخش‬
‫پنجرهی ‪ Packet List‬در زمانی که این بستهها با مشکلِ جاری مورد تجزیه و تحلیل مرتبط‬
‫نباشند‪ .‬اما‪ ،‬از آنجایی که آن بستههای انتشار ‪ ARP‬میتوانند بعداً سودمند باشند‪ ،‬بهتر است‬
‫که بهطور موقت فیلتر شوند و نه اینکه حذف گردند‪.‬‬
‫همان طوری که در شکل ‪ 12-4‬نشان داده شده است‪ ،‬برای فیلتر کردن کل بستههای ‪ARP‬‬
‫در پنجرهی ربایش ‪ ،‬فقط کافیست که کرزر خود را در جعبهی متن ‪ Filter‬در باالی بخش‬
‫‪ Packet List‬قرار دهید و ‪ !arp‬را وارد کنید تا همهی بستههای ‪ ARP‬از بخش ‪Packet List‬‬
‫پاک شوند‪ .‬برای حذف این فیلتر بر روی دکمهی ‪ Clear‬کلیک کنید‪.‬‬

‫شکل ‪ :12-4‬به وجود آوردن یک فیلتر نمایش با استفاده از جعبهی متن ‪ Filter‬در باالی بخش ‪Packet List‬‬

‫‪96‬‬
‫کار با بستههای ربایش شده‬ ‫فصل چهارم‬

‫دیالوگ عبارت فیلتر (روش ساده)‬


‫دیالوگ ‪ – Filter Experession‬که در شکل ‪ 13-4‬نشان داده شده است – به وجود آوردن‬
‫فیلترهای ربایش و نمایش را برای کاربران تازهکار ‪ Wireshark‬ساده میکند‪ .‬برای دسترسی‬
‫به این دیالوگ‪ ،‬بر روی دکمهی ‪ Capture Filter‬در دیالوگ ‪ Capture Options‬کلیک‬
‫کنید و سپس بر روی دکمهی ‪ Expression‬کلیک نمایید‪.‬‬
‫قسمت چپ دیالوگ همهی فیلدهای پروتکل ممکن را فهرست میکند‪ .‬این فیلدها همهی‬
‫معیارهای فیلترِ ممکن را مشخص میکنند‪ .‬برای به وجود آوردن یک فیلتر مراحل زیر را‬
‫دنبال کنید‪:‬‬
‫‪ .1‬برای دیدن فیلدهای معیارهای بخصوص مرتبط با پروتکل‪ ،‬آن پروتکل را با کلیک‬
‫کردن بر روی نشانهی (‪ )+‬در کنار آن بزرگ کنید‪ .‬وقتی معیاری را پیدا کردید که‬
‫میخواهید فیلتر خود را بر پایهی آن بسازید‪ ،‬بر روی آن کلیک کنید تا انتخاب‬
‫شود‪.‬‬
‫‪ .2‬راهی را انتخاب کنید که فیلد انتخاب شدهی شما با مقدار معیاری مرتبط شود که‬
‫اعمال میکنید‪ .‬این رابطه بهصورت برابر است با‪ ،‬بزرگتر از‪ ،‬کوچکتر از‪ ،‬و مانند‬
‫آن مشخص میشود‪.‬‬
‫‪ .3‬با مشخص کردن یک مقدار معیار عبارت فیلتر خود را درست کنید که با فیلد‬
‫منتخب شما مرتبط باشد‪ .‬شما میتوانید این مقدار را تعیین کنید یا آن را از مقادیر‬
‫از پیش تعریف شدهی برنامهریزی شده در ‪ Wireshark‬انتخاب نمایید‪.‬‬
‫‪ .4‬زمانی که کارتان پایان یافت‪ ،‬روی ‪ OK‬کلیک کنید تا نسخهی "فقط متن" فیلتر‬
‫خود را ببینید‪.‬‬

‫‪9۷‬‬
‫کار با بستههای ربایش شده‬ ‫فصل چهارم‬

‫دیالوگ ‪ Filter Expression‬برای کاربران تازهکار عالی است‪ ،‬ولی وقتی در اجرای کارها‬
‫مهارت پیدا کردید‪ ،‬درخواهید یافت که وارد کردن دستی عبارات فیلتر بشدت سبب افزایش‬
‫کارایی آنها میشود‪ .‬ساختار نحو عبارت فیلتر نمایش ساده و در عین حال قدرتمند است‪.‬‬

‫شکل ‪ :13-4‬دیالوگ ‪ Filter Expression‬برای ایجاد سادهی فیلتر در ‪Wireshark‬‬

‫ساختار نحو ‪( Filter Expression‬روش سخت)‬


‫ما اغلب از یک فیلتر ربایش یا نمایشِ مبتنی بر پروتکلی مشخص استفاده میکنیم‪ .‬برای مثال‪،‬‬
‫فرض کنید که در حال رفع اشکال یک مشکل ‪ TCP‬هستید و میخواهید فقط ترافیک ‪TCP‬‬
‫را در یک فایل ربایش ببینید‪ .‬اگر چنین باشد‪ ،‬آنگاه یک فیلتر سادهی ‪ tcp‬این کار را خواهد‬
‫کرد‪.‬‬
‫اکنون اجازه دهید از منظری دیگر به مسائل نگاهی داشته باشیم‪ .‬تصور کنید که در مسیر رفع‬
‫اشکال ‪ TCP‬خیلی از برنامهی ‪ ping‬استفاده میکنید‪ ،‬و بدین ترتیب مقدار زیادی ترافیک‬
‫‪ ICMP‬درست میکنید‪ .‬شما میتوانید این ترافیک ‪ ICMP‬را با عبارت فیلتر ‪ !icmp‬از فایل‬
‫ربایش خود حذف نمایید‪.‬‬

‫‪98‬‬
‫کار با بستههای ربایش شده‬ ‫فصل چهارم‬

‫عملگرهای مقایسهای‬
‫عملگرهای مقایسه شما را قادر میسازند تا مقادیر را مقایسه نمایید‪ .‬برای مثال‪ ،‬به هنگام رفع‬
‫اشکال ‪ TCP/IP‬اغلب نیاز به آن دارید که همهی بستههایی را ببینید که به آدرس ‪IP‬‬
‫بخصوصی رجوع میکنند‪ .‬عملگر مقایسهی "مساوی است با" (==) شما را قادر خواهد‬
‫ساخت تا فیلتری را درست کنید که همهی بستهها با یک آدرس ‪ IP‬بهقرار ‪ 192.168.0.1‬را‬
‫نشان دهد‪.‬‬
‫‪▐ ip.addr = =192.168.0.1‬‬

‫اکنون فرض کنید نیاز دارید تنها بستههایی را ببینید که طولشان کمتر از ‪ 128‬بایت باشد‪ .‬شما‬
‫میتوانید برای محقق کردن این هدف از عملگر "کوچکتر یا مساوی" (=<) در یک‬
‫عبارت فیلتر مانند زیر استفاده نمایید‪:‬‬

‫‪▐ frame.len <= 128‬‬

‫جدول ‪ 2-4‬عملگرهای مقایسهی ‪ Wireshark‬را نشان میدهد‪.‬‬

‫جدول ‪ :2-4‬عملگرهای مقایسهی عبارت فیلتر ‪Wireshark‬‬

‫‪99‬‬
‫کار با بستههای ربایش شده‬ ‫فصل چهارم‬

‫عملگرهای منطقی شما را قادر مینمایند تا چند عبارت فیلتر را در یک دستور ترکیب کنید‬
‫و این کار بهطور پویایی سبب افزایش کارایی فیلترهایمان میشود‪ .‬برای مثال‪ ،‬فرض کنید که‬
‫عالقمند به نشان دادن تنها بستههای دو آدرس ‪ IP‬هستیم‪ .‬برای ایجاد یک عبارت که بستههای‬
‫حاوی هر یک از این آدرسهای ‪ IP‬را نشان دهد میتوانیم از عملگر ‪ or‬استفاده نماییم؛ مانند‬
‫زیر‪:‬‬

‫‪▐ ip.addr = =192.168.0.1 or ip.addr = =192.168.0.2‬‬

‫جدول ‪ 3-4‬عملگرهای منطقی ‪ Wireshark‬را فهرست میکند‪.‬‬

‫جدول ‪ :3-4‬عملگرهای منطقی عبارت فیلتر ‪Wireshark‬‬


‫شرح‬ ‫عملگر‬
‫هر دو شرط باید صادق باشند‬ ‫‪and‬‬
‫یکی از دو شرط باید صادق باشد‬ ‫‪or‬‬
‫یک و تنها یک شرط باید صادق باشد‬ ‫‪xor‬‬
‫هیچ یک از شرایط نباید صدق باشد‬ ‫‪not‬‬

‫نحو ربایش ‪BPF‬‬


‫فیلترهای ربایش توسط ‪ WinPcap‬اعمال میشوند و از نحو فیلتر بستهی برکلی‪ 1‬استفاده‬
‫میکنند‪ .‬این نحو در چندین برنامه کاربردی ‪ packet-sniffing‬مشترک است‪ ،‬و عمدتاً بدین‬
‫دلیل که برنامههای کاربردی ‪ packet-sniffing‬بر کتابخانههای ‪ libpcap/WinPcap‬تکیه‬
‫میکنند‪ ،‬استفاده از ‪BPF‬ها را مقدور مینمایند‪ .‬همچنان که در سطح بسته به عمق بیشتری از‬
‫شبکهها میروید‪ ،‬داشتن دانش از نحو ‪ BPF‬بسیار حیاتی است‪.‬‬

‫‪1‬‬
‫)‪Berkeley Packet Filter (BPF‬‬
‫‪100‬‬
‫کار با بستههای ربایش شده‬ ‫فصل چهارم‬

‫یک فیلتر ایجاد شده با استفاده از نحو ‪ BPF‬عبارت نامیده میشود‪ ،‬و هر عبارت از یک یا‬
‫چند شئ اولیه‪ 1‬تشکیل میشود‪ .‬اشیای اولیه از یک یا چند توصیفکننده‪ 2‬تشکیل میشوند‬
‫(همان طوری که در جدول ‪ 4-4‬فهرست شدهاند) و به دنبال آن نام یا شمارهی ‪ ID‬قرار دارد‬
‫(در شکل ‪ 11-4‬نشان داده شده است)‪.‬‬
‫جدول ‪ :4-4‬توصیفکنندههای ‪BPF‬‬
‫مثالها‬ ‫شرح‬ ‫توصیفکننده‬
‫‪host, net, port‬‬ ‫شناسایی میکند که نام یا شمارهی ‪ ID‬به چه ارجاع‬
‫‪Type‬‬
‫میکند‬
‫‪src, dst‬‬ ‫جهت انتقال به‪ /‬از نام یا شمارهی ‪ ID‬را مشخص میکند‬ ‫‪Dir‬‬
‫‪ether, ip, tcp, udp,‬‬ ‫تطابق با یک پروتکل بخصوص را محدود میکند‬
‫‪Proto‬‬
‫‪http, ftp‬‬

‫توصیفکنندهی ‪ src‬و یک ‪ ID‬به شمارهی ‪ 192.168.0.10‬با توجه به مؤلفههای یک عبارت‬


‫ترکیب خواهند شد تا یک شئ اولیه را بسازند‪ .‬این شئ اولیه بتنهایی یک عبارت است که‬
‫ترافیک را تنها با یک آدرس ‪ IP‬مبدأ ‪ 192.168.0.10‬ربایش خواهد کرد‪.‬‬
‫شما میتوانید از عملگرهای منطقی برای ترکیب اشیای اولیه استفاده کنید تا عبارات‬
‫پیشرفتهتری را بسازید‪ .‬سه عملگر منطقی موجود هستند‪:‬‬
‫‪ ‬عملگر الحاقی‪)&&( AND 3‬‬
‫‪ ‬عملگر تغییر‪)| |( OR 4‬‬
‫‪ ‬عملگر نفی ‪)!( NOT‬‬
‫برای مثال‪ ،‬عبارت زیر تنها ترافیکی با آدرس ‪ IP‬مبدأ ‪ 192.168.0.10‬و پورت مبدأ یا مقصد‬
‫‪ 80‬را ربایش میکند‪:‬‬

‫‪1‬‬
‫‪primitive‬‬
‫‪2‬‬
‫‪qualifier‬‬
‫‪3‬‬
‫‪concatenation operator‬‬
‫‪4‬‬
‫‪alternation operator‬‬
‫‪101‬‬
‫کار با بستههای ربایش شده‬ ‫فصل چهارم‬

‫‪▐ Src 192.16S.0.10 &S port 80‬‬


‫فیلترهای نام میزبان و آدرسدهی‬
‫اغلب فیلترهایی که ایجاد میکنید وارد یک دستگاه بخصوص یا گروهی از دستگاههای‬
‫شبکه خواهد شد‪ .‬بسته به شرایط‪ ،‬فیلتر کردن میتواند بر اساس آدرس ‪ MAC‬یک دستگاه‪،‬‬
‫آدرس ‪ ،IPv4‬آدرس ‪ ،IPv6‬یا نام میزبان ‪ DNS‬آن باشد‪.‬‬
‫برای مثال‪ ،‬فرض کنید که دربارهی ترافیک یک میزبان بخصوص کنجکاو هستید که با‬
‫سروری در شبکهی شما در تعامل است‪ .‬از جهت سرور‪ ،‬شما میتوانید فیلتری را با استفاده از‬
‫توصیفکنندهای به وجود آورید که همهی ترافیک مرتبط با آدرس ‪ IPv4‬آن میزبان را‬
‫ربایش نماید‪:‬‬
‫‪▐ Host 172.16.16.149‬‬

‫اگر شما در یک شبکهی ‪ IPv6‬هستید‪ ،‬بر اساس آدرس ‪ IPv6‬فیلتر خواهید کرد که از‬
‫توصیفکنندهی میزبان بهقرار زیر استفاده میکند‪:‬‬

‫‪▐ Host 2001:db8:85a3:: 8s2e:370:7334‬‬

‫همچنین میتوانید نظیر مثال زیر بر اساس نام میزبان یک دستگاه با توصیفکنندهی میزبان‬
‫فیلتر نمایید‪:‬‬

‫‪▐ Host testserver2‬‬

‫یا اگر نگران آن هستید که آدرس ‪ IP‬برای یک میزبان ممکن است تغییر کرده باشد‪ ،‬آنگاه‬
‫میتوانید بر اساس آدرس ‪ MAC‬آن و همچنین با افزودن توصف کنندهی پروتکل ‪ether‬‬
‫فیلتر نمایید‪:‬‬

‫‪▐ Ether host 00-la-a0-52-e2-a0‬‬

‫‪102‬‬
‫کار با بستههای ربایش شده‬ ‫فصل چهارم‬

‫توصیفکنندههای جهت انتقال اغلب همراه با فیلترهایی نظیر فیلترهای مثالهای قبلی برای‬
‫ربایش ترافیک بر اساس آن مورد استفاده قرار میگیرند که آیا دارد به طرف میزبانی میرود‬
‫و یا از آن میآید‪ .‬برای مثال‪ ،‬بهمنظور ربایش فقط ترافیکی که از یک میزبان بخصوص‬
‫میآید‪ ،‬توصیفکنندهی ‪ src‬را به کار ببرید‪:‬‬

‫‪▐ Src host 172.1.16.149‬‬

‫برای آنکه تنها دادههایی ربایش شوند که سرور ‪ 172.16.16.149‬را ترک میکنند – که‬
‫عازم یک میزبان مشکوک هستند – از توصیفکنندهی ‪ dst‬استفاده کنید‪:‬‬

‫‪▐ DST host 172.16.16.149‬‬

‫زمانی که از یک توصیفکنندهی نوع (‪ ،net ،host‬یا ‪ )port‬با یک شئ اولیه استفاده‬


‫میکنید‪ ،‬توصیفکنندهی ‪ host‬فرض میشود‪ .‬بنابراین‪ ،‬معادل مثال قبلی میتواند آن‬
‫توصیفکننده را مستثنی نماید‪:‬‬

‫‪▐ DST 172.16.16.149‬‬


‫فیلترهای پورت و پروتکل‬
‫شما عالوه بر فیلترینگ در میزبانها میتوانید بر اساس پورتهای استفاده شده در هر بسته‪،‬‬
‫فیلتر کنید‪ .‬برای فیلتر کردن بر اساس سرویسها و برنامههای کاربردی که از پورتهای‬
‫سرویس مشخص و معلومی استفاده میکنند میتوان از فیلتر کردن پورت استفاده کرد‪ .‬برای‬
‫مثال‪ ،‬دراینجا یک فیلتر ساده برای ربایش ترافیک تنها در پورت ‪ 8080‬معرفی میشود‪:‬‬
‫‪▐ Port 8080‬‬

‫برای ربایش کل ترافیک‪ ،‬بجز ترافیک پورت ‪ ،8080‬فیلتر زیر عمل میکند‪:‬‬

‫‪▐ !port 8080‬‬


‫‪103‬‬
‫کار با بستههای ربایش شده‬ ‫فصل چهارم‬

‫فیلترهای پورت را میتوان با توصیفکنندههای جهت انتقال ترکیب کرد‪ .‬برای مثال‪ ،‬بهمنظور‬
‫ربایش ترافیکی که تنها به سرور ‪ web‬میرود ‪ ،‬به پورت استاندارد ‪ HTTP‬شماره ‪ 80‬گوش‬
‫میکند از توصیفکنندهی ‪ dst‬استفاده کنید‪:‬‬

‫‪▐ DST port 80‬‬

‫فیلترهای پروتکل‬
‫فیلترهای پروتکل شما را قادر میسازند تا بستهها را بر اساس پروتکلهای مشخصی فیلتر‬
‫نمایید‪ .‬آنها برای تطابق پروتکلهای الیهی غیر برنامه کاربردی مورد استفاده قرار میگیرند‬
‫که آنها را نمیتوان صرفاً توسط استفادهی یک پورت تعریف کرد‪ .‬بدین ترتیب‪ ،‬اگر‬
‫بخواهید تنها ترافیک ‪ ICMP‬را ببینید‪ ،‬میتوانید از این فیلتر استفاده کنید‪:‬‬
‫‪▐ icmp‬‬

‫برای دیدن همه چیز‪ ،‬بجز ترافیک ‪ ،IPv6‬میتوان از این حقه استفاده کرد‪:‬‬
‫‪▐ !ip6‬‬

‫‪1‬‬
‫یکی از قدرتهای واقعی نحو ‪ BPF‬این توانایی است که برای بررسی هر بایت از سرآیندِ‬
‫پروتکل به ما میدهد تا فیلترهای بسیار خاصی بر اساس آن دادهها ایجاد شود‪ .‬فیلترهای‬
‫پیشرفتهای که در این بخش مورد بحث قرار خواهیم داد شما را قادر خواهند ساخت تا تعداد‬
‫مشخصی از بایتها را از بستهای بازیابی کنید که در مکان بخصوصی آغاز میشوند‪.‬‬
‫برای مثال‪ ،‬فرض کنید که میخواهیم بر اساس نوع فیلد یک سرآیند ‪ ICMP‬فیلتر نماییم‪.‬‬
‫فیلد نوع درست در آغاز یک بسته قرار دارد که آن را در آفست‪ 0 2‬صفر قرار میدهد‪ .‬برای‬
‫شناسایی این مکان بهمنظور بررسی درون یک بسته‪ ،‬آفست بایت را در کروشههای کنار‬

‫‪1‬‬
‫‪header‬‬
‫‪2‬‬
‫‪Offset‬‬
‫‪104‬‬
‫کار با بستههای ربایش شده‬ ‫فصل چهارم‬

‫توصیفکنندهی پروتکل (در این مثال ]‪ )icpm[0‬مشخص کنید‪ .‬این خصوصیات یک مقدار‬
‫صحیح ‪ 1‬بایتی را بر خواهد گرداند که میتوانیم مقایسه را در برابر آن انجام دهیم‪ .‬برای مثال‪،‬‬
‫گرفتنِ تنها بستههای ‪ ICMP‬که پیغامهای مقصد غیر قابل دسترس (نوع ‪ )3‬را نشان میدهند‪،‬‬
‫در عبارت فیلتر خود بهقرار زیر از عملگر مساوی استفاده میکنیم‪:‬‬
‫‪▐ icmp[0] == 3‬‬

‫برای بررسی تنها بستههای ‪ ICMP‬که یک درخواست بازتاب‪( 1‬نوع ‪ )8‬یا پاسخ بازتاب‪( 2‬نوع‬
‫‪0‬صفر) را نشان میدهند‪ ،‬از دو شئ اولیه با عملگر ‪ OR‬استفاده کنید‪:‬‬

‫‪▐ icmp[0] == 8 || icmp[0] == 0‬‬

‫این فیلترها عالی عمل مینمایند‪ ،‬ولی تنها بر اساس یک بایت اطالعات در درون سرآیند یک‬
‫بسته را فیلتر میکنند‪ .‬خوشبختانه شما همچنین میتوانید با الحاق طول بایت پس از شمارهی‬
‫آفست در درون کروهشهها که توسط یک دو نقطه جدا شده باشد طول دادههایی را مشخص‬
‫کنید که قرار است در عبارت فیلتر شما برگردانده شود‪.‬‬
‫برای مثال‪ ،‬فرض کنید که میخواهیم فیلتری را درست کنیم که همهی بستههای مقصد غیر‬
‫قابل دسترس‪ ،‬میزبان غیر قابل دسترس ‪ ICMP‬را ربایش کند که توسط نوع ‪ ،3‬کد ‪ 1‬شناسایی‬
‫شدهاند‪ .‬اینها فیلدهای یک بایتی هستند که در آفست ‪ 0‬از سرآیند بسته در کنار یکدیگر‬
‫قرار دارند‪ .‬برای انجام این کار‪ ،‬فیلتری را درست میکنیم که ‪ 2‬بایت از دادهها را کنترل‬
‫میکند که در آفست ‪ 0‬از سرآیند بسته آغاز میشود‪ ،‬و آن را در برابر مقدار مبنای شانزده‬
‫‪( 0301‬نوع ‪ ،3‬کد ‪ )1‬مقایسه میکنیم؛ مانند زیر‪:‬‬
‫‪▐ icmp[0:2] == 0x0301‬‬

‫‪1‬‬
‫‪echo request‬‬
‫‪2‬‬
‫‪echo reply‬‬
‫‪105‬‬
‫کار با بستههای ربایش شده‬ ‫فصل چهارم‬

‫ربایش تنها بستههای ‪ TCP‬با مجموعه پرچم ‪ RST‬یک سناریوی رایج است‪ .‬ما در فصل ‪6‬‬
‫بهطور گسترده به مقولهی ‪ TCP‬خواهیم پرداخت‪ .‬در حال حاضر‪ ،‬فقط باید بدانید که‬
‫پرچمهای یک بستهی ‪ TCP‬در آفست ‪ 13‬قرار دارند‪ .‬این یک فیلد جالب است‪ ،‬زیرا اندازهی‬
‫آن بهعنوان فیلد پنجره روی هم ‪ 1‬بایت است‪ ،‬ولی هر پرچم بخصوص توسط یک بیت منفرد‬
‫در درون این بایت شناسایی میشود‪ .‬در یک بستهی ‪ TCP‬میتوان چند پرچم را بهطور‬
‫همزمان قرار داد‪ ،‬و بنابراین نمیتوانیم با یک مقدار منفرد ]‪ tcp[13‬بهطور مؤثری فیلتر نماییم‪،‬‬
‫زیرا چندین مقدار میتوانند معرف بیت ‪ RST‬برقرار شده باشد‪ .‬بنابراین‪ ،‬باید مکان درون‬
‫بایتی را مشخص کنیم که میخواهیم با الحاق کردن آن مکان به شئ اولیهی فعلی با یک‬
‫امپرسند‪ )&( 1‬مورد بررسی قرار دهیم‪ .‬پرچم ‪ RST‬در بیتی قرار دارد که معرف عدد ‪ 4‬در‬
‫درون این بایت است‪ ،‬و این حقیقت که این بیت در ‪ 4‬قرار داده شده به ما میگوید که پرچم‬
‫قرار داده شده است‪ .‬این فیلتر شبیه به این است‪:‬‬

‫‪▐ tcp [13] & 4 == 4‬‬

‫برای دیدن همهی بستهها با مجموعه پرچم ‪ – PSH‬که توسط مکان بیتی شناسایی شده و‬
‫معرف عدد ‪ 8‬است – فیلتر ما در عوض از آن مکان استفاده خواهد کرد‪:‬‬

‫‪▐ tcp [13] & 8 == 8‬‬


‫عبارات فیلتر ربایش نمونه‬
‫اغلب درخواهید یافت که موفقیت یا شکست تحلیل شما به توانایی در به وجود آوردن‬
‫فیلترهای مناسب برای وضعیت فعلیتان بستگی دارد‪ .‬جدول ‪ 6-4‬تعداد محدودی از فیلترهای‬
‫ربایش را نشان میدهد که من اغلب از آنها استفاده میکنم‪.‬‬

‫‪1‬‬
‫‪ampersand‬‬
‫‪106‬‬
‫کار با بستههای ربایش شده‬ ‫فصل چهارم‬

‫عبارات فیلتر نمایش نمونه‬


‫اگرچه مفاهیم مرتبط با به وجود آوردن عبارات فیلتر نسبتاً ساده هستند‪ ،‬اما وقتی برای‬
‫مشکالت مختلف با فیلترهای جدیدی سر و کار دارید به این نیاز خواهید داشت که از چندین‬
‫کلید واژه و عملگر استفاده نمایید‪ .‬جدول ‪ 5-4‬بعضی از فیلترهای نمایش را نشان میدهد که‬
‫من اغلب از آنها استفاده میکنم‪ .‬برای فهرست کامل مرجع فیلتر نمایش ‪ Wireshark‬را در‬
‫‪ http://www.wireskark.org/docs/dfref/‬ببینید‪.‬‬

‫جدول ‪ :5-4‬فیلترهای نمایش که بهطور معمول مورد استفاده قرار میگیرند‬

‫ذخیره کردن فیلترها‬


‫زمانی که شروع میکنید به درست کردن تعداد زیادی فیلتر ربایش و نمایش‪ ،‬درخواهید‬
‫یافت که خیلی اوقات تنها بعضی از آنها را مورد استفاده قرار میدهید‪ .‬خوشبختانه‪ ،‬نیازی‬
‫ندارید که این فیلترها را هر دفعه برای استفاده تایپ کنید‪ ،‬زیرا ‪ Wireshark‬به شما اجازه‬
‫میدهد تا فیلترهایتان را برای استفادهی بعدی ذخیره نمایید‪ .‬بهمنظور ذخیره کردن یک فیلتر‬
‫ربایش سفارشی مراحل زیر را دنبال کنید‪:‬‬
‫‪ Capture ► Capture Filters .1‬را انتخاب کنید تا دیالوگ ‪ Capture Filter‬باز‬
‫شود‪.‬‬

‫‪10۷‬‬
‫کار با بستههای ربایش شده‬ ‫فصل چهارم‬

‫‪ .2‬با کلیک کردن بر روی دکمهی ‪ New‬یک فیلتر تازه را در سمت چپ این دیالوگ‬
‫بسازید‪.‬‬
‫‪ .3‬برای فیلترتان یک نام در جعبهی ‪ Filter Name‬وارد کنید‪.‬‬
‫‪ .4‬یک عبارت فیلتر واقعی را در جعبهی ‪ Filter String‬وارد کنید‪.‬‬
‫‪ .5‬برای ذخیره کردن عبارت فیلترتان در فهرست بر روی دکمهی ‪ Save‬کلیک کنید‪.‬‬
‫برای ذخیره کردن فیلتر نمایش سفارشی مراحل زیر را دنبال کنید‪:‬‬
‫‪ Analyze ► Display Filter .1‬را انتخاب کنید‪ ،‬یا بر روی دکمهی ‪ Filter‬در باالی‬
‫بخش ‪ Packet List‬کلیک کنید تا دیالوگ ‪ Display Filter‬باز شود (همان طوری‬
‫که در شکل ‪ 14-4‬نشان داده شده است)‪.‬‬

‫شکل ‪ :14-4‬دیالوگ ‪ Display Filter‬شما را قادر میسازد تا عبارات فیلتر را ذخیره کنید‪.‬‬

‫‪108‬‬
‫کار با بستههای ربایش شده‬ ‫فصل چهارم‬

‫‪ .2‬با کلیک کردن بر روی دکمهی ‪ New‬در سمت چپ دیالوگ یک فیلتر جدید‬
‫بسازید‪.‬‬
‫‪ .3‬برای فیلترتان یک نام در جعبهی ‪ Filter Name‬وارد کنید‪.‬‬
‫‪ .4‬یک عبارت فیلتر واقعی را در جعبهی ‪ Filter String‬وارد کنید‪.‬‬
‫‪ .5‬برای ذخیره کردن عبارت فیلترتان در فهرست بر روی دکمهی ‪ Save‬کلیک کنید‪.‬‬
‫‪ Wireshark‬شامل چندین فیلتر تعبیه شده است که نمونههایی عالی برای آنچه هستند که‬
‫یک فیلتر باید شبیه آن باشد‪ .‬شما در زمان ساختن فیلترهای خودتان خواهید خواست که از‬
‫آنها استفاده نمایید‪ .‬ما از فیلترها در مثالهای کل این کتاب استفاده خواهیم کرد‪.‬‬

‫‪109‬‬
‫فصل ‪5‬‬
‫ویژگیهای پیشرفتهی ‪Wireshark‬‬
‫ویژگیهای پیشرفته‬ ‫فصل پنجم‬

‫ویژگیهای پیشرفتهی ‪Wireshark‬‬


‫پس از کسب مهارت در قواعد اصولی ‪ ،Wireshark‬مرحلهی بعد عبارت است از بررسی‬
‫قابلیتهای تحلیلی و نمودارکشی آن‪ .‬در این فصل‪ ،‬به بعضی از این ویژگیهای قدرتمند‬
‫نگاهی خواهیم داشت‪ ،‬که از آن جمله میتوان به پنجرههای نقاط انتهایی‪ 1‬و گفتگوها‪ ،2‬نکات‬
‫ظریفتر تفکیک نام‪ ،‬تجزیهی پروتکل‪ ،‬دنبال کردن جریان‪ ،‬نمودارکشی ‪ I/O‬و بعضی موارد‬
‫دیگر اشاره کرد‪.‬‬

‫نقاط انتهایی شبکه و گفتگوها‬


‫برای ارتباطات شبکه باید دادههایی را داشته باشید که بین حداقل دو دستگاه در جریان باشند‪.‬‬
‫یک نقطهی انتهایی دستگاهی است که دادهها را در شبکه میفرستد و یا دریافت میکند‪.‬‬
‫برای مثال‪ ،‬در ارتباطات ‪ TCP/IP‬دو نقطهی انتهایی وجود دارد‪ :‬آدرس ‪ IP‬سیستمهایی که‬
‫دادهها را میفرستند و دریافت میکنند‪ ،‬نظیر ‪ 192.168.1.25‬و ‪.192.168.1.30‬‬
‫برای مثال‪ ،‬در الیهی ‪ ،2‬ارتباط بین دو ‪ NIC‬فیزیکی و آدرس‪ MAC‬آنها رخ میدهد‪ .‬در‬
‫‪NIC‬هایی که دادهها را میفرستند و دریافت میکنند دارای آدرسهای ‪00:ff:ac:cc:0b:de‬‬
‫و ‪ 00:ff:ac:e0:dc:0f,‬هستند‪ ،‬و همان طوری که میتوانید در شکل ‪ 1-5‬ببینید‪ ،‬این آدرسها‬
‫نقاط انتهایی ارتباط هستند‪.‬‬
‫یک گفتگو در یک شبکه – نظیر یک ارتباط بین دو نفر – ارتباطی را توصیف میکند که‬
‫بین دو میزبان (نقطهی انتهایی) واقع میگردد‪ .‬برای مثال‪ ،‬گفتگوی جیم و سالی میتواند از‬
‫"سالم‪ ،‬حالت چطوره؟" "خیلی خوبم! خودت چطوری؟" و "بهتر از این نمیشه!" تشکیل‬
‫شده باشد‪ .‬یک گفتگو بین ‪ 192.168.1.5‬و ‪ 192.168.0.8‬میتواند چیزی شبیه "‪،"SYN‬‬

‫‪1‬‬
‫‪Endpoints‬‬
‫‪2‬‬
‫‪Conversations‬‬
‫‪112‬‬
‫ویژگیهای پیشرفته‬ ‫فصل پنجم‬

‫"‪ "SYN/ACK‬و "‪ "ACK‬باشد‪( .‬ما در فصل ‪ 6‬با جزئیات بیشتر به فرآیند گفتگوی ‪TCP/IP‬‬
‫نگاه خواهیم کرد‪).‬‬

‫شکل ‪ :1-5‬نقاط انتهایی در یک شبکه‬

‫دیدن نقاط انتهایی‬


‫در زمان تحلیل ترافیک ممکن است دریابید که میتوانید مشکلی را برای یک نقطهی انتهایی‬
‫بخصوص در یک شبکه با دقت مشخص نمایید‪ .‬پنجرهی ‪ Endpoints‬برنامهی ‪Wireshark‬‬
‫– ‪ – Statistics ► Endpoints‬چندین آمار سودمند را برای هر نقطهی انتهایی نشان میدهد‬
‫(شکل ‪ 2-5‬را ببینید) که شامل آدرسها و تعداد بستهها و بایتهای ارسال و دریافت شده‬
‫توسط هر کدام است‪.‬‬
‫تبهای باالی پنجره همهی نقاط انتهایی پشتیبانی و شناخته شده را در فایل ربایش فعلی نشان‬
‫میدهند‪ .‬برای مختصر کردن فهرست نقاط انتهایی به پروتکلهای بخصوص‪ ،‬روی یک تب‬
‫کلیک کنید‪ .‬برای استفاده از تفکیک نام در داخل پنجرهی ‪ Endpoints‬جعبهی چک ‪Name‬‬
‫‪ Resolution‬را تیک بزنید‪.‬‬

‫‪113‬‬
‫ویژگیهای پیشرفته‬ ‫فصل پنجم‬

‫شما میتوانید از پنجرهی ‪ Endpoints‬برای فیلتر کردن بستههای بخصوص بهمنظور نمایش‬
‫در بخش ‪ Packet List‬استفاده نمایید‪ .‬روی یک نقطهی انتهایی بخصوص کلیک راست‬
‫کنید تا چندین گزینه را ببینید‪ ،‬که از آن جمله میتوان به توانایی برای به وجود آوردن فیلتری‬
‫بهمنظور نمایش تنها ترافیک مرتبط با این نقطهی انتهایی یا کل ترافیک به استثنای نقطهی‬
‫انتهایی انتخاب شده اشاره کرد‪ .‬همچنین میتوانید نقطهی انتهایی را مستقیماً به یک قانون‬
‫رنگآمیزی صادر نمایید (قوانین رنگآمیزی در فصل ‪ 3‬شرح داده شدند)‪.‬‬

‫شکل ‪ :2-5‬پنجرهی ‪ Endpoints‬شما را قادر میسازد تا هر یک از نقاط انتهایی را در فایل ربایش ببینید‪.‬‬

‫دیدن گفتگوهای شبکه‬


‫پنجرهی ‪ Conversations‬برنامهی ‪ – )Statistics ► Conversations( Wireshark‬که در‬
‫شکل ‪ 3-5‬نشان داده شده است – آدرسهای نقاط انتهایی دخیل در گفتگوی فهرست شده‬
‫در ‪ Address A‬و ‪ ،Address B‬و بستهها و بایتهای ارسال شده به و از هر دستگاه را نشان‬
‫میدهد‪.‬‬

‫‪114‬‬
‫ویژگیهای پیشرفته‬ ‫فصل پنجم‬

‫گفتگوهای فهرست شده در این پنجره توسط پروتکلی که استفاده میکنند‪،‬تقسیم شدهاند‬
‫که میتواند از طریق تبها در باالی پنجره انتخاب شوند‪ .‬اجرای کلیک راست بر روی یک‬
‫گفتگوی بخصوص شما را قادر مینماید تا فیلترهایی را درست کنید که میتوانند سودمند‬
‫باشند‪ ،‬که از آن جمله میتوان نمایش دادن کل ترافیک ارسال شده از دستگاه ‪ ،A‬کل‬
‫ترافیک دریافت شده از دستگاه ‪ ،B‬یا کل ترافیک ارسال شده بین دستگاههای ‪ A‬و ‪ B‬اشاره‬
‫کرد‪.‬‬

‫شکل ‪ :3-5‬پنجرهی گفتگوها شما را قادر میسازد تا با هر گفتگو در یک فایل ربایش تعامل داشته باشید‪.‬‬

‫رفع اشکال توسط پنجرههای ‪ Endpoints‬و ‪Conversations‬‬


‫پنجرههای ‪ Endpoints‬و ‪ Conversations‬در رفع اشکال شبکه نقشی حیاتی دارند؛ بهویژه‪،‬‬
‫زمانی که تالش میکنید تا منبع مقدار عظیمی از ترافیک را در شبکه مشخص کنید یا تعیین‬
‫کنید که کدام یک از سرویسهایتان بیشترین مکالمه را دارد‪.‬‬
‫برای مثال‪ ،‬زمانی که فایل ‪ lotsofweb.pcap‬باز کنید‪ ،‬مقدار زیادی ترافیک ‪ HTTP‬را‬
‫خواهید دید که معرف چندین کاربر است که در اینترنت جستجو میکنند‪ .‬اگر با نگاه کردن‬

‫‪115‬‬
‫ویژگیهای پیشرفته‬ ‫فصل پنجم‬

‫پنجرهی ‪ Endpoints‬آغاز کنید‪ ،‬میتواند بالفاصله دربارهی ترافیکی که میبینید به چند‬


‫نتیجهگیری برسید‪.‬‬
‫با نگاه به تب ‪( IPv4‬شکل ‪ 4-5‬را ببینید) میبینید که نخستین آدرس شما در زمان ذخیره‬
‫شدن توسط بایتها آدرس محلی ‪ 172.16.16.128‬است و این یعنی که این دستگاه در‬
‫شبکهی شما در میان مجموعه دادههایتان رتبهی باالترین صحبت کننده (میزبان مسئول حجم‬
‫عمدهی ارتباطات) را دارد‪ .‬دومین آدرس ‪ 74.125.103.163‬یک آدرس غیر محلی است‪،‬‬
‫بنابراین در این نقطه‪ ،‬میتوانید فرض کنید که یک کاربر دارید که خیلی با این آدرس ‪IP‬‬
‫صحبت میکند‪ ،‬یا اینکه چندین کاربر به مقدار متوسط در حال صحبت با آن هستند‪ .‬یک‬
‫‪ WHOIS‬سریع ‪ http://wkois.arin.net/ui/‬به شما میگوید که این آدرس ‪ IP‬به‬
‫‪ Google‬تعلق دارد و دنبال کردن بستهها این ترافیک را بهعنوان ترافیک ‪ YouTube‬شناسایی‬
‫خواهد کرد‪.‬‬

‫نکته‪ :‬واگذاریهای آدرس توسط موجودیتهای مختلفی مدیریت میشود که به مکان‬


‫‪1‬‬
‫جغرافیاییشان بستگی دارد‪ .‬در مثال اینجا از ادارهی ثبت شمارههای اینترنت آمریکا‬
‫(‪ )ARIN‬استفاده کردیم که مسئول واگذاریهای آدرس ‪ IP‬ایاالت متحده (و بعضی از‬
‫مناطق اطراف آن) است‪ .‬بهطور کلی‪ ،‬شما یک ‪ WHOIS‬را برای یک ‪ IP‬در وبسایت سازمان‬
‫مسئول آن ‪ IP‬انجام خواهید داد‪ .‬اگر منطقهی جغرافیایی را نمیدانید و جستجو را در منطقهی‬
‫ثبت اشتباهی انجام دهید‪ ،‬آنگاه به سوی مکان صحیح هدایت خواهید شد‪ .‬بعضی از ادارههای‬
‫ثبت آدرس دیگر شامل ‪( AfriNIC‬آفریقا)‪( RIPE ،‬اروپا)‪ ،‬و ‪( APNIC‬آسیا‪ /‬پاسفیک)‬
‫است‪.‬‬

‫‪1‬‬
‫)‪American Registry for Internet Numbers (ARIN‬‬
‫‪116‬‬
‫ویژگیهای پیشرفته‬ ‫فصل پنجم‬

‫شکل ‪ :4-5‬پنجرهی ‪ Endpoints‬نشان میدهد که کدام یک از میزبانها بیشتر از همه صحبت میکنند‪.‬‬

‫با توجه به این اطالعات‪ ،‬آیا این فرض که نقاط انتهایی شما با باالترین ارتباطات‪ ،‬بزرگترین‬
‫گفتگوی شما را تشکیل میدهد فرضی امن است؟ اگر اکنون پنجرهی ‪ Conversations‬را‬
‫باز کنید و به تب ‪ IPv4‬بروید‪ ،‬میتوانید بهواقع این مسئله را با ترتیب دادن فهرست بر اساس‬
‫بایتها مشخص و تصدیق نمایید‪ .‬شما در این نما میتوانید ببینید که ترافیک با یک دانلود‬
‫ویدئو تطابق دارد‪ ،‬زیرا تعداد بایتهای ارسال شده از ‪)74.125.103.163( Address A‬‬
‫بشدت بیشتر از تعداد بایتهای ارسال شده از ‪ )172.16.16.128( Address B‬است (شکل‬
‫‪ 5-5‬را ببینید)‪.‬‬

‫‪11۷‬‬
‫ویژگیهای پیشرفته‬ ‫فصل پنجم‬

‫شکل ‪ :5-5‬پنجرهی ‪ Conversations‬تصدیق میکند که دو صحبت کنندهی باالیی در حال ارتباط با یکدیگر هستند‪.‬‬

‫بعداً در این کتاب خواهید دید که چگونه در عمل از پنجرههای ‪ Endpoints‬و‬


‫‪ Conversations‬استفاده خواهیم کرد‪.‬‬

‫آمار سلسله مراتب پروتکل‬


‫زمانی که با فایلهای ربایش بسیار بزرگی سر و کار دارید‪ ،‬گاهی نیاز به آن دارید که توزیع‬
‫پروتکلها را در فایل تعیین نمایید؛ یعنی‪ ،‬چه درصدی از ربایش ‪ ،DHCP ،IP ،TCP‬و مانند‬
‫آنها است‪ .‬بهجای شمردن هر بسته و جمع زدن نتایج میتوانید از پنجرهی ‪Protocol‬‬
‫‪ Hierarchy Statistics‬استفاده نمایید که راهی عالی برای محک زدن شبکهتان است‪ .‬برای‬
‫مثال‪ ،‬اگر میدانید که ‪ 10%‬ترافیک شبکهتان بهطور معمول از ترافیک ‪ ARP‬تشکیل شده‬
‫است‪ ،‬و یک روز ربایشی را انجام میدهید که ‪ %50‬ترافیک آن ‪ ARP‬باشد‪ ،‬آنگاه میدانید‬
‫که مشکلی میتواند وجود داشته باشد‪.‬‬
‫در حالی که فایل ‪ lotsofweb.pcap‬هنوز باز است‪ ،‬پنجرهی ‪Protocol Hierarchy‬‬
‫‪ Statistics‬را – که در شکل ‪ 6-5‬نشان داده است – را با انتخاب ‪Statistics ► Protocol‬‬

‫‪118‬‬
‫ویژگیهای پیشرفته‬ ‫فصل پنجم‬

‫‪ Hierarchy‬باز کنید‪ .‬توجه داشته باشید که همهی جمعها دقیقاً به ‪ %100‬بالغ نمیشوند‪ .‬از‬
‫آنجایی که بیشتر بستهها حاوی چند پروتکل از الیههای مختلف هستند‪ ،‬بنابراین‪ ،‬تعداد هر‬
‫پروتکل در مقایسه با هر بسته میتواند دور از واقعیت باشد‪ .‬با این حال‪ ،‬هنوز هم میتوانید‬
‫دیدی دقیق از توزیع پروتکلها در فایل ربایش داشته باشید‪.‬‬

‫شکل ‪ :6-5‬پنجرهی ‪ Protocol Hierarchy Statistics‬توزیع انواع پروتکلها را نشان میدهد‪.‬‬

‫پنجرهی ‪ Protocol Hierarchy Statistics‬اغلب یکی از نخستین پنجرههایی است که در‬


‫زمان بررسی ترافیک به آن نگاه میکنید‪ .‬این پنجره بهواقع تصویر خوبی از نوع فعالیتی به‬
‫شما میدهد که در یک شبکه در حال رخ دادن است‪ .‬همچنان که شروع به دیدن ترافیک‬
‫بیشتری میکنید‪ ،‬سرانجام قادر خواهید بود که تنها با نگاه کردن به توزیع پروتکلِ مورد‬
‫استفاده کاربران و دستگاهها را در یک شبکه توصیف نمایید‪ .‬من فهمیدهام که تنها با نگاه‬
‫کردن به ترافیک از یک بخش شبکه‪ ،1‬اغلب میتوانم بالفاصله تشخیص دهم که بخش شبکه‬
‫به دایرهی ‪ IT‬تعلق دارد (به سبب حضور پروتکلهای اجرایی‪ 2‬مانند ‪ ICMP‬یا ‪ ،)SNMP‬یا‬

‫‪1‬‬
‫‪network segment‬‬
‫‪2‬‬
‫‪administrative protocols‬‬
‫‪119‬‬
‫ویژگیهای پیشرفته‬ ‫فصل پنجم‬

‫به دایرهی اجرای سفارش (به سبب حجم باالی ترافیک ‪ )SMTP‬یا حتی کارآموز جدید‬
‫مزاحم در یک گوشه با ترافیک بازی ‪!World of Warcraft‬‬

‫تفکیک نام‬
‫دادههای شبکه از طریق انواع سیستمهای آدرسدهی حرفی‪ -‬عددی منتقل میشود برای به‬
‫خاطر سپردن بیش از اندازه طوالنی یا پیچیده هستند؛ مثالً آدرس سختافزار فیزیکی‬
‫‪ .00:16:CE:6E:8B:24‬تفکیک نام (که جستجوی اسمی‪ 1‬هم نامیده میشود) فرآیندی است‬
‫که یک پروتکل برای تبدیل یک آدرس شناسایی شده به آدرس شناسایی شده دیگر مورد‬
‫استفاده قرار میدهد‪ .‬برای مثال‪ ،‬در حالی که یک کامپیوتر میتواند دارای آدرس ‪MAC‬‬
‫فیزیکی ‪ 00:16:CE:6E:8B:24‬باشد‪ ،‬پروتکلهای ‪ DNS‬و ‪ ARP‬ما را قادر میسازند تا نام‬
‫آن را با عنوان ‪ Markgting-2.domam.com‬ببینیم‪ .‬با آمیختن نامهای سهل با این آدرسهای‬
‫رمزی‪ ،‬به خاطر آوردن و شناسایی آنها را سادهتر میکنیم‪.‬‬

‫فعالسازی تفکیک نام‬


‫برای فعال کردن تفکیک نام‪ ،‬دیالوگ ‪ Capture Options‬را با انتخاب ► ‪Capture‬‬
‫‪ Options‬باز کنید‪ .‬همان طوری که در شکل ‪ ۷-5‬نشان داده شده است‪ ،‬در ‪ Wireshark‬سه‬
‫نوع تفکیک نام موجود است‪:‬‬

‫تفکیک نام ‪MAC‬‬


‫این نوع تفکیک نام برای تبدیل آدرسهای ‪ MAC‬الیهی ‪ – 2‬مانند ‪00:09:5B:01:02:03‬‬
‫– به آدرسهای الیهی ‪ – 3‬مانند ‪ – 10.100.12.1‬از پروتکل ‪ ARP‬استفاده میکند‪ .‬اگر‬
‫تالشها در این تبدیلها شکست بخورند‪ ،‬آنگاه ‪ Wireshark‬برای تبدیل از فایل ‪ ether‬در‬
‫دایرکتوری برنامهاش استفاده خواهد کرد‪ .‬آخرین دستهبندی ‪ Wireshark‬عبارت است از‬

‫‪1‬‬
‫‪name lookup‬‬
‫‪120‬‬
‫ویژگیهای پیشرفته‬ ‫فصل پنجم‬

‫تبدیل ‪ 3‬بایت نخست ازآدرس‪ MAC‬به نام تولیدکننده توسط انجمن مهندسان برق آمریکا‬
‫‪ ،IEEE‬نظیر ‪.Netgear_01:02:03‬‬

‫تفکیک نام شبکه‬


‫این نوع از تفکیک نام تالش میکند تا یک آدرس الیهی ‪ – 3‬مانند آدرس ‪ IP‬بهقرار‬
‫‪ –192.168.1.50‬را یک نام آسان ‪ DNS‬نظیر ‪ MarketingPC1.domain.com‬تبدیل نماید‪.‬‬

‫تفکیک نام انتقال‬


‫این نوع از تفکیک نام تالش میکند تا یک شمارهی پورت را به یک نام مرتبط با آن تبدیل‬
‫نماید‪ .‬یک مثال از این نوع تفکیک نام انتقال‪ 1‬میتواند نمایش پورت ‪ 80‬بهصورت ‪http‬‬
‫باشد‪.‬‬

‫شکل ‪ :۷-5‬فعال کردن تفکیک نام در دیالوگ ‪Capture Options‬‬

‫شما میتوانید در بعضی از موقعیتها برای خواناتر شدن فایلهای ربایش خود و صرفهجویی‬
‫کردن زیادی در زمان از انواع ابزارهای تفکیک نام بهره ببرید‪ .‬برای مثال‪ ،‬میتوانید برای‬

‫‪1‬‬
‫‪Transport name resolution‬‬
‫‪121‬‬
‫ویژگیهای پیشرفته‬ ‫فصل پنجم‬

‫کمک به شناسایی سادهی نام یک کامپیوتری که سعی میکنید بهعنوان مبدأ یک بستهی‬
‫بخصوص مشخص نمایید از تفکیک نام ‪ DNS‬استفاده نمایید‪.‬‬

‫ایرادهای بالقوهی تفکیک نام‬


‫با توجه به مزایا تفکیک نام‪ ،‬و بااینکه تفکیک نام میتواند خیلی ساده به نظر برسد‪ ،‬ولی‬
‫پارهای از ایرادات بالقوه بهقرار زیر وجود دارند‪:‬‬
‫‪ ‬تفکیک نام گاهی دچار خطا میشود‪ ،‬و این امر بهطور معمول برای آن است که این‬
‫نام توسط سرور نام که پرس و جو (‪ )query‬به آن فرستاده میشود میباشد‪.‬‬
‫‪ ‬تفکیک نام باید در هر زمانی که شما یک فایل ربایش بخصوص را باز میکنید واقع‬
‫شود ‪ ،‬زیرا این اطالعات در فایل ذخیره نشده است‪ .‬این یعنی اگر سرورهایی که‬
‫تفکیک نام فایل به آن وابسته است موجود نباشند‪ ،‬آنگاه تفکیک نام شکست خواهد‬
‫خورد‪.‬‬
‫‪ ‬وابستگی به ‪ DNS‬میتواند سبب شود که بستههای بیشتری تولید شود‪ .‬ترافیک‬
‫حاصله برای تجزیهی همهی آدرسهای مبتنی بر ‪ DNS‬فایل کامپیوتری شما را‬
‫خواهد پوشاند‪ .‬این بهطور معمول یک قانون کلی است که در زمان تحلیل موضوعی‪،‬‬
‫دیگر نمیخواهید ترافیک خود را در کابل ببینید‪.‬‬
‫‪ ‬تفکیک نام نیازمند پردازش بیشتری است‪ .‬اگر با ربایش فایل خیلی بزرگی سرو کار‬
‫دارید‪ ،‬و حافظهی کمی برایتان مانده‪ ،‬آنگاه ممکن است بخواهید که برای حفظ منابع‬
‫سیستم از ویژگی تفکیک نام چشمپوشی کنید‪.‬‬

‫‪122‬‬
‫ویژگیهای پیشرفته‬ ‫فصل پنجم‬

‫تجزیهی پروتکل‬
‫تجزیهکنندهی پروتکل‪ Wireshark 1‬را قادر میکند تا یک پروتکل را به بخشهای مختلف‬
‫تجزیه نماید‪ ،‬بهطوری که بتواند مورد تجزیه و تحلیل قرار بگیرند‪ .‬برای مثال‪ ،‬تجزیه کنندهی‬
‫پروتکل ‪ ICMP‬برنامهی ‪ Wireshark‬را قادر میکند تا دادههای خام را از کابل بگیرد و آن‬
‫را بهصورت یک بستهی ‪ ICMP‬فرمت نماید‪.‬‬
‫میتوانید یک تجزیهکننده را بهصورت یک مترجم بین دادههای خام جاری در کابل و‬
‫برنامهی ‪ Wireshark‬تجسم نمایید‪ .‬برای آنکه یک پروتکل توسط ‪ Wireshark‬پشتیبانی‬
‫شود‪ ،‬باید تجزیه کنندهای در آن برایش تعبیه شده باشد (یا اینکه میتوانید خودتان آن را در‬
‫‪ C‬یا ‪ Python‬بنویسید)‪.‬‬
‫برنامهی ‪ Wireshark‬از چندین تجزیه کننده همزمان با تفسیر هر بسته استفاده میکند‪ .‬این‬
‫برنامه تعیین میکند که کدام یک از تجزیه کنندهها مورد استفاده قرار بگیرند و این کار را با‬
‫استفاده از منطق برنامهریزی شدهاش و یک حدس بسیار آگاهانه انجام میدهد‪.‬‬

‫تغییر دادن تجزیهکننده‬


‫متأسفانه‪ Wireshark ،‬همیشه در زمان انتخاب کردن تجزیهکننده برای استفاده در مورد یک‬
‫بسته انتخابهای صحیحی انجام نمیدهد‪ .‬این امر بهویژه زمانی صادق است که در حال‬
‫استفاده از پروتکلی در شبکه و در حالت پیکربندی غیر استاندارد باشد‪ .‬میتوان به پورت غیر‬
‫پیشفرض اشاره کرد که اغلب توسط ادمینهای شبکه بهعنوان یک اقدام امنیتی احتیاطی و‬
‫یا توسط کارکنانی پیکربندی میشوند که سعی میکنند کنترلهای دسترسی را دور بزنند‪.‬‬
‫خوشبختانه میتوانیم راهی که ‪ Wireshark‬تجزیهکنندههای بخصوص را اجرا میکند تغییر‬
‫دهیم‪.‬‬

‫‪1‬‬
‫‪protocol dissection‬‬
‫‪123‬‬
‫ویژگیهای پیشرفته‬ ‫فصل پنجم‬

‫برای مثال‪ ،‬فایل ردیابی‪ wrongdissector.pcap 1‬را باز کنید‪ .‬توجه داشته باشید که این فایل‬
‫حاوی ارتباط ‪ SSL‬بین دو کامپیوتر است‪ SSL .‬پروتکل الیهی سوکت امن‪ 2‬است که برای‬
‫ارتباطات رمزی شدهی امن بین میزبانها مورد استفاده قرار میگیرد‪ .‬در اغلب شرایط عادی‪،‬‬
‫مشاهدهی ترافیک ‪ SSL‬در ‪ Wireshark‬اطالعات سودمند چندانی را حاصل نمیکند‪ ،‬و این‬
‫به سبب ماهیت رمزی شدهی آن است‪ .‬اما‪ ،‬در اینجا بهطور قطع مشکلی وجود دارد‪ .‬اگر‬
‫محتوای چندین بسته از این نوع را با کلیک کردن بر رویشان و بررسی بخش پنجرهی‬
‫‪ Packet Bytes‬با دقت بخوانید‪ ،‬آنگاه بسرعت ترافیک متن ساده‪ 3‬را خواهید یافت‪ .‬درواقع‪،‬‬
‫اگر به بستهی ‪ 4‬نگاه کنید‪ ،‬تذکر ‪ FileZilla‬برنامه کاربردی سرور ‪ FTP‬را خواهید یافت‪.‬‬
‫چند بستهی بعدی بهروشنی یک درخواست و پاسخ را برای نام کاربر و رمز عبور نشان‬
‫میدهند‪.‬‬
‫اگر این بهواقع ترافیک ‪ SSL‬باشد‪ ،‬آنگاه قادر نخواهید بود تا هیچ یک از دادههای موجود‬
‫در بستهها‪ ،‬و بهطور قطع همهی نامهای کاربری و رمزهای عبور مخابره شده بهطور آشکار را‬
‫بخوانید (شکل ‪ .)8-5‬با توجه به اطالعاتی که در اینجا نشان داده شده است‪ ،‬میتوان فرض‬
‫کرد که این شاید ترافیک ‪ FTP‬باشد و نه ترافیک ‪ .SSL‬این از همه محتملتر است‪ ،‬زیرا این‬
‫ترافیک ‪ FTP‬از پورت ‪ 443‬استفاده میکند که پورت استاندارد مورد استفاده توسط‬
‫‪ HTTP( HTTPS‬روی ‪ )SSL‬است‪.‬‬

‫‪1‬‬
‫‪trace file‬‬
‫‪2‬‬
‫‪Secure Socket Layer‬‬
‫‪3‬‬
‫‪plain text‬‬
‫‪124‬‬
‫ویژگیهای پیشرفته‬ ‫فصل پنجم‬

‫شکل ‪ :8-5‬نامهای کاربری و رمزهای عبور متن ساده‪ .‬این بیشتر شبیه ‪ FTP‬است تا ‪.SSL‬‬

‫برای درست کردن این مشکل‪ ،‬میتوانید ‪ Wireshark‬را مجبور کنید تا از تجزیهکنندهی‬
‫پروتکل ‪ FTP‬در این بستهها استفاده نماید؛ فرآیندی که به آن رمزگشایی اجباری‪ 1‬میگویند‪.‬‬
‫برای اجرای این فرآیند باید موارد زیر را انجام دهید‪:‬‬
‫‪ .1‬روی یکی از بستههای ‪ SSL‬کلیک راست کنید و ‪ Decode As‬را انتخاب نمایید‪.‬‬
‫این کار جعبهی دیالوگی را باز میکند که در آن میتوانید تجزیهکنندهی را که‬
‫میخواهید استفاده نمایید‪ ،‬انتخاب کنید‪.‬‬
‫‪ .2‬با انتخاب کردن مقصد (‪ )443‬از منوی کشویی و سپس انتخاب کردن ‪ FTP‬زیر تب‬
‫‪ Transport‬به ‪ Wireshark‬بگویید که کل ترافیک ‪ TCP‬پورت مبدأ ‪ 443‬را با‬
‫استفاده از تجزیهکنندهی ‪ FTP‬رمزگشایی کند (شکل ‪ 9-5‬را ببینید)‪.‬‬

‫‪1‬‬
‫‪forced decode‬‬
‫‪125‬‬
‫ویژگیهای پیشرفته‬ ‫فصل پنجم‬

‫شکل ‪ :9-5‬دیالوگ ‪ Decode As‬شما را قادر میسازد تا رمزگشاییهای اجباری را ایجاد کنید‪.‬‬

‫‪ .3‬زمانی که انتخابهای خود را انجام دادید‪ ،‬روی ‪ OK‬کلیک کنید تا تغییراتی را‬
‫ببینید که بالفاصله در فایل ربایش اعمال میشود‪.‬‬
‫باید ببینید که دادهها بخوبی رمزگشاییشده باشند؛ بهصورتی که بتوانید آن را از بخش‬
‫پنجرهی ‪ Packet List‬و بدون نیاز به کاوش عمیق در میان تک تک بایتهایش مورد تحلیل‬
‫قرار دهید‪.‬‬

‫هشدار‪ :‬تغییراتی را که در هنگام ایجاد رمزگشایی اجباری ایجاد میکنید در زمانی که فایل‬
‫ربایش را ذخیره میکنید و میبندید ذخیره نمیشوند‪ .‬شما هر بار که بخواهید فایل ربایش را‬
‫باز کنید باید دوباره رمزگشاییهای اجباری را ایجاد نمایید‪.‬‬

‫میتوانید از ویژگی رمزگشایی اجباری چندین بار در درون یک فایل ربایش استفاده کنید‪.‬‬
‫از آنجایی که پیگیری و دنبال کردن رمزگشاییهای اجباری اعمال شده در زمانی که بیش‬
‫از یک بار در یک فایل ربایش استفاده شده باشند کار دشواری است‪ ،‬بنابراین ‪Wireshark‬‬
‫این کار را برای شما انجام میدهد‪ .‬از دیالوگ ‪ Decode As‬میتوانید بر روی دکمهی ‪Show‬‬
‫‪ Current‬کلیک کنید تا همهی رمزگشاییهای اجباری که تا به اینجا درست کردهاید را‬

‫‪126‬‬
‫ویژگیهای پیشرفته‬ ‫فصل پنجم‬

‫نمایش دهد (شکل ‪ 10-5‬را ببینید)‪ .‬همچنین میتوانید با کلیک کردن بر روی دکمهی‬
‫‪ Clear‬آنها را پاک کنید‪.‬‬

‫شکل ‪ :10-5‬کلیک کردن روی دکمهی ‪ Show Current‬همهی رمزگشاییهای اجباری‬


‫که برای فایل ربایش درست کردهاید را نشان میدهد‪.‬‬

‫دیدن کد مبدأ تجزیهکننده‬


‫زیبایی کار با یک برنامه کاربردی متنباز آن است که اگر گاهی گیج میشوید که چرا‬
‫چیزی در حال رخ دادن است‪ ،‬میتوانید کد مبدأ را نگاه کنید و دلیل دقیق را پیدا نمایید‪ .‬این‬
‫امر درزمانی که سعی میکنید مشخص نمایید که چرا یک پروتکل بخصوص بهطور اشتباه‬
‫تفسیر شده بسیار سودمند است‪.‬‬
‫بررسی کد مبدأ تجزیه کنندههای پروتکل را میتوان بهطور مستقیم از وبسایت ‪Wireshark‬‬
‫و با رفتن روی پیوند ‪ Develop‬و کلیک کردن روی ‪ Brows the Code‬انجام داد‪ .‬این پیوند‬
‫شما را به مخزن زیرنسخهی‪ 1‬برنامهی ‪ Wireshark‬خواهد فرستاد که در آنجا میتوانید نشر‬
‫فعلی کد برای ‪ Wireshark‬و همچنین کد برای نشرهای قبلی را ببینید‪ .‬کلیک کردن بر روی‬

‫‪1‬‬
‫‪subversion‬‬

‫‪12۷‬‬
‫ویژگیهای پیشرفته‬ ‫فصل پنجم‬

‫پوشهی ‪ releases‬همهی نشرهای رسمی ‪( Wireshark‬و حتی ‪ )Ethereal‬را به شما ارائه‬


‫خواهد کرد که در آن جدیدترین نشر در پایین فهرست قرار دارد‪ .‬وقتی نشری که میخواهید‬
‫بررسی کنید را انتخاب نمودید‪ ،‬آنگاه تجزیه کنندههای پروتکل را میتوانید در پوشهی‬
‫‪ epan/dissectors‬پیدا کنید‪ .‬هر تجزیه کننده با ‪ packets-protocolname.c‬برچسب خورده‬
‫است‪.‬‬
‫این فایلها میتوانند تا حدی پیچیده باشند‪ ،‬اما در خواهید یافت که همهی آنها از الگویی‬
‫استاندارد تبعیت میکنند و میل به آن دارند که خیلی خوب توضیح داده بشوند‪ .‬برای درک‬
‫کارکرد پایهای هر تجزیهکننده الزم نیست که برنامهنویس متخصص ‪ C‬باشید‪ .‬اگر میخواهید‬
‫درک بهواقع عمیقی از چیزی داشته باشید که در ‪ Wireshark‬میبینید‪ ،‬من توصیه میکنم که‬
‫حداقل به بعضی از تجزیهکنندهها در پارهای از پروتکلهای سادهتر نگاهی داشته باشید‪.‬‬

‫دنبال کردن جریانهای ‪TCP‬‬


‫یکی از رضایتبخشترین ویژگیها تحلیلی ‪ Wireshark‬توانایی آن در بازسازی جریانهای‬
‫‪ TCP‬در قالبی است که براحتی قابل خواندن است‪ .‬بهجای مشاهدهی دادههای فرستاده شده‬
‫از کاربر به سرور در چند قطعهی کوچک‪ ،‬ویژگی ‪ Follow TCP Stream‬دادهها را‬
‫مرتبسازی میکند تا دیدنشان سادهتر شود‪ .‬این کار در زمان دیدن متن سادهی پروتکلهای‬
‫الیهی برنامه کاربردی – نظیر ‪ FTP ،HTTP‬و نظایر آنها – بسیار سودمند است‪( .‬در فصل‬
‫بعد نگاهی دقیقتر خواهیم داشت که این پروتکلهای رایج چگونه عمل میکنند‪).‬‬
‫برای مثال‪ ،‬بیایید یک تراکنش سادهی ‪ HTTP‬را در نظر بگیریم‪ .‬فایل ‪http_google.pcap‬‬
‫را باز کنید‪ .‬روی یکی از بستههای ‪ TCP‬یا ‪ HTTP‬در فایل کلیک کنید؛ روی فایل رایت‬
‫کلیک نمایید‪ ،‬و ‪ Follow TCP Stream‬را انتخاب کنید‪ .‬این کار جریان ‪ TCP‬را در یک‬
‫پنجرهی جداگانه ایجاد میکند (شکل ‪ 11-5‬را ببینید)‪.‬‬

‫‪128‬‬
‫ویژگیهای پیشرفته‬ ‫فصل پنجم‬

‫شکل ‪ :11-5‬پنجرهی ‪ Follow TCP Stream‬ارتباط را در شکلی که براحتی قابل‬


‫خواندن است بازسازی مینماید‪.‬‬

‫توجه داشته باشید که متن نمایش داده شده در این پنجره در دو رنگ است‪ .‬متن قرمز(قسمت‬
‫باالیی) برای مشخص کردن ترافیک از مبدأ به مقصد‪ ،‬و متن آبی(وسط) برای شناسایی‬
‫ترافیک از جهت مخالف‪ ،‬یعنی از مقصد به مبدأ است‪ .‬رنگ نشان میدهد که کدام طرف‬
‫ارتباط را آغاز کرده است‪ .‬مثالً‪ ،‬در مثال ما‪ ،‬کاربر ارتباط با سرور وب را آغاز کرده است و‬
‫به همین سبب به رنگ قرمز نمایش داده شده است‪.‬‬
‫با توجه به این جریان ‪ ،TCP‬میتوانید بهروشنی بخش عمدهی ارتباط بین این دو میزبان را‬
‫ببینید‪ .‬این ارتباط با یک درخواست اولیهی ‪ GET‬برای فهرست ریشهی وب (‪ )/‬و یک پاسخ‬
‫از سرور آغاز میشود مبنی بر اینکه درخواست در شکل یک ‪HTTP/1.1 200 OK‬‬
‫موفقیتآمیز بوده است‪ .‬الگوی مشابهی در کل این جریان تکرار شده است‪ ،‬زیرا تک تک‬
‫فایلهای توسط این کاربر درخواست شدهاند و سرور به آنها پاسخ میدهد‪ .‬شما در حال‬

‫‪129‬‬
‫ویژگیهای پیشرفته‬ ‫فصل پنجم‬

‫دیدن کاربری هستید که در حال جستجو در صفحهی وب ‪ Google‬است‪ .‬شما عمالً مشغول‬
‫دیدن آنچه هستید که کاربر نهایی در حال دیدن آن است‪ ،‬ولی از طرف داخل به بیرون‪.‬‬
‫همچنین عالوه بر دیدن دادههای خام در این پنجره میتوانید در درون متن به جستجو‬
‫بپردازید؛ آن را بهعنوان یک فایل ذخیره نمایید؛ چاپ کنید؛ یا اینکه انتخاب کنید دادهها را‬
‫در قالب آرایهی ‪ ،hex ،EBCDIC ،ASCII‬یا ‪ C‬ببینید‪ .‬این گزینهها را میتوانید در پایین‬
‫پنجرهی ‪ Follow TCP Stream‬پیدا کنید‪.‬‬
‫دنبال کردن جریانهای ‪ TCP‬در هنگام سر و کار داشتن با بعضی از پروتکلها به بهترین‬
‫دوست شما تبدیل خواهد شد‪.‬‬

‫طولهای بسته‬
‫اندازهی یک بستهی منفرد‪ ،‬یا گروهی از بستهها میتواند اطالعات زیادی دربارهی موقعیت‬
‫به شما بدهد‪ .‬تحت شرایط معمولی‪ ،‬حداکثر اندازهی یک قاب‪ 1‬در یک شبکهی ‪Ethernet‬‬
‫بهقرار ‪ 1518‬بایت است‪ .‬زمانی که سرآیندهای ‪ ،IP ،Ethernet‬و ‪ TCP‬را از این عدد کم‬
‫کنید‪ 1460 ،‬بایت باقی میماند که میتواند برای انتقال یک سرآیند یا دادهی پروتکل الیهی‬
‫‪ ۷‬مورد استفاده قرار بگیرد‪ .‬با این آگاهی‪ ،‬میتوانید از توزیع طولهای بسته در یک ربایش‬
‫استفاده کنید تا دربارهی ترافیک حدسهایی آگاهانه بزنید‪.‬‬
‫باز کردن فایل ‪ download-slow.pcap‬مثالی عالی را برای این کار فراهم خواهد کرد‪ .‬زمانی‬
‫که این فایل باز شود‪ Statistics ► Packet Lengths ،‬را انتخاب کنید و بر روی ‪Create‬‬
‫‪ Start‬کلیک کنید‪ .‬نتیجه پنجرهای است که در شکل ‪ 12-5‬نشان داده شده است‪.‬‬

‫‪1‬‬
‫‪frame‬‬
‫‪130‬‬
‫ویژگیهای پیشرفته‬ ‫فصل پنجم‬

‫شکل ‪ :12-5‬پنجرهی ‪ Packet Lengths‬به شما در انجام حدسهای آگاهانه دربارهی ترافیک‬
‫در فایل ربایش کمک مینماید‪.‬‬

‫من بخشی را پررنگ کردهام که آمار بستههایی را نشان میدهد که اندازهی آنها در دامنهای‬
‫از ‪ 1280‬تا ‪ 2559‬بایت قرار دارد‪ .‬بستههای بزرگتر نظیر اینها بهطور معمول انتقال دادهها را‬
‫نشان میدهند‪ ،‬در حالی که بستههای کوچکتر توالیهای کنترل پروتکل را نشان میدهند‪.‬‬
‫در این مورد‪ ،‬درصد نسبتاً باالیی از بستههای بزرگ‪ 66/43‬درصد را داریم‪ .‬حتی بدون دیدن‬
‫بستهها در فایل میتوانیم نتیجهگیری کنیم که فایل ربایش حاوی یک یا چند انتقال داده‬
‫است‪ .‬این امر میتواند به شکل یک دانلود ‪ ،HTTP‬یک آپلود ‪ ،FTP‬یا هر نوع دیگری از‬
‫ارتباطات شبکهای باشد که در آن دادهها بین میزبانها منتقل شدهاند‪.‬‬
‫بخش عمدهی بستههای باقیمانده ‪ 33/44‬درصد در دامنهی ‪ 40‬تا ‪ ۷9‬بایت قرار دارند‪.‬‬
‫بستههای در این دامنه بهطور معمول بستههای کنترل ‪ TCP‬هستند که حامل دادهها نمیباشند‪.‬‬
‫بیایید اندازهی معمول سرآیندهای پروتکل را در نظر بگیریم‪ .‬سرآیند ‪ Ethernet‬بهقرار ‪14‬‬
‫بایت است (به عالوهی ‪ 4‬بایت ‪ ،)CRC‬سرآیند ‪ IP‬حداقل ‪ 20‬بایت است‪ ،‬و یک بستهی ‪TCP‬‬
‫بدون داده یا گزینه نیز ‪ 20‬بایت است‪ .‬این یعنی بستههای کنترل ‪TCP‬استاندارد – نظیر‬
‫بستههای ‪ ،RST ،ACK ،SYN‬و ‪ – FIN‬از نظر اندازه در حدود ‪ 54‬بایت هستند و در این‬

‫‪131‬‬
‫ویژگیهای پیشرفته‬ ‫فصل پنجم‬

‫دامنه قرار میگیرند‪ .‬بهطور مسلم‪ ،‬افزودن گزینههای ‪ IP‬یا ‪ TCP‬این اندازه را افزایش خواهد‬
‫داد‪.‬‬
‫بررسی طولهای بسته راهی عالی برای به دست آوردن یک دید از باال از یک ربایش است‪.‬‬
‫اگر بستههای زیادی وجود داشته باشد‪ ،‬میتوان فرض کرد که دادهها منتقل شدهاند‪ .‬اگر‬
‫اکثریت بستهها کوچک باشند‪ ،‬آنگاه میتوانید فرض کنید که ربایش از دستورهای کنترل‬
‫پروتکل تشکیل شده و خیلی حاوی دادههای منتقل شده نیست‪ .‬اینها قوانین ثابت و الیتغیر‬
‫نیستند‪ ،‬ولی گاهی انجام چنین فرضیاتی پیش از تحلیل عمیقتر امن است‪.‬‬

‫نمودارکشی‬
‫نمودارها کار معمول تحلیل‪ ،‬و یکی از بهترین راهها برای به دست آوردن نگاهی اجمالی از‬
‫مجموعهی دادهها هستند‪ .‬برنامهی ‪ Wireshark‬دارای چند ویژگی نمودارکشی است تا به‬
‫درک دادههای ربایش کمک نماید و اولین آنها قابلیتهای نمودار کشی ‪ IO‬است‪.‬‬

‫دیدن نمودارهای ‪IO‬‬


‫پنجرهی ‪ IO Graphs‬برنامهی ‪ Wireshark‬شما را قادر میسازد تا نمودار خروجی دادهها در‬
‫یک شبکه را ترسیم نمایید‪ .‬شما میتوانید از چنین نمودارهایی برای یافتن فراز و فرودهای‬
‫خروجی‪ ،‬کشف تأخیرهای عملکرد در تک تک پروتکلها‪ ،‬و مقایسهی جریانهای همزمان‬
‫داده استفاده کنید‪.‬‬
‫برای دیدن مثالی از نمودار ‪ IO‬یک کامپیوتر در حالی که فایلی را از اینترنت دانلود میکند‪،‬‬
‫‪ download-fast.pcap‬را باز کنید‪ .‬روی یک بستهی ‪ TCP‬کلیک کنید تا پررنگ شود‪ ،‬و‬
‫آنگاه ‪ Statistics ► IO Graphs‬را انتخاب نمایید‪.‬‬
‫پنجرهی ‪ IO Graphs‬یک نمای گرافیکی از جریان دادهها را در طول فایل ربایش نشان‬
‫میدهد‪ .‬در مثال شکل ‪ ،13-5‬شما میتوانید ببینید دانلودی که این نمودار نشان میدهد بهطور‬

‫‪132‬‬
‫ویژگیهای پیشرفته‬ ‫فصل پنجم‬

‫میانگین در حدود ‪ 500‬بسته در هر تیک است و بهنوعی در کل دورهاش ثابت باقی میماند‬
‫و در انتها تنزل پیدا میکند‪.‬‬

‫شکل ‪ :13-5‬نمودار ‪ IO‬دانلود سریع اساساً یکدست است‪.‬‬

‫بیایید این را با نمونهای از یک دانلود کندتر مقایسه کنیم‪ .‬فایل فعلی را باز نگه دارید‪ ،‬و‬
‫نمونهی دیگری از ‪ Wireshark‬را باز کنید‪ ،‬و ‪ dawnload-slow.pcap‬را باز نمایید‪ .‬نمودار‬
‫‪ IO‬این دانلود را ایجاد کنید و یک داستان کامالً متفاوت را خواهید دید (همان طوری که‬
‫در شکل ‪ 14-5‬نشان داده شده است)‪.‬‬

‫‪133‬‬
‫ویژگیهای پیشرفته‬ ‫فصل پنجم‬

‫شکل ‪ :14-5‬نمودار ‪ IO‬دانلود کند اصالً یکدست نیست‪.‬‬

‫این دانلود دارای نرخ انتقالی بین صفر و ‪ 100‬بسته در ثانیه است و از یکدست بودن فاصلهی‬
‫زیادی دارد و حتی گاهی به صفر بسته در ثانیه نزدیک میشود‪ .‬اگر نمودارهای ‪ IO‬دو فایل‬
‫را در کنار یکدیگر قرار دهید (شکل ‪ 15-5‬را ببینید)‪ ،‬آنگاه این ناسازگاریها و غیر‬
‫یکدستیها را واضحتر خواهید دید‪.‬‬

‫‪134‬‬
‫ویژگیهای پیشرفته‬ ‫فصل پنجم‬

‫شکل ‪ :15-5‬مشاهدهی چند نمودار ‪ IO‬در کنار هم میتواند در تشخیص اختالف سودمند باشد‪.‬‬

‫به گزینههای قابل پیکربندی در پایین این پنجره توجه نمایید‪ .‬شما میتوانید تا پنج فیلتر منحصر‬
‫به فرد (با استفاده از همان نحو یک فیلتر نمایش یا ربایش که در فصلهای ‪ 6‬و ‪ ۷‬شرح داده‬
‫شد) را به وجود آورید و رنگهای نمایش را برای آن فیلترها تعیین نمایید‪ .‬برای مثال‪ ،‬شما‬
‫میتوانید فیلترهایی را برای نشان دادن ترافیک ‪ ARP‬و ‪ DHCP‬به وجود آورید‪ ،‬و خطوط‬
‫روی نمودار را به رنگ قرمز و آبی نشان دهید‪ ،‬بهطوری که بتوانید براحتی میان روندهای‬
‫خروجی بین این دو نوع پروتکل تفکیک قائل شوید‪.‬‬

‫ترسیم نمودار زمان رفت و برگشت‬


‫یک ویژگی دیگر ترسیم نمودار ‪ Wireshark‬توانایی آن در نشان دادن نمودار زمانهای رفت‬
‫و برگشت برای یک فایل ربایش مفروض است‪ .‬زمان رفت و برگشت‪ )RTT( 1‬عبارت است‬
‫از زمان الزم برای دریافت اعالم وصول یک بسته‪ .‬اساساً این زمانیست که صرف میشود تا‬
‫بستهی شما به مقصدش برسد و نیز برای آنکه اعالم وصول آن بسته به شما برگردد‪ .‬تجزیه و‬
‫تحلیل ‪RTT‬ها اغلب برای یافتن نقاط کند یا گلوگاهها در ارتباط و تعیین وجود یا عدم وجود‬
‫تأخیر (‪ )latency‬انجام میشود‪.‬‬

‫‪1‬‬
‫)‪round-trip time (RTT‬‬
‫‪135‬‬
‫ویژگیهای پیشرفته‬ ‫فصل پنجم‬

‫بیایید این ویژگی را امتحان کنیم‪ .‬فایل ‪ dowload-fast‬را بازکنید‪ .‬نمودار ‪ RTT‬این فایل را‬
‫با انتخاب کردن یک بستهی ‪ TCP‬ببینید‪ ،‬و سپس ► ‪Statistics ► TCP Stream Graph‬‬
‫‪ Round Trip Time Graph‬را انتخاب کنید‪ .‬نمودار ‪ RTT‬برای ‪ dowload-fast.pcap‬در‬
‫شکل ‪ 16-5‬نشان داده شده است‪.‬‬

‫شکل ‪ :16-5‬نمودار ‪ RTT‬این دانلود اساساً یکدست به نظر میرسد‪ ،‬و تنها چند مقدار منحرف وجود دارد‪.‬‬

‫هر نقطه در این نمودار معرف ‪ RTT‬یک بسته است‪ .‬نمای پیشفرض این مقادیر را بهصورت‬
‫جور شده توسط شماره ترتیب نشان میدهد‪ .‬شما میتوانید بر روی یک نقطهی ترسیم شده‬
‫در روی نمودار کلیک کنید تا مستقیماً به بسته در داخل بخش پنجرهی ‪ Packet List‬برده‬
‫شوید‪.‬‬
‫به نظر میرسد که نمودار ‪ RTT‬برای دانلود سریع دارای مقادیر ‪ RTT‬عمدتاً زیر ‪ 0/05‬ثانیه‬
‫است‪ ،‬و نقاط دانلود کُند بین ‪ 0/10‬و ‪ 0/25‬ثانیه قرار دارند‪ .‬اگر چه معدود مقادیری باالی‬

‫‪136‬‬
‫ویژگیهای پیشرفته‬ ‫فصل پنجم‬

‫حدود قابل قبول وجود دارند‪ ،‬ولی اکثریت مقادیر ‪ RTT‬درست هستند‪ ،‬و به همین سبب این‬
‫برای دانلود یک فایل ‪ RTT‬قابل قبولی در نظر گرفته میشود‪.‬‬

‫ترسیم نمودار جریان‬


‫ویژگی ترسیم نمودار جریان برای مجسم ساختن اتصالها و نشان دادن جریان دادهها در طول‬
‫زمان بسیار سودمند است‪ .‬اساساً یک نمودار جریان از یک نمای ستونی از اتصال بین میزبانها‬
‫تشکیل شده و ترافیک را سازمان میدهد‪ ،‬بهطوری که میتوانید آن را بهصورت بصری تفسیر‬
‫نمایید‪.‬‬
‫برای به وجود آوردن یک نمودار جریان‪ http_google.pcap ،‬را باز کنید و ► ‪Statistics‬‬
‫‪ Flow Graph‬را انتخاب نمایید‪ .‬یک دیالوگ کوچک را خواهید دید که چند گزینهی ساده‬
‫را در ارتباط با پردازش بستهها و نوع جریان را ارائه میدهد‪ .‬برای این مثال‪ ،‬فقط پذیرفتن‬
‫حالت پیشفرض عالی خواهد بود؛ بنابراین بر روی ‪ OK‬کلیک کنید تا نمودار جریان درست‬
‫شود (شکل ‪ 1۷-5‬را ببینید)‪.‬‬

‫شکل ‪ :1۷-5‬نمودار جریان ‪ TCP‬شما را قادر میسازد تا اتصال را خیلی بهتر تجسم نمایید‪.‬‬

‫‪13۷‬‬
‫ویژگیهای پیشرفته‬ ‫فصل پنجم‬

‫اطالعات خبره‬
‫تجزیهکنندههای هر پروتکل در ‪ Wireshark‬اطالعات خبره‪ 1‬را تعریف میکنند که از آنها‬
‫میتوان برای هشدار دادن به شما دربارهی وضعیتهای بخصوص در درون یک بسته استفاده‬
‫شود که از آن پروتکل استفاده مینماید‪ .‬این وضعیتها به چهار گروه طبقهبندی میشوند‪:‬‬
‫اطالعات پایه دربارهی ارتباط‬ ‫‪Chat‬‬
‫بستههای غیر معمول که میتوانند بخشی از ارتباط نرمال باشند‬ ‫‪Note‬‬
‫بستههای غیر معمول که به احتمال بسیار زیاد بخشی از ارتباط نرمال نیستند‬ ‫‪Warning‬‬
‫خطایی در یک بسته یا تجزیهکنندهای که آن را تفسیر میکند‬ ‫‪Error‬‬

‫برای مثال‪ ،‬فایل ‪ download-slow.pcap‬را بازکنید‪ .‬سپس بر روی ‪ Analyze‬کلیک کنید‪،‬‬


‫و ‪ Expert Info Composite‬را انتخاب نمایید تا پنجرهی ‪ Expert Info‬برای این فایل ربایش‬
‫باز شود (شکل ‪ 18-5‬را ببینید)‪.‬‬

‫شکل ‪ :18-5‬پنجرهی ‪ Expert Info‬اطالعات از سیستم خبره برنامهریزیشده در درون‬


‫تجزیهکنندههای پروتکل را نشان میدهد‪.‬‬

‫توجه کنید که این پنجره برای هر گروه از اطالعات دارای تبهایی است‪ ،‬و اینکه هیچ‬
‫وضعیت ‪ 3 ،error‬وضعیت ‪ 18 ،warning‬وضعیت ‪ ،note‬و ‪ 3‬وضعیت ‪ chat‬دارد‪ .‬در تبها‪،‬‬

‫‪1‬‬
‫‪expert info‬‬

‫‪138‬‬
‫ویژگیهای پیشرفته‬ ‫فصل پنجم‬

‫عددی که داخل پرانتز نیست مقدار پیغامهای منحصربهفرد را نشان میدهد‪ ،‬و عدد داخل‬
‫پرانتزها عبارت است از کل رخ دادنها برای هر گروه‪.‬‬
‫همهی پیامهای داخل این فایل ربایش مرتبط با ‪ TCP‬هستند‪ ،‬زیرا سیستم اطالعات خبره تا‬
‫زمان نوشتن این کتاب بهواقع برای هیچ پروتکل دیگری اجرا نشده است‪ .‬در حال حاضر‪،‬‬
‫تعداد ‪ 14‬پیغام اطالعات خبره برای ‪ TCP‬پیکربندی شده است‪ ،‬و آنها در هنگام رفع اشکال‬
‫فایلهای ربایش بسیار سودمند هستند‪ .‬این پیغامها یک بستهی منفرد را در زمانی که معیارهای‬
‫بخصوصی را برآورده نماید عالمت خواهند داد‪ .‬این معیارها بهقرار زیر هستند‪:‬‬
‫پیغامهای ‪Chat‬‬
‫‪ – Window Update‬فرستاده شده توسط یک دریافت کننده برای آگاه ساختن یک‬
‫فرستنده مبنی بر اینکه اندازهی پنجرهی دریافت ‪ TCP‬تغییر کرده است‪.‬‬
‫پیغامهای ‪Note‬‬
‫‪ – TCP Retransmission‬نتیجهی اتالف بسته‪ .1‬زمانی رخ میدهد که یک ‪ACK‬‬
‫دونسخهای دریافت شده باشد یا زمانسنج ارسال مجدد یک بسته منقضی شده باشد‪.‬‬
‫‪ – Duplicate ACK‬زمانی که یک میزبان شماره ترتیب بعدی که انتظار دارد را‬
‫دریافت نکند‪ ،‬یک ‪ ACK‬دونسخهای از آخرین دادههای دریافت شده را تولید‬
‫میکند‪.‬‬
‫‪ -Zero Window Probe‬برای پایش وضعیت پنجرهی دریافت ‪ TCP‬پس از آن‬
‫استفاده میشود که یک بستهی پنجرهی صفر ارسال شده باشد (این مبحث در فصل ‪9‬‬
‫پوشش داده شده است)‪.‬‬
‫‪ – Keep Alive ACK‬در پاسخ به بستههای ‪ keep alive‬فرستاده میشود‪.‬‬

‫‪1‬‬
‫‪packet loss‬‬
‫‪139‬‬
‫ویژگیهای پیشرفته‬ ‫فصل پنجم‬

‫‪ – Zero Window Probe ACK‬در پاسخ به بستههای ‪zero-window-probe‬‬


‫فرستاده میشود‪.‬‬
‫‪ – Window is Full‬برای آگاه کردن یک میزبان ارسالکننده مورد استفاده قرار‬
‫میگیرد مبنی بر آنکه پنجرهی دریافت ‪ TCP‬گیرنده پر است‪.‬‬
‫پیغامهای ‪Warning‬‬
‫‪ – Previous Segment Lost‬اتالف بسته را نشان میدهد‪ .‬زمانی رخ میدهد که از‬
‫یک شماره ترتیب مورد انتظار در یک جریان داده جهش شده باشد‪.‬‬
‫‪ – ACKed Lost Packet‬زمانی رخ میدهد که یک بستهی ‪ ACK‬دیده شده باشد‪،‬‬
‫ولی بستهای که اعالم وصولش میکند دیده نشده باشد‪.‬‬
‫‪ – Keep Alive‬زمانی فعال میشود که یک بستهی ‪ keep-alive‬ارتباط دیده شده‬
‫باشد‪.‬‬
‫‪ – Zero Window‬زمانی دیده میشود که اندازهی پنجرهی دریافت ‪ TCP‬حاصل‬
‫شده باشد و یک آگهی پنجرهی صفر فرستاده شده باشد که از فرستنده درخواست‬
‫میکند تا فرستادن دادهها را متوقف نماید‪.‬‬
‫‪ – Out-of-Order‬زمانی که بستهها بدون توالی دریافت شده باشند از شماره ترتیبها‬
‫استفاده مینماید‪.‬‬
‫‪ – Fast Retransmission‬ارسال مجددی که ظرف ‪ 20‬میلیثانیه از یک ‪ACK‬‬
‫دونسخهای رخ میدهد‪.‬‬
‫پیغامهای ‪Error‬‬
‫‪ - No Error Messages‬بامطالعه و بررسی ‪ TCP‬در فصل ‪ 6‬و رفع اشکال شبکههای کند در‬
‫فصل ‪ 9‬معنی این پیغامها روشنتر خواهد شد‪ .‬اگرچه بعضی از ویژگیهای مورد بحث در‬
‫این فصل میتواند چنین به نظر برسد که گویی آنها تنها در وضعیتهای مبهم مورد استفاده‬

‫‪140‬‬
‫ویژگیهای پیشرفته‬ ‫فصل پنجم‬

‫قرار میگیرند‪ ،‬ولی احتماالً خود را در وضعیتی خواهید دید که از آنها بیش از آنچه انتظار‬
‫داشتهاید استفاده مینمایید‪ .‬مهم است که خود را با این پنجرهها و گزینهها آشنا نمایید؛ من‬
‫در چند فصل بعدی خیلی به آنها رجوع خواهم داد‪.‬‬

‫‪141‬‬
‫فصل شش‬
‫پروتکلهای رایج الیه پائینتر‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫پروتکلهای رایج الیهی پایینتر‬


‫خواه موضوعات رفع اشکال تأخیر باشد‪ ،‬خواه شناسایی برنامههای کاربردی معیوب کننده‪،‬‬
‫یا مشخص کردن تهدیدات امنیتی‪ ،‬بهمنظور اینکه بتوان ترافیک غیرعادی را کشف و مشخص‬
‫کرد‪ ،‬نخست باید ترافیک عادی را درک نمایید‪ .‬در چند فصل بعد یاد خواهید گرفت که‬
‫ترافیک معمولی در سطح بسته چگونه کار میکند‪.‬‬
‫ما به رایجترین پروتکلها نگاهی خواهیم داشت که شامل ‪ ،UDP ،TCP‬و ‪ ،IP‬و پروتکلهای‬
‫رایجتر الیهی برنامه کاربردی نظیر ‪ ،DHCP ،HTTP‬و ‪ DNS‬میشوند‪ .‬هر بخش پروتکل‬
‫حداقل دارای یک فایل ربایش متناظر است که شما میتوانید دانلود کنید و مستقیماً با آن‬
‫کار نمایید‪ .‬این فصل بهطور خاص بر پروتکلهای الیهی پایینتر تمرکز میکند که در مرجع‬
‫برای الیهی ‪ 1‬تا ‪ 4‬از مدل ‪ OSI‬یافت میشود‪.‬‬
‫مسلماً این فصلها مهمترین فصلهای این کتاب هستند‪ .‬جهش از روی این بحث مانند پختن‬
‫آش رشته روز جمعه بدون پیازداغ است‪ .‬حتی اگر از قبل فهم خوبی از چگونه عمل کردن‬
‫پروتکلها داشته باشید‪ ،‬ولی حداقل به این فصلهای نگاهی گذرا داشته باشید تا ساختار‬
‫بستهی هر یک را مرور نمایید‪.‬‬

‫پروتکل تفکیک آدرس‬


‫برای ارتباطات در یک شبکه‪ ،‬هم به آدرس منطقی‪ ،‬و هم به آدرس فیزیکی نیاز است‪ .‬استفاده‬
‫از آدرسهای منطقی ارتباط بین چند شبکه و دستگاههایی را مقدور مینماید که بهطور‬
‫غیرمستقیم با یکدیگر متصل هستند‪ .‬استفاده از آدرسهای فیزیکی سبب تسهیل ارتباطات در‬
‫یک بخش منفرد از شبکه برای دستگاههایی میشود که مستقیماً با یک سوئیچ به یکدیگر‬
‫متصل هستند‪ .‬در اغلب موارد‪ ،‬این دو نوع آدرسدهی باید با یکدیگر کار کنند تا ارتباط‬
‫حاصل شود‪.‬‬

‫‪144‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫سناریویی را در نظر بگیرید که در آن میخواهید با دستگاهی در شبکهتان ارتباط برقرار‬


‫نمایید‪ .‬این دستگاه میتواند نوعی سرور یا فقط یک ایستگاه کاری دیگر باشد که نیاز دارید‬
‫فایلها را با آن به اشتراک بگذارید‪ .‬برنامه کاربردی که شما برای آغاز کردن ارتباط مورد‬
‫استفاده قرار میدهید از قبل نسبت به آدرس ‪ IP‬میزبان راه دور آگاه است (از طریق ‪DNS‬‬
‫که در فصل ‪ ۷‬به آن پرداخته خواهد شد)‪ ،‬و این یعنی سیستم باید همهی چیز مورد نیاز برای‬
‫ساختن اطالعات الیهی ‪ 3‬تا ‪ ۷‬بستهای را داشته باشد که میخواهد ارسال کند‪ .‬تنها قطعهی‬
‫اطالعاتی که در این نقطه الزم دارد‪ ،‬دادههای الیه‪ 2‬یا پیوند داده‪ 1‬است که حاوی آدرس‬
‫‪ MAC‬میزبان هدف است‪.‬‬
‫آدرسهای ‪ MAC‬به دلیل سوئیچی مورد نیاز هستند که دستگاهها را در شبکهای به یکدیگر‬
‫اتصال میدهد که از یک جدول محتوای حافظهی آدرسپذیر‪ 2‬استفاده میکند که‬
‫آدرسهای ‪ MAC‬کلیهی وسایل متصل به هر یک از پورتهایش را فهرست میکند‪ .‬زمانی‬
‫که این سوئیچ ترافیک به مقصد یک آدرس ‪ MAC‬را دریافت میکند‪ ،‬از این جدول برای‬
‫آن استفاده میکند که ترافیک را از کدام پورت بفرستد‪ .‬اگر آدرس ‪ MAC‬مقصد معلوم‬
‫باشد‪ ،‬آنگاه دستگاهی فرستنده نخست به دنبال آدرس در ‪ cache‬خود میگردد‪ ،‬و اگر آنجا‬
‫نباشد‪ ،‬آنگاه این باید از طریق ارتباط بیشتر در شبکه تعیین و کشف شود‪.‬‬
‫فرآیند تفکیک که شبکهسازی ‪( TCP/IP‬با ‪ )IPv4‬برای تجزیهی آدرس یک ‪ IP‬به یک‬
‫آدرس ‪ MAC‬مورد استفاده قرار میدهد پروتکل تفکیک آدرس‪ 3‬نامیده میشود که در‬
‫‪ RFC 826‬تعریف شده است‪ .‬فرآیند تجزیهی ‪ ARP‬تنها از دو بسته استفاده میکند‪ :‬یک‬
‫درخواست ‪ ARP‬و یک پاسخ ‪( ARP‬شکل ‪ 1-6‬را ببینید)‪.‬‬

‫‪1‬‬
‫‪data link‬‬
‫‪2‬‬
‫‪Content Addressable Memory (CAM) table‬‬
‫‪3‬‬
‫)‪Address Resolution Protocol (ARP‬‬
‫‪145‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫نکته‪ :‬یک ‪ ،RFC‬یا تقاضا برای نظر‪ ،1‬سندی رسمی است که اجرای استانداردها برای‬
‫پروتکلها را تعریف میکند‪ .‬شما میتوانید در صفحهی خانهی ‪ RFC Editor‬به نشانی‬
‫‪ http://www.rfc-editor.org/‬به دنبال مستندات ‪ RFC‬بگردید‪.‬‬

‫کامپیوتر ارسالکننده یک درخواست ‪ ARP‬را میفرستد که اساساً میپرسد‪" ،‬همگی حالشون‬


‫چطوره‪ ،‬آدرس ‪ IP‬من ‪ XX.XX.XX.XX‬است‪ ،‬و آدرس ‪ MAC‬من‬
‫‪ XX:XX:XX:XX:XX:XX‬است‪ .‬من باید چیزی را به کسی بفرستم که آدرس ‪IP‬اش‬
‫‪ YY.YY.YY.YY‬است‪ ،‬ولی من آدرس سختافزار آن را نمیدانم‪ .‬آیا میشه کسی که آدرس‬
‫‪IP‬اش این است با آدرس ‪MAC‬اش جواب بدهد؟"‬

‫شکل ‪ :1-6‬فرآیند تعیین ‪ARP‬‬

‫‪1‬‬
‫‪Request for Comments‬‬
‫‪146‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫این بسته برای هر دستگاهی در درون شبکه فرستاده میشود‪ .‬هر دستگاهی که این آدرس ‪IP‬‬
‫را نداشته باشد این بسته را دور میاندازد‪ .‬دستگاهی که این آدرس ‪ IP‬را داشته باشد یک‬
‫پاسخ ‪ ARP‬را با پاسخی نظیر این میفرستد‪" ،‬هی‪ ،‬دستگاهی فرستنده‪ ،‬من همانی هستم که‬
‫در جستجوی آن با آدرس ‪ IP‬بهقرار‪ YY.YY.YY.YY‬هستی‪.‬آدرس ‪ MAC‬من‬
‫‪ YY:YY:YY:YY:YY:YY‬است‪".‬‬
‫پس از آنکه این فرآیند تعیین کامل شود‪ ،‬دستگاهی ارسالکننده ‪ cache‬خود را با رابط‬
‫آدرس "‪ Mac‬به ‪ "IP‬این دستگاه به روز میکند‪ ،‬و میتواند فرستادن دادهها را آغاز نماید‪.‬‬

‫نکته‪ :‬شما میتوانید جدول ‪ ARP‬یک میزبان ‪ Windows‬را با تایپ کردن ‪ arp –a‬در یک‬
‫خط فرمان‪ 1‬ببینید‪.‬‬
‫دیدن این فرآیند در عمل به شما کمک خواهد کرد تا درک کنید که‪ ARP‬چگونه عمل‬
‫میکند‪ .‬اما پیش از آنکه به پارهای از مثالها نگاه کنیم‪ ،‬اجازه دهید سرآیند بستهی ‪ ARP‬را‬
‫مورد بررسی قرار دهیم‪.‬‬

‫سرآیند ‪ARP‬‬
‫همان طوری که در شکل ‪ 2-6‬نشان داده شده است‪ ،‬سرآیند ‪ ARP‬شامل فیلدهای زیر است‪:‬‬
‫‪( Hardware Type‬نوع سختافزار) – نوع الیهی ‪ 2‬استفاده شده است‪ .‬در بیشتر‬
‫موارد ‪( Ethernet‬نوع ‪.)I‬‬
‫‪( Protocol Type‬نوع پروتکل) – پروتکل الیهی باالتر که درخواست ‪ARP‬‬
‫برای آن مورد استفاده قرار گرفته است‪.‬‬
‫‪( Hardware Address Length‬طول آدرس سختافزار) – طول (بر حسب‬
‫بایت هشت بیتی‪/‬بایت) آدرس سختافزار مورد استفاده (‪ 6‬برای ‪.)Ethernet‬‬

‫‪1‬‬
‫‪command prompt‬‬
‫‪14۷‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫‪( Protocol Address Length‬طول آدرس پروتکل) ‪ -‬طول (بر حسب بایت‬
‫هشت بیتی‪/‬بایت) آدرس منطقی نوع پروتکل تصریح شده‪.‬‬
‫‪( Operation‬عملیات) – نقش بستهی ‪ :ARP‬بسته ‪ 1‬برای یک درخواست‪ ،‬بسته‬
‫‪ 2‬برای یک پاسخ‪.‬‬
‫‪ – Sender Hardware Address‬آدرس سختافزار فرستنده‪.‬‬
‫‪ – Sender Protocol Address‬آدرس پروتکل فرستنده‪.‬‬
‫‪ – Target Hardware Address‬آدرس سختافزار گیرندهی مورد نظر‬
‫(هدفگیری شده در درخواستهای ‪.)ARP‬‬
‫‪ – Target Protocol Address‬آدرس پروتکل الیهی باالتر دریافت کنندهی‬
‫مورد نظر‪.‬‬

‫شکل ‪ :2-6‬ساختار بستهی ‪ARP‬‬

‫اکنون ‪ arp_resolution.pcap‬را باز کنید تا این فرآیند تعیین را در عمل ببینید‪ .‬همچنان که‬
‫در این فرآیند جلو میرویم بر هر بسته بهطور جداگانه تمرکز خواهیم کرد‪.‬‬
‫‪148‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫بستهی ‪ :1‬درخواست ‪ARP‬‬


‫همان طوری که در شکل ‪ 3-6‬میبینید‪ ،‬نخستین بسته درخواست ‪ ARP‬است‪ .‬ما با بررسی‬
‫سرآیند ‪ Ethernet‬در بخش پنجرهی ‪ Packet Details‬برنامهی ‪ Wireshark‬میتوانیم تصدیق‬
‫کنیم که این بسته یک بستهی مخابرهی واقعی است‪ .‬آدرس مقصد این بسته ‪ff:ff:ff:ff:ff:ff‬‬
‫است ‪ .‬این آدرس مخابرهی ‪ Ethernet‬است‪ ،‬و هر چیزی که به آن فرستاده شود به همهی‬
‫دستگاهها در بخش شبکهی فعلی مخابره خواهد شد‪ .‬آدرس مبدأ این بسته در سرآیند‬
‫‪ Ethernet‬بهعنوان آدرس ‪ MAC‬ما فهرست شده است ‪ .‬با توجه به این ساختار‪ ،‬میتوانیم‬
‫تشخیص دهیم که این بهواقع یک درخواست ‪ ARP‬در یک شبکهی ‪ Ethernet‬است که از‬
‫‪MAC‬‬ ‫‪ IP‬استفاده میکند‪ .‬آدرس ‪ IP‬فرستنده ‪ 192.168.0.114‬و آدرس‬
‫‪ ، 00:16:ce:6e:8b:24‬و همچنین آدرس ‪ IP‬هدف ‪  192.168.0.1‬فهرست شدهاند‪.‬‬
‫آدرس ‪ MAC‬هدف – اطالعاتی که سعی میکنیم به دست آوریم – مجهول است‪ ،‬و بنابراین‬
‫‪ MAC‬هدف بهصورت ‪ 00:00:00:00:00:00‬فهرست شده است ‪.‬‬

‫شکل ‪ :3-6‬یک بستهی درخواست ‪ARP‬‬

‫‪149‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫بستهی ‪ :2‬پاسخ ‪ARP‬‬


‫با انتخاب بسته ‪ 2‬مشاهده میکنید‪ ،‬در پاسخ به درخواست اولیه (شکل ‪ 4-6‬را ببینید)‪ ،‬اکنون‬
‫سرآیند ‪ Ethernet‬دارای آدرس مقصدِ آدرس ‪ MAC‬مبدأ از بستهی نخست است‪ .‬سرآیند‬
‫‪ ARP‬شبیه سرآیند درخواست ‪ ARP‬است و تغییرات معدودی در آن وجود دارد‪:‬‬
‫‪ ‬کد عملیات‪ )opcode( 1‬بسته ‪ ،‬یک پاسخ را نشان میدهد و نه درخواست‪.‬‬
‫‪ ‬اطالعات آدرسدهی معکوس شده است – آدرس ‪ MAC‬و آدرس ‪ IP‬فرستنده‬
‫اکنون آدرس ‪ MAC‬و آدرس ‪ IP‬هدف هستند ‪.‬‬
‫‪ ‬از همه مهمتر‪ ،‬همهی اطالعات آماده است‪ ،‬و این یعنی ما اکنون آدرس ‪MAC‬‬
‫‪  00:13:46:0b:22:ba‬از میزبان ما در ‪ 192.168.01‬را داریم‪.‬‬

‫شکل ‪ :4-6‬یک بستهی پاسخ ‪ARP‬‬

‫‪ ARP‬بالعوض‬
‫در بسیاری از موارد‪ ،‬آدرس ‪ IP‬یک دستگاه میتواند تغییر کند‪ .‬زمانی که این اتفاق میافتد‪،‬‬
‫مسیردهیهای آدرس ‪ IP‬به ‪ MAC‬که میزبانها در شبکه در ‪ cache‬خود دارند بیاعتبار‬
‫خواهد بود‪ .‬برای پیشگیری از خطاهای ارتباطی به سبب این امر‪ ،‬یک بستهی ‪ ARP‬بالعوض‬

‫‪1‬‬
‫‪operation code‬‬
‫‪150‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫در شبکه مخابره میشود تا هر دستگاهی که آن را دریافت میکند مجبور شود تا ‪cache‬‬
‫خود را با مسیردهی جدید آدرس ‪ IP‬به ‪ MAC‬به روز نماید ‪ .‬یک ‪ APR‬بالعوض عمالً چیز‬
‫خوبیست (شکل ‪ 5-6‬را ببینید)‪.‬‬

‫شکل ‪ :5-6‬فرآیند ‪ ARP‬بالعوض‬

‫چند سناریوی مختلف میتوانند یک سناریوی بستهی ‪ ARP‬را ایجاد کنند‪ .‬یکی از شایعترین‬
‫آنها تغییر کردن یک آدرس ‪ IP‬است‪ .‬فایل ربایش ‪ arp_gartuitous.pcap‬را باز کنید و‬
‫این فرآیند را در عمل خواهید دید‪ .‬این فایل تنها حاوی یک بسته است (شکل ‪ 6-6‬را ببینید)‬
‫زیرا این تنها چیز دخیل در ‪ ARP‬بالعوض است‪ .‬با بررسی سرآیند ‪ ،Ethernet‬میتوانید ببینید‬
‫که این بسته بهعنوان یک ‪ broadcast‬فرستاده میشود‪ ،‬بهطوری که میزبانها در شبکه آن را‬
‫دریافت میکنند ‪ .‬سرآیند ‪ ARP‬شبیه یک درخواست ‪ ARP‬است‪ ،‬جز آنکه آدرس ‪IP‬‬
‫فرستنده ‪ ‬و آدرس ‪ IP‬هدف آن ‪ ‬یکی هستند‪.‬‬

‫‪151‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫شکل ‪ :6-6‬یک بستهی ‪ ARP‬بالعوض‬

‫این بسته وقتی توسط میزبانهای دیگر در شبکه دریافت شود سبب میشود تا جدولهای‬
‫‪ ARP‬با مجموعهی آدرس ‪ IP‬به ‪ MAC‬به روز شود‪ .‬از آنجایی که این بستهی ‪ ARP‬ناخواسته‬
‫است‪ ،‬ولی منجر به آن میشود که یک کاربر حافظهی پنهانِ ‪ ARP cache‬خود را به روز‬
‫نماید‪ ،‬به همین سبب این بسته بالعوض در نظر گرفته میشود‪.‬‬
‫در چند وضعیت مختلف متوجه بستههای ‪ ARP‬بالعوض خواهید شد‪ .‬همان طوری که ذکر‬
‫شد‪ ،‬تغییر دادن آدرس ‪ IP‬یک دستگاه یک بستهی ‪ ARP‬بالعوض را ایجاد خواهد کرد‪.‬‬
‫همچنین‪ ،‬ممکن است متوجه بستههای بالعوض در سیستمهایی شوید که از آنها برای‬
‫موازنهی بار ترافیک ورودی استفاده میکنند‪.‬‬

‫پروتکل اینترنت‬
‫مقصود اصلی پروتکلها در الیهی ‪ 3‬از مدل ‪ OSI‬آن است که ارتباط بین شبکهها را مقدور‬
‫نمایند‪ .‬همان طوری که دیدید‪ ،‬آدرسهای ‪ MAC‬برای ارتباطات در یک شبکهی منفرد‬
‫الیهی ‪ 2‬استفاده میشود‪ .‬بسیار شبیه به همین‪ ،‬الیهی ‪ 3‬مسئول آدرسها برای ارتباطات درون‬

‫‪152‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫شبکه است‪ .‬تعداد محدودی از پروتکلها میتوانند این کار را انجام دهند‪ ،‬اما رایجترین آنها‬
‫پروتکل اینترنت (‪ )IP‬است‪ .‬در اینجا‪ IP ،‬نسخهی ‪ )IPv4( 4‬را مورد بررسی قرار خواهیم داد‬
‫که در ‪ RFC 791‬تعریف شده است‪.‬‬
‫بهمنظور درک گسترهی کارکرد ‪ IPv4‬باید بدانید که ترافیک چگونه بین شبکهها جریان پیدا‬
‫میکند‪ IPv4 .‬اسب بارکش فرآیند ارتباطات است و در نهایت مسئول حمل دادهها بین‬
‫وسایل است‪ ،‬قطع نظر از اینکه نقاط انتهایی ارتباط در کجا واقع شده باشند‪.‬‬
‫یک شبکهی ساده که در آن همهی دستگاهها از طریق هابها یا سوئیچها به هم متصل شده‬
‫باشند شبکهی ناحیهی محلی (‪ )LAN‬نامیده میشود‪ .‬زمانی که میخواهید به ‪LAN‬ها با‬
‫یکدیگر متصل شوید‪ ،‬میتوانید این کار را توسط یک مسیریاب‪ 1‬انجام دهید‪ .‬شبکههای‬
‫پیچیده ممکن است از هزاران ‪ LAN‬متصل به هم از طریق هزاران مسیریاب در سطح جهان‬
‫تشکیل شده باشند‪ .‬خود اینترنت مجموعهای از میلیونها ‪ LAN‬و مسیریاب است‪.‬‬

‫آدرسهای ‪IP‬‬
‫آدرسهای ‪ IP‬آدرسهای ‪ 32‬بیتی هستند تا دستگاههای متصل به یک شبکه را بهطور منحصر‬
‫به فردی شناسایی کنند‪ .‬این قدری بسیار بیش از آن چیزیست که کسی انتظار داشته باشد که‬
‫یک توالی از یکها و صفرها را به خاطر بسپارد که طول آن ‪ 32‬بیت است؛ بنابراین‪،‬‬
‫آدرسهای ‪ IP‬بهصورت نشانگذاری چهارگانهی نقطهدار‪ 2‬نوشته میشوند‪.‬‬
‫در نشانگذاری چهارگانهی نقطهدار‪ ،‬هر یک از چهار مجموعه از یکها و صفرها که یک‬
‫آدرس ‪ IP‬را میسازند به پایه ‪ 10‬تبدیل میشود و بهصورت عددی بین ‪ 0‬و ‪ 225‬در قالب‬
‫‪ A.B.C.D‬نمایش داده میشود (شکل ‪ ۷-6‬را ببینید)‪ .‬برای مثال‪ ،‬آدرس ‪ IP‬بهقرار‬
‫‪ 11000000 10101000 00000000 00000001‬را در نظر بگیرید‪ .‬حفظ کردن و یا‬

‫‪1‬‬
‫‪router‬‬
‫‪2‬‬
‫‪dotted-quad notation‬‬
‫‪153‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫یادداشت این مقدار بهطور مسلم قدری دشوار است‪ .‬خوشبختانه‪ ،‬با استفاده از نشانگذاری‬
‫چهارگانهی نقطهدار میتوانیم آن را بهصورت ‪ 192.168.0.1‬نشان بدهیم‪.‬‬
‫آدرسهای ‪ IP‬به دلیلی به چهار بخش متمایز تقسیم میشوند‪ .‬یک آدرس ‪ IP‬از دو بخش‬
‫تشکیل شده است‪ :‬یک آدرس شبکه و یک آدرس میزبان ‪ .‬آدرس شبکه محدوده ‪ LAN‬را‬
‫شناسایی میکند که دستگاه به آن متصل است‪ ،‬و آدرس میزبان خود دستگاه را در آن شبکه‬
‫شناسایی میکند‪ .‬تعیین اینکه کدام بخش از آدرس ‪ IP‬به آدرس شبکه یا میزبان تعلق دارد‬
‫همیشه یک جور نیست‪ .‬این امر عمالً توسط مجموعهی دیگری از اطالعات آدرسدهی تعیین‬
‫میشود که ماسک شبکه (‪ )netmask‬نامیده میشود و گاهی به ماسک زیرشبکه نیز‬
‫میگویند‪.‬‬

‫شکل ‪ :۷-6‬نشانگذاری چهارگانهی آدرس ‪ IPv4‬نقطهدار‬

‫ماسک شبکه است که شناسایی میکند کدام بخش از آدرس ‪ IP‬به آدرس شبکه و کدام‬
‫بخش به آدرس میزبان تعلق دارد‪ .‬عدد ماسک شبکه نیز ‪ 32‬بیت طول دارد‪ ،‬و هر بیتی که ‪1‬‬
‫باشد بخش آدرس ‪ IP‬را شناسایی میکند که برای آدرس شبکه ذخیره شده است‪ .‬بقیهی‬
‫بیتها در صفر قرار داده میشوند و آدرس میزبان را شناسایی میکنند‪.‬‬
‫برای مثال‪ ،‬آدرس ‪ IP‬بهقرار ‪ 10.10.1.22‬را در نظر بگیرید که در دودویی بهصورت‬
‫‪ 00001010 00001010 00000001 00010110‬نمایش داده میشود‪ .‬برای تعیین تخصیص‬
‫‪154‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫هر بخش از آدرس ‪ IP‬میتوانیم ماسک شبکهی خود را اعمال کنیم‪ .‬در این مورد ماسک‬
‫شبکه ‪ 11111111 11111111 00000000 00000000‬است‪ .‬این یعنی آنکه نیمهی نخست‬
‫آدرس ‪ IP‬برای آدرس شبکه ذخیره شده است (‪ 10.10‬یا ‪ )00001010 00001010‬و نیمهی‬
‫دوم آدرس ‪ IP‬میزبان منفرد در این شبکه را شناسایی میکند (‪ .1.22‬یا ‪00000001‬‬
‫‪( )00010110‬همان طوری که در شکل ‪ 8-6‬نشان داده شده است)‪.‬‬

‫شکل ‪ :8-6‬ماسک شبکه تخصیص بیتها در یک آدرس ‪ IP‬را تعیین میکند‪.‬‬

‫ماسکهای شبکه همچنین میتوانند بهصورت نشانگذاری چهارگانهی نقطهدار نوشته شوند‪.‬‬
‫برای مثال‪ ،‬ماسک شبکهی ‪ 11111111.11111111.00000000.00000000‬بهصورت‬
‫‪ 255.255.0.0‬نوشته میشود‪.‬‬
‫آدرسهای ‪ IP‬و ماسکهای شبکه بهطور عادی برای مختصر نویسی بهصورت‬
‫نشانگذاری مسیریابی بین دامنهای بدون کالس‪ )CIDR( 1‬نوشته میشوند‪ .‬در این شکل‪،‬‬
‫یک آدرس ‪ IP‬بهطور کامل نوشته میشود‪ ،‬و به دنبال آن یک اسلش (‪ )/‬و تعداد بیتهایی‬
‫قرار میگیرد که معرف بخش شبکهی آدرس ‪ IP‬است‪ .‬برای مثال‪ ،‬یک آدرس ‪ IP‬بهقرار‬
‫‪ 10.10.1.22‬و ماسک شبکهی ‪ 255.255.0.0‬در ‪ CIDR‬بهصورت ‪ 10.10.1.22/16‬نوشته‬
‫میشود‪.‬‬

‫‪1‬‬
‫‪Classless Inter-Domain Routing (CIDR) notation‬‬
‫‪155‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫سرآیند ‪IPv4‬‬
‫آدرسهای ‪ IP‬مبدأ و مقصد مؤلفههای بسیار مهم سرآیند بستهی ‪ IPv4‬هستند‪ ،‬ولی این همهی‬
‫اطالعات ‪ IP‬نیست که در درون یک بسته پیدا خواهید کرد‪ .‬سرآیند ‪ IP‬عمالً در مقایسه با‬
‫بستهی ‪ ARP‬که مورد بررسی قرار دادیم پیچیده است‪ .‬این سرآیند شامل بسیاری از‬
‫کارکردهای دیگر است که به ‪ IP‬در انجام کارش کمک میکند‪.‬‬
‫همان طوری که در شکل ‪ 9-6‬نشان داده شده است‪ ،‬سرآیند ‪ IPv4‬دارای فیلدهای زیر است‪:‬‬
‫‪( Version‬نسخه) ‪ -‬نسخهی ‪ IP‬مورد استفاده‬
‫‪( Header Length‬طول سرآیند) ‪ -‬طول سرآیند ‪IP‬‬
‫‪( Type of Service‬نوع سرویس) ‪ -‬یک پرچم اولویت و پرچم نوع سرویس که‬
‫توسط مسیریابها بهمنظور اولویتبندی ترافیک مورد استفاده قرار میگیرند‪.‬‬
‫‪( Total Length‬طول کل) ‪ -‬طول سرآیند ‪ IP‬و دادههای لحاظ شده در بسته‪.‬‬
‫‪( Identification‬هویت) ‪ -‬یک شماره هویت منحصر به فرد برای شناسایی یک‬
‫بسته یا توالی بستههای چندپاره‪.‬‬
‫‪( Flags‬پرچمها) ‪ -‬برای شناسایی آن مورد استفاده قرار میگیرند که آیا یک بسته‬
‫بخشی از یک توالی از بستههای چندپاره است یا نه‪.‬‬
‫‪( Fragment Offset‬آفست قطعه) ‪ -‬اگر یک بسته در واقع یک قطعه باشد‪ ،‬آنگاه‬
‫مقدار این فیلد برای بازسازی بستهها در ترتیب صحیح مورد استفاده قرار میگیرد‪.‬‬
‫‪ – Time to Live‬عمر یک بسته را تعریف میکند و بر حسب گامها‪ /‬ثانیهها در‬
‫سرتاسر مسیریابها اندازهگیری میشود‪.‬‬
‫‪ -Protocol‬برای شناسایی نوع بستهای مورد استفاده قرار میگیرد که بعداً در توالی‬
‫بستهها میآید‪.‬‬

‫‪156‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫‪( Header Checksum‬سرآیند کنترلی) ‪ -‬یک ساز و کار کشف و آشکارسازی‬


‫خطا که برای تصدیق آن مورد استفاده قرار میگیرد که محتوای سرآیند ‪ IP‬آسیب‬
‫ندیده و یا تخریب نشده باشد‪.‬‬
‫‪( Source IP Address‬آدرس ‪ IP‬مبدأ) ‪ -‬آدرس ‪ IP‬میزبانی که بسته را‬
‫میفرستد‪.‬‬
‫‪ – Destination IP Address‬آدرس ‪ IP‬مقصد بسته‬
‫‪( Options‬گزینهها) ‪ -‬برای گزینههای بیشتر ‪ IP‬ذخیره شده است‪ .‬این فیلد شامل‬
‫گزینهها برای مسیریابی مبدأ و مهرهای زمانی است‪.‬‬
‫‪( Data‬دادهها) ‪ -‬دادههایی که عمالً با ‪ IP‬ارسال شدهاند‪.‬‬

‫شکل ‪ :9-6‬ساختار بستهی ‪IPv4‬‬

‫‪Time to Live‬‬
‫مقدار )‪ Time to Live (TTL‬یک دورهی زمانی را تعریف میکند که میتواند منقضی‬
‫شود‪ ،‬و یا حداکثر تعداد مسیریابهایی که یک بسته میتواند پیش از دور انداخته شدن‬
‫بپیماید‪ .‬یک ‪ TTL‬زمانی که یک بسته به وجود میآید تعریف میگردد‪ ،‬و عموماً هر بار که‬
‫بسته توسط یک مسیریاب به جلو فرستاده میشود ‪ 1‬واحد از مقدار آن کم میگردد‪ .‬برای‬
‫مثال‪ ،‬اگر یک بسته دارای ‪ TTL‬بهقرار ‪ 2‬باشد‪ ،‬نخستین مسیریابی که این بسته به آن میرسد‪،‬‬

‫‪15۷‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫مقدار ‪ TTL‬آن را به ‪ 1‬کاهش میدهد و آن را به مسیریاب دوم میفرستد‪ .‬آنگاه این مسیریاب‬
‫دوم مقدار ‪ TTL‬را به صفر کاهش میدهد و اگر مقصد نهایی بسته در آن شبکه نباشد‪ ،‬آن‬
‫بسته دور انداخته میشود (شکل ‪ 10-6‬را ببینید)‪ .‬از آنجایی که مقدار ‪ TTL‬به لحاظ فنی‬
‫مبتنی بر زمان است‪ ،‬بنابراین‪ ،‬یک مسیریاب خیلی مشغول ممکن است مقدار ‪ TTL‬را بیش از‬
‫‪ 1‬واحد کاهش دهد‪ ،‬ولی عموماً میتوان فرض کرد که یک دستگاهی مسیریاب مقدار ‪TTL‬‬
‫را در اغلب موارد تنها به میزان ‪ 1‬واحد کاهش خواهد داد‪.‬‬

‫شکل ‪ TTL :10-6‬بسته هر بار که از یک مسیریاب عبور میکند ‪ 1‬واحد کم میشود‪.‬‬

‫چرا مقدار ‪ TTL‬اهمیت دارد؟ بهطور معمول‪ ،‬ما تنها بر حسب زمانی نگران طول عمر یک‬
‫بسته هستیم که برای حرکت از مبدأ به مقصدش صرف میکند‪ .‬اما‪ ،‬بستهای را در نظر بگیرید‬
‫که باید از میان اینترنت به یک میزبان سفر کند و از میان چندین مسیریاب بگذرد‪ .‬در نقطهای‬
‫در مسیر این بسته‪ ،‬ممکن است با مسیریابی با پیکربندی غلط برخورد کند و مسیر به سمت‬
‫مقصد نهاییاش را گم کند‪ .‬در چنین موردی‪ ،‬مسیریاب میتواند چند کار انجام دهد‪ ،‬که‬
‫یکی از آنها میتواند منجر به آن گردد که بسته در یک چرخهی بیپایان در یک شبکه‬
‫بچرخد‪.‬‬

‫‪158‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫اگر سابقهای در برنامهنویسی داشته باشید‪ ،‬آنگاه میدانید چرخهای که هیچگاه پایان پیدا نکند‬
‫میتواند سبب انواع مسائل بشود‪ ،‬و بهطور معمول منجر به خرابی یک برنامه یا کل سیستم‬
‫عامل میگردد‪ .‬به لحاظ نظری همین امر میتواند در مورد بستهها در یک شبکه رخ دهد‪.‬‬
‫بستهها به چرخه زدن در بین مسیریابها ادامه خواهند داد‪ .‬همچنان که تعداد بستههای چرخه‬
‫زننده افزایش پیدا میکند‪ ،‬پهنای باند موجود در شبکه کاهش پیدا خواهد کرد تا آنکه یک‬
‫وضعیت ‪ DoS‬رخ دهد‪ .‬برای پیشگیری از بروز چنین مسئلهای‪ ،‬فیلد ‪ TTL‬از سرآیند ‪ IP‬به‬
‫وجود آمد‪.‬‬
‫بیایید در ‪ Wireshark‬نگاهی به یک مثال در این مورد بیندازیم‪ .‬فایل‬
‫‪ ip_ttl_source.pcap‬حاوی دو بستهی ‪ ICMP‬است (که بعداً در این فصل مورد بحث‬
‫قرار خواهد گرفت)که برای تحویل بستهها از ‪ IP‬استفاده میکند؛ همان طوری که میتوانیم‬
‫با بسط سرآیند ‪ IP‬در بخش پنجرهی ‪ Packet Details‬ببینیم (شکل ‪ 11-6‬را ببینید)‪.‬‬

‫شکل ‪ :11-6‬سرآیند ‪ IP‬بستهی مبدأ‬

‫‪159‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫میتوانید ببینید که نسخهی ‪ IP‬مورد استفاده نسخهی ‪ 4‬است ‪‬؛ طول سرآیند ‪ IP‬برابر با ‪20‬‬
‫بایت است ‪‬؛ کل طول سرآیند و ‪ 60 payload‬بایت است ‪‬؛ و مقدار فیلد ‪ TTL‬بهقرار‬
‫‪ 128‬است ‪.‬‬
‫مقصود اصلی از پینگِ (‪ ICMP )ping‬آزمودن ارتباط بین وسایل است‪ .‬دادهها در نتیجهی‬
‫یک درخواست از یک میزبان به میزبان دیگر فرستاده میشود‪ ،‬و میزبان دریافت کننده باید‬
‫آن دادهها را بهعنوان یک پاسخ برگرداند‪ .‬ما در این فایل یک دستگاه با آدرس ‪10.10.0.3‬‬
‫را داریم ‪ ‬که یک درخواست ‪ ICMP‬را به دستگاهی با آدرس ‪ 192.168.0.128‬میفرستد‬
‫‪ .‬این فایل ربایش اولیه در میزبان مبدأ به آدرس ‪ 10.10.0.3‬به وجود آمد‪.‬‬
‫اکنون فایل ‪ ip_ttl_dest.pcap‬را باز کنید‪ .‬دراین فایل‪ ،‬دادهها در میزبان مقصد به آدرس‬
‫‪ 192.168.0.128‬ربایش شدهاند‪ .‬سرآیند ‪ IP‬نخستین بسته در این ربایش را باز کنید تا مقدار‬
‫‪ TTL‬آن را بررسی نمایید (شکل ‪.)12-6‬‬

‫شکل ‪ :12-6‬سرآیند ‪ IP‬به ما میگوید که ‪ TTL‬به مقدار ‪ 1‬واحد کاهش پیدا کرده است‬

‫‪160‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫باید بالفاصله متوجه شوید که مقدار ‪ TTL‬بهقرار ‪ 12۷‬است ‪‬؛ یعنی یکی کمتر از ‪TTL‬‬
‫اولیهی ‪ 128‬تایی‪ .‬حتی بدون دانستن معماری شبکه میتوانیم نتیجهگیری کنیم که مسیر از‬
‫میان آن مسیریاب مقدار ‪ TTL‬را به میزان یک واحد کاهش داده است‪.‬‬

‫چندتکه کردن ‪IP‬‬


‫چندتکه کردن بسته یکی از ویژگیهای ‪ IP‬است که تحویل قابل اطمینان دادهها را در میان‬
‫انواع مختلفی از شبکهها مقدور مینماید و این کار را با تقسیم کردن یک جریان داده به‬
‫قطعات کوچکتر انجام میدهد‪.‬‬
‫چندتکه کردن یک بسته بر اندازهی حداکثر واحد انتقال‪ )MTU( 1‬پروتکل پیوند دادهی‬
‫الیهی ‪ 2‬مورد استفاده و پیکربندی دستگاهها استوار است که از این پروتکلهای الیهی ‪2‬‬
‫استفاده میکنند‪ .‬در اغلب موارد‪ ،‬پروتکل پیوند دادههای الیهی ‪ 2‬مورد استفاده ‪Ethernet‬‬
‫است‪ Ethernet .‬دارای ‪ MTU‬پیشفرض بهقرار ‪ 1500‬است که یعنی حداکثر اندازهی بسته‬
‫که میتواند در یک شبکهی ‪ Ethernet‬منتقل شود ‪ 1500‬بایت است (شامل خود ‪ 14‬بایت‬
‫سرآیند ‪ Ethernet‬نمیشود)‪.‬‬

‫نکته‪ :‬اگرچه تنظیمات استاندارد ‪ MTU‬وجود دارد‪ ،‬ولی در اغلب موارد میتوان ‪ MTU‬یک‬
‫دستگاه را بهطور دستی پیکربندی کرد‪.‬‬
‫یک تنظیم ‪ MTU‬بر یک اساس ‪ per-interface‬مقرر شده است و میتواند در سیستمهای‬
‫‪ Windows‬و ‪ Linux‬و همچنین در واسطهای مسیریابهای مدیریت شده اصالح بشود‪.‬‬
‫زمانی که دستگاهی آماده میشود تا یک بستهی ‪ IP‬را ارسال کند‪ ،‬تعیین میکند که آیا باید‬
‫بستهها با مقایسه شدن اندازهی دادههای بسته با ‪ MTU‬واسط شبکه – که این بسته از آن ارسال‬
‫خواهد شد – چندپاره شوند یا نه‪ .‬اگر اندازهی دادهها بزرگتر از ‪ MTU‬باشد‪ ،‬آنگاه این‬
‫بسته چندپاره خواهد شد‪ .‬چندپاره کردن یک بسته شامل مراحل زیر است‪:‬‬

‫‪1‬‬
‫)‪maximum transmission unit (MTU‬‬
‫‪161‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫‪ .1‬دستگاه دادهها را به تعداد بستههای الزم بهمنظور ارسال موفقیتآمیز دادهها تقسیم‬
‫میکند‪.‬‬
‫‪ .2‬فیلد ‪ Total Length‬هر سرآیند ‪ IP‬در اندازهی بخش هر قطعه تنظیم میشود‪.‬‬
‫‪ .3‬پرچم ‪ More Fragments‬در همهی بستهها در جریان دادهها روی ‪ 1‬قرار داده‬
‫میشود‪ ،‬جز آخرین بسته‪.‬‬
‫‪ .4‬فیلد ‪ Fragment Offset‬در سرآیند ‪ IP‬قطعهها تنظیم میشود‪.‬‬
‫‪ .5‬بستهها ارسال میشوند‪.‬‬

‫فایل ‪ ip_frag_source.pcap‬از کامپیوتری با آدرس ‪ 10.10.0.3‬گرفته شده است که‬


‫یک درخواست پینگ را به دستگاهی با آدرس ‪ 192.168.0.128‬میفرستد‪ .‬توجه کنید که‬
‫ستون ‪ Info‬بخش پنجرهی ‪ Packet List‬دو بستهی ‪ IP‬چندپاره شده را فهرست میکند که به‬
‫دنبال آن درخواست ‪( ICMP‬پینگ) آمده است‪ .‬با بررسی سرآیند ‪ IP‬بستهی ‪ 1‬شروع میکنیم‬
‫(شکل ‪.)13-6‬‬
‫میتوانید ببینید که این بسته بخشی از یک قطعهی مبتنی بر فیلدهای ‪ More Fragments‬و‬
‫‪ Fragment Offset‬است‪ .‬بستههایی که قطعه هستند یا دارای مقدار ‪ Fragment Offset‬مثبت‬
‫هستند و یا پرچم ‪ More Fragments‬خواهند داشت ‪ ‬که نشان میدهد دستگاهی گیرنده‬
‫باید دریافت بستهی دیگری در این توالی را انتظار داشته باشد‪ Fragment Offset .‬در ‪ 0‬قرار‬
‫داده شده است ‪ ‬که نشان میدهد این بسته نخستین بسته در سری قطعهها است‪.‬‬

‫سرآیند ‪ IP‬دومین بسته (شکل ‪ )14-6‬نیز دارای پرچم ‪ More Fragments‬است ‪ ،‬اما در‬
‫این مورد‪ ،‬مقدار ‪ Fragment Offset‬بهقرار ‪ 1480‬است ‪ .‬این یک ‪ MTU‬بهقرار ‪1500‬‬
‫بایت منهای ‪ 20‬بایت برای سرآیند ‪ IP‬را نشان میدهد‪.‬‬

‫‪162‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫شکل ‪ :13-6‬مقادیر ‪ More Fragments‬و ‪ Fragment Offset‬میتوانند یک بستهی چندتکه‬


‫شده را نشان دهند‪.‬‬

‫شکل ‪ :14-6‬مقدار ‪ Fragment Offset‬بر اساس اندازهی بستهها افزایش پیدا میکند‪.‬‬

‫‪163‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫سومین بسته (شکل ‪ )15-6‬دارای پرچم ‪ More Fragments‬نیست ‪ ‬که یعنی این آخرین‬
‫قطعه در جریان دادهها است و ‪ Fragment Offset‬در ‪ 2960‬قرار داده شده ‪ ‬که حاصل‬
‫(‪ 1480 + )1500-20‬است‪ .‬این قطعهها را همگی میتوان بهعنوان بخشی از یک سری از‬
‫دادهها شناسایی کرد‪ ،‬زیرا آنها در فیلد ‪ Identifacation‬از سرآیند ‪ IP‬دارای مقدار یکسانی‬
‫هستند ‪.‬‬

‫شکل ‪ More Fragments :15-6‬تعیین نشده‪ ،‬که نشان دهندهی آخرین قطعه است‪.‬‬

‫پروتکل کنترل انتقال‬


‫هدف نهایی پروتکل کنترل انتقال‪ )TCP( 1‬فراهم کردن اطمینانپذیری انتها به انتها برای‬
‫تحویل دادهها است‪ – TCP .‬که در ‪ RFC793‬تعریف شده است – در الیهی ‪ 4‬از مدل ‪OSI‬‬
‫عمل میکند‪ .‬این پروتکل ترتیبدهی دادهها و ترمیم خطا را اداره میکند و در نهایت اطمینان‬

‫‪1‬‬
‫)‪Transmission Control Protocol (TCP‬‬
‫‪164‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫حاصل میکند که دادهها بهجایی رسیدهاند که قرار بوده بروند‪ .‬بسیاری از پروتکلهای الیهی‬
‫برنامه کاربردی که عموماً مورد استفاده قرار میگیرند برای ارائهی بستهها به مقصد نهاییشان‬
‫به ‪ TCP‬و ‪ IP‬اتکا میکنند‪.‬‬
‫سرآیند ‪TCP‬‬
‫‪ TCP‬گسترهی کارکرد بسیاری را فراهم مینماید و این در پیچیدگی سرآیند آن منعکس‬
‫شده است‪ .‬همان طوری که در شکل ‪ 16-6‬نشان داده شده است‪ ،‬فیلدهای سرایند ‪ TCP‬بهقرار‬
‫زیر است‪:‬‬
‫‪ -Source Port‬پورت مورد استفاده برای انتقال بسته‪.‬‬
‫‪ -Destination Port‬پورتی که بسته به آن ارسال خواهد شد‪.‬‬
‫‪ - Sequence Number‬شمارهی مورد استفاده برای شناسایی یک بخش ‪.TCP‬‬
‫این فیلد برای اطمینان حاصل کردن از این امر مورد استفاده قرار میگیرد که‬
‫بخشهای جریان دادهها گم نشوند‪.‬‬
‫‪ - Acknowledgment Number‬شماره ترتیبی که در بستهی بعدی از دستگاهی‬
‫دیگری انتظار میرود که در ارتباطات نقشی دارد‪.‬‬
‫‪ – Flags‬پرچمهای ‪ ،SYN ،RST ،PSH ،ACK ،URG‬و ‪ FIN‬برای شناسایی نوع‬
‫بستهی ‪ TCP‬مورد ارسال‪.‬‬
‫‪ -Window Size‬اندازهی بافر گیرندهی ‪ TCP‬بر حسب بایت‪.‬‬
‫‪ -Checksum‬برای اطمینان حاصل کردن از این امر مورد استفاده قرار میگیرد‬
‫که محتوای سرآیند ‪ TCP‬و دادهها تا زمان ورود سالم و دست نخورده است‪.‬‬
‫‪ -Urgent Pointer‬اگر پرچم ‪ URG‬برقرار شده باشد‪ ،‬آنگاه این فیلد برای‬
‫دستورالعملهای بیشتر مورد بررسی قرار خواهد گرفت مبنی بر آنکه ‪ CPU‬باید‬
‫خواندن دادههای درون بسته را از کجا آغاز نماید‪.‬‬

‫‪165‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫‪ -Options‬فیلدهای گزینهای مختلفی که آنها را میتوان در یک بستهی ‪TCP‬‬


‫مشخص و تصریح کرد‪.‬‬

‫شکل ‪ :16-6‬سرآیند ‪TCP‬‬

‫پورتهای ‪TCP‬‬
‫کل ارتباط ‪ TCP‬با استفاده از پورتهای مبدأ و مقصد انجام میشود که آنها را میتوان در‬
‫هر سرآیند ‪ TCP‬پیدا کرد‪ .‬یک پورت مانند یک مادگی سوکت یک جعبهی سوئیچ تلفن‬
‫قدیمی است‪ .‬اپراتور جعبه سوئیچ تلفن یک صفحه از چراغها و فیشهای اتصال را کنترل‬
‫میکند‪ .‬زمانی که چراغی روشن میشود‪ ،‬او با تماس گیرنده ارتباط برقرار میکند و میپرسد‬
‫که با چه کسی میخواهد حرف بزند‪ ،‬و سپس با متصل کردن وی از طریق کابل به مقصد‬
‫وصل مینماید‪ .‬هر تماسی به داشتن یک پورت مبدأ (تماس گیرنده) و یک پورت مقصد‬
‫(گیرنده) نیاز دارد‪ .‬پورتهای ‪ TCP‬به همین صورت عمل میکنند‪.‬‬
‫یک بستهی ‪ TCP‬بهمنظور انتقال دادهها به یک برنامه کاربردی بخصوص در یک سرور یا‬
‫دستگاهی دور باید پورت سرویس دوری را بداند که به آن توجه دارد‪ .‬اگر سعی کنید تا به‬
‫یک برنامه کاربردی در پورتی غیر از پورت پیکربندی شده برای استفاده دسترسی پیدا کنید‪،‬‬
‫آنگاه ارتباط عمل نخواهد کرد‪.‬‬
‫پورت مبدأ در این توالی خیلی مهم نیست و میتواند بهطور تصادفی انتخاب شود‪ .‬سرور دور‬
‫صرفاً پورت را برای ارتباط که بستهی اولیه برای آن فرستاده شده است‪ ،‬تعیین میکند‪.‬‬

‫‪166‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫شکل ‪ TCP :1۷-6‬از پورتها برای انتقال دادهها استفاده میکند‪.‬‬

‫در هنگام ارتباط برقرار کردن با ‪ TCP‬تعداد ‪ 65353‬پورت موجود است‪ .‬ما نوعاً آنها را به‬
‫دو گروه طبقهبندی میکنیم‪:‬‬
‫‪ ‬گروه پورت استاندارد از ‪ 1‬تا ‪ 1023‬است (‪ 0‬را نادیده میگیریم‪ ،‬زیرا خاموش است)‪.‬‬
‫سرویسهای بخصوص از پورتهای استاندارد استفاده میکنند که عموماً در دامنهی‬
‫گروهبندی پورت استاندارد قرار میگیرند‪.‬‬
‫‪ ‬گروه پورت موقت از ‪ 1024‬تا ‪ 65535‬است (اگرچه بعضی از سیستمهای عامل دارای‬
‫تعاریف متفاوتی از این هستند)‪ .‬تنها یک سرویس در هر زمان مفروض میتواند از‬
‫یک پورت مخابره شود‪ ،‬و بنابراین‪ ،‬سیستمهای عامل پیشرفته در تالش برای منحصر‬
‫به فرد کردن ارتباط‪ ،‬پورتهای مبدأ را بهطور تصادفی انتخاب میکنند‪ .‬این‬
‫پورتهای مبدأ بهطور معمول در دامنهی پورتهای موقت قرار میگیرند‪.‬‬
‫اجازه دهید تا چند بستهی ‪ TCP‬مختلف را مورد بررسی قرار دهیم و با باز کردن‬
‫‪ tcp_port.pcap‬تعداد پورتی را شناسایی کنیم که مورد استفاده قرار میدهند‪ .‬در این فیلد‬

‫‪16۷‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫ارتباط ‪ HTTP‬یک کاربر را داریم که در حال جستجو در دو وبسایت است‪ .‬همان طوری‬
‫که پیشتر ذکر شد‪ HTTP ،‬برای ارتباط از ‪ TCP‬استفاده میکند و این امر آن را به مثالی عالی‬
‫برای ترافیک استاندارد ‪ TCP‬تبدیل مینماید‪.‬‬
‫در نخستین بستهی این فیلد (شکل ‪ 18-6‬را ببینید) دو مقدار نخست معرف پورت مبدأ و‬
‫پورت مقصد بسته هستند‪ .‬این بسته از ‪ 172.16.16.128‬به ‪ 212.58.226.142‬فرستاده شده‬
‫است‪ .‬پورت مبدأ ‪ 2826‬است ‪ ‬که یک پورت موقت است (به خاطر داشته باشید که‬
‫پورتهای مبدأ توسط سیستم عامل بهطور تصادفی انتخاب شدهاند‪ ،‬هرچند آنها میتوانند‬
‫از آن انتخاب تصادفی افزایش پیدا کنند‪ ).‬پورت مقصد یک پورت استاندارد است – پورت‬
‫‪  80‬پورت استاندارد استفاده شده برای سرویسهای وب است که از ‪ HTTP‬استفاده‬
‫میکند‪.‬‬

‫شکل ‪ :18-6‬پورتهای مبدأ و مقصد را میتوان در سرآیند ‪ TCP‬پیدا کرد‬

‫توجه داشته باشید که ‪ Wireshark‬این پورتها را بهصورت )‪ slc-systemlog (2826‬و ‪http‬‬


‫(‪ )80‬برچسب میزند‪ .‬برنامهی ‪ Wireshark‬فهرستی از پورتها و رایجترین موارد استفادهی‬
‫آنها را برقرار میکند‪ .‬اگرچه اینها عمدتاً پورتهای استاندارد هستند‪ ،‬ولی بسیاری از‬
‫‪168‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫پورتهای موقت عموماً از سرویسهای مرتبط به آنها استفاده کردهاند‪ .‬برچسب زدن این‬
‫پورتها میتواند بسیار گیج کننده باشد؛ بنابراین‪ ،‬بهطور معمول بهترین کار آن است که با‬
‫خاموش کردن تفکیک نام نقل و انتقال آن را غیر فعال کرد‪ .‬برای انجام این کار ► ‪Edit‬‬
‫‪ Preferences ► Name Resolution‬را انتخاب کنید و سپس تیک کنار ‪Enable‬‬
‫‪ Transport Name Resolution‬را بردارید‪ .‬اگر میخواهید که این کارکرد فعال باقی بماند‪،‬‬
‫ولی میخواهید چگونگی تشخیص یک پورت بخصوص توسط ‪ Wireshark‬را تغییر دهید‪،‬‬
‫میتوانید این کار را با اصالح و تغییر فایل ‪ Services‬در دایرکتوری برنامهی ‪Wireshark‬‬
‫انجام دهید که بر فهرست پورت نهاد )‪Internet Assigned Numbers Authority (IANA‬‬
‫استوار است‪.‬‬
‫بستهی دوم از ‪ 212.58.226.142‬به ‪ 172.16.16.128‬برگردانده شده است (شکل ‪ 19-6‬را‬
‫ببینید)‪ .‬همانند آدرسهای ‪ ،IP‬پورتهای مبدأ و مقصد نیز اکنون عوض شدهاند ‪.‬‬

‫شکل ‪ :19-6‬اعداد پورت مبدأ و مقصد برای ارتباط معکوس تعویض شدهاند‪.‬‬

‫‪169‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫کل ارتباط مبتنی بر ‪ TCP‬به طریقی مشابه عمل میکند‪ :‬یک پورت مبدأ تصادفی برای ارتباط‬
‫با یک پورت مقصد معلوم انتخاب میشود‪ .‬به محض آنکه این بستهی اولیه ارسال میشود‪،‬‬
‫دستگاهی راه دور با استفاده از پورتهای برقرار شده با دستگاهی مبدأ ارتباط برقرار میکند‪.‬‬
‫در این فایل ربایش نمونه یک جریان ارتباط دیگر نیز لحاظ شده است‪ .‬ببینید که آیا میتوانید‬
‫شمارههای پورتی که برای ارتباط استفاده میکند را پیدا کنید یا نه‪.‬‬

‫نکته‪ :‬همچنان که در این کتاب بهپیش میرویم‪ ،‬دربارهی پورتهای مرتبط با پروتکلها و‬
‫سرویسهای رایج بیشتر خواهید آموخت‪ .‬سرانجام قادر خواهید شد تا سرویسها و دستگاهها‬
‫را با پورتهایی که استفاده میکنند ارائه و تعریف کنید‪ .‬برای فهرست کاملی از پورتهای‬
‫عمومی به ‪ http://www.iana.org/assignments/port-numbers/‬مراجعه نمایید‪.‬‬
‫دستدهی سهطرفهی ‪TCP‬‬
‫کل ارتباط مبتنی بر ‪ TCP‬باید با دستدهی بین دو میزبان آغاز شود‪ .‬این فرآیند دستدهی‬
‫به چند مقصود انجام میشود‪:‬‬
‫‪ ‬این کار میزبان ارسالکننده را مقدور مینماید تا اطمینان حاصل کند که میزبان‬
‫مقصد روشن است و میتواند ارتباط برقرار نماید‪.‬‬
‫‪ ‬این کار میزبان ارسالکننده را قادر میسازد تا کنترل کند که به پورتی توجه دارد‬
‫که مبدأ تالش میکند از آن ارتباط برقرار نماید‪.‬‬
‫‪ ‬این کار میزبان ارسالکننده را قادر میسازد تا شماره ترتیب آغاز کنندهی آن را به‬
‫دریافت کننده بفرستد‪ ،‬بهطوری که هر دو میزبان میتوانند جریان بستهها را در ترتیب‬
‫صحیح حفظ نمایند‪.‬‬

‫همان طوری که در شکل ‪ 20-6‬نشان داده شده است‪ ،‬دستدهی ‪ TCP‬در سه مرحلهی‬
‫جداگانه رخ میدهد‪ .‬در مرحلهی نخست‪ ،‬دستگاهی که میخواهد ارتباط برقرار نماید‬

‫‪1۷0‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫(میزبان ‪ )A‬یک بستهی ‪ TCP‬را به هدفش (میزبان ‪ )B‬میفرستد‪ .‬این بستهی اولیه حاوی هیچ‬
‫دادهای نیست‪ ،‬جز سرآیندهای پروتکل الیهی پایینتر‪ .‬سرآیند ‪ TCP‬در این بسته دارای پرچم‬
‫‪ SYN‬است و شماره ترتیب اولیه و حداکثر اندازهی سگمنت‪ )MSS( 1‬است که برای فرآیند‬
‫ارتباط مورد استفاده قرار خواهند گرفت‪ .‬میزبان ‪ B‬با فرستادن یک بستهی مشابه با پرچمهای‬
‫‪ SYN‬و ‪ ،ACK‬همراه با شماره ترتیب اولیهاش به این بسته پاسخ میدهد‪ .‬در آخر‪ ،‬میزبان ‪A‬‬
‫آخرین بسته را تنها با پرچم ‪ ACK‬به میزبان ‪ B‬میفرستد‪ .‬به محض تکمیل این فرآیند‪ ،‬هر‬
‫دو دستگاه باید همهی اطالعات الزم برای ارتباط برقرار کردن بهطور صحیح را داشته باشند‪.‬‬

‫شکل ‪ :20-6‬دستدهی سه طرفهی ‪TCP‬‬

‫نکته‪ :‬اغلب به بستههای ‪ TCP‬به پرچمهایی ارجاع میشود که ارتباط برقرار کردهاند‪ .‬برای‬
‫مثال‪ ،‬بهجای آنکه به بستهای با عنوان یک بستهی ‪ TCP‬با پرچم ‪ SYN‬نامیده شود‪ ،‬ما آن را‬
‫یک بستهی ‪ SYN‬مینامیم‪ .‬در نتیجه‪ ،‬به بستههای استفاده شده در فرآیند دستدهی ‪ TCP‬با‬
‫عنوان ‪ ،SYN/ACK ،SYN‬و ‪ ACK‬اشاره میشود‪.‬‬

‫برای دیدن این فرآیند در عمل‪ tcp_handshake.pcap ،‬را باز کنید‪ .‬برنامهی ‪Wireshark‬‬
‫دارای یک ویژگی است که اعدادی نسبی را برای تحلیل سادهتر جایگزین شماره ترتیبهای‬
‫بستههای ‪ TCP‬میکند‪ .‬برای مقاصد ما‪ ،‬ما این ویژگی را غیر فعال خواهیم کرد تا شماره‬

‫‪1‬‬
‫)‪maximum segment size (MSS‬‬
‫‪1۷1‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫ترتیبهای واقعی را ببینیم‪ .‬بهمنظور غیرفعال کردن این ویژگی‪ Edit ► Preference ،‬را‬
‫انتخاب کنید‪ ،‬عنوان ‪ Protocols‬را کلیک کنید‪ ،‬و ‪ TCP‬را انتخاب نمایید‪ .‬در این پنجره‪،‬‬
‫تیک جعبهی کنار ‪ Relative Sequence Numbers‬را بردارید‪ ،‬و سپس بر روی ‪ OK‬کلیک‬
‫کنید‪.‬‬
‫نخستین بسته در این ربایش بستهی آغازگر ‪ SYN‬ما را نشان میدهد (شکل ‪ 21-6‬را ببینید)‪.‬‬
‫این بسته از ‪ 172.16.16.128‬از پورت ‪ 2826‬به ‪ 212.58.226.142‬به پورت ‪ 80‬منتقل شده‬
‫است‪ .‬در اینجا میتوانیم ببینیم که شماره ترتیب مخابره شده ‪ 369112۷924‬است ‪.‬‬

‫آغازگر ‪SYN‬‬ ‫شکل ‪ :21-6‬بستهی‬

‫دومین بسته در دستدهی پاسخ ‪ SYN/ACK‬از ‪ 212.58.226.142‬است (شکل ‪ 22-6‬را‬


‫ببینید)‪ .‬این بسته نیز حاوی شماره ترتیب آغازگر میزبان (‪  )233۷۷9340‬و یک شمارهی‬
‫اعالم وصول (‪  )369112۷925‬است‪ .‬شمارهی اعالم وصولِ نشان داده شده در اینجا یکی‬

‫‪1۷2‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫بیشتر از شماره ترتیب لحاظ شده در بستهی قبلی است‪ ،‬زیرا این فیلد برای مشخص کردن‬
‫شماره ترتیب بعدی مورد استفاده قرار میگیرد که میزبان انتظار دریافت آن را دارد‪.‬‬

‫شکل ‪ :22-6‬پاسخ ‪SYN/ACK‬‬

‫بستهی آخر‪ ،‬بستهی ‪ ACK‬فرستاده شده از ‪ 172.16.16.128‬است (شکل ‪ 23-6‬را ببینید)‪.‬‬


‫این بسته – همان طوری که انتظار میرود – حاوی شماره ترتیب ‪ 369112۷925‬است‪،‬‬
‫چنان که در فیلد شمارهی اعالم وصول بستهی قبلی تعریف شده بود‪.‬‬

‫‪1۷3‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫شکل ‪ ACK :23-6‬آخر‬

‫یک دستدهی پیش از هر توالی ارتباط ‪ TCP‬رخ میدهد‪ .‬به هنگام جور کردن و ترتیب‬
‫دادن از طریق یک فایل ربایش در جستجو برای آغاز توالی ارتباط‪ ،‬توالی ‪SYN-‬‬
‫‪ SYN/ACK-ACK‬یک نشانگر عالی است‪.‬‬

‫پایانکار ‪TCP‬‬
‫‪1‬‬
‫هر سالمی در آخر یک خداحافظی دارد‪ ،‬و در مورد ‪ ،TCP‬هر دستدهی یک پایان کار‬
‫دارد‪ .‬پایان کار ‪ TCP‬برای پایان مطبوع یک ارتباط بین دو دستگاه پس از اتمام ارتباطشان‬
‫مورد استفاده قرار میگیرد‪ .‬این فرآیند شامل چهار بسته است و برای مشخص کردن پایان‬
‫یک ارتباط از پرچم ‪ FIN‬بهره میگیرد‪.‬‬

‫‪1‬‬
‫‪teardown‬‬
‫‪1۷4‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫در یک توالی تفکیک‪ ،‬میزبان ‪ A‬با فرستادن یک بستهی ‪ TCP‬با پرچمهای ‪ FIN‬و ‪ ACK‬به‬
‫میزبان ‪ B‬میگوید که ارتباط را به پایان رسانده است‪ .‬میزبان ‪ B‬با یک بستهی ‪ ACK‬پاسخ‬
‫میدهد و بستهی ‪ FIN/ACK‬خود را ارسال مینماید‪ .‬میزبان ‪ A‬با یک بستهی ‪ ACK‬پاسخ‬
‫میدهد‪ ،‬و فرآیند ارتباط را تمام میکند‪ .‬این فرآیند در شکل ‪ 24-6‬نمایش داده شده است‪.‬‬

‫شکل ‪ :24-6‬فرآیند تفکیک ‪TCP‬‬

‫برای دیدن این فرآیند در ‪ ،Wireshark‬فایل ‪ tcp_teardown.pcap‬را باز کنید‪ .‬با‬


‫نخستین بسته در توالی آغاز میکنیم (شکل ‪ 25-6‬را ببینید)؛ میتوانید ببینید که دستگاه در‬
‫‪ 67.228.110.120‬توالی تفکیک را با فرستادن بستهای با پرچمهای ‪ FIN‬و ‪ ACK‬آغاز‬
‫میکند ‪ .‬به محض آنکه این بسته فرستاده میشود‪ 172.16.16.128 ،‬با یک بستهی ‪ACK‬‬
‫پاسخ میدهد تا دریافت نخستین بسته را تأیید کند‪ ،‬و یک بستهی ‪ FIN/ACK‬را میفرستد‪.‬‬
‫این فرآیند زمانی تمام میشود که ‪ 67.228.110.120‬بستهی ‪ ACK‬نهایی را بفرستد‪ .‬در این‬
‫مرحله‪ ،‬ارتباط بین این دو دستگاه پایان پیدا میکند‪ ،‬و آنها برای ارتباط دوباره باید یک‬
‫دستدهی ‪TCP‬دیگر را تکمیل نمایند‪.‬‬

‫‪1۷5‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫شکل ‪ FIN/ACK :25-6‬فرآیند تفکیک را آغاز میکنند‪.‬‬

‫بازنشانیهای ‪TCP‬‬
‫در یک دنیای ایدهآل‪ ،‬هر ارتباطی با یک پایانکار ‪ TCP‬بهطور مطبوع پایان پیدا میکند‪ .‬در‬
‫واقعیت‪ ،‬اتصالها اغلب بهطور ناگهانی پایان مییابند‪ .‬برای مثال‪ ،‬این امر میتواند به سبب‬
‫یک حملهکنندهی بالقوه باشد که در حال اجرای یک اسکن پورت است و یا صرفاً ممکن‬
‫است به سبب یک میزبان با پیکربندی غلط رخ دهد‪ .‬در این موارد‪ ،‬یک بستهی ‪ TCP‬با‬
‫پرچم ‪ RST‬مورد استفاده قرار میگیرد‪ .‬پرچم ‪ RST‬برای نشان دادن بسته شدن ناگهانی‬
‫اتصال یا امتناع از تالش یک ارتباط مورد استفاده قرار میگیرد‪.‬‬
‫فایل ‪ tcp_refuseconnection.pcap‬نمونهای از ترافیک شبکه را نشان میدهد که شامل یک‬
‫بستهی ‪ RST‬است‪ .‬نخستین بسته در این فایل از میزبان ‪ 192.168.100.138‬است که تالش‬
‫میکند با ‪ 192.168.100.1‬در پورت ‪ 80‬ارتباط برقرار نماید‪ .‬آنچه که این میزبان نمیداند‬
‫آن است که ‪ 192.168.100.1‬به پورت ‪ 80‬توجه ندارد‪ ،‬زیرا یک مسیریاب ‪ Cisco‬است که‬

‫‪1۷6‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫هیچ واسط وب برای آن پیکربندی نشده است‪ ،‬و این یعنی هیچ سرویسی برای ارتباط در‬
‫پورت ‪ 80‬توجهی ندارد‪ 192.168.100.1 .‬در پاسخ به این ارتباطِ تالش شده یک بسته را به‬
‫‪ 192.168.100.138‬میفرستند که به آن میگوید ارتباط از طریق پورت ‪ 80‬امکانپذیر‬
‫نیست‪ .‬شکل ‪ 26-2‬پایان ناگهانی برای این ارتباطِ تالش شده را در سرآیند ‪ TCP‬دومین بسته‬
‫نشان میدهد‪ .‬بستهی ‪ RST‬حاوی چیزی غیر از پرچمهای ‪ RST‬و ‪ ACK‬نیست ‪ ،‬و هیچ‬
‫ارتباط دیگری جریان ندارد‪.‬‬

‫شکل ‪ :26-6‬پرچمهای ‪ RST‬و ‪ ACK‬که پایان ارتباط را مشخص میکنند‪.‬‬

‫یک بستهی ‪ RST‬ارتباط را پایان میدهد؛ خواه در آغاز یک توالی ارتباطِ تالش شده باشد‬
‫– مانند این مثال – یا خواه در میانهی ارتباط بین میزبانها باشد‪.‬‬

‫‪1۷۷‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫پروتکل دادهنگار کاربر‬


‫پروتکل دادهنگار کاربر‪ )UDP( 1‬یک پروتکل دیگر الیهی ‪ 4‬است که عموماً در شبکههای‬
‫پیشرفته مورد استفاده قرار میگیرد‪ .‬درحالیکه ‪ TCP‬برای تحویل اطمینانپذیر دادهها با‬
‫بررسی خطای سرخود طراحی شده است‪ ،‬اما هدف ‪ UDP‬فراهم کردن انتقال سریع است‪ .‬به‬
‫همین دلیل‪ UDP ،‬یک سرویسِ بهترین تالش (‪ )best effort‬است که عموماً به آن با اصالح‬
‫پروتکل بدون اتصال‪ 2‬اشاره میشود‪ .‬یک پروتکل بدون اتصال بر خالف ‪ – TCP‬با‬
‫فرآیندهای دستدهی و پایانکارش – یک ارتباط را رسماً بین میزبانها برقرار نمیکند یا‬
‫پایان نمیدهد‪.‬‬
‫با یک پروتکل بدون اتصال – که سرویسهای اطمینانپذیری را فراهم نمیکند – به نظر‬
‫میرسد که ترافیک ‪ UDP‬در بهترین حالت عجیب و غریب خواهد بود‪ .‬این حرف درست‬
‫است‪ ،‬جز آنکه پروتکلهایی که بر ‪ UDP‬تکیه میکنند بهطور معمول سرویسهای‬
‫اطمینانپذیری تعبیه شدهی خود را دارند‪ ،‬یا برای قدری اطمینانپذیرتر کردن ارتباط از بعضی‬
‫ویژگیهای بخصوص ‪ ICMP‬استفاده میکنند‪ .‬برای مثال‪ ،‬پروتکلهای الیهی برنامه‬
‫کاربردی ‪ DNS‬و ‪ – DHCP‬که به سرعت انتقال بسته در یک شبکه بسیار وابسته هستند – از‬
‫‪ UDP‬بهعنوان پروتکل الیهی نقل و انتقالشان استفاده میکنند‪ ،‬ولی خود بررسی خطا و‬
‫زمانسنجهای ارتباط مجدد را اداره مینمایند‪.‬‬
‫سرآیند ‪UDP‬‬
‫سرآیند ‪ UDP‬بسیار کوچکتر و سادةتر از سرآیند ‪ TCP‬است‪ .‬همان طوری که در شکل‬
‫‪ 2۷-6‬نشان داده شده است‪ ،‬فیلدهای سرآیند ‪ UDP‬بهقرار زیر است‪:‬‬
‫‪ – Source Port‬پورت استفاده شده برای انتقال بسته‬
‫‪ – Destination Port‬پورتی که بسته به آن منتقل شده است‪.‬‬

‫‪1‬‬
‫)‪User Datagram Protocol (UDP‬‬
‫‪2‬‬
‫‪connectionless protocol‬‬
‫‪1۷8‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫‪ – Packet Length‬طول بسته بر حسب بایت‬


‫‪ – Checksum‬برای اطمینان حاصل کردن از این امر مورد استفاده قرار میگیرد‬
‫که محتوا و دادههای سرآیند ‪ UDP‬در زمان ورود سالم و دست نخورده باشند‪.‬‬

‫شکل ‪ :2۷-2‬سرآیند ‪UDP‬‬

‫فایل ‪ udp_dnsrequest.pcap‬حاوی یک بسته است‪ .‬این بسته معرف یک درخواست ‪DNS‬‬


‫است که از ‪ UDP‬استفاده میکند‪ .‬زمانی که سرآیند ‪ UDP‬این بسته را باز میکنید چهار فیلد‬
‫را خواهید دید (شکل ‪ 28-6‬را ببینید)‪.‬‬

‫شکل ‪ :28-6‬محتوای یک بستهی ‪ UDP‬بسیار ساده است‪.‬‬

‫‪1۷9‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫نکتهی کلیدی که باید به خاطر داشت آن است که ‪ UDP‬اهمیتی به تحویل اطمینانپذیر‬


‫نمیدهد‪ .‬بنابراین‪ ،‬هر برنامه کاربردی که از ‪ UDP‬استفاده میکند در صورت نیاز باید برای‬
‫اطمینان حاصل کردن از تحویل اطمینانپذیر مراحل ویژهای را اتخاذ نماید‪.‬‬

‫پروتکل کنترل پیامهای اینترنتی‬


‫پروتکل کنترل پیامهای اینترنتی‪ )ICMP( 1‬پروتکل برنامهی ‪ TCP/IP‬است که مسئول فراهم‬
‫کردن اطالعات در ارتباط با دسترسپذیری وسایل‪ ،‬سرویسها‪ ،‬یا مسیرها در یک شبکهی‬
‫‪ TCP/IP‬است‪ .‬اغلب تکنیکها و ابزارهای رفع اشکال شبکه در اطراف انواع پیام ‪ICMP‬‬
‫متمرکز هستند‪ ICMP .‬در ‪ RFC 792‬تعریف شده است‪.‬‬
‫سرآیند ‪ICMP‬‬
‫‪ ICMP‬بخشی از ‪ IP‬است و برای انتقال پیامها به ‪ IP‬تکیه میکند‪ ICMP .‬حاوی سرآیند نسبتاً‬
‫کوچکی است که بسته به مقصودش تغییر میکند‪ .‬همان طوری که در شکل ‪ 29-6‬نشان داده‬
‫شده است‪ ،‬سرآیند ‪ ICMP‬حاوی فیلدهای زیر است‪:‬‬
‫‪ – Type‬نوع طبقهبندی پیام ‪ ،ICMP‬بسته به مشخصهی ‪RFC‬‬
‫‪ – Code‬طبقهبندی فرعی پیام ‪ ،ICMP‬بسته به مشخصهی ‪RFC‬‬

‫‪ - Checksum‬برای اطمینان حاصل کردن از این امر مورد استفاده قرار میگیرد‬
‫که محتوا و دادههای سرآیند ‪ ICMP‬در زمان ورود سالم و دست نخورده باشند‬
‫‪ – Variable‬بخشی که به فیلدهای ‪ Type‬و ‪ Code‬بستگی دارد‬

‫شکل ‪ :29-6‬سرآیند ‪ICMP‬‬

‫‪1‬‬
‫)‪Internet Control Message Protocol (ICMP‬‬
‫‪180‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫انواع و پیامهای ‪ICMP‬‬


‫همان طوری که گفته شد‪ ،‬ساختار یک بستهی ‪ ICMP‬به مقصود آن – چنانچه توسط مقادیر‬
‫در فیلدهای ‪ Type‬و ‪ Code‬تعریف شده است – بستگی دارد‪.‬‬
‫میتوانید فیلد ‪ Type‬در ‪ ICMP‬را بهعنوان طبقهبندی بسته‪ ،‬و فیلد ‪ Code‬را بهعنوان طبقهبندی‬
‫فرعی آن در نظر بگیرید‪ .‬برای مثال‪ ،‬مقدار فیلد ‪ Type‬بهقرار ‪ 3‬بیانگر "مقصد غیر قابل‬
‫دسترس" است‪ .‬در حالی که این اطالعات بتنهایی نمیتواند برای رفع اشکال یک مسئله کافی‬
‫باشد‪ ،‬ولی اگر آن بسته همچنین دارای مقدار ‪ 3‬در فیلد طبقهبندی فرعی ‪ – Code‬به معنی‬
‫"پورت غیر قابل دسترس" – باشد‪ ،‬آنگاه میتوانید نتیجهگیری نمایید پورتی که سعی‬
‫میکنید با آن ارتباط برقرار کنید مشکلی دارد‪.‬‬

‫نکته‪ :‬برای کسب فهرستی کامل از‪type‬ها و ‪code‬های ‪ ICMP‬به آدرس وب سایت زیر‬
‫‪ http://www.iana.org/assignments/icmp-parameters‬مراجعه نمایید‪.‬‬
‫درخواستها و پاسخهای ‪Echo‬‬
‫بیشترین معروفیت ‪ ICMP‬مرهون برنامهی پینگ است‪ .‬پینگ برای آزمودن اتصال با دستگاه‬
‫مورد استفاده قرار میگیرد‪ .‬اغلب متخصصین فنآوری اطالعات ‪ IT‬با پینگ آشنا هستند‪.‬‬
‫بهمنظور استفاده از پینگ‪ ping <ip address> ،‬را در نشانه راهنمای فرمان تایپ کنید و‬
‫بهجای >‪ <ip address‬آدرس ‪ IP‬دستگاه در شبکه را قرار دهید‪ .‬اگر دستگاه روشن باشد‪،‬‬
‫اگر دستگاهی هدف روشن باشد و کامپیوتر شما یک مسیر ارتباطی با آن داشته باشد‪ ،‬و هیچ‬
‫دیوارهی آتشی آن ارتباط را مسدود نکرده باشد‪ ،‬آنگاه پاسخها را در دستور پینگ خود‬
‫ببینید‪.‬‬
‫مثالِ نشان داده شده در شکل ‪ 30-6‬چهار پاسخ موفقیتآمیز را نشان میدهد که اندازهی‬
‫آنها‪ ،RTT ،‬و ‪ TTL‬استفاده شده را نمایش میدهد‪ .‬برنامهی ‪ Windows‬نیز خالصهای را‬

‫‪181‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫فراهم میآورد که نشان میدهد چه تعداد بسته فرستاده شدهاند‪ ،‬دریافت شدهاند‪ ،‬و گم‬
‫شدهاند‪ .‬اگر ارتباط شکست بخورد‪ ،‬آنگاه باید پیغامی را ببینید که به شما میگوید چرا‪.‬‬

‫شکل ‪ :30-6‬دستور پینگ استفاده شده برای آزمایش کردن اتصال‬

‫اساساً دستور پینگ یک بسته را در هر بار به یک دستگاه میفرستد و منتظر پاسخ میماند تا‬
‫تعیین کند که آیا اتصال با آن دستگاه وجود دارد یا نه (همان طوری که در شکل ‪ 31-6‬نشان‬
‫داده شده است)‪.‬‬

‫شکل ‪ :31-6‬دستور پینگ تنها شامل دو مرحله است‬

‫نکته‪ :‬اگرچه پینگ برای مدتهای طوالنیست که ابزار دست ‪ IT‬بوده است‪ ،‬ولی نتایج آن‬
‫میتواند تا حدی فریبنده باشد‪ ،‬زیرا دیوارهای آنش مبتنی بر میزبان مورد استفاده قرار‬

‫‪182‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫میگیرند‪ .‬بسیاری از دیوارهای آتش امروزی توانایی یک دستگاه را برای پاسخ دادن به‬
‫بستههای ‪ ICMP‬محدود میکنند‪ .‬این برای امنیت عالی است‪ ،‬زیرا میتواند حملهکنندههای‬
‫بالقوهای را بازدارد که از پینگ برای تعیین دسترسپذیری یک میزبان استفاده میکنند‪ ،‬اما‬
‫رفع اشکال را نیز بسیار سختتر میکند‪ .‬این میتواند مانع از پینگ کردن یک دستگاه برای‬
‫آزمایش کردن اتصال شود و زمانی که میدانید با آن دستگاه میتوانید ارتباط برقرار کنید‬
‫پاسخی را دریافت نمیکنید‪.‬‬

‫برنامهی پینگ در عمل مثال خوبی از ارتباط سادهی ‪ ICMP‬است‪ .‬بستهها در فایل‬
‫‪ icmp_echo.pcap‬نشان میدهند که وقتی پینگ میکنید چه اتفاقی میافتد‪.‬‬
‫نخستین بسته (شکل ‪ 32-6‬را ببینید) نشان میدهد که میزبان ‪ 192.168.100.138‬در حال‬
‫فرستادن یک بسته به ‪ 192.168.100.1‬است ‪ .‬زمانی که بخش ‪ ICMP‬این بسته را باز‬
‫میکنید‪ ،‬میتوانید نوع بستهی ‪ ICMP‬را با نگاه کردن به فیلدهای ‪ Type‬و ‪ Code‬تشخیص‬
‫دهید‪ .‬در این مورد‪ ،‬بسته از نوع ‪  8‬و کد ‪  0‬است که نشاندهندهی یک درخواست‬
‫‪ echo‬است‪ Wireshark( .‬باید به شما بگوید که نوع‪ /‬کد نمایش داده شده عمالً چیست‪).‬‬
‫این درخواست ‪( echo‬پینگ) نیمهی اول معادله است‪ .‬این یک بستهی سادهی ‪ ICMP‬است‬
‫که با استفاده از ‪ IP‬فرستاده شده‪ ،‬و حاوی مقدار کوچکی داده است‪ .‬عالوه بر عناوین نوع و‬
‫کد کنترلی ‪ ،checksum‬همچنین شماره ترتیب – که برای جفت درخواست با جوابها‬
‫مورد استفاده قرار میگیرد – و یک رشتهی متنی تصادفی را در بخش متغیر بستهی ‪ICMP‬‬
‫داریم‪.‬‬

‫نکته‪ :‬اصطالحات ‪ echo‬و ‪ ping‬اغلب بهجای هم به کار برده میشوند‪ ،‬اما فقط به خاطر‬
‫داشته باشید که پینگ عمالً نام یک دستگاه است‪ .‬ابزار پینگ برای فرستادن بستههای‬
‫درخواست پژواک (‪ ICMP )echo‬مورد استفاده قرار میگیرد‪.‬‬

‫‪183‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫شکل ‪ :32-6‬بستهی درخواست پژواک (‪ICMP )echo‬‬

‫بستهی دوم در این توالی پاسخ به درخواست ماست (شکل ‪ 33-6‬را ببینید)‪ .‬بخش ‪ICMP‬‬
‫بسته نوع ‪ ، 0‬و کد ‪  0‬است که نشان میدهد این یک پاسخ ‪ echo‬است‪ .‬از آنجایی که‬
‫شماره ترتیب در بستهی دوم با شماره ترتیب بستهی اول تطابق دارد ‪ ،‬بنابراین‪ ،‬میدانیم که‬
‫این پاسخ ‪ echo‬با درخواست ‪ echo‬در بستهی قبلی تطابق دارد‪ .‬این بستهی پاسخ همچنین‬
‫حاوی همان رشتهی دادههای ‪ 32‬بایتی است که با درخواست اولیه فرستاده شد ‪ .‬پس از‬
‫دریافت این بستهی دوم توسط ‪ ،192.168.100.138‬پینگ موفقیت را گزارش خواهد کرد‬
‫(شکل ‪ 30-6‬را ببینید)‪.‬‬

‫توجه داشته باشید که برای افزایش اندازهی بیتگذاری دادهها‪ - 1‬که بستهها را برای انواع‬
‫رفع اشکال شبکه مجبور میکند چندتکه شوند – میتوانید از انواع پینگ استفاده کنید‪ .‬این‬
‫زمانی الزم میشود که مشغول رفع اشکال شبکههایی هستید که نیازمند اندازهی قطعهی‬
‫کوچکتری هستند‪.‬‬

‫‪1‬‬
‫‪data padding‬‬
‫‪184‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫شکل ‪ :33-6‬بستهی پاسخ پژواک (‪ICMP )echo‬‬

‫نکته‪ :‬متن تصادفی استفاده شده در یک درخواست پژواک (‪ ICMP )echo‬میتواند برای‬
‫یک حملهکنندهی بالقوه بسیار مورد توجه باشد‪ .‬حملهکنندهها میتوانند از اطالعات موجود‬
‫در این بیتگذاری برای تجزیه کردن سیستم عامل مورد استفاده در یک دستگاه استفاده‬
‫کنند‪ .‬عالوه بر این‪ ،‬حملهکنندهها میتوانند برای روشی از ارتباط پنهان‪ ،‬بیتهای کوچکی‬
‫از دادهها را در این فیلد قرار دهند‪.‬‬
‫‪Traceroute‬‬
‫برنامهی ‪ traceroute‬برای شناسایی مسیر از یک دستگاه به دستگاه دیگر مورد استفاده قرار‬
‫میگیرد‪ .‬در یک شبکهی ساده‪ ،‬یک مسیر ممکن است تنها از میان یک مسیریاب (یا اصالً‬
‫هیچ مسیریابی) بگذرد‪ .‬اما‪ ،‬در یک شبکهی پیچیده‪ ،‬ممکن است الزم باشد که یک بسته‬
‫برای رسیدن به مقصد نهاییاش از میان چندین مسیریاب گذر نماید و به همین دلیل است که‬
‫توانایی در دنبال کردن مسیر دقیق یک بسته از یک مقصد به مقصد دیگر برای رفع اشکال‬
‫در ارتباط بسیار حساس و حیاتی است‪.‬‬

‫‪185‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫‪ Traceroute‬با استفاده از ‪( ICMP‬با قدری کمک از طرف ‪ )IP‬میتواند مسیری که بستهها‬


‫طی میکنند را ترسیم نماید‪ .‬برای مثال‪ ،‬نخستین بسته در ‪ icmp_tracerouter.pcap‬خیلی‬
‫شبیه به درخواست ‪echo‬ای است که ما در بخش قبلی دیدیم (شکل ‪ 34-6‬را ببینید)‪.‬‬

‫شکل ‪ :34-6‬یک بستهی درخواست پژواک (‪ ICMP )echo‬با مقدار ‪ TLL‬برابر با ‪1‬‬

‫در نگاه اول‪ ،‬به نظر میرسد که این بسته یک درخواست ساده ‪  echo‬از‬
‫‪ 192.168.100.138‬به ‪ 4.2.2.1‬است ‪ ،‬و هر چیزی در بخش ‪ ICMP‬این بسته با قالببندی‬
‫یک بستهی درخواست ‪ echo‬برابر است‪ .‬اما‪ ،‬وقتی سرآیند ‪ IP‬این بسته را باز میکنید‪ ،‬متوجه‬
‫یک مقدار عجیب خواهید شد‪ :‬مقدار ‪ TTL‬این بسته در ‪ 1‬قرار دارد ‪ ،‬که یعنی این بسته‬
‫در اولین مسیریابی که به آن برسد دور انداخته خواهد شد‪ .‬از آنجایی که مقصد با نشانی‬
‫‪ 4.2.2.1‬یک آدرس اینترنتی است‪ ،‬بنابراین‪ ،‬ما میدانیم که بین مبدأ و دستگاههای مقصدمان‬
‫حداقل یک مسیریاب وجود دارد و به همین سبب این بسته به هیچ عنوان به مقصد خود‬

‫‪186‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫نخواهد رسید‪ .‬این برای ما خوب است‪ ،‬زیرا ‪ traceroute‬بر این حقیقت تکیه دارد که این‬
‫بسته تنها به نخستین مسیریابی خواهد رسید که از آن میگذرد‪.‬‬
‫همان طوری که انتظار میرود‪ ،‬دومین بسته پاسخی از مسیریاب اول است که در امتداد مسیر‬
‫به مقصدمان به آن رسیدیم (شکل ‪ 35-6‬را ببینید)‪ .‬این بسته به این دستگاه در‬
‫‪ 192.168.100.1‬رسید و ‪TLL‬اش به صفر کاهش پیدا کرد و نتوانست جلوتر برود؛ بنابراین‪،‬‬
‫مسیریاب با یک پاسخ ‪ ICMP‬جواب داد‪ .‬نوع این بسته ‪  11‬و کد آن ‪ 0‬است ‪ ‬که به ما‬
‫میگوید مقصد غیر قابل دسترس بود‪ ،‬زیرا از ‪ TTL‬بسته در طول انتقال از حد بیشتر شد‪.‬‬

‫شکل ‪ :35-6‬یک پاسخ ‪ ICMP‬از مسیریاب نخست در طول مسیر‬

‫‪18۷‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫بستهی ‪ ICMP‬گاهی بستهی دو سر‪ 1‬نامیده میشود‪ ،‬زیرا قسمت انتهایی بخش ‪ICMP‬اش‬
‫حاوی یک کپی از سرآیند ‪  IP‬و دادههای ‪  ICMP‬است که در درخواست ‪ echo‬اولیه‬
‫فرستاده شد‪ .‬این اطالعات برای رفع اشکال میتوانند بسیار سودمند باشند‪.‬‬
‫این فرآیند فرستادن بستهها با مقادیر افزایش یافتهی ‪ TTL‬دو بار دیگر پیش از آنکه به بسته ‪۷‬‬
‫برسیم رخ میدهد‪ .‬در اینجا‪ ،‬همان چیزی را میبینید که در بستهی نخست دیدید‪ ،‬جز آنکه‬
‫این بار مقدار ‪ TTL‬در سرآیند ‪ IP‬در ‪ 2‬قرار دارد که تضمین میکند این بسته پیش از دور‬
‫انداخته شدن به دومین گام مسیریاب خواهد رسید‪ .‬همان طوری که انتظار میرفت‪ ،‬ما یک‬
‫پاسخ را از گام مسیریاب بعدی – ‪ – 12.180.241.1‬با همان پیغامهای مقصد غیر قابل‬
‫دسترس ‪ ICMP‬و ‪ TTL‬فراتر رفته را دریافت میکنیم‪ .‬این فرآیند با افزایش یک واحدی‬
‫مقدار ‪ TTL‬ادامه پیدا میکند تا آنکه به مقصد ‪ 4.2.2.1‬برسد‪.‬‬
‫در کل‪ ،‬این پروتکل ‪ traceroute‬با هر مسیریابی در امتداد مسیر ارتباط برقرار میکند و‬
‫نقشهی مسیر تا مقصد را ایجاد مینماید‪ .‬این نقشه در شکل ‪ 36-6‬نشان داده شده است‪.‬‬

‫نکته‪ :‬بحث اینجا در مورد ‪ traceroute‬عموماً متمرکز بر ‪ Windows‬است‪ ،‬زیرا منحصراً از‬
‫‪ ICMP‬استفاده میکند‪ .‬برنامهی ‪ traceroute‬در ‪ Linux‬قدری فراگیرندهتر است و میتواند‬
‫بهمنظور اجرای ردگیری مسیر از پروتکل دیگری نیز بهره ببرد‪.‬‬

‫همان طوری که در سرتاسر این کتاب میتوانید ببینید‪ ICMP ،‬کارکردهای گوناگونی دارد‪.‬‬
‫ما همچنان که سناریوهای بیشتری را مورد تجزیه و تحلیل قرار میدهیم بهطور مکرر از‬
‫‪ ICMP‬استفاده خواهیم کرد‪.‬‬

‫‪1‬‬
‫‪double-headed packet‬‬
‫‪188‬‬
‫پروتکلهای الیه پایینتر‬ ‫فصل ششم‬

‫شکل ‪ :36-6‬یک خروجی نمونه از برنامهی ‪traceroute‬‬


‫این فصل تعداد معدودی از مهمترین پروتکلها را برای شما معرفی کرده است که شما آنها‬
‫را در فرآیند تحلیل بسته مورد بررسی قرار خواهید داد‪ .‬پروتکلهای ‪ ،UDP ،TCP ،IP‬و‬
‫‪ ICMP‬در شالودهی همهی ارتباطات شبکهای هستند و تقریباً برای همهی کارهای روزمرهای‬
‫که انجام میدهید نقشی حیاتی دارند‪ .‬در فصل بعد‪ ،‬به گروهبندی پروتکلهای عمومی الیهی‬
‫برنامه کاربردی نگاه خواهیم داشت‪.‬‬

‫‪189‬‬
‫فصل ‪7‬‬
‫پروتکلهای رایج الیه باالتر‬
‫پروتکلهای الیه باالتر‬ ‫فصل هفتم‬

‫پروتکلهای رایج الیهی باالتر‬


‫در این فصل به بررسی کارکردهای تک تک پروتکلها خواهیم پرداخت‪ ،‬و همچنین اینکه‬
‫وقتی توسط ‪ Wireshark‬دیده میشوند چه شکلی دارند‪ .‬ما سه مورد از عامترین پروتکلهای‬
‫الیهی باالتر (الیهی ‪ )۷‬را مورد بحث قرار خواهیم داد‪ ،‬که عبارتند از ‪ ،DNS ،DHCP‬و‬
‫‪.HTTP‬‬

‫پروتکل پیکربندی میزبان به صورت پویا‬


‫در روزگار اولیهی شبکهسازی‪ ،‬وقتی دستگاهی میخواست از طریق یک شبکه ارتباط برقرار‬
‫نماید‪ ،‬نیاز به آن داشت که آدرسی بهطور دستی به آن وارد شود‪ .‬همچنان که شبکهها رشد‬
‫پیدا کردند‪ ،‬این فرآیند دستی بهسرعت طاقتفرسا شد‪ .‬برای اجتناب از این مشکل پروتکل‬
‫خودراهاندازی‪ )BOOTP( 1‬به وجود آمد تا آدرسها را بهطور خودکار به وسایل متصل به‬
‫‪2‬‬
‫شبکه اختصاص دهد‪ BOOTP .‬بعداً توسط پروتکل پیکربندی میزبان به صورت پویا‬
‫(‪ )DHCP‬جایگزین گردید که پروتکلی پیشرفتهتر است‪.‬‬
‫‪ DHCP‬یک پروتکل الیهی برنامه کاربردی است که مسئول مقدور ساختن یک دستگاه‬
‫برای به دست آوردن خودکار آدرس ‪( IP‬و آدرس سایر داشتههای مهم دیگر شبکه‪ ،‬نظیر‬
‫سرورها و مسیریابهای ‪ )DNS‬است‪.‬‬
‫امروزه اغلب سرورهای ‪ DHCP‬همچنین پارامترهای دیگری را برای کاربران فراهم میکنند‬
‫که از آن جمله میتوان به آدرسهای درگاههای پیشفرض و سرورهای ‪ DNS‬مشغول در‬
‫شبکه اشاره کرد‪.‬‬
‫ساختار بستهی ‪DHCP‬‬
‫بستههای ‪ DHCP‬میتوانند اطالعات زیادی را برای کاربر حمل کنند‪ .‬همان طوری که در‬
‫شکل ‪ 1-۷‬نشان داده شده است‪ ،‬فیلدهای زیر در درون بستهی ‪ DHCP‬وجود دارد‪:‬‬

‫‪1‬‬
‫)‪Bootstrap Protocol (BOOTP‬‬
‫‪2‬‬
‫)‪Dynamic Host Configuration Protocol (DHCP‬‬
‫‪192‬‬
‫پروتکلهای الیه باالتر‬ ‫فصل هفتم‬

‫‪ -OpCod‬نشان میدهد که آیا بسته یک درخواست ‪ DHCP‬است و یا یک پاسخ‬


‫‪DHCP‬‬
‫‪ – Hardware Type‬نوع آدرس سختافزار (‪،IEEE 802 ،10MB Ethernet‬‬
‫‪ ATM‬و مانند آن)‬
‫‪ -Hardware Length‬طول آدرس سختافزار‬
‫‪ -Hops‬برای عوامل رله مورد استفاده قرار میگیرد تا به یافتن یک سرور ‪DHCP‬‬
‫کمک کند‬
‫‪ -Transaction ID‬یک عدد تصادفی برای جفت درخواستها با پاسخها‬
‫‪ -Seconds Elapsed‬ثانیهها از زمانی که کاربر برای نخستین بار آدرسی را از‬
‫سرور ‪ DHCP‬درخواست میکند‬
‫‪ -Flags‬انواع ترافیکی که کاربر ‪ DHCP‬میتواند بپذیرد (‪،broadcast ،unicast‬‬
‫و نظایر آن)‬
‫‪ -Client IP Address‬آدرس ‪ IP‬کاربر (مشتق شده از فیلد ‪)Your IP Address‬‬
‫‪ -Your IP Address‬آدرس ‪ IP‬ارائه شده توسط سرور ‪( DHCP‬که در نهایت‬
‫به مقدار فیلد ‪ Client IP Address‬تبدیل میشود)‬
‫‪ -Server IP Address‬آدرس ‪ IP‬سرور ‪DHCP‬‬
‫‪ -Gateway IP Address‬آدرس ‪ IP‬درگاه پیشفرض شبکه‬
‫‪ -Client Hardware Address‬آدرس ‪ MAC‬کاربر‬
‫‪ -Server Host Name‬نام میزبان سرور (اختیاری)‬
‫‪ -Boot File‬یک فایل راهاندازی برای استفاده توسط ‪( DHCP‬اختیاری)‬
‫‪ -Options‬مورد استفاده برای بسط ساختار بستهی ‪ DHCP‬بهمنظور دادن‬
‫ویژگیهای بیشتر به آن‬

‫‪193‬‬
‫پروتکلهای الیه باالتر‬ ‫فصل هفتم‬

‫شکل ‪ :1-۷‬ساختار بستهی ‪DHCP‬‬

‫فرآیند تجدید ‪DHCP‬‬


‫هدف اصلی و اولیهی ‪ DHCP‬تخصیص آدرسها به کاربران در طول فرآیند تجدید است‪.‬‬
‫همان طوری که در فایل ‪ dhcp_nolease_renewal.pcap‬نشان داده شده است‪ ،‬فرآیند‬
‫تجدید بین یک کاربر و یک سرور ‪ DHCP‬رخ میدهد‪ .‬اغلب به فرآیند تجدید ‪ DHCP‬با‬
‫عنوان فرآیند ‪ DORA‬اشاره میشود‪ ،‬زیرا از چهار نوع بستهی ‪ DHCP‬استفاده میکند که‬
‫عبارتند از کشف (‪ ،)discover‬ارائه (‪ ،)offer‬درخواست (‪ ،)request‬و تصدیق‬
‫(‪( )acknowledgment‬همان طوری که در شکل ‪ 2-۷‬نشان داده شده است)‪ .‬در اینجا به هر‬
‫یک از بستههای ‪ DORA‬نگاهی خواهیم داشت‪.‬‬

‫‪194‬‬
‫پروتکلهای الیه باالتر‬ ‫فصل هفتم‬

‫شکل ‪ :2-۷‬فرآیند ‪ DORA‬در ‪DHCP‬‬

‫بستهی کشف ‪Discover‬‬


‫همان طوری که میتوانید در فایل ربایش مرجع ببینید‪ ،‬نخستین بسته از ‪ 0.0.0.0‬از پورت ‪68‬‬
‫به ‪ 255.255.255.255‬به پورت ‪ 6۷‬فرستاده شده است‪ .‬کاربر برای آن از ‪ 0.0.0.0‬استفاده‬
‫میکند که هنوز آدرس ‪ IP‬ندارد‪ .‬بسته به ‪ 255.255.255.255‬فرستاده شده است‪ ،‬زیرا این‬
‫آدرس ‪ broadcast‬مستقل از شبکه است‪ ،‬و بدین ترتیب اطمینان حاصل میشود که این‬
‫بسته به هر دستگاهی در شبکه فرستاده خواهد شد‪ .‬از آنجایی که این دستگاه آدرس یک‬
‫سرور ‪ DHCP‬را نمیتواند پیدا کند‪ ،‬پس این بستهی نخست در تالش برای یافتن یک سرور‬
‫‪ DHCP‬است که به ارسال توجه کند‪ ،‬فرستاده میشود‪.‬‬
‫با بررسی بخش پنجرهی ‪ ،Packet Details‬نخستین چیزی که متوجه میشویم آن است که‬
‫‪ DHCP‬بهعنوان پروتکل الیهی نقل و انتقالش به ‪ UDP‬تکیه میکند‪ DHCP .‬بسیار دغدغهی‬
‫سرعتی را دارد که کاربر با آن اطالعات مورد درخواست خود را دریافت میکند‪DHCP .‬‬
‫اقدامات اطمینانپذیر تعبیه شدهی خود را دارد و این یعنی ‪ UDP‬یک گزینهی عالی است‪ .‬با‬
‫بررسی بخش ‪ DHCP‬بسته در ‪ Packet Details‬میتوانید جزئیات فرآیند کشف را ببینید‬
‫(شکل ‪.)3-۷‬‬
‫‪195‬‬
‫پروتکلهای الیه باالتر‬ ‫فصل هفتم‬

‫نکته‪ :‬از آنجایی که ‪ Wireshark‬هنوز در زمان سر و کار داشتن با ‪ DHCP‬به ‪BOOTP‬‬


‫رجوع میکند‪ ،‬بنابراین‪ ،‬شما یک بخش ‪ Rootstrap Protocol‬را در بخش پنجرهی ‪Packet‬‬
‫‪ Details‬میبینید‪ ،‬و نه در بخش ‪ .DHCP‬با این حال‪ ،‬من در کل این کتاب به این با عنوان‬
‫بخش ‪ DHCP‬اشاره خواهم کرد‪.‬‬

‫شکل ‪ :3-۷‬بستهی کشف ‪DHCP‬‬

‫این بسته یک درخواست است‪ ،‬که توسط (‪ )1‬در فیلد ‪ Message Type‬شناسایی شده است‬
‫‪ .‬اغلب فیلدها در این بستهی کشف یا خالی هستند (همان طوری که میتوانید در فیلدهای‬
‫‪ IP Address‬ببینید ‪ ،)‬یا خیلی بدیهی هستند و بر اساس فهرستی از فیلدهای ‪ DHCP‬در‬
‫بخش قبلی استوارند‪ .‬نکتهی اصلی این بسته در چهار فیلد ‪ option‬است‪:‬‬
‫‪ -DHCP Message Type‬این گزینهی نوع ‪ )t=53( 53‬با طول ‪ 1‬و مقدار ‪ 1‬است‬
‫‪ .‬این مقادیر نشان میدهند که این یک بستهی کشف ‪ DHCP‬است‪.‬‬
‫‪196‬‬
‫پروتکلهای الیه باالتر‬ ‫فصل هفتم‬

‫‪ -Client Identifier‬این فیلد اطالعات بیشتری دربارهی کاربر فراهم میکند که‬
‫یک آدرس ‪ IP‬را تقاضا مینماید‪.‬‬
‫‪ -Requested IP Address‬این فیلد آدرس ‪IP‬ای که کاربر میخواهد دریافت‬
‫کند را فراهم میآورد (بهطور معمول آدرس ‪IP‬ای که قبالً استفاده کرده است)‪.‬‬
‫‪ -Parameter Request List‬این فیلد آیتمهای مختلف پیکربندی را فهرست‬
‫میکند (آدرسهای ‪ IP‬وسایل مهم دیگر شبکه) که کاربر میخواهد از سرور‬
‫‪ DHCP‬دریافت نماید‪.‬‬

‫شکل ‪ :4-۷‬بستهی ارائهی ‪DHCP‬‬

‫‪19۷‬‬
‫پروتکلهای الیه باالتر‬ ‫فصل هفتم‬

‫بستهی ارائه (‪)Offer‬‬


‫بستهی دوم در این فیلد آدرسهای ‪ IP‬معتبر را در سرآیند ‪IP‬اش فهرست میکند که نشان‬
‫میدهد یک بسته در حال حرکت از ‪ 192.168.0.1‬به سوی ‪ 192.168.0.10‬است (همان‬
‫طوری که در شکل ‪ 4-۷‬نشان داده شده است)‪ .‬کاربر عمالً هنوز آدرس ‪ 192.168.0.10‬را‬
‫ندارد‪ ،‬و بنابراین سرور نخست تالش میکند تا با استفاده از آدرس سختافزار کاربر – که‬
‫توسط ‪ ARP‬فراهم شده است – با وی ارتباط برقرار نماید‪ .‬اگر ارتباط امکانپذیر نباشد‪،‬‬
‫آنگاه فقط برای ارتباط برقرار کردن این بستهی ارائه را ‪ broadcast‬میکند‪.‬‬

‫بخش ‪ DHCP‬این بستهی دوم – که بستهی ارائه نامیده میشود – نشان میدهد که نوع بسته‬
‫یک پاسخ است ‪ .‬این بسته حاوی همان ‪ ID‬تراکنش بستهی قبلی است ‪ ‬که به ما میگوید‬
‫این پاسخ در واقع پاسخ به درخواست اولیهی ماست‪.‬‬
‫بستهی ارائه توسط سرور ‪ DHCP‬برای ارائهی خدماتش به کاربر فرستاده شده است‪ .‬بستهی‬
‫ارائه این کار را با فراهم کردن اطالعات دربارهی خودش و آدرسدهی که میخواهد برای‬
‫کاربر فراهم کند انجام میدهد‪ .‬در شکل ‪ ،4-۷‬آدرس ‪ IP‬بهقرار ‪ 192.168.0.10‬در فیلد‬
‫‪( Your IP Address‬کاربر) به کاربر ارائه شده است ‪ .‬مقدار ‪ 192.168.0.1‬در فیلد ‪Next‬‬
‫‪  Server IP Address‬نشان میدهد که سرور ‪ DHCP‬ما و درگاه پیشفرض دارای آدرس‬
‫‪ IP‬مشترکی هستند‪.‬‬
‫نخستین گزینهی فهرست شده این بسته را بهعنوان یک ‪ DHCP Offer‬شناسایی میکند ‪.‬‬
‫گزینههایی که به دنبال آن میآیند توسط سرور فراهم شدهاند عالوه بر آدرس ‪ IP‬کاربر‪،‬‬
‫اطالعات بیشتری را نشان میدهند که میتوانند فراهم نمایند‪ .‬میتوانید ببینید که اطالعات‬
‫زیر ارائه میشوند‪:‬‬
‫‪ ‬یک ماسک زیرشبکهی ‪255.255.255.0‬‬

‫‪ ‬یک زمان تجدید ‪ 30‬دقیقهای‬


‫‪198‬‬
‫پروتکلهای الیه باالتر‬ ‫فصل هفتم‬

‫‪ ‬یک زمان دوباره ملزم کنندهی ‪ 52‬دقیقه و ‪ 30‬ثانیهای‬

‫‪ ‬یک زمان اجارهی آدرس ‪ IP‬یک ساعته‬

‫‪ ‬یک شناسهی سرور ‪ DHCP‬بهقرار ‪192.168.0.1‬‬

‫بستهی درخواست (‪)Request‬‬


‫به محضی که کاربر یک بستهی ارائه را از سرور ‪ DHCP‬دریافت کند‪ ،‬باید آن را با یک‬
‫بستهی درخواست ‪ DHCP‬بپذیرد (همان طوری که در شکل ‪ 5-۷‬نشان داده شده است)‪.‬‬

‫شکل ‪ :5-۷‬بستهی درخواست ‪DHCP‬‬

‫سومین بسته در این فایل ربایش هنوز از آدرس ‪ IP‬بهقرار ‪ 0.0.0.0‬میآید‪ ،‬زیرا هنوز فرآیند‬
‫به دست آوردن یک آدرس ‪ IP‬را تکمیل نکردهایم ‪ .‬اکنون بسته سرور ‪ DHCP‬که با آن‬
‫ارتباط دارد را میشناسد‪.‬‬

‫‪199‬‬
‫پروتکلهای الیه باالتر‬ ‫فصل هفتم‬

‫فیلد ‪ Message Type‬نشان میدهد که این بسته یک درخواست است ‪ .‬اگرچه هر بستهای‬
‫در این فایل ربایش بخشی از همان فرآیند تجدید است‪ ،‬ولی این یک ‪ ID‬تراکنش جدید‬
‫دارد‪ ،‬زیرا این یک تراکنش درخواست‪ /‬پاسخ جدید است ‪ .‬این بسته شبیه بستهی کشف‬
‫است که در آن همهی اطالعات آدرسدهی ‪IP‬اش خالی است‪.‬‬
‫در آخر‪ ،‬در فیلد گزینهها (‪ ، )Options‬میبینیم که این یک ‪ DHCP Request‬است‪.‬‬
‫توجه داشته باشید که آدرس ‪ IP‬درخواست شده دیگر خالی نیست‪ ،‬و اینکه فیلد ‪DHCP‬‬
‫‪ Server Identifier‬نیز حاوی یک آدرس است‪.‬‬
‫بستهی تصدیق (‪)Acknowledgment‬‬
‫در آخرین مرحلهی این فرآیند‪ ،‬سرور ‪ DHCP‬آدرسهای ‪ IP‬درخواست شده را در بستهی‬
‫تصدیق برای کاربر میفرستد و آن اطالعات را در پایگاه دادههای خود ربایش میکند‬
‫(شکل ‪.)6-۷‬‬

‫شکل ‪ :6-۷‬بستهی تصدیق ‪DHCP‬‬

‫‪200‬‬
‫پروتکلهای الیه باالتر‬ ‫فصل هفتم‬

‫اکنون کاربر آدرس ‪ IP‬را دارد و برای آغاز ارتباط در شبکه میتواند از آن استفاده نماید‪.‬‬
‫‪ DHCP‬در اجاره‬
‫زمانی که سرور ‪ DHCP‬یک آدرس ‪ IP‬را به دستگاهی تخصیص میدهد‪ ،‬آن را به کاربر‬
‫اجاره میدهد‪ .‬این یعنی کاربر اجازه دارد تا از آدرس ‪ IP‬تنها برای مدت زمان محدودی‬
‫استفاده کند و پس از آن باید این اجاره را تمدید نماید‪ .‬فرآیند ‪ DORA‬که مورد بحث قرار‬
‫گرفت‪ ،‬نخستین باری رخ میدهد که یک کاربر یک آدرس ‪ IP‬را به دست آورده باشد یا‬
‫وقتی که زمان اجاره منقضی شده باشد‪ .‬در هر دو صورت‪ ،‬دستگاه خارج از اجاره در نظر‬
‫گرفته میشود‪.‬‬
‫وقتی که یک کاربر با یک آدرس ‪ IP‬در اجاره دوباره بوت میکند (‪ ،)reboot‬برای احیای‬
‫آدرس ‪IP‬اش باید یک نسخهی کوتاه شده از فرآیند ‪ DORA‬را اجرا نماید‪ .‬این فرآیند‬
‫تجدیدِ در اجاره‪ 1‬نامیده میشود‪.‬‬
‫در مورد تجدید اجاره‪ ،‬بستههای کشف و ارائه غیر ضروری هستند‪ .‬در مورد آن مانند همان‬
‫فرآیند ‪ DORA‬فکر کنید که در یک تجدید خارج از اجاره استفاده میشود‪ ،‬جز آنکه‬
‫تجدیدِ در اجاره خیلی نیازی ندارد که کاری انجام دهد‪ ،‬و تنها مراحل درخواست و تصدیق‬
‫باقی میماند‪.‬‬
‫نمونهی ربایش یک تجدیدِ در اجاره را میتوانید در ‪ dhcp_inlease_renewal.pcap‬پیدا‬
‫کنید‪.‬‬

‫گزینهها و انواع پیام ‪DHCP‬‬


‫انعطافپذیری واقعی ‪ DHCP‬در گزینههای موجود آن قرار دارد‪ .‬همان طوری که دیدهاید‪،‬‬
‫گزینههای بستهی ‪ DHCP‬به لحاظ اندازه و محتوا میتوانند متفاوت باشند‪ .‬اندازهی کلی بسته‬
‫به ترکیب گزینههای استفاده شده بستگی دارد‪.‬‬

‫‪1‬‬
‫‪in-lease renewal‬‬
‫‪201‬‬
‫پروتکلهای الیه باالتر‬ ‫فصل هفتم‬

‫در ‪ http://www.iana.org/assinments/bootp-dhcp-parameters/‬میتوانید فهرست‬


‫کاملی از بسیاری از گزینههای ‪ DHCP‬را ببینید‪.‬‬
‫تنها گزینهی الزم در همهی بستههای ‪ DHCP‬گزینهی ‪( Message Type‬گزینهی ‪ )53‬است‪.‬‬
‫این گزینه شناسایی میکند که کاربر یا سرور ‪ DHCP‬چگونه اطالعات داخل بسته را پردازش‬
‫نماید‪ .‬همان طوری که در جدول ‪ 1-۷‬تعریف شده است‪ ،‬هشت نوع پیام وجود دارد‪.‬‬

‫جدول ‪ :1-۷‬انواع پیام ‪DHCP‬‬


‫شرح‬ ‫نوع پیام‬
‫مورد استفاده توسط کاربر برای تعیین محل سرورهای ‪ DHCP‬موجود‬ ‫‪ 1‬کشف ‪Discover‬‬
‫فرستاده شده توسط سرور به کاربر در پاسخ به بستهی کشف‬ ‫ارائه ‪Offer‬‬ ‫‪2‬‬
‫فرستاده شده توسط کاربر برای درخواست پارامترهای ارائه شده از سوی‬ ‫درخواست‬
‫‪3‬‬
‫سرور‬ ‫‪Request‬‬
‫فرستاده شده توسط کاربر به سرور تا پارامترهای نامعتبر در درون بسته را‬
‫‪ 4‬نقصان ‪Decline‬‬
‫نشان دهد‬
‫فرستاده شده توسط سرور به کاربر با پارامترهای پیکربندی درخواست شده‬ ‫‪ACK‬‬ ‫‪5‬‬
‫فرستاده شده توسط کاربر به سرور برای نپذیرفتن یک درخواست برای‬
‫‪NAK‬‬ ‫‪6‬‬
‫پارامترهای پیکربندی‬
‫فرستاده شده توسط کاربر به سرور برای لغو یک اجاره توسط اجارهی‬
‫نشر‪Release‬‬ ‫‪7‬‬
‫دوبارهی پارامترهای پیکربندی آن‬
‫فرستاده شده توسط کاربر به سرور برای درخواست پارامترهای پیکربندی‬ ‫آگهی دادن‬
‫‪8‬‬
‫در زمانی که کاربر از قبل یک آدرس ‪ IP‬را در اختیار دارد‬ ‫‪Inform‬‬

‫سیستم نام دامنه‬


‫سیستم نام دامنه‪ DNS 1‬یکی از اساسیترین پروتکلهای اینترنت است‪ ،‬زیرا پروتکلی است‬
‫که همهچیز را به هم پیوند میدهد‪ DNS .‬اسمها را به یکدیگر گره میزند؛ مانند‬
‫‪ www.google.com‬را به آدرس ‪ IP‬مثل ‪ 74.125.159.99‬وقتی که میخواهیم با یک‬

‫‪1‬‬
‫)‪Domain Name System (DNS‬‬
‫‪202‬‬
‫پروتکلهای الیه باالتر‬ ‫فصل هفتم‬

‫دستگاهی که شبکه شده ارتباط برقرار کنیم و آدرس ‪ IP‬آن را نمیدانیم‪ ،‬از طریق نام‬
‫‪DNS‬اش به آن دسترسی پیدا میکنیم‪.‬‬
‫سرورهای ‪ DNS‬یک پایگاه داده از سوابق منابع مسیردهیها "آدرس ‪ IP‬به نام ‪ "DNS‬را‬
‫ذخیره میکنند که با کاربران و سایر سرورهای ‪ DNS‬دیگر به اشتراک میگذارند‪.‬‬

‫نکته‪ :‬از آنجایی که معماری سرورهای ‪ DNS‬پیچیده است‪ ،‬بنابراین‪ ،‬ما فقط به بعضی از‬
‫انواع عمومی ترافیک ‪ DNS‬نگاه خواهیم کرد‪ .‬شما میتوانید در‬
‫‪ http://www.isc.org/community/reference/RFCs/DNS‬انواع ‪ RFC‬های مرتبط با‬
‫‪ DNS‬را مرور کنید‪.‬‬
‫ساختار بستهی ‪DNS‬‬
‫همان طوری که میتوانید در شکل ‪ ۷-۷‬ببینید‪ ،‬ساختار بستهی ‪ DNS‬تا اندازهای با انواع‬
‫بستههایی که پیشتر مورد بحث قرار دادیم متفاوت است‪ .‬فیلدهای زیر میتوانند در یک بستهی‬
‫‪ DNS‬وجود داشته باشند‪:‬‬
‫‪ -DNS ID Number‬برای مرتبط کردن پرس و جوهای ‪ DNS‬با پاسخهای ‪DNS‬‬
‫مورد استفاده قرار میگیرد‪.‬‬
‫)‪ - Query/Response (QR‬نشان میدهد که آیا بسته یک پرس و جوی ‪DNS‬‬
‫است و یا یک پاسخ ‪.DNS‬‬
‫‪ -OpCode‬نوع پرس و جوی لحاظ شده در پیام را تعیین میکند‪.‬‬
‫)‪ - Authorative Answer (AA‬اگر این مقدار در یک بستهی پاسخ قرار داشته‬
‫باشد‪ ،‬نشان میدهد که پاسخ از یک سرور نام با نفوذ روی دامنه است‪.‬‬
‫)‪ - Truncation (TC‬نشان میدهد که پاسخ کوتاه شده است‪ ،‬زیرا برای تطابق‬
‫با بسته بیش از اندازه بلند بوده است‪.‬‬

‫‪203‬‬
‫پروتکلهای الیه باالتر‬ ‫فصل هفتم‬

‫)‪ - Recursion Desired (RD‬این مقدار زمانی که در یک پرس و جو قرار‬


‫گرفته باشد نشان میدهد که کاربر ‪ DNS‬یک پرس و جوی بازگشتی را درخواست‬
‫میکند‪ ،‬مشروط بر آنکه سرور نامِ هدف حاوی اطالعاتِ درخواست شده نباشد‪.‬‬
‫)‪ - Recursion Avalable (RA‬اگر این مقدار در یک پاسخ قرار داده شده باشد‪،‬‬
‫آنگاه نشان میدهد که سرور نام پرس و جوهای بازگشتی را پشتیبانی میکند‪.‬‬
‫)‪ - Reserved (Z‬توسط ‪ RFC 1035‬تعریف شده است که همگی در صفر قرار‬
‫داشته باشند؛ گاهی بهعنوان یک پسوند فیلد ‪ RCode‬مورد استفاده قرار میگیرد‪.‬‬
‫)‪ - Response Code (RCode‬در پاسخهای ‪ DNS‬مورد استفاده قرار میگیرد‬
‫تا حضور هر گونه خطایی را نشان دهد‪.‬‬
‫‪ -Question Count‬تعداد ورودیها در بخش ‪.Questions‬‬
‫‪ -Answer Count‬تعداد ورودیها در بخش ‪.Answers‬‬
‫‪ -Name Server Count‬تعداد رکوردهای منبعِ‪ 1‬سرور نام در بخش ‪.Authority‬‬
‫‪ -Additional Records Count‬تعداد رکوردهای منبع دیگر در بخش‬
‫‪.Additional Information‬‬
‫‪ -Question Section‬بخشی با اندازهی متغیر که حاوی یک یا چند پرس و جو‬
‫برای اطالعاتی است که قرار است به سرور ‪ DNS‬فرستاده شود‪.‬‬
‫‪ -Answers Section‬بخشی با اندازهی متغیر که حاوی یک یا چند رکورد منبع‬
‫است که به پرس و جوها پاسخ میدهد‪ /‬میدهند‪.‬‬
‫‪ -Authority section‬بخشی با اندازهی متغیر که حاوی رکوردهای منبعی است‬
‫که به سرورهای نام موثقی اشاره دارند و میتواند برای ادامه دادن فرآیند تفکیک‬
‫(‪ )resolution‬مورد استفاده قرار بگیرد‪.‬‬

‫‪1‬‬
‫‪resource records‬‬
‫‪204‬‬
‫پروتکلهای الیه باالتر‬ ‫فصل هفتم‬

‫‪ -Additional Information section‬بخشی با اندازهی متغیر که حاوی‬


‫رکوردهای منبعی است که حاوی اطالعات بیشتر در ارتباط با پرس و جویی هستند‬
‫که الزم نیست حتماً به آن پرس و جو جواب داده شوند‪.‬‬

‫شکل ‪ :۷-۷‬ساختار بستهی ‪DNS‬‬

‫یک پرس و جوی سادهی ‪DNS‬‬


‫‪ DNS‬در یک قالب پرس وجو‪ /‬پاسخ کار میکند‪ .‬یک کاربر که میخواهد یک نام ‪DNS‬‬
‫را به یک آدرس ‪ IP‬تجزیه کند یک پرس و جو را به سرور ‪ DNS‬میفرستد‪ ،‬و این سرور‬
‫اطالعاتِ درخواست شده را در پاسخ خود بر میگرداند‪ .‬این فرآیند در سادهترین شکل خود‬
‫دارای دو بسته است (همان طوری که در فایل ‪ dsn_query_response.pcap‬دیده میشود)‪.‬‬
‫نخستین بسته – که در شکل ‪ 8-۷‬نشان داده شده است – یک پرس و جوی ‪ DNS‬فرستاده‬
‫شده از کاربر ‪ 192.168.0.114‬به سرور ‪ 205.152.37.23‬در پورت ‪ 53‬است که پورت‬
‫استاندارد مورد استفاده توسط ‪ DSN‬است‪.‬‬

‫‪205‬‬
‫پروتکلهای الیه باالتر‬ ‫فصل هفتم‬

‫شکل ‪ :8-۷‬بستهی پرس و جوی ‪DNS‬‬

‫زمانی که شروع به بررسی سرآیندها در این بسته میکنید‪ ،‬خواهید دید که ‪ DNS‬نیز بر ‪UDP‬‬
‫تکیه میکند ‪.‬‬
‫در بخش ‪ DNS‬بسته‪ ،‬میتوانید ببینید که فیلدهای کوچکتر در نزدیک آغاز بسته توسط‬
‫‪ Wireshark‬در یک بخش ‪ Flag‬واحد فشرده میشوند‪ .‬این بخش را باز کنید‪ ،‬و خواهید دید‬
‫که این پیغام بهواقع یک پرس و جوی استاندارد است ‪ ‬که کوتاه نشده است‪ ،‬و اینکه‬
‫بازگشت مطلوب است (ما بزودی بحث بازگشت را پوشش خواهیم داد)‪ .‬تنها یک پرسش‬
‫شناسایی شده است‪ ،‬که آن را میتوان با باز کردن بخش ‪ Queries‬پیدا کرد‪ .‬در آنجا میتوانید‬
‫ببینید که پرس و جو برای نام ‪ wireshark.org‬برای یک میزبان ‪ type A‬آدرس اینترنت ‪IN‬‬
‫است ‪ .‬این بسته اساساً میپرسد‪" ،‬کدام آدرس ‪ IP‬با دامنهی ‪ wireshark.org‬مرتبط‬
‫است؟"‬

‫‪206‬‬
‫پروتکلهای الیه باالتر‬ ‫فصل هفتم‬

‫همان طوری که در شکل ‪ 9-۷‬نشان داده شده است‪ ،‬پاسخ به این درخواست در بستهی ‪2‬‬
‫است‪ .‬از آنجایی که این بسته دارای یک شماره شناسایی یکسان است ‪ ،‬بنابراین‪ ،‬میدانیم‬
‫که حاوی پاسخ صحیح به پرس و جوی اولیه است‪.‬‬

‫شکل ‪ :9-۷‬بستهی پاسخ ‪DNS‬‬

‫بخش ‪ Flag‬تأیید میکند که این یک پاسخ است‪ ،‬و اینکه بازگشت در صورت لزوم موجود‬
‫است ‪ .‬این بسته تنها حاوی یک پرسش و یک رکورد منبع است ‪ ،‬زیرا پرسش اولیه را‬
‫در پیوستگی با پاسخش لحاظ میکند‪ .‬باز کردن بخش ‪ Answers‬پاسخ به این پرسش را به‬
‫ما ارائه میدهد‪ :‬آدرس پروتکل اینترنتِ ‪ wireshark.org‬بهقرار ‪ 128.121.50.122‬است ‪.‬‬
‫کاربر اکنون با این اطالعات میتواند بستههای ‪ IP‬را بسازد و شروع به برقرار کردن ارتباط با‬
‫‪ wireshark.org‬نماید‪.‬‬

‫‪20۷‬‬
‫پروتکلهای الیه باالتر‬ ‫فصل هفتم‬

‫انواع پرسش ‪DNS‬‬


‫فیلدهای ‪ Type‬مورد استفاده در پرس و جوها و پاسخهای ‪ DNS‬نوع رکورد منبع را نشان‬
‫میدهد که پرس و جو یا پاسخ برای آن است‪ .‬بعضی از انواع پیام‪ /‬رکورد منبع در جدول‬
‫‪ 2-۷‬فهرست شدهاند‪ .‬این انواع را در کل ترافیک طبیعی و در این کتاب خواهید دید‪.‬‬

‫جدول ‪ :2-۷‬انواع عمومی رکورد منبع ‪DNS‬‬

‫فهرست جدول ‪ 2-۷‬خالصه است و به هیچ وجه جامع و کامل نیست‪ .‬برای دیدن همهی انواع‬
‫رکورد منبع به ‪ http://wrww.iana.org/assignments/dns-parameters/‬مراجعه نمایید‪.‬‬
‫بازگشت ‪DNS‬‬
‫به سبب ماهیت سلسله مراتبی ساختار ‪ DNS‬اینترنت‪ ،‬سرورهای ‪ DNS‬باید بتوانند با یکدیگر‬
‫ارتباط برقرار کنند تا به پرس و جوهای ارائه شده توسط کاربران پاسخ دهند‪ .‬در حالی که‬
‫انتظار داریم سرور ‪ DNS‬داخلیمان مسیردهی آدرس "نام به ‪ "IP‬سرور اینترنت محلیمان‬
‫را بداند‪ ،‬ولی نمیتوانیم انتظار داشته باشیم که آدرس ‪ IP‬مرتبط با ‪ Google‬یا ‪ Dell‬را بداند‪.‬‬
‫زمانی که یک سرور ‪ DNS‬نیاز به یافتن یک آدرس ‪ IP‬دارد‪ ،‬بهجای کاربر – که درخواست‬
‫میکند – از سرور ‪ DNS‬دیگر پرس و جو میکند‪ .‬در حقیقت‪ ،‬سرور ‪ DNS‬مانند یک کاربر‬
‫عمل میکند و این فرآیند بازگشت نامیده میشود‪.‬‬

‫‪208‬‬
‫پروتکلهای الیه باالتر‬ ‫فصل هفتم‬

‫برای دیدن فرآیند بازگشت از هر دو منظر کاربر ‪ DNS‬و سرور ‪ ،DNS‬فایل‬


‫‪ dns_recursivequery_client.pcap‬را باز کنید‪ .‬این فایل حاوی ربایش از یک ترافیک‬
‫‪ DNS‬کاربر در دو بسته است‪ .‬بستهی نخست پرس و جوی اولیه است که از کاربر ‪ DNS‬به‬
‫آدرس ‪ 172.16.0.8‬به سرور ‪ DNS‬به آدرس ‪ 172.16.0.102‬فرستاده شده است(شکل‪.)10-۷‬‬
‫وقتی بخش ‪ DNS‬این بسته را باز میکنید‪ ،‬خواهید دید که این یک پرس و جوی استاندارد‬
‫برای یک رکورد نوع ‪ A‬برای نام ‪ DSN‬بهقرار ‪ www.nostarch.com‬است ‪ .‬برای آنکه‬
‫دربارهی این بسته بیشتر بیاموزید‪ ،‬بخش ‪ Flags‬را باز کنید‪ ،‬و خواهید دید که بازگشت‬
‫مطلوب است ‪.‬‬
‫دومین بسته آن چیزی است که ما انتظار داریم در پاسخ به پرس و جوی اولیه ببینیم‬
‫(همانطوری که در شکل ‪ 11-۷‬نشان داده شده است)‪.‬‬
‫‪ ID‬تراکنش این بسته با ‪ ID‬تراکنش پرس و جو تطابق دارد ‪‬؛ هیچ خطایی فهرست نشده‬
‫است؛ و ما رکورد منبع نوع ‪ A‬مرتبط با ‪ www.nostarch.com‬را دریافت میکنیم‪.‬‬
‫تنها راهی که میتوانیم ببینیم این پرس و جو توسط بازگشت پاسخ داده شده است‪ ،‬با توجه‬
‫و نگاهکردن به ترافیک سرور ‪ DNS‬در زمانی است که بازگشت رخ میدهد؛ همان طوری‬
‫که در ‪ dns_recursivequery_servr.pcap‬نشان داده شده است‪.‬‬
‫این فایل یک ربایش ترافیک در سرور ‪ DNS‬محلی را در زمانی نشان میدهد که پرس و‬
‫جو آغاز شد‪ .‬نخستین بسته همان پرس و جوی اولیه است که ما در فایل ربایش قبلی دیدیم‪.‬‬
‫در این مرحله‪ ،‬سرور ‪ DNS‬این پرس و جو را دریافت کرده است؛ پایگاه دادهی محلیاش‬
‫را کنترل کرده‪ ،‬و دریافته که پاسخ این پرسش را نمیداند که کدام آدرس ‪ IP‬با نام ‪DNS‬‬
‫‪ nostarch.com‬تطابق دارد‪.‬‬

‫‪209‬‬
‫پروتکلهای الیه باالتر‬ ‫فصل هفتم‬

‫شکل ‪ :10-۷‬پرس و جوی ‪ DNS‬با بیت بازگشت مطلوب‬

‫شکل ‪ :11-۷‬پاسخ پرس و جوی ‪DNS‬‬

‫‪210‬‬
‫پروتکلهای الیه باالتر‬ ‫فصل هفتم‬

‫از آنجایی که این بسته با بیت مطلوب بازگشت فرستاده شد‪ ،‬بنابراین‪ ،‬سرور ‪ DNS‬میتواند‬
‫این پرسش را در تالش برای پیدا کردن جواب از سرور ‪ DNS‬دیگر بپرسد (همان طوری که‬
‫میتوانید در بستهی دوم ببینید)‪.‬‬
‫در دومین بسته‪ ،‬سرور ‪ DNS‬در ‪ 172.16.0.102‬یک پرس و جوی جدید را به ‪4.2.2.1‬‬
‫میفرستد که سروری است که سرور نخست با آن پیکربندی شده تا درخواستهای رو به‬
‫باال را به آن منتقل نماید (همان طوری که در شکل ‪ 12-۷‬نشان داده شده است)‪ .‬این پرس و‬
‫جو آینهی پرس و جوی اولیه است که اساساً سرور ‪ DNS‬را به کاربر تبدیل میکند‪.‬‬

‫شکل ‪ :12-۷‬پرس و جوی ‪ DNS‬بازگشتی‬

‫میتوانیم بگوییم که این یک پرس و جوی جدید است‪ ،‬زیرا شمارهی ‪ ID‬تراکنش آن با‬
‫شمارهی ‪ ID‬تراکنش فایل ربایش قبلی فرق دارد‪ .‬به محض آنکه این بسته توسط سرور‬
‫‪ 4.2.2.1‬دریافت شود‪ ،‬سرور ‪ DNS‬محلی پاسخ نشان داده شده در شکل ‪ 13-۷‬را دریافت‬
‫میکند‪.‬‬
‫‪211‬‬
‫پروتکلهای الیه باالتر‬ ‫فصل هفتم‬

‫شکل ‪ :13-۷‬پاسخ به پرس و جوی ‪ DNS‬بازگشتی‬

‫سرور ‪ DNS‬محلی که این پاسخ را دریافت کرده است میتواند چهارمین و آخرین بسته را‬
‫به کاربر ‪ DNS‬با اطالعات درخواست شده مخابره نماید‪.‬‬
‫اگرچه این مثال تنها یک الیه از بازگشت را نشان داد‪ ،‬ولی بازگشت میتواند چندین بار برای‬
‫یک درخواست ‪ DNS‬انجام شود‪ .‬در اینجا ما پاسخی را از سرور ‪ DNS‬در ‪ 4.2.2.1‬دریافت‬
‫کردهایم‪ ،‬ولی آن سرور میتواند این پرس و جو را بهطور بازگشتی به سرور دیگری ارسال‬
‫کرده باشد تا پاسخ را پیدا کند‪ .‬یک پرس و جوی ساده پیش از آنکه به پاسخ صحیح برسد‬
‫ممکن در سرتاسر جهان بگردد‪ .‬شکل ‪ 14-۷‬فرآیند پرس و جوی ‪ DNS‬بازگشتی را نشان‬
‫میدهد‪.‬‬

‫‪212‬‬
‫پروتکلهای الیه باالتر‬ ‫فصل هفتم‬

‫شکل ‪ :14-۷‬پرس و جوی ‪ DNS‬بازگشتی‬

‫انتقال ناحیهی ‪DNS‬‬


‫یک ناحیهی انتقال‪ DNS 1‬فضای نام‪ 2‬یا گروهی از نامهای ‪ DNS‬است که یک سرور ‪DNS‬‬
‫به پیام محول کرده است‪ .‬برای مثال‪ ،‬رستورانهای ‪ Emma's Diner‬ممکن است یک سرور‬
‫‪ DNS‬داشته باشند که مسئول ‪ emmasdiner.com‬باشد‪ .‬در این مورد‪ ،‬وسایل داخل و خارج‬
‫از ‪ Emma's Diner‬که میخواهند ‪ emmasdiner.com‬را به یک آدرس ‪ IP‬تجزیه کنند نیاز‬
‫به آن خواهند داشت تا با آن سرور ‪ DNS‬بهعنوان مرجع آن ناحیه ارتباط برقرار نمایند‪ .‬اگر‬
‫‪ Emma's Diner‬قرار باشد که رشد کند‪ ،‬آنگاه میتواند دومین سرور ‪ DNS‬را اضافه نماید‬
‫تا تنها بخش پست الکترونیک فضای نامش را اداره نماید (مثالً ‪،)mail.emmasdiner.com‬‬
‫و آن سرور مرجع برای دامنهی فرعی نامه خواهد بود‪ .‬در صورت لزوم میتوان سرورهای‬
‫‪ DNS‬دیگری را برای دامنههای فرعی اضافه کرد (همان طوری که در شکل ‪ 15-۷‬نشان داده‬
‫شده است)‪.‬‬
‫یک ناحیه انتقال زمانی رخ میدهد که دادههای ناحیه بین دو دستگاه منتقل میشوند (بهطور‬
‫معمول برای افزونگی)‪ .‬برای مثال‪ ،‬در سازمانهای با چندین سرور ‪ ،DNS‬ادمینها بهطور‬
‫معمول یک سرور ‪ DNS‬ثانویه را پیکربندی میکنند تا یک کپی از اطالعات ناحیهی ‪DNS‬‬

‫‪1‬‬
‫‪DNS Zone Transfer‬‬
‫‪2‬‬
‫‪namespace‬‬
‫‪213‬‬
‫پروتکلهای الیه باالتر‬ ‫فصل هفتم‬

‫سرور اولیه را در صورت غیر قابل دسترس شدن سرور ‪ DNS‬اولیه حفظ نمایند‪ .‬دو نوع انتقال‬
‫ناحیه وجود دارد‪:‬‬
‫)‪( Full zone transfer (AXFR‬انتقال ناحیهی کامل) – این نوع از انتقالها کل‬
‫ناحیه را بین وسایل منتقل میکند‪.‬‬
‫)‪( Incremental zone transfer (IXFR‬انتقال ناحیهی تدریجی)‪ -‬این نوع از‬
‫انتقالها تنها بخشی از اطالعات ناحیه را منتقل میکند‪.‬‬
‫فایل ‪ dns_axfr.pcap‬حاوی مثالی از یک انتقال ناحیهی کامل بین میزبانهای‬
‫‪ 172.16.16.164‬و ‪ 172.16.16.139‬است‪.‬‬
‫وقتی برای بار اول به این فایل نگاه میکنید‪ ،‬ممکن است متعجب شوید که آیا فایل درستی‬
‫را باز کردهاید یا نه‪ ،‬زیرا بهجای بستههای ‪ UDP‬بستههای ‪ TCP‬را میبینید‪.‬‬

‫شکل ‪ :15-۷‬مسئولیت تقسیم ناحیههای ‪ DNS‬برای فضاهای نام‬

‫‪214‬‬
‫پروتکلهای الیه باالتر‬ ‫فصل هفتم‬

‫اگرچه ‪ DNS‬به ‪ UDP‬تکیه میکند‪ ،‬ولی از ‪ TCP‬برای پارهای از امور – نظیر انتقالهای ناحیه‬
‫– استفاده میکند‪ ،‬زیرا ‪ TCP‬برای مقادیر دادههای مورد انتقال قابل اطمینانتر است‪ .‬سه‬
‫بستهی نخست در این فایل ربایش دستدهی سه طرفهی ‪ TCP‬هستند‪.‬‬

‫چهارمین بسته درخواست عملی انتقال ناحیه را بین ‪ 172.16.16.164‬و ‪ 172.16.16.139‬آغاز‬


‫میکند‪ .‬این بسته حاوی هیچ اطالعات ‪DNS‬ای نیست‪ .‬این بسته بهعنوان یک "بخش ‪TCP‬‬
‫یک ‪ PDU‬بازسازی شده" نشان خورده است‪ ،‬زیرا دادههای فرستاده شده در بستهی‬
‫درخواست انتقال ناحیه در چندین بسته فرستاده شدند‪ .‬بستههای ‪ 4‬و ‪ 6‬حاوی دادههای بسته‬
‫هستند‪ .‬بستهی ‪ 5‬تصدیق آن است که بستهی ‪ 4‬دریافت شده است‪ .‬به سبب روشی که‬
‫‪ Wireshark‬بر اساس آن بستههای ‪ TCP‬را برای خواندن راحتتر جفت میکند و نمایش‬
‫میدهد‪ ،‬این بستهها به این شکل نمایش داده شدهاند‪ .‬برای منظور ما‪ ،‬میتوانیم به بستهی ‪6‬‬
‫بهعنوان درخواست انتقال ناحیهی ‪ DNS‬کامل اشاره نماییم (همان طوری که در شکل ‪16-۷‬‬
‫نشان داده شده است)‪.‬‬
‫درخواست انتقال ناحیه یک پرس و جوی استاندارد است ‪ ،‬ولی بهجای درخواست یک‬
‫نوع رکورد منفرد‪ ،‬نوع ‪ AXFR‬را درخواست میکند ‪ ‬که یعنی میخواهد کل ناحیهی‬
‫‪ DNS‬را از سرور دریافت نماید‪ .‬سرور با رکوردهای ناحیه در بستهی ‪ ۷‬پاسخ میدهد (همان‬
‫طوری که در شکل ‪ 1۷-۷‬نشان داده شده است)‪ .‬همان گونه که میتوانید ببینید‪ ،‬انتقال ناحیه‬
‫حاوی حجم قابل توجهی داده است‪ ،‬و این یکی از مثالهای سادهتر است! با کامل شدن انتقال‬
‫ناحیه‪ ،‬فایل ربایش با فرآیند تفکیک ارتباط ‪ TCP‬پایان پیدا میکند‪.‬‬

‫‪215‬‬
‫پروتکلهای الیه باالتر‬ ‫فصل هفتم‬

‫شکل ‪ :16-۷‬درخواست انتقال کامل ناحیهی ‪DNS‬‬

‫شکل ‪ :1۷-۷‬رخ دادن انتقال کامل ناحیهی ‪DNS‬‬

‫‪216‬‬
‫پروتکلهای الیه باالتر‬ ‫فصل هفتم‬

‫هشدار‪ :‬دادههای موجود در یک ناحیه انتقال در دست افراد میتواند بسیار خطرناک باشد‪.‬‬
‫برای مثال‪ ،‬با بر شمردن یک سرور ‪ DNS‬منفرد میتوانید کل زیرساخت یک شبکه را ترسیم‬
‫نمایید‪.‬‬

‫پروتکل انتقال ابرمتن‬


‫پروتکل انتقال ابرمتن‪ HTTP 1‬ساز و کار تحویل شبکهی جهانی وب است که مرورگرهای‬
‫وب را مقدور مینماید تا برای دیدن صفحات وب با سرورهای وب ارتباط برقرار نمایند‪ .‬در‬
‫اغلب سازمانها‪ HTTP ،‬تا حد زیادی باالترین درصد ترافیک مشاهده شده در کابل را دارند‪.‬‬
‫هر زمانی که یک جستجوی ‪ Google‬را انجام میدهید‪ ،‬یا برای فرستادن یک توئیت به‬
‫‪ Twitter‬متصل میشوید‪ ،‬یا امتیازهای تیم بسکتبال کنتاکی را در ‪ ESPN.com‬کنترل‬
‫میکنید‪ ،‬از ‪ HTTP‬استفاده میکنید‪.‬‬
‫ما به ساختارهای بسته برای انتقال ‪ HTTP‬نگاه نخواهیم کرد‪ .‬از آنجایی که محتوای این‬
‫بستهها با توجه به مقصودشان بسیار گوناگون است‪ ،‬پس این تمرین به شما واگذار میشود‪.‬‬
‫در اینجا به پارهای از کاربردهای عملی ‪ HTTP‬نگاه میکنیم‪.‬‬

‫جستجو با ‪HTTP‬‬
‫‪ HTTP‬بیش از همه عموماً برای جستجوی صفحات وب در یک سرور وب با استفاده از یک‬
‫مرورگر وب مورد استفاده قرار میگیرد‪ .‬فایل ربایش ‪ http_google.pcap‬چنین انتقال‬
‫‪HTTP‬ای را با استفاده از ‪ TCP‬بهعنوان پروتکل الیهی نقل و انتقال نشان میدهد‪ .‬ارتباط با‬
‫دستدهی سه طرفه بین کاربر ‪ 172.16.16.128‬و سرور وبِ ‪ Google‬به آدرس‬
‫‪ 74.125.95.104‬آغاز میشود‪.‬‬
‫به محض برقرار شدن ارتباط‪ ،‬نخستین بسته بهعنوان یک بستهی ‪ HTTP‬از کاربر به سرور‬
‫نشان میخورد (همان طوری که در شکل ‪ 18-۷‬نشان داده شده است)‪.‬‬

‫‪HyperText markup language‬‬


‫‪1‬‬

‫‪21۷‬‬
‫پروتکلهای الیه باالتر‬ ‫فصل هفتم‬

‫شکل ‪ :18-۷‬بستهی درخواست ‪ GET‬اولیهی ‪HTTP‬‬

‫بستهی ‪ HTTP‬از طریق ‪ TCP‬به پورت ‪ 80‬سرور تحویل داده میشود ‪ ‬که پورت استاندارد‬
‫برای ارتباط ‪ HTTP‬است (پورت ‪ 8080‬نیز عرفا استفاده میشود)‪.‬‬
‫بستههای ‪ HTTP‬توسط یکی از هشت روش مختلف درخواست شناسایی میشوند (در‬
‫مشخصهی ‪ HTTP‬نسخهی ‪ 1.1‬تعریف شده است)‪ ،‬که عملی را نشان میدهند که فرستندهی‬
‫بسته در دریافت کننده اجرا خواهد کرد‪ .‬همان طوری که در شکل ‪ 18-۷‬نشان داده شده‬
‫است‪ ،‬این بسته روش خود را بهعنوان ‪ GET‬؛ درخواست نشانگر یکنواخت منبع‪ 1‬را بهعنوان‬
‫‪/‬؛ ونسخهی درخواست را بهصورت ‪ 1.1‬از ‪ HTTP‬شناسایی میکند ‪ .‬این اطالعات به ما‬
‫میگوید که کاربر در حال فرستادن درخواستی برای دانلود ‪ GET‬دایرکتوری ریشهی وب‬
‫(‪ )/‬نسخهی ‪ 1.1‬از ‪ HTTP‬است‪.‬‬
‫سپس‪ ،‬میزبان اطالعات دربارهی خودش را به سرور وب میفرستد‪ .‬این اطالعات شامل‬
‫چیزهایی نظیر عامل کاربر (مرورگر) مورد استفاده‪ ،‬زبانهای پذیرفته شده توسط مرورگر‬

‫‪1‬‬
‫)‪Uniform Resource Indicator (URI‬‬
‫‪218‬‬
‫پروتکلهای الیه باالتر‬ ‫فصل هفتم‬

‫(‪ ،)Accept-Languages‬و اطالعات کوکی (در پایین ربایش ) است‪ .‬سرور میتواند از این‬
‫اطالعات برای تعیین آن استفاده کند که کدام دادهها برای اطمینان حاصل کردن از سازگاری‬
‫برای کاربر برگردانده شود‪.‬‬
‫زمانی که سرور درخواست ‪ HTTP GET‬را در بستهی ‪ 4‬دریافت میکند‪ ،‬با یک ‪TCP‬‬
‫‪ ACK‬پاسخ میدهد که بسته را تصدیق میکند و شروع میکند به انتقال دادههای درخواست‬
‫شده از بستههای ‪ 6‬تا ‪ HTTP .11‬تنها برای صدور دستورهای الیهی برنامه کاربردی بین کاربر‬
‫و سرور مورد استفاده قرار میگیرد‪ .‬زمانی که نوبت به انتقال دادهها میرسد‪ ،‬کنترل الیهی‬
‫برنامه کاربردی دیده نمیشود‪ ،‬جز در آغاز و پایان جریان داده‪.‬‬
‫همان طوری که در شکل ‪ 19-۷‬نشان داده شده است‪ ،‬دادهها از سرور در بستههای ‪ 6‬و ‪ ،۷‬و‬
‫تصدیق (اعالم وصول) از سوی کاربر در بستهی ‪ ،8‬دو بستهی دادهی دیگر در بستههای ‪ 9‬و‬
‫‪ ،10‬و تصدیق دیگر در بستهی ‪ 11‬فرستاده میشوند‪ .‬همهی این بستههادر ‪ Wireshark‬در‬
‫بخشهای ‪ TCP‬نشان داده میشوند و نه بستههای ‪ ،HTTP‬هرچند که ‪ HTTP‬هنوز هم مسئول‬
‫انتقال آن میزبان است ‪.‬‬

‫شکل ‪ TCP :19-۷‬دادهها را بین مرورگر کاربر و سرور وب منتقل میکند‪.‬‬

‫همان طوری که در شکل ‪ 20-۷‬نشان داده شده است‪ ،‬به محض انتقال این دادهها‪ ،‬یک رشتهی‬
‫بازسازی دادهها فرستاده میشود‪.‬‬

‫‪219‬‬
‫پروتکلهای الیه باالتر‬ ‫فصل هفتم‬

‫شکل ‪ :20-۷‬آخرین بستهی ‪ HTTP‬با کد پاسخ ‪200‬‬

‫‪ HTTP‬برای نشان دادن نتایج یک روش درخواست از تعدادی کد پاسخِ از پیش تعریف‬
‫شده استفاده میکند‪ .‬در این مثال‪ ،‬ما بستهای با کد پاسخ ‪ 200‬را میبینیم ‪ ‬که یک روش‬
‫درخواست موفق را نشان میدهد‪ .‬این بسته همچنین شامل مهر زمانی و بعضی اطالعات دیگر‬
‫دربارهی کدگذاری محتوا و پارامترهای پیکربندی سرور وب است‪ .‬زمانی که کاربر این بسته‬
‫را دریافت میکند‪ ،‬تراکنش کامل میشود‪.‬‬
‫پست کردن دادهها با ‪HTTP‬‬
‫اکنون که به فرآیند دانلود کردن دادهها از سرور وب نگاه کردیم‪ ،‬اجازه دهید تا توجه خود‬
‫را به آپلودکردن دادهها معطوف نماییم‪ .‬فایل ‪ http_post.pcap‬حاوی مثال بسیار سادهای از‬
‫یک آپلود است‪ :‬یک کاربر در حال پست گذاشتن کامنتی در یک وب سایت است‪ .‬پس از‬
‫دستدهی سه طرفهی اولیه‪ ،‬کاربر ‪ 172.16.16.128‬یک بستهی ‪ HTTP‬را به سرور وب‬
‫‪ 69.163.176.56‬میفرستد (همان طوری که در شکل ‪ 21-۷‬نشان داده شده است)‪.‬‬

‫‪220‬‬
‫پروتکلهای الیه باالتر‬ ‫فصل هفتم‬

‫شکل ‪ :21-۷‬بستهی ‪ POST‬در ‪HTTP‬‬

‫این بسته بهمنظور آپلودکردن دادهها در یک سرور وب برای پردازش از روش ‪ POST‬استفاده‬
‫میکند ‪ .‬روش ‪ POST‬که در اینجا مورد استفاده قرار گرفته است نشانگر یکنواخت منبع‬
‫(‪  /wp-comments-post.php )URI‬و ‪ HTTP 1.1 Request version‬را مشخص‬
‫میکند‪ .‬برای دیدن محتوای دادههای پست شده‪ ،‬بخش ‪ Line-based Text Data‬بسته را باز‬
‫کنید ‪.‬‬

‫زمانی که دادهها در این ‪ POST‬انتقال پیدا کردند‪ ،‬یک بستهی ‪ ACK‬فرستاده میشود‪ .‬همان‬
‫طوری که در شکل ‪ 22-۷‬نشان داده شده است‪ ،‬سرور با بستهی ‪ 6‬پاسخ میدهد و کد ‪302‬‬
‫را منتقل میکند ‪ ‬که یعنی "پیدا شد"‪ .‬کد پاسخ ‪ 302‬یک راه عمومی برای تعیین جهت‬
‫در دنیای ‪ HTTP‬است‪ .‬فیلد ‪ Location‬در این بسته تصریح میکند که کاربر قرار است به‬
‫کجا هدایت شود ‪ .‬در این مورد‪ ،‬این جهت به سوی مکانی در صفحهی وبِ آغاز کننده‬

‫‪221‬‬
‫پروتکلهای الیه باالتر‬ ‫فصل هفتم‬

‫است که کامنت در آن پست شد‪ .‬در نهایت‪ ،‬سرور کد وضعیت ‪ 200‬را ارسال میکند‪ ،‬و‬
‫محتوای صفحه در چندین بستهی بعدی برای تکمیل انتقال فرستاده میشود‪.‬‬

‫شکل ‪ :22-۷‬پاسخ ‪ 302‬در ‪ HTTP‬برای تعیین جهت مورد استفاده قرار میگیرد‬
‫ایدههای آخر‬
‫این فصل عمومیترین پروتکلهایی را معرفی کرد که شما در زمان بررسی ترافیک در الیهی‬
‫برنامه کاربردی با آنها مواجه خواهید شد‪ .‬در فصلهای بعدی‪ ،‬پروتکلهای جدید را مورد‬
‫بررسی قرار خواهیم داد و ویژگیهای دیگر این پروتکلها را در آنجا پوشش دادهایم و‬
‫دامنهی گستردهای از سناریوهای واقعی را مورد کاوش قرار میدهیم‪.‬‬
‫برای فراگیری بیشتر در خصوص تک تک پروتکلها‪ RFC ،‬مربوط به آن را مطالعه کنید یا‬
‫به کتاب راهنمای ‪ )The TCP/IP Guide( TCP/IP‬نوشتهی چارلز کوزِریوک‪ 1‬نگاهی‬
‫بیندازید‪ .‬همچنین فهرست منابع در پیوست را نگاه کنید‪.‬‬

‫‪1‬‬
‫)‪Charles Kozeriok (No Starch Press, 2005‬‬
‫‪222‬‬
‫فصل ‪8‬‬
‫سناریوهای واقعی پایه‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫سناریوهای واقعی پایه‬


‫در آغاز این فصل همچنان که از ‪ Wireshark‬برای تحلیل مشکالت شبکه در دنیای واقعی‬
‫استفاده میکنیم وارد عمق تحلیل بسته خواهیم شد‪ .‬در بخش نخست‪ ،‬سناریوهایی را مورد‬
‫تجزیه و تحلیل قرار خواهیم داد که ممکن است بهعنوان مهندس شبکه‪ ،‬تکنسین میز کمک‪،1‬‬
‫یا سازنده و طراح برنامهی کاربردی هر روزه با آنها برخورد نمایید‪ .‬همهی اینها از تجربیات‬
‫واقعی من و تجربیات همکارانم حاصل شدهاند‪ .‬ما از ‪ Wireshark‬برای بررسی ترافیک‬
‫توییتر‪ ،2‬فیسبوک‪ 3‬و ‪ ESPN.com‬استفاده خواهیم کرد تا ببینیم که این سرویسهای رایج‬
‫چگونه عمل میکنند‪.‬‬
‫بخش دوم این فصل مجموعهای از مسائل و مشکالت واقعی را مطرح مینماید‪ .‬من برای هر‬
‫موقعیت موجود‪ ،‬پیرامون هر مشکل را توضیح میدهم و اطالعاتی را ارائه خواهم داد که در‬
‫آن زمان برای تحلیلگر موجود بود‪ .‬پس از ایجاد زمینه و اساس کار به تجزیه و تحلیل خواهیم‬
‫پرداخت و من روش استفاده شده برای ربایش بستههای مقتضی را شرح میدهم و شما را در‬
‫فرآیند تحلیل راهنمایی خواهم کرد‪ .‬به محض تکمیل تحلیل‪ ،‬یک راه حل کامل را برای‬
‫مسئله ارائه خواهم داد و یا شما را همراه با مروری اجمالی بر درسهای فراگرفته شده به سمت‬
‫راه حلهای بالقوه هدایت خواهم کرد‪.‬‬
‫در هر بخش‪ ،‬به یاد داشته باشید که تجزیه و تحلیل یک فرآیند بسیار پویاست‪ ،‬و روشهایی‬
‫که من برای تحلیل هر سناریو مورد استفاده قرار میدهم ممکن است همانهایی نباشند که‬
‫شما میتوانید استفاده کنید‪ .‬هرکسی به طریقی متفاوت تحلیل میکند‪ .‬مهمترین چیز آن است‬
‫که نتیجهی نهایی تحلیل مشکلی را حل کند یا یک فرصت یادگیری را فراهم آورد‪ .‬عالوه‬
‫بر این‪ ،‬اغلب مسائل مورد بحث در این فصل را احتماالً میتوان بدون یک ‪packet sniffer‬‬

‫‪1‬‬
‫‪help desk‬‬
‫‪2‬‬
‫‪Twitter‬‬
‫‪3‬‬
‫‪Facebook‬‬
‫‪224‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫حل کرد‪ .‬زمانی که برای نخستین بار یاد میگرفتم که چگونه بستهها را تحلیل کنم‪ ،‬دریافتم‬
‫که بررسی کردن مسائل معمول به روشهای غیر معمول و با استفاده از تکنیکهای تحلیل‬
‫بسته سودمند است و به همین دلیل است که این سناریوها را برای شما ارائه میکنم‪.‬‬

‫شبکه اجتماعی در سطح بسته‬


‫نخست‪ ،‬به ترافیک دو وبسایت شبکه اجتماعی محبوب نگاهی خواهیم داشت؛ یعنی‪ ،‬توییتر‬
‫و فیسبوک‪ .‬فرآیند احراز هویت‪ 1‬مرتبط با هر سرویس را بررسی خواهیم کرد و خواهیم‬
‫دید که این دو کارکرد بسیار شبیه به هم چگونه برای اجرای کاری مشابه از روشهای‬
‫مختلفی استفاده میکنند‪ .‬همچنین نگاهی خواهیم کرد که چگونه بعضی از کارکردهای‬
‫عمدهی هر یک از این سرویسها چگونه عمل میکنند تا درکی بهتر از ترافیک به دست‬
‫آید که در فعالیتهای معمول هر روزهی خود ایجاد میکنیم‪.‬‬

‫ربایش ترافیک توییتر‬


‫خواه از توییتر برای به روز بودن در مورد اخبار جامعهی فنآوری استفاده کنید و یا برای گله‬
‫کردن از دوست خود‪ ،‬در هر حال توییتر یکی از سرویسها در اینترنت است که عموماً از‬
‫آن استفاده میشود‪ .‬برای این سناریو ربایشی از یک ترافیک توییتر را در‬
‫‪ twitter_login.pcap‬پیدا خواهید کرد‪.‬‬

‫نکته‪ :‬وبسایتها بارها کد خود را عوض میکنند‪ .‬در نتیجه‪ ،‬اگر سعی کنید که دوباره‬
‫ربایشها را در چند بخش به وجود آورید‪ ،‬آنگاه ممکن است دریابید که نتایج شما با آنچه‬
‫در اینجا آمده متفاوت است‪.‬‬

‫‪1‬‬
‫‪authentication‬‬
‫‪225‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫فرآیند ورود به توییتر‬


‫زمانی که تحلیل بسته تدریس میکنم‪ ،‬یکی از نخستین چیزهایی که دانشجویانم را مجبور‬
‫میکنم انجام دهند آن است که وارد سیستم وبسایتی شوند که بهطور معمول از آن استفاده‬
‫میکنند و سپس ترافیک را از فرآیند ورود به سیستم ربایش نمایند‪ .‬از این کار دو مقصود را‬
‫دنبال میکنم‪ :‬من دانشجویان را در معرض بستههای بیشتر (بهطور کلی) قرار میدهم‪ ،‬و این‬
‫کار آنان را قادر میسازد تا با جستجو به دنبال رمزهای عبور ‪ plaintext‬که از سیم منتقل‬
‫میشوند ناامنیها را در فعالیتهای روزانهی خود کشف نمایند‪.‬‬
‫خوشبختانه‪ ،‬فرآیند احراز هویت توییتر کامالً ناایمن نیست‪ .‬در شکل ‪ 1-8‬میتوانید ببینید که‬
‫سه بستهی نخست دستدهی ‪ TCP‬را بین دستگاه محلی ما ‪  172.16.16.128‬و سرور راه‬
‫دور ‪  168.143.162.68‬را تشکیل میدهند‪ .‬سرور به دنبال شناسایی اتصال ما در پورت‬
‫‪  443‬است که بهطور معمول با ‪ SSL‬از طریق ‪ – HTTP‬که عموماً به آن ‪ HTTPS‬گفته‬
‫میشود – مرتبط است که شکلی ایمن از انتقال دادهها است‪ .‬تنها بر پایهی اینها میتوانیم‬
‫فرض کنیم که این یک ترافیک ‪ SSL‬است‪.‬‬

‫شکل ‪ :1-8‬اتصال دستدهی با پورت ‪443‬‬

‫بستههایی که به دنبال دستدهی میآیند‪ ،‬بخشی دستدهی رمزگذاری شدهی ‪ SSL‬است‪.‬‬


‫پروتکل ‪ SSL‬بر کلیدها تکیه میکند؛ یعنی‪ ،‬رشتههایی از کاراکترهای استفاده شده برای‬
‫رمزگذاری و رمزگشایی کردن از ارتباط بین دو طرف‪ .‬فرآیند دستدهی عبارت است از‬
‫انتقال رسمی این کلیدها بین میزبانها‪ ،‬و همچنین مذاکرهی انواع مشخصههای ارتباط و‬
‫رمزگذاری‪ .‬به محض تکمیل این دستدهی‪ ،‬انتقال ایمن دادهها آغاز میشود‪.‬‬

‫‪226‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫بهمنظور یافتن بستههای رمزگذاری شدهای که تبادل دادهها را اداره میکنند‪ ،‬به دنبال‬
‫بستههایی باشید که در ستون ‪ Info‬از قسمت ‪ Packet Details‬بهعنوان ‪Application Data‬‬
‫شناسایی شدهاند‪ .‬بزرگ کردن بخش ‪ SSL‬هر کدام از این بستهها فیلد ‪Encrypted‬‬
‫‪ Application Data‬را نشان خواهد داد که حاوی دادههای رمزگذاری شدهی غیر قابل‬
‫خواندن است ‪( ‬همان طوری که در شکل ‪ 2-8‬نشان داده شده است)‪ .‬این امر انتقال نام‬
‫کاربر و رمز عبور در طول فرآیند ورود به سیستم را نشان میدهد‪.‬‬

‫شکل ‪ :2-8‬گواهیهای رمزگذاری شدهی مخابره شده‬

‫احراز هویت بهطور خالصه ادامه پیدا میکند تا آنکه اتصال فرآیند قطع خود را با یک‬
‫‪ FIN/ACK‬در بستهی ‪ 16‬آغاز نماید‪ .‬به دنبال احراز هویت‪ ،‬انتظار داریم که مرورگرمان به‬
‫سوی صفحهی خانهی توییترمان هدایت شود‪ ،‬و این دقیقاً همان چیزیست که رخ میدهد‪.‬‬
‫همان طوری که میتوانید در شکل ‪ 3-8‬ببینید‪ ،‬بستههای ‪ ،21 ،19‬و ‪ 22‬بخشی از فرآیند‬
‫دستدهی هستند که اتصال جدیدی را با همان سرور دور ‪ 168.143.162.68‬برقرار میکنند‪،‬‬
‫ولی این بار اتصال بهجای پورت ‪ 443‬از طریق پورت ‪ 80‬انجام میشود ‪ .‬به دنبال تکمیل‬
‫این دستدهی‪ ،‬درخواست ‪ HTTP GET‬را در بستهی ‪ 23‬برای دایرکتوری ریشهی سرور‬

‫‪22۷‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫وب (‪ )/‬میبینیم ‪ .‬سرور این درخواست را در بستهی ‪ 24‬تصدیق میکند ‪ ‬و انتقال دادهها‬
‫را از طریق چندین بستهی بعدی آغاز مینماید‪ .‬محتوای بستهی ‪ 41‬تکمیل انتقال دادههای‬
‫مرتبط با درخواست ‪ GET‬را عالمت میزند‪.‬‬

‫شکل ‪ :3-8‬درخواست ‪ GET‬برای دایرکتوری ریشهی صفحهی خانهی توییتر (‪ )/‬به محض تکمیل احراز هویت‬

‫در بقیهی فایل ربایش چندین درخواست ‪ GET‬انجام میشود تا تصاویر و سایر فایلهای پیوند‬
‫خورده با صفحهی خانه بازیابی شوند‪.‬‬
‫فرستادن دادهها توسط یک توییت‬
‫گام بعدی پس از ورود به سیستم عبارت است از آنکه به دنیا بگویید چه چیزی در ذهنتان‬
‫دارید‪ .‬از آنجایی که من در میانهی نوشتن یک کتاب هستم‪ ،‬بنابراین‪ ،‬توییت میکنم‪ " ،‬این‬
‫یک توییت برای تحلیل بستهی عملی‪ ،‬چاپ دوم است" و ترافیک را از پستگذاری ربایش‬
‫میکنم که در فایل ‪ twitter_tweet.pcap‬توییت میکند‪.‬‬
‫این فایل ربایش بهمجرد ارائه و ثبت توییت آغاز میشود‪ .‬این کار با یک دستدهی بین‬
‫ایستگاه کاری محلی ما ‪ 172.16.16.134‬و آدرس دور ‪ 168.143.162.100‬آغاز میشود‪.‬‬
‫بستهی چهارم و پنجم در این ربایش شامل یک بستهی ‪ HTTP‬فرستاده شده از کاربر به سرور‬
‫هستند‪ .‬برنامهی ‪ Wireshark‬دادههای موجود در این دو بسته را ترکیب میکند‪ ،‬و بهمنظور‬
‫سهولت دیدن آن را در قسمت ‪ Packet Details‬از بستهی ‪ 5‬قرار میدهد‪.‬‬
‫بهمنظور بررسی این سرآیند ‪ ،HTTP‬بخش ‪ HTTP‬را در قسمت ‪ Packet Details‬از بستهی‬
‫پنجم بزرگ کنید (همان طوری که در شکل ‪ 4-8‬نشان داده شده است)‪ .‬خواهید دید که‬

‫‪228‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫روش ‪ POST‬با نشانی وبِ‪ /status/update 1‬استفاده خواهد شد ‪ .‬میدانیم که این بهواقع‬
‫بستهای از توییت است‪ ،‬زیرا فیلد ‪ Host‬حاوی مقدار ‪ twitter.com‬است ‪.‬‬

‫شکل ‪ 4-8‬الف ‪ HTTP POST :‬برای به هنگام کردن توییتر‬

‫به اطالعات موجود در فیلد ‪ Line-based Text Data‬بسته در شکل ‪ 5-8‬توجه کنید ‪.‬‬
‫زمانی که این داده را تحلیل میکنید‪ ،‬فیلدی به نام ‪ Authenticity Token‬را خواهید دید که‬
‫به دنبال آن فیلد ‪ status‬در یک ‪ URL‬قرار دارد که حاوی مقدار زیر است‪:‬‬

‫‪This+is+a+tweet-i-‬‬
‫‪for+practical+packet+analysis%2c+second+edition‬‬

‫مقدار فیلد ‪ status‬توییتی است که من آن را بهصورت ‪ plaintext‬رمزگذاری نشده ارائه‬


‫کردهام‪.‬‬

‫‪1‬‬
‫)‪Uniform Resource Locator (URL‬‬
‫‪229‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫در اینجا قدری نگرانی امنیتی وجود دارد‪ ،‬زیرا بعضی از افراد از توییتهای خود حفاظت‬
‫میکنند و نمیخواهند که توسط کسی دیده شوند‪ .‬این بدان معنی نیست که هیچ کس‬
‫نمیتواند توییت را بخواند‪ ،‬بلکه کاربری در همان شبکه میتواند این ترافیک را ردگیری‬
‫کند و محتوای آن توییت را بهروشنی ببیند‪.‬‬

‫شکل ‪ :5-8‬توییت به شکل ‪plaintext‬‬

‫پیامدهی مستقیم توییتر‬


‫اکنون سناریویی با بعضی ایجابهای امنیتی را در نظر خواهیم گرفت‪ :‬توییتر پیامدهی را‬
‫هدایت میکند‪ ،‬که این امر کاربران را قادر میسازد تا پیامهای احتماالً خصوصی را به‬
‫اشتراک بگذارند‪ .‬فایل ‪ twitter_dm.pcap‬یک ربایش بسته از یک پیام مستقیم توییتر است‪.‬‬
‫همان طوری که در شکل ‪ 6-8‬نشان داده شده است‪ ،‬پیامهای مستقیم یکسره خصوصی نیستند‪.‬‬

‫‪230‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫شکل ‪ :6-8‬یک پیام مستقیم آشکار‬

‫نمایشگر بستهی ‪ ۷‬در شکل ‪ 6-8‬نشان میدهد که محتوا هنوز ‪ plaintext‬است‪ .‬این امر در‬
‫فیلد ‪ Line-based Text Data‬مشهود است ‪ ‬که ما آن را در ربایش قبلی دیدیم‪.‬‬
‫آگاهی و دانشی که اینجا دربارهی توییتر به دست میآوریم الزاماً حیرتآور نیست‪ ،‬ولی‬
‫میتواند شما را وادار کند تا در خصوص ارسال دادههای حساس از طریق پیامهای خصوصی‬
‫توییتر از طریق شبکههای غیر موثق تجدید نظر نمایید‪.‬‬

‫ربایش ترافیک فیسبوک‬


‫پس از خواندن توییتهایم‪ ،‬اکنون مایلم تا وارد فیسبوک شوم تا ببینم که دوستانم به چه‬
‫مشغول هستند‪ ،‬بهطوری که میتوانم به شکلی غیر مستقیم در میان آنها زندگی کنم‪ .‬اکنون‬
‫بیایید از ‪ Wireshark‬برای ربایش و تحلیل ترافیک فیسبوک استفاده کنیم‪.‬‬

‫‪231‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫فرآیند ورود به فیسبوک‬


‫ما نخست با فرآیند ورود به سیستم ربایش شده در ‪ facebook_login.pcap‬کار خود را آغاز‬
‫خواهیم کرد‪ .‬همان طوری که در شکل ‪ ۷-8‬نشان داده شده است‪ ،‬عمل ربایش بهمحض ارائه‬
‫شدن گواهیها آغاز میشود‪ .‬همانند فرآیند ورود به توییتر‪ ،‬یک دستدهی ‪ TCP‬را از طریق‬
‫پورت ‪ 443‬مشاهده میکنیم ‪ .‬ایستگاه کاری ما در ‪  172.16.0.122‬در حال آغاز کردن‬
‫ارتباطی با ‪ 69.63.180.173‬است ‪ ،‬یعنی سروری که فرآیند احراز هویت فیسبوک را‬
‫اداره میکند‪ .‬بهمجرد تکمیل دستدهی‪ ،‬دستدهی ‪ SSL‬رخ میدهد ‪ ،‬و گواهیهای‬
‫ورود به سیستم ارائه میشوند‪.‬‬

‫شکل ‪ : ۷-8‬گواهیهای ورود به سیستم به شکلی ایمن توسط ‪ HTTPS‬مخابره میشوند‪.‬‬

‫یک تفاوت بین فرآیند احراز هویت فیسبوک و توییتر آن است که ما بالفاصله پایان ارتباط‬
‫احراز هویت را به دنبال مخابره و ارسال گواهیهای ورود به سیستم نمیبینیم‪ .‬در عوض یک‬
‫درخواست ‪ GET‬را برای ‪ /home.php‬در سرآیند ‪ HTTP‬بستهی ‪ 12‬میبینیم ‪( ‬همان‬
‫طوری که در شکل ‪ 8-8‬نشان داده شده است)‪.‬‬
‫همان طوری که در بستهی ‪ 64‬نشان داده شده است‪ ،‬اتصال به کار رفته برای احراز هویت‬
‫پس از تحویل شدن محتوای ‪ home.php‬پایان پیدا میکند ‪( ‬پس از پایان فایل ربایش در‬
‫شکل ‪.)9-8‬‬

‫‪232‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫شکل ‪ :8-8‬پس از احراز هویت‪ ،‬درخواست ‪ GET‬برای ‪ /home.php‬رخ میدهد‪.‬‬

‫نخست‪ ،‬اتصال ‪ HTTP‬از طریق پورت ‪ 80‬پایان پیدا میکند (بستهی ‪ ، )62‬و سپس اتصال‬
‫‪ HTTPS‬از طریق پورت ‪ 443‬پایان پیدا مینماید‪.‬‬

‫شکل ‪ : 9-8‬اتصال ‪ HTTP‬پایان یافته و به دنبال آن اتصال ‪ HTTPS‬قرار دارد‪.‬‬

‫پیامدهی خصوصی با فیسبوک‬


‫اکنون که فرآیند احراز هویت ورود به فیسبوک را مورد بررسی قرار دادیم‪ ،‬بیایید ببینیم که‬
‫فیسبوک چگونه پیامدهی خصوصی را اداره میکند‪ .‬فایل ‪facebook_message.pcap‬‬
‫حاوی بستههای ربایش شده به هنگام فرستادن پیامی از حساب من به یک حساب دیگر‬
‫‪233‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫فیسبوک است‪ .‬وقتی که این فایل را باز میکنید‪ ،‬ممکن است از دیدن تعداد بستههای کمی‬
‫که در آن وجود دارد غافلگیر شوید‪.‬‬
‫دو بستهی نخست شامل ترافیک ‪ HTTP‬مسئول فرستادن خود پیام هستند‪ .‬زمانی که سرآیند‬
‫‪ HTTP‬بستهی ‪ 2‬را بزرگ کنید (همان طوری که در شکل ‪ 10-8‬نشان داده شده است)‬
‫خواهید دید که روش ‪ POST‬با یک رشتهی ‪ URL‬نسبتاً طوالنی مورد استفاده قرار گرفته‬
‫است ‪ .‬همان طوری که میتوانید ببینید‪ ،‬این رشته حاوی مرجعی برای ‪ AJAX‬است‪.‬‬

‫شکل ‪ :10-8‬این ‪ POST‬پروتکل ‪ HTTP‬به ‪ AJAX‬ارجاع میکند‬

‫)‪ Asynchronous JavaScript and XML (AJAX‬یک شیوهی سمت کاربر برای به وجود‬
‫آوردن برنامههای کاربردی تعاملی وب است که اطالعات را از سروری در پسزمینه بازیابی‬
‫مینمایند‪ .‬در حالی که میتوانید انتظار داشته باشید که پس از فرستاده شدن پیام خصوصی به‬
‫مرورگر کاربر‪ ،‬نشست به صفحهی دیگری هدایت شود (همان طوری که توییتر پیام را هدایت‬

‫‪234‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫میکند)‪ ،‬ولی این اتفاق نمیافتد‪ .‬در این حالت‪ ،‬استفاده از ‪ AJAX‬شاید به این معنی باشد که‬
‫پیام بهجای یک صفحهی منفرد از نوعی ‪ pop-up‬تعاملی فرستاده شده است‪ ،‬و این یعنی که‬
‫هیچ هدایت مجدد یا بارگذاری مجددی الزم نیست‪ .‬این یکی از مزایای بعضی از اجراهای‬
‫‪ AJAX‬است‪.‬‬
‫همان طوری که در شکل ‪ 11-8‬نشان داده شده است‪ ،‬شما میتوانید با بزرگ کردن قسمت‬
‫‪ Line-based Text Data‬از بستهی ‪ 2‬محتوای این پیام خصوصی را مورد بررسی قرار دهید‪.‬‬
‫همانند توییتر‪ ،‬به نظر میرسد مثل اینکه پیامهای خصوصی فیسبوک بهطور رمز نشده‬
‫فرستاده میشوند‪.‬‬

‫شکل ‪ :11-8‬محتوای این پیام فیسبوک بهصورت ‪ plaintext‬دیده میشود‪.‬‬

‫مقایسه کردن روشهای توییتر در برابر فیسبوک‬


‫روشهای احراز هویت و پیامدهی دو سرویس وبِ توییتر و فیسبوک را دیدید‪ .‬هر یک از‬
‫این دو سرویس رویکردی متفاوت دارند‪ .‬برنامهنویسان ممکن است استدالل کنند که روش‬
‫توییتر برای احراز هویت بهتر از روش فیسبوک است‪ ،‬زیرا میتواند سریعتر و مؤثرتر باشد‪.‬‬
‫محققان امنیت ممکن است استدالل کنند که روش فیسبوک بهتر است‪ ،‬زیرا تضمین میکند‬
‫که همهی محتوا تحویل داده شود‪ .‬همچنین‪ ،‬پیش از آنکه اتصال احراز هویت بسته شود به‬
‫هیچ احراز هویت بیشتری نیاز نیست و این امر میتواند به نوبهی خود دست یافتن به حمالت‬

‫‪235‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫فردی در میان‪ 1‬را دشوارتر نماید‪( .‬حمالت فردی در میان حمالتی هستند که در آنها کاربران‬
‫مخرب ترافیک را بین دو طرف ارتباط ردگیری میکنند‪ ).‬در واقعیت‪ ،‬تفاوتهای بین‬
‫روشهای احراز هویت این دو وبسایت بسیار کم هستند‪ ،‬ولی بهواقع نشان میدهند که این‬
‫تفاوتها زمانی میتوانند رخ دهند که این دو برنامه برای تهیهی کاری تخصیص داده شده‬
‫باشند که وظیفهی مشابهی را اجرا مینماید‪.‬‬
‫اگرچه این جالب است‪ ،‬ولی نکتهی این تحلیل یافتن آن نبود که توییتر و فیسبوک دقیقاً‬
‫چگونه کار میکنند‪ ،‬بلکه هدف تنها آن بود که شما را در معرض ترافیکی بگذارد که بتوانید‬
‫آنها را با هم مقایسه نمایید‪ .‬اگر به این نیاز داشته باشید که بررسی کنید چرا سرویسهای‬
‫مشابه آنطور که باید عمل نمیکنند و یا اینکه بکندی کار میکنند‪ ،‬آنگاه این خط مبنا‬
‫میتواند چارچوبی خوب را فراهم آورد‪.‬‬

‫ربایش ترافیک ‪ESPN.com‬‬


‫پس از گردش در شبکهی اجتماعی ‪ ،‬کار بعدی من آن است که سری به آخرین سرخط‬
‫اخبار ورزشی و امتیازها بزنم‪ .‬بعضی از سایتها همیشه تحلیلهای جالبی را ارائه میدهند‪ ،‬و‬
‫‪ http://www.espn.com/‬یکی از آنها است‪ .‬من ترافیک کامپیوتری را ربایش کردهام که‬
‫در حال جستجوی وبسایت ‪ ESPN‬در فایل ‪ http_espn.pcap‬است‪.‬‬
‫این فایل ربایش حاوی بستههای بسیار زیادی است (دقیقاً ‪ 956‬بسته)‪ .‬این برای ما دادههای‬
‫خیلی زیادی است که بتوانیم آنها را در تالش برای تشخیص تک تک اتصالها و موارد‬
‫خالف قاعده بهطور دستی در کل فایل مرور کنیم و بنابراین بهمنظور سادهتر شدن این فرآیند‬
‫از بعضی ویژگیهای تحلیلی ‪ Wireshark‬استفاده خواهیم کرد‪.‬‬

‫‪1‬‬
‫‪man-in-the-middle attack‬‬
‫‪236‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫استفاده از پنجرهی ‪Conversations‬‬


‫صفحهی خانهی ‪ ESPN‬شامل مقدار زیادی از زرق و برقهای بصری است‪ ،‬و بنابراین درک‬
‫این امر ساده است که چرا انتقال این دادهها به ما تقریباً هزار بسته را به خود اختصاص میدهد‪.‬‬
‫هرگاه انتقال دادههای زیادی داشته باشید‪ ،‬دانستن منشأ این دادهها میتواند سودمند باشد‪ ،‬و‬
‫از آن مهمتر‪ ،‬آیا اینها از یک منبع هستند و یا چند منبع‪ .‬با استفادهی از پنجرهی‬
‫‪ Conversations‬برنامهی ‪ Wireshark‬میتوانیم آن را پیدا کنیم ► ‪(Statistics‬‬
‫)‪.Conversations‬‬
‫شکل ‪ 12-8‬مثالی با ‪ 14‬گفتگوی ‪ IP‬منحصر به فرد‪ 25 ،‬اتصال ‪ TCP‬منحصر به فرد‪ ،‬و ‪14‬‬
‫گفتگوی ‪ UDP‬منحصر به فرد را نشان میدهد که همگی با جزئیات در پنجرهی اصلی‬
‫‪ Conversations‬نمایش داده شدهاند‪ .‬اینجا خیلی خبره‪ ،‬بهویژه فقط برای یک سایت‪.‬‬

‫شکل ‪ :12-8‬پنجرهی ‪ Conversations‬چندین اتصال منحصر به فرد را نشان میدهد‪.‬‬

‫‪23۷‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫استفاده از پنجرهی ‪Protocol Hierarchy Statistics‬‬


‫برای دیدن بهتر وضعیت‪ ،‬میتوانیم پروتکلهای الیهی برنامهی کاربردی استفاده شده توسط‬
‫این اتصالهای ‪ TCP‬و ‪ UDP‬را ببینیم‪ .‬همان طوری که در شکل ‪ 13-8‬نشان داده شده است‪،‬‬
‫پنجرهی ‪ Protocol Hierarchy Statistics‬را باز کنید )‪.(Statistics ► Protocol Hierarchy‬‬

‫شکل ‪ :13-8‬پنجرهی ‪ Protocol Hierarchy Statistics‬توزیع پروتکلهای موجود در ربایش‬

‫همان طوری که میتوانید ببینید‪ TCP ،‬به میزان ‪ 9۷/0۷‬درصد از بستهها در ربایش ‪ ،‬و‬
‫حسابهای ‪ 2/93 UDP‬درصد باقیمانده ‪ ‬را تشکیل میدهند‪ .‬همان طوری که انتظار‬
‫میرود‪ ،‬ترافیک ‪ TCP‬همگی ‪ HTTP‬است ‪ ،‬که باز هم به نوعهای فایل منتقل شده از‬
‫طریق ‪ HTTP‬ریز شده است‪.‬‬
‫اینکه میگویم همهی ترافیک ‪ TCP‬از نوع ‪ HTTP‬است ممکن است گیج کننده به نظر‬
‫برسد‪ ،‬زیرا ‪ Wireshark‬تنها ‪ 12/66‬درصد را بهعنوان ‪ HTTP‬نشان میدهد‪ ،‬ولی ‪84/41‬‬
‫درصد دیگر ترافیک خالص ‪ TCP‬است (بستهی انتقال دادهها و کنترل)‪ .‬همهی ترافیک ‪UDP‬‬
‫نشان داده شده بر پایهی ورودی تحت سرآیند ‪ UDP‬از نوع ‪ DNS‬است ‪.‬‬

‫‪238‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫تنها بر اساس این اطالعات‪ ،‬میتوانیم چند مورد را نتیجهگیری کنیم‪ .‬نخست‪ ،‬از مثالهای‬
‫قبلی میدانیم که تراکنشهای ‪ DNS‬بسیار کوچک هستند؛ پس این حقیقت که ‪ 28‬بستهی‬
‫‪( DNS‬همان طوری که در ستون ‪ Packets‬در کنار ورودی ‪ Domain Name Service‬در‬
‫شکل ‪ 13-8‬فهرست شده است) وجود دارد به معنی آن است که میتوانیم ‪ 14‬تراکنش ‪DNS‬‬
‫داشته باشیم‪ .‬ما این عدد را با تقسیم کردن کل تعداد بستهها بر دو به دست میآوریم که‬
‫معرف جفت درخواستها و پاسخها است‪ .‬اگر زیر سرآیند ‪ UDP‬از پنجرهی‬
‫‪ Conversations‬را ببینید‪ ،‬نشان میدهد که بهواقع ‪ 14‬گفتگو وجود دارد‪ ،‬که هر تراکنش‬
‫‪ DNS‬را توضیح میدهد و فرض ما را تأیید میکند‪.‬‬
‫پرس و جوهای ‪ DNS‬به خودی خود اتفاق نمیافتند‪ ،‬و تنها ترافیک دیگر در ربایش ترافیک‬
‫‪ HTTP‬است‪ .‬این به ما میگوید این احتمال وجود دارد که کد ‪ HTML‬در درون وبسایت‬
‫‪ ESPN‬توسط نام ‪ DNS‬به دامنهها یا زیردامنههای دیگر ارجاع میدهد‪ ،‬و به این شکل وادار‬
‫میکند که چندین پرس و جو اجرا شوند‪ .‬بیایید ببینیم که آیا میتوانیم مدرکی برای اثبات‬
‫نظریههای خود پیدا کنیم یا نه‪.‬‬

‫دیدن ترافیک ‪DNS‬‬


‫یک راه ساده برای دیدن ترافیک ‪ DNS‬ایجاد یک فیلتر است‪ .‬همان طوری که در شکل‬
‫‪ 14-8‬نشان داده شده است‪ ،‬وارد کردن ‪ dns‬در پنجرهی ‪ Wireshark‬همهی ترافیک ‪DNS‬‬
‫را نشان میدهد‪.‬‬

‫شکل ‪ :14-8‬به نظر میرسد که ترافیک ‪ DNS‬پرس و جوها و پاسخهای استاندارد باشد‪.‬‬

‫‪239‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫به نظر میرسد که ترافیک نشان داده شده در شکل ‪ 14-8‬همگی پرس و جوها و پاسخها‬
‫باشد‪ .‬برای دیدن بهتر نامهای ‪ DNS‬پرس و جو شده‪ ،‬فیلتری را به وجود آورید که تنها پرس‬
‫و جوها را نشان دهد‪ .‬برای درست کردن این فیلتر‪ ،‬یک پرس و جو را در قسمت ‪Packet‬‬
‫‪ List‬انتخاب کنید و سرآیند بسته را در قسمت ‪ Packet Details‬بزرگ کنید‪ .‬سپس روی‬
‫فیلد ‪( Flags: 0x0100‬پرس و جوی استاندارد) راست کلیک کنید و روی ‪Apply as‬‬
‫‪ Filter‬بیایید و ‪ Selected‬را انتخاب کنید‪.‬‬
‫این باید فیلتر ‪ dns.flags == 0x0100‬را فعال نماید که تنها پرس و جوها را نشان میدهد و‬
‫خواندن و ثبت کردن سوابقی که تحلیل میکنیم را بسیار سادهتر مینماید‪ .‬همان طوری که‬
‫در شکل ‪ 14-8‬نشان داده شده است‪ ،‬بهواقع ‪ 14‬پرس و جو وجود دارد (هر بسته معرف یک‬
‫پرس و جو است)‪ ،‬و به نظر میرسد که همهی نامهای دامنه با ‪ ESPN‬یا محتوای نمایش داده‬
‫شده در صفحهی خانهی آن مرتبط باشد‪.‬‬

‫دیدن درخواستهای ‪HTTP‬‬


‫در آخر‪ ،‬با بررسی درخواستهای ‪ HTTP‬میتوانیم مبدأ را تأیید نماییم‪ .‬بهمنظور انجام این‬
‫کار‪ Statistics ► HTTP ،‬را انتخاب کنید‪ Requests ،‬را انتخاب کنید‪ ،‬و بر روی‬
‫‪ Create Stat‬کلیک کنید‪( .‬اطمینان حاصل کنید فیلتری که تازه آن را ساختهاید قبل از‬
‫انجام این کار پاک شده باشد‪).‬‬
‫شکل ‪ 15-8‬پنجرهی ‪ HTTP Requests‬را نشان میدهد‪ 14 .‬اتصال نشان داده شده در اینجا‬
‫(هر خط معرف یک اتصال با یک دامنهی ویژه) مسئول همهی دامنههای نمایش داده شده‬
‫توسط پرس و جوهای ‪ DNS‬هستند‪.‬‬

‫‪240‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫شکل ‪ :15-8‬همهی درخواستهای ‪ HTTP‬در این پنجره خالصه شدهاند که دامنههای‬


‫مورد دستیابی را نشان میدهد‪.‬‬

‫با توجه به اتصالهای زیادی که رخ میدهند‪ ،‬ممکن است بیشترین نفع ما در آن باشد تا کنترل‬
‫کنیم که آیا این فرآیند بسیار پیچیده به شکلی بهنگام و بجا رخ میدهد یا نه‪ .‬دیدن خالصهای‬
‫از ترافیک‪ ،‬سادهترین راه برای انجام این کار است‪ .‬برای انجام این کار ► ‪Statistics‬‬
‫‪ Summary‬را انتخاب کنید‪ .‬پنجرهی خالصه – که در شکل ‪ 16-8‬نشان داده شده است –‬
‫نشان میدهد که کل فرآیند در حدود ‪ 2‬ثانیه رخ میدهد ‪ ‬که کامالً قابل قبول است‪.‬‬
‫فکر کردن به این مسئله عجیب است که درخواست سادهی ما برای دیدن یک صفحهی وب‬
‫به درخواستها برای ‪ 14‬دامنه و زیردامنهی مجزا تقسیم میشود‪ ،‬به انواع سرورهای مختلف‬
‫میرسد‪ ،‬و اینکه کل این فرآیند تنها در ‪ 2‬ثانیه انجام میشود‪ .‬ربایش ترافیک در هنگام دیدن‬
‫وبسایتهای محبوبتان و تجزیهی آن – همان طوری که ما در اینجا داشتهایم – تمرینی‬
‫جالب است‪ .‬تا شروع به دیدن بستهها نکنید‪ ،‬هرگز کامالً نخواهید دانست که دادههای شما‬
‫از کجا میآیند‪.‬‬

‫‪241‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫شکل ‪ :16-8‬پنجرهی ‪ Summary‬برای فایل نشان میدهد که کل این فرآیند در دو ثانیه رخ میدهد‪.‬‬

‫مسائل دنیای واقعی‬


‫اکنون توجه خود را به بعضی مثالها از ترافیک مشکلساز معطوف خواهیم داشت‪ .‬بیایید به‬
‫انواع مشکالت دستیابی به اینترنت‪ ،‬و همچنین مشکالت معمول – نظیر چاپگر نامعتبر و مشکل‬
‫اتصال از یک شعبهی اداره – نگاهی داشته باشیم‪.‬‬

‫عدم دسترسی به اینترنت‬


‫نخستین سناریوی مسئله تا اندازهای ساده است‪ :‬یک کاربر نمیتواند به اینترنت دسترسی پیدا‬
‫کند‪ .‬ما تصدیق کردهایم که این کاربر میتواند به همهی منابع اینترنت در شبکه – از جمله‬

‫‪242‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫به اشتراکگذاریها در ایستگاههای کاری دیگر و برنامههای کاربردی میزبانشده در‬


‫سرورهای محلی – دسترسی پیدا نماید‪.‬‬
‫معماری شبکه بهطور معقولی ساده است‪ ،‬چنانکه همهی کاربران و سرورها به یک سری از‬
‫سوئیچهای ساده وصل میشوند‪ .‬دسترسی به اینترنت از طریق یک مسیریاب ساده اداره‬
‫میشود که بهعنوان درگاه پیشفرض‪ 1‬عمل مینماید‪ ،‬و اطالعات آدرسدهی ‪ IP‬توسط‬
‫‪ DHCP‬تأمین میگردد‪ .‬این یک سناریوی بسیار رایج در ادارات کوچک است‪.‬‬

‫دسترسی پیدا کردن از طریق سیم‬


‫بهمنظور تعیین دلیل مشکل‪ ،‬میتوانیم کاربر را وادار کنیم تا اینترنت را جستجو کند و در‬
‫همان حال ‪ sniffer‬ما به سیم گوش دهد‪ .‬ما از اطالعات حاصل از شنود در عمل (شکل ‪-2‬‬
‫‪ 15‬را ببینید) را مورد استفاده قرار میدهیم تا مناسبترین روش را برای گمارش شنود خود‬
‫تعیین نماییم‪.‬‬
‫سوئیچها در شبکهی ما منعکس کردن پورت‪ 2‬را پشتیبانی نمیکنند‪ .‬ما قبالً برای اجرای‬
‫آزمون خود مجبور شدیم تا کاربر را متوقف کنیم‪ ،‬و بنابراین میتوانیم فرض کنیم که یک‬
‫بار دیگر آفالین کردنش اشکالی نداشته باشد‪( .‬یعنی‪ ،‬استفاده از یک دستگاه ‪ Tap‬میتواند‬
‫مناسبترین راه برای اتصال به سیم باشد‪ ).‬فایل حاصله ‪ nowebaccess1.pcap‬است‪.‬‬

‫تحلیل‬
‫همان طوری که در شکل ‪ 1۷-8‬نشان داده شده است‪ ،‬ربایش ترافیک با یک درخواست و‬
‫پاسخ ‪ ARP‬آغاز میشود‪ .‬در بستهی ‪ ،1‬کامپیوتر کاربر – با آدرس ‪ MAC‬بهقرار‬
‫‪ 00:25:b3:bf:91:ee‬و آدرس ‪ IP‬بهقرار ‪ – 172.16.0.8‬در تالش برای یافتن آدرس ‪MAC‬‬

‫‪1‬‬
‫‪default gateway‬‬
‫‪2‬‬
‫‪port mirroring‬‬
‫‪243‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫مرتبط با آدرس ‪ IP‬درگاه پیش فرض ‪ 172.16.0.10‬یک بستهی ‪ ARP broadcast‬را به‬
‫همهی کامپیوترها در بخش شبکه میفرستد‪.‬‬

‫شکل ‪ :1۷-8‬درخواست و پاسخ ‪ APR‬برای درگاه پیش فرض کامپیوتر‬

‫یک پاسخ در بستهی ‪ 2‬دریافت شده است‪ ،‬و کامپیوتر کاربر میفهمد که ‪ 172.16.0.10‬در‬
‫‪ 00:24:81:a1:f6:79‬قرار دارد‪ .‬همچنان به محض دریافت این پاسخ‪ ،‬اکنون کامپیوتر دارای‬
‫مسیری به سوی درگاه است که باید بتواند آن را به اینترنت هدایت نماید‪.‬‬
‫به دنبال پاسخ ‪ ،ARP‬کامپیوتر باید تالش کند تا نام ‪ DNS‬وبسایت را با استفاده از ‪DNS‬‬
‫در بستهی ‪ 3‬به یک آدرس ‪ IP‬تبدیل نماید‪ .‬همان طوری که در شکل ‪ 18-8‬نشان داده شده‬
‫است‪ ،‬کامپیوتر این کار را با فرستادن یک بستهی پرس و جوی ‪ DNS‬به سرور اصلی ‪4.2.2.2‬‬
‫انجام میدهد ‪.‬‬

‫شکل ‪ :18-8‬یک پرس و جوی ‪ DNS‬فرستاده شده به ‪4.2.2.2‬‬

‫تحت شرایط نرمال‪ ،‬یک سرور ‪ DNS‬خیلی سریع به یک پرس و جوی ‪ DNS‬پاسخ میدهد‪،‬‬
‫ولی این امر در اینجا صادق نیست‪ .‬ما بهجای یک پاسخ‪ ،‬میبینیم که همان پرس و جوی‬
‫‪ DNS‬برای بار دوم به آدرس مقصد دیگری فرستاده شده است‪ .‬همان طوری که در شکل‬

‫‪244‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫‪ 19-8‬نشان داده شده است‪ ،‬در بستهی ‪ ،4‬پرس و جوی ‪ DNS‬به سرور ‪ DNS‬ثانویه فرستاده‬
‫شده که در کامپیوتر پیکربندی شده است و ‪ 4.2.2.1‬است ‪.‬‬

‫شکل ‪ :19-8‬پرس و جوی ‪ DNS‬دوم به ‪ 4.2.2.1‬فرستاده شده است‬

‫باز هم هیچ پاسخی از سرور ‪ DNS‬دریافت نمیشود‪ ،‬و این پرس و جو باز هم یک ثانیه بعد‬
‫به ‪ 4.2.2.2‬فرستاده میشود‪ .‬همان طوری که در شکل ‪ 20-8‬نشان داده شده است‪ ،‬این فرآیند‬
‫خود را تکرار میکند و در طول چند ثانیهی بعدی مقصد بستهها را بین سرورهای پیکربندی‬
‫شدهی اولیه ‪ ‬و ثانویه ‪ ‬تغییر میدهد‪ .‬کل این فرآیند در حدود ‪ 8‬ثانیه طول میکشد ‪،‬‬
‫که نشان میدهد چه زمانی طول میکشد تا مرورگر کاربر گزارش دهد که وبسایت غیرقابل‬
‫دسترس است‪.‬‬

‫شکل ‪ :20-8‬پرس و جوهای ‪ DNS‬تا توقف ارتباط ادامه پیدا میکند‬

‫بر اساس بستههایی که دیدهایم‪ ،‬میتوانیم با دقت منشأ مشکل را مشخص نماییم‪ .‬نخست‪،‬‬
‫یک درخواست موفق ‪ ARP‬با آنچه را مشاهده میکنیم که باور داریم مسیریاب درگاه پیش‬

‫‪245‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫فرض برای این شبکه باشد‪ ،‬و بنابراین میدانیم که دستگاه آنالین است و ارتباط برقرار‬
‫مینماید‪ .‬همچنین میدانیم که کامپیوتر کاربر عمالً در حال مخابرهی بستهها در شبکه است‪،‬‬
‫و بنابراین میتوانیم فرض کنیم که پشتهی پروتکل‪ 1‬در خود کامپیوتر مشکلی ندارد‪ .‬مشکل‬
‫بهروشنی زمانی رخ میدهد که درخواست ‪ DNS‬ساخته میشود‪.‬‬
‫در مورد این شبکه‪ ،‬پرسوجوهای ‪ DNS‬توسط یک سرور بیرونی اینترنت ‪ 4.2.2.2‬یا‬
‫‪ 4.2.2.1‬تبدیل میشوند‪ .‬این بدان معنی است‪ ،‬برای آنکه تبدیل بهدرستی واقع شود‪ ،‬مسیریاب‬
‫مسئول مسیرگزینی بستهها به اینترنت باید بهطور موفقی پرسوجوهای ‪ DNS‬را به سرور منتقل‬
‫نماید‪ ،‬و سرور باید پاسخ دهد‪ .‬همهی اینها باید زمانی اتفاق افتد که ‪ HTTP‬را بتوان برای‬
‫درخواست کردن خود صفحهی وب مورد استفاده قرارداد‪.‬‬
‫میدانیم که هیچ کاربر دیگری در متصل شدن به اینترنت مشکلی ندارد‪ ،‬و این به ما میگوید‬
‫که مسیریاب شبکه و سرور ‪ DNS‬دور احتماالً منشأ مشکل نیستند‪ .‬تنها چیزی که بهعنوان‬
‫منشأ احتمالی مشکل باقی میماند‪ ،‬خود کامپیوتر کاربر است‪.‬‬
‫پس از بررسی دقیقتر کامپیوتر مشکلدار‪ ،‬میفهمیم که این کامپیوتر بهجای دریافت کردن‬
‫یک آدرس محول شده توسط ‪ ،DHCP‬دارای اطالعات آدرسدهی است که بهطور دستی‬
‫برای آن تعیین شده است‪ ،‬و آدرس درگاه پیش فرض عمالً بهطور اشتباه تنظیم شده است‪.‬‬
‫آدرس تعیین شده بهعنوان درگاه پیش فرض یک مسیریاب نیست و نمیتواند بستههای پرس‬
‫و جوی ‪ DNS‬را به خارج از شبکه بفرستند‪.‬‬

‫درسهای فراگرفته شده‬


‫مشکل این سناریو از یک کاربر بَد پیکربندی شده ناشی شد‪ .‬در حالی که خود مشکل خیلی‬
‫ساده بود‪ ،‬ولی بهطور قابل توجهی بر روی کاربر اثر گذاشت‪ .‬رفع عیب یک پیکربندی بَد‬
‫ساده‪ ،‬نظیر این مورد برای فردی که فاقد دانش شبکه یا توانایی اجرای یک تحلیل بستهی‬

‫‪1‬‬
‫‪protocol stack‬‬
‫‪246‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫سریع – که ما در اینجا انجام دادیم – باشد میتواند وقت خیلی زیادی ببرد‪ .‬همان طوری که‬
‫میتوانید ببینید‪ ،‬تحلیل بسته محدود به مشکالت بزرگ و پیچیده نیست‪.‬‬
‫توجه داشته باشید از آنجایی که با دانستن آدرس ‪ IP‬مسیریاب درگاه شبکه وارد این سناریو‬
‫نشدیم‪ ،‬بنابراین‪ Wireshark ،‬مشکل را دقیقاً شناسایی نکرد‪ ،‬ولی به ما گفت که کجا را نگاه‬
‫کنیم‪ ،‬و به این طریق سبب صرفهجویی در وقت ارزشمند گردید‪ .‬ما بهجای بررسی مسیریاب‬
‫درگاه‪ ،‬اتصال برقرار کردن با ‪ ISP‬خودمان‪ ،‬یاتالش برای یافتن منابع برای رفع ایراد سرور‬
‫‪ DNS‬دور توانستیم تالشهای رفع ایرادمان را بر خود کامپیوتر متمرکز کنیم‪ ،‬که در واقع‬
‫منشأ مشکل بود‪.‬‬

‫نکته‪ :‬از آنجایی که با این طرح بخصوص آدرسدهی ‪ IP‬شبکه آشنا شدهایم‪ ،‬بنابراین‪ ،‬تحلیل‬
‫را میتوان سریعتر انجام داد‪ .‬زمانی که متوجه شدیم درخواست ‪ ARP‬به آدرس ‪IP‬یی‬
‫متفاوت از آدرس مسیریاب درگاه فرستاده شده است‪ ،‬مشکل را میتوانستیم بالفاصله‬
‫شناسایی نماییم‪ .‬این پیکربندیهای اشتباه اغلب منبع مشکالت شبکه هستند و آنها را میتوان‬
‫با اندکی تحلیل بسته سریعاً حل کرد‪.‬‬

‫عدم دسترسی به اینترنت‪ :‬تعیین جهت ناخواسته‬


‫در این سناریو‪ ،‬بار دیگر کاربری را داریم که نمیتواند از ایستگاه کاری خود به اینترنت‬
‫دسترسی پیدا کند‪ .‬اما‪ ،‬برخالف کاربر سناریوی پیشین‪ ،‬این کاربر میتواند به اینترنت‬
‫دسترسی پیدا کند‪ ،‬ولی نمیتواند به صفحهی خانهی خود ‪- http://www.google.com -‬‬
‫دسترسی پیدا نماید‪ .‬وقتی که کاربر سعی میکند به هر دامنهی میزبان شدهای توسط گوگل‬
‫برسد‪ ،‬به یک صفحهی مرورگر هدایت میشود که میگوید "مرورگر نمیتواند این‬
‫صفحهی وب را نمایش دهد‪ ".‬این مشکل تنها بر این کاربر بخصوص اثر میگذارد‪.‬‬
‫همانند سناریوی قبلی‪ ،‬این شبکهای کوچک با چند سوئیچ ساده و یک مسیریاب منفرد است‬
‫که بهعنوان درگاه پیش فرض عمل مینماید‪.‬‬
‫‪24۷‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫دسترسی پیدا کردن از طریق سیم‬


‫برای آغاز تحلیل‪ ،‬کاربر را وادار میکنیم تا نشانی ‪ http://www.google.com/‬را جستجو‬
‫کند و ما در همان حال با استفاده از یک دستگاه اتصال ‪ Tap‬به ترافیکی که ایجاد میشود‬
‫گوش میدهیم‪ .‬فایل حاصله ‪ nowebaccess2.pcap‬است‪.‬‬

‫تحلیل‬
‫همان طوری که در شکل ‪ 21-8‬نشان داده شده است‪ ،‬ربایش با یک درخواست و پاسخ‬
‫‪ ARP‬آغاز میشود‪ .‬در بستهی ‪ ،1‬کامپیوتر کاربر – با آدرس ‪ MAC‬بهقرار‬
‫‪ ،00:25:b3:bf:91:ee‬و آدرس ‪ IP‬بهقرار ‪ – 172.16.0.8‬در تالش برای یافتن آدرس ‪MAC‬‬
‫مرتبط با آدرس ‪ 172.16.0.102 IP‬یک بستهی ‪ ARP broadcast‬را به همهی کامپیوترها‬
‫در بخش شبکه میفرستد‪.‬ما این آدرس را بالفاصله تشخیص نمیدهیم‪.‬‬

‫شکل ‪ :21-8‬درخواست و پاسخ ‪ ARP‬برای دستگاهی دیگر در شبکه‬

‫در بستهی ‪ ،2‬کامپیوتر کاربر میفهمد که آدرس پروتکل اینترنت ‪ 172.16.0.102‬در‬


‫‪ 00:21:70:c0:56:f0‬قرار دارد‪ .‬بر اساس سناریوی قبلی‪ ،‬میتوانیم فرض کنیم که این آدرس‬
‫مسیریاب درگاه است‪ ،‬و اینکه آدرس به گونهای استفاده شده است که بستهها بار دیگر‬
‫میتوانند به سرور ‪ DNS‬بیرونی فرستاده شوند‪ .‬اما‪ ،‬همان طوری که در شکل ‪ 22-8‬نشان داده‬
‫شده است‪ ،‬بستهی بعدی یک درخواست ‪ DSN‬نیست‪ ،‬بلکه یک بستهی ‪ TCP‬از ‪172.16.0.8‬‬
‫به ‪ 172.16.0.102‬است‪ .‬این دارای پرچم ‪ SYN‬است‪ ،‬که نشان میدهد این نخستین بسته در‬
‫دستدهی برای یک اتصال جدید مبتنی بر ‪ TCP‬بین دو میزبان است ‪.‬‬

‫‪248‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫شکل ‪ :22-8‬بستهی ‪ TCP SYN‬فرستاده شده از یک میزبان داخلی به یکی دیگر‬

‫جالب توجه آن است که تالش اتصال ‪ TCP‬به پورت ‪  80‬در ‪ 172.16.0.102‬است ‪‬‬
‫که بهطور معمول با ترافیک ‪ HTTP‬مرتبط است‪ .‬همان طوری که در شکل ‪ 23-8‬نشان داده‬
‫شده است‪ ،‬زمانی که میزبان ‪ 172.16.0.102‬یک بستهی ‪ TCP‬را (بستهی ‪ )4‬با پرچمهای‬
‫‪ RST‬و ‪ ACK‬در پاسخ میفرستد‪ ،‬این تالشِ اتصال ناگهان متوقف شد ‪.‬‬
‫از فصل ‪ 6‬به یاد بیاورید که یک بسته با پرچم ‪ RST‬برای پایان دادن به یک اتصال ‪TCP‬‬
‫مورد استفاده قرار میگیرد‪ .‬اما‪ ،‬در این سناریو‪ ،‬میزبان در ‪ 172.16.0.8‬تالش کرد تا یک‬
‫اتصال ‪ TCP‬را با میزبان ‪ 172.16.0.102‬در پورت ‪ 80‬برقرار نماید‪ .‬متأسفانه‪ ،‬از آنجایی که‬
‫آن میزبان هیچ سرویس پیکربندی شدهای برای گوش دادن به درخواستها در پورت ‪80‬‬
‫ندارد‪ ،‬بنابراین‪ ،‬بستهی ‪ TCP RST‬برای پایان دادن به اتصال فرستاده میشود‪ .‬این فرآیند دو‬
‫بار تکرار میشود‪ .‬یک ‪ SYN‬از کامپیوتر کاربر فرستاده شده است و همان طوری که در‬
‫شکل ‪ 24-8‬نشان داده شده است‪ ،‬پیش از آنکه ارتباط در نهایت پایان پیدا کند با یک ‪RST‬‬
‫به آن پاسخ داده شده است‪ .‬در این نقطه‪ ،‬کاربر پیامی را در مرورگر خود دریافت میکند که‬
‫میگوید این صفحه نمیتواند نشان داده شود‪.‬‬

‫‪249‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫شکل ‪ :23-8‬بستهی ‪ TCP RST‬فرستاده شده در پاسخ به ‪TCP SYN‬‬

‫شکل ‪ :24-8‬بستههای ‪ TCP SYN‬و ‪ RST‬در کل سه بار دیده میشوند‪.‬‬

‫پس از بررسی پیکربندی دستگاهی دیگر در شبکه که بهدرستی کار میکند‪ ،‬درخواست و‬
‫پاسخ ‪ ART‬در بستههای ‪ 1‬و ‪ 2‬ما را نگران میکنند‪ ،‬زیرا درخواست ‪ ARP‬برای آدرس‬
‫‪ MAC‬واقعی مسیریاب ‪ gateway‬نیست‪ ،‬بلکه آدرس دستگاهی ناشناس است‪ .‬به دنبال‬
‫درخواست و پاسخ ‪ ،ARP‬انتظار داریم که یک پرس و جوی ‪ DNS‬را ببینیم که برای یافتن‬
‫آدرس ‪ IP‬مرتبط با ‪ www.google.com‬به سرور ‪ DNS‬پیکربندی شدهی ما فرستاده شده‬
‫است‪ ،‬ولی چنین چیزی را نمیبینیم‪ .‬دو شرط وجود دارد که میتواند مانع از ایجاد یک پرس‬
‫و جوی ‪ DNS‬شود‪:‬‬

‫‪250‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫‪ ‬دستگاهی که اتصال را آغاز میکند از قبل دارای مسیردهی " نام ‪ DSN‬به آدرس‬
‫‪ " IP‬در حافظه‪ DNS 1‬خود باشد‪.‬‬
‫‪ ‬دستگاهی که با نام ‪ DNS‬ارتباط برقرار میکند دارای مسیردهی " نام ‪ DNS‬به‬
‫آدرس ‪ " IP‬مختص به فایل ‪ host‬خودش باشد‪.‬‬
‫پس از بررسی بیشتر کامپیوتر کاربر‪ ،‬میفهمیم که فایل ‪ host‬این کامپیوتر دارای یک ورودی‬
‫برای ‪ www.google.com‬مرتبط با آدرس پروتکل اینترنت ‪ 172.16.0.102‬است‪ .‬این‬
‫ورودی نادرست منشأ مشکالت کاربر ماست‪.‬‬
‫یک کامپیوتر بهطور معمول از فایل ‪ host‬خود بهعنوان منبعی معتبر برای مسیردهیهای نام‬
‫‪ DNS‬به آدرس ‪ IP‬استفاده میکند‪ ،‬و آن فایل را پیش از پرس و جو کردن یک منبع بیرونی‬
‫کنترل میکند‪ .‬در این سناریو‪ ،‬کامپیوتر کاربر فایل ‪ host‬خود را کنترل کرده‪ ،‬و ورودی‬
‫برای ‪ www.google.com‬را پیدا کرده و حکم داده که ‪ www.google.com‬عمالً در بخش‬
‫شبکهی محلی خودش قرار دارد‪ .‬سپس این کامپیوتر یک درخواست ‪ ARP‬را به میزبان‬
‫فرستاد‪ ،‬پاسخی را دریافت کرد‪ ،‬و تالش کرد تا یک اتصال ‪ TCP‬را با ‪ 172.16.0.102‬در‬
‫پورت ‪ 80‬برقرار نماید‪ .‬اما‪ ،‬از آنجایی که این سیستم دور بهعنوان سرور وب پیکربندی نشده‬
‫است‪ ،‬بنابراین‪ ،‬تالشهای اتصال را نپذیرفت‪.‬‬
‫پس از آنکه ورودی فایل ‪ host‬برداشته شد‪ ،‬کامپیوتر کاربر ارتباط صحیح را آغاز کرد و‬
‫توانست به ‪ www.google.com‬دسترسی پیدا نماید‪.‬‬

‫نکته‪ :‬بهمنظور بررسی فایل ‪ host‬خود در یک سیستمعامل ویندوز ‪،Windows‬‬


‫‪ C:\Windows\System32\ drivers\etc\hosts‬را باز کنید‪ .‬در لینوکس ‪ /etc/hosts‬را‬
‫ببینید‪.‬‬

‫‪1‬‬
‫‪cache‬‬
‫‪251‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫این سناریو عمالً بسیار شایع است‪ .‬این سناریویی است که بدافزار برای سالهاست از آن‬
‫استفاده میکند تا کاربران را بهسوی وبسایتهایی هدایت کند که میزبان کد مخرب هستند‪.‬‬
‫تصور کنید که یک حملهکننده بخواهد فایل ‪ hosts‬شما را به گونهای تغییر بدهد که هر‬
‫وقت به سراغ بانکداری آنالین خود بروید‪ ،‬این کار عمالً شما را به سمت سایتی مجهول‬
‫هدایت کند که برای دزدیدن گواهیهای حساب شما طراحی شده است‪.‬‬

‫درسهای فراگرفته شده‬


‫همچنان که به تحلیل ترافیک ادامه میدهید‪ ،‬یاد خواهید گرفت که پروتکلهای گوناگون‬
‫چگونه عمل میکنند و هم یاد خواهید گرفت که چگونه آنها را در این سناریو‪ ،‬پرس و‬
‫جوی ‪ DNS‬به این دلیل ارسال نشد که توسط کاربر بد پیکربندی شده بود ‪ ،‬و دلیل عدم‬
‫ارسال محدودیت یا پیکربندی نامناسب بیرونی نبوده‪.‬‬
‫با بررسی این مشکل در سطح بسته‪ ،‬توانستیم بسرعت آدرس ‪IP‬یی را مشخص کنیم که‬
‫ناشناس بود و همچنین مشخص کنیم که ‪ – DNS‬بهعنوان یک مؤلفهی کلیدی از این فرآیند‬
‫ارتباطی – گم شده بود‪ .‬ما با استفاده از این اطالعات توانستیم کاربر را بهعنوان منشأ مشکل‬
‫پیدا کنیم‪.‬‬

‫عدم دسترسی به اینترنت‪ :‬مشکالت باالدستی‬


‫در این سناریو‪ ،‬همانند دو سناریوی پیشین‪ ،‬یک کاربر شکایت دارد که از ایستگاه کاریاش‬
‫به اینترنت هیچگونه دسترسی ندارد‪ .‬این کاربر مشکل را تا حد یک وبسایت منفرد‬
‫‪ http://www.google.com/‬تقلیل میدهد‪ .‬با بررسی بیشتر میفهمیم که این موضوع بر همه‬
‫در سازمان اثر گذاشته است و هیچ کس نمیتواند به دامنههای ‪ Google‬دسترسی پیدا کند‪.‬‬
‫این شبکه همانند دو سناریوی قبلی پیکربندی شده و دارای چند سوئیچ ساده و یک مسیریاب‬
‫است که شبکه را به اینترنت وصل میکند‪.‬‬

‫‪252‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫دسترسی پیدا کردن از طریق سیم‬


‫بهمنظور رفع این مشکل‪ ،‬برای ایجاد ترافیک‪ ،‬نخست ‪ http://www.google.com/‬را جستجو‬
‫میکنیم‪ .‬از آنجایی که این مشکل در کل شبکه وجود دارد (یعنی بر کامپیوتر شما نیز اثر‬
‫میگذارد‪ ،‬و میتواند نتیجهی آلودگی شدید به بدافزار باشد)‪ ،‬بنابراین‪ ،‬نباید مستقیماً از‬
‫دستگاهی خود شنود کنید‪ .‬وقتی خود را در چنین موقعیتی پیدا میکنید‪ ،‬یک دستگاه اتصال‬
‫‪ Tap‬بهترین راه حل است‪ ،‬زیرا شما را قادر میسازد تا پس از یک وقفهی کوتاه در سرویس‬
‫کامالً منفعل باشید‪ .‬فایل حاصله از ربایش از طریق یک دستگاه اتصال‬
‫‪ nowebaccess3.pcap‬است‪.‬‬

‫تحلیل‬
‫ربایش بسته بهجای ترافیک ‪ARP‬ای که به دیدن آن عادت داریم با ترافیک ‪ DNS‬آغاز‬
‫میشود‪ .‬از آنجایی که نخستین بسته در ربایش به طرف یک آدرس بیرونی است و بستهی ‪2‬‬
‫حاوی پاسخی از آن آدرس است‪ ،‬بنابراین‪ ،‬میتوانیم فرض کنیم که فرآیند ‪ ARP‬قبالً اتفاق‬
‫افتاده و مسیردهی آدرس ‪ MAC‬به ‪ IP‬برای مسیریاب درگاه ما از قبل در حافظه ‪ ARP‬میزبان‬
‫در ‪ 172.16.0.8‬وجود داشته است‪.‬‬
‫همان طوری که در شکل ‪ 25-8‬نشان داده شده است‪ ،‬نخستین بسته در ربایش از میزبان‬
‫‪ 172.16.0.8‬به آدرس ‪ 4.2.2.1‬است ‪ ،‬و این یک بستهی ‪ DNS‬است ‪ .‬با بررسی‬
‫محتوای این بسته میبینیم که این یک پرس و جو برای رکورد ‪ A‬برای ‪www.google.com‬‬
‫است ‪.‬‬

‫‪253‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫شکل ‪ :25-8‬پرس و جوی ‪ DNS‬برای رکورد ‪ A‬آدرس ‪www.google.com‬‬

‫همان طوری که در شکل ‪ 26-8‬نشان داده شده است‪ ،‬پاسخ به این پرس و جو از ‪4.2.2.1‬‬
‫‪1‬‬
‫دومین بستهی در فایل ربایش است‪ .‬با بررسی قسمت ‪ Packet Details‬میبینیم که سرور نام‬
‫که به این درخواست پاسخ داده‪ ،‬چندین پاسخ را به این پرس و جو داده است ‪ .‬در این‬
‫نقطه همه چیز خوب به نظر میرسد و ارتباط همان طوری که باید رخ میدهد‪.‬‬
‫اکنون که کامپیوتر کاربر آدرس ‪ IP‬سرور وب را تعیین کرده است‪ ،‬میتواند سعی کند تا با‬
‫این سرور ارتباط برقرار نماید‪ .‬همان طوری که در شکل ‪ 2۷-8‬نشان داده شده است‪ ،‬این‬
‫فرآیند در بستهی ‪ 3‬آغاز شده است و در آن یک بستهی ‪ TCP‬از ‪ 172.16.0.8‬به‬
‫‪ 74.129.95.105‬فرستاده شده است ‪ ..‬از آنجایی که این یک فرآیند دستدهی است‪،‬‬
‫بنابراین‪ ،‬میدانیم که باید ببینیم که یک بستهی ‪ TCP SYN/ACK‬در پاسخ فرستاده شده‬
‫باشد‪ ،‬ولی در عوض‪ ،‬پس از یک زمان کوتاه‪ ،‬یک بستهی ‪ SYN‬دیگر از مبدأ به مقصد‬
‫فرستاده شده است‪ .‬این آدرس مقصد از نخستین رکورد ‪ A‬میآید که در پاسخ پرس و جوی‬
‫‪ DNS‬دیده شده در بستهی ‪ 2‬فراهم شده است‪.‬‬

‫‪1‬‬
‫‪name server‬‬
‫‪254‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫شکل ‪ :26-8‬پاسخ ‪ DNS‬با چند رکورد ‪A‬‬

‫این بستهی ‪ TCP‬دارای پرچم ‪ SYN‬است ‪ ،‬و تالش میکند تا با سرور دور در پورت ‪80‬‬
‫ارتباط برقرار نماید‬

‫شکل ‪ :2۷-8‬بستهی ‪ SYN‬که تالش میکند اتصالی را در پورت ‪ 80‬آغاز کند‬

‫‪255‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫همان طوری که در شکل ‪ 28-8‬نشان داده شده است‪ ،‬این فرآیند یک بار دیگر پس از حدود‬
‫یک ثانیه تکرار میشود و در این نقطه ارتباط متوقف میشود و مرورگر گزارش میدهد که‬
‫وب سایت را نمیتواند پیدا کند‪.‬‬

‫شکل ‪ :28-8‬بستهی ‪ TCP SYN‬سه بار تالش شد و هیچ پاسخی را دریافت نکرد‪.‬‬

‫همچنان که این سناریو را رفع عیب میکنیم‪ ،‬این نکته را در نظر میگیریم که میدانیم ایستگاه‬
‫کاری در درون شبکهی ما میتواند با دنیای خارج ارتباط برقرار نماید‪ ،‬زیرا پرس و جوی‬
‫‪ DNS‬به سرور بیرونی ‪ DNS‬در ‪ 4.2.2.1‬موفقیتآمیز بوده است‪ .‬سرور ‪ DNS‬با آنچه به نظر‬
‫میرسد آدرسی معتبر باشد پاسخ میدهد‪ ،‬و میزبانهای ما سعی میکنند تا به یکی از این‬
‫آدرسها متصل شوند‪ .‬همچنین‪ ،‬به نظر میرسد ایستگاه کاری محلی که ما تالش میکنیم از‬
‫آن متصل شویم فعال باشد‪.‬‬
‫مشکل آن است که سرور دور به درخواستهای اتصال پاسخ نمیدهد؛ یک بستهی ‪TCP‬‬
‫‪ RST‬فرستاده نشده است‪ .‬این امر میتواند به چندین دلیل رخ داده باشد‪ :‬یک سرور وب که‬
‫نامناسب پیکربندی شده باشد؛ یک پشتهی پروتکل خراب شده در سرور وب؛ یا یک‬
‫دستگاهی فیلتر کنندهی بسته در شبکهی دور (نظیر دیوارهی آتش)‪ .‬فرض کنید که هیچ‬
‫دستگاهی فیلتر کنندهی بستهای وجود نداشته باشد‪ ،‬و در این صورت همهی راه حلهای‬
‫بالقوهی دیگر در شبکهی دور قرار و ورای کنترل ما قرار دارند‪ .‬در این صورت‪ ،‬سرور وب‬
‫بهدرستی عمل نمیکند‪ ،‬و هیچ تالشی برای دسترسی به آن موفق نمیشود‪ .‬هر زمان که مشکل‬
‫از طرف ‪ Google‬حل شود‪ ،‬ارتباط قادر به انجام خواهد بود‪.‬‬

‫‪256‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫درسهای فراگرفته شده‬


‫در این سناریو‪ ،‬مشکل از نوعی نبود که ما بتوانیم آن را درست کنیم‪ .‬تحلیل ما معلوم کرد که‬
‫مشکل در میزبانهای شبکهی ما‪ ،‬مسیریابهای ما‪ ،‬یا سرور ‪ DNS‬بیرونی ما (که سرویسهای‬
‫تفکیک نام را برای ما انجام میدهند) نبود‪ .‬این مشکل خارج از زیرساخت شبکهی ما قرار‬
‫داشت‪.‬‬
‫گاهی کشف اینکه مشکل جداً از ما نیست نمیتواند تنش را کاهش دهد‪ ،‬ولی باعث میشود‬
‫وقتی که مدیریت در میزند و وارد میشود حفظ آبرو کنید‪ .‬من با ‪ISP‬ها‪ ،‬فروشندهها‪ ،‬و‬
‫شرکتهای نرمافزاری زیادی جنگیدهام که ادعا میکنند مشکل تقصیر آنها نبوده است‪،‬‬
‫ولی همان طوری که دیدید‪ ،‬بستهها دروغ نمیگویند‪.‬‬

‫چاپگر ناسازگار‬
‫مدیر میز کمک ‪ IT‬ما در حل کردن یک مشکل چاپ با دردسر مواجه شده است‪ .‬کاربران‬
‫در بخش فروش گزارش میدهند که چاپگر پر کار فروش بد عمل میکند‪ .‬وقتی کاربری‬
‫کار چاپ زیادی را به این چاپگر میفرستد‪ ،‬چندین صفحه را چاپ خواهد کرد و سپس پیش‬
‫از آنکه کار تمام شود چاپ کردن را متوقف میکند‪.‬چندین تغییر پیکربندی درایور انجام‬
‫شده‪ ،‬ولی این تالشها ناموفق بوده است‪ .‬کارکنان میز کمک مایلند تا به آنها تضمین دهید‬
‫که این یک مشکل شبکه نیست‪.‬‬
‫دسترسی پیدا کردن از طریق سیم‬
‫موضوع کاربر در رابطه با این مشکل چاپگر است؛ بنابراین‪ ،‬میخواهیم تا جای ممکن‬
‫شنودگر خود را در نزدیک چاپگر قرار دهیم‪ .‬با وجودی که نمیتوانیم ‪ Wireshark‬را روی‬
‫خود چاپگر نصب کنیم‪ ،‬ولی سوئیچهای استفاده شده در این شبکه از نوع سوئیچهای‬
‫پیشرفتهی الیهی ‪ 3‬هستند و بنابراین میتوانیم از منعکس کردن پورت استفاده کنیم‪ .‬ما پورتی‬
‫را منعکس میکنیم که در آن چاپگر به یک پورت خالی متصل شده است‪ ،‬و لپتاپی را به‬

‫‪25۷‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫این پورت متصل میکنیم که ‪ Wireshark‬روی آن نصب شده باشد‪ .‬پس از تکمیل این کار‪،‬‬
‫کاربری را وادار میکنیم تا یک کار چاپ بزرگ را برای چاپگر بفرستد‪ ،‬و ما خروجی آن‬
‫را مورد پایش قرار خواهیم داد‪ .‬فایل ربایش حاصله ‪ inconsistent_printer.pcap‬است‪.‬‬

‫تحلیل‬
‫همان طوری که در شکل ‪ 29-8‬نشان داده شده است‪ ،‬یک دستدهی ‪ TCP‬بین ایستگاه‬
‫کاری فرستندهی کار چاپ در شبکه ‪ 172.16.0.8‬و چاپگر ‪ 172.16.0.253‬منجر به آغاز‬
‫اتصال در آغاز فایل ربایش میشود‪ .‬به دنبال دستدهی‪ ،‬یک بستهی دادههای ‪ TCP‬با‬
‫اندازهی ‪ 1460‬بایت به چاپگر فرستاده میشود ‪ .‬مقدار دادهها را میتوان در انتهای سمت‬
‫راست از ستون ‪ Info‬در قسمت ‪ Packet List‬یا در پایین اطالعات سرآیند ‪ TCP‬در قسمت‬
‫‪ Packet Details‬مشاهده کرد‪.‬‬

‫شکل ‪ :29-8‬دادههای ارسال شده به چاپگر از طریق ‪TCP‬‬

‫‪258‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫همان طوری که در شکل ‪ 30-8‬نشان داده شده است‪ ،‬به دنبال بستهی ‪ ،4‬بستهی دادههای‬
‫دیگری فرستاده میشود که حاوی ‪ 1460‬بایت از اطالعات است ‪ .‬این دادهها توسط چاپگر‬
‫تصدیق شده است ‪.‬‬

‫شکل ‪ :30-8‬انتقال طبیعی دادهها و تصدیقهای ‪TCP‬‬

‫جریان دادهها تا دو بستهی آخر در ربایش ادامه پیدا میکند‪ .‬بستهی ‪ 121‬یک بستهی ارسال‬
‫مجدد ‪ TCP‬است‪ ،‬و نخستین نشانهی مشکل (همان طوری که در شکل ‪ 31-8‬نشان داده شده‬
‫است)‪.‬‬

‫شکل ‪ :31-8‬این بستههای ارسال مجدد ‪ TCP‬نشانهای از یک مشکل بالقوه هستند‪.‬‬

‫‪259‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫یک بستهی ارسال مجدد ‪ TCP‬زمانی فرستاده میشود که دستگاهی یک بستهی ‪ TCP‬به یک‬
‫دستگاهی دور میفرستد‪ ،‬و این دستگاهی دور این ارسال را تصدیق نمیکند‪ .‬بهمجرد آنکه‬
‫آستانهی ارسال مجدد حاصل شد‪ ،‬دستگاهی فرستنده فرض را بر آن قرار میدهد که‬
‫دستگاهی دور این دادهها را دریافت نکرده است‪ ،‬و بنابراین دوباره بسته را ارسال میکند‪ .‬این‬
‫فرآیند چند بار قبل توقف مؤثر ارتباط تکرار میشود‪.‬‬
‫در این سناریو‪ ،‬ارسال مجدد از ایستگاه کاری کاربر به چاپگر فرستاده میشود‪ ،‬زیرا چاپگر‬
‫دادههای ارسال شده را تصدیق نکرده است‪ .‬اگر همان طوری که در شکل ‪ 31-8‬نشان داده‬
‫شده است‪ ،‬بخش تحلیل ‪ SEQ/ACK‬از سرآیند ‪ TCP‬را همراه با اطالعات اضافه در زیر آن‬
‫را بزرگ کنید ‪ ،‬میتوانید جزئیات آن را ببینید که چرا این یک ارسال مجدد است‪ .‬مطابق‬
‫با جزئیات عمل آورده شده توسط ‪ ،Wireshark‬بستهی ‪ 121‬ارسال مجدد بستهی ‪ 120‬است‬
‫‪ .‬عالوه بر این‪ ،‬پایان مهلت ارسال مجدد‪ )RTO( 1‬برای این بستهی دوباره ارسال شده در‬
‫حدود ‪ 5/5‬ثانیه بود ‪.‬‬
‫در هنگام تجزیه و تحلیل زمان تأخیر بین بستهها میتوانید قالب نمایش زمان را برای مقصود‬
‫خود تغییر دهید‪ .‬در این مورد‪ ،‬از آنجایی که میخواهیم ببینیم که ارسال مجدد پس از ارسال‬
‫بستهی قبلی چقدر طول کشیده‪ ،‬این گزینه را با انتخاب کردن ‪View ► Time Display‬‬
‫‪ Format‬و انتخاب ‪ Seconds Since Previous Captured Packet‬تغییر دهید‪ .‬سپس‪،‬‬
‫همان طوری که در شکل ‪ 32-8‬نشان داده شده است‪ ،‬بهروشنی میتوانید ببینید که ارسال‬
‫مجدد در بستهی ‪ 121‬در ‪ 5/5‬ثانیه پس از فرستاده شدن بستهی اصلی (بستهی ‪ )120‬رخ داده‬
‫است ‪.‬‬

‫شکل ‪ :32-8‬مشاهدهی زمان بین بستهها برای رفع اشکال سودمند است‪.‬‬

‫‪1‬‬
‫)‪retransmission timeout (RTO‬‬
‫‪260‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫بستهی بعدی یک ارسال مجدد دیگر از بستهی ‪ 120‬است‪ .‬مقدار ‪ RTO‬این بسته ‪ 11/10‬ثانیه‬
‫است که شامل ‪ 5/5‬ثانیه از ‪ RTO‬بستهی قبلی است‪ .‬نگاهی به ستون ‪ Time‬از قسمت‬
‫‪ Packet List‬به ما میگوید که این ارسال مجدد ‪ 5/6‬ثانیه پس از ارسال مجدد پیشین‬
‫فرستاده شده است‪ .‬به نظر میرسد که این آخرین بسته در فایل ربایش باشد‪ ،‬و چاپگر بهطور‬
‫تصادفی حدوداً در همین زمان کار چاپ را متوقف میکند‪.‬‬
‫در این تحلیل‪ ،‬این مزیت را داریم که تنها با دو دستگاه در داخل شبکهی خودمان سر و کار‬
‫داریم‪ ،‬و بنابراین فقط نیاز به تعیین این امر داریم که آیا ایستگاه کاری کاربر مقصر است و‬
‫یا چاپگر‪ .‬میتوانیم ببینیم که دادهها برای مدتی بهدرستی جریان پیدا میکنند‪ ،‬و سپس در‬
‫نقطهای‪ ،‬چاپگر پاسخ به ایستگاه کاری را متوقف میکند‪ .‬ایستگاه کاری برای رساندن دادهها‬
‫به مقصدش بهترین تالش خود را میکند – همان طوری که از مشاهدهی ارسالهای مجدد‬
‫مشهود است – ولی چاپگر پاسخ دادن را متوقف میکند‪ .‬این مشکل تجدیدپذیر است و‬
‫صرف نظر از آن رخ میدهد که کدام کامپیوتر یک کار چاپ را میفرستد؛ بنابراین‪ ،‬فرض‬
‫را بر آن قرار میدهیم که چاپگر منشأ مشکل است‪.‬‬
‫پس از تحلیل بیشتر دریافتیم که ‪ RAM‬چاپگر بد کار میکند‪ .‬زمانی که کار چاپ زیادی به‬
‫چاپگر فرستاده میشود‪ ،‬چاپگر تنها تعداد مشخصی از صفحات را – احتماالً تا مناطق‬
‫مشخصی از حافظه که مورد دسترسی قرار گرفتهاند – چاپ میکند‪ .‬در این مرحله‪ ،‬موضوع‬
‫حافظه سبب میشود تا چاپگر نتواند هیچ دادهی جدیدی را بپذیرد‪ ،‬و ارتباط را با میزبانی‬
‫متوقف میکند که کار چاپ را میفرستد‪.‬‬

‫درسهای فراگرفته شده‬


‫اگرچه مشکل این چاپگر در نتیجهی مشکل شبکه نبود‪ ،‬ولی توانستیم از ‪ Wireshark‬برای‬
‫مشخص کردن مشکل استفاده نماییم‪ .‬بر خالف سناریوهای پیشین‪ ،‬این سناریو صرفاً بر‬

‫‪261‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫ترافیک ‪ TCP‬متمرکز بود‪ .‬خوشبختانه‪ ،‬زمانی که دو دستگاه بهسادگی ارتباط را متوقف‬


‫میکنند‪ ،‬آنگاه ‪ TCP‬اغلب اطالعات سودمندی را برای ما فراهم میکند‪.‬‬
‫در این مورد‪ ،‬زمانی که ارتباط بهطور ناگهانی متوقف شد‪ ،‬ما توانستیم مکان دقیق مشکل را‬
‫تنها بر پایهی کارکرد سرخود ارسال مجدد ‪ TCP‬مشخص نماییم‪ .‬همچنان که به حرکت خود‬
‫در سناریوهای خود ادامه میدهیم‪ ،‬اغلب برای رفع اشکال موضوعات پیچیدهتر بر کارکردی‬
‫نظیر این تکیه خواهیم کرد‪.‬‬

‫گیر افتاده در یک شعبهی اداره‬


‫در این سناریو‪ ،‬شرکتی داریم که دارای یک دفتر مرکزی و چند شعبهی دور تازه راهاندازی‬
‫شده است‪ .‬زیرساخت ‪ IT‬این شرکت اغلب محدود به داخل دفتر مرکزی است که از یک‬
‫دامنهی ویندوز مبتنی بر سرور و یک کنترل کنندهی ثانویهی دامنه استفاده مینماید‪ .‬کنترل‬
‫کنندهی دامنه مسئول اداره کردن ‪ DNS‬و درخواستهای احراز هویت برای کاربران شعبهی‬
‫‪1‬‬
‫اداره است‪ .‬کنترل کنندهی دامنه یک سرور ‪ DNS‬ثانویه است که باید اطالعات رکورد منابع‬
‫خود را از سرورهای ‪ DNS‬باالدستی در دفتر مرکزی دریافت نماید‪.‬‬
‫تیم توسعه فهمیده است که هیچ کس نمیتواند به سرورهای برنامهی کاربردی وب اینترانت‬
‫در شبکه دسترسی پیدا کند و به همین سبب در حال گسترده کردن زیرساخت جدیدی برای‬
‫دفتر شعبه است‪ .‬این سرورها در دفتر مرکزی قرار دارند و از طریق شبکهی گسترده‪)WAN( 2‬‬
‫مورد دسترسی قرار میگیرند‪ .‬این موضوع بر همهی کاربران در دفتر شعبه اثر گذاشته است‪،‬‬
‫و تنها به این سرورهای داخلی محدود است‪ .‬همهی کاربران میتواند به اینترنت و سایر منابع‬
‫در داخل شعبه دسترسی پیدا کنند‪.‬‬

‫‪1‬‬
‫)‪resource record (RR‬‬
‫‪2‬‬
‫)‪wide area network (WAN‬‬
‫‪262‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫شکل ‪ :33-8‬مؤلفههای مرتبط برای موضوع شعبهی گرفتار شده‬


‫راست دفتر مرکزی و چپ دفترشعبه‬

‫دسترسی پیدا کردن از طریق سیم‬


‫از آنجایی که این موضوع در ارتباط بین دفتر مرکزی و شعبهقرار دارد‪ ،‬بنابراین‪ ،‬چند مکان‬
‫وجود دارند که برای ردگیری کردن مشکل میتوانیم دادهها را از آنجا گردآوری نماییم‪.‬‬
‫مشکل میتواند در خصوص کاربران در درون شعبهی اداره باشد؛ بنابراین‪ ،‬با منعکس کردن‬
‫پورت یکی از آن کامپیوترها آغاز خواهیم کرد تا ببینیم چه چیزی در درون سیم دیده‬
‫میشود‪ .‬پس از گردآوری این اطالعات میتوانیم از آنها برای مشخص کردن مکانهای‬
‫گردآوری اطالعات دیگری استفاده کنیم که میتوانند در حل کردن مشکل کمک نمایند‪.‬‬
‫فایل ربایش اولیه برای یکی از این کاربرها ‪ stranded_clientside.pcap‬است‪.‬‬

‫تحلیل‬
‫همان طوری که در شکل ‪ 34-8‬نشان داده شده است‪ ،‬نخستین فایل ربایش ما زمانی آغاز‬
‫میشود که کاربری در ایستگاه کاری به آدرس ‪ 172.16.16.101‬سعی میکند تا به یک‬
‫برنامهی کاربردی میزبانشده در سرور برنامهی کاربردی دفتر مرکزی به آدرس‬
‫‪ 172.16.16.200‬دسترسی پیدا نماید‪ .‬این ربایش تنها دو بسته ادامه پیدا میکند‪ .‬انگار به نظر‬
‫میرسد یک درخواست ‪ DNS‬به ‪  172.16.16.251‬برای رکورد ‪  A‬برای ‪appserver‬‬
‫‪ ‬در بستهی اول فرستاده شده است‪.‬‬

‫‪263‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫همان طوری که در شکل ‪ 35-8‬نشان داده شده است‪ ،‬پاسخ به این بسته یک خرابی سرور‬
‫است ‪ ،‬که نشان میدهد چیزی مانع از آن میشود پرس و جوی ‪ DNS‬بهطور‬
‫موفقیتآمیزی تکمیل شود‪ .‬توجه داشته باشید که این بسته به پرس و جوی پاسخ نمیدهد‬
‫‪ ،‬چرا که این یک خطا است (خرابی سرور)‪.‬‬
‫اکنون میدانیم که مشکل ارتباط با موضوعی از ‪ DNS‬در ارتباط است‪ .‬از آنجایی که پرس‬
‫و جوهای ‪ DNS‬در شعبهی اداره توسط یک سرور ‪ DNS‬در ‪ 172.16.16.251‬تفکیک‬
‫شدهاند‪ ،‬بنابراین‪ ،‬اینجا توقفگاه بعدی ما خواهد بود‪.‬‬

‫شکل ‪ :34-8‬ارتباط با یک پرس و جوی ‪ DNS‬برای رکورد ‪appserver A‬‬

‫بهمنظور ربایش ترافیک مناسب از سرور ‪ DNS‬شعبهی اداره‪ ،‬شنودگر خود را در مکانی‬
‫میگذاریم و منعکس کردن پورت را به گونهای تغییر میدهیم که ترافیک سرور – بهجای‬
‫ترافیک ایستگاه کاری – اکنون به سوی شنودگر ما منعکس شود‪ .‬نتیجه فایل‬
‫‪ stranded_branchdns.pcap‬است‪.‬‬

‫‪264‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫شکل ‪ :35-8‬پاسخ پرس و جوی مشکلی را در باالدست نشان میدهد‪.‬‬


‫همان طوری که در شکل ‪ 36-8‬نشان داده شده است‪ ،‬این ربایش با پرس و جو و پاسخی‬
‫آغاز میشود که پیشتر دیدیم‪ ،‬و همراه با بستهای دیگر‪ .‬این بستهی اضافی قدری عجیب به‬
‫نظر میرسد‪ ،‬زیرا تالش میکند تا با سرور ‪ DNS‬اصلی در دفتر مرکزی ‪172.16.16.250‬‬
‫‪ ‬در پورت استاندارد سرور ‪ DNS‬شمارهی ‪ 53‬ارتباط برقرار نماید ‪ ،‬ولی این ‪UDP‬یی‬
‫‪ ‬نیست که عادت به دیدن آن داریم‪.‬‬
‫برای کشف مقصود این بسته‪ ،‬بحث ما از ‪ DSN‬را در فصل ‪ ۷‬به خاطر آورید‪ DSN .‬بهطور‬
‫معمول از ‪ UDP‬استفاده میکند‪ ،‬ولی زمانی که پاسخ به یک پرس و جوی از اندازهی معینی‬
‫تجاوز کند‪ ،‬آنگاه از ‪ TCP‬استفاده مینماید‪ .‬در این مورد‪ ،‬ما قدری ترافیک اولیهی ‪ UDP‬را‬
‫خواهیم دید که ترافیک ‪ TCP‬را آغاز مینماید‪ TCP .‬نیز در طول یک ناحیه انتقال‪ 1‬برای‬
‫‪ DNS‬مورد استفاده قرار میگیرد؛ یعنی‪ ،‬زمانی رکوردهای منابع بین سرورهای ‪ DNS‬ارسال‬
‫شدهاند‪ ،‬و این احتماالً همان چیزیست که در این مورد صادق است‪.‬‬

‫‪1‬‬
‫‪zone transfer‬‬
‫‪265‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫شکل ‪ :36-8‬این بستهی ‪ SYN‬از پورت ‪ 53‬استفاده میکند‪ ،‬ولی ‪ UDR‬نیست‬

‫سرور ‪ DSN‬در مکان دفتر شعبه یک ‪ slave‬به سرور ‪ DNS‬در دفتر مرکزی است‪ ،‬و این‬
‫بدان معنی است که برای دریافت رکوردهای مرجع به آن تکیه میکند‪ .‬سرور برنامهی‬
‫کاربردی که کاربران در دفتر شعبه سعی میکنند به آن دسترسی پیدا کنند در داخل دفتر‬
‫مرکزی قرار دارد‪ ،‬که این بدان معنی است که سرور ‪ DNS‬دفتر مرکزی برای آن سرور معتبر‬
‫است‪ .‬برای آنکه سرور دفتر شعبه بتواند یک درخواست ‪ DNS‬را برای سرور برنامهی‬
‫کاربردی تفکیک کند‪ ،‬رکورد مرجع ‪ DNS‬برای آن سرور باید از سرور ‪ DNS‬دفتر مرکزی‬
‫به سرور ‪ DNS‬دفتر شعبه ارسال شود‪ .‬این مسئله احتماالً منشأ بستهی ‪ SYN‬در این فایل ربایش‬
‫است‪.‬‬
‫فقدان پاسخ به این بستهی ‪ SYN‬به ما میگوید که مشکل ‪ DNS‬در اینجا نتیجهی یک انتقال‬
‫ناحیه ناموفق بین سرورهای ‪ DNS‬دفتر مرکزی و دفتر شعبه است‪ .‬اکنون با پیدا کردن دلیل‬
‫ناموفق بودن انتقال منطقه میتوانیم یک گام دیگر به جلو برداریم‪ .‬مقصران احتمالی را میتوان‬
‫به مسیریابهای بین این دفاتر و یا خود سرور ‪ DNS‬دفتر مرکزی محدود کرد‪ .‬برای فهمیدن‬
‫این موضوع میتوانیم ترافیک سرور ‪ DNS‬دفتر مرکزی را شنود کنیم تا ببینیم که آیا بستهی‬
‫‪ SYN‬آن را برای این سرور میسازد یا نه‪.‬‬

‫‪266‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫من یک فایل ربایش برای ترافیک سرور ‪ DNS‬دفتر مرکزی را لحاظ نکردهام‪ ،‬زیرا چنین‬
‫چیزی وجود نداشت‪ .‬بستهی ‪ SYN‬هرگز به این سرور نرسیده است‪ .‬بهمحض اعزام تکنسینها‬
‫برای بررسی پیکربندی مسیریابهایی که این دفتر را به یکدیگر متصل میکنند‪ ،‬معلوم شد‬
‫که مسیریاب دفتر مرکزی بهصورتی پیکربندی شده بود که اجازه دهد ترافیک ‪ UDP‬تنها در‬
‫پورت ‪ 53‬وارد شود و ورود ترافیک ‪ TCP‬در پورت ‪ 53‬را مسدود کند‪ .‬این پیکربندی اشتباه‬
‫ساده مانع از رخ دادن انتقالهای منطقه بین سرورها شده بود‪ ،‬که مانع از آن میشد تا کاربران‬
‫دفتر شعبه بتوانند پرس و جوها برای دستگاههای موجود در دفتر مرکزی را تبدیل کنند‪.‬‬

‫درسهای فراگرفته شده‬


‫شما با دیدن فیلمهای جنایی میتوانید خیلی چیزها دربارهی بررسی مشکالت و موضوعات‬
‫ارتباطات شبکهای یاد بگیرید‪ .‬زمانی که جنایتی رخ میدهد‪ ،‬کارآگاهان بررسی و تجسس‬
‫خود را با آنهایی آغاز میکنند که بیش از همه تحت تأثیر قرار گرفتهاند‪ .‬سر نخهایی که از‬
‫این بررسی حاصل میشوند مورد پیگیری قرار میگیرند‪ ،‬و این فرآیند تا زمان پیدا شدن‬
‫مجرم ادامه پیدا میکند‪.‬‬
‫در این سناریو‪ ،‬ما با بررسی قربانی (ایستگاه کاری) و ایجاد کردن سر نخها (با یافتن مشکل‬
‫ارتباطی ‪ )DSN‬کار خود را آغاز کردیم‪ .‬سر نخهایمان ما را به سرور ‪ DNS‬دفتر شعبه‪ ،‬و‬
‫سپس به سرور ‪ DNS‬دفتر مرکزی‪ ،‬و در تهایت به مسیریاب راهنمایی کرد که منشأ مشکل‬
‫بود‪.‬به هنگام اجرای تحلیل سعی کنید تا در مورد بستهها بهعنوان سر نخ فکر کنید‪ .‬سرنخها‬
‫همیشه به شما نمیگویند که چه کسی مرتکب جنایت شده است‪ ،‬ولی آنها اغلب شما را به‬
‫مجرم میرسانند‪.‬‬

‫توسعه دهندگان ناراضی‬


‫بعضی از شایعترین بحثها در ‪ IT‬بین طراحان و سازندگان برنامه و مدیران است‪ .‬طراحان‬
‫برنامه همیشه تنظیمات بدساخت شبکه و تجهیزات معیوب را برای ایرادات برنامه سرزنش‬

‫‪26۷‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫میکنند‪ .‬مدیران سیستم نیز تمایل دارند که کد بَد را برای خطاهای شبکه و ارتباطات کند‬
‫سرزنش نمایند‪.‬‬
‫در این سناریو‪ ،‬برنامهنویسی یک برنامهی کاربردی را برای پیگیری فروش در چند فروشگاه‬
‫و گزارش دادن به بانک اطالعات مرکزی تهیه کرده است‪ .‬این برنامه در تالش برای حفظ و‬
‫صرفهجویی پهنای باند در طول ساعات معمول اداری یک برنامهی زمان بالدرنگ نیست‪.‬‬
‫گزارش دادن دادهها در کل طول روز انباشته میشود و در طول شب بهصورت یک فایل‬
‫مقادیر جداشده با ویرگول‪ )CSV( 1‬مخابره میشود تا در بانک اطالعات مرکزی گنجانده‬
‫شود‪.‬این برنامهی کاربردی تازه تهیه شده بهدرستی عمل نمیکند‪ .‬فایلهای فرستاده شده از‬
‫فروشگاهها توسط سرور دریافت میشوند‪ ،‬ولی دادههای گنجانده شده در بانک اطالعات‬
‫صحیح نیست‪ .‬بخشهای در حال گمشدن هستند؛ دادهها در مکان نادرست قرار دارند؛ و‬
‫بعضی از بخشهای دادهها در حال گمشدن هستند‪ .‬برنامهنویس از لج مدیر سیستم‪ ،‬شبکه را‬
‫برای این مشکل سرزنش میکند‪ .‬او متقاعد شده است که فایلها در هنگام ارسال از‬
‫فروشگاهها به مخزن اطالعات مرکزی خراب شدهاند‪ .‬هدف ما آن است که به او ثابت کنیم‬
‫که اشتباه میکند‪.‬‬

‫دسترسی پیدا کردن از طریق سیم‬


‫بهمنظور گردآوری دادههایی که نیاز داریم‪ ،‬میتوانیم بستهها را در یکی از فروشگاهها یا در‬
‫دفتر مرکزی ربایش کنیم‪ .‬از آنجایی که این مشکل بر کل فروشگاهها اثر میگذارد‪ ،‬به نظر‬
‫میرسد که اگر مشکل با شبکه در ارتباط باشد‪ ،‬پس باید در دفتر مرکزی رخ دهد‪ ،‬یعنی‪،‬‬
‫تنها سر نخ مشترک در میان همهی فروشگاهها‪.‬‬
‫سوئیچهای شبکه منعکس کردن پورت را پشتیبانی میکنند‪ ،‬و بنابراین پورتی را منعکس‬
‫خواهیم کرد که سرور به آن متصل است و ترافیک آن را شنود میکنیم‪ .‬ربایش ترافیک‬

‫‪1‬‬
‫)‪comma-separated value (CSV‬‬
‫‪268‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫محدود به یک نمونهی منفرد از یک فروشگاه خواهد بود که در حال آپلود کردن فایل ‪CSV‬‬
‫در سرور گردآوری است‪ .‬نتیجه فایل ربایش ‪ tickedoffdeveloper.pcap‬است‪.‬‬

‫تحلیل‬
‫ما جز جریان پایهی اطالعات در شبکه چیزی دربارهی برنامهی کاربردی که برنامهنویس تهیه‬
‫کرده است نمیدانیم‪ .‬به نظر میرسد که فایل ربایش با قدری ترافیک ‪ FTP‬آغاز میشود؛‬
‫بنابراین‪ ،‬آن را مورد بررسی قرار خواهیم داد تا ببینیم که آیا این بهواقع ساز و کاری است که‬
‫این فایل را منتقل میکند یا نه‪ .‬این جای خوبی برای بررسی نمودار جریان ارتباطات برای‬
‫خالصهای عالی و تمیز از ارتباطاتی است که در حال رخ دادن است‪ .‬برای انجام این کار‬
‫‪ Statistics ► Flow Graph‬را انتخاب کنید‪ ،‬و سپس بر روی ‪ OK‬کلیک کنید‪ .‬شکل‬
‫‪ 3۷-8‬نمودار حاصله را نشان میدهد‪.‬‬

‫شکل ‪ :3۷-8‬نمودار جریان نمایی سریع از ارتباطات ‪ FTP‬را به شما میدهد‪.‬‬

‫‪269‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫بر پایهی این نمودار جریان‪ ،‬مشاهده میکنیم که ارتباط پایهای ‪ FTP‬بین ‪ 172.16.16.128‬و‬
‫‪ 172.16.16.121‬برقرار شده است ‪ .‬از آنجایی که ‪ 172.16.16.128‬در حال آغاز کردن‬
‫ارتباط است ‪ ،‬بنابراین‪ ،‬میتوانیم فرض کنیم که این یک کاربر است‪ ،‬و اینکه‬
‫‪ 172.16.16.121‬سروری است که دادهها را کامپایل و پردازش میکند‪ .‬این نمودار جریان‬
‫تصدیق میکند که این ترافیک منحصراً از پروتکل ‪ FTP‬استفاده مینماید‪.‬‬
‫میدانیم که قدری از انتقال دادهها باید در اینجا رخ دهد‪ ،‬بنابراین‪ ،‬میتوانیم از دانش خود در‬
‫خصوص ‪ FTP‬برای تعیین محل بسته در جایی استفاده کنیم که انتقال آغاز میگردد‪ .‬اتصال‬
‫‪ FTP‬و انتقال دادهها توسط کاربر آغاز میشوند‪ ،‬و بنابراین ما باید به دنبال دستور ‪FTP‬‬
‫‪ STOR‬بگردیم که برای آپلود کردن دادهها در یک سرور ‪ FTP‬مورد استفاده قرار میگیرد‪.‬‬
‫سادهترین راه برای پیدا کردن این دستور آن است که فیلتری بسازیم‪.‬‬
‫از آنجایی که این فایل ربایش توسط دستورهای درخواست ‪ FTP‬به وجود آمده است‪،‬‬
‫بنابراین‪ ،‬بهجای دستهبندی صدها پروتکل و گزینه در سازندهی عبارت‪ ،‬میتوانیم فیلتر مورد‬
‫نیازمان را مستقیماً از صفحهی ‪ Packet List‬بسازیم‪ .‬بهمنظور انجام این کار‪ ،‬نخست باید‬
‫بستهای را انتخاب کنیم که یک دستور درخواست ‪ FTP‬در آن وجود داشته باشد‪ .‬ما بستهی‬
‫‪ 5‬را انتخاب میکنیم‪ ،‬زیرا نزدیک باالی فهرست ما قرار دارد‪ .‬سپس بخش ‪ FTP‬را در قسمت‬
‫‪ Packet Details‬و سپس بخش ‪ USER‬را بزرگ میکنیم‪ .‬روی فیلد ‪Request‬‬
‫‪ Command: USER‬کلیک راست کنید‪ ،‬و ‪ Prepare a Filter‬را انتخاب نمایید‪ .‬در آخر‪،‬‬
‫‪ Selected‬را انتخاب کنید‪.‬‬
‫این کار فیلتری را برای همهی بستههایی تهیه میکند که حاوی دستور درخواست ‪FTP‬‬
‫‪ USER‬هستند و آن را در ‪ dialog‬فیلتر قرار میدهد‪ .‬سپس‪ ،‬همان طوری که در شکل‪38-8‬‬
‫نشان داده شده است‪ ،‬این فیلتر را با جایگزین کردن واژهی ‪ STOR‬بهجای ‪ USER‬اصالح‬
‫کنید ‪.‬‬

‫‪2۷0‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫شکل ‪ :38-8‬این فیلتر کمک میکند تا محلی که انتقال دادهها از آنجا آغاز میشود شناسایی گردد‪.‬‬

‫اکنون این فیلتر را با فشار دادن بر روی ‪ ENTER‬اعمال کنید‪ ،‬و خواهید دید که تنها یک‬
‫نمونه از دستور ‪ STOR‬در فایل ربایش (در بستهی ‪ )64‬وجود دارد ‪.‬‬
‫اکنون که میدانیم انتقال دادهها از کجا آغاز شده است‪ ،‬این فیلتر را با کلیک کردن بر روی‬
‫دکمهی ‪ Clear‬در باالی قسمت ‪ Packet List‬پاک کنید‪.‬‬
‫با بررسی فایل ربایش که با بستهی ‪ 64‬آغاز میشود‪ ،‬همان طوری که در شکل ‪ 39-8‬نشان‬
‫داده شده است‪ ،‬مشاهده میکنیم که این بسته انتقال فایل ‪ store4829-03222010.csv‬را‬
‫تصریح میکند ‪.‬‬

‫شکل ‪ :39-8‬فایل ‪ CSV‬که با استفاده از ‪ FTP‬منتقل شده است‪.‬‬

‫بستههایی که به دنبال دستور ‪ STOR‬میآیند از پورتی متفاوت استفاده میکنند‪ ،‬ولی بهعنوان‬
‫بخشی از یک انتقال ‪ FDP-DATA‬شناسایی شدهاند‪ .‬ما انتقال این اطالعات را تصدیق‬
‫کردهایم‪ ،‬ولی هنوز اثبات نکردهایم که برنامهنویس اشتباه میکند‪ .‬برای این کار باید نشان‬
‫دهیم که محتوای این فایل پس از گذشتن از شبکه سالم است و برای این کار باید فایل منتقل‬
‫شده را از بستههای ربایش استخراج کنیم‪.‬‬
‫وقتی فایلی در قالب زمرگذاری نشده از یک شبکه میگذرد‪ ،‬به بخشهایی تقسیم میگردد‬
‫و در مقصد دوباره بازسازی میشود‪ .‬در این سناریو‪ ،‬ما بستهها را پس از رسیدن به مقصد‬
‫‪2۷1‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫ربایش کردیم‪ ،‬ولی قبل از آنکه دوباره بازسازی شوند‪ .‬همهی دادهها آنجاست‪ ،‬و ما تنها نیاز‬
‫به آن داریم تا با استخراج فایل بهعنوان یک جریان داده‪ 1‬آن را بازسازی کنیم‪ .‬بهمنظور اجرای‬
‫بازسازی‪ ،‬یکی از بستهها را در جریان ‪ FTP-DATA‬انتخاب کنید (مانند بستهی ‪ )66‬و بعد از‬
‫راست کلیک بر روی ‪ Follow TCP Stream‬کلیک کنید‪ .‬همان طوری که در شکل ‪40-8‬‬
‫نشان داده شده است‪ ،‬نتایج در جریان ‪ TCP‬نمایش داده میشود‪.‬‬
‫دادهها ظاهر میشوند‪ ،‬زیرا بهصورت ‪ plaintext‬از طریق ‪ FTP‬منتقل شدهاند‪ ،‬ولی تنها بر‬
‫اساس جریان دادهها نمیتوانیم مطمئن باشیم که فایل سالم و بینقص است‪ .‬برای بازسازی‬
‫دادهها – بهطوری که بتوانیم آن را در قالب اولیهاش استخراج کنیم – بر روی دکمهی ‪Save‬‬
‫‪ As‬کلیک کنید و نام آن فایل را بهصورتی که در بستهی ‪ 64‬نمایش داده شده (همان طوری‬
‫که در شکل ‪ 41-8‬نشان داده شده است) تصریح نمایید‪.‬‬

‫شکل ‪ :40-8‬جریان ‪ TCP‬نشان میدهد که دادههای منتقل شده چگونه به نظر میرسند‪.‬‬

‫‪1‬‬
‫‪data stream‬‬
‫‪2۷2‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫نتیجهی این عملیات ذخیره کردن باید یک فایل ‪ CSV‬باشد که دقیقاً یک کپی سطح بایت‬
‫از فایلی است که در اصل از سیستم فروشگاه ارسال شده است‪ .‬این فایل را میتوان توسط‬
‫مقایسهی درهمسازی ‪ 1 MD5‬فایل اصلی با درهمسازی ‪ MD5‬فایل استخراج شده تصدیق‬
‫کرد‪.‬‬

‫شکل ‪ :41-8‬ذخیره کردن جریان بهصورت نام فایل اصلی‬

‫پس از مقایسهی فایلها‪ ،‬میتوانیم اثبات کنیم که شبکه را نباید برای خرابی بانک اطالعات‬
‫سرزنش کرد که درون این برنامهی کاربردی رخ میدهد‪ .‬فایل ارسال شده از فروشگاه به‬
‫سرور گردآوری در زمان رسیدن به سرور سالم و دست نخورده است‪ ،‬و بنابراین هر نوع‬
‫خرابی باید زمانی رخ داده باشد که فایل توسط این برنامهی کاربردی پردازش شده است‪.‬‬

‫درسهای فراگرفته شده‬


‫موضوع جالب در خصوص تحلیل در سطح بسته آن است که نیازی ندارید تا با درهم‬
‫ریختگیهای برنامههای کاربردی سر و کار داشته باشید‪ .‬برنامههای کاربردی که به شکلی‬
‫ضعیف کدگذاری شده باشند از حیث تعداد بسیار بیشتر از برنامههای کاربردی خوب است‪،‬‬
‫ولی در سطح بسته‪ ،‬هیچ یک از اینها اهمیتی ندارد‪ .‬در این مورد‪ ،‬برنامهنویس نگران همهی‬
‫مؤلفههایی بود که برنامهی کاربردیاش به آنها وابسته بود‪ ،‬ولی در پایان روز‪ ،‬انتقال دادههای‬

‫‪1‬‬
‫‪MD5 hash‬‬
‫‪2۷3‬‬
‫سناریوهای واقعی پایه‬ ‫فصل هشتم‬

‫پیچیدهاش که صدها خط برنامه را به خود اختصاص داده بود هنوز هم چیزی بیشتر ‪،FTP‬‬
‫‪ ،TCP‬و ‪ IP‬نبود‪ .‬با استفاده از آنچه دربارهی این پروتکلهای پایه میدانیم‪ ،‬توانستیم اطمینان‬
‫حاصل کنیم که فرآیند ارتباط بهدرستی دنبال شده و حتی توانستیم فایلهایی را بهمنظور‬
‫اثبات صحت شبکه استخراج کنیم‪ .‬بسیار مهم است که به یاد داشته باشید اهمیتی ندارد‬
‫موضوعی که در دست دارید تا چه اندازه پیچیده است‪ ،‬چرا که این هنوز فقط مشتی بسته‬
‫است‪.‬‬

‫آخرین نظرات‬
‫در این فصل چندین سناریوی پایه را پوشش دادیم که در آنها تحلیل ما را قادر ساخت تا‬
‫درک بهتری از ارتباطات مشکلدار پیدا کنیم‪ .‬با استفاده از تحلیل پایهای پروتکلهای عمومی‬
‫توانستیم مشکالت شبکه را به شکلی بهنگام دنبال و حل کنیم‪ .‬درست است که احتمال دارد‬
‫دقیقاً با سناریوهای کتاب تمرین خود مواجه نشوید‪ ،‬اما‪ ،‬تکنیکهای تحلیل که در اینجا ارائه‬
‫شدهاند باید به هنگامی که مشکالت منحصر به فرد خود را حل میکنید برایتان سودمند باشند‪.‬‬

‫‪2۷4‬‬
‫فصل ‪9‬‬
‫جنگ با شبکه کُند‬
‫جنگ با شبکه کند‬ ‫فصل نهم‬

‫جنگیدن با شبک َهکُند‬


‫بهعنوان یک مدیر شبکه‪ ،‬بسیاری از وقت شما صرف تعمیر کامپیوترها و سرویسهایی خواهد‬
‫شد که کندتر از آنچه باید کار میکنند‪ .‬ولی تنها به این سبب که کسی میگوید شبکه کند‬
‫کار میکند نمیتوان شبکه را برای این مسئله مقصر دانست‪.‬‬
‫پیش از آنکه شروع به مهار مشکل یک شبکهی کند کنید‪ ،‬نخست باید مشخص کنید که آیا‬
‫بهواقع شبکه کند کار میکند یا نه‪ .‬در این فصل خواهید آموخت که چگونه این کار را انجام‬
‫دهید‪.‬‬
‫ما با بحث و توضیحترمیم خطا‪ 1‬و ویژگیهای کنترل جریان‪ 2‬شروع خواهیم کرد‪ .‬سپس‬
‫چگونگی کشف و شناسایی منبع کندی در شبکه را مورد کاوش قرار خواهیم داد‪ .‬در آخر‪،‬‬
‫به شیوههای مبناسازی‪ 3‬شبکهها و تجهیزات و سرویسهایی نگاه خواهیم کرد که در این‬
‫شبکهها کار میکنند‪ .‬پس از اتمام این فصل باید برای شناسایی‪ ،‬تشخیص‪ ،‬و رفع ایراد‬
‫شبکههای کند آمادهتر باشید‪.‬‬

‫نکته‪ :‬برای رفع اشکال از شبکههای کند میتوان از تکنیکهای متعددی استفاده کرد‪ .‬من‬
‫تصمیم گرفتهام تا این فصل را اساساً بر ‪ TCP‬متمرکز کنم‪ ،‬زیرا اغلب اوقات این همهی آن‬
‫چیزیست که مجبور خواهید بود با آن کار کنید‪ .‬پروتکل کنترل انتقال (‪ )TCP‬شما را قادر‬
‫میسازد تا بهجای ایجاد ترافیک بیشتر‪ ،‬تحلیل گذشتهنگرِ غیرفعال‪ 4‬را اجرا کنید (همانند‬
‫‪.)ICMP‬‬

‫‪1‬‬
‫‪error-recovery‬‬
‫‪2‬‬
‫‪flow-control‬‬
‫‪3‬‬
‫‪baselining‬‬
‫‪4‬‬
‫‪passive retrospective analysis‬‬
‫‪2۷6‬‬
‫جنگ با شبکه کند‬ ‫فصل نهم‬

‫ویژگیهای ترمیم خطای ‪TCP‬‬


‫ویژگیهای ترمیم خطای ‪ TCP‬بهترین ابزارهای ما برای تعمیم مکان‪ ،‬تشخیص‪ ،‬و سرانجام‬
‫اصالح تأخیر ‪ 1‬باال در یک شبکه هستند‪ .‬از لحاظ شبکهسازی کامپیوتری‪ ،‬تأخیر معیاری از‬
‫تأخیر بین ارسال و دریافت یک بسته است‪.‬‬
‫تأخیر را میتوان بهصورت یک طرفه (از یک مبدأ واحد به یک مقصد) و بهصورت رفت و‬
‫برگشتی (از یک مبدأ به یک مقصد و بازگشت به مبدأ اولیه) اندازهگیری کرد‪ .‬هنگامی که‬
‫ارتباط بین دستگاهها سریع باشد‪ ،‬و مقدار زمان الزم برای رسیدن یک بسته از یک نقطه به‬
‫نقطهای دیگر کم باشد‪ ،‬آنگاه گفته میشود که آن ارتباط دارای تأخیر پایین‪ 2‬است‪ .‬برعکس‪،‬‬
‫زمانی که بستهها برای انتقال بین مبدأ و مقصد زمان زیادی را صرف کنند‪ ،‬گفته میشود که‬
‫این ارتباط دارای تأخیر باال‪ 3‬است‪ .‬تأخیر باال دشمن شمارهی یک همهی مدیران شبکه است‬
‫که برای سالمت عقل خود (و کارشان) ارزش قائل هستند‪.‬‬
‫در فصل ‪ 6‬بحث کردیم که ‪ TCP‬چگونه برای اطمینان حاصل کردن از تحویل معتبر بستهها‬
‫از شمارههای ترتیب‪ 4‬و شمارههای تصدیق‪ 5‬استفاده مینماید‪ .‬ما در این فصل دوباره به‬
‫شمارههای ترتیب و تصدیق نگاهی خواهیم داشت تا ببینیم که وقتی تأخیر باال سبب میشود‬
‫تا این شمارهها خارج از ترتیب دریافت شوند (یا اصالً دریافت نشوند)‪ ،‬آنگاه ‪ TCP‬چگونه‬
‫واکنش نشان میدهد‪.‬‬

‫ارسالهای مجدد ‪TCP‬‬


‫توانایی یک میزبان برای ارسال مجدد یکی از اساسیترین ویژگیهای ترمیم خطای ‪TCP‬‬
‫است‪ .‬این ویژگی برای جنگ با گمشدن بسته‪ 6‬طراحی شده است‪.‬‬

‫‪1‬‬
‫‪latency‬‬
‫‪2‬‬
‫‪low latency‬‬
‫‪3‬‬
‫‪high latency‬‬
‫‪4‬‬
‫‪sequence number‬‬
‫‪5‬‬
‫‪acknowledgment number‬‬
‫‪6‬‬
‫‪packet loss‬‬
‫‪2۷۷‬‬
‫جنگ با شبکه کند‬ ‫فصل نهم‬

‫دالیل متعددی میتوانند سبب گمشدن بسته شوند‪ ،‬که از آن جمله میتوان به برنامههای‬
‫کاربردی خراب‪ ،‬مسیریابهای تحت بار ترافیک سنگین‪ ،‬یا قطع موقتی سرویس اشاره کرد‪.‬‬
‫چیزها در سطح بسته سریع حرکت میکنند‪ ،‬و اغلب گمشدن بسته امری موقتی است؛ بنابراین‪،‬‬
‫برای ‪ TCP‬بسیار مهم و حیاتی است که اتالف بسته را کشف و شناسایی کرده و از آن‬
‫وضعیت به حال اول برگردد‪.‬‬
‫زمانسنج ارسال مجدد‪ ،1‬ساز و کار اصلی و اولیه برای تعیین آن است که آیا ارسال مجدد‬
‫یک بسته الزم است یا نه‪ .‬این زمانسنج مسئول حفظ مقداری است که پایان مهلت ارسال‬
‫مجدد (‪ )RTO‬نامیده میشود‪ .‬هر گاه بستهای با استفاده از ‪ TCP‬ارسال میشود‪ ،‬زمانسنج‬
‫ارسال مجدد شروع به کار میکند‪ .‬این زمانسنج هنگامی متوقف میشود که یک ‪ACK‬‬
‫برای آن بسته دریافت شود‪ .‬زمان بین ارسال بسته و دریافت بستهی ‪ ACK‬را زمان رفت و‬
‫برگشت‪ 2‬مینامند‪ .‬از چنین زمانهایی میانگین گرفته میشود‪ ،‬و این میانگین برای تعیین مقدار‬
‫نهایی ‪ RTO‬استفاده میگردد‪.‬‬
‫سیستم عامل ارسال‪ ،‬تا زمان تعیین نهایی یک ‪ RTO‬بر تنظیمات ‪ RTT‬پیکربندی شدهاش‬
‫تکیه میکند‪ .‬این تنظیم برای ارتباط برقرار کردنِ اولیهی بین میزبانها صادر شده است و‬
‫بهمنظور شکل دادن ‪ RTO‬واقعی‪ ،‬بر اساس ‪ RTT‬از بستههای دریافتی استوار است‪.‬‬
‫به محض تعیین مقدار ‪ ،RTO‬زمانسنج ارسال مجدد در مورد هر بستهی ارسال شده مورد‬
‫استفاده قرار میگیرد تا مشخص کند که آیا گمشدن بسته رخ داده است یا نه‪ .‬شکل ‪1-9‬‬
‫فرآیند اریال مجدد ‪ TCP‬را نمایش میدهد‪.‬‬

‫‪1‬‬
‫‪retransmission timer‬‬
‫‪2‬‬
‫‪round-trip time = RTT‬‬
‫‪2۷8‬‬
‫جنگ با شبکه کند‬ ‫فصل نهم‬

‫شکل ‪ :1-9‬نمایی مفهومی از فرآیند ارسال مجدد ‪TCP‬‬

‫وقتی بستهای فرستاده میشود‪ ،‬ولی گیرنده یک بستهی ‪ TCP ACK‬را نمیفرستد‪ ،‬میزبان‬
‫ارسالکننده فرض را بر آن میگذارد که بستهی اولیه گم شده است و این بستهی اولیه را‬
‫دوباره ارسال میکند‪ .‬زمانی که ارسال مجدد اجرا میشود‪ ،‬مقدار ‪ RTO‬دو برابر میشود؛‬
‫اگر هیچ بستهی ‪ACK‬ای پیش از به حد رسیدن این مقدار دریافت نشود‪ ،‬آنگاه ارسال مجدد‬
‫دیگری رخ خواهد داد‪ .‬اگر یک ‪ ACK‬دریافت نشود‪ ،‬آنگاه مقدار ‪ RTO‬برای ارسال مجدد‬
‫بعدی دو برابر خواهد شد‪ .‬این فرآیند ادامه پیدا خواهد کرد و مقدار ‪ RTO‬برای هر ارسال‬
‫مجدد دو برابر خواهد شد‪ ،‬تا آنکه یک بستهی ‪ ACK‬دریافت شود و یا تا زمانی که فرستنده‬
‫به حداکثر تعداد تالشهای ارسال مجددی برسد که برای اجرای آن پیکربندی شده است‪.‬‬
‫حداکثر تالشهای ارسال مجدد به مقدار پیکربندی شده در سیستم عامل ارسالکننده بستگی‬
‫دارد‪ .‬میزبانهای ‪ Windows‬بهطور پیش فرض تا حداکثر ‪ 5‬تالش ارسال مجدد دارند‪ .‬اغلب‬
‫میزبانهای ‪ Linux‬تا حداکثر ‪ 15‬تالش ارسال مجدد دارند‪ .‬این گزینه در هر کدام از‬
‫سیستمهای عامل قابل پیکربندی است‪.‬‬

‫‪2۷9‬‬
‫جنگ با شبکه کند‬ ‫فصل نهم‬

‫برای دیدن نمونهای از ارسال مجدد ‪ ،TCP‬فایل ‪ tcp_retransmission.pcap‬را باز کنید که‬
‫حاوی شش بسته است‪ .‬نخستین بستهی آن در شکل ‪ 2-9‬نشان داده شده است‪.‬‬

‫شکل ‪ :2-9‬یک بستهی ‪ TCP‬ساده که حاوی داده است‬

‫این بسته یک بستهی ‪ TCP PSH/ACK‬است ‪ ‬که حاوی ‪ 648‬بایت داده است ‪ ‬که از‬
‫‪ 10.3.30.1‬به ‪ 10.3.71.7‬فرستاده شده است ‪ .‬این نمونهی بارزی از یک بستهی داده است‪.‬‬
‫تحت شرایط عادی‪ ،‬انتظار دارید تا پس از فرستاده شدن نخستین بسته‪ ،‬در پاسخ یک بستهی‬
‫‪ TCP ACK‬را با سرعتی منصفانه سریع دریافت کنید‪ .‬اما‪ ،‬در این مورد‪ ،‬بستهی بعدی یک‬
‫ارسال مجدد است‪ .‬شما با نگاه کردن به بسته در قسمت ‪ Packet List‬میتوانید این را بفهمید‪.‬‬
‫ستون ‪ Info‬بهروشنی میگوید ]‪ ،[TCP Retransmission‬و این بسته با متن قرمز در یک‬
‫پس زمینهی سیاه ظاهر میشود‪ .‬شکل ‪ 3-9‬نمونههایی از ارسالهای مجددِ فهرست شده در‬
‫قسمت ‪ Packet List‬را نشان میدهد‪.‬‬

‫‪280‬‬
‫جنگ با شبکه کند‬ ‫فصل نهم‬

‫شکل ‪ :3-9‬ارسالهای مجدد در قسمت ‪Packet List‬‬

‫همان طوری که در شکل ‪ 4-9‬نشان داده شده است‪ ،‬همچنین با بررسی یک بسته در‬
‫قسمتهای ‪ Packet Details‬و ‪ Packet Bytes‬میتوانید تعیین کنید که آیا این بسته یک‬
‫ارسال مجدد است یا نه‪.‬‬

‫شکل ‪ :4-9‬یک بستهی ارسال مجدد منفرد‬

‫توجه داشته باشید که این بسته مشابه همان بستهی اصلی است (غیر از فیلدهای شناسهی ‪ IP‬و‬
‫‪ .)Checksum‬برای تصدیق این امر‪ ،‬قسمت ‪ Packet Bytes‬این بستهی مجدداً ارسال شده را‬
‫با قسمت ‪ Packet Bytes‬بستهی اصلی مقایسه کنید ‪.‬‬

‫‪281‬‬
‫جنگ با شبکه کند‬ ‫فصل نهم‬

‫در قسمت ‪ Packet Details‬توجه داشته باشید که بستهی ارسال مجدد دارای اطالعاتی افزوده‬
‫است که زیر سرآیند ‪ SEQ/ACK Analysis‬آورده شدهاند ‪ .‬این اطالعات سودمند توسط‬
‫‪ Wireshark‬فراهم شده است و بهواقع در خود بسته وجود ندارد‪ .‬بخش ‪SEQ/ACK‬‬
‫‪ Analysis‬به ما میگوید که این بهواقع یک ارسال مجدد است ‪ ‬که مقدار ‪ RTO‬آن‬
‫‪ 0/206‬ثانیه است ‪ ،‬و اینکه این ‪ RTO‬بر تفاضل زمانی‪ 1‬از بستهی ‪ 1‬استوار است ‪.‬‬
‫بررسی بستههای باقیمانده باید نتایج یکسانی را حاضر نماید و تنها اختالف بین بستههای پیدا‬
‫‪2‬‬
‫شده در فیلدهای شناسهی ‪ IP‬و ‪ Checksum‬و مقدار ‪ RTO‬است‪ .‬برای تجسم مرور زمان‬
‫بین هر بسته‪ ،‬همان طوری که در شکل ‪ 5-9‬نشان داده شده است‪ ،‬به ستون ‪ Time‬در قسمت‬
‫‪ Packet List‬نگاه کنید‪ .‬در اینجا رشدی نمایی را میبینید‪ ،‬زیرا مقدار ‪ RTO‬پس از هر ارسال‬
‫مجدد دو برابر شده است‪.‬‬
‫ویژگی ارسال مجدد ‪ TCP‬توسط دستگاه ارسالکننده برای کشف و شناسایی و احیاء از‬
‫وضعیت گمشدن بسته مورد استفاده قرار میگیرد‪ .‬سپس‪ ،‬تصدیقهای المثنی ‪ 3 TCP‬را مورد‬
‫بررسی قرار خواهیم داد؛ یک ویژگی که گیرندهی داده برای کشف و شناسایی و احیا از‬
‫وضعیت گمشدن بسته مورد استفاده قرار میدهد‪.‬‬

‫شکل ‪ :5-9‬ستون ‪ Time‬افزایش در مقدار ‪ RTO‬را نشان میدهد‬

‫‪1‬‬
‫‪delta time‬‬
‫‪2‬‬
‫‪time lapse‬‬
‫‪3‬‬
‫‪TCP duplicate acknowledgments‬‬
‫‪282‬‬
‫جنگ با شبکه کند‬ ‫فصل نهم‬

‫تصدیقهای المثنی ‪ TCP‬و ارسالهای مجدد سریع‬


‫یک ‪ ACK‬المثنی یک بستهی ‪ TCP‬فرستاده شده از یک گیرنده در زمانی است که آن‬
‫دستگاه گیرنده بستههایی را دریافت میکند که خارج از ترتیب باشند‪ .‬پروتکل ‪ TCP‬از‬
‫فیلدهای شماره ترتیب و شماره تصدیق در درون سرآیند خود استفاده میکند تا به شکلی‬
‫قابل اعتماد اطمینان حاصل نماید که دادهها و اطالعات دریافت شده باشند و به همان ترتیبی‬
‫بازسازی شده باشند که فرستاده شدهاند‪.‬‬

‫نکته‪ :‬اصطالح مناسب برای یک بستهی ‪ TCP‬عمالً یک قطعهی ‪ 1 TCP‬است‪ ،‬ولی اغلب‬
‫مردم ترجیح میدهند که آنها را با عنوان بسته مورد اشاره قرار دهند‪.‬‬

‫زمانی که یک اتصال ‪ TCP‬جدید برقرار میشود‪ ،‬شماره ترتیب آغازگر‪ )ISN( 2‬یکی از‬
‫مهمترین قطعههای اطالعاتِ تبادل شده در طول فرآیند دستدهی است‪ .‬وقتی که ‪ ISN‬برای‬
‫هر طرف از ارتباط برقرار شود‪ ،‬شماره ترتیب هر بستهای که پس از آن ارسال شود بر حسب‬
‫اندازهی بار دادههایش‪ 3‬افزایش پیدا میکند‪.‬‬
‫میزبانی را در نظر بگیرید که دارای ‪ ISN‬بهقرار ‪ 5000‬باشد و یک بستهی ‪ 500‬بایتی را به‬
‫دریافت کننده میفرستند‪ .‬به محض دریافت این بسته‪ ،‬میزبان دریافت کننده با یک بستهی‬
‫‪ TAP ACK‬بر اساس فرمول زیر با شمارهی تصدیق ‪ 5500‬پاسخ میدهد‪:‬‬

‫شماره تصدیق خروجی = بایتهای دادههای دریافت شده ‪ +‬شماره ترتیب ورودی‬

‫‪1‬‬
‫‪TCP segment‬‬
‫‪2‬‬
‫‪initial sequence number = ISN‬‬
‫‪3‬‬
‫‪data payload‬‬
‫‪283‬‬
‫جنگ با شبکه کند‬ ‫فصل نهم‬

‫در نتیجهی این محاسبه‪ ،‬شمارهی تصدیقِ برگشت داده شده به میزبان ارسالکننده عمالً‬
‫شماره ترتیب بعدی است که دریافت کننده انتظار دریافت آن را دارد‪ .‬نمونهای از این مسئله‬
‫را میتوانید در شکل ‪ 6-9‬ببینید‪.‬‬

‫شکل ‪ :6-9‬شماره ترتیب و شماره تصدیق ‪TCP‬‬

‫کشف و شناسایی گمشدن بسته توسط دریافت کنندهی دادهها از طریق شمارههای ترتیب‬
‫امکانپذیر میشود‪ .‬از آنجایی که دریافت کننده شماره ترتیبها را ردگیری میکند‪ ،‬بنابراین‬
‫میتواند تعیین نماید که چه زمانی شماره ترتیبهایی را دریافت میکند که خارج از ترتیب‬
‫هستند‪.‬‬
‫زمانی که دریافت کننده یک شماره ترتیب غیر منتظره را دریافت میکند‪ ،‬فرض را بر آن‬
‫قرار میدهد که بستهای در طول انتقال گم شده است‪ .‬دریافت کننده باید بهمنظور بازسازی‬
‫صحیح دادهها آن بستهی گم شده را داشته باشد و بنابراین دوباره آن بستهی ‪ ACK‬را‬
‫میفرستد که حاوی شماره ترتیب مورد انتظار بستهی گم شده است تا یک ارسال مجدد آن‬
‫بسته را از میزبان ارسالکننده حاصل نماید‪.‬‬

‫‪284‬‬
‫جنگ با شبکه کند‬ ‫فصل نهم‬

‫زمانی که میزبان ارسالکننده سه ‪ ACK‬المثنی را از گیرنده دریافت میکند‪ ،‬فرض را بر آن‬


‫قرار میدهد که بسته بهواقع در انتقال گم شده است و بالفاصله یک ارسال مجدد سریع‪ 1‬را‬
‫میفرستد‪ .‬زمانی که یک ارسال مجدد سریع راه انداخته میشود‪ ،‬همهی بستههایی که قرار‬
‫است ارسال شوند در صف قرار میگیرند تا ابتدا بستهی ارسال مجدد سریع فرستاده شود‪ .‬این‬
‫فرآیند در شکل ‪ ۷-9‬نشان داده شده است‪.‬‬

‫شکل ‪ACK :۷-9‬های المثنی از دریافت کننده منجر به یک ارسال مجدد سریع میشود‪.‬‬

‫میتوانید در فایل ‪ tcp_dupack.pcap‬نمونهای از ‪ACK‬های المثنی و ارسال مجدد سریع را‬


‫پیدا کنید‪ .‬نخستین بسته در این ربایش در شکل ‪ 8-9‬نشان داده شده است‪ .‬این بسته [بستهی‬
‫‪ TCP‬که از دریافت کنندهی داده ‪ 172.31.136.85‬به دریافت کننده ‪195.81.202.68‬‬
‫فرستاده شده] ‪ ‬دارای تصدیق دادهی فرستاده شدهای در بستهی قبلی است که در این فایل‬
‫ربایش لحاظ نشده است‪.‬‬

‫‪1‬‬
‫‪fast retransmission‬‬
‫‪285‬‬
‫جنگ با شبکه کند‬ ‫فصل نهم‬

‫شکل ‪ACK :8-9‬ای که شماره ترتیب مورد انتظار بعدی را نشان میدهد‬

‫نکته‪ Wireshark :‬بهطور پیش فرض برای سادهتر کردن تحلیل این شمارهها از شماره‬
‫ترتیبهای نسبی استفاده میکند‪ ،‬ولی مثالها و اسکرینشاتها‪ 1‬در چند بخش بعدی از این‬
‫ویژگی استفاده نمیکنند‪ .‬بهمنظور غیر فعال کردن این ویژگی‪ Edit ► Preferences ،‬را‬
‫انتخاب کنید‪ .‬در پنجرهی ‪ ،References‬بخش ‪ Protocols‬و سپس بخش ‪ TCP‬را انتخاب‬
‫کنید‪ .‬سپس تیک کنار ‪ Relative sequence numbers and window scaling‬را بردارید‪.‬‬
‫همان طوری که در شکل ‪ 9-9‬نشان داده شده است‪ ،‬شمارهی تصدیق در این بسته‬
‫‪ 1310973186‬است ‪ ‬که باید شماره ترتیب بستهی دریافتی بعدی باشد‪ .‬متأسفانه برای ما‬
‫و دریافت کنندهمان‪ ،‬شماره ترتیب بستهی بعدی ‪ 1310984130‬است ‪ ‬که آن چیزی نیست‬
‫که ما انتظار داریم‪ .‬این امر نشان میدهد که بستهی مورد انتظار به نحوی در ارسال گم شده‬
‫است‪ .‬همان طوری که در شکل ‪ 10-9‬نشان داده شده است‪ ،‬میزبان دریافت کننده متوجه‬
‫میشود که این بسته خارج از توالی است و یک ‪ ACK‬المثنی را در بستهی سوم این ربایش‬
‫میفرستد‪.‬‬

‫‪1‬‬
‫‪screenshot‬‬
‫‪286‬‬
‫جنگ با شبکه کند‬ ‫فصل نهم‬

‫شکل ‪ :9-9‬شماره ترتیب این بسته آن چیزی نیست که انتظار میرفت‬

‫شکل ‪ :10-9‬بستهی ‪ ACK‬المثنی اول‬

‫‪28۷‬‬
‫جنگ با شبکه کند‬ ‫فصل نهم‬

‫شما با بررسی و تعیین هر یک از موارد زیر میتوانید تعیین کنید که آیا این یک بستهی ‪ACK‬‬
‫المثنی است یا نه‪:‬‬
‫‪ ‬ستون ‪ Info‬در قسمت ‪ .Packet Details‬این بسته باید به رنگ قرمز در یک پس‬
‫زمینهی سیاه ظاهر شود‪.‬‬
‫‪ ‬قسمت ‪ Packet Details‬زیر سرآیند ‪ .SEQ/ACK Analysis‬اگر این سرآیند را‬
‫بزرگ کنید‪ ،‬آنگاه درخواهید یافت که این بسته بهعنوان یک بستهی ‪ ACK‬المثنی‬
‫فهرست شده است‪.‬‬

‫شکل ‪ACK :11-9‬های المثنی بیشتر به سبب بستههای خارج از ترتیب‬

‫چهارمین بسته در فایل ربایش یک قطعهی دیگر از دادههای فرستاده شده از میزبان‬
‫ارسالکننده با شماره ترتیب نادرست است ‪ .‬در نتیجه‪ ،‬میزبان دریافت کننده دومین بستهی‬
‫‪ ACK‬المثنی را میفرستد ‪ .‬یک بستهی دیگر با شماره ترتیب نادرست توسط دریافت‬
‫کننده وصول میشود ‪ .‬این امر منجر به ارسال سومین و آخرین ‪ ACK‬المثنی میشود ‪.‬‬
‫به محض آنکه میزبان ارسالکننده سومین بستهی ‪ ACK‬المثنی را از دریافت کننده وصول‬
‫میکند‪ ،‬وادار میشود تا کل انتقال بسته را متوقف کند و دوباره بستهی گم شده را ارسال‬
‫نماید‪ .‬شکل ‪ 12-9‬ارسال مجدد سریعِ بستهی گم شده را نشان میدهد‪.‬‬

‫‪288‬‬
‫جنگ با شبکه کند‬ ‫فصل نهم‬

‫شکل ‪ACK :12-9‬های المثنی سبب این ارسال مجدد سریعِ بستهی گم شده میشوند‬

‫بستهی ارسال مجدد بار دیگر از طریق ستون ‪ Info‬در قسمت ‪ Packet List‬قابل توجه است‪.‬‬
‫همانند مثال قبل‪ ،‬این بسته بهروشنی با رنگ قرمز در یک پس زمینهی سیاه برچسب خورده‬
‫است‪ .‬بخش ‪ SEQ/ ACK Analysis‬این بسته به ما میگوید که این مشکوک به آن است‬
‫که یک ارسال مجدد سریع باشد ‪( .‬بار دیگر‪ ،‬اطالعاتی که این بسته را با عنوان یک ارسال‬
‫مجدد سریع برچسب میزند یک مقدار قرار داده شده در خود بسته نیست‪ ،‬بلکه یکی از‬
‫ویژگیهای ‪ Wireshark‬است‪ ).‬بسته آخر در ربایش یک بستهی ‪ ACK‬است که دریافت‬
‫این ارسال مجدد سریع را تصدیق مینماید‪.‬‬

‫نکته‪ :‬یکی از ویژگیهایی که باید در نظر گرفت و میتواند بر جریان دادهها در ارتباطات‬
‫‪ TCP‬در جایی اثر بگذارد که گمشدن بسته وجود دارد‪ ،‬ویژگی ‪Selective‬‬
‫‪ Acknowledgement‬است‪ .‬در ربایش بستهی باال‪ Selective ACK ،‬بهعنوان یک ویژگی‬
‫فعال شده در طول فرآیند دستدهی سه طرفهی اولیه مبادله شد‪ .‬در نتیجه‪ ،‬هر گاه بستهای‬
‫گم شود و یک ‪ ACK‬المثنی دریافت گردد‪ ،‬تنها بستهی گم شده دوباره ارسال خواهد شد‪،‬‬
‫ولو آنکه بستههای دیگر پس از بستهی گم شده بهطور موفقیتآمیزی دریافت شده باشند‪.‬‬

‫‪289‬‬
‫جنگ با شبکه کند‬ ‫فصل نهم‬

‫اگر ‪ Selective ACK‬فعال نشده باشد‪ ،‬آنگاه هر بستهای که پس از بستهی گم شده واقع شود‬
‫نیز باید دوباره ارسال شود‪ .‬ویژگی ‪ Selective ACK‬احیای گمشدن دادهها را بسیار مؤثرتر‬
‫مینماید‪ .‬از آنجایی که اغلب پیادهسازیهای مدرن پشتهی ‪ TCP/IP‬از ‪Selective ACK‬‬
‫پشتیبانی مینمایند‪ ،‬بنابراین‪ ،‬شما بهطور معمول باید بررسی کنید که این ویژگی اجرا و پیاده‬
‫شده باشد‪.‬‬

‫کنترل جریان ‪TCP‬‬


‫ارسالهای مجدد و ‪ACK‬های المثنی توابع واکنشپذیر ‪ TCP‬هستند که برای به حال اول‬
‫برگشتن از وضعیت گمشدن بسته طراحی شدهاند‪ .‬اگر ‪ TCP‬فاقد شکلی از روش پیشدستانه‬
‫برای پیشگیری از گمشدن بسته بود‪ ،‬آنگاه پروتکلی ضعیف میبود‪ ،‬اما خوشبختانه اینچنین‬
‫نیست‪.‬‬
‫پروتکل ‪ TCP‬برای کشف و شناسایی اینکه چه زمانی ممکن است گمشدن بسته رخ داده‬
‫باشد و برای تنظیم نرخ و سرعت انتقال دادهها برای پیشگیری از این مشکل‪ ،‬یک ساز و کار‬
‫پنجرهی لغزان‪ 1‬را اجرا و پیاده میکند‪ .‬این ساز و کار پنجرهی لغزان برای کنترل جریان دادهها‬
‫از پنجرهی دریافت‪ 2‬دریافتکننده بهره میبرد‪.‬‬
‫پنجرهی دریافت یک مقدار تعیین شده توسط دریافتکنندهی دادهها است و در سرآیند‬
‫‪( TCP‬برحسب بایت) ذخیره شده است که به دستگاه ارسالکننده میگوید که خواهان چه‬
‫مقدار داده در فضای بافر ‪TCP‬اش‪ 3‬است‪ .‬این فضای بافر جایی است که دادهها در آن تا‬
‫زمانی بهطور موقت ذخیره میشود که بتواند از پشته بگذرد و به الیهی برنامهی کاربردی‬
‫برسد که منتظر پردازش آن است‪ .‬در نتیجه‪ ،‬میزبان ارسالکننده تنها میتواند مقدار دادهی‬
‫تصریح شده در فیلد ‪ Windows Size‬را در هر زمان بفرستد‪ .‬برای آنکه فرستنده دادههای‬

‫‪1‬‬
‫‪sliding-window‬‬
‫‪2‬‬
‫‪receive window‬‬
‫‪3‬‬
‫‪TCP buffer space‬‬
‫‪290‬‬
‫جنگ با شبکه کند‬ ‫فصل نهم‬

‫بیشتری را ارسال کند‪ ،‬دریافت کننده باید تصدیقی را مبنی بر دریافت دادههای قبلی بفرستد‪.‬‬
‫دریافت کننده همچنین باید فضای بافر ‪ TCP‬را با پردازش کردن دادههایی خالی کند که آن‬
‫مکان را اشغال کردهاند‪ .‬شکل ‪ 13-9‬چگونگی عمل پنجرهی دریافت را نشان میدهد‪.‬‬

‫شکل ‪ :13-9‬پنجرهی دریافت مانع از غرق شدن در دادهها میگردد‪.‬‬

‫در شکل ‪ ،13-9‬کاربر دادهها را به سروری میفرستد که با یک پنجرهی دریافت به اندازهی‬


‫‪ 5000‬بایت ارتباط برقرار کرده است‪ .‬کاربر ‪ 2500‬بایت میفرستد که فضای بافر سرور را به‬
‫‪ 2500‬بایت کاهش میدهد‪ ،‬و سپس ‪ 2000‬بایت دیگر میفرستد که باز هم فضای بافر را به‬
‫‪ 500‬بایت کاهش میدهد‪ .‬سپس سرور یک گواهی تصدیق برای این دادهها میفرستد‪ .‬سرور‬
‫این دادهها را در بافر خود پردازش میکند و آنگاه یک بافر خالی موجود خواهد بود‪ .‬این‬
‫فرآیند تکرار میشود‪ ،‬و کاربر که ‪ 3000‬بایت و ‪ 1000‬بایت دیگر را میفرستد سبب کاهش‬
‫بافر سرور به ‪ 1000‬بایت میشود‪ .‬کاربر بار دیگر این دادهها را تصدیق میکند و محتوای‬
‫بافرش را پردازش مینماید‪.‬‬

‫‪291‬‬
‫جنگ با شبکه کند‬ ‫فصل نهم‬

‫تنظیم اندازهی پنجره‬


‫فرآیند تنظیم اندازهی پنجره نسبتاً صریح و روشن است‪ ،‬اما همیشه کامل و بیعیب نیست‪.‬‬
‫هرگاه دادهها توسط پشتهی ‪ TCP‬دریافت شود‪ ،‬یک تصدیق ایجاد و در جواب فرستاده‬
‫میشود‪ ،‬ولی دادههای قرار داده شده در بافر دریافت کننده همیشه بالفاصله پردازش را انجام‬
‫نمیدهد‪.‬‬
‫وقتی یک سرور پر کار مشغول پردازش بستهها از چندین کاربر باشد‪ ،‬آنگاه کامالً محتمل‬
‫است که سرور در پاک کردن بافرش کند شود و نتواند فضا را برای دریافت دادههای جدید‬
‫باز نماید‪ .‬بدون هیچ دستگاهی برای کنترل جریان‪ ،‬این امر میتواند منجر به گمشدن بستهها‬
‫و خرابی دادهها شود‪ .‬خوشبختانه‪ ،‬وقتی یک سرور بیش از اندازه برای پردازش دادهها در‬
‫حدی اشغال میشود که پنجرهی دریافتش اعالن میدهد‪ ،‬میتوان اندازهی پنجرهی دریافتش‬
‫را اصالح و تنظیم کرد‪ .‬این کار با کاهش مقدار اندازهی پنجره در سرآیند ‪ TCP‬بستهی‬
‫‪ACK‬ای انجام میشود که به میزبانهایی بازمیفرستد که در حال فرستادن دادهها به آن‬
‫هستند‪ .‬شکل ‪ 14-9‬مثالی از این وضعیت را نشان میدهد‪.‬‬

‫شکل ‪ :14-9‬اندازهی پنجره را در زمان پرمشغله شدن سرور میتوان تنظیم کرد‪.‬‬

‫‪292‬‬
‫جنگ با شبکه کند‬ ‫فصل نهم‬

‫در شکل ‪ ،14-9‬سرور با اندازهی پنجرهی آگهی شدهی ‪ 5000‬آغاز میکند‪ .‬کاربر ‪2000‬‬
‫بایت‪ ،‬و به دنبال آن ‪ 2000‬بایت دیگر را میفرستد و تنها ‪ 1000‬بایت از فضای بافر را خالی‬
‫میگذارد‪ .‬سرور میفهمد که بافرش بسرعت در حال پر شدن است‪ .‬سرور میداند که اگر‬
‫انتقال دادهها با این نرخ ادامه پیدا کند‪ ،‬بستهها بزودی گم خواهند شد‪ .‬سرور برای جبران این‬
‫امر یک تصدیق را برای کاربر میفرستد که اندازهی پنجرهی آن به ‪ 1000‬بایت تجدید نظر‬
‫شده است‪ .‬در نتیجه‪ ،‬دادههای کمتری توسط کاربر فرستاده میشود‪ ،‬و سرور میتواند‬
‫محتوای بافر خود را با سرعتی قابل قبول پردازش نماید؛ سرعتی که اجازه میدهد دادهها به‬
‫شکلی ثابت جریان پیدا کنند‪.‬‬
‫این فرآیند تغییر اندازه‪ 1‬در هر دو طرف عمل میکند‪ .‬زمانی که سرور میتواند دادهها را با‬
‫سرعتی باالتر پردازش کند‪ ،‬میتواند یک بستهی ‪ ACK‬با اندازهی پنجرهی بزرگتر را‬
‫بفرستد‪.‬‬

‫متوقف کردن جریان داده با یک آگهی پنجرهی صفر‬


‫در پارهای از موارد‪ ،‬یک سرور دیگر نمیتواند دادههای فرستاده شده از یک کاربر را‬
‫پردازش کند‪ .‬این امر ممکن است به سبب کمبود حافظه‪ ،‬کمبود ظرفیت پردازش‪ ،‬یا مشکلی‬
‫دیگر باشد‪ .‬این مسئله میتواند منجر به رها شدن بستهها و توقف فرآیند ارتباط شود‪ ،‬ولی‬
‫پنجرهی دریافت میتواند در به حداقل رسیدن این اثر منفی کمک نماید‪.‬‬
‫وقتی این وضعیت به وجود میآید‪ ،‬سرور میتواند بستهای را بفرستد که حاوی اندازهی‬
‫پنجرهی صفر باشد‪ .‬زمانی که کاربر این بسته را دریافت کند‪ ،‬هر گونه انتقال داده را متوقف‬
‫خواهد کرد‪ ،‬ولی با انتقال بستههای ‪ keep- alive‬ارتباط با سرور را باز نگه خواهد داشت‪.‬‬
‫بستههای ‪ keep-alive‬توسط کاربر در بازههای زمانی منظم فرستاده میشوند تا وضعیت‬
‫پنجرهی دریافت سرور کنترل شود‪ .‬به محض آنکه سرور بتواند دوباره پردازش دادهها را‬

‫‪1‬‬
‫‪resizing‬‬
‫‪293‬‬
‫جنگ با شبکه کند‬ ‫فصل نهم‬

‫پردازش کند‪ ،‬با یک اندازهی پنجرهی غیر صفر پاسخ خواهد داد‪ ،‬و ارتباط دوباره از سر‬
‫گرفته خواهد شد‪ .‬شکل ‪ 15-9‬نمونهای از آگهی پنجرهی صفر را نشان میدهد‪.‬‬

‫شکل ‪ :15-9‬انتقال دادهها در زمانی که اندازهی پنجره در صفر قرار داده شده باشد متوقف میشود‪.‬‬

‫در شکل ‪ ،15-9‬سرور دریافت دادهها را با اندازهی پنجرهی ‪ 5000‬آغاز میکند‪ .‬سرور پس‬
‫از دریافت ‪ 4000‬بایت داده از کاربر شروع به تحمل بار پردازش بسیار سنگینی میکند‪ ،‬و‬
‫دیگر نمیتواند هیچ دادهی دیگری را از کاربر پردازش کند‪ .‬سپس سرور بستهای را با اندازهی‬
‫پنجرهی قرار داده شده در صفر میفرستد‪ .‬کاربر ارسال دادهها را متوقف میکند و یک بستهی‬
‫‪ keep-alive‬را میفرستد‪ .‬پس از بستهی ‪ ، keep-alive‬سرور با بستهای پاسخ میدهد که‬
‫کاربر را آگاه میکند که اکنون میتواند دادهها را دریافت نماید‪ ،‬و اینکه اندازهی پنجرهاش‬
‫‪ 1000‬بایت است‪ .‬آنگاه کاربر فرستادن دادهها را از سر میگیرد‪.‬‬

‫پنجرهی لغزان ‪ TCP‬در عمل‬


‫پس از پوشش دادن تئوری پشت پنجرهی لغزان ‪ ،TCP‬اکنون آن را در فایل ربایش‬
‫‪ tcp_zerowindowrecovery.pcap‬مورد بررسی قرار خواهیم داد‪.‬‬

‫‪294‬‬
‫جنگ با شبکه کند‬ ‫فصل نهم‬

‫در این فایل‪ ،‬ما با چندین بستهی ‪ TCP ACK‬آغاز خواهیم کرد که در حال حرکت از‬
‫‪ 192.168.0.20‬به ‪ 192.168.0.30‬هستند‪ .‬مقدار مورد عالقهی اصلی برای ما فیلد ‪Window‬‬
‫‪ Size‬است که آن را میتوان هم در ستون ‪ Info‬از قسمت ‪ Packet List‬دید و هم در سرآیند‬
‫‪ TCP‬در قسمت ‪ Packet Details‬مشاهده کرد‪ .‬همان طوری که در شکل ‪ 16-9‬نشان داده‬
‫شده است‪ ،‬میتوانید ببینید که مقدار این فیلد بالفاصله در طول دروهی سه بستهی اول کاهش‬
‫پیدا میکند‪.‬‬

‫شکل ‪ :16-9‬اندازهی پنجرهی این سه بسته در حال کاهش است‪.‬‬

‫این مقادیر از ‪ 8۷60‬بایت در بستهی اول به ‪ 5840‬بایت در بستهی دوم و سپس ‪ 2920‬باید در‬
‫بستهی سوم میرسد ‪ .‬این کاهش مقدار اندازهی پنجره یک نشانهی کالسیک از افزایش‬
‫تأخیر از طرف یک میزبان است‪ .‬به ستون ‪ Time‬توجه کنید که این امر خیلی سریع رخ‬
‫میدهد ‪ .‬زمانی که اندازهی پنجره به این سرعت کاهش پیدا میکند‪ ،‬برای اندازهی پنجره‬
‫معمول است که به صفر تنزل پیدا کند‪ ،‬و این دقیقاً آن چیزیست که در بستهی چهارم رخ‬
‫میدهد (همان طوری که در شکل ‪ 1۷-9‬نشان داده شده است)‪.‬‬
‫بستهی چهارم نیز از ‪ 192.168.0.20‬به ‪ 192.168.0.30‬فرستاده شده است‪ ،‬ولی قصد آن‬
‫است تا به ‪ 192.068.0.30‬بگوید که بیش از این نمیتواند دادهی دیگری را دریافت نماید‪.‬‬
‫مقدار ‪ 0‬در سرآیند ‪ TCP‬دیده میشود ‪ ،‬و ‪ Wireshark‬نیز در ستون ‪ Info‬از قسمت‬
‫‪ Packet List‬و زیر بخش ‪ SEQ/ACK Analysis‬از سرآیند ‪ TCP‬به ما میگوید که این‬
‫یک بستهی پنجرهی صفر است ‪ .‬به محض فرستاده شدن این بستهی پنجرهی صفر‪ ،‬دستگاه‬
‫در ‪ 192.168.0.30‬دیگر دادهای نخواهد فرستاد تا آنکه تجدید پنجرهای را از‬
‫‪ 192.168.0.20‬دریافت کند که اطالع دهد اندازهی پنجرهاش افزایش پیدا کرده است‪.‬‬

‫‪295‬‬
‫جنگ با شبکه کند‬ ‫فصل نهم‬

‫شکل ‪ :1۷-9‬این بستهی پنجرهی صفر میگوید که میزبان نمیتواند دادهی بیشتری را بپذیرد‪.‬‬
‫خوشبختانه برای ما‪ ،‬موضوعی که سبب ایجاد وضعیت پنجرهی صفر در این فایل ربایش شده‬
‫موقتی بوده است‪ .‬بنابراین‪ ،‬همان طوری که در شکل ‪ 18-9‬نشان داده شده است‪ ،‬یک تجدید‬
‫پنجره در بستهی بعدی فرستاده شده است‪.‬‬
‫در این مورد‪ ،‬اندازهی پنجره به مقدار بسیار سالم ‪ 64240‬بایت افزایش پیدا کرده است ‪.‬‬
‫برنامهی ‪ Wireshark‬بار دیگر ما را قادر ساخت تا بفهمیم که این یک تجدید پنجره زیر‬
‫سرآیند ‪ SEQ/ACK Analysis‬است‪ .‬به محض دریافت بستهی تجدید‪ ،‬میزبان‬
‫‪ 192.168.0.30‬بار دیگر میتواند فرستادن دادهها را آغاز نماید (همان طوری که در بستههای‬
‫‪ 6‬و ‪ ۷‬چنین میکند)‪ .‬این فرآیند خیلی سریع رخ میدهد‪ .‬اگر تنها اندکی بیشتر ادامه پیدا‬
‫میکرد‪ ،‬آنگاه میتوانست سبب یک سکسکهی بالقوه در شبکه شود که این امر منجر به‬
‫انتقال دادهی کندتر یا ناموفق شود‪ .‬بهعنوان آخرین نگاه به پنجرهی لغزان‪ ،‬فایل _‪tcp‬‬
‫‪ zerowindowdead.pcap‬را بررسی کنید‪ .‬نخستین بسته در این ربایش یک ترافیک طبیعی‬
‫‪ HTTP‬فرستاده شده از ‪ 195.81.202.68‬به ‪ 172.31.136.85‬است‪ .‬همان طوری که در‬
‫‪296‬‬
‫جنگ با شبکه کند‬ ‫فصل نهم‬

‫شکل ‪ :18-9‬یک بستهی تجدید پنجره اجازه میدهد که میزبان دیگر بفهمد که میتواند‬
‫بار دیگر ارسال را آغاز نماید‪.‬‬
‫شکل ‪ 19-9‬نشان داده شده است‪ ،‬به دنبال این بسته بالفاصله یک بستهی پنجرهی صفر وجود‬
‫دارد که از ‪ 172.31.136.85‬در پاسخ فرستاده شده است‪.‬‬

‫شکل ‪ :19-9‬بستهی پنجرهی صفر که ارسال داده را متوقف میکند‬

‫‪29۷‬‬
‫جنگ با شبکه کند‬ ‫فصل نهم‬

‫این خیلی شبیه بستهی پنجرهی صفر نشان داده شده در شکل ‪ 1۷-9‬است‪ ،‬ولی نتیجه بسیار‬
‫متفاوت است‪ .‬همان طوری که در شکل ‪ 20-9‬نشان داده شده است‪ ،‬بهجای آنکه‬
‫‪ 172.31.136.85‬یک تجدید پنجره را بفرستد و ارتباط را از سر بگیرد‪ ،‬ما یک بستهی‬
‫‪ keep-alive‬را میبینیم‪.‬‬

‫شکل ‪ :20-9‬این بستهی ‪ keep-alive‬تضمین میکند که میزبان پنجرهی صفر هنوز روشن است‪.‬‬

‫این بسته توسط ‪ Wireshark‬در زیر بخش ‪ SEQ/ACK Analysis‬از سرآیند ‪ TCP‬در قسمت‬
‫‪ Packet Details‬با عنوان یک بستهی ‪ keep-alive‬نشاندار شده است ‪ .‬ستون ‪ Time‬به ما‬
‫میگوید که این بسته ‪ 3/4‬ثانیه پس از آخرین بستهی دریافتی رخ داده است‪ .‬این فرآیند‬
‫چندین بار دیگر ادامه پیدا میکند‪ ،‬و در آن‪ ،‬همان طوری که در شکل ‪ 21-9‬نشان داده شده‬
‫است‪ ،‬یک میزبان اقدام به ارسال یک بستهی پنجرهی صفر میکند و دیگری یک بستهی‬
‫‪ keep-alive‬را میفرستد‪.‬‬

‫‪298‬‬
‫جنگ با شبکه کند‬ ‫فصل نهم‬

‫شکل ‪ :21-9‬بستههای پنجرهی صفر و ‪ keep-alive‬که در طول زمان رخ میدهند‪.‬‬

‫این بستههای ‪ keep-alive‬در بازههای زمانی ‪ ،6/8 ،3/4‬و ‪ 13/5‬ثانیه رخ میدهند ‪ .‬این‬
‫فرآیند میتواند برای مدتی طوالنی ادامه پیدا کند که این امر به سیستمهای عامل دستگاههای‬
‫ارتباط برقرار کننده بستگی دارد‪ .‬در این مورد‪ ،‬همانطور که میتوانید ببینید‪ ،‬با افزودن مقادیر‬
‫در ستون ‪ ،Time‬اتصال برای حدود ‪ 25‬ثانیه متوقف میشود‪ .‬تالش برای احراز هویت با یک‬
‫کنترل کنندهی دامنه یا دانلود کردن یک فایل از اینترنت را در حالی که تأخیری ‪ 25‬ثانیهای‬
‫را تحمل میکنید غیر قابل قبول است!‬

‫فراگرفتن از بستههای کنترل خطای و کنترل جریان‪TCP‬‬


‫اجازه دهید تا ساز و کار ارسال مجدد‪ACK ،‬های المثنی‪ ،‬و پنجرهی لغزان را بسط و توضیح‬
‫دهیم‪ .‬در اینجا چند نکته برای آن وجود دارد تا آنها را به هنگام رفع ایراد مشکالت تأخیر‬
‫به خاطر داشته باشید‪:‬‬

‫بستههای ارسال مجدد‬


‫ارسالهای مجدد به این دلیل رخ میدهند که کاربر متوجه شده سرور دادههایی که میفرستد‬
‫را دریافت نمیکند‪ .‬بنابراین‪ ،‬بسته به طرف ارتباطی که تحلیل میکنید‪ ،‬ممکن است هیچوقت‬
‫ارسالهای مجدد را نبینید‪ .‬اگر در حال ربایش دادهها از سرور هستید‪ ،‬و این سرور بهواقع‬
‫بستههای فرستاده شده و دوباره فرستاده شده از کاربر را دریافت نمیکند‪ ،‬آنگاه ممکن است‬
‫در تاریکی باقی بمانید‪ ،‬زیرا بستههای ارسال مجدد را نمیبینید‪ .‬اگر مظنون به آن هستید که‬
‫قربانی گمشدن بسته از طرف سرور شدهاید‪ ،‬آنگاه سعی کنید تا ترافیک را از طرف کاربر‬

‫‪299‬‬
‫جنگ با شبکه کند‬ ‫فصل نهم‬

‫ربایش کنید (در صورت ممکن)‪ ،‬بهطوری که بتوانید عمالً ببینید که آیا بستههای ارسال مجدد‬
‫وجود دارند یا نه‪.‬‬

‫بستههای ‪ ACK‬المثنی‬
‫من میل به آن دارم که یک بستهی ‪ ACK‬المثنی را بهعنوان معکوس یک بستهی ارسال مجدد‬
‫تصور کنم‪ ،‬زیرا زمانی فرستاده میشود که سرور میفهمد بستهای از طرف کاربر که با آن‬
‫در ارتباط است در نقل و انتقال گم شده است‪ .‬در اغلب موارد‪ ،‬به هنگام ربایش ترافیک در‬
‫هر دو سمت ارتباط میتوانید ‪ACK‬های المثنی را ببینید‪ .‬به یاد داشته باشید که ‪ACK‬های‬
‫المثنی هنگامی فعال میشوند که بستهها خارج از ترتیب و توالی دریافت شده باشند‪ .‬برای‬
‫مثال‪ ،‬اگر سرور تنها اولین و سومین بستهی فرستاده شده را دریافت کرده باشد‪ ،‬آنگاه این امر‬
‫منجر به ارسال یک ‪ ACK‬المثنی به کاربر خواهد شد تا سبب یک ارسال مجدد سریع برای‬
‫بستهی دوم از کاربر شود‪ .‬از آنجایی که نخستین و سومین بسته را دریافت کردهاید‪ ،‬بنابراین‪،‬‬
‫محتمل است هر دلیلی که سبب گمشدن بستهی دوم شده است موقتی باشد؛ بنابراین‪ACK ،‬‬
‫المثنی در اغلب موارد بهطور موفقیتآمیزی فرستاده و دریافت خواهد شد‪ .‬بهطور مسلم این‬
‫سناریو همیشه صادق نیست و بنابراین‪ ،‬زمانی که مظنون به گمشدن بسته در سمت سرور‬
‫هستید و هیچ ‪ ACK‬المثنیی را نمیبینید‪ ،‬آنگاه ربایش بستهها را از طرف کاربر مورد رسیدگی‬
‫و مالحظه قرار دهید‪.‬‬

‫بستههای پنجرهی صفر و ‪keep-alive‬‬


‫پنجرهی لغزان مستقیماً با ناتوانی سرور در دریافت و پردازش دادهها در ارتباط است‪ .‬هر‬
‫کاهشی در حالتهای اندازهی پنجره یا پنجرهی صفر نتیجهی مستقیم نوعی مشکل در‬
‫خصوص سرور است‪ .‬بنابراین‪ ،‬اگر شما وقوع هر یک از آنها را در کابل مشاهده کردید‪،‬‬
‫آنگاه باید بررسی خود را در آنجا متمرکز نمایید‪ .‬بهطور معمول همیشه باید بستههای تجدید‬
‫پنجره را در هر دو طرف ارتباطات شبکه ببینید‪.‬‬

‫‪300‬‬
‫جنگ با شبکه کند‬ ‫فصل نهم‬

‫تعیین منشأ تأخیر باال‬


‫در بعضی موارد‪ ،‬گمشدن بسته ممکن است سبب تأخیر نشود‪ .‬ممکن است بفهمید که‬
‫علیرغم کند بودن ارتباط بین دو میزبان ‪ ،‬این کندی عالئم معمول ارسالهای مجدد ‪ TCP‬یا‬
‫‪ACK‬های المثنی را نشان نمیدهد‪ .‬در مواردی اینچنین‪ ،‬برای تعیین منشأ این تأخیر به تکنیک‬
‫دیگری نیاز خواهید داشت‪.‬‬
‫بررسی دستدهی اتصال آغازین و جفت اول از بستههایی که به دنبال آن هستند یکی از‬
‫مؤثرترین راهها برای یافتن منشأ تأخیر باال است‪ .‬برای مثال‪ ،‬اتصالی ساده را بین یک کاربر‬
‫و یک سرور وب در نظر بگیرید که در آن کاربر تالش میکند تا سایتی را جستجو کند که‬
‫در این سرور وب میزبان شده است‪ .‬بخش این توالی ارتباطی که به آن توجه داریم شش‬
‫بستهی اول است که از دستدهی ‪ ،TCP‬درخواست ‪ GET‬آغازین ‪ ،HTTP‬تصدیق آن‬
‫درخواست ‪ ،GET‬و نخستین بستهی دادههای فرستاده شده از سرور به کاربر است‪.‬‬

‫نکته‪ :‬بهمنظور دنبال کردن این بخش‪ ،‬اطمینان حاصل کنید که با انتخاب کردن ► ‪View‬‬

‫‪ ،Time Display Format ► Seconds Since Previous Displayed Packet‬قالب‬


‫نمایش زمان مناسبی داشته باشید‪.‬‬

‫ارتباطات معمولی‬
‫قدری بعد بهطور مفصل در خصوص خطوط مبنای شبکه بحث خواهیم کرد‪ .‬در حال حاضر‪،‬‬
‫فقط بدانید که باید یک خط مبنا از ارتباطات معمولی را داشته باشید تا آن را با شرایط تأخیر‬
‫باال مقایسه نمایید‪ .‬برای این مثالها‪ ،‬ما از ‪ latency1.pcap‬استفاده خواهیم کرد‪ .‬ما پیش از‬
‫این جزئیات دستدهی ‪ TCP‬و ارتباط ‪ HTTP‬را پوشش دادیم و بنابراین دوباره آن‬
‫موضوعات را مرور نخواهیم کرد‪ .‬در واقع‪ ،‬کالً به قسمت ‪ Packet Details‬نگاهی نخواهیم‬
‫داشت‪ .‬همان طوری که در شکل ‪ 22-9‬نشان داده شده است‪ ،‬آنچه بهواقع به آن عالقهمند‬
‫هستیم ستون ‪ Time‬است‪.‬‬
‫‪301‬‬
‫جنگ با شبکه کند‬ ‫فصل نهم‬

‫شکل ‪ :22-9‬این ترافیک خیلی سریع رخ میدهد و آن را میتوان معمولی در نظر گرفت‪.‬‬

‫این توالی ارتباط کامالً سریع است‪ .‬کل فرآیند کمتر از ‪ 0/1‬ثانیه طول میکشد‪ .‬چند فایل‬
‫ربایش بعدی که مورد بررسی قرار خواهیم داد از همین الگوی ترافیک با چند تفاوت‬
‫کوچک در زمانبندی بستهها تشکیل خواهند شد‪.‬‬

‫ارتباطات کند‬
‫تاخیرکابل‬
‫اکنون بیایید به فایل ربایش ‪ latency2.pcap‬بپردازیم‪ .‬توجه کنید همان طوری که در شکل‬
‫‪ 23-9‬نشان داده شده است‪ ،‬همهی بستهها مشابه هستند بجز از لحاظ مقدار زمان در دو تای‬
‫آنها‪.‬‬

‫شکل ‪ :23-9‬بستههای ‪ 2‬و ‪ 5‬نشان دهندهی تأخیر باالیی هستند‬

‫همچنان که شروع به بررسی این شش بسته میکنیم‪ ،‬بالفاصله با نخستین نشانهی تأخیر‬
‫برخورد میکنیم‪ .‬بستهی ‪ SYN‬آغازین توسط کاربر ‪ 172.16.16.128‬فرستاده شده است تا‬
‫دستدهی ‪ TCP‬آغاز گردد‪ ،‬و یک تأخیر ‪ 0/8۷‬ثانیهای پیش از برگشت ‪ SYN/ACK‬از‬
‫سرور ‪ 74.125.95.104‬دریافت شده است‪ .‬این نخستین شاخص ما مبنی بر آن است که در‬
‫حال متحمل شدن تأخیر کابل هستیم که به سبب دستگاهی بین کاربر و سرور ایجاد شده‬
‫است‪.‬‬

‫‪302‬‬
‫جنگ با شبکه کند‬ ‫فصل نهم‬

‫به سبب ماهیت نوعهای بستههای ارسال شده میتوانیم حکم بدهیم که این یک تأخیر کابل‬
‫است‪ .‬وقتی که سرور یک بستهی ‪ SYN‬را دریافت میکند‪ ،‬یک مقدار بسیار کوچک از‬
‫پردازش برای فرستادن پاسخ الزم است‪ ،‬زیرا حجم کار شامل هیچ پردازشی باالتر از الیهی‬
‫انتقال‪ 1‬نیست‪ .‬حتی زمانی که یک سرور در حال متحمل شدن بار ترافیکی بسیار سنگینی‬
‫باشد‪ ،‬این سرور بهطور معمول تا اندازهای سریع با یک ‪ SYN/ACK‬به یک بستهی ‪SYN‬‬
‫پاسخ میدهد‪ .‬این امر سبب حذف سرور بهعنوان علت بالقوهی تأخیر باال میگردد‪.‬‬
‫کاربر نیز حذف میشود‪ ،‬زیرا‪ ،‬در این مقطع هیچ پردازشی را بیش از دریافت بستهی‬
‫‪ SYN/ACK‬انجام نمیدهد‪.‬‬
‫حذف کاربر و سرور ما را به سوی منشأهای بالقوهی ارتباطات کند در درون دو بستهی اول‬
‫از این ربایش هدایت میکند‪.‬‬
‫با ادامهی بررسی مشاهده میکنیم که انتقال و ارسال بستهی ‪ – ACK‬که دستدهی سه طرفه‬
‫را تکمیل میکند – بسرعت اتفاق میافتد (همان طوری که درخواست ‪ GET‬فرستاده شدهی‬
‫‪ HTTP‬توسط کاربر بسرعت رخ میدهد)‪.‬‬
‫کل پردازشی که این دو بسته را ایجاد میکند بهطور محلی در وصول بعدی ‪SYN/ACK‬‬
‫کاربر رخ میدهد‪ ،‬و به همین سبب انتظار میرود – تا زمانی که کاربر تحت بار پردازش‬
‫سنگین قرار نداشته باشد ‪ -‬که این دو بسته بسرعت ارسال شوند‪.‬‬
‫در بستهی ‪ ،5‬بستهای دیگر را میبینیم که مقدار زمانی آن بهطور باورنکردنی باالست‪ .‬به نظر‬
‫میرسد که بستهی ‪ ACK‬پس از فرستاده شدن درخواست ‪ GET‬آغازینِ ‪HTTP‬مان از سرور‬
‫برگشته و دریافت آن ‪ 1/15‬ثانیه طول کشیده است‪ .‬سرور بهمحض دریافت ‪ GET‬پروتکل‬
‫‪ HTTP‬نخست پیش از آنکه شروع به فرستادن دادهها بکند یک ‪ TCP ACK‬را میفرستد‬

‫‪1‬‬
‫‪transport layer‬‬
‫‪303‬‬
‫جنگ با شبکه کند‬ ‫فصل نهم‬

‫که بار دیگر نیازمند پردازش بسیار کمی توسط سرور است‪ .‬این نشانهی دیگری از تأخیر‬
‫کابل است‪.‬‬
‫هر زمانی که تأخیر کابل واقعی را تجربه میکنید‪ ،‬تقریباً همیشه خواهید دید که خود را هم‬
‫در ‪ SYN/ACK‬در طول دستدهی آغازین و هم در بستههای ‪ ACK‬دیگر در کل ارتباط‬
‫نمایش میدهد‪ .‬اگرچه این اطالعات منشأ دقیق تأخیر باال در این شبکه را به شما نمیدهد‪،‬‬
‫ولی به شما میگوید که کاربر و سرور منشأ آن نیستند‪ ،‬و بنابراین شما میدانید که تأخیر به‬
‫سبب دستگاهی در این بین است‪ .‬در این مقطع میتوانید با بررسی انواع دیوارههای آتش‪،‬‬
‫مسیریابها‪ ،‬و پروکسیهای بین میزبان مشکل دار کار خود را آغاز کنید تا مقصر را پیدا‬
‫نمایید‪.‬‬
‫تأخیر کاربر‬
‫سناریوی تأخیر بعدی که آن را مورد بررسی قرار خواهیم داد در فایل ‪latency3.pcap‬‬
‫قرار دارد (همان طوری که در شکل ‪ 24-9‬نشان داده شده است)‪.‬‬

‫شکل ‪ :24-9‬بستهی کند در این ربایش دستور ‪ GET‬آغازین ‪ HTTP‬است‬

‫این ربایش بهطور معمول آغاز میشود و در آن دستدهی ‪ TCP‬خیلی سریع و بدون هیچ‬
‫نشانهای از تأخیر رخ میدهد‪ .‬همه چیز تا بستهی ‪ 4‬عالی به نظر میرسد‪ ،‬یک درخواست‬
‫‪ GET‬پروتکل ‪ HTTP‬پس از دستدهی تکمیل شده است‪ .‬این بسته یک تأخیر ‪ 1/34‬ثانیهای‬
‫نسبت به بستهی دریافت شدهی قبلی را نشان میدهد‪.‬‬
‫باید بررسی کنیم که بین بستههای ‪ 3‬و ‪ 4‬چه چیزی در حال رخ دادن است تا بتوانیم منشأ این‬
‫تأخیر را تعیین کنیم‪ .‬بستهی ‪ 3‬بستهی ‪ ACK‬نهایی در دستدهی ‪ TCP‬است که از کاربر به‬
‫سرور فرستاده شده است‪ ،‬و بستهی ‪ 4‬یک درخواست ‪ GET‬است که از کاربر به سرور‬

‫‪304‬‬
‫جنگ با شبکه کند‬ ‫فصل نهم‬

‫فرستاده شده است‪ .‬موضوع مشترک در اینجا آن است که اینها هر دو بستههای فرستاده شده‬
‫توسط کاربر و مستقل از سرور هستند‪ .‬درخواست ‪ GET‬باید بسرعت پس از فرستاده شدن‬
‫‪ ACK‬رخ دهد‪ ،‬زیرا همهی این اعمال در کاربر متمرکز هستند‪.‬‬
‫متأسفانه برای کاربر نهایی‪ ،‬گذار از ‪ ACK‬به ‪ GET‬بسرعت رخ نمیدهد‪ .‬ایجاد و ارسال‬
‫بستهی ‪ GET‬نیازمند پردازش تا الیهی برنامهی کاربردی است‪ ،‬و تأخیر در این پردازش نشان‬
‫میدهد که کاربر نتوانسته عمل را به شکلی بهنگام اجرا نماید‪ .‬این بدان معنی است که کاربر‬
‫مسئول نهایی تأخیر باال در ارتباط است‪.‬‬
‫تأخیر سرور‬
‫آخرین سناریوی تأخیر که مورد بررسی قرار خواهیم داد از ‪ latency4.pcap‬استفاده‬
‫مینماید (همان طوری که در شکل ‪ 25-9‬نشان داده شده است)‪ .‬این نمونهای از تأخیر سرور‬
‫است‪.‬‬

‫شکل ‪ :25-9‬تأخیر باال تا زمان آخرین بستهی این ربایش نشان داده نشده است‪.‬‬

‫در این ربایش‪ ،‬فرآیند دستدهی ‪ TCP‬بین این دو میزبان بدون ایراد و بسرعت تکمیل‬
‫میشود و بنابراین امور بخوبی آغاز میشوند‪ .‬چند بستهی بعدی خبرهای بهاری را به همراه‬
‫دارند‪ ،‬بهطوری که بستههای درخواست ‪ GET‬و پاسخ ‪ ACK‬نیز بسرعت تحویل شدهاند‪ .‬اما‬
‫در آخرین بستهی این ربایش است که بستهای را با نشانههای تأخیر باال مشاهده میکنیم‪.‬‬
‫این بستهی ششم نخستین بستهی دادههای ‪ HTTP‬فرستاده شده از سرور است که در پاسخ به‬
‫درخواست ‪ GET‬فرستاده شده توسط کاربر فرستاده شده است‪ ،‬ولی با زمان ورود نسبتاً کند‬
‫‪ 0/98‬ثانیه پس از آنکه سرور ‪ TCP ACK‬خود را برای درخواست ‪ GET‬میفرستد‪ .‬گذار‬

‫‪305‬‬
‫جنگ با شبکه کند‬ ‫فصل نهم‬

‫بین بستههای ‪ 5‬و ‪ 6‬خیلی شبیه به گذاری است که در سناریوی قبلی بین ‪ ACK‬دستدهی و‬
‫درخواست ‪ GET‬دیدم‪ .‬اما‪ ،‬در این مورد‪ ،‬این سرور است مورد توجه ماست‪.‬‬
‫بستهی ‪ 5‬بستهی ‪ACK‬ای است که سرور در پاسخ به درخواست ‪ GET‬دریافت شده از کاربر‬
‫میفرستد‪ .‬همینکه این بسته فرستاده شود‪ ،‬سرور باید تقریباً بالفاصله شروع به فرستادن دادهها‬
‫نماید‪ .‬دسترسی‪ ،‬بستهبندی کردن‪ ،‬و ارسال دادهها در این بسته توسط پروتکل ‪ HTTP‬انجام‬
‫میشود‪ ،‬و از آنجایی که این یک پروتکل الیهی برنامهی کاربردی است‪ ،‬بنابراین‪ ،‬به قدری‬
‫پردازش توسط سرور نیاز خواهد بود‪ .‬تأخیر در وصول این بسته اشاره بر آن دارد که سرور‬
‫قادر به پردازش این دادهها در زمانی معقول نبوده است و در نهایت اشاره بر آن دارد که این‬
‫منشأ تأخیر در این فایل ربایش است‪.‬‬

‫چارچوب تعیین مکان تأخیر‬


‫ما با استفاده از شش بسته تعیین مکان تأخیر باالی شبکه را از کاربر تا سرور مدیریت کردیم‪.‬‬
‫این سناریوها ممکن است اندکی پیچیده به نظر برسند‪ ،‬ولی دیاگرام نشان داده شده در شکل‬
‫‪ 26-9‬میتواند به هنگام رفع ایراد مشکالتتان در خصوص تأخیر ‪ ،‬این فرآیند را قدری تسریع‬
‫نماید‪ .‬این اصول را میتوان تقریباً برای تمام ارتباطات مبتنی بر ‪ TCP‬به کار بست‪.‬‬
‫نکته‪ :‬توجه داشته باشید که خیلی دربارهی تأخیر ‪ UDP‬صحبتی نکردهایم‪ ،‬زیرا ‪ UDP‬برای‬
‫آن طراحی شده که سریع باشد‪ ،‬ولی قابل اطمینان نیست‪ .‬پروتکل ‪ UDP‬فاقد هر نوع ویژگی‬
‫سرخودی برای کشف و شناسایی تأخیر و به حال اول درآمدن از این وضعیت است‪ .‬در‬
‫عوض‪ ،‬این پروتکل بر پروتکلهای الیهی برنامهی کاربردی (و ‪ )ICMP‬تکیه میکند که‬
‫برای اجرای تحویل دادهها (به شکلی قابل اطمینان) با آنها جفت شده است‪.‬‬

‫‪306‬‬
‫جنگ با شبکه کند‬ ‫فصل نهم‬

‫شکل ‪ :26-9‬این دیاگرام را میتوان برای رفع ایراد از مشکالت تأخیر خود استفاده نمایید‪.‬‬

‫مبناسازی شبکه‬
‫وقتی همه چیز دیگر قاصر میماند‪ ،‬خط مبنای شبکه میتواند یکی از مهمترین قطعاتی از‬
‫اطالعات باشد که شما در هنگام رفع ایراد کندی شبکه در اختیار دارید‪ .‬برای مقصود ما‪ ،‬خط‬
‫مبنای شبکه از نمونهای ترافیک از نقاط مختلف در شبکه تشکیل میشود که شامل قطعهای‬
‫بزرگ از آن چیزیست که آن را ترافیک "عادی" شبکه در نظر خواهیم گرفت‪ .‬هدف از‬
‫خط مبنای شبکه آن است تا وقتی شبکه یا دستگاههای موجود در آن بهدرستی عمل نمیکنند‬
‫بهعنوان مبنای قیاس عمل نماید‪.‬‬
‫برای مثال‪ ،‬سناریویی را در نظر بگیرید که در آن چندین کاربر در شبکه از کندی در هنگام‬
‫ورود به سرور محلی برنامهی کاربردی وب شکایت دارند‪ .‬اگر قرار باشد که این ترافیک را‬
‫ربایش و آن را با خط مبنای شبکه قیاس کنید‪ ،‬آنگاه ممکن است دریابید که سرور وب‬
‫بهطور عادی پاسخ میدهد‪ ،‬ولی درخواستهای ‪ DNS‬حاصله از محتوای بیرونی تعبیه شده‬
‫در برنامهی کاربردی وب دو برابر کندتر از حد عادی اجرا میشوند‪.‬‬
‫ممکن است بدون کمک خط مبنای شبکه متوجه سرور کند ‪ DNS‬بیرونی شده باشید‪ ،‬ولی‬
‫وقتی با تغییرات ظریف سر و کار داشته باشید‪ ،‬آنگاه ممکن است دیگر این امر بدون وجود‬
‫خط مبنای شبکه صادق نباشد‪ .‬اینکه ‪ 10‬پرس و جوی ‪ DNS‬به میزان ‪ 0/1‬ثانیه بیشتر از حد‬

‫‪30۷‬‬
‫جنگ با شبکه کند‬ ‫فصل نهم‬

‫معمول طول بکشد به همان اندازه بد است که یک پرس و جوی ‪ DNS‬یک ثانیهی کامل‬
‫بیش از حد عادی طول بکشد‪ ،‬ولی کشف و شناسایی حالت اول بدون داشتن خط مبنای‬
‫شبکه بسیار دشوارتر است‪.‬‬
‫از آنجایی که هیچ دو شبکهای وجود ندارد که شبیه هم باشند‪ ،‬بنابراین‪ ،‬مؤلفههای یک خط‬
‫مبنای شبکه میتواند بشدت فرق داشته باشند‪ .‬بخشهای بعدی مثالهایی از مؤلفههای یک‬
‫خط مبنای شبکه را فراهم میکنند‪ .‬ممکن است دریابید که همهی این اقالم در زیرساخت‬
‫شبکهی شما به کار میروند‪ ،‬و یا اینکه تنها معدودی از آنها در شبکهی شما با کار رفتهاند‪.‬‬
‫صرفنظر از این موارد‪ ،‬باید بتوانید هر مؤلفه از خط مبنای خود را در داخل یکی از طبقهی‬
‫اصلی خط مبنا قرار دهید که عبارتند از سایت‪ ،‬میزبان ‪ ،‬و برنامهی کاربردی‪.‬‬

‫خط مبنای سایت‬


‫به دست آوردن یک تصویر کلی از ترافیک در هر سایت فیزیکی در شبکهتان مقصود خط‬
‫مبنای سایت را تشکیل میدهد‪ .‬بهطور ایدهآل‪ ،‬این هر بخشی از ‪ WAN‬خواهد بود‪ .‬مؤلفههای‬
‫این خط مبنا میتواند شامل موارد زیر باشد‪:‬‬

‫پروتکل مورد استفاده‪ :‬در هنگام ربایش کردن ترافیک از همهی دستگاهها در بخش‬
‫شبکه در لبهی شبکه (مسیریاب‪ /‬دیوار آتش) از پنجرهی ‪Protocol Hierarchy Statistics‬‬
‫استفاده کنید )‪(Statistics ► Protocol Hierarchy‬؛ بهطوری که بتوانید ترافیک کلیهی‬
‫دستگاهها را ببینید‪ .‬سپس میتوانید نسبت به این قیاس کنید تا بفهمید که آیا پروتکلهایی که‬
‫بهطور معمول وجود دارند گم شدهاند یا نه‪ ،‬و یا آیا پروتکلهای جدیدی خودشان را به شبکه‬
‫معرفی کردهاند یا نه‪ .‬همچنین میتوانید از این پنجره برای یافتن مقادیر بیش از معمولِ بعضی‬
‫انواع مشخص ترافیک مبتنی بر پروتکل استفاده نمایید‪.‬‬

‫‪308‬‬
‫جنگ با شبکه کند‬ ‫فصل نهم‬

‫ترافیک پخش‪ :1‬این قسمت شامل کل ترافیک پخش در بخش شبکه است‪ .‬اجرای شنود‬
‫در هر نقطهای در درون سایت باید به شما اجازه دهد تا کل ترافیک پخش را ربایش نمایید‬
‫و این امر شما را قادر خواهد ساخت تا بفهمید که چه کسی یا چه چیزی بهطور معمول‬
‫ترافیک پخش زیادی را به شبکه میفرستد‪ ،‬و به این ترتیب بسرعت میتوانید تعیین کنید که‬
‫آیا پخش بیش از اندازهای دارید و یا این پخش به اندازهی کافی است‪.‬‬
‫توالیهای احراز هویت‪ :‬اینها شامل ترافیک از فرآیندهای احراز هویت در کاربرهای‬
‫تصادفی برای همهی سرویسها هستند که از آن جمله میتوان به ‪،Active Directory‬‬
‫برنامههای کاربردی وب‪ ،‬و نرمافزار اختصاصی سازمانی اشاره کرد‪ .‬احراز هویت یکی از‬
‫حوزههایی است که در آن سرویسها عموماً کند هستند‪ .‬این خط مبنا شما را قادر میسازد‬
‫تا تعیین کنید که آیا احراز هویت را باید برای ارتباطات کند مقصر دانست یا نه‪.‬‬
‫سرعت انتقال‪ 2‬دادهها‪ :‬این قسمت بهطور معمول شامل معیاری از یک انتقال دادهی‬
‫بزرگ از سایت به انواع سایتهای دیگر در شبکه است‪ .‬شما میتوانید از ویژگیهای‬
‫خالصهی ربایش و ترسیم نمودار ‪ Wireshark‬برای تعیین سرعت انتقال و پایداری اتصال‬
‫استفاده نمایید‪ .‬این شاید مهمترین خط مبنای سایتی باشد که در اختیار دارید‪ .‬هر گاه که هر‬
‫اتصالی که در حال ورود به بخش شبکه یا خروج از آن است کند به نظر میرسد‪ ،‬آنگاه‬
‫میتوانید همین انتقال داده را بهعنوان خط مبنایتان اجرا کنید و نتایج را با هم مقایسه نمایید‪.‬این‬
‫کار به شما خواهد گفت که آیا این اتصال عمالً کند است یا نه‪ ،‬و حتی شاید به شما کمک‬
‫کند تا منطقهای را پیدا کنید که این کندی احتماالً از آنجا آغاز میشود‪.‬‬

‫خط مبنای میزبان‬


‫داشتن یک خط مبنای میزبان به این معنی نیست که شما باید برای تک تک میزبانهای‬
‫موجود در شبکهی خود مبناسازی کنید‪ .‬خط مبنای میزبان باید تنها در سرورهای دارای‬

‫‪1‬‬
‫‪broadcast traffic‬‬
‫‪2‬‬
‫‪transfer rate‬‬
‫‪309‬‬
‫جنگ با شبکه کند‬ ‫فصل نهم‬

‫ترافیک باال یا سرورهای حیاتی اجرا شود‪ .‬اساساً‪ ،‬اگر یک سرور کند منجر به تماسهای‬
‫تلفنی عصبانی از سوی مدیریت میشود‪ ،‬آنگاه شما باید برای آن میزبان یک خط مبنا داشته‬
‫باشید‪ .‬مؤلفههای خط مبنای میزبان بهقرار زیر هستند‪:‬‬

‫پروتکلهای مورد استفاده‪ :‬این خط مبنا در زمان ربایش ترافیک از میزبان فرصتی خوبی‬
‫را برای استفاده از پنجرهی ‪ Protocol Hierarchy Statistics‬فراهم میآورد‪ .‬سپس شما‬
‫میتوانید در برابر آن قیاس را انجام دهید تا بفهمید که آیا پروتکلهایی که بهطور معمول‬
‫وجود دارند گم شدهاند یا نه‪ ،‬و یا آیا پروتکلهای جدیدی خودشان را به میزبان معرفی‬
‫کردهاند یا نه‪ .‬همچنین میتوانید از این خط مبنا برای یافتن مقادیر بیش از معمولِ بعضی انواع‬
‫مشخص ترافیک مبتنی بر پروتکل استفاده نمایید‪.‬‬
‫ترافیک بیکار‪ /‬مشغول‪ :‬این خط مبنا تنها از ربایشهای عمومی ترافیک عملیاتی معمول‬
‫در طول زمانهای اوج و خارج از اوج تشکیل میشود‪ .‬دانستن تعداد اتصالها و مقدار پهنای‬
‫باند مورد استفاده توسط آن اتصالها در نقاط مختلف روز شما را قادر خواهد ساخت تا تعیین‬
‫کنید که آیا کندی در نتیجهی بار کاربر است و یا موضوع دیگری وجود دارد‪.‬‬
‫راهاندازی‪ /‬خاموش کردن‪ :‬برای به دست آوردن این خط مبنا‪ ،‬باید ربایشی از ترافیک‬
‫ایجاد شده در طول توالیهای راهاندازی و خاموش کردن میزبان را به وجود آورید‪ .‬اگر‬
‫کامپیوتر از ‪ boot‬شدن یا خاموش شدن امتناع میکند‪ ،‬یا در طول توالی هر یک از آنها‬
‫بهطور غیر معمولی کند باشد‪ ،‬آنگاه میتوانید از این خط مبنا برای تعیین آن استفاده کنید که‬
‫آیا دلیل این امر به شبکه مرتبط است یا نه‪.‬‬
‫توالیهای احراز هویت‪ :‬این خط مبنا نیازمند ربایش ترافیک از فرآیندهای احراز هویت‬
‫در میزبان است‪ .‬احراز هویت یکی از حوزههایی است که در آن سرویسها عموماً کند‬
‫هستند‪ .‬این خط مبنا شما را قادر میسازد تا تعیین کنید که آیا احراز هویت را باید برای‬
‫ارتباطات کند مقصر دانست یا نه‪.‬‬

‫‪310‬‬
‫جنگ با شبکه کند‬ ‫فصل نهم‬

‫ارتباطها‪ /‬وابستگیها‪ :‬این خط مبنا از یک ربایش با مدت طوالنیتر تشکیل میشود تا‬
‫تعیین گردد که این میزبان به چه میزبانهای دیگری وابسته است (و بقیه به این میزبان‬
‫وابستهاند)‪ .‬برای دیدن این ارتباطها و وابستگیها میتوانید از پنجرهی ‪Conversations‬‬
‫استفاده کنید )‪ .(Statistics ► Conversations‬نمونهای از این یک میزبان سرور ‪SQL‬‬
‫است که یک سرور وب به آن وابسته است‪ .‬ما همیشه نسبت به وابستگیهای ضمنی بین‬
‫میزبانها آگاه نیستیم؛ بنابراین‪ ،‬خط مبنای میزبان را میتوان برای تعیین این وابستگیها مورد‬
‫استفاده قرار داد‪ .‬از اینجا میتوانید عمل نکردن صحیح یک میزبان را به سبب یک وابستگی‬
‫معیوب یا دارای تأخیر باال تعیین کنید‪.‬‬

‫خط مبنای برنامهی کاربردی‬


‫خط مبنای برنامههای کاربردی آخرین گروه خط مبنای شبکه است‪ .‬این خط مبنا باید در‬
‫همهی برنامههای کاربردی مبتنی بر شبکهی مهم برای کسب و کار اجرا شود‪ .‬خط مبنای‬
‫برنامهی کاربردی از مؤلفههای زیر تشکیل میشود‪:‬‬

‫پروتکل مورد استفاده‪ :‬باز هم در اینجا از پنجرهی ‪ Protocol Hierarchy Statistics‬در‬


‫برنامهی ‪ Wireshark‬استفاده کنید و این بار از آن به هنگام ربایش کردن ترافیک از میزبانی‬
‫استفاده نمایید که برنامهی کاربردی را اجرا میکند‪ .‬سپس میتوانید برای یافتن این امر آن را‬
‫قیاس نمایید که آیا پروتکلهایی که برنامهی کاربردی به آنها وابسته است به شکل نادرست‬
‫کار میکنند یا نه‪.‬‬
‫راهاندازی‪ /‬خاموش کردن‪ :‬این خط مبنا شامل یک ربایش از ترافیک ایجاد شده در‬
‫طول توالیهای راهاندازی و خاموش کردن برنامهی کاربردی است‪ .‬اگر این برنامهی‬
‫کاربردی از آغاز شدن امتناع میکند‪ ،‬یا در طول هر یک از این توالیها به شکلی غیر معمول‬
‫کند باشد‪ ،‬آنگاه میتوانید از این خط مبنا برای تعیین دلیل استفاده کنید‪.‬‬

‫‪311‬‬
‫جنگ با شبکه کند‬ ‫فصل نهم‬

‫ارتباطها‪ /‬وابستگیها‪ :‬این خط مبنا از یک ربایش با مدت طوالنیتر تشکیل میشود که‬
‫در آن از پنجرهی ‪ Conversation‬میتوان برای تعیین میزبانها و برنامههای کاربردی دیگری‬
‫استفاده کرد که این برنامهی کاربردی به آنها وابسته است‪ .‬ما همیشه نسبت به وابستگیهای‬
‫ضمنی بین برنامههای کاربردی آگاه نیستیم و به همین سبب این خط مبنا را میتوان برای‬
‫تعیین آنها مورد استفاده قرار داد‪ .‬از اینجا میتوانید عمل نکردن صحیح یک برنامهی‬
‫کاربردی را به سبب یک وابستگی معیوب یا دارای تأخیر باال تعیین کنید‪.‬‬
‫سرعت انتقال دادهها‪ :‬شما میتوانید از ویژگیهای خالصهی ربایش و ترسیم نمودار‬
‫‪ Wireshark‬برای تعیین سرعت انتقال و پایداری اتصال به سرور برنامهی کاربردی در طول‬
‫عملیات عادیاش استفاده کنید تا این خط مبنا را به وجود آورید‪ .‬هر گاه کند بودن برنامهی‬
‫کاربردی گزارش شود‪ ،‬آنگاه شما میتوانید از این خط مبنا برای تعیین آن استفاده کنید که‬
‫آیا مشکالت ایجاد شده در نتیجهی استفادهی زیاد به وجود آمدهاند یا بار زیاد یک کاربر‪.‬‬

‫نکات دیگر در خصوص خطوط مبنا‬


‫در اینجا چند نکتهی دیگر را مطرح میکنم که در هنگام به وجود آوردن خط مبنای شبکهی‬
‫خود آنها را در ذهن داشته باشید‪:‬‬
‫‪ ‬در زمان به وجود آوردن خطوط مبنایتان‪ ،‬هر کدام را حداقل سه بار انجام دهید‪:‬‬
‫یک بار در طول یک زمان کم ترافیک (اول صبح)؛ یک بار در طول زمان ترافیک‬
‫باال (اواسط بعد از ظهر)؛ و یک بار در طول یک زمان بدون ترافیک (اواخر شب)‪.‬‬
‫‪ ‬هرگاه امکانپذیر باشد‪ ،‬از ربایش کردن مستقیم از میزبانهایی که در حال مبناسازی‬
‫آنها هستید اجتناب کنید‪ .‬این کار در طول دورههای ترافیک باال‪ ،‬میتواند بار‬
‫بیشتری را بر دستگاه وارد کند و به عملکرد آن آسیب برساند و منجر به آن گردد‬
‫که خط مبنای شما به سبب بستههای از قلم افتاده بیاعتبار بشود‪.‬‬

‫‪312‬‬
‫جنگ با شبکه کند‬ ‫فصل نهم‬

‫‪ ‬خط مبنای شما حاوی اطالعات بسیار محرمانهای اطمینان حاصل کردن از شبکهی‬
‫شماست؛ بنابراین‪ ،‬از حفظ امنیت آنها اطمینان حاصل نمایید‪ .‬آن را در مکانی ایمن‬
‫حفظ کنید که تنها افراد مقتضی به آن دسترسی داشته باشند‪ .‬اما‪ ،‬در همین زمان‪ ،‬آن‬
‫را دم دست نگه دارید‪ ،‬بهطوری که برایتان کاربردی باقی بماند‪ .‬قرار دادن آن در‬
‫یک فلش ‪ USB‬یا یک پارتیشن رمزگذاری شده در نظر بگیرید‪.‬‬
‫‪ ‬کلیهی فایلهای ‪ .pcap‬مرتبط با خط مبنای خود را حفظ کنید و یک "صفحهی‬
‫کروکی‪ "1‬از مقادیری را تهیه نمایید که عموماً به آنها رجوع میشود که از آن‬
‫جمله میتوان به ارتباطها یا میانگین سرعت انتقال دادهها اشاره کرد‪.‬‬

‫آخرین نظرات‬
‫این فصل بر رفع اشکال از شبکههای کند متمرکز بود‪ .‬ما پارهای از ویژگیهای سودمندتر‬
‫‪ TCP‬برای کشف و شناسایی و بازیافت را پوشش دادیم که نشان دادند چگونه منشأ تأخیر‬
‫باال در ارتباطات شبکه را مشخص کنیم‪ .‬این فصل همچنین در خصوص اهمیت خط مبنای‬
‫شبکه و پارهای از مؤلفههای آن بحث کرد‪ .‬شما با استفاده از تکنیکهای بحث شده در اینجا‬
‫(همراه با بعضی از ویژگیهای ترسیم نمودار و تحلیل ‪ Wireshark‬که در فصل ‪ 5‬مورد بحث‬
‫قرار گرفتند) باید برای رفع ایراد در زمان دریافت شکایت از کند بودن شبکه بخوبی تجهیز‬
‫شده باشید‪.‬‬

‫‪1‬‬
‫‪cheat sheet‬‬
‫‪313‬‬
‫فصل دهم‬
‫تحلیل بسته برای امنیت‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫تحلیل بسته برای امنیت‬


‫اگرچه اغلب این کتاب بر استفادهی تحلیل بسته برای رفع اشکال شبکه متمرکز است‪ ،‬ولی‬
‫بخش عمدهای از تحلیل بسته در دنیا برای مقاصد امنیتی اجرا میشود‪ .‬این میتواند کار یک‬
‫تحلیلگر نفوذ‪ 1‬باشد که مشغول بررسی ترافیک شبکه از طرف نفوذگر بالقوه است‪ ،‬و یا‬
‫میتواند کار یک بازرس قانونی باشد که تالش میکند تا محدوده یک بدافزار در یک میزبان‬
‫به خطر افتاده را مشخص و اثبات نماید‪ .‬تحلیل بسته برای امنیت موضوعی بزرگ بوده و‬
‫مناسب است که یک کتاب کامل به آن بپردازد‪ .‬این فصل به تحلیل کردن بستهها با تمرکز‬
‫بر روی مقولهی امنیت اشارهای خواهد داشت‪ .‬همچنان که به بررسی جنبههای مختلفِ به‬
‫خطر افتادن سیستم در سطح شبکه میپردازیم‪ ،‬نقطه نظر متخصصان امنیت را مورد استفاده‬
‫قرار خواهیم داد‪ .‬ما کشف و شناسایی شبکه‪ ،2‬تغییر جهت ترافیک مخرب‪ ،3‬و بهرهکشی‬
‫سیستم‪ 4‬را پوشش خواهیم داد‪ .‬سپس‪ ،‬همچنان که ترافیک را بر اساس اخطارهای یک سیستم‬
‫تشخیص نفوذ‪ )IDS( 5‬مورد کالبدشکافی قرار میدهیم‪ ،‬نقش یک تحلیلگر نفوذ را به خود‬
‫خواهیم گرفت‪ .‬خواندن این فصل برای شما بینش مهمی را در خصوص امنیت شبکه فراهم‬
‫خواهد آورد‪ ،‬حتی اگر نقش و جایگاهی متمرکز بر مسائل امنیتی نباشید‪.‬‬

‫کشف و شناسایی‬
‫اجرای تحقیق عمیق در خصوص سیستمِ مورد هدف نخستین گامی است که یک حملهکننده‬
‫برمیدارد‪ .‬این گام – که عموماً به آن ‪ footprinting‬گفته میشود – اغلب با استفاده از انواع‬
‫منابعی به انجام میرسد که بهطور عمومی موجود هستند و از آن جمله میتوان به وبسایت‬
‫شرکت مورد هدف یا ‪ Google‬اشاره کرد‪ .‬حملهکننده بهمحض پایان این تحقیق بهطور‬

‫‪1‬‬
‫‪intrusion analyst‬‬
‫‪2‬‬
‫‪network reconnaissance‬‬
‫‪3‬‬
‫‪malicious traffic redirection‬‬
‫‪4‬‬
‫‪system exploitation‬‬
‫‪5‬‬
‫)‪intrusion-detection system (IDS‬‬
‫‪316‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫معمول شروع به اسکن‪ 1‬آدرس ‪( IP‬یا نام ‪ )DNS‬هدفش برای پورتهای باز یا سرویسهای‬
‫فعال مینماید‪.‬‬
‫این اسکن حملهکننده را قادر مینماید تا تعیین کند که آیا هدف برقرار و قابل دسترس است‬
‫یا نه‪ .‬برای مثال‪ ،‬سناریویی را در نظر بگیرید که در آن یک سارق بانک نقشه میکشد تا از‬
‫بزرگترین بانک شهر دزدی کند که در شمارهی ‪ 123‬در ‪ Main Street‬قرار دارد‪ .‬او هفتهها‬
‫برای برنامهریزی یک سرقت استادانه زمان صرف میکند‪ ،‬ولی به محض ورود میفهمد که‬
‫آدرس بانک به شمارهی ‪ 555‬در ‪ Vine Street‬تغییر پیدا کرده است‪ .‬هنوز از این بدتر هم‬
‫ممکن است؛ سناریویی را در نظر بگیرید که در آن سارق نقشه میکشد که در طول ساعات‬
‫کاری عادی وارد بانک شود و اقدام به سرقت از خزانهی بانک نماید و درست زمانی که‬
‫وارد بانک میشود میفهمد که بانک آن روز تعطیل است‪ .‬اطمینان از برقرار و قابل دسترس‬
‫بودن هدف نخستین مانعی است که باید از آن گذشت‪.‬‬
‫نتیجهی مهم دیگرِ اسکن آن است که به حملهکننده میگوید هدف از کدام پورت میشنود‪.‬‬
‫بیایید به قیاس سارق بانک خود برگردیم و تصور کنید چه اتفاقی خواهد افتاد اگر سارق‬
‫بدون هیچ آگاهی و اطالعی از نقشهی فیزیکی ساختمان در بانک حاضر بشود‪ .‬او برای آنکه‬
‫به ساختمان دسترسی پیدا کند هیچ ایدهای ندارد‪ ،‬زیرا نقاط ضعف در سیستم امنیت فیزیکی‬
‫آن را نمیداند‪.‬‬
‫ما در این فصل‪ ،‬اندکی در خصوص تکنیکهای رایجتر اسکن بحث خواهیم کرد که برای‬
‫شناسایی میزبانها‪ ،‬پورتهای باز آنها‪ ،‬و آسیبپذیریهای شبکه مورد استفاده قرار‬
‫میگیرند‪.‬‬

‫‪1‬‬
‫‪scanning‬‬
‫‪31۷‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫نکته‪ :‬کتاب حاضر تا به اینجا به طرفین یک ارتباط با عنوان ارسالکننده و دریافت کننده یا‬
‫با عنوان کاربر و سرور اشاره کرده است‪ .‬این فصل به طرفین ارتباط با عنوان حملهکننده یا‬
‫قربانی اشاره خواهد کرد‪.‬‬

‫اسکن ‪SYN‬‬
‫اسکن ‪ – TCPSYN‬که با عناوین اسکن نامحسوس‪ 1‬یا نیمه باز‪ 2‬نیز شناخته میشود – نوع‬
‫اسکنی است که اغلب نخست بر علیه یک سیستم انجام میشود‪ .‬اسکن ‪ SYN‬به چندین دلیل‬
‫شایعترین نوع اسکن است که از آن جمله میتوان به موارد زیر اشاره کرد‪:‬‬
‫‪ ‬بسیار سریع و قابل اطمینان است‪.‬‬
‫‪ ‬این اسکن‪ ،‬صرف نظر از اجرای پشتهی ‪ ،TCP‬در همهی اجراها بسیار دقیق است‪.‬‬
‫‪ ‬نسبت به سایر تکنیکهای اسکن کردن دیگر نویز کمتری دارد‪.‬‬
‫اسکن ‪ TCP SYN‬بهمنظور تعیین اینکه کدام پورتها در میزبان مورد هدف باز هستند‪ ،‬بر‬
‫فرآیند دستدهی سه طرفه تکیه میکند‪ .‬حملهکننده یک بستهی ‪ TCP SYN‬را به گروهی‬
‫از پورتها در قربانی میفرستد؛ انگار که تالش میکند تا کانالی را برای ارتباط عادی در‬
‫پورتها برقرار نماید‪ .‬همان طوری که در شکل ‪ 1-10‬نشان داده شده است‪ ،‬بهمحض دریافت‬
‫این بسته توسط قربانی‪ ،‬چند حالت معدود ممکن است رخ دهد‪.‬‬

‫‪1‬‬
‫‪stealth scan‬‬
‫‪2‬‬
‫‪half-open‬‬
‫‪318‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫شکل ‪ :1-10‬نتایج احتمالی یک اسکن ‪TCP SYN‬‬

‫اگر یک سرویس در دستگاه قربانی مشغول گوش دادن به پورتی باشد که این بستهی ‪SYN‬‬
‫را دریافت میکند‪ ،‬آنگاه این دستگاه با یک بستهی ‪( TCP SYN/ACK‬دومین بخش‬
‫دستدهی ‪ )TCP‬پاسخ خواهد داد‪ .‬آنگاه حملهکننده میفهمد که پورت باز است و یک‬
‫فرستنده در حال گوش کردن به آن است‪ .‬تحت شرایط عادی‪ TCP ACK ،‬نهایی برای‬
‫تکمیل دستدهی ارتباط فرستاده خواهد شد؛ اما‪ ،‬در این مورد‪ ،‬حملهکننده نمیخواهد که‬
‫این اتفاق رخ دهد‪ ،‬زیرا در این مقطع با میزبان دیگر ارتباط نخواهد داشت‪ .‬بنابراین‪،‬‬
‫حملهکننده سعی نمیکند تا دستدهی ‪ TCP‬را کامل کند‪.‬‬
‫اگر هیچ سرویسی مشغول گوش دادن به یک پورت اسکن شده نباشد‪ ،‬آنگاه حملهکننده‬
‫یک ‪ SYN/ACK‬را دریافت نخواهد کرد‪ .‬حملهکننده بسته به پیکربندی سیستم عامل قربانی‬
‫میتواند در جواب یک بستهی ‪ RST‬را دریافت نماید که نشان میدهد این پورت بسته است‪.‬‬
‫در حالت دیگر ممکن است که حملهکننده اصالً هیچ جوابی را دریافت نکند و این امر‬
‫میتواند به این معنی باشد که پورت توسط دستگاهی واسط – نظیر دیوار آتش یا خود میزبان‬

‫‪319‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫– فیلتر شده است‪ .‬از سوی دیگر‪ ،‬این تنها میتواند به این معنی باشد که پاسخ در انتقال گم‬
‫شده است‪ .‬این نتیجه بهطور معمول اشاره بر آن دارد که پورت بسته است‪ ،‬ولی در نهایت‬
‫بینتیجه است‪.‬فایل ‪ synscan.pcap‬مثالی عالی از یک اسکن ‪ SYN‬را فراهم میآورد که با‬
‫ابزار ‪ NMAP‬اجرا شده است‪ .‬برنامهی ‪ NMAP‬یک برنامهی کاربردی قدرتمند اسکن کردن‬
‫شبکه است که توسط ‪ Fyodor‬تهیه و ساخته شده است‪.‬‬
‫این برنامه تقریباً هر نوع اسکنی که بتوانید تجسم کنید را اجرا میکند‪ .‬شما میتوانید ‪NMAP‬‬
‫را بهطور رایگان از ‪ http://www.nmap.com/download.html‬دانلود کنید‪.‬‬
‫ربایش نمونهی ما تقریباً حاوی ‪ 2000‬بسته است که به ما میگوید این اسکن اندازهای معقول‬
‫دارد‪ .‬همان طوری که در شکل ‪ 2-10‬نشان داده شده است‪ ،‬دیدن پنجرهی ‪Conversation‬‬
‫یکی از بهترین راهها برای معین کردن دامنهی اسکنی با این ماهیت است‪ .‬شما در آنجا یک‬
‫گفتگوی ‪  IPv4‬را بین حملهکننده ‪ 172.16.0.8‬و قربانی ‪ 63.13.134.52‬خواهید دید‪.‬‬
‫همچنین خواهید دید که در آنجا ‪ 1994‬گفتگوی ‪ TCP‬بین این دو میزبان وجود دارد ‪ ‬که‬
‫اساساً یک گفتگوی جدید برای هر جفتسازی پورت دخیل در ارتباطات است‪.‬‬

‫شکل ‪ :2-10‬پنجرهی ‪ Conversations‬تنوعی از گفتگوهای ‪ TCP‬را نشان میدهد که واقع میشوند‪.‬‬

‫‪320‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫اسکن کردن خیلی سریع رخ میدهد‪ ،‬و بنابراین مرور کردن در میان فایل ربایش بهترین راه‬
‫برای پیدا کردن پاسخ مرتبط با هر بستهی ‪ SYN‬آغازین نیست‪ .‬ممکن است پیش از آنکه‬
‫پاسخ به بستهی اولیه دریافت شود چندین بستهی دیگر فرستاده شده باشد‪ .‬خوشبختانه‪،‬‬
‫میتوانیم فیلترهایی را درست کنیم که به ما در یافتن ترافیک صحیح کمک نمایند‪.‬‬

‫استفاده از فیلترها در خصوص اسکنهای ‪SYN‬‬


‫بهعنوان مثالی از فیلترینگ‪ ،‬اجازه دهید که بستهی نخست را در نظر بگیریم که یک بستهی‬
‫‪ SYN‬فرستاده شده به قربانی در پورت ‪ 433‬از پروتکل ‪ HTTPS‬است‪ .‬برای آنکه ببینیم که‬
‫آیا پاسخی به این بسته وجود داشته یا نه‪ ،‬میتوانیم فیلتری را درست کنیم تا همهی ترافیک‬
‫را به‪ ،‬و از‪ ،‬پورت ‪ 433‬نشان دهد‪ .‬برای انجام سریع این کار باید مراحل زیر را انجام دهید‪:‬‬
‫‪ .1‬بستهی اول را در فایل ربایش انتخاب کنید‪.‬‬
‫‪ .2‬سرآیند ‪ TCP‬را در قسمت ‪ Packet Details‬بزرگ کنید‪.‬‬
‫‪ .3‬روی فیلد ‪ Destination Port‬کلیک راست کنید؛ ‪ Prepare as Filter‬را انتخاب‬
‫کنید‪ ،‬و بر روی ‪ Selected‬کلیک کنید‪.‬‬
‫‪ .4‬این کار یک فیلتر را در دیالوگ فیلتر برای همهی بستهها با مقصد پورت ‪ 433‬ایجاد‬
‫میکند‪ .‬اکنون‪ ،‬از آنجایی که همچنین همهی بستههای آمده از پورت مبدأ ‪ 433‬را‬
‫میخواهیم‪ ،‬روی دیالوگ فیلتر در باالی صفحه کلیک میکنیم و بخش ‪ dst‬از‬
‫فیلتر را پاک مینماییم‪.‬‬
‫همان طوری که در شکل ‪ 3-10‬نشان داده شده است‪ ،‬فیلتر حاصله دو بسته را حاصل خواهد‬
‫کرد که هر دو بستههای ‪ TCP SYN‬فرستاده شده از حملهکننده به قربانی هستند‪.‬‬

‫شکل ‪ :3-10‬دو تالش برای برقرار کردن ارتباط با بستههای ‪SYN‬‬

‫‪321‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫از آنجایی که به هیچ یک از این دو بسته پاسخی داده نشده است‪ ،‬این امکان وجود دارد که‬
‫پاسخ توسط میزبان قربانی یا دستگاهی واسط فیلتر شده باشد‪ ،‬و یا اینکه پورت بسته شده‬
‫باشد‪ .‬در نهایت‪ ،‬نتیجهی اسکن برای پورت ‪ 443‬بینتیجه است‪.‬‬
‫میتوانیم همین تکنیک را در مورد بستهای دیگر امتحان کنیم تا ببینیم که آیا نتیجهی متفاوتی‬
‫را به دست خواهیم آورد یا نه‪ .‬برای انجام این کار‪ ،‬نخست فیلتری که قبالً درست شده را با‬
‫کلیک کردن بر روی دکمهی ‪ Clear‬در کنار منقطهی فیلتر پاک کنید‪ .‬سپس نهمین بسته در‬
‫لیست را انتخاب کنید‪ .‬این یک بستهی ‪ SYN‬به پورت ‪ 53‬است که عموماً با ‪ DNS‬در ارتباط‬
‫است‪ .‬با استفاده از روش مطرح شده فیلتری را بر اساس پورت مقصد بسازید و بخش ‪dst‬‬
‫فیلتر را پاک کنید‪ ،‬بهطوری که برای کل ترافیک ‪ TCP‬پورت ‪ 53‬اعمال شود‪ .‬همان طوری‬
‫که در شکل ‪ 10-4‬نشان داده شده است‪ ،‬در زمان استفاده از این فیلتر باید پنج بسته را ببینید‪.‬‬

‫شکل ‪ :10-4‬پنج بسته که نشان میدهد یک پورت باز است‬

‫اولین بسته از آنها بستهی ‪SYN‬ای است که در آغاز ربایش انتخاب کردیم‪ .‬دومین آنها‬
‫یک پاسخ واقعی از طرف قربانی است‪ .‬این یک ‪ TCP SYN/ACK‬است؛ یعنی‪ ،‬پاسخ مورد‬
‫انتظار در زمان ترتیب دادن دستدهی سه طرفه‪ .‬تحت شرایط عادی‪ ،‬بستهی بعدی یک ‪ACK‬‬
‫از طرف میزبان خواهد بود که ‪ SYN‬آغازین را میفرستد؛ ولی‪ ،‬در این مورد‪ ،‬حملهکنندهی‬
‫ما نمیخواهد که اتصال را کامل نماید و بنابراین پاسخی را نمیفرستد‪ .‬در نتیجه‪ ،‬قربانی پیش‬
‫از دست کشیدن دوباره‪ ،‬سه مرتبهی دیگر ‪ SYN/ACK‬را میفرستد‪ .‬از آنجایی که در زمان‬
‫تالش برای ارتباط برقرار کردن با میزبان در پورت ‪ 53‬یک پاسخ ‪ SYN/ACK‬دریافت شده‬
‫است‪ ،‬بنابراین‪ ،‬میتوان فرض کرد که سرویس در حال گوش کردن به آن پورت است‪.‬‬

‫‪322‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫بیایید این کار را یک بار دیگر برای بستهی ‪ 13‬تکرار کنیم‪ .‬این یک بستهی ‪ SYN‬فرستاده‬
‫شده به پورت ‪ 113‬است که بهطور معمول با پروتکل ‪ Ident‬مرتبط است و اغلب برای‬
‫سرویسهای شناسایی ‪ IRC‬و احراز هویت مورد استفاده قرار میگیرد‪ .‬اگر همین نوع فیلتر‬
‫را برای پورت فهرست شده در این بسته استفاده کنید‪ ،‬آنگاه همان طوری که در شکل ‪10-5‬‬
‫نشان داده شده است‪ ،‬چهار بسته را خواهید دید‪.‬‬

‫شکل ‪ :5-10‬یک ‪ SYN‬که به دنبال آن یک ‪ RST‬است که نشان میدهد پورت بسته شده است‬

‫نخستین بسته ‪ SYN‬آغازین است که بالفاصله به دنبال آن یک ‪ RST‬از قربانی قرار دارد‪ .‬این‬
‫نشانهای از آن است که قربانی اتصالها به پورت هدفگذاری شده را نمیپذیرد‪ ،‬و اینکه‬
‫یک سرویس به احتمال قریب به یقین در آن مشغول اجرا نیست‪.‬‬

‫شناسایی پورتهای باز و بسته‬


‫پس از درک انواع مختلف پاسخی که یک اسکن ‪ SYN‬میتواند استخراج کند‪ ،‬اندیشهی‬
‫منطقی بعدی عبارت است از یافتن روشی سریع برای شناسایی پورتهای باز و بسته‪ .‬پاسخ‬
‫بار دیگر در پنجرهی ‪ Conversation‬است‪ .‬همان طوری که در شکل ‪ 10-6‬نشان داده شده‬
‫است‪ ،‬در این پنجره‪ ،‬با دوبار کلیک روی ستون ‪ Packets‬میتوانید گفتگوهای ‪ TCP‬را بر‬
‫حسب تعداد بسته مرتبسازی کنید که در آن باالترین مقادیر در باال قرار میگیرد‪.‬‬

‫‪323‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫شکل ‪ :10-6‬پیدا کردن پورتهای باز توسط پنجرهی ‪Conversation‬‬

‫سه پورت اسکن شده شامل پنج بسته در هر یک از گفتگوهایشان است ‪ .‬میدانیم که‬
‫پورت ‪ ،80 ،53‬و ‪ 22‬باز هستند‪ ،‬زیرا این پنج بسته معرف ‪ SYN‬آغازین‪ SYN/ACK ،‬متناظر‪،‬‬
‫و ‪SYN/ACK‬های دوباره ارسال شده از طرف قربانی هستند‪.‬‬
‫برای پنج پورت‪ ،‬تنها دو بسته در ارتباط دخیل بودند ‪ .‬نخستین آنها ‪ SYN‬آغازین‪ ،‬و‬
‫دومی ‪ RST‬از طرف قربانی است‪ .‬این نشان میدهد که پورتهای ‪ 113 ،3133۷ ،25 ،113‬و‬
‫‪ ۷0‬بسته هستند‪.‬‬
‫بقیهی ورودیها در پنجرهی ‪ Conversation‬تنها شامل یک بسته است‪ ،‬و این بدان معنی‬
‫است که میزبان قربانی هرگز به ‪ SYN‬آغازین پاسخ نداده است‪ .‬این پورتهای باقیمانده به‬
‫احتمال بسیار زیاد بستهاند‪ ،‬ولی ما مطمئن نیستیم‪.‬‬

‫‪ Fingerprinting‬سیستم عامل‬
‫یک حملهکننده برای دانستن سیستم عامل هدفش ارزش بسیار زیادی قائل است‪ .‬دانستن‬
‫سیستم عاملِ مورد استفاده تضمین مینماید که همهی روشهای حملهی به کار رفته توسط‬
‫حملهکننده برای آن سیستم بهدرستی پیکربندی شدهاند‪ .‬این امر همچنین یک حملهکننده را‬

‫‪324‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫قادر میسازد تا اگر عمالً موفق به دسترسی به سیستم شود‪ ،‬آنگاه مکان بعضی فایلهای بسیار‬
‫مهم و دایرکتوریهای درون سیستم فایل مورد هدف را بداند‪ .‬تکنیک ‪fingerprinting‬‬
‫سیستم عامل نامی است که به گروهی از تکنیکهای مورد استفاده برای تعیین سیستم عامل‬
‫در حال اجرای یک سیستم داده شده است که در آنها این کار عمالً بدون دسترسی فیزیکی‬
‫به آن سیستم انجام میشود‪ .‬دو نوع ‪ fingerprinting‬سیستم عامل وجود دارد که عبارتند از‬
‫منفعل و فعال‪.‬‬

‫‪ Fingerprinting‬منفعل‬
‫شما با استفاده از ‪ fingerprinting‬منفعل بهمنظور تعیین سیستم عامل مورد استفاده به بررسی‬
‫فیلدهای بخصوصی در بستههای فرستاده شده از هدف میپردازید‪ .‬این تکنیک از آنجا منفعل‬
‫در نظر گرفته میشود که شما تنها به بستههایی گوش میدهید که میزبان مورد هدف در حال‬
‫فرستادنشان است و خودتان بهطور فعال هیچ بستهای را به این میزبان نمیفرستید‪ .‬این‬
‫ایدهآلترین نوع ‪ fingerprinting‬سیستم عامل برای حملهکنندهها است‪ ،‬زیرا آنان را قادر‬
‫میسازد تا پنهان باشند‪.‬‬
‫اما‪ ،‬چگونه میتوانیم سیستم عاملی را تنها بر اساس بستههایی تشخیص دهیم که‬
‫میفرستد؟خوب‪ ،‬این عمالً خیلی ساده است و توسط فقدان اختصاصی بودن در مشخصههای‬
‫تعریف شده توسط ‪RFC‬های پروتکل امکانپذیر شده است‪ .‬اگرچه انواع فیلدهای موجود‬
‫در سرآیندهای ‪ ،UDP ،TCP‬و ‪ IP‬بسیار مخصوص هستند‪ ،‬ولی برای این فیلدها هیچ مقدار‬
‫پیش فرضی تعریف نشده است‪ .‬این بدان معنی است که اجرای پشتهی ‪ TCP/IP‬در هر سیستم‬
‫عامل باید مقادیر پیش فرض خود را برای این فیلدها تعریف نماید‪ .‬جدول ‪ 1-10‬بعضی از‬
‫فیلدهای رایج و مقادیر پیش فرضشان را فهرست میکند که میتواند برای پیوند دادن آنها‬
‫به انواع سیستمهای عامل مورد استفاده قرار بگیرند‪.‬‬

‫‪325‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫جدول ‪ :1-10‬مقادیر رایج ‪ fingerprinting‬سیستم عامل‬

‫بستههای موجود در فایل ‪ passiveosfingerprinting.pcap‬نمونههایی عالی از این تکنیک‬


‫هستند‪ .‬دو بسته در این فایل وجود دارد که هر دو بستههای ‪ TCP SYN‬فرستاده شده به پورت‬
‫‪ 80‬هستند‪ ،‬ولی از میزبانهای مختلفی میآیند‪ .‬تنها با استفاده از مقادیر موجود در این بستهها‬
‫و رجوع به جدول ‪ 10-1‬باید بتوانیم معماری سیستم عامل مورد استفاده در هر میزبان را‬
‫مشخص کنیم‪ .‬جزئیات هر بسته در شکل ‪ ۷-10‬نشان داده شده است‪.‬‬

‫شکل ‪ :۷-10‬این بستهها میتوانند به ما بگویند که از چه سیستم عاملی فرستاده شدهاند‪.‬‬

‫‪326‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫با استفاده از جدول ‪ 10-1‬بهعنوان مرجع میتوانیم جدول ‪ 2-10‬را بسازیم که تفکیکی از‬
‫فیلدهای مرتبط در این بستهها است‪.‬‬

‫جدول ‪ :2-10‬تفکیک بستههای ‪ fingerprinting‬سیستم عامل‬

‫بر پایهی این مقادیر‪ ،‬میتوانیم نتیجهگیری کنیم که بستهی ‪ 1‬به احتمال بسیار زیاد توسط‬
‫دستگاهی فرستاده شده است که سیستم عامل آن ‪ Windows‬است‪ ،‬و بستهی ‪ 2‬به احتمال‬
‫بسیار زیاد توسط دستگاهی فرستاده شده که سیستم عامل آن ‪ Linux‬است‪.‬‬
‫به خاطر داشته باشید که فهرست ‪ fingerprinting‬منفعل رایج برای شناسایی فیلدها که در‬
‫جدول ‪ 10-1‬آورده شدهاند به هیچ عنوان جامع و کامل نیست‪ .‬ویژگیهای زیادی هستند که‬
‫میتوانند منجر به انحرافها از این مقادیر مورد انتظار شوند‪ .‬بنابراین‪ ،‬شما نمیتوانید بهطور‬
‫کامل بر نتایج به دست آمده از ‪ fingerprinting‬منفعل سیستم عامل تکیه کنید‪.‬‬

‫نکته‪ :‬یکی از ابزارهایی که از تکنیکهای ‪ fingerprinting‬سیستم عامل استفاده میکند ‪pof‬‬


‫است‪ .‬این ابزار فیلدهای مرتبط در یک ربایش فایل و خروجیهای سیستم عاملِ مورد گمان‬
‫را تحلیل میکند‪ .‬شما با استفاده از ابزارهایی نظیر ‪ pof‬نه تنها میتوانید به معماری سیستم‬
‫عامل دست پیدا کنید‪ ،‬بلکه حتی گاهی میتوانید به سطح نسخه یا ‪ patch‬برسید‪ .‬ابزار ‪ pof‬را‬
‫میتوانید از ‪ http://lcamtuf.coredump.cx/p0f.shtml‬دانلود کنید‪.‬‬

‫‪32۷‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫‪ Fingerprinting‬فعال‬
‫وقتی پایش منفعل ترافیک نتایج مطلوب را حاصل نکند‪ ،‬آنگاه ممکن است به شیوهای‬
‫مستقیمتر نیاز باشد‪ .‬این شیوه ‪ fingerprinting‬فعال نامیده میشود‪ .‬این روش شامل‬
‫حملهکنندهایست که بهطور فعاالنه بستههای بهطور خاص ساخته شده به قربانی میفرستد تا‬
‫پاسخهایی را استخراج و استنباط کند که سیستم عاملِ مورد استفاده در دستگاه قربانی را فاش‬
‫و آشکار مینمایند‪ .‬بهطور مسلم‪ ،‬از آنجایی که این شیوه شامل ارتباط برقرار کردن مستقیم‬
‫با قربانی است‪ ،‬بنابراین‪ ،‬فاقد هر گونه پنهانی بودن است‪ ،‬ولی میتواند بسیار مؤثر باشد‪.‬‬
‫فایل ‪ activeosfingerprinting.pcap‬حاوی مثالی از اسکن ‪ fingerprinting‬فعال سیستم‬
‫عامل است که توسط برنامهی اسکن کردن ‪ Nmap‬انجام شده است‪ .‬بستههای متعدد در این‬
‫فایل نتیجهی ‪ Nmap‬هستند که جستجوگرهای‪ 1‬مختلفی را برای استخراج پاسخهایی‬
‫میفرستد که شناسایی سیستم عامل را مقدور مینمایند‪ .‬برنامهی ‪ Nmap‬پاسخها به این‬
‫جستجوگرها را ربایش میکند و یک ‪ fingerprint‬را ایجاد مینماید و آن را با یک بانک‬
‫اطالعاتی از مقادیر مقایسه میکند تا به یک حکم برسد‪.‬‬

‫نکته‪ :‬تکنیکهای مورد استفاده توسط ‪ Nmap‬بهمنظور ‪ fingerprint‬کردن فعاالنهی یک‬


‫سیستم عامل خیلی پیچیده هستند‪ .‬برای آموختن بیشتر دربارهی چگونگی اجرای‬
‫‪ fingerprinting‬فعال سیستم عامل توسط برنامهی ‪ Nmap‬راهنمای قطعی برای ‪ Nmap‬را با‬
‫عنوان ‪ Nmap Network Scanning‬را بخوانید که توسط نویسندهی این برنامه ‪Gordon -‬‬
‫‪ – "Fyodor" Lyon‬نوشته شده است‪.‬‬

‫بهرهکشی‬
‫هر حملهکنندهای برای مرحلهی بهرهکشی هدف خود را آماده میکند‪ .‬حملهکننده تحقیقات‬
‫خود را به انجام رسانده‪ ،‬کشف و شناسایی هدف را اجرا کرده‪ ،‬و یک آسیبپذیری را پیدا‬

‫‪1‬‬
‫‪probe‬‬
‫‪328‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫کرده است که برای کسب دسترسی به سیستم مورد هدف آمادهی بهرهکشی از آن است‪.‬‬
‫در بقیهی این فصل‪ ،‬به ربایشهای بسته در انواع تکنیکهای بهرهکشی نگاهی خواهیم داشت‬
‫که از آن جمله میتوان به بهرهکشی از یک آسیبپذیری تقریباً تازه در ‪ ،Windows‬تغییر‬
‫جهت‪ 1‬ترافیک از طریق آلوده کردن حافظه ‪ ،2 ARP‬و تروجان دسترسی از راه دورِ‪ 3‬اجرا‬
‫کنندهی خروج دادهها‪ 4‬اشاره کرد‪.‬‬

‫عملیات ‪Aurora‬‬
‫در ژانویهی سال ‪ ،2010‬عملیات شفق قطبی‪ 5‬از یک آسیبپذیری در ‪Internet Explorer‬‬
‫بهرهکشی کرد که هنوز ناشناخته است‪ .‬این آسیبپذیری به حملهکنندگان اجازه داد تا به‬
‫کنترل سطح راه دور دستگاههای مورد هدف در ‪ Google‬و شرکتهای دیگر دست پیدا‬
‫کنند‪.‬‬
‫کاربر برای اجرای این کد مخرب تنها باید به وبسایتی مراجعه کند که از یک نسخهی‬
‫آسیبپذیر ‪ Internet Explorer‬استفاده مینماید‪ .‬سپس حملهکنندگان بالفاصله با امتیازهای‬
‫اجرایی‪ 6‬به دستگاه کاربر دسترسی پیدا میکنند‪ .‬فیشینگ نیزه‪ ۷‬برای تطمیع قربانیان استفاده‬
‫شد‪ .‬در این روش حملهکنندگان یک پیغام پست الکترونیک را برای قربانیان میفرستند؛‬
‫پیغامی که به گونهای طراحی شده است تا قربانیان بر روی لینکی کلیک نمایند که آنها را‬
‫به سایت مخرب هدایت نماید‪ .‬از آنجایی که به نظر میرسد پیغامهای فیشینگ نیزه از منابع‬
‫معتبری هستند‪ ،‬بنابراین‪ ،‬اغلب موفق هستند‪.‬‬

‫‪1‬‬
‫‪redirection‬‬
‫‪2‬‬
‫‪ARP cache poisoning‬‬
‫‪3‬‬
‫‪remote-access Trojan = RAT‬‬
‫‪4‬‬
‫‪data exfiltration‬‬
‫‪5‬‬
‫‪Operation Aurora‬‬
‫‪6‬‬
‫‪administrative privilege‬‬
‫‪7‬‬
‫‪Spear phishing‬‬
‫‪329‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫در مورد عملیات ‪ ،Aurora‬بهمحض آنکه کاربر لینک را در پیغام فیشینگ پست الکترونیک‬
‫کلید کند این داستان را برمیگزینیم‪ .‬بستههای حاصله در فایل ‪ aurora.pcap‬قرار دارند‪ .‬این‬
‫ربایش با یک دستدهی سه طرفه بین قربانی ‪ 192.168.100.206‬و حملهکننده‬
‫‪ 192.168.100.202‬آغاز میشود‪ .‬اتصال آغازین به پورت ‪ 80‬است که ما را بر آن میدارد‬
‫تا باور کنیم این یک ترافیک ‪ HTTP‬است‪ .‬همان طوری که در شکل ‪ 10-8‬نشان داده شده‬
‫است‪ ،‬این فرض در بستهی چهارم تأیید میشود که یک درخواست ‪ HTTP GET‬برای ‪/info‬‬
‫است ‪.‬‬

‫دستگاه حملهکننده وصول درخواست ‪ GET‬را تأیید میکند و کد پاسخ ‪Moved [ 302‬‬
‫‪( Temporarily‬موقتاً جابجا شده)] را در بستهی ‪ 6‬گزارش میدهد؛ کد وضعیتی که عموماً‬
‫برای تغییر جهت یک مرورگر به صفحهای دیگر مورد استفاده قرار میگیرد (وضعیتی که در‬
‫اینجا صادق است)‪ .‬همان طوری که در شکل ‪ 10-9‬نشان داده شده است‪ ،‬همراه با کد پاسخ‬
‫‪ ، 302‬یک فیلد ‪ Location‬مکان ‪ /info?rFfWELUjLJHpP‬را مشخص میکند‪.‬‬

‫شکل ‪ :10-8‬قربانی یک درخواست ‪ GET‬را برای ‪ /info‬انجام میدهد‪.‬‬

‫‪330‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫شکل ‪ :10-9‬مرورگر کاربر با این بسته تغییر جهت داده شده است‬

‫کاربر پس از دریافت بستهی ‪ HTTP 302‬یک درخواست ‪ GET‬دیگر را در بستهی‬


‫‪ ۷‬برای ‪ URL‬بهقرار ‪ /info?rFfWELUjLJHpP‬اجرا میکند که برای آن یک ‪ ACK‬در‬
‫بستهی ‪ 8‬دریافت میشود‪ .‬به دنبال این ‪ ،ACK‬چندین بستهی بعدی معرف دادههای منتقل‬
‫شده از حملهکننده به قربانی هستند‪ .‬برای نگاهی نزدیکتر به این دادهها‪ ،‬روی یکی از بستهها‬
‫(مثالً بستهی ‪ )9‬در این جریان کلیک راست کنید و ‪ Follow TCP Stream‬را انتخاب کنید‪.‬‬
‫همان طوری که در شکل ‪ 10-10‬نشان داده شده است‪ ،‬در خروجی این جریان درخواست‬
‫‪ GET‬آغازین‪ ،‬تغییر جهت ‪ ،302‬و دومین درخواست ‪ GET‬را میبینیم‪.‬‬
‫پس از این‪ ،‬مسائل شروع میکنند به عجیب و غریب شدن‪ .‬حملهکننده با مضمونی که شکلی‬
‫عجیب دارد به درخواست ‪ GET‬پاسخ میدهد که اولین بخش آن در شکل ‪ 11-10‬نشان داده‬
‫شده است‪.‬‬
‫به نظر میرسد که این مضمون یک سری از اعداد و حروف تصادفی در درون تگ‬
‫>‪ <script‬باشند ‪ .‬تگ >‪ <script‬در داخل ‪ HTML‬مورد استفاده قرار میگیرد تا استفاده‬

‫‪331‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫از یک زبان اسکریپتنویسی‪ 1‬سطح باالتر را نشان دهد‪ .‬شما بهطور معمول در داخل این تگ‬
‫انواع دستورهای اسکریپتنویسی را میبینید؛ ولی‪ ،‬این عبارت نامفهوم نشان میدهد که محتوا‬
‫و مضمون ممکن است رمزگذاری شده باشد تا آن را از کشف و شناسایی پنهان نماید‪ .‬از‬
‫آنجایی که ما میدانیم این یک ترافیک بهره¬کشی است‪ ،‬بنابراین‪ ،‬میتوانیم فرض کنیم که‬
‫این بخش مبهم از متن حاوی الیهگذاری مبنای شانزده‪ 2‬و کد پوسته‪ 3‬است تا عمالً از سرویس‬
‫آسیبپذیر بهرهبرداری نماید‪.‬‬

‫شکل ‪ :10-10‬جریان دادهی مخابره شده به کاربر‬

‫بخش دوم از مضمون فرستاده شده از حملهکننده در شکل ‪ 12-10‬نشان داده شده است‪.‬‬
‫سرانجام‪ ،‬پس از این متن رمزگذاری شده مقداری متن را میبینیم که قابل خواندن است‪.‬‬
‫حتی بدون داشتن دانش و آگاهی گسترده در برنامهنویسی میتوانیم ببینیم که به نظر میرسد‬

‫‪1‬‬
‫‪scripting language‬‬
‫‪2‬‬
‫‪hexadecimal padding‬‬
‫‪3‬‬
‫‪shellcode = shell code‬‬
‫‪332‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫این متن بر اساس چند متغیر معدود اقدام به تجزیهی رشته‪ 1‬میکند‪ .‬این آخرین بیت از متن‬
‫پیش از بستن تگ >‪ </script‬است‪.‬‬

‫شکل ‪ :11-10‬این بخش از محتوای فرستاده شده بهصورت کد گذاری نمایش داده شده ‪.‬‬

‫آخرین بخش از دادههای فرستاده شده از حملهکننده به کاربر دارای دو بخش است‪ .‬نخستین‬
‫بخش یک بخش است ‪.‬‬

‫>"‪<span id="vhQYFCtoDnOzUOuxAflDSzVMIHYhjJojAOCHNZtQdlxSPFUeEthCGdRtiIY‬‬

‫دومین بخش درون تگهای >‪ <span></span‬قرار گرفته و‬

‫‪<iframe‬‬
‫‪src=''infowTVeeGDYJWNfsrdrvXiYApnuPoCMjRrSZuKtbVgwuZCXwxKjtEclbPuJPPctc‬‬
‫>‪flhst-tMRrSyxl.gif" onload="WisgEgTNEfaONekEqaMyAUALLMYW(event)"/‬‬

‫‪1‬‬
‫‪string parsing‬‬
‫‪333‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫شکل ‪ :12-10‬این بخش از محتوای فرستاده شده از سرور حاوی متن قابل خواندن و‬
‫یک ‪ iframe‬مشکوک است‪.‬‬

‫است ‪ .‬باز هم این مضمون به سبب رشتههای بلند و تصادفی از متنی غیرقابل خواندن و‬
‫بالقوه مبهم میتواند نشانهای از یک فعالیت مخربانه باشد‪.‬‬
‫بخشی از کد که در درون تگ >‪ <span‬قرار دارد یک ‪ iframe‬است که یک روش رایج‬
‫مورد استفاده توسط حملهکنندهها است تا محتوای غیر منتظرهی افزوده را در یک صفحهی‬
‫‪ HTML‬درج کنند‪ .‬تگ >‪ <iframe‬یک بستهی دادهی درون برنامهای‪ 1‬را به وجود میآورد‬
‫که میتواند بدون کشف توسط کاربر باقی بماند‪ .‬در این مورد‪ ،‬تگ >‪ <iframe‬به یک فایل‬
‫‪ GIF‬اشاره میکند که به شکلی عجیب نامگذاری شده است‪ .‬همان طوری که در شکل ‪-10‬‬
‫‪ 13‬نشان داده شده است‪ ،‬زمانی که مرورگر قربانی ارجاع به این فایل را میبیند‪ ،‬یک‬
‫درخواست ‪ GET‬برای آن را در بستهی ‪ 21‬انجام میدهد ‪ ،‬و این ‪ GIF‬بالفاصله به دنبال‬

‫‪1‬‬
‫‪inline frame‬‬
‫‪334‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫آن فرستاده میشود ‪ .‬این ‪ GIF‬احتماالً برای آن مورد استفاده قرار گرفته است تا به نوعی‬
‫برنامهی بهره¬کشی را فعال نماید که از قبل در دستگاه قربانی دانلود شده است‪.‬‬

‫شکل ‪ GIF :13-10‬تصریح شده در ‪ iframe‬توسط قربانی درخواست و دانلود شده است‪.‬‬

‫عجیب و غریبترین بخش این ربایش در بستهی ‪ 25‬رخ میدهد؛ یعنی‪ ،‬زمانی که قربانی در‬
‫پورت ‪ 4321‬یک اتصال را با حملهکننده انجام میدهد‪ .‬مشاهدهی این جریان دومِ ارتباط در‬
‫قسمت ‪ Packet Details‬اطالعات چندانی را حاصل نمیکند؛ بنابراین‪ ،‬بار دیگر جریان ‪TCP‬‬
‫ارتباط را مشاهده کنید تا از دادههای مراوده شده تصویر شفافتری را به دست آورید‪ .‬شکل‬
‫‪ 14-10‬خروجی پنجرهی ‪ TCP Stream‬را نشان میدهد‪.‬‬

‫شکل ‪ :14-10‬حملهکننده از طریق این ارتباط در حال تعامل با یک پوستهی فرمان‪ 1‬است‪.‬‬

‫‪1‬‬
‫‪command shell‬‬
‫‪335‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫در این تصویر چیزی را میبینیم باید آالرمهای فوری را به کار اندازد‪ :‬یک پوستهی فرمان‬
‫‪ . Windows‬این پوسته از قربانی به سرور فرستاده شده است و نشان میدهد که تالش‬
‫بهرهکشی حملهکننده موفق گشته و بار تخلیهشده است‪ :‬کاربر بهمحض آغاز بهرهکشی یک‬
‫پوستهی فرمان را فرستاده است‪ .‬در این ربایش‪ ،‬حتی میتوانیم ببینیم که حملهکننده با به‬
‫وجود آوردن این دستور در حال تعامل با قربانی است ‪ ‬تا یک دایرکتوری را ببیند که در‬
‫دستگاه قربانی فهرستنویسی میکند ‪.‬‬
‫یک حملهکننده با دسترسی به این پوستهی فرمان دارای دسترسی اجرایی نامحدود به دستگاه‬
‫قربانی است و بهواقع میتواند هر کاری که دلش میخواهد را انجام دهد‪ .‬تنها با یک کلیک‬
‫و ظرف چند ثانیه‪ ،‬قربانی کل کنترل دستگاهش را به حملهکننده داده است‪.‬‬
‫بهرهکشیهایی نظیر این بهطور معمول رمزگذاری میشوند تا به هنگام حرکت در کابل‬
‫غیرقابل تشخیص باشند و به این ترتیب از قطع شدن توسط ‪ IDS‬شبکه پیشگیری شود‪ .‬در‬
‫نتیجه‪ ،‬بدون دانش و آگاهی قبلی از این بهرهکشی و یا حتی از برنامهی بهرهکشی‪ ،‬تشخیص‬
‫این امر میتواند دشوار باشد که بدون تحلیل بیشتر بتوان گفت چه چیزی در سیستم قربانی‬
‫در حال رخ دادن است‪ .‬خوشبختانه‪ ،‬ما توانستیم بعضی از نشانههای کد مخرب را در این‬
‫ربایش بسته پیدا کنیم‪ .‬این نشانه شامل متن مبهم در تگهای >‪ iframe ،<script‬عجیب و‬
‫غریب‪ ،‬و پوستهی فرمان مشاهده شده بهصورت ‪ plaintext‬است‪.‬‬
‫در اینجا بهطور خالصه بیان میشود که چگونه بهرهکشی ‪ Aurora‬عمل میکند‪:‬‬
‫‪ ‬قربانی یک نامهی الکترونیک هدفگذاری شده را از طرف حملهکننده دریافت‬
‫میکند که مشروع به نظر میرسد‪ ،‬و بر روی لینکی در آن کلیک میکند‪ ،‬و یک‬
‫درخواست ‪ GET‬را به سایت مخرب متعلق به حملهکننده میفرستد‪.‬‬

‫‪336‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫‪ ‬سرور وب حملهکننده یک تغییر جهت ‪ 302‬را برای قربانی صادر میکند‪ ،‬و مرورگر‬
‫قربانی بهطور خودکار یک درخواست ‪ GET‬را به این ‪ URL‬تغییر جهت داده شده‬
‫صادر میکند‪.‬‬
‫‪ ‬سرور وب حملهکننده یک صفحهی وب را مخابره میکند که حاوی کد‬
‫‪ JavaScript‬مبهم برای کاربر است و شامل بهرهکشی از آسیبپذیری و یک‬
‫‪ iframe‬حاوی لینکی به یک عکس ‪ GIF‬مخرب است‪.‬‬
‫‪ ‬قربانی درخواست ‪ GET‬را برای این تصویر مخرب صادر میکند و آن را از سرور‬
‫دانلود مینماید‪.‬‬
‫‪ ‬کد جاوا اسکریپتی که پیشتر ارسال شده بود با استفاده از این ‪ GIF‬مخرب ابهامزدایی‬
‫میشود و این کد در دستگاه قربانی اجرا میگردد؛ کدی که از یک آسیبپذیری‬
‫در ‪ Internet Explorer‬بهرهبرداری میکند‪.‬‬
‫‪ ‬بهمحض آنکه این آسیبپذیری مورد بهرهکشی قرار گیرد‪ ،‬بار مخفی شده در درون‬
‫کد مبهم شده اجرا میشود و نشست جدیدی را از قربانی به حملهکننده در پورت‬
‫‪ 4321‬باز مینماید‪.‬‬
‫‪ ‬یک پوستهی فرمان از بازتولید میشود و به حملهکننده بازگردانده میشود؛ بهطوری‬
‫که حملهکننده میتواند با آن تعامل داشته باشد‪.‬‬
‫از منظر یک مدافع‪ ،‬ما میتوانیم از این فایل ربایش بهمنظور ایجاد امضایی برای ‪IDS‬مان‬
‫استفاده کنیم که میتواند به ربایش بیشترِ رخ دادنهای این حمله کمک نماید‪ .‬برای مثال‪،‬‬
‫میتوانیم یک بخش متن درهم نشده از ربایش – مثالً کد ‪ plaintext‬در انتهای متن درهم شده‬
‫در تگ >‪ – <script‬را فیلتر کنیم‪ .‬رشته افکار دیگر میتواند نوشتن امضایی برای کل‬
‫ترافیک ‪ HTTP‬با یک تغییر جهت ‪ 302‬به سایتی با ‪ info‬در ‪ URL‬باشد‪ .‬این امضا برای آنکه‬

‫‪33۷‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫در یک محیط تولید پایدار و ماندنی باشد نیازمند قدری تنظیم اضافه است‪ ،‬ولی این شروعی‬
‫خوب است‪.‬‬

‫نکته‪ :‬توانایی در به وجود آوردن امضاها بر اساس نمونههای ترافیک مخرب یک گام بسیار‬
‫مهم و حیاتی برای کسی است که تالش میکند تا از یک شبکه در برابر تهدیدات ناشناس‬
‫دفاع نماید‪ .‬ربایشهایی نظیر آنچه در اینجا شرح داده شد راهی عالی برای توسعهی مهارتها‬
‫در نوشتن آن امضاها هستند‪ .‬برای فراگرفتن بیشتر دربارهی کشف نفوذ و امضاهای حمله‪،‬‬
‫پروژهی ‪ Snort‬را در ‪ http://www.snort.org/‬مالحظه نمایید‪.‬‬

‫آلوده کردن حافظه ‪ARP‬‬


‫‪1‬‬
‫در فصل ‪ ،2‬آلوده کردن حافظه ‪ ARP‬بهعنوان راهی برای ‪ Tap‬کردن در کابل و استراق سمع‬
‫ترافیک از میزبانهایی است که ممکن است نیاز به تحلیل بستههایشان داشته باشید‪ .‬آلوده‬
‫کردن حافظه ‪ ARP‬میتواند برای یک مهندس شبکه ابزاری مؤثر و سودمند باشد‪ .‬اما‪ ،‬زمانی‬
‫که با نیتی مخربانه مورد استفاده قرار بگیرد‪ ،‬همچنین میتواند شکلی بسیار خطرناک از‬
‫حملهی فردی در میان‪ 2‬باشد‪.‬‬
‫در یک حملهی ‪ ،MITM‬حملهکننده جهت ترافیک را بین دو میزبان تغییر میدهد تا ترافیک‬
‫را استراق سمع کند یا تغییر دهد‪ .‬شکلهای زیادی از حمالت ‪ MITM‬وجود دارد که از آن‬
‫جمله میتوان به سرقت نشست‪ ،3‬جعل ‪ ،4 DNS‬و سرقت ‪ 5 SSL‬اشاره کرد‪.‬‬
‫آلوده کردن حافظه ‪ ARP‬به این سبب عمل میکند که دو بستهی ‪ ARP‬که بهطور ویژه ساخته‬
‫شدهاند به دو میزبان حقه میزنند و آنها فکر میکنند که با هم در ارتباط هستند و این در‬

‫‪1‬‬
‫‪intercept‬‬
‫‪2‬‬
‫‪Man-in-the-middle attack = MITM attack‬‬
‫‪3‬‬
‫‪session hijacking‬‬
‫‪4‬‬
‫‪DNS spoofing‬‬
‫‪5‬‬
‫‪SSL hijacking‬‬
‫‪338‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫حالی است که در واقع آنها با شخص ثالثی در ارتباط هستند که در حال رله کردن بستهها‬
‫بهعنوان واسطه است‪.‬‬
‫فایل ‪ arppoison.pcap‬حاوی مثالی از آلوده کردن حافظه ‪ ARP‬است‪ .‬وقتی آن را باز کنید‪،‬‬
‫در اولین نگاه خواهید دید که این ترافیک عادی به نظر میرسد‪ .‬اما‪ ،‬اگر بستهها را دنبال کنید‬
‫قربانیمان – ‪ – 172.160.0.107‬را خواهید دید که در حال مرورگری ‪ Google‬و اجرای‬
‫یک جستجو است‪ .‬در نتیجهی این جستجو‪ ،‬مقدار قابل توجهی ترافیک ‪ HTTP‬با قدری‬
‫پرس و جوی ‪ DNS‬مخلوط شده در آن وجود دارد‪.‬‬
‫میدانیم که آلوده کردن حافظه ‪ ARP‬تکنیکی است که در الیهی ‪ 2‬رخ میدهد؛ بنابراین‪،‬‬
‫اگر ما فقط بهطور تصادفی بستهها را در قسمت ‪ Packet List‬مورد بررسی قرار دهیم‪ ،‬آنگاه‬
‫دیدن هرگونه خطایی میتواند دشوار باشد‪ .‬برای آنکه به ما کمک شود‪ ،‬چند ستون را بهقرار‬
‫زیر به قسمت ‪ Packet List‬اضافه خواهیم کرد‪.‬‬
‫‪ Edit ► Preferences .1‬را انتخاب کنید‪.‬‬
‫‪ .2‬بر روی ‪ Columns‬در سمت چپ پنجرهی ‪ Preferences‬کلیک نمایید‪.‬‬
‫‪ .3‬بر روی ‪ Add‬کلیک کنید‪.‬‬
‫‪ .4‬عبارت ‪ Source MAC‬را تایپ کنید و سپس ‪ Enter‬را بزنید‪.‬‬
‫‪ .5‬در فهرست کشویی‪ ،Field type 1‬عبارت )‪ Hw src addr (resolved‬را انتخاب‬
‫کنید‪.‬‬
‫‪ .6‬بر روی این ورودی تازه اضافه شده کلیک کنید‪ ،‬و آن را با موس روی صفحه‬
‫بکشید تا مستقیماً پس از ستون ‪ Source‬قرار بگیرد‪.‬‬
‫‪ .۷‬بر روی ‪ Add‬کلیک کنید‪.‬‬
‫‪ .8‬عبارت ‪ Dest MAC‬را تایپ کنید و ‪ Enter‬را بزنید‪.‬‬

‫‪1‬‬
‫‪drop-down list‬‬
‫‪339‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫‪ .9‬در فهرست کشویی ‪ ،Field type‬عبارت )‪ Hw des addr (resolved‬را انتخاب‬


‫کنید‪.‬‬
‫‪ .10‬بر روی این ورودی تازه اضافه شده کلیک کنید‪ ،‬و آن را با موس روی صفحه‬
‫بکشید تا مستقیماً پس از ستون ‪ Destination‬قرار بگیرد‪.‬‬
‫‪ .11‬برای اعمال این تغییرات بر روی ‪ OK‬کلیک کنید‪.‬‬
‫پس از تکمیل این مراحل‪ ،‬صفحهی نمایشگر شما باید شبیه شکل ‪ 15-10‬باشد‪ .‬اکنون باید‬
‫دو ستون دیگر داشته باشید که آدرس ‪ MAC‬مبدأ و مقصد بستهها را نشان میدهند‪.‬‬

‫شکل ‪ :15-10‬صفحهی پیکربندی ستون با ستونهای تازه اضافه شده برای آدرسهای سختافزار مبدأ و مقصد‬

‫اگر هنوز تفکیک نام ‪ MAC‬شما روشن است‪ ،‬باید ببینید که دستگاههای در حال ارتباط‬
‫دارای آدرسهای ‪MAC‬ای باشند که سختافزارهای ‪ Dell‬و ‪ Cisco‬را نشان دهند‪ .‬به یاد‬
‫داشتن این مسئله بسیار مهم است‪ ،‬زیرا همچنان که در میان ربایش جستجو میکنیم‪ ،‬این در‬
‫بستهی ‪ 54‬تغییر پیدا میکند و در آن هنگام‪ ،‬رخ دادن ترافیک ‪ ARP‬عجیب و غریبی را‬

‫‪340‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫میبینیم که بین میزبان ‪( Dell‬قربانی ما) و یک میزبان ‪ HP‬تازه معرفی شده (حملهکننده)‬
‫واقع میشود (همان طوری که در شکل ‪ 16-10‬نشان داده شده است)‪.‬‬

‫شکل ‪ :16-10‬ترافیک عجیب ‪ ARP‬بین دستگاه ‪ Dell‬و یک دستگاه ‪HP‬‬

‫پیش از آنکه بیشتر به پیش برویم‪ ،‬به نقاط انتهایی دخیل در این ارتباط توجه داشته باشید که‬
‫در جدول ‪ 3-10‬فهرست شدهاند‪.‬‬

‫جدول ‪ :3-10‬نقاط انتهایی پایش شده‬

‫ولی چه چیزی این ترافیک را عجیب و غریب میکند؟ از بحث ما در خصوص ‪ ARP‬در‬
‫فصل ‪ 6‬به خاطر آورید که دو نوع اصلی از بستههای ‪ ARP‬وجود دارد‪ :‬بستهی درخواست و‬
‫بستهی پاسخ‪ .‬بستهی درخواست بهعنوان یک ‪ broadcast‬به همهی میزبانها در شبکه فرستاده‬
‫میشود تا دستگاهی پیدا شود که دارای آدرس ‪ MAC‬مرتبط با آدرس ‪ IP‬بخصوص است‪.‬‬
‫سپس پاسخ بهعنوان یک ‪ unicast‬از دستگاهی فرستاده میشود که به دستگاهی پاسخ میدهد‬
‫که درخواست را مخابره کرده است‪ .‬با این پس زمینه میتوانیم چند چیز عجیب و غریب را‬
‫در این توالی ارتباط شناسایی نماییم (به شکل ‪ 16-10‬مراجعه کنید)‪.‬‬
‫نخست‪ ،‬بستهی ‪ 54‬یک درخواست ‪ ARP‬از حملهکننده (با آدرس ‪ MAC‬بهقرار‬
‫‪ )00:25:b3:bf:91:ee‬بهعنوان یک بستهی ‪ unicast‬است که مستقیماً به قربانی (با آدرس‬

‫‪341‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫‪ MAC‬بهقرار ‪ )00:21:70:c0:56:f0‬فرستاده شده ‪ .‬این نوع از درخواست باید به همهی‬


‫میزبانها در شبکه ‪ broadcast‬شود‪ ،‬ولی این مستقیماً قربانی را هدف میگیرد‪ .‬همچنین‪ ،‬توجه‬
‫داشته باشید که اگرچه این بسته از حملهکننده فرستاده شده است و در سرآیند ‪ ARP‬دارای‬
‫آدرس ‪ MAC‬حملهکننده است‪ ،‬ولی بهجای آدرس ‪ IP‬خودش‪ ،‬آدرس ‪ IP‬مسیریاب را ثبت‬
‫میکند‪.‬‬
‫به دنبال این بسته یک پاسخ از قربانی به حملهکننده وجود دارد که حاوی اطالعات آدرس‬
‫‪MAC‬اش است ‪ .‬اینجا جادوی واقعی در بستهی ‪ 56‬رخ میدهد‪ ،‬یعنی زمانی که‬
‫حملهکننده بستهای را با یک پاسخ ‪ ARP‬درخواست نشده به قربانی میفرستد که به او‬
‫میگوید ‪ 172.16.0.1‬در ‪ MAC‬به آدرس ‪ 00:25:b3:bf:91:ee‬قرار دارد ‪ .‬مسئله آن‬
‫است که آدرس ‪ MAC‬بهقرار ‪ 172.16.011‬آدرس ‪ 00:25:b3:bf:91:ee‬نیست‪ ،‬بلکه‬
‫‪ 00:26:0b:31:07:33‬است‪ .‬ما این را میدانیم‪ ،‬زیرا مسیریاب را در ‪ 172.16.0.1‬دیدیم که‬
‫پیشتر با قربانی در ربایش بسته ارتباط برقرار میکرد‪ .‬از آنجایی که پروتکل ‪ ARP‬ذاتاً ناایمن‬
‫است (بهنگامسازیهای درخواست نشده به جدول ‪ARP‬اش را میپذیرد)‪ ،‬بنابراین‪ ،‬اکنون‬
‫قربانی ترافیکی را خواهد فرستاد که باید بهجای حملهکننده به مسیریاب میرفت‪.‬‬

‫نکته‪ :‬از آنجایی که این ربایش بسته از دستگاه قربانی گرفته شده است‪ ،‬بنابراین شما عمالً‬
‫کل تصویر را نمیبینید‪ .‬برای عملی شدن این حمله‪ ،‬حملهکننده باید همین توالی بستهها را به‬
‫مسیریاب بفرستد تا به این شکل فریبش بدهد که حملهکننده بهواقع همان قربانی است‪ ،‬ولی‬
‫ما برای دیدن آن بستهها نیاز به آن خواهیم داشت تا ربایش بستهی دیگری را از مسیریاب (یا‬
‫حملهکننده) انجام دهیم‪.‬‬
‫بهمحض آنکه هر دو طرف فریب بخورند‪ ،‬همان طوری که در شکل ‪ 1۷-10‬نشان داده شده‬
‫است‪ ،‬ارتباط بین قربانی و مسیریاب از طریق حملهکننده جریان پیدا میکند‪.‬‬

‫‪342‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫شکل ‪ :1۷-10‬آلوده کردن کش ‪ ARP‬بهصورت حملهی ‪MITM‬‬

‫بستهی ‪ 5۷‬موفقیت این حمله را تصدیق میکند‪ .‬وقتی این بسته را با بستهی فرستاده شده قبل‬
‫از ترافیک عجیب ‪ – ARP‬مانند بستهی ‪( 40‬شکل ‪ 18-10‬را ببینید) – مقایسه کنید‪ ،‬خواهید‬
‫دید که آدرس ‪ IP‬سرور دور (‪ )Google‬بدون تغییر باقی میماند ‪ ،‬ولی آدرس ‪MAC‬‬
‫هدف تغییر پیدا کرده است ‪ .‬این تغییر در آدرس ‪ MAC‬به ما میگوید که ترافیک اکنون‬
‫از طریق حملهکننده و قبل از آنکه به مسیریاب برسد مسیرگزینی شده است‪.‬‬
‫از آنجایی که این حمله خیلی دقیق و ماهرانه است‪ ،‬بنابراین‪ ،‬کشف و شناسایی آن بسیار‬
‫دشوار است‪ .‬برای یافتن آن‪ ،‬بهطور معمول به کمک یک ‪ IDS‬نیاز دارید که بهطور خاص‬
‫برای توجه به آن پیکربندی شده باشد و یا نرمافزاری که روی دستگاههای طراحی شده برای‬
‫کشف و شناسایی تغییرات ناگهانی در ورودیهای جدول ‪ ARP‬اجرا شود‪ .‬از آنجایی که به‬
‫احتمال بسیار زیاد برای ربایش بستهها در شبکهای که تحلیل میکنید از آلوده کردن حافظه‬

‫‪343‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫‪ ARP‬استفاده خواهید کرد‪ ،‬بنابراین‪ ،‬مهم است که بدانید چگونه این تکنیک همچنین‬
‫میتواند بر علیه خودتان نیز استفاده شود‪.‬‬

‫شکل ‪ :18-10‬تغییر در آدرس ‪ MAC‬هدف نشان دهندهی موفقیت این حمله است‪.‬‬

‫‪344‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫تروجان دسترسی از راه دور‬


‫تا به اینجا رخدادهای امنیتی را با قدری دانش و آگاهی که از پیش از بررسی ربایش داشتیم‬
‫مورد بررسی قرار دادیم‪ .‬این یک راه عالی برای آن است که بفهمیم حمالت چه شکلی‬
‫دارند‪ ،‬ولی این دنیایی خیلی واقعی نیست‪ .‬در اغلب سناریوهای دنیای واقعی‪ ،‬افرادی که‬
‫عهدهدار دفاع از شبکه هستند همهی بستههایی که از شبکه میگذرند را مورد بررسی قرار‬
‫نمیدهند‪ ،‬بلکه از نوعی ‪ IDS‬استفاده میکنند تا به آنها در مورد ناهنجاری در ترافیک شبکه‬
‫هشدار دهد؛ هشداری که بر پایهی امضای از پیش تعریف شدهی حمله‪ ،‬متضمن بررسی بیشتر‬
‫است‪.‬‬
‫در مثال بعدی با هشداری ساده آغاز خواهیم کرد‪ ،‬انگار که مشغول تحلیل در دنیای واقعی‬
‫هستیم‪ .‬در این مورد‪ IDS ،‬ما این هشدار را تولید میکند‪:‬‬

‫گام بعدی ما این قانون امضای فعال شده توسط این هشدار خواهد بود‪:‬‬

‫این قانون برای آن وضع شده که هر زمان میبیند بستهای از هر شبکهای وارد شبکهی داخلی‬
‫میشود که دارای محتوای هگزادسیمال ‪ 41 4E 41 42 49 4C 47 49 7C‬است هشدار دهد‪.‬‬
‫این محتوا در ‪ ASCII‬قابل خواندن برای انسان به ‪ ANA BILGI‬تبدیل میشود‪ .‬وقتی کشف‬
‫شود‪ ،‬یک هشدار داده میشود که بر حضور احتمالی تروجان دسترسی از راه دور‬
‫‪ CyberEYE‬تأکید مینماید‪ .‬تروجانهای دسترسی از راه دور برنامههایی مخرب هستند که‬
‫در کامپیوتر قربانی بی سر و صدا اجرا میشوند و دوباره با حملهکننده ارتباط برقرار میکنند‪،‬‬
‫بهطوری که حملهکننده میتواند از راه دور دستگاه قربانی را اداره کند‪.‬‬

‫‪345‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫نکته‪ CyberEYE :‬یک ابزار رایج ساخته شده در ترکیه است که برای ایجاد ‪ RAT‬قابل اجرا‬
‫و اداره کردن میزبانهای لو رفته مورد استفاده قرار میگیرد‪ .‬قانون ‪ Snort‬که در اینجا دیده‬
‫شده در رشتهی ‪ ANA BILGI‬فعال میشود که عبارت ترکی برای ‪BASIC‬‬
‫‪( INFORMATION‬اطالعات پایه) است‪.‬‬

‫اکنون قدری ترافیک مرتبط با هشدار در فایل ‪ ratinfected.pcap‬نگاهی خواهیم کرد‪ .‬این‬
‫هشدار ‪ Snort‬بهطور معمول تنها بستهی منفردی را ربایش میکند که این هشدار را فعال کرده‬
‫است‪ ،‬ولی خوشبختانه‪ ،‬ما کل توالی ارتباط بین میزبانهای دخیل را در اختیار داریم‪ .‬بهمنظور‬
‫جهش تا نقطهی اصلی‪ ،‬به ترتیبی که در زیر آورده شده است به دنبال رشتهی هگزادسیمال‬
‫ذکر شده در قانون ‪ Snort‬بگردید‪:‬‬
‫‪ Edit ► Find Packet .1‬را انتخاب کنید‪.‬‬
‫‪ .2‬دکمه رادیوی ‪ Hex Value‬را انتخاب کنید‪.‬‬
‫‪ .3‬مقدار ‪ 41 4E 41 42 49 4C 47 49 7C‬را در منطقهی متن وارد کنید‪.‬‬
‫‪ .4‬روی ‪ Find‬کلیک کنید‪.‬‬
‫همان طوری که در شکل ‪ 19-10‬نشان داده شده است‪ ،‬اکنون باید نخستین رخ دادن رشتهی‬
‫باال را در بخش دادههای بستهی ‪ 4‬ببینید ‪.‬‬

‫شکل ‪ :19-10‬رشتهی مضمون در هشدار ‪ Snort‬برای نخستین بار اینجا در بستهی ‪ 4‬دیده شده است‬

‫‪346‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫اگر ‪ Edit ► Find Next‬را چند بار دیگر انتخاب کنید‪ ،‬آنگاه خواهید دید که این رشته در‬
‫بستههای ‪ ،531 ،405 ،280 ،156 ،32 ،10 ،5‬و ‪ 652‬نیز رخ میدهد‪ .‬اگرچه کل ارتباط در این‬
‫فایل ربایش بین حملهکننده ‪ 172.16.0.111‬و قربانی ‪ 172.16.0.114‬است‪ ،‬ولی ظاهرش به‬
‫مانند نمونههایی از رشته است که در گفتگوهای متفاوتی رخ میدهد‪ .‬در حالی که بستههای‬
‫‪ 4‬و ‪ 5‬با استفاده از پورتهای ‪ 4433‬و ‪ 6641‬ارتباط برقرار میکنند‪ ،‬ولی اغلب نمونههای‬
‫دیگر بین پورت ‪ 4433‬و سایر پورتهای موقت‪ 1‬دیگری رخ میدهند که بهطور تصادفی‬
‫انتخاب شدهاند‪ .‬همان طوری که در شکل ‪ 20-10‬نشان داده شده است‪ ،‬با نگاه کردن به تبِ‬
‫‪ TCP‬از پنجرهی ‪ Conversations‬میتوانیم تصدیق کنیم که چندین گفتگو وجود دارد‪.‬‬

‫شکل ‪ :20-10‬سه گفتگوی متمایز بین حملهکننده و قربانی وجود دارد‪.‬‬

‫بهطور چشمی میتوانیم گفتگوهای متمایز در این فایل ربایش را با رنگ کردنشان بهقرار زیر‬
‫تفکیک نماییم‪:‬‬
‫‪ .1‬در دیالوگ فیلتر در باالی قسمت ‪ ،Packet List‬عبارت )‪(tcp.flags.syn == 1‬‬
‫)‪ && (tcp.flags.ack == 0‬را تایپ کنید‪ .‬سپس بر روی ‪ Apply‬کلیک کنید‪ .‬این‬
‫کار بستهی ‪ SYN‬آغازین را برای هر گفتگو در ترافیک انتخاب خواهد کرد‪.‬‬
‫‪ .2‬روی نخستین بسته کلیک راست کنید و ‪ Colorize Conversation‬را انتخاب کنید‪.‬‬

‫‪1‬‬
‫‪ephemeral ports‬‬
‫‪34۷‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫‪ TCP .3‬را انتخاب کنید‪ ،‬و سپس رنگی را انتخاب نمایید‪.‬‬


‫‪ .4‬این فرآیند را برای بقیهی بستههای ‪ SYN‬تکرار کنید و برای هر کدام رنگی جداگانه‬
‫را انتخاب کنید‪.‬‬
‫‪ .5‬زمانی که این کار پایان یافت‪ ،‬بر روی ‪ Clear‬کلیک کنید تا فیلتر پاک شود‪.‬‬
‫با رنگ کردن گفتگوها میتوانیم ببینیم که چگونه با یکدیگر مرتبط میشوند‪ ،‬و این کار به‬
‫ما کمک میکند تا فرآیند ارتباط بین این دو میزبان را بهتر دنبال کنیم‪ .‬نخستین گفتگو‬
‫(پورتهای‪ )6641/4433‬جایی است که ارتباط بین این دو میزبان آغاز میشود‪ ،‬و بنابراین‬
‫مکان خوبی برای شروع است‪ .‬روی یکی از بستهها در این گفتگو کلیک راست کنید و‬
‫‪ Follow TCP Stream‬را انتخاب کنید تا دادههای مخابره شده را ببینید (همان طوری که در‬
‫شکل نشان داده ‪ 21-10‬شده است)‪.‬‬
‫بالفاصله‪ ،‬مشاهده میکنیم که رشتهی متن ‪ ANABILGI | 556‬از حملهکننده به قربانی فرستاده‬
‫شده است ‪ .‬در نتیجه‪ ،‬قربانی با نوعی اطالعات سیستم پایه – از جمله نام کامپیوتر‬
‫)‪ (CSANDERS-6F7F77‬و سیستم عامل مورد استفاده )‪(Windows XP Service Pack 3‬‬
‫– پاسخ میدهد ‪ ،‬و شروع میکند به مخابرهی همان رشتهی ?‪ BAGLIMI‬به حملهکننده‬
‫‪ .‬تنها برگشت ارتباط از حمله رشتهی ‪ CAPSCREEN60‬است ‪ ‬که شش بار ظاهر‬
‫میشود‪.‬‬
‫این رشتهی ‪ CAPSCREEN60‬برگردانده شده توسط حملهکننده جالب توجه است؛ بنابراین‪،‬‬
‫بیایید ببینیم به کجا هدایت میکند‪ .‬برای انجام این کار‪ ،‬دوباره با استفاده از دیالوگ جستجو‬
‫که گزینهی ‪ String‬را تصریح میکند به دنبال رشتهی متنی در داخل بستهها میگردیم‪.‬‬

‫‪348‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫شکل ‪ :21-10‬نخستین گفتگو نتایج جالبی را حاصل میکند‪.‬‬

‫بهمحض اجرای این جستجو‪ ،‬نخستین نمونه از این رشته را در بستهی ‪ 2۷‬پیدا میکنیم‪ .‬نکتهی‬
‫فریبنده دربارهی این اطالعات آن است که بمجرد فرستاده شدن این رشته از حملهکننده به‬
‫کاربر‪ ،‬کاربر وصول این بسته را تصدیق میکند‪ ،‬و یک گفتگوی جدید در بستهی ‪ 29‬آغاز‬
‫میشود‪.‬‬
‫اکنون‪ ،‬اگر خروجی جریان ‪ TCP‬این گفتگوی جدید را دنبال کنیم (همان طوری که در‬
‫شکل ‪ 22-10‬نشان داده شده است)‪ ،‬آنگاه رشتهی آشنای ‪ ANABILGI | 12‬را خواهیم دید‬
‫که به دنبال آن رشتهی ‪ ،SH | 556‬و در نهایت‪ ،‬رشتهی | ‪CAPSCREEN‬‬
‫‪ C:\WINDOWS\jpgehook.dat | 84972‬قرار دارد ‪ .‬به مسیر فایل تصریح شده پس از‬
‫رشتهی ‪ CAPSCREEN‬توجه کنید که به دنبال آن متن غیر قابل خواندن آمده است‪.‬‬
‫جالبترین چیز در اینجا آن است که متن غیر قابل خواندن به ابتدای رشتهی ‪ JFIF‬متصل شده‬

‫‪349‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫است ‪ ‬که یک جستجوی سریع ‪ Google‬به شما میگوید که در ابتدای فایلهای ‪JPG‬‬
‫یافت میشود‪.‬‬
‫در این نقطه‪ ،‬میتوان نتیجهگیری کرد که حملهکننده برای انتقال این تصویر ‪ JPG‬این گفتگو‬
‫را راه انداخته است‪ .‬ولی حتی از آن مهمتر‪ ،‬ما شروع میکنیم به دیدن یک ساختار فرمان که‬
‫از این ترافیک استنتاج میشود‪ .‬به نظر میرسد که ‪ CAPSCREEN‬یک دستور فرستاده شده‬
‫توسط حملهکننده است تا انتقال این تصویر ‪ JPG‬را آغاز کند‪ .‬در واقع‪ ،‬هرگاه دستور‬
‫‪ CAPSCREEN‬فرستاده شده‪ ،‬نتیجه یکی بوده است‪ .‬برای تصدیق این موضوع‪ ،‬رشتهی هر‬
‫گفتگو را مشاهده نمایید‪ ،‬یا ویژگی ترسیم نمودار ‪ IO‬برنامهی ‪ Wireshark‬را بهقرار زیر‬
‫امتحان کنید‪:‬‬

‫‪ Statistics ► IO Graphs .1‬را انتخاب کنید‪.‬‬


‫‪ .2‬فیلترهای ‪tcp.stream ،tcp.stream eq 4 ،tcp.stream eq 3 ،tcp.stream eq 2‬‬
‫‪ eq 5‬و ‪ tcp.stream eq 6‬را بترتیب در دیالوگهای پنج فیلتر درج کنید‪.‬‬
‫‪ .3‬روی دکمههای ‪ ،Graph 4 ،Graph 3 ،Graph 2 ،Graph 1‬و ‪ Graph 5‬کلیک‬
‫کنید تا نقاط داده را برای فیلترهای تعیین شده فعال نمایید‪.‬‬
‫‪ .4‬مقیاس محور ‪ y‬را به ‪ Bytes/Tick‬تغییر دهید‪.‬‬

‫شکل ‪ 23-10‬نمودار حاصله را نشان میدهد‪ .‬بر اساس این نمودار‪ ،‬به نظر میرسد هر‬
‫گفتگویی حاوی همان مقدار داده است و برای همان مقدار زمان رخ میدهد‪ .‬اکنون میتوانیم‬
‫نتیجهگیری کنیم که این فعالیت چندین بار تکرار میشود‪.‬‬

‫‪350‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫شکل ‪ :22-10‬به نظر میرسد که حملهکننده آغازگر درخواستی برای یک فایل ‪ JPG‬باشد‪.‬‬

‫شکل ‪ :23-10‬این نمودار نشان میدهد که به نظر میرسد همین فعالیت تکرار میشود‪.‬‬

‫‪351‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫همین االن هم ممکن است در ارتباط با محتوای تصویر ‪ JPG‬مورد ارسال ایدههایی داشته‬
‫باشید؛ پس بیایید ببینیم که آیا عمالً میتوانیم یکی از این فایلهای ‪ JPG‬را ببینیم یا نه‪ .‬بهمنظور‬
‫استخراج دادههای ‪ JPG‬از ‪ Wireshark‬مراحل زیر را اجرا کنید‪:‬‬
‫‪ .1‬نخست‪ ،‬جریان ‪ TCP‬بستههای مرتبط را همان طوری دنبال کنید که در متن قبل از‬
‫شکل ‪ 22-10‬شرح داده شد‪.‬‬
‫‪ .2‬سپس این ارتباط باید به گونهای مجزا شود که ما تنها دادههای جریان فرستاده شده‬
‫از قربانی تا حملهکننده را ببینیم‪ .‬این کار را با انتخاب کردن پیکان کنار منوی‬
‫کشویی انجام دهید که میگوید )‪ .Entire Conversation (85033 bytes‬اطمینان‬
‫حاصل کنید که ترافیک جهتدار صحیح را انتخاب کنید که ‪172.16.0.114:6643‬‬
‫)‪ --> 172.16.0.111:4433 (85020 bytes‬است‪.‬‬
‫‪ .3‬با انتخاب کردن دکمهی ‪ Save As‬این دادهها را ذخیره کنید و به این ترتیب اطمینان‬
‫حاصل کنید که فایل با پسوند ‪ .jpg‬را ذخیره نمایید‪.‬‬
‫اگر اکنون سعی کنید تا این تصویر را باز کنید‪ ،‬آنگاه ممکن است از اینکه باز نمیشود تعجب‬
‫نمایید‪ .‬این بدان سبب است که ما باید یک گام دیگر را نیز اجرا کنیم‪ .‬این ترافیک برخالف‬
‫سناریوی فصل ‪ – 8‬که در آن فایلی را به شکلی شسته و رفته از ترافیک ‪ FTP‬استخراج کردیم‬
‫– محتوایی اضافه را به دادههای واقعی میافزاید‪ .‬در این مورد‪ ،‬دو خط اول که در جریان‬
‫‪ TCP‬دیده میشوند عمالً بخشی از توالی فرمان تروجان است و نه بخشی از دادههایی که‬
‫تصویر ‪ JPG‬را شکل میدهند (شکل ‪ 24-10‬را ببینید)‪ .‬زمانی که این جریان را ذخیره کرده‬
‫باشیم‪ ،‬آنگاه این دادههای خارجی نیز ذخیره میشوند‪ .‬در نتیجه‪ ،‬برنامهی نمایش فایلی که به‬
‫دنبال سرآیند یک فایل ‪ JPG‬است محتوایی را میبیند که با آنچه انتظار دارد تطابق ندارد‪ ،‬و‬
‫بنابراین نمیتواند این تصویر را باز کند‪.‬‬

‫‪352‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫شکل ‪ :24-10‬دادههای خارجی اضافه شده توسط تروجان مانع از آن میشود که‬
‫تصویر بهدرستی باز شود‪.‬‬

‫درست کردن این مشکل کار بیدردسری است که نیازمند قدری دستکاری با یک‬
‫ویرایشگر هگزادسیمال‪ 1‬است‪ .‬این فرآیند ‪ file carving‬نامیده میشود‪ .‬در شکل ‪ ،25-10‬من‬
‫برای نشان دادن و برجسته کردن چندین بایت نخست از این فایل ‪ JPG‬از ‪ WinHex‬استفاده‬
‫کردهام‪ .‬شما باید این بایتها را حذف کنید و فایل تصویر را با استفاده از ویرایشگر‬
‫هگزادسیمال ذخیره نمایید‪ .‬این فایل باید با حذف دادههای غیر الزم باز شود‪ .‬اکنون باید‬
‫روشن شده باشد که تروجان در حال اجرای ربایش صفحهی نمایش‪ 2‬از دسکتاپ قربانی و‬
‫ارسال آن به حملهکننده است (شکل ‪ .)26-10‬پس از تکمیل این توالی ارتباط‪ ،‬این ارتباط با‬
‫یک توالی تفکیک ‪ TCP‬عادی تمام میشود‪ .‬این سناریو مثالی بارز از فرآیند اندیشه است‬

‫‪1‬‬
‫‪hex editor‬‬
‫‪2‬‬
‫‪screen capture‬‬
‫‪353‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫شکل ‪ :25-10‬حذف بایتهای خارجی و نامربوط از فایل ‪JPG‬‬

‫که یک تحلیلگر نفوذ در هنگام تجزیه و تحلیل ترافیک بر اساس هشدار ‪ IDS‬دنبال خواهد‬
‫کرد‪:‬‬
‫‪ ‬بررسی هشدار و امضایی که آن را فعال کرده‪.‬‬
‫‪ ‬تصدیق وجود عملی این امضا در متنی مناسب در ترافیک‪.‬‬
‫‪ ‬بررسی ترافیک برای فهمیدن اینکه حملهکننده با دستگاه در خطر افتاده چه کرده‬
‫است‪.‬‬
‫‪ ‬جلوگیری از مشکالت پیش از نَشت بیشتر هر گونه اطالعات حساس از قربانی که‬
‫اطالعات وی لو رفته است‪.‬‬

‫‪354‬‬
‫تحلیل بسته برای امنیت‬ ‫فصل دهم‬

‫شکل ‪ :26-10‬تصویر ‪ JPG‬تبدیل شده یک ربایش صفحهی نمایش از کامپیوتر قربانی است‪.‬‬

‫آخرین نظرات‬
‫همهی کتابها را میتوان در خصوص تقسیمبندی ربایشهای بسته در سناریوهای مرتبط با‬
‫امنیت‪ ،‬تحلیل حمالت رایج‪ ،‬و پاسخ دادن به هشدارهای ‪ IDS‬نوشت‪ .‬در این فصل پارهای از‬
‫انواع رایج اسکن و شمارهگذاری‪ ،‬یک حملهی ‪ MITM‬رایج‪ ،‬و دو مثال از چگونگی احتمال‬
‫بهره¬کشی از یک سیستم و آنچه در پی آن میتواند رخ دهد را مورد بررسی قرار دادیم‪.‬‬

‫‪355‬‬
‫فصل یازده‬
‫تحلیل بستهی بیسیم‬
‫تحلیل بسته بیسیم‬ ‫فصل یازدهم‬

‫تحلیل بستهی بیسیم‬


‫دنیای شبکهسازی بیسیم‪ 1‬قدری با شبکهسازی کابلی سنتی متفاوت است‪ .‬اگرچه هنوز با‬
‫پروتکلهای رایج ارتباطی – نظیر ‪ TCP‬و ‪ – IP‬سروکار داریم‪ ،‬ولی درزمانی که به پایینترین‬
‫سطح از مدل ‪ OSI‬میرسیم قدری فرق میکند‪ .‬در اینجا‪ ،‬الیهی پیوند داده‪ 2‬به سبب ماهیت‬
‫شبکهسازی بیسیم و الیهی فیزیکی‪ 3‬دارای اهمیت ویژهای است‪ .‬این امر محدودیتهای‬
‫تازهای را بر دادههایی که به آنها دسترسی پیدا میکنیم (و چگونگی ربایش کردن آنها)‬
‫فرض میکند‪.‬‬
‫با توجه به این مالحظاتِ افزوده‪ ،‬جای تعجب نیست که یک فصل کامل از این کتاب به‬
‫ربایش و تحلیل بسته در شبکههای بیسیم تخصیص داده شود‪ .‬در این فصل‪ ،‬این مسئله را‬
‫مورد بحث قرار خواهیم داد که دقیقاً چرا وقتی نوبت به تحلیل بسته میرسد‪ ،‬شبکههای بیسیم‬
‫منحصر به فرد هستند‪ ،‬و چگونه باید بر چالشهای آن فائق آمد‪ .‬مسلماً‪ ،‬ما این کار را با نگاه‬
‫کردن به مثالهای عملی واقعی از ربایشهای شبکهی بیسیم انجام خواهیم داد‪.‬‬

‫مالحظات فیزیکی‬
‫محیط فیزیکی انتقال و مخابره نخستین چیزی است که باید دربارهی ربایش و تحلیل دادههای‬
‫مخابره شده از طریق یک شبکهی بیسیم مورد نظر و توجه قرار بگیرد‪ .‬تا به اینجا ما الیهی‬
‫فیزیکی را مورد توجه قرار ندادیم‪ ،‬زیرا از طریق سیمکشی فیزیکی ارتباط برقرار میکردیم‪.‬‬
‫اکنون از طریق امواج رادیویی ارتباط برقرار میکنیم و بستهها مستقیماً به طرف ما پرواز‬
‫میکنند‪.‬‬

‫‪1‬‬
‫‪wireless networking‬‬
‫‪2‬‬
‫‪data link layer‬‬
‫‪3‬‬
‫‪physical layer‬‬
‫‪358‬‬
‫تحلیل بسته بیسیم‬ ‫فصل یازدهم‬

‫شنود یک کانال در هر بار‬


‫منحصر به فردترین مالحظه در زمان ربایش ترافیک از یک شبکهی بیسیم محلی‪WLAN 1‬‬
‫آن است که طیف بیسیم یک محیط مشترک است‪ .‬محیط و رسانهی ارتباط بیسیم‪،‬‬
‫برخالف شبکههای کابلی – که در آنجا هر کاربر کابل شبکهی خود را دارد که به یک‬
‫سوئیچ متصل شده است – اشتراک موج رادیویی کاربر است که به لحاظ اندازه محدود‬
‫است‪ .‬یک واحد ‪ WLAN‬تنها یک بخش از طیف ‪ 802.11‬را اشغال میکند‪ .‬این امر اجازه‬
‫میدهد تا چندین سیستم در یک ناحیهی فیزیکی در بخشهای از طیف مختلف کار کنند‪.‬‬

‫نکته‪ :‬شبکهسازی بیسیم بر استاندارد ‪ 802.11‬استوار است که توسط انجمن مهندسان برق و‬
‫الکترونیک‪ 2‬تهیه شده است‪ .‬در کل این فصل اصطالحات شبکهسازی بیسیم و ‪ WLAN‬به‬
‫شبکههایی اشاره دارند که به استاندارد ‪ 802.11‬وفادار هستند‪.‬‬
‫این تفکیک فضا با تقسیم کردن طیف به کانالهای عملیات امکانپذیر شده است‪ .‬کانال تنها‬
‫بخشی از طیف بیسیم ‪ 802.11‬است‪ .‬در ایاالتمتحده‪ 11 ،‬کانال موجود است (در بعضی از‬
‫کشورها تعدادی بیشتر از این اجازه داده شده است)‪ .‬این مقداری مناسب است‪ ،‬زیرا از‬
‫آنجایی که یک ‪ WLAN‬هر بار تنها میتواند در یک کانال عمل نماید‪ ،‬بنابراین‪ ،‬همان طوری‬
‫که در شکل ‪ 11-1‬نشان داده شده است‪ ،‬ما هر بار تنها میتوانیم بستهها را در یک کانال شنود‬
‫کنیم‪ .‬بنابراین‪ ،‬اگر در حال رفع ایراد یک ‪ WLAN‬هستید که در کانال ‪ 6‬کار میکند‪ ،‬آنگاه‬
‫باید سیستم خود را برای ربایش ترافیک دیده شده در کانال ‪ 6‬پیکربندی نمایید‪.‬‬

‫‪1‬‬
‫‪wireless local area network = WLAN‬‬
‫‪2‬‬
‫‪Institute of Electrical and Electronics Engineers = IEEE‬‬
‫‪359‬‬
‫تحلیل بسته بیسیم‬ ‫فصل یازدهم‬

‫شکل ‪ :11-1‬شنود کردن بهطور بیسیم میتواند خسته کننده باشد‪ ،‬زیرا هر بار تنها میتواند‬
‫در یک کانال انجام شود‪.‬‬

‫نکته‪ :‬شنودکردن مرسوم بیسیم را در هر بار میتوان در یک کانال انجام داد که در آن یک‬
‫استثنا وجود دارد‪ .‬بعضی از برنامههای کاربردی اسکن بیسیم از تکنیکی بهره میگیرند که‬
‫‪ channel hopping‬نامیده میشود تا کانالها را بهمنظور گردآوری دادهها بهسرعت تغییر‬
‫دهند‪.‬‬
‫یکی از محبوبترین این نوه ابزارها ‪ Kismet‬است‪ http://www.kismetwireless.net/ .‬که‬
‫میتواند تا ‪ 10‬کانال در ثانیه تغییر کند و این امر آن را در شنود کردن چندین کانال در آن‬
‫واحد بسیار کارآمد مینماید‪.‬‬

‫تداخل سیگنال بیسیم‬


‫در خصوص ارتباطات بیسیم‪ ،‬گاهی نمیتوانیم بر درستی و یکپارچگی دادههای مخابره شده‬
‫از طریق هوا تکیه کنیم‪ .‬این احتمال وجود دارد که چیزی با سیگنال تداخل پیدا نماید‪.‬‬
‫شبکههای بیسیم برای اداره کردن تداخل واجد پارهای از ویژگیها هستند‪ ،‬ولی آن‬
‫ویژگیها همیشه درست عمل نمیکنند‪ .‬بنابراین‪ ،‬در زمان ربایش بستهها از طریق یک شبکهی‬
‫بیسیم‪ ،‬باید به محیط خود توجه دقیقی داشته باشید تا اطمینان حاصل کنید که فاقد منابع‬
‫عمدهی تداخل (نظیر سطوح انعکاسی بزرگ‪ ،‬اجسام سختِ بزرگ‪ ،‬امواج ماکروویو‪،‬‬

‫‪360‬‬
‫تحلیل بسته بیسیم‬ ‫فصل یازدهم‬

‫تلفنهای ‪ 2/4‬گیگاهرتزی‪ ،‬دیوارهای ضخیم‪ ،‬و سطوح با چگالی باال)‪ .‬اینها میتوانند سبب‬
‫گمشدن بسته‪ ،‬بستههای تکثیر شده؛ و بستههای ناقص شوند‪.‬‬
‫تداخل بین کانالها نیز یک دغدغه است‪ .‬اگر هر بار تنها میتوانید یک کانال را شنود کنید‪،‬‬
‫ولی در اینجا هشداری وجود دارد‪ :‬چندین کانال انتقال‪ 1‬مختلف در طیف شبکهسازی بیسیم‬
‫موجود هستند‪ ،‬ولی همان طوری که در شکل ‪ 2-11‬نشان داده شده است‪ ،‬به سبب محدودیت‬
‫فضا‪ ،‬بین کانالها اندکی همپوشانی وجود دارد‪ .‬این بدان معنی است که اگر ترافیکی در‬
‫کانال ‪ 4‬و ‪ 5‬وجود داشته باشد‪ ،‬و شما مشغول شنود کردن در این کانالها باشید‪ ،‬آنگاه این‬
‫احتمال وجود دارد که بستههایی را از کانالهای دیگر ربایش کنید‪ .‬بهطور معمول‪ ،‬شبکههایی‬
‫که با هم در یک ناحیه وجود دارند برای آن طراحی شدهاند تا از کانالهای بدون همپوشانی‬
‫‪ ،6 ،1‬و ‪ 11‬استفاده کنند؛ بنابراین‪ ،‬احتماالً با این مشکل مواجه نخواهید شد‪ ،‬ولی جهت‬
‫احتیاط‪ ،‬باید درک کنید که چرا این مسئله رخ میدهد‪.‬‬

‫شکل ‪ :11-2‬به سبب فضای محدود طیف بین کانالها همپوشانی وجود دارد‪.‬‬

‫کشف و تحلیل تداخل سیگنال‬


‫رفع اشکال از تداخل سیگنال بیسیم گاهی چیزی نیست که بتوان آن را با نگاه کردن به‬
‫بستهها در ‪ Wireshark‬انجام داد‪ .‬اگر قرار باشد که در خصوص رفع اشکال ‪WLAN‬ها کار‬
‫کنید‪ ،‬پس مطمئناً باید بهطور مرتب به کنترل و بررسی تداخل سیگنال بپردازید‪ .‬این کار‬

‫‪1‬‬
‫‪transmission channel‬‬
‫‪361‬‬
‫تحلیل بسته بیسیم‬ ‫فصل یازدهم‬

‫توسط تحلیلگر طیف‪ 1‬انجام میشود‪ .‬تحلیلگر طیف ابزاری است که دادهها یا تداخل را در‬
‫یک طیف نمایش میدهد‪.‬‬
‫هزینه و قیمت تحلیلگرهای طیف تجاری میتواند به هزاران دالر بالغ شود‪ ،‬ولی برای‬
‫استفادهی روزمره یک راه حل عالی وجود دارد‪.‬‬
‫شرکت ‪ MteaGeek‬محصولی به نام ‪ Wi-Spy‬را تولید میکند که یک سختافزار ‪USB‬‬
‫است و (برای مثال) کل طیف ‪ 802.11‬را مورد پایش قرار میدهد‪ .‬این سختافزار به هنگامی‬
‫که با نرمافزار ‪ Chanalyzer‬شرکت ‪ MetaGeek‬جفت شود‪ ،‬آنگاه این سختافزار طیف را‬
‫بهطور گرافیکی حاصل میکند تا در فرآیند رفع ایراد کمک نماید‪ .‬یک نمونهی خروجی از‬
‫‪ Chanalyzer‬در شکل ‪ 11-3‬نشان داده شده است‪.‬‬

‫شکل ‪ :11-3‬این خروجی ‪ Chanalyzer‬چندین ‪ WLAN‬را نشان میدهد که در یک ناحیه کار میکنند‪.‬‬

‫‪1‬‬
‫‪spectrum analyzer‬‬
‫‪362‬‬
‫تحلیل بسته بیسیم‬ ‫فصل یازدهم‬

‫حالتهای کارت بیسیم‬


‫پیش از آنکه شنود کردن بستههای بیسیم را آغاز کنیم‪ ،‬ابتدا باید به حالتهای مختلفی نگاه‬
‫داشته باشیم که در آنها یک کارت بیسیم (مرتبط با ربایش بسته) میتواند کار کند‪ .‬چهار‬
‫حالت ‪ NIC‬بیسیم وجود دارد‪:‬‬
‫حالت مدیریت شده‪ :1‬این حالت زمانی مورد استفاده قرار میگیرد که کاربر بیسیم شما‬
‫مستقیماً به یک نقطهی دسترسی بیسیم‪ WAP 2‬متصل شده باشد‪ .‬در این موارد‪ ،‬درایور مرتبط‬
‫با کیت ‪ NIC‬بیسیم برای مدیریت کل فرآیند ارتباط بر ‪ WAP‬تکیه میکند‪.‬‬
‫حالت ادهاک‪ :3‬این حالت زمانی مورد استفاده قرار میگیرد که شما تنظیمی از شبکهی‬
‫بیسیم را داشته باشید که در آن دستگاهها مستقیماً به یکدیگر متصل میشوند‪ .‬در این حالت‪،‬‬
‫دو کاربر بیسیم که میخواهند با یکدیگر ارتباط برقرار نمایند مسئولیتهایی را با یکدیگر‬
‫به اشتراک میگذارند که یک ‪ WAP‬بهطور معمول اداره مینماید‪.‬‬
‫حالت راهبر‪ :4‬پارهای از ‪NIC‬های بیسیم پیشرفتهتر حالت راهبر را پشتیبانی میکنند‪ .‬این‬
‫حالت ‪ NIC‬بیسیم را قادر میسازد تا همراه با نرمافزار درایور تخصصی کار نماید تا به‬
‫کامپیوتر اجازه دهد که برای دستگاههای دیگر بهعنوان یک ‪ WAP‬عمل نماید‪.‬‬
‫حالت ناظر‪ :5‬این مهمترین حالت برای مقصودهای ماست‪ .‬حالت ناظر زمانی مورد استفاده‬
‫قرار میگیرد که میخواهید کاربر بیسیمتان ارسال و دریافت دادهها را متوقف نماید‪ ،‬و تنها‬
‫به بستههایی گوش کنید که از طریق هوا منتقل میشوند‪ .‬برای آنکه ‪ Wireshark‬بستههای‬
‫بیسیم را ربایش کند‪ NIC ،‬بیسیم شما و درایور همراه باید حالت ناظر را پشتیبانی نمایند‬
‫(همچنین با عنوان حالت ‪ RFMODE‬شناخته میشود)‪.‬‬

‫‪1‬‬
‫‪managed mode‬‬
‫‪2‬‬
‫‪wireless access point = WAP‬‬
‫‪3‬‬
‫‪ad hoc mode‬‬
‫‪4‬‬
‫‪master mode‬‬
‫‪5‬‬
‫‪monitor mode‬‬
‫‪363‬‬
‫تحلیل بسته بیسیم‬ ‫فصل یازدهم‬

‫اغلب کاربران از کارتهای بیسیم تنها در حالت مدیریت شده یا حالت ادهاک استفاده‬
‫میکنند‪ .‬یک نمایش تصویری از روشی که هر حالت در آن کار میکند در شکل ‪4-11‬‬
‫نشان داده شده است‪.‬‬

‫شکل ‪ :11-4‬حالتهای مختلف کارت بیسیم‬

‫‪364‬‬
‫تحلیل بسته بیسیم‬ ‫فصل یازدهم‬

‫نکته‪ :‬اغلب از من پرسیده میشود که من کدام کارت بیسیم را برای تحلیل بستهی بیسیم‬
‫توصیه میکنم‪ .‬من از آداپتور بیسیم ‪ 1000 USB‬میلی واتی ‪ ALFA‬استفاده میکنم و آن را‬
‫بسیار توصیه مینمایم‪ .‬این آداپتور بیسیم بهعنوان یکی از بهترینها در بازار بسیار مورد توجه‬
‫است تا اطمینان حاصل کنید که همهی بستههای ممکن را ربایش نمایید‪ .‬این آداپتور از طریق‬
‫بیشتر خرده فروشهای آنالین سختافزار کامپیوتری قابل تهیه است‪.‬‬

‫شنودکردن بهطور بیسیم در ‪Windows‬‬


‫حتی اگر ‪ NIC‬بیسیمی داشته باشید که از حالت ناظر پشتیبانی کند‪ ،‬ولی اغلب درایورهای‬
‫‪ NIC‬بیسیم مبتنی بر ‪ Windows‬به شما اجازه نمیدهند تا در این حالت تغییر ایجاد کنید‬
‫(‪ WinPcap‬نیز آن را پشتیبانی نمیکند)‪ .‬شما برای انجام کار بهقدری سختافزار بیشتر نیاز‬
‫خواهید داشت‪.‬‬

‫پیکربندی ‪AirPcap‬‬
‫‪( AirPcap‬از ‪ CASE Technologies‬که اکنون بخشی از ‪ Riverbed‬است‪،‬‬
‫‪ )http://www.casetech.com/‬برای چیره شدن بر محدودیتهایی طراحی شده است که‬
‫‪ Windows‬در مورد تحلیل بستهی بیسیم اعمال میکند‪ AirPcap .‬یک دستگاهی ‪USB‬‬
‫کوچک است که شبیه یک درایو فلش است (شکل ‪ .)5-11‬این دستگاه برای ربایش ترافیک‬
‫بیسیم طراحی شده است‪ AirPcap .‬از درایور ‪( WinPcap‬که در فصل ‪ 3‬شرح داده شد) و‬
‫یک برنامهی ویژهی پیکربندی کاربر استفاده میکند‪.‬‬

‫شکل ‪ :11-5‬دستگاه ‪ AirPcap‬بسیار جمع و جور است که حمل آن با یک لپتاپ را ساده میسازد‪.‬‬

‫‪365‬‬
‫تحلیل بسته بیسیم‬ ‫فصل یازدهم‬

‫استفاده از برنامهی پیکربندی ‪ AirPcap‬ساده است و تنها چند گزینهی معدود قابل پیکربندی‬
‫دارد‪ .‬پنل کنترل ‪( AirPcap‬شکل ‪ )11-6‬گزینههای زیر را ارائه میدهد‪:‬‬

‫واسط (‪ :)Interface‬شما میتوانید دستگاهی را انتخاب کنید که در اینجا برای ربایش‬


‫استفاده مینمایید‪ .‬بعضی از سناریوهای تحلیل پیشرفته ممکن است نیازمند آن باشند که برای‬
‫شنودکردن همزمان در چند کانال از بیش از یک ‪ AirPcap‬استفاده شود‪.‬‬
‫‪ LED‬چشمکزن (‪ :)Blink LED‬کلیک کردن بر روی این دکمه سبب خواهد شد تا‬
‫چراغهای ‪ LED‬در دستگاه ‪ AirPcap‬چشمک بزنند‪ .‬این حالت عمدتاً برای شناسایی آداپتور‬
‫بخصوصی مورد استفاده قرار میگیرد که در صورت استفاده از چند دستگاهی ‪ AirPcap‬از‬
‫آن استفاده مینمایید‪.‬‬
‫کانال (‪ :)Channel‬در این فیلد‪ ،‬شما کانالی را انتخاب میکنید که میخواهید ‪AirPcap‬‬
‫به آن گوش دهد‪.‬‬
‫لحاظ کردن توالی بررسی فریم‪802.11 1‬‬
‫بر اساس پیش فرض‪ ،‬بعضی از سیستمها چهار بیتهای کنترلی‪ 2‬آخر را از بستههای بیسیم‬
‫حذف میکنند‪ .‬این بیتهای کنترلی – که با عنوان توالی بررسی فریم (‪ )FCS‬شناخته میشود‬
‫– برای اطمینان حاصل کردن از این امر مورد استفاده قرار میگیرد که بستهها در طول انتقال‬
‫و مخابره خراب نشده باشند‪ .‬برای لحاظ کردن مجموعهایکنترلی ‪ FCS‬کادر آن را تیک‬
‫بزنید‪ ،‬مگر آنکه برای نزدن آن دلیل دیگری داشته باشید‪.‬‬
‫نوع ربایش (‪ :)Capture Type‬دو گزینهی اینجا ‪ 802.11 Only‬و ‪802.11 +Radio‬‬
‫هستند‪ .‬گزینهی ‪ 802.11 Only‬سرآیند بستهی استاندارد ‪ 802.11‬را در همهی بستههای‬
‫ربایش شده لحاظ میکند‪ .‬گزینهی ‪ 802.11 +Radio‬این سرآیند را لحاظ میکند و همچنین‬

‫‪1‬‬
‫‪frame check sequence = FCS‬‬
‫‪2‬‬
‫‪checksum‬‬
‫‪366‬‬
‫تحلیل بسته بیسیم‬ ‫فصل یازدهم‬

‫آن را در آغاز یک سرآیند ‪ radiotap‬وصل میکند که حاوی اطالعات بیشتری دربارهی‬


‫بسته است (از آن جمله نرخ داده‪ ،1‬فرکانس‪ ،‬سطح سیگنال‪ ،‬و سطح نویز)‪ .‬برای دیدن کل‬
‫اطالعات موجود بسته‪ ،‬گزینهی ‪ 802.11 +Radio‬را انتخاب کنید‪.‬‬
‫فیلتر ‪ :)FCS Filter( FCS‬حتی اگر تیک کادر ‪ Include 802.11 in Frames‬را بردارید‪،‬‬
‫این گزینه شما را قادر مینماید تا بستههایی را فیلتر کنید که ‪ FCS‬به خراب بودن آنها حکم‬
‫میدهد‪ .‬از گزینهی ‪ Valid Frames‬برای نشان دادن فقط بستههایی استفاده کنید که ‪FCS‬‬
‫فکر میکند میتوانند بهطور موفقیتآمیزی دریافت شوند‪.‬‬
‫پیکربندی ‪ :)WEP Configuration( WEP‬این قسمت (قابل دسترس در تبِ ‪ Key‬از‬
‫پنل کنترل ‪ )AirPcap‬شما را قادر میسازد تا کلیدهای رمزگشایی ‪ WEP‬را برای شبکههایی‬
‫وارد کنید که مشغول شنود کردن آنها هستید‪ .‬برای آنکه بتوانید دادههای رمزگذاری شده‬
‫را توسط ‪ WEP‬تفسیر کنید‪ ،‬به این نیاز خواهید داشت که کلیدهای صحیح ‪ WEP‬را در این‬
‫فیلد وارد نمایید‪ .‬کلیدهای ‪ WEP‬در " امنیت بیسیم" در صفحهی ‪ 228‬مورد بحث قرار‬
‫میگیرند‪.‬‬

‫شکل ‪ :6-11‬برنامهی پیکربندی ‪AirPcap‬‬

‫‪1‬‬
‫‪data rate‬‬
‫‪36۷‬‬
‫تحلیل بسته بیسیم‬ ‫فصل یازدهم‬

‫ربایش کردن ترافیک توسط ‪AirPcap‬‬


‫پس از نصب و پیکربندی ‪ ،AirPcap‬فرآیند ربایش باید برای شما آشنا باشد‪ .‬فقط‬
‫‪ Wireshark‬را راهاندازی کنید و ‪ Capture ► Options‬را انتخاب نمایید‪ .‬سپس‪ ،‬همان‬
‫طوری که در شکل ‪ ۷-11‬نشان داده شده است‪ ،‬دستگاه ‪ AirPcap‬را در کادر انتخاب‬
‫‪ Interface‬انتخاب کنید ‪.‬‬

‫شکل ‪ :۷-11‬انتخاب کردن دستگاه ‪ AirPcap‬بهعنوان واسط ربایش‬

‫همه چیز در این صفحه باید برایتان آشنا باشد‪ ،‬جز دکمهی ‪ .Wireless Setting‬کلیک کردن‬
‫بر روی این دکمه همان گزینههای برنامهی ‪ AirPcap‬را به شما میدهد (شکل ‪ .)8-11‬از‬
‫آنجایی که ‪ Wireshark‬کامالً با ‪ AirPcap‬یکپارچه شده است‪ ،‬بنابراین‪ ،‬هر چیز پیکربندی‬
‫شده در برنامهی کاربر را میتوان در داخل ‪ Wireshark‬هم پیکربندی کرد‪.‬‬

‫‪368‬‬
‫تحلیل بسته بیسیم‬ ‫فصل یازدهم‬

‫شکل ‪ :11-8‬دیالوگ ‪ Advanced Wireless Setting‬شما را قادر میسازد تا ‪ AirPcap‬را از داخل‬


‫‪ Wireshark‬پیکربندی کنید‪.‬‬

‫پس از آنکه همه چیز را به میل خود پیکربندی کردید‪ ،‬کار ربایش بستهها را با کلیک کردن‬
‫بر روی دکمهی ‪ Start‬آغاز نمایید‪.‬‬

‫شنودکردن بهطور بیسیم در ‪Linux‬‬


‫شنود کردن در ‪ Linux‬تنها مسئلهی مقدور نمودن حالت ناظر در ‪ NIC‬بیسیم و راه انداختن‬
‫‪ Wireshark‬است‪ .‬متأسفانه‪ ،‬مقدور نمودن حالت ناظر در هر مدل از ‪ NIC‬بیسیم فرق میکند‬
‫و بنابراین من نمیتوانم در اینجا یک راهنمایی قطعی داشته باشم‪ .‬در حقیقت‪ ،‬بعضی از‬
‫‪NIC‬های بیسیم شما را ملزم به فعال و مقدور نمودن حالت ناظر نمیکنند‪ .‬بهترین انتخاب‬
‫شما آن است که برای مدل ‪ NIC‬خود در ‪ Google‬دست به یک جستجوی سریع بزنید تا‬
‫تعیین کنید که چگونه آن را فعال نمایید و اینکه آیا به انجام این کار نیازی دارید یا نه‪.‬‬
‫یکی از راههای رایجتر برای مقدور کردن حالت ناظر در ‪ Linux‬از طریق پسوندهای ‪built-‬‬
‫‪ in‬بیسیم است‪ .‬با استفاده از فرمان ‪ iwconfig‬میتوانید به این پسوندها دسترسی پیدا کنید‪.‬‬
‫اگر ‪ iwconfig‬را از کنسول تایپ کنید‪ ،‬آنگاه باید خروجی مانند این را ببینید‪:‬‬

‫‪369‬‬
‫تحلیل بسته بیسیم‬ ‫فصل یازدهم‬

‫خروجی از فرمان ‪ iwconfig‬نشان میدهد که واسط ‪ Eth1‬را میتوان به شکلی عاقالنه‬


‫پیکربندی کرد‪ .‬این مسلم است‪ ،‬زیرا دادهها را برای پروتکل ‪ 802.11g‬نشان میدهد‪ ،‬در‬
‫حالی که واسطهای ‪ Eth0‬و ‪ Lo0‬عبارت ‪ no wireless extensions‬را برمیگردانند‪.‬‬
‫همراه با همهی اطالعاتی که این فرمان فراهم میآورد – از جمله ‪ ID‬مجموعه سرویس توسعه‬
‫یافته‪ )ESSID( 1‬و فرکانس – توجه داشته باشید که خط دوم زیر ‪ Eth1‬نشان میدهد که‬
‫هماینک حالت در وضعیت مدیریت شده قرار داده شده است‪ .‬این چیزی است که ما به دنبال‬
‫تغییر آن هستیم‪.‬‬
‫بهمنظور تغییر دادن واسط ‪ Eth1‬به حالت ناظر‪ ،‬باید بهعنوان کاربر ریشه‪ 2‬وارد شده باشید‪ ،‬و‬
‫همان طوری که در اینجا نشان داده شده است‪ ،‬این کار یا بهطور مستقیم و یا از طریق فرمان‬
‫‪ )su( switch user‬انجام میشود‪:‬‬
‫‪$ su‬‬
‫>‪Password: <enter root password here‬‬

‫پس از ‪ root‬کردن میتوانید فرمانها را بهمنظور پیکربندی گزینههای واسط بیسیم تایپ‬
‫کنید‪ .‬برای پیکربندی ‪ Eth1‬برای عمل کردن در حالت ناظر‪ ،‬این متن را تایپ کنید‪:‬‬

‫‪1‬‬
‫‪extended service set ID = ESSID‬‬
‫‪2‬‬
‫‪root user‬‬
‫‪3۷0‬‬
‫تحلیل بسته بیسیم‬ ‫فصل یازدهم‬

‫‪# iwconfig eth1 mode monitor‬‬

‫پس از قرار گرفتن ‪ NIC‬در حالت ناظر‪ ،‬اجرای دوبارهی فرمان ‪ iwconfig‬باید تغییرات شما‬
‫را منعکس نماید‪ .‬اکنون با تایپ کردن عبارت زیر از دایر بودن واسط ‪ Eth1‬اطمینان حاصل‬
‫کنید‪:‬‬

‫‪# iwconfig eth1 up‬‬

‫همچنین از فرمان ‪ iwconfig‬برای تغییر دادن کانالی استفاده میکنیم که مشغول گوش کردن‬
‫به آن هستیم‪ .‬با تایپ کردن عبارت زیر‪ ،‬کانال واسط ‪ Eth1‬را تغییر دهید‪:‬‬

‫‪# iwconfig eth1 channel 3‬‬

‫نکته‪ :‬همچنان که مشغول ربایش بستههای در حال پرواز هستید میتوانید کانالها را عوض‬
‫کنید؛ بنابراین‪ ،‬در انجام ارادی این کار تردید نکنید‪ .‬این فرمان ‪ iwconfig‬را همچنین میتوان‬
‫اسکریپت کرد تا این فرآیند سادهتر شود‪.‬‬

‫پس از انجام این پیکربندیها‪ Wireshark ،‬را راه اندازید و ربایش بسته را آغاز کنید‪.‬‬

‫ساختار بستهی ‪802.11‬‬


‫تفاوت اصلی بین بستههای بیسیم و کابلی‪ ،‬افزوده شدن سرآیند ‪ 802.11‬است‪ .‬این یک‬
‫سرآیند الیهی ‪ 2‬است که حاوی اطالعات بیشتر دربارهی بسته و محیط و رسانهای است که‬
‫از طریق آن مخابره شده است‪ .‬سه نوع بستهی ‪ 802.11‬وجود دارد‪:‬‬

‫مدیریت‪ :‬این بستهها برای برقرار اتصال بین میزبانها در الیهی ‪ 2‬مورد استفاده قرار‬
‫میگیرند‪ .‬پارهای از زیر نوعهای بستههای مدیریت شامل بستههای احراز هویت‪ ،‬ارتباط‪ ،‬و‬
‫‪ beacon‬است‪.‬‬

‫‪3۷1‬‬
‫تحلیل بسته بیسیم‬ ‫فصل یازدهم‬

‫کنترل‪ :‬بستههای کنترل تحویل دادن بستههای مدیریت و دادهها را مقدور مینمایند و با‬
‫مدیریت تراکم‪ 1‬سر و کار دارد‪ .‬زیر نوعهای معمول آن شامل بستههای تقاضای ارسال‪ 2‬و‬
‫آماده ارسال‪ 3‬است‪.‬‬
‫دادهها‪ :‬این بستهها حاوی دادههای واقعی هستند و تنها نوع بستهای که میتواند از شبکهی‬
‫بیسیم به شبکهی کابلی ‪ forward‬شوند‪.‬‬

‫نوع و زیر نوع بستهی بیسیم ساختار آن را تعیین مینماید؛ بنابراین‪ ،‬تعداد زیادی از ساختار‬
‫امکانپذیر است‪ .‬ما با نگاه کردن به یک بستهی واحد در فایل ‪ 80211beacon.pcap‬یکی‬
‫از چنین ساختارهایی را مورد بررسی قرار خواهیم داد‪ .‬همان طوری که در شکل ‪ 9-11‬نشان‬
‫داده شده است‪ ،‬این فایل حاوی نمونهای از بستهی مدیریت به نام ‪ beacon‬است‪.‬‬

‫شکل ‪ :9-11‬این یک بستهی ‪ beacon‬استاندارد ‪ 802.11‬است‪.‬‬

‫‪1‬‬
‫‪congestion management‬‬
‫‪2‬‬
‫‪request-to-send‬‬
‫‪3‬‬
‫‪clear-to-send‬‬
‫‪3۷2‬‬
‫تحلیل بسته بیسیم‬ ‫فصل یازدهم‬

‫بستهی ‪ beacon‬یکی از آگاهیبخشندهترین بستههایی است که میتوانید پیدا کنید‪ .‬این بسته‬
‫بهعنوان یک بستهی ‪ broadcast‬از یک ‪ WAP‬در یک کانال بیسیم فرستاده میشود تا به هر‬
‫کاربر بیسیمی که در حال گوش دادن است آگاهی دهد که ‪ WAP‬موجود است و نیز‬
‫پارامترهایی را تعریف کند که باید بهمنظور اتصال به آن تنظیم شوند‪ .‬در فایلِ نمونهی ما‪،‬‬
‫میتوانید ببینید که این بسته در فیلد ‪ Type/Subtype‬در سرآیند ‪ 802.11‬بهعنوان یک‬
‫‪ beacon‬تعریف شده است ‪.‬‬
‫مقدار بسیار زیادی اطالعات افزوده در سرآیند کادر مدیریت ‪ 802.11‬وجود دارد که شامل‬
‫موارد زیر است‪:‬‬

‫مهر زمانی (‪ :)Timestamp‬زمانی که بسته مخابره شده است‪.‬‬


‫بازهی ‪ :)Beacon Interval( Beacon‬بازهای که در آن بستهی ‪ beacon‬دوباره ارسال‬
‫شده است‪.‬‬
‫اطالعات قابلیت (‪ :)Capability information‬اطالعات دربارهی قابلیتهای سرآیند‬
‫‪.WAP‬‬
‫مجموعه پارامتر ‪ broadcast :)SSID Parameter Set( SSID‬شناسهی مجموعه‬
‫سرویس (نام شبکه) توسط ‪.WAP‬‬
‫سرعتهای پشتیبانی شده (‪ :)Supported Rates‬سرعتهای انتقال دادهها که توسط‬
‫‪ WAP‬پشتیبانی میشود‪.‬‬
‫پارامتر ‪ :)DS Parameter( DS‬کانالی که ‪ WAP‬در آن مشغول ‪ broadcast‬است‪.‬‬

‫این سرآیند همچنین شامل آدرسهای مبدأ و مقصد و اطالعات مخصوص به فروشنده است‪.‬‬
‫ما بر اساس این آگاهی میتوانیم چند چیز را دربارهی ‪WAP‬ای تعیین نماییم که این بستهی‬

‫‪3۷3‬‬
‫تحلیل بسته بیسیم‬ ‫فصل یازدهم‬

‫‪ beacon‬را در فایل مثال ارسال میکند‪ .‬آشکار است که این یک دستگاه ‪ D-Link‬است ‪‬‬
‫که از استاندارد ‪  )B( 802.11b‬در کانال ‪ 11‬استفاده میکند ‪.‬‬
‫اگرچه محتویات و مقصود دقیق بستههای مدیریت ‪ 802.11‬تغییر خواهند کرد‪ ،‬ولی ساختار‬
‫شبیه به این مثال باقی خواهد ماند‪.‬‬

‫افزودن ستونهای مختص بیسیم به قسمت ‪Packet List‬‬


‫دیدهاید که ‪ Wireshark‬در قسمت ‪ Packet List‬بهطور معمول شش ستون منفرد را نشان‬
‫میدهد‪ .‬پیش از مبادرت به هر گونه تحلیل بیسیمِ بیشتر‪ ،‬افزودن سه ستون جدید به قسمت‬
‫‪ Packet List‬سودمند خواهد بود‪:‬‬
‫‪ ‬ستون ‪( RSSI‬مخفف برای نمایشگر قدرت سیگنال دریافتی‪ )1‬برای نشان دادن‬
‫قدرت سیگنال فرکانس رادیویی‪)RF( 2‬یک بستهی ربایش شده؛‬
‫‪ ‬ستون ‪( TX Rate‬مخفف نرخ مخابره‪ ،)3‬برای نشان دادن نرخ بستهی ربایش شده؛‬
‫‪ ‬ستون ‪ ،Frequency/Channel‬برای نشان دادن فرکانس و کانالی که بسته در آن‬
‫گردآوری شده است‪.‬‬
‫این نشانگرها در زمان رفع ایراد از اتصالهای بیسیم میتوانند کمک خیلی بزرگی باشند‪.‬‬
‫برای مثال‪ ،‬حتی اگر نرمافزار کاربر بیسیم شما بگوید که قدرت سیگنالی عالی دارید‪ ،‬ولی‬
‫با اجرای یک ربایش و بررسی این ستونها میتواند به شما عددی را نشان بدهد که از این‬
‫ادعا حمایت ننماید‪.‬‬
‫بهمنظور افزودن این ستونها به قسمت ‪ Packet List‬مراحل زیر را اجرا کنید‪:‬‬
‫‪ Edit ► Preferences .1‬را انتخاب کنید‪.‬‬
‫‪ .2‬به بخش ‪ Columns‬بروید و بر روی ‪ New‬کلیک نمایید‪.‬‬

‫‪1‬‬
‫‪received signal strength indication‬‬
‫‪2‬‬
‫‪radio frequency = RF‬‬
‫‪3‬‬
‫‪Transmission Rate‬‬
‫‪3۷4‬‬
‫تحلیل بسته بیسیم‬ ‫فصل یازدهم‬

‫‪ RSSI .3‬را در فیلد ‪ Title‬تایپ کنید و ‪ IEEE 802.11 RSSI‬را در فهرست کشویی‬
‫‪ Field type‬انتخاب نمایید‪.‬‬
‫‪ .4‬این فرآیند را برای ستونهای ‪ TX Rate‬و ‪ Frequency/Channel‬تکرار کنید و‬
‫عنوانی مقتضی به آنها بدهید و ‪ IEEE 802.11 TX Rate‬و گزینه‬
‫‪ Channel/Frequency‬را در فهرست کشویی ‪ Field type‬انتخاب نمایید‪ .‬شکل‬
‫‪ 10-11‬نشان میدهد که پنجرهی ‪ Preferences‬پس از افزودن این ستونها چه‬
‫شکلی پیدا میکند‪.‬‬

‫شکل ‪ :10-11‬افزودن ستونهای مختص بیسیمِ ‪ IEEE‬در قسمت ‪Packet List‬‬

‫‪ .5‬برای ذخیره کردن تغییرات روی ‪ OK‬کلیک کنید‪.‬‬


‫‪ Wireshark .6‬را برای نشان دادن ستونهای جدید دوباره راهاندازی کنید‪.‬‬

‫فیلترهای ویژهی بیسیم‬


‫مزایای فیلترهای ربایش و نمایش را در فصل ‪ 4‬مورد بحث قرار دادیم‪ .‬فیلتر کردن ترافیک‬
‫در یک زیرساخت کابلی بسیار سادهتر است‪ ،‬زیرا هر دستگاه کابل مختص به خود را دارد‪.‬‬
‫اما‪ ،‬در یک شبکهی بیسیم‪ ،‬کل ترافیک توسط کاربران بیسیمی ایجاد میشود که در‬
‫‪3۷5‬‬
‫تحلیل بسته بیسیم‬ ‫فصل یازدهم‬

‫کانالهای مشترک در کنار یکدیگر وجود دارند‪ .‬این بدان معنی است که یک ربایش از هر‬
‫کانال میتواند حاوی ترافیک از چندین کاربر باشد‪ .‬این بخش به پارهای از فیلترهای بسته‬
‫اختصاص دارد که میتوانند برای کمک به شما در یافتن ترافیکی بخصوص کمک نمایند‪.‬‬

‫فیلتر کردن ترافیک برای یک ‪ BSS ID‬بخصوص‬


‫هر ‪ WAP‬در شبکه دارای نام مشخصهی منحصر به فردی است که شناسهی مجموعه سرویس‬
‫پایه‪ )BSS ID( 1‬نامیده میشود‪ .‬این نام در هر بستهی مدیریت بیسیم و بستهی دادهای که‬
‫نقطهی دسترسی مخابره میکند‪ ،‬فرستاده میشود‪.‬‬
‫وقتی نام ‪BSS ID‬ای را بدانید که میخواهید مورد بررسی قرار دهید‪ ،‬تنها چیزی که احتیاج‬
‫خواهید داشت آن است که بستهای را پیدا کنید که از ‪WAP‬ای بخصوص فرستاده شده باشد‪.‬‬
‫برنامهی ‪ WAP Wireshark‬ارسالکننده را در قسمت ‪ Packet List‬نشان میدهد؛ بنابراین‪،‬‬
‫یافتن این اطالعات عموماً بسیار ساده است‪.‬‬
‫وقتی بستهای را از ‪ WAP‬مورد عالقه در اختیار دارید‪ ،‬آنگاه فیلد ‪ BBS ID‬آن را در سرآیند‬
‫‪ 802.11‬پیدا کنید‪ .‬این آدرسی است که فیلترتان را بر پایهی آن بنا خواهید کرد‪ .‬پس از پیدا‬
‫کردن آدرس ‪ MAC‬شناسهی مجموعه سرویس پایه )‪ (BBS ID‬میتوانید از این فیلتر استفاده‬
‫کنید‪:‬‬

‫‪wlan.bsid.eq 00:11:22:33:44:55:66‬‬

‫و تنها ترافیکی را خواهید دید که از طریق ‪ WAP‬مشخص شده جریان دارد‪.‬‬

‫‪1‬‬
‫‪basic service set identifier = BSS ID‬‬
‫‪3۷6‬‬
‫تحلیل بسته بیسیم‬ ‫فصل یازدهم‬

‫فیلتر کردن نوعهای بستهی بیسیم بخصوص‬


‫پیشتر در این فصل دربارهی انواع مختلف بستههای بیسیمی بحث کردیم که ممکن است‬
‫در یک شبکه ببینید‪ .‬اغلب نیاز به آن خواهید داشت که بر اساس این نوعها و زیر نوعها اقدام‬
‫به فیلتر کردن نمایید‪ .‬این کار را میتوان توسط فیلترهای ‪ wlan.fc.type‬برای نوعهای‬
‫مشخص‪ ،‬و ‪ wc.fc.type_subtype‬برای ترکیبات مشخص نوع یا زیر نوع انجام داد‪ .‬بهعنوان‬
‫مثال‪ ،‬برای فیلتر کردن بستهی دادههای ‪( NULL‬یک بستهی ‪ )Type 2 Subtype 4‬میتوانید‬
‫از فیلتر ‪ wlan.fc.type_subtype eq 0x24‬استفاده کنید‪ .‬جدول ‪ 11-1‬مرجعی سریع را برای‬
‫بعضی فیلترهای رایج را فراهم میکند که ممکن است در هنگام فیلترینگ در نوعها و زیر‬
‫نوعهای بستهی ‪ 802.11‬به آنها نیاز پیدا کنید‪.‬‬

‫جدول ‪ :1-11‬نوعها‪ /‬زیر نوعهای بیسیم و ترکیبِ‪ 1‬فیلتر مربوطه‬

‫‪1‬‬
‫‪syntax‬‬
‫‪3۷۷‬‬
‫تحلیل بسته بیسیم‬ ‫فصل یازدهم‬

‫فیلتر کردن یک فرکانس بخصوص‬


‫اگر مشغول بررسی یک گردآوری‪ 1‬از ترافیک هستید که شامل بستههایی از چند کانال است‪،‬‬
‫آنگاه فیلتر کردن بر اساس هر کانال منفرد بسیار سودمند خواهد بود‪ .‬برای مثال‪ ،‬اگر انتظار‬
‫دارید که ترافیک فقط در کانالهای ‪ 1‬و ‪ 6‬وجود داشته باشد‪ ،‬آنگاه میتوانید فیلتری را وارد‬
‫کنید که کل ترافیک کانال ‪ 11‬را نشان دهد‪ .‬اگر ترافیکی پیدا کردید‪ ،‬آنگاه خواهید فهمید‬
‫که مشکلی وجود دارد – شاید یک پیکربندی نادرست و یا دستگاهی موذی‪ -‬بهمنظور فیلتر‬
‫کردن در یک فرکانس بخصوص از این ترکیب فیلتر استفاده کنید‪:‬‬

‫‪radiotap.channel.freq == 2412‬‬

‫این ترکیب کل ترافیک را در کانال ‪ 1‬نشان خواهد داد‪ .‬شما میتوانید برای کانالی که‬
‫میخواهید فیلتر کنید‪ ،‬مقدار مقتضی را بهجای مقدار ‪ 2412‬قرار دهید‪ .‬جدول ‪11-2‬‬
‫فرکانسهای مرتبط با هر کانال را فهرست میکند‪.‬‬

‫جدول ‪ :11-2‬کانالهای و فرکانسهای بیسیم‬

‫‪1‬‬
‫‪compilation‬‬
‫‪3۷8‬‬
‫تحلیل بسته بیسیم‬ ‫فصل یازدهم‬

‫صدها فیلتر سودمند دیگر وجود دارند که شما میتوانید از آنها برای ترافیک شبکهی بیسیم‬
‫استفاده نمایید‪ .‬فیلترهای ربایش بیسیم بیشتر را میتوانید در ‪ Wireshark wiki‬به نشانی‬
‫‪ http://wiki.wireshark.org/‬پیدا کنید‪.‬‬

‫امنیت بیسیم‬
‫امنیت دادههای مخابره شده بزرگترین نگرانی و دغدغه به هنگام ایجاد و مدیریت کردن‬
‫شبکهی بیسیمی است که این دادهها در آن ارسال میشوند‪ .‬در خصوص دادههایی که در‬
‫هوا حرکت میکنند (و هر کسی که دانش آن را داشته باشد میتوان آنها را بگیرد)‪ ،‬بسیار‬
‫مهم و حیاتی است که دادهها رمزگذاری شده باشند‪ .‬در غیر این صورت‪ ،‬هر کسی با‬
‫‪ Wireshark‬و ‪ AirPcap‬میتواند آن را ببیند‪.‬‬

‫نکته‪ :‬وقتی الیهی دیگری از رمزگذاری – نظیر ‪ SSL‬یا ‪ SSH‬مورد استفاده قرار گرفته باشد‬
‫– آنگاه ترافیک در آن الیه رمزگذاری خواهد شد‪ ،‬و ارتباط کاربر همچنان توسط فردی با‬
‫شنودگر بسته غیر قابل خواندن خواهد بود‪.‬‬

‫روش مرجح ابتدایی برای حفظ امنیت دادههای مخابره شده از طریق شبکههای بیسیم در‬
‫تطابق با استاندارد محرمانگی معادل سیمی‪ (WEP) 1‬بود‪ .‬استاندارد ‪ WEP‬برای سالها نسبتاً‬
‫موفق بود‪ ،‬تا آنکه در مدیریت کلید رمزگذاری آن چندین نقطه ضعف پیدا شد‪ .‬برای بهبود‬
‫امنیت‪ ،‬استانداردهای جدید دیگری به وجود آمدند‪ .‬این استانداردها شامل دسترسی حفاظت‬
‫شدهی وای فای‪ (WPA) 2‬و ‪ WPA2‬هستند‪ .‬اگرچه ‪ WPA‬و بازنگری ایمنتر آن )‪(WPA2‬‬
‫هنوز هم جایز الخطا هستند‪ ،‬ولی آنها ایمنتر از ‪ WEP‬در نظر گرفته میشوند‪.‬‬

‫‪1‬‬
‫‪Wired Equivalent Privacy = WEP‬‬
‫‪2‬‬
‫‪Wi-Fi Protected Access = WPA‬‬
‫‪3۷9‬‬
‫تحلیل بسته بیسیم‬ ‫فصل یازدهم‬

‫ما در این بخش به قدری ترافیک ‪ WEP‬و ‪ WPA‬و همچنین مثالهایی از تالشهای شکست‬
‫خوردهی احراز هویت نگاهی خواهیم داشت‪.‬‬

‫احراز هویت موفق ‪WEP‬‬


‫فایل ‪ 80211-WEPauth.pcap‬حاوی نمونهای از یک اتصال موفق به یک شبکهی بیسیم‬
‫توانمند شده با ‪ WEP‬است‪ .‬امنیت در این شبکه با استفاده از یک کلید ‪ WEP‬برقرار شده‬
‫است‪ .‬این کلیدی است که شما باید برای ‪ WAP‬فراهم نمایید تا احراز هویت شود و دادههای‬
‫فرستاده شده از آن را رمزگشایی کند‪ .‬این کلید ‪ WEP‬را میتوانید بهعنوان رمز عبور شبکهی‬
‫بیسیم تصور کنید‪.‬‬
‫همان طوری که در شکل ‪ 11-11‬نشان داده شده است‪ ،‬فایل ربایش با یک ‪ challenge‬از‬
‫سوی ‪ (00:11:88:6b:68:30) WAP‬به کاربر بیسیم )‪ (00:14:a5:30:b0:af‬در بستهی ‪4‬‬
‫آغاز میشود ‪ .‬مقصود از ‪ challenge‬تعیین این امر است که آیا این کاربر بیسیم کلید‬
‫‪ WEP‬صحیح را دارد یا نه‪ .‬این ‪ challenge‬را میتوانید با بزرگ کردن سرآیند ‪ 802.11‬و‬
‫پارامترهای تگ شدهی آن ببینید‪.‬‬

‫شکل ‪ :11-11‬متن ‪ challenge‬مشکالت ‪ WAP‬به کاربر بیسیم‬

‫‪380‬‬
‫تحلیل بسته بیسیم‬ ‫فصل یازدهم‬

‫این ‪ challenge‬توسط بستهی ‪ 5‬تصدیق میشود‪ .‬سپس‪ ،‬همان طوری که در شکل ‪11-12‬‬
‫نشان داده شده است‪ ،‬این کاربر بیسیم با رمزگشایی از متن ‪ challenge‬توسط کلید ‪WEP‬‬
‫و برگرداندن آن به ‪ WAP‬پاسخ میدهد ‪.‬‬

‫شکل ‪ :12-11‬کاربر بیسیم متن ‪ challenge‬رمزگشایی شده را به ‪ WAP‬برمیگرداند‪.‬‬

‫این بسته بار دیگر در بستهی ‪ ۷‬تصدیق میشود‪ ،‬و همان طوری که در شکل ‪ 13-11‬نشان داده‬
‫شده است‪ WAP ،‬در بستهی ‪ 8‬به کاربر بیسیم پاسخ میدهد‪ .‬این پاسخ حاوی گزارشی مبنی‬
‫بر موفق بودن فرآیند احراز هویت است ‪.‬‬

‫شکل ‪ WAP :11-13‬به کاربر اطالع میدهد که احراز هویت موفق بوده است‪.‬‬

‫‪381‬‬
‫تحلیل بسته بیسیم‬ ‫فصل یازدهم‬

‫در آخر‪ ،‬پس از احراز هویت موفقیتآمیز‪ ،‬کاربر میتواند یک درخواست ارتباط را مخابره‬
‫کند‪ ،‬یک گواهی تصدیق را دریافت نماید‪ ،‬و فرآیند اتصال را تکمیل کند (همان طوری که‬
‫در شکل ‪ 14-11‬نشان داده شده است)‪.‬‬

‫شکل ‪ :14-11‬فرآیند احراز هویت که به دنبال آن درخواست و پاسخ سادهی دو بستهای قرار دارد‪.‬‬

‫احراز هویت ناموفق ‪WEP‬‬


‫در مثال بعدی‪ ،‬کاربر کلید ‪ WEP‬خود را برای اتصال به ‪ WAP‬وارد میکند‪ ،‬و پس از چندین‬
‫ثانیه‪ ،‬برنامهی کاربر بیسیم گزارش میدهد که نتوانسته به شبکهی بیسیم متصل شود‪ ،‬ولی‬
‫نمیتواند بگوید که چرا این اتفاق رخ داده است‪.‬‬
‫فایل حاصله ‪ 80211-WEPauthfail.pcap‬است‪ .‬این ارتباط‪ ،‬همانند تالش موفق‪ ،‬با ‪WAP‬‬
‫آغاز میشود که متن ‪ challenge‬را در بستهی ‪ 3‬به کاربر میفرستد‪ .‬این بسته تصدیق میشود‪،‬‬
‫و کاربر بیسیم در بستهی ‪ 5‬پاسخش را با استفاده از کلید ‪( WEP‬که توسط کاربر فراهم شده‬
‫است) میفرستد‪.‬‬
‫در این زمان‪ ،‬ما انتظار داریم تا اعالنی را مبنی بر موفق بودن احراز هویت ببینیم‪ ،‬ولی همان‬
‫طوری که در شکل ‪ 15-11‬نشان داده شده است‪ ،‬در بستهی ‪ ۷‬چیزی متفاوت میبینیم‪.‬‬

‫‪382‬‬
‫تحلیل بسته بیسیم‬ ‫فصل یازدهم‬

‫شکل ‪ :11-15‬این پیغام به ما میگوید که احراز هویت ناموفق بوده است‪.‬‬

‫این پیغام به ما میگوید که پاسخ کاربر بیسیم به متن ‪ challenge‬نادرست بوده است‪ .‬این‬
‫امر اشاره بر آن دارد که کلید ‪WEP‬ی که کاربر برای رمزگشایی از متن ‪ challenge‬استفاده‬
‫کرده است باید نادرست بوده باشد‪ .‬در نتیجه‪ ،‬فرآیند اتصال عقیم میماند‪ .‬این فرآیند باید بار‬
‫دیگر توسط کلید ‪ WEP‬مناسب تکرار شود‪.‬‬

‫احراز هویت موفق ‪WPA‬‬


‫استاندارد ‪ WPA‬نسبت به ‪ WEP‬از ساز و کار احراز هویت بسیار متفاوتی استفاده میکند‪،‬‬
‫ولی هنوز هم به کاربر تکیه میکند تا برای اتصال به شبکه کلیدی را وارد کاربر بیسیم نماید‪.‬‬
‫نمونهای از احراز هویت موفق ‪ WPA‬را میتوانید در فایل ‪ 80211-WPAauth.pcap‬پیدا‬
‫کنید‪.‬‬
‫بستهی اول در این فایل یک ‪ broadcast‬بستهی ‪ beacon‬از ‪ WAP‬است‪ .‬با بزرگ کردن‬
‫سرآیند ‪ 802.11‬این بسته به زیر پارامترهای تگ شده نگاه کنید‪ ،‬و همان طوری که در شکل‬
‫‪ 16-11‬نشان داده شده است‪ ،‬عنوان ‪ Vendor Specific‬را بزرگ کنید‪ .‬بخشی را خواهید‬
‫دید که به ویژگیهای ‪ WPA‬از ‪ WAP‬تخصیص داده است ‪ .‬این قسمت ما را قادر میسازد‬
‫تا بفهمیم که ‪ WAP‬استاندارد ‪ WPA‬و نسخه و اجرایی را پشتیبانی میکند که این استاندارد‬
‫پشتیبانی مینماید‪.‬‬

‫‪383‬‬
‫تحلیل بسته بیسیم‬ ‫فصل یازدهم‬

‫شکل ‪ :16-11‬این ‪ beacon‬ما را قادر میسازد تا بفهمیم این ‪ WAP‬احراز هویت ‪WPA‬‬
‫را پشتیبانی مینماید‪.‬‬

‫پس از دریافت این ‪ ،beacon‬کاربر بیسیم ‪ 00:14:6c:7e:40:80‬یک درخواست کاوش‪ 1‬را‬


‫برای ‪ 00:0f:b5:88:ac:82 WAP‬میفرستد و ‪ WAP‬پاسخ میدهد‪ .‬درخواستهای احراز‬
‫هویت و ارتباط بین کاربر بیسیم و ‪ WAP‬در بستههای ‪ 4‬تا ‪ ۷‬ایجاد میشوند‪.‬‬
‫امور بهواقع از بستهی ‪ 8‬سرعت میگیرند‪ .‬این جایی است که دستدهی ‪ WPA‬آغاز میشود‪،‬‬
‫و تا بستهی ‪ 11‬ادامه پیدا میکند‪ .‬این فرآیند دستدهی جایی است که پاسخ ‪challenge‬‬
‫استاندارد ‪ WPA‬واقع میشود (همان طوری که در شکل ‪ 1۷-11‬نشان داده شده است)‪.‬‬

‫شکل ‪ :1۷-11‬این بستهها بخشی از دستدهی ‪ WPA‬هستند‪.‬‬

‫‪1‬‬
‫‪probe‬‬
‫‪384‬‬
‫تحلیل بسته بیسیم‬ ‫فصل یازدهم‬

‫دو ‪ challenge‬و پاسخ وجود دارد‪ .‬هر کدام از آنها میتواند بر اساس فیلد ‪Replay‬‬
‫‪ Counter‬در زیر سرآیند ‪ 802.1x Authentication‬تطبیق داده شود (همان طوری که در‬
‫شکل ‪ 18-11‬نشان داده شده است)‪ .‬توجه داشته باشید که مقدار ‪ Replay Value‬برای دو‬
‫بستهی دستدهی نخست ‪  1‬و برای دو بستهی دستدهی دوم ‪  2‬است‪.‬‬

‫شکل ‪ :18-11‬فیلد ‪ Replay Counter‬به ما کمک میکند تا ‪challenge‬ها و پاسخها را جفت کنیم‪.‬‬

‫‪385‬‬
‫تحلیل بسته بیسیم‬ ‫فصل یازدهم‬

‫پس از تکمیل دستدهی ‪ WPA‬و موفق شدن احراز هویت‪ ،‬ارسال دادهها بین کاربر بیسیم‬
‫و ‪ WAP‬آغاز میشود‪.‬‬

‫احراز هویت ناموفق ‪WPA‬‬


‫همانند ‪ ،WEP‬به این نگاه خواهیم کرد که چه اتفاقی میافتد وقتی که یک کاربر کلید ‪WPA‬‬
‫خود را وارد میکند و برنامهی کاربر بیسیم بدون اشاره به مشکلی گزارش میدهد که‬
‫نمیتواند به شبکهی بیسیم متصل شود‪ .‬فایل حاصله ‪ 80211-WPAauthfail.pcap‬است‪.‬‬
‫بار دیگر‪ ،‬فایل ربایش به شیوهای همسان با احراز هویت موفق ‪ WPA‬آغاز میشود که همین‬
‫پیشتر مورد بررسی قرار دادیم‪ .‬این امر شامل درخواستهای کاوش‪ ،‬احراز هویت‪ ،‬و ارتباط‬
‫است‪ .‬دستدهی ‪ WPA‬در بستهی ‪ 8‬آغاز میشود‪ ،‬ولی در این مورد‪ ،‬میتوانیم ببینیم که در‬
‫اینجا بهجای چهار بستهی دست دهی در تالش موفقیتآمیز احراز هویت‪ ،‬هشت بسته وجود‬
‫دارد‪.‬‬
‫بستههای ‪ 8‬و ‪ 9‬معرف دو بستهی اول دیده شده در دستدهی ‪ WPA‬هستند‪ .‬اما‪ ،‬در این مورد‪،‬‬
‫متن ‪ challenge‬که از کاربر به ‪ WAP‬فرستاده شده نادرست است‪ .‬در نتیجه‪ ،‬همان طوری‬
‫که در شکل ‪ 19-11‬نشان داده شده است‪ ،‬این توالی در بستههای ‪ 10‬و ‪ 12 ،11‬و ‪ ،13‬و ‪ 14‬و‬
‫‪ 15‬تکرار میشود‪ .‬هر درخواست و پاسخ را میتوان با استفاده از مقدار ‪Replay Counter‬‬
‫جفت کرد‪.‬‬

‫شکل ‪ :19-11‬بستههای ‪ EAPOL‬افزوده در اینجا نشان دهندهی احراز هویت ‪ WPA‬ناموفق است‪.‬‬

‫ارتباط پس از چهار بار تالش احراز هویت لغو میشود‪ .‬همان طوری که در شکل ‪20-11‬‬
‫نشان داده شده است‪ ،‬کاربر بیسیم در بستهی ‪ 16‬از ‪ WAP‬رفع احراز هویت میکند ‪.‬‬

‫‪386‬‬
‫تحلیل بسته بیسیم‬ ‫فصل یازدهم‬

‫شکل ‪ :20-11‬کاربر پس از ناموفق بودن دستدهی ‪ WPA‬رفع احراز هویت میکند‪.‬‬

‫آخرین نظرات‬
‫اگرچه شبکههای بیسیم هنوز هم بهطور گستردهای ناایمن هستند‪ ،‬ولی این امر روند استفاده‬
‫از آنها را در انواع محیطهای سازمانی کند نکرده است‪ .‬همچنان که تمرکز ما به سوی ارتباط‬
‫بدون سیم و کابل چرخش پیدا میکند‪ ،‬حیاتی است که بتوانیم دادهها را در شبکههای بیسیم‪،‬‬
‫و همچنین کابلی‪ ،‬ربایش و تحلیل نماییم‪ .‬مهارتها و ایدههای آموزش داده شده در این فصل‬
‫به هیچ عنوان جامع و فراگیر نیستند‪ ،‬ولی میتوانند نقطهی پرشی را در کمک به شما در‬
‫درک پیچیدگیهای رفع ایراد از شبکههای بیسیم توسط تحلیل بسته فراهم آورند‪.‬‬

‫‪38۷‬‬
PRACTICAL PACKET
ANALYSIS
2ND EDITION
Using Wireshark to Solve
Real-World Network
Problems

by Chris Sanders

San Francisco

You might also like