티스토리 뷰

Runtime Manipulation

– 앱이 실행될 때 흐름 조작 및 정보 유출 등이 가능한 취약점

    (ex. 탈옥 탐지 우회 => 런타임 조작 취약점으로 볼 수 있음)

– 런타임 조작을 사용하여

    -> 인스턴스 변수 수정하고,

    -> 로컬 로그인 검사 우회하고,

    -> 무차별 강제 핀 코드 사용 가능

 

1. 주소값+반환값 확인 or 클래스 검색

2. 응답 값 변조

 

 

 

DVIA 앱> Runtime Manipulation > Login Method 1

데이터 미 입력 후 로그인 시도 시 에러 메시지 확인

Error One or more input fields is empty

 

입력한 계정정보가 맞지 않는 경우 에러 메시지

Oops Incorrect Username or Password

-> 어느 경우든 로그인 시 입력 값을 검증하기 때문에, 키워드는 Login이 될 수 있음

 

 

 

 

DVIA-v2에 Objection을 로드함

objection --gadget DVIA-v2 explore

 

 

관련될 수 있는 클래스를 검색함. 

현재 Swift 함수 이름을 알고 있으므로 login으로 검색

ios hooking search classes login

 

 

검색 결과, 48개 클래스를 반환함. 

그 중에 LoginValidate 클래스를 Objection에서 확인함

ios hooking watch class LoginValidate

해당 클래스 내에 두 가지 메소드가 있음을 알 수 있음

(agent) Watching method: + isLoginValidated
(agent) Watching method: + validateCode:viewController:

 

 

Login Method 1 버튼을 다시 누르면,

아래와 같이 출력됨

-> 클래스의 Login Method 1 메소드가 호출된다는 것을 알 수 있음.

 

 

 

반환되는 값을 확인함

ios hooking watch method "+[LoginValidate isLoginValidated]" --dump-args --dump-return

 

버튼을 다시 누르면 다음 출력이 표시됨

(agent) [p2itp5paimj] Called: +[LoginValidate isLoginValidated] 0 arguments(Kind: class) (Super: NSObject)
(agent) [p2itp5paimj] Return Value: 0x0

=> 따라서 로그인에 실패 시, 해당 메소드의 값은 0임.

     연결하고 반환 값을 1로 설정하겠음.

     (0x1로 변경 시도 시 실패했지만, 0x1 대신 true를 사용하면 명령이 작동함.)

 

 

true로 변경하는 명령은 다음과 같음.

ios hooking set return_value "+[LoginValidate isLoginValidated]" true

 

 

이제 버튼을 다시 클릭하면 Login Method 1로그인 화면을 건너뛰었다는 메시지가 표시됨

 

 

후킹 및 변경된 값을 보여주는 출력을 확인함.

(agent) [p2itp5paimj] Called: +[LoginValidate isLoginValidated] 0 arguments(Kind: class) (Super: NSObject)
(agent) [p2itp5paimj] Return Value: 0x0
(agent) [3so3hzb0hbz] +[LoginValidate isLoginValidated] Return value was: 0x0, overriding to 0x1

 

참고 출처

https://philkeeble.com/ios/reverse-engineering/iOS-Runtime-Manipulation/

'보안 > App' 카테고리의 다른 글

[DVIA-v2] Bypassing Biometrics  (0) 2023.07.05
[DVIA-v2] Side Channel Data Leakage  (0) 2023.07.04
[Android] Open redirect vulnerability Using Deeplink  (2) 2023.06.29
[DVIA-v2] Local Data Storage  (0) 2023.06.26
[DVIA-v2] Jailbreak Test 1,2  (0) 2023.06.12