گپوگفتی با شکارچی جوان راورو؛ بهراد احمدپور (behrad_amp)
در این بلاگپست، به سراغ یکی از شکارچیهای جوان راورو رفتیم تا با او گپوگفت کوتاهی داشته باشیم؛ بهراد احمدپور (behrad_amp)
بهراد رتبهی ۹۷ کنکور سراسری رشتهی ریاضی و فیزیک سال ۱۳۹۸ در منطقهی ۱ بوده. حالا دانشجوی رشتهی برق در دانشگاه صنعتی شریف است. تا تاریخ این مصاحبه، ۳۷ گزارش آسیبپذیری در راورو ثبت و ۶۲ امتیاز کسب کرده است.
_ خودت را برایمان معرفی میکنی؟
بهراد احمدپور هستم، دانشجوی مهندسی برق دانشگاه شریف هستم. تقریبا دو سالی میشود که در کار تست نفوذ و و درواقع سمت امنیت شبکه فعالیت میکنم.
_ شکار آسیب پذیری برایت چه طعمی دارد؟
راستش برای من معمولا شیرین است. بعضیوقتها تهمزههای تلخی هم پیدا میکند. تلخیاش وقتهایی ست که فکر میکنم آسیبپذیری را توانستهام پیدا کنم و خیلی بابتش خوشحال میشوم، ولی وقتی بعد از یک روز یا چند ساعت که برمیگردم یا دقیقتر رویش کار میکنم، میفهمم که "نه!". میفهمم که آن لحظه اشتباهی فکر کرده بودم که این آسیبپذیری وجود دارد. بابت همین میگویم اغلب اوقات شیرین است ولی خوب بعضیوقتها این تلخی هم اتفاق میافتد.
_ چه شد که شکارچی آسیبپذیری شدی؟ چه شد که حوزهی تخصصی امنیت شبکه را انتخاب کردی؟
قبل از اینکه بهصورت تخصصی به سمت شکار آسیبپذیری بیایم و باگهانتر شوم، روی امنیت شبکه و مخصوصا لایهی اپلیکیشن کار میکردم. ولی خب بیشتر تئوری و آکادمیک بود.آشنایی من با راورو بهنوعی استارت ورودم به دنیای باگهانتینگ و باگبانتی و اینها بود. علاقهای هم که به شبکه و مخصوصا امنیت شبکه داشتم، تقریبا از دوران دبیرستان بوده. حالا رشتهی برق و گرایش مخابرات سیستم را انتخاب کردم و روی امنیت شبکه کار میکنم.
_ چه چالشهایی را در مسیر شکارچی آسیب پذیری بودن پررنگ میبینی؟
بهنظر من اولین و مهمترین چالش "آپدیتبودن" است. بعد از آن هم شاید مقداری "فضای رقابتی" موجود و "عدم قطعیت" چالش باشد. هرچند که خب نظر من این است که اگر که درواقع یک نفر بخواهد و بتواند خودش را آپدیت نگه دارد، از نظر زمانی و از نظر رقابتی بین شکارچیها، دچار چالش نمیشود. مثلا اگر یک نفر خودش را خیلی آپدیت نگه دارد، میتواند باگها و تکنیکهایی را بزند، که اگر به یکنفر غیرآپدیت، زمان بینهایت هم داده شود، نتواند آن باگ را پیدا کند. فردی که آپدیت باشد، میتواند از روشهایی استفاده کند که یک نفر دیگر با تجربهی کمتر، بدون مطالعه و با زمان بینهایت هم نمیتواند به آن تکنیک برسد. من بهعینه شاهد این موارد بودهام. به همین خاطر است که بهنظرم بزرگترین چالشی که در مسیر یک شکارچی است را، "این که چطور خودش را آپدیت نگهدارد؟" ، "چطور بتواند زمانش را وقف این فرآیند کند و در اختیار کامل یادگیریاش قرار دهد.
_ در فرهنگ لغت شخصی و تجربی تو، "هک" چگونه تعریف میشود؟
من "هک" را تنها منحصر به دنیای شبکه، وبسایتها و بهطورکلی فضای مجازی نمیبینم. کلمهی "هک" در خیلیجاها است و ما هم دیدهایم و شنیدهایم که در کنار کلمات مختلف قرارش میدهند و مفهومی میسازند، مثل؛ هک رشد، هک زندگی و اینجورچیزها. به نظرم به قول جادی، معنای هک را میشود اینگونه بیان کرد: پیدا کردن یک مسیر خلاقانه بااستفاده از یکسری ابزار در کنار همدیگر در راستای یک هدفی که ابزارها برای آن هدف شاید درست نشده باشند. یک جور دور زدن یکسری قانونهای از پیش نوشتهشده. مثل این هکهای آشپزی و اینجور چیزهایی که معمولا در فضای مجازی وجود دارند و ما برای همدیگر میفرستیم.
_ در مواقعی که یک حفره یا نقص امنیتی را پیدا میکنی، معمولا چه حالواحوالی را تجربه میکنی؟
همانطور که گفتم قبلا تجربهی این را داشتهام که آنلحظه خیلیخوشحال شدهام ولی بعدش که برگشتهام و بررسی کردهام دیدهام که این باگ شاید خیلی درست نبوده، شاید من سناریو را اشتباه رفتهام و اینجورچیزها... بهخاطر همین الان دیگر معمولا وقتی باگ پیدا میکنم، خیلیذوقزده نمیشوم. مثلا در صبر و اینجورچیزها میآیم و چندینوچندبار بررسیاش میکنم. بهخاطر همین هم میگویم شاید قبلا در آن لحظه خیلی خوشحال میشدم، مخصوصا اگر از باگهای خیلی حساستر هم میبود. ولی الان نه. سعی میکنم یک ذره خودم را کنترل کنم، چندباری چکش کنم و مطمئن بشوم، ازش قشنگ یک ریپورت آماده کنم و بعدش حالا میروم یکذره خوشحالی میکنم و دوباره سرکارم برمیگردم.
_ آسیبپذیری محبوبت چیست؟
من آسیب پذیریهای منطقی (Logical) را خیلی بیشتر از Technical ها دوست دارم. شاید هم بهخاطر این است که دانشم در خصوص آسیب پذیری های Technical کمتر و درخصوص منطقیها بیشتر است. ولی بهصورت کلی آسیبپذیریهای منطقی را بیشتر دوست دارم. بیشتر آسیبپذیریهایی که تاکنون گزارش دادهام هم، از نوع آسیب پذیری منطقی بوده. مثلا؛ از نوع دور زدن فرآیند Authentitcation لاگین، فرآیند OTP و ... . مخصوصا خیلی علاقهمند هستم به سناریوهایی که در OTP ، پیامک و ایمیل و اینها است. از آنطرف هم خب، آسیب پذیریهای Technical برایم جذاب است. ولی خب تابهحال خیلی سمتش نرفتهام. اگر هم آسیبپذیریهای Technical کشف کردهام، با یکسری ابزارهایی بوده که یا خودم نوشتهام یا از جاهای دیگری گرفتهام.
_ ابزار محبوبت برای شکار آسیب پذیری چیست؟
ابزار محبوبم، Nuclei و RustScan است. البته با اختلاف و Gap بیشتری، Nuclei. معمولا وقتی میخواهم استارت یک تارگتی را بزنم، اول از همه با Nuclei یک دید کلی به دست میآورم.
_ چه نقطهای از سامانهها پاتوق توست؟ نقطهای که بیشتر به آن سر میزنی و بهدنبال باگهایش میگردی؟
من معمولا به سراغ صفحهی لاگین سایتها میروم. البته که خب اول به دنبال این میگردم که" آیا صفحهی لاگینی دارد؟" . در صفحهی لاگین معمولا به دنبال آسیبپذیری میگردم. مثلا؛ اگر سیستم پیامکی داشته باشند ،سیستم پیامکیشان را بررسی میکنم. یا مثلا در فرآیند لاگین، اگر OAuthشان بخواهد با گوگل باشد، آن را بررسی میکنم. معمولا به دنبال اینجورچیزها میگردم. باگهایی هم که تابهحال پیدا کردهام، معمولا User Account Takeover بوده. درواقع جریان از این قرار میشود که مثلا مهاجم اگر شمارهی یک کاربر را داشته باشد، با شماره تماس آن کاربر میتواند بهجایش در سامانه لاگین کند. یعنی دیگر نیازی به رمز عبورش ( چه رمزعبور ثابت باشد، چه از این رمزعبورهایی که برای گوشی کاربر پیامک میشود)، ندارد. معمولا هم با سناریوی مثلا یک Race Condition، که درواقع یک اجراکردن یک کدی است که میآید حالت Brute Force همهی آن کدها را امتحان میکند و خب سامانه درواقع محدودیتی ایجاد نمیکند. این سناریوی محبوبم است. زیاد هم ا همین سناریو باگ زدهام. در سامانههای در سطح یکذره پایینتر، این باگ رایجی ست که همیشه بوده. ولی معمولا سازمانهایی که یکذره سطحشان بالاتر است، یکسری ابزارهای دفاعی دربرابرش دارند. که در اینجور موارد باید خلاقیت به خرج داد، سناریو را عوض کرد و ... .
_ وقتی به سراغ یک هدف جدید میروی، اولش چه کاری میکنی؟ چه چیزهایی را چک میکنی؟
بستگی دارد که تست نفوذ باشد یا باگ بانتی. اگر یک پروژهی تست نفوذ باشد که لازم باشد برایش یک گزارش مفصل و باجزئیات بنویسم، خب یکسری نکات فنی بیشتری را هم باید بگویم. معمولا مثلا تستی روی کوکیها، هدرهای HTTP و اینجور چیزها انجام میدهم که در گزارش ذکر کنم و یکسری نکته هم در مورد تکنولوژیاش بهدست بیاورم.
ولی اگر که باگبانتی و هانت و اینها باشد، اولین کارم معمولا این است که SubDomain هایش را درمیآورم، دامنهی اصلی و SubDomainهایش را را یکبار با RustScan، سراغ گرفتن Port Scan میروم. بعدش از کل همهی این URLهایی که دارم را با Nuclei یک تست میگیرم تا ببینم اصلا وضعیت چه شکلی است. چون معمولا Nuclei ، تستش یکذره طول میکشد، همزمان یک Directory Fuzzer هم میزنم. در حین اینکه دو کد دارند Run میشوند، خودم داخل سایت میروم یک بررسیای میکنم؛ مثلا همان فرآیندهای منطقیاش را پیدا میکنم، سعی میکنم چندتا اکانت بسازم و از اینجور موارد.
_ سناریو آخرین باگی که ثبت کردی چه بود؟
یک باگی بود که در سامانهای بود که مربوط به فروش سرور و اینجور چیزها بود. و باگی که ثبت کردم جریانش از این قرار بود در بخش افزایش اعتبار، من هزار تومان را زدم، بعد آن ریکوئست را گرفتم و چندبار تکرار کردم. حسابم را با پرداخت هزار تومان، اما بیشتر از هزار تومن شارژ کردم. درواقع Race Condition رخ داد. بهنظرم باگ خوبی بود و جذابیت خودش را هم داشت. معمولا باگهایی که با موارد مالی سروکار دارند، جذابیتشان بیشتر هم میشود.
_ چه رفتارهای ناامن یا امن کاربرهای اینترنت خوشحالت میکنه؟ چه کارهایی متعجبت میکنه و حرص میخوری؟
من در اینستاگرام اکانت ندارم، ولی در توییتر هستم و معمولا میبینم که کاربرها یکسری رفتارهایی میکنند که یک ذره عجیب است! مواردی که میخواهم بگویم در مورد رفتار کاربرانی ست که در سازمانها کار میکنند و در مورد اطلاعات و خبرهای سازمان، حساسیت امنیتی به خرج نمیدهند. مثلا؛ یک نفر که عضو یک تیم فنی بوده، آمده و در توییتش اطلاعات خیلیحساسی را در مورد اکانتهای شرکتشان گفته! خب،اگر یکنفر یک ذره تیز باشد و مثلا بفهمد که آقایX دارد در شرکت Y کار میکند، و از توضیحاتش در توییتش هم بفهمد که یک SubDomain جدید به اسم Z راه انداخته و بالا آوردهاند که از آن حفاظت هم نمیکنند، خب به راحتی میتواند همان روز حمله بکند!
موردی که تعریف کردم یک سطح بود. بعضیوقتها کارمندهای یک شرکت، برخی اسرار و خللهای امنیتی شرکتشان را در فضای مجازی میگویند.منظورم این نیست که مستقیم آن خلل امنیتی را میگویند، ولی وقتی در مورد روزشان صحبت میکنند انگار میشود آن شکلی آن موارد را برداشت کرد و ازشان سواستفاده کرد.
یک مسئله که خیلیبیشتر در اینترنت مشاهده میشود، مسئلهی Over Sharing است؛ اینکه آدمها چقدر اطلاعات از خودشان به اشتراک میگذارند! خب یک مهاجم باتوجه به دیتابیسهایی قبلی که لو رفته و اطلاعاتی از یک فرد هم در آن هست، با ترکیب این عکس و اطلاعات و اینجور چیزهایی که کاربر خودش در اینترنت منتشر میکند، بهراحتی میتواند یک نفر را کپی کند! مثلا من میتوانم من با استفاده از اطلاعاتی که از خانم x یا آقای Y در توییتر، اینستاگرام، فیسبوک و سایر جاها از خودش گذاشته و باتوجه به اطلاعاتی که قبلا ازش لو رفته است، دقیقا از رویش یک شخصیت کامل را درست کنم. چون من وقتی اسم و اطلاعاتش را که پیدا کنم، روی یکسری دیتابیسهای لورفتهی کسبوکارها میشود کدملی، شمارهموبایل، آدرس خانه و خیلی موارد جزئیتر را نیز پیدا کرد. از روی عکسهایی که خودش دارد Share میکند نیز میشود LifeStyle روزانهاش را هم بهدست آورد. خب این خطرناک است. چون خب، نقطهی خلل هر سیستمی، حتی امنترین سیستمها هم، آدمهایش هستند. و خب وقتی به این راحتی میشود یک آدم را تکرار کرد، یا حالا شبیهسازیش کرد، خب یکذره خطرناکتر است! اگر این Over Sharing بخواهد ادامه پیدا کند و بشود هی از روی آدمها هی تکرار کرد و شبیهسازیش کرد، خب یکذره سخت میشود! آنوقت اعتماد و امنیت در فضای مجازی خیلی سخت میشود.
_ اگر بخواهی یک توصیهی امنیتی به مردم بکنی، آن چیست؟
راستش خیلی توصیهای ندارم. بعضیوقتها میبینم که یکسری موارد در توییتر ترند میشوند. مثلا کاربرها میآیند و به یک سری رباتها یک سری دسترسیهایی میدهند تا برایشان یکسری روابط منطقی را از اکانتشان استخراج کنند، مثلا؛ توییتی که بیشترین لایک شده، اکانت افرادی که بیشترین اینتراکشن را با آنها داشتهاند و از اینجور موارد. خب درواقع دسترسیهایی که دارد به آن ربات داده میشود، شاید در ظاهر یک چیز خیلی عادی و بدون ترسی به نظر بیاید. ولی خب ممکن است این رباتی که دسترسی گرفته، بهجایشان توییت بزند، افرادی را فالو کند، توییتهایشان را پاک کند و بعد هم بلاک کند و از اینجور چیزها. و همه را هم با سرعت زیادی انجام دهد، چون ربات است و برایش مثل ما محدودیت وجود ندارد. اگر کاربران قبل از دادن دسترسی به چنین رباتهایی، این امکان و خطر را هم درنظر داشتند، احتمالا هیچوقت اینکار را نمیکردند! بهخاطر همین توصیهای که میکنم این است که راهاندازی Two Factor Authentication برای خیلی مواقع میتواند مفید باشد. کنترل دسترسیها و Deviceهایی که به اکانتهایمان وصل هستند، هم کمککننده است. باز هم میگویم که اگر با آگاهی کاربر جلوی مسئلهی Over Sharing گرفته شود، خب خیلی میتواند مقدار سواستفادههایی که در فضای مجازی میشود، را کاهش بدهد.
_ بهعنوان فردی که دانشجو هم هستی و همزمان در حوزهی امنیت سایبری فعالیت میکنی، روزها و برنامههایت چطور میگذرد؟
خب برای هر فرد، باتوجه به مدل شخصیاش، اولویتهایش و نزدیکی یا دوری کار و رشتهاش متفاوت است. برخی زمانهایی که برنامهام خالیتر است، مثل تعطیلات عید و تابستان خیلی بهتر است. ولی خب اگر بخواهم از تجربهی همزمان دانشجویی و شکار بگویم، برای من اینگونه است که بیشتر سعی میکنم تمرکز روی دانشگاهم باشد. تلاش میکنم پروژههایی که میگیرم یا هانتهایی که خودم شروع میکنم، بیشتر در زمانهای خالیام باشد که مثلا میدانم در سه،چهار ساعت آینده نه تمرینی دارم نه وقتم درگیر دیتای پروژهای است و نه چیز دیگری و حالا میتوانم بروم روی این تارگت کار کنم. ولی خب یک نکتهی مثبت برای من هم این است که چون کار دانشجوییام است، تحقیقات دانشجوییای که دارم انجام میدهم، درسهای اختیاریای که معمولا برمیدارم و غیره، اکثرا در همین حوزهی امنیت، شبکه و اینها هستند. درواقع خیلی تفاوت رویکردی در طول روز تجربه نمیکنم. مثلا اگر صبحش سر کلاسی هستم یا دارم تمرین کلاسی را حل میکنم، خیلی با حوزهی هانت، امنیت و اینها مرتبط است. بهخاطر همین هم خیلی تفاوتی بین شرایط دانشجویی و شرایط هانتم ایجاد نمیشود. جفتشان دارند بهم کمک میکنند که مهارتهای امنیت سایبریام افزایش پیدا کند.
_ چه آرزویی برای حوزهی امنیت سایبری داری؟
آرزو که خب... . نمیدانم. یکذره سخت است. چونکه خب من علاقهمند هستم به پیدا کردن آسیبپذیری و به تحقیقشان. خب اگر مثلا من آرزو کنم که فضا آنقدری امن بشود که هیچ مشکلی نباشد، مقداری سهلانگارانه و دورازدسترس است. بهنظر خودم خیلی آرزوی درستی هم نیست. چونکه این مشکلات امنیتی هستند که اهمیت یکسری چیزها را مشخص میکنند. درست است که این خصلت آدمی است که به دنبال سواستفاده میآید، ولی خب به نظرم انگار اگر آن rush و گلدنتایم نبود، این اهمیت امنیت سایبری مشخص نمیشد. پس اگر بخواهم آرزو کنم، آرزویم این است که فضای کاری بیشتری باشد، موضوعات جذابتری مطرح شود، چالشهای بهروزتری مطرح شود. من هم قطعا ازشان لذت میبرم.
_ پس امیدواریم فضای کاری بیشتری باشد، موضوعات جذابتری مطرح شود، چالشهای بهروزتری مطرح شود. و تو هم قطعا ازشان لذت ببری. ممنون که وقتت را در اختیار ما قرار دادی بهراد عزیز. ؛)