امنیت نرم افزار

  • تست نفوذ و ارزیابی امنیتی

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

    تست نفوذ (Penetration Testing) متداولترین روش سنجش امنیت شبکه ها و سامانه های مختلف به منظور کشف آسیب پذیری ها در لایه های و بخش های مختلف منطبق بر جزییات و محدوده (Scope) تعیین شده در قرارداد تدوین شده و ارائه دقیق آنها به مشتریان است.

    برخورداری از دانش و آگاهی های امنیتی و آشنایی کامل با ساختارهای دفاعی (Defensive) و تسلط بر روشهای نفوذ و عبور از مکانیزمهای دفاعی(Offensive and Defense Evasion)  توسط متخصصین در آزمون تست نفوذ از اهمیت حیاتی برخوردار است.

    در این روش متخصصین تست نفوذ با شبیه سازی جدیدترین روش های نفوذی که توسط هکرها و نفوذ گران غیرقانونی استفاده میشود سامانه های مختلف را تحت آزمایش های امنیتی مختلف قرار داده و رخنه ها و آسیب پذیری های امنیتی کشف شده را غالبا با ارائه راهکارهای جلوگیری از نفوذ و رفع این آسیب پذیری ها (Mitigation and Prevention Methods) به مشتریان ارائه مینمایند.

    به صورت کلی خدمات تست نفوذ با توجه به قرارداد منعقد شده و درخواست مشتریان به سه روش جعبه سفید (White Box)، جعبه خاکستری (Grey Box) و جعبه سایه (Black Box) ارائه میشود.

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

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

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

    هر کدام از این روشها دارای مزایا خاصی است که متقاضیان با توجه به نیازها و سیاستهای امنیتی سازمان متبوع خود میتوانند به انتخاب آن و انعقاد قرارداد اقدام نمایند. تست نفوذ بخش های مختلفی را شامل میشود که شاخص ترین آنها را بیان خواهیم کرد.

    • تست نفوذ شبکه

    خدمات تست نفوذ شبکه با انجام آزمونهایی از قبیل عبور از دیواره آتش (Firewalls Bypass)، عبور از سیستم های نرم افزاری و سخت افزاری، کشف و جلوگیری از نفوذ (IDS/IPS Bypass)، تست امنیت و نفوذ به روتر (Router Testing)، شناسایی دی ان اس (DNS Foot printing)، شناسایی پورت ها و سرویسهای فعال برروی آنها (Port Scanning and Installed Services)، آسیب پذیری ها در ساختار و تنظیمات شبکه (Network Configuration Vulnerabilities) و ده ها آزمون دیگر در شبکه های با سیم (Wired Networks) و شبکه های بی سیم (Wireless Networks) و ارائه راهکارهای مناسب فنی برای رفع آسیب پذیری های کشف شده ارائه میشوند.

    • تست نفوذ وبگاه های اینترنتی

    به طور کلی سرویس های تست نفوذ وبگاه های اینترنتی با بهره گیری از سه متد بین المللی شناخته شده نسخه چهارم پروژه منبع باز امنیت سامانه های وب (OWASP Testing Guide v4OSTMM از شرکت ISECOM و یا متد PTES و با توجه به نوع و ابعاد سامانه های تحت آزمون قرار گرفته، ارائه میگردند.

    با توجه به نوع تست نفوذ سمت کلاینت یا سمت سرور، آزمون هایی همچون تزریق (Injection)، احراز هویت ناقص ( Broken Authentication)، تزریق اسکریپت (XSS)، کنترل دسترسی معیوب (Broken Access Control)، عدم تنظیمات صحیح امنیتی (Security Misconfiguration) و ده ها آزمون دیگر بر روی سامانه های تحت آزمون انجام میگردد.

    • تست نفوذ نرم افزار موبایل

    در این بخش با بهره گیری از جدیدترین متدهای بین المللی تست نفوذ از جمله پروژه منبع باز موبایل (OWASP Mobile Top 10) در محیطی شبیه سازی شده، متخصصین اقدام به انجام تست نفوذ بر روی ضعف ها و آسیب پذیری های امنیتی از قبیل ذخیره سازی ناامن اطلاعات (Insecure Data Storage)، ارتباطات ناامن (Insecure Communication)، احراز هویت ناامن (Insecure Authentication)، رمز نگاری ناکافی (Insufficient Cryptography)،  مجوز های ناامن (Insecure Authorization) و غیره برروی نرم افزارهای مختلف بهرهمند از سیستم عامل های اندروید و آی او اس برای مشتریان خواهد نمود.

    • تست نفوذ سامانه های صنعتی

    تامین امنیت و امن سازی انواع سامانه ها و کنترلر های  صنعتی (Industrial Control System) همچون SCADA، DCS و PLC با توجه به استفاده گسترده در بخش های مختلف اعم از انرژی، درمان و خدمات عمومی از اهمیت فوق العاده بالا و حیاتی برای کشورمان برخوردار است. در کنار مشکلات امنیتی که مستقیما این سامانه ها را تهدید میکند، اتصال این سامانه ها به شبکه های ارتباطی سازمانها گرچه دسترسی و تعامل با این سامانه ها را راحتر میکند ولی به همان نسبت سطح تهدیدات امنیتی را گسترش میدهد.

    سیاستهای امنیتی سازمان (Security Policies)، امنیت کنترلر ها و تنظیمات امنیتی(ICS Secure Configuration) ، امنیت شبکه های ارتباطی ، امنیت پروتکل های ارتباطی بکار گرفته شده، بخش بندی و جداسازی فیزیکی و مجازی شبکه (Network Segmentation) از جمله موارد مهمی هستند که برای بخش تست امنیت سامانه های صنعتی مورد تست قرار میگیرند.

    • تست نفوذ با روشهای مهندسی اجتماعی

    مهندسی اجتماعی (Social Engineering) یا به تعریف برخی از روانشناسان هنر فریب(Art of Deception)  گرچه نسبت به دیگر تست های نفوذ نیازمند بهره گیری کمتری از مسایل فنی است ولی بدون شک یکی از موثرترین روشهای نفوذ و گردآوری اطلاعات حساس سازمان ها و شرکتهای مختلف با بهره گیری از تکنیک ها و ترفند های روانشناختی است.

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

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

    ارزیابی امنیتی (Vulnerability Assessments)، که از جهات مختلف شباهت هایی به تست نفوذ دارد و همچون سرویس ها تست نفوذ بخشهای امنیت شبکه، امنیت سامانه ها و وبگاه ها، نرم افزارهای موبایل و سامانه های صنعتی را در بر میگیرد، یکی دیگر از روشهای موثر ایمن سازی از طریق سنجش امنیتی بخش های مختلف سیستم ها و سامانه هایی که نیازمند برخورداری از پایداری و امنیت بالایی هستند است.

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

    در این میان یکی از شاخص ترین تفاوتهای بین تست نفوذ و ارزیابی امنیتی، عدم تلاش برای نفوذ  (Penetration)و بهره گیری از آسیب پذیری های کشف شده (Exploitation) در ارزیابی امنیتی برخلاف تست نفوذ است. در ارزیابی امنیتی معمولا با توجه به قرارداد منعقد شده ساختار آی تی سازمان با ابزارهای تخصصی دستی و اتوماتیک اسکن شده و نتایج حاصله به صورت مکتوب و مدون برای بهینه سازی های امنیتی در اختیار متقاضی قرار میگیرد.

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

    اصولی ترین روش بهره گیری از مزایای ارزیابی امنیتی برای سازمانها و شرکتها ادغام دائمی آن با برنامه آی تی سازمان و انجام مداوم آن با فاصله های زمانی کوتاه است.

     

  • استانداردها و متدولوژی های بین المللی تست نفوذ

    همانطور که در مقالات قبلی اشاره شد موثرترین، کارآمد ترین و کم هزینه ترین روش برای جلوگیری از نفوذ هکرها و خرابکاران سایبری تست و رفع آسیب پذیری ها و ایمن سازی نرم افزارها و سیستم ها در مرحله طراحی و قبل از ارائه نهایی آنها به مشتری خواهد بود. ولی به دلایلی همچون محدودیتهای زمانی، فنی و یا سهل انگاری در غالب موارد نرم افزارها و سیستم های توسعه داده شده از ایمنی مناسبی برخوردار نبوده و کشف و رفع ایرادات امنیتی و ایمن سازی بخشهای مختلف این سامانه ها حیاتی است. در این مقاله به صورت اجمالی با شاخص ترین استانداردها و متدولوژی های بین المللی تست نفوذ (Penetration Testing Methodologies) آشنا خواهیم شد.

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

    متدولوژی های تست نفوذ متعددی برای استفاده فعالین و علاقه مندان امنیت طراحی و ارائه شده است که بخشی از آنها نیازمند پرداخت هزینه عضویت ماهانه یا سالانه و بخشی از آنها به صورت رایگان ارائه میشوند. در این مطلب با متدولوژی هایی که توسط OWASP ،ISECOM ،PS و NIST که از شناخته شده ترین استانداردهای ارائه شده در این زمینه هستند به صورت اجمالی آشنا میشویم.

    بدون شک مجموعه OWASP یا پروژه منبع باز امنیت سامانه های وب (Open Web Application Security Project)  از شاخص ترین موسسات فعال بین المللی در بخشهای مختلف امنیت نرم افزار خصوصا امنیت سامانه های وب است. در زمینه تهیه و ارائه متدولوژی های تست نفوذ OWASP از دسامبر ۲۰۰۴ با ارائه نسخه اول OWASP Testing Guide که در حال حاضر به نسخه چهارم که در سال ۲۰۱۴ تهیه شده ارتقا یافته و در دسترس عموم قرار دارد از پیشگامان این عرصه است. در مطالب آتی با این متدولوژی به صورت مفصل آشنا خواهیم شد.

    موسسه ISECOM نیز از ژانویه ۲۰۰۱ با ارائه دستورالعمل منبع باز متدولوژی تست امنیت (Open Source Security Testing Methodology Manual) یا OSSTMM که آخرین نسخه رایگان آن نسخه سه و نسخه چهارم آن به صورت پرداخت حق عضویت ارائه میگردند نقش مهمی در ترسیم سیاست های امنیتی سازمان ها برای ارائه و تست راهکارهای امنیتی بر عهده گرفته است.

    موسسه ملی استاندارد و تکنولوژی NIST نیز با استاندارد NIST Special Publication 800-115 از سال ۲۰۰۸ و در چهار بخش اصلی برنامه ریزی Planning، کشف Discovery، نفوذ  Attack و گزارش دهی Reporting جزو ارائه دهندگان استانداردهای تست نفوذ است.

    از دیگر متدولوژی ها شناخته شده استاندارد اجرایی تست نفوذ (Penetration Testing Execution Standard) یا PTES است که اولین نسخه آن در سال ۲۰۰۹ توسط تیمی از محققین امنیتی به سرپرستی آقای نیکرسون عرضه گردیده و به صورت اجمالی شامل هفت مرحله است. این استاندارد با بهره گیری از دیگر استانداردها همچون استاندارد OWASP Testing Guide در بخشهای مختلف خصوصا در بخش تست سامانه های وب متدولوژی تست نفوذ نسبتا جامعی را ارائه میکند. در مطالب آینده با این متدولوژی نیز به صورت مفصل آشنا خواهیم شد.

    در پایان بررسی اجمالی این چهار استاندارد ذکر این نکته ضروری است که امکان شبیه سازی صد در صدی شرایط حملاتی که از سوی هکرها و نفوذ گران انجام می شود برای تست نفوذ گر عملا وجود ندارد. برخلاف متخصص تست نفوذ که باید تابع و متعهد به قوانین و قواعد حاکم بر قرارداد منعقد شده باشد، هکرها ملزم به تبعیت از هیچکدام از این قواعد نیستند. به طور مثال اجتناب از وقوع انواع مختلفی از مشکلات تست نفوذ از قبیل از کار افتادگی سیستم ها (Crash) و زمان غیر قابل دسترس بودن سیستم ها تست نفوذ قرار گرفته (Downtime) که برای متخصص تست نفوذ قانونمند و حرفه ای از اهمیت بالایی برخوردار است، اهمیت چندانی برای هکر ها خصوصا هکرهای تازه کار (Script Kiddies) و هکرهای تخریب گر (Crackers) که به قصد تخریب سیستم ها را مورد حمله قرار میدهند  نخواهند داشت. از این رو امکان شبیه سازی کامل و دقیق حملات هکرها در تست های نفوذ به دلایل ذکر شده وجود نخواهد داشت و بهره گیری از دیگر روش های ایمن سازی در کنار تست نفوذ و عیب یابی برای حفظ امنیت و یکپارچگی سامانه های مختلف ضروری خواهد بود.

  • ایمن سازی نرم افزار با بهره گیری از Misuse Case و Threat Modeling

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

    مشکلات و حملات امنیتی که  نرم افزارها و سامانه های مختلف را درگیر میکنند غالبا به دلیل نقص هایی است که در طراحی و توسعه اولیه نرم افزارها رخ میدهند. متاسفانه این نقص های امنیتی سطح پایین و غالبا ابتدایی امکان سو استفاده وسیع توسط هکرها و نفوذ گران را فراهم مینمایند. حملاتی مانند حمله تزریق به پایگاه داده SQL Injection، آسیب پذیری های XSS و حمله سرریز بافر Buffer Overflow که سالهاست در صدر لیست ده حمله برتر OWASP قرار دارند و با روشهایی همچون صحت سنجی ورودی ها Input Validation قابل پیشگیری هستند، غالبا با سو استفاده از این دسته ایرادات امنیتی رخ میدهند.

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

    از متداول ترین روشهای ایمن سازی در بین توسعه دهندگان نرم افزارهای مختلف، ایمن سازی چرخه توسعه نرم افزارها (SDLC) و شبیه سازی خطرات یا Threat Modeling هستند که دستورالعمل اجرایی این دو روش بر این قاعده استوار است که برنامه نویسان در سطوح مختلف باید از قواعد کد نویسی امن مطلع بوده و با استفاده از این روشها در مراحل مختلف توسعه نرم افزار احتمال سو استفاده های امنیتی را کاهش دهند. با این حال استفاده از این روشها و کد نویسی امن به تنهایی نمیتواند امنیت نرم افزارها را در مقابل تهدیدات امنیتی مختلف تضمین نماید و بهره گیری از دیگر روشهای ایمن سازی باید در دستور کار قرار گیرد.

    از دیگر روشهای نه چندان جدید ولی بسیار کاربردی استفاده از خروجی ها و نتایج تست های Misuse Case که بر پایه مدل Use Case که در بخش های مختلف توسعه نرم افزار طراحی شده است. در ساده ترین تعریف این دو مدل نحوه و امکان بهره گیری سیستم از قابلیت های پیش فرض طراحی شده در بخش های مختلف نرم افزار را Use Case و در طرف مقابل روشهای احتمالی سو استفاده از قابلیت های توسعه داده شده به منظور آسیب رساندن به امنیت و یکپارچگی نرم افزار توسط هکرها را به عنوان Misuse Case معرفی میکنند.

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

    در این مدل نرم افزار در حال توسعه با توجه به نوع و کاربرد آن باید حداقل تحت تست ها و حملاتی همچون منع سرویس (DoS)، تزریق پایگاه داده (SQL Injection)، بروت فورس (Brute Force)، سرریز بافر (Buffer Overflow) و بالا بردن سطح دسترسی (Escalation of Privileges) قرار گیرد.

    طراحی و اجرای Misuse Case مختلف بر روی بخش ها و قابلیتهای مختلف نرم افزار در حال توسعه غالبا کشف نقص های امنیتی مختلف را به دنبال خواهد داشت که این نقص های فنی و امنیتی بدست آمده ایجاد Use Case جدید و اصلاح قابلیت های فعلی و افزودن قابلیتهای امنیتی جدید در صورت نیاز برای جلوگیری و انسداد نقص های امنیتی کشف شده را در پی خواهد داشت. طراحی و اجرای دقیق تست های Misuse Case در کنار امکان کشف و ضبط نقص های امنیتی و راه های مقابله با آنها، امکان ایجاد تغییرات ساختاری در معماری کلی نرم افزار در جهت ایمن سازی را نیز به توسعه دهنده خواهد داد.

    دو مدل معرفی شده Threat Modeling و Misuse Case در کنار اشتراکات متعدد، در نحوه تعامل با بخش های توسعه ای نرم افزار تفاوتهای محسوسی با هم دارند. شاخص ترین آنها در نحوه تعامل با ساختار کلی و اجزای نرم افزار است، به نحوی که در شبیه سازی خطرات یا Threat Modeling تمرکز اصلی بر روی معماری و ساختار کلی نرم افزار و در مدل Misuse Case امکانات و قابلیتهای مختلف نرم افزار در حال توسعه به صورت جداگانه و دقیق مورد توجه و تست قرار میگیرند.

    در پایان این مطلب ذکر این نکته ضروری است که برای رسیدن به بهترین نتیجه ممکن و بهره گیری از مزایای ایمن سازی این دو مدل، توسعه دهندگان باید همکاری نزدیکی با متخصصین تست و آنالیز و دیگر اعضای تیم داشته باشند. از این جهت بهره گیری از جدیدترین و موثرترین روشهای جمع آوری اطلاعات از اعضای مختلف تیم در تمام بخش ها کاملا ضروری خواهد بود. برین استورمینگ Brain Storming از موثرترین و جدیدترین روشهای گردآوری اطلاعات از تمام اعضای مشارکت کننده در توسعه نرم افزار است. در این روش معمولا اعضای تیم در بخش های مختلف گرد آمده و ایده ها و نظرات خود را در مورد خطرات احتمالی و نحوه ایمن سازی نرم افزار مورد نظر را بدون محدودیت ارائه میدهند.

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

     

  • داکر و مزایا و معایب آن در مقابل ماشینهای مجازی

    امروزه تصور نیاز به تهیه سیستم های فیزیکی مختلف برای انواع سیستم عاملها و آزمایشهای امنیتی مختلف با توجه به هزینه های گزاف آنها خصوصا برای متخصصین امنیت که نیازمند تعامل با سیستم عامل ها و برنامه های فراوانی هستند دور از ذهن خواهد بود، بنابراین میتوان نتیجه گیری کرد که شاخص ترین امتیاز محفظه ها Containers و ماشینهای مجازی Virtual Machines برای متخصصین امنیت ایجاد فضا ای نسبتا ایمن و ایزوله شده برای برقراری آزمایشگاه مجازی تست انواع نرم افزارها و تکنولوژی با کمترین هزینه و کاربردی ترین و سریعترین روشها است.

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

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

    شناخته شده ترین کانتینر یا محفظه مجازی داکر Docker از کمپانی شناخته شده داکر است. مطالب فراوانی در مورد نحوه نصب و راه اندازی داکر منتشر گردیده که برای علاقمندان آشنایی به این تکنولوژی قابل دسترسی است. از این رو در این مطلب تمرکزاصلی برروی بررسی مزایا و معایب استفاده از داکر و کلا محفظه های مجازی Containers خصوصا برای متخصصین و علاقه مندان رشته امنیت و مقایسه آنها با ماشینهای مجازی یاVirtual Machines  قرار خواهد گرفت.

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

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

    شایان ذکر است که گرچه این قابلیت مزایای فراوانی را برای بهره گیری از داکر برای کاربر ایجاد میکند در عین حال میتواند مشکلات امنیتی ای را نیز ایجاد نماید. یکی از مهمترین آنها این است که از آنجایی که محفظه ها در داکر ارتباط مستقیمی با هسته سیستم عامل برقرار میکنند بنابراین تمام برنامه ها و پروسس هایی که دسترسی روت (Root Privilege) دارند میتوانند مستقیما با کرنل سیستم تعامل کنند که این میتواند باعث ایجاد مشکلات امنیتی از جمله امکان دسترسی و سو استفاده هکرها از هسته مرکزی سیستم عامل میزبان گردد.

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

    لیست نسبتا کاملی از سیستم عاملهای مختلف، دیتا بیسها و دیگر برنامه های کاربردی در Docker Hub به رایگان قابل دسترس است. یکی از جذابترین سیستم عاملهای قابل دسترس در این پایگاه REMnux  است که  در واقع مجموعه ای رایگان از ابزارهای آنالیز و مهندسی معکوس بد افزار بر پایه سیستم عامل لینوکس اوبنتو است. توزیع REMnux  حاوی تعداد فراوانی ابزار تجزیه و تحلیل برای سیستم عاملهای لینوکس و ویندوز از جمله Thug, Viper, Rekall, JSDetox است. نرم افزار آسیب پذیر تحت وب Juice Shop  از موسسه OWASP یکی دیگر از برنامه های قابل دسترس مفید مخصوصا برای علاقمندان و متخصصین امنیت وب است که بدون نیاز به نصب درایورها و نیازمندی های مختلف همچون پیکربندی Node.js به راحتی قابل دانلود و اجرا است.

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

  • چگونه متخصص امنیت شویم

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

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

    ۱- متخصص امنیت شبکه (Network Security Expert)

    امنیت زیرساختهای ارتباطی و ساختارهای شبکه یکی از مهمترین بخشهایی است که هر کمپانی باید توجه خاصی را به آن مبذول نماید. عدم توجه به امنیت شبکه های ارتباطی میتواند خسارات جبران ناپذیری به بار آورد. از این رو متخصصین شبکه مسئولیت سنگین و خطیری در پیش دارند. متخصصین امنیت علی الخصوص امنیت شبکه نیازمند داشتن آگاهی و تسلط هم بر روشهای نفوذ و هم بر عبور از مکانیزمهای دفاعی (Offensive and Defense Evasion) و ساختارهای دفاعی (Defensive) هستند. به عبارت دیگر یک متخصص شبکه در کنار برخوردار بودن از دانش تقویت ساختارهای شبکه ای (Network Hardening Techniques) نیازمند داشتن نگاهی همانند یک نفوذ گر نیز است.

    • تسلط کامل و عمیق به استانداردها و مدلهای OSI and TCP/IP کاربرد ها، شباهت ها و تفاوتهای آنها در لایه های مختلف
    • تسلط کامل به پروتکل های TCP, UDP نحوه کارکرد و تفاوتهای آنها در لایه های مختلف
    • آشنایی با تکنولوژی های ایثرنت (Ethernet) و بی سیم (Wireless) و استاندارد های IEEE 802.3 و IEEE 802.11 و زیر شاخه های آن
    • آشنایی با ساختار تمام سیستم عاملها (Windows, Linux, OSX) و نحوه کارکرد آنها و تسلط کافی و توانایی تعامل با سیستم با استفاده از دستورات خط فرمان (CLI)
    • آشنایی با زبانهای برنامه نویسی خصوصا زبانهای اسکریپت نویسی همانند پایتون، روبی، پرل و تسلط بر حداقل یکی از آنها
    • آشنایی با انواع آلگوریتم های رمزنگاری و نحوه بکارگیری آنها
    • آشنایی با انواع حملات مخاطره انگیزی که امنیت یک شبکه را تهدید خواهد کرد و راههای مقابله با آنها
    • آشنایی و تسلط کامل به انواع نرم افزارهای پالایش شبکه همانند Wireshark, Nmap, Nessus, Qualys, Retina و غیره
    • آشنایی با انواع سیستمهای حفاظت نرم افزاری و سخت افزاری و نحوه عملکرد آنها از قبیل سیستم های تشخیص نفوذ (IPS, IDS) و دیواره های آتش (Firewall)
    • آشنایی با انواع تجهیزات شبکه ای سخت افزاری همانند Cisco, Junpier, Microsoft, Mikrotik, HP, Dell، نحوه پیکر بندی و عملکرد آنها در سیستم عاملهای مختلف، و آسیب پذیری های شناخته شده آنها
    • آشنایی با استانداردها و فریم ورک های امنیتی از قبیل ISO 27001/27002 و NIST

     

    ۲- متخصص امنیت وب (Web Security Expert)

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

    • آشنایی با زبانهای برنامه نویسی سمت کلاینت و سرور از جمله (JavaScript, HTML, SQL, PHP, ASP,… )
    • آشنایی با انواع سیستمهای مدیریت محتوا (Content Management Systems) از قبیل WordPress, Drupal, Joomla نحوه کارکرد و آسیب پذیری های مرتبط با آنها
    • تسلط کامل به استانداردها و مدلهای OSI and TCP/IP کاربرد ها، شباهت ها و تفاوتهای آنها در لایه های مختلف
    • تسلط کامل به پروتکل های TCP, UDP نحوه کارکرد و تفاوتهای آنها در لایه های مختلف
    • آشنایی با زبانهای برنامه نویسی خصوصا زبانهای اسکریپت نویسی همانند پایتون، روبی، پرل و تسلط بر حداقل یکی از آنها
    • آشنایی با ساختار تمام سیستم عاملها (Windows, Linux, OSX) و نحوه کارکرد آنها و تسلط کافی و توانایی تعامل با سیستم با استفاده از دستورات خط فرمان (CLI)
    • آشنایی با انواع آلگوریتم های رمزنگاری و نحوه بکارگیری آنها
    • آشنایی با انواع نرم افزارهای پالایش و نرم افزارهای کشف خودکار و نیم خودکار آسیب پذیری در سامانه های اینترنتی از قبیل Wireshark, Fiddler, Nmap, Nessus, Nexpose, Burp Suite, OWASP ZAP, و غیره
    • آشنایی با ابزارهای تست سورس کد و دیباگ از قبیل Chrome and Firefox DevTools, CA Veracod
    • آشنایی با انواع دیوارهای آتش وب (Web Application Firewall) و نحوه پیکر بندی و عملکرد آنها
    • آشنایی با تکنولوژی های جدید از قبیل بلاکچین و نحوه استفاده از آنها برای تقویت امنیت سامانه های اینترنتی
    • آشنایی با قوانین جرایم رایانه ای و سایبری و محدوده فعالیت (Scope Compliance) علی الخصوص برای تست نفوذ (Penetration Testing) و ارزیابی امنیتی (Vulnerability Assessment)
    • آشنایی با استانداردها و فریم ورک های امنیتی از قبیل ISO 27001/27002 و NIST

     

     ۳- متخصص امنیت اینترنت اشیا (IoT Security Expert)

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

    • آشنایی با استانداردها و مدلهای OSI and TCP/IP کاربرد ها، شباهت ها و تفاوتهای آنها در لایه های مختلف
    • آشنایی با پروتکل های TCP, UDP نحوه کارکرد و تفاوتهای آنها در لایه های مختلف
    • آشنایی با ساختار تمام سیستم عاملها (Windows, Linux, OSX) و نحوه کارکرد آنها و تسلط کافی و توانایی تعامل با سیستم با استفاده از دستورات خط فرمان (CLI)
    • آشنایی با تکنولوژی بی سیم (Wireless) و استاندارد IEEE 802.11 و زیر شاخه های آن
    • آشنایی با سامانه سرپرستی و گردآوری داده (SCADA) و نحوه عملکرد و مشکلات امنیتی مرتبط با این تکنولوژی
    • آشنایی با پروتکل Zigbee و استاندارد IEEE 802.15.4
    • آشنایی با نسخه های مختلف Bluetooth و نحوه عملکرد آنها
    • آشنایی با پروتکلهای LoraWan, Z-Wave و نحوه عملکرد آنها
    • آشنایی با پروتکل NFC و نحوه عملکرد آن
    • آشنایی با پروتکل های Insteon و Thread
    • آشنایی با حداقل یک زبان اسکریپت نویسی همانند پایتون

     

    ۴- متخصص امنیت ابری (Cloud Security Expert)

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

    • تسلط کامل و عمیق به استانداردها و مدلهای  OSI and TCP/IP کاربرد ها، شباهت ها و تفاوتهای آنها در لایه های مختلف
    • تسلط کامل به پروتکل های TCP, UDP نحوه کارکرد و تفاوتهای آنها در لایه های مختلف
    • آشنایی با ساختار تمام سیستم عاملها (Windows, Linux, OSX) و نحوه کارکرد آنها و تسلط کافی و توانایی تعامل با سیستم با استفاده از دستورات خط فرمان (CLI)
    • آشنایی با زبانهای برنامه نویسی متداول و جدید در حوزه برنامه نویسی ابری مانند SQL, Clojure Math, Haskell Functional
    • آشنایی با سرویس دهنده های مطرح ابری از قبیل Amazon Web Service (AWS), Microsoft Azure, Google Cloud Platform و غیره و انواع سرویس های ارائه شده
    • آشنایی با انواع نرم افزارها و سخت افزارهای ابری، نحوه کارکرد و تعامل با آنها
    • آشنایی با انواع تهدیدات امنیتی که سرویس های ابری را تهدید میکنند و نحوه پیشگیری و تعامل با آنها

     

    ۵- متخصص جرم شناسی (Forensic Expert)

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

    • آشنایی با پروسه دریافت و نگهداری مدارک بررسی شده (Chain of Custody)
    • آشنایی با فراریت و عدم ثبات اطلاعات استخراجی و نحوه تعامل با آنها خصوصا در حافظه و اولویت بندی آنها (The Order of Volatility)
    • آشنایی با زیر شاخه های مختلف جرم شناسی از قبیل جرم شناسی وب (Web Forensic)، جرم شناسی شبکه (Network Forensic) و جرم شناسی دیجیتال (Digital Forensic)
    • آشنایی با استانداردها و مدلهای OSI and TCP/IP و پروتکل های TCP, UDP و نحوه کارکرد آنها در بخش جرایم مربوط به وب و شبکه های ارتباطی
    • آشنایی با ساختار تمام سیستم عاملها (Windows, Linux, OSX) و نحوه کارکرد آنها و تسلط کافی و توانایی تعامل با سیستم با استفاده از دستورات خط فرمان (CLI)
    • آشنایی با نحوه بازیابی لاگ فایلهای مختلف از ترافیک شبکه
    • آشنایی با نحوه عملکرد انواع ویروسها و فایلهای مختلف
    • آشنایی با نحوه و کارکرد انواع مختلف حافظه های سیستمی و نحوه صحیح بازیابی اطلاعات (Memory Acquisition)
    • آشنایی با انواع فایل فرمت های سیستم عاملهای مختلف و نحوه بازیابی و نگهداری آنها و ارزش قانونی هر کدام از فایلهای بازیابی شده
    • آشنایی با انواع سخت افزارهای بازیابی اطلاعات از قبیل Tableau Hardware, Media Clone, Talino Sumuri Workstations و غیره
    • آشنایی با انواع نرم افزار های بازیابی اطلاعات از قبیل SANS SIFT, Volatility, The Sleuth Kit, Autopsy, FTK Imager و غیره
    • آشنایی با نحوه بازیابی اطلاعات مخفی شده، حذف شده، رمز گذاری شده از سیستمهای دیجیتالی مختلف
    • آشنایی و تسلط کامل به قوانین جرایم رایانه و جرم شناسی

     

    ۶- متخصص کرکینگ و مهندسی معکوس (Reverse Engineering Expert)

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

    • تسلط کامل به زبانهای برنامه نویسی سطح پایین مانند اسمبلی و C
    • آشنایی با ساختار تمام سیستم عاملها (Windows, Linux, OSX) و نحوه کارکرد آنها و تسلط کافی و توانایی تعامل با سیستم با استفاده از دستورات خط فرمان (CLI)
    • آشنایی با عملکرد سیستم حافظه و نحوه عملکرد پروسس ها (Process Handling) در سیستم عاملهای مختلف
    • آشنایی و تسلط بر انواع نرم افزارهای دیباگ از قبیل Olly Debugger, x64_dbg, IDA

     

    لازم به ذکر است هدف اصلی از نگارش این مقاله آشنایی علاقمندان با کلیات و حداقل های ورود به رشته های مختلف امنیت است و لیست تهیه شده از پیش نیازهای گرایش های مختلف تنها چکیده ای از دانشی است که هر متخصص دنیای امنیت باید به آن مسلط باشد. قطعا مطالعه، تمرین، داشتن بینشی خلاقانه و جسورانه یا به اصطلاح “Out of the box thinking” همزمان با احترام به قوانین مدون، آینده درخشانی برای تمام علاقمندان به این رشته رقم خواهد زد.

     

دکمه بازگشت به بالا
بستن