پورت اسكن (Port Scan) چيست؟ معرفي انواع اسكن پورت در هك و نفوذ
فرآيند اسكن پورت يا Port Scanning چيست و چند نوع اسكن پورت وجود دارد؟ اگر بخواهيم تعريفي از اسكن پورت يا پورت اسكن داشته باشيم ، بايد ابتدا درك عميقي از مفهوم پورت و ماهيت Port هاي كامپيوتر داشته باشيم. بديهي است كه افراديكه به دنبال مفهوم پورت اسكن مي گردند با ماهيت پورت هاي كامپيوتري و كاربردشان آشنايي دارند و صرفا مي خواهند براي مصارف امنيت شبكه و ارتباطات يا هك و نفوذ ، بيشتر در بحث Port Scanning كه يكي از محبوب ترين روشهاي كسب اطلاعات درباره هدف نفوذ است ، در اين خصوص اطلاعات به دست بياورند.
من محمد نصيري هستم ، هكر كلاه خاكستري و مشاور امنيت سايبري ، قبل از اينكه ادامه مقاله را بخوانيد و به زبان ساده مفهوم پورت اسكن و انواع آن را ياد بگيريد پيشنهاد مي كنم مقاله ديگري از بنده با عنوان پورت چيست را در همين لينك مشاهده كنيد. اگر علاقه مند به مباحث هك و نفوذ هستيد حتما بعد از خواندن اين مقاله به دوره آموزش سكيوريتي پلاس و البته دوره آموزش CEH براي يادگيري بهتر و عميقتر مفاهيم پورت اسكن در هك و نفوذ مراجعه كنيد.
اسكن پورت يا پورت اسكن چيست؟
ارتباطات در كامپيوترها به وسيله پروتكل ها انجام مي شوند و پروتكل ها براي اينكه بتوانند به درستي بين كامپيوترها ارتباط برقرار كنند از يك شماره پورت مشخص استفاده مي كنند تا همديگر را متوجه بشوند. اين شماره پورت ها براي سرويس هاي مشخصي رزرو شده است و شما با شناخت اين شماره پورت ها مي توانيد تشخيص بدهيد چه نوع سرويسي بر روي چه سيستم عاملي در حال اجرا است. براي مثال شماره پورت 53 براي سرويس DNS و شماره پورت 443 براي سرويس SSL است.
به زبان ساده تر ، وقتي صحبت از اسكن كردن پورت هاي باز مي شود ، ما مي خواهيم بدانيم كه چه سرويس هايي بر روي كامپيوتر مورد نظر ما فعال هستند . فهميدن اينكه چه سرويسي در پورت اسكن فعال است به شما در فرآيند هاي مختلفي كمك مي كند از تشخيص نوع سرويس براي هك و تست نفوذ گرفته تا رفع مشكلات ارتباطي شبكه ، بنابراين اگر بخواهيم در يك جمله تعريف پورت اسكن را داشته باشيم مي گوييم ::: Port Scanning فرآيندي است كه از طريق بررسي پورت هاي كامپيوتر ، به ما نشان مي دهد كه چه نوع سرويس هايي بر روي كامپيوتر ( مودم ، روتر و ... ) مورد نظر ما در شبكه قابل دسترس و فعال هستند.
معرفي انواع پورت اسكن ( Port Scan )
تكنيك هاي متعددي در اسكن پورت هاي شبكه وجود دارد كه معمولا اين روزها بصورت دستي انجام نمي شوند. يكي از نكاتي كه در انواع پورت اسكن هاي امروزي بسيار مهم است ، مخفي بودن و ناشناس بودن و ناشناس ماندن فردي است كه فرآيند پورت اسكن را انجام مي دهد. تكنيك هاي پورت اسكن دائما در حال به روز رساني هستند و به همين دليل انواع پورت اسكن يك چيز ثابت و دائمي نيست و دائما ممكن است در حال به روز رساني باشد. اما در ادامه ما بر اساس تعريف هايي كه در دوره آموزش CEH يا هك قانونمند بصورت استاندارد داريم ، انواع پورت اسكن را با هم بررسي مي كنيم.
انواع اسكن پورت قسمت 1 : پورت اسكن تهي يا Null Scan چيست؟
Null به معني تهي يا پوچ مي باشد و در فرآيند Port Scanning ما براي اينكه بدانيم يك پورت باز است يا بسته است يا وضعيت آن را شناسايي كنيم مي توانيم از اين تكنيك استفاده كنيم. دقت كنيد كه اين تكنيك Port Scanning بصورت ويژه براي سيستم عامل هاي خانواده Unix طراحي شده است و به هيچ عنوان بر روي سيستم عامل هاي ويندوزي پاسخ نخواهد داد.
زمانيكه صحبت از Null Scan مي شود در واقع يعني ما هيچ Flag اي بر روي Packet هاي Port Scan خودمان قرار نمي دهيم يا در اصطلاح فني تر در Null Scan كليه TCP Flag هاي ما در حالت Off قرار دارند. در چنين حالتي اگر سرور مورد نظر پورت Closed شده داشته باشد در پاسخ به Null Scan يك TCP RST ارسال مي كند و اگر پورت مورد نظر باز باشد Packet غير معتبر شناخته شده و اصطلاحا Discard مي شود.
در حالت Null Scan تمامي TCP Header ها مانند ACK ، FIN ، RST ، SYN ، URG و PSH به شكل NULL يا مقدار دهي نشده تغيير خواهند كرد. در سيستم عامل هاي خانواده BSD ( خانواده Unix ) هسته سيستم عامل در صورتيكه تشخيص دهد packet ورودي داراي اين خاصيت هاي Null است در صورت باز بودن پورت ، Packet را Drop مي كند و در صورت بسته بودن پورت يك RST Flag به سمت Scanner ارسال خواهد كرد به اين معنا كه پورت در حالت Closed قرار دارد.
در اين نوع اسكن flag ها برخلاف حالتي كه در Xmas Scan وجود دارند استفاده مي شوند اما نتيجه خروجي به شكل خروجي اسكن هاي FIN و Xmas خواهد بود. بسياري از سيستم عامل هاي تحت شبكه ، درنحوه برخورد با چنين بسته هايي رفتارهاي مشخصي انجام مي دهند ، در مقايسه سيستم عامل هاي خانواده يونيكس و ويندوز ، خانواده ويندوز به هيچ عنوان عكس العمل مشخصي در قبال اين نوع Scan ها نداشته و اين نوع اسكن نتيجه مناسبي براي اين خانواده بازگشت ندارد. اما از مهمترين مزاياي اين نوع اسكن مي توان به دور زدن سيستم هاي تشخيص نفوذ يا IDS ها و همچنين مكانيزم Three-way Handshake پروتكل TCP اشاره كرد.
انواع اسكن پورت قسمت 2 : پورت اسكن كامل يا Full TCP Scan چيست؟
يكي از معروف ترين تكنيك هايي كه براي Port Scanning مورد استفاده قرار مي گيرد و معمولا تازه كارها از آن استفاده مي كنند به نام TCP Full Scan است. در اين نوع Port Scanning نرم افزار Scanner شما به ترتيب از شماره 0 تا شماره 65535 شروع به برقراري يك ارتباط كاملا طبيعي و طبق روال پروتكل TCP مي كند.
همانطور كه مي دانيد در پروتكل TCP در هنگام برقراري يك ارتباط فرآيندي به نام Three-way Handshake يا دست دادن سه مرحله اي انجام مي شود كه در اين حالت ابتدا كامپيوتر درخواست دهنده يك Packet به نام TCP SYN براي سيستم هدف ارسال مي كند ، SYN مخفف Synchronization است و يعني كامپيوتر مي خواهيد يك درخواست براي ارتباط بگيرد.
در مرحله دوم كامپيوتر مقصد به محض دريافت Packet مورد نظر در صورت باز بودن پورت مورد نظر يك Packet به شكل SYN-ACK ارسال مي كند يعني اينكه با درخواست ارتباطي شما موافقت شده است و در اينجا سيستم درخواست دهنده بايد به اين درخواست پاسخ ACK براي تاييد برقراري ارتباط بدهد. با همين روش اگر فرآيند ها به صورت كامل انجام شوند مي توان پورت هاي باز را شناسايي كرد.
ساده ترين نوع پورت اسكن به نام Full TCP Scan يا همين موردي بود كه ما در اينجا معرفي كرديم ، اين نوع اسكن به اسكن وانيلي يا Vanilla Scan هم معروف است. همانطور كه ديديد در اين نوع Scan هيچ اتفاق غيرعادي نيوفتاد ، بزرگترين مزيت اين اسكن سادگي انجام و نتيجه آن است و بزرگترين مشكل آن شناسايي بسيار راحت آن توسط فايروال هاي بسيار ساده است و به همين دليل هم اين نوع اسكن را هكرهاي مبتدي به كار مي برند.
انواع اسكن پورت قسمت 3 : پورت اسكن مخفي يا Stealth Scan چيست؟
خوب از انواع Port Scanning هايي كه تا به حال معرفي كرديم اكثر آنها فقط و فقط براي سيستم عامل هاي خانواده لينوكس و يونيكس كاربردي بودند. امروز مي خواهيم به نوعي از پورت اسكن در توسينسو بپردازيم كه تقريبا بر روي تمامي سرورها و سيستم عامل ها قابل اجرا است.
در اين نوع اسكن كه به عنوان اسكن مخفي يا Stealth هم معروف است فقط و فقط يك Frame از نوع TCP بر روي يك پورت ارسال مي شود ، هيچ فرآيند TCP Handshaking اضافه يا اطلاعات انتقالي Packet اضافه اي در اين نوع اسكن ارسال نمي شود و فقط يك در اصطلاح Single Frame براي هدف ارسال مي شود تا پاسخي كه داده مي شود تجزيه و تحليل شود.
همانطور كه در اين نوع اسكن يك Frame ارسال مي شود انتظار دريافت فقط يك Frame از مقصد و نه بيشتر از آن مي رود. نام ديگر اين نوع اسكن Half-Open Scan يا اسكن نيمه باز است !! يعني اينكه فرآيند TCP Handshake در اين نوع اسكن كامل نمي شود به محض اينكه تشخيص داده شود كه وضعي يك پورت چگونه است به Session اي كه هنوز كامل نشده است خاتمه داده مي شود.
اين نوع تكنيك Port Scanning به عنوان SYN Scan يا TCP SYN Scan نيز شناخته مي شود زيرا فقط و فقط يك Packet از نوع SYN در فرآيند TCP Handshake ارسال مي كند و تمام !!! اين سرعت عمل و اينكه ارتباط اصلا برقرار نمي شود كه تحليلي بر روي ترافيك آن انجام شود براي اسكنر خوب است زيرا اصلا ارتباطي كامل نمي شود كه بخواهد كسي آن را تحليل كند. اين نوع اسكن كردن به همين دليل اسكن مخفي يا Stealth Scan هم گفته مي شود چون ارتباطي برقرار نمي شود كه ترافيك آن شناسايي شود ! يا شناسايي آن بسيار دشوار است.
البته فرآيند TCP Three-Way Handshake در Stealth Scan پياده سازي مي شود با اين تفاوت كه در آخرين مرحله از Handshake به جاي اينكه تاييده داده شود كه ارتباط برقرار شود ، اسكنر RST ارسال مي كند و ارتباط را Reset مي كند تا ادامه مراحل انجام نشود. فرآيند كلي اين نوع اسكن به اين شكل است كه ابتدا اسكنر يك بسته اطلاعاتي تكي بصورت SYN براي سرور ارسال مي كند كه بر روي پورت مورد نظري كه مي خواهيم اسكن كنيم ارسال مي شود.
سرور بعد از اينكه بسته SYN را دريافت كرد ، در صورتيكه سرويسي بر روي پورت مورد نظر ارائه كند براي اسكنر بسته SYN//ACK ارسال مي كند يعني آماده برقراري ارتباط است و اين يعني پورت مورد نظر باز يا Open است. در همين حين اسكنر به جاي اينكه براي سرور ACK ارسال كند برايش RST ارسال مي كند و همانجا Connection را مي بندد. اما اگر سرور در برگشت RST ارسال كند يعني پورت مورد نظر بر روي سرور Closed است. اين نوع اسكن تقريبا براي روي همه سيستم عامل ها قابل استفاده است.
انواع اسكن پورت قسمت 4 : پورت اسكن ليستي يا List Scan چيست؟
در يك List Scan فرآيند شناسايي سيستم هاي روشن و فعال در شبكه بصورت كاملا غير مستقيم انجام مي شود. در اين نوع اسكن شما مي توانيد ليستي از Host هاي موجود در شبكه را بدون اينكه حتي آنها را ping كنيد يا به آنها متصل شويد به دست بياوريد و ليستي از IP ها و يا Hostname هاي آنها را بدست بياوريد. اين نوع اسكن نيز طبيعتا در دسته بندي پورت اسكن قرار نمي گيرد و فقط براي شناسايي سيستم هاي روشن در شبكه به كار مي رود.
ليستي كه در ابتدا در اين نوع اسكن به دست مي آيد با توجه به اينكه هيچگونه ارتباط مستقيمي با سيستم هدف برقرار نكرده است در قالب Not Scanned يا اسكن نشده به نمايش گذاشته مي شود. بصورت پيشفرض با استفاده از مكانيزم Reverse DNS نرم افزاي مثل Nmap سعي مي كند كه اسم ها را به IP ها تبديل كند و برعكس ... در زير نمونه اي از خروجي يك List Scan را مشاهده مي كنيد :
دقت كنيد كه List Scan يك پيش زمينه براي انجام يك Active Scan است ، اگر شما آدرسي را اشتباه وارد كرده باشيد تشخيص مي دهد و به شما اعلام مي كند. اين نوع اسكن كارآمدي زيادي ندارد اما برخي اوقات براي انجام و تبديل اسم به IP و برعكس با استفاده از DNS مي تواند مفيد باشد.
انواع اسكن پورت قسمت 5 : پورت اسكن كريسمس يا Xmas Scan چيست؟
يكي از انواع تكنيك هاي Port Scanning معروف كه به صورت ويژه براي شناسايي پورت هاي باز در سيستم عامل هاي خانواده لينوكس كاربرد دارد Xmas Scan يا Christmas Scan است . دليل نامگذاري اين نوع پورت اسكن به نام كريسمس حالت خاص Flag گذاري بر روي آن است كه به شكل 00101001 ديده مي شود و اين بايت Flag شبيه ساختار درخت كريسمس تشبيه مي شود.
در اين نوع اسكن از Flag هاي URG,PUSH و FIN براي شناسايي پورت هاي سيستم هدف استفاده مي شود. اگر پورت بسته باشد سيستم هدف يك RST به سمت مبدا ارسال مي كند . يكي از مهمترين مواردي كه از اين نوع اسكن استفاده مي شود شبكه هايي با سيستم هاي زياد است كه مي خواهيم سيستم هاي روشن را به همراه سرويس هايي كه بر روي آنها وجود دارند به يكباره شناسايي كنيم.
در برخي اوقات در اين تكنيك همه TCP Flag ها قرار داده مي شوند و به همين دليل سيستم هدف به يك بار Hang مي كند !! سيستم هدف زمانيكه بصورت همزمان سه Flag بصورت URG-PSH-FIN دريافت كند گيج مي شود. البته دقت كنيد كه اين نوع اسكن صرفا بر روي سيستم هايي قابل استفاده است كه مكانيزم كاري آنها مبتني بر RFC 793 باشند.اين روش اسكن كردن همانطور كه عنوان كرديم بصورت ويژه براي خانواده يونيكس و به ويژه BSD ها طراحي شده است و بر روي خانواده Windows NT هيچ كاربردي ندارد.
اگر شما بصورت اشتباه اين نوع اسكن را بر روي خانواده ويندوز انجام بدهيد به شما همه پورت هاي مقصد را باز نشان مي دهد و به همين دليل ممكن است فرآيند تست نفوذ شما كاملا اشتباه انجام شود. بصورت خلاصه اگر شما Xmas Scan بر روي سيستم هدف انجام داديد و سيستم مقصد در پاسخ هيچ عكس العملي نشان نداد يعني پورت مورد نظر باز است و اگر RST ارسال كرد يعني پورت مورد نظر بسته است. از مزاياي اين روش دور زدن IDS ها و IPS ها است و در عين حال از معايت آن كار نكردن در محيط هاي ويندوزي است.
انواع اسكن پورت قسمت 6 : پورت اسكن FIN Scan چيست؟
همانطور كه مي دانيد در فرآيند Port Scanning فرآيند Three-way Handshake اي كه TCP انجام مي دهد بسيار كاربردي است. بنابراين زمانيكه صحبت از FIN Scan مي شود طبيعتا شما ناخودآگاه بايد به اين فكر بيوفتيد كه منظور Flag اي از TCP به شكل Finish است كه براي پايان دادن به يك TCP Session استفاده مي شود.
در اين نوع Port Scann كه از حماقت محض فايروال هاي قديمي و Stateless استفاده مي شود. در واقع زمانيكه صحبت از FIN Scan مي شود نرم افزار Port Scanner ما يك بسته اطلاعات با Flag اي به شكل FIN به معني پايان Session براي فايروال يا Host مقصد ارسال مي كند ، اگر هيچ پاسخي دريافت نشد به منزله Open بودن پورت است و اگر بازگشت بصورت RST//ACK بود يعني پورت سرور مورد نظر در حالت Closed قرار دارد.
هر چند اين روش از اسكن كردن در نسخه هاي امروزي سيستم عامل ويندوز ديگر جوابگو نيست اما همچنان براي اسكن كردن سرويس هايي كه پشت فايروال هاي درپيتي Stateless هستند پاسخگو است. وقتي فايروال هاي احمق FIN Flag را مي بينند با خودشان فكر مي كنند كه احتمالا يك Session اي از قبل وجود داشته است و الان مي خواهد پايان بپذيرد بنابراين اجازه عبور بسته اطلاعات را مي دهند !! امروزه اينگونه اسكن نيز زياد جوابگوي كار ما نيست و با انواع Port Scan هاي پيشرفته تر جايگزين شده است اما به هر حال براي حملات DOS نيز مي توان از اين نوع Scan استفاده كرد.
انواع اسكن پورت قسمت 7 : پورت اسكن TCP Idle Scan چيست؟
خوب تا اينجاي كار در توسينسو انواع مختلفي از تكنيك هاي پورت اسكن را به شما عزيزان معرفي كرديم اما در همه اين تكنيك ها يك چيز مشترك بود ، همه اسكن ها مستقيما توسط سيستم مهاجم انجام مي شد و درصد شناسايي مهاجم در اين نوع اسكن ها بسيار بالا مي رفت هر چند كه مخفي كاري نيز انجام شده باشد در هر حال امكان شناسايي وجود دارد.
امروز مي خواهيم در خصوص پيچيده ترين و در عين حال باحال ترين نوع پورت اسكن در دنيا صحبت كنيم و آن چيزي نيست به جز Idle Scan ... در اين نوع اسكن در ساده ترين تعريف ممكن ، شما به هيچ عنوان بصورت مستقيم به سرور مقصد متصل نمي شويد كه درصدي احتمال شناسايي وجود داشته باشد !! شما كارتان را از طريق يك سيستم واسط انجام مي دهيد كه در اصطلاح امنيت و هك به اين سيستم قرباني كه اسكن از طرف آن ثبت و ضبط مي شود Zombie گفته مي شود.
توسط شخصي به نام Antirez طراحي و معرفي شد ، محقق و پژوهشگر حوزه امنيتي كه ابزار hping2 را نيز به دنيا معرفي كرد. از اين نوع پورت اسكن به عنوان پورت اسكن كاملا مخفي يا completely blind port scan نام برده مي شود. مهاجم در اين نوع اسكن كردن حتي يك بسته اطلاعاتي نيز به سمت هدف ارسال نمي كند كه درصدي احتمال شناسايي مهاجم وجود داشته باشد. اين Zombie ها هستند كه فرآيند پورت اسكن را در اين حالت انجام مي دهند و در هر مكانيزم Log برداري فايروال يا سيستم تشخيص نفوذ ، آدرس Zombie ها ثبت و ضبط خواهد شد.
يكي از دلايل محبوبيت اين نوع پورت اسكن در ميان هكرهاي كلاه سياه اين است كه مي توانند اسكن ها را از كامپيوترهاي Zombie اي انجام بدهند كه در دايره اعتماد يا Trust سرور مقصد قرار دارند و بنابراين خيلي ساده تر مي توان عمليات شناسايي را انجام داد.
برخلاف تكنيك هاي پورت اسكني كه تاكنون در توسينسو معرفي شده است ، Idle Scan بسيار بسيار پيچيدگي بيشتري دارد اما قرار نيست شما زياد درگير اين پيچيدگي ها شويد و صرف اينكه متوجه باشيد مكانيزم كاري اين نوع اسكن به چه شكل است براي اين مقاله كفايت مي كند ، بصورت كلي فرآيند پورت اسكن توسط اين تكنيك به شكل زير مي باشد ، در ابتدا يك سري دانش اوليه براي ورود به اين نوع اسكن الزامي است :
-
يكي از روشهاي مرسومي كه باز بودن يك پورت TCP را تشخيص مي دهد ارسال يك بسته SYN براي برقراري ارتباط به پورت مورد نظر است. اگر سيستم هدف در پاسخ بسته SYN//ACK به منزله تاييد برقرار ارتباط را بازگشت داد يعني پورت مورد نظر باز است و اگر در پاسخ بسته RST براي ريست كردن ارتباط ارسال كرد پورت مورد نظر بسته است . اين مكانيزم در Idle Scan نيز وجود دارد و قبلا در توسينسو در قسمت SYN Scan كاملا تشريح شده است.
-
هر ماشيني كه بسته اطلاعاتي ناشناخته اي بصورت SYN//ACK دريافت كند با RST قطعا پاسخ خواهد داد. هرگونه RST بي مورد در فايروال ها ناديده گرفته مي شود .
-
هر بسته اطلاعاتي از نوع IP در اينترنت براي خودش داراي يك Fragment Identification Number يا IP ID مي باشد كه شناسه منحصر به فرد آن سيستم يا بسته اطلاعاتي نيز خواهد بود. با توجه به اينكه اكثر سيستم عامل هاي امروزي از مكانيزم افزايش مقدار IP ID در ارسال بسته هاي اطلاعاتي خودشان استفاده مي كنند ، با شنود كردن IPID هاي سيستم هاي قرباني مي توان تعداد بسته هاي اطلاعات و زمان و ساير اطلاعاتي از اين قبيل را بدست آورد و در Idle Scan ما از اين IPID براي اسكن كردن واسط استفاده مي كنيم.
-
خوب حالا با توجه به سه نكته گفته شده در بالا ، اين امكان وجود دارد كه يك مهاجم با استفاده از IPID يك سيستم واسط قرباني ، يك ماشين ديگر را هدف اسكن كردن قرار بدهد ، اما فرآيند فني Idle Scan نيز قابل تامل است ، بصورت كلي ، فرآيند Idle Scan يك فرآيند سه مرحله اي است كه شامل همه مراحل براي اسكن كردن هر پورت بصورت مجزا مي باشد ، يعني براي اسكن كردن ده عدد پورت ، ده بار بايد فرآيند زير انجام شود كه به شكل زير مي باشد :
-
بايد بر روي سيستم قرباني Zombie به دنبال IP ID گشت و آن را ثبت كرد.
-
از طرف سيستم Zombie به سمت سيستم قرباني بر روي پورت مورد نظر يك بسته SYN ارسال كرد. بر حسب وضعيت پورت مورد نظر كامپيوتر هدف ممكن است باعث شود كه IP ID بعدي اضافه شود يا نيازي به اضافه كردن آن نباشد و بدون تغيير بماند.
-
مجددا به دنبال IP ID جديد سيستم Zombie مي گرديم و آن را ثبت مي كنيم. براي بررسي كردن وضعيت پورت IP ID جديد را با IP ID قديمي مقايسه مي كنيم و متوجه مي شويم كه وضعيت پورت مورد نظر چگونه است زيرا سيستم قرباني درخواست را به سمت Zombie هدايت كرده است. اين فرآيند براي همه پورت هاي مورد نظر مجددا از مرحله اول انجام مي شود.
-
تا اينجاي كار هر نوع Port Scan و روشهاي مختلف اسكن كردن سيستم مقصدي كه بررسي كرديم مبتني بر پروتكل هاي TCP بود و فرآيند سه مرحله اي كه انجام مي شد. اما در UDP Scanning يا بهتر بگوييم UDP Raw ICMP Port Unreachable Scanning ما به جاي TCP از UDP براي اسكن كردن استفاده مي كنيم . يكي از مشكلات مهمي كه هر متخصص در اين خصوص بايد بداند اين است كه UDP يك پروتكل Connectionless است يعني زياد خودش را درگير گرفتن تاييده يا Acknowledge در سيستم مقصد نمي كند.
به همين دليل ممكن است فرآيند پورت اسكن با استفاده از UDP چندان قابل اعتماد نباشد. روش اسكن كردن با UDP به نسبت اسكن هاي TCP دشوارتر است. شما يك Packet را به سمت مقصد ارسال مي كنيد اما نمي توانيد مطمئن شويد كه بسته مورد نظر شما به مقصد رسيده است يا خير ؟ يا اينكه سيستم مقصد روشن است يا خاموش است يا فيلتر شده است !!
پس از اينكه اين فرآيند انجام شد ، IP ID مربوط به Zombie بايستي يك يا دو عدد زياد شده باشد. اضافه شدن يك عدد به اين معني است كه Zombie بسته اطلاعاتي خاصي ارسال نكرده است و از آن Packet اي در واقع خارج نشده است ، مگر پاسخ آن به كامپيوتر مهاجم كه ما هستيم ( اسكنر ) . اين كمبود بسته اطلاعاتي به منزله بسته بودن پورت مورد نظر است ، يعني كامپيوتر هدف كه اسكن شده است به سمت سيستم Zombie يك بسته ريست فقط ارسال كرده است كه از طرف Zombie هم Ignore شده است.
اما اگر عدد IP ID دو عدد زياد شده باشد به منزله باز بودن پورت مورد نظر است زيرا سرور مقصد به سمت سيستم Zombie بسته اطلاعاتي بازگشتي داده است و درخواست برقراري ارتباط داده است. البته اين ساختار بسيار ساده تشريح شده است و در خصوص Idle Scan بحث هاي زيادي مي توان انجام داد. فقط به اين مسئله نيز دقت كنيد كه Zombie چيزي نيست كه هميشه در دسترس باشد و شما بايد يك سيستم Zombie براي اينكار از قبل آماده داشته باشيد يا با استفاده از اسكريپت هاي خاص اين قرباني هاي واسط را پيدا كنيد.
انواع اسكن پورت قسمت 8 : پورت اسكن UDP Scan چيست؟
-
تا اينجاي كار هر نوع Port Scan و روشهاي مختلف اسكن كردن سيستم مقصدي كه بررسي كرديم مبتني بر پروتكل هاي TCP بود و فرآيند سه مرحله اي كه انجام مي شد. اما در UDP Scanning يا بهتر بگوييم UDP Raw ICMP Port Unreachable Scanning ما به جاي TCP از UDP براي اسكن كردن استفاده مي كنيم . يكي از مشكلات مهمي كه هر متخصص در اين خصوص بايد بداند اين است كه UDP يك پروتكل Connectionless است يعني زياد خودش را درگير گرفتن تاييده يا Acknowledge در سيستم مقصد نمي كند.
به همين دليل ممكن است فرآيند پورت اسكن با استفاده از UDP چندان قابل اعتماد نباشد. روش اسكن كردن با UDP به نسبت اسكن هاي TCP دشوارتر است. شما يك Packet را به سمت مقصد ارسال مي كنيد اما نمي توانيد مطمئن شويد كه بسته مورد نظر شما به مقصد رسيده است يا خير ؟ يا اينكه سيستم مقصد روشن است يا خاموش است يا فيلتر شده است !!
اما در بين همه پروتكل هايي كه بصورت UDP كار مي كنند ICMP اين امكان را به شما مي دهد كه باز يا بسته بودن پورت را تشخيص بدهيد. اگر شما يك بسته UDP از نوع ICMP بدون هيچگونه درخواست سرويس خاصي ( بدون درخواست Application خاصي ) به سمت سرور بر روي يك پورت خاص سرور مقصد ارسال كنيد ، IP Stack در پاسخ به شما پيام ICMP port unreachable packet را صادر خواهد كرد يعني پورت مورد نظر باز است.
اگر در پاسخ به شما يك خطاي ICMP مشاهده شد ، پورت مورد نظر بسته است و اگر سرور مورد نظر هيچ اطلاعي در خصوص باز بودن يا بسته بودن پورت در اختيار شما قرار نداد در نتيجه پورت مورد نظر توسط فايروال فيلتر شده است. اين اتفاق براي اين رخ مي دهد كه پورت هاي باز مجبور نيستند در پاسخ به يك درخواست تاييده بدهند و پاسخ برگردانند و همچنين پورت هاي بسته نيز مجبور نيستند كه پيام خطا ارسال كنند .
زمانيكه شما يك بسته اطلاعاتي را به سمت يك پورت UDP ارسال مي كنيد بيشتر سيستم ها در پاسخ خطاي ICMP Port Unreachable را پاسخ مي دهند. بنابراين شما مي توانيد متوجه شويد كه پورت مورد نظر باز نيست. با توجه به اينكه بسته هاي UDP اهميتي به خطاها نمي دهند ، اسكنرهاي UDP مجددا بسته اطلاعاتي مورد نظر را مرتب ارسال مي كنند تا مطمئن شوند كه بسته به مقصد رسيده است .
اسكنرهاي UDP بسته هايي كه از بين رفته اند در حين انتقال را نيز به عنوان پورت هاي باز تشخيص مي دهند كه يكي از نقاط ضعف مهم اين نوع اسكن مي باشد. علاوه بر اين اين تكنيك اسكن كردن بسيار كند است و اين محدوديت زمان نيز به دليل محدوديت هاي خطاهاي ICMP اي است كه در اين پروتكل وجود دارد. سيستم مقصد براي تشخيص پورت هاي بسته يا unreachable بايستي به سوكت ICMP خام دسترسي داشته باشد. بسياري از تروجان ها و كدهاي مخرب از پورت هاي UDP براي انتقال داده هاي خودشان استفاده مي كنند.
انواع اسكن پورت قسمت 9 : پورت اسكن ICMP Echo Scan چيست؟
اين نوع از اسكن كردن در دسته بندي پورت اسكن ها در نرم افزارهاي مختلف قرار نمي گيرد و شما به عنوان يك متخصص امنيت شبكه بايد بدانيد كه ICMP Echo Scanning براي شناسايي سيستم هاي روشن در شبكه استفاده مي شود ، اينكار توسط Ping كردن تمامي ماشين هايي كه در محدوده آدرس تعريف شده وجود دارند انجام مي شود. در اين نوع حمله از روش جالبي استفاده مي شود ، مهاجم در بسته هاي ICMP را به سمت آدرس شبكه يا Broadcast Address شبكه مورد نظر ارسال مي كند و از اين طريق تنها يك درخواست به اين آدرس باعث مي شود كه درخواست Echo Request به همه سيستم هاي موجود در آن Subnet ارسال شود.
-
سيستم هايي كه در شبكه روشن باشند با استفاده از Echo Reply به درخواست مهاجم پاسخ مي دهند و اعلام موجوديت مي كنند.مكانيزم اسكن ICMP Echo فقط در سيستم عامل هاي خانواده لينوكس و يونيكس و البته خانواده BSD قابل استفاده است.
در اين خانواده از سيستم عامل ها پشته پروتكل TCP/IP به گونه اي طراحي شده است كه به Echo Request هايي كه از سمت آدرس Broadcast در شبكه دريافت مي شود سيستم عامل پاسخ مي دهد. در سيستم عامل هاي خانواده ويندوز پشته پروتكل TCP/IP به گونه اي طراحي شده است كه به اين درخواست ها از آدرس Broadcast شبكه بصورت پيشفرض پاسخ نمي دهد به همين دليل Echo Scan در خانواده ويندوز چندان كاربردي ندارد.
-
همانطور كه قبلا هم اشاره كرديم ، ICMP Echo Scan به عنوان يك تكنيك Port Scanning بكار نمي رود چون هيچگونه پارامتري و اثري از پورت در نحوه شناسايي سيستم عامل هاي شبكه وجود ندارد. تنها كاربرد آن شناسايي سيستم عامل هاي فعال در شبكه است. شما براحتي مي توانيد با ابزاري مثل Zenmap اين نوع اسكن را انجام بدهيد.
پارامتر Latency يا تاخير در خروجي Zenmap به معني مدت زماني است كه بسته توسط سيستم عامل دريافت شد و پاسخ داده شد است.Echo Scan اگر طبيعتا شما پروتكل ICMP را بر روي سيستم ها بسته باشيد امكان شناسايي چيز خاصي را ندارد ، با توجه به اينكه اكثر سيستم هاي موجود در شبكه اين پروتكل را باز مي گذارند بعضا مي تواند به شناسايي سيستم هاي لينوكسي روشن در شبكه كمك كند ، اين نوع اسكن هر چند زياد كاربردي ندارد اما بعضا در مواردي كه نياز است كه سريعتر سيستم ها شناسايي شوند مي تواند مفيد باشد.
انواع پورت اسكن قسمت 10 : Decoy Scan چيست؟
همانطور كه قبلا در توسينسو بحث كرديم Port Scan كردن پشت فايروال ها و IDS ها به مراتب سخت تر از روشهاي ديگر پورت اسكن است . قبلا در خصوص تكنيك Packet Fragmentation مطلبي را منتشر كرده ايم اما امروز در خصوص روش ديگري به نام Decoy Scan صحبت خواهيم كرد.
اين روش پورت اسكن چندان جذاب و جالب به نظر نمي رسد ، تمامي Packet ها به ظاهر از سمت ماشين اسكنر ارسال مي شوند اما آدرس هاي Source كه در بسته هاي اطلاعاتي ارسال مي شوند بصورت Spoof يا جعل شده ارسال مي شوند ، به زبان ساده تر پاسخ به بسته هاي اطلاعاتي ارسال شده به سمت كامپيوتر اسكنر برگشت داده نمي شود !!
-
اين يكي از دلايلي است كه اين روش را چندان جذاب نمي كند براي اينكه وضعيت پورت ها به سختي شناسايي مي شوند. در واقع اين تكنيك بيشتر از اينكه نقش پورت اسكنر را داشته باشد براي جلوگيري از كردن از شناسايي آدرس IP مهاجم يا اسكنر استفاده مي شود تا در لاگ هاي فايروال به اشتباه آدرسهاي متفاوت ثبت شوند.
آدرسهاي IP كه در اين نوع پورت اسكن ( بهتر هست كه ديگه اسم پورت اسكن روي اين روش گذاشته نشه ) به عنوان Host قرار داده مي شود بصورت تصادفي از Subnet اي كه سرور هدف قرار دارد يا Subnet اي كه ماشين مهاجم در آن قرار دارد بر روي Source قرار مي گيرند. اين نوع پورت اسكن در واقع روشي براي گمراه كردن فايروال ها براي لاگ برداري از Session ها است. در زير نمونه از اين نوع اسكن را در نرم افزار nmap مشاهده مي كنيد :
-
nmap -D
همانطور كه در دستور بالا مشاهده مي كنيد بعد از پارامتر D كه نماد Decoy است آدرس هاي IP بصورت تصادفي قرار مي گيرند.
انواع پورت اسكن قسمت 11 : TCP Connect Scan چيست؟
اسكن وانيلي چيست؟ Full Open Scan چيست؟ TCP Connect Scan چيست؟ به عنوان يك متخصص در حوزه امنيت اطلاعات شما بايد بعد از اين بدانيد كه قابل اعتمادترين نوع پورت اسكن از نوع TCP ، TCP Connect Scan يا Full Open Scan است كه بعضا ما آن را به عنوان Vanilla Scan هم مي شناسيم. در اين نوع تكنيك پورت اسكن ، اسكنر يك درخواست برقراري ارتباط با سرور مقصد بر روي پورت مورد نظرش ارسال مي كند ، اين درخواست توسط سيستم TCP Connect اسكنر ارسال مي شود .
در طرف مقابل اگر سرور هدف بر روي پورت درخواستي در حالت Listening باشد فرمان TCP Connect موفقيت آميز خواهد بود ، به اين معني كه پورت مورد نظر باز است ، در غير اينصورت پورت در دسترس نيست و سرويسي بر روي آن ارائه نمي شود.
-
در فرآيند TCP Three-way Handshake كلاينت به سمت سرور يك SYN Flag ارسال مي كند كه توسط سرور دريافت و توسط يك SYN+ACK Flag پاسخ داده مي شود ، در بازگشت كلاينت توسط يك ACK Flag به منزله كامل شدن Connection است. در واقع در يك Connection كامل ارتباطي TCP هر دو طرف ارتباط را برقرار مي كنند و در حالت استاندارد هر دو طرف هم ارتباط را پايان مي دهند.
-
در اسكن وانيلي يا Vanilla Scan زمانيكه فرآيند TCP Handshake كامل شد ، كلاينت بصورت يكطرفه به ارتباط پايان مي دهد و اگر ارتباط برقرار نشده باشد ماشيني كه مورد اسكن قرار گرفته است بصورت ناخواسته دچار يك حمله DOS ساده مي شود كه اينكار باعث مي شود شما بتوانيد به عنوان اسكنر يك Socket جديد را ايجاد يا فراخواني كنيد.
به همين دليل امكان اسكن كردن پورت هاي جديد براي سرويس هاي جديد وجود خواهد داشت. اين فرآيند تا زمانيكه حداكثر پورت هاي موجود بر روي سيستم هدف اسكن شوند قابل ادامه است. اگر پورت مورد نظر بر روي سرور بسته باشد ، سرور با ارسال يك RST+ACK Flag كه براي Reset كردن Connection است پاسخ مي دهد و كلاينت نيز در همين هنگام يك RST Flag ديگر براي اتمام ارتباط ارسال خواهد كرد. اينكار نيز توسط همان TCP Connect اي كه فراخواني شده است انجام مي شود.
ايجاد كردن Connect هاي مجزا ( فراخواني تابع Connect ) براي هر پورت موجود باعث مي شود كه ناخودآگاه فرآيندپورت اسكن شما كند شده و مدت زمان زيادي را از شما بگيرد ، به ويژه اينكه لينك اينترنت شما هم ضعيف باشد. مهاجم در چنين مواقعي مي تواند سرعت اسكن كردن خودش را با استفاده از موازي كاري سوكت ها زياد كند يعني بصورت همزمان بر روي چندين سوكت درخواست ارسال كند. اگر سرور مقصد مكانيزم بلاك كردن يا مسدود كردن I/O هاي زياد را پياده سازي نكرده باشد ، مهاجم مي تواند بصورت همزمان همه سوكت هاي خودش را تجزيه و تحليل و نتيجه را مشاهده كند.
از معايب اين نوع اسكن كردن مي توان به سهولت شناسايي و فيلتر كردن آن اشاره كرد. با توجه به اينكه در اين نوع از پورت اسكن رسما فرآيند TCP Handshake كامل مي شود و Session ارتباطي برقرار و سپس قطع مي شود ، كليه Session ها در فايروال لاگ برداري و قابل رديابي مي شوند و همين امر مي تواند باعث شناسايي و پيگرد مهاجم شود. اما از طرفي با توجه به اينكه دقت اين نوع اسكن بسيار بالا است مي توان براي فرآيند هاي اسكن كردن قانوني روي آن حساب ويژه اي باز كرد.لازم به ذكر است كه اين نوع اسكن بر روي هرگونه سيستم عاملي قابل استفاده است.
انواع اسكن پورت قسمت 12 : تكنيك Packet Fragmentation چيست؟
Packet Fragmentation چيست؟ خوب تا اينجاي كار در توسينسو انواع و اقسام روش هاي مختلف Port Scanning را با هم ياد گرفته ايم و مفاهيم هر كدام را متوجه شده ايم . اما هميشه هم روشهاي گفته شده كارايي لازم را ندارند به ويژه زمانيكه شما در پشت يك فايروال قرار داشته باشيد فرآيند Port Scan بسيار دشوارتر خواهد بود. از اين جهت روش هاي متنوع تري براي پورت اسكن پشت فايروال ها و سيستم هاي تشخيص نفوذ وجود دارد كه يكي از جالبترين و جذاب ترين آنها روشي به نام Fragmentation Scanning يا Packet Fragmentation است.
-
همانطور كه مي دانيد زمانيكه شما مي خواهيد يك Port Scan انجام بدهيد يك بسته اطلاعاتي يا Packet بصورت كامل به سيستم مقصد ارسال مي شود تا بررسي هاي لازم بر روي پورت ها را انجام بدهد. اما فايروال ها و سيستم هاي تشخيص نفوذ براحتي اين نوع بسته هايي كه براي اسكن كردن يا مصارف ديگر هستند را شناسايي مي كنند و بعضا ممكن است عمليات اسكن شما ناموفق باشد.
تكنيك Packet Fragmentation همانطور كه از نامش هم پيداست يعني يك بسته اطلاعاتي به جاي اينكه بصورت كامل براي هدف حمله ارسال شود كه ممكن است پشت يك IDS يا فايروال باشد ، بصورت تكه تكه شده براي هدف ارسال شده و بعد سرهم بندي مي شود و نتيجه اعلام مي شود.
در واقع اين تكنيك از پورت اسكن روش چندان جديدي نيست و با دستكاري كردن روش هاي قبلي پورت اسكن به نتيجه رسيده است. شما در اين روش TCP Header يك بسته اطلاعاتي IP را به قطعات كوچكتر تقسيم بندي مي كنيد به طوريكه فايروال هاي Packet Filtering توانايي تشخيص يك Packet كامل را نداشته باشند و به همين دليل امكان شناسايي اين مورد بسيار سخت مي شود.
اما در خصوص استفاده كردن از اين نوع پورت اسكن دقت كنيد ، برخي از نرم افزارها در نحوه برخورد با اينگونه بسته هاي اطلاعاتي ريز و تكه تكه شده مشكل دارند و نمي توانند اين نوع ترافيك را تجزيه و تحليل كنند. براي مثال برخي از نرم افزارهاي Sniffer ممكن است به محض دريافت كردن چنين بسته هاي اطلاعاتي هنگ كنند و دچار اختلال شوند.
اما خوب سيستم عامل ها و فايروال هاي تحت لينوكس معمولا مشكل خاصي با اين نوع Fragment Packet ها ندارند و حتي در سيستم عامل هاي خانواده لينوكس Option اي به شكل CONFIG_IP_ALWAYS_DEFRAG به همين منظور وجود دارد.
اما بسياري از زيرساختارهاي شبكه نيز با دريافت چنين بسته هايي كارايي خود را از دست مي دهند يا كمي در كارايي شبكه آنها اختلال ايجاد مي شود. اين تكنيك بصورت ويژه و اختصاصي براي پورت اسكنرها طراحي شده است شما مي توانيد در پورت اسكنري مثل nmap با استفاده از سويچ f مشابه مثال پايين استفاده كنيد :
nmap –f 192.168.1.5 < Other Options >
در مثال بالا ما به nmap مي گوييم كه با استفاده از packet هاي fragment شده بسيار كوچك اسكني از نوع FIN و SYN را بر روي هدف انجام بدهد. به اين نكته توجه كنيد كه روش فوق مي تواند بسيار كاربردي باشد با توجه به اينكه بسياري از مديرهاي شبكه بر روي فايروال هاي خودشان براي بالا بردن كارايي سيستم قابليت packet reassembly را غيرفعال مي كنند چون پردازش CPU فايروال را بالا مي برد و به همين دليل باعث مي شود كه بتوانيم پشت فايروال را اسكن كنيم .
در سيستم هاي تشخيص نفوذي مثل snort هم پيشفرض قابليت fragmentation reassembly غيرفعال شده است. البته طبيعتا در ادامه دستور مورد نظر Option هاي مختلفي كه مي توانيم براي اين دستور استفاده كنيم را اضافه خواهيم كرد اما پارامتر f در اينجا به معني fragment كردن اسكن است.
برچسب: , آموزش هك ،آموزش هك قانونمند،آموزش CEH ،آموزش سكيوريتي پلاس،آموزش Security،آموزش امنيت شبكه،
ادامه مطلب