PDA

نسخه کامل مشاهده نسخه کامل : تشخیص پورت‌های باز و بسته یک سیستم



Mohammad
24-06-2008, 11:39
برنامه‌های کاربردی مختلفی در یک سیستم کامپیوتری که به شبکه وصل است ممکن است فعال باشد. برای آن که این برنامه‌های کاربردی بتوانند بسته‌های داده مربوط به خود را دریافت کنند باید به نحوی از یکدیگر متمایز شوند.
در پروتکل‌های شبکه برای تمایز قایل شدن بین برنامه‌های کاربردی تحت شبکه شماره‌ای نسبت داده می‌شود که شماره پورت نام دارد.

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

هر پورت یک سیستم کامپیوتری متصل به یک شبکه کامپیوتری در یکی از سه وضعیت باز، بسته یا ----- شده بوسیله دیوار آتش است. هنگامی که یک برنامه کاربردی به شماره پورت خاصی، گوش دهد، می‌گوییم آن پورت باز است. در غیر این صورت می‌گوییم آن پورت بسته است.
چنانچه به دلیل وجود دیوار آتش، نتوان به طور مستقیم با یک پورت ارتباط برقرار کرد، می‌گوییم آن پورت به وسیله دیوار آتش ----- شده است. هدف از انجام پویش پورت‌ها، مشخص کردن پورت‌های باز، بسته و ----- شده توسط دیوار آتش در سیستم‌های موجود در یک شبکه است.

یک پورت ----- شده بوسیله دیوار آتش ممکن است روی سیستم میزبان، بسته یا باز باشد. برای پویش چنین پورت‌هایی، به دلیل ----- شدن توسط دیوار آتش روش‌های خاصی را باید به کار برد که در ادامه به این روش‌ها نیز می‌پردازیم.
هر پورت باز در یک سیستم درون یک شبکه، به منزله یک درب برای ورود مهاجمان محسوب می‌شود.
روش‌های مختلفی برای پویش پورت‌ها وجود دارند. مدت زمان پویش، دقت نتایج بدست‌آمده و ناشناس ماندن پویشگر، از پارامترهای مهم در انتخاب هر یک از روش‌های مختلف پویش است.

نتایج حاصل از پویش پورت‌های ‪،TCPبه دلیل اتصال گرا بودن پروتکل ‪،TCP از قابلیت اطمینان بیشتری نسبت به پویش پورت‌های ‪UDPبرخوردار است.
ابتدا باید روش‌های گوناگون پویش پورت‌ها را بدانیم ، و سپس روش‌های مختلف پویش پورت‌ها و ‪، TCPو روش پویش پورت‌ها ‪UDPدانسته شود.
پویش از طریق برقراری یک اتصال کامل چگونه رخ می‌دهد؟ در این روش، یک ارتباط کامل و سه مرحله‌ای ‪TCPبا یک شماره پورت خاص برقرار می‌شود. اگر این اتصال برقرار شد، نتیجه گرفته می‌شود که پورت مربوطه باز است، چون هدف از برقراری ارتباط، مبادله داده نبوده است.
پویشگر پس از ارسال ‪ACKنهایی، برای به اتمام رساندن اتصال، بسته ‪FIN را نیز ارسال می‌کند.
با توجه به عدم بازگشت پاسخ در مرحله دوم، نمی‌توان با اطمینان گفت که پورت مورد نظر بسته است. زمانی می‌توان مطمئن شد، پورت مورد نظر بسته است که در پاسخ به بسته ‪،SYNیکی از دو پیغام زیر برگردد:
▪ بسته ‪RST=۱ RESETبه جای بسته ‪ACKباز شود.
▪ بسته ‪ICMP Port Unreachableبجای بسته ‪ACKباز شود.
این روش به دلیل تکمیل سه مرحله برقراری اتصال، خاتمه‌دادن به ارتباط و ‪TCPاز طرفی زیاد بودن تعداد پورت‌های ‪،TCPبسیار وقت‌گیر است. بسیاری از سرویس‌دهنده ها به محض تکمیل شدن مراحل سه‌گانه برقراری ارتباط ‪،TCPمشخصات آن را در فایلی درج logمی‌کنند. توجه داریم که در برقراری ارتباط ‪،TCP مهاجم نمی‌تواند از آدرس ‪IPجعلی استفاده کند، زیرا در این صورت، هیچ پاسخی مبنی بر باز یا بسته بودن پورت دریافت نخواهد کرد.
بدین ترتیب مهاجم مجبور است از آدرس ‪IPحقیقی استفاده کند که درج شدن این آدرس در فایل ثبت عملکرد، هویت او را آشکار خواهد کرد، لذا به سادگی آدرس مهاجم، کشف خواهد شد

مهاجمان به دلیل وقت گیر بودن این روش و همچنین به دلیل احتمال شناسایی شدن توسط شبکه هدف، متمایل به استفاده از این روش نیستند. به دلیل آنکه در این روش، روال طبیعی و معمول برقراری ارتباط طی می‌شود، احتمال آنکه ماشین هدف دچار مشکل و اختلال شود، وجود ندارد.
راه دیگر پویش مخفیانه (TCP SYN Scan) است . در این روش، پویشگر یک بسته ‪،SYNبا یک شماره پورت مقصد خاص، به سمت ماشین هدف ارسال کرده و سپس انتظار می‌کشد تا بسته ‪SYN-ACKرا از طرف سیستم هدف دریافت کند.
در صورت دریافت بسته ‪،SYN-ACKپویشگر، بلافاصله قبل از آنکه ارتباط را کامل کند، بسته ‪RESETرا ارسال می‌کند.
در واقع در این روش، فقط دو مرحله از ‪،۳way Handshakingانجام می‌شود. در این روش بدلیل اینکه مشخصات ارتباط نیمه‌کاره پویشگر در فایل ثبت عملکرد درج نخواهد شد، پویشگر ناشناس می‌ماند. در ضمن، نیمه‌کاره‌بودن ارتباط، سرعت عمل پویش را بسیار زیاد می‌کند. اگر پورت مورد نظر بسته باشد ، ممکن است در پاسخ به بسته ‪،SYNبسته ‪RESETیا پیغام ‪Port Unreachable ‪ICMPباز گردد.
در صورت دریافت چنین بسته‌هایی می‌توان اطمینان یافت که پورت بسته است.
البته باید این نکته را اشاره کرد که مسیریاب‌هایی که به دیوار آتش مجهز هستند، قادرند ورود بسته‌های ‪SYNرا ردیابی و ثبت نمایند که در این صورت احتمال شناسایی پویشگر وجود دارد.
روش دیگر پویش یا اسکن به روش ارسال بسته‌های غیر متعارف است. در این روش، پویشگر بسته‌هایی که در شرایط طبیعی هیچگاه ارسال نمی‌شوند و با مراحل تعریف شده پروتکل ‪TCPهمخوانی ندارند، ارسال می‌کند.
از جمله این نوع بسته‌ها ، می‌توان به بسته‌های متعارف زیر اشاره کرد:
▪ ارسال بسته ‪FINقبل از برقراری اتصال
▪ ارسال بسته ‪Nullبسته‌ای که هیچ یک از بیت‌های ‪،SYNو ‪ACK FINآن، ‪۱نیست
▪ ارسال بسته‌ای که تمام بیت‌های ‪،SYNو ‪ACK FINآن، با مقدار ‪۱تنظیم شده است
▪ ارسال یک بسته ‪SYN-ACKبدون آنکه بسته ‪SYNارسال شود.
هرچهار نوع بسته‌های نام برده شده، دارای هیچ معنی خاصی نیستند. بر اساس اصول پروتکل ‪،TCPهرگاه بسته غیر متعارف دریافت می‌شود، چنان چه پورت مربوطه باز باشد، هیچ پاسخی باز نمی‌گردد، ولی اگر پورت مورد نظر بسته باشد، در پاسخ بسته ‪،RESETارسال می‌شود. لذا پویشگر با ارسال هر یک از بسته‌های فوق به پورت مورد نظر، چنان چه بسته ‪RESETدریافت کند به معنی بسته‌بودن آن پورت است و در صورت عدم دریافت هر گونه بسته‌ای، پورت مورد نظر باز است.
این روش، در تمام سیستم‌عامل‌ها غیر از سیستم‌عامل ویندوز، به خوبی کار می‌کند و نتیجه‌نهایی معتبر است. اما این روش به دلیل آنکه در سیستم‌عامل خانواده ویندوز بر خلاف اصول پروتکل ‪،TCPهرگاه بسته‌ای غیر متعارف دریافت شود، چنانچه پورت باز و یا بسته باشد، در جواب بسته ‪RESETباز خواهد گشت!، کارایی نخواهد داشت.
در عین حال باید بدانیم نوع دیگر پویش که پویش به روش ‪SYN-ACKنامیده می شود، یک امتیاز بسیار مهم نسبت به بقیه روش‌ها دارد و آن امکان عبور چنین بسته‌ای از دیوار آتش یا مسیریاب‌های فیلترکننده است، زیرا معمولا بوسیله دیوار آتش، از یک شبکه داخلی که به خارج از شبکه هیچگونه سرویسی نمی‌دهد، حراست می‌شود.
دیوار آتش نیز به بسته‌های ‪SYNکه اولین مرحله از برقراری یک اتصال ‪TCPهستند اجازه ورود به درون شبکه نمی‌دهد، اما به بسته‌های ‪SYN-ACKاجازه ورود به شبکه را می‌دهند، چرا که این بسته‌ها در پاسخ به بسته‌های ‪SYN ارسال شده‌اند


======
جنوبی‌ها