AVD - Android ๊ฐ์ ๋๋ฐ์ด์ค
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์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.
์ด ์ฝํ ์ธ ์์ฑ์ ๋์์ ์ฃผ์ @offsecjay๊ป ์ง์ฌ์ผ๋ก ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
AVD๋
Android Studio๋ APK๋ฅผ ํ ์คํธํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ Android ๊ฐ์ ๋จธ์ ์ ์คํํ ์ ์๊ฒ ํด์ค๋๋ค. ์ด๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ค์์ด ํ์ํฉ๋๋ค:
- Android SDK tools - Download here.
- ๋๋ Android Studio (Android SDK tools ํฌํจ) - Download here.
Windows์์๋(์ ๊ฒฝ์ฐ) Android Studio๋ฅผ ์ค์นํ ํ SDK Tools๊ฐ ์ค์น๋ ๊ฒฝ๋ก๋: C:\Users\<UserName>\AppData\Local\Android\Sdk\tools
mac์์๋ SDK tools๋ฅผ ๋ค์ด๋ก๋ํ๊ณ PATH์ ์ถ๊ฐํ๋ ค๋ฉด ๋ค์์ ์คํํ์ธ์:
brew tap homebrew/cask
brew install --cask android-sdk
๋๋ Android Studio GUI์์ https://stackoverflow.com/questions/46402772/failed-to-install-android-sdk-java-lang-noclassdeffounderror-javax-xml-bind-a์ ํ์๋ ๊ฒ์ฒ๋ผ ~/Library/Android/sdk/cmdline-tools/latest/bin/, ~/Library/Android/sdk/platform-tools/ ๋ฐ ~/Library/Android/sdk/emulator/์ ์ค์น๋ฉ๋๋ค
Java ๋ฌธ์ ์ ๊ฒฝ์ฐ:
export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jbr/Contents/Home
GUI
๊ฐ์ ๋จธ์ ์ค๋น
If you installed Android Studio, you can just open the main project view and access: Tools โ> AVD Manager.
.png)
๊ทธ๋ฐ ๋ค์, _Create Virtual Device_๋ฅผ ํด๋ฆญํ์ธ์
.png)
_select ์ฌ์ฉํ๋ ค๋ ํด๋ํฐ์ ์ ํํ๊ณ Next. ๋ฅผ ํด๋ฆญํ์ธ์
Warning
Play Store๊ฐ ์ค์น๋ ํฐ์ด ํ์ํ๋ฉด Play Store ์์ด์ฝ์ด ์๋ ๊ธฐ๊ธฐ๋ฅผ ์ ํํ์ธ์!
![]()
ํ์ฌ ํ๋ฉด์์ ํฐ์ด ์คํํ Android image๋ฅผ ์ ํํ๊ณ ๋ค์ด๋ก๋ํ ์ ์์ต๋๋ค:
.png)
ํด๋น ์ด๋ฏธ์ง๋ฅผ ์ ํํ๊ณ , ๋ค์ด๋ก๋๋์ด ์์ง ์๋ค๋ฉด ์ด๋ฆ ์์ Download ์ฌ๋ณผ์ ํด๋ฆญํ์ธ์ (์ด๋ฏธ์ง๊ฐ ๋ค์ด๋ก๋๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ธ์).
์ด๋ฏธ์ง๊ฐ ๋ค์ด๋ก๋๋๋ฉด, Next ์ Finish ๋ฅผ ์ ํํ์ธ์.
๊ฐ์ ๋จธ์ ์ด ์์ฑ๋ฉ๋๋ค. ์ด์ AVD manager์ ์ ๊ทผํ ๋๋ง๋ค ์ด ๊ฐ์ ๋จธ์ ์ด ํ์๋ฉ๋๋ค.
๊ฐ์ ๋จธ์ ์คํ
์คํํ๋ ค๋ฉด ๋จ์ํ Start button ์ ๋๋ฅด์ธ์.
.png)
๋ช ๋ น์ค ๋๊ตฌ
Warning
For macOS you can find the
avdmanagertool in/Users/<username>/Library/Android/sdk/tools/bin/avdmanagerand theemulatorin/Users/<username>/Library/Android/sdk/emulator/emulatorif you have them installed.
๋จผ์ ์ด๋ค ํฐ์ ์ฌ์ฉํ ์ง ๊ฒฐ์ ํด์ผ ํฉ๋๋ค, ๊ฐ๋ฅํ ํฐ ๋ชฉ๋ก์ ๋ณด๋ ค๋ฉด ๋ค์์ ์คํํ์ธ์:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\avdmanager.bat list device
d: 0 or "automotive_1024p_landscape"
Name: Automotive (1024p landscape)
OEM : Google
Tag : android-automotive-playstore
---------
id: 1 or "Galaxy Nexus"
Name: Galaxy Nexus
OEM : Google
---------
id: 2 or "desktop_large"
Name: Large Desktop
OEM : Google
Tag : android-desktop
---------
id: 3 or "desktop_medium"
Name: Medium Desktop
OEM : Google
Tag : android-desktop
---------
id: 4 or "Nexus 10"
Name: Nexus 10
OEM : Google
[...]
์ฌ์ฉํ๋ ค๋ ๋๋ฐ์ด์ค์ ์ด๋ฆ์ ์ ํ์ผ๋ฉด, ํด๋น ๋๋ฐ์ด์ค์์ ์คํํ Android ์ด๋ฏธ์ง๋ฅผ ๊ฒฐ์ ํด์ผ ํฉ๋๋ค.\ ๋ชจ๋ ์ต์
์ sdkmanager๋ก ํ์ธํ ์ ์์ต๋๋ค:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat --list
๊ทธ๋ฆฌ๊ณ ์ฌ์ฉํ๋ ค๋ ํญ๋ชฉ(๋๋ ๋ชจ๋)๋ฅผ download ํ์ธ์:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat "platforms;android-28" "system-images;android-28;google_apis;x86_64"
์ฌ์ฉํ๋ ค๋ Android ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋ํ ํ ๋ค์๊ณผ ๊ฐ์ด ๋ค์ด๋ก๋๋ ๋ชจ๋ Android ์ด๋ฏธ์ง๋ฅผ ๋์ดํ ์ ์์ต๋๋ค:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\avdmanager.bat list target
----------
id: 1 or "android-28"
Name: Android API 28
Type: Platform
API level: 28
Revision: 6
----------
id: 2 or "android-29"
Name: Android API 29
Type: Platform
API level: 29
Revision: 4
์ด์ ์ฌ์ฉํ ๊ธฐ๊ธฐ๋ฅผ ๊ฒฐ์ ํ๊ณ Android ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋ํ์ผ๋ฏ๋ก, ๋ค์ ๋ช ๋ น์ผ๋ก ๊ฐ์ ๋จธ์ ์ ์์ฑํ ์ ์์ต๋๋ค:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\avdmanager.bat -v create avd -k "system-images;android-28;google_apis;x86_64" -n "AVD9" -d "Nexus 5X"
์ด์ ๋ช ๋ น์์ ๋ค์ ์ด๋ฆ์ VM์ ์์ฑํ์ต๋๋ค โAVD9โ device โNexus 5Xโ์ Android image โsystem-images;android-28;google_apis;x86_64โ๋ฅผ ์ฌ์ฉํ์ต๋๋ค.\ ์ด์ ์์ฑํ virtual machines์ ๋์ดํ๋ ค๋ฉด:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\avdmanager.bat list avd
Name: AVD9
Device: Nexus 5X (Google)
Path: C:\Users\cpolo\.android\avd\AVD9.avd
Target: Google APIs (Google Inc.)
Based on: Android API 28 Tag/ABI: google_apis/x86_64
The following Android Virtual Devices could not be loaded:
Name: Pixel_2_API_27
Path: C:\Users\cpolo\.android\avd\Pixel_2_API_27_1.avd
Error: Google pixel_2 no longer exists as a device
๊ฐ์ ๋จธ์ ์คํ
Warning
macOS์์๋
avdmanager๋๊ตฌ๋ฅผ/Users/<username>/Library/Android/sdk/tools/bin/avdmanager์์,emulator๋/Users/<username>/Library/Android/sdk/emulator/emulator์์ ์ฐพ์ ์ ์์ต๋๋ค(์ค์น๋ ๊ฒฝ์ฐ).
์ฐ๋ฆฌ๋ ์ด๋ฏธ ์์ฑ๋ ๊ฐ์ ๋จธ์ ์ ๋์ดํ๋ ๋ฐฉ๋ฒ์ ๋ณด์์ง๋ง, ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํด ๋์ดํ ์๋ ์์ต๋๋ค:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -list-avds
AVD9
Pixel_2_API_27
๋ค์์ ์ฌ์ฉํ์ฌ ์์ฑ๋ ๋ชจ๋ ๊ฐ์ ๋จธ์ ์ ๊ฐ๋จํ ์คํํ ์ ์์ต๋๋ค:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "VirtualMachineName"
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9"
๋๋ ๋ ๊ณ ๊ธ ์ต์ ์ ์ฌ์ฉํ์ฌ ๋ค์๊ณผ ๊ฐ์ ๊ฐ์ ๋จธ์ ์ ์คํํ ์ ์์ต๋๋ค:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" -http-proxy 192.168.1.12:8080 -writable-system
๋ช ๋ น์ค ์ต์
ํ์ง๋ง ๊ฐ์ ๋จธ์ ์ ์์ํ ๋ ์ฌ์ฉํ ์ ์๋ ์ ์ฉํ ๋ช ๋ น์ค ์ต์ ์ด ๋งค์ฐ ๋ง์ต๋๋ค. ์๋์๋ ๋ช ๊ฐ์ง ํฅ๋ฏธ๋ก์ด ์ต์ ์ ์ ๋ฆฌํ์ผ๋ฉฐ ์ ์ฒด ๋ชฉ๋ก์ find a complete list here
Boot
-snapshot name: VM ์ค๋ ์ท ์์-snapshot-list -snapstorage ~/.android/avd/Nexus_5X_API_23.avd/snapshots-test.img: ๊ธฐ๋ก๋ ๋ชจ๋ ์ค๋ ์ท์ ๋์ด
Network
-dns-server 192.0.2.0, 192.0.2.255: ์ผํ๋ก ๊ตฌ๋ถ๋ DNS ์๋ฒ๋ค์ VM์ ์ง์ ํ ์ ์์ต๋๋ค.-http-proxy 192.168.1.12:8080: ์ฌ์ฉํ HTTP ํ๋ก์๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค (ํธ๋ํฝ์ ์บก์ฒํ ๋ Burp์ ํจ๊ป ๋งค์ฐ ์ ์ฉํฉ๋๋ค)- ํ๋ก์ ์ค์ ์ด ์ด๋ค ์ด์ ๋ก ์๋ํ์ง ์์ผ๋ฉด, ๋ด๋ถ์ ์ผ๋ก ์ค์ ํ๊ฑฐ๋ โSuper Proxyโ ๋๋ โProxyDroidโ ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑํด ๋ณด์ธ์.
-netdelay 200: ๋คํธ์ํฌ ์ง์ฐ์ ๋ฐ๋ฆฌ์ด ๋จ์๋ก ์๋ฎฌ๋ ์ด์ ํฉ๋๋ค.-port 5556: ์ฝ์๊ณผ adb์ ์ฌ์ฉ๋๋ TCP ํฌํธ ๋ฒํธ๋ฅผ ์ค์ ํฉ๋๋ค.-ports 5556,5559: ์ฝ์๊ณผ adb์ ์ฌ์ฉ๋๋ TCP ํฌํธ๋ฅผ ์ค์ ํฉ๋๋ค.-tcpdump /path/dumpfile.cap: ๋ชจ๋ ํธ๋ํฝ์ ํ์ผ๋ก ์บก์ฒํฉ๋๋ค
System
-selinux {disabled|permissive}: Linux ์ด์์ฒด์ ์์ Security-Enhanced Linux ๋ณด์ ๋ชจ๋์ disabled ๋๋ permissive ๋ชจ๋๋ก ์ค์ ํฉ๋๋ค.-timezone Europe/Paris: ๊ฐ์ ๋๋ฐ์ด์ค์ ํ์์กด์ ์ค์ ํฉ๋๋ค-screen {touch(default)|multi-touch|o-touch}: ์๋ฎฌ๋ ์ด์ ๋ ํฐ์น ์คํฌ๋ฆฐ ๋ชจ๋๋ฅผ ์ค์ ํฉ๋๋ค.-writable-system: ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ์๋ฎฌ๋ ์ด์ ์ธ์ ๋์ ์์คํ ์ด๋ฏธ์ง๋ฅผ ์ฐ๊ธฐ ๊ฐ๋ฅํ๊ฒ ๋ง๋ญ๋๋ค. ๋ํadb root; adb remount๋ฅผ ์คํํด์ผ ํฉ๋๋ค. ์์คํ ์ ์๋ก์ด ์ธ์ฆ์๋ฅผ ์ค์นํ ๋ ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
Linux CLI setup (SDK/AVD quickstart)
๊ณต์ CLI ๋๊ตฌ๋ก Android Studio ์์ด๋ ๋น ๋ฅด๊ณ ๋๋ฒ๊น ๊ฐ๋ฅํ ์๋ฎฌ๋ ์ดํฐ๋ฅผ ์ฝ๊ฒ ์์ฑํ ์ ์์ต๋๋ค.
# Directory layout
mkdir -p ~/Android/cmdline-tools/latest
# Download commandline tools (Linux)
wget https://dl.google.com/android/repository/commandlinetools-linux-13114758_latest.zip -O /tmp/cmdline-tools.zip
unzip /tmp/cmdline-tools.zip -d ~/Android/cmdline-tools/latest
rm /tmp/cmdline-tools.zip
# Env vars (add to ~/.bashrc or ~/.zshrc)
export ANDROID_HOME=$HOME/Android
export PATH=$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/emulator:$PATH
# Install core SDK components
sdkmanager --install "platform-tools" "emulator"
# Install a debuggable x86_64 system image (Android 11 / API 30)
sdkmanager --install "system-images;android-30;google_apis;x86_64"
# Create an AVD and run it with a writable /system & snapshot name
avdmanager create avd -n PixelRootX86 -k "system-images;android-30;google_apis;x86_64" -d "pixel"
emulator -avd PixelRootX86 -writable-system -snapshot PixelRootX86_snap
# Verify root (debuggable images allow `adb root`)
adb root
adb shell whoami # expect: root
์ฐธ๊ณ
- ์์คํ ์ด๋ฏธ์ง ์ข ๋ฅ: google_apis (๋๋ฒ๊น ๊ฐ๋ฅ, adb root ํ์ฉ), google_apis_playstore (root ๋ถ๊ฐ), aosp/default (๊ฒฝ๋).
- ๋น๋ ์ ํ: userdebug๋ ๋๋ฒ๊ทธ ๊ฐ๋ฅ ์ด๋ฏธ์ง์์ ์ข
์ข
adb root๋ฅผ ํ์ฉํฉ๋๋ค. Play Store ์ด๋ฏธ์ง๋ ํ๋ก๋์ ๋น๋๋ก ๋ฃจํธ ๊ถํ์ ์ฐจ๋จํฉ๋๋ค. - x86_64 ํธ์คํธ์์๋ API 28+๋ถํฐ ์ ์ฒด ์์คํ ARM64 ์๋ฎฌ๋ ์ด์ ์ด ์ง์๋์ง ์์ต๋๋ค. Android 11+์ ๊ฒฝ์ฐ ๋ง์ ARM ์ ์ฉ ์ฑ์ ๋น ๋ฅด๊ฒ ์คํํ๊ธฐ ์ํด ์ฑ๋ณ ARM-to-x86 ๋ณํ์ ํฌํจํ๋ Google APIs/Play ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ธ์.
CLI์์ ์ค๋ ์ท
# Save a clean snapshot from the running emulator
adb -s emulator-5554 emu avd snapshot save my_clean_setup
# Boot from a named snapshot (if it exists)
emulator -avd PixelRootX86 -writable-system -snapshot my_clean_setup
ARMโx86 ๋ฐ์ด๋๋ฆฌ ๋ณํ (Android 11+)
Android 11+์ Google APIs ๋ฐ Play Store images๋ ์์คํ ์ ๋๋จธ์ง๋ฅผ ๋ค์ดํฐ๋ธ x86/x86_64๋ก ์ ์งํ๋ฉด์ ํ๋ก์ธ์ค๋ณ๋ก ARM ์ฑ ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋ณํํ ์ ์์ต๋๋ค. ์ด๋ ๋ฐ์คํฌํฑ์์ ๋ง์ ARM-only ์ฑ์ ํ ์คํธํ๊ธฐ์ ์ถฉ๋ถํ ๋น ๋ฅธ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
ํ: pentests ๋์ Google APIs x86/x86_64 images๋ฅผ ์ ํธํ์ธ์. Play images๋ ํธ๋ฆฌํ์ง๋ง
adb root๋ฅผ ์ฐจ๋จํฉ๋๋ค; Play services๊ฐ ๋ฐ๋์ ํ์ํ๊ณ root๊ฐ ์๋ค๋ ๊ฒ์ ์์ฉํ ๋๋ง ์ฌ์ฉํ์ธ์.
Play Store ๋๋ฐ์ด์ค์ root ํ๋
Play Store๊ฐ ํฌํจ๋ ๋๋ฐ์ด์ค๋ฅผ ๋ค์ด๋ก๋ํ ๊ฒฝ์ฐ ์ง์ ์ ์ผ๋ก root๋ฅผ ์ป์ ์ ์์ผ๋ฉฐ ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ ๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค
$ adb root
adbd cannot run as root in production builds
rootAVD์ Magisk๋ฅผ ์ฌ์ฉํ์ฌ rootํ ์ ์์์ต๋๋ค (์: this video ๋๋ this one).
Burp ์ธ์ฆ์ ์ค์น
๋ค์ ํ์ด์ง๋ฅผ ํ์ธํ์ฌ ์ปค์คํ CA ์ธ์ฆ์๋ฅผ ์ค์นํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์:
์ ์ฉํ AVD ์ต์
์ค๋ ์ท ์ฐ๊ธฐ
์ธ์ ๋ ์ง VM์ ์ค๋ ์ท์ ์ฐ์ผ๋ ค๋ฉด GUI๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค:
.png)
์ฐธ๊ณ ์๋ฃ
- Build a Repeatable Android Bug Bounty Lab: Emulator vs Magisk, Burp, Frida, and Medusa
- Android Emulator command line
- Run ARM apps on the Android Emulator (x86 translation)
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์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.


