TCPdump و مفهوم متناظر آن در ویندوز یعنی WinDump، نرم افزاری هستند که بما این امکان را میدهند تا بتوانیم ترافیک جاری در شبکه را مشاهده کرده و تحلیل نماییم. به عبارتی یکی از ابزارهای شنود ترافیک محسوب میشوند. TCPdump ابزاری لینوکسی است که برای جمع اوری اطلاعات از شبکه، فیلتر بیت های مورد نظر و نمایش خروجی در فرمتی خوانا برای انسان استفاده میشود. برای این کار نیاز است تا کمی به ساختار زبان TCPdump آشنا باشیم.
همانطور که میدانید ترافیک شبکه در قالب بسته هایی از دیتا منتقل میشوند؛ هر بسته دیتا شامل اطلاعاتی است که باید در شبکه و بین نود های مختلف جابجا شوند. این اطلاعات در TCP Header وجود دارند. هدر TCP شامل آدرس های مبداء و مقصد، اطلاعات مربوط به وضعیت بسته و اطلاعات هویتی پروتکل هاست.
بقیه حجم پکت را بخشی تشکیل میدهد که در بردارنده اصل اطلاعاتی ست که باید منتقل شود. دیوایس هایی که مسئول مسیریابی هستند، اطلاعات موجود در این بسته ها را میخوانند و آن ها را به سمت مقصد صحیح که در هدرشان بیان شده است، میفرستند.
شنود اطلاعات (sniffing) فرآیندی است که بصورت پسیو و غیر مستقیم این اطلاعات را مانیتور کرده و یک کپی از آن ها بر میدارد. به این خاطر به این نوع شنود، پسیو میگوییم که بصورت مستقیم بر روند ارسال اطلاعات اثری ندارد و در کنار آن کار خود را انجام میدهد.
TCPdump یک ابزار شنود بسته های اطلاعاتی است که توسط مدیران شبکه (بصورت مجاز) و اتکرها (بصورت غیرمجاز) برای شنود و تحلیل ترافیک موجود در شبکه استفاده میشود. در واقع دو کاربرد تحلیل اطلاعات و همچنین تشخیص وجود ارتباط بین مبداء و مقصد را میتوان علل اصلی استفاده از این ابزار دانست.
اکثر توزیع های لینوکس به عنوان بخشی از استانداردهای اولیه و موجود در خود سیستم عامل، این ابزار را بصورت نصب شده روی خود دارند. البته این موضوع منوط به این است که در هنگام نصب سیستم عامل، گزینه انتخابی مربوط به نصب این ابزار را زده باشید. در واقع در هنگام نصب توزیع های مختلف لینوکس اگر طریق Custom installation القدام به نصب سیستم عامل کنید، به گزینه مربوط به این ابزار نیز برخواهید خورد.
برای آنکه ببینید که ایا این ابزار بر روی سیستم عامل شما نصب است یا خیر، فرمان زیر را در شل لینوکس وارد کنید:
rpm –q TCPdump
اجرای این فرمان در خروجی باید چیزی شبیه به عبارت زیر را نشان شما دهد (بسته به نوع ورژن مورد استفاده، این عبارت ممکن است کمی متفاوت باشد)
root@Ehsan:~# rpm –q TCPdump TCPdump-3.7.2-1.9.1
نکته: واژه RPM مختصر شده عبارت RedHat Package Management است، آپشن –q خلاصه شده کلمه query است. البته ذکر این نکته ضروریست که استفاده از rpm منوط به وجود آن بر روی سیستم عامل تان است و در غیر اینصورت باید ان دریافت و نصب کنید.بهر صورت اگر ابزار TCPdump بر روی سیستم شما نصب نباشد، در ازای اجرا کردن فرمان بالا، عبارتی مشابه عبارت زیر بشما نمایش داده میشود:
root@Ehsan:~# rpm –q TCPdump package TCPdump is not installed
اگر پکیج TCPdump نصب نشده باشد، میتوانید آن را از طریق سورس سیستم عامل و یا Repository های مربوطه دریافت کنید. قطعا دریافت پکیج از طریق سورس سیستم عامل ساده ترین راه است که از طریق زیر انجام میشود. در مرحله نسخت باید مشخص کنیم که آیا libpcap مربوط به rpm نصب شده است یا خیر. فرض را بر این میگذاریم که نصب نشده باشد؛ پس داریم:
rpm –ivh libpcap-0.7.2-1.1386.rpm
و در ادامه ...
rpm –ivh TCPdump-3.7.2-1.9.1.rpm
با این کار میتوانیم پکیج مورد نظرمان را نصب کرده و با خیال راحت از ابزار TCPdump استفاده کنیم.
اگر توزیع شما از apt-get پشتیبانی میکند، میتوانید با استفاده از این فرمان، TCPdump را نصب کنید. خوبی فرمان apt-get اینست که در صورتی که بسته مورد نظر شما برای نصب، به موارد دیگری هم وابستگی داشته باشد، آن ها را نیز برایتان انجام میدهد:
Apt-get install tcpdump
و یا در صورتی که TCPdump روی سیستم وجود دارد و میخواهید ان را آپدیت کنید:
Apt-get upgrade tcpdump
ممکن است شما به CD های سیستم عامل دسترسی نداشته باشد. مشکلی وجود ندارد؛ راه جایگزین، نصب TCPdump از طریق مراجعه به آدرس http://www.TCPdump.org و پیدا کردن ورژن مورد نظرتان است. مهم است که بدانید قبل از نصب TCPdump باید libpcap را نصب کرده باشید.
Libpcap یک فایل کتابخانه ای ست که مکانیسم های فیلترینگ پکت مبتنی بر (BSD packet filter (BPF را در خود دارد. برای دریافت و نصب این فایل به آدرس http://freshmeat.net/projects/libpcap و یا همان ادرس http://www.TCPdump.org مراجعه کنید. TCPdump بدون این فایل فقط یک ابزار است و کاری نمیتواند انجام دهد. فایل های مورد نظر را دانلود کرده و در یک دایرکتوری موقت ذخیره کنید. در صفحه شل به مسیر دایرکتوری موقت رفته و دستور زیر را تایپ کنید:
Tar –zxvf libpcap-0.8.3.tar.gz
پس از ان که این فایل اکسترکت شد، دستور زیر را اجرا کنید:
Tar –zxvf TCPdump-3.8.3.tar.gz
نکته: "tar"، یک برنامه آرشیوی مانند winzip در ویندوز است که برای ذخیره سازی و استخراج فایل ها از فایل های آرشیو شده یا tarfile ها طراحی شده است. خوب با این کار توانستیم فایل های مورد نظرمان را از حالت آرشیوی خارج کنیم و آن ها را برای ادامه کار آماده کنیم. بعد از ان که این مراحل را پشت سر گذاشتید، میتوانید دایرکتوری های libpcap-0.8.3 و TCPdump-3.8.3 را مشاهده کنید. اول به مسیر دایرکتوری libpcap-0.8.3 رفته و دستورات زیر را اجرا میکنیم:
./configure ./make or make ./make install or make install
نکته: برای این کار حتما باید از یوزر root استفاده کنید و یا ان که دسترسی آن را داشته باشید.همین کار را برای TCPdump-3.8.3 در مسیر آن اجرا کنید. این کار باعث میشود تا libpcap و TCPdump را نصب کنید. حالا آماده هستید تا از این ابزار استفاده کنید.
بعد از نصب TCPdump باید با آن چهکاری را انجام دهیم؟ در اکثر توزیع های یونیکس//لینوکس، برای استقاده و اجرای TCPdump نیاز به سطح دسترسی root دارید؛ بخاطر انکه دسترسی و خواندن پکت ها دسترسی ای میخواهد که دیوایس فقط ان را به root میدهد. در ویندوز هم اگر WinDump را نصب کرده اید، برای استفاده از آن خودتان را اماده کنید. برای اجرای TCPdump//WinDump، فقط کافیست عبارت زیر را تایپ کنید:
root@Ehsan:~# TCPdump TCPdump: listening on eth0 0 packets received by filter 0 packets dropped by kernel …
C:\Users\Ehsan\Desktop\WinDump>WinDump.exe WinDump.exe: listening on \Device\NPF_{11FB32C3-7A19-4106-949D-6824D157C848}
بطور پیش فرض این ابزار تمام ترافیک ورودی و خروجی از کارت شبکه پیش فرض شما را خوانده و تمام آن ها را بصورت خروجی در کنسول نشان میدهد. از آنجایی که ما فعلا دستور پیش فرض برای اجرای این اسنیفر را اجرا کردیم، در خروجی شاهد این هستیم که پکت ها بسرعت رد میشوند و سخت است که در این حالت بتوانیم ترافیکی را تحلیل کنیم و یا ان که به خاطر بسپاریم. به همین علت برنامه نویسان برخی آپشن ها را به این دستورات اضافه کردند تا بواسطه ان ها بتوانیم خروجی فیلتر شده و شسته رفته خودمان را داشته باشیم.برای بررسی لیست اینترفیس های موجود (ویندوز) عبارت زیر را تایپ میکنیم:
C:\Users\Ehsan\Desktop\WinDump>WinDump –D 1. \Device\NPF_{ 11FB32C3-7A19-4106-949D-6824D157C848} (Belkin 11mbps Wireless Notbook Network Adapter (Microsofts packet scheduler) ) 2. \Device\NPF_{ 152FB32C3-7J12-9606-949D-6824D157Vg675} (Intel® PRO/100 VE Network Connection (Microsofts packet scheduler) ) 3. \Device\NPF_{ 152UK672C3-7J12-9606-949D-6824D1YT78645} (VMWare Virtual Ethernet Adapter) 4. \Device\NPF_{ 152UK672C3-7J12-9606-949D-6824D1YT58Okjh} (VMWare Virtual Ethernet Adapter)
اما در مورد یونیکس//لینوکس فقط کافیست که در صفحه شل عبارت زیر را تایپ کنیم:
Ifconfig
در صورتی که سطح دسترسی یوزر root را داشته باشید، میتوانید لیست اینترفیس ها را مشاهده کنید.خوب تا اینجا توانستیم لیست اینترفیس ها را ببینیم. برای آنکه بتوانیم یکی از اینترفیس ها را برای عمل شنود انتخاب کنیم، بترتیب در ویندوز و لینوکس بشیوه زیر عمل خواهیم کرد:
C:\Users\Ehsan\Desktop\WinDump>WinDump –i 1 WinDump: listening on \Device\NPF_{5864H-45Hgh-ABgh654-917hgTY5264}
root@Ehsan:~# TCPdump -i eth0 TCPdump: listening on eth0 0 packets received by filter 0 packets dropped by kernel
برای انکه بتوانید انواع ترافیکی که مد نظرتان است را انتخاب کنید، میتوانید ان را بعد از نام اینترفیس، مشخص کنید. در این مثال ما میخواهیم ترافیک TCP را مشاهده کنیم:
root@Ehsan:~# TCPdump -i eth0 tcp
یا
C:\Users\Ehsan\Desktop\WinDump>WinDump -i 1 tcp
بسیارخوب. توانستیم مشکل فیلترکردن را حل کنیم. اما با این حال هنوز هم حجم دیتایی که به خروجی میآید بسیار زیاد است و نمیتوان گفت که خروجی ما بهینه شده است. TCPdump بما آپشنی میدهد که بوسیله ان میتوانیم رکوردهای موجود در خروجی را به فرمت باینری درآورده و با dump (ذخیره) کردن ان ها، در فرصت مناسب آن ها را بخوانیم. ما این کار را با آپشن "w filename-" انجام میدهیم.
root@Ehsan:~# TCPdump -i eth0 –f myfiltrer.txt –w LSOoutput TCPdump: listening on eth0 118 packets received by filter 0 packets dropped by kernel
یا
C:\Users\Ehsan\Desktop\WinDump>WinDump -i 1 –f myfiltrer.txt –w LSOoutput WinDump: listening on \Device\NPF_{5864H-45Hgh-ABgh654-917hgTY5264} 45 packets received by filter 0 packets dropped by kernel
با این کار میتوانید ترافیک موجود در خروجی را بشکل باینری به خروجی ببرید و با استفاده از آپشن r filename- در زمان دلخواه ان ها را مطالعه کنید. در دو آپشن بالا w- مخفف write و r- مخفف read است.
root@Ehsan:~# TCPdump -i eth0 –f myfiltrer.txt –r LSOoutput 09:26:54.194409 192.168.64.128.32856 > 66-193-231.87.dimenoc.com.http: S 170526548523:170526548523 (0) win 5840 < mss 1460,sackOK,timestamp 308912,nop,wscal 0> (DF) ---- EDITED---- root@Ehsan:~#
یا
C:\Users\Ehsan\Desktop\WinDump>WinDump -i 1 –f myfiltrer.txt –r LSOoutput 09:26:54.194409 192.168.64.128.32856 > 66-193-231.87.dimenoc.com.http: S 170526548523:170526548523 (0) ack 985 632525 win 5840 < mss 1460,sackOK,timestamp 308912,nop,wscal 0> (DF) ---EDITED--- C:\Users\Ehsan\Desktop\WinDump>
مانا باشید.
کارشناس امنیت اطلاعات و ارتباطات
احسان امجدی ، مشاور امنیت اطلاعات و ارتباطات و تست نفوذ سنجی ، هکر کلاه سفید ، مدرس دوره های تخصصی امنیت اطلاعات و شبکه ، تخصص در حوزه های سرویس های مایکروسافت ، Routing و Switching ، مجازی سازی ، امنیت اطلاعات و تست نفوذ ، کشف جرائم رایانه ای و سیستم عامل لینوکس ، متخصص در حوزه SOC و ...
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود