크래시 방식 탈옥 탐지 로직 분석 방법 문의 드립니다.

홈 > 커뮤니티 > 질문 게시판
질문 게시판

크래시 방식 탈옥 탐지 로직 분석 방법 문의 드립니다.

1 holiam 7 1398
개인 버그바운티 공부 차 타사 금융 앱을 대상으로 탐지 우회를 공부하고 있습니다.

안드로이드 / iOS 분석 중인데 안드로이드의 경우

자체 탐지 크래시 로직 / 솔루션 탈옥 탐지 로직 별도로 구성되어 둘다 우회 완료하였고

iOS의 경우도 동일하게 자체 탐지 및 크래시 로직이 존재하며 정적으로 앱 바이너리 복호화는 완료 하였으나 이후 진전이 되지 않습니다.

lldb-10으로 앱 타겟으로 잡고 시작 할 경우 Bus error : 10이 확인되며 정상적으로 디버깅이 정상적으로 되지 않습니다.

해당 탐지 로직에 대해 분석 접근 방법을 알 수 있을까요?

frida로 실행하였을 경우 크래시 로그는 아래와 같습니다.

최초 실행 바이너리 로드되느 주소값은 0x100000000 입니다. 

***
Incident Identifier: A62AFE55-5D36-425B-80CE-1AD6ABEF0E9D
CrashReporter Key:  d28ce08974bbfa99d975016d0663beacd0487ae8
Hardware Model:      iPhone13,2
Process:            ~~
Path:                /private/var/containers/Bundle/Application/~~
Identifier:        ~~
Version:            9 (1.27.00)
AppStoreTools:      14E221
AppVariant:          1:iPhone13,2:14
Code Type:          ARM-64 (Native)
Role:                Foreground
Parent Process:      launchd [1]
Coalition:          ~~


Date/Time:          2023-08-16 16:47:42.8631 +0900
Launch Time:        2023-08-16 16:47:42.4507 +0900
OS Version:          iPhone OS 14.2 (18B92)
Release Type:        User
Baseband Version:    1.14.05
Report Version:      104

Exception Type:  EXC_BAD_ACCESS (SIGBUS)
Exception Subtype: KERN_PROTECTION_FAILURE at 0x00000002053a6a98
VM Region Info: 0x2053a6a98 is in 0x2053a3c08-0x2053a91b0;  bytes after start: 11920  bytes before end: 10007
      REGION TYPE                START - END      [ VSIZE] PRT/MAX SHRMOD  REGION DETAIL
      __DATA                  2053992e8-2053a3c08 [  42K] rw-/rw- SM=COW  .../WebKitLegacy
--->  unused shlib __DATA      2053a3c08-2053a91b0 [  21K] rw-/rw- SM=COW  ... this process
      __DATA                  2053a91b0-2053ad154 [  16K] rw-/rw- SM=COW  ...work/ClassKit

Termination Signal: Bus error: 10
Termination Reason: Namespace SIGNAL, Code 0xa
Terminating Process: exc handler [6490]
Triggered by Thread:  0

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0  ???                                0x00000002053a6a98 0 + 8677649048
1  libdyld.dylib                      0x00000001ae9556c0 start + 4
7 Comments
3 하리하리 2023.08.17 00:46  
다른앱은 lldb디버깅이 되나요?
정확하게 기억은 안나는데 asm으로 ptrace 로직이 구현되어 있거나.. ptrace, sysctl등 안티디버깅 검색 해보세요.
1 holiam 2023.08.17 12:22  
네 감사합니다. ptrace 문자열은 별도로 없어서 sysctl쪽 확인해 보겠습니다.
3 하리하리 2023.08.18 00:47  
문자열이요?ㅎㅎ
SVC 찾아보세요.^^
https://gist.github.com/joncardasis/fab885f9ab241524800204126db1433d
__attribute__((constructor)) static void prevent_debugger() {
    asm volatile (
        "mov x0, #26\n" // ptrace syscall (26 in XNU)
        "mov x1, #31\n" // PT_DENY_ATTACH (0x1f) - first arg
        "mov x2, #0\n"
        "mov x3, #0\n"
        "mov x16, #0\n"
        "svc #128\n"    // make syscall
    );
}
이런식으로 코딩되어 있습니다.
1 holiam 2023.08.18 14:18  
네 문자열은 ptrace dlsym으로 호출하는거 확인하려고 했던거고
syscall쪽 확인하고 있습니다. 감사합니다.
4 코쓱모쓱 2023.08.17 17:06  
안드로이드 템퍼링 탐지 우회 관련 질문드려도될까요.. 프리다 스크립트 실행 후 backtrace 가 나오는데 어디서부터 어떻게 확인할지 모르겠습니다.
1 holiam 2023.08.18 14:28  
해당 내용 따로 게시글로 상세히 적어주시면 확인후 답변드리겠습니다. Dnspy 쓰시는거 보면 유니티 게임 분석하시는거 같네용.
4 코쓱모쓱 2023.08.21 14:20  
감사합니다! 유니티 게임 맞습니다 magisk denylist 하니까 루팅탐지 우회는 됐는데 중요한 Frida가 안되네요
게시물 올리겠습니다.