[iOS 취약점 진단] 14강 - IPC 취약점(URL Schemes)

2023. 10. 27. 00:57·Mobile App 취약점 진단 · 모의해킹/iOS App 취약점 진단 · 모의해킹
728x90
반응형

아이폰·아이패드·iOS 취약점진단/모의해킹 무료 강의

 

가. IPC 취약점 이란?

1. IPC 정의 및 취약점

- IPC(Inter Process Communication)는 프로세스들 사이에 서로 데이터를 주고받는 행위 또는 방법이나 경로를 말한다.

- 앱이 신뢰할 수 없는 출처의 URL 스키마(Schemes)를 제대로 검증하지 않고 실행할 경우 문제가 발생할 수 있다.

- 즉, URL 스키마에 대한 검증 없이 실행하여 문제가 발생하는 것을 IPC 취약점이라고 부른다.

* 스키마(Schemes) : 외부에서 자신의 앱에 접근할 수 있도록 해주는 하나의 통로.

 

2. URL Schemes 정의

- URL 스키마 또는 스킴이라 부르며, URL을 통해 정의한 프로토콜로 다른 앱과 통신할 수 있도록 해주는 통로를 말한다.

- iOS는 샌드박스 정책에 의해 다른 앱들과 정보를 주고받기 힘드므로, URL 스키마를 이용하여 정보를 주고받는다.

- 일반적인 URL 스키마는 다음과 같은 형태를 가지며, 웹 브라우저 앱을 통해 URL 스키마를 실행할 수 있다.

※ 동일한 스키마를 사용하는 앱이 존재한다면 어떤 앱을 실행할 지 묻는다.

scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]

 

3. URL Schemes 종류

3-1. Built-in URL Schemes

- 애플(Apple)에서 기본적으로 제공하는 스키마를 빌트인 URL 스키마라 부르며, 시스템 앱과 통신할 수 있는 기능을 제공한다.

- 빌트인 URL 스키마 종류

No 스키마 종류 내용 사용 예시
1 mailto 메일 앱을 시작하고 이메일 작성 시트를 여는 데 사용 mailto:frank@wwdcdemo.example.com
2 tel 전화 앱을 실행하고 지정된 전화 번호로 전화 걸기를 시작하는데 사용 tel:1-408-555-5555
3 facetime 지정된 사용자에게 FaceTime 통화를 시작하는 데 사용 facetime://user@example.com
4 sms 메시지 앱을 시작하는데 사용 sms:1-408-555-1212
5 map 지리적 위치를 표시하고 두 지점 사이의 운전 방향을 생성하는 데 사용 http://maps.apple.com/?q=Mexican+Restaurant
6 itunes  iTunes Music Store의 콘텐츠에 연결하는 데 사용 http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewAlbum?i=156093464&id=156093462&s=143441
7 youtube  YouTube 웹사이트에 연결하여 지정된 동영상을 재생하는데 사용 http://www.youtube.com/watch?v=VIDEO_IDENTIFIER

 

3-2. Custom URL Schemes

- 사용자가 직접 커스텀마이징(customize)하여 사용하는 스키마를 커스텀 URL 스키마라 부른다.

- 사용자 앱에서 URL 스키마를 구현해 처리하며, Info.plist 파일에 CFBundleUrlSchemes 키(key)를 활용하여 구성한다.

 

4. AppDelegate.swift

- AppDelegate.swift 파일에서 수신받은 URL 스키마를 처리한다.

- 개발자/운영자로부터 소스코드를 받은 경우에는 AppDelegate.swift 파일에서 URL 스키마 처리 부분을 확인하면 되며, 소스코드를 받지 못한 경우에는 앱의 바이너리 파일을 기드라(Ghidra)와 같은 엔지니어링 도구를 이용해 분석해야 한다.

※ AppDelegate.swift 파일은 ios13을 기준으로 많은 점이 변경되었다. 아래의 링크들을 클릭하여 꼭 공부하길 바란다.

https://dev200ok.blogspot.com/2020/05/ios-appdelegate.html

 

[IOS] AppDelegate는 뭐하는 녀석이지?

Devlog 와 TIL 입니다. 개발을 하면서 알게된 내용을 다루고 있습니다.

dev200ok.blogspot.com

https://zeddios.tistory.com/218

 

iOS ) AppDelegate.swift의 역할

프로젝트를 만들면..반드시..있는..파일.......바로..AppDelegate.swift....문서를 하나 읽고있는데, 여기서 AppDelegate.swift에 대해서 잘 설명해주었더라구요 ㅎㅎ저도 두리뭉실하게만 알고있었는데..:-)

zeddios.tistory.com

https://jazz-the-it.tistory.com/29

 

[iOS] AppDelegate.Swift는 무슨 역할을 하는 것일까?

AppDelegate Appdelegate.swift에서 발견할 수 있는 AppDelegate 클래스는 아래와 같이 정의되어 있다. @main class AppDelegate: UIResponder, UIApplicationDelegate 설명 Your app delegate object manages your app’s shared behaviors. The a

jazz-the-it.tistory.com

 

나. 대응방법

- Custom URL Schemes를 사용할 때 사용자가 한번 더 확인할 수 있는 로직을 추가한다.

- 중요한 기능/뷰에 대한 접근을 사용한다면 사용자 인증 정보를 확인하는 로직을 추가한다.

 

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

 

2. 스키마 확인

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

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

 

- Info.plist 파일을 더블클릭하여 내용을 열람한다.

* Info.plist 경로 : /var/containers/Bundle/Application/$uuid/DVIA-v2.app/Info.plist

 

- Info.plist 중간쯤에 'CFBundleURLSchemes' 키(KEY)가 있고 스키마가 지정되어 있는 것을 확인할 수 있음.

* 사용 중인 스키마 : dvia, dviaswift

 

- 위에서 확인한 DVIA-v2 앱의 스키마를 사파리 브라우저에 입력한다.

- 형식이 잘못되었는지 앱은 실행되지만 바로 종료된다.

- 어떤 형식을 입력하여야 제대로 동작하는지 아래의 과정을 통해 알아내보도록 한다.

  

3. 바이너리 파일 추출

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

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

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

 

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

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

 

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

 

4. 바이너리 파일 분석

- 아래의 과정을 따라하여 추출한 바이너리 파일을 기드라(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 버튼 클릭 → 분석이 종료될 때까지 대기(우측 하단에 진행률이 표시됨).

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

 

5. 바이너리 파일 분석

- Symbol Tree 창의 택스트 입력란에 "appdelegate"를 검색한다.

"__T07DVIA_v211AppDelegateC11applicationSbSo13UIApplicationC_10Foundation3URLV4opens10DictionaryVySC0F17OpenURLOptionsKeyVypG7optionstF" 함수(Functions)를 클릭한다.

* 실무에서는 어떤 함수가 URL 스키마를 처리하는지 하나씩 눌러가며 찾아야 한다.

 

- 화면 우측에 위치하고 있는 Decompile 창의 내용을 확인한다.

 

- Decompile 창의 42번 줄을 확인하면 커스텀 URL 스키마를 통해 앱을 호출할 수 있는 문구를 확인할 수 있다.

* 커스텀 URL 스키마 호출 형태 : /phone/call_number/

 

- 위에서 확인한 커스텀 URL 스키마 호출 형식에 맞추어 웹 브라우저 앱의 URL 입력란에 기입한다.

- "Success!, Calling. Ring Ring !!!"이라는 메시지가 출력되며, 커스텀 URL 스키마를 통해 정상적으로 앱 호출 및 처리된 것을 확인할 수 있다.

 

라. 참고 URL

- 애플 공식 URL 스키마 설명 문서

https://developer.apple.com/library/archive/featuredarticles/iPhoneURLScheme_Reference/Introduction/Introduction.html#//apple_ref/doc/uid/TP40007899-CH1-SW1

 

About Apple URL Schemes

About Apple URL Schemes This document describes several URL schemes that are supported by system apps on iOS, macOS, and watchOS 2 and later. Native iOS apps and web apps running in Safari on any platform can use these schemes to integrate with system apps

developer.apple.com

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

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

스마트폰 와이어샤크 네트워크 패킷 캡처 방법 정리  (0) 2023.11.03
[iOS 취약점 진단] 15강 - 로컬 인증(Touch ID/Face ID) 우회  (0) 2023.10.30
[iOS App 진단] 13강 - 런타임 조작(무차별대입공격)_실습4  (0) 2023.10.20
[iOS App 진단] 13강 - 런타임 조작(로그인/인증 우회)_실습3  (0) 2023.10.20
[iOS App 진단] 13강 - 런타임 조작(로그인/인증 우회)_실습2  (0) 2023.10.18
'Mobile App 취약점 진단 · 모의해킹/iOS App 취약점 진단 · 모의해킹' 카테고리의 다른 글
  • 스마트폰 와이어샤크 네트워크 패킷 캡처 방법 정리
  • [iOS 취약점 진단] 15강 - 로컬 인증(Touch ID/Face ID) 우회
  • [iOS App 진단] 13강 - 런타임 조작(무차별대입공격)_실습4
  • [iOS App 진단] 13강 - 런타임 조작(로그인/인증 우회)_실습3
학식(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 취약점 진단] 14강 - IPC 취약점(URL Schemes)
상단으로

티스토리툴바