ν°μ€ν 리 λ·°
κ°μ
μλλ‘μ΄λμ Broadcast Receiverλ "λ°©μ‘ μμ μ"λΌλ μλ―Έλ₯Ό κ°μ§κ³ μμΌλ©° μ ν리μΌμ΄μ μ 4λ κ΅¬μ± λ¨μμ€ νλλ‘ μΈν νΈ(Intent)λΌλ μΌμ’ μ λ©μμ§ κ°μ²΄λ₯Ό μ¬μ©νμ¬ μλλ‘μ΄λμ μ¬μ©μ κ°μ μνΈμμ©μ ν©λλ€.
μ¬κΈ°μ Broadcast Receiverλ μλλ‘μ΄λμμ μ‘΄μ¬νλ μ΄λ²€νΈλ€μ΄ λ°μνλ©΄ κ° κ°μ²΄λ€λ‘ μ μ ν λΈλ‘λμΊμ€νΈ λ©μμ§λ₯Ό 보λ΄κ² λλλ° μ΄λ μ νΈλ₯Ό λ°μ μ¬μ μ μ μν΄λμ μμ μ μνν΄μ£Όλ μν μ ν©λλ€.
μ¬μ μ μ μ ν΄λμ μμ μ΄λ??
λ°°ν°λ¦¬ μν μλ¦Ό(λ°°ν°λ¦¬ λΆμ‘±/μΆ©λΆ)
λ©μμ§ μ‘/μμ (λ©μμ§κ° μ μ‘/μ€ν¨λμμ΅λλ€)
μΈμ¦μ½λ μ λ ₯
μ¬μ§ μΊ‘μ²(μ¬μ§μ΄ μ μ₯λμμ΅λλ€)
λ§μ½ λ³λμ κΆνμ΄ μλ μ¦ μμ νμ§ μμ 리μλ² μ€μ μ ν΄λ κ²½μ° μ¬μ©μκ° λ°λ μ μμ μΈ μλ¦Όμ μ€κ°μ κ°λ‘μ±κ±°λ μΈκ°λ μλ§ μνμ΄ κ°λ₯ν νμλ₯Ό κ°μ λ‘ μ€νν μ μλλ‘ ν μ μμ΅λλ€.
ν΄λΉ μ·¨μ½μ μ νμΈνκΈ° μν΄ λμ λΆμλκ΅¬μΈ "Drozer(λλ‘μ )"λ₯Ό μ¬μ©νλλ‘ νκ² μ΅λλ€.
κ΅¬μΆ λ°©λ²μ νλ¨μ ν¬μ€ν μ°Έκ³
μ·¨μ½ν μ ν리μΌμ΄μ μΈ "μΈ μνμ΄ λ± ν¬"λ ν¨μ€μλλ₯Ό κ΅μ²΄νκΈ° μν΄μ κΈ°μ‘΄μ μ¬μ©λ λ‘κ·ΈμΈ μ 보λ₯Ό μ λ ₯ν΄μΌμ§λ§ λμ΄κ° μ μκ²λ λμ΄ μμ΅λλ€.
μ€μΉλ μ ν리μΌμ΄μ μ ν¨ν€ μ§λͺ μ νμΈνκΈ° μν΄μ μλ¨μ λͺ λ Ήμ΄μ λ³μΉμ μ‘°ν©νμ¬ μ½κ² νμΈνμ€ μ μμ΅λλ€.
μΌλ¨ 맀λνμ€νΈ μ€μ μ νμΈνμ¬ μ€μ μ΄ μ΄λ»κ² μ΄λ£¨μ΄μ Έ μλμ§ νμΈν΄ λ³΄κ² μ΅λλ€.
맀λνμ€νΈ μ€μ κ°μ νμΈν΄ λ³Έ κ²°κ³Ό exported="true" νμ±νλ‘ μ€μ λ λ΄μ©μ΄ νμΈλ©λλ€.
λλ‘μ λ₯Ό ν΅ν΄ λμ μ±μ λμ λΆμμ μνν΄λ³΄λ©΄ μΈλΆμ λ ΈμΆλμ΄ μλ 1κ°μ Brodcast Receiverκ° νμΈλ©λλ€.
μΈλΆμ λ ΈμΆμ΄ λμ΄μμΌλ©΄ λ λ²μ§Έλ‘λ μ€μ λ κΆνμ΄ μ‘΄μ¬νλμ§ νμΈν΄ μ£Όμλ©΄ λ©λλ€. "permission: null"μ ν΅ν΄ λ³λμ κΆνμ΄ μ‘΄μ¬νμ§ μμ λꡬλ νΈμΆμ΄ κ°λ₯ν κ²μΌλ‘ νλ¨λ©λλ€.
μΈλΆμμ κΆν μμ΄ νΈμΆμ΄ κ°λ₯ν 리μλ²λ₯Ό λλ‘μ λ₯Ό ν΅ν΄ νλ² μ€νν΄ λ³΄λλ‘ νκ² μ΅λλ€.
# nox_adb logcat
adbμ "logcat" λͺ λ Ήμ μ¬μ©νμ¬ λ‘κ·Έλ₯Ό νμΈν΄λ³Έ κ²°κ³Ό "phone number is null"μ΄λΌλ μλ΅ λ©μμ§λ₯Ό 보λμΌλ‘μ¨ λ°μν κ²μ νμΈνμ€ μ μμ΅λλ€.(λ©μμ§κ° νλ©΄μλ λνλμ§ μμ)
jadxλΌλ λμ»΄νμΌ λꡬλ₯Ό νμ©νμ¬ insecurebankv2μ λ‘μ§μ νλ² νμΈν΄λ³΄κ² μ΅λλ€.
getStringExtraμ "phonenumber"μ "newpass"λ₯Ό λ°κ³ μ λ ₯λ κ°μ΄ μ‘΄μ¬νμ§ μμ κ²½μ° "phone number is null"μ΄λΌλ λ©μμ§λ₯Ό μλ΅νλ κ²μ΄ νμΈλ©λλ€.
λν 37λ² λΌμΈμ String textMessage = "Updated Password from: " + decryptedPassword + " to: " + newpass; μ ν΅ν΄ ν¨μ€μλλ₯Ό λ³κ²½ μ κΈ°μ‘΄μ μ μ₯λ ν¨μ€μλλ₯Ό 볡ν νμ¬ μλ‘ μ λ ₯λ ν¨μ€μλμ ν¨κ» λνλλ€λ κ²μ μ μΆν μ μμ΅λλ€.
λλ‘μ λ₯Ό ν΅ν΄ μμ€μμ νμΈν 맀κ°λ³μμ μμ κ°μ λ λ € decryptedPasswordκ° λ‘κ·Έμμ νμΈλλμ§ λ³΄κ² μ΅λλ€.
guleumμ΄λΌλ μμ ν¨μ€μλλ₯Ό 보λμΌλ‘μ¨ λ‘μ§μ ꡬμ±λ μ΄μ ν¨μ€μλκΉμ§ 볡νΈνλμ΄ λ‘κ·Έμ λ ΈμΆλ κ²μ νμΈνμ€ μ μμ΅λλ€.
μ·¨μ½ν μ ν리μΌμ΄μ μΈ μλλ‘ κ³ νΈλ₯Ό λμμΌλ‘ ν λ² λ μ§νν΄ λ³΄κ² μ΅λλ€. μμ 보μλ κ²μ²λΌ μΈλΆμ λ ΈμΆλ 1κ°μ Broadcast Receiverκ° νμΈλ©λλ€.
λ§μ°¬κ°μ§λ‘ λ³λμ κΆνμ΄ μ‘΄μ¬νμ§ μκΈ° λλ¬Έμ λλ‘μ μ¬μ©νμ¬ ν΄λΉ μ±μ μ€νμν¬ μ μμ΅λλ€.
λ ΈμΆλ 리μλ²μΈ "ShowDataReceiver"κ° μ΄λ€ λ‘μ§μΈμ§ νμΈνκΈ° μν΄ jadxμ λ¬Έμμ΄ κ²μμ μ¬μ©νμ¬ νμΈν΄ λ³΄κ² μ΅λλ€.
μ μ₯λ μ¬μ©μμ IDμ Passwordκ° λ‘μ§ μ체μ λμ μμ μ λλ‘ μ·¨μ½νμ§λ§ μ ν¬λ 리μλ²λ₯Ό νΈμΆνμ¬ ν΄λΉ μ±μμ νμΈνκ² μ΅λλ€.
μΈ μνμ΄ λ± ν¬μ²λΌ μμ κ°μ μ λ ₯ν΄μΌ μ΄μ ν¨μ€μλκ° λμ€λ λ‘μ§μ΄ μ‘΄μ¬νμ§ μμΌλ κ·Έλ₯ νΈμΆν΄ 보λλ‘ νκ² μ΅λλ€.
μ±κ³΅μ μΌλ‘ μ κ·Ό κΆνμ΄ μ‘΄μ¬νμ§ μλ Broadcast Receiverλ₯Ό μΈλΆμμ νΈμΆνμ¬ λ ΈμΆλμ§ λ§μμΌ ν μ λ³΄κ° λνλ κ²μ νμΈν μ μμ΅λλ€.
λμλ°©μ
맀λνμ€νΈ νμΌμ μμ± μ€ <receiver> νκ·Έμμ λΆνμν κΈ°λ₯μ exported="false" λΉνμ±ννμ¬ μΈλΆμ λ ΈμΆλμ§ μλλ‘ μ€μ ν΄μΌ λλ©° λ§μ½ νμν κΈ°λ₯μΌ κ²½μ° λ³λμ "Permission"μμ±μ ν΅ν΄ μ κ·Όμ μ νν΄μΌ λλ€.
/* Androidmanifest.xml */
<receiver android:name=".MyBroadcastReceiver"
android:permission="android.permission.SEND_SMS">
<intent-filter>
<action android:name="android.intent.action.AIRPLANE_MODE"/>
<intent-filter>
</receiver>
μμ κ°μ΄ μμ μ±μ 맀λνμ€νΈμ μ μΈλ μμ μκ° μ‘΄μ¬ν κ²½μ° λ°μ μ±μ΄ κΆνμ μμ²μ ν΄μΌλ§ μμ μμκ² Broadcastλ₯Ό μ μ‘ν μ μκ² λ©λλ€.
'MOBILE' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Android] Data Storage(Plain/Encryption) μ·¨μ½μ (0) | 2021.02.13 |
---|---|
[Android] Content Provider μ·¨μ½μ (2) | 2021.02.10 |
[Android] Activity Component μ·¨μ½μ (0) | 2021.02.08 |
[Android] Rooting νμ§ μ°ν(Objection) (0) | 2021.02.07 |
[Android] SSL Pinning μ°ν (0) | 2021.02.06 |