본문으로 바로가기

가. 런타임 조작(Runtime Manipulation) 이란?

- 런타임 조작이란 디버깅 툴을 이용해 앱이 실행 중인 상태에서 흐름을 조작하여 보안 기능을 우회하는 것을 말한다.
- 인스턴스 변수를 수정하여 로그인(인증) 검사, 탈옥 탐지 기능 등을 우회할 수 있다.

- 인증 값이 맞을 때까지 무차별 대입 공격(brute-force attack)을 수행하는 것도 가능하다.

 

나. 대응방법

- 아래의 글을 참고하여 디버깅을 이용한 런타임 조작이 불가능하도록 디버깅 방지 기능을 적용한다.

[Mobile App 취약점 진단/iOS App 진단] - [iOS App 진단] 12강 - 탈옥 탐지 우회(이론 및 대응방법)

 

[iOS App 진단] 12강 - 탈옥 탐지 우회(이론 및 대응방법)

가. 탈옥(Jailbreak) 이란? iOS의 샌드박스 제한을 풀어 서명되지 않은 코드를 실행할 수 있게 하는 것을 말함. 나. 탈옥된 기기에서 앱 실행을 차단해야하는 이유 탈옥된 기기에서의 사용자는 최고

hagsig.tistory.com

 

다. DVIA-v2 앱을 통한 실습

1. 분석 대상 앱 실행

- 실습을 위해 DVIA-v2 앱을 실행한다.

 

※ DVIA-v2 어플이 설치되어있지 않은 사람은 아래의 글을 참고하여 앱을 설치하길 바란다.

2022.07.01 - [Mobile App 취약점 진단/iOS App 진단] - [iOS App 진단] 04강 - 진단 대상 설치

 

[iOS App 진단] 04강 - 진단 대상 설치

iOS 앱 진단을 위해 설치 파일을 요청하면, 대개 아래 3가지 방법 중에 하나의 방법으로 전달해준다. 1. 앱 스토어를 통해 설치 이미 앱 개발이 완료되어 앱스토어에 등록되어 있을 경우, 앱스토어

hagsig.tistory.com

 

- 메인메뉴 좌측 상단 메뉴 클릭  'Runtime Manipulation' 클릭  'START CHALLENGE' 클릭

- 아이디/패스워드 입력  → 'Login Method 2' 클릭

- 입력한 계정정보가 올바르지 않다며 "Incorrect Username or Password" 메시지가 출력됨

- 본글에서는 런타임 조작 공격을 통해 계정정보를 모르더라도 로그인할 수 있도록 인증 기능을 우회해 볼 것이다.

 

2. 바이너리 파일 추출

- 바이너리 파일을 변조하기 위해서는 앱내부에 존재하는 바이너리 파일을 추출해내야 한다.

- 3uTools Files에서 Applications(User) 클릭 또는 탐색창에 /var/Containers/Bundle/Application 입력한다.

- 분석 대상 앱 이름과 동일한 폴더를 더블클릭한다.

 

- Size 클릭하여 파일을 크기순으로 정렬한다.

- 폴더를 제외하고 크기가 제일 큰 파일이 바이너리 파일이다.

 

-  바이너리 파일을 우클릭한 뒤 Export 버튼을 눌러 PC로 추출한다.

 

3. 바이너리 파일 분석

- 아래의 과정을 따라하여 추출한 바이너리 파일을 기드라(Ghidra)를 통해 분석한다.

※ 기드라가 설치되어 있지 않은 사람은 아래의 글을 참고하여 설치하길 바란다.

2022.06.28 - [Mobile App 취약점 진단/iOS App 진단] - [iOS App 진단] 03강 - 진단 도구 설치

 

[iOS App 진단] 03강 - 진단 도구 설치

1. Cydia(시디아) - 탈옥을 성공하면 자동으로 설치되며, 앱 스토어에서 지원하지 않는 앱을 다운로드할 수 있다. - iOS가 지원하지 못하는 기능을 Cydia를 이용하여 설치할 수 있는데 이를 Tweak(트윅)

hagsig.tistory.com

 

- File 클릭 → New Project 클릭 → Non-Shared Project 선택 → Next 클릭

 

- Project Directory 경로지정 → Project Name 입력 → Finish 클릭 → File 클릭 → Import File 클릭

* Project Directory : 프로젝트 저장 경로.

* Project Name : 프로젝트 이름.

 

- 위에서 추출한 바이너리 파일 선택 → Select File To Import 버튼 클릭

 

- 설정내용을 아무것도 건드리지 않고 OK 버튼 클릭

 

- 추가된 바이너리 파일(DVIA-v2)을 더블클릭 → Yes 버튼 클릭

 

- 설정내용을 아무것도 건드리지 않고 Analyze 버튼 클릭 → 분석이 종료될 때까지 대기(우측 하단에 진행률이 표시됨).

※ 분석이 종료되면 알림창이 발생한다. 분석이 완료되지 않으면 결과가 달라질 수 있으므로 완료될 때까지 기다린다.

 

4. 소스코드 내 계정정보 노출 확인

- Search 클릭 → For Strings 클릭

 

- 관리자 계정명으로 추측되는 문구를 Filter에 입력 → 검색결과 중에서 분석하고자 하는 행(아이템)을 더블클릭

* admin, administrator, root, manager, 제조사 명, 회사 명 등과 같은 계정이 존재하는지 검색한다.

 

- 검색창을 최소화하거나 닫으면 메인창의 커서가 위에서 더블클릭한 문구가 위치한 곳으로 이동되어 있다.

- 관리자 아이디로 추정되는 "admin13412"과 패스워드로 추측되는 "S@g@rm@7h@8848"이 평문으로 노출되어 있다.

※ 소스코드내에 계정정보를 평문으로 하드코딩해 놓으면 이런 식으로 노출된다.

* 평문 노출된 아이디 : admin13412

* 평문 노출된 패스워드 : S@g@rm@7h@8848

 

- 위에서 확인한 계정정보로 로그인을 시도하니 인증이 성공하였다.