مراحل تست نفوذ
Download
Report
Transcript مراحل تست نفوذ
بسمهتعالی
ت ـســت نـف ــوذ
1
رسول جلیلی
به ــار92
2
مرور تکـ صفحهای جلسه قبلـ
مباحث ـ ت ـسـت ن ـف ــوذ
معرفـی تست نفــوذ
مراحلـ تست استاندارد
ابزارهای ـ تست ـ
نــتیج هگ ــیریـ
3
هرگزپختن املت بدون شکستن تخممرغها ممکن نیست
تست نفوذ چیست؟
رویه ارزیابی امنیت برنامه از طریق شبیهسازی حمالت از طرف
حملهکنندگان بیرونی یا درونی (با سطوح دسترس ی متفاوت انتسابی
یا اکتسابی آنان)*
به تعریف توجه کنید! بیشتر منابع موجود در زمینه تست نفوذ ،تنها به
جنبههای امنیت شبکهای و تست برنامههای تحت وب توجه میکنند.
4
*http://www.isaca.org/Pages/Glossary.aspx?tid=651&char=P
oتست کارکردی معمول به دنبال ویژگیهای عملکرد صحیح برنامه بر اساس کارکردهای تعیین
شده است
oولی ،امنیت نرمافزار یک یا چند کارکرد یا ویژگی نیست
oحتی اگر در برنامه کارکردهای امنیتی مثل رمزنگاری و ...داشته باشیم <<<<اغلب
آسیبپذیریها مستقیما به این کارکردها مربوط نیستند <<<به سوء استفاده حملهکننده از
کارکردها باز میگردند.
oتست کارکردی<<<< تست مثبتها (وجود کارکردها)
در کارکرد خاص ی نمی
oتست نفوذ <<<< تست منفیها (عدم وجود حفرههایی که الزاما
گنجند)
5
در هر زمینهای تست منفیها چالش بزرگتری از تست مثبت هاست
چند تست لزم است تا بتوان گفت که این سیستم به حد کافی تحت حمله
امن است؟!
اگر تست منفیها هیچ خطایی را نشان دهد تنها به معنای نبود خطا تحت
یک تست خاص است و به هیچ وجه به معنای نبود کلی خطا نیست
6
تولد آسیبپذیری در 3مرحله کلی حیات نرمافزار :
.1تعریف ویژگیها و طراحی
•
کشف عیوب طراحی دشوار بوده و در جلسه گذشته و آینده بدان پرداخته شده و میشود
.2توسعه
•
به دلیل پیادهسازی نادرست و یا نامطلوب رخ داده است
.3بهکارگیری در محیط عملیاتی
•
7
به دلیل تنظیمات پیشفرض و یا مستندسازی نادرست برای به کارگیری امن نرمافزار رخ داده است .
تست نفوذ نیازمند هر دو کاله :
کاله سفید برای اطمینان از عملکرد درست کارکردهای امنیتی برنامه
کاله سیاه برای اطمینان از عدم نفوذ حملهکننده به کل برنامه یا سیستم
8
افزار به ندرت نیازمندیهای امنیتی،
در توسعههای فعلی نرم
سناریوهای سوء کاربرد ،دانش ریسکهای امنیتی و نیز الگوهای حمالت
قرار می گیرد.
در طراحی مورد توجه
نیز همین وضعیت را دارد.
تست
در نتیجه :
در
در میان تیمهای مختلف و
یافتههای امنیتی قائم به شخص بوده و
تکرار نیستند...
طول زمان قابل
در عمل تست نفوذ تنها بخش کوچکی از ریسکهای امنیتی
با این وضع
موجود را می یابد.
نتیجه نهایی<<< القای امنیت دروغین
امنیت نداشته اند....
9
به نرمافزارهایی که
10
.1اقدامات پیش از درگیری اولیه
.2جمعآوری اطالعات
.3مدسازی تهدید
.4تحلیل آسیبپذیری
.5اکسپلویت نمودن آسیب پذیری
.6انجام عملیات بعد از اکسپلویت
.7گزارشدهی
بر اساس استاندارد PTES
Penetration Testing
Execution Standard
11
فراهم سازی ابزارهای عمومی نفوذ
ابزارهای خاص بسته به نوع و عمق نفوذ
در بخش بعد به تفصیل به ابزارها خواهیم
پرداخت
12
o
یک حملهکننده به چه اطالعاتی نیاز دارد و آنها را از چه منابعی خواهد
یافت؟
مکانیابی فیزیکی
مکانیابی مراکز داده
جمعآوری اطالعات درباره کارکنان سازمان از منابع باز
ایمیلها و ارتباطات درونسازمانی
اسکن پورتهای باز
انبوه ابزارهای غیرقابل باور در
o
هر حوزه!
o
اطالعات DNS
شنود فیزیکی بیسیم و با سیم در جستوجوی کلیدها و ..
جستوجوی اطالعات SNMP
o
VoIP mapping
شناسایی سیستمها ،سیستم عاملها ،نسخه برنامههای کاربردی و سرورها
o
o
o
o
o
قابل بحث در Mailing
listدرس در صورت تمایل به
اطالعات بیشتر
o
o
13
تست آسیبپذیری
• فعاالنه :سریعتر و مطمئنتر اما با ریسک بیشتر باقی گذاشتن نشانه
•
ابزارهای پویش آسیبپذیری و Fuzzing
• منفعالنه :ریسک و نتیجه کمتر
•
تایید آسیبپذیری
•
ابزارهای شناسایی نوع سیستم مثل ،P0fابزارهای ثبت ترافیک مثل Wireshark
پیداکردن کد یا منابع الزم و تایید انجامپذیری اکسپلویت
تعیین راههای حمله
•
تهیه درخت حمله
•
شناسایی مکانیزمهای حفاظتی (در سطح شبکه و سیستم)
گزارش در سطح مدیران اجرایی
14
اثرات تجاری
به همراه گزارش اولویتدهی ریسک
• گزارش فنی
شناسایی موارد سیستماتیک و تحلیل فنی ریشه آسیب پذیری
یافتههای فنی
•
•
•
•
توضیحات
صفحه تصویرها(!)Screenshot
ارسال و دریافتهای صورت گرفته
مثالهایی برای اثبات مفهموم ()PoC
نتایج قابل تکرار
•
•
موارد آزمون
ماشههای خطا
قابلیتهای رصد و پاسخگویی به واقعه ()Incident Response
•
•
•
•
اطالعات جمع آوری شده
ْ
تحلیل آسیبپذیری و اکسپلویتها
معیارهای تست نفوذ
اثرات باقیمانده
موارد متداول
•
•
•
•
•
متدولوژی
اهداف
حوزه
خالصه یافتهها
پیوستی از اولویتبندی ریسک
نیاز به خالصه برای مدیران اجرایی که
احتماال قدم به قدم اعمال تست
برایشان چندان جالب توجه نیست
مهمترین بخش گزارش که باید به دقت
نگاشته شود
یادآوری محرمانگی و حفظ مسائل حریم
خصوص ی (در متن گزارش اصلی نیز بایست
اشاره شود)
لوگوی سازمان تستکننده
15
16
اقداماتی که بعد از اکسپلویت بایست انجام شود
جمع آوری اطالعات احتمالی مورد نیاز (فایلها،
پیکربندیها و )...
پاک کردن اطالعات ممیزی()log
غیر فعال کردن نرمافزارهای حفاظتی
جمعآوری درهم شده ()hashکلمات عبور یا خود آنها
اجرای برنامههای مورد نظر
...
17
هدف از این بخش تنها آشنایی با رویکردهای
مختلف موجود در ابزارهاست و نه آموزش نحوه
کارکرد آنها
کیفیت ابزارهای استفاده شده در تست نفوذ تا حد زیادی می تواند کیفیت تست را هم
تحت تاثیر قرار دهد.
وجود ابزار برای مراحل مختلف و انواع تست علیه حمالت گوناگون
› هرچند در اکثر منابع<<< معرفی ابزارهای تست نرمافزار تحت وب
محل بروز حمالت مختلف
علیه سیستم نرمافزاری
18
فوائد استفاده از ابزار:
خودکار کردن اکثر رویههای مورد نیاز در تست
تولید خروجی قابل استفاده برای محاسبه معیارهای کنترلی
توجه! ابزار هیچگاه جایگزین مرور یک تحلیلگر امنیتی ماهر نمی شود.
مخصوصا اینکه ابزارهای موجود ذاتا به سطح طراحی قابل اعمال نیستند.
19
20
غالبا نام این ابزارها را به عنوان ابزار تست نفوذ خواهید شنید<<<الزم ـ ولی ناکاف ــی
ابزار های شناسایی شبکه به صورت برون خط و ابزارهای نگاشت توپولوژی شبکه
ابزارهای پویش آسیبپذیری acunetix
ابزارهای اخذ ترافیک وب مثل ieinspector
رویکرد
Continuous Dynamic Application Security Testing
محصول Cenzicبرای تست Cloud, Mobileو برنامههای تحت وب
21
ابزارهای تزریق خطا
دیباگر ها ،دیساسمبلرها و دیکامپایلر
ابزارهای بررس ی فراخوانیها و Dllها مثل DLLSPY
ابزارهای بررس ی پیمانه ها و وابستگیهای مابین مثل
dependencywalker
Fuzzing
تزریق کد به برنامه یا پیمانههای محیطی در جستوجو برای یافتن خطاهای
مربوط به کد اداره خطا (که در انواع دیگر تست ممکن است یافته نشوند).
انتقال برنامه به حالت تعریف نشده یا اداره نشده (آیا برنامه همه خطاهای
احتمالی را اداره میکند؟)
دارای انواعی کلیتر(در مباحث تحملپذیری خطا):
› تزریق خطای سختافزار
› تزریق خطای نرمافزار
زمان کامپایل
زمان اجرا
› تزریق خطای پروتکل
تزریق خطای نرمافزاری قابل انجام در محیطهای کامال مجازی شده تا محیط
عادی برنامه
22
یک ابزار تزریق خطای قوی
استفاده در توسعه دهندگان سرشناس ی چون
Adobe, McAfeeو مایکروسافت
محیط شبیهسازی شده برای تست
شبیهسازی شکست در فراخوانی سیستمعامل ( برای
شبیهسازی شرایطی مثل در حال استفاده بودن فایل
انحصارا قابل دسترس ی ،پر بودن حافظه ،یا پایین بودن
شبکه و ) ...
امکان تعریف خطاهای خاص توسط توسعهدهنده
دارای دیباگر تجمیعی برای اشکالیابی همزمان
و ....
23
24
مکانیزم کشف آسیبپذیریهای نرمافزار با فراهم کردن ورودیهای غیر
منتظره و رصد عکسالعمل برنامه
25
تصویر از blog.rootshell.be
فازرهای ایستا و قالب-مبنا:اینگونه فازرها تنها پروتکلهای شامل درخواست و
پاسخ و یا فایل فرمت های ثابتی را تست میکنند .هیچ ویژگی پویایی در آنها
نیست و نیز هیچ آگاهی از پروتکل مورد تست ندارند.
فازرهای بلوک-مبنا :این فازرها ساختار پایه برای یک پروتکل درخواست و پاسخ
را پیادهسازی کرده اند و میتوانند کارکردهای پویای ثابتی مثل محاسبه
CHECKSUMو ..داشته باشند.
فازرهای تکاملی یا نسل پویای فازرها:اینها الزاما پروتکل یا فایل فرمت مورد
تست را نمی فهمند اما بر اساس بازخورد از سیستم آن را یاد میگیرند
فازرهای مدل-مبنا یا شبیهساز:این فازرها با پیاده سازی همه پروتکل یا مدلی از
آن و یا شبیهسازی آن نه تنها ساختار پیامها را fuzzمی کنند بلکه توسط آنها
پیامهای غیر منتظره نیز در ترتیب پیامها قابل تولید خواهد بود .
26
ابزارهای fuzzingبه صورت محلی
› مثل iFuzzبرای تشخیص format stringو سرریز در برنامههای سیستم محلی
و یا رفتار در برابر بازگرداندن متغیرهای محیطی نادرست
› فازرهای فایل فرمت که انواع فایلهای مشکلدار را برای برنامههایی با وروی
فایل تولید میکنند.
ابزارهای fuzzingاز راه دور
› فازرهای تشخیص آسیبپذیریها در پروتکلهای شبکه همچون ابزارهای فریم
کاری SPRIKE
› فازرهای برنامههای تحت وب مثل web Scarabمتعلق به owasp
› فازرهای مرورگر
ابزارهای fuzzingدرون حافظه
27
با اینکه تست نفوذ از جمله متداولترین مراحل توسعه امن نرمافزار است اما :
توسط افراد امنیتی بر تیم نرمافزار اعمال میشود<<< همه تیم عصبانی
هستند!
رویکرد از بیرون به درون <<<<دید لزم ولی ناکافی
تالش خیلی ناچیز-خیلی دیر برای پیگیری مشکالت امنیتی در پایان چرخه
توسعه!
رفع مشکالت در این برهه هزینهبر است<<< اغلب بجای درمان تنها پانسمان
میشوند!
اغلب اقدامات در نتیجه تست نفوذ ذاتا واکنش ی و منفعالنه هستند.
در عمل تست نفوذ استاندارد مورد قبولی که در حال استفاده باشد ندارد!
28
29
بر سطح سیستم داشته باشد و ویژگیهای سیستمهای
تمرکز
تست نفوذ نرمافزار بایست
نرمافزاری تجمیعی را نیز در نظر بگیرد.
دانش ریسکهای نرمافزاری ،نیازمندی اصلی تست نفوذ
در
بیشتر مشکالت تست نفوذ به دلیل درس نگرفتن از تجربیات گذشته و باقی نماندن آنها
سازمان است.
بار انجام نمیشود ،تستهای پشت سرهم میتوانند نقصهای به ترتیب
تست نفوذ یک
جزئیتری را افشا سازند .
از تست نفوذ به عنوان « آخرین چک» استفاده کنید نه اولین ژست امنیتی فرآیند توسعه!
30
31
تست امنیتی ریسکمبنا
رویکردی بینابینی تست در مراحل
اولیه