
Traccia gli input utente per rilevare vulnerabilità di injection nei metodi Java tramite JDWP e Frida, individuando potenziali punti di injection di comandi e SQL.
Lo scopo di questo strumento è tracciare gli input utente, al fine di individuare punti di iniezione in metodi sensibili (come java.lang.Runtime.exec, java.sql.Statement.executeQuery, ...) così come le mutazioni su questi input tra il punto di iniezione e la chiamata al metodo.
"Marks" vengono generati e devono essere inseriti in ogni possibile input utente della tua applicazione. Marks diversi ti aiuteranno a determinare l'origine di un alert.
L'elenco dei metodi monitorati è disponibile usando il comando > list_breakpoints nella CLI. Questo elenco può essere modificato con i comandi > add_breakpoint e > delete_breakpoint.
Captain Hook Docker Main machine
container
┌────────────────────────────────────────┐ ┌────────────────────────────────────────┐
│ │ │ │
│ ┌─────────────────┐ ┌────────────────┐ │ │ ┌──────────────────────────┐ │
│ │ │ │ │ │ │ │ │ │
│ │ ┌────┐ │ │ Java Debugger │ │ │ │ │ │
│ │ │ │ Python │ │ ├─┼─────────────┼──────────► │ │
│ │ │ │ + │ │ │ │ │ │ Program being │ │
│ │ │ │ Frida │ │ │ │ │ │ analyzed │ │
│ │ │ │ │ │ ◄─┼─────────────┼──────────┤ │ │
│ │ │ │ ◄─┤ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │
│ │ │CLI │ ├─► │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ └────────────────┘ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ ┌──────┐ │ │ │
│ │ │ │ ├────────────────────┼─────────────┤►│frida-├─► │ │
│ │ │ │ │ │ │ │server◄─┤ │ │
│ │ └────┘ │ │ │ │ │ └──────────────────────────┘ │
│ │ │◄───────────────────┼─────────────┼─┤ │ │
│ └─────────────────┘ │ │ └──────┘ │
│ │ │ │
└────────────────────────────────────────┘ └────────────────────────────────────────┘
La sua JVM deve essere avviata con le seguenti opzioni:
-Xdebug-Xrunjdwp:transport=dt_socket,address=1000,server=y,suspend=n-XintOvviamente, la porta in ascolto (1000 nell'esempio precedente) è arbitraria e può essere cambiata.
Se possibile, installa frida-server sulla macchina che contiene il programma in analisi e avvialo con il seguente comando:
# frida-server -l 0.0.0.0:1500 &
Anche la porta / l'indirizzo in ascolto possono essere modificati in base alle tue esigenze.
Alla fine del Dockerfile situato in ./dbg, imposta l'indirizzo IP dell'"host" (la macchina che esegue il programma da analizzare), la porta di ascolto JDWP e la porta di ascolto di Frida (0 se frida-server non è disponibile).
Poi # make build, quindi # make run-dbg. Collega un secondo terminale a questo container con # docker exec -it $(docker ps -lq) bash.
Nel primo, esegui: cd debugger && make debug, poi nel secondo: cd frida && make instrument
Interagirai con Captain Hook tramite il secondo terminale, che ti presenta una CLI. Digita > help per un elenco esaustivo dei comandi disponibili, tutti documentati.
La cartella "agent" è puramente sperimentale, così come il comando > set_object_inspection_strategy.