انواع حملات پسورد در هک و نفوذ ( Password Cracking Attacks )

در این مقاله میخوایم به بررسی انواع حملات رمزنگاری/پسورد و توضیح اونها بپردازیم تا نسبت به دسته بندی اون حمله شما بدونید از چه ابزاری استفاده کنید.

حملات رمزنگاری ، به چند دسته تقسیم میشن :

1 . ما میتونیم مستقیم به الگریتم حمله کنیم که در اکثر مواقع این روش اصلا کاربردی نیست و وقت گیر هست و علم بالایی میخواد

2. حمله به نحوه پیاده سازی این پروتوکول ها خیلی مرسومه که ما هم زیاد به این قسمت کار نداریم

3. قسمتی که ما کار داریم ، حمله به متن های ورودی و خروجی یک الگریتم هست ، یعنی هدفمون کلید و متن Plaintext و متن Ciphertext ایه که توسط یه الگریتم استفاده میشه.

# من هرجا نوشتم P منظورم Plaintext و هر وقت نوشتم C یعنی Ciphertext 

1) در Known Plaintext only Attack (KPA) : مهاجم فقط یه P داره و C متناظرشو ، فقط همین دوتا ، مثلا : 

123->202cb962ac59075b964b07152d234b70
123->F9C3746B8AF2FF60B09D99F20BAC3F0C


مهاجم فقط خط اولو داره (مثلا) یا مهاجم فقط مثال دومو داره ، P که عدد 123 هست و C که عبارت رمز شده اون هست ، در این مورد معمولا الگریتم هم پیدا نیس ولی ما میتونیم اونو پیدا کنیم ولی هدف بیشتر بدست اوردن کلیده (در این دو مثال من در اولی ، با یه الگریتمی عدد123 رو هش کردم و در عبارت دوم امدم و عدد 123 رو با یه کلیدی تبدیلش کردم به یه عبارت رمز شده) حالا هکر باید در مثال اول الگریتمشو پیدا کنه که مثلا میره همرو تست میکنه میفهمه عه md5 عه و دومی هم میره تلاش میکنه میبینه عه الگریتم AES-EBC عه با این کلید "abcdefghijklmnop" با یه کلیدی که طولش 16 کاراکتره یعنی میشه 128 بیتی


2) در حالت known Ciphertext Only Attack (COA) : مهاجم فقط یه C داره و دیگه هیچی نداره :) 

SHA256 hash : 1f7285b0a2d5e803d550c3ff9e18c867f7cdde6ef187582a7dfdc8217d365553
Gqzq0pMzZDc=


مثلا الان یه چالش فارنزیک یا پنتست هست که شما میخوای به یه سیستم ورود کنی و پسورد اون سیستمو دامپ کردی و حالا میخوای کرک کنی ، مثلا این پسورد (این حالا از خانواده SHA بوده یا مثلا پسورد میتونه NTLM و... باشه) ، الگریتم ممکنه معلوم نباشه و اونم شاید مجبور شید پیدا کنید

یا در مثال بعدیش یه پیامیه و رسیده به ما که هیچ دیدی نداریم ، و میخوایم بازش کنیم (مثل پیام هایی که در جنگ ها ردوبدل میشه) مثلا در اینجا میدونیم که پیامی که ما داریم فرمت base64 هست ولی نمیدونم که الگریتمش des هست و کلیدش"abcdegf" و میخوایم این دوتارو پیدا کنیم


3) در Chosen Plaintext Attack (CPA) : ما میتونیم هر P ای که دوس داریمو بدیم و C نظیر و متقابلشو بگیریم ، در این روش الگریتم معلومه ولی کلید معلوم نیست و ما دنبال کلیدیم (یا مستقیم میخوایم به الگریتم حمله کنیم)

1:c4ca4238a0b923820dcc509a6f75849b
2:c81e728d9d4c2f636f067f89cc14862c
3:eccbc87e4b5ce2fe28308fd9f2a7baf3
12:c20ad4d76fe97759aa27a0c99bff6710
123:202cb962ac59075b964b07152d234b70
...
..
.
1:Vo5IelNXdtA=
2:3/PLtQjbT7g=
3:LK8BU9y0EWw=
12:PXgjzko+UtI=
123:pD8/onth+Fc=
1:y6X5W9eGklc=
2:nabFk0JtZLs=
3:3XVi1Gw4WzA=
12:RHNTRs4XIuo=
123:ViiG13HwpTw=
...
..
.


مثلا در اینجا ما امدیم و الگریتمو داریم که مثلا 5 تا مثال اول همگی با الگریتم هشینگ md5 هش شدن و ما هی تست میکنیم مقادیر مختلفی رو تا مثلا به Collision برسیم

یا مثلا در 10 تا مثال پایین ما میاییم و با الگریتم DES و با کلید های مختلف عبارت های مختلف رو رمز میکنیم و میرسیم به اینکه خب اون الگریتم چطوری عمل میکنه و .. مثلا 5 تا عبارت اول کلیدشون "a" بوده و 5 تای دوم "A" بوده

4) در  Chosen Ciphertext Attack (CCA) : مهاجم یه C داره و اونو میده و A رو میگیره (به هر روشی) و اینطوری به کلید میخواد پی ببره (این روش کم کارامد ترین روشه)

lvg8PFW22PA=

مثلا اینجا ما یه عبارت داریم و میخوایم به کلید این پی ببریم ، مثلا فرض کنید ما دونفر داریم که باهم دارن ارتباط برقرار میکنن ، فرد 1 داره با فرد 2 ارتباط برقرار میکنه ، در این حین یه فردی هم داره به این مکالمه گوش میکنه و امکان تغییر بسته هارو داره ، حالا در اینجا فرد 1 پیامی رو میفرسته به فرد 2 تحت این عنوان " Khoor Pb Iulhqg "و مهاجم که داره این وسط گوش میکنه میاد و پیامو به این تغییر میده " Helxo Op Jkfiens " (یه متن رندوم و شانسی) و وقتی پیام میرسه به فرد 2 و اون بازش میکنه میرسه به این "Khoar Rs Mnilhqv " و حالا اینجا  فرد دو میاد و تلفن میزنه به فرد 1 یا روی همون ارتباط بهش میگه این چه وضعشه ؟ منظورت از "Khoar Rs Mnilhqv " چیه ؟ بدون اطلاع به من کلیدو تغییر دادی؟

و مهاجم اینجا میفهمه که "Helxo Op Jkfiens" با کلید ناشناس میشه "Khoar Rs Mnilhqv"

Helxo Op Jkfiens - > Khoar Rs Mnilhqv

و میره مثلا در الگریتم سزار میبینه عه این کلیدش میشه 3 ، حالا میاد و پیام اصلی ای که بین اون دوتا رودبدل شده که "Khoor Pb Iulhqg" بوده رو با الگریتم سزار با کلید 3 رمز گشایی میکنه و میرسه به این " Hello My Friend "

این ساده ترین شکله ، دیگه خودتون گسترشش بدید

5 ) در این حالت Adaptive Chosen Plaintext/Ciphertext Attack (ACPA)(ACCA) : مهاجم یه P داره و با اضافه کردن جزء جزء یه سری چیزا به یه C میرسه و اینطوری میخواد به کلید یا و الگریتم پی ببره ، یا برعکس C رو داره و جز جز کم میکنه تا بره به P یا الگریتم و کلیدو پیدا کنه و بفهمه

مثال دقیق برای این موضوع ندارم و این نوع حمله برای الگریتم های قدیمی بیشتر کاربرد داشته

نکته : مثلا روش Brute Force معمولا برای KPA و COA کاربرد داره ، جایی که مهاجم میتونه صحت حدسو بررسی کنه

نکته : اگر براتون سوال پیش امده که فرق بین COA و CCA چیه ، باید بهتون بگم که در COA هدف معمولا P هست و در CCA هدف معمولا کلید هست

و....

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

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

حمله دیکشنری ( Dictionary Attack ) چیست؟ به زبان ساده

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

عادت به استفاده از کلماتی مثل نام دختر و پسر ، نام همسر ، نام سگ ، نام حیوان مورد علاقه ، نام کشور و نامهای مختلف باعث شده است که بسیاری از رمزهای عبوری که ما امروزه در بین عموم مردم می شناسیم ، عملا یک کلمه شناخته شده باشد.برای مطالعه بیشتر به مقاله  انواع حملات پسورد در هک و نفوذ ( Password Cracking Attacks )مراجعه کنید.

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


استفاده کردن از این مجموعه کلمات شناخته شده برای هک کردن و پیدا کردن پسورد به حمله دیکشنری یا Dictionary Attack معروف می باشد. الزاما حمله دیکشنری به معنی استفاده از واژه های یک دیکشنری نیست ، بلکه به مجموعه کلماتی که احتمال دارد افراد به عنوان پسورد استفاده کنند نیز دیکشنری در بحث هک و نفوذ گفته می شود.

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

اگر قرار باشد حملات پسورد ، احتمالات را هم در خودش جای بدهد دیگر به آن Dictionary Attack گفته نمی شود و در اصطلاح حمله Brute Force نامیده می شود. حمله دیکشنری بر روی پسوردهای قوی و پیچیده عملا کاربردی ندارد و فقط برای کرک کردن پسوردهای عامی و شناخته شده کاربرد دارد.

حمله دیکشنری چگونه انجام می شود؟

حمله دیکشنری با استفاده از یک لیست از پسوردهای ممکن برای هدف مورد نفوذ انجام می شود. هر بار یکی از کلماتی که در لیست وجود دارند با Hash موجود چک می شود تا در نهایت Hash ها برابر شوند و این یعنی اینکه پسوردها مشابه است.  معمولا رمزهای عبوری که به سادگی قابل حدس هستند در لیست پسوردهای این حمله قرار می گیرند برای مثال لیستی از پسوردهای معمول در دنیای فناوری اطلاعات مثل :

  • 123456
  • 654321
  • Qwerty123456
  • Password

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


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

لیست کلمه هایی که در حمله دیکشنری مورد استفاده قرار می گیرد بسیار متنوع و بزرگ می تواند باشد و به همین دلیل تست کردن بصورت دستی در این حمله وجود ندارد و معمولا با استفاده از ابزارهایی که حمله Brute Force را انجام می دهند ، این حمله انجام می شود.

حملاتی معمولا از جنس دیکشنری یا Brute Force هم بصورت آنلاین و هم بصورت آفلاین انجام می شود اما معمولا حملات آنلاین به دلیل Lock شدن یا قفل شدن فیلد ورود پسورد کمتر مورد استفاده قرار می گیرد. اما در حملات آفلاین معمولا فایل رمزنگاری شده پسوردها در اختیار مهاجم است و تا جاییکه ممکن باشد تست های تطبیق را می تواند با سرعت بالاتر انجام دهد.

راهکار جلوگیری از حملات دیکشنری چیست؟

  • کافیست رمز عبور قوی داشته باشید 
  • هر چند وقت یکبار رمز عبور را تغییر دهید
  • دفعات تست رمز عبور را به حداقل ممکن برسانید
  • بعد از 3 بار پسورد اشتباه حتما 15 دقیقه اکانت را قفل کنید

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

معرفی انواع Enumeration در حملات سایبری + آموزش و تکنیک ها

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

Enumeration در حملات سایبری به فرآیند جمع‌آوری اطلاعات دقیق درباره سیستم‌های هدف، مانند نام کاربران، سرویس‌ها، پورت‌ها و اشتراک‌های شبکه گفته می‌شود. انواع Enumeration شامل SNMP Enumeration (استخراج اطلاعات از پروتکل SNMP)، NetBIOS Enumeration (جمع‌آوری داده‌های مربوط به اشتراک‌های شبکه)، و DNS Enumeration (شناسایی زیردامنه‌ها و رکوردهای DNS) است. در آموزش هک، ابزارهایی مانند Nmap، Netcat و enum4linux برای انجام این حملات استفاده می‌شوند. هکرها از این تکنیک‌ها برای یافتن آسیب‌پذیری‌های سیستم هدف استفاده می‌کنند، درحالی‌که مدیران امنیتی می‌توانند با محدود کردن دسترسی‌ها، غیرفعال‌سازی سرویس‌های غیرضروری و نظارت بر لاگ‌ها از این حملات جلوگیری کنند.

نوع 1 : NetBIOS Enumeration چیست؟

اولین نوع از انواع Enumeration از طریق سرویس NetBIOS انجام می شود. اولین گامی که یک مهاجم برای Enumeration از یک سیستم ویندوزی برمی دارد سوء استفاده کردن از NetBIOS API است. همانطور که به عنوان یک متخصص امنیت می دانید NetBIOS مخفف کلمه های Network Basic Input Output System است و توسط شرکت IBM با همکاری شرکت های Sytek طراحی و تولید شده است.

  • بیشتر بخوانید : آموزش Enumeration و تکنیک های دریافت اطلاعات از هدف نفوذ

در واقع NetBIOS به عنوان یک API یا Application Programming Interface برای فراهم کردن دسترسی ساده تر به منابع شبکه مورد استفاده قرار می گرفت و بر همین مبنا برای استفاده در شبکه های داخلی LAN ساخته شد. ساختار نامگذاری NetBIOS با استفاده از یک رشته کاراکتر ASCII انجام می شود که هر دستگاه در شبکه بعد از گرفتن آدرس IP از آن استفاده می کند ، 15 کاراکتر ابتدای آن برای نامگذاری دستگاه و شانزدهیم کاراکتر به عنوان رکورد نام یا سرویس استفاده می شود. مهاجمین از NetBIOS برای Enumerate کردن موارد زیر استفاده می کنند :

  • بدست آوردن لیست کامپیوترهای شبکه که دارای منابع به اشتراک گذاری شده هستند
  • بدست آوردن Policy های اعمال شده در شبکه به همراه برخی پسوردها

اگر مهاجم سیستم عامل ویندوزی را پیدا کند که شماره پورت 139 آن باز باشد ، می تواند بررسی کند که آیا منابعی بر روی آن سیستم وجود دارند که بتوانیم آن را مشاهده و یا بعضا به آنها دسترسی داشته باشیم یا خیر ، البته به این موضوع توجه کنید که برای اینکه Enumerate شدن از طریق NetBIOS به درستی انجام شود مهم است که سرویس file and printer sharing فعال شده باشد.

با استفاده از تکنیک های زیر مهاجم می تواند به منابعی که بر روی سرور هدف وجود دارد دسترسی پیدا کند ، دو حمله کلی در این نوع Enumeration وجود دارد ، یا مهاجم دسترسی Read و Write بدست می آورد یا اینکه می تواند حمله Denial Of Service یا تکذیب سرویس بر روی سیستم هدف انجام دهد . در Enumerate کردن سرویس NetBIOS شما Code های مختلفی را باید بدانید ، با بازگشت داده شدن هر یک از این کدها شما می توانید متوجه شوید که چه سرویسی بر روی سرور هدف وجود دارند ، به این کدها در اصطلاح Suffix هم گفته می شود برای مثال :

  1. کد 00 مربوط به نام کامپیوتر یا Hostname مقصد است

  2. کد 01 مربوط به نام دومین یا Domain Name مقصد است

  3. کد 03 مشخص کنند این است که سرویس Messenger در سیستم مقصد فعال است

  4. کد 20 به معنی فعال بودن سرویس Server در مقصد است

  5. کد 1D به معنی Browser Name کامپیوتر مقصد است

  6. کد 1B به معنی تایم سرور یا PDC سرور کامپیوتر مقصد است

  7. ...

به این نکته توجه کنید که در IPv6 دیگر چیزی به نام NetBIOS وجود ندارد و این سرویس به کلی فعال نیست.

 

نوع 2 : LDAP Enumeration چیست؟

یکی از پرکاربردترین پروتکل های مورد استفاده در شبکه که امکان Enumeration را به ما می دهد LDAP است. LDAP مخفف کلمه های Lightweight Directory Access Protocol می باشد و این پروتکل در بزرگترین پایگاه داده های نگهداری و مجتمع سازی Object های شبکه مثل اکتیودایرکتوری مورد استفاده قرار می گیرد. LDAP یک پایگاه داده است و این پایگاه داده قابلیت پرسش و پاسخ یا Query گرفتن دارد.

می توان با استفاده از این روش دسترسی به داده های موجود در پایگاه داده دست پیدا کرد. ساختار دایرکتوری سرویس ها در دنیا یک ساختار استاندارد و سلسله مراتبی است و مثل ساختارهای سازمانی است که در اکثر شرکت ها و سازمان ها مشاهه می کنید. LDAP یکی از سرویس هایی است که قابلیت یکپارچه شدن با سرویس DNS و انجام Query های اسم خیلی سریع را دارد. LDAP بصورت معمول بر روی پورت 389 کار می کند و امکان Query گرفتن از خودش را بصورت پیشفرض ارائه می دهد .

 

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

LDAP Enumeration در واقع به فرآیندی گفته می شود که شما به عنوان یک مهاجم می توانید اطلاعات مربوط به username ها و ... را راه دور دریافت کنید . شما می توانید در شبکه های مبتنی بر اکتیودایرکتوری قابلیت Enumeration را غیرفعال کنید ، این قابلیت به مهاجم امکان Cache کردن اطلاعات بسیاری را بر روی سیستم خودش می دهد. اطلاعات مربوط به کاربران ، گروه ها ، share های شبکه ، ایمیل ها ، آدرس ها ، شماره تلفن ها و ... از این طریق قابل دسترس هستند.

نوع 3 : Email Enumeration چیست؟

بصورت معمول هر آدرس ایمیل از دو قسمت تشکیل شده است ، قسمت اول که نام کاربری یا Username است و قسمت دوم که نام دومین یا Domain Name است. در واقع همانطور که می دانید ساختار یک آدرس ایمیل بصورت username@domainname.com است .

 

تصور کنید که یک آدرس ایمیل به شکل m.nasiri@tosinso.com داریم در این ساختار مشخص است که m.nasiri یک نام کاربری و domainname.com آدرس دومین مورد استفاده است که با علامت @ از هم جدا شده اند. بعضا با استفاده از این ساختار می توان به نام کاربری های داخلی شبکه نیز پی برد و ساختار نامگذاری username ها را حدس زد. شما با استفاده از گرفتن اطلاعات کاربران می توانید ساختار ایمیل های هر کاربر در سازمان را تشخیص بدهید.

نوع 4 : Default Password Enumeration چیست؟

تجهیزاتی مثل سویچ و روتر و Access Point ها و حتی برخی نرم افزارها بصورت پیشفرض دارای پسورد هستند که این پسورد معمولا در هر نوع محصول تقریبا مشابه است. حتی بعضا برخی نرم افزارهای آنلاین نیز برای ایجاد دسترسی های پیشفرض از یک سری Username و Password پیشفرض استفاده می کنند. در بسیاری اوقات پیش می آید که کاربران بدون توجه به اینکه بایستی این رمزعبورها تغییر کند از همان رمز عبور پیشفرض نرم افزار بصورت همیشگی استفاده کرده و آنها را تغییر نمی دهند.

 

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

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

با دسترسی پیدا کردن یک مهاجم می توان از این حفره ها و آسیب پذیری های امنیتی در وهله اول برای Enumeration و در وهله دوم برای پیدا کردن دسترسی های بیشتر استفاده کرد. در زیر لیستی از وب سایت هایی که پسورد های پیشفرض را به شما معرفی می کنند را مشاهده می کنید :

http://www.defaultpassword.com/
https://cirt.net/passwords
http://www.routerpasswords.com/

نوع 5 : SMTP Enumeration چیست؟

قطعا می دانید که سرویس SMTP کاربرد ارسال ایمیل را بر عهده دارد و اگر این سرویس به درستی پیکربندی نشده باشد به دستوراتی که از طریق خط فرمان یا نرم افزارهای مربوطه ارسال می شوند پاسخ هایی می دهد که می تواند در فرآیند Enumeration مورد استفاده قرار بگیرند. EMTP Enumeration به شما اجازه می دهد که کاربران معتبر بر روی SMTP سرور را شناسایی کنید. اینکار با استفاده از دستورات Built-In ای که درون سرویس SMTP قرار گرفته اند امکانپذیر است. این سه دستور به شرح زیر هستند :

  1. دستور VRFY : این دستور برای بررسی اعتبار کاربران یا در اصطلاح بررسی Validity کاربران استفاده می شود
  2. دستور EXPN : این دستور برای بررسی آدرس های Delivery و همچنین لیست ایمیل ها استفاده می شود
  3. دستور RCPT TO : این دستور دریافت کنندگان یک پیام را تعریف می کند

STMP سرورهای مختلف بصورت متفاوتی اعتبار یا عدم اعتبار هر کدام از این دستورات پاسخ می دهند بنابراین با تجزیه و تحلیل کردن خروجی این دستورات می توان براحتی کاربران معتبر بر روی آن SMPT سرور را شناسایی کرد. همچنین مهاجم می تواند بصورت مستقیم با خود SMTP سرور نیز ارتباط بگیرد و دستورات را با استفاده از Telnet بر روی سرور مورد نظر ارسال کند که معمولا به شکل زیر انجام می شود ، برای مثال دستور زیر استفاده از SMTP VRFY با استفاده از Telnet بر روی یک SMTP سرور را نشان می دهد :

 

$ telnet 10.1.1.1
Trying 10.1.1.1
Connected to 10.1.1.1
Escape character ‘^]’.
220 NYmailserver ESMTP Sendmail 8.9.3
HEO
501 HELO requires domain address
HELO x
250 NYmailserver Hello [10.0.0.86] , please to meet you
VRFY Mohammad
250
Super-User <Mohammad.Nasiri@NYmailserver>
VRFY Hossein
550 Hossein… User unknown

 

حالا همان حالت را با دستور SMTP EPN تست می کنیم :

 

$ telnet 10.1.1.1
Trying 10.1.1.1…
Connected to 10.1.1.1.
Escape character is ‘^]’.
220 NYmailserver ESMTP Sendmail 8.9.3
HELO
501 HELO requires domain address
HELO x
250 NYmailserver Hello [10.0.0.86] , please to meet you
EXPN Mohammad
550 Super-User <Mohammad.Nasiri@NYmailserver>
EXPN Hossein
550 Hossein… User unknown

و در نهایت مثالی از خروجی دستور SMTP RCPT TO با استفاده از Telnet :

$ telnet 10.1.1.1
Trying 10.1.1.1 …
Connected to 1.1.1.1.
Escape character is ’^]’.
220 NYmailserver ESMTP Sendmail 8.9.3
HELO
501 HELO requires domain address
HELO x
250 NYmailserver Hello [10.0.0.86], pleased to meet you
MAIL FROM:Mohammad
250 Mohammad… Sender ok
RCPT TO:Ali
250 Ali…Recipient ok
RCPT TO:Hossein
550 Hossein… User unknown

نوع 6 : SNMP Enumeration چیست؟

قطعا اگر این مطلب را در مورد هک و امنیت مطالعه می کنید با کاربرد پروتکل SNMP آشنایی دارید اما بصورت خلاصه SNMP یک پروتکل لایه Application است که بصورت UDP کار کرده و برای مدیریت و نگهداری تجهیزاتی مثل روتر ، سویچ ، فایروال ، UPS و تجهیزاتی از این قبیل مورد استفاده قرار می گیرد.

SNMP دارای یک سری Agent می باشد که بر روی سخت افزارهایی که در شبکه مبتنی بر پروتکل IP فعالیت می کنند فعال شده و اجرا می شود ، طبیعتا چنین Agent هایی برای سیستم عامل های ویندوز و خانواده لینوکس نیز طراحی و وجود دارند و این پروتکل منحصر به استفاده در تجهیزات نمی باشد.

 

بر اساس تعاریفی که تا کنون از فرآیند Enumeration در هک قانونمند داشته ایم تعریف واژه SNMP Enumeration بدست آوردن اطلاعات حسابهای کاربری و تجهیزات و و حتی Process هایی است که بر روی کامپیوتر هدف وجود دارند ، می باشد. دو نوع جزء نرم افزاری در زمانیکه شما با استفاده از پروتکل SNMP ارتباط برقرار می کنید بکار گرفته می شوند که اولین جزء SNMP Agent و دومین آن SNMP Management Station می باشد.

  • بیشتر بخوانید : شناخت 4 روش مقابله با حمله Enumeration در هک و نفوذ

SNMP Agent در واقع قسمتی از این پروتکل است که بر روی سخت افزارها و سیستم عامل ها فعالیت می کند و گزارش ها را دریافت و ارسال می کند و SNMP Management Station جزئی است که اطلاعات را از Agent دریافت و به کاربر نمایش می دهد ، به زبان ساده Station همان نرم افزار مانیتورینگی است که شما در شبکه معمولا استفاده می کنید.

تقریبا همه دستگاه ها و تجهیزاتی که در شبکه های امروزی مورد استفاده قرار می گیرند از SNMP پشتیبانی می کنند و دارای SNMP Agent می باشند و به همین طریق قابل مدیریت و نظارت توسط SNMP Management Station می باشند. مکانیزم کاری بسیار ساده است ، SNMP Management Station درخواست خودش را به سمت دستگاهی که SNMP Agent دارد ارسال می کند و دستگاه بعد از پردازش درخواست توسط SNMP Agent پاسخ مناسب را به سمت Management Station ارسال می کند. هم درخواست ها و هم پاسخ ها در واقع تنظیماتی هستند که بر روی نرم افزار Agent انجام می دهیم.

البته در نظر داشته باشید که برخی متغیرها توسط SNMP Management station قابل تغییر هستند و پیکربندی می شوند. تقریبا هر اتفاق یا رویدادی که بر روی SNMP Agent رخ بدهد برای Management Station ارسال می شود از کوچکترین خطاهای سیستمی گرفته تا Reboot شدن سیستم یا هر اتفاق دیگر به اطلاع سیستم مدیریتی و نظارتی SNMP می رسد. SNMP دارای دو پسورد است که ما آنها را به نام Community String می شناسیم و هر دوی آنها می توانند هم برای دسترسی و هم برای انجام تغییرات بر روی SNMP Agent مورد استفاده قرار بگیرند ، این پسوردها به عنوان Read Community و Read//Write Community شناسایی می شوند.

Read Community String همانطور که از نامش پیداست فقط برای ارسال درخواست از طریق سیستم مدیریتی و دریافت پاسخ از Agent مورد استفاده قرار می گیرد و هیچ کاربردی در خصوص انجام تغییرات بر روی دستگاه ندارد ، در واقع این نوع پسورد بیشترین استفاده را در SNMP دارد و صرفا جنبه اطلاع رسانی و مدیریتی و نظارتی دارد ، تمامی تنظیمات سیستم Agent با این روش و با این پسورد قابل مشاهده و نظارت است.

اما Read//Write Community String همانطور که مجددا از نامش پیداست هم قابلیت های Read Community String را دارد و هم این امکان را دارد که تغییراتی را بر روی سیستم Agent اعمال کند . معمولا از Read Community به عنوان رشته عمومی یا Public و از Read//Write Community به عنوان رشته خصوصی یا Private نام برده می شود.

در بیشتر موارد به دلیل سهل انگاری مدیرهای شبکه Community String ها بعد از فعال سازی این سرویس تغییر نمی کنند و بصورت پیشفرض وجود دارند و در اصطلاح فنی Default Password هستند. در اینجاست که مهاجمین می توانند با استفاده از این آسیب پذیری و اتصال به سیستم ها اطلاعات بسیار مفید و کاربردی از سیستم هدف به دست بیاورند که در فرآیند Enumeration می تواند بسیار موثر باشد.

اگر سهل انگاری مدیر تا حدی باشد که پسورد Read//Write Community را نیز بصورت پیشفرض فعال کرده باشد این احتمال برای مهاجم وجود دارد که حتی بتواند پیکربندی سیستم مورد نظر را نیز تغییر بدهد . اطلاعاتی از قبیل تنظیمات و پیکربندی دستگاه ، Share های شبکه ، مسیریاب ها ، منابع شبکه و ... حتی ARP Table و Routing Table و ... در سوء استفاده کردن از این سرویس قابل دستیابی برای مهاجمین می باشد. دسترسی به اطلاعات مربوط به SNMP با استفاده از ابزارهای بسیار زیادی ممکن است که یکی از انها که برای SNMP Enumeration بصورت ویژه مورد استفاده قرار می گیرد SNMPUtil می باشد .

نوع 7 : NTP Enumeration چیست؟

قبل از اینکه در خصوص Enumeration از این سرویس بپردازیم بایستی دقیقا متوجه باشیم که این سرویس چیست و چه کاری انجام می دهد. NTP مخفف کلمه های Network Time Protocol می باشد و سرویسی است که مسئولیت اعلام زمان دقیق برای سیستم ها را بر عهده دارد ، برخی از سرویس های شبکه برای احراز هویت و بسیاری از مسائل دیگر نیاز به این سرویس دارند.

 

در شبکه های مبتنی بر سیستم عامل ویندوز سرور معمولا سرور Domain Controller اصلی به عنوان NTP شناخته می شود. همانند سرویس SMTP سرویس NTP نیز از آن دسته از سرویس هایی است که بیشتر از 20 سال عمر دارد. در حال حاضر سرورهای بسیاری در دنیا وجود دارند که مسئولیت Time Server در دنیا را بر عهده دارند.

مکانیزم کاری این سرویس بصورت Server و Client است و طبیعی است که سرور می تواند اطلاعاتی از کلاینت هایی که به آن متصل می شوند را در اختیار داشته باشد که در اینجاست که امکان انجام فرآیند NTP Enumeration برای بدست آوردن اطلاعات ممکن است. سرویس NTP بصورت کلی برای برقراری ارتباط از پورت 123 بصورت UDP استفاده می کند.

سرورهای NTP که در اینترنت استفاده می شوند تا 10 میلی ثانیه زمان را می توانند نگهداری کنند اما همین زمان در شبکه های داخلی با توجه به نیاز به دقت بیشتر به 200 میکروثانیه می رسد و دقت به شدت افزایش پیدا می کند. در فرآیند NTP Enumeration شما می توانند لیستی از Host هایی که به NTP متصل شده اند را پیدا کنید و همچنین آدرس های IP ، اسامی سیستم ها ، نوع سیستم عامل های مورد استفاده بر روی سیستم های کلاینت و ... را پیدا کنید. تمامی این اطلاعات با Query گرفتن از NTP ممکن است ، اگر NTP سرور شما در قسمت DMZ شبکه باشد حتی احتمال افشاء شدن آدرس های IP داخلی شما را نیز دارد.

نوع 8 : DNS Enumeration چیست؟

فرآیند DNS Zone Transfer ای که در DNS انجام می شود می تواند بسیار اطلاعات مفیدی در خصوص هدف در اختیار ما قرار بدهد. زمانیکه درخواست Zone Transfer به یک DNS سرور ارسال می شود سرور اگر به درستی پیکربندی نشده باشد اطلاعات کامل رکوردهای DNS خودش را به سمت درخواست کننده ارسال می کند که شامل اطلاعات بسیار خوبی در خصوص سرویس ها و سرورهای موجود در مقصد است. شما می توانید با استفاده از اطلاعاتی که از طریق Zone Transfer بدست می آورید توپولوژی شبکه داخلی و ساختار اصلی شبکه هدف را شناسایی کنید. امیدوارم مورد توجه شما قرار گرفته باشد.

توجه کنید که این ارتباط صرفا بین DNS سرورها انجام می شود. DNS سرورها همیشه برای Zone Transfer از پورت TCP استفاده می کنند. برای اینکه فرآیند DNZ Zone Transfer بین دو یا چند DNS سرور به درستی انجام شود ارتباط بین ZNA سرورها چه مبدا و چه مقصد بایستی با انجام تاییده های TCP یا همان TCP ACK انجام شوند. اگر مهاجمی بتواند یک DNS سرور جعلی راه اندازی کند و درخواست Zone Transfer به DNS سرور واقعی بدهد می تواند اطلاعات بسیار زیادی در خصوص کلیه رکوردهای موجود در DNS سرور در فرآیند Enumeration بدست بیاورد.

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

پورت اسکن (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 کردن اسکن است.

f