ν°μ€ν 리 λ·°
κ°μ
Jailbreakλ “iOS νμ₯”μ΄λΌλ μλ―Έλ₯Ό κ°μ§λ©° Androidμμλ “λ£¨ν ”μ΄λΌκ³ νννκ³ μμ. μ΄λ μλλ°μ€ μ νμ νμ΄ ν νμ¬μμ μ¬μ©νλ μλͺ λμ§ μμ μ½λλ₯Ό μ€νν μμκ² νλ κ³Όμ μΌλ‘ μΌλ° μ¬μ©μμμ λ£¨νΈ μ¬μ©μλ‘ κΆν μμΉλμ΄ μΌλ° μ¬μ©μ κΆνμμ μ κ·Όμ΄ λΆκ°λ₯ν μμμ μ κ·Όν μ μκ² λλ―λ‘ λλΆλΆμ μλΉμ€ μ€μΈ μ±μμλ νμ₯λ λλ°μ΄μ€μμ μ±μ μ΄μ©ν μ μλλ‘ μ ν λκ³ μμ΅λλ€.
μ¬κΈ°μ λ§νλ μλλ°μ€λ "컀λ λ 벨μμμ iOS μ κ·Όμ μ΄ κΈ°μ "λ‘ μ± μμ μ μμ€ν κ³Ό λ°μ΄ν°λ₯Ό 보νΈνκΈ°λ νλ©° ν μ±μ λν λ°μ΄ν° λ± νμΌμ μ κ·Όνλ κ²μ λ§μμ£Όμ§λ§ νμ₯λ λλ°μ΄μ€μ κ²½μ° μ κ·Όμ΄ κ°λ₯ν΄ μ§κΈ° λλ¬Έμ 보μμ λ¬Έμ κ° λ°μν μ μμ΅λλ€.
νμ¬ νμ₯λ λ¨λ§μ λμμΌλ‘ νΉμ μ΄λ²€νΈ νμλ₯Ό μλνλ©΄ "Device is Jailbroken"μ΄λΌλ 문ꡬμ ν¨κ» νμ₯μ΄ νμ§λλ€λ 문ꡬλ₯Ό μΆλ ₯νκ³ μμ΅λλ€.
μ΄λ² μκ°μλ Fridaλꡬλ₯Ό μ΄μ©ν΄ μ΄λ€ λ°©μμΌλ‘ νμ₯ νμ§λ₯Ό μ°νν μ μλμ§ μμ보λ μκ°μ κ°μ Έλ³΄κ² μ΅λλ€.
Fridaλ₯Ό ν΅ν΄ νμ₯μ μ°ννλ λ°©λ²μ ν¬κ² μλμ κ°μ΅λλ€.
Fridaλ₯Ό ν΅ν΄ iOS νλ‘μΈμ€μ μ°κ²° -> Class λ° λ©μλ μ 보 λ€ν -> μ 보λ₯Ό μ΅λ ν μ±μ λ°νμ μ‘°μ -> μ°ν
첫 λ²μ§Έ Fridaλ₯Ό μμ μ λλ°μ΄μ€μ μ°κ²°νκΈ° μν νκ²½ ꡬμΆμ νλ¨μ ν¬μ€ν μ μ°Έκ³ νμλ©΄ λ©λλ€.
μμ μ CMD λλ linux ν°λ―Έλμμ frida-ps -Uaλ₯Ό μ λ ₯νμ¬ μ§λ¨νκ³ μ νλ μ±μ Bundle Nameμ νμΈν©λλ€.
* 리μ€νΈκ° λνλμ§ μμΌλ©΄ usr/sbin λλ ν 리μμ ./Frida-server &(λ°±κ·ΈλΌμ΄λ) λͺ λ Ήμ΄ μ€ν ν μ¬μλ
/* File Name is Jacilbreak_Test2.js */
if(Objc.available){
for(var classname in Objc.classes)
console.log(classname)
DVIA-v2 μ±μ μ‘΄μ¬νλ ν΄λμ€ λͺ μ νμΈνκΈ° μν΄ μλ¨μ μ½λλ₯Ό μμ±νμ¬ μ°Ύκ³ μ νλ ν΄λμ€ λͺ μ μ½μ νλ©΄μ λμ°λλ‘ ν΄μΌ λ©λλ€.
μμ±ν Jailbreak_Test 2.js νμΌμ κ²½λ‘λ νΈνκ² λλκ·Έ μ€ λλ‘ν΄μ£Όκ³ "Jail"κ³Ό κ΄λ ¨λ ν΄λμ€κ° μ‘΄μ¬νλμ§ find λͺ λ Ήμ μ¬μ©νμκ±°λ. txt νμΌλ‘ μΆλ ₯νμ¬ μ°Ύμ μ£Όμλ©΄ λ©λλ€.
-U: usb νκ²½(λλ°μ΄μ€ <-> λ‘컬 PC)
-l : μμ±ν μ€ν¬λ¦½νΈ λ‘λ
/* File Name is Jailbreak_Test2.js */
if(Objc.available){
var classname = "JailbreakDetection"
var methods = Objc.classes[classname].$ownMethods
console.log(methods)
}
"JailbreakDetction"μ΄λΌλ ν΄λμ€λͺ μ νμΈνμΌλ ν΄λμ€μ μ¬μ©λλ "λ©μλ" λͺ μ νμΈ ν΄μΌ λ©λλ€. ν΄λμ€ μ 보λ Objc.classes[classname] μ λ΄κΈ°κ³ $ownMethods μμ±μ ν΅ν΄ λ©μλ μ λ³΄κ° console λ‘κ·Έμ μ°νκ² λ©λλ€.
+ isJailbroken μ΄λ¦μ κ°μ§ "λ©μλ"λ₯Ό μ°ΎμμΌλ μ΄μ νμ₯μ νμ§ ν κ²½μ° λ°νλλ κ°μ μ°Ύμ μ‘°μ ν΄μΌ λ©λλ€.
+ : ν΄λμ€μ λν λ©μλ
- : μΈμ€ν΄μ€μ λν λ©μλ
/* File Name is Jailbreak_Test2.js */
if(Objc.available){
var classname = "JailbreakDetection"
var methodname = "isJailbroken"
var hook = Objc.classes[classname][mothodname]
Interceptor.attach(hook.implementation,{
onLeave:function(retval){
console.log("[*]Class Name: "+ classname)
console.log("[*]Method Name: "+ methodname)
console.log("[*]Type of Return Value: "+hook.returnType)
console.log("[*]Return Value: "+retval)
}
})
}
μ¬μ μ νμΈν "ν΄λμ€"μ "λ©μλ" μ 보λ₯Ό μ λ ₯ν΄μ£Όκ³ μ€κ°μ μΈν°μ ν° νμ¬ λ°ν κ°μ νμΈν μ μμ΅λλ€.
Interceptorμ hookμλ ν΄λμ€μ λ©μλ μ λ³΄κ° μ μ₯λμ΄ μκ³ μ΄λ₯Ό implementation νμ¬ λ©μλλ₯Ό μ€ννκ² λ©λλ€.
λν λ©μλμ λν λ°ν κ°(retval)μ νμΈνκΈ° μν΄μ "onLeave"λ₯Ό μ¬μ©ν΄μΌ λ©λλ€.
attach λ¬Έκ΅¬κ° λνλλ©΄ μ±μ μ€ννμ¬ Jailbrea Test 2λ₯Ό ν΄λ¦νμ¬ μ°Ύκ³ μ νλ λ°ν κ°μ νμΈνλ©΄ λ©λλ€. μΆλ ₯λ κ²°κ³Όλ₯Ό μμ½νμλ©΄ isJailbrokenμ΄λΌλ λ©μλλ boolean(True, False) νμ μ κ°μ§κ³ μμΌλ©° νμ₯ νμ§ μ "0x1"κ°μ λ°νν©λλ€.
/* File Name is Jailbreak_Test2.js */
if(Objc.available){
var classname = "JailbreakDetection"
var methodname = "isJailbroken"
var hook = Objc.classes[classname][mothodname]
Interceptor.attach(hook.implementation,{
onLeave:function(retval){
console.log("[*]Class Name: "+ classname)
console.log("[*]Method Name: "+ methodname)
console.log("[*]Type of Return Value: "+hook.returnType)
console.log("[*]Return Value: "+retval)
var new_retval = ptr("0x0")
retval.replace(new_retval)
console.log("[*]New Return Value: "+retval)
}
})
}
λ°ν κ°(retval)μ΄ -> 0x1 μ¦ "1"μ κ°μ κ°μ§κ³ μμΌλ μ΄λ₯Ό ptrλ₯Ό μ¬μ©ν΄ net_retval λ³μμ 0x0 κ°μ μμ± ν κΈ°μ‘΄μ retvla κ°κ³Ό μΉνν΄μ£Όλλ‘ νκ² μ΅λλ€.
λ°ν κ°μ μμ νλ μ½λλ₯Ό μΆκ° ν μ±μ λ€μ μ€νν΄ λ³΄μλ©΄ isJailbrokenμ λ°ν κ°μ΄ μ±κ³΅μ μΌλ‘ 0x0λ‘ μΉνλ κ²μ νμΈν μ μμ΅λλ€.
λ°ν κ° μΉνμ ν΅ν΄ νμ₯ νμ§λ₯Ό μ°ννκ² λ©λλ€.
Frida μ°Έκ³ μ© μ½λ
github.com/interference-security/frida-scripts/blob/master/iOS/README.md
'MOBILE' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[iOS] μμ λ IPAνμΌ μλͺ (0) | 2021.01.30 |
---|---|
[iOS] Jailbreak νμ§ μ°ν(Ghidra) (0) | 2021.01.25 |
[iOS] Keychain Dumper (0) | 2021.01.20 |
[iOS] νμ₯ νκ²½μμ iPA μ€μΉ (0) | 2020.12.23 |
ν리λ€(Frida) Memory Dump (0) | 2020.12.22 |