در دنیای کامپیوتری ترافیک شبکه در قالب بسته هایی از دیتا جابجا میگردند که هر بسته شامل اطلاعاتی از دیتا میباشد تا مسیر دهی آن در شبکه و بین نود های مختلف را معین نماید. اطلاعات مدنظر در TCP Header قرار می گیرند و این هدر شامل آدرس های مبداء و مقصد همچنین اطلاعات مربوط به وضعیت بسته و اطلاعات هویتی پروتکل های موجود در شبکه میباشد، مابقی حجم بسته یا به اصطلاح پکت را اصل اطلاعات اشغال مینمایند. حال در راستای مسیر دهی مناسب پکت ها ، دیوایس هایی که مسئول مسیریابی هستند، اطلاعات موجود در این بسته ها را رمزگشایی کرده و آن ها را به سمت مقصد آدرس دهی شده در هدرشان راهنمایی میکنند. این رد و بدل اطلاعات و پکت ها در شبکه ترافیکی را ایجاد میکند که با نرم افزاری همچون TCPDUMP میتوان این ترافیک را تحلیل نمود، در این مقاله سعی برآن است که این مفهوم را مورد بررسی قرار دهیم.
در سیستم عامل لینوکس مفهوم TCPdump و در ویندوز مفهوم WinDump نرم افزاری هستند که امکان مشاهده و تحلیل ترافیک جاری در شبکه را فراهم می آورند. این نرم افزار یکی از ابزارهای شنود ترافیک محسوب میشود و ابزار لینوکسی جهت جمع آوری اطلاعات از شبکه همچنین فیلتر بیت های مورد نظر و نمایش خروجی در فرمتی خوانا مورد استفاده قرار میگیرد. ترافیک شبکه در قالب بسته هایی از دیتا میباشد که هر بسته دیتا شامل اطلاعات هدر آدرس و اطلاات اصلی میباشد، دستگاه هایی در مسیر شبکه وجود دارند که این پکت ها را آنالیز کرده و به سمت آدرس هدر آنها میفرستند و این موجب ایجاد ترافیک شبکه ای میشود. خروجی های دریافت شده توسط این ابزار در یک فایل با فرمت pcap. ذخیره میگردد که با برنامه متن باز wireshark امکان خواندن آن وجود دارد.
در حال حاضر برنامه های متعددی همیشه برای log گیری شبکه استفاده میشود، این برنامه monitoring شبکه هریک بنا به رسته خود مورد در اختیار مدیران قرار دارد. استفاده از این ابزار ها در بحث sniffing تقسیم بندی های مختلفی همچون log گیری حجم اطالاعات شبکه،capture داده ها، قابلیتی برای برنامه سازی داده و غیره را دارند که همزمان با نوع فعالیت و مکان و پروتکل ها تغییر می کنند.
TCPdump شنود اطلاعات یا sniffing را بصورت پسیو و غیر مستقیم مانیتور کرده و در صورت نیاز کپی از آن تهیه مینماید، دلیل نام گذاری شنود پسیو بر این فرآیند آن است که مستقیم بر فعالیت ارسال اطلاعات اثری نداشته و در کنار آن کار خود را عملی میسازد. این ابزار قدرتمند قادر به فیلتر و یا شنود کامل ترافیک شبکه شما می باشد، در واقع این نرم افزار یک ابزار شنود بسته های اطلاعاتی میباشد که توسط مدیران شبکه بصورت مجاز و هکر یا اتکرها بصورت غیرمجاز برای sniffe و تحلیل ترافیک موجود در شبکه مورد استفاده قرار میگیرد، حال کارشناسان دو کاربرد تحلیل اطلاعات و تشخیص وجود ارتباط بین مبداء و مقصد را علت اصلی محبوبیت این ابزار میدانند.
مراحل فعال سازی یا نصب TCPdump در سیستم عامل های لینوکس و یونیکس
این ابزار به عنوان قسمتی از استانداردهای اولیه اکثر توزیع های سیستم عامل لینوکس موجود میباشد، البته میبایست در ابتدای نصب سیستم عامل از طریق Custom installation گزینه مربوط به این ابزار فعال شده باشد.
1. نصب از طریق RPM
جهت اطمینان از نصب این ابزار بر روی سیستم عامل ابتدا فرمان زیر در شل لینوکس وارد میشود:
rpm –q TCPdump
واژه RPM مخفف RedHat Package Management میباشد و آپشن –q نیز مخفف query است، استفاده از rpm زمانی امکان پذیر خواهد بود که بر روی سیستم عامل نصب شده باشد. بعد از اجرای این فرمان در خروجی میبایست عبارتی همچون زیر ، بسته به نوع ورژن نمایش داده شود:
root@Mostafa:~# rpm –q TCPdump
TCPdump-3.7.2-1.9.1
اگر ابزار TCPdump بر روی سیستم نصب نباشد عبارتی مشابه زیر نمایش داده میشود:
root@Ehsan:~# rpm –q TCPdump
package TCPdump is not installed
حال در صورتی که TCPdump در سیستم عامل فعال نباشد میتوان آن را از طریق سورس سیستم عامل یا Repository های مربوطه دریافت کرد. البته باید خاطر نشان شد که دریافت این پکیج از طریق سورس سیستم عامل ساده ترین راه است، برای این کار در ابتدا باید تشخیص داد که libpcap مربوط به rpm نصب شده باشد که قبل تر در این خصوص مواردی اعلام گردید. با فرض آنکه کتابخانه RPM در سیستم عامل موجود است، دستورات زیر برای شروع فعال سازی TCOdump وارد میشود:
rpm –ivh libpcap-0.7.2-1.1386.rpm
rpm –ivh TCPdump-3.7.2-1.9.1.rpm
2. نصب با استفاده از apt-get
در صورتی که توزیع لینوکس مدنظر از apt-get پشتیبانی مینماید، میتوان با استفاده از این دستور TCPdump را نصب کرد. دستور زیر جهت فعال سازی این ابزار میباشد که بطور معمول تمامی مواردی که به آن وابسته میباشد را نیز نصب خواهد نمود:
Apt-get install tcpdump
هچنین جهت بروز رسانی این ابزار میتوان از دستور زیر استفاده کرد:
Apt-get upgrade tcpdump
3. دریافت و نصب TCPdump از طریق سایت های مرجع
اگر دسترسی به سورس اولیه سیستم عامل (همچون DVD یا فلشی که سیستم عامل از ابتدا با آن نصب شده) ممکن نیست، راه جایگزین نصب TCPdump از طریق مراجعه به آدرس http://www.TCPdump.org و پیدا کردن ورژن مورد نظرتان میباشد. البته قبل از نصب TCPdump باید libpcap فعال شده باشد زیرا در این رابطه این فایل اهمیت بالایی دارد. این قابلیت یک فایل کتابخانه ای با مکانیسم های فیلترینگ پکت مبتنی بر BSD packet filter یا BPF را ارائه میدهد، که جهت دریافت و نصب این فایل بهتر است به آدرس http://freshmeat.net/projects/libpcap مراجعه گردد.
بعد از دانلود فایل های مورد نظر بهتر است آنها در یک دایرکتوری موقت ذخیره گردند، در مرحله بعدی به مسیر دایرکتوری موقت در shell رجوع کرده و دستور زیر تایپ شود:
Tar –zxvf libpcap-0.8.3.tar.gz
دستور روبرو نیز با باز شدن فایل فشرده اجرا گردد:
Tar –zxvf TCPdump-3.8.3.tar.gz
با انجام این فرآیند فایل های مورد نظر از حالت آرشیوی خارج خواهند شد و میتوان دایرکتوری های libpcap-0.8.3 و TCPdump-3.8.3 را مشاهده نمود. حال در مسیر دایرکتوری libpcap-0.8.3 با دسترسی root دستورات زیر اجرا شوند:
./configure
./make or make
./make install or make install
پارامترهای TCPdump
با استفاده از مطالب بالا بعد از نصب در لینوکس از طریق دستور tcpdump و پارامترهای متفاوت آن قابلیت تحلیل شبکه وجود خواهد داشت، پارامترهای این ابزار و نحوه عملکرد آنها بشرح زیر میباشد:
. جهت کپچر ساده تمامی اینترفیس ها و پکت ها ، دستور زیر وارد میشود که بدون پارامتر کلیه این موارد گزارش داده میشوند.
tcpdump
. برای نمایش نام و تعداد اینترفیس های سیستم عامل لینوکس از دستور زیر استفاده میشود.
tcpdump -D
. کپچر کردن پکت های یک اینترفیس خاص توسط پارامتر-i امکان پذیر میباشد که در این حالت پکت های ارسالی و دریافتی آن اینترفیس شنود میشوند.
tcpdump -i
. در این ابزار بطور کلی تا کنسل کردن دستور تمامی پکتهای در حال اجرا شنود میشوند، جهت کپچر کردن تعداد محدودی برای مثال 10 عدد از پکت های یک اینترفیس برای مثال ens33 از دستور زیر استفاده میشود
tcpdump -c 10 -i ens33
. برای کپچر کردن پکت های یک اینترفیس برای مثال ens33 و ذخیره سازی خروجی آنها در یک فایل برای مثال file1.pcap از فرمان زیر استفاده می شود.
tcpdump -w file1.pcap -i ens33
. بعد از ذخیره سازی پکت ها در فایل مدنظر توسط دستور زیر خواندن فایل های کپچر شده امکان پذیر خواهد بود.
tcpdump -r file1.pcap
. برای نمایش اطلاعات داخل پکتها به صورت ASCII در هنگام کپچر از دستور زیر استفاده میشود.
tcpdump -A -i ens33
. با استفاده از دستور زیر نیز پکت های اینترفیس خاص به صورت هگز و اسکی نمایش داده میشوند.
tcpdump -XX -i ens33
. مهمترین قابلیت ابزار TCPdump کپچر کردن داده های ارسالی و دریافتی یک IP خاص میباشد
جهت شنود پکت های یک IP فرضی اینترفیس خاص از مبداء
tcpdump -i ens33 src 192.168.1.10
جهت شنود پکت های یک IP فرضی اینترفیس خاص از مقصد
tcpdump -i ens33 dst 172.16.1.20
. کارایی دیگر این ابزار ، کپچر پکت هایی است که از یک پورت خاص ارسال میگردند، برای این کار برای مثال از دستور زیر استفاده میشود.
tcpdump -i ens33 port 80
. کپچر کردن بسته یا پکت های ارسالی یا دریافتی پروتکل خاص نیز در این ابزار بطور مثال با دستور زیر انجام میشود.
tcpdump -i ens33 udp
توجه داشته باشید که نیازی به استفاده از پارامتری برای این موضوع نیست و تنها نام پروتکل بطور نمونه UDP در انتهای دستور کافیست.