Professional Documents
Culture Documents
تحلیل داده در وایرشارک
تحلیل داده در وایرشارک
در
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تحلیل بستهای بیسیم
3
کار ببرید .همچنین چارتها ،دیاگرامها ،و متدولوژهایی منحصر به فردی که در زمان کار
تحلیل بسته بهعنوان مرجع به کمک شما میآید .همه فایلهای ربایش شده در این کتاب در
آدرس http://www.nostarch.com/packet2.htmزیر قابل دسترسی خواهد بود.
برای افزایش کارآیی کتاب توصیه میکنم این فایلها دانلود کنید و بهعنوان مثال شروع به
تحلیل نمایید.
4
فصل اول
تحلیل بسته داده
تحلیل بسته داده در شبکه فصل اول
1
Router
2
Malicious
6
تحلیل بسته داده در شبکه فصل اول
Sniff 1به معنی بو کشیدن است ولی در دنیای تحلیل داده و شبکه به نوعی به معنی نظارت بر داده ها از طریق ردیابی و بو
کشیدن تفسیر میشود .به همین دلیل نزدیکترین واژه به این عمل ،واژه شنود انتخاب شده است .مترجم
2
Pick
۷
تحلیل بسته داده در شبکه فصل اول
1
Command line
8
تحلیل بسته داده در شبکه فصل اول
پشتیبانی نرمافزار:
بعد از تسلط کافی در اصول نرم افزارشنود بسته اغلب با مشکالتی در طول کار با برنامه
برمیخورید و نیاز به پشتیبانی دارید .برای ارزیابی پشتیبانی نرمافزار ،به مستندات تکمیلی،
اطاقهای گفتگو ،و لیستهای ایمیل نگاهی بیندازید .هرچند ممکن است نرمافزارهای
رایگان مانند Wiresharkتوسط تولیدکننده پشتیبانی نشود اما جامعه کاربران که از این
نرمافزار بهره میگیرند این خأل را جبران میکنند.
این جوامع کاربران ،حامیان صفحات بحث ،وبالگ و اطالعرسانیهایی را به وجود آوردهاند
که به شما در استفاده از این نرمافزار کمک میکند.
پشتیبانی از سیستمعامل
متأسفانه اکثر برنامههای شنود بسته تمام سیستم عاملها را پشتیبانی نمیکنند .بنابراین برنامهای
را استفاده کنید که سیستم مورد نظر شما را پشتیبانی میکند و اگر مشاور و متخصصی هستید
که بایستی تحلیل در همه سیستم عاملها داشته باشید ،بایستی مدلی از شنود بسته را انتخاب
کنید که روی همه سیستم عاملها کار کند .در نظر داشته باشید که گاهی ممکن است شما
بستهای را از یک دستگاه تحلیل کنید و به دستگاهی با سیستم عامل متفاوت بفرستید که این
موضوع خود سبب خواهد شد تا برای هر سیستم عامل از نرم افزار شنود متفاوتی استفاده
کنید.
9
تحلیل بسته داده در شبکه فصل اول
جمعآوری
در اولین گام برنامه شنود ،داده باینری را از درون کابل جمعآوری میکند .معموالً این کار
با سوئیچینگ رابط 1شبکه انتخابی در حالت بیقاعده انجام میشود.
در این حالت کارت شبکه فقط به ترافیک آدرسدهی شده گوش نمیکند بلکه به تمام
ترافیک شبکه گوش میکند.
تبدیل
در این گام داده شنود شده در گام اول به فرم قابل خواندن تبدیل میشود .این جایی است
که اکثر نرم افزارهای پیشرفته شنود بسته خط دستوری متوقف میشوند .در این لحظه داده
شبکه به فرمی است که در الیه اول یا فیزیکی تفسیر شده ،و عمده تحلیل برای کاربر نهایی
واگذار میشود.
تجزیهوتحلیل
سومین و آخرین گام یک تجزیه و تحلیل دقیق داده بسته دریافتی است.نرمافزارتحلیلگر با
شنود ،داده شبکه را گرفته و با بازبینی پروتکل آن بر اساس اطالعات استخراج شده شروع به
تجزیه و تحلیل خصوصیات پروتکل آن مینماید.
پروتکلها شبکه
شبکههای مدرن امروزی از سیستمهای گوناگونی ساخته شدهاند که بر روی سختافزارهای
متفاوتی اجرا میشوند .برای کمک به این ارتباط ما از مجموعهای از زبانهای رایج به نام
1
interface
10
تحلیل بسته داده در شبکه فصل اول
1
Protocol
2
Protocol Stack
11
تحلیل بسته داده در شبکه فصل اول
یادداشت :مدل OSIدر سال 1983توسط سازمان بینالمللی استانداردسازی منتشر شد .با
سند شماره ۷498 ISOنامیده میشود .این مدل مورد حمایت صنایع و توسعهدهندگان
پروتکل نبوده .بنابراین OSIتنها مدل شبکه موجود نیست ،بعضی افراد مدل شناختهشده
TCP/IPمحصول وزارت دفاع آمریکا را ترجیح میدهند.
Layer
1
12
تحلیل بسته داده در شبکه فصل اول
13
تحلیل بسته داده در شبکه فصل اول
14
تحلیل بسته داده در شبکه فصل اول
باید بدانید که مدل OSIبیشتر از یک مدل استاندارد پیشنهادی نیست .همینطور در این کتاب
که پیش میرویم متوجه میشوید که کنش پروتکلها در الیههای مختلف ،شیوههای برخورد
با مسائل شبکه را شکل میدهد.
بهعنوان مثال موضوعات مسیریاب مسائل الیه سوم و موضوعات نرمافزار مسائل الیه هفت
شناخته میشوند.
یادداشت :در یک بحث کاری ،همکاری به من گفت کاربری از اینکه نمیتواند به منابع
شبکه دسترسی داشته باشد شاکی بود .دلیل مسئله وارد کردن خطای کلمه عبور بود.
به همین دلیل همکارم به این مسئله الیه 8نسبت داد .الیه 8یکالیه غیر رسمی برای
کاربر است.
دادهها چه طور در مدل OSIجریان مییابند؟ انتقال اولیه داده از الیه کاربرد در سیستم انتقال
شروع میشود .داده مسیرش را رو به پائین تا رسیدن به الیه فیزیکی دنبال میکند تا به نقطه
ارسال الیه فیزیکی به گیرنده سیستم مقصد برسد .پس از آن همین جهت را معکوس طی
کرده تا به الیه کاربرد در سیستم دیگر برسد.
این سرویس توسط پروتکلهای مختلف در الیههای مدل OSIبهصورت غیرتکراری ارائه
میشود .برای مثال اگر پروتکلی دریک الیه سرویس ویژهای ارائه کند این سرویس در سایر
الیهها ارائه نخواهد شد .پروتکلها در الیههای مختلف ممکن است جزئیاتی با اهداف مشابه
داشته باشند ولی عملکرد آنها در هر الیه کمی متفاوت است .پروتکلها در الیههای مشابه
در سیستم ارسال و دریافت دیگر را همتا میگویند .برای مثال اگر الیه ۷در کامپیوتر
ارسالکننده مسئول رمزنگاری داده است ،در کامپیوتر گیرنده نیز الیه ۷مسئول رمزگشایی
میباشد.
15
تحلیل بسته داده در شبکه فصل اول
در شکل 2-1نمایش گرافیکی مدل OSIبرای تبادل داده میان دو کاربر را نمایش میدهد.
همانطور که مشاهده میکنید داده از باال به پائین از یک کاربر به دیگری ارسال و پس از
رسیدن به کاربر دوم ،همان مسیر را بهصورت معکوس طی میکند.
هر الیه در مدل OSIفقط قابلیت ارتباط با الیه باالیی و پائینی خود را دارد .برای مثال الیه 2
میتواند فقط از الیه 1و 3ارسال و دریافت داشته باشد.
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۷
تحلیل بسته داده در شبکه فصل اول
یادداشت :طراحی باال به پائین مدل 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بهصورت یکپارچه طراحی میشوند.
1
Rack
20
تحلیل بسته داده در شبکه فصل اول
شکل 5-1مثالی بهکاربرده که کامپیوتر Aبه کامپیوتر Bداده انتقال میدهد .وقتی کامپیوتر
Aاین داده را منتقل میکند همه کامپیوترهای متصل به هاب آنرا دریافت میکنند ولی فقط
کامپیوتر Bآنرا میپذیرد و مابقی دور میاندازند.
بهعنوان تشابه فرض کنید که برای همه کارمندانتان در شرکت ایمیلی بهعنوان " توجه همه
کارمندان بازاریابی" ارسال میکنید ،بهجای اینکه به اشخاصی بفرستید که فقط در بخش
بازاریابی هستند .همه کارمندان ازجمله بخش بازاریابی ایمیل را میبینند و باز میکنند ولی
آنها به آن توجه میکنند که متعلق به آن میزبان و سایرین آن را پاک میکنند .بنابراین
میبینید این سبب تولید مقادیر زیادی ترافیک غیرضروری و اتالف وقت خواهد بود .این
دقیقاً همان کاری است که هاب انجام میدهد.
بهترین جایگزین هابها در شبکههای فشرده و ظرفیت باال سوئیچها هستند که ارتباط دوطرفه
(ارسال و دریافت همزمان) میباشند.
21
تحلیل بسته داده در شبکه فصل اول
سوئیچ
مانند هاب ،سوئیچ برای تکرار بستهها طراحیشدهاند .اگرچه مثل هاب نیستتند ،بهجای ارسال
داده به هر پورتی ،سوئیچ داده را به تنها پورتی ارسال میکند که باید برود .سوئیچها شبیه
هابها هستند شکل 6-1را ببینید.
چند تا سوئیچ مطرح در بازار مانند Ciscoبا نرمافزارهای خاص و یا رابط وب ،مدیریت
میشوند .به این سوئیچها معموالً سوئیچهای قابلکنترل گویند.
سوئیچهای قابلکنترل خصوصیات گوناگونی را ارائه میکنند که در مدیریت شبکه بسیار
مفید میباشد ازجمله قابلیت فعال و غیرفعال کردن پورتهای مشخص ،دیدن مشخصات
پورت ،تغییرات در پیکربندی ،و کنترل از راه دور.
سوئیچها وقتی قرار باشد که انتقال بسته را انجام دهند عملکرد پیشرفتهای از خود ارائه
میدهند .سوئیچ برای اینکه بتواند با هر دستگاه مستقیماً ارتباط داشته باشد بایستی هر دستگاه
را از روی آدرس MACآن شناسایی کند ،به این معنی است که باید در سطح پیوند داده در
مدل OSIعمل کند.
سوئیچها آدرس الیه 2هر دستگاه متصل را در جدول MACذخیره میکنند که شبیه پلیس
ترافیک عمل میکند .وقتی یک بسته در حال انتقال است ،سوئیچ سرآیند آدرس الیه 2آنرا
میخواند و از جدول MACبهعنوان مرجعی برای انتقال بسته به پورت مقصد استفاده میکند.
22
تحلیل بسته داده در شبکه فصل اول
سوئیچها بستهها را به پورتهای مشخصی میفرستند بنابراین بهطور عمدهای از ترافیک شبکه
کاسته میشود .شکل ۷-1جریان ترافیک در یک سوئیچ را نمایش میدهد.
گویند .چندین نوع پروتکلهای مسیریابی دستوردهی میکنند تا چگونه انواع مختلفی از
بستهها در انواع شبکهها مسیردهی شوند.
مسیریابها معموالً از آدرسدهی الیه )IP( 3برای شناسایی دستگاههای روی شبکه استفاده
میکنند.
یک راه برای درک مفهوم مسیریابی ،قیاس آن با مکان زندگی و خیابانهای اطراف شماست.
خانهها و آدرسهایشان را بهعنوان کامپیوتر و هر خیابان را بهعنوان بخشی از شبکه در نظر
بگیرید ،همانطور که در شکل 9-1نشان دادهشده .از خانهتان در خیابانتان میتوانید بهراحتی
به همسایهات ارتباط برقرار کنید .این شبیه کاری است که سوئیچ اجازه میدهد تمام
کامپیوترهای درون یک شبکه باهم ارتباط داشته باشند .اگرچه ارتباط با یک همسایه در
خیابان دیگر شبیه ارتباط با کامپیوتری است که در همان شبکه نیست.
24
تحلیل بسته داده در شبکه فصل اول
در شکل 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ارتباط برقرار کند ،داده منتقلشده باید از مسیریاب
عبور کند.
طبقهبندی ترافیک
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
در شکل دو دامنه پخش فراگیر در شبکه کوچک را مالحظه میکنید .بستههای پخش فراگیر
تا زمانی که به مسیریاب برسند در میدان پخش فراگیر خود میچرخند.
مثال اخیر بیان میکند که مسیریابی به عناصر مجاور و همسایگی مرتبط بوده و درک درستی
ازکار میدان پخش فراگیر به ما میدهد.
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
Capture
32
نفوذ به شبکه فصل دوم
هدف از این فصل کمک به درک بهتر شما از قرار دهی شنودگر بسته در انواع گوناگون
توپولوژیهای شبکه است .اما ابتدا بایستی نگاهی دقیق به بستههای عبوری از کابل بیاندازیم.
زندگی بیقاعده
قبل از شروع به شنود بستهها روی شبکه به کارت رابط شبکه که درایور یا راهانداز حالت
بیقاعده 1را پشتیبانی میکند نیاز دارید .درایور حالت بیقاعده به کارت شبکه اجازه دیدن
کلیه بستههای عبوری از کابل را میدهد.
همانگونه که در فصل یک آموختید ،در پخش ترافیک شبکه بسیار عادی است که کاربر
بستههایی را دریافت کند که برای وی فرستاده نشده ،پروتکل ARPمشخص میکند که کدام
آدرس MACمختص به کدام IPاست ،این از اجزاء ثابت شبکه است ،و مثالی عالی از
ارسال ترافیک به کارت شبکه شما در عوض گیرنده مقصد میباشد.
برای یافتن آدرسهای، MACپروتکل ARPیک بسته فراگیر به همه دستگاهها در محدوده
پخش خود با امید پاسخ صحیح کاربران ارسال میکند .دامنه یا محدوده پخش (شامل عناصر
شبکه که بتوانند با یکدیگر بدون نیاز به مسیریاب و بهطور مستقیم باهم ارتباط داشته باشند)
شامل چندین کامپیوتر است ،اما فقط یکی از کاربران در محدوده بایستی به بسته ARP
ارسالشده عالقهمند باشد .اگر هر کامپیوتر ARPرا پردازش کند این واقعاً سبب ناکارآمدی
شبکه خواهد شد .کارت شبکه یا NICهر کامپیوتر وقتی متوجه شود که بسته ARPمتعلق
به او نیست بهجای اینکه آنرا به CPUبفرستد آنرا دور میاندازد .دور انداختن بستههای
ARPسبب افزایش قابلیت پردازش سیستم میشود ولی موجبات دردسر تحلیلگر بسته را به
وجود میآورد .بهعنوان یک تحلیلگر معموالً دوست داریم عبورکلیه بستهها از کابل را رصد
کنیم و هیچ کدام از قطعه اطالعات تعیین کننده را از دست ندهیم.
1
Promiscuous mode
33
نفوذ به شبکه فصل دوم
با استفاده از حالت بیقاعده کارتهای شبکه میتوانیم از ربایش همه ترافیک مطمئن باشیم.
کارت شبکه در حالت بیقاعده همه بستههای عبوری از کارت شبکه را به پردازنده میزبان
هدایت میکند بدون اینکه به آدرسدهی بستهها توجه داشته باشد .وقتی بسته به پردازنده
برسد میتوان آنرا با برنامههای ربایش بسته برای تحلیل ربایش کرد.
اکثر کارت شبکههای امروزی از حالت بیقاعده پشتیبانی میکنندWireshark ،نیز داری
درایور WinPcap/LibPcapاست که مستقیماً اجازه سوئیچ شدن پورت شبکه به حالت
بیقاعده را میدهد( .توضیحات بیشتر در فصل )3
به دلیل اهداف این کتاب بایستی کارت شبکه و سیتم عاملی که حالت بیقاعده را پشتیبانی
میکند داشته باشید .تنها زمانی نیاز به داشتن شنود در حالت بیقاعده ندارید که بخواهید
ترافیک ارسالی رابط آدرس MACرا که مشاهده میکنید ،شنود کنید.
یادداشت :بیشتر سیستمهای عامل به شما اجازه استفاده از کارت شبکه در حالت بیقاعده
را نمیدهند مگر اینکه امتیاز کاربران عالیرتبه را داشته باشید .اگر بهطور قانونی نمیتوانید
این امتیاز را برای یک سیستم به دست آورید ،بنابراین شما شانس انجام شنود بر روی شبکه
موردنظر را ندارید.
34
نفوذ به شبکه فصل دوم
یادداشت :روزنه دید همانطور که در سراسر این کتاب در دیاگرامهای گوناگون نشان
دادهشده دستگاههایی درون شبکه است که با شنود بسته میتوانید ترافیک آنها را مشاهده
کنید.
متأسفانه برای ما شبکههای دارای هاب به خاطر سردردی که برای مدیر شبکه به وجود می-
آورند بسیار نادر هستند .به دلیل اینکه در هر زمان یک دستگاه متصل به هاب قادر به مخابره
است بنابراین باید با سایر دستگاهها به رقابت بپردازد .وقتی دو و یا چند دستگاه همزمان
مخابره کنند تصادم بسته به وجود میآید ،همانطور که در شکل 2-3نشان دادهشده ،نتیجه
ممکن است از دست دادن بستهها باشد ،دستگاهها با ارسال مجدد بسته خطا را اصالح میکنند
ولی سبب باال رفتن ترافیک و ازدحام و تصادم بیشتر شبکه میشود .وقتی سطح ترافیک و
تعداد ازدحام و تصادم افزایش مییابد دستگاه ممکن است برای ارسال بسته سه یا چهار بار
تالش کند ،کاهش کارآرایی شبکه کامالً چشمگیر است .به همین دلیل بهراحتی میتوان
دلیل استفاده شبکههای مدرن از سوئیچ را در مقیاسهای بزرگ و کوچک فهمید.
35
نفوذ به شبکه فصل دوم
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
نفوذ به شبکه فصل دوم
وقتی انعکاس پورت را انجام میدهید ،از توان عبوردهی پورتهای مورد نظرآگاه باشید.
بعضی ازتولیدکنندگان سوئیچ امکان انعکاس چند پورت روی یک پورت بخصوص را
میدهند ،که وقتی ارتباط بین دو یا چند دستگاه روی یک سوئیچ را تحلیل میکنیم بسیار
مفید است .بگذارید به روش ریاضی نشان دهیم چه اتفاقی میافتد .اگر شما یک سوئیچ 24
پورت داشته و 23پورت تمام دوطرفه Mbps 100را روی یک پورت انعکاس دهید ،بهطور
بالقوه جریان داده Mbps 4600روی آن پورت دارید .این خیلی فراتر از آستانه فیزیکی هر
پورت است ،بنابراین اگر ترافیک به حد مشخصی برسد سبب گمشدن بستهها و یا کند شدن
شبکه میشود .در این شرایط ،سوئیچها کامالً بستههای مازاد را پایین میآورد یا مدارات
داخلی را متوقف میکند تا از ارتباط همه با همدیگر جلوگیری کند .مطمئن شوید! وقتی
سعی دارید ربایشتان را انجام دهید این وضعیت ،اتفاق نمیافتد.
هاب بیرونی
روش دیگر ربایش ترافیک دستگاه هدف در شبکه سوئیچ ،هاب بیرونی 1است .این تکنیک
با اتصال هاب به شبکه ،شنودکننده و کامپیوتر هدف را به آن شبکه متصل میکنید.
اکثر افراد فکر میکنند هاب بیرونی یک تقلب است ولی بهترین راهحلی است زمانی که
نمیتوانید انعکاس پورت را اجرا کنید ولی هنوز دسترسی فیزیکی به دستگاه هدف دارید،
1
Hubbing Out
39
نفوذ به شبکه فصل دوم
که به سوئیچ متصل است .برای هاب بیرونی همه چیزی که نیاز دارید چند متر کابل شبکه و
سوکت و یک هاب است .وقتی سختافزارتان آماده شد به مراحل زیر عمل کنید.
-1سوئیچی که دستگاه هدف به آن متصل است را بیابید وسوکت دستگاه هدف را از
آن جدا کنید.
-2سوکت خارجشده از دستگاه هدف را به هاب متصل کنید.
-3توسط کابل دیگر تحلیگر را به هاب متصل نمایید.
-4دستگاه هدف جدا شده را به هاب وصل کنید.
حاال دستگاه هدف و تحلیلگر در یک دامنه پخش پیام شبکه قرار دارند و همه ترافیک
دستگاه هدف توسط تحلیلگر ربایش میشود .شکل 2-6
در اکثر حاالت هاب بیرونی ارتباط دوطرفه دستگاه هدف را به یکطرفه تقلیل میدهد.
بنابراین این روش مناسبی برای اتصال (نفوذ) به شبکه نیست ،گاهی که سوئیچ انعکاس پورت
40
نفوذ به شبکه فصل دوم
را پشتیبانی نمیکند راهی بهجز این روش نیست .در نظر داشته باشید که هابتان یک اتصال
برق نیز میخواهد ،که در مواردی یافتنش مشکل است.
یادداشت :برای یادآوری معموالً هشدار دادن به کاربر دستگاهی که میخواهید کابلش را از
سوکت خارج کنید ،کار خوبی است بهخصوص اگر این کاربر رئیس هیات مدیره باشد.
1این دستگاه برای مانیتورینگ و نظارت در ترافیک شبکه به صورت دستی و قابل حمل طراحی شده است .
41
نفوذ به شبکه فصل دوم
بستههای آن را دارید .تفاوت با هاب در این است که از سختافزاری بهره میگیرید که
بهصورت اختصاصی برای تحلیل شبکه طراحیشده است.
دو نوع دستگاه Tapموجود است .نوع متراکم و غیرمتراکم .هر دو نوع برای ربایش ترافیک
مابین دستگاههای شبکه قرار میگیرند .تفاوت اصلی بین نوع متراکم و غیرمتراکم ،این است
که نوع غیرمتراکم 4پورت دارد ،همانطور که در شکل 2-۷نشان دادهشده است ولی نوع
متراکم 3پورت دارد.
در نظر داشته باشید که این دستگاه نیز نیاز به کابل برق دارد ولی مدلهایی دارد که برای
کارهای محدود بوده و از باطری استفاده میکند.
دستگاه Tapمتراکم
دستگاه Tapمتراکم سادهترین ،ازنظر نوع کاربرد است .این دستگاه یک پورت monitor
فیزیکی برای شنود دو جهته دارد .برای ربایش همه ترافیک در یک کامپیوتر متصل به سوئیچ
بهدستگاه دستگاه Tapمتراکم گامهای زیر را دنبال کنید.
-1اتصال کامپیوتر را از سوئیچ جدا کنید.
-2یک طرف کابل شبکه را به کامپیوتر و طرف دیگر را به پورت " "inدستگاه Tap
متصل کنید.
42
نفوذ به شبکه فصل دوم
-3یک کابل شبکه دیگر به پورت " "Outدستگاه Tapمتصل و سر دیگر آنرا به
سوئیچ شبکه متصل کنید
-4کابل آخر را به پورت " "Monitorدستگاه Tapمتصل و سر دیگر را به کامپیوتری
وصل کنید که میخواهید بهعنوان شنودگر شما عمل کند.
دستگاه Tapمتراکم مانند شکل 2-8بایستی متصل شود .در این نقطه شنودگر قادر است تمام
ترافیک ورودی و خروجی کامپیوتری را که به دستگاه Tapمتصل است را ربایش کند.
دستگاه Tapغیرمتراکم
دستگاه Tapغیرمتراکم از دستگاه نظارت متراکم اندکی پیچیدهتر است ،اما در هنگام ربایش
ترافیک انعطاف پذیر است .بهجای یک پورت مانیتور 2 ،پورت مانیتور دارد .یکی برای شنود
ترافیک در یک جهت از کامپیوتر متصل شده به دستگاه Tapو دیگری بلعکس .برای ربایش
همه ترافیک از یک کامپیوتر متصل به سوئیچ گامهای زیر را دنبال کنید.
43
نفوذ به شبکه فصل دوم
44
نفوذ به شبکه فصل دوم
به دوکارت شبکه روی کامپیوتر شنودگر ندارد .اگرچه در شرایطی که حجم زیادی از
ترافیک ربایش میکنید و یا ترافیک ورودی و خروجی اهمیت دارد ،دستگاه Tapغیرمتراکم
سودمند هستند .میتوانید دستگاه Tapگوناگونی به کار ببرید ،مدلهای ساده اترنت تا
مدلهای فیبرنوری در پنج رنج مختلف ارائه میشوند.
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برای بازیابی سریع ذخیره میکند.
یادداشت :بهعنوان یادداشت آخر در مورد آلودهسازی حافظه ARPبایستی مراقب سیستمی
که این پروسه را روی آن پیادهسازی میکنید باشید .برای مثال از این تکنیک برای دستگاه
هدفی که سرویسدهنده فایل با استفاده خیلی باال از شبکه است .وقتی لینک هدف 1
گیگابیت در ثانیه است و دستگاه شنود شما فقط قادر است 100مگابیت در ثانیه را شنود
46
نفوذ به شبکه فصل دوم
کند .وقتی دست به چنین کاری میزنید همه ترافیک شبکه از برنامه تحلیلگر شما عبور
میکند و تحلیلگر شما را تبدیل به یک گلوگاه میکند .که سبب اثر انکار سرویس و خطا
در تحلیل داده میشود.
4۷
نفوذ به شبکه فصل دوم
شکل : 11-2کامپیوتر روی شبکه Dنمیتواند با کامپیوتر در شبکه Aارتباط برقرار کند
ممکن است بخواهید ترافیک روی دستگاه شبکه Dرا شنود کنید .وقتی این کار را انجام
میدهید میبینید که ترافیک به بخش Aانتقال مییابد ولی بدون دریافت تأیید انتقال وقتی
شبکه باالدست را جهت یافتن منبع مشکل شنود میکنید ،مشاهده میکنید که ترافیک توسط
مسیریاب شبکه Bدور انداخته میشود .سرانجام این موضوع شما را به تنظیمات مسیریاب
هدایت میکند که با حل آن معمای بزرگ حل میشود .این یک مثال ساده از اینکه چرا
گاهی الزمه ترافیک چند دستگاه در بخشهای مختلف به دلیل یافتن جزئیات ،شنود شود.
48
نفوذ به شبکه فصل دوم
استفاده از Cain&Abel
وقتی در تالش برای آلودهسازی حافظه ARPهستید اولین گام بدست آوردن ابزار مورد نیاز
و گردآوری بعضی دادهها است .برای ارائه خود از ابزار امنیتی رایج به نام Cain&Abelاز
سایت www.oxid.itاستفاده میکنیم ،این ابزار توسط ویندوز قابل پشتیبانی است .این
برنامه را دانلود و نصب کنید .وقتی روی گزینه snifferکلیک کنید جدولی خالی مانند شکل
11-2مشاهده میکنید.
برای تکمیل این جدول بایستی برنامه داخلی شنود را فعال تا شبکه را برای یافتن میزبانها
اسکن کنید .برای این کار مراحل زیر را انجام دهید.
-1دومین آیکون از سمت چپ در نوار ابزار را که شباهت به کارت شبکه دارد ،را
کلیک کنید.
49
نفوذ به شبکه فصل دوم
-2از شما در مورد رابط مورد نظر برای شنود پرسش میشود .این رابط ،رابط شبکهای
است که قصد آلوده کردن حافظه ARPآن را دارید .این رابط را انتخاب کنید و
Okرا کلیک کنید
-3برای ساختن لیست میزبانهای قابل دسترسی در شبکه بر روی آیکون( )+کلیک
کنید .جعبه دیالوگ اسکنر آدرس MACظاهر میشود .در شکل 12-2نشان
دادهشده .با انتخاب دکمه رادیویی میتوانید همه زیر میزبانها را انتخاب کنید و یا
اینکه محدوده مشخصی از آدرس IPرا انتخاب و سپس OKکنید.
در این مرحله تمام دستگاههای موجود در شبکه شما اسکن شده و در جدول آدرس MAC
IP ،آنها و اطالعات شرکت سازنده آنها به نمایش در میآید .این لیستی است که وقتی
میخواهید روی آلودهسازی حافظه ARPکار کنید به آن نیاز دارید.
در پایین پنجره برنامه snifferچندین گزینه دیگر قرار دارد .اکنون باید لیست خود برای کار
برروی ARPاز تب ) (ARP Poision Routingرا بسازید.
50
نفوذ به شبکه فصل دوم
با کلیک روی تب به پنجره ARPبروید .در پنجره ARPبا دو جدول خالی روبه رو میشوید.
بعد از اینکه گامهای اولیه تنظیمات را تکمیل کردید .جدول باالیی دستگاههایی را که توسط
ARPآلوده شدهاند را نشان میدهد .جدول پایین کلیه ارتباطات بین دستگاههای آلوده شده
را نشان میدهد .برای تنظیمات آلودهسازی مراحل زیر را انجام دهید.
-1با کلیک در بخش باالیی عالمت ( )+در نوار ابزار ،پنجره ظاهر میشود و روی آن
کلیک کنید.
-2پنجره ظاهر شده دارای دو پنل است .در پنل سمت چپ تمام میزبانهای قابل
دسترسی در شبکه خود را مالحظه میکنید .برروی IPهدف که قصد شنود
ترافیک آنرا دارید کلیک کنید .در پنل سمت راست لیست همه میزبانها به جز
آدرس IPماشین هدف را نشان میدهد.
-3در پنل راست برروی آدرس IPمسیریاب که باالدست دستگاه هدف است
کلیک کنید .و در انتها OKرا کلیک کنید .همانطور که در شکل 13-2نشان
دادهشده ،حال IPهر دو دستگاه در جدول باالیی از پنجره برنامه اصلی لیست
میشود.
51
نفوذ به شبکه فصل دوم
-1برای تکمیل پروسه آیکون زرد و سیاه در نوار ابزار را کلیک کنید .این باعث
فعال شدن وآلوده کردن حافظه ARPمیشود و به شما اجازه میدهد بهعنوان
فردی در میان به تحلیل کلیه ترافیک بین مسیریاب باالدست و دستگاه هدف
بپردازید.
اکنون بایستی قادر باشید نرمافزار شنودگر خود را آتش کنید و پروسه تحلیل را شروع کنید.
وقتی ربایش ترافیک را به پایان رساندید ،بهسادگی برروی آیکون زرد و سیاه رنگ کلیک
کنید تا آلودهسازی حافظه ARPمتوقف شود .
52
نفوذ به شبکه فصل دوم
مانند سرور فایل با لینک 1گیگا بیت ،به کار میبرد از این تکنیک استفاده نکنید .سعی کنید
از این تکنیک فقط برای لینکهای 100مگا بیت استفاده کنید .
وقتی از این تکنیک استفاده میکنید همه ترافیکی که قبالً از دستگاه هدف عبور میکرد
اکنون از دستگاه شما عبور میکند .ممکن است کارت شبکه شما قادر به مدیریت این
ترافیک نباشد و دستگاه شما را به نقطه گلوگاه ترافیک تبدیل کند .این مسیریابی ممکن
باعث اثر DOSدر سیستمی که شما تحلیل میکنید شود و در کل باعث کاهش کارایی شبکه
و ایجاد خطا در تحلیل داده میشود.
یادداشت :میتوانید با خصوصیتی به نام مسیریابی نامتقارن 1از عبور کلیه ترافیک از سیستم
http://www.oxid.it/ca_um/topics/apr.htm تحلیلگر اجتناب کنید .برای اطالعات بیشتر به
مراجعه نمایید.
1
asymmetric routing
53
نفوذ به شبکه فصل دوم
قصد داریم حل کنیم این است که زیر شبکه ،شبکه Dقادر به ارتباط با دستگاههای شبکه
Aنیست.
اگر ترافیک دستگاهها در شبکه Dرا شنود کنید که مشکل ارتباط با دستگاهها در سایر
شبکهها را دارند ،ممکن است به وضح مشاهده کنید که داده به بخشهای دیگر شبکه انتقال
مییابد ولی برنمیگردد .اگر در قراردهی شنودگر خود تجدید نظر کنید و شروع به شنود
ترافیک در بخش باالدستی (شبکه )Bنمایید تصویر دقیقتری از آنچه اتفاق میافتد خواهید
داشت.در این نقطه ممکن است ترافیک کاهش یابد و یا به شکل غیردرستی توسط مسیریاب
شبکه Bمسیریابی شود .سرانجام این شما را به تنظیمات مسیریاب هدایت میکند که وقتی
حل شد مشکل بزرگی برطرف میشود .اگرچه این سناریو کمی حوصله سربر است ،پند
داستان این است که وقتی با چند مسیریاب و بخشهای شبکه کار میکنید ،شاید الزم باشد
محل استقرار شنودگر خود را جابهجا کنید تا شاید تصویر بهتری از شبکه داشته باشید.
در این مثال اولیه نشان میدهد که چرا شنود ترافیک چندین دستگاه در چندین بخش به
خاطر یافتن دقیق مشکل ضروری است.
54
نفوذ به شبکه فصل دوم
نقشههای شبکه
در بحث مختصرمان درباره استقرار شبکه ،به نقشههای مختلف شبکه نگاهی انداختیم .نقشه
شبکه یا دیاگرام شبکه ،طرحی است که کلیه دستگاهها و منابع شبکه و چگونگی ارتباط
آنها را نشان میدهد .راهی بهتر از این برای قراردهی شنودگر که بتواند شبکه را بهوضوح
مشاهده کرد ،وجود ندارد .اگر به نقشه شبکه دسترسی دارید این بهترین راه است ،چراکه
بهترین راه برای اشکالزدایی و تحلیل پردازش میباشد .به خاطر داشته باشید که نیمی از نبرد
در اشکالزدایی شبکه ،اشاره به جزئیات مشکل است پس بهتر است همیشه نقشهای با جزئیات
داشته باشید.
55
نفوذ به شبکه فصل دوم
ربایش سریع از دستگاهی داشته باشید ،این روش میتواند مؤثر باشد.
معموالً پیشنهاد نمیشود چون اگر حالتی در میزبان باشد که سبب
کاهش ترافیک و یا دستکاری بستهها در چنین روشی شود ،قادر به ارائه
دقت الزم نیست.
نصب مستقیم
ضرورتی به بودن کارت شبکه در حالت بیقاعده نیست.
بهترین روش برای تست محیطها ،بررسی و کارایی Baseliningو
بررسی فایلهای ربایش شده در جای دیگر.
56
نفوذ به شبکه فصل دوم
نفوذ به شبکه
خیر
خیر
خیر
دستگاه میتواند
از روش آلودگی
به طور موقت
حافظهARP
آفالین شود؟
استفاده میکنیم .
بله
5۷
فصل سوم
مقدمهای بر Wireshark
مقدمه بر Wireshark فصل سوم
مقدمهای بر Wireshark
همانطوری که در فصل 1بیان شد ،برنامههای کاربردی شنود بسته 1متعددی برای تحلیل
شبکه وجود دارد ،ولی ما در این کتاب از Wiresharkاستفاده خواهیم کرد .این فصل
Wiresharkرا معرفی مینماید.
1
packet sniffing
2
Gerald Combs
3
)GNU Public License (GPL
60
مقدمه بر Wireshark فصل سوم
مزایای Wireshark
Wiresharkمزایای زیادی دارد که آن را برای استفادهی هر روزه جذاب مینماید .این برنامه
هم برای افراد تازهکار و هم برای تحلیلگر حرفهای بسته است و ویژگیهای گوناگونی را
برای جلب نظر هر گروه داراست .اجازه دهید Wiresharkرا بر اساس معیارهای تعریفشده
در فصل 1بهعنوان یک ابزار شنود بسته مورد بررسی قرار دهیم.
نکته :در مورد نادری که Wiresharkپروتکل مورد نیاز شما را پشتیبانی نکند ،خودتان
میتوانید آن را codeکنید و codeخود را برای گنجاندن در این برنامه کاربردی به طراحان
Wiresharkارائه دهید (البته اگر codeشما پذیرفته شود).
کاربرپسند بودن:
درک واسط Wiresharkیکی از سادهترین واسطها در میان تمام برنامههای کاربردی
شنودگر بسته است .این واسط مبتنی بر GUIو متنی است که بهروشنی نوشتهشده است و
همچنین طرح و چیدمانی آسان دارد .این واسط همچنین ویژگیهای متعددی را فراهم
میآورد که برای ارتقای قابلیت استفاده طراحی شدهاند که از آن جمله میتوان به کدگذاری
رنگ مبتنی بر پروتکل و نمایشهای گرافیکی پر جزئیات از دادههای خام اشاره کرد .رابط
1
open source
61
مقدمه بر 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 فصل سوم
64
مقدمه بر Wireshark فصل سوم
65
مقدمه بر Wireshark فصل سوم
66
مقدمه بر Wireshark فصل سوم
اگر وابستگیها گم شدهاند ،آنگاه آنها را نصب کنید و نصب Wiresharkرا تکرار نمایید.
6۷
مقدمه بر Wireshark فصل سوم
68
مقدمه بر Wireshark فصل سوم
مبانی Wireshark
پس از نصب موفقیتآمیز Wiresharkروی سیستم خود میتوانید آشنا شدن خود با آن را
آغاز نمایید .اکنون سرانجام میتوانید packet snifferیا شنودکننده بسته کامالً فعال خود را
بازکنید و ببینید که هیچ چیزی وجود ندارد!
بسیار خوب ،پس Wiresharkبرای اولین بار که آن را باز میکنید خیلی جالب نیست .برای
آنکه کارها خیلی جالب شود باید قدری اطالعات وارد کنید.
69
مقدمه بر Wireshark فصل سوم
اگر میخواهید مشکلی در خصوص DHCPرا با تحلیل کردن ترافیک آن حل کنید ،آنگاه
باید این امر را درک کنید که جریان کار DHCPچه شکلی دارد.
به بیان گستردهتر ،برای یافتن ناهنجاریها در فعالیت روزانهی شبکه ،باید بدانید که فعالیت
بهنجار روزانهی شبکه چگونه است .زمانی که شبکهی شما به شکلی بدون اشکال کار
میکند ،میتوانید خط مبنای خود را بهصورتی قرار دهید که بفهمید ترافیک در یک وضعیت
نرمال و بهنجار چه شکلی دارد.
پس بیایید تا بستههایی را ربایش کنیم!
Wireshark .1را بازکنید.
.2از منوی کشویی باال گزینه Captureو سپس Interfacesرا انتخاب کنید .باید
دیالوگی را ببینید که انواع واسطهایی را فهرست میکند که از آنها میتوان برای
ربایش بستهها ،همراه با نشانیهای IPشان استفاده کرد.
.3واسطی را انتخاب کنید که میخواهید از آن استفاده نمایید (همان طوری که در
شکل 4-3نشان داده شده است) و سپس بر روی Startکلیک کنید و یا تنها بر
روی واسط زیر بخش Interface Listاز صفحهی خوشامدگویی کلیک نمایید.
دادهها باید شروع به پر شدن کنند.
۷0
مقدمه بر Wireshark فصل سوم
.4در حدود یک دقیقه یا همین حدود صبر کنید ،و زمانی که برای متوقف کردن
ربایش آماده بودید به دادههایتان نگاه کنید؛ روی دکمهی Stopاز منوی کشویی
Captureکلیک کنید.
زمانی که این مراحل را تکمیل کردید و فرآیند ربایش را به پایان رساندید ،پنجرهی اصلی
Wiresharkباید با نمایش دادهها پدیدار شود .در واقع ،ممکن است از حجم اطالعاتی که
ظاهر میشود شوکه شوید ،اما وقتی پنجرهی اصلی 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 فصل سوم
واسط کاربر
این تنظیمات تعیین میکنند که Wiresharkچگونه دادهها را ارائه دهد .در اینجا میتوانید
مطابق با ترجیحهای شخصیتان اغلب گزینهها را تغییر دهید که از آن جمله میتوان به ذخیره
شدن یا نشدن موقعیت پنجره ،آرایش سه بخش اصلی ،تعیین ، scroll barتعیین ستونهای
بخش ،Packet Listفونتهای مورد استفاده برای نمایش دادههای ربایش شده ،و رنگهای
پسزمینه و پیشزمینه اشاره کرد.
ربایش
این تنظیمات شما را قادر میسازند تا گزینههای مربوط به روشی را مشخص کنید که بسته
ربایش میشود؛ از جمله واسط پیشفرض ربایش شما ،حالت بیقاعده استفاده بشود یا نه ،و
آیا بخش Packet Listبالدرنگ بهنگام شود یا نه.
۷4
مقدمه بر Wireshark فصل سوم
چاپ
تنظیمات این بخش شما را قادر میسازند تا گزینههای مختلف مربوط با روشی را مشخص
کنید که Wiresharkدادههایتان را چاپ میکند.
تفکیک نام
تفکیک نام 1از طریق این تنظیمات میتوانید ویژگیهایی از Wiresharkرا فعال نمایید که
آن را قادر میسازد تا نشانیها را به اسامی قابل تشخیصتر تجزیه کند (از جمله تفکیک نامِ
انتقال ،MAC ،و شبکه) و حداکثر تعداد درخواستهای تفکیک نامِ همزمان را مشخص
میکند.
آمار
این بخش چندگزینهی قابل پیکربندی را برای ویژگیهای آماری Wiresharkفراهم
مینماید.
پروتکلها
تنظیمات در این بخش شما را قادر میسازند تا گزینههای مرتبط با ربایش و نمایش بستههای
مختلفی را دستکاری کنید که Wiresharkقادر به رمزگشایی آنها است .هر پروتکلی
تنظیمات قابل پیکربندی ندارد ،اما بعضی از آنها دارای چندین گزینه هستند که میتواند
تغییر داده شوند .بهترین کار آن است که این گزینهها در حالت پیشفرض خود باقی گذاشته
شوند ،مگر آنکه برای تغییر دادنشان دلیل بخصوصی داشته باشید.
کدگذاری رنگ بسته
اگر شما آدمی مثل من باشید ،آنوقت ممکن است از چیزهای پرزرق و برق و رنگهای
قشنگ لذت ببرید .اگر اینطور باشد ،احتماالً همان طوری که در شکل ۷-3نشان دادهشده
زمانی که همهی این رنگهای مختلف را در بخش Packet Listمیبینید هیجانزده خواهید
شد (خوب ،درست است که این شکل سیاه و سفید است ،ولی میتوانید ایده را بگیرید).
1
Name Resolution
۷5
مقدمه بر 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
کار با بستههای ربایش شده
کار با بستههای ربایش شده فصل چهارم
80
کار با بستههای ربایش شده فصل چهارم
گزینهی فیلتر Display ،شما را قادر میسازد تا یک فیلترِ مبتنی بر عبارت را وارد
نمایید که تنها آن بستههایی را پیدا خواهد کرد که آن عبارت را برآورده مینمایند.
گزینهی مقدار Hexبه دنبال بستههایی با مقدار مبنای شانزده (با بایتهای جدا شده
توسط دو نقطهها) میگردد که شما مشخص میکنید.
گزینهی Stringبه دنبال بستههایی با یک رشتهی متن 1میگردد که شما مشخص
میکنید .جدول 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نشاندار شده و تیرهتر به نظر میرسد.
1
popup menu
82
کار با بستههای ربایش شده فصل چهارم
شما مکانی برای ذخیره کردن فایل ربایش شده و نوع فرمت آن پرسیده میشود .اگر فرمت
فایل را مشخص نکنید ،آنگاه Wiresharkاز فرمت فایل پیشفرض .pcapاستفاده خواهد
کرد.
شکل :3-4دیالوگ Save File Asشما را قادر میسازد تا ربایشهای بستهی خود را ذخیره نمایید.
یکی از ویژگیهای قدرتمندتر دیالوگ Save File Asتوانایی آن در ذخیره کردن یک
دامنهی بستهی مشخص است .این یک راه عالی برای کم کردن حجم ربایش بسته است.
شما میتوانید انتخاب کنید که بستهها را تنها در یک محدودهی اعداد بخصوص ،بستههای
نشاندار ،یا بستههای مشهود در نتیجهی یک فیلتر نمایش ذخیره نمایید (بستههای نشاندار و
فیلترها بعداً در همین فصل مورد بحث قرار خواهند گرفت).
شما میتوانید دادههای ربایش Wiresharkرا برای مشاهده در رسانههای دیگر به چندین
فرمت صادر کنید و یا میتوانید آنها را به ابزارهای تحلیل بستهی دیگر صادر نمایید .فرمتها
83
کار با بستههای ربایش شده فصل چهارم
شکل :4-4دیالوگ Merge With Capture Fileشما را قادر میسازد تا دو فایل ربایش شده را ادغام نمایید.
1
comma-separated values
2
data stream
84
کار با بستههای ربایش شده فصل چهارم
بهمنظور ادغام کردن فایلهای ربایش ،یکی از فایلهای ربایش که میخواهید ادغام کنید را
باز نمایید و File ► Mergeرا انتخاب کنید تا دیالوگ – Merge With Capture Fileکه
در شکل 4-4نشان داده شده است – باال بیاید .فایل جدیدی که میخواهید در فایل از قبل
باز شده ادغام کنید را انتخاب نمایید ،و سپس روش مورد استفاده برای ادغام کردن فایلها
را انتخاب کنید .میتوانید فایل انتخاب شده را به ابتدای فایلی که هم اینک باز شده متصل
نمایید؛ به انتهای آن اضافه کنید ،یا فایلها را بر اساس مهرهای زمانیشان به ترتیب زمان ادغام
نمایید.
85
کار با بستههای ربایش شده فصل چهارم
برای چاپ کردن بستههای ربایش شده ،با انتخاب کردن File ► Printاز منوی اصلی
دیالوگ Printرا باز کنید .همان طوری که در شکل 5-4نشان داده شده است دیالوگ
Printرا خواهید دید .میتوانید دادههای انتخاب شده را بهصورت plaintextیا ،PostScript
یا در یک فایل خروجی چاپ کنید .همانند دیالوگ Save File Asمیتوانید یک دامنهی
بستهی مشخص؛ فقط بستههای نشاندار ،یا بستههای نمایش داده شده در نتیجهی یک فیلتر
را چاپ نمایید .همچنین میتوانید انتخاب کنید که کدام یک از سه بخش اصلی Wireshark
برای هر بسته چاپ شود .وقتی گزینهها را انتخاب کردید ،بر روی Printکلیک کنید.
86
کار با بستههای ربایش شده فصل چهارم
دقت زمان نمایش را بر روی خودکار یا یک تنظیم دستی – نظیر ثانیه ،میلیثانیه ،میکروثانیه
و مانند آن – قرار دهید .ما بعداً این گزینهها را در کتاب تغییر خواهیم داد و بنابراین اکنون
باید خود را با آنها آشنا نمایید.
8۷
کار با بستههای ربایش شده فصل چهارم
همان طوری که در شکل ۷-4نشان داده شده است ،زمانی که یک مرجع زمانی را در یک
بستهی بخصوص فعال میکنید ،ستون Timeدر بخش Packet Listعبارت * *REFرا نشان
میدهد.
یادداشت :قرار دادن یک مرجع زمانی تنها زمانی سودمند است که قالب نمایش زمان یک
ربایش برای نمایش زمان در ارتباط با شروع ربایش تنظیم شده باشد .هرگونه تنظیم دیگر
هیچ نتیجهی سودمندی را به دنبال نخواهد داشت و مجموعهای از زمانها را به وجود خواهد
آورد که میتوانند بسیار گیج کننده باشند.
کنید که آیا واسط محلی باشد یا راه دور ،و فهرست کشویی سمت راست همهی واسطهای
ربایش موجود را نشان میدهد .آدرسهای IPواسطی که انتخاب کردهاید مستقیماً در زیر
فهرست کشویی نمایش داده میشود.
دو جعبهی چک 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کلیک کنید.
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
کار با بستههای ربایش شده فصل چهارم
9۷
کار با بستههای ربایش شده فصل چهارم
دیالوگ Filter Expressionبرای کاربران تازهکار عالی است ،ولی وقتی در اجرای کارها
مهارت پیدا کردید ،درخواهید یافت که وارد کردن دستی عبارات فیلتر بشدت سبب افزایش
کارایی آنها میشود .ساختار نحو عبارت فیلتر نمایش ساده و در عین حال قدرتمند است.
98
کار با بستههای ربایش شده فصل چهارم
عملگرهای مقایسهای
عملگرهای مقایسه شما را قادر میسازند تا مقادیر را مقایسه نمایید .برای مثال ،به هنگام رفع
اشکال TCP/IPاغلب نیاز به آن دارید که همهی بستههایی را ببینید که به آدرس IP
بخصوصی رجوع میکنند .عملگر مقایسهی "مساوی است با" (==) شما را قادر خواهد
ساخت تا فیلتری را درست کنید که همهی بستهها با یک آدرس IPبهقرار 192.168.0.1را
نشان دهد.
▐ ip.addr = =192.168.0.1
اکنون فرض کنید نیاز دارید تنها بستههایی را ببینید که طولشان کمتر از 128بایت باشد .شما
میتوانید برای محقق کردن این هدف از عملگر "کوچکتر یا مساوی" (=<) در یک
عبارت فیلتر مانند زیر استفاده نمایید:
99
کار با بستههای ربایش شده فصل چهارم
عملگرهای منطقی شما را قادر مینمایند تا چند عبارت فیلتر را در یک دستور ترکیب کنید
و این کار بهطور پویایی سبب افزایش کارایی فیلترهایمان میشود .برای مثال ،فرض کنید که
عالقمند به نشان دادن تنها بستههای دو آدرس IPهستیم .برای ایجاد یک عبارت که بستههای
حاوی هر یک از این آدرسهای IPرا نشان دهد میتوانیم از عملگر orاستفاده نماییم؛ مانند
زیر:
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
1
primitive
2
qualifier
3
concatenation operator
4
alternation operator
101
کار با بستههای ربایش شده فصل چهارم
اگر شما در یک شبکهی IPv6هستید ،بر اساس آدرس IPv6فیلتر خواهید کرد که از
توصیفکنندهی میزبان بهقرار زیر استفاده میکند:
همچنین میتوانید نظیر مثال زیر بر اساس نام میزبان یک دستگاه با توصیفکنندهی میزبان
فیلتر نمایید:
یا اگر نگران آن هستید که آدرس IPبرای یک میزبان ممکن است تغییر کرده باشد ،آنگاه
میتوانید بر اساس آدرس MACآن و همچنین با افزودن توصف کنندهی پروتکل ether
فیلتر نمایید:
102
کار با بستههای ربایش شده فصل چهارم
توصیفکنندههای جهت انتقال اغلب همراه با فیلترهایی نظیر فیلترهای مثالهای قبلی برای
ربایش ترافیک بر اساس آن مورد استفاده قرار میگیرند که آیا دارد به طرف میزبانی میرود
و یا از آن میآید .برای مثال ،بهمنظور ربایش فقط ترافیکی که از یک میزبان بخصوص
میآید ،توصیفکنندهی srcرا به کار ببرید:
برای آنکه تنها دادههایی ربایش شوند که سرور 172.16.16.149را ترک میکنند – که
عازم یک میزبان مشکوک هستند – از توصیفکنندهی dstاستفاده کنید:
برای ربایش کل ترافیک ،بجز ترافیک پورت ،8080فیلتر زیر عمل میکند:
فیلترهای پورت را میتوان با توصیفکنندههای جهت انتقال ترکیب کرد .برای مثال ،بهمنظور
ربایش ترافیکی که تنها به سرور webمیرود ،به پورت استاندارد HTTPشماره 80گوش
میکند از توصیفکنندهی dstاستفاده کنید:
فیلترهای پروتکل
فیلترهای پروتکل شما را قادر میسازند تا بستهها را بر اساس پروتکلهای مشخصی فیلتر
نمایید .آنها برای تطابق پروتکلهای الیهی غیر برنامه کاربردی مورد استفاده قرار میگیرند
که آنها را نمیتوان صرفاً توسط استفادهی یک پورت تعریف کرد .بدین ترتیب ،اگر
بخواهید تنها ترافیک 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را ربایش کند که توسط نوع ،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قرار داده شده به ما میگوید که پرچم
قرار داده شده است .این فیلتر شبیه به این است:
برای دیدن همهی بستهها با مجموعه پرچم – PSHکه توسط مکان بیتی شناسایی شده و
معرف عدد 8است – فیلتر ما در عوض از آن مکان استفاده خواهد کرد:
1
ampersand
106
کار با بستههای ربایش شده فصل چهارم
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
ویژگیهای پیشرفته فصل پنجم
1
Endpoints
2
Conversations
112
ویژگیهای پیشرفته فصل پنجم
" "SYN/ACKو " "ACKباشد( .ما در فصل 6با جزئیات بیشتر به فرآیند گفتگوی TCP/IP
نگاه خواهیم کرد).
113
ویژگیهای پیشرفته فصل پنجم
شما میتوانید از پنجرهی Endpointsبرای فیلتر کردن بستههای بخصوص بهمنظور نمایش
در بخش Packet Listاستفاده نمایید .روی یک نقطهی انتهایی بخصوص کلیک راست
کنید تا چندین گزینه را ببینید ،که از آن جمله میتوان به توانایی برای به وجود آوردن فیلتری
بهمنظور نمایش تنها ترافیک مرتبط با این نقطهی انتهایی یا کل ترافیک به استثنای نقطهی
انتهایی انتخاب شده اشاره کرد .همچنین میتوانید نقطهی انتهایی را مستقیماً به یک قانون
رنگآمیزی صادر نمایید (قوانین رنگآمیزی در فصل 3شرح داده شدند).
شکل :2-5پنجرهی Endpointsشما را قادر میسازد تا هر یک از نقاط انتهایی را در فایل ربایش ببینید.
114
ویژگیهای پیشرفته فصل پنجم
گفتگوهای فهرست شده در این پنجره توسط پروتکلی که استفاده میکنند،تقسیم شدهاند
که میتواند از طریق تبها در باالی پنجره انتخاب شوند .اجرای کلیک راست بر روی یک
گفتگوی بخصوص شما را قادر مینماید تا فیلترهایی را درست کنید که میتوانند سودمند
باشند ،که از آن جمله میتوان نمایش دادن کل ترافیک ارسال شده از دستگاه ،Aکل
ترافیک دریافت شده از دستگاه ،Bیا کل ترافیک ارسال شده بین دستگاههای Aو Bاشاره
کرد.
شکل :3-5پنجرهی گفتگوها شما را قادر میسازد تا با هر گفتگو در یک فایل ربایش تعامل داشته باشید.
115
ویژگیهای پیشرفته فصل پنجم
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تصدیق میکند که دو صحبت کنندهی باالیی در حال ارتباط با یکدیگر هستند.
118
ویژگیهای پیشرفته فصل پنجم
Hierarchyباز کنید .توجه داشته باشید که همهی جمعها دقیقاً به %100بالغ نمیشوند .از
آنجایی که بیشتر بستهها حاوی چند پروتکل از الیههای مختلف هستند ،بنابراین ،تعداد هر
پروتکل در مقایسه با هر بسته میتواند دور از واقعیت باشد .با این حال ،هنوز هم میتوانید
دیدی دقیق از توزیع پروتکلها در فایل ربایش داشته باشید.
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ببینیم .با آمیختن نامهای سهل با این آدرسهای
رمزی ،به خاطر آوردن و شناسایی آنها را سادهتر میکنیم.
1
name lookup
120
ویژگیهای پیشرفته فصل پنجم
تبدیل 3بایت نخست ازآدرس MACبه نام تولیدکننده توسط انجمن مهندسان برق آمریکا
،IEEEنظیر .Netgear_01:02:03
شما میتوانید در بعضی از موقعیتها برای خواناتر شدن فایلهای ربایش خود و صرفهجویی
کردن زیادی در زمان از انواع ابزارهای تفکیک نام بهره ببرید .برای مثال ،میتوانید برای
1
Transport name resolution
121
ویژگیهای پیشرفته فصل پنجم
کمک به شناسایی سادهی نام یک کامپیوتری که سعی میکنید بهعنوان مبدأ یک بستهی
بخصوص مشخص نمایید از تفکیک نام DNSاستفاده نمایید.
122
ویژگیهای پیشرفته فصل پنجم
تجزیهی پروتکل
تجزیهکنندهی پروتکل Wireshark 1را قادر میکند تا یک پروتکل را به بخشهای مختلف
تجزیه نماید ،بهطوری که بتواند مورد تجزیه و تحلیل قرار بگیرند .برای مثال ،تجزیه کنندهی
پروتکل ICMPبرنامهی Wiresharkرا قادر میکند تا دادههای خام را از کابل بگیرد و آن
را بهصورت یک بستهی ICMPفرمت نماید.
میتوانید یک تجزیهکننده را بهصورت یک مترجم بین دادههای خام جاری در کابل و
برنامهی Wiresharkتجسم نمایید .برای آنکه یک پروتکل توسط Wiresharkپشتیبانی
شود ،باید تجزیه کنندهای در آن برایش تعبیه شده باشد (یا اینکه میتوانید خودتان آن را در
Cیا Pythonبنویسید).
برنامهی 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آنها را پاک کنید.
1
subversion
12۷
ویژگیهای پیشرفته فصل پنجم
128
ویژگیهای پیشرفته فصل پنجم
توجه داشته باشید که متن نمایش داده شده در این پنجره در دو رنگ است .متن قرمز(قسمت
باالیی) برای مشخص کردن ترافیک از مبدأ به مقصد ،و متن آبی(وسط) برای شناسایی
ترافیک از جهت مخالف ،یعنی از مقصد به مبدأ است .رنگ نشان میدهد که کدام طرف
ارتباط را آغاز کرده است .مثالً ،در مثال ما ،کاربر ارتباط با سرور وب را آغاز کرده است و
به همین سبب به رنگ قرمز نمایش داده شده است.
با توجه به این جریان ،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است.
132
ویژگیهای پیشرفته فصل پنجم
میانگین در حدود 500بسته در هر تیک است و بهنوعی در کل دورهاش ثابت باقی میماند
و در انتها تنزل پیدا میکند.
بیایید این را با نمونهای از یک دانلود کندتر مقایسه کنیم .فایل فعلی را باز نگه دارید ،و
نمونهی دیگری از Wiresharkرا باز کنید ،و dawnload-slow.pcapرا باز نمایید .نمودار
IOاین دانلود را ایجاد کنید و یک داستان کامالً متفاوت را خواهید دید (همان طوری که
در شکل 14-5نشان داده شده است).
133
ویژگیهای پیشرفته فصل پنجم
این دانلود دارای نرخ انتقالی بین صفر و 100بسته در ثانیه است و از یکدست بودن فاصلهی
زیادی دارد و حتی گاهی به صفر بسته در ثانیه نزدیک میشود .اگر نمودارهای IOدو فایل
را در کنار یکدیگر قرار دهید (شکل 15-5را ببینید) ،آنگاه این ناسازگاریها و غیر
یکدستیها را واضحتر خواهید دید.
134
ویژگیهای پیشرفته فصل پنجم
شکل :15-5مشاهدهی چند نمودار IOدر کنار هم میتواند در تشخیص اختالف سودمند باشد.
به گزینههای قابل پیکربندی در پایین این پنجره توجه نمایید .شما میتوانید تا پنج فیلتر منحصر
به فرد (با استفاده از همان نحو یک فیلتر نمایش یا ربایش که در فصلهای 6و ۷شرح داده
شد) را به وجود آورید و رنگهای نمایش را برای آن فیلترها تعیین نمایید .برای مثال ،شما
میتوانید فیلترهایی را برای نشان دادن ترافیک ARPو DHCPبه وجود آورید ،و خطوط
روی نمودار را به رنگ قرمز و آبی نشان دهید ،بهطوری که بتوانید براحتی میان روندهای
خروجی بین این دو نوع پروتکل تفکیک قائل شوید.
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قابل قبولی در نظر گرفته میشود.
شکل :1۷-5نمودار جریان TCPشما را قادر میسازد تا اتصال را خیلی بهتر تجسم نمایید.
13۷
ویژگیهای پیشرفته فصل پنجم
اطالعات خبره
تجزیهکنندههای هر پروتکل در Wiresharkاطالعات خبره 1را تعریف میکنند که از آنها
میتوان برای هشدار دادن به شما دربارهی وضعیتهای بخصوص در درون یک بسته استفاده
شود که از آن پروتکل استفاده مینماید .این وضعیتها به چهار گروه طبقهبندی میشوند:
اطالعات پایه دربارهی ارتباط Chat
بستههای غیر معمول که میتوانند بخشی از ارتباط نرمال باشند Note
بستههای غیر معمول که به احتمال بسیار زیاد بخشی از ارتباط نرمال نیستند Warning
خطایی در یک بسته یا تجزیهکنندهای که آن را تفسیر میکند Error
توجه کنید که این پنجره برای هر گروه از اطالعات دارای تبهایی است ،و اینکه هیچ
وضعیت 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
ویژگیهای پیشرفته فصل پنجم
140
ویژگیهای پیشرفته فصل پنجم
قرار میگیرند ،ولی احتماالً خود را در وضعیتی خواهید دید که از آنها بیش از آنچه انتظار
داشتهاید استفاده مینمایید .مهم است که خود را با این پنجرهها و گزینهها آشنا نمایید؛ من
در چند فصل بعدی خیلی به آنها رجوع خواهم داد.
141
فصل شش
پروتکلهای رایج الیه پائینتر
پروتکلهای الیه پایینتر فصل ششم
144
پروتکلهای الیه پایینتر فصل ششم
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بگردید.
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آدرس پروتکل الیهی باالتر دریافت کنندهی
مورد نظر.
اکنون arp_resolution.pcapرا باز کنید تا این فرآیند تعیین را در عمل ببینید .همچنان که
در این فرآیند جلو میرویم بر هر بسته بهطور جداگانه تمرکز خواهیم کرد.
148
پروتکلهای الیه پایینتر فصل ششم
149
پروتکلهای الیه پایینتر فصل ششم
ARPبالعوض
در بسیاری از موارد ،آدرس IPیک دستگاه میتواند تغییر کند .زمانی که این اتفاق میافتد،
مسیردهیهای آدرس IPبه MACکه میزبانها در شبکه در cacheخود دارند بیاعتبار
خواهد بود .برای پیشگیری از خطاهای ارتباطی به سبب این امر ،یک بستهی ARPبالعوض
1
operation code
150
پروتکلهای الیه پایینتر فصل ششم
در شبکه مخابره میشود تا هر دستگاهی که آن را دریافت میکند مجبور شود تا cache
خود را با مسیردهی جدید آدرس IPبه MACبه روز نماید .یک APRبالعوض عمالً چیز
خوبیست (شکل 5-6را ببینید).
چند سناریوی مختلف میتوانند یک سناریوی بستهی ARPرا ایجاد کنند .یکی از شایعترین
آنها تغییر کردن یک آدرس IPاست .فایل ربایش arp_gartuitous.pcapرا باز کنید و
این فرآیند را در عمل خواهید دید .این فایل تنها حاوی یک بسته است (شکل 6-6را ببینید)
زیرا این تنها چیز دخیل در ARPبالعوض است .با بررسی سرآیند ،Ethernetمیتوانید ببینید
که این بسته بهعنوان یک broadcastفرستاده میشود ،بهطوری که میزبانها در شبکه آن را
دریافت میکنند .سرآیند ARPشبیه یک درخواست ARPاست ،جز آنکه آدرس IP
فرستنده و آدرس IPهدف آن یکی هستند.
151
پروتکلهای الیه پایینتر فصل ششم
این بسته وقتی توسط میزبانهای دیگر در شبکه دریافت شود سبب میشود تا جدولهای
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نامیده میشود و گاهی به ماسک زیرشبکه نیز
میگویند.
ماسک شبکه است که شناسایی میکند کدام بخش از آدرس 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نشان داده شده است).
ماسکهای شبکه همچنین میتوانند بهصورت نشانگذاری چهارگانهی نقطهدار نوشته شوند.
برای مثال ،ماسک شبکهی 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
پروتکلهای الیه پایینتر فصل ششم
Time to Live
مقدار ) Time to Live (TTLیک دورهی زمانی را تعریف میکند که میتواند منقضی
شود ،و یا حداکثر تعداد مسیریابهایی که یک بسته میتواند پیش از دور انداخته شدن
بپیماید .یک TTLزمانی که یک بسته به وجود میآید تعریف میگردد ،و عموماً هر بار که
بسته توسط یک مسیریاب به جلو فرستاده میشود 1واحد از مقدار آن کم میگردد .برای
مثال ،اگر یک بسته دارای TTLبهقرار 2باشد ،نخستین مسیریابی که این بسته به آن میرسد،
15۷
پروتکلهای الیه پایینتر فصل ششم
مقدار TTLآن را به 1کاهش میدهد و آن را به مسیریاب دوم میفرستد .آنگاه این مسیریاب
دوم مقدار TTLرا به صفر کاهش میدهد و اگر مقصد نهایی بسته در آن شبکه نباشد ،آن
بسته دور انداخته میشود (شکل 10-6را ببینید) .از آنجایی که مقدار TTLبه لحاظ فنی
مبتنی بر زمان است ،بنابراین ،یک مسیریاب خیلی مشغول ممکن است مقدار TTLرا بیش از
1واحد کاهش دهد ،ولی عموماً میتوان فرض کرد که یک دستگاهی مسیریاب مقدار TTL
را در اغلب موارد تنها به میزان 1واحد کاهش خواهد داد.
چرا مقدار TTLاهمیت دارد؟ بهطور معمول ،ما تنها بر حسب زمانی نگران طول عمر یک
بسته هستیم که برای حرکت از مبدأ به مقصدش صرف میکند .اما ،بستهای را در نظر بگیرید
که باید از میان اینترنت به یک میزبان سفر کند و از میان چندین مسیریاب بگذرد .در نقطهای
در مسیر این بسته ،ممکن است با مسیریابی با پیکربندی غلط برخورد کند و مسیر به سمت
مقصد نهاییاش را گم کند .در چنین موردی ،مسیریاب میتواند چند کار انجام دهد ،که
یکی از آنها میتواند منجر به آن گردد که بسته در یک چرخهی بیپایان در یک شبکه
بچرخد.
158
پروتکلهای الیه پایینتر فصل ششم
اگر سابقهای در برنامهنویسی داشته باشید ،آنگاه میدانید چرخهای که هیچگاه پایان پیدا نکند
میتواند سبب انواع مسائل بشود ،و بهطور معمول منجر به خرابی یک برنامه یا کل سیستم
عامل میگردد .به لحاظ نظری همین امر میتواند در مورد بستهها در یک شبکه رخ دهد.
بستهها به چرخه زدن در بین مسیریابها ادامه خواهند داد .همچنان که تعداد بستههای چرخه
زننده افزایش پیدا میکند ،پهنای باند موجود در شبکه کاهش پیدا خواهد کرد تا آنکه یک
وضعیت DoSرخ دهد .برای پیشگیری از بروز چنین مسئلهای ،فیلد TTLاز سرآیند IPبه
وجود آمد.
بیایید در Wiresharkنگاهی به یک مثال در این مورد بیندازیم .فایل
ip_ttl_source.pcapحاوی دو بستهی ICMPاست (که بعداً در این فصل مورد بحث
قرار خواهد گرفت)که برای تحویل بستهها از IPاستفاده میکند؛ همان طوری که میتوانیم
با بسط سرآیند IPدر بخش پنجرهی Packet Detailsببینیم (شکل 11-6را ببینید).
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را به میزان یک واحد کاهش داده است.
نکته :اگرچه تنظیمات استاندارد 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دومین بسته (شکل )14-6نیز دارای پرچم More Fragmentsاست ،اما در
این مورد ،مقدار Fragment Offsetبهقرار 1480است .این یک MTUبهقرار 1500
بایت منهای 20بایت برای سرآیند IPرا نشان میدهد.
162
پروتکلهای الیه پایینتر فصل ششم
شکل :14-6مقدار Fragment Offsetبر اساس اندازهی بستهها افزایش پیدا میکند.
163
پروتکلهای الیه پایینتر فصل ششم
سومین بسته (شکل )15-6دارای پرچم More Fragmentsنیست که یعنی این آخرین
قطعه در جریان دادهها است و Fragment Offsetدر 2960قرار داده شده که حاصل
( 1480 + )1500-20است .این قطعهها را همگی میتوان بهعنوان بخشی از یک سری از
دادهها شناسایی کرد ،زیرا آنها در فیلد Identifacationاز سرآیند IPدارای مقدار یکسانی
هستند .
شکل More Fragments :15-6تعیین نشده ،که نشان دهندهی آخرین قطعه است.
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
پروتکلهای الیه پایینتر فصل ششم
پورتهای TCP
کل ارتباط TCPبا استفاده از پورتهای مبدأ و مقصد انجام میشود که آنها را میتوان در
هر سرآیند TCPپیدا کرد .یک پورت مانند یک مادگی سوکت یک جعبهی سوئیچ تلفن
قدیمی است .اپراتور جعبه سوئیچ تلفن یک صفحه از چراغها و فیشهای اتصال را کنترل
میکند .زمانی که چراغی روشن میشود ،او با تماس گیرنده ارتباط برقرار میکند و میپرسد
که با چه کسی میخواهد حرف بزند ،و سپس با متصل کردن وی از طریق کابل به مقصد
وصل مینماید .هر تماسی به داشتن یک پورت مبدأ (تماس گیرنده) و یک پورت مقصد
(گیرنده) نیاز دارد .پورتهای TCPبه همین صورت عمل میکنند.
یک بستهی TCPبهمنظور انتقال دادهها به یک برنامه کاربردی بخصوص در یک سرور یا
دستگاهی دور باید پورت سرویس دوری را بداند که به آن توجه دارد .اگر سعی کنید تا به
یک برنامه کاربردی در پورتی غیر از پورت پیکربندی شده برای استفاده دسترسی پیدا کنید،
آنگاه ارتباط عمل نخواهد کرد.
پورت مبدأ در این توالی خیلی مهم نیست و میتواند بهطور تصادفی انتخاب شود .سرور دور
صرفاً پورت را برای ارتباط که بستهی اولیه برای آن فرستاده شده است ،تعیین میکند.
166
پروتکلهای الیه پایینتر فصل ششم
در هنگام ارتباط برقرار کردن با 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استفاده
میکند.
پورتهای موقت عموماً از سرویسهای مرتبط به آنها استفاده کردهاند .برچسب زدن این
پورتها میتواند بسیار گیج کننده باشد؛ بنابراین ،بهطور معمول بهترین کار آن است که با
خاموش کردن تفکیک نام نقل و انتقال آن را غیر فعال کرد .برای انجام این کار ► 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میفرستد .به محض تکمیل این فرآیند ،هر
دو دستگاه باید همهی اطالعات الزم برای ارتباط برقرار کردن بهطور صحیح را داشته باشند.
نکته :اغلب به بستههای 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است .
1۷2
پروتکلهای الیه پایینتر فصل ششم
بیشتر از شماره ترتیب لحاظ شده در بستهی قبلی است ،زیرا این فیلد برای مشخص کردن
شماره ترتیب بعدی مورد استفاده قرار میگیرد که میزبان انتظار دریافت آن را دارد.
1۷3
پروتکلهای الیه پایینتر فصل ششم
یک دستدهی پیش از هر توالی ارتباط 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نمایش داده شده است.
1۷5
پروتکلهای الیه پایینتر فصل ششم
بازنشانیهای 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نیست ،و هیچ
ارتباط دیگری جریان ندارد.
یک بستهی RSTارتباط را پایان میدهد؛ خواه در آغاز یک توالی ارتباطِ تالش شده باشد
– مانند این مثال – یا خواه در میانهی ارتباط بین میزبانها باشد.
1۷۷
پروتکلهای الیه پایینتر فصل ششم
1
)User Datagram Protocol (UDP
2
connectionless protocol
1۷8
پروتکلهای الیه پایینتر فصل ششم
1۷9
پروتکلهای الیه پایینتر فصل ششم
- Checksumبرای اطمینان حاصل کردن از این امر مورد استفاده قرار میگیرد
که محتوا و دادههای سرآیند ICMPدر زمان ورود سالم و دست نخورده باشند
– Variableبخشی که به فیلدهای Typeو Codeبستگی دارد
1
)Internet Control Message Protocol (ICMP
180
پروتکلهای الیه پایینتر فصل ششم
نکته :برای کسب فهرستی کامل از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
پروتکلهای الیه پایینتر فصل ششم
فراهم میآورد که نشان میدهد چه تعداد بسته فرستاده شدهاند ،دریافت شدهاند ،و گم
شدهاند .اگر ارتباط شکست بخورد ،آنگاه باید پیغامی را ببینید که به شما میگوید چرا.
اساساً دستور پینگ یک بسته را در هر بار به یک دستگاه میفرستد و منتظر پاسخ میماند تا
تعیین کند که آیا اتصال با آن دستگاه وجود دارد یا نه (همان طوری که در شکل 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
پروتکلهای الیه پایینتر فصل ششم
بستهی دوم در این توالی پاسخ به درخواست ماست (شکل 33-6را ببینید) .بخش ICMP
بسته نوع ، 0و کد 0است که نشان میدهد این یک پاسخ echoاست .از آنجایی که
شماره ترتیب در بستهی دوم با شماره ترتیب بستهی اول تطابق دارد ،بنابراین ،میدانیم که
این پاسخ echoبا درخواست echoدر بستهی قبلی تطابق دارد .این بستهی پاسخ همچنین
حاوی همان رشتهی دادههای 32بایتی است که با درخواست اولیه فرستاده شد .پس از
دریافت این بستهی دوم توسط ،192.168.100.138پینگ موفقیت را گزارش خواهد کرد
(شکل 30-6را ببینید).
توجه داشته باشید که برای افزایش اندازهی بیتگذاری دادهها - 1که بستهها را برای انواع
رفع اشکال شبکه مجبور میکند چندتکه شوند – میتوانید از انواع پینگ استفاده کنید .این
زمانی الزم میشود که مشغول رفع اشکال شبکههایی هستید که نیازمند اندازهی قطعهی
کوچکتری هستند.
1
data padding
184
پروتکلهای الیه پایینتر فصل ششم
نکته :متن تصادفی استفاده شده در یک درخواست پژواک ( ICMP )echoمیتواند برای
یک حملهکنندهی بالقوه بسیار مورد توجه باشد .حملهکنندهها میتوانند از اطالعات موجود
در این بیتگذاری برای تجزیه کردن سیستم عامل مورد استفاده در یک دستگاه استفاده
کنند .عالوه بر این ،حملهکنندهها میتوانند برای روشی از ارتباط پنهان ،بیتهای کوچکی
از دادهها را در این فیلد قرار دهند.
Traceroute
برنامهی tracerouteبرای شناسایی مسیر از یک دستگاه به دستگاه دیگر مورد استفاده قرار
میگیرد .در یک شبکهی ساده ،یک مسیر ممکن است تنها از میان یک مسیریاب (یا اصالً
هیچ مسیریابی) بگذرد .اما ،در یک شبکهی پیچیده ،ممکن است الزم باشد که یک بسته
برای رسیدن به مقصد نهاییاش از میان چندین مسیریاب گذر نماید و به همین دلیل است که
توانایی در دنبال کردن مسیر دقیق یک بسته از یک مقصد به مقصد دیگر برای رفع اشکال
در ارتباط بسیار حساس و حیاتی است.
185
پروتکلهای الیه پایینتر فصل ششم
شکل :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بسته در طول انتقال از حد بیشتر شد.
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
پروتکلهای الیه پایینتر فصل ششم
189
فصل 7
پروتکلهای رایج الیه باالتر
پروتکلهای الیه باالتر فصل هفتم
1
)Bootstrap Protocol (BOOTP
2
)Dynamic Host Configuration Protocol (DHCP
192
پروتکلهای الیه باالتر فصل هفتم
193
پروتکلهای الیه باالتر فصل هفتم
194
پروتکلهای الیه باالتر فصل هفتم
این بسته یک درخواست است ،که توسط ( )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دریافت نماید.
19۷
پروتکلهای الیه باالتر فصل هفتم
بخش 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
سومین بسته در این فایل ربایش هنوز از آدرس IPبهقرار 0.0.0.0میآید ،زیرا هنوز فرآیند
به دست آوردن یک آدرس IPرا تکمیل نکردهایم .اکنون بسته سرور DHCPکه با آن
ارتباط دارد را میشناسد.
199
پروتکلهای الیه باالتر فصل هفتم
فیلد Message Typeنشان میدهد که این بسته یک درخواست است .اگرچه هر بستهای
در این فایل ربایش بخشی از همان فرآیند تجدید است ،ولی این یک IDتراکنش جدید
دارد ،زیرا این یک تراکنش درخواست /پاسخ جدید است .این بسته شبیه بستهی کشف
است که در آن همهی اطالعات آدرسدهی IPاش خالی است.
در آخر ،در فیلد گزینهها ( ، )Optionsمیبینیم که این یک DHCP Requestاست.
توجه داشته باشید که آدرس IPدرخواست شده دیگر خالی نیست ،و اینکه فیلد DHCP
Server Identifierنیز حاوی یک آدرس است.
بستهی تصدیق ()Acknowledgment
در آخرین مرحلهی این فرآیند ،سرور DHCPآدرسهای IPدرخواست شده را در بستهی
تصدیق برای کاربر میفرستد و آن اطالعات را در پایگاه دادههای خود ربایش میکند
(شکل .)6-۷
200
پروتکلهای الیه باالتر فصل هفتم
اکنون کاربر آدرس IPرا دارد و برای آغاز ارتباط در شبکه میتواند از آن استفاده نماید.
DHCPدر اجاره
زمانی که سرور DHCPیک آدرس IPرا به دستگاهی تخصیص میدهد ،آن را به کاربر
اجاره میدهد .این یعنی کاربر اجازه دارد تا از آدرس IPتنها برای مدت زمان محدودی
استفاده کند و پس از آن باید این اجاره را تمدید نماید .فرآیند DORAکه مورد بحث قرار
گرفت ،نخستین باری رخ میدهد که یک کاربر یک آدرس IPرا به دست آورده باشد یا
وقتی که زمان اجاره منقضی شده باشد .در هر دو صورت ،دستگاه خارج از اجاره در نظر
گرفته میشود.
وقتی که یک کاربر با یک آدرس IPدر اجاره دوباره بوت میکند ( ،)rebootبرای احیای
آدرس IPاش باید یک نسخهی کوتاه شده از فرآیند DORAرا اجرا نماید .این فرآیند
تجدیدِ در اجاره 1نامیده میشود.
در مورد تجدید اجاره ،بستههای کشف و ارائه غیر ضروری هستند .در مورد آن مانند همان
فرآیند DORAفکر کنید که در یک تجدید خارج از اجاره استفاده میشود ،جز آنکه
تجدیدِ در اجاره خیلی نیازی ندارد که کاری انجام دهد ،و تنها مراحل درخواست و تصدیق
باقی میماند.
نمونهی ربایش یک تجدیدِ در اجاره را میتوانید در dhcp_inlease_renewal.pcapپیدا
کنید.
1
in-lease renewal
201
پروتکلهای الیه باالتر فصل هفتم
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
پروتکلهای الیه باالتر فصل هفتم
1
resource records
204
پروتکلهای الیه باالتر فصل هفتم
205
پروتکلهای الیه باالتر فصل هفتم
زمانی که شروع به بررسی سرآیندها در این بسته میکنید ،خواهید دید که DNSنیز بر UDP
تکیه میکند .
در بخش DNSبسته ،میتوانید ببینید که فیلدهای کوچکتر در نزدیک آغاز بسته توسط
Wiresharkدر یک بخش Flagواحد فشرده میشوند .این بخش را باز کنید ،و خواهید دید
که این پیغام بهواقع یک پرس و جوی استاندارد است که کوتاه نشده است ،و اینکه
بازگشت مطلوب است (ما بزودی بحث بازگشت را پوشش خواهیم داد) .تنها یک پرسش
شناسایی شده است ،که آن را میتوان با باز کردن بخش Queriesپیدا کرد .در آنجا میتوانید
ببینید که پرس و جو برای نام wireshark.orgبرای یک میزبان type Aآدرس اینترنت IN
است .این بسته اساساً میپرسد" ،کدام آدرس IPبا دامنهی wireshark.orgمرتبط
است؟"
206
پروتکلهای الیه باالتر فصل هفتم
همان طوری که در شکل 9-۷نشان داده شده است ،پاسخ به این درخواست در بستهی 2
است .از آنجایی که این بسته دارای یک شماره شناسایی یکسان است ،بنابراین ،میدانیم
که حاوی پاسخ صحیح به پرس و جوی اولیه است.
بخش Flagتأیید میکند که این یک پاسخ است ،و اینکه بازگشت در صورت لزوم موجود
است .این بسته تنها حاوی یک پرسش و یک رکورد منبع است ،زیرا پرسش اولیه را
در پیوستگی با پاسخش لحاظ میکند .باز کردن بخش Answersپاسخ به این پرسش را به
ما ارائه میدهد :آدرس پروتکل اینترنتِ wireshark.orgبهقرار 128.121.50.122است .
کاربر اکنون با این اطالعات میتواند بستههای IPرا بسازد و شروع به برقرار کردن ارتباط با
wireshark.orgنماید.
20۷
پروتکلهای الیه باالتر فصل هفتم
فهرست جدول 2-۷خالصه است و به هیچ وجه جامع و کامل نیست .برای دیدن همهی انواع
رکورد منبع به http://wrww.iana.org/assignments/dns-parameters/مراجعه نمایید.
بازگشت DNS
به سبب ماهیت سلسله مراتبی ساختار DNSاینترنت ،سرورهای DNSباید بتوانند با یکدیگر
ارتباط برقرار کنند تا به پرس و جوهای ارائه شده توسط کاربران پاسخ دهند .در حالی که
انتظار داریم سرور DNSداخلیمان مسیردهی آدرس "نام به "IPسرور اینترنت محلیمان
را بداند ،ولی نمیتوانیم انتظار داشته باشیم که آدرس IPمرتبط با Googleیا Dellرا بداند.
زمانی که یک سرور DNSنیاز به یافتن یک آدرس IPدارد ،بهجای کاربر – که درخواست
میکند – از سرور DNSدیگر پرس و جو میکند .در حقیقت ،سرور DNSمانند یک کاربر
عمل میکند و این فرآیند بازگشت نامیده میشود.
208
پروتکلهای الیه باالتر فصل هفتم
209
پروتکلهای الیه باالتر فصل هفتم
210
پروتکلهای الیه باالتر فصل هفتم
از آنجایی که این بسته با بیت مطلوب بازگشت فرستاده شد ،بنابراین ،سرور DNSمیتواند
این پرسش را در تالش برای پیدا کردن جواب از سرور DNSدیگر بپرسد (همان طوری که
میتوانید در بستهی دوم ببینید).
در دومین بسته ،سرور DNSدر 172.16.0.102یک پرس و جوی جدید را به 4.2.2.1
میفرستد که سروری است که سرور نخست با آن پیکربندی شده تا درخواستهای رو به
باال را به آن منتقل نماید (همان طوری که در شکل 12-۷نشان داده شده است) .این پرس و
جو آینهی پرس و جوی اولیه است که اساساً سرور DNSرا به کاربر تبدیل میکند.
میتوانیم بگوییم که این یک پرس و جوی جدید است ،زیرا شمارهی IDتراکنش آن با
شمارهی IDتراکنش فایل ربایش قبلی فرق دارد .به محض آنکه این بسته توسط سرور
4.2.2.1دریافت شود ،سرور DNSمحلی پاسخ نشان داده شده در شکل 13-۷را دریافت
میکند.
211
پروتکلهای الیه باالتر فصل هفتم
سرور DNSمحلی که این پاسخ را دریافت کرده است میتواند چهارمین و آخرین بسته را
به کاربر DNSبا اطالعات درخواست شده مخابره نماید.
اگرچه این مثال تنها یک الیه از بازگشت را نشان داد ،ولی بازگشت میتواند چندین بار برای
یک درخواست DNSانجام شود .در اینجا ما پاسخی را از سرور DNSدر 4.2.2.1دریافت
کردهایم ،ولی آن سرور میتواند این پرس و جو را بهطور بازگشتی به سرور دیگری ارسال
کرده باشد تا پاسخ را پیدا کند .یک پرس و جوی ساده پیش از آنکه به پاسخ صحیح برسد
ممکن در سرتاسر جهان بگردد .شکل 14-۷فرآیند پرس و جوی DNSبازگشتی را نشان
میدهد.
212
پروتکلهای الیه باالتر فصل هفتم
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را میبینید.
214
پروتکلهای الیه باالتر فصل هفتم
اگرچه DNSبه UDPتکیه میکند ،ولی از TCPبرای پارهای از امور – نظیر انتقالهای ناحیه
– استفاده میکند ،زیرا TCPبرای مقادیر دادههای مورد انتقال قابل اطمینانتر است .سه
بستهی نخست در این فایل ربایش دستدهی سه طرفهی TCPهستند.
215
پروتکلهای الیه باالتر فصل هفتم
216
پروتکلهای الیه باالتر فصل هفتم
هشدار :دادههای موجود در یک ناحیه انتقال در دست افراد میتواند بسیار خطرناک باشد.
برای مثال ،با بر شمردن یک سرور DNSمنفرد میتوانید کل زیرساخت یک شبکه را ترسیم
نمایید.
جستجو با HTTP
HTTPبیش از همه عموماً برای جستجوی صفحات وب در یک سرور وب با استفاده از یک
مرورگر وب مورد استفاده قرار میگیرد .فایل ربایش http_google.pcapچنین انتقال
HTTPای را با استفاده از TCPبهعنوان پروتکل الیهی نقل و انتقال نشان میدهد .ارتباط با
دستدهی سه طرفه بین کاربر 172.16.16.128و سرور وبِ Googleبه آدرس
74.125.95.104آغاز میشود.
به محض برقرار شدن ارتباط ،نخستین بسته بهعنوان یک بستهی HTTPاز کاربر به سرور
نشان میخورد (همان طوری که در شکل 18-۷نشان داده شده است).
21۷
پروتکلهای الیه باالتر فصل هفتم
بستهی 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هنوز هم مسئول
انتقال آن میزبان است .
همان طوری که در شکل 20-۷نشان داده شده است ،به محض انتقال این دادهها ،یک رشتهی
بازسازی دادهها فرستاده میشود.
219
پروتکلهای الیه باالتر فصل هفتم
HTTPبرای نشان دادن نتایج یک روش درخواست از تعدادی کد پاسخِ از پیش تعریف
شده استفاده میکند .در این مثال ،ما بستهای با کد پاسخ 200را میبینیم که یک روش
درخواست موفق را نشان میدهد .این بسته همچنین شامل مهر زمانی و بعضی اطالعات دیگر
دربارهی کدگذاری محتوا و پارامترهای پیکربندی سرور وب است .زمانی که کاربر این بسته
را دریافت میکند ،تراکنش کامل میشود.
پست کردن دادهها با HTTP
اکنون که به فرآیند دانلود کردن دادهها از سرور وب نگاه کردیم ،اجازه دهید تا توجه خود
را به آپلودکردن دادهها معطوف نماییم .فایل http_post.pcapحاوی مثال بسیار سادهای از
یک آپلود است :یک کاربر در حال پست گذاشتن کامنتی در یک وب سایت است .پس از
دستدهی سه طرفهی اولیه ،کاربر 172.16.16.128یک بستهی HTTPرا به سرور وب
69.163.176.56میفرستد (همان طوری که در شکل 21-۷نشان داده شده است).
220
پروتکلهای الیه باالتر فصل هفتم
این بسته بهمنظور آپلودکردن دادهها در یک سرور وب برای پردازش از روش 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
سناریوهای واقعی پایه
سناریوهای واقعی پایه فصل هشتم
1
help desk
2
Twitter
3
Facebook
224
سناریوهای واقعی پایه فصل هشتم
حل کرد .زمانی که برای نخستین بار یاد میگرفتم که چگونه بستهها را تحلیل کنم ،دریافتم
که بررسی کردن مسائل معمول به روشهای غیر معمول و با استفاده از تکنیکهای تحلیل
بسته سودمند است و به همین دلیل است که این سناریوها را برای شما ارائه میکنم.
نکته :وبسایتها بارها کد خود را عوض میکنند .در نتیجه ،اگر سعی کنید که دوباره
ربایشها را در چند بخش به وجود آورید ،آنگاه ممکن است دریابید که نتایج شما با آنچه
در اینجا آمده متفاوت است.
1
authentication
225
سناریوهای واقعی پایه فصل هشتم
226
سناریوهای واقعی پایه فصل هشتم
بهمنظور یافتن بستههای رمزگذاری شدهای که تبادل دادهها را اداره میکنند ،به دنبال
بستههایی باشید که در ستون Infoاز قسمت Packet Detailsبهعنوان Application Data
شناسایی شدهاند .بزرگ کردن بخش SSLهر کدام از این بستهها فیلد Encrypted
Application Dataرا نشان خواهد داد که حاوی دادههای رمزگذاری شدهی غیر قابل
خواندن است ( همان طوری که در شکل 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است .
به اطالعات موجود در فیلد Line-based Text Dataبسته در شکل 5-8توجه کنید .
زمانی که این داده را تحلیل میکنید ،فیلدی به نام Authenticity Tokenرا خواهید دید که
به دنبال آن فیلد statusدر یک URLقرار دارد که حاوی مقدار زیر است:
This+is+a+tweet-i-
for+practical+packet+analysis%2c+second+edition
1
)Uniform Resource Locator (URL
229
سناریوهای واقعی پایه فصل هشتم
در اینجا قدری نگرانی امنیتی وجود دارد ،زیرا بعضی از افراد از توییتهای خود حفاظت
میکنند و نمیخواهند که توسط کسی دیده شوند .این بدان معنی نیست که هیچ کس
نمیتواند توییت را بخواند ،بلکه کاربری در همان شبکه میتواند این ترافیک را ردگیری
کند و محتوای آن توییت را بهروشنی ببیند.
230
سناریوهای واقعی پایه فصل هشتم
نمایشگر بستهی ۷در شکل 6-8نشان میدهد که محتوا هنوز plaintextاست .این امر در
فیلد Line-based Text Dataمشهود است که ما آن را در ربایش قبلی دیدیم.
آگاهی و دانشی که اینجا دربارهی توییتر به دست میآوریم الزاماً حیرتآور نیست ،ولی
میتواند شما را وادار کند تا در خصوص ارسال دادههای حساس از طریق پیامهای خصوصی
توییتر از طریق شبکههای غیر موثق تجدید نظر نمایید.
231
سناریوهای واقعی پایه فصل هشتم
یک تفاوت بین فرآیند احراز هویت فیسبوک و توییتر آن است که ما بالفاصله پایان ارتباط
احراز هویت را به دنبال مخابره و ارسال گواهیهای ورود به سیستم نمیبینیم .در عوض یک
درخواست GETرا برای /home.phpدر سرآیند HTTPبستهی 12میبینیم ( همان
طوری که در شکل 8-8نشان داده شده است).
همان طوری که در بستهی 64نشان داده شده است ،اتصال به کار رفته برای احراز هویت
پس از تحویل شدن محتوای home.phpپایان پیدا میکند ( پس از پایان فایل ربایش در
شکل .)9-8
232
سناریوهای واقعی پایه فصل هشتم
نخست ،اتصال HTTPاز طریق پورت 80پایان پیدا میکند (بستهی ، )62و سپس اتصال
HTTPSاز طریق پورت 443پایان پیدا مینماید.
فیسبوک است .وقتی که این فایل را باز میکنید ،ممکن است از دیدن تعداد بستههای کمی
که در آن وجود دارد غافلگیر شوید.
دو بستهی نخست شامل ترافیک HTTPمسئول فرستادن خود پیام هستند .زمانی که سرآیند
HTTPبستهی 2را بزرگ کنید (همان طوری که در شکل 10-8نشان داده شده است)
خواهید دید که روش POSTبا یک رشتهی URLنسبتاً طوالنی مورد استفاده قرار گرفته
است .همان طوری که میتوانید ببینید ،این رشته حاوی مرجعی برای AJAXاست.
) Asynchronous JavaScript and XML (AJAXیک شیوهی سمت کاربر برای به وجود
آوردن برنامههای کاربردی تعاملی وب است که اطالعات را از سروری در پسزمینه بازیابی
مینمایند .در حالی که میتوانید انتظار داشته باشید که پس از فرستاده شدن پیام خصوصی به
مرورگر کاربر ،نشست به صفحهی دیگری هدایت شود (همان طوری که توییتر پیام را هدایت
234
سناریوهای واقعی پایه فصل هشتم
میکند) ،ولی این اتفاق نمیافتد .در این حالت ،استفاده از AJAXشاید به این معنی باشد که
پیام بهجای یک صفحهی منفرد از نوعی pop-upتعاملی فرستاده شده است ،و این یعنی که
هیچ هدایت مجدد یا بارگذاری مجددی الزم نیست .این یکی از مزایای بعضی از اجراهای
AJAXاست.
همان طوری که در شکل 11-8نشان داده شده است ،شما میتوانید با بزرگ کردن قسمت
Line-based Text Dataاز بستهی 2محتوای این پیام خصوصی را مورد بررسی قرار دهید.
همانند توییتر ،به نظر میرسد مثل اینکه پیامهای خصوصی فیسبوک بهطور رمز نشده
فرستاده میشوند.
235
سناریوهای واقعی پایه فصل هشتم
فردی در میان 1را دشوارتر نماید( .حمالت فردی در میان حمالتی هستند که در آنها کاربران
مخرب ترافیک را بین دو طرف ارتباط ردگیری میکنند ).در واقعیت ،تفاوتهای بین
روشهای احراز هویت این دو وبسایت بسیار کم هستند ،ولی بهواقع نشان میدهند که این
تفاوتها زمانی میتوانند رخ دهند که این دو برنامه برای تهیهی کاری تخصیص داده شده
باشند که وظیفهی مشابهی را اجرا مینماید.
اگرچه این جالب است ،ولی نکتهی این تحلیل یافتن آن نبود که توییتر و فیسبوک دقیقاً
چگونه کار میکنند ،بلکه هدف تنها آن بود که شما را در معرض ترافیکی بگذارد که بتوانید
آنها را با هم مقایسه نمایید .اگر به این نیاز داشته باشید که بررسی کنید چرا سرویسهای
مشابه آنطور که باید عمل نمیکنند و یا اینکه بکندی کار میکنند ،آنگاه این خط مبنا
میتواند چارچوبی خوب را فراهم آورد.
1
man-in-the-middle attack
236
سناریوهای واقعی پایه فصل هشتم
23۷
سناریوهای واقعی پایه فصل هشتم
همان طوری که میتوانید ببینید 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به دامنهها یا زیردامنههای دیگر ارجاع میدهد ،و به این شکل وادار
میکند که چندین پرس و جو اجرا شوند .بیایید ببینیم که آیا میتوانیم مدرکی برای اثبات
نظریههای خود پیدا کنیم یا نه.
شکل :14-8به نظر میرسد که ترافیک DNSپرس و جوها و پاسخهای استاندارد باشد.
239
سناریوهای واقعی پایه فصل هشتم
به نظر میرسد که ترافیک نشان داده شده در شکل 14-8همگی پرس و جوها و پاسخها
باشد .برای دیدن بهتر نامهای DNSپرس و جو شده ،فیلتری را به وجود آورید که تنها پرس
و جوها را نشان دهد .برای درست کردن این فیلتر ،یک پرس و جو را در قسمت Packet
Listانتخاب کنید و سرآیند بسته را در قسمت Packet Detailsبزرگ کنید .سپس روی
فیلد ( Flags: 0x0100پرس و جوی استاندارد) راست کلیک کنید و روی Apply as
Filterبیایید و Selectedرا انتخاب کنید.
این باید فیلتر dns.flags == 0x0100را فعال نماید که تنها پرس و جوها را نشان میدهد و
خواندن و ثبت کردن سوابقی که تحلیل میکنیم را بسیار سادهتر مینماید .همان طوری که
در شکل 14-8نشان داده شده است ،بهواقع 14پرس و جو وجود دارد (هر بسته معرف یک
پرس و جو است) ،و به نظر میرسد که همهی نامهای دامنه با ESPNیا محتوای نمایش داده
شده در صفحهی خانهی آن مرتبط باشد.
240
سناریوهای واقعی پایه فصل هشتم
با توجه به اتصالهای زیادی که رخ میدهند ،ممکن است بیشترین نفع ما در آن باشد تا کنترل
کنیم که آیا این فرآیند بسیار پیچیده به شکلی بهنگام و بجا رخ میدهد یا نه .دیدن خالصهای
از ترافیک ،سادهترین راه برای انجام این کار است .برای انجام این کار ► Statistics
Summaryرا انتخاب کنید .پنجرهی خالصه – که در شکل 16-8نشان داده شده است –
نشان میدهد که کل فرآیند در حدود 2ثانیه رخ میدهد که کامالً قابل قبول است.
فکر کردن به این مسئله عجیب است که درخواست سادهی ما برای دیدن یک صفحهی وب
به درخواستها برای 14دامنه و زیردامنهی مجزا تقسیم میشود ،به انواع سرورهای مختلف
میرسد ،و اینکه کل این فرآیند تنها در 2ثانیه انجام میشود .ربایش ترافیک در هنگام دیدن
وبسایتهای محبوبتان و تجزیهی آن – همان طوری که ما در اینجا داشتهایم – تمرینی
جالب است .تا شروع به دیدن بستهها نکنید ،هرگز کامالً نخواهید دانست که دادههای شما
از کجا میآیند.
241
سناریوهای واقعی پایه فصل هشتم
شکل :16-8پنجرهی Summaryبرای فایل نشان میدهد که کل این فرآیند در دو ثانیه رخ میدهد.
242
سناریوهای واقعی پایه فصل هشتم
تحلیل
همان طوری که در شکل 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را به
همهی کامپیوترها در بخش شبکه میفرستد.
یک پاسخ در بستهی 2دریافت شده است ،و کامپیوتر کاربر میفهمد که 172.16.0.10در
00:24:81:a1:f6:79قرار دارد .همچنان به محض دریافت این پاسخ ،اکنون کامپیوتر دارای
مسیری به سوی درگاه است که باید بتواند آن را به اینترنت هدایت نماید.
به دنبال پاسخ ،ARPکامپیوتر باید تالش کند تا نام DNSوبسایت را با استفاده از DNS
در بستهی 3به یک آدرس IPتبدیل نماید .همان طوری که در شکل 18-8نشان داده شده
است ،کامپیوتر این کار را با فرستادن یک بستهی پرس و جوی DNSبه سرور اصلی 4.2.2.2
انجام میدهد .
تحت شرایط نرمال ،یک سرور DNSخیلی سریع به یک پرس و جوی DNSپاسخ میدهد،
ولی این امر در اینجا صادق نیست .ما بهجای یک پاسخ ،میبینیم که همان پرس و جوی
DNSبرای بار دوم به آدرس مقصد دیگری فرستاده شده است .همان طوری که در شکل
244
سناریوهای واقعی پایه فصل هشتم
19-8نشان داده شده است ،در بستهی ،4پرس و جوی DNSبه سرور DNSثانویه فرستاده
شده که در کامپیوتر پیکربندی شده است و 4.2.2.1است .
باز هم هیچ پاسخی از سرور DNSدریافت نمیشود ،و این پرس و جو باز هم یک ثانیه بعد
به 4.2.2.2فرستاده میشود .همان طوری که در شکل 20-8نشان داده شده است ،این فرآیند
خود را تکرار میکند و در طول چند ثانیهی بعدی مقصد بستهها را بین سرورهای پیکربندی
شدهی اولیه و ثانویه تغییر میدهد .کل این فرآیند در حدود 8ثانیه طول میکشد ،
که نشان میدهد چه زمانی طول میکشد تا مرورگر کاربر گزارش دهد که وبسایت غیرقابل
دسترس است.
بر اساس بستههایی که دیدهایم ،میتوانیم با دقت منشأ مشکل را مشخص نماییم .نخست،
یک درخواست موفق 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یی
متفاوت از آدرس مسیریاب درگاه فرستاده شده است ،مشکل را میتوانستیم بالفاصله
شناسایی نماییم .این پیکربندیهای اشتباه اغلب منبع مشکالت شبکه هستند و آنها را میتوان
با اندکی تحلیل بسته سریعاً حل کرد.
تحلیل
همان طوری که در شکل 21-8نشان داده شده است ،ربایش با یک درخواست و پاسخ
ARPآغاز میشود .در بستهی ،1کامپیوتر کاربر – با آدرس MACبهقرار
،00:25:b3:bf:91:eeو آدرس IPبهقرار – 172.16.0.8در تالش برای یافتن آدرس MAC
مرتبط با آدرس 172.16.0.102 IPیک بستهی ARP broadcastرا به همهی کامپیوترها
در بخش شبکه میفرستد.ما این آدرس را بالفاصله تشخیص نمیدهیم.
248
سناریوهای واقعی پایه فصل هشتم
جالب توجه آن است که تالش اتصال 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
سناریوهای واقعی پایه فصل هشتم
پس از بررسی پیکربندی دستگاهی دیگر در شبکه که بهدرستی کار میکند ،درخواست و
پاسخ 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دسترسی پیدا نماید.
1
cache
251
سناریوهای واقعی پایه فصل هشتم
این سناریو عمالً بسیار شایع است .این سناریویی است که بدافزار برای سالهاست از آن
استفاده میکند تا کاربران را بهسوی وبسایتهایی هدایت کند که میزبان کد مخرب هستند.
تصور کنید که یک حملهکننده بخواهد فایل hostsشما را به گونهای تغییر بدهد که هر
وقت به سراغ بانکداری آنالین خود بروید ،این کار عمالً شما را به سمت سایتی مجهول
هدایت کند که برای دزدیدن گواهیهای حساب شما طراحی شده است.
252
سناریوهای واقعی پایه فصل هشتم
تحلیل
ربایش بسته بهجای ترافیک 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
سناریوهای واقعی پایه فصل هشتم
همان طوری که در شکل 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
سناریوهای واقعی پایه فصل هشتم
این بستهی TCPدارای پرچم SYNاست ،و تالش میکند تا با سرور دور در پورت 80
ارتباط برقرار نماید
255
سناریوهای واقعی پایه فصل هشتم
همان طوری که در شکل 28-8نشان داده شده است ،این فرآیند یک بار دیگر پس از حدود
یک ثانیه تکرار میشود و در این نقطه ارتباط متوقف میشود و مرورگر گزارش میدهد که
وب سایت را نمیتواند پیدا کند.
شکل :28-8بستهی TCP SYNسه بار تالش شد و هیچ پاسخی را دریافت نکرد.
همچنان که این سناریو را رفع عیب میکنیم ،این نکته را در نظر میگیریم که میدانیم ایستگاه
کاری در درون شبکهی ما میتواند با دنیای خارج ارتباط برقرار نماید ،زیرا پرس و جوی
DNSبه سرور بیرونی DNSدر 4.2.2.1موفقیتآمیز بوده است .سرور DNSبا آنچه به نظر
میرسد آدرسی معتبر باشد پاسخ میدهد ،و میزبانهای ما سعی میکنند تا به یکی از این
آدرسها متصل شوند .همچنین ،به نظر میرسد ایستگاه کاری محلی که ما تالش میکنیم از
آن متصل شویم فعال باشد.
مشکل آن است که سرور دور به درخواستهای اتصال پاسخ نمیدهد؛ یک بستهی TCP
RSTفرستاده نشده است .این امر میتواند به چندین دلیل رخ داده باشد :یک سرور وب که
نامناسب پیکربندی شده باشد؛ یک پشتهی پروتکل خراب شده در سرور وب؛ یا یک
دستگاهی فیلتر کنندهی بسته در شبکهی دور (نظیر دیوارهی آتش) .فرض کنید که هیچ
دستگاهی فیلتر کنندهی بستهای وجود نداشته باشد ،و در این صورت همهی راه حلهای
بالقوهی دیگر در شبکهی دور قرار و ورای کنترل ما قرار دارند .در این صورت ،سرور وب
بهدرستی عمل نمیکند ،و هیچ تالشی برای دسترسی به آن موفق نمیشود .هر زمان که مشکل
از طرف Googleحل شود ،ارتباط قادر به انجام خواهد بود.
256
سناریوهای واقعی پایه فصل هشتم
چاپگر ناسازگار
مدیر میز کمک 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مشاهده کرد.
258
سناریوهای واقعی پایه فصل هشتم
همان طوری که در شکل 30-8نشان داده شده است ،به دنبال بستهی ،4بستهی دادههای
دیگری فرستاده میشود که حاوی 1460بایت از اطالعات است .این دادهها توسط چاپگر
تصدیق شده است .
جریان دادهها تا دو بستهی آخر در ربایش ادامه پیدا میکند .بستهی 121یک بستهی ارسال
مجدد TCPاست ،و نخستین نشانهی مشکل (همان طوری که در شکل 31-8نشان داده شده
است).
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چاپگر بد کار میکند .زمانی که کار چاپ زیادی به
چاپگر فرستاده میشود ،چاپگر تنها تعداد مشخصی از صفحات را – احتماالً تا مناطق
مشخصی از حافظه که مورد دسترسی قرار گرفتهاند – چاپ میکند .در این مرحله ،موضوع
حافظه سبب میشود تا چاپگر نتواند هیچ دادهی جدیدی را بپذیرد ،و ارتباط را با میزبانی
متوقف میکند که کار چاپ را میفرستد.
261
سناریوهای واقعی پایه فصل هشتم
1
)resource record (RR
2
)wide area network (WAN
262
سناریوهای واقعی پایه فصل هشتم
تحلیل
همان طوری که در شکل 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تفکیک
شدهاند ،بنابراین ،اینجا توقفگاه بعدی ما خواهد بود.
بهمنظور ربایش ترافیک مناسب از سرور DNSشعبهی اداره ،شنودگر خود را در مکانی
میگذاریم و منعکس کردن پورت را به گونهای تغییر میدهیم که ترافیک سرور – بهجای
ترافیک ایستگاه کاری – اکنون به سوی شنودگر ما منعکس شود .نتیجه فایل
stranded_branchdns.pcapاست.
264
سناریوهای واقعی پایه فصل هشتم
1
zone transfer
265
سناریوهای واقعی پایه فصل هشتم
سرور DSNدر مکان دفتر شعبه یک slaveبه سرور DNSدر دفتر مرکزی است ،و این
بدان معنی است که برای دریافت رکوردهای مرجع به آن تکیه میکند .سرور برنامهی
کاربردی که کاربران در دفتر شعبه سعی میکنند به آن دسترسی پیدا کنند در داخل دفتر
مرکزی قرار دارد ،که این بدان معنی است که سرور DNSدفتر مرکزی برای آن سرور معتبر
است .برای آنکه سرور دفتر شعبه بتواند یک درخواست DNSرا برای سرور برنامهی
کاربردی تفکیک کند ،رکورد مرجع DNSبرای آن سرور باید از سرور DNSدفتر مرکزی
به سرور DNSدفتر شعبه ارسال شود .این مسئله احتماالً منشأ بستهی SYNدر این فایل ربایش
است.
فقدان پاسخ به این بستهی SYNبه ما میگوید که مشکل DNSدر اینجا نتیجهی یک انتقال
ناحیه ناموفق بین سرورهای DNSدفتر مرکزی و دفتر شعبه است .اکنون با پیدا کردن دلیل
ناموفق بودن انتقال منطقه میتوانیم یک گام دیگر به جلو برداریم .مقصران احتمالی را میتوان
به مسیریابهای بین این دفاتر و یا خود سرور DNSدفتر مرکزی محدود کرد .برای فهمیدن
این موضوع میتوانیم ترافیک سرور DNSدفتر مرکزی را شنود کنیم تا ببینیم که آیا بستهی
SYNآن را برای این سرور میسازد یا نه.
266
سناریوهای واقعی پایه فصل هشتم
من یک فایل ربایش برای ترافیک سرور DNSدفتر مرکزی را لحاظ نکردهام ،زیرا چنین
چیزی وجود نداشت .بستهی SYNهرگز به این سرور نرسیده است .بهمحض اعزام تکنسینها
برای بررسی پیکربندی مسیریابهایی که این دفتر را به یکدیگر متصل میکنند ،معلوم شد
که مسیریاب دفتر مرکزی بهصورتی پیکربندی شده بود که اجازه دهد ترافیک UDPتنها در
پورت 53وارد شود و ورود ترافیک TCPدر پورت 53را مسدود کند .این پیکربندی اشتباه
ساده مانع از رخ دادن انتقالهای منطقه بین سرورها شده بود ،که مانع از آن میشد تا کاربران
دفتر شعبه بتوانند پرس و جوها برای دستگاههای موجود در دفتر مرکزی را تبدیل کنند.
26۷
سناریوهای واقعی پایه فصل هشتم
میکنند .مدیران سیستم نیز تمایل دارند که کد بَد را برای خطاهای شبکه و ارتباطات کند
سرزنش نمایند.
در این سناریو ،برنامهنویسی یک برنامهی کاربردی را برای پیگیری فروش در چند فروشگاه
و گزارش دادن به بانک اطالعات مرکزی تهیه کرده است .این برنامه در تالش برای حفظ و
صرفهجویی پهنای باند در طول ساعات معمول اداری یک برنامهی زمان بالدرنگ نیست.
گزارش دادن دادهها در کل طول روز انباشته میشود و در طول شب بهصورت یک فایل
مقادیر جداشده با ویرگول )CSV( 1مخابره میشود تا در بانک اطالعات مرکزی گنجانده
شود.این برنامهی کاربردی تازه تهیه شده بهدرستی عمل نمیکند .فایلهای فرستاده شده از
فروشگاهها توسط سرور دریافت میشوند ،ولی دادههای گنجانده شده در بانک اطالعات
صحیح نیست .بخشهای در حال گمشدن هستند؛ دادهها در مکان نادرست قرار دارند؛ و
بعضی از بخشهای دادهها در حال گمشدن هستند .برنامهنویس از لج مدیر سیستم ،شبکه را
برای این مشکل سرزنش میکند .او متقاعد شده است که فایلها در هنگام ارسال از
فروشگاهها به مخزن اطالعات مرکزی خراب شدهاند .هدف ما آن است که به او ثابت کنیم
که اشتباه میکند.
1
)comma-separated value (CSV
268
سناریوهای واقعی پایه فصل هشتم
محدود به یک نمونهی منفرد از یک فروشگاه خواهد بود که در حال آپلود کردن فایل CSV
در سرور گردآوری است .نتیجه فایل ربایش tickedoffdeveloper.pcapاست.
تحلیل
ما جز جریان پایهی اطالعات در شبکه چیزی دربارهی برنامهی کاربردی که برنامهنویس تهیه
کرده است نمیدانیم .به نظر میرسد که فایل ربایش با قدری ترافیک FTPآغاز میشود؛
بنابراین ،آن را مورد بررسی قرار خواهیم داد تا ببینیم که آیا این بهواقع ساز و کاری است که
این فایل را منتقل میکند یا نه .این جای خوبی برای بررسی نمودار جریان ارتباطات برای
خالصهای عالی و تمیز از ارتباطاتی است که در حال رخ دادن است .برای انجام این کار
Statistics ► Flow Graphرا انتخاب کنید ،و سپس بر روی OKکلیک کنید .شکل
3۷-8نمودار حاصله را نشان میدهد.
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را
تصریح میکند .
بستههایی که به دنبال دستور 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فایل استخراج شده تصدیق
کرد.
پس از مقایسهی فایلها ،میتوانیم اثبات کنیم که شبکه را نباید برای خرابی بانک اطالعات
سرزنش کرد که درون این برنامهی کاربردی رخ میدهد .فایل ارسال شده از فروشگاه به
سرور گردآوری در زمان رسیدن به سرور سالم و دست نخورده است ،و بنابراین هر نوع
خرابی باید زمانی رخ داده باشد که فایل توسط این برنامهی کاربردی پردازش شده است.
1
MD5 hash
2۷3
سناریوهای واقعی پایه فصل هشتم
پیچیدهاش که صدها خط برنامه را به خود اختصاص داده بود هنوز هم چیزی بیشتر ،FTP
،TCPو IPنبود .با استفاده از آنچه دربارهی این پروتکلهای پایه میدانیم ،توانستیم اطمینان
حاصل کنیم که فرآیند ارتباط بهدرستی دنبال شده و حتی توانستیم فایلهایی را بهمنظور
اثبات صحت شبکه استخراج کنیم .بسیار مهم است که به یاد داشته باشید اهمیتی ندارد
موضوعی که در دست دارید تا چه اندازه پیچیده است ،چرا که این هنوز فقط مشتی بسته
است.
آخرین نظرات
در این فصل چندین سناریوی پایه را پوشش دادیم که در آنها تحلیل ما را قادر ساخت تا
درک بهتری از ارتباطات مشکلدار پیدا کنیم .با استفاده از تحلیل پایهای پروتکلهای عمومی
توانستیم مشکالت شبکه را به شکلی بهنگام دنبال و حل کنیم .درست است که احتمال دارد
دقیقاً با سناریوهای کتاب تمرین خود مواجه نشوید ،اما ،تکنیکهای تحلیل که در اینجا ارائه
شدهاند باید به هنگامی که مشکالت منحصر به فرد خود را حل میکنید برایتان سودمند باشند.
2۷4
فصل 9
جنگ با شبکه کُند
جنگ با شبکه کند فصل نهم
نکته :برای رفع اشکال از شبکههای کند میتوان از تکنیکهای متعددی استفاده کرد .من
تصمیم گرفتهام تا این فصل را اساساً بر TCPمتمرکز کنم ،زیرا اغلب اوقات این همهی آن
چیزیست که مجبور خواهید بود با آن کار کنید .پروتکل کنترل انتقال ( )TCPشما را قادر
میسازد تا بهجای ایجاد ترافیک بیشتر ،تحلیل گذشتهنگرِ غیرفعال 4را اجرا کنید (همانند
.)ICMP
1
error-recovery
2
flow-control
3
baselining
4
passive retrospective analysis
2۷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
جنگ با شبکه کند فصل نهم
وقتی بستهای فرستاده میشود ،ولی گیرنده یک بستهی TCP ACKرا نمیفرستد ،میزبان
ارسالکننده فرض را بر آن میگذارد که بستهی اولیه گم شده است و این بستهی اولیه را
دوباره ارسال میکند .زمانی که ارسال مجدد اجرا میشود ،مقدار RTOدو برابر میشود؛
اگر هیچ بستهی ACKای پیش از به حد رسیدن این مقدار دریافت نشود ،آنگاه ارسال مجدد
دیگری رخ خواهد داد .اگر یک ACKدریافت نشود ،آنگاه مقدار RTOبرای ارسال مجدد
بعدی دو برابر خواهد شد .این فرآیند ادامه پیدا خواهد کرد و مقدار RTOبرای هر ارسال
مجدد دو برابر خواهد شد ،تا آنکه یک بستهی ACKدریافت شود و یا تا زمانی که فرستنده
به حداکثر تعداد تالشهای ارسال مجددی برسد که برای اجرای آن پیکربندی شده است.
حداکثر تالشهای ارسال مجدد به مقدار پیکربندی شده در سیستم عامل ارسالکننده بستگی
دارد .میزبانهای Windowsبهطور پیش فرض تا حداکثر 5تالش ارسال مجدد دارند .اغلب
میزبانهای Linuxتا حداکثر 15تالش ارسال مجدد دارند .این گزینه در هر کدام از
سیستمهای عامل قابل پیکربندی است.
2۷9
جنگ با شبکه کند فصل نهم
برای دیدن نمونهای از ارسال مجدد ،TCPفایل tcp_retransmission.pcapرا باز کنید که
حاوی شش بسته است .نخستین بستهی آن در شکل 2-9نشان داده شده است.
این بسته یک بستهی TCP PSH/ACKاست که حاوی 648بایت داده است که از
10.3.30.1به 10.3.71.7فرستاده شده است .این نمونهی بارزی از یک بستهی داده است.
تحت شرایط عادی ،انتظار دارید تا پس از فرستاده شدن نخستین بسته ،در پاسخ یک بستهی
TCP ACKرا با سرعتی منصفانه سریع دریافت کنید .اما ،در این مورد ،بستهی بعدی یک
ارسال مجدد است .شما با نگاه کردن به بسته در قسمت Packet Listمیتوانید این را بفهمید.
ستون Infoبهروشنی میگوید ] ،[TCP Retransmissionو این بسته با متن قرمز در یک
پس زمینهی سیاه ظاهر میشود .شکل 3-9نمونههایی از ارسالهای مجددِ فهرست شده در
قسمت Packet Listرا نشان میدهد.
280
جنگ با شبکه کند فصل نهم
همان طوری که در شکل 4-9نشان داده شده است ،همچنین با بررسی یک بسته در
قسمتهای Packet Detailsو Packet Bytesمیتوانید تعیین کنید که آیا این بسته یک
ارسال مجدد است یا نه.
توجه داشته باشید که این بسته مشابه همان بستهی اصلی است (غیر از فیلدهای شناسهی 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را مورد
بررسی قرار خواهیم داد؛ یک ویژگی که گیرندهی داده برای کشف و شناسایی و احیا از
وضعیت گمشدن بسته مورد استفاده قرار میدهد.
1
delta time
2
time lapse
3
TCP duplicate acknowledgments
282
جنگ با شبکه کند فصل نهم
نکته :اصطالح مناسب برای یک بستهی 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ببینید.
کشف و شناسایی گمشدن بسته توسط دریافت کنندهی دادهها از طریق شمارههای ترتیب
امکانپذیر میشود .از آنجایی که دریافت کننده شماره ترتیبها را ردگیری میکند ،بنابراین
میتواند تعیین نماید که چه زمانی شماره ترتیبهایی را دریافت میکند که خارج از ترتیب
هستند.
زمانی که دریافت کننده یک شماره ترتیب غیر منتظره را دریافت میکند ،فرض را بر آن
قرار میدهد که بستهای در طول انتقال گم شده است .دریافت کننده باید بهمنظور بازسازی
صحیح دادهها آن بستهی گم شده را داشته باشد و بنابراین دوباره آن بستهی ACKرا
میفرستد که حاوی شماره ترتیب مورد انتظار بستهی گم شده است تا یک ارسال مجدد آن
بسته را از میزبان ارسالکننده حاصل نماید.
284
جنگ با شبکه کند فصل نهم
شکل ACK :۷-9های المثنی از دریافت کننده منجر به یک ارسال مجدد سریع میشود.
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
جنگ با شبکه کند فصل نهم
28۷
جنگ با شبکه کند فصل نهم
شما با بررسی و تعیین هر یک از موارد زیر میتوانید تعیین کنید که آیا این یک بستهی ACK
المثنی است یا نه:
ستون Infoدر قسمت .Packet Detailsاین بسته باید به رنگ قرمز در یک پس
زمینهی سیاه ظاهر شود.
قسمت Packet Detailsزیر سرآیند .SEQ/ACK Analysisاگر این سرآیند را
بزرگ کنید ،آنگاه درخواهید یافت که این بسته بهعنوان یک بستهی ACKالمثنی
فهرست شده است.
چهارمین بسته در فایل ربایش یک قطعهی دیگر از دادههای فرستاده شده از میزبان
ارسالکننده با شماره ترتیب نادرست است .در نتیجه ،میزبان دریافت کننده دومین بستهی
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
پشتیبانی مینمایند ،بنابراین ،شما بهطور معمول باید بررسی کنید که این ویژگی اجرا و پیاده
شده باشد.
1
sliding-window
2
receive window
3
TCP buffer space
290
جنگ با شبکه کند فصل نهم
بیشتری را ارسال کند ،دریافت کننده باید تصدیقی را مبنی بر دریافت دادههای قبلی بفرستد.
دریافت کننده همچنین باید فضای بافر TCPرا با پردازش کردن دادههایی خالی کند که آن
مکان را اشغال کردهاند .شکل 13-9چگونگی عمل پنجرهی دریافت را نشان میدهد.
291
جنگ با شبکه کند فصل نهم
شکل :14-9اندازهی پنجره را در زمان پرمشغله شدن سرور میتوان تنظیم کرد.
292
جنگ با شبکه کند فصل نهم
در شکل ،14-9سرور با اندازهی پنجرهی آگهی شدهی 5000آغاز میکند .کاربر 2000
بایت ،و به دنبال آن 2000بایت دیگر را میفرستد و تنها 1000بایت از فضای بافر را خالی
میگذارد .سرور میفهمد که بافرش بسرعت در حال پر شدن است .سرور میداند که اگر
انتقال دادهها با این نرخ ادامه پیدا کند ،بستهها بزودی گم خواهند شد .سرور برای جبران این
امر یک تصدیق را برای کاربر میفرستد که اندازهی پنجرهی آن به 1000بایت تجدید نظر
شده است .در نتیجه ،دادههای کمتری توسط کاربر فرستاده میشود ،و سرور میتواند
محتوای بافر خود را با سرعتی قابل قبول پردازش نماید؛ سرعتی که اجازه میدهد دادهها به
شکلی ثابت جریان پیدا کنند.
این فرآیند تغییر اندازه 1در هر دو طرف عمل میکند .زمانی که سرور میتواند دادهها را با
سرعتی باالتر پردازش کند ،میتواند یک بستهی ACKبا اندازهی پنجرهی بزرگتر را
بفرستد.
1
resizing
293
جنگ با شبکه کند فصل نهم
پردازش کند ،با یک اندازهی پنجرهی غیر صفر پاسخ خواهد داد ،و ارتباط دوباره از سر
گرفته خواهد شد .شکل 15-9نمونهای از آگهی پنجرهی صفر را نشان میدهد.
شکل :15-9انتقال دادهها در زمانی که اندازهی پنجره در صفر قرار داده شده باشد متوقف میشود.
در شکل ،15-9سرور دریافت دادهها را با اندازهی پنجرهی 5000آغاز میکند .سرور پس
از دریافت 4000بایت داده از کاربر شروع به تحمل بار پردازش بسیار سنگینی میکند ،و
دیگر نمیتواند هیچ دادهی دیگری را از کاربر پردازش کند .سپس سرور بستهای را با اندازهی
پنجرهی قرار داده شده در صفر میفرستد .کاربر ارسال دادهها را متوقف میکند و یک بستهی
keep-aliveرا میفرستد .پس از بستهی ، keep-aliveسرور با بستهای پاسخ میدهد که
کاربر را آگاه میکند که اکنون میتواند دادهها را دریافت نماید ،و اینکه اندازهی پنجرهاش
1000بایت است .آنگاه کاربر فرستادن دادهها را از سر میگیرد.
294
جنگ با شبکه کند فصل نهم
در این فایل ،ما با چندین بستهی TCP ACKآغاز خواهیم کرد که در حال حرکت از
192.168.0.20به 192.168.0.30هستند .مقدار مورد عالقهی اصلی برای ما فیلد Window
Sizeاست که آن را میتوان هم در ستون Infoاز قسمت Packet Listدید و هم در سرآیند
TCPدر قسمت Packet Detailsمشاهده کرد .همان طوری که در شکل 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در پاسخ فرستاده شده است.
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
جنگ با شبکه کند فصل نهم
این بستههای keep-aliveدر بازههای زمانی ،6/8 ،3/4و 13/5ثانیه رخ میدهند .این
فرآیند میتواند برای مدتی طوالنی ادامه پیدا کند که این امر به سیستمهای عامل دستگاههای
ارتباط برقرار کننده بستگی دارد .در این مورد ،همانطور که میتوانید ببینید ،با افزودن مقادیر
در ستون ،Timeاتصال برای حدود 25ثانیه متوقف میشود .تالش برای احراز هویت با یک
کنترل کنندهی دامنه یا دانلود کردن یک فایل از اینترنت را در حالی که تأخیری 25ثانیهای
را تحمل میکنید غیر قابل قبول است!
299
جنگ با شبکه کند فصل نهم
ربایش کنید (در صورت ممکن) ،بهطوری که بتوانید عمالً ببینید که آیا بستههای ارسال مجدد
وجود دارند یا نه.
بستههای ACKالمثنی
من میل به آن دارم که یک بستهی ACKالمثنی را بهعنوان معکوس یک بستهی ارسال مجدد
تصور کنم ،زیرا زمانی فرستاده میشود که سرور میفهمد بستهای از طرف کاربر که با آن
در ارتباط است در نقل و انتقال گم شده است .در اغلب موارد ،به هنگام ربایش ترافیک در
هر دو سمت ارتباط میتوانید ACKهای المثنی را ببینید .به یاد داشته باشید که ACKهای
المثنی هنگامی فعال میشوند که بستهها خارج از ترتیب و توالی دریافت شده باشند .برای
مثال ،اگر سرور تنها اولین و سومین بستهی فرستاده شده را دریافت کرده باشد ،آنگاه این امر
منجر به ارسال یک ACKالمثنی به کاربر خواهد شد تا سبب یک ارسال مجدد سریع برای
بستهی دوم از کاربر شود .از آنجایی که نخستین و سومین بسته را دریافت کردهاید ،بنابراین،
محتمل است هر دلیلی که سبب گمشدن بستهی دوم شده است موقتی باشد؛ بنابراینACK ،
المثنی در اغلب موارد بهطور موفقیتآمیزی فرستاده و دریافت خواهد شد .بهطور مسلم این
سناریو همیشه صادق نیست و بنابراین ،زمانی که مظنون به گمشدن بسته در سمت سرور
هستید و هیچ ACKالمثنیی را نمیبینید ،آنگاه ربایش بستهها را از طرف کاربر مورد رسیدگی
و مالحظه قرار دهید.
300
جنگ با شبکه کند فصل نهم
نکته :بهمنظور دنبال کردن این بخش ،اطمینان حاصل کنید که با انتخاب کردن ► View
ارتباطات معمولی
قدری بعد بهطور مفصل در خصوص خطوط مبنای شبکه بحث خواهیم کرد .در حال حاضر،
فقط بدانید که باید یک خط مبنا از ارتباطات معمولی را داشته باشید تا آن را با شرایط تأخیر
باال مقایسه نمایید .برای این مثالها ،ما از latency1.pcapاستفاده خواهیم کرد .ما پیش از
این جزئیات دستدهی TCPو ارتباط HTTPرا پوشش دادیم و بنابراین دوباره آن
موضوعات را مرور نخواهیم کرد .در واقع ،کالً به قسمت Packet Detailsنگاهی نخواهیم
داشت .همان طوری که در شکل 22-9نشان داده شده است ،آنچه بهواقع به آن عالقهمند
هستیم ستون Timeاست.
301
جنگ با شبکه کند فصل نهم
شکل :22-9این ترافیک خیلی سریع رخ میدهد و آن را میتوان معمولی در نظر گرفت.
این توالی ارتباط کامالً سریع است .کل فرآیند کمتر از 0/1ثانیه طول میکشد .چند فایل
ربایش بعدی که مورد بررسی قرار خواهیم داد از همین الگوی ترافیک با چند تفاوت
کوچک در زمانبندی بستهها تشکیل خواهند شد.
ارتباطات کند
تاخیرکابل
اکنون بیایید به فایل ربایش latency2.pcapبپردازیم .توجه کنید همان طوری که در شکل
23-9نشان داده شده است ،همهی بستهها مشابه هستند بجز از لحاظ مقدار زمان در دو تای
آنها.
همچنان که شروع به بررسی این شش بسته میکنیم ،بالفاصله با نخستین نشانهی تأخیر
برخورد میکنیم .بستهی 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نشان داده شده است).
این ربایش بهطور معمول آغاز میشود و در آن دستدهی 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انجام
میشود ،و از آنجایی که این یک پروتکل الیهی برنامهی کاربردی است ،بنابراین ،به قدری
پردازش توسط سرور نیاز خواهد بود .تأخیر در وصول این بسته اشاره بر آن دارد که سرور
قادر به پردازش این دادهها در زمانی معقول نبوده است و در نهایت اشاره بر آن دارد که این
منشأ تأخیر در این فایل ربایش است.
306
جنگ با شبکه کند فصل نهم
شکل :26-9این دیاگرام را میتوان برای رفع ایراد از مشکالت تأخیر خود استفاده نمایید.
مبناسازی شبکه
وقتی همه چیز دیگر قاصر میماند ،خط مبنای شبکه میتواند یکی از مهمترین قطعاتی از
اطالعات باشد که شما در هنگام رفع ایراد کندی شبکه در اختیار دارید .برای مقصود ما ،خط
مبنای شبکه از نمونهای ترافیک از نقاط مختلف در شبکه تشکیل میشود که شامل قطعهای
بزرگ از آن چیزیست که آن را ترافیک "عادی" شبکه در نظر خواهیم گرفت .هدف از
خط مبنای شبکه آن است تا وقتی شبکه یا دستگاههای موجود در آن بهدرستی عمل نمیکنند
بهعنوان مبنای قیاس عمل نماید.
برای مثال ،سناریویی را در نظر بگیرید که در آن چندین کاربر در شبکه از کندی در هنگام
ورود به سرور محلی برنامهی کاربردی وب شکایت دارند .اگر قرار باشد که این ترافیک را
ربایش و آن را با خط مبنای شبکه قیاس کنید ،آنگاه ممکن است دریابید که سرور وب
بهطور عادی پاسخ میدهد ،ولی درخواستهای DNSحاصله از محتوای بیرونی تعبیه شده
در برنامهی کاربردی وب دو برابر کندتر از حد عادی اجرا میشوند.
ممکن است بدون کمک خط مبنای شبکه متوجه سرور کند DNSبیرونی شده باشید ،ولی
وقتی با تغییرات ظریف سر و کار داشته باشید ،آنگاه ممکن است دیگر این امر بدون وجود
خط مبنای شبکه صادق نباشد .اینکه 10پرس و جوی DNSبه میزان 0/1ثانیه بیشتر از حد
30۷
جنگ با شبکه کند فصل نهم
معمول طول بکشد به همان اندازه بد است که یک پرس و جوی DNSیک ثانیهی کامل
بیش از حد عادی طول بکشد ،ولی کشف و شناسایی حالت اول بدون داشتن خط مبنای
شبکه بسیار دشوارتر است.
از آنجایی که هیچ دو شبکهای وجود ندارد که شبیه هم باشند ،بنابراین ،مؤلفههای یک خط
مبنای شبکه میتواند بشدت فرق داشته باشند .بخشهای بعدی مثالهایی از مؤلفههای یک
خط مبنای شبکه را فراهم میکنند .ممکن است دریابید که همهی این اقالم در زیرساخت
شبکهی شما به کار میروند ،و یا اینکه تنها معدودی از آنها در شبکهی شما با کار رفتهاند.
صرفنظر از این موارد ،باید بتوانید هر مؤلفه از خط مبنای خود را در داخل یکی از طبقهی
اصلی خط مبنا قرار دهید که عبارتند از سایت ،میزبان ،و برنامهی کاربردی.
پروتکل مورد استفاده :در هنگام ربایش کردن ترافیک از همهی دستگاهها در بخش
شبکه در لبهی شبکه (مسیریاب /دیوار آتش) از پنجرهی 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
است که یک سرور وب به آن وابسته است .ما همیشه نسبت به وابستگیهای ضمنی بین
میزبانها آگاه نیستیم؛ بنابراین ،خط مبنای میزبان را میتوان برای تعیین این وابستگیها مورد
استفاده قرار داد .از اینجا میتوانید عمل نکردن صحیح یک میزبان را به سبب یک وابستگی
معیوب یا دارای تأخیر باال تعیین کنید.
311
جنگ با شبکه کند فصل نهم
ارتباطها /وابستگیها :این خط مبنا از یک ربایش با مدت طوالنیتر تشکیل میشود که
در آن از پنجرهی Conversationمیتوان برای تعیین میزبانها و برنامههای کاربردی دیگری
استفاده کرد که این برنامهی کاربردی به آنها وابسته است .ما همیشه نسبت به وابستگیهای
ضمنی بین برنامههای کاربردی آگاه نیستیم و به همین سبب این خط مبنا را میتوان برای
تعیین آنها مورد استفاده قرار داد .از اینجا میتوانید عمل نکردن صحیح یک برنامهی
کاربردی را به سبب یک وابستگی معیوب یا دارای تأخیر باال تعیین کنید.
سرعت انتقال دادهها :شما میتوانید از ویژگیهای خالصهی ربایش و ترسیم نمودار
Wiresharkبرای تعیین سرعت انتقال و پایداری اتصال به سرور برنامهی کاربردی در طول
عملیات عادیاش استفاده کنید تا این خط مبنا را به وجود آورید .هر گاه کند بودن برنامهی
کاربردی گزارش شود ،آنگاه شما میتوانید از این خط مبنا برای تعیین آن استفاده کنید که
آیا مشکالت ایجاد شده در نتیجهی استفادهی زیاد به وجود آمدهاند یا بار زیاد یک کاربر.
312
جنگ با شبکه کند فصل نهم
خط مبنای شما حاوی اطالعات بسیار محرمانهای اطمینان حاصل کردن از شبکهی
شماست؛ بنابراین ،از حفظ امنیت آنها اطمینان حاصل نمایید .آن را در مکانی ایمن
حفظ کنید که تنها افراد مقتضی به آن دسترسی داشته باشند .اما ،در همین زمان ،آن
را دم دست نگه دارید ،بهطوری که برایتان کاربردی باقی بماند .قرار دادن آن در
یک فلش USBیا یک پارتیشن رمزگذاری شده در نظر بگیرید.
کلیهی فایلهای .pcapمرتبط با خط مبنای خود را حفظ کنید و یک "صفحهی
کروکی "1از مقادیری را تهیه نمایید که عموماً به آنها رجوع میشود که از آن
جمله میتوان به ارتباطها یا میانگین سرعت انتقال دادهها اشاره کرد.
آخرین نظرات
این فصل بر رفع اشکال از شبکههای کند متمرکز بود .ما پارهای از ویژگیهای سودمندتر
TCPبرای کشف و شناسایی و بازیافت را پوشش دادیم که نشان دادند چگونه منشأ تأخیر
باال در ارتباطات شبکه را مشخص کنیم .این فصل همچنین در خصوص اهمیت خط مبنای
شبکه و پارهای از مؤلفههای آن بحث کرد .شما با استفاده از تکنیکهای بحث شده در اینجا
(همراه با بعضی از ویژگیهای ترسیم نمودار و تحلیل Wiresharkکه در فصل 5مورد بحث
قرار گرفتند) باید برای رفع ایراد در زمان دریافت شکایت از کند بودن شبکه بخوبی تجهیز
شده باشید.
1
cheat sheet
313
فصل دهم
تحلیل بسته برای امنیت
تحلیل بسته برای امنیت فصل دهم
کشف و شناسایی
اجرای تحقیق عمیق در خصوص سیستمِ مورد هدف نخستین گامی است که یک حملهکننده
برمیدارد .این گام – که عموماً به آن 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
تحلیل بسته برای امنیت فصل دهم
اگر یک سرویس در دستگاه قربانی مشغول گوش دادن به پورتی باشد که این بستهی 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بین این دو میزبان وجود دارد که
اساساً یک گفتگوی جدید برای هر جفتسازی پورت دخیل در ارتباطات است.
320
تحلیل بسته برای امنیت فصل دهم
اسکن کردن خیلی سریع رخ میدهد ،و بنابراین مرور کردن در میان فایل ربایش بهترین راه
برای پیدا کردن پاسخ مرتبط با هر بستهی SYNآغازین نیست .ممکن است پیش از آنکه
پاسخ به بستهی اولیه دریافت شود چندین بستهی دیگر فرستاده شده باشد .خوشبختانه،
میتوانیم فیلترهایی را درست کنیم که به ما در یافتن ترافیک صحیح کمک نمایند.
321
تحلیل بسته برای امنیت فصل دهم
از آنجایی که به هیچ یک از این دو بسته پاسخی داده نشده است ،این امکان وجود دارد که
پاسخ توسط میزبان قربانی یا دستگاهی واسط فیلتر شده باشد ،و یا اینکه پورت بسته شده
باشد .در نهایت ،نتیجهی اسکن برای پورت 443بینتیجه است.
میتوانیم همین تکنیک را در مورد بستهای دیگر امتحان کنیم تا ببینیم که آیا نتیجهی متفاوتی
را به دست خواهیم آورد یا نه .برای انجام این کار ،نخست فیلتری که قبالً درست شده را با
کلیک کردن بر روی دکمهی Clearدر کنار منقطهی فیلتر پاک کنید .سپس نهمین بسته در
لیست را انتخاب کنید .این یک بستهی SYNبه پورت 53است که عموماً با DNSدر ارتباط
است .با استفاده از روش مطرح شده فیلتری را بر اساس پورت مقصد بسازید و بخش dst
فیلتر را پاک کنید ،بهطوری که برای کل ترافیک TCPپورت 53اعمال شود .همان طوری
که در شکل 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از قربانی قرار دارد .این
نشانهای از آن است که قربانی اتصالها به پورت هدفگذاری شده را نمیپذیرد ،و اینکه
یک سرویس به احتمال قریب به یقین در آن مشغول اجرا نیست.
323
تحلیل بسته برای امنیت فصل دهم
سه پورت اسکن شده شامل پنج بسته در هر یک از گفتگوهایشان است .میدانیم که
پورت ،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
تحلیل بسته برای امنیت فصل دهم
326
تحلیل بسته برای امنیت فصل دهم
با استفاده از جدول 10-1بهعنوان مرجع میتوانیم جدول 2-10را بسازیم که تفکیکی از
فیلدهای مرتبط در این بستهها است.
بر پایهی این مقادیر ،میتوانیم نتیجهگیری کنیم که بستهی 1به احتمال بسیار زیاد توسط
دستگاهی فرستاده شده است که سیستم عامل آن Windowsاست ،و بستهی 2به احتمال
بسیار زیاد توسط دستگاهی فرستاده شده که سیستم عامل آن Linuxاست.
به خاطر داشته باشید که فهرست fingerprintingمنفعل رایج برای شناسایی فیلدها که در
جدول 10-1آورده شدهاند به هیچ عنوان جامع و کامل نیست .ویژگیهای زیادی هستند که
میتوانند منجر به انحرافها از این مقادیر مورد انتظار شوند .بنابراین ،شما نمیتوانید بهطور
کامل بر نتایج به دست آمده از fingerprintingمنفعل سیستم عامل تکیه کنید.
32۷
تحلیل بسته برای امنیت فصل دهم
Fingerprintingفعال
وقتی پایش منفعل ترافیک نتایج مطلوب را حاصل نکند ،آنگاه ممکن است به شیوهای
مستقیمتر نیاز باشد .این شیوه fingerprintingفعال نامیده میشود .این روش شامل
حملهکنندهایست که بهطور فعاالنه بستههای بهطور خاص ساخته شده به قربانی میفرستد تا
پاسخهایی را استخراج و استنباط کند که سیستم عاملِ مورد استفاده در دستگاه قربانی را فاش
و آشکار مینمایند .بهطور مسلم ،از آنجایی که این شیوه شامل ارتباط برقرار کردن مستقیم
با قربانی است ،بنابراین ،فاقد هر گونه پنهانی بودن است ،ولی میتواند بسیار مؤثر باشد.
فایل activeosfingerprinting.pcapحاوی مثالی از اسکن fingerprintingفعال سیستم
عامل است که توسط برنامهی اسکن کردن Nmapانجام شده است .بستههای متعدد در این
فایل نتیجهی Nmapهستند که جستجوگرهای 1مختلفی را برای استخراج پاسخهایی
میفرستد که شناسایی سیستم عامل را مقدور مینمایند .برنامهی Nmapپاسخها به این
جستجوگرها را ربایش میکند و یک fingerprintرا ایجاد مینماید و آن را با یک بانک
اطالعاتی از مقادیر مقایسه میکند تا به یک حکم برسد.
بهرهکشی
هر حملهکنندهای برای مرحلهی بهرهکشی هدف خود را آماده میکند .حملهکننده تحقیقات
خود را به انجام رسانده ،کشف و شناسایی هدف را اجرا کرده ،و یک آسیبپذیری را پیدا
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را مشخص میکند.
330
تحلیل بسته برای امنیت فصل دهم
شکل :10-9مرورگر کاربر با این بسته تغییر جهت داده شده است
331
تحلیل بسته برای امنیت فصل دهم
از یک زبان اسکریپتنویسی 1سطح باالتر را نشان دهد .شما بهطور معمول در داخل این تگ
انواع دستورهای اسکریپتنویسی را میبینید؛ ولی ،این عبارت نامفهوم نشان میدهد که محتوا
و مضمون ممکن است رمزگذاری شده باشد تا آن را از کشف و شناسایی پنهان نماید .از
آنجایی که ما میدانیم این یک ترافیک بهره¬کشی است ،بنابراین ،میتوانیم فرض کنیم که
این بخش مبهم از متن حاوی الیهگذاری مبنای شانزده 2و کد پوسته 3است تا عمالً از سرویس
آسیبپذیر بهرهبرداری نماید.
بخش دوم از مضمون فرستاده شده از حملهکننده در شکل 12-10نشان داده شده است.
سرانجام ،پس از این متن رمزگذاری شده مقداری متن را میبینیم که قابل خواندن است.
حتی بدون داشتن دانش و آگاهی گسترده در برنامهنویسی میتوانیم ببینیم که به نظر میرسد
1
scripting language
2
hexadecimal padding
3
shellcode = shell code
332
تحلیل بسته برای امنیت فصل دهم
این متن بر اساس چند متغیر معدود اقدام به تجزیهی رشته 1میکند .این آخرین بیت از متن
پیش از بستن تگ > </scriptاست.
شکل :11-10این بخش از محتوای فرستاده شده بهصورت کد گذاری نمایش داده شده .
آخرین بخش از دادههای فرستاده شده از حملهکننده به کاربر دارای دو بخش است .نخستین
بخش یک بخش است .
>"<span id="vhQYFCtoDnOzUOuxAflDSzVMIHYhjJojAOCHNZtQdlxSPFUeEthCGdRtiIY
<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/مالحظه نمایید.
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
تحلیل بسته برای امنیت فصل دهم
شکل :15-10صفحهی پیکربندی ستون با ستونهای تازه اضافه شده برای آدرسهای سختافزار مبدأ و مقصد
اگر هنوز تفکیک نام MACشما روشن است ،باید ببینید که دستگاههای در حال ارتباط
دارای آدرسهای MACای باشند که سختافزارهای Dellو Ciscoرا نشان دهند .به یاد
داشتن این مسئله بسیار مهم است ،زیرا همچنان که در میان ربایش جستجو میکنیم ،این در
بستهی 54تغییر پیدا میکند و در آن هنگام ،رخ دادن ترافیک ARPعجیب و غریبی را
340
تحلیل بسته برای امنیت فصل دهم
میبینیم که بین میزبان ( Dellقربانی ما) و یک میزبان HPتازه معرفی شده (حملهکننده)
واقع میشود (همان طوری که در شکل 16-10نشان داده شده است).
پیش از آنکه بیشتر به پیش برویم ،به نقاط انتهایی دخیل در این ارتباط توجه داشته باشید که
در جدول 3-10فهرست شدهاند.
ولی چه چیزی این ترافیک را عجیب و غریب میکند؟ از بحث ما در خصوص ARPدر
فصل 6به خاطر آورید که دو نوع اصلی از بستههای ARPوجود دارد :بستهی درخواست و
بستهی پاسخ .بستهی درخواست بهعنوان یک broadcastبه همهی میزبانها در شبکه فرستاده
میشود تا دستگاهی پیدا شود که دارای آدرس MACمرتبط با آدرس IPبخصوص است.
سپس پاسخ بهعنوان یک unicastاز دستگاهی فرستاده میشود که به دستگاهی پاسخ میدهد
که درخواست را مخابره کرده است .با این پس زمینه میتوانیم چند چیز عجیب و غریب را
در این توالی ارتباط شناسایی نماییم (به شکل 16-10مراجعه کنید).
نخست ،بستهی 54یک درخواست ARPاز حملهکننده (با آدرس MACبهقرار
)00:25:b3:bf:91:eeبهعنوان یک بستهی unicastاست که مستقیماً به قربانی (با آدرس
341
تحلیل بسته برای امنیت فصل دهم
نکته :از آنجایی که این ربایش بسته از دستگاه قربانی گرفته شده است ،بنابراین شما عمالً
کل تصویر را نمیبینید .برای عملی شدن این حمله ،حملهکننده باید همین توالی بستهها را به
مسیریاب بفرستد تا به این شکل فریبش بدهد که حملهکننده بهواقع همان قربانی است ،ولی
ما برای دیدن آن بستهها نیاز به آن خواهیم داشت تا ربایش بستهی دیگری را از مسیریاب (یا
حملهکننده) انجام دهیم.
بهمحض آنکه هر دو طرف فریب بخورند ،همان طوری که در شکل 1۷-10نشان داده شده
است ،ارتباط بین قربانی و مسیریاب از طریق حملهکننده جریان پیدا میکند.
342
تحلیل بسته برای امنیت فصل دهم
بستهی 5۷موفقیت این حمله را تصدیق میکند .وقتی این بسته را با بستهی فرستاده شده قبل
از ترافیک عجیب – ARPمانند بستهی ( 40شکل 18-10را ببینید) – مقایسه کنید ،خواهید
دید که آدرس IPسرور دور ( )Googleبدون تغییر باقی میماند ،ولی آدرس MAC
هدف تغییر پیدا کرده است .این تغییر در آدرس MACبه ما میگوید که ترافیک اکنون
از طریق حملهکننده و قبل از آنکه به مسیریاب برسد مسیرگزینی شده است.
از آنجایی که این حمله خیلی دقیق و ماهرانه است ،بنابراین ،کشف و شناسایی آن بسیار
دشوار است .برای یافتن آن ،بهطور معمول به کمک یک IDSنیاز دارید که بهطور خاص
برای توجه به آن پیکربندی شده باشد و یا نرمافزاری که روی دستگاههای طراحی شده برای
کشف و شناسایی تغییرات ناگهانی در ورودیهای جدول ARPاجرا شود .از آنجایی که به
احتمال بسیار زیاد برای ربایش بستهها در شبکهای که تحلیل میکنید از آلوده کردن حافظه
343
تحلیل بسته برای امنیت فصل دهم
ARPاستفاده خواهید کرد ،بنابراین ،مهم است که بدانید چگونه این تکنیک همچنین
میتواند بر علیه خودتان نیز استفاده شود.
شکل :18-10تغییر در آدرس MACهدف نشان دهندهی موفقیت این حمله است.
344
تحلیل بسته برای امنیت فصل دهم
گام بعدی ما این قانون امضای فعال شده توسط این هشدار خواهد بود:
این قانون برای آن وضع شده که هر زمان میبیند بستهای از هر شبکهای وارد شبکهی داخلی
میشود که دارای محتوای هگزادسیمال 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میتوانیم تصدیق کنیم که چندین گفتگو وجود دارد.
بهطور چشمی میتوانیم گفتگوهای متمایز در این فایل ربایش را با رنگ کردنشان بهقرار زیر
تفکیک نماییم:
.1در دیالوگ فیلتر در باالی قسمت ،Packet Listعبارت )(tcp.flags.syn == 1
) && (tcp.flags.ack == 0را تایپ کنید .سپس بر روی Applyکلیک کنید .این
کار بستهی SYNآغازین را برای هر گفتگو در ترافیک انتخاب خواهد کرد.
.2روی نخستین بسته کلیک راست کنید و Colorize Conversationرا انتخاب کنید.
1
ephemeral ports
34۷
تحلیل بسته برای امنیت فصل دهم
348
تحلیل بسته برای امنیت فصل دهم
بهمحض اجرای این جستجو ،نخستین نمونه از این رشته را در بستهی 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را بهقرار زیر
امتحان کنید:
شکل 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
تحلیل بسته برای امنیت فصل دهم
که یک تحلیلگر نفوذ در هنگام تجزیه و تحلیل ترافیک بر اساس هشدار IDSدنبال خواهد
کرد:
بررسی هشدار و امضایی که آن را فعال کرده.
تصدیق وجود عملی این امضا در متنی مناسب در ترافیک.
بررسی ترافیک برای فهمیدن اینکه حملهکننده با دستگاه در خطر افتاده چه کرده
است.
جلوگیری از مشکالت پیش از نَشت بیشتر هر گونه اطالعات حساس از قربانی که
اطالعات وی لو رفته است.
354
تحلیل بسته برای امنیت فصل دهم
شکل :26-10تصویر JPGتبدیل شده یک ربایش صفحهی نمایش از کامپیوتر قربانی است.
آخرین نظرات
همهی کتابها را میتوان در خصوص تقسیمبندی ربایشهای بسته در سناریوهای مرتبط با
امنیت ،تحلیل حمالت رایج ،و پاسخ دادن به هشدارهای IDSنوشت .در این فصل پارهای از
انواع رایج اسکن و شمارهگذاری ،یک حملهی MITMرایج ،و دو مثال از چگونگی احتمال
بهره¬کشی از یک سیستم و آنچه در پی آن میتواند رخ دهد را مورد بررسی قرار دادیم.
355
فصل یازده
تحلیل بستهی بیسیم
تحلیل بسته بیسیم فصل یازدهم
مالحظات فیزیکی
محیط فیزیکی انتقال و مخابره نخستین چیزی است که باید دربارهی ربایش و تحلیل دادههای
مخابره شده از طریق یک شبکهی بیسیم مورد نظر و توجه قرار بگیرد .تا به اینجا ما الیهی
فیزیکی را مورد توجه قرار ندادیم ،زیرا از طریق سیمکشی فیزیکی ارتباط برقرار میکردیم.
اکنون از طریق امواج رادیویی ارتباط برقرار میکنیم و بستهها مستقیماً به طرف ما پرواز
میکنند.
1
wireless networking
2
data link layer
3
physical layer
358
تحلیل بسته بیسیم فصل یازدهم
نکته :شبکهسازی بیسیم بر استاندارد 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به سبب فضای محدود طیف بین کانالها همپوشانی وجود دارد.
1
transmission channel
361
تحلیل بسته بیسیم فصل یازدهم
توسط تحلیلگر طیف 1انجام میشود .تحلیلگر طیف ابزاری است که دادهها یا تداخل را در
یک طیف نمایش میدهد.
هزینه و قیمت تحلیلگرهای طیف تجاری میتواند به هزاران دالر بالغ شود ،ولی برای
استفادهی روزمره یک راه حل عالی وجود دارد.
شرکت MteaGeekمحصولی به نام Wi-Spyرا تولید میکند که یک سختافزار USB
است و (برای مثال) کل طیف 802.11را مورد پایش قرار میدهد .این سختافزار به هنگامی
که با نرمافزار Chanalyzerشرکت MetaGeekجفت شود ،آنگاه این سختافزار طیف را
بهطور گرافیکی حاصل میکند تا در فرآیند رفع ایراد کمک نماید .یک نمونهی خروجی از
Chanalyzerدر شکل 11-3نشان داده شده است.
شکل :11-3این خروجی Chanalyzerچندین WLANرا نشان میدهد که در یک ناحیه کار میکنند.
1
spectrum analyzer
362
تحلیل بسته بیسیم فصل یازدهم
1
managed mode
2
wireless access point = WAP
3
ad hoc mode
4
master mode
5
monitor mode
363
تحلیل بسته بیسیم فصل یازدهم
اغلب کاربران از کارتهای بیسیم تنها در حالت مدیریت شده یا حالت ادهاک استفاده
میکنند .یک نمایش تصویری از روشی که هر حالت در آن کار میکند در شکل 4-11
نشان داده شده است.
364
تحلیل بسته بیسیم فصل یازدهم
نکته :اغلب از من پرسیده میشود که من کدام کارت بیسیم را برای تحلیل بستهی بیسیم
توصیه میکنم .من از آداپتور بیسیم 1000 USBمیلی واتی ALFAاستفاده میکنم و آن را
بسیار توصیه مینمایم .این آداپتور بیسیم بهعنوان یکی از بهترینها در بازار بسیار مورد توجه
است تا اطمینان حاصل کنید که همهی بستههای ممکن را ربایش نمایید .این آداپتور از طریق
بیشتر خرده فروشهای آنالین سختافزار کامپیوتری قابل تهیه است.
پیکربندی 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گزینههای زیر را ارائه میدهد:
1
frame check sequence = FCS
2
checksum
366
تحلیل بسته بیسیم فصل یازدهم
1
data rate
36۷
تحلیل بسته بیسیم فصل یازدهم
همه چیز در این صفحه باید برایتان آشنا باشد ،جز دکمهی .Wireless Settingکلیک کردن
بر روی این دکمه همان گزینههای برنامهی AirPcapرا به شما میدهد (شکل .)8-11از
آنجایی که Wiresharkکامالً با AirPcapیکپارچه شده است ،بنابراین ،هر چیز پیکربندی
شده در برنامهی کاربر را میتوان در داخل Wiresharkهم پیکربندی کرد.
368
تحلیل بسته بیسیم فصل یازدهم
پس از آنکه همه چیز را به میل خود پیکربندی کردید ،کار ربایش بستهها را با کلیک کردن
بر روی دکمهی Startآغاز نمایید.
369
تحلیل بسته بیسیم فصل یازدهم
پس از rootکردن میتوانید فرمانها را بهمنظور پیکربندی گزینههای واسط بیسیم تایپ
کنید .برای پیکربندی Eth1برای عمل کردن در حالت ناظر ،این متن را تایپ کنید:
1
extended service set ID = ESSID
2
root user
3۷0
تحلیل بسته بیسیم فصل یازدهم
پس از قرار گرفتن NICدر حالت ناظر ،اجرای دوبارهی فرمان iwconfigباید تغییرات شما
را منعکس نماید .اکنون با تایپ کردن عبارت زیر از دایر بودن واسط Eth1اطمینان حاصل
کنید:
همچنین از فرمان iwconfigبرای تغییر دادن کانالی استفاده میکنیم که مشغول گوش کردن
به آن هستیم .با تایپ کردن عبارت زیر ،کانال واسط Eth1را تغییر دهید:
نکته :همچنان که مشغول ربایش بستههای در حال پرواز هستید میتوانید کانالها را عوض
کنید؛ بنابراین ،در انجام ارادی این کار تردید نکنید .این فرمان iwconfigرا همچنین میتوان
اسکریپت کرد تا این فرآیند سادهتر شود.
پس از انجام این پیکربندیها Wireshark ،را راه اندازید و ربایش بسته را آغاز کنید.
مدیریت :این بستهها برای برقرار اتصال بین میزبانها در الیهی 2مورد استفاده قرار
میگیرند .پارهای از زیر نوعهای بستههای مدیریت شامل بستههای احراز هویت ،ارتباط ،و
beaconاست.
3۷1
تحلیل بسته بیسیم فصل یازدهم
کنترل :بستههای کنترل تحویل دادن بستههای مدیریت و دادهها را مقدور مینمایند و با
مدیریت تراکم 1سر و کار دارد .زیر نوعهای معمول آن شامل بستههای تقاضای ارسال 2و
آماده ارسال 3است.
دادهها :این بستهها حاوی دادههای واقعی هستند و تنها نوع بستهای که میتواند از شبکهی
بیسیم به شبکهی کابلی forwardشوند.
نوع و زیر نوع بستهی بیسیم ساختار آن را تعیین مینماید؛ بنابراین ،تعداد زیادی از ساختار
امکانپذیر است .ما با نگاه کردن به یک بستهی واحد در فایل 80211beacon.pcapیکی
از چنین ساختارهایی را مورد بررسی قرار خواهیم داد .همان طوری که در شکل 9-11نشان
داده شده است ،این فایل حاوی نمونهای از بستهی مدیریت به نام beaconاست.
1
congestion management
2
request-to-send
3
clear-to-send
3۷2
تحلیل بسته بیسیم فصل یازدهم
بستهی beaconیکی از آگاهیبخشندهترین بستههایی است که میتوانید پیدا کنید .این بسته
بهعنوان یک بستهی broadcastاز یک WAPدر یک کانال بیسیم فرستاده میشود تا به هر
کاربر بیسیمی که در حال گوش دادن است آگاهی دهد که WAPموجود است و نیز
پارامترهایی را تعریف کند که باید بهمنظور اتصال به آن تنظیم شوند .در فایلِ نمونهی ما،
میتوانید ببینید که این بسته در فیلد Type/Subtypeدر سرآیند 802.11بهعنوان یک
beaconتعریف شده است .
مقدار بسیار زیادی اطالعات افزوده در سرآیند کادر مدیریت 802.11وجود دارد که شامل
موارد زیر است:
این سرآیند همچنین شامل آدرسهای مبدأ و مقصد و اطالعات مخصوص به فروشنده است.
ما بر اساس این آگاهی میتوانیم چند چیز را دربارهی WAPای تعیین نماییم که این بستهی
3۷3
تحلیل بسته بیسیم فصل یازدهم
beaconرا در فایل مثال ارسال میکند .آشکار است که این یک دستگاه D-Linkاست
که از استاندارد )B( 802.11bدر کانال 11استفاده میکند .
اگرچه محتویات و مقصود دقیق بستههای مدیریت 802.11تغییر خواهند کرد ،ولی ساختار
شبیه به این مثال باقی خواهد ماند.
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پس از افزودن این ستونها چه
شکلی پیدا میکند.
کانالهای مشترک در کنار یکدیگر وجود دارند .این بدان معنی است که یک ربایش از هر
کانال میتواند حاوی ترافیک از چندین کاربر باشد .این بخش به پارهای از فیلترهای بسته
اختصاص دارد که میتوانند برای کمک به شما در یافتن ترافیکی بخصوص کمک نمایند.
wlan.bsid.eq 00:11:22:33:44:55:66
1
basic service set identifier = BSS ID
3۷6
تحلیل بسته بیسیم فصل یازدهم
1
syntax
3۷۷
تحلیل بسته بیسیم فصل یازدهم
radiotap.channel.freq == 2412
این ترکیب کل ترافیک را در کانال 1نشان خواهد داد .شما میتوانید برای کانالی که
میخواهید فیلتر کنید ،مقدار مقتضی را بهجای مقدار 2412قرار دهید .جدول 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و همچنین مثالهایی از تالشهای شکست
خوردهی احراز هویت نگاهی خواهیم داشت.
380
تحلیل بسته بیسیم فصل یازدهم
این challengeتوسط بستهی 5تصدیق میشود .سپس ،همان طوری که در شکل 11-12
نشان داده شده است ،این کاربر بیسیم با رمزگشایی از متن challengeتوسط کلید WEP
و برگرداندن آن به WAPپاسخ میدهد .
این بسته بار دیگر در بستهی ۷تصدیق میشود ،و همان طوری که در شکل 13-11نشان داده
شده است WAP ،در بستهی 8به کاربر بیسیم پاسخ میدهد .این پاسخ حاوی گزارشی مبنی
بر موفق بودن فرآیند احراز هویت است .
شکل WAP :11-13به کاربر اطالع میدهد که احراز هویت موفق بوده است.
381
تحلیل بسته بیسیم فصل یازدهم
در آخر ،پس از احراز هویت موفقیتآمیز ،کاربر میتواند یک درخواست ارتباط را مخابره
کند ،یک گواهی تصدیق را دریافت نماید ،و فرآیند اتصال را تکمیل کند (همان طوری که
در شکل 14-11نشان داده شده است).
شکل :14-11فرآیند احراز هویت که به دنبال آن درخواست و پاسخ سادهی دو بستهای قرار دارد.
382
تحلیل بسته بیسیم فصل یازدهم
این پیغام به ما میگوید که پاسخ کاربر بیسیم به متن challengeنادرست بوده است .این
امر اشاره بر آن دارد که کلید WEPی که کاربر برای رمزگشایی از متن challengeاستفاده
کرده است باید نادرست بوده باشد .در نتیجه ،فرآیند اتصال عقیم میماند .این فرآیند باید بار
دیگر توسط کلید WEPمناسب تکرار شود.
383
تحلیل بسته بیسیم فصل یازدهم
شکل :16-11این beaconما را قادر میسازد تا بفهمیم این WAPاحراز هویت WPA
را پشتیبانی مینماید.
1
probe
384
تحلیل بسته بیسیم فصل یازدهم
دو challengeو پاسخ وجود دارد .هر کدام از آنها میتواند بر اساس فیلد Replay
Counterدر زیر سرآیند 802.1x Authenticationتطبیق داده شود (همان طوری که در
شکل 18-11نشان داده شده است) .توجه داشته باشید که مقدار Replay Valueبرای دو
بستهی دستدهی نخست 1و برای دو بستهی دستدهی دوم 2است.
شکل :18-11فیلد Replay Counterبه ما کمک میکند تا challengeها و پاسخها را جفت کنیم.
385
تحلیل بسته بیسیم فصل یازدهم
پس از تکمیل دستدهی WPAو موفق شدن احراز هویت ،ارسال دادهها بین کاربر بیسیم
و WAPآغاز میشود.
شکل :19-11بستههای EAPOLافزوده در اینجا نشان دهندهی احراز هویت WPAناموفق است.
ارتباط پس از چهار بار تالش احراز هویت لغو میشود .همان طوری که در شکل 20-11
نشان داده شده است ،کاربر بیسیم در بستهی 16از WAPرفع احراز هویت میکند .
386
تحلیل بسته بیسیم فصل یازدهم
آخرین نظرات
اگرچه شبکههای بیسیم هنوز هم بهطور گستردهای ناایمن هستند ،ولی این امر روند استفاده
از آنها را در انواع محیطهای سازمانی کند نکرده است .همچنان که تمرکز ما به سوی ارتباط
بدون سیم و کابل چرخش پیدا میکند ،حیاتی است که بتوانیم دادهها را در شبکههای بیسیم،
و همچنین کابلی ،ربایش و تحلیل نماییم .مهارتها و ایدههای آموزش داده شده در این فصل
به هیچ عنوان جامع و فراگیر نیستند ،ولی میتوانند نقطهی پرشی را در کمک به شما در
درک پیچیدگیهای رفع ایراد از شبکههای بیسیم توسط تحلیل بسته فراهم آورند.
38۷
PRACTICAL PACKET
ANALYSIS
2ND EDITION
Using Wireshark to Solve
Real-World Network
Problems
by Chris Sanders
San Francisco