گپوگفتی با متخصص امنیت دنیای صفرویکها؛ علی امینی
در این بلاگپست، به سراغ یکی از متخصصین امنیتی دنیای صفرویکها، رفتیم تا با او گپوگفت کوتاهی داشته باشیم؛ علی امینی
علی امینی متخصص اکسپلویت آسیب پذیریهای فایلهای باینری، متخصص مهندسی معکوس و تحلیلگر بدافزاره.
گپوگفت ما با علی دو بخش داره؛
مسیر زندگی یک متخصص مهندسی معکوس دنیای صفرویکها
خاطرهها و تجربهها از تحلیل بدافزارها و ویروسها و ...
مسیر زندگی یک متخصص مهندسی معکوس دنیای صفرویکها
_ علی جان، خودت رو برامون معرفی میکنی؟ اگر بخوای خودت رو در چند جمله خلاصه کنی، چی میگی؟
من علی امینی هستم، اصفهانیام. متولد تیرماه سال ۷۲. کارشناسی سختافزار خوندم در دانشگاه صنعتی همدان. بعد از لیسانسم اومدم تهران و دیگه مشغول به کار و سربازی شدم تا الان. چندسالی هست که در شاخههای حوزهی امنیت سایبری کار میکنم. حدود پنج،شیش ساله که بهطور تخصصی در مهندسی معکوس کار میکنم؛ مباحث اکسپلویتنویسی، باینری و تحلیل بدافزار
_ داستان ورود به امنیت سایبری برای تو از چه زمانی شروع شد؟
من قبل از این که در حوزهی باینری کار کنم، از سن ۱۵،۱۴ سالگی تو این مسیر افتادم. از همون موقع برنامه نویسی کار میکردم. فکر میکنم از همون اول علاقه داشتم. ولی اونطور که یادمه، اونموقع اونقدر دنیای امنیت سایبری گسترده نبود. درکل هم دسترسی به اینترنت و این چیزا به این راحتی نبود. یادمه که اینترنتهای Dial Up بود که خیلی بهسختی وصل میشد...
_ اینترنتهای Dial Up با اون صداهای خاطرهانگیزشون که بخشی از خاطرات صوتی نسل ما شده. :)
آره، دقیقا. مثلا من دقیقا یادمه همیشه وقتی که میخواستم اینو وصل کنم، استرس اینو داشتم که این صداش الان میاد و بابای من میگه که زود قطعش کن! الان پول اینترنت میاد! یعنی دقیقا یه همچین وضعی بود اونموقع... بعد در این حد بود که من مثلا چند وقتپیشها داشتم توی هاردم دنبال یه سری فایل قدیمی میگشتم، یه چیزایی پیدا کردم؛ یه سری فایلهای HTML پیدا کردم که مال سایت آشیانه بود. اونموقع چون سرعت اینترنت خیلی پایین بود و وقت هم نداشتیم خیلی تو اینترنت بگردیم، من میرفتم اینارو به شکل HTML ذخیره میکردم که بعدا بخونم.
_ تو برای مسیرت از همون ابتدا رودمپ داشتی؟
تو اون أوضاع ما واقعا به درودیوار میزدیما؛ من خودم خیلی واقعا از اینور به اونور پریدم چون نمیدونستم چه مسیرهایی هست؟ چجوریاند؟ مثلا یه مدت میرفتیم شبکه کار میکردیم، بعد میگفتیم:" ای بابا! این که به کارمون نیومد! دوست داشتیم هک و امنیت بریم!" خیلی از این شاخه به اون شاخه میشدیم! ولی من خودم همیشه یادمه هدفم این بود که تو حوزهی امنیت بتونم واقعا حرفی برای گفتن داشته باشم؛ برم جلو، پیشرفت کنم... .
_ اشاره کردی که در یک جایی از مسیر فهمیدی که به شبکه علاقه نداری و دوست داری هک کنی. این علاقه از کجا کشف شده بود؟ قبلترها هم نشونی ازش دیده بودی؟
من حدودا ۱۳،۱۲ سالم بود ( دوم راهنمایی) که بابام تازه برام کامپیوتر گرفت، از این کامپیوترهای pentium 3 که پشت مانیتورهاش خیلی بزرگ بود! اون موقع با بچهمحلهامون تو اصفهان بازی میکردیم همیشه سیدی بازی رد و بدل میکردیم؛ IGI ، GTA ، Max Paine و ... . من وقتایی که میزدم یه بازی رو اشتباهی اشتباه نصب میکردم و کامپیوترم به مشکل میخورد، دوستام بهم میگفتن: " برو ویندوزت رو عوض کن! " من میگفتم: "چجوری ؟" توضیح میدادن و من نمیفهمیدم و باخودم میگفتم: "وای اینا بلدند و من بلد نیستم!" بابای من یه دوستی داشت به اسم " آقا روحالله " که مغازهی خدمات کامیپیوتری داشت. بابام بهم گفت: " دوست داری بری اونجا کار کنی؟ " گفتم: " آره، خیلی دوست دارم!" بعد من رفتم مغازهش. بهم نصب ویندوز، تعمیرات، سختافزار و ... یاد میداد. من الان سخت افزار بلدم و میتونم کل سختافزار یه سیستم رواسمبل یا سرهم کنم و از اول بیارم بالا. همش رو از اون موقع یاد گرفتم. مشتری هم میومد من قشنگ راه مینداختم. آقا روحالله گرج بود و تحصیلات دانشگاهی خودش نرم افزاره بود، من میدیدم که پشت سیستمش کد میزنه؛ داشت یه دیکشنری گرجی به فارسی و فارسی به گرجی مینوشت. من پرسیدم: " اینا چیه؟ " گفت: " یه نرمافزار دارم مینویسم. " بعد من گفتم: " چجوری؟ چجوری نرم افزار تولید میکنند؟ " گفت: " به زبان برنامه نویسی" از اونور یادمه از اخبارهایی که تو خونه بابام گوش میداد، من که تو اتاقم پای کامپیوتر نشسته بودم بازی میکردم. یهو مثلا مجری میگفت: " هکرا حمله کردن به فلان جا و پونصدهزار اکانت رو زدن. میدویدم پای تلویزیون، ذوق میکردم با خودم میگفتم: "چه باحال!" بعد میرفتم پیش روحالله، بهش میگفتم: " روحالله چجوری ویروس میسازن؟ " بعد اون میگفت: " باید برنامه نویسی بلد باشی؛ برنامه نویسی زبان c. " من اونقدری از برنامهنویسی نمیدونستم که وقتی روحالله میگفت "برنامه نویسی زبان c" من فکر میکردم یه ربطی داره به پارتیشن c که ویندوز توش نصب میکنن. خلاصه علاقهمند شدم که زبان برنامه نویسی یاد بگیرم. روحالله بهم از همون سیدیهایی که تو مغازش میذاشت بفروشه، میداد؛ اینطوری بود که اولین زبانی که یاد گرفتم، Visual Basic 6 بود؛ باهاش برای خودم کد میزدم؛ برا خودم یه ماشینحساب میساختم، انواع ویروس میساختم برای خودم. اون موقع ویروسها که اجرا میشد، در سیدیرام بازوبسته میشد، و موس رو صفحه قاطی میکرد، مانیتور یهو روشن میشد و ... . اینارو اجرا میکردم و برا خودم ذوق میکردم که برنامه نوشتم، ویروس نوشتم! ذوقم از اینجا شروع شد، خیلی حال میکردم... . کدهاش رو هنوزم دارم. بعد از یه مدتی روحالله ورشکست شد و جمع کرد و ازدواج کرد.
_ پس اولین زبان برنامهنویسی رو وقتی تو مغازهی آقا روحالله کار میکردی یاد گرفتی. بعدش چی شد؟
سال اول دبیرستان بودم که میگفتن یه زبانی اومده به اسم C# که خیلی خفنه. از اولین زبانهای دات نت بود که اومد. کد زدن باهاش خیلی ساده بود و محیط گرافیکی جالبی داشت. خلاصه رفتم کلاس C#. یادمه که روز اول سر کلاس صندلی جلو نشسته بودم. به همکلاسیهام نگاه میکردم و باخودم میگفتم: "خدایا اینا ریش دارن، سنشون بالاست... . هم دخترها و هم پسرها خیلی سنشون بیشتر از منه! " بعد استاد اومد و گفت که خودتون رو معرفی کنید، بگید که رشتهتون چیه و چقدر با کامپیوتر آشنایی دارید که من بدونم سطح کلاس چجوریه. من اولین نفر بودم. گفتم: "من علی امینی هستم، رشتهم ریاضی فیزیکه. برنامه نویسی و اینارو بلدم." بقیهی همکلاسیهام ارشد داشتند، ارشد مهندسی کامپیوتر داشتند. من همینجوری موندم و باز با خودم میگفتم: " عه! من با اینا تو یه کلاسم! اینا خیلی خفنن!" ولی تو اون کلاس، من حرف اول رو میزدم، چون برنامه نویسی بلد بودم. چندتایی از همکلاسیهام تو شرکت کار میکردن. اینا میومدن به من پروژه میدادن.
از اینا که بگذریم، خلاصه رفتم C# هم یاد گرفتم. بعد دیدم ای بابا! برنامه نویسی C# که اصلا ربطی به هک و امنیت نداره! سال دوم دبیرستان بودم و کتابهای برنامهنویسی خریده بودم میخوندم. همون موقعا یه مقالهای پیدا کردم. یه مقالهای بود: " چگونه بانک تجارت هک شد؟" اینایی که حوزه امنیتی کار کردند، احتمالا یادشون باشه. آقا تو کل اینترنت ایران که میگشتی، برای هک فقط همین یه دونه مقاله بود. عکس یه آقایی هم بود که با زیرپوش نشسته بود تو یه زیر زمینی. انگار یه کارایی تو بانک تجارت کرده بود. فکر کنم اسمش آراز صمدی بود و از معروفترینهای آشیانه بود. چیزی که ما از هکر میدیدیم به همین افراد و اتفاقات خلاصه میشد.
بعدتر، با سینا کروندی، رفتیم یه آموزشگاهی که یه شرکتی از هند که تو ایران شعبه داشت، خدمات مایکروسافت رو ارائه میداد. ما هم به یه زوری، چون خب به بابای میگفتی "کامپیوتر" میگفت: " این رشته به چه دردی میخوره؟ همهش بازیه!"و پول نمیداد. خودم یه وقتایی کار کردم پول درآوردم که با سینا بریم کلاس شبکه و لینوکس و اینا... تازه اون موقع فهمیدم مسیر چجوریه... شبکه اونموقع به کار من نمیومد و میدیدم که ارضام نمیکنه. یکی_دو_سه سال این کلاسها رو رفتیم. بعد دیگه کنکور و دانشگاه و ... . و مسیر من و سینا هم از هم جدا شد.
_ بعد از اون، اومدی دانشگاه و سخت افزار خوندی...
سر انتخاب رشتهی دانشگاهی چالش نداشتی؟
همون موقع که میخواستم برم دانشگاه، همهش با بابام سر انتخاب رشته بحث داشتم. من درس خوندن رو دوست نداشتم. هدفم برام معلوم بود؛ من کامپیوتر میخواستم. به خاطر کلاسهایی که رفته بودم و یه سری دوستان سن بالاتر از خودم داشتم، بهم گفته بودند و میدونستم که در دانشگاه چیزی و خبری نیست! خودت میتونی تلاش کنی و پیشرفت کنی! ولی بابام میگفت: "یا میری برق یا مکانیک! کامپیوترم حق نداری بری." یکی از دلایلش هم این بود که پسرعموم کامپیوتر خونده بود، رفته بود یه مغازه زده بود و بعد هم بسته بود. این شده بود که بابام معتقد بود که آخروعاقبت کامپیوتر اینه! سال اول که کنکور دادم، اصلا درس نخوندم و تو باقالی ها بودم؛ رتبهم شد ۲۰ هزار کشوری! انتخاب رشته هم نکردم. سال دوم خیلی درس خوندم. به بابام هم میگفتم من خودم میخوام انتخاب کنم. اونموقع خیلی دعوا و تنش داشتیم با بابام سر این موضوع. الان راحت میگم و میخندم ولی اونموقع خیلی استرس و اضطراب داشتم سر اینکه من میخواستم برم این رشته ولی بابام میگفت نه.
من شبا پای سیستم تا دیروقت کد میزدم، بعد بابام نصفهشب که بلند میشد بره دستشویی، من رو میدید. بعد فرداش یه دعوایی داشتیم که "تو چرا بیداری؟" همیشه جنگ داشتیم سر این مورد. ولی خب دیگه من به بابام گفتم من میخوام برم رشتهی کامپیوتر. میخوای بخواه، نمیخوای هم من اصلا کنکور نمیدم. یا میرم اون رشتهای که میخوام تو دانشگاه یا اصلا نمیرم! بعد قهر بودیم باهم و تا 5،4 ماه با من حرف نمیزد. سال دوم بیشتر درس خوندم و رتبهم شد 9 هزار. تو انتخاب رشتهم نرمافزار، سختافزار و آیتی تمام ایران رو زدم. سخت افزار همدان قبول شدم و رفتم.
_ این چالشها، در مسیر خیلی از بچههایی که میخوان انتخاب رشته کنند، هنوز هم وجود داره .
وقتیکه بچههای همدغدغهی در اون سنها با من صحبت میکنند، من همیشه میگم: به سمت اون چیزی برید که بهش علاقه دارید، چون علاقه خیلی مهمه؛ تو تصمیمگیریها، تو اهدافتون، در لحظههای جنگیدن و پیگیری. دانشگاه رفتن یا نرفتن بستگی به این داره که هرفرد میخواد چیکاره بشه، میخواد چیکار بکنه و ... . اگه دانشگاه به درد اون شغل میخوره، خب مسلما مفیده براش. من این مسیر رو با آگاهی انتخاب کردم و اومدم. از فایدههاش، خوبیهاش، بدیهاش و سختیهاش آگاه بودم. من نمیدونم اگر مسیر دیگهای رو میرفتم چطور میشد. شاید دانشگاه نمیرفتم بهتر میشد، شاید هم بدتر. ولی از مسیری که اومدم، راضیم. یه بُعد دانشگاه هم فرصتی برای مستقل شدنه. استقلالی که شما پیدا میکنید؛ از مدیریت خرجها گرفته تا استقلال فکری. همهی اینها به رشد شخصیتی آدم کمک میکنه. فردی که استقلال فکری داره خیلی راحتتر تصمیم بزرگ میگیره، رشد میکنه، قرارداد بزرگ میبنده و ... .
_ دانشگاه چطور بود؟ برات چه دستاوردهایی داشت؟
من بهم خیلی خوش گذشت! یکی از بهترین دوران زندگیم بودند. من که قبل از دانشگاه برنامه نویسی بلد بودم، دیگه اونجا پادشاهی میکردم. دانشگاه هم برخلاف تصورم آنچنان محتوای خوب و کمککنندهای نداشت. حدود ۱۳،۱۲ واحدش واقعا مفید بود و بهم کمک کرد، درسهای تخصصی مثل؛ طراحی الگوریتم، ساختمان دادهها، زبانهای برنامه نویسی و ... . بقیهشون تکرار مکررات بودند. همیشه درسهای کامپیوتر اینهام 20 بود، درسهای دیگه ۱۰، ۱۱، ۱۲. ریاضی و فیزیک رو میفتادم و ... . استادها من رو میشناختن، TA میشدم، مسابقات کامپیوتر برگزار میکردم... . همینش برام مفید بود که تو دانشگاه مقاله و کتابهای خوبی پیدا کردم. خودم کتاب های هکری میخوندم که کارای هک وب کنم. یکی_دو سال اول تو دانشگاه هک وب کار کردم، هرازگاهی پروژه میگرفتم؛ پنتست و تست نفوذ وب و ... . دیدم دوست ندارم، چون من همیشه دوست داشتم در سطحهای پایین کار کنم! یعنی برم تو Low Level و برم لایههای پایین ببینم چه اتفاقی اونجاها میفته؟ اینا برام جذابیت داشتند! اومدم سمت مهندسی معکوس و دیدم اینحا همون جاییه که دوست دارم باشم! ادامه دادم و در کنار رشتهم که سختافزار بود و ربط چندانی نداشت، خودم دنبال مهندسی معکوس رفتم.
_ بعد دانشگاه چی شد؟
بعدا که من از دانشگاه دراومدم، یه مدت افسرده شده بودم. اومدم تهران دغدغه و نگرانی سربازی رو داشتم که خوشبختانه با همین تخصصم تونستم تو سربازی یه پروژه بگیرم تو حوزهی فارنزیک. اومدم سر کار، بعد از اینکه چهار سال تو دانشگاه همهکاره بودم، حالا تو محیط کار بیتجربهترین آدم بودم! چون مباحث کاری و دنیای کار واقعا متفاوت بود با آموزشهایی که دیده بودم.
_ به CTF هم علاقه داری؟
بله من علاقه دارم. آخرین کاری که کردم، یه کار قوی با یاشار بود. دو قسمت داشت؛ یه سرور بود که از طریق یه وبسایت میشد وصل بشی. یاشار قسمت وب رو زد و بقیهش رو من. تو CTF کسی تو حوزه باینری و اکسپلویت که اینکاره باشه، پایه باشه و بیاد تیم بشیم، نتونستم پیدا کنم. تنها بودم و وقت بیشتری میخواست. FireEye یه شرکت امنیتی تو آمریکاست و تخصصشون در حوزهی مهندسی معکوس و تحلیل بدافزاره. این شرکت سالانه یه مسابقه به اسم FlareOn داره. پارسال لطف کرونا شامل حالم شد. وقتی که به خاطر کرونا گفتند که سه هفته شرکت نیاین، منم داشتم نگاه میکردم که دیدم دقیقا در همون تاریخ مسابقهی FlareOn. شرکت کردم و سه هفتهی تمام نشستم درس خوندم و با اینکه کار تیمی بود، من تنهایی شرکت کردم. از ۵۰۰۰ نفر، ۳۵۰ شدم. اگه تیم داشتم، واقعا بهجرات میتونم بگم که زیر ۱۰۰ میشدم. پنج تا از بچههای ایران تو این مسابقه بودند، من گفتم بیاید با هم شرکت کنیم اما نیومدند.
_ واقعا رتبهی جذابی بوده!
علی، هانت هم میکنی؟
حقیقتا باگهانتینگ نکردم تا حالا. اما از این پروژههای هانتطور انجام دادم در بحثهای مهندسی معکوس و ریورس و اینا. مثلا؛ نرم افزارهای تجاریای بودند که ما مینشستیم بایپسش میکردیم، بعد رکورد میکردیم، میدیدیم اینجاش آسیب پذیری داره، گزارش میدادیم که این مشکل رو داره. برخوردها هم متفاوت بود؛ یکی تشکر میکنه، یکی بانتی میده، یکی گفت ویزاکارت بدید، نداشتیم، ارز دیجیتال به ولت داد. هرازگاهی از اینجور کارها کردم. اما خب حوزهی کاری ما بر خلاف وب خیلی فضاش باز نیست و استناد و ثبت و فروشش خیلی پیچیده ست و وقت زیادی هم میگیره. مثلا؛ من بخوام برم تو حوزهی باینری هانت کنم، باید برم اکسپلویت دربیارم یا تو Zerodium گزارش بدم که یکی از معروفترین پلتفرمهای فروش آسیب پذیر که تو روز روشن آسیبپذیری میخره، تجارت میکنه و پولهای خوبی میده. ولی درکل دوست دارم که از این کارها بکنم؛ وبلاگ بنویسم، CTF شرکت کنم، آسیب پذیری کشف کنم و ... . خیلی دوس دارم اینکارارو.
_ چه تفریحاتی داری؟
اصلیترین تفریحی که دارم، طبیعتگردیه؛ طبیعتگردی، کوهنوردی، سفر به جاهای بکر، کمپینگ و اونارو خیلی دوست دارم که انجام هم میدم.
یه چند وقتی هم هست که باخودم میگم طبیعتگردی بسه، برم سراغ بومگردی. چندتایی سفرهای این مدلی امسال رفتم، خوب بوده. بیشتر کتابهای روانشناسی میخونم. مثلا؛ یونگ. یه مدتی یونگ برام جذاب بود. کتابهای هرمان هسه رو هم خیلی دوست دارم؛ کتابهاش حالوهوای روانشناسی و عرفانی داره.
_ فیلم موردعلاقهت چیه؟ کارگردان چطور؟
یه شانسی که من آوردم، این بود که یه دوستی داشتم تو دانشگاه که این آقا اشتباهی اومده بود مهندسی اصلا. بهشدت اهل سینما بود. من فیلمدیدن رو با اون دوستم شروع کردم؛ فیلم میدیدیم، شروع میکرد به تحلیلکردن و ... . لذت میبردم از فیلم دیدن کنارش. الان دوسالیه که دیگه خیلی فیلم نمیبینم. از بین کارگردانها، تارانتینو رو خیلی دوستش دارم و تقریبا همهی کارهاشو دیدم. اولیش هم پالپ فیکشن بود. نولان رو هم خیلی دوستش دارم. خیلی کارهای قشنگی داره.
خاطرهها و تجربهها از تحلیل بدافزارها و ویروسها و ...
تو هم وقتی یه Trojan میبینی، ذوق زده میشی؟
آره، من اگه روی سیستم بدافزار ببینم، قبل از اینکه پاکش کنم یه نکاه میکنم تا ببینم چیز جدیدی داره؟ نداره؟
_ احتمالا همیشه هم آنتیویروست خاموشه. :)
آفرین، اصلا انتی ویروس ندارم ...
ببینید اگه با مکانیزمهای آنتیویروس آشنا بشید، میبینید که آنتیویروس واقعا اونقدرها نمیتونه از سیستم در برابر ویروس محافظت کنه؛ مگراینکه ویروس شناختهشده باشه. چون آنتیویروسها درکل دوتا مکانیزم دارند؛ یک روششون با Signature هست. مثلا؛ من این ویروس رو شناختم و میبینم مخربه، میام آپلودش میکنم. میگم این یه ویروسه. البته کتابخونهای به اسم یارا هم هست که متخصصین تغییر بدافزار ازش برای تشخیص یه ویروس جدیداستفاده میکنن و ویروس رو میندازنش تو اون دیتابیسی که آنتیویروسها دارن. آنتیویروس بررسی میکنه، میگه اینو اگر پیدا کردم، میگیرم، اگر نبود هم میرم. روش دوم که آنتیویروسها همه ندارنش، اینه که مثلا اون malware رو میبرن تو محیط ایزوله تا ببینن رفتار مخربی داره یا نه؟ اگه داشته باشه، میگن داره. بدافزاری که شناخته شده باشه، که مشخصه. ولی بدافزاری که شناخته نشده باشه، آنتیویروس واقعا نمیتونه جلوشو بگیره. علاوهبراین، آنتیویروس رو راحت میشه Bypass کرد. خلاصه که آنتیویروس فقط برای شناخت ویروسها و بدافزارهای شناختهشده به کار میاد و مفیده ولی برای شناختهنشدهها، نه. به همین دلیله که من اعتقاد زیادی ندارم بهش. ولی برای کسی که میخواد از سیستمش استفاده کنه و دانش تخصصی بدافزار نداره ، خوبه که داشته باشه تا حداقل باهاش جلوی ویروس شناختهشده رو بگیره.
_ در اولین نگاهت به یک فایل disassemble شده دنبال چی میگردی؟ Shellcode؟ Stringهای فایل؟
Stringها مهمترین قسمت یک فایله که اطلاعات خوبی میتونه بهمون بده. دوم هم اون ایمپورتهاش؛ اون dllهایی که استفاده کرده. اینها میتونه به شما یه دید خوب بده که فایل داره چی میخواد؟ و طی این روند، تا حدودی میتونی بفهمی فایل داره تو functionهاش چه میکنه. اگر اونجا یه چیز مشکوکی ببینم میرم سراغش. به خاطر همین بعضی از بدافزارهایی رو که میبینم، میدونم داره چیکار میکنه. قبلا خیلی روش دقیق میشدم، اما اینقدر که دیگه مدلهای مختلف رو دیدم و انجام دادم، الان دیگه یه نگاهی که میکنم میبینم :عه! اینم عین اون یکیه!
_ جذابترین بدافزاری که دیدی چی بوده ؟
جذابترین بدافزاری که دیدم، بدافزار معروف TDL3 بود؛ نسخهی 3 یه بدافزار که مربوط به سال ۲۰۱۴ یا ۱۵ بود. این بدافزار خیلی حرفهای بود. گزارشی که من ازش خوندم واقعا برام جذاب بود؛ اصلا تا حالا یه همچین چیزی ندیده بودم! از خودش خیلی خوب محافظت میکرد، تکنیکهای محافظت از خودش خیلی خوب بود. کتاب Rootkit & Bootkit که نویسندهی خیلی خبرهای هم داره، حدود سه فصل اولش به بدافزار TDL3 و TDL4 و تحلیل کارهایی که این بدافزار میکرد، اختصاص داده شده. من همیشه اینو گفتم که این بدافزار خیلی برام جذاب بود!
_ ویروس خاصی هست که از قدیما تو ذهنت مونده باشه؟
یادمه یه ویروس ایرانی بود، اسمش کظم غیظ بود. اون موقعها ویروس نیوفولدر هم بهش میگفتن. در بازهی سالهای ۸۷، ۸۸ اینا بود. من یادمه که اونموقعها گیمنت زیاد میرفتیم و با بچهها کانتر خیلی بازی میکردیم. تو خیلی از کافینتها و گیمنتها این ویروس بود. من این ویروس رو آورده بودم رو سیستم خونمون تا تست کنم ببینم چجوری پاک میشه. اونموقع تحلیل بدافزار بلد نبودم، ولی بلد بودم که چهجوری ویروس رو پاک کنم. این ویروس کظم غیظ به این صورت بود که نوار سبزرنگی میآورد بالای دسکتاپ واین نمیرفت. اونجا حدیث مینوشت، پیامهای سیاسی مینوشت، موس رو قفل میکرد. قشنگ اعصابخوردکن بود. اسمش رو هم برای همین گذاشته بودن کظم غیظ؛ چون باید کظم غیظ میکردی. آیکون خود آیکون فایل exe تو ویندوز ایکس پی آبی رنگ بود. یه همچین چیزی بود. به همین خاطر فایل exe، وقتی میدادی یه نفر به راحتی اجراش نمیکرد. اینا اومده بودن آیکون فایل exe رو شبیه آیکون فولدر میذاشتن. بعد اینو میریختن تو فلشها و اینور و اونورها پخشش میکردن. یه نکتهی جالبش هم اینجا بود که چون اکثرا اون پسوند فایلها تو سیستمها تو ویندوز مخفیه، پسوندفایل ها .exe فلان مخفیه دیگه کسی فعالش نمیکنه. ولی اون موقع مثلا کسی اگه میومد اینو نگاه میکرد، میدید که این فولدر تهش .exe داره و خب اجراش نمیکرد. بعد اومده بودن برا اینکه جلوی اینو بگیرن اسم فایل رو خیلی طولانی انتخاب میکرد، بعد ته تهش .exe میومد. توی ویندوز چون طول اسم فایل زیاد بود اون .exe رو نشون نمیداد و تهش یه نقطه میذاشت. من اون زمان میرفتم خونهی دوستام و این ویروس رو براشون پاک میکردم. تنها متد پاککردن این ویروس اونموقع این بود که از Safe mode میرفتی، تو Safe mode ویندوز XP میرفتی فایل های Autorunش رو پیدا میکردی و این رو متوقف میکردی.
_ درسته که میگن لینوکس به ویروس دچارش نمیشه؟
ببین ما خودمون با بچهها فن لینوکس بودیم. من خودم لینوکس حرفهای کار کردم. و از آدمهایی بودم که رو لینوکس تعصب داشتم. یادمه یه میم هم ازش تو فیسبوکم گذاشته بودم؛ شیرشاه و بچهش بود. بچه داشت از باباش میپرسید: "بابا این صفحهی آبی چیه؟" شیرشاه با ژستی غرورآمیز میگفت: " ما از لینوکس استفاده میکنیم." عشق لینوکس بودیم. بعد اومدیم جلو و دیدیم که واقعیت اینه که هر کدوم یه سری ضعفها و معایبی دارن. الان هم لینوکس رو بیشتر دوست دارم؛ یکی از دلایلش بهخاطر با کیبورد کار کردنه. حقیقت داستان اینه که میزان و تعداد بدافزارهایی که برای ویندوز میسازن، بیشتره. چرا؟ چون تو کل دنیا، کاربرهای ویندوز بیشتره. از نظر ضعف هم اگر بخوایم بررسی کنیم، خب یه سری ضعفها ویندوز داره، مک داره... خب مک هم یونیکتره. لینوکس پیش ماکروسافت یه امنیت خوبی داره. باز ماکروسافت خیلی کارا میکنه که لینوکس نداره. مزایایی هم لینوکس نداره. من بدافزارهای زیادی برای لینوکس هم دیدم؛ از اتفاق خیلی هم خوب بودن. تو لینوکس و محافظت از خود، انتی دیباگینگ Anti-debugging مباحث مهمی هستند. یه مقاله یا یه صفحه نوشتند دربارهی تکنیکهای Anti-debugging. Anti-disassembling..... تو لینوکس خیلی دستت بستهتره تا ویندوز که بتونی بدافزار تحلیل کنی. حداقل تو لینوکس یه بدافزار بتونه از خود APIهای لینوکسی جوری استفاده میکنه که شما میخوای تحلیل کنی، نتونی. ویندوز اینقدر پیچیده نیست. البته اینطور نیست که بگیم لینوکس نصب کنیم، ویروس نمیگیریم. اتفاقا اکسپلویت های بدی برای لینوکس اومده، مثلا؛ dirtyCOW تو لینوکس وحشتناک بوده در چهار پنج سال اخیر. مثلا dirtyCOW بد بود، یا مثلا یکی دیگه بود؛ کامند id شما میتونستی یه یوزر اد کنی و عدد integer بیشتر میشد، overflow رخ میداد، دسترسی روت میتونستی بگیری. یه کاربر لینوکس خیلی چیزها رو خودش تعریف میکنه و یاد میگیره. از طرفی کسی که لینوکس کار میکنه چون باید پکیج هارو دستی نصب کنه یا از repo ها بگیره، بیشتر با مباحث آپدیت کردن کرنل و پکیج ها آشنایی داره. ... وقتی لینوکس رو یا میگیری، دانش مباحث امنیتیش هم بالاتر میشه و این قضیه هم یه تاثیری داره به نظرم.
_ مثلا اگر SMB ویندوز ایکس پی و ویندوز 7 روی سیستم های دولتی آپدیت بود، WannaCry این بلا رو سرشون نمیاورد.
دقیقا؛ کل اتفاقی که تو واناکرای افتاد! یا حتی برگردیم عقبتر؛ Stuxnet! تو Stuxnet شما یه آسیب پذیری رو داری میبینی که بدافزار داره ازش استفاده میکنه. که مایکروسافت چندماه قبلترش پچش کرده. هشدار هم داده که آقا این پچ رو نصب کن! ولی شما میبینی که نصب نکردن... این هست واقعا! حالا من همیشه اینو گفتم به بچههایی که تو حوزهی امنیت سایبری میخوان برن، لینوکس میتونه زمینهی اولین ورود شما به دنیای امنیت باشه. لینوکس یه دید میده که اصلا سیستم عامل چیه؟ این سیستم عاملها که تیک میزنی، Next Next چیه اصلا؟ از پشتپردهی اینها سردرمیاری. شما در نرمافزارهای لینوکسی کامندلاین رو اگه بلد نباشی، دیگه هیچ فایدهای نداره، مخصوصا برای کسی که بخواد باینری یا درلایههای پایین کار کنه.
_ تاحالا شده یه Malware رو به صورت Baremetal یعنی روی سیستم اصلی خودت اجرا کنی؟
این که اصلا کارمه. شما فکر کن یه درصد من حوصله داشته باشم، بد افزار رو باز کنم رو VMWare چون اصولا من یه کم این ماشین مجازیام شلوغه، اصلا نصب میکنم یه malware روش باز کنم malware میزنه میترکونه، بعد دیگه تمومه! حوصله ندارم دیگه بشینم نصبش کنم. بعد داستانو میدونی یه ماشین و نصب میکنم حالا بیا IDA روش نصب کن، Debuggerها رو بیار، اینارو نصب کن... دیگه بیخیال میشم! اسنپشات اینارو هم اصولا اصلا یادم میره شات بگیرم از همون اول دیگه. یه وقتایی میبینی malware اومده میگم بذار همینجا رانش میکنیم دیگه. ولی خب از وقتی این باجافزارها هم اومده، دیگه اینقدر کله شق بازی درنمیارم.
_ تو بیشتر از تحلیل static لذت میبری یا dynamic ؟
من جفتشون رو دوست دارم، ولی از dynamic بیشتر خوشم میاد و برام راحتتره. چون که دیباگکردن خیلی بهتره؛ تو فرآیند دیباگ خیلی نتایج بهتری میبینی، مواردی که تو مموری میاد رو راحتتر میتونی بفهمی، میتونی مموری رو انالیز کنی، ریجسترها رو بررسی کنی و ... . ولی خب خیلی وقتا متاسفانه با دیباگکردن و بحث تحلیل dynamic نمیشه به نتایج رسید و مجبوری بیای تحلیل static کنی؛ یه سری تکنیکها بزنی، یه سری چیزا رو در بیاری، بشینی برنامه رو از اول Trace کنی دونهبهدونه، بشینی خطبهخطش رو بشینی بخونی که بفهمی چه اتفاقی داره میافته. بهعنوان مثال میگم؛ شما ممکنه فایلی داشته باشی، ولی اون فایل مال سیستم عاملی که شما بتونی اجراش کنی، نیست. بهعنوان مثال؛ این واچهایی که اومده. خیلی از این واچها سیستم عاملهاشون اونجوری نیست که شما بهراحتی بری و سیستم عامل واچ فلان رو دانلود کنی، بعد بشینی روش مثلا دیباگ کنی! بر فرض سیستم عامل رو هم اگر گیر بیاری، دیباگرشو از کجا میخوای گیر بیاری؟ من یه بار یه اپ واچ سامسونگ رو آنالیز کردم. دیباگری نبود براش. مجبور بودی بشینی ریورسش کنی، خطبهخط بخونیش، بعد مثلا پچش کنی، یه سری چیز بذاری برا خودت و هی رانش کنی بعد دوباره پچش کنی و دوباره رانش کنی تا بفهمی چه تغییراتی میکنه. به همین دلیل استاتیک واقعا همیشه قطعا نیازه.
_ ما یه سری به توییترت زدیم. اینطور متوجه شدیم که با سینا کروندی دارید روی هایپردیباگ کار میکنید، یا هایپر دی بی جی. کنجکاو شدیم که راجع بهش بیشتر بدونیم. برامون بیشتر ازش میگی که چی هست؟
آره، همونطور که درطول گفتوگومون اشاره کردم، من و سینا کروندی قدیم هم کلاس بودیم. من از وقتی که رفتم دانشگاه، ازش خبری نداشتم. تا اینکه سال ۹۷ بود که دیدم یه سری کارگاههای مهندسی معکوس بود، روش زده بود "مدرس: سینا کروندی" من رفتم نشستم. تو اون کارگاه دیدم که خود سیناست. اونجا بین افراد دیگه نشسته بودم. سینا مشغول ارائه و تدریس بود. تا اینکه، سینا اومد طرفای ما. یهو هم رو دیدیم و گفتیم که ما همو میشناسیم. بعد دیگه رفتیم بیرون و اینا. سینا بهم گفت:" ما یه پروژه داریم به اسم HyperDBG ، مربوط به مرکز پژوهشهای نوین تهران. تو هم بیا آشنا بشو. " منم قبول کردم. چون با فضای ویندوز خیلی آشنا نبودم، فضای کاریم لینوکس بود. سینا گفت که بیا، یاد میگیری. الان یک ساله که دلودماغش رو داریم، و داریم تو HyperDBG کار میکنیم. ایدهی خود سینا بوده. شما تو سطح ویندوز میای از یه دیباگر استفاده میکنی، user-mode هست. یه زمانی هست کرنل میخوای بیاری آنالیز کنی، از یه دیباگر kernel-modeی استفاده میکنی. هایپر وایزر یه تکنولوژی بود که Intel در نسل جدید سی پی یو هاش گذاشت به اسم Intel-VT که تمام این مجازی سازی رو فراهم کنه. HyperDBG یه دیباگره که از لایه هایپروایزر میاد به فضا نگاه میکنه. یعنی شما یه لایه پایینتر از کرنلی. یعنی یه دسترسی کامل رو کرنل داری. این باعث میشه که به خیلی از محدودیتهایی که روی دیباگر هست برداری و چون از یه لایه پایینتر میای عملیات دیباگ رو دوباره انجام میدی. که خب دیباگرش خیلی الان تو وضعیت ما ریلیز دادیم که تو وضعیت خوبیه. ادمای خیلی زیادی میان شرکت میکنند، کد میزنند، خیلیها کامنت میذارن. درکل HyperDBG به یه وضعیت خوبی رسیده. قبل ریلیز کار خیلی سنگین تر بود اما الان منم یه کم سرم شلوغتر شده، کمتر میرم ای پی ام.
_ چه کتابهای تخصصیای رو توصیه میکنی به علاقهمندان این حوزه؟
دم شهریار جلایری گرم، واقعا احترام زیادی براش قائلم. من یه سری یه ایمیلی براشون زدم، گفتم که استاد، میخوام تو این حوزه کار کنم. گفت:" استاد چیه به من میگی؟ من در اون حدم نیستم." بهم یه لیست کتاب داد و گفت که اینا رو بخون. تنها کسی بود که من تو حوزهی مهندسی معکوس میشناختم و باینری کار میکرد. و چقدر هم متواضع بود. دمش گرم که کتابهای هدفمندی رو بهم معرفی کرد. من خوندم. چیزی که خیلی از افراد در ابتدا یا حتی اواسط مسیر در این حوزه دچارش میشن، اینه که چند شاخه میرن. از وب بگیر، از کد و باینری و مباحث اکسپلویتنویسی و مباحث مهندسی معکوس و بدافزار و ... . اونایی هم که نمیخوان علم یاد بگیرن، یه تفکر وسواسگونه هم دارن. اینا میخوان همه رو باهم بردارن. ولی یکی نیست بیاد به اینا بگه و مسیر رو براشون توضیح بده و ترسیم کنه. اولین کتابی که در حوزهی هک وب خوندم، Web Application Hacking بود. اولین کتابی که در حوزهی مهندسی معکوس خوندم هم، کتاب GrayHat Hacking ، نسخهی چهارش بود که فوقالعاده بود. فکر کنم الان نسخههای بیشتری ازش اومده باشه. حدود هزار صفحه ست. دوازده قسمت داره، هر جاش از یه چیزی گفته. یکیش اومده از هک وب گفته، یه جا از مهندسی معکوس میگه، یه جا بدافزار، یه جا اکسپلویتنویسی و اینا. این کتاب به یه آدم مبتدی یه دید میده. من به افرادی که میان تو پیوی و میگن میخوایم شروع کنیم، به کسی که میگه من وب و شبک بلدم، میگم که برو این کتاب رو بخون، چون به آدم دیدگاه میده. اینو خوندم رفتم سراغ کتاب خوب دیگهای به اسم Art Of Explotitation من عادت داشتم کتاب رو با PDF اصلا نمیتونستم بخونم. باید کتاب پرینتشده، صحافیشده، میداشتم، ماژیک دستم بگیرم و بخونم. به آمازون هم که دسترسی نداشتم، از این سایتهای زیرزمینی میگرفتم. یادمه گاهی اندازهی کتابهای پرینتشدهای که میاوردم تا یه متر میرسید. هی هم میرفتم میرفتم تو آمازون میدیدم و میگفتم: " وای این کتاب اومده! بدو اینو بگیر. زود این کتاب رو تموم کن، بعد برو سراغ بقیه. " حس میکردم این همه کتاب که میخونم، عقبم خیلی. علم از اون سمت داره میره، من هنوز عقبم. ترس از عقب موندن داشتم. الان که گذشته و میتونم از بیرون نگاهش کنم، اینا رو میفهمم. اونموقع دچار یه فرسودگی شده بودم. من که لپتاپم هیچوقت خاموش نمیشد، یه مدت کلا خاموش بود! دیدم اینطوری نمیشه. باید یه تغییراتی بدم تو سبک زندگیم. یه کاری تو افسک گذاشتیم ایده امیر بود چون خیلی ها میان میگن ما میخوایم هک رو شروع کنیم از کجا شروع کنیم این سوال کلیشه ایه که تو پی وی من زیر کامنت های من میپرسن امیر میگفت جواب نده بهشون بعد بهش میگفتم گناه دارن میگفت نکن پیله میشن بهت و من میگفتم نه امیر تو اعصاب نداری بذار من هندل کنم. اخه جالب بود امیر یه اکانت افسک داشت دست من بود سوال میپرسیدن میگفت بیا جواب اینا رو بده
یه بار هم به پیشنهاد امیر رسولی به لایوی پیوستم که افراد مختلف این حوزه توش بودن و هرکدوم از تخصص خودشون و مسیرش میگفتن. بابک امین آزاد بود، که الان امریکاست. حمید فردی بود که تو سوئده. یاشار بود. خلاصه هرکی اومد صحبت کرد. منم یه رودمپ گذاشتم.
_ به طور کلی فضای امنیت سایبری ایران و اقدام لازم براش رو چطور میبینید؟
باتوجه به تجربه ای که من دارم وچیزهایی هم که شنیدیم و دیدیم از افرادی که دارند تو این حوزه کار میکنند، وضعیت حوزهی امنیت سایبری رو تو ایران اصلا خوب نمیبینم. با توجه به اینکه بچههای خیلی بااستعدادی داره، ولی متاسفانه افرادی که در جایگاههای مربوط به امنیت نشستن، تجربه و دانش لازم رو راجع به امنیت ندارند، اما دارند جایگاه امنیت تصمیمگیری میکنند. من بحث عدم برخورداری از دانش امنیتی رو زیاد دیدم، من دورههای زیادی در حوزههای تحلیل بدافزار، فارنزیک، مهندسی معکوس و ... رو برای شرکتهای مختلفی گذاشتم. واقعا نیروهای امنیتی ضعیفی داشتند! اوج فاجعه رو در چنین جاهایی میبینم، مثلا؛ از شرکت خفنی میان و درخواست دوره میکنن، من باخودم میگم احتمالا چقدر خفن باشن! بعد میرم سر کلاس و میبینم اوضاع واقعا متفاوت و ناامیدکنندهست! یا شما فرض کن توی کشور به یه جایی حمله شده و از طریق بدافزاری آلوده شده؛ جایی رو بهطورمشخص نداریم که بگن برید این بدافزار رو کشفش کنید، تحلیلش کنید، تا ببینیم از کجا ضربه خوردیم؟ بدافزار چی بوده؟ نهایتش همین چند وقت پیش بود که دیتاهای جاهای مختلف لیک میشد دیگه؛ شرکت X رو زدن، همهی شمارهها رفت. دیتابیس تلگرام ملت رفت، دیتابیس ثبت احوال همهی کدملیها کلا رفت و ... . گزارش درستوحسابی از تحلیلشون میومد؟ نه! نهایتِ گزارشی که ما میخوندیم، از یاشار بود. ولی اینکه نهاد معتبری بیاد از تحلیل حمله و ... بگه. از طرفی داریم میبینیم که خیلی از متخصصهای کاردرست دارن مهاجرت میکنند و از ایران میرن. این سیل از مهاجرت هم قطعا رو وضعیت امنیت سایبری، اثر داره.
خیلی جاها نگاه درست و عمیقی به امنیت سایبری وجود نداره حتی، و تنها چیزی که هست یه نگاه رفع تکلیفی و براساس شنیدههاست. مثلا؛ یه بار به من زنگ زدن و گفتن که ما از فلان جاییم ( که جای مهمی هم بود) و متخصص تحلیل بدافزار میخوایم. بعد من گفتم من در خدمتم و اینا، صحبتهای مختصری کردیم و رسیدیم به حقوق. من یه مبلغی پیشنهاد دادم، ایشون گفت:" آقا بیخیال! نیروی با ده سال سابقهی کار ما اینقدر نمیگیره! ببین ما فقط یکی رو میخوایم بدافزاری که تو شبکه میاد، رو بگیره بندازه تو ویروستوتال ببینه این رو شخیص میده یا نه؟ یه گزارشم بعدش بده. دیگه ما ته کارمون از تحلیل بدافزار همینه. " گفتم: " ویروس توتال میخوای، این که کاری نداره... برو یکی رو از سر کوچه پیدا کن، همین کار رو با یکچهارم قیمت برات انجام میده! چرا دنبال منی؟ من اینکاره نیستم، من کارم تحلیل تخصصی بدافزاره! " وقتی یه ویروسی اومده رو سیستم، کارشم کرده و رفته، تموم شده. بعضیا میگن: " خب پاکش کردیم، رفت. ما موفق شدیم؛ ما ویروس رو پیدا کردیم، پاک کردیم. یه rule هم تو فایروال براش نوشتیم که دیگه نیاد. دیگه تحلیلش رو میخوایم چیکار؟ " بعضی آدمهای متخصص تو حوزه تخصصی میگن:" خب، بریم ببینیم این ویروس چیکار میکنه؟ این ویروس اصلا چیا رو برده؟ از کجا اومده؟ اصلا چجوری اومده؟ و ..." در مورد آزمایشگاه بدافزار، حقیقتا من فقط چیزهایی راجع به آپاها شنیدم. درحالیکه در خارج از کشور این موضوع خیلی خیلی بیشتر مورد اهمیت و توجهه! در ایران اما، خیلی از کسبوکارها و بخشهای کشور اصلا برای این بُعد قضیه اهمیت قائل نیستند و ضرورتش رو نمیبینند. به همین دلیله که براش سرمایهگذاری هم نمیکنند.
_ چلنجها و سناریوهایی داخل سایت malware-traffic-analysis هست. اگر همونم اجرا کنن، تست کنن، گزارش کنن، همون هم برای سازمانهای ایرانی تاحدی کفایت میکنه! اما همونم انجام نمیدن!
اره دقیقا اره والا همینه درسته واقعا
به خاطر همینه که خیلی ناراحت کنندهست. اون روزی که همین حادثهی هک پمپ بنزین بود و خب یه سری شعارهای سیاسی نوشته بودن، من حقیقتا ناراحت شدم! باخودم گفتم: " خدایا، وضعیت امنیت سایبری اینقدر بده که شیش ماه پیش وزارت راه و شهرسازی رو زدن، بعد سازمان زندانها رو زدن، حالا اومدن این پمپ بنزینها رو زدن! این یعنی فاجعه! " من از یه بندهخدایی که در جریان این حملات بود، پیگیر اخبار بیشتر شدم. از چیزی که بهم گفت، خیلی تعجب کردم. گفت حملهای که به پمپ بنزین ها شد، جنسش مثل حملهای بوده که به وزارت راه و شهرسازی شده بود. یعنی از همون آسیب پذیری، از همون راه اومدن و نفوذ کردن! خب این یعنی فاجعه! یعنی از یه سوراخ چندبار گزیده شدن! ولی تو آفسک مثلا امیر رسولی خیلی تلاش میکرد، ولی فیدبکی که ما دریافت میکردیم، خیلی بد بود؛ تهدیدها و ... .
جا داره که یه چیزی رو هم راجع به شغلم بگم؛ در این چند سالی که من کار کردم، یکی از چالشهای موجود برای من پیداکردن یه شغل مناسب بود! من از سال نودوپنج هست که دارم کار میکنم. از این پنج سال، تا الان دوسالش رو تخصصی کار کردم. بقیش کارایی نبوده که بگم تخصص نداشتم. ولی کار تخصصی موردعلاقهم نبوده. من دوست داشتم الان یه جایی باشم، بهطور تخصصی تحلیل بدافزار کنم، مهندسی معکوسی، اکسپلویت و ... . خیلی هم شرکتهای مختلفی رو گشتم. درنهایت به این نتیجه رسیدم که شما دو تا راه داری برای ای اینکه بتونی یه مرزی بین علایقت، کارت و درامدت ایجاد کنی؛ ۱. اینکه پاشی بری. مهاجرت کنی. چون شرکتهایی تو اروپا هستن که تخصصی کارت رو بکنی و پول هم دربیاری. ۲. اینکه اگر اینجا هستی، باید راه درآمدت از یه مسیر دیگه باشه، شب هم بیای سراغ علایقت برای خودت.
_ امیدواریم هر جایی که هستی روزهای خوبی رو بگذرونی علی عزیز. ممنون که در این مصاحبه همراهمون بودی.
بلاگپستهای مرتبط:
گپوگفتی با شکارچی فعال راورو؛ ابوالفضل فهیمی (Crypton)
گپوگفتی با شکارچی برتر راورو؛ محمد درخشان (mohammadrobot)
گپوگفتی با شکارچی فعال راورو؛ سیدرضا فاطمی (Checkmate)
گپوگفتی با شکارچی جوان و فعال راورو؛ پیمان زینتی (Scar3cr0vv)