در این مقاله میخوایم به بررسی انواع حملات رمزنگاری/پسورد و توضیح اونها بپردازیم تا نسبت به دسته بندی اون حمله شما بدونید از چه ابزاری استفاده کنید.
حملات رمزنگاری ، به چند دسته تقسیم میشن :
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 شما مفاهیم امنیت کامپیوتر و فضای مجازی تا آموزش امن کردن ویندوز ، آموزش استفاده از آنتی ویروس ، آموزش رمزنگاری اطلاعات ، آموزش امنیت در محیط اینترنت و شبکه های اجتماعی ، آموزش شناخت تهدیدات اینترنتی و کلاهبرداری ها ، آموزش امنیت در پرداخت های اینترنتی و آموزش امنیت گوشی و ... را به خوبی یاد میگیرید.
یکی از بهترین و کاملترین دوره های آموزش امنیت اطلاعات و امنیت شبکه در دنیا به حساب می آید. در پایان این دوره آموزشی شما آماده ورود به دنیای هک و امنیت اطلاعات می شوید و به خوبی بر روی مباحث تئوری و مفاهیم امنیتی مسلط خواهید شد. در واقع سکیوریتی پلاس نقطه ورود شما به دنیای امنیت سایبری و از پیشنیازهای دوره های آموزشی هک و نفوذ می باشد.داشتن دانش لازم در حد دوره آموزش نتورک پلاس برای ورود به دوره سکیوریتی پلاس از سری دوره های آموزش هک الزامی است
کثر مردم عادت دارند که وقتی می خواهند پسوردی برای یکی از حسابهای کاربری خودشان چه در گوشی ، چه در ایمیل و حتی حسابهای بانکی و ... بسازند ، از کلمات و واژه هایی یا اسامی استفاده می کنند که بصورت روزمره با آن درگیر هستند.
عادت به استفاده از کلماتی مثل نام دختر و پسر ، نام همسر ، نام سگ ، نام حیوان مورد علاقه ، نام کشور و نامهای مختلف باعث شده است که بسیاری از رمزهای عبوری که ما امروزه در بین عموم مردم می شناسیم ، عملا یک کلمه شناخته شده باشد.برای مطالعه بیشتر به مقاله انواع حملات پسورد در هک و نفوذ ( Password Cracking Attacks )مراجعه کنید.
بدیهی است که یکی از روشهای پیدا کردن رمزهای عبور ، حدس زدن است و اگر اکثریت مردم را در نظر بگیریم ، بسیار محتمل است که رمزهای عبور بسیاری از آدم ها در یک دائره العمارف وجود داشته باشد.
استفاده کردن از این مجموعه کلمات شناخته شده برای هک کردن و پیدا کردن پسورد به حمله دیکشنری یا Dictionary Attack معروف می باشد. الزاما حمله دیکشنری به معنی استفاده از واژه های یک دیکشنری نیست ، بلکه به مجموعه کلماتی که احتمال دارد افراد به عنوان پسورد استفاده کنند نیز دیکشنری در بحث هک و نفوذ گفته می شود.
حمله دیکشنری می تواند باعث پیدا کردن کلید رمزگشایی یک پیام یا یک فایل باشد. حمله دیکشنری معمولا حروف بزرگ و کوچک ، ترکیب حروف و بزرگ و کوچک ، استفاده همزمان از چند کلمه در کنار هم و سایر احتمالات را بررسی نمی کند و صرفا کلامتی که عینا برای آن تعریف شده است را بررسی می کند و به همین دلیل سرعت بالایی دارد.
اگر قرار باشد حملات پسورد ، احتمالات را هم در خودش جای بدهد دیگر به آن Dictionary Attack گفته نمی شود و در اصطلاح حمله Brute Force نامیده می شود. حمله دیکشنری بر روی پسوردهای قوی و پیچیده عملا کاربردی ندارد و فقط برای کرک کردن پسوردهای عامی و شناخته شده کاربرد دارد.
حمله دیکشنری با استفاده از یک لیست از پسوردهای ممکن برای هدف مورد نفوذ انجام می شود. هر بار یکی از کلماتی که در لیست وجود دارند با Hash موجود چک می شود تا در نهایت Hash ها برابر شوند و این یعنی اینکه پسوردها مشابه است. معمولا رمزهای عبوری که به سادگی قابل حدس هستند در لیست پسوردهای این حمله قرار می گیرند برای مثال لیستی از پسوردهای معمول در دنیای فناوری اطلاعات مثل :
حتما در لیست پسوردهای معمول قرار دارند. لیست پسوردهای موجود با توجه به کشورها و زبان ها ممکن است متفاوت باشد. برای مثلا اگر گروهی از هکرها بخواهند به ایران حمله کنند ، قطعا باید لیستی از اسامی که در ایران به وفور استفاده می شود را تست کنند.
برای مثال اسم Mohammad در ایران بسیار معمولا است و ممکن است رمز عبور شخصی یک نفر همنام باشد. حالا در کنار این اسامی ، اسم تیم های فوتبال ، کلمات مرتبط به فرهنگ ، شهرها ، آثار تاریخی ، مناسبت ها ، آدرس ها و ... نیز در لیست دیکشنری این حملات قرار میگیرند.
لیست کلمه هایی که در حمله دیکشنری مورد استفاده قرار می گیرد بسیار متنوع و بزرگ می تواند باشد و به همین دلیل تست کردن بصورت دستی در این حمله وجود ندارد و معمولا با استفاده از ابزارهایی که حمله Brute Force را انجام می دهند ، این حمله انجام می شود.
حملاتی معمولا از جنس دیکشنری یا Brute Force هم بصورت آنلاین و هم بصورت آفلاین انجام می شود اما معمولا حملات آنلاین به دلیل Lock شدن یا قفل شدن فیلد ورود پسورد کمتر مورد استفاده قرار می گیرد. اما در حملات آفلاین معمولا فایل رمزنگاری شده پسوردها در اختیار مهاجم است و تا جاییکه ممکن باشد تست های تطبیق را می تواند با سرعت بالاتر انجام دهد.
یکی از بهترین و کاملترین دوره های آموزش امنیت اطلاعات و امنیت شبکه در دنیا که شما را آماده ورود به دنیای هک و امنیت اطلاعات می شوید و به خوبی بر روی مباحث تئوری و مفاهیم امنیتی مسلط خواهید شد. در واقع سکیوریتی پلاس نقطه ورود شما به دنیای امنیت سایبری و از پیشنیازهای دوره های آموزشی هک و نفوذ می باشد.داشتن دانش لازم در حد دوره آموزش نتورک پلاس برای ورود به دوره سکیوریتی پلاس از سری دوره های آموزش هک الزامی است.
نقشه راه آموزش شبکه های کامپیوتری ممکن است پیچیده باشد . انتخاب مسیر شغلی صحیح مخصوصا در ایران که منابع آموزشی و منابع معتبر به ندرت یافت می شود یکی از دغدغه های اصلی جوانان و داوطلبان تغییر مسیر شغلی در سنین بالا می باشد. یکی از بهترین مسیر های شغلی در بازار کار ایران با توجه به سطح نیاز سازمان ها، مهندس، ادمین و یا مدیر شبکه می باشد. لذا قصد داریم در این مقاله به مسیر های مختلف در این حوزه و همچنین راه های صحیح پیشرفت اصولی در حوزه شبکه های کامپیوتری را بررسی کنیم.
مهندس شبکه یک متخصص فناوری است که مهارت های لازم را برای برنامه ریزی، پیاده سازی و نظارت بر شبکه های کامپیوتری که از خدمات صوتی، داده، ویدئو و شبکه های بی سیم داخلی پشتیبانی می کنند، دارد. اگرچه عناوین شغلی مهندس شبکه و مدیر شبکه گاهی اوقات به عنوان مترادف استفاده می شود، یک مهندس شبکه معمولاً مسئولیت های اجرایی بیشتری نسبت به یک مدیر شبکه دارد.
سمت مهندسی بیشتر به برنامه ریزی، طراحی و مشخصات فنی می پردازد. بخش مدیریت بیشتر با تلاش های تعمیر و نگهداری، مدیریت و عیب یابی روزمره سر و کار دارد.عناوین شغلی ممکن است بر اساس تحصیلات یا درآمد نیز متمایز شوند. به طور معمول، یک مهندس شبکه تحصیلات بیشتری دارد و درآمد بیشتری نسبت به یک مدیر (ادمین) شبکه دارد.
مهندسان شبکه پیکربندی های شبکه را طراحی و پیاده سازی می کنند، مشکلات شبکه را عیب یابی می کنند، نظارت بر شبکه را انجام می دهند و سیستم های امنیتی مانند فایروال ها را پیکربندی می کنند. آنها اغلب به یک CIO یا افسر ارشد امنیت اطلاعات و سایر رهبران خط کسب و کار گزارش می دهند تا در مورد اهداف کلی کسب و کار، سیاست ها و به روز رسانی وضعیت شبکه تصمیم بگیرند. در بسیاری از شرایط، مهندسان شبکه از نزدیک با مدیران پروژه و سایر مهندسان کار می کنند، ظرفیت را مدیریت می کنند و پشتیبانی از راه دور یا در محل را انجام می دهند.
مهندسان شبکه که به عنوان مدیران شبکه نیز شناخته می شوند، به عنوان بخشی از بخش فناوری اطلاعات یک شرکت کار می کنند. آنها مسئول اطمینان از عملکرد کارآمد سیستم های کامپیوتری و سخت افزار شبکه شرکتشان هستند. آنها این کار را با نصب سختافزار جدید، اجرای عیبیابی و تکمیل بهروزرسانیهای معمول نرمافزار به محض در دسترس بودن انجام میدهند. همچنین انتظار می رود که آنها اقدامات پیشگیرانه را برای محافظت در برابر بدافزارها و سایر تهدیدات احتمالی برای امنیت شبکه انجام دهند.
طبق آمار رسمی از شرکت IranSalary دریافتی حقوق یک مهندس شبکه در عناوین شغلی مختلف در حوزه شبکه های کامپیوتری طبق جدول زیر به طور میانگین 12.5 میلیون تومان می باشد و در شرکت های ایرانی تا 20 میلیون تومان درآمد یک کارشناس شبکه کامپیوتری می باشد. مشخص است که با بالاتر رفتن سابقه کار و در عناوین شغلی مانند مدیر فنی این میزان درآمد می تواند به بالای 50 میلیون تومان در ماه برسد.
آموزش جامع نتورک پلاس (Network+)شما را از هر منبع آموزشی دیگری بی نیاز می کند.بعد از گذراندن دوره آموزش شبکه نتورک پلاس ، شما قادر خواهید بود براحتی در آزمون دریافت گواهینامه بین المللی نتورک پلاس شرکت کنید. تمامی توضیحات مربوط به دوره آموزش نتورک پلاس در ادامه برای شما ارائه شده است. این دوره آموزشی مبانی شبکه های کامپیوتری پیشنیازی مهم برای شروع آموزش لینوکس و آموزش MCSA مایکروسافت است.
در مقاله یادگیری ماشین بانظارت، یاد گرفتیم که چگونه می توان مدل ها را با استفاده از مجموعه داده آموزشی برچسب دار، آموزش داد و بعد از آزمون قبولی، از آن ها برای سوددهی در هر کسب و کاری استفاده کرد. اما ممکن است در خیلی از پروژه ها یا صنایع امکان دسترسی به یک مجموعه داده برچسب دار نباشد یا به گونه ای تهیه یک مجموعه داده برچسب دار خیلی دشوار باشد، لذا نمی توان مدل ها را با استفاده از این نوع داده ها به خوبی آموزش داد، اما می توان یکسری الگو و رابطه از دل این مجموعه داده استخراج کرد. در این شرایط می توان از الگوریتم های یادگیری بدون نظارت به منظور خوشه بندی و استخراج رابطه بین داده ها نیز استفاده کرد. در ادامه بیشتر در مورد الگوریتم یادگیری بدون نظارت | Unsupervised Machine Learning آشنا خواهیم شد.
یادگیری ماشین بدون نظارت (Unsupervised Learning) روشی در هوش مصنوعی است که در آن مدل بدون داشتن برچسبهای مشخص روی دادهها، به الگوها و ساختارهای پنهان در دادهها پی میبرد. از مهمترین الگوریتمهای این روش میتوان به خوشهبندی (Clustering) مانند K-Means و تحلیل مؤلفههای اصلی (PCA) برای کاهش ابعاد داده اشاره کرد. در آموزش دیتابیس، این روش برای تحلیل دادههای بزرگ، کشف الگوهای پنهان در پایگاههای داده و دستهبندی اطلاعات کاربرد دارد. یادگیری ماشین بدون نظارت در زمینههایی مانند سیستمهای پیشنهاددهنده، شناسایی ناهنجاریها و تحلیل دادههای مشتریان استفاده میشود. این مدلها به شرکتها کمک میکنند تا بدون نیاز به دادههای برچسبگذاریشده، از اطلاعات خام بینش ارزشمندی استخراج کنند.
همانطور که از نام این نوع یادگیری پیداست، یادگیری بدون نظارت | Unsupervised Machine Learning یک تکنیک یادگیری ماشین است که در آن مدلها با استفاده از مجموعه دادههای آموزشی نظارت نمیشوند (یعنی از مجموعه داده دارای برچسب آموزش نمی بینند). در عوض، مدلها می توانند یکسری الگوها و بینشهای پنهان را از دل مجموعه داده ها پیدا کنند.
می توان یادگیری بدون نظارت را اینگونه نیز تعریف کرد:
یادگیری بدون نظارت نوعی از یادگیری ماشینی است که در آن مدلها با استفاده از مجموعه دادههای بدون برچسب آموزش داده میشوند و اجازه دارند بدون هیچ نظارتی بر روی آن دادهها عمل کنند.
در دوره آموزشی جامع علم داده تمام A-Z علم داده (یادگیری ماشین، داده کاوی) را به شکل کاملاً عملی و با زبانی ساده به شما آموزش می دهد
یادگیری بدون نظارت | Unsupervised Machine Learning را نمی توان مستقیماً برای حل یک مسئله رگرسیون یا دسته بندی نیز استفاده کرد زیرا برای حل این نوع مسائل ما نیاز به مجموعه داده ای داریم که دارای ویژگی برچسب باشد، لذا برای حل این نوع مسائل باید از الگوریتم های یادگیری بانظارت استفاده کرد. هدف از یادگیری بدون نظارت، یافتن ساختار زیربنایی مجموعه داده، گروه بندی آن داده ها بر اساس شباهت ها و نمایش آن مجموعه داده در یک قالب فشرده است .
مثال: فرض کنید یک مجموعه داده ورودی حاوی هزاران تصویر انواع مختلف گربه و سگ بدون هیچ نوع برچسبی داریم (تصویر زیر) که آن را به یک الگوریتم یادگیری بدون نظارت سپرده ایم. الگوریتم نمی تواند بر روی این مجموعه داده آموزش داده شود اما می تواند با توجه به الگوهای شباهتی که بین تصاویر مختلف گربه و سگ وجود دارد (مانند رنگ چشم، رنگ مو، اندازه و ...)، آن ها را به 2 خوشه گربه و سگ تقسیم نماید.
مهمترین عواملی که استفاده از الگوریتم یادگیری بدون نظارت را در صنایع مهم دانسته است عبارتند از:
نحوه کار الگوریتم های یادگیری بدون نظارت را می توان با تصویر زیر درک کرد:
در تصویر فوق و در مرحله اول ما یک مجموعه داده ورودی (تصاویر تصادفی حیوانات) بدون برچسب داریم، به این معنی که بخشی از داده ها از قبل دسته بندی نشده است و دارای برچسب نمی باشند. لذا در مرحله بعد با استفاده از یکی از الگوریتم های یادگیری ماشین بدون نظارت مانند k-means رابطه ها و الگوهای پنهان از دل تصاویر استخراج شده و خوشه بندی داده ها نیز انجام می پذیرد.
الگوریتم های یادگیری بدون نظارت | Unsupervised Machine Learning را می توان به دو دسته تقسیم کرد:
برخی از الگوریتم های یادگیری بدون نظارت | Unsupervised Machine Learning نیز در زیر لیست شده است:
امروز با معرفی تکنیک های بدست آوردن اطلاعات از هدف هک و نفوذ یا انواع Enumeration در خدمت شما عزیزان هستیم. در مقاله قبلی در وب سایت توسینسو با مفهوم Enumeration چیست و درک چگونگی دریافت اطلاعات و اهمیت بدست آوردن اطلاعات دقیق از هدف هک و نفوذ صحبت کردیم. امروز می خواهیم در خصوص انواع Enumeration یا انواع تکنیک های کسب اطلاعات از هدف حمله هکری صحبت کنیم ، پس تا انتها با ما باشید.
Enumeration در حملات سایبری به فرآیند جمعآوری اطلاعات دقیق درباره سیستمهای هدف، مانند نام کاربران، سرویسها، پورتها و اشتراکهای شبکه گفته میشود. انواع Enumeration شامل SNMP Enumeration (استخراج اطلاعات از پروتکل SNMP)، NetBIOS Enumeration (جمعآوری دادههای مربوط به اشتراکهای شبکه)، و DNS Enumeration (شناسایی زیردامنهها و رکوردهای DNS) است. در آموزش هک، ابزارهایی مانند Nmap، Netcat و enum4linux برای انجام این حملات استفاده میشوند. هکرها از این تکنیکها برای یافتن آسیبپذیریهای سیستم هدف استفاده میکنند، درحالیکه مدیران امنیتی میتوانند با محدود کردن دسترسیها، غیرفعالسازی سرویسهای غیرضروری و نظارت بر لاگها از این حملات جلوگیری کنند.
اولین نوع از انواع Enumeration از طریق سرویس NetBIOS انجام می شود. اولین گامی که یک مهاجم برای Enumeration از یک سیستم ویندوزی برمی دارد سوء استفاده کردن از NetBIOS API است. همانطور که به عنوان یک متخصص امنیت می دانید NetBIOS مخفف کلمه های Network Basic Input Output System است و توسط شرکت IBM با همکاری شرکت های Sytek طراحی و تولید شده است.
در واقع NetBIOS به عنوان یک API یا Application Programming Interface برای فراهم کردن دسترسی ساده تر به منابع شبکه مورد استفاده قرار می گرفت و بر همین مبنا برای استفاده در شبکه های داخلی LAN ساخته شد. ساختار نامگذاری NetBIOS با استفاده از یک رشته کاراکتر ASCII انجام می شود که هر دستگاه در شبکه بعد از گرفتن آدرس IP از آن استفاده می کند ، 15 کاراکتر ابتدای آن برای نامگذاری دستگاه و شانزدهیم کاراکتر به عنوان رکورد نام یا سرویس استفاده می شود. مهاجمین از NetBIOS برای Enumerate کردن موارد زیر استفاده می کنند :
اگر مهاجم سیستم عامل ویندوزی را پیدا کند که شماره پورت 139 آن باز باشد ، می تواند بررسی کند که آیا منابعی بر روی آن سیستم وجود دارند که بتوانیم آن را مشاهده و یا بعضا به آنها دسترسی داشته باشیم یا خیر ، البته به این موضوع توجه کنید که برای اینکه Enumerate شدن از طریق NetBIOS به درستی انجام شود مهم است که سرویس file and printer sharing فعال شده باشد.
با استفاده از تکنیک های زیر مهاجم می تواند به منابعی که بر روی سرور هدف وجود دارد دسترسی پیدا کند ، دو حمله کلی در این نوع Enumeration وجود دارد ، یا مهاجم دسترسی Read و Write بدست می آورد یا اینکه می تواند حمله Denial Of Service یا تکذیب سرویس بر روی سیستم هدف انجام دهد . در Enumerate کردن سرویس NetBIOS شما Code های مختلفی را باید بدانید ، با بازگشت داده شدن هر یک از این کدها شما می توانید متوجه شوید که چه سرویسی بر روی سرور هدف وجود دارند ، به این کدها در اصطلاح Suffix هم گفته می شود برای مثال :
کد 00 مربوط به نام کامپیوتر یا Hostname مقصد است
کد 01 مربوط به نام دومین یا Domain Name مقصد است
کد 03 مشخص کنند این است که سرویس Messenger در سیستم مقصد فعال است
کد 20 به معنی فعال بودن سرویس Server در مقصد است
کد 1D به معنی Browser Name کامپیوتر مقصد است
کد 1B به معنی تایم سرور یا PDC سرور کامپیوتر مقصد است
...
به این نکته توجه کنید که در IPv6 دیگر چیزی به نام NetBIOS وجود ندارد و این سرویس به کلی فعال نیست.
یکی از پرکاربردترین پروتکل های مورد استفاده در شبکه که امکان 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 های شبکه ، ایمیل ها ، آدرس ها ، شماره تلفن ها و ... از این طریق قابل دسترس هستند.
بصورت معمول هر آدرس ایمیل از دو قسمت تشکیل شده است ، قسمت اول که نام کاربری یا Username است و قسمت دوم که نام دومین یا Domain Name است. در واقع همانطور که می دانید ساختار یک آدرس ایمیل بصورت username@domainname.com است .
تصور کنید که یک آدرس ایمیل به شکل m.nasiri@tosinso.com داریم در این ساختار مشخص است که m.nasiri یک نام کاربری و domainname.com آدرس دومین مورد استفاده است که با علامت @ از هم جدا شده اند. بعضا با استفاده از این ساختار می توان به نام کاربری های داخلی شبکه نیز پی برد و ساختار نامگذاری username ها را حدس زد. شما با استفاده از گرفتن اطلاعات کاربران می توانید ساختار ایمیل های هر کاربر در سازمان را تشخیص بدهید.
تجهیزاتی مثل سویچ و روتر و Access Point ها و حتی برخی نرم افزارها بصورت پیشفرض دارای پسورد هستند که این پسورد معمولا در هر نوع محصول تقریبا مشابه است. حتی بعضا برخی نرم افزارهای آنلاین نیز برای ایجاد دسترسی های پیشفرض از یک سری Username و Password پیشفرض استفاده می کنند. در بسیاری اوقات پیش می آید که کاربران بدون توجه به اینکه بایستی این رمزعبورها تغییر کند از همان رمز عبور پیشفرض نرم افزار بصورت همیشگی استفاده کرده و آنها را تغییر نمی دهند.
خوب این طبیعی است که وقتی شما پسورد پیشفرض یک دستگاه یا نرم افزار را تغییر نمی دهید باید انتظار داشته باشید که یک هکر نیز بتواند از آن برای حمله کردن به شما استفاده کند یا ریسک این را باید بپذیرید که هر کسی بتواند با این نام کاربری و رمز پیشفرض از سیستم شما سوء استفاده کند. وب سایت های زیادی هستند که لیستی از پسوردهای پیشفرض دستگاه های مختلف با مدل های مختلف را بصورت آنلاین در اختیار همه قرار می دهند.
فراموش نکنید که حتما برای نرم افزارها و سخت افزارهای خود بلافاصله بعد از پیکربندی اولیه پسورد و نام کاربری متفاوتی از آنچه پیشفرض استفاده می شده است استفاده کنید. برای مثال چند نفر از شما پسورد و نام کاربری روتر خانگی خودش را Admin و Admin همچنان نگه داشته است و توجهی به تغییر دادن آن نکرده است ؟
با دسترسی پیدا کردن یک مهاجم می توان از این حفره ها و آسیب پذیری های امنیتی در وهله اول برای Enumeration و در وهله دوم برای پیدا کردن دسترسی های بیشتر استفاده کرد. در زیر لیستی از وب سایت هایی که پسورد های پیشفرض را به شما معرفی می کنند را مشاهده می کنید :
http://www.defaultpassword.com/ https://cirt.net/passwords http://www.routerpasswords.com/
قطعا می دانید که سرویس SMTP کاربرد ارسال ایمیل را بر عهده دارد و اگر این سرویس به درستی پیکربندی نشده باشد به دستوراتی که از طریق خط فرمان یا نرم افزارهای مربوطه ارسال می شوند پاسخ هایی می دهد که می تواند در فرآیند Enumeration مورد استفاده قرار بگیرند. EMTP Enumeration به شما اجازه می دهد که کاربران معتبر بر روی SMTP سرور را شناسایی کنید. اینکار با استفاده از دستورات Built-In ای که درون سرویس SMTP قرار گرفته اند امکانپذیر است. این سه دستور به شرح زیر هستند :
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
قطعا اگر این مطلب را در مورد هک و امنیت مطالعه می کنید با کاربرد پروتکل SNMP آشنایی دارید اما بصورت خلاصه SNMP یک پروتکل لایه Application است که بصورت UDP کار کرده و برای مدیریت و نگهداری تجهیزاتی مثل روتر ، سویچ ، فایروال ، UPS و تجهیزاتی از این قبیل مورد استفاده قرار می گیرد.
SNMP دارای یک سری Agent می باشد که بر روی سخت افزارهایی که در شبکه مبتنی بر پروتکل IP فعالیت می کنند فعال شده و اجرا می شود ، طبیعتا چنین Agent هایی برای سیستم عامل های ویندوز و خانواده لینوکس نیز طراحی و وجود دارند و این پروتکل منحصر به استفاده در تجهیزات نمی باشد.
بر اساس تعاریفی که تا کنون از فرآیند Enumeration در هک قانونمند داشته ایم تعریف واژه SNMP Enumeration بدست آوردن اطلاعات حسابهای کاربری و تجهیزات و و حتی Process هایی است که بر روی کامپیوتر هدف وجود دارند ، می باشد. دو نوع جزء نرم افزاری در زمانیکه شما با استفاده از پروتکل SNMP ارتباط برقرار می کنید بکار گرفته می شوند که اولین جزء SNMP Agent و دومین آن SNMP Management Station می باشد.
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 می باشد .
قبل از اینکه در خصوص 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 داخلی شما را نیز دارد.
فرآیند 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 شما به خوبی با نحوه پیاده سازی چنین حملاتی آشنا می شوید و صد البته مفاهیم مربوط به ماهیت و مفاهیم امنیت شبکه و هک و نفوذ را نیز در دوره آموزش سکیوریتی پلاس آموزش خواهید دید. پیشنهاد می کنم اگر هنوز در خصوص دنیای هک و نفوذ دارای ابهام هستید حتما مقاله چگونه هکر شویم در این لینک را مطالعه کنید. امیدوارم مورد توجه شما عزیزان قرار گرفته باشد. با تشکر محمد نصیری