티스토리 뷰
Runtime Manipulation
– 앱이 실행될 때 흐름 조작 및 정보 유출 등이 가능한 취약점
(ex. 탈옥 탐지 우회 => 런타임 조작 취약점으로 볼 수 있음)
– 런타임 조작을 사용하여
-> 인스턴스 변수를 수정하고,
-> 로컬 로그인 검사를 우회하고,
-> 무차별 강제 핀 코드 사용 가능
1. 주소값+반환값 확인 or 클래스 검색
2. 응답 값 변조
DVIA 앱> Runtime Manipulation > Login Method 1
데이터 미 입력 후 로그인 시도 시 에러 메시지 확인

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

-> 어느 경우든 로그인 시 입력 값을 검증하기 때문에, 키워드는 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 |
- Total
- Today
- Yesterday
- IoT Analysis
- Android
- Touch bypass
- Runtime Manipulation
- Objection
- SNOMED CT Mapping
- UserDefaults
- 탈옥 우회
- Webkit Caching
- Jailbreak iOS
- Data Leakage
- SNOMED CT
- deep learuning
- dvia-v2
- YapDatabase
- 케이쉴드주니어
- 케쉴주
- SNOMED
- Keystroke logging
- K-Shield Jr 9기 단기
- Local Data Storage
- IoTGoat
- LAContext
- Face ID bypass
- Android 7.0
- core data
- iOS 15 jailbreak
- InsecureShop
- Pasteboard
- Couchbase Lite
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |