
JDWP और Frida के माध्यम से Java विधियों में इंजेक्शन भेद्यताओं का पता लगाने के लिए उपयोगकर्ता इनपुट को ट्रेस करता है, संभावित कमांड और SQL इंजेक्शन बिंदुओं की पहचान करता है।
इस टूल का उद्देश्य उपयोगकर्ता इनपुट को ट्रेस करना है, ताकि संवेदनशील मेथड्स (जैसे java.lang.Runtime.exec, java.sql.Statement.executeQuery, ...) में इंजेक्शन पॉइंट्स, साथ ही इंजेक्शन पॉइंट और मेथड कॉल के बीच इन इनपुट्स पर होने वाले म्यूटेशन को खोजा जा सके।
"मार्क्स" उत्पन्न होते हैं, जिन्हें आपके ऐप के हर संभावित उपयोगकर्ता इनपुट में डाला जाना चाहिए। अलग-अलग मार्क्स आपको किसी अलर्ट के स्रोत का निर्धारण करने में मदद करेंगे।
मॉनिटर की जाने वाली मेथड्स की सूची CLI में > list_breakpoints कमांड के माध्यम से उपलब्ध है। इस सूची को > add_breakpoint और > delete_breakpoint कमांड्स के साथ संशोधित किया जा सकता है।
Captain Hook Docker Main machine
container
┌────────────────────────────────────────┐ ┌────────────────────────────────────────┐
│ │ │ │
│ ┌─────────────────┐ ┌────────────────┐ │ │ ┌──────────────────────────┐ │
│ │ │ │ │ │ │ │ │ │
│ │ ┌────┐ │ │ Java Debugger │ │ │ │ │ │
│ │ │ │ Python │ │ ├─┼─────────────┼──────────► │ │
│ │ │ │ + │ │ │ │ │ │ Program being │ │
│ │ │ │ Frida │ │ │ │ │ │ analyzed │ │
│ │ │ │ │ │ ◄─┼─────────────┼──────────┤ │ │
│ │ │ │ ◄─┤ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │
│ │ │CLI │ ├─► │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ └────────────────┘ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ ┌──────┐ │ │ │
│ │ │ │ ├────────────────────┼─────────────┤►│frida-├─► │ │
│ │ │ │ │ │ │ │server◄─┤ │ │
│ │ └────┘ │ │ │ │ │ └──────────────────────────┘ │
│ │ │◄───────────────────┼─────────────┼─┤ │ │
│ └─────────────────┘ │ │ └──────┘ │
│ │ │ │
└────────────────────────────────────────┘ └────────────────────────────────────────┘
इसका JVM निम्नलिखित विकल्पों के साथ लॉन्च किया जाना चाहिए:
-Xdebug-Xrunjdwp:transport=dt_socket,address=1000,server=y,suspend=n-Xintबेशक, लिसनिंग पोर्ट (उपरोक्त उदाहरण में 1000) मनमाना है और इसे बदला जा सकता है।
यदि संभव हो, तो विश्लेषण किए जा रहे प्रोग्राम वाली मशीन पर frida-server इंस्टॉल करें, और इसे निम्नलिखित कमांड के साथ लॉन्च करें:
# frida-server -l 0.0.0.0:1500 &
लिसनिंग पोर्ट / एड्रेस को अपनी आवश्यकता के अनुसार भी बदला जा सकता है।
./dbg में स्थित Dockerfile के अंत में, "host" (विश्लेषण किए जाने वाले प्रोग्राम को चलाने वाली मशीन) का IP पता, JDWP लिसनिंग पोर्ट और Frida लिसनिंग पोर्ट सेट करें (यदि frida-server उपलब्ध नहीं है तो 0)।
फिर # make build, और फिर # make run-dbg। इस कंटेनर के साथ # docker exec -it $(docker ps -lq) bash का उपयोग करके एक दूसरा टर्मिनल अटैच करें।
पहले टर्मिनल में, चलाएँ: cd debugger && make debug, फिर दूसरे में: cd frida && make instrument
आप दूसरे टर्मिनल के माध्यम से Captain Hook के साथ इंटरैक्ट करेंगे, जो आपको एक CLI प्रस्तुत करता है। उपलब्ध सभी कमांडों की विस्तृत सूची के लिए > help टाइप करें, सभी प्रलेखित हैं।
The "agent" फ़ोल्डर पूरी तरह से प्रायोगिक है, साथ ही > set_object_inspection_strategy कमांड भी।