
Отслеживает пользовательские вводы для обнаружения уязвимостей инъекций в методах 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 │ │
│ │ │ │ │ │ ◄─┼─────────────┼──────────┤ │ │
│ │ │ │ ◄─┤ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │
│ │ │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 &
Порт и адрес прослушивания также можно изменить в соответствии с вашими потребностями.
В конце Dockerfile, расположенного в ./dbg, укажите IP-адрес «хоста» (машины, на которой выполняется анализируемая программа), порт прослушивания 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.