سلام رفقا. حالتون چطوره؟ یه مدت نبودم براتون مقاله بنویسم. الان اومدم با توضیح راجب ماژول Vulnerability Analysis از CEH (من تو مقالات قبلی، دیگر ماژول های CEH رو توضیح دادم، پیشنهاد میکنم اون مطالب رو هم ببینید و بعد بیاین سراغ این مقاله)
بعد از اینکه اطلاعات مربوط به سیستمها، سرویسها و پورتها رو دریافت کردم (نتیجهی Scanning) حالا باید روی این دادهها تمرکز کنم و نقاط ضعف سیستمها یا شبکهها رو شناسایی کنم. Vulnerability Analysis خودش یک فاز مجزا در چرخه تست نفوذ (Penetration Testing) هست اما چون شدیداً به Scanning گره خورده، خیلی وقتها این دو بخش پشت سر هم یا در یک دستهبندی قرار میگیرند. اسکن آسیبپذیری هم بصورت دستی انجام میشه و هم به واسطه ابزارها ! اگه بخوایم بصورت دستی اینکارو انجام بدیم لازم هست که با آسیبپذیری ها و دیگر موضوعات آشنا باشیم، اما با اسکنرها لازم نیست که خیلی از موارد رو خودمون بلد باشیم و اجرا کنیم (هرکدوم خوبی و بدیهای خودش رو داره)
یکسری سیستم یا سایتهایی هستند که به واسطه امتیاز دادن به آسیبپذیریها سطح خطرناک بودن اونهارو مشخص میکنن. چندتا از این سیستمها :
CVSS : امتیازی بین 0 تا 10 میده که شدت خطر رو مشخص میکنه.
None : 0.0 – بدون خطر.
0.1 تا 3.9 : Low – خطر کم.
4.0 تا 6.9 : Medium – خطر متوسط.
7.0 تا 8.9 : High – خطر بالا.
9.0 تا 10.0 : Critical – خطر بحرانی.
CVE : در این سیستم هر آسیبپذیری که کشف میشه یک کد CVE دریافت میکنه. CVE یک کد یکتا به هر آسیبپذیری میده. این کد شامل سال کشف آسیبپذیری و یک شماره اختصاصی میشه. مثال :
CVE-2023-12345 که در ابتدا سال کشف آسیبپذیری مشخص شده و بعد شماره یکتا اون آسیب پذیری. این استاندارد تضمین میکنه که تمام ابزارها و سازمانها با یک زبان مشترک درباره آسیبپذیریها صحبت میکنند. وقتی یک آسیبپذیری کشف میشه CVE شناسهای برای اون صادر میکنه و CVSS برای ارزیابی شدت خطر، یک امتیازی برای اون CVE تعیین میکنه.
NVD : جزئیات کاملی درباره هر آسیبپذیری ارائه میده.
CWE : سیستم دستهبندی ضعفها و مشکلات امنیتی هست که منجر به آسیبپذیریها میشن یعنی یشتر به جامعه توسعهدهندگان کمک میکنه که بدونن چه نوع مشکلاتی ممکنه منجر به آسیبپذیری بشه.
جمعبندی : هرکدوم از این سیستمها وظیفهی مشخصی دارن و اغلب به هم وابسته هستن. CVE به آسیبپذیری ها یک شناسه اختصاصی میده و هیچ امتیازی به آسیبپذیری نمیده و فقط کمک میکنه که آسیبپذیری ها را شناسه گذاری و قابل ردیابی کنیم. NVD از CVE استفاده میکنه تا اطلاعات بیشتری روی اون شناسه قرار بده (این پایگاه داده اطلاعات فنی و جزئیات بیشتری رو درباره یک CVE اضافه میکنه) CVSS ابزاری هست که برای هر آسیبپذیری براساس معیارهای استاندارد، امتیاز خطر تعیین میکنه. CWE مسئول دسته بندی نوع ضعفهای امنیتی است. بجای اینکه روی آسیبپذیری مشخصی تمرکز کنه (مثل CVE) توضیح میده که نوع اساسی ضعف چی بوده ! مثلاً ضعف کد نویسی (SQL Injection).
(CVE شناسه میده، NVD جزئیات رو پر میکنه، CVSS شدت رو ارزیابی میکنه و CWE ضعفهای ریشهایی رو توضیح میده)
CEH اومده یکسری از مواردی که منجر به آسیبپذیری میشه رو طبقی بندی کرده !
Misconfiguration (پیکربندی نادرست) : تو ماژول Introduction to Ethical Hacking بررسی شده.
Default Installations (نصب های پیشفرض) : زمانی که نرمافزارها با تنظیمات پیشفرض نصب میشون و بروزرسانی نمیشن.
Buffer Overflows (سرریز شدن بافر) : Buffer Overflow یک آسیبپذیری هست که تو نرم افزارهای خانواده C و Cpp وجود داره و تو ماژول System Hacking بررسی میشه.
Unpatched Servers (سرور های بدون پچ) : سرورهایی که بروزرسانیهای امنیتی (یا همون patch هارو) دریافت نکردهاند و در نتیجه آسیبپذیر هستند.
Design Flaws (نقص های طراحی) : از جمله آسیبپذیریهای خطرناکی هستند که به دلیل مشکلاتی در مرحله طراحی سیستم، نرمافزار، یا اپلیکیشن به وجود میآیند. این نوع آسیبپذیری معمولاً عمیقتر از مشکلات کدنویسی یا تنظیمات هست و به ساختار، منطق و معماری سیستم مربوط میشود. یک مثال از نقصهای طراحی اینه که هنگام طراحی سیستم، دادههای حساس به صورت رمزنگارینشده در پایگاهداده ذخیره بشن یا در حین انتقال در شبکه رمزنگاری نشوند.
Operation System Flaws (نقص های سیستم عامل) : ضعفها و مشکلات امنیتی در سیستمعاملها که میتوانند توسط مهاجمان سوءاستفاده شوند.
Application Flaws (نقص های نرم افزار) : ضعفها یا آسیبپذیریهایی که به دلیل مشکلات در توسعه یا بهروز نشدن نرمافزارها ایجاد میشوند.
Open Service (سرویس های باز) : سرویسهایی که بدون محدودیتهای امنیتی مناسب اجرا میشوند و ممکن است مهاجمان سعی به نفوذ در آنها کنند. (مثلاً سرویس FTP)
Default Passwords (رمزهای عبور پیشفرض) : استفاده از رمزهای پیشفرض که مهاجمان به راحتی میتوانند آنها را حدس بزنند و به سیستمها دسترسی پیدا کنند.
یکسری ابزار یا نرم افزارهایی هستند که هکرها از اون ها برای عمل اسکن آسیبپذیری ها استفاده میکنن. این اسکنرها معمولاً روی آسیبپذیری هایی که ثبت شدهاند تمرکز میکنن (مثل SQL Injection و…) یکم بیشتر با این ابزارها و مفاهیم آشنا بشیم ! آسیبپذیری ها معمولاً به دو روش شناخته میشن :
بر اساس اسمشون (مثل SQL Injection یا Buffer Overflow) : اینها اسامی کلی هستن که به یه نوع خاص از ضعف امنیتی اشاره دارن. مثلاً SQL Injection یعنی یه آسیبپذیری که به مهاجم اجازه میده دستورات SQL دلخواهش رو به پایگاهداده تزریق کنه. اما این اسمها فقط یه توضیح عمومی هستن. یک سیستم یا نرمافزار خاصی که این مشکل رو داره نیاز داره دقیقتر شناسایی بشه.
بر اساس کد منحصربهفرد (مثل CVE) : آسیبپذیریها در پایگاهدادههای بزرگی مثل CVE با یه کد خاص ثبت میشن. این کد یه شناسه جهانی برای اون آسیبپذیری خاصه. مثلاً آسیبپذیری SQL Injection در یه نسخه خاص از MySQL (مثلاً نسخه 5.7.10) ممکنه با کدی مثل CVE-2019-10532 شناخته بشه. این کد باعث میشه اسکنرها بتونن دقیق این آسیبپذیری خاص رو تشخیص بدن ! مثلاً ابزار میبینه که سیستم شما نسخه X از نرمافزار Y رو داره، اون نسخه خاص در CVE یه کد ثبت شده داره که میگه این نسخه آسیبپذیره ! حالا ابزار اینو بهتون گزارش میده. بعضی ابزارها حتی تست روی سیستم انجام میدن. مثلاً ابزار بررسی میکنه که آیا میتونه با تزریق کد SQL به هدف، به بانک اطلاعاتی دسترسی پیدا کنه یا نه.
دقت کن اسکنرها ابزار هستن ! یعنی ممکنه اسکنر هیچ آسیبپذیری روی یک سایتی پیدا نکنه اما کسی که تست نفوذ وب کار میکنه ممکنه چندتا آسیبپذیری پیدا کنه.