
Verfolgt Benutzereingaben, um Injektionsschwachstellen in Java-Methoden über JDWP und Frida zu erkennen, und identifiziert potenzielle Befehls- und SQL-Injektionspunkte.
Der Zweck dieses Tools ist es, Benutzereingaben zu verfolgen, um Injektionspunkte in sensible Methoden (wie java.lang.Runtime.exec, java.sql.Statement.executeQuery, ...) sowie die Mutationen dieser Eingaben zwischen dem Injektionspunkt und dem Methodenaufruf zu finden.
Es werden "Marks" erzeugt, die in jede mögliche Benutzereingabe Ihrer App eingefügt werden müssen. Verschiedene Marks helfen Ihnen, den Ursprung eines Alerts zu bestimmen.
Die Liste der überwachten Methoden ist über den Befehl > list_breakpoints in der CLI verfügbar. Diese Liste kann mit den Befehlen > add_breakpoint und > delete_breakpoint geändert werden.
Captain Hook Docker Main machine
container
┌────────────────────────────────────────┐ ┌────────────────────────────────────────┐
│ │ │ │
│ ┌─────────────────┐ ┌────────────────┐ │ │ ┌──────────────────────────┐ │
│ │ │ │ │ │ │ │ │ │
│ │ ┌────┐ │ │ Java Debugger │ │ │ │ │ │
│ │ │ │ Python │ │ ├─┼─────────────┼──────────► │ │
│ │ │ │ + │ │ │ │ │ │ Program being │ │
│ │ │ │ Frida │ │ │ │ │ │ analyzed │ │
│ │ │ │ │ │ JDWP │ │ │ │ │ │
│ │ │ │ ◄─┤ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │
│ │ │CLI │ ├─► │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ └────────────────┘ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ │ ├────────────────────┼─────────────┤►│frida-├─► │ │
│ │ │ │ │ │ │ │server◄─┤ │ │
│ │ └────┘ │ │ │ │ │ └──────────────────────────┘ │
│ │ │◄───────────────────┼─────────────┼─┤ │ │
│ └─────────────────┘ │ │ └──────┘ │
│ │ │ │
└────────────────────────────────────────┘ └────────────────────────────────────────┘
Die JVM muss mit den folgenden Optionen gestartet werden:
-Xdebug-Xrunjdwp:transport=dt_socket,address=1000,server=y,suspend=n-XintNatürlich ist der Listening-Port (1000 im obigen Beispiel) beliebig und kann geändert werden.
Falls möglich, installieren Sie frida-server auf der Maschine, die das zu analysierende Programm enthält, und starten Sie es mit dem folgenden Befehl:
# frida-server -l 0.0.0.0:1500 &
Der Listening-Port / die Adresse kann ebenfalls geändert werden, um Ihren Anforderungen zu entsprechen.
Setzen Sie am Ende des Dockerfiles in ./dbg die IP-Adresse des "Hosts" (der Maschine, auf der das zu analysierende Programm läuft), den JDWP-Listening-Port und den Frida-Listening-Port (0, falls frida-server nicht verfügbar ist).
Dann # make build, dann # make run-dbg. Verbinden Sie ein zweites Terminal mit diesem Container mit # docker exec -it $(docker ps -lq) bash.
Führen Sie im ersten Terminal cd debugger && make debug aus, danach im zweiten: cd frida && make instrument.
Sie interagieren mit Captain Hook über das zweite Terminal, das Ihnen eine CLI anbietet. Geben Sie > help ein, um eine vollständige Liste aller verfügbaren und dokumentierten Befehle zu erhalten.
Der Ordner "agent" ist rein experimentell, ebenso wie der Befehl > set_object_inspection_strategy.