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