آنچه در این صفحه می خوانید:
- تست نرم افزار چیست؟
- چرا تست نرم افزار ها امری ضروری است؟
- انواع تست نرم افزار
- معرفی تست نفوذ (Penetration Test)
- مراحل تست نفوذ (Penetration Test)
- مزایای تست نفوذ (Penetration Test)
- زمان انجام تست نفوذ (Penetration Test)
تست نرم افزار چیست؟
تست نرم افزار تحقیقاتی است که اطلاعاتی را برای ذینفعان فراهم می آورد و به کیفیت محصول یا خدمات نرم افزاری تحت تست می پردازد. تست نرم افزار همچنین می تواند دیدگاه مستقل و عینی از نرم افزار ارائه دهد تا به تجارت اجازه دهد تا خطرات اجرای نرم افزار را درک کند. تکنیک های تست شامل روند اجرای برنامه یا اپلیکیشن با هدف پیدا کردن اشکالات نرم افزاری (خطاها یا سایر نقص ها) و تأیید صحت این محصول نرم افزاری برای استفاده می باشد.
چرا تست نرم افزار ها امری ضروری است؟
- شناسایی خطا ها و نقص های نرم افزار در مراحل توسعه
- تضمین رضایت و اعتماد مشتری به برنامه
- اطمینان از کیفیت محصول
- ارائه امکانات با کیفیت و با هزینه کمتر تعمیرات به مشتریان و حصول نتایج بهتر
- اجرای موثر برنامه کاربردی نرم افزار یا محصول
- اطمینان حاصل کنید که برنامه نباید به هیچ گونه خرابی منجر شود، زیرا در آینده یا در مراحل بعدی توسعه می تواند بسیار گران تمام شود.
- ثابت نگه داشتن شرایط کسب وکار
انواع تست نرم افزار
آموزش تست واحد (Unit testing)
کوچکترین قسمت قابل تست نرم افزار، واحد می باشد که در طی تست واحد، هر واحد به طور جداگانه و دقیق تست می شود.
آموزش تست استاتیک (Static testing)
تکنیک تست نرم افزاری است که در آن نرم افزار بدون اجرای کد مورد تست قرار می گیرد.
آموزش تست یکپارچه سازی (Integration testing)
تست یکپارچه سازی فرآیند توسعه نرم افزاری است که واحدهای برنامه را به صورت چند گانه ترکیب و تست می کنند.
آموزش تست نفوذ (Penetration Testing)
Penetration testing یا pen testing به معنای تست نفوذ، انجام تست سیستم کامپیوتری، شبکه یا برنامه وب برای شناسایی آسیب پذیری هایی است که مهاجم می تواند از آن استفاده کند.
آموزش تست خودکار (Automated Testing)
تست خودکار تکنیک است که اپلیکیشن یا نرم افزار برای پیاده سازی کل چرخه عمر نرم افزار در زمان کم از آن استفاده و بهره وری و اثربخشی را برای نرم افزار تست فراهم می کند.
معرفی تست نفوذ (Penetration Test)
تست نفوذ، که به صورت محاوره ای به عنوان یک آزمون قلم، محاکمه یا هک کردن اخلاقی شناخته می شود، همچنین حمله سایبری شبیه سازی شده مجاز در سیستم رایانه ای است که برای ارزیابی امنیت سیستم انجام می شود. این تست برای شناسایی هر دو نقطه آسیب پذیری، از جمله پتانسیل دسترسی طرف های غیرمجاز برای دستیابی به ویژگی ها و داده های سیستم و همچنین نقاط قوت، و امکان انجام ارزیابی کامل ریسک، انجام می شود.
این فرایند به طور معمول سیستم های هدف و یک هدف خاص را مشخص می کند، سپس اطلاعات موجود را مرور می کند و ابزارهای مختلفی را برای دستیابی به آن هدف مشخص می سازد. هدف آزمایش نفوذ ممکن است جعبه سفید (که اطلاعات مربوط به سیستم و سیستم را در اختیار شما قرار می دهد) یا جعبه سیاه (که فقط اطلاعات اساسی یا هیچ اطلاعاتی را به جز نام شرکت ارائه می دهد) باشد. آزمایش نفوذ جعبه خاکستری ترکیبی از این دو است (جایی که دانش محدودی از هدف با حسابرس به اشتراک گذاشته می شود). تست نفوذ می تواند به تعیین اینکه آیا سیستم در صورت کفایت از دفاعی آسیب پذیر است، کمک کند و اینکه کدام دفاع (در صورت وجود) از بین رفته است.
موارد امنیتی که کشف تست نفوذ باید به صاحب سیستم گزارش شود. گزارش های تست نفوذ همچنین ممکن است تأثیرات احتمالی بر سازمان را ارزیابی کرده و اقدامات متقابل را برای کاهش ریسک پیشنهاد کند. مرکز ملی امنیت سایبر تست نفوذ را چنین توصیف می کند: "روشی برای به دست آوردن اطمینان در امنیت سیستم IT با تلاش برای نقض برخی یا تمام امنیت آن سیستم، با استفاده از همان ابزارها و تکنیک هایی که ممکن است دشمن باشد."
اهداف تست نفوذ بسته به نوع فعالیت تأیید شده برای هرگونه درگیری مشخص با هدف اصلی متمرکز در یافتن آسیب پذیری هایی که می تواند توسط بازیگر مبهم مورد سوء استفاده قرار بگیرد و اطلاع رسانی به مشتری از این آسیب پذیری ها همراه با راهکارهای کاهش توصیه شده متفاوت باشد. آزمایشات نفوذ بخشی از ممیزی امنیتی کامل است. به عنوان مثال، استاندارد امنیت داده کارت صنعت پرداخت نیاز به آزمایش نفوذ در یک برنامه منظم و بعد از تغییرات سیستم دارد.
چندین فریمورک و روش استاندارد برای انجام آزمایش های نفوذ وجود دارد. این موارد شامل کتابچه راهنمای روش آزمایش امنیت امنیت منبع باز (OSSTMM)، استاندارد اجرای تست نفوذ (PTES)، انتشار ویژه NIST 800-115، فریمورک ارزیابی امنیت سیستم اطلاعات (ISSAF) و راهنمای تست OWASP است.
روش فرضیه نقص تکنیک تحلیل و پیش بینی نفوذ سیستم است که در آن لیستی از نقص های فرضی در سیستم نرم افزاری از طریق تجزیه و تحلیل مشخصات و اسناد برای سیستم گردآوری می شود. لیست نقص های فرضی بر اساس احتمال تخمین زده شده در واقع وجود نقص و در سهولت بهره برداری از آن تا حد کنترل یا سازش در اولویت قرار می گیرد. لیست اولویت بندی شده برای هدایت تست واقعی سیستم استفاده می شود.
مراحل تست نفوذ (Penetration Test)
روند آزمایش نفوذ ممکن است به پنج مرحله تقسیم شود:
- بازآفرینی: عمل جمع آوری اطلاعات مهم در مورد سیستم هدف. از این اطلاعات می توان برای حمله بهتر به هدف استفاده کرد. به عنوان مثال، می توان از موتورهای جستجوگر اوپن سورس برای یافتن داده هایی استفاده کرد که می توانند در حمله مهندسی اجتماعی مورد استفاده قرار گیرند.
- اسکن: از ابزارهای فنی برای پیشبرد دانش مهاجم در مورد سیستم استفاده می کند. به عنوان مثال، می توان از Nmap برای اسکن پورت های باز استفاده کرد.
- به دست آوردن دسترسی: با استفاده از داده های جمع آوری شده در مراحل شناسایی و اسکن، مهاجم می تواند از payload برای سوء استفاده از سیستم هدفمند استفاده کند. به عنوان مثال، Metasploit می تواند برای خودکارسازی حملات روی آسیب پذیری های شناخته شده مورد استفاده قرار گیرد.
- حفظ دسترسی: حفظ دسترسی مستلزم انجام اقدامات لازم برای پایدار ماندن در محیط هدف برای جمع آوری هرچه بیشتر اطلاعات است.
- پوشش رد پا: مهاجم باید هر اثری از به خطر انداختن سیستم قربانی، هر نوع داده جمع آوری شده، وقایع ثبت شده را پاک کند تا ناشناس شود.
هنگامی که مهاجمان از آسیب پذیری سوءاستفاده کرد، ممکن است به ماشین های دیگر دسترسی پیدا کند، بنابراین این روند تکرار می شود، یعنی به دنبال آسیب پذیری های جدید و تلاش برای سوء استفاده از آنها باشید. به این فرآیند محوری گفته می شود.
آسیب پذیری
عملیات حقوقی که به آزمایش کننده اجازه می دهد عمل غیرقانونی را انجام دهد شامل دستورات SQL بدون اشکال، کلمات عبور بدون تغییر در پروژه های منبع قابل مشاهده، روابط انسانی و عملکردهای قدیمی و رمزنگاری شده است. ممکن است یک نقص تنها کافی نباشد که بتواند سوءاستفاده جدی را فعال کند. استفاده از چندین نقص شناخته شده و شکل دادن به بار به روشی که به عنوان عملیات معتبر ظاهر شود، تقریباً همیشه مورد نیاز است. Metasploit یک کتابخانه روبی را برای کارهای مشترک فراهم می کند، و پایگاه داده از بهره برداری های شناخته شده را حفظ می کند.
تحت محدودیت بودجه و زمان، فازی یکی از روش های متداول است که آسیب پذیری ها را کشف می کند. هدف این است که از طریق ورودی تصادفی خطای بدون حل را دریافت کنید. آزمایش کننده از ورودی تصادفی برای دستیابی به مسیرهای کد استفاده شده کمتر استفاده می کند. مسیرهای کدگذاری خوب معمولاً عاری از خطا هستند. خطاها مفید هستند زیرا هم اطلاعات بیشتری از قبیل خرابی سرور HTTP با پشتیبان کامل اطلاعات exp را در معرض نمایش قرار می دهند، مانند سرریزهای بافر و یا مستقیماً قابل استفاده هستند.
تصور کنید یک وب سایت دارای 100 صندوق ورودی متن است. تعداد کمی در معرض تزریق SQL در رشته های خاص هستند. امیدوارم برای مدتی رشته های تصادفی را به آن جعبه ها بپیچید امیدوارم مسیر کد اشکال زده را طی کنید. این خطا خود را به عنوان صفحه اچ تی ام ال (HTML) شکسته که به دلیل خطای اس کیوال (SQL) ارائه شده است نشان می دهد. در این حالت، فقط جعبه های متنی به عنوان جریان ورودی رفتار می شوند. با این حال، سیستم های نرم افزاری جریانهای ورودی زیادی دارند، مانند داده کوکی و جلسه، جریان پرونده بارگذاری شده، کانال های RPC یا حافظه. خطاها در هر یک از این جریان های ورودی می توانند رخ دهند. هدف آزمون این است که ابتدا خطای حل نشده را بدست آورید و سپس عیب را بر اساس مورد آزمون شکست خورده درک کنید. آزمایش کنندگان تا زمانی که صحیح نباشد، ابزار خودکار را برای تست درک خود از نقص می نویسند. پس از آن، ممکن است نحوه بسته بندی هزینه بار به گونه ای آشکار شود که سیستم هدف اجرای آن را آغاز کند. اگر این امر قابل استفاده نباشد، می توان امیدوار بود كه خطای دیگری كه توسط فیوزر حاصل می شود، ثمر بیشتری می دهد. استفاده از فوزر با چک نکردن مسیرهای کد کافی که سوءاستفاده ها بعید است، در وقت صرفه جویی می کند.
ظرفیت بارگیری
عملکرد غیرقانونی یا بارگیری در اصطلاحات Metasploit می تواند شامل توابع مربوط به ورود به صفحه کلید، گرفتن عکس از صفحه نمایش، نصب نرم افزارهای تبلیغاتی مزاحم، سرقت اعتبار، ایجاد پشتیبان با استفاده از shellcode یا تغییر داده ها باشد. برخی از شرکت ها پایگاه داده های بزرگی از بهره برداری های شناخته شده را حفظ کرده و محصولاتی را ارائه می دهند که به طور خودکار سیستم های هدف را برای آسیب پذیری ها آزمایش می کنند:
- Metasploit
- Nessus
- Nmap
- OpenVAS
- W3af
مزایای تست نفوذ (Penetration Test)
تست نفوذ به طور معمول توانایی سیستم را برای محافظت از شبکه ها، برنامه ها، نقطه پایانی و کاربر از تهدیدات خارجی یا داخلی ارزیابی می کند. همچنین تلاش می کند تا از کنترل های امنیتی محافظت و تنها دسترسی مجاز را تضمین کند. تست نفوذ ضروری است زیرا:
- شناسایی محیط شبیه سازی شده برای مثال: چگونگی حمله ی نفوذگر یا هکر به سیستم از طریق حمله کلاه سفید
- کمک می کند تا مکان های ضعیفی را پیدا کنید که ممکن است نفوذگر بتواند به ویژگی های رایانه و داده دسترسی پیدا کند.
- پشتیبانی از جلوگیری از حمله کلاه سیاه و محافظت از داده های اصلی
- برآورد میزان حمله به کسب و کار بالقوه
- نشان دهنده ی شواهدی است که دلیل اهمیت افزایش سرمایه گذاری در جنبه های امنیتی فناوری را ارائه می هد.
بهبود سیستم مدیریت
اطلاعات دقیق در مورد تهدیدات امنیتی را فراهم می کند. علاوه بر این، آن ها را نیز بر اساس درجه آسیب پذیری دسته بندی می کند و به شما نشان می دهد، کدام بیشتر و کدام کمتر آسیب پذیر است. بنابراین، می توانید به راحتی و با دقت زیاد مدیریت سیستم امنیتی خود را با اختصاص منابع امنیتی انجام دهید.
اجتناب از جریمه
تست نفوذ فعالیت های اصلی سازمان شما را به روز می کند و با سیستم حسابرسی مطابقت دارد. بنابراین، تست نفوذ شما را از دادن جریمه محافظت می کند.
حفاظت از آسیب مالی
نقض ساده سیستم امنیتی می تواند میلیون ها دلار آسیب را به همراه داشته باشد. تست نفوذ می تواند سازمان شما را از چنین آسیب هایی محافظت کند.
حفاظت از مشتری
حتی یک نقض کوچک در داده های مشتری ممکن است موجب آسیب مالی بزرگ و آسیب های اعتباری می شود. این سازمان هایی را که با مشتریان برخورد می کنند محافظت می کند و اطلاعات آنها را حفظ می کند.
زمان انجام تست نفوذ (Penetration Test)
تست نفوذ ویژگی اساسی است که باید به طور منظم برای تأمین امنیت سیستم اعمال شود. علاوه بر این، در هر زمان که موارد زیر مشاهده شد باید انجام شود.
- سیستم امنیتی تهدیدهای جدید توسط مهاجمان را کشف می کند.
- افزودن زیرساخت شبکه جدید
- به روز رسانی سیستم و نصب نرم افزار جدید
- جابه جایی محل کار یا شرکت
- تنظیم برنامه / سیاست جدید کاربر نهایی