برای مطالعه قسمت قبل آموزش رایگان دوره CEH اینجا کلیک کنید.
زیرساخت TCP ارتباط مستحكمی را ایجاد میكند، اما به هكرها اجازه میدهد به روشهای مختلف بستهها را جعل کرده و سرورها را مجبور کنند به درخواستها پاسخ داده یا مانع از آن شوند تا سامانههای تشخیص نفوذ (IDS) جعلی بودن بستهها را شناسایی کنند. بسیاری از این روشها به شکل از پیش ساخته شده در ابزارهای پویش پورت و Nmap قرار گرفتهاند. پیش از این که به این ابزارها نگاهی بیندازیم، بهتر است با برخی از محبوبترین تکنیکهای پویش پورتها آشنا شویم.
TCP Full Connect scan: این نوع اسکن قابل اطمینانترین برای بررسی پورتها است، اما به سرعت توسط سامانهها شناسایی میشود، زیرا یک ارتباط کامل را برقرار میکند و در نتیجه تمامی فعالیتهایی که انجام میشود توسط سامانهها ثبت و گزارش میشود که همین مسئله شناسایی را ساده میکند. در روش فوق پورتهای باز با بستههای SYN / ACK به درخواستکننده پاسخ میدهند. همچنین پورتهای بسته نیز با بستههای RST / ACK به درخواستها پاسخ میدهند.
TCP SYN scan: این روش بهنام اسکن نیمه باز شناخته میشود، زیرا یک ارتباط کامل سه مرحلهای TCP را ایجاد نمیکند. این نوع اسکن در اوایل برای نفوذ زیرکانه به سامانهها و گذر از سامانههای تشخیص نفوذ (IDS) طراحی شده و به کار گرفته میشد، هرچند این روش امروزه توسط بیشتر سامانهها تشخیص داده میشود. در روش فوق پورتهای باز با SYN / ACK به درخواستها پاسخ داده میدهند و پورتهای بسته نیز با RST / ACK به درخواستها پاسخ میدهند.
TCP FIN scan: در روش فوق نباید به دنبال چیزی همچون تنظیم یک ارتباط باشید. در روش فوق یک بسته FIN به سمت پورت مقصد ارسال میشود و یک درگاه باز نیز نباید هیچ پاسخی ارسال کند. در روش فوق پورتها بسته باید یک پاسخ RST/ACK ارسال کنند. این روش معمولاً فقط در دستگاههای یونیکسی یا سازگار با مستندات RFC 793 کاربرد دارد.
TCP NULL scan: بدون شک باید یک نوع پرچم (فلگ) در بسته وجود داشته باشد، اما یک اسکن NULL بستهای را بدون تنظیم پرچم ارسال میکند. اگر سیستمعامل TCP را بر مبنای RFC 793 پیادهسازی کرده باشد، پورتهای باز هیچ پاسخی ارسال نمیکنند، در حالی که درگاههای بسته RST را باز میگردانند.
TCP ACK scan: این اسکن سعی میکند تا فهرست کنترل دسترسی و قواعد مربوطه را تنظیم کرده یا مشخص کند که آیا از یک دیوارآتش یا یک مکانیزم بازرسی بدون حالت در یک زیرساخت استفاده شده یا خیر. در چنین شرایطی دیوارآتش دارای حالت نباید هیچ پاسخی ارائه کند. اگر یک مقصد ICMP غیرقابل دستیابی باشد، پیام عدم دسترسی برگشت داده میشود و هکر متوجه میشود که پورت فیلتر شده است. اگر RST برگردانده شود به معنای آن است که در شبکه هدف هیچ دیوارآتشی موجود نیست.
TCP XMAS scan: در روش فوق فقط یک فرآیند اسکن پورت بر مبنای پرچمهای FIN ، URG و PSH انجام میشود. اگر زیرساخت شبکه هدف به درستی پیکربندی شده باشد، پورتهای باز نباید پاسخی ارائه دهند. پورتهای بسته نیز باید با بسته RST پاسخ دهند. این راهکار در سامانههایی جواب میدهد که مطابق با مستندات RFC 793 طراحی شدهاند. سیستمعامل لینوکس از جمله این سامانهها است، در نتیجه در ارتباط با سیستمعاملهای ویندوزی نباید روی این روش حساب باز کنید.
نکته: برای موفقیت در آزمون CEH لازم است با انواع اسکنهای رایج همچون اسکن کامل و در اختفا آشنایی کامل داشته باشید. به همین دلیل در زمان معرفی نام روشها را بهطور شکل انگلیسی نوشتم. برای درک کامل روشهای فوق بهتر است ابزار Nmap را دانلود کنید و از آن استفاده کنید. در آزمون فوق ممکن است مجبور شوید به روشهای مختلف از Nmap برای پویش پورتها استفاده کنید.
برخی از سیستمعاملها به شکل آزادانهای از TCP/IP RFCs استفاده میکنند و برخی از کارها را به روش خود انجام میدهند. به همین دلیل نباید انتظار داشته باشید که روشهای مختلف اسکن پورتها روی تمامی سامانهها به درستی کار کند، به همین دلیل ممکن است از یک روش یکسان روی سامانههای مختلف استفاده کنید و نتایج مختلفی را دریافت کنید، با این حال دقت کنید که روش اسکنهای Full Connect و اسکنهای SYN بهطور عادی روی تمامی سیستمها کار میکنند.
همچنین به این نکته دقت کنید که روشهای دیگری نیز به غیر از روشهای یاد شده برای شناسایی پورتها استفاده میشوند. برخی از تکنیکهای اسکن اجازه میدهند تا هکرها هویت خود را پنهان کنند. یکی از این روشها اسکن حالت بیکار (Idle) یا زامبی است. قبل از آنکه نمونهای از اسکن حالت بیکار را بررسی کنیم، اجازه دهید نگاهی به برخی از اصول اولیه برقراری یک اتصال TCP / IP داشته باشیم. آیپی از یک شماره شناسایی IPID استفاده میکند تا شناسایی به سادگی امکانپذیر شود. این شمارنده کمک میکند تا فرآیند سرهم کردن بستههای تکه تکه شده در زمان انتقال ساده شود.
TCP یک سرویس قابل اعتماد را ارائه میکند تا فرآیند دستدهی پیش از آنکه ارتباط برقرار شود به شکل درستی ایجاد شود. در روش فوق ابتدا یک بسته SYN اولیه ارسال میشود و در صورت باز بودن درگاه، گیرنده بسته SYN / ACK را بر میگرداند. برای درگاههای بسته، گیرنده یک بسته RST را باز میگرداند. RST به عنوان یک عامل هشداردهنده رفتار میکند و اعلام میدارد که اشتباهی رخ داده و فرستنده باید دوباره سعی در برقراری ارتباط کند.
در این حالت به RSTها پاسخ داده نمیشوند. اگر به آنها پاسخ داده شود، ممکن است شرایطی به وجود آید که دو سیستم با مشکل سرریز بستههای RST روبرو شوند. این بدان معنی است که RSTهای ناخواسته نادیده گرفته میشوند. با ترکیب این ویژگیها و همچنین IPID، این فرصت فراهم میشود تا یک پویش پورت در حالت بیکار با موفقیت انجام شود.
یک فرآیند پویش اسکن در حالت بیکار/باز به این شکل انجام میشود که مهاجم یک پروب IDIP را به میزبان بیکار میفرستد تا پاسخی را دریافت کند. به عنوان مثال، فرض کنید که پاسخ IPID 12345 تولید شود. در مرحله بعد، مهاجم یک بسته جعلی را برای قربانی میفرستد. این بسته SYN برای قربانی ارسال میشود و میزبان نیز به آن پاسخ میدهد. یک پورت باز روی سیستم قربانی یک SYN ACK تولید میکند. از آنجایی که idle host مبدا بسته اولیه SYN نبوده و هیچگاه نیز به عنوان منبع برای یک ارتباط اولیه نخواهد بود، به همین دلیل با ارسال RST ارتباط با را خاتمه میدهد. اینکار باعث میشود که IPID یک مقدار افزایش پیدا کرده و در مثال ما به عددد 12346 برسد. در انتها هکر مجدداً درخواستی برای میزبان ارسال میکند که باعث میشود پاسخ IPID 12347 توسط میزبان صادر شود. در این مرحله هکر متوجه میشود که پورت اسکن شده در سیستم قربانی باز است. شکل زیر نمونهای از این حالت را نشان میدهد.
اگر سیستم هدف پورت خود را بسته باشد چه میشود؟ در این حالت، اسکن دقیقاً به همان روشی که قبلاً توضیح داده شد، شروع میشود. یک مهاجم برای تعیین مقدار IPID میزبان Idle، یک محاوره اولیه ایجاد میکند. توجه داشته باشید که مقدار برگشتی 12345 بوده است. در مرحله 2 ، مهاجم یک بسته SYN خطاب به قربانی میفرستد، اما بسته را به شکل ارسال میکند تا قربانی گمراه شود که بسته ظاهراً از میزبان Idle نشات گرفته است. از آنجایی که پورت روی سامانه قربانی بسته است، وی با ارسال بسته RST به این پرسوجو پاسخ میدهد. از آنجایی که RSTها سعی نمیکنند RSTهای اضافی ایجاد کنند، ارتباط بین میزبان Idle و قربانی در اینجا خاتمه مییابد. سرانجام، مهاجم مجدداً میزبان Idle را کاوش کرده و پاسخ را بررسی میکند. با توجه به اینکه پورتهای روی سامانه قربانی بسته هستند، مشاهده میکنیم که IPID برگشتی برابر با 12346 خواهد بود. در این روش تنها یک واحد به IPID افزوده میشود، زیرا هیچ ارتباطی از آخرین کاوش IPID که مقدار اولیه را تعیین کرده بود، صورت نگرفته است. شکل زیر این موضوع را نشان میدهد.
درست است که روش فوق کامل نیست، اما راهکار فوق مهاجمان را قادر میسازد آدرس واقعی خود پنهان کنند. با این حال، محدودیتهایی در رابطه با پویش idle وجود دارد. اول آنکه، سیستمی که قرار است نقش میزان idle را باز کند باید به معنای واقعی کلمه بیکار باشد. واقعیت دیگری که وجود دارد این است که تمامی سیستمعاملها از رویکرد افزایش IPID استفاده نمیکنند. به عنوان مثال، برخی از نسخههای لینوکس IPID را روی صفر تنظیم میکنند یا مقدار IPID تصادفی تولید میشود. باز طبیعی است در چنین سامانههای عاملی پیادهسازی یک چنین حملاتی شانس موفقیت کمی دارند. در نهایت نباید فراموش کنید که نتایج به دست آمده باید ارزیابی شوند. منظورم این است که برای تأیید صحت نتایج لازم است آزمونهای چندگانهای انجام شوند تا هکر مطمئن شود که حملهخ به سرانجام میرسد. در حالی که مفهوم پویش Idle جالب است، اما روشهای پویش دیگری نیز وجود دارد که به شرح زیر هستند:
ACK scan: در روش فوق یک پروب ACK با شماره دنباله تصادفی ارسال میشود. پاسخهای ICMP نوع 3 کد 13 ممکن است بدان معنا باشند که شبکه هدف از دیوارهای آتش بدون حالت استفاده میکند و بسته RST میتواند از پورتی که فیلتر نشده عبور کرده باشد.
FTP Bounce scan: در روش فوق از سرور FTP استفاده شده و در وضعیت پسیو بستهها ارسال میشوند تا فرآیند ردیابی پویش به سختی امکانپذیر شود.
RPC scan: در این روش تلاش میشود تا این مسئله شمخص شود که آیا پورتهای باز از نوع RPC هستند یا خیر.
Window scan: شبیه به روش پویش ACK عمل میکند، اما گاهی اوقات میتواند درگاههای باز را مشخص کند. در روش مقدار TCP window size بازگردانده شده از بستههای RST بررسی میشود. در برخی از سیستمها، پورتهای باز یک مقدار window size مثبت را بر میگردانند و پورتهای بسته مقدار منفی را برای window size باز میگردانند.
حال بیایید نگاهی به اسکنهای UDP بیندازیم. UDP برخلاف TCP عمل میکند. TCP روی اتصالات محکم ایجاد میشود، اما UDP مبتنی بر سرعت است. با TCP هکر میتواند پرچمها را در تلاش برای ساخت یک پاسخ TCP یا یک پیام خطا از ICMP دستکاری کند. UDP نه پرچم دارد و نه پاسخی را صادر میکند. پروتکلی است که ارتباطی را ایجاد کرده و به سرعت خاتمه پیدا میکند. در نتیجه تنها نقطه اتکا و مهم در ارتباط با این پروتکل پاسخهای دریافتی از ICMP است. اگر پورت بسته است، ICMP سعی خواهد کرد تا پیغام در دسترس نبودن نوع 3 کد 3 را در ارتباط با منبعی که توسط UDP پویش شده ارسال کند. اگر شبکه ICMP را مسدود کند هیچ پیام خطایی نیز بر گردانده نمیشود. بنابراین، پاسخ به پویشها داده نخواهد شد. اگر قصد انجام اسکنهای UDP را دارید باید آماده باشید تا نتایج غیرقابل اعتمادی را دریافت کنید. اکنون بهتر است با برخی از برنامههایی که اقدام به پویش پورتها میکنند آشنا شویم.
نکته: آیا رویکرد پویش اسکن کار قانونی است؟ در سال 2000 دو پیمانکار به دلیل اختلاف نظر درباره قانونی بودن اسکن پورت در دادگاهی در ایالات متحده حاضر شدند. شاکی معتقد بود که اسکن پورت جرم محسوب است، در حالی که متهم که مسئول شبکه بود معتقد بود تنها با اسکن پورت میتوان تعیین کرد چه پورتی باز است و چه پورتی در وضعیت بسته قرار دارد. قاضی دادگاه حكم داد كه اسكن پورت غیرقانونی نیست و خسارتی ایجاد نمیکند. بنابراین ، اگرچه اسکن پورت جرم محسوب نمیشود، اما هنوز باید به دنبال گرفتن مجوز قبل از اسکن شبکه باشید. همچنین، کاربران خانگی قبل از اسکن کردن درگاه باید شرایط و ضوابط ارائهدهنده خدمات خود را بررسی کنند. اکثر اپراتورها اسکن پورت را ممنوع کرده و اگر مشترکی چنین اقدامی را انجام دهد، گزارش این فرآیند را در اختیار مقامات قرار میدهند.
ابزار Nmap
Nmap توسط هکری بهنام Fyodor Yarochkin ساخته شد. این برنامه در هر دو سیستمعامل ویندوز و لینوکس به دو صورت خط فرمان و رابط کاربری در اختیار کاربران قرار دارد. Nmap یکی از پرکاربردترین ابزارهای پویش پورتها است که تا به امروز ساخته شده است. ابزار فوق میتواند انواع مختلفی از اسکنها را انجام داده و سیستمعاملهای مختلف را شناسایی میکند. همچنین، این امکان را برای شما فراهم میکند که سرعت اسکن را کند یا سریع کنید. محبوبیت نرمافزار فوق را به این شکل میتوان متوجه شد که در بیشتر محصولات شبکه و امنیت قرار گرفته و جالب آنکه حتا در فیلم ماتریکس نیز از آن استفاده شده است. برای آنکه به سوییچها و اطلاعات کاربردی در خصوص Nmap دسترسی داشته باشید کافی است فرمان Nmap -h را در خط فرمان وارد کنید. با انجام اینکار اطلاعات زیر نشان داده میشود:
C:\ nmap-6.25>nmap -h
Nmap 6.25 Usage: nmap [Scan Type(s)] [Options] <host or net list>
Some Common Scan Types ('*' options require root privileges)
* -sS TCP SYN stealth port scan (default if privileged (root))
-sT TCP connect() port scan (default for unprivileged users)
* -sU UDP port scan
-sP ping scan (Find any reachable machines)
-sL list scan that simply does a reverse DNS lookup without actually
scanning
* -sF,-sX,-sN Stealth FIN, Xmas, or Null scan (experts only)
-sV Version scan probes open ports determining service and app
names/versions
-sR/-I RPC/Identd scan (use with other scan types)
......
......
برای دانلود ابزار فوق می توانید به آدرس زیر مراجعه کنید.
https://nmap.org/book/man.html
همانگونه که در خروجی منوی راهنما در فهرست قبل مشاهده میکنید، Nmap میتواند انواع مختلفی از اسکنها را اجرا کند. Nmap یک ابزار ضروری است که هر کارشناس امنیتی باید نحوه کار با آنرا یاد گرفته باشد. Nmap Scripting Engine یکی از قدرتمندترین و انعطافپذیرترین ویژگیهای Nmap است. قابلیت این امکان را برای کاربران فراهم میکند تا اسکریپتهای سادهای را برای خودکارسازی طیف گستردهای از کارهای شبکه ایجاد و استفاده کنند. Nmap اطلاعاتی در ابتاط با نام سرویسهایی که پورت آنها باز است، پروتکلها و..... را ارائه میکند. پورتها میتوانند باز، بسته یا فیلتر باشند. اگر پورت باز باشد به این معنا است که دستگاه هدف اتصالات را در آن پورت قبول میکند. یک درگاه بسته اتصالات را قبول نمیکند و یک پورت فیلتر شده به معنی آن است که یک دیوارآتش، فیلتر یا سایر دستگاههای شبکه از درگاه محافظت میکنند و مانع از آن میشوند تا جستوجوی کامل Nmap برای تعیین وضعیت به سرانجام برسد. اگر پورت به عنوان فیلتر نشده گزارش شده باشد به این معنا است که پورت بسته است و به نظر نمیرسد هیچ دیوارآتش یا روتری در تلاش باشند تا خللی در عملکرد Nmap وارد کنند.
در شماره آینده مبحث فوق را ادامه میدهیم.
برای مطالعه رایگان تمام بخشهای دوره CEH روی لینک زیر کلیک کنید:
ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را میتوانید از کتابخانههای عمومی سراسر کشور و نیز از دکههای روزنامهفروشی تهیه نمائید.
ثبت اشتراک نسخه کاغذی ماهنامه شبکه
ثبت اشتراک نسخه آنلاین
کتاب الکترونیک +Network راهنمای شبکهها
- برای دانلود تنها کتاب کامل ترجمه فارسی +Network اینجا کلیک کنید.
کتاب الکترونیک دوره مقدماتی آموزش پایتون
- اگر قصد یادگیری برنامهنویسی را دارید ولی هیچ پیشزمینهای ندارید اینجا کلیک کنید.
نظر شما چیست؟