
تجربیات و نکات تست نفوذ؛ با ایلیا کشتکار و مهدی حسینی
در این بلاگپست، به سراغ دو متخصص تست نفوذ در دنیای امنیت سایبری رفتهایم تا با آنها گپوگفت کوتاهی دربارهی تجربیاتشان در تست نفوذ داشته باشیم؛ ایلیا کشتکار و مهدی حسینی
دوستی مهدی و ایلیا از زمان دانشگاه شکل گرفته است. تقریبا دو سالی است که باهم در حوزهی امنیت سایبری کار میکنند. تجربهی کار مشترک در پروژههای تست نفوذ، CTF، باگ بانتی، باگ پارتی و ... را باهم دارند.
ما مصاحبهی دیگری هم با ایلیا و مهدی داشتهایم: گپوگفتی با دو شکارچی آسیبپذیری؛ ایلیا کشتکار و مهدی حسینی
_ از نگاه شما چه مواردی تفاوت یک تست نفوذ خوب با یک تست نفوذ بد را تعیین میکنند؟
ایلیا: تست نفوذ خوب، تست نفوذی است که براساس استاندارد جلو برود و این اطمینان خاطر وجود داشته باشد که اصلاحا چیزی جا نمانده است. به نظر من این نکتهی اولیه و خیلی مهمی است.
لازمهی بعدی یک تست نفوذ خوب، این است که انجامدهندهی آن بهعنوان یک متخصص تست نفوذ باید همیشه بهروز باشد. چراکه هر روز متدهای جدیدی از راه میرسند که قبلا نبودهاند. در اینجور مواقع، وجود یک چک لیست میتواند کمککننده باشد. ما یک چک لیست در Notion داریم که براساس آن جلو میرویم. پایهی اصلی آن براساس OWASP است. ما بهمرور و در طی مطالعات، تجربیات و یادگیریهایمان تلاش کردهایم که به این لیست نکاتی را بیفزاییم. مثلا؛ اگر جایی به نکاتی برخوردهایم و با خودمان گفتهایم:" آها، اینطوری هم بایپس میشود"، نکاتش را به آن لیست اضافهاش میکنیم تا در بررسیهای بعدیمان چکش کنیم. اگر در رایتاپی ( از سایت هکروان، راورو یا ...) به نکتهای بربخوریم، هم همینطور. اینگونه است که این Notion شکل گرفته و مورد خوب و قابلاستفادهای شده است. ما طبق آن پیش میرویم. همیشه، به طور مداوم، OWASP را چک و لیستمان را براساسش آپدیت میکنیم. گاهی OWASP در آخرین آپدیتهایش ممکن است مواردی را حذف کرده باشد یا مثلا ذکر کرده باشد که از این آسیب پذیری به یک آسیب پذیری دیگری میتوان رسید.
_ در پروژههای تست نفوذ با کسبوکارها، به چالشهایی هم برخورد کردهاید؟ از جنس تفاوت نگاه سمت شما و کسبوکار؟
ایلیا: بله، بسیار پیش آمده است. یکی از چالشهای رایجی که تجربه میکنیم، این است که گزارش آسیب پذیری را برای کسبوکار میفرستیم. بعد دولوپر در پاسخ میگوید: " نه، این آسیب پذیری نیست. فیچر است. " یک مکالمهی تکرارشونده و رایج که معمولا در اکثر مواقع پیش میآید، همین است. در چنین شرایطی که طرف مقابل آسیب پذیر بودن را نمیپذیرد و فکر میکند که چیز خاصی نیست، ما باید اثبات کنیم که این آسیب پذیری است. معمولا برای اثباتش یک جلسه PoC ترتیب میدهیم و سعی میکنیم برایشان مواردی را از سمت خودمان توضیح دهیم؛ از گزارش و روشی کشف آسیب پذیری برایشان بگوییم. یا برایشان توضیح دهیم که از دید یک مهاجم چه استفادهای ممکن است از آن شود و چه خطری سامانه را تهدید میکند. معمولا هم جلسهی PoC جواب میدهد و طرف مقابل آسیب پذیری را میپذیرد و قبول میکند که لازم است ایمن شود. در مواقعی هم که نمیپذیرد، سامانهاش را به خدا میسپاریم و امیدواریم که کسی آن آسیب پذیری را پیدا نکند و مورد سوءاستفاده قرار ندهد.
کمی از روال کاریتان در پروژههای تست نفوذ هم برایمان میگویید؟
مهدی: در پروژههای تست نفوذ، معمولا کارها را تقسیم میکنیم. مثلا میگوییم: این بخش را شما انجام بده و آن بخش را من انجام میدهم. در مواقعی که ایلیا مشغول کارهای خودش است، من کارهای تست نفوذ را انجام میدهم و در مواقعی که من مشغول کار هستم، او کارهای تست نفوذ را انجام میدهد.
ایلیا: معمولا اگر بحث جمعآوری اطلاعات و تست پیلودها برای اینکه گزارش اولیه دستمان بیاید، باشد، مهدی در این مورد خیلی سریعتر از من عمل میکند. عادت من اینگونه است که وقتی چیزی را پیدا میکنم، حتما باید روی آن خیلی ریز شوم؛ تا چیزی را پیدا نکنم، بیخیال آن موضوع نمیشوم. این عادت در بعضی موقعیتها میتواند به کار بیاید و در بعضی موقعیتها میتواند بد باشد. مثلا؛ من نمیتوانم تارگت گستردهای را بهسرعت و بهراحتی چک کنم. ولی خب مهدی دقیقا برعکس من است. خیلی راحت و سریع پیلودها را ارسال میکند، بدون این که بررسی عمیقی کند که در آنجا چه خبر است. ممکن است که در مواقعی هم یک سری موراد از زیر دستمان در برود. ولی خب معمولا بهخوبی نتیجه میدهد و با همین روشی که پیش گرفته است، اکثر اوقات خیلی سریعتر از من نقاط آسیب پذیری را پیدا میکند.
پیشنهاد خواندنی: چک لیست قبل از تست نفوذ
_ شما هنگام بررسی یک سایت یا سامانه، ابتدا به سراغ بررسی چه نقاطی میروید؟
ایلیا: اولین بخشی که چک میکنیم، هدر سایت است که برایش یک ریکوئست ساده میفرستیم. اینگونه هدر ریسپانس را چک میکنیم و معمولا اگر در هدر CSP (Content Security Policy) یا HSTS (HTTP Strict Transport Security ) یا X-Frame-Options تنظیم نشده باشد، خب قدم بعدیمان مشخصتر است. اینها موارد سادهای هستند و راحت هم پیدا میشوند. بعد از آن سعی میکنیم اینپوتها را پیدا کنیم، شناختی از منطق کلی سامانه به دست آوریم و بفهمیم که به چه صورت است.
معمولا وقتی میبینیم یک سری کلمههایی وجود دارند، حالات دیگرش را هم تست میکنیم. مثلا؛ اگر در یک جا نوشته شده "یوزر پروفایل" ، من " ادمین پروفایل" را هم تست میکنم چون ممکن است وجود داشته باشد. اگر عدد یا UUID وجود داشته باشد، با آیدی رندوم و بالاوپایین کردن اعداد، تست میکنم. چون ممکن است آسیب پذیری IDOR وجود داشته باشد.
_ این مواردی که گفتید اول به سراغ تستشان میروید، چه مقدار در تجربههایتان شاهد آسیب پذیر بودن سامانهی کسبوکارها نسبت به آنها بودهاید؟
ایلیا: نمیتوانم بگویم که همیشه یک آسیب پذیری به شکل ثابتی در سامانههای مختلف وجود داشته است. چون اینطور نیست. چون بالاخره هر سامانهای ساختار مختص به خودش را دارد. نمیشود گفت که آسیب پذیری هم به یک شکل در آنها یافت میشود. ولی خب چشم کمکم به دیدن نشانهها و پیگیریشان عادت میکند. بعضی موارد براساس تجربه، خیلی راحتتر به چشم میآیند، تجربهی باگ بانتی، CTF یا ... . مثلا تجربههای ما در CTF گاهی در باگ بانتی هم کمکمان میکنند.
مثلا من وقتی پارامتری میبینم که نوشته است page-id ، ذهنم بهصورت ناخودآگاه به دنبال این میرود که این پارامتر عدد دارد؟ یا نه؟ و سریع اعداد را جایگذاری میکنم. یا در بعضی مواقع page-id ، مساوی با یک هشتگ قرار داده شده است و چیزی جلویش تعریف نشده است. در این موقعیت، فرد عددی جلوی آن میگذارد. ممکن است آسیب پذیری Idor در این مورد وجود داشته باشد.
_ در صحبتهای قبلیتان به رایتاپ بهعنوان یکی از منابع یادگیری اشاره کردید. ما معمولا شاهد عدم رضایت کسبوکارهای ایرانی نسبت به انتشار رایتاپ مربوط به آسیب پذیری های سامانههایشان هستیم. بهعنوان یک هکر، در این باره حرفی برای کسبوکارها دارید؟
ایلیا: فکر میکنم دید اشتباهی که سمت کسبوکارها وجود دارد، این است که اگر این رایتاپها بهطور عمومی منتشر شود، به ضرر سازمان است. ولی اتفاقا برعکس است. کسبوکار با انتشار رایتاپ میتواند به سایر شکارچیان آسیب پذیری کمک کند تا سریعتر سایر آسیب پذیریهایش را نیز کشف کنند. چطور؟ خب شکارچیان آسیب پذیری با خواندن رایتاپ مربوط به آسیب پذیری یک سامانه میتوانند بیشتر با دید برنامهنویس آن سامانه آشنا شوند. شکارچیان میتوانند بر اساس آن حدس بزنند که ممکن است چه نقاط دیگری نیز در خطر باشند و آسیب پذیری هایی در آنها وجود داشته باشند. مثلا اگر در چند نقطه از سامانهای آسیب پذیری XSS وجود داشته باشد، این احتمال وجود دارد که در نقاط دیگری از همین سامانه هم آسیب پذیری XSS وجود داشته باشد. شکارچیان آسیب پذیری مختلف، هر کدام میتوانند به سراغ نقاط مختلفی بروند و با سرعت بیشتری اکثر آسیب پذیری ها را کشف و گزارش کنند. اینگونه، کشف آسیب پذیریهای یک سامانه، تسریع میشود.
از طرف دیگر، با انتشار رایتاپ، توجه همه به سمت آسیب پذیری XSS میرود. برنامهنویس سامانه هم همزمان تلاش بیشتری برای تقویت سامانه نسبت به آن آسیب پذیری میکند.
اکثر اوقات، در کامیونیتیها حولوحوش یک رایتاپ، گفتوگوهای ارزشمندی شکل میگیرد. این گفتوگوها میتوانند بسیار کمککننده باشند. مثلا؛ "این آسیب پذیری ای که صحبتش است، در فلان جا هم وجود داشت. " این باعث میشود حتی کسبوکارهای دیگر هم، اطلاعات ارزشمندی جهت امنسازی سامانههای خود به دست بیاورند. مثلا با این سوالها مواجه شوند که: این آسیب پذیری روی سامانهی ما هم وجود دارد؟ چطور و چگونه میتوانیم سامانهمان را ایمنتر کنیم؟
پیشنهاد خواندنی: نقش حیاتی گزارش حملات سایبری (رایتاپ) در ارتقای امنیت سایبری برای همه
_ بله، به اشتراکگذاری میتواند در مجموع به ارتقای امنیت سایبری کسبوکارها کمک کند. ممنون که وقتتان را در اختیار ما قرار دادید و تجربیاتتان در حوزهی تست نفوذ را با ما به اشتراک گذاشتید، ایلیا و مهدی عزیز.
بلاگپستهای مرتبط:
تجربیات و نکات تست نفوذ؛ با زهرا