أمان API والهاتف
اختبار تطبيقات الهاتف
3 دقيقة للقراءة
تطبيقات الهاتف غالباً لها نقاط ضعف أمنية لا تملكها نظيراتها الويب. تخزن البيانات محلياً، تثق بالتحقق من جانب العميل، وتكشف APIs مخصصة للاستخدام الداخلي.
برامج صيد ثغرات الهاتف
| المنصة | المنافسة | المهارة المطلوبة |
|---|---|---|
| Android | أعلى | متوسطة |
| iOS | أقل | متوسطة-عالية |
| كلاهما | متوسطة | عالية |
العديد من البرامج الآن تشمل صراحةً تطبيقات الهاتف في النطاق.
إعداد اختبار Android
البيئة
# المحاكي (Genymotion أو Android Studio)
# جهاز فعلي (مروت مفضل)
# ADB معد
adb devices
# الأدوات المطلوبة:
# - apktool (التفكيك)
# - jadx (تفكيك Java)
# - Frida (التحليل الديناميكي)
# - Objection (غلاف Frida)
استخراج APK
# من الجهاز
adb shell pm list packages | grep example
adb shell pm path com.example.app
adb pull /path/to/base.apk
# أو حمّل من APKPure، APKMirror
التفكيك
# استخدام apktool (الموارد + smali)
apktool d app.apk -o decompiled/
# استخدام jadx (مصدر Java)
jadx app.apk -d jadx-output/
# تحقق من البيانات الحساسة
grep -rn "api_key\|secret\|password\|token" jadx-output/
إعداد اختبار iOS
البيئة
# جهاز jailbroken (مفضل)
# أو: Corellium (قائم على السحابة)
# الأدوات: Frida، objection، Hopper/IDA
# لغير jailbroken:
# - استخدم بروكسي الشبكة
# - تحليل ثابت محدود
تحليل IPA
# استخراج IPA
unzip app.ipa -d extracted/
# تحليل Binary
otool -L Payload/App.app/App # المكتبات
strings Payload/App.app/App | grep -i "api\|key\|secret"
التحليل الثابت
الأسرار المشفرة
# الأنماط الشائعة
API_KEY=
api_secret=
password=
token=
private_key
-----BEGIN RSA PRIVATE KEY-----
# URLs Firebase
grep -r "firebaseio.com" ./decompiled/
# إذا وُجد، اختبر لقاعدة بيانات مفتوحة:
curl https://project.firebaseio.com/.json
تخزين البيانات غير الآمن
# Android: تحقق من SharedPreferences
cat /data/data/com.example.app/shared_prefs/*.xml
# تحقق من البيانات الحساسة في:
# - قواعد بيانات SQLite
# - ملفات الذاكرة المؤقتة
# - ملفات السجل
# - ملفات النسخ الاحتياطي
تثبيت الشهادة
# إذا كان التطبيق يستخدم تثبيت الشهادة:
# - التجاوز مطلوب لاعتراض حركة المرور
# - استخدم Frida/objection
objection -g com.example.app explore
# ثم: android sslpinning disable
التحليل الديناميكي
اعتراض حركة المرور
# أعد بروكسي Burp
# أعد الجهاز لاستخدام البروكسي
# ثبّت شهادة Burp CA
# للتطبيقات المثبتة:
# استخدم Frida لتجاوز التثبيت
frida -U -f com.example.app -l ssl-bypass.js
التلاعب بوقت التشغيل
# استخدام objection
objection -g com.example.app explore
# أوامر مفيدة:
android hooking list activities
android hooking list services
android intent launch_activity <activity>
android keystore list
ثغرات الهاتف الشائعة
ثغرات Deeplink
# ابحث عن deeplinks
grep -r "scheme" AndroidManifest.xml
grep -r "CFBundleURLSchemes" Info.plist
# اختبر حقن deeplink
adb shell am start -a android.intent.action.VIEW \
-d "myapp://callback?token=stolen"
ثغرات WebView
# تحقق من تفعيل JavaScript
# تحقق من الوصول لـ file://
# اختبر XSS في WebView
# URL خبيث في WebView
myapp://webview?url=javascript:alert(document.domain)
البث غير الآمن
# ابحث عن مستقبلات البث
grep -r "receiver" AndroidManifest.xml
# أرسل بث خبيث
adb shell am broadcast -a com.example.INTENT \
--es data "malicious"
قائمة مراجعة اختبار الهاتف
- استخرج وفكك APK/IPA
- ابحث عن الأسرار المشفرة
- تحقق من تخزين البيانات (SharedPrefs، SQLite، الملفات)
- اعترض حركة المرور (تجاوز التثبيت إذا لزم)
- اختبر deeplinks للحقن
- تحقق من تكوين WebView
- اختبر المكونات المصدرة
- حلل بيانات النسخ الاحتياطي
أمثلة المكافآت
| الشركة | الثغرة | المكافأة |
|---|---|---|
| Uber | مفتاح API مشفر | 5,000 دولار |
| استيلاء حساب عبر deeplink | 15,000 دولار | |
| TikTok | WebView XSS | 10,000 دولار |
| تجاوز تثبيت الشهادة + تسريب بيانات | 8,000 دولار |
نصيحة احترافية: تطبيقات الهاتف مجمعة من نفس قاعدة الكود مثل تطبيقات الويب لكن غالباً لها إصدارات أقدم غير مرقعة وAPIs داخلية مكشوفة.
في الدرس التالي، سنغطي الأتمتة وقوالب Nuclei. :::