Exploiting a debuggeable application
Була надана демонстрація за допомогою вразливої програми, що містить кнопку та текстове поле. Спочатку програма відображає "Crack Me". Мета полягає в тому, щоб змінити повідомлення з "Try Again" на "Hacked" під час виконання, не змінюючи вихідний код.
Перевірка на вразливість
Для доступу до файлу
AndroidManifest.xml
програма була розкомпільована за допомогоюapktool
.Наявність
android_debuggable="true"
в AndroidManifest.xml вказує на те, що програма може бути відлагоджена та піддається експлуатації.Важливо зауважити, що
apktool
використовується виключно для перевірки статусу відлагодження без зміни будь-якого коду.
Підготовка налаштувань
Процес включав запуск емулятора, встановлення вразливої програми та використання
adb jdwp
для ідентифікації портів Dalvik VM, які слухають.JDWP (Java Debug Wire Protocol) дозволяє відлагоджувати програму, що працює в VM, шляхом викладення унікального порту.
Для віддаленого відлагодження було необхідно перенаправлення портів, за яким слідувало підключення JDB до цільової програми.
Впровадження коду під час виконання
Експлуатація була проведена шляхом встановлення точок зупинки та контролю потоку програми.
Для виявлення структури програми використовувалися команди, такі як
classes
таmethods <class_name>
.Точка зупинки була встановлена в методі
onClick
, та його виконання було контрольовано.Для огляду та зміни локальних змінних використовувалися команди
locals
,next
таset
, зокрема змінюючи повідомлення "Try Again" на "Hacked".Змінений код був виконаний за допомогою команди
run
, успішно змінюючи вихід програми в реальному часі.
Цей приклад продемонстрував, як можна маніпулювати поведінкою відлагоджуваної програми, підкреслюючи потенціал для більш складних експлойтів, таких як отримання доступу до оболонки на пристрої в контексті програми.
Last updated