hacktricks/mobile-pentesting/android-app-pentesting/exploiting-a-debuggeable-applciation.md

12 KiB
Raw Blame History

Exploiting a debuggeable application

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

рд░реВрдЯ рдФрд░ рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдЬрд╛рдВрдЪреЛрдВ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдирд╛

This section of the post is a summary from the post https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0

Android рдРрдк рдХреЛ рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрджрдо

рдРрдк рдХреЛ рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдирд╛

Content based on https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0

  1. APK рдХреЛ рдбрд┐рдХрдВрдкрд╛рдЗрд▓ рдХрд░реЗрдВ:
  • APK рдХреЛ рдбрд┐рдХрдВрдкрд╛рдЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП APK-GUI рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
  • android-manifest рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдбрд┐рдмрдЧрд┐рдВрдЧ рдореЛрдб рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП android:debuggable=true рдбрд╛рд▓реЗрдВред
  • рд╕рдВрд╢реЛрдзрд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ, рд╕рд╛рдЗрди рдХрд░реЗрдВ рдФрд░ рдЬрд╝рд┐рдкрд▓рд╛рдЗрди рдХрд░реЗрдВред
  1. рд╕рдВрд╢реЛрдзрд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
  • рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: adb install <application_name>ред
  1. рдкреИрдХреЗрдЬ рдирд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:
  • рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рд╕реВрдЪреА рдмрдирд╛рдиреЗ рдФрд░ рдкреИрдХреЗрдЬ рдирд╛рдо рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП adb shell pm list packages тАУ3 рдЪрд▓рд╛рдПрдБред
  1. рдРрдк рдХреЛ рдбрд┐рдмрдЧрд░ рдХрдиреЗрдХреНрд╢рди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░реЗрдВ:
  • рдХрдорд╛рдВрдб: adb shell am setup-debug-app тАУw <package_name>ред
  • рдиреЛрдЯ: рдпрд╣ рдХрдорд╛рдВрдб рд╣рд░ рдмрд╛рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЪрд▓рд╛рдиреА рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдпрд╣ рдбрд┐рдмрдЧрд░ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗред
  • рд╕реНрдерд┐рд░рддрд╛ рдХреЗ рд▓рд┐рдП, adb shell am setup-debug-app тАУw -тАУpersistent <package_name> рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
  • рд╕рднреА рдлреНрд▓реИрдЧ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, adb shell am clear-debug-app <package_name> рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
  1. Android Studio рдореЗрдВ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд░реЗрдВ:
  • Android Studio рдореЗрдВ File -> Open Profile or APK рдкрд░ рдЬрд╛рдПрдБред
  • рдкреБрдирдГ рд╕рдВрдХрд▓рд┐рдд APK рдЦреЛрд▓реЗрдВред
  1. рдореБрдЦреНрдп рдЬрд╛рд╡рд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд╕реЗрдЯ рдХрд░реЗрдВ:
  • MainActivity.java (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ onCreate рд╡рд┐рдзрд┐ рдореЗрдВ), b.java, рдФрд░ ContextWrapper.java рдореЗрдВ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд░рдЦреЗрдВред

рдЬрд╛рдВрдЪреЛрдВ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдирд╛

рдРрдкlication, рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдкрд░, рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛ рдХрд┐ рдпрд╣ рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдФрд░ рдпрд╣ рд░реВрдЯреЗрдб рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмрд╛рдЗрдирд░реА рдХреА рднреА рдЬрд╛рдВрдЪ рдХрд░реЗрдЧрд╛ред рдбрд┐рдмрдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдРрдк рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ, рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдмрд┐рдЯ рдХреЛ рдЕрдирд╕реЗрдЯ рдХрд░рдиреЗ рдФрд░ рдЦреЛрдЬреЗ рдЧрдП рдмрд╛рдЗрдирд░реА рдХреЗ рдирд╛рдореЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЗрди рдЬрд╛рдВрдЪреЛрдВ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред

рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП:

  1. рдлреНрд▓реИрдЧ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ:
  • рдбрд┐рдмрдЧрд░ рдХрдВрд╕реЛрд▓ рдХреЗ рд╡реЗрд░рд┐рдПрдмрд▓ рд╕реЗрдХреНрд╢рди рдореЗрдВ рдЬрд╛рдПрдБ: this mLoadedAPK -> mApplicationInfo -> flags = 814267974ред
  • рдиреЛрдЯ: flags = 814267974 рдХрд╛ рдмрд╛рдЗрдирд░реА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ 11000011100111011110 рд╣реИ, рдЬреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ "Flag_debuggable" рд╕рдХреНрд░рд┐рдп рд╣реИред

https://miro.medium.com/v2/resize:fit:1400/1*-ckiSbWGSoc1beuxxpKbow.png

рдпреЗ рдХрджрдо рд╕рд╛рдореВрд╣рд┐рдХ рд░реВрдк рд╕реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдбрд┐рдмрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдФрд░ рдХрд┐ рдХреБрдЫ рд╕реБрд░рдХреНрд╖рд╛ рдЬрд╛рдВрдЪреЛрдВ рдХреЛ рдбрд┐рдмрдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд╛рдпрдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ, рдЬрд┐рд╕рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдЕрдзрд┐рдХ рдЧрд╣рди рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдпрд╛ рд╕рдВрд╢реЛрдзрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред

рдЪрд░рдг 2 рдореЗрдВ рдлреНрд▓реИрдЧ рдорд╛рди рдХреЛ 814267972 рдореЗрдВ рдмрджрд▓рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬреЛ рдмрд╛рдЗрдирд░реА рдореЗрдВ 110000101101000000100010100 рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдПрдХ рднреЗрджреНрдпрддрд╛ рдХрд╛ рд╢реЛрд╖рдг рдХрд░рдирд╛

рдПрдХ рдХрдордЬреЛрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдмрдЯрди рдФрд░ рдПрдХ рдЯреЗрдХреНрд╕реНрдЯрд╡реНрдпреВ рдерд╛ред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди "Crack Me" рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рд▓рдХреНрд╖реНрдп рд░рдирдЯрд╛рдЗрдо рдкрд░ "Try Again" рд╕реЗ "Hacked" рд╕рдВрджреЗрд╢ рдХреЛ рдмрджрд▓рдирд╛ рд╣реИ, рдмрд┐рдирд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдПред

рднреЗрджреНрдпрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛

  • рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ apktool рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбрд┐рдХрдВрдкрд╛рдЗрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рддрд╛рдХрд┐ AndroidManifest.xml рдлрд╝рд╛рдЗрд▓ рддрдХ рдкрд╣реБрдБрдЪ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХреЗред
  • AndroidManifest.xml рдореЗрдВ android_debuggable="true" рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдпрд╣ рд╕рдВрдХреЗрдд рдХрд░рддреА рд╣реИ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдФрд░ рд╢реЛрд╖рдг рдХреЗ рд▓рд┐рдП рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реИред
  • рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ apktool рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХреЛрдб рдХреЛ рдмрджрд▓реЗред

рд╕реЗрдЯрдЕрдк рддреИрдпрд╛рд░ рдХрд░рдирд╛

  • рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдПрдХ рдПрдореБрд▓реЗрдЯрд░ рд╢реБрд░реВ рдХрд░рдирд╛, рдХрдордЬреЛрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛, рдФрд░ adb jdwp рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реБрдирдиреЗ рд╡рд╛рд▓реЗ рдбреЗрд▓рд╡рд┐рдХ рд╡реАрдПрдо рдкреЛрд░реНрдЯ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рдерд╛ред
  • JDWP (Java Debug Wire Protocol) рдПрдХ рд╡реАрдПрдо рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдкреЛрд░реНрдЯ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдХреЗред
  • рджреВрд░рд╕реНрде рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдкреЛрд░реНрдЯ рдлреЙрд░рд╡рд░реНрдбрд┐рдВрдЧ рдЖрд╡рд╢реНрдпрдХ рдереА, рдЗрд╕рдХреЗ рдмрд╛рдж JDB рдХреЛ рд▓рдХреНрд╖рд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред

рд░рдирдЯрд╛рдЗрдо рдкрд░ рдХреЛрдб рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдирд╛

  • рд╢реЛрд╖рдг рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд╕реЗрдЯ рдХрд░рдХреЗ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ред
  • рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП classes рдФрд░ methods <class_name> рдЬреИрд╕реЗ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ред
  • onClick рд╡рд┐рдзрд┐ рдкрд░ рдПрдХ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛, рдФрд░ рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред
  • рд╕реНрдерд╛рдиреАрдп рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдФрд░ рд╕рдВрд╢реЛрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП locals, next, рдФрд░ set рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ "Try Again" рд╕рдВрджреЗрд╢ рдХреЛ "Hacked" рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдПред
  • рд╕рдВрд╢реЛрдзрд┐рдд рдХреЛрдб рдХреЛ run рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛, рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ред

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдиреЗ рджрд┐рдЦрд╛рдпрд╛ рдХрд┐ рдХреИрд╕реЗ рдПрдХ рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╣реЗрд░рдлреЗрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рд╢реЗрд▓ рдПрдХреНрд╕реЗрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдЬреИрд╕реЗ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╢реЛрд╖рдг рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд┐рдпрд╛ред

References

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}