مجازی سازی

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

    امروزه تصور نیاز به تهیه سیستم های فیزیکی مختلف برای انواع سیستم عاملها و آزمایشهای امنیتی مختلف با توجه به هزینه های گزاف آنها خصوصا برای متخصصین امنیت که نیازمند تعامل با سیستم عامل ها و برنامه های فراوانی هستند دور از ذهن خواهد بود، بنابراین میتوان نتیجه گیری کرد که شاخص ترین امتیاز محفظه ها 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” همزمان با احترام به قوانین مدون، آینده درخشانی برای تمام علاقمندان به این رشته رقم خواهد زد.

     

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