مسترباگ
مسترباگ
خواندن ۸ دقیقه·۳ سال پیش

نقشه‌ راه امنیت اندروید

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

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

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

اگر سیب‌زمینی نیستید و هرجایی حس کردید که مباحث رو بلدید گام بلندتری برداشته و به عدد بعدی بروید.

قرار نیست که با یک‌بار طی کردن این منازل به صورت آبشاری بتونید به خبرگی در این زمینه برسید بلکه باید به صورت agile این چرخه رو بارها و بارها با تمرین و تجربه هرکدوم به آرامی طی کنید.

توجه:

  • سرفصلهای با رنگ زرد = حتما باید بدونید
  • سرفصلهای با رنگ نارنجی = بدونید جای دوری نمیره
  • سرفصلهای بارنگ خاکستری = حال داشتید بدونید

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

فایل pdf,svg و png نقشه‌ رو در مخزن گیتهاب قراردادم و به زودی تمام این مباحث رو میتونید از اونجا پیگیری کنید.(لینک آموزشی، ابزارها، کورسها، باگها و … )

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

۰- پیش‌نیازها

نقطه صفر مرزی که زمین خاکی این منازل ۷ گانه هستش و اگر باهاشون آشنایی ندارید حتما همینجا کمپ کنید چون در ادامه مسیر برای شما … مواد لازم : زبان‌برنامه نویسی، شبکه و رمزنگاری.

از زبان شروع کنید. همه زبان هایی که نوشتم توی امنیت اندروید نیازتون میشه اما سختش نکنید با جاوا شروع کنید و برید جلو. هروقت بقیش نیاز شد یادمی‌گیرید. کمال گرا نباشید چون کمالی وجود نداره

شبکه هم وقتی نیازه که اندروید میخواد با سرور ارتباط بگیره و شما قراره یکسری بلاها سر این ترافیک بیارید. خیلی مهمه که بدونید این ارتباط چطوری داره برقرار میشه و از کجا آمده‌است و آمدنش بهر چه بوده .

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

۱- طراحی و معماری اندروید

شما اگر بخواید کلید بسازید باید با تمام اجزای قفل آشنایی دیرینه‌ای داشته باشید. وقتی ندونیم سیستم چطوری ساخته شده چطور میخوایم هکش کنیم؟ اینجا زیاد وقتتون رو نخواهد گرفت برای شروع. فقط باید بدونیم این لایه ها چطوری روهم سوار شدن اما کاربرد مستقیمی نداره توی ادامه کار. اما اگر ندونید و بیخیالش بشید خیلی نمیفهمید دارید چیکار میکنید اما آره اون کاره قابل انجام هست. من اگر بودم بیخیال این تئوریجات نمی‌شدم. البته اگر توسعه‌دهنده اندروید هستید قاعدتا باید تا مرحله ۴ رو بدونید اگر نه آسیاب این چند مرحله رو به نوبت بچرخونید.

۲- اجازه‌ها

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

۳- کامپوننت‌های اصلی اپلیکیشن

در این قسمت دعوت میکنم از شما تا با قطعات اصلی هر برنامه در اندروید آشنا بشید. هیچ برنامه اندرویدی وجود ندارد که نیازمند حداقل یکی از این کامپوننت ها نباشه. در واقع آجر های خونه اندرویدی هستن این عزیزان. فهم خیلی اهمیت پیدا میکنه توی این قسمت. سعی کنید چنتا فیلم هم از توسعه این آجر ها و نحوه کارکردشون ببینید. یه قسمت core api هم من بهشون اضافه کردم که بعدها توی مهندسی معکوس خیلی به کار میاد. هرچقد اینها رو عمیق تر بخونید راحتتر میفهمید اپ داره چیکار میکنه بعدها. ولی الان خیلی روش وقت نذارید در حد مرور و کلیت و … بعدا برگردید روش یا هروقت نیاز شد. برای یادگیری عجله نکنید.

۴- ارتباط با سرور

اندروید و مافیها ( آنچه در آن ) به عنوان کلاینت مورد استفاده قرار میگیرد. اگر این کلاینت ما بخواد با سرور (کدهای back-end مثل php,node, … ) ارتباط بگیره باید امنیتش تامین بشه. با کتابخونه‌هایی که اسفاده میشه و نحوه پیاده سازی مکانیزم‌های امنیتی شون آشنا بشیید. حتما کار با ابزار رو مخصوصا burp suite رو اوستاش کنید . کار عملی نباشه فایده چندانی نداره. اینجا اون شبکه ای که خوندید به کارتون خواهد اومد. این نشون میده شما وقتی جیک جیک مستونتون بوده فکر زمستون هم بودید. البته زمستون اصلی رو هنوز ندیدید.

۵- تحلیل ایستا

حالا تازه رسیدیم به هک‌ترین قسمت ماجرا. تا الان دید خوبی نسبت به سیستم پیدا کردیم و میتونیم بفهیمیم چی مال کجاست و ما کی هستیم. برای تست امنیتی قسمتهای مختلف اندروید از دو روش تحلیل استفاده میشه. ایستا و پویا.

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

مهندسی معکوس (reverse engineering) هم میگن به این قسمت که البته میتونه تحلیل پویا رو هم شامل بشه. کدها یا جاوا و کاتلین هستن یا c و c++ . گزینه دو اندکی سخت‌تره. پس فعلا بیخیالش بشید بنظرم و بعدها روش وقت بذارید چون ابزارهاش هم کلا متفاوتن.

۶- تحلیل پویا

و شیش. تحلیل پویا نامداره. یعنی تحلیلی که نیازه اپلیکیشن در حال اجرا باشه و انگولکهای ما در قبال اپ، توی زمان اجرا و روی RAM صورت بگیره. اینجا جاییه که واقعا آدم به خودش غره میشه چون خیلی حرکات زیبا و جاداری میشه زد. درواقع میتونم بگم دزد و پلیس بازی بیشتر از این مرحله شروع میشه. برنامه نویس ها میان کارایی انجام بدن که جلوی هکر رو بگیرن بعد هکر کارایی انجام میده که اونا رو دور بزنه. روز به روز هم روش جدید و روش دورزدن جدید.

زیبایی اونجایی شروع میشه که با تحلیل ایستا به یکسری اطلاعات میرسیم و برای انجامش باید بریم سراغ پویا جان. بعد دوبراه با پویا یه حرکتی میزنیم بر میگردیم توی ایستا. معمولا توی دنیای واقعی از ترکیب این روش ها استفاده میشه. ابزار خیلی زیاده ولی من اصلی هارو آوردم فعلا و الکی شلوغ بشه آدم نمیفهمه بره سراغ کدوم. مغز متفکر ابزاریه به اسم frida و هر چقدر از زیباییه این بگم کم گفتم. من حتی از زیبایی این ابزار میتونم به زیبایی خالق این ابزار هم پی ببرم. پس خوب یادش بگیرید.

۷- حملات و باگ‌ها

اگر تا الان خسته نشدید باید اعتراف کنم که خیلی جان سخت هستید. دمتون گرم. چیزهایی که تا الان از داستان فهمیدید حکم ماهیگیری رو داشته. خوشحال نشید. شما هنوز نمیدونید ماهی چیه اصلا.

اگر تا الان خسته نشدید باید اعتراف کنم که خیلی جان سخت هستید. دمتون گرم. چیزهایی که تا الان از داستان فهمیدید حکم ماهیگیری رو داشته. خوشحال نشید. شما هنوز نمیدونید ماهی چیه اصلا.

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

حرف آخر

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

برای شروع میتونید از آزمایشگاه هایی که برای تمرین تست نفوذ اندروید ساخته شده استفاده کنید(مثل این و این) یا وارد یک برنامه باگ‌بانتی بشید. ctf ها هم میتونه محک خوبی برای یادگیری باشه.

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

یک کانالی هم هست که تشکیل دادم برای خودم و توی پروژه های خودم وقتی به مبحثی جالب و آموزشی خوب برخورد میکنم اونجا میذارم. البته مباحثش شاید به درد همین الانتون نخوره ولی در آینده‌ای نه چندان دور بهش میرسید.

اگر سوالی هم مربوط به هرقسمت از مسیر داشتید توی کامنتها بپرسید.

مخزن گیتهاب:

https://github.com/Ralireza/Android-Security-Teryaagh


پست پیشنهادی برای وارد شدن به دنیای امنیت:

https://vrgl.ir/mUaP1


امنیتهکامنیت اندرویدهک اندروید
سماع قلمی حول برنامه‌نویسی، امنیت و دنیای آنالوگ https://mrbug.ir
شاید از این پست‌ها خوشتان بیاید