
trueseeing v2.2.11
ماسح ثغرات تطبيقات iOS/Android دون فك التجميع (مختبر عرض DC25، CB17)
README
trueseeing هو ماسح ثغرات أمنية سريع ودقيق ومرن لتطبيقات iOS/Android. نعمل على مستوى جهاز Dalvik الافتراضي لنظام Android – أي لا نهتم إذا كان التطبيق المستهدف مشفرًا أم لا.
القدرات
حاليًا يمكننا:
- فحص التطبيق تلقائيًا بحثًا عن الثغرات، وإعداد تقارير بصيغة HTML/JSON/نص (انظر أدناه)
- تعديل التطبيق لتسهيل التحليل: مثل تمكين بت التصحيح، تمكين النسخ الاحتياطي الكامل، تعطيل تثبيت TLS، تعديل مستوى API المستهدف، حقن frida-gadget، إلخ.
- فحص التطبيق للحصول على معلومات عامة
- نسخ بيانات التطبيق من وإلى عبر واجهة التصحيح
- البحث عن استدعاءات/ثوابت/sput/iput معينة
- استنتاج الثوابت/مجموعات الأنواع لوسائط العملية
- فحص استدعاءات API/الخاصة للكودات الأصلية (ملاحظة: تحتاج إلى ts2-disasm-ghidra)
- فحص تطبيقات iOS بحثًا عن الثغرات الأساسية (ملاحظة: تحتاج إلى ts2-disasm-ghidra)
- إرفاق نصوص frida
- توفير جلسة تفاعلية لـ frida
- تتبع الاستدعاءات
- إلخ.
التثبيت
الحاويات
ملاحظة:
- اعتبارًا من الإصدار 2.1.9، نحن على ghcr.io. (Docker Hub مهمل نوعًا ما)
- يتطلب وجود adbd في المضيف للتحكم في الأجهزة.
نقدم حاويات لتتمكن من الاستخدام مباشرة كما يلي؛ هذا هو الآن الطريقة الموصى بها، والطريقة الوحيدة إذا كنت على Windows للتشغيل:
$ docker run --rm -v $(pwd):/out -v ts2:/cache ghcr.io/alterakey/trueseeing
إذا كنت تريد التشغيل بدون حالة، يمكنك حذف تثبيت المجلد على /cache (غير موصى به للاستخدام اليومي رغم ذلك؛ راجع أيضًا #254):
$ docker run --rm -v $(pwd):/out ghcr.io/alterakey/trueseeing
التثبيت باستخدام uv
بدلاً من ذلك، يمكنك تثبيت حزمةنا باستخدام uv كما يلي. قد يكون شكل التثبيت uv tool install مفيدًا بشكل خاص للإضافات (انظر أدناه)، لأنه يمنحها أكبر قدر من الحرية. فقط تذكر أنك بحاجة إلى JRE وAndroid SDK (اختياريًا؛ للتعامل مع الأجهزة):
$ uvx trueseeing
$ uv tool install trueseeing
$ trueseeing
التثبيت باستخدام pip (مهمل)
بالطبع يمكنك دائمًا استخدام pip القديم الجيد إذا اضطررت:
$ pip install trueseeing
الاستخدام
الوضع التفاعلي
يمكنك فحص/تحليل/تطبيق التصحيحات/إلخ. على التطبيقات بشكل تفاعلي - مما يجعله الخيار المثالي للتحليل اليدوي:
$ trueseeing target.apk
[+] trueseeing x.y.z
ts[target.apk]> ?
...
ts[target.apk]> i # عرض المعلومات العامة
...
ts[target.apk]> pf AndroidManifest.xml # عرض ملف البيان
...
ts[target.apk]> a # تحليل الموارد أيضًا
...
ts[target.apk]> /s something # بحث عن نص
...
ts[target.apk]> as # فحص
...
[+] done, found 6403 issues (174.94 sec.)
ts[target.apk]> gh report.html
الوضع الدفعي
نقبل أمرًا مضمنًا (-c) أو ملف سكريبت (-i) للتشغيل قبل إعطائك الموجه، بالإضافة إلى الخروج فورًا بدلاً من العرض (-q; لا نحتاج إلى tty في هذا الوضع!).
يمكنك استخدام الميزات لإجراء فحص دفعي، كما يلي مثلاً لإلقاء النتائج مباشرة على stderr:
$ trueseeing -eqc 'as' target.apk
لإنشاء ملف تقرير بصيغة HTML:
$ trueseeing -eqc 'as;gh report.html' target.apk
لإنشاء ملف تقرير بصيغة JSON:
$ trueseeing -eqc 'as;gj report.json' target.apk
للحصول على التقرير في stdout، احذف اسم الملف من أمر g* النهائي:
$ trueseeing -eqc 'as;gh' target.apk > report.html
$ trueseeing -eqc 'as;gj' target.apk > report.json
وضع الفحص غير التفاعلي (مهمل)
تقليديًا، يمكنك فحص التطبيقات باستخدام سطر الأوامر التالي للحصول على النتائج المدرجة في stderr:
$ trueseeing --scan target.apk
لإنشاء تقرير بصيغة HTML:
$ trueseeing --scan --scan-output report.html target.apk
$ trueseeing --scan --scan-report=html --scan-output report.html target.apk
لإنشاء تقرير بصيغة JSON:
$ trueseeing --scan --scan-report=json --scan-output report.json target.apk
للحصول على التقرير في stdout، حدد '-' كاسم الملف:
$ trueseeing --scan --scan-output - target.apk > report.html
$ trueseeing --scan --scan-report=html --scan-output - target.apk > report.html
$ trueseeing --scan --scan-report=json --scan-output - target.apk > report.json
الاستخدامات المتقدمة
الإضافات
يمكنك كتابة أوامرك وتوقيعاتك الخاصة كإضافات. توضع الإضافات تحت /ext (حاويات) أو ~/.trueseeing2/extensions/ (uv/pip). بدلاً من ذلك يمكنك توزيع إضافاتك كحزم wheels. نقدم معلومات الأنواع حتى تتمكن ليس فقط من التحقق من أنواع إضافاتك باستخدام zuban ولكن أيضًا الحصول على مساعدة جيدة من بيئات التطوير المتكاملة. راجع قسم التفاصيل للحصول على التفاصيل.
البناء
يمكنك بناؤه كما يلي:
$ docker build -t trueseeing https://github.com/alterakey/trueseeing.git#main
لبناء حزم wheels يمكنك استخدام flit، كما يلي:
$ flit build
لتطويره، تحتاج إلى إنشاء بيئة بناء مناسبة. باستخدام uv يمكنك فقط القيام بما يلي:
$ git clone https://github.com/alterakey/trueseeing.git wc
$ uv sync --locked --dev
$ (... hack ...)
$ uv run trueseeing ... # للتشغيل
$ uv run zuban check trueseeing && uv run ruff trueseeing # للتحقق
Success: no issues found in XX source files
$ uv run flit build # للبناء (wheel)
$ docker build -t trueseeing . # للبناء (حاوية)
باستخدام pip، لإنشاء واحدة، قم أولاً بإعداد venv، وقم بتثبيت flit وأدوات التحقق (zuban و ruff) فيه، واجعل flit يسحب التبعيات. باختصار، افعل شيئًا كهذا:
$ git clone https://github.com/alterakey/trueseeing.git wc
$ python3 -m venv wc/.venv
$ source wc/.venv/bin/activate
(.venv) $ pip install flit zuban ruff
(.venv) $ flit install --deps=develop -s
(.venv) $ (... hack ...)
(.venv) $ trueseeing ... # للتشغيل
(.venv) $ zuban check trueseeing && ruff check trueseeing # للتحقق
Success: no issues found in XX source files
(.venv) $ flit build # للبناء (wheel)
(.venv) $ docker build -t trueseeing . # للبناء (حاوية)
التفاصيل
فئات الثغرات
يمكننا حاليًا اكتشاف الفئات التالية من الثغرات، ومعظمها مغطى في قائمة OWASP Mobile Top 10 - 2016:
-
سوء استخدام المنصة (M1)
- قابل للتصحيح
- نشر غير مقصود للأنشطة والخدمات وموفري المحتوى ومستقبلات البث
-
بيانات غير آمنة (M2)
- قابل للنسخ الاحتياطي (أي عرضة لهجوم النسخ الاحتياطي)
- أذونات ملفات غير آمنة
- التسجيل
-
اتصالات غير آمنة (M3)
- عدم وجود تثبيت (أي عرضة لهجوم اعتراض TLS)
- استخدام HTTP بنص واضح
- WebViews قابلة للتلاعب
-
تشفير غير كافٍ (M5)
- عبارات مرور/مفاتيح سرية مشفرة في الكود
- شفرات فيرنام بمفاتيح ثابتة
- استخدام وضع ECB
-
مشكلات جودة كود العميل (M7)
- WebViews قابلة للانعكاس (أي يجب أن تكون XSSs في هذه العروض قابلة للتصعيد إلى تنفيذ كود عن بعد عبر انعكاس JS)
- استخدام سياسة غير آمنة على المحتويات المختلطة
-
العبث بالكود (M8)
- شهادات مشفرة في الكود
-
الهندسة العكسية (M9)
- عدم وجود تشويش
واجهة برمجة تطبيقات الإضافات
توجد واجهة برمجة تطبيقات الإضافات الخاصة بنا تحت حزمة trueseeing.api. نظرًا لأننا نقدم معلومات الأنواع معها، سيساعدك بيئة التطوير المتكاملة عند كتابة إضافاتك. فقط تأكد من أن PYTHONPATH الخاص بها (أو خاص بخادم لغتها) يغطي venv حيث توجد حزمةنا؛ راجع uv tool list --show-paths إذا قمت بتثبيتها باستخدام uv tool install. إذا قمت بالتثبيت باستخدام uvx، فكر في إعادة تثبيتها باستخدام uvx install. إذا قمت بالتثبيت باستخدام pip، فأنت تعرف بالفعل مكانها.