الدرس 18 من 24

أمان 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

ثغرات الهاتف الشائعة

# ابحث عن 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 دولار
Facebook استيلاء حساب عبر deeplink 15,000 دولار
TikTok WebView XSS 10,000 دولار
Instagram تجاوز تثبيت الشهادة + تسريب بيانات 8,000 دولار

نصيحة احترافية: تطبيقات الهاتف مجمعة من نفس قاعدة الكود مثل تطبيقات الويب لكن غالباً لها إصدارات أقدم غير مرقعة وAPIs داخلية مكشوفة.

في الدرس التالي، سنغطي الأتمتة وقوالب Nuclei. :::

اختبار

الوحدة 5: أمان API والهاتف

خذ الاختبار