์๋ ๋๋ ํ ํด์ ๊ธฐ๋ฒ
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์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.
์๋ ๋๋ ํ ํด์ ๊ธฐ๋ฒ
์ํํธ์จ์ด ๋ณด์์ ์์ญ์์, ๋๋ ํ๋ ์ฝ๋๋ฅผ ์ดํด ๊ฐ๋ฅํ๊ฒ ๋ง๋๋ ๊ณผ์ ์ธ **๋๋ ํ ํด์ (de-obfuscation)**๋ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ด ๊ฐ์ด๋๋ ์ ์ ๋ถ์ ๊ธฐ๋ฒ๊ณผ ๋๋ ํ ํจํด ์ธ์์ ์ค์ ์ ๋ ๋ค์ํ ๋๋ ํ ํด์ ์ ๋ต์ ๋ค๋ฃน๋๋ค. ๋ํ ์ค์ต์ฉ ์ฐ์ต ๋ฌธ์ ๋ฅผ ์๊ฐํ๊ณ , ๋ ๊ณ ๊ธ ์ฃผ์ ๋ฅผ ํ๊ตฌํ๊ณ ์ ํ๋ ์ฌ๋๋ค์ ์ํ ์ถ๊ฐ ์๋ฃ๋ฅผ ์ ์ํฉ๋๋ค.
์ ์ ๋๋ ํ ํด์ ์ ๋ต
๋๋ ํ์ ์ฑ๊ฒฉ์ ๋ฐ๋ผ ์ฌ๋ฌ ์ ๋ต์ ์ ์ฉํ ์ ์์ต๋๋ค:
- DEX bytecode (Java): ํจ๊ณผ์ ์ธ ์ ๊ทผ๋ฒ ์ค ํ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ ํ ํด์ ๋ฉ์๋๋ฅผ ์๋ณํ ๋ค์, ํด๋น ๋ฉ์๋๋ฅผ Java ํ์ผ๋ก ๋ณต์ ํ๋ ๊ฒ์ ๋๋ค. ์ด ํ์ผ์ ์คํํ์ฌ ๋์ ์์์ ๋๋ ํ๋ฅผ ์ญ์ผ๋ก ์ํํฉ๋๋ค.
- Java and Native Code: ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ๋๋ ํ ํด์ ์๊ณ ๋ฆฌ์ฆ์ Python ๊ฐ์ ์คํฌ๋ฆฝํธ ์ธ์ด๋ก ๋ณํํ๋ ๊ฒ์ ๋๋ค. ์ด ์ ๋ต์ ์๊ณ ๋ฆฌ์ฆ์ ์์ ํ ์ดํดํ๋ ๊ฒ์ด ๋ชฉํ๊ฐ ์๋๋ผ ํจ๊ณผ์ ์ผ๋ก ์คํํ๋ ๊ฒ์์ ๊ฐ์กฐํฉ๋๋ค.
๋๋ ํ ์๋ณํ๊ธฐ
๋๋ ํ๋ ์ฝ๋๋ฅผ ์ธ์ํ๋ ๊ฒ์ด ๋๋ ํ ํด์ ์ ์ฒซ ๋จ๊ณ์ ๋๋ค. ์ฃผ์ ์งํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- Java ๋ฐ Android์์ ๋ฌธ์์ด์ด ์๊ฑฐ๋ ์์ฌ ์๋ ๊ฒฝ์ฐ โ ๋ฌธ์์ด ๋๋ ํ๋ฅผ ์์ฌํ ์ ์์ต๋๋ค.
- assets ๋๋ ํ ๋ฆฌ์ ๋ฐ์ด๋๋ฆฌ ํ์ผ ์กด์ฌ ๋๋
DexClassLoaderํธ์ถ โ ์ฝ๋ ์ธํจํน๊ณผ ๋์ ๋ก๋ฉ์ ์์ฌํฉ๋๋ค. - ๋ค์ดํฐ๋ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์๋ณ ๋ถ๊ฐํ JNI ํจ์์ ๋์ ์ฌ์ฉ โ ๋ค์ดํฐ๋ธ ๋ฉ์๋ ๋๋ ํ๋ฅผ ์๋ฏธํ ์ ์์ต๋๋ค.
๋๋ ํ ํด์ ์์์ ๋์ ๋ถ์
์ ์ด๋ ํ๊ฒฝ์์ ์ฝ๋๋ฅผ ์คํํจ์ผ๋ก์จ ๋์ ๋ถ์์ ๋๋ ํ๋ ์ฝ๋๊ฐ ์ค์๊ฐ์ผ๋ก ์ด๋ป๊ฒ ๋์ํ๋์ง ๊ด์ฐฐํ ์ ์๊ฒ ํด์ค๋๋ค. ์ด ๋ฐฉ๋ฒ์ ์ฝ๋์ ์ง์ง ์๋๋ฅผ ์จ๊ธฐ๊ธฐ ์ํด ์ค๊ณ๋ ๋ณต์กํ ๋๋ ํ ํจํด์ ๋ด๋ถ ์๋์ ๋ฐํ๋ด๋ ๋ฐ ํนํ ํจ๊ณผ์ ์ ๋๋ค.
๋์ ๋ถ์์ ์ ์ฉ ์ฌ๋ก
- ๋ฐํ์ ๋ณตํธํ: ๋ง์ ๋๋ ํ ๊ธฐ๋ฒ์ ๋ฌธ์์ด์ด๋ ์ฝ๋ ์กฐ๊ฐ์ ์ํธํํด ๋๊ณ ๋ฐํ์์๋ง ๋ณตํธํํฉ๋๋ค. ๋์ ๋ถ์์ ํตํด ๋ณตํธํ ์์ ์ ์์๋ค์ ์บก์ฒํ์ฌ ๊ทธ ์ง์ง ํํ๋ฅผ ๋๋ฌ๋ผ ์ ์์ต๋๋ค.
- ๋๋ ํ ๊ธฐ๋ฒ ์๋ณ: ์ ํ๋ฆฌ์ผ์ด์ ๋์์ ๋ชจ๋ํฐ๋งํ๋ฉด code virtualization, packers, dynamic code generation๊ณผ ๊ฐ์ ํน์ ๋๋ ํ ๊ธฐ๋ฒ์ ์๋ณํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- ์จ๊ฒจ์ง ๊ธฐ๋ฅ ๋ฐ๊ฒฌ: ๋๋ ํ๋ ์ฝ๋๋ ์ ์ ๋ถ์๋ง์ผ๋ก๋ ๋๋ฌ๋์ง ์๋ ์จ๊ฒจ์ง ๊ธฐ๋ฅ์ ํฌํจํ ์ ์์ต๋๋ค. ๋์ ๋ถ์์ ์กฐ๊ฑด๋ถ๋ก ์คํ๋๋ ๊ฒฝ๋ก๋ฅผ ํฌํจํ์ฌ ๋ชจ๋ ์ฝ๋ ๊ฒฝ๋ก๋ฅผ ๊ด์ฐฐํ์ฌ ์ด๋ฌํ ์จ๊ฒจ์ง ๊ธฐ๋ฅ์ ๋ฐํ๋ ๋๋ค.
Automated De-obfuscation with LLMs (Androidmeda)
์ด์ ์น์
๋ค์ด ์์ ์๋ ์ ๋ต์ ์ด์ ์ ๋ง์ถ๊ณ ์๋ ๋ฐ๋ฉด, 2025๋
์ ๋ฑ์ฅํ ์๋ก์ด ์ ํ์ ๋ํ ์ธ์ด ๋ชจ๋ธ(LLM) ๊ธฐ๋ฐ ๋๊ตฌ๋ ๋๋ถ๋ถ์ ๋ฒ๊ฑฐ๋ก์ด ์ด๋ฆ ์ฌ์ ์ ๋ฐ ์ ์ด ํ๋ฆ ๋ณต์ ์์
์ ์๋ํํ ์ ์๊ฒ ๋์์ต๋๋ค.
๋ํ์ ์ธ ํ๋ก์ ํธ ์ค ํ๋๋ Androidmeda โ jadx๋ก ์์ฑ๋ ๊ฒ๊ณผ ๊ฐ์ ๋์ปดํ์ผ๋ Java ์์ค๋ฅผ ๋ฐ์ ์ฝ๋์ ๊ฐ๋
์ฑ์ ํฌ๊ฒ ํฅ์์ํค๊ณ ์ฃผ์๊ณผ ๋ณด์ ์ฃผ์์ ์ถ๊ฐํ ๋ฒ์ ์ ๋ฐํํ๋ Python ์ ํธ๋ฆฌํฐ์
๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ
- ProGuard / DexGuard / DashO / Allatori / โฆ๊ฐ ์์ฑํ ์๋ฏธ ์๋ ์๋ณ์๋ฅผ semantic ์ด๋ฆ์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค.
- control-flow flattening์ ๊ฐ์งํ๊ณ ์ฌ๊ตฌ์ฑํ์ฌ ๋ถํฌ๋ช ํ switch-case ์ํ ๋จธ์ ์ ์ ์์ ์ธ loops / if-else ๊ตฌ์กฐ๋ก ๋์ฒดํฉ๋๋ค.
- ๊ฐ๋ฅํ ๊ฒฝ์ฐ ์ผ๋ฐ์ ์ธ string encryption ํจํด์ ๋ณตํธํํฉ๋๋ค.
- ๋ณต์กํ ๋ธ๋ก์ ๋ชฉ์ ์ ์ค๋ช ํ๋ inline comments๋ฅผ ์ฝ์ ํฉ๋๋ค.
- ๊ฒฝ๋ ์ ์ ๋ณด์ ์ค์บ์ ์ํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ
vuln_report.json์ ์ฌ๊ฐ๋ ์์ค(informational โ critical)์ผ๋ก ๊ธฐ๋กํฉ๋๋ค.
์ค์น
git clone https://github.com/In3tinct/Androidmeda
cd Androidmeda
pip3 install -r requirements.txt
์ ๋ ฅ ์ค๋น
jadx(๋๋ ๋ค๋ฅธ ๋์ปดํ์ผ๋ฌ)๋ฅผ ์ฌ์ฉํด ๋์ APK๋ฅผ ๋์ปดํ์ผํ๊ณ.javaํ์ผ์ด ๋ค์ด์๋ source ๋๋ ํ ๋ฆฌ๋ง ์ ์งํ์ธ์:
jadx -d input_dir/ target.apk
- (์ ํ)
input_dir/๋ฅผ ๋ถ์ํ๋ ค๋ ์ ํ๋ฆฌ์ผ์ด์ ํจํค์ง๋ค๋ง ํฌํจํ๋๋ก ์ ๋ฆฌํ์ธ์ โ ์ด๋ ๊ฒ ํ๋ฉด ์ฒ๋ฆฌ ์๋๊ฐ ํฌ๊ฒ ๋นจ๋ผ์ง๊ณ LLM ๋น์ฉ์ด ์ ๊ฐ๋ฉ๋๋ค.
์ฌ์ฉ ์์
์๊ฒฉ ์ ๊ณต์ (Gemini-1.5-flash):
export OPENAI_API_KEY=<your_key>
python3 androidmeda.py \
--llm_provider google \
--llm_model gemini-1.5-flash \
--source_dir input_dir/ \
--output_dir out/ \
--save_code true
์คํ๋ผ์ธ (๋ก์ปฌ ollama ๋ฐฑ์๋, llama3.2 ์ฌ์ฉ):
python3 androidmeda.py \
--llm_provider ollama \
--llm_model llama3.2 \
--source_dir input_dir/ \
--output_dir out/ \
--save_code true
Output
out/vuln_report.jsonโfile,line,issue,severity๋ฅผ ํฌํจํ JSON ๋ฐฐ์ด.- ๋ฏธ๋ฌ๋ ํจํค์ง ํธ๋ฆฌ์ ๋๋
ํ ํด์ ๋
.javaํ์ผ๋ค (๋จ,--save_code true์ผ ๊ฒฝ์ฐ์๋ง).
Tips & troubleshooting
- Skipped class โ ๋ณดํต ํ์ฑํ ์ ์๋ ๋ฉ์๋ ๋๋ฌธ์ ๋ฐ์ํฉ๋๋ค; ํจํค์ง๋ฅผ ๋ถ๋ฆฌํด์ ํ ์คํธํ๊ฑฐ๋ ํ์ ์ ๊ท์(parser regex)์ ์ ๋ฐ์ดํธํ์ธ์.
- Slow run-time / high token usage โ ์ ์ฒด ๋์ปดํ์ผ ๋์
--source_dir๋ฅผ ํน์ ์ฑ ํจํค์ง๋ฅผ ๊ฐ๋ฆฌํค๋๋ก ์ค์ ํ์ธ์. - ์ทจ์ฝ์ ๋ณด๊ณ ์๋ ํญ์ ์๋์ผ๋ก ๊ฒํ ํ์ธ์ โ LLM hallucinations๋ false positives / negatives๋ฅผ ์ด๋ํ ์ ์์ต๋๋ค.
Practical value โ Crocodilus malware ์ฌ๋ก ์ฐ๊ตฌ
2025๋ Crocodilus banking trojan์ ์ฌํ๊ฒ ๋๋ ํ๋ ์ํ์ Androidmeda์ ํต๊ณผ์ํจ ๊ฒฐ๊ณผ ๋ถ์ ์๊ฐ์ด ์๊ฐ์์ ๋ถ์ผ๋ก ๋จ์ถ๋์์ต๋๋ค: ๋๊ตฌ๋ ํธ์ถ ๊ทธ๋ํ ์๋ฏธ๋ก ์ ๋ณต๊ตฌํ๊ณ , accessibility APIs์ ๋ํ ํธ์ถ๊ณผ ํ๋์ฝ๋ฉ๋ C2 URLs์ ๋๋ฌ๋์ผ๋ฉฐ, ๋ถ์๊ฐ ๋์๋ณด๋๋ก ๊ฐ์ ธ๊ฐ ์ ์๋ ๊ฐ๊ฒฐํ ๋ณด๊ณ ์๋ฅผ ์์ฑํ์ต๋๋ค.
DaliVM์ ์ฌ์ฉํ Dalvik ๋ฌธ์์ด ๋ณตํธํ ํ๊นํ
DaliVM์ Android๋ฅผ ์คํํ์ง ์๊ณ ์ ์ ์ผ๋ก ๋ฐํ์ ์ ์ฉ ๊ฐ(ํนํ ๋ณตํธํ๋ ๋ฌธ์์ด)์ ๋ณต๊ตฌํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ Python Dalvik ๋ฐ์ดํธ์ฝ๋ ์๋ฎฌ๋ ์ดํฐ์ ๋๋ค. Dalvik opcodes๋ฅผ ์๋ฎฌ๋ ์ด์ ํ๊ณ Android/Java APIs๋ฅผ ๋ชจํนํ์ฌ APK ๋ด๋ถ์ ํน์ ๋ฉ์๋๋ฅผ ์คํํฉ๋๋ค.
์ํฌํ๋ก์ฐ
- ๋์ ๋ฉ์๋ ์ ํ โ Dalvik ์๊ทธ๋์ฒ๋ก ์ง์ (
Lpkg/Class;->method(Args)Ret). ์:Lutil/Crypto;->decrypt(Ljava/lang/String;)Ljava/lang/String;,LMyClass;->compute(II)I. - ํธ์ถ ์ง์ ์ด๊ฑฐ โ multi-DEX (
classes*.dex) ์ ๋ฐ์์ ํธ์ถ ์ง์ ์ ์ฐพ๊ณ , ํ์ ์ ์ญ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ ์ถ์ , ์ ๋ฐฉ ์กฐํ, ๋ถ๋ถ ์คํ์ ํตํด ์ธ์ ๋ณต์. - Dalvik VM ๋ด๋ถ์์ ๋ฉ์๋ ์๋ฎฌ๋ ์ด์
์คํ(120+ opcodes ์ง์, const/array/control/field/invoke ํฌํจ,
<clinit>๋ก ํด๋์ค ์ด๊ธฐํ ์ฒ๋ฆฌ)ํ๊ณ ๋ฐํ ๊ฐ ์์ง(์: ๋ณตํธํ๋ ๋ฌธ์์ด). - ๋ฐํ์ ์์กด์ฑ ์ฐํ โ ๊ณตํต Android APIs(Context, PackageManager, Signature, reflection, system services)์ ๋ํ ๋ด์ฅ mocks์ Java stdlib(String/StringBuilder/Integer/Math/Arrays/List/Iterator)์ฉ ํ ์ ์ฌ์ฉํฉ๋๋ค.
- ์คํ์ด ์ค๋จ๋๋ฉด, PC/๋ ์ง์คํฐ ๋ณํ๋ฅผ ํ์ธํ๊ณ opcode ํธ๋ค๋ฌ๋ฅผ ํ์ฅํ๊ธฐ ์ํด opcode-level tracing์ ํ์ฑํํ์ธ์.
CLI ์ฌ์ฉ๋ฒ
# Emulate a decryptor and dump all returns
python emulate.py app.apk "Lcom/example/Decryptor;->decrypt"
# Verbose, debug trace, and limit outputs
python emulate.py app.apk "Lcom/example/Decryptor;->decrypt" -v --debug --limit 10
Outputs๋ ํธ์ถ๋น ์์ง๋ return values์ ๋๋ค. ์ด๋ malware triage๋ ๊ณ ๋๋ก obfuscated๋ ์ฑ์์ bulk string/config extraction์ ์ ์ฉํฉ๋๋ค.
์ฐธ๊ณ ์๋ฃ ๋ฐ ์ถ๊ฐ ์ฝ์๊ฑฐ๋ฆฌ
- DaliVM: Python Dalvik emulator for static string decryption
- https://maddiestone.github.io/AndroidAppRE/obfuscation.html
- BlackHat USA 2018: โUnpacking the Packed Unpacker: Reverse Engineering an Android Anti-Analysis Libraryโ [video]
- ์ด ํ ํฌ๋ Android ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ๋๋, ๋ด๊ฐ ๋ณธ ๊ฒ ์ค ๊ฐ์ฅ ๋ณต์กํ anti-analysis native libraries ์ค ํ๋๋ฅผ reverse engineeringํ๋ ๋ด์ฉ์ ๋ค๋ฃน๋๋ค. ์ฃผ๋ก native code์์์ obfuscation techniques๋ฅผ ๋ค๋ฃน๋๋ค.
- REcon 2019: โThe Path to the Payload: Android Editionโ [video]
- ์ด ํ ํฌ๋ Android botnet์ด ์์ ์ ๋์์ ์จ๊ธฐ๊ธฐ ์ํด Java code์์๋ง ์ฌ์ฉํ ์ผ๋ จ์ obfuscation techniques๋ฅผ ์ค๋ช ํฉ๋๋ค.
- Deobfuscating Android Apps with Androidmeda (๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ) โ mobile-hacker.com
- Androidmeda source code โ https://github.com/In3tinct/Androidmeda
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์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.


