
يتتبع مدخلات المستخدم لكشف ثغرات الحقن في دوال Java عبر JDWP وFrida، مع تحديد نقاط حقن الأوامر وحقن SQL المحتملة.
الغرض من هذه الأداة هو تتبّع مدخلات المستخدم، من أجل العثور على نقاط الحقن في الطرق الحساسة (مثل java.lang.Runtime.exec, java.sql.Statement.executeQuery, ...) بالإضافة إلى التحوّلات التي تطرأ على هذه المدخلات بين نقطة الحقن واستدعاء الطريقة.
يتم إنشاء "علامات" (Marks) يجب إدراجها في كل مدخل مستخدم محتمل في تطبيقك. تساعدك العلامات المختلفة في تحديد مصدر أي تنبيه.
قائمة الطرق المراقَبة متاحة باستخدام الأمر > list_breakpoints في واجهة الأوامر (CLI). يمكن تعديل هذه القائمة باستخدام الأمرين > add_breakpoint و > delete_breakpoint.
Captain Hook Docker Main machine
container
┌────────────────────────────────────────┐ ┌────────────────────────────────────────┐
│ │ │ │
│ ┌─────────────────┐ ┌────────────────┐ │ │ ┌──────────────────────────┐ │
│ │ │ │ │ │ │ │ │ │
│ │ ┌────┐ │ │ Java Debugger │ │ │ │ │ │
│ │ │ │ Python │ │ ├─┼─────────────┼──────────► │ │
│ │ │ │ + │ │ │ │ │ │ Program being │ │
│ │ │ │ Frida │ │ │ │ │ │ analyzed │ │
│ │ │ │ │ │ JDWP │ │ │ │ │ │
│ │ │ │ ◄─┤ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │
│ │ │CLI │ ├─► │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ └────────────────┘ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ ┌──────┐ │ │ │
│ │ │ │ ├────────────────────┼─────────────┤►│frida-├─► │ │
│ │ │ │ │ │ │ │server◄─┤ │ │
│ │ └────┘ │ │ │ │ │ └──────────────────────────┘ │
│ │ │◄───────────────────┼─────────────┼─┤ │ │
│ └─────────────────┘ │ │ └──────┘ │
│ │ │ │
└────────────────────────────────────────┘ └────────────────────────────────────────┘
يجب تشغيل جهاز Java الافتراضي (JVM) الخاص به مع الخيارات التالية:
-Xdebug-Xrunjdwp:transport=dt_socket,address=1000,server=y,suspend=n-Xintبالطبع، منفذ الاستماع (1000 في المثال أعلاه) اختياري ويمكن تغييره.
إذا كان ذلك ممكنًا، قم بتثبيت frida-server على الجهاز الذي يحتوي على البرنامج الذي يجري تحليله، وشغّله بالأمر التالي:
# frida-server -l 0.0.0.0:1500 &
يمكن أيضًا تغيير عنوان/منفذ الاستماع بما يناسب احتياجاتك.
في نهاية ملف Dockerfile الموجود في ./dbg، اضبط عنوان IP الخاص بـ "host" (الجهاز الذي يشغّل البرنامج المراد تحليله)، ومنفذ استماع JDWP، ومنفذ استماع Frida (0 إذا لم يكن frida-server متاحًا).
ثم نفّذ # make build، ثم # make run-dbg. أرفِق طرفية ثانية بهذه الحاوية باستخدام # docker exec -it $(docker ps -lq) bash.
في الطرفية الأولى، نفّذ: cd debugger && make debug، ثم في الثانية: cd frida && make instrument
سوف تتفاعل مع Captain Hook عبر الطرفية الثانية، التي تقدّم لك واجهة أوامر (CLI). اكتب > help للحصول على قائمة شاملة بجميع الأوامر المتاحة، وكلها موثّقة.
مجلد "agent" تجريبي بحت، وكذلك الأمر > set_object_inspection_strategy.