تجربیات و نکات تست نفوذ؛ با رامین اسدیان

تجربیات و نکات تست نفوذ؛ با رامین اسدیان

۲۰۹

در این بلاگ‌پست، به سراغ یک متخصص تست نفوذ در دنیای امنیت سایبری رفته‌ایم تا با او گپ‌وگفت کوتاهی درباره ی تجربیاتش در تست نفوذ داشته باشیم؛ رامین اسدیان

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

ما مصاحبه‌ی دیگری هم با رامین داشته‌ایم:

گپ‌وگفتی با شکارچی آسیب پذیری؛ رامین اسدیان

_ به‌عنوان یک‌ متخصص تست نفوذ چه چالش‌هایی را در شغل خود تجربه می‌کنی؟ چه دغدغه‌هایی داری؟

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

_ کسب‌وکارها چه انتظاری از تست نفوذ دارند؟ چه تصوری از تست نفوذ دارند؟

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

دسته‌ی دیگری از کسب‌وکارها هستند، شامل؛ کسب‌وکارهایی که دولتی‌تر هستند یا فرد برنامه نویسی دارند که اخلاق خاصی دارد و نمی‌خواهد در کارش ایرادی پیدا شود. یا مدیر شبکه‌ای هست که درخواست دارد به مدیران رده‌ بالا‌تر نگویید و نگذارید بفهمند که شبکه مشکل امنیتی دارد. کسب‌وکارهای این دسته، به دنبال این نیستند که ایرادات و آسیب پذیری هایشان پیدا شود. اتفاقا به دنبال این هستند که ایراداتشان را پنهان کنند. این کسب‌وکارها معمولا خیلی خیلی بد با تست نفوذ رفتار می‌کنند. دید مثبتی نسبت به تو به عنوان یک متخصص تست نفوذ ندارند. این نگاه را ندارند که تو برا کمک، آن جا هستی. فکر می‌کنند که می‌خواهی از آن ها آتو بگیری و از این جور حرف‌ها. مثلا من در مواردی شاهد این بوده‌ام که در زمان تست نفوذ، شبکه را از کار انداخته‌اند! یا قسمتی از نرم افزار را (چون می‌دانستند که مشکل دارد) از کار انداخته‌اند. متاسفانه چنین نگاه‌ها و دیدهایی در جامعه بسیار وجود دارد. 

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

_ چه نکته‌ای راجع به تست نفوذ وجود دارد که فکر می‌کنی معمولا کسب‌وکارها آن را نمی‌دانند یا رعایت نمی‌کنند؟

 نکته ای که من دوست دارم به مجموعه‌ها و کسب و کارها بگویم این است که به نظر من امنیت خریدنی نیست. با یک بار انجام تست نفوذ، شاید نرم افزار در بهترین حالت تا هفتاد یا هشتاد درصد از باگ ها و آسیب پذیری هایش مشخص شود. شما همیشه باید این حالت سایکل امنیتی را حفظ کنید. امنیت مثل یک چرخه است و شما باید همیشه در حال ادامه‌دادن این چرخه باشید. شاید امسال قسمتی از آن را انجام می‌دهید یک قسمتش را سال بعد، و بخش‌هایی را سال‌های بعد و بعدتر. به هر حال برحسب Resource ی که سازمان‌ها دارند. امنیت یک باره نیست. فقط با یک بار تست نفوذ شما نمی‌توانید بگویید که "خب اکثر مشکلات امنیتی‌مان حل شد". شاید تا هشتاد درصد از آسیب پذیری ها در تست نفوذ اول در بیاید. ولی در تست نفوذ های دوم، سوم، چهارم و پنجم و ... است که شاید بیست درصد باقی مانده یا شاید ۱۹.۹۹٪ شان پوشش داده شود. 

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

پیشنهاد خواندنی: چرا کسب‌وکارهای ایران امنیت اطلاعات را جدی نمی‌گیرند؟

_ آِیا تست نفوذ خوب و تست نفوذ بد داریم؟ از نگاه شما، چه چیزهایی فرقشان را تعیین می‌کند؟

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

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

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

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

_ در تجربه‌ ات در ارزیابی‌های امنیتی، آیا نقطه‌ی خاصی از سامانه‌ی کسب‌وکارها بوده که آسیب‌پذیرتر بوده باشد؟

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

دومی‌اش بحث Authorization ، Access Control و IDOR است. معمولا در اکثر نرم افزار ها چنین آسیب پذیری هایی وجود دارند. علتش هم این است که فریم‌ورک‌ها معمولا از چنین آسیب پذیری هایی جلوگیری نمی‌کنند و این به عهده‌ی خود دولوپرها ست. برای همین این اتفاق زیاد می‌افتد. یک آسیب پذیری خیلی جالبی هم هست که من خیلی زیاد بهش برخورده‌ام (حالا نمی دانم از شانس من بوده یا واقعا این‌قدر زیاد وجود دارد). فایل‌های زیپ و بکاپ و این مدل فایل‌هایی که اطلاعات خیلی مهمی در آن‌ها هست ولی در یک URL خیلی ساده به دست می‌آید. مثلا من در تجربه ام خیلی از سازمان‌های خیلی خیلی بزرگ کشوری را فقط با یک فایل این شکلی توانسته‌ام بزنم. مثلا فایلی را دانلود کرده‌ام که در آن یه فایل وب کانفیگ بود، در این وب کانفیگ، یوزر و پسورد بوده. آن یوزر و پسورد را که می‌زنی، در جاهای مختلف لاگین می‌کند. حالا ممکن است بعضی جاها به دنبالش بکاپ و دیتابیس هم دربیاید که خب این فاجعه تر هم هست.  

این سه آسیب پذیری همیشه برای من جالب اند. خیلی هم زیاد بهشان برخورده‌ام. 

_ممنون که وقت خود را به این مصاحبه اختصاص دادی رامین عزیز. امیدواریم که همواره شاهد اثرگذاری‌های باکیفیت تو و سایر متخصصین حوزه‌ی امنیت سایبری بر ارتقای امنیت کسب‌وکارها باشیم.

بلاگ پست‌های مرتبط: 

گپ‌وگفتی با شکارچی آسیب‌پذیری؛ رضا شریف‌زاده 

گپ‌وگفتی با شکارچی آسیب پذیری؛ ارغوان کامیار 

نکات امنیتی‌ راجع به مهندسی اجتماعی؛ برای کسب و کارها و افراد