
一款适用于以HW行动/红队/渗透测试团队为场景的移动端(Android、iOS、WEB、H5、静态网站)信息收集扫描工具,可以帮助渗透测试工程师、攻击队成员、红队成员快速收集到移动端或者静态WEB站点中关键的资产信息并提供基本的信息输出,如:Title、Domain、CDN、指纹信息、状态信息等。 أداة مسح لجمع المعلومات مخصصة للهواتف المحمولة (Android، iOS، الويب، H5، المواقع الثابتة) في سيناريوهات عمليات HW / الفرق الحمراء / فرق اختبار الاختراق. تساعد مهندسي اختبار الاختراق وأعضاء فرق الهجوم والفرق الحمراء على جمع معلومات الأصول الحيوية بسرعة من الأجهزة المحمولة أو مواقع الويب الثابتة، وتوفير مخرجات معلومات أساسية مثل: العنوان، النطاق، CDN، معلومات البصمة، حالة الاستجابة، وغيرها.
هذا المشروع حاليًا هو مجرد غيض من فيض من مشروع مخطط له. إذا كنت مهتمًا بهذا المشروع أو ترغب في المشاركة في تطوير المشاريع اللاحقة أو أعمال الترجمة، يرجى إرسال بريد إلكتروني إلى [email protected] يوضح قدراتك واهتماماتك.
أداة مسح لجمع المعلومات للتطبيقات المحمولة (Android، iOS، WEB، H5، المواقع الثابتة) مصممة لسيناريوهات عمليات الهاكر/الفرق الحمراء/فرق اختبار الاختراق. يمكن أن تساعد مهندسي اختبار الاختراق وأعضاء فرق الهجوم والفرق الحمراء في جمع معلومات الأصول الحيوية بسرعة من تطبيقات المحمول أو مواقع WEB الثابتة وتوفير مخرجات معلومات أساسية مثل: العنوان، النطاق، CDN، معلومات البصمة، حالة الاستجابة، إلخ.
يُرجى عدم استخدام تقنيات أو أكواد هذا المشروع في أغراض غير قانونية مثل تطوير برمجيات خبيثة أو سرقة حقوق الملكية الفكرية أو الملكية الفكرية أو الربح غير المشروع. قد يؤدي تنفيذ السلوكيات المذكورة أعلاه أو استخدام هذا المشروع لاستنشاق بيانات برامج لا تملك حقوق ملكيتها إلى انتهاك المواد 217 و 286 من قانون العقوبات الصيني، وقانون الأمن السيبراني الصيني، وقانون حماية برامج الكمبيوتر الصيني. التقنيات المذكورة في هذا المشروع مخصصة فقط للاستخدام في سيناريوهات قانونية مثل التعلم والاختبار الخاص. أي مسؤولية جنائية أو مدنية ناتجة عن إساءة استخدام هذه التقنيات لا تقع على عاتق مؤلف هذا المشروع.

AppInfoScanner
|-- libs الكود الأساسي للبرنامج
|-- core
|-- __init__.py معلومات التهيئة العامة
|-- parses.py لتحليل المعلومات الثابتة في الملفات
|-- download.py للتنزيل التلقائي للتطبيقات أو صفحات H5
|-- net.py لاستنشاق الشبكة والحصول على المعلومات الأساسية
|-- task
|-- __init__.py ملف تهيئة الدليل
|-- base_task.py مركز جدولة المهام الموحد
|-- android_task.py لمعالجة المهام المتعلقة بـ Android
|-- download_task.py لمعالجة التنزيل التلقائي للتطبيقات أو H5
|-- ios_task.py لمعالجة المهام المتعلقة بـ iOS
|-- net_task.py لمعالجة مهام استنشاق الشبكة
|-- web_task.py لمعالجة المهام المتعلقة بـ Web، مثل كود مصدر صفحة الويب بالزر الأيمن والمعلومات الثابتة لـ H5
|-- tools الأدوات التي يعتمد عليها البرنامج
|-- apktool.jar لتفكيك ملفات apk، قد تحتاج لاستبدالها حسب المنصة
|-- baksmali.jar لتفكيك ملفات dex، قد تحتاج لاستبدالها حسب المنصة
|-- strings.exe للحصول على معلومات سلسلة iPA في نظام Windows 32 بت
|-- strings64.exe للحصول على معلومات سلسلة iPA في نظام Windows 64 بت
|-- __init__.py ملف تهيئة الدليل
|-- app.py البرنامج الرئيسي
|-- config.py ملف تكوين البرنامج بأكمله
|-- README.md تعليمات استخدام البرنامج
|-- requirements.txt قائمة المكتبات المطلوبة للبرنامج
|-- update.md معلومات إصدارات البرنامج التاريخية
git clone https://github.com/kelvinBen/AppInfoScanner.git
أو انسخ الرابط التالي إلى المتصفح لتحميل أحدث إصدار رسمي
https://github.com/kelvinBen/AppInfoScanner/releases/latest
قناة تحميل سريعة محليًا:
git clone https://gitee.com/kelvin_ben/AppInfoScanner.git
cd AppInfoScanner
python -m pip install -r requirements.txt
python app.py android -i <Your APK File or DEX File or APK Download Url or Save File Dir>
python app.py ios -i <Your IPA file or Mach-o File or IPA Download Url or Save File Dir>
python app.py web -i <Your Web file or Save Web Dir or Web Cache Url>
python app.py [TYPE] [OPTIONS] <The URL or directory to scan>
<> يمثل ملفًا أو دليلاً أو عنوان URL للمسح
| علاقة "أو"، اختر واحدًا فقط
[] يمثل المعاملات التي يجب إدخالها
يتوافق هذا النوع من المعاملات مع [TYPE] في صيغة الأمر الأساسية. حاليًا يدعم ثلاثة أنواع فقط: [android/ios/web]. يجب تحديد نوع واحد منها.
android: لمسح محتوى الملفات المتعلقة بتطبيقات Android
ios: لمسح محتوى الملفات المتعلقة بتطبيقات iOS
web: لمسح محتوى الملفات المتعلقة بمواقع WEB أو H5
يدعم التصحيح التلقائي بناءً على اسم الامتداد، حتى لو أدخلت ios ولكن اسم الملف في -i هو XXX.apk، فسيتم تنفيذ المسح المتعلق بـ Android.
يتوافق هذا النوع من المعاملات مع [OPTIONS] في صيغة الأمر الأساسية. يمكن استخدام معاملات متعددة معًا.
-i أو --inputs: أدخل الملف أو الدليل أو عنوان URL للملف المراد تنزيله تلقائيًا للمسح. إذا كان المسار طويلًا جدًا، فضعه بين علامتي اقتباس. هذه معاملة إلزامية.
-r أو --rules: أدخل قاعدة مسح مؤقتة لمحتوى الملف المراد مسحه.
-s أو --sniffer: قم بتشغيل وظيفة استنشاق الشبكة، الافتراضي قيد التشغيل.
-n أو --no-resource: تجاهل جميع ملفات الموارد، بما في ذلك ملفات الموارد في وظيفة استنشاق الشبكة (يجب تكوين قواعد sniffer_filter أولاً في config.py)، الافتراضي عدم تجاهل الموارد.
-a أو --all: إخراج جميع نتائج المطابقة لقواعد المسح، الافتراضي قيد التشغيل.
-t أو --threads: تعيين عدد الخيوط المتزامنة، الافتراضي 10 خيوط.
-o أو --output: تحديد دليل إخراج نتائج المسح والملفات المؤقتة الناتجة، الافتراضي هو دليل البرنامج النصي.
-p أو --package: تحديد اسم حزمة JAVA المراد مسحها في ملفات APK أو DEX الخاصة بـ Android. يمكن استخدام هذه المعاملة فقط في النوع android.
python app.py android -i <Your apk file>
مثال:
python app.py android -i C:\Users\Administrator\Desktop\Demo.apk
python app.py android -i <Your DEX file>
مثال:
python app.py android -i C:\Users\Administrator\Desktop\Demo.dex
python app.py android -i <APK Download Url>
مثال:
python app.py android -i "https://127.0.0.1/Demo.apk"
لاحظ أنه إذا كان عنوان URL طويلاً جدًا، يجب وضعه بين علامتي اقتباس مزدوجتين (").
python app.py ios -i <Your ipa file>
مثال:
python app.py ios -i "C:\Users\Administrator\Desktop\Demo.ipa"
python app.py ios -i <Your Mach-o file>
مثال:
python app.py ios -i "C:\Users\Administrator\Desktop\Demo\Payload\Demo.app\Demo"
python app.py ios -i <IPA Download Url>
مثال:
python app.py ios -i "https://127.0.0.1/Demo.ipa"
لاحظ أنه إذا كان عنوان URL طويلاً جدًا، يجب وضعه بين علامتي اقتباس مزدوجتين ("). لا يدعم مسح ملفات IPA من Apple Store حاليًا.
python app.py web -i <Your web file>
مثال:
python app.py web -i "C:\Users\Administrator\Desktop\Demo.html"
python app.py web -i <Web Download Url>
مثال:
python app.py web -i "https://127.0.0.1/Demo.html"
جميع الأمثلة التالية تستخدم نوع android:
python app.py android -i <Your Dir>
مثال:
python app.py android -i C:\Users\Administrator\Desktop\Demo
python app.py android -i <Your apk> -r <the keyword | the rules>
مثال:
إضافة مسح لنطاق بايدو
python app.py android -i C:\Users\Administrator\Desktop\Demo.apk -r ".*baidu.com.*"
python app.py android -i <Your apk> -s
مثال:
python app.py android -i C:\Users\Administrator\Desktop\Demo.apk -s
python app.py android -i <Your apk> -n
مثال:
python app.py android -i C:\Users\Administrator\Desktop\Demo.apk -n
python app.py android -i <Your apk> -a
مثال:
python app.py android -i C:\Users\Administrator\Desktop\Demo.apk -a
python app.py android -i <Your apk> -t 20
مثال:
تعيين 20 خيطًا متزامنًا
python app.py android -i C:\Users\Administrator\Desktop\Demo.apk -t 20
python app.py android -i <Your apk> -o <output path>
مثال:
مثل الإخراج إلى مجلد Temp على سطح المكتب
python app.py android -i C:\Users\Administrator\Desktop\Demo.apk -o C:\Users\Administrator\Desktop\Temp
python app.py android -i <Your apk> -p <Java package name>
مثال:
لتصفية المحتوى ضمن اسم الحزمة com.baidu
python app.py android -i C:\Users\Administrator\Desktop\Demo.apk -p "com.baidu"
البرنامج في هذا المشروع يعمل كإطار أساسي فقط، مع تضمين بعض القواعد الأساسية. ليس كل ملف يتم إدخاله يمكنه إكمال المسح بنجاح. لذلك يمكنك تكوين القواعد وفقًا لاحتياجاتك، والتكوين الجيد يمكن أن يحقق نتائج ممتازة.
filter_components: هذا البند لتكوين محتوى المكونات ذات الصلة، بما في ذلك مكونات JSON أو XML
filter_strs: لتكوين محتوى الملفات التي تحتاج إلى المسح، مثل مسح أرقام المنافذ، قم بتكوين: "r'.*://([\d{1,3}\.]{3}\d{1,3}).*'"
filter_no: لتجاهل المحتوى غير المرغوب فيه في ملفات المسح
shell_list: لتكوين خصائص القشرة المتعلقة بـ Android
web_file_suffix: لتكوين أسماء امتداد ملفات WEB التي تحتاج إلى المسح
sniffer_filter: لتكوين أسماء امتداد الملفات التي يجب تجاهلها في استنشاق الشبكة
headers: لتكوين معلومات رأس الطلب المطلوبة أثناء التنزيل التلقائي
data: لتكوين نص الطلب المطلوب أثناء التنزيل التلقائي
method: لتكوين طريقة الطلب المطلوبة أثناء التنزيل التلقائي
الطريقة 1: ضبط قواعد config.py وفقًا للوضع الفعلي
الطريقة 2: تجاهل ملفات الموارد
هذا يعني أن التطبيق الذي تريد مسحه يحتوي على قشرة. يجب إزالة القشرة قبل المسح. حاليًا يمكنك استخدام الأدوات التالية لإزالة القشرة:
Android:
وحدة xposed: dexdump
وحدة frida: FRIDA-DEXDump
إزالة القشرة بدون جذر: blackdex
iOS:
وحدة frida:
نظام Windows: frida-ipa-dump
نظام MacOS: frida-ios-dump
فشل تنزيل الملف.
1) تحقق من صحة عنوان URL المدخل
2) تحقق من مشكلة الشبكة أو قم بتكوين معلومات رأس الطلب (headers) ونص الطلب (data) وطريقة الطلب (method) في ملف config.py، ثم أعد التنفيذ.
فشل تفكيك الملف.
يرجى تقديم لقطة الشاشة والملف APK المقابل إلى https://github.com/kelvinBen/AppInfoScanner/issues، وسيتعامل معها المؤلف بعد رؤيتها.
مسار تقديم القواعد المخصصة:
صيغة التقديم:
1. إضافة مكون مخصص للتطبيق
مثال: قاعدة fastjson كالتالي:
مكون التطبيق: fastjson com.alibaba.fastjson
2. سلسلة نصية للبحث
مثال: قاعدة AK من علي كالتالي:
سلسلة نصية:
مفتاح علي بابا السحابي .*accessKeyId.*".*"
3. امتداد ملف WEB للبحث
مثال: قاعدة ملف jsp كالتالي:
موقع WEB: لغة java jsp
4. قاعدة قشرة Android
مثال: قاعدة قشرة إحدى شركات الأرقام كالتالي:
قشرة: شركة أرقام com.stub.StubApp
WeChat: bromomo (يرجى إضافة تعليق عند إضافة الصديق: GitHub)
مجموعة WeChat:

إذا لم تتمكن من الانضمام، يرجى إضافة صديق على WeChat للدخول إلى المجموعة.
البريد الإلكتروني: [email protected]
يمكنكم إضافة صديق المؤلف لتقديم الطلبات أو تقارير الأخطاء أو التبادل التقني أو التعاون التجاري.

AppInfoScanner هو جزء من مشروع درب التبانة 2.0 الخاص بفريق 404. إذا كان لديك أي استفسار عن AppInfoScanner أو ترغب في التواصل مع الآخرين، يمكنك الرجوع إلى طريقة الانضمام إلى مجموعة مشروع درب التبانة.