iOS

DVIA-v2 탈옥 탐지 우회

HW4N 2024. 2. 12. 20:54
반응형

Jailbrek Test 1

IPA 추출 후 바이너리 파일을 Ghidra에 Import 해준다.

Analyze 'Yes'

DVIA-v2 의 Test 1 탈옥 탐지 버튼 클릭 시 'Device is Jailbroken' 문자열이 나오는 것을 확인할 수 있다.

'Search > For Strings...' 메뉴를 통해 문자열 검색을 한다.

해당 문자열을 더블클릭하여 어셈블리로 이동한다.

'Window > Function Graph' 메뉴로 이동하여 그래프로 확인 시 'if / else' 를 확인할 수 있다.

Frida 후킹

시작 주소(Base Address) 반환

var realBase = Module.findBaseAddress('DVIA-v2');
console.log('시작 주소 : ' + realBase);

후킹을 위해 시작 주소(Base Address)를 구해줘야 한다.

Why??

ASLR 기법이 적용되어 있으면 프로세스의 시작 주소(Base Address)가 매번 무작위로 변경되기 때문에 시작 주소(Base Address)와 Ghidra에 나오는 상대 주소(offset) 값을 더해줘야 한다.

시작 주소(Base Address) + 상대 주소(offset) = 후킹할 위치의 주소 값

시작 주소(Base Address) + 상대 주소(Offset)

var realBase = Module.findBaseAddress('DVIA-v2');
console.log('시작 주소 : ' + realBase);

var offset = '0x1cbdd0';
console.log('상대 주소 : ' + offset);

var hookAddress = realBase.add(offset);
console.log('후킹 주소 : ' + hookAddress);

후킹 주소 레지스터 값 출력

var realBase = Module.findBaseAddress('DVIA-v2');
console.log('시작 주소 : ' + realBase);

var offset = '0x1cbdd0';
console.log('상대 주소 : ' + offset);

var hookAddress = realBase.add(offset);
console.log('후킹 주소 : ' + hookAddress);

Interceptor.attach(hookAddress, {
    onEnter: function(args) {
        console.log('후킹 주소 레지스터 값 : ');
        console.log(JSON.stringify(this.context));
    }
});

'Jailbreak Test 1' 클릭 시 레지스터의 값이 출력되는 것을 확인할 수 있다.

Ghidra 확인 시 w0 레지스터의 0번 비트가 0이면 LAB_1001cc17c 주소로 분기하는 것을 확인할 수 있다.

Frida로 레지스터의 값 호출 시 x0 값이 0x1인것을 확인할 수 있다.
해당 값을 0x0으로 변조하면 탈옥 탐지를 우회할 수 있다.

후킹 주소 레지스터 값 변조

var realBase = Module.findBaseAddress('DVIA-v2');
console.log('시작 주소 : ' + realBase);

var offset = '0x1cbdd0';
console.log('상대 주소 : ' + offset);

var hookAddress = realBase.add(offset);
console.log('후킹 주소 : ' + hookAddress);

Interceptor.attach(hookAddress, {
    onEnter: function(args) {
        console.log('후킹 주소 레지스터 값 : ');
        console.log(JSON.stringify(this.context));
        this.context.x0 = 0x0;
        console.log('\n변조 결과 : ');
        console.log(JSON.stringify(this.context));
    }
});

변조 결과 탈옥 탐지를 우회할 수 있었다.

반응형