وبلاگ جوجه مهندس ها

یادداشت های دو دانشجوی مهندسی کامپیوتر

وبلاگ جوجه مهندس ها

یادداشت های دو دانشجوی مهندسی کامپیوتر

اصول پویش پورت - بخش دوم

اصول کار با Nmap  

 

Nmap وضعیت پورت ها را به شش حالت تقسیم می کند:

·                     باز(open) : یک برنامه کاربردی به طور کامل بسته های TCP و UDP را در این پورت می پذیرد. یافتن یک پورت باز بر روی ماشین هدف برای نفوذگر به منزله راهی برای حمله است که می تواند با ارسال کدهای مخرب ماشین هدف را تحت نفوذخود قرار دهد.

·                     بسته (closed): یک پورت بسته ، در دسترس است ، یعنی به بسته های ارسالی از سوی Nmap پاسخ می دهد، ولی هیچ برنامه کاربردی به این پورت گوش نمی دهد. چنین پورتی برای نشان دادن فعال بودن یک ماشین در شبکه ، به طور مثال برای Ping کردن ماشین ، مفید خواهد بود.

·                     فیلترشده (filtered) : در مواجهه با این پورت ، Nmap یا هر نرم افزار پویشگر دیگر نمی تواند جستجوی زیادی انجام دهد. زیرا این پورت توسط firewall نرم افزاری یا سخت افزاری از پاسخ دادن به بسته های TCP یا UDP جلوگیری می شود و Nmap نمی تواند درباره آن نظر دهد.

·                     فیلترنشده (unfiltered): فیلترنشده یعنی پورت مذکور در دسترس است ولی Nmap قادر به تشخیص باز یا بسته بودن آن نیست. پویش چنین پورتی با SYN Scan و یا  FIN Scan ممکن است به تشخیص باز بودن پورت کمک کند.

·                     باز یا فیلتر شده (open|filtered): Nmap پورتی را در این وضعیت گزارش می کند که باز یا فیلتر بودن پورت را نتواند تشخیص دهد. این حالت زمانی پیش می آید که پورت هیچ پاسخی به بسته ها نمی دهد و در نتیجه Nmap قادر به این تشخیص نیست.

·                     بسته یا فیلترشده(close|filtered): زمانی که Nmap بسته یا فیلتر بودن پورت را نتواند تشخیص دهد آن را در حالت بسته یا فیلترشده گزارش می کند.

 

روش Nmap برای پویش

کلیه نتایجی که توسط Nmap به ما گزارش می شود، بر اساس بسته هایی است که از ماشین هدف در پاسخ به بسته های ارسالی توسط Nmap ، برای ما فرستاده شده. برخی از هاست ها برای گمراه کردن Nmap ، بسته هایی را که خود مایلند ارسال می کنند . این هاست ها اصول RFC را رعایت نمی کنند . پویش های FIN ، Null و Xmas در مواجهه با این شرایط حساس هستند و باید از روش های دیگری برای پویش پورت استفاده کرد.

 

 تکنیک های پویش پورت و Nmap

از بین دستورات زیر تنها مجاز به استفاده یکی از آن ها در یک زمان هستیم با این تفاوت که می توانیم پویش UDP (-sU ) را همراه با هر یک از پویش های TCP به کار بریم. انواع مکانیزم های پویش پورت در Nmap تعریف شده است. دستوری که برای این کار استفاده می شود به صورت –sC است که C کاراکتر خاصی است که در هر مکانیزم پویش جایگزین با کاراکتر مشخص آن روش می شود.

·                     -sS (TCP SYN SCAN) : SYN Scan پویش پیش فرض و معمول سیستم است . این روش می تواند به سرعت پورت ها را پویش کند. پویش هزار پورت در ثانیه در یک شبکه سریع که با دیوار آتش حمایت نمی شود ، از ویژگی ممتاز این گزینه است. این گزینه تمایز بین پورت های باز، بسته و فیلتر شده را دقیقاً مشخص می کند.

·                     -sT (TCP Connect Scan) : بعد از SYN Scan ، یعنی در حالتی که این گزینه نباشد، پویش پیش فرض سیستم این روش است. زمانی استفاده می شود که نفوذگر اجازه ارسال بسته های خام(row packet)را ندارد و یا در حال پویش شبکه ایست که از پروتکل IPv6 استفاده می کند. در این حالت Nmap از سیستم عامل ماشین هدف درخواست به برقراری یک اتصال ، با ارسال دستور سیستمی connect() می کند.  این یک واسط برنامه نویسی است که اکثر برنامه های کاربردی رایج وب از آن برای برقراری اتصال استفاده می کنند. در واقع Nmap از داده های خام برای کسب اطلاعات پورت ها استفاده نمی کند ،بلکه از یک (Appllication Programming Interface) API  ، و برقراری یک ارتباط واقعی برای این کار بهره می برد. در صورتی که –sS موجود و قابل استفاده باشد ، نسبت به این روش گزینه بهتری برای پویش پورت است. زیرا Nmap برروی بسته های خام کنترل بیشتری از یک دستور سیستمی مثل connect() دارد. اشکال بزرگ این روش ، ثبت این عملیات در فایل ثبت وقایع است و از این طریق امکان شناسایی نفوذگر از طریق سیستم هایی که مجهز به IDS یا همان سیستم های کشف مزاحمت ، وجود دارد. برقراری اتصال با یک سیستم و سپس قطع آن ، بدون ارسال هیچ داده ای کار غیرمعمولی است . و مدیر سیستم با مشاهده مجموعه ای از این تلاش ها می تواند نتیجه بگیرد که این عملیات از سوی یک نفوذگر است.

·                     -sU (UDP SCAN) : سرویس هایی مثل DNS ، SNMP ، و DHCP که به ترتیب بر پورت های  53 ، 162/161 و 68/67 ثبت شده اند، سه تا از معمول ترین سرویس های هستند که مبتنی بر پروتکل UDP هستند. پویش UDP به طور کلی کندتر و مشکل تر از انواع پویش های TCP است و به همین دلیل بعضی از مسئولین امنیتی شبکه ها از این پورت ها صرف نظر می کنند. و این اشتباه بزرگی است .چرا که نفوذ به سرویس های UDP نیز تقریباً معمول است و نفوذگر از این پورت ها صرف نظر نمی کند. به هر حال Nmap امکان پویش و کسب اطلاعات پورت های مبتنی بر UDP را نیز فراهم کرده است.

پویش UDP با گزینه –sU فعال می شود و می تواند با هریک از پویش های TCP همراه شود تا هر دو پروتکل را در نظر گرفته و پویش کنند.

·                     -sN , -sF, -sX (TCP Null , FIN Scan , Xmas Scan ) : این سه گزینه برای پویش های نام برده شده استفاده می شوند. مهمترین حسن این سه تکنیک مخفی ماندن از دید برخی از دیوارهای آتش خاص و مسیریاب هایی است که بسته ها را فیلتر می کنند. و عدم تشخیص و تمایز بین پورت های باز و فیلترشده از معایب این سه روش محسوب می شود که Nmap ، نتیجه آن را به صورت باز| فیلتر شده برای ما گزارش می کند.

·                     -sA (TCP ACK Scan ) : این گزینه با روش های قبلی متفاوت است و به هیچ وجه نمی تواند پورت های باز و یا حتی باز|فیلترشده را تشخیص دهد. این گزینه برای تعیین قواعد و قوانین دیوارآتش استفاده می شود و پورت های فیلتر شده را مشخص می کند.

·                     -sW (TCP Window Scan) : این گزینه مانند –sA عمل می کند، با این تفاوت که روش خاصی برای تمایز و تشخیص پورت های باز و بسته دارد.

این گزینه براساس جزئیاتی که در تعداد کمی از سیستم ها وجود دارد کار می کند و بنابراین همیشه نمی توان به آن اعتماد و از آن استفاده کرد. سیستم هایی که آن را حمایت نمی کنند، تمامی پورت ها را بسته اعلام می کنند.

·                     -sM (TCP Maimon Scan ) : این روش را شخصی به نام Uriel Maimon ابداع کرد. روش مشابه Null ، FIN و Xmas  است با یک تفاوت جزئی.

 

طبق RFC 793  که اصول TCP را تعریف می کند، بسته RST باید از پورت های باز یا بسته ارسال شود. Uriel Maimon این نکته را ذکر کرد که بسیاری از سیستم های مبتنی بر BSD این بسته را تنها در پورت های باز ارسال می کنند!.

·                     --scanflags : کاربران حرفه ای  Nmap مجبور نیستند تنها از چند پویش محدود و از پیش تعریف شده آن استفاده کنند. با استفاده از این گزینه می توانند به طوردلخواه پرچم های TCP را تنظیم و از یک بسته مطابق نظر خود برای ارسال و دریافت و تحلیل نتیجه و در نهایت تشخیص حالت پورت استفاده کنند. در مقابل این دستور نام پرچم ها به ترتیب یک بسته TCP قرار می گیرند و یک پویش خاص مطابق نظر کاربر یا همان نفوذگر می سازد.

علاوه بر تعریف این پرچم ها می توان یک روش پویش TCP نیز تعریف کرد که به Nmap می گوید که نتایج را چگونه تفسیر کند. اگر هیچ روشی ذکر نشود، به طور پیش فرض از SYN Scan استفاده می کند.

·                     -sI <zombie host[:probeport]> : با استفاده از این روش هیچ بسته ای به ماشین هدف از آدرس IP واقعی نفوذگر ارسال نمی شود و در نتیجه ماهیت نفوذگر از دید سیستم های کشف مزاحمت مخفی می ماند.

·                     -sO (IP Protocol Scan ) :  این گزینه به نفوذگر این امکان را می دهد که تعیین کند چه پروتکل هایی در ماشین هدف پویش شود .مثلاً TCP ، ICMP ، IGMP و غیره. درواقع این روش ، پویش پورت نیست ، زیرا در بین پروتکل ها به جستجو می پردازد، بر خلاف سایر روش ها که پورت های TCP یا UDP را پویش می کردند. پویش پروتکل ها به روشی مشابه UDP Scan انجام می شود. به جای اینکه در میان شماره پورت های یک بسته UDP جستجو کند، سرآیند بسته های IP را ارسال کرده و در میان فیلد 8 بیتی پروتکل IP می گردد. و به جای اینکه منتظر رسیدن پیغام ICMP Port Unreachable باشد، در انتظار ICMP Protocol Unreachable ، برای تشخیص وضعیت پورت است. اگر هیچ پیغامی از هیچ پروتکلی در ماشین هدف ، دریافت نکند، آن را باز در نظر می گیرد. دریافت خطای ICMP Protocol Unreachable با کد 2 تعیین کننده پروتکل بسته و خطاهای دیگر ICMP Protocol Unreachable با کد 1، 3، 9 ، 10 یا 13 پروتکل را فیلترشده مشخص می کند.

·                     -b <ftp relay host> (FTP Bounce Scan) : این گزینه برای FTP Bounce Scan که شرح کامل آن ارائه شد، درنظر گرفته شده است. که باید آدرس هاست ftp غیرواقعی منظور را در دستور ذکر کنیم.

تعیین پورت ها و ترتیب پویش

در Nmap علاوه بر دستورات فوق که به نفوذگر امکان انتخاب هر یک از روش های پویش پورت را می دهد، امکان تعیین شماره پورت ها و ترتیب پویش پورت ها به صورت تصادفی یا به ترتیب وجود دارد. به صورت پیش فرض 1024 پورت را پویش می کند. گزینه های موجود برای این انتخاب ها به شرح زیر است:

·                     -p <port ranges> : با این دستور تنها شماره پورت های مشخص شده در محدوده پورت پویش می شود. در صورتی که بخواهیم پورت های TCP و UDP را پویش کنیم، پروتکل موردنظر را به صورت T: برای TCP و U: برای UDP و به دنبال آن شماره پورت موردنظر را ذکر می کنیم.

·                     -F : تنها شماره پورت های معمول و رایجی را پویش می کند که این شماره پورت ها در فایل nmap-services ذخیره شده است.  همچنین امکان تعیین فایل دلخواه نفوذگر به جای nmap-services با استفاده از دستور –datadir وجود دارد.

·                     -r : Nmap به صورت پیش فرض پورت ها را به صورت تصادفی از میان مجموعه مورد نظر انتخاب می کند. استفاده از این دستور Nmap را مجبور می کند پورت ها را به ترتیب پویش کند.

 

 تشخیص نوع سیستم عامل

یکی از بهترین ویژگیهای شناخته شده در Nmap تشخیص سیستم عامل ماشین هدف با استفاده از روش TCP Stack Fingerprinting است.

Nmap نتایج به دست آمده را با پایگاه داده خود به نام nmap-os-fingerprints که شامل اطلاعات بیش از 1500 سیستم است مقایسه کرده و نوع سیستم هدف را تشخیص می دهد و به صورت متنی که شامل نام شرکت تولید کننده (مثل Sun ) ، نام سیستم عامل ( مثل Solaris ) و نسخه سیستم (مثلاً 10)  و نوع ماشین و دستگاه ( چند منظوره ، مسیریاب ، سوئیچ و یا کنسول بازی) ، است به کاربر نمایش می دهد.

تشخیص سیستم عامل ماشین هدف ، مزایای زیادی را برای نفوذگر به ارمغان می آورد. یکی از اطلاعاتی که نفوذگر می تواند از آن کشف کند، اندازه گیری زمان up بودن سیستم است. این کار را با استفاده از TCP Timesamp که می تواند زمان آخرین راه اندازی مجدد سیستم را مشخص کند ، انجام می دهد . از دیگر اطلاعاتی که نفوذگر می تواند با این روش به دست آورد تعیین کلاس پیش بینی دنباله TCP است که با استفاده از آن نفوذگر می تواند برای ارسال و برقراری ارتباط با آدرس IP های جعلی استفاده کند. بسیاری از ماشین ها نسبت به این مساله آسیب پذیر هستند.

دستوراتی که Nmap برای این منظور فراهم کرده است به قرار زیر است:

·                     -O :  برای تشخیص نوع سیستم عامل استفاده می شود . در ابتدا سیستم عامل های نسل دوم و در صورتی که در میان آن ها موفق به کشف سیستم عامل هدف نشود از بین سیستم عامل های نسل اول به دنبال سیستم ماشین هدف جستجو می کند.

·                     -O2 :  با استفاده از این دستور Nmap تنها در میان سستم عامل های نسل دوم به جستجو و پویش می پردازد.

·                     -O1 : جستجو در میان سیستم عامل های نسل اول 

نظرات 8 + ارسال نظر
محمود دوشنبه 12 آذر‌ماه سال 1386 ساعت 02:32 ب.ظ http://donyaye-majazi.blogsky.com

خسته ام از لبخند اجباری خسته ام از حرفهای تکراری

خسته ام از خواب فراموشی زندگی با وهم بیداری

من و تو گم شدیم انگار تو این دنیای وارونه

که دریاش هم پر از حسرت همیشه فکر بارونه


(به من هم سر بزن خوشحال میشم)

محمود چهارشنبه 14 آذر‌ماه سال 1386 ساعت 05:48 ب.ظ http://donyaye-majazi.blogsky.com

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

با تشکر (مدیر وبلاگ دنیای مجازی)

آلوچه دوشنبه 26 آذر‌ماه سال 1386 ساعت 05:29 ب.ظ

ای ول بابااااااااااااااا
من به شدت مشتاقم که همش رو بخونم ولی الان نه!
آی دی اس؟؟؟؟!
کجایی خواهر؟
حداقل بیست بار بعدش موضوع پروژه عوض شد.
الان بنده در سی اف اس غوطه ور می باشم که عمرا بهت بگم چیه!!!
زندگی چطوره؟

خلیل یکشنبه 30 دی‌ماه سال 1386 ساعت 03:09 ق.ظ http://ashko-ah.blogfa.com/

سلام. مطالب آموزنده و جالبی توی وبلاگتون هست. من که استفاده کردم. موفق باشین. ولی از <دوشنبه 12 آذر ماه سال 1386> تا الان که <دوشنبه ۱ بهمن ۸۶> هست خیلی گذشته ولی....!

شاداب و سربلند باشین.

خلیل یکشنبه 30 دی‌ماه سال 1386 ساعت 06:19 ب.ظ http://www.shirazpasargad.blogfa.com/

سلام. ممنونم که به وبلاگم سر زدین....

یه پیشنهاد:
می خواستم اگه قبول کنین توی ساخت وبلاگ با هم شریک بشیم. ما یه وبلاگ داشتیم که ... خودتون ببینید بهتره :
http://www.shirazpasargad.blogfa.com/
منتظرم تا فکراتونو بکنین
D-:

آلوچه یکشنبه 30 دی‌ماه سال 1386 ساعت 09:21 ب.ظ

سلام مهندس ((:
باور کن منم مثل تو وقتی دیدم وبلاگ رو محل شاخ های قبلیم درد گرفت! (قبلا چند بار شاخ درآوردم!)
والا من که نمیدونم چه جوری اون مشکل به وجود اومده بود شما که خدای سکیوریتی(!) هستی باید بگی P:
راستش من فقط اومدم ثواب کنم که کباب شد!
حالا تو هم به بزرگواری خودت ببخش این قدر شلوغش نکن!!

عزاداری های این ایام هم قبول باشه.

کامران صالحی جمعه 5 بهمن‌ماه سال 1386 ساعت 12:45 ق.ظ

بهت تبریک میگم عالی بدد البته من برق خوندم

زهرا پنج‌شنبه 5 اردیبهشت‌ماه سال 1387 ساعت 04:33 ب.ظ

برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد