مقدمه — چرا تست نفوذ گوشی اندرویدی مهمه؟
گوشیهامون شده بازارِ طلای اطلاعات: اپلیکیشنها پیام و رمز عبور، حساب بانکی، عکسها، موقعیت GPS و کلی اطلاعات حساس رو نگه میدارن. با زیاد شدن استفاده از موبایل و اپهای موبایلی، آسیبپذیریهای اندروید هم جذابتر و بااهمیتتر شدن.
تست نفوذ اندروید یعنی «پیدا کردنِ» همون آسیبپذیریها قبل از اینکه مهاجم پیداشون کنه — و این کار میتونه جلوی نشت داده، کلاهبرداری و ضررهای بزرگ رو بگیره.
این مقاله نقشهٔ راه گامبهگام برای کسیه که میخواد از صفر شروع کنه و بعد به سطح حرفهای برسه: چه ابزار لازم داری، چی باید یاد بگیری، چطوری تمرین کنی، و در آخر چجوری گزارش و درآمد بسازی.
1. مبانی شبکه و پروتکلها
- آشنایی با HTTP/HTTPS، REST APIs، WebSockets
- فهم TLS/SSL، Certificate pinning (یا عدم آن)
- آشنایی با مفاهیم TCP/IP و DNS برای تحلیل ترافیک
2. لینوکس و خط فرمان
- کار با ترمینال: اجرای دستورات، لاگها، دسترسی فایلها
- نصب پکیجها، کار با adb در لینوکس بهتر و سادهتره
3. زبانهای برنامهنویسی
- Java / Kotlin (برای درک کد اپها)
- Python (برای اسکریپتنویسی، اتوماسیون و ابزارسازی)
- آشنایی با XML برای تحلیل فایلهای manifest و resource
4. مفاهیم عمومی امنیت اپلیکیشن
- مبانی OWASP Mobile Top 10 (مثل insecure data storage, insecure communication)
- مفاهیم authentication/authorization و session management
نکته: اگه با Java یا Kotlin آشنا نیستی نترس — برای شروع میتونیش با مفاهیم پایه و خواندن فایلهای decompiled کار کنی و به مرور سراغ آموزش زبانها بری.
بخش ۲ — آشنایی با ساختار اندروید و APK
فهم ساختار داخلی اندروید و فایل APK پایهٔ همهٔ تستهاست.
معماری کوتاه اندروید
- Application Layer: اپلیکیشنها و UI
- Android Framework: APIهای اندروید (Activity, Service, Content Provider, Broadcast Receiver)
- Native Libraries: کدهای C/C++ (در lib/*.so داخل APK)
- Linux Kernel: مدیریت سختافزار و امنیت پایه
اجزای مهم APK
- AndroidManifest.xml — مجوزها، activityها، intent-filterها، providerها
- classes.dex — بایتکد جاوا/کاتلین (بعد از decompile به smali یا جاوا قابل مشاهده)
- res/ و assets/ — منابع و فایلهای استاتیک
- lib/ — فایلهای باینری native (C/C++)
- resources.arsc — منابع فشرده
فهم این اجزا کمک میکنه بفهمی کجا ممکنه داده حساس ذخیره شده باشه یا کد خطرناک وجود داشته باشه.
بخش ۳ — محیط تست و شبیهسازی (Lab)
قبل از پرتاب روی دستگاه واقعی، یک لاب امن و کنترلشده داشته باش:
محیطهای پیشنهادی
- Android Studio emulator — رسمی و منعطف
- Genymotion — سریع، قابلیت نصب imageهای مختلف
- Real devices — برای تستهایی که به hardware نیاز دارن (BLE، GPS، سنسورها)
- Physical test phone — همیشه یک دستگاه برای تست داشته باش، نه دستگاه شخصیات!
تنظیمات مفید
- نصب adb و اتصال از طریق USB یا TCP/IP
- فعال کردن USB Debugging در دستگاه تست
- ساخت یک VM یا لپتاپ امن با Kali یا Parrot برای ابزارها
- نصب Burp Suite با CA certificate روی emulator برای proxy کردن ترافیک
بخش ۴ — ابزارهای اصلی (که باید مسلط باشی)
این ابزارها تقریباً ستون فقرات هر تستنفوذ اندرویدی هستن:
ابزارهای تحلیل و مهندسی معکوس
- apktool — decompile resources و smali
- jadx — تبدیل classes.dex به کد جاوا خوانا
- jadx-gui یا JD-GUI — برای خواندن کد Decompiled
- dex2jar — تبدیل dex به jar برای تحلیل
ابزارهای runtime و hooking
- Frida — Hook کردن توابع هنگام اجرا، تزریق کد داینامیک
- Objection — wrapper اطراف Frida برای تست سریع و common tasks
- Xposed / Magisk modules — برای تغییر رفتار سیستم در سطح روت
ابزارهای تحلیل استاتیک و اسکن
- MobSF (Mobile Security Framework) — خیلی قدرتمنده: استاتیک + داینامیک + API scan
- QARK — بررسی آسیبپذیریها و پیشنهاد remediation
- AndroBugs Framework — اسکن خودکار ضعفها
شبکه و پروکسی
- Burp Suite — intercept و manipulate ترافیک HTTP(S)
- mitmproxy — proxy قابل script زدن با Python
- Charles Proxy — جایگزین تجاری و UX خوب
ابزارهای دیگر
- adb, fastboot — مدیریت دستگاه
- apk-signing tools — تغییر و دوبارهامضای APK
- smali/baksmali — کار با کد smali
- Frida-server (روی دستگاه روت شده یا emulator)
- MobSF برای اتوماسیون گزارشها
بخش ۵ — مهندسی معکوس و تحلیل استاتیک APK
بریم سراغ مراحل عملی:
1. گرفتن APK
- از Google Play با ابزارهایی مثل raccoon یا apk-downloader یا از فایل مستقیم توسعهدهنده
- یا از دستگاه با adb pull /data/app/… (نیاز به دسترسی و شرایط خاص)
2. باز کردن APK
- با apktool d app.apk فایلها رو decompile کن
- jadx-gui app.apk برای دیدن کد جاوا مفیدِ
3. بررسی AndroidManifest.xml
- permissions: آیا اپ درخواست permissionهای بیش از حد میکنه؟
- exported components: آیا activity یا provider ای که نباید export شده؟
- content providers: آیا provider با mode=“exported” داده حساس رو در اختیار قرار میده؟
4. جستجوی کلیدها و دادههای حساس
- آیا hard-coded API keys یا secret ها داخل فایلها هست؟
- بررسی string constants در کد برای پیدا کردن endpoints و credentials
5. بررسی ذخیرهسازی محلی
- SharedPreferences، فایلهای SQLite، فایلهای داخل internal/external storage
- آیا رمزنگاری درست انجام شده یا دادهها plaintext ذخیره شدهاند؟
6. native libraries
- فایلهای .so رو استخراج کن و با ابزارهای مناسب آنالیز کن (IDA Pro یا Ghidra برای تحلیل باینری)
بخش ۶ — تحلیل داینامیک و تست نفوذ عملی
1. بررسی ارتباطات شبکه
- اپ رو از طریق Burp یا mitmproxy proxy کن
- آیا ترافیک HTTP بدون TLS داره؟
- آیا از Certificate Pinning استفاده شده؟ (اگه بله، باید bypass کنی)
روشهای bypass: - استفاده از Frida برای hook کردن متدهای pinning
- تغییر فایلهای شبکۀ اپ با ابزارهایی مثل Objection
- اگر روت داری، میتونی با Xposed module یا Magisk bypass انجام بدی
2. آزمایش authentication & session management
- تلاش برای replay کردن توکنها
- تست session fixation و token leaking
- brute-force یا credential stuffing (فقط در محیط قانونی یا با اجازه)
3. آزمایش ذخیرهسازی حساس
- خواندن SharedPreferences یا DBهای محلی
- بررسی فایلهای cache یا فلدرهای خارجی که ممکنه اطلاعات لو برن
4. تزریق کد و Hooking
- با Frida متدهای کلیدی (مثل checkAuth یا getToken) رو hook کن و رفتار رو تغییر بده
- نمونه: تغییر مقدار return متد isUserLoggedIn() برای دسترسی بدون login (فقط در لاب)
5. حملات روی IPC و componentها
- ارسال Intentهای crafted به activityها یا broadcastها
- بررسی exported services و providers که ممکنه exploit بشن
6. تست permission escalation و سو استفاده از سیستم
- بررسی اینکه آیا اپ با اجازههای معمولی قادره به بخشهای سیستمی دسترسی پیدا کنه
- تستهای مربوط به content provider و path traversal
بخش ۷ — تستِ با دسترسی روت (Rooted devices) و native attacks
وقتی دستگاه روت باشه، دسترسیها خیلی بازتر میشن و میتونی سناریوهای بیشتری بررسی کنی:
روت چه کمکی میکنه؟
- نصب Frida-server برای hook راحت
- دسترسی مستقیم به فایلهای internal app (/data/data/<package>)
- آنالیز و تغییر فایلهای سیستم و رفتار kernel-level
native exploitation
- آنالیز .so برای یافتن buffer overflow یا integer overflow
- استفاده از ابزارهایی مثل GDB، radare2، Ghidra یا IDA برای تحلیل
هشدار اخلاقی: همهٔ این فعالیتها باید فقط در محیط تست و با اجازهٔ صریح مالک اپ یا دستگاه انجام بشن.
بخش ۸ — گزارشدهی و استانداردها
نوشتن گزارش درست بهاندازهٔ پیدا کردن باگ اهمیت داره. گزارش باید خوانا، دقیق و عملی باشه.
اجزای یک گزارش حرفهای
- خلاصه مدیریتی (Executive Summary) — به زبان ساده چه مشکلی هست و چه خطراتی داره.
- شرح فنی (Technical Details) — گامبهگام PoC، لاگها، اسکرینشاتها و کدهای نمونه.
- سطح ریسک (Severity & CVSS) — پیشنهاد استفاده از نمره CVSS یا طبقهبندی داخلی.
- تأثیر (Impact) — چه اطلاعاتی در خطر است و چه سناریوهایی ممکنه اتفاق بیفته.
- راهحل (Remediation & Mitigation) — دقیق، مرحلهای و شامل مثالهای کدنویسی یا config.
- پیوستها (Appendices) — جزئیات تست، اسکریپتها، فایلها و منابع
استانداردهای مرجع
- یک راهنمای بسیار کامل و استاندارد برای تست موبایل
- OWASP Mobile Top 10 — مهمترین آسیبپذیریهای موبایل که باید ازشون آگاه باشی
بخش ۹ — مسیر یادگیری پیشنهادی (Roadmap مرحلهای)
یک مسیر منطقی و قابل اجرا برای تبدیل شدن به Mobile Pentester:
فاز ۰ — پایه (0–2 ماه)
- مبانی شبکه، لینوکس، و مبانی برنامهنویسی (Python، Java basics)
- نصب Android Studio، راهاندازی emulator و adb
فاز ۱ — مقدماتی (2–4 ماه)
- آشنایی با apk structure، apktool، jadx
- تمرین آنالیز استاتیک با MobSF و QARK
- خواندن OWASP Mobile Top 10
فاز ۲ — میانی (4–8 ماه)
- یادگیری Frida و Objection — تستهای داینامیک
- کار با Burp Suite و Proxy کردن ترافیک اپها
- تمرین روی real-world apps در لاب (با اجازه)
فاز ۳ — پیشرفته (8–12 ماه)
- آنالیز native binaryها و کار با Ghidra/IDA
- bypassing pinning و advanced hooking
- شرکت در Bug Bounty و ارسال report
فاز ۴ — حرفهای (۱۲ ماه به بالا)
- ساخت ابزار و اسکریپت سفارشی
- اجرای pentest کامل و نوشتن گزارش حرفهای
- تدریس، مشاوره یا ورود به پروژههای تجاری و باگباونتی درآمدزا
زمانبندی بالا تقریبیه؛ سرعت یادگیری بستگی به سابقه و زمانی داره که روزانه میذاری.
بخش ۱۰ — مسیر شغلی و درآمد (Mobile Pentesting)
نقشهای شغلی مرتبط
- Mobile Security Tester / Mobile Pentester
- App Security Engineer
- Security Consultant (Mobile)
- Bug Bounty Hunter
- Secure Code Reviewer
درآمد (تقریبی)
- شروعکننده (Junior): بسته به کشور میتونه از سطح پیمانکاری یا حقوق پایه شروع بشه.
- میانی تا سینیور: درآمد بین کارشناسان موبایل در بازارهای بینالمللی معمولاً جذابه (برای مثال در آمریکا/اروپا حقوق معقول و بالاتر از متوسط IT).
- فریلنس/باگباونتی: پتانسیل درآمد بالا برای افرادی که مهارت واقعی دارن.
| کشور | Junior (سالانه) | Mid (سالانه) | Senior (سالانه) |
|---|---|---|---|
| ایالات متحده (USA) | $80,000 – $115,000 | $115,000 – $160,000 | $160,000 – $260,000+ |
| کانادا | CA$60,000 – 85,000 | CA$85,000 – 120,000 | CA$120,000 – 150,000+ |
| انگلستان (UK) | £30,000 – 45,000 | £45,000 – 70,000 | £70,000 – 100,000+ |
| آلمان | €40,000 – 55,000 | €55,000 – 75,000 | €75,000 – 100,000+ |
| هلند (Netherlands) | €42,000 – 57,000 | €57,000 – 85,000 | €85,000 – 110,000+ |
| استرالیا | AU$60,000 – 85,000 | AU$85,000 – 120,000 | AU$120,000 – 160,000+ |
| سوئیس | CHF 80,000 – 100,000 | CHF 100,000 – 140,000 | CHF 140,000 – 180,000+ |
| اسرائیل | ILS 100,000 – 160,000 | ILS 160,000 – 260,000 | ILS 260,000 – 400,000+ |
| امارات (UAE) | AED 90,000 – 140,000 | AED 140,000 – 240,000 | AED 240,000 – 360,000+ |
| ایران | ₮ 30,000,000 – 50,000,000 | ₮ 50,000,000 – 80,000,000 | ₮ 80,000,000 – 150,000,000+ |
بخش ۱۱ — تمرینها و پروژههای پیشنهادی (Hands-on)
تمرینِ عملی، گنجینهٔ یادگیریه. چند پروژه که باید حتما انجام بدی:
- فقط روی اپهایی کار کن که یا خودت مالکشی یا اجازه کتبی داری.
- برای باگباونتی قوانین پلتفرم رو کامل بخون.
- همیشه یافتهها رو responsable disclosure کنی (بهصورت مسئولانه گزارش بدی).
بخش ۱۲ — نکات حقوقی و اخلاقی
خیلی مهم: هر کاری که خارج از چارچوب و بدون اجازه انجام بشه جرمه.
- آنالیز یک APK ساده: decompile → بررسی manifest → پیدا کردن keys.
- بررسی ترافیک یک اپ: proxy کردن ترافیک با Burp و بررسی API calls.
- Bypass Pinning با Frida: پیدا کردن متدهای pinning و hook کردنشون.
- مهندسی معکوس یک native lib: استخراج و نگاه اولیه با Ghidra.
- اجرای یک pentest کامل روی لاب: از کشف تا گزارش و remediation.
- ارسال گزارش به Bug Bounty (یک وباپ یا اپ متنباز) — اگر اپ متنباز، میتونی قانونی گزارش بدی و تجربه کسب کنی.
بخش ۱۳ — منابع پیشنهادی برای یادگیری
- OWASP MSTG (منبع اصلی و جامع برای موبایل)
- Frida docs & examples
- MobSF — Mobile Security Framework
- پلتفرمهای تمرینی: Damn Vulnerable Android App (DVAA)، AndroidBrokenApps, InsecureBankv2
- دورهها: دورههای عملی روی TryHackMe (اگر مدرموجود)، Udemy و Pluralsight برای شروع

