
Trace les entrées utilisateur pour détecter les vulnérabilités d'injection dans les méthodes Java via JDWP et Frida, en identifiant les points potentiels d'injection de commandes et SQL.
Le but de cet outil est de tracer les entrées utilisateur, afin de trouver des points d'injection dans des méthodes sensibles (comme java.lang.Runtime.exec, java.sql.Statement.executeQuery, ...) ainsi que les mutations sur ces entrées entre le point d'injection et l'appel de méthode.
Des « marqueurs » sont générés, qui doivent être insérés dans chaque entrée utilisateur possible de votre application. Des marqueurs différents vous aideront à déterminer l'origine d'une alerte.
La liste des méthodes surveillées est disponible à l'aide de la commande > list_breakpoints dans la CLI. Cette liste peut être modifiée avec les commandes > add_breakpoint et > delete_breakpoint.
Captain Hook Docker Main machine
container
┌────────────────────────────────────────┐ ┌────────────────────────────────────────┐
│ │ │ │
│ ┌─────────────────┐ ┌────────────────┐ │ │ ┌──────────────────────────┐ │
│ │ │ │ │ │ │ │ │ │
│ │ ┌────┐ │ │ Java Debugger │ │ │ │ │ │
│ │ │ │ Python │ │ ├─┼─────────────┼──────────► │ │
│ │ │ │ + │ │ │ │ │ │ Program being │ │
│ │ │ │ Frida │ │ │ │ │ │ analyzed │ │
│ │ │ │ │ │ ◄─┼─────────────┼──────────┤ │ │
│ │ │ │ ◄─┤ │ │ │ │ │ │
│ │ │CLI │ ├─► │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ └────────────────┘ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ ┌──────┐ │ │ │
│ │ │ │ ├────────────────────┼─────────────┤►│frida-├─► │ │
│ │ │ │ │ │ │ │server◄─┤ │ │
│ │ └────┘ │ │ │ │ │ └──────────────────────────┘ │
│ │ │◄───────────────────┼─────────────┼─┤ │ │
│ └─────────────────┘ │ │ └──────┘ │
│ │ │ │
└────────────────────────────────────────┘ └────────────────────────────────────────┘
Sa JVM doit être lancée avec les options suivantes :
-Xdebug-Xrunjdwp:transport=dt_socket,address=1000,server=y,suspend=n-XintBien sûr, le port d'écoute (1000 dans l'exemple ci-dessus) est arbitraire et peut être modifié.
Si possible, installez frida-server sur la machine contenant le programme analysé, puis lancez-le avec la commande suivante :
# frida-server -l 0.0.0.0:1500 &
Le port / l'adresse d'écoute peuvent également être modifiés pour répondre à vos besoins.
À la fin du Dockerfile situé dans ./dbg, définissez l'adresse IP du « host » (la machine exécutant le programme à analyser), le port d'écoute JDWP et le port d'écoute Frida (0 si frida-server n'est pas disponible).
Ensuite # make build, puis # make run-dbg. Attachez un second terminal à ce conteneur avec # docker exec -it $(docker ps -lq) bash.
Dans le premier, exécutez : cd debugger && make debug, puis dans le second : cd frida && make instrument
Vous interagirez avec Captain Hook via le second terminal, qui vous présente une CLI. Tapez > help pour obtenir une liste exhaustive des commandes disponibles, toutes documentées.
Le dossier « agent » est purement expérimental, de même que la commande > set_object_inspection_strategy.