آزمون نفوذپذیری پیشرفته IT
خدمات تست نفوذ امن افزار
امروزه باوجود شبکههای امن و هزینههای بسیار در جهت محکمسازی ارتباطات شبکهای سازمانها و قطبهای IT کشور بازهم شاهد حملات و کشف مخاطراتی توسط نفوذگرها در سراسر دنیا هستیم. علت چیست؟ بعد از لحظهای فکر و مرور وقایع پس از حمله درمییابیم یک شبکه امن در بستر یک نرمافزار آسیبپذیری، شانسی برای دفاع نداشته و نخواهد داشت، چراکه همیشه یک نرمافزار برای سیستمهای امنیتی تا حد زیادی مورد اعتماد است و این اعتماد لازمه استقرار نرمافزار است. یکی از شرایط و ملزومات امنیت، برقراری آن در تمامی سطوح و لایهها است. همچنین امنیت وبسایتها در اینترنت یکی از دغدغههای مهم بهروز است. بسیاری از سازمانها، شمار زیادی از تراکنشها و فعالیتهای روزانه خود را در اینترنت و از طریق وبسایت و یا نرمافزارهای تحت وب خود انجام میدهند. اگر در لایهای، تهدید و یا ریسکی وجود داشته باشد این ریسک تمامی قسمتها را تحتالشعاع قرار میدهد. امنیت نرمافزار مقولهای است که همواره به دلیل دشوار بودن به عقب راندهشده است. از اینسو شرکت امنافزارگستر آپادانا در سالهای اخیر سعی کرده تا در این زمینه و ارائه خدمات تست نفوذ سایت و شبکه با جذب نیروی متخصص، مرکز امنیتی را تشکیل دهد و همواره برای متمرکز ساختن آن به خرید نرمافزارهای بسیار مهم اقدام کند.
شرکتهای بزرگ دارای دادههای مهمی هستند که حفاظت از آنها یکی از مهمترین دغدغههای همیشگی بوده است، آزمون نفوذ با شبیهسازی حملههای متعدد، سازوکارهای امنیتی شرکتها را مورد آزمون قرار میدهد. این امر تنها به درخواست سازمانها برای شناسایی حفرههای امنیتی میباشد. هدف از انجام این عملیات را میتوان موارد زیر عنوان کرد:
- بررسی درستی پیادهسازی سیاستهای امنیتی
- شبیهسازی حملهها و پیدا کردن خطرات موجود در یک سیستم
- پیشنهاد فعالیت پیشگیرانه برای کاهش ریسک ناشی از صدمهی یک حمله واقعی
- اطمینان از بهروز بودن سیستمها و سازوکارهای امنیتی
- اطمینان از ایمنی در مقابل آخرین آسیبپذیریهای شناختهشده
- یافتن نقاط ضعف، پیش از بهرهبرداری مهاجمان
- کاهش هزینههای ترمیم از طریق کاهش خطرات نفوذ
- ارزیابی آسیبپذیری افشای اطلاعات از طریق کارکنان سازمان (با فنون مهندسی اجتماعی)
تست نفوذ چیست؟
تست نفوذ به فرآیندی گفته میشود که در آن تیم نفوذ به بررسی دقیق شبکه، وبسایت، سیستمها در زمینه های ضعف طراحی، مشکلات فنی، ضعف پیکربندی صحیح و غیره پرداخته و آسیبپذیریها موجود را موردبررسی قرار میدهد. در ادامه با توجه به حفره های امنیتی بهدستآمده و با کمک دانش فنی، تیم آزمونگر همانند نفوذگرها شروع به استفاده از تکنیکهایی میکنند تا به وسیله این آسیبپذیریها دسترسی از سیستم تستشده به دست آید. در این شرایط قادر به استخراج بخشی و یا تمامی دادههای سازمان میشوند.
تفاوت تست نفوذ با هک در این است که در تست نفوذ، عملیات بنا به درخواست کارفرما بوده و هیچ تخریب دادهای صورت نمیگیرد و درنهایت حفرههای احتمالی وصله خواهند شد اما در نقطه مخالف یک نفوذگر برای استفاده سوء از اطلاعات یک سازمان و یا برای از بین بردن و ایجاد تغییرات در اطلاعات تلاش میکند. باید توجه داشت که در تست نفوذ، بیشترین تلاش گروه برای به دست آوردن سطح دسترسی به محدوده مشخصشده توسط کارفرما همانند سطح دسترسی به برنامههای کاربردی، پایگاه داده، شبکه، وبسایت، سیستمعامل استفادهشده و غیره میباشد. این در حالی است که در آزمون ارزیابی امنیتی، تمرکز بیشتر برای شناسایی آسیبپذیریها میباشد و هیچگونه تلاشی برای نفوذ صورت نمیپذیرد. تست نفوذ همانند عملیاتی است که نفوذگرها بر روی سیستمهای قربانی انجام میدهند. این نوع از ارزیابیها به مراتب دقیقتر میباشد و همچنین شامل هزینه بالاتری هستند.
باید توجه داشت شناسایی تمامی آسیبپذیریها توسط تست نفوذ دور از واقع است. در دنیا شماری از آسیبپذیریها وجود دارد که در دسترس همه قرار ندارد و یا هنوز شناسایی نشدهاند. سازمانی که تا امروز امن تلقی میشده است، با شناسایی و انتشار یک ضعف امنیتی از آن ساعت دیگر امن نمیباشد. دلیل این امر پیشرفت سریع علم در زمینه امنیت میباشد. در نتیجه کلیه سازمانها تأکید بسزایی بر روی انجام دورهای ارزیابی امنیتی دارند، هدف از ارزیابی امنیتی و تست نفوذ بهبود امنیت هر چه بیشتر سازمانها است. با توجه به حساس بودن اطلاعات هر سازمان پیشنهاد داده میشود ارزیابی امنیتی بهصورت مرتب حداکثر هر شش ماه یکبار تکرار شود.
مطابق با استانداردهای روز دنیا وجود هر رخنه امنیتی و امکان آسیبرساندن آنها بر اساس آسیب و نحوه گرفتن دسترسی بهصورت جداگانه آورده شده است. باید توجه داشت به هر میزان درصد تخریب بالاتر باشد میزان آسیبرساندن و ریسک امنیتی نیز بالاتر میرود.
شناسایی کامل سیستم(footprinting)
شناسایی نقاط آسیبپذیر سیستمها و نرمافزارها، آسیبپذیریهای تحت وبسایت، آسیبپذیریهای شبکه داخلی و خارجی، آسیبپذیری سرویسها و برنامههای نصبشده، آسیبپذیری سیستم مدیریت محتوا، آسیبپذیری زبانهای برنامهنویسی استفادهشده، آسیبپذیری ماژولهای نصبشده و... بهمنظور احاطهی کامل بر سازمان بهعنوان اولین فاز عملیاتی خواهد بود. با اطلاعات بهدستآمده در این بخش میتوان برای یک نفوذ موفق برنامهریزی کرد.
آسیب پذیری های عمومی(Public Vulns)
در این مرحله با اطلاعاتی که از مرحله قبل بهدستآمده است، سعی میشود آسیبپذیریهای برنامهها و سرویسهای سیستم را که از قبل توسط متخصصان امنیتی در سایتهایی همچون exploit-db.com، securityfocus.comو سایر سایتها گزارششدهاند، پیدا کرد. ممکن است در این مرحله هیچ آسیبپذیری عمومی از سیستم پیدا نشود. این آسیبپذیریها به دلیل اینکه بهصورت عمومی در اختیار همگان قرار میگیرند، عموماً بهسرعت توسط توسعهدهندگان سیستمها رفع میشود. یک سیستم که بهطور مرتب بهروز رسانی میشود، در این مرحله امنیت قابل قبولی را خواهد داشت.
تست نفوذ با ابزار خودکار(Automatic tools)
در این مرحله با نرمافزارهای تجاری و رایگان برای تست محدوده شناسایی شده اقدام خواهد شد. هرکدام از این ابزارها بخشهایی از سیستم را ازلحاظ امنیتی بررسی میکنند و گزارش تخصصی از میزان امنیت سیستم را بهعنوان خروجی تحویل میدهند. عموماً قیمت بالای نرمافزارهای تجاری مانع از این میشود که شرکتها این ابزارها را خریداری نمایند. نرمافزارهایی که در اختیار همگان قرار دارند عموماً در شناسایی آسیبپذیریها دارای خطا هستند.
انواع روش های تست نفوذ
روشهای انجام آزمون نفوذ را میتوان بر اساس سه ویژگی محل آزمون، آگاهی راهبران سیستم از عملیات نفوذ و سطح اطلاعاتی که برای انجام تست نفوذ در دسترس است تقسیمبندی نمود.
محل آزمون
حملههایی که برای تست نفوذ صورت میگیرد میتواند در داخل یا خارج سازمان انجام شود. در صورت اجرای هر دو مورد، معمولاً آزمون خارجی زودتر انجام میشود. در تست نفوذ خارجی، هیچ اطلاعی از دادههای درونی سازمان در دسترس نیست و آزمون تنها با اطلاعات جمعآوریشده انجام میگیرد. آزمون داخلی، در درون سازمان و پشت دیوار آتش صورت میگیرد و در هنگام اجرای آن امکان دسترسی به اطلاعات سازمان وجود دارد.
آگاهی راهبران سیستم
از لحاظ اطلاع افراد، تست نفوذ به دو دستهی تیم آبی و تیم قرمز تقسیمبندی میشود. تیم آبی با دانش و رضایت کارکنان فناوری اطلاعات سازمان صورت میگیرد. تیم قرمز شامل اجرای یک آزمون نفوذ بدون اطلاع کارکنان فناوری اطلاعات سازمان میشود ولی سطوح بالاتر از این موضوع آگاه هستند. تیم آبی هزینهی کمتری دارد و بهصورت متداولتری مورداستفاده قرار میگیرد. با استفاده از تیم قرمز علاوه بر امنیت میتوان واکنش کارکنان فناوری اطلاعات به مخاطرات امنیتی و دانش آنها را نیز مورد بررسی قرارداد.
سطح اطلاعات در دسترس
بر اساس اطلاعاتی که برای آزمون در اختیار قرار میگیرد، آزمون نفوذ را میتوان به سه دستهی جعبه سفید، جعبه سیاه و جعبه خاکستری دستهبندی نمود.
- آزمون جعبه-سفید (White-Box Testing): آزمون جعبه سفید برای بررسی آسیبپذیریهای هدف با داشتن اطلاعاتی همانند نام کاربری و رمز عبور یکی از پرسنل با دسترسی کم صورت میپذیرد. در این بخش به دلیل دسترسی به کد برنامه ها تیم نفوذ قادر هستند با تجزیهوتحلیل آنها تمام مسیرهای پنهانی برنامه را پیدا نمایند. این امر باعث پیدا شدن آسیبپذیریها و خطاهای منطقی موجود در مسیرهای برنامهی هدف میشود. در این دسته از آزمونها ممکن است به دلیل دسترسی به کد برنامه، آسیبپذیریهایی گزارش شوند که وجود ندارند، یا به عبارت دیگر دارای مثبت اشتباه[1] باشند.
- آزمون جعبه-سیاه (Black-Box Testing): برخلاف آزمون جعبه سفید در آزمون جعبه سیاه، فرض میشود که هیچ دانشی از سازمان وجود ندارد و به جای استفاده از نام کاربری و رمز عبور، آزمونگر مانند رجوعکننده عادی با یک مرورگر و یا نود شبکه شروع به انجام تست میکند. در این آزمون ابتدا در بخش برنامههای کاربردی قسمتهای مختلف را برای پیداکردن تمام بردارهای تزریق ممکن، بررسی میکند و به هر طریقی که حملهکننده بتواند به سازمان و برنامهی کاربردی دسترسی پیدا کند را مورد آزمایش قرار میدهد. بعد از شناسایی ضعفهای امنیتی، روشهایی برای نفوذ به آسیبپذیریها داده میشود. در پایان این آزمون پاسخها موردبررسی قرار میگیرند و در صورت موفق بودن، بهعنوان یک آسیبپذیری گزارش میشود. از مزیتهای آزمونهای جعبه سیاه نسبت به جعبه سفید میتوان به وابسته نبودن آنها به کد برنامه و مثبت اشتباه کمتر اشاره کرد.
- آزمون جعبه-خاکستری (Gray-Box Testing): آزمونهای جعبه خاکستری همانطور که از نامش پیداست ترکیبی از جعبه سیاه و جعبه سفید میباشد. در این آزمونها، از تکنیکهای تجزیهوتحلیل ایستای جعبه سفید برای شناخت آسیبپذیریها استفاده میشود. سپس بهصورت واقعی سعی میشود روی آسیبپذیریهای پیداشده حمله اجرا شود تا وجود آنها تصدیق شود. در صورت موفق بودن این گام، آسیبپذیری گزارش داده میشود. آزمونهای جعبه خاکستری قادر است، آسیبپذیریهای موجود در تمام مسیرهای برنامه را با خطای کمتری پیدا نمایند. از ویژگیهای خوب این آزمون میتوان به وجود مجوز و امکان دسترسی به بخشهای نیازمند این مجوزها نام برد که این امر باعث میشود آزمون نفوذ بهصورت عمیقتر انجامگرفته و آسیبپذیریهای بیشتری را شناسایی نماید.
تحت وب
مراحل تستنفوذ پذیری نرمافزارهای کاربردی تحت وب
- تست امنیتی سرویسهای به کار گرفتهشده توسط نرمافزار و پلتفرم: تمامی سرویسهای اجرا شده اعم از سرویسهایی که توسط یک پورت در حالت شنود هستند یا سرویسهای محلی
- بررسی وبسرویسها اعم از SOAP ،WSDL و ...
تشخیص و سپس تست و بررسی وب سرویسهای نرمافزار مانند:
- WS-security
- HTTP Authentication
- SSL-Certificate
- Encrypted Transactions
- تست امنیتی تبادلات بیرونی نرمافزار
در بررسی یک نرمافزار تحت وب (web application) مهمترین نکته بررسی تعاملات و شروط داد و ستدی است که نرمافزار با کاربر خود داراست:
بررسی تمامی ارتباطات با Data-Store ها
تست امنیتی نرمافزار
بررسی پوشههای نرمافزار و مکانیزمهای امنیتی که باید اعمال شود
بررسی امن بودن بستر پروتکلها
بررسی اعتبارسنجیها و session های نرمافزار در برقراری ارتباطات برون سازمانی
بررسی ارتباطات بین نرمافزارهای اتوماسیون و تحت وب
بررسی کلیه پروتکلهایی که نرمافزار با آنها یا در بستر آن کار میکند
تست اتوماتیک: استفاده از نرمافزارهای اتوماتیک در جهت تست و پویش آسیبپذیریها، این مرحله از تست نفوذ نقطه عطف این فرآیند نخواهد بود و صرفا یک مرحله خواهد بود
استفاده از ابزارهای تجاری: استفاده کردن از ابزارهای تجاری و یا رایگان 2 قطب متفاوت میباشد، ابزارهای تجاری اغلب با هوش مصنوعی توام هستند اما نرمافزارهای رایگان تلاشی بیشتر از خواندن پایگاه داده و اعمال روشهای دیکته شده برای شناسایی نخواهند داشت. یکی از افتخارات شرکت امن افزار گستر آپادانا داشتن نرمافزارهایی بی همتا، با سابقه و حرفهای در زمینه تست است مانند نرمافزار Burp Suite Pro از شرکت PortSwigger و نرمافزار بسیار قدرتمند CANVAS از شرکت Immunity نمونههایی گرانقیمت هستند. همچنین نرمافزار HP WebInspect از مرکز امنیت وب کمپانی HP که مورد استفاده در بسیاری از مراکز دولتی و بانکها میباشد و با تحلیلی که انجام شده است این نرمافزار هیچ رفتار جاسوسانهای نداشته است و یادآور میشود علاوه بر تست و اسکن آسیبپذیری، قابلیت Fuzzing یا بررسی عمیق نرمافزار با استفاده از پارامترهای پیچیده نیز در نرمافزار نهفته است. از ویژگیهای دیگر HP Webinpect عبارتند از:
- موتور هوشمند
- تجزیه و تحلیلها پویا در تغییرات نرمافزار
- بهینهبودن سرعت اسکن
- دارای رابط کاربری قدرتمند و انعطافپذیر
- شبیهسازی رفتار یک هکر
- ارائه Best Practice برای چگونگی رفع مشکل
- تشخیص آسیبپذیریهای امنیتی در سورس کدهای سمت کلاینت
- ارائه بهترین نتایج ( کمترین خطا یا False-Positive)
- تشخیص خودکار و Decompile کردن فایلهای فلش و CSS و بررسی امنیتی بر روی آنها
- ذخیرهسازی تمامی نتایج اسکن در یک SQL Server
- به روز رسانی به هر دو صورت آنلاین و آفلاین از HP SmartUpdate
- ارائه گزارشات به صورت متنوع مناسب برای تیم تضمین کیفیت، تیم توسعهدهنده و یا تیم امنیتی
- ارائه شماتیکی در گزارشات از نوع حمله به نرمافزار
- ارائه فرمت گزارشات در فرمتهای RTF، PDF، Excel، HTML و ...
- شبیهسازی خودکار فعالیتهای یک کاربر با اجرای مسیر کد از طریق کدهای جاوا اسکریپت
- سفارشی ساختن قالب گزارشات ( لوگوی سازمان، تغییرات در سرآیند صفحه و ... )
- پشتیبانی سیاست بررسی امنیتی از چندین Compliance معبتر جهانی همچون OWASP top 10، PCI و ...
- دارای روشهای فوق پیشرفته در تشخیص انواع آسیبپذیریهای Web 2.0
استفاده از ابزارهای رایگان: از دسته گستره ای از نرم افزار های کرک شده و رایگان برای هر قسمت و تکنولوژی های نرم افزار استفاده خواهد شد. این نرم افزار ها طبق 2 استاندارد : OWASP و BackTrack تبعیت خواهد کرد.
تست دستی: تست دستی عبارت است از اعمال سناریوهای حمله به اکتفای مهارت انسانی و همچنین اکتفا نکردن به خروجیهایی است که در مرحله قبل به دست آمده است. تجربه ثابت کرده است در اغلب موارد مخاطراتی کشف میشود که حتی هوش نرمافزار نیز قادر به شناسایی آنها نیست. در این مرحله موارد زیر :
- تست امنیتی کلیه ورودیها
- در هم کوبیدن نرمافزار در مواردی که امنیت لحاظ شده است
- کشف کلیه ورودیهای نرمافزار
در کل در تمام روندهای بالا که شرح داده شده علاوه بر استفاده از استانداردها و Compliance های موجود حملاتی کاملا تخصصی همچون:
DDOS
Triming Attacks
XML, JSON and General API Security
Encrypting Cookies
SQLi Family
Preventing Tampering Attacks
Server Http Header
Click Jacking
File Upload Vulnerabilities
Injecting Scripts
Cross-Site Scripting
Untrusted Input
Session Fixation / Stealing
Cross-Site Request Forgery (CSRF)
...
شبکه
مراحل تست و نفوذپذیری شبکه
شناسایی شبکه (درون / برون سازمانی): در این مرحله لازم است کل شبکه مورد شناسایی قرار بگیرد. این امر از این حیث انجام میگیرد که یادآور این نکته باشد که ممکن است جایگاه یک شخص با دسترسی بالا به منابع متزلزل گردد و این دید باید لحاظ شود.
شناسایی ارتباطات بیرون شبکه: ممکن است کاربری با یک نرم افزار از راه دور ارتباط داشته باشد، این از این نظر است که نرم افزار تحت وب نباشد، طرق ارتباطی شخص با نرم افزار سرویس دهنده و پروتکل های مورد استفاده از لحاظ امنیتی بسیار حیاتی خواهند بود. در این قسمت لازم است، ابتدا نحوه و مکانیزمی که سازمان برای دور کاری اتخاذ کرده مورد بررسی قرار گیرد و سپس شناسایی شود. برای مثال ارتباط یکی از پرسنل برای دسترسی به یک نرمافزار که بدون نسخه کلاینت یا مشتری است استفاده از تکنولوژی Citrix یا 2x است، این ارتباط خارجی در صورت پذیرفتهشدن به عنوان یکی از سیستمهای شبکه داخلی سازمان مورد تایید خواهد بود که چنانچه امنیت آن مورد نظر قرار نگرفته باشد ریسک بالایی را خواهد داشت.
تست بستر شبکه: بعد از شناسایی کامل شبکه تست شبکه از نظر امنیت و کشف نقاط ضعف آغاز میشود، ( تست نفوذ) در این مرحله از 2 دید بستر ارتباطی مورد بررسی قرار میگیرد:
- روش اول جعبه سیاه یا Black-Box: در این حالت هیچ اطلاعاتی از سازمان درخواست نخواهد شد و صرفا مواردی است که از "بیرون و یا مواردی که عاملی را برای دسترسی از بیرون " محیا میسازند. در این روش از نرم متدولوژیهای زیر بهره گرفته میشود:
- تست اتوماتیک شبکه با استفاده از نرمافزار: استفاده از نرم افزارهایی همچون : CANVAS Enterprise ،Metasploit Pro و ...
- تست اتوماتیک شبکه با اجرای سناریوهای حمله: اجرای سناریوهای حمله با استفاده از کدهای مخرب (0-day exploits) و تکنیکهای فردی نسبت به بستر شبکه و همچنین بررسی و تست تجهیزات شبکه در این قسمت قرار خواهد گرفت.
- مهندسی اجتماعی
- روش دوم جعبه سفید یا white-box: بعد از تحویل گزارش مرحله قبل، اینبار مجوزی مبنی بر حداقل دسترسی ( مانند یکی از پرسنل ) از سیستمها تقاضا میگردد، این دسترسی برای کشف راههای نفوذ از سیستمهایی است که مورد اطمینان شمرده میشوند. از متدها و مکانیزمهای مرحله قبل استفاده خواهد شد.
ارائه طراحی امن نسبت به مخاطرات کشف شده: نهایتا بعد از آنالیز کامل شبکه و یافتن تمامی حفرههای نفوذ و ضعفهای بالقوه و ارائه آنها به کارفرما نوبت به راهنمایی و طراحی یک شبکه امن و ارائه هرگونه تمهیدات است. بستر شبکه را نمیتوان با نصب وصلههای امنیتی یا تنظیم درست یک ماژول امن کرد، باید از سیستمهای امنیتی به روز و هوشمند استفاده کرد. نکته اینکه استفاده از جا و مکان مناسب در بکارگیری این سختافزار تاثیر آنها را چندین برابر خواهد کرد.