[iOS App 진단] 11강 - 애플리케이션 패칭(앱 위·변조) 실습 1

2023. 6. 22. 16:14·Mobile App 취약점 진단 · 모의해킹/iOS App 취약점 진단 · 모의해킹
728x90
반응형

가. 애플리케이션 패칭이란?

- 애플리케이션 패칭(Application Patching)은 애플리케이션의 바이너리 파일이 영구적으로 변경되는 것을 말하며 애플리케이션 위·변조라고도 부른다.

- 바이너리 파일에는 앱 실행 및 동작에 필요한 모든 데이터들이 들어가 있으므로 바이너리 파일을 수정하여 로그인 메소드, 탈옥 탐지 메소드 등을 우회할 수 있다.

* 바이너리(Binary) 파일이란 실행 가능한 형식의 데이터 파일을 말하며, 쉽게 윈도우즈의 exe 파일이라 생각하면 된다.

 

나. 대응방안

- 애플리케이션 바이너리 파일의 해시 값을 검증(코드 무결성 검증)하여 앱이 위·변조되었는지 체크한다.

출처 : https://www.kisa.or.kr/2060204/form?postSeq=3&lang_type=KO#fnPostAttachDownload

 

다. 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

 

- 메인메뉴 좌측 상단 메뉴 클릭 → Application Patching 클릭 → START CHALLENGE 클릭 → Username(ID)과 Password 입력 →  Login Method 1 클릭.

- 입력한 아이디와 패스워드가 맞지 않는다며 로그인이 실패했다는 오류 메시지가 출력된다.

- 본글에서는 아이디, 패스워드를 모르더라도 로그인을 할 수 있게 바이너리 파일을 변조할 것이다(계정인증 우회).

 

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 버튼 클릭 → 분석이 종료될 때까지 대기(우측 하단에 진행률이 표시됨).

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

 

- Search 클릭 → For Strings 클릭

 

- Login Method1 클릭 시 발생했던 오류문구를 Filter에 입력 → 검색결과 중에서 분석하고자 하는 행(아이템)을 더블클릭

 

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

- 음영표시된 칸의 우측 "__T07DVIA_v240ApplicationPathin..."을 더블클릭한다.

※ 실무에서는 하나씩 들어가 로직을 파악하여 어느 곳이 맞는 포인트인지 찾아야 한다.

 

- 더블클릭 시 음영표시된 칸을 선택 → Window 클릭 → Function Graph 클릭

 

- 노란색으로 표시되면서 확대/축소를 반복하는 곳을 마우스 휠을 이용하여 확대한다.

- 내용을 분석해 보면 w8의 값이 0x0일 때와 아닐 때의 결과가 달라진다는 것을 알 수 있다.

* 1001ac270 : 오류 문구가 있는 걸로 봐서 로그인이 실패했을 때 실행되는 로직인걸 알 수 있음.

* 1001ac1bc : 성공 문구가 있는 걸로 봐서 로그인이 성공했을 때 실행되는 로직인걸 알 수 있음.

* tbz(Test bit and Branch if Zero) : 테스트 비트의 값을 0과 비교하여 결과에 따라 다른 오프셋의 레이블로 분기함.

 

5. 바이너리 파일 변조

- 현재 로직을 분석해 보면 w8이 0x0일 때 LAB_1001ac270 오프셋으로 이동되도록 되어 있다.

- 1001ac270 오프셋은 로그인 실패 로직이므로 앱 실행 시 w8 값으로 0x0이 입력된다는 것을 알 수 있다.

- 이경우 w8의 값을 0x0 이외의 값으로 변조하거나, w8의 값이 0x0일 때 인증이 실패했을 때 연결되는 오프셋(1001ac270)이 아닌 성공했을 때의 오프셋(1001ac1bc)으로 변경하여 주는 방법 등이 있을 것 같다.

- 본글에서는 후자의 방법을 통해 인증을 우회하는 방법을 설명하도록 하겠다.

 

- 분기점이 되는 곳의 오프셋(offset)을 알기 위해 아래와 같이 적색박스로 되어 있는 곳을 클릭한다(더블클릭 X).

 

- Function Graph 창을 최소화하거나 닫으면 메인창의 커서가 위에서 클릭한 분기점의 위치로 변경되어 있을 것이다.

- 음영표시된 칸을 우클릭 → Patch Instruction 클릭

 

- 오프셋을 성공로직이 있는 오프셋(1001ac1bc)으로 변경한 뒤 엔터를 누른다.

* 기존(AS-IS) : 0x1001ac270

* 변경(TO-BE) : 0x1001ac1bc

 

- File 클릭 → Export Program 클릭

 

- Format을 Binary로 변경 → OK 버튼 클릭

 

- 저장된 바이너리파일의 확장자를 삭제 → 3uTools를 통해 앱의 바이너리 파일 교체(덮어쓰기)

* 기존(AS-IS) : DVIA-v2.bin

* 변경(TO-BE) : DVIA-v2

 

-앱을 재실행 한 뒤 다시 시도해 보면 오류문구대신 Success가 출력되는 것을 볼 수 있다.

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'Mobile App 취약점 진단 · 모의해킹 > iOS App 취약점 진단 · 모의해킹' 카테고리의 다른 글

[iOS App 진단] 11강 - 애플리케이션 패칭(앱 위·변조) 실습 3  (0) 2023.09.10
[iOS App 진단] 11강 - 어플리케이션 패칭(앱 위·변조) 실습 2  (0) 2023.09.10
페어플레이 DRM 복호화 방법 - Clutch  (0) 2023.02.26
페어플레이 DRM 복호화 방법 - Frida-iOS-Dump  (0) 2023.02.26
페어플레이 DRM 복호화 방법 - CRACKERXI+  (0) 2023.02.26
'Mobile App 취약점 진단 · 모의해킹/iOS App 취약점 진단 · 모의해킹' 카테고리의 다른 글
  • [iOS App 진단] 11강 - 애플리케이션 패칭(앱 위·변조) 실습 3
  • [iOS App 진단] 11강 - 어플리케이션 패칭(앱 위·변조) 실습 2
  • 페어플레이 DRM 복호화 방법 - Clutch
  • 페어플레이 DRM 복호화 방법 - Frida-iOS-Dump
학식(hagsig)
학식(hagsig)
정보보안을 배우고자 하는 모든 이들의 식당입니다. 모의해킹, 취약점 진단, 서버, 네트워크, 프로그래밍 등등 다양한 분야를 배우실 수 있습니다.
  • 학식(hagsig)
    학식 - 정보보안 전문 블로그
    학식(hagsig)
  • 전체
    오늘
    어제
  • 공지사항

    • 게시된 정보를 악용하여 발생하는 모든 책임은 사용자에게 있⋯
    • 무단 전재 및 재배포를 금지합니다.
    • 분류 전체보기 (299)
      • 교육정보 (15)
        • IT국비지원 (12)
        • 기업면접코칭 (3)
      • 인프라 취약점 진단 · 모의해킹 (24)
        • 윈도우 서버 진단 · 모의해킹 (22)
        • 리눅스 서버 진단 · 모의해킹 (2)
      • Mobile App 취약점 진단 · 모의해킹 (98)
        • AOS App 취약점 진단 · 모의해킹 (40)
        • iOS App 취약점 진단 · 모의해킹 (58)
      • 웹 취약점 진단 · 모의해킹 (2)
      • 클라우드 취약점 진단 · 모의해킹 (4)
        • AWS 취약점 진단 · 모의해킹 (0)
        • 컨테이너 보안 (4)
      • CS App 취약점 진단 · 모의해킹 (8)
      • AI 취약점진단 · 모의해킹 (8)
      • 산업 제어 시스템 진단 · 모의해킹 (0)
      • 침해 사고 대응 (15)
      • 디지털 포렌식 (2)
      • 자체개발 프로그램 (1)
        • TLS Security Checker (1)
      • IT 자격증 (26)
        • AWS 자격증 (11)
      • 프로그램 사용방법 (14)
      • 리눅스 (1)
      • 파이썬 (12)
      • 오류 해결 (2)
      • 잡학 지식 (41)
      • 코로나19 (12)
      • 학식 일상 (11)
        • 사진 (1)
        • 음악 (6)
        • 가게 정보 (3)
      • 제품 리뷰 (2)
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
학식(hagsig)
[iOS App 진단] 11강 - 애플리케이션 패칭(앱 위·변조) 실습 1
상단으로

티스토리툴바