본문 바로가기
study/mobile

[Mobile] SSL Pinning

by 림나 2026. 5. 11.

01. SSL/TLS 동작 원리

▶ TLS Handshake 과정

  • TLS(Transport Layer Security) Handshake : 클라이언트(아이폰)와 서버가 암호화된 데이터를 주고 받기 전 서로를 인증하고 암호화 방식을 협의하는 Handshake 과정을 먼저 수행

① Client Hello : 클라이언트 → 서버

  • 지원하는 TLS 버전
  • 지원하는 암호화 알고리즘 목록 (Cipher Suite)
  • 랜덤값 (Client Random)

② Server Hello : 서버 → 클라이언트

  • 선택한 TLS 버전
  • 선택한 암호화 알고리즘
  • 랜덤값 (Server Random)
  • 서버 인증서 (Certificate)

③ 인증서 검증  : 클라이언트가 서버 인증서 검증

  • 인증서가 신뢰할 수 있는 CA가 서명했는지 확인
  • 인증서 유효기간 확인
  • 도메인 일치 여부 확인

④ Key Exchange (키 교환)

  • 클라이언트가 Pre-Master Secret 생성
  • 서버 공개키로 암호화하여 전송
  • 서버는 개인키로 복호화

⑤ Session Key 생성

  • Client Random + Server Random + Pre-Master Secret
    → 양측이 동일한 Session Key 생성
    → 이후 통신은 이 키로 대칭 암호화

⑥ Finished

  • 양측이 Handshake 완료 메시지 교환
  • 이후 암호화된 데이터 통신 시작

 

▶ 인증서 체계 (CA, 인증서 체인)

 

  • 인증서는 누가 서명했느냐로 신뢰 여부를 판단함
  • 이 신뢰 관계는 계층 구조로 이루어져 있으며 이를 인증서 체인(Certificate Chain) 이라고 함
Root CA (최상위 인증기관)
   └── Intermediate CA (중간 인증기관)
         └── Server Certificate (서버 인증서)

 

 

  • Root CA : OS/브라우저에 미리 내장된 최상위 신뢰 기관
  • Intermediate CA : Root CA가 서명한 중간 기관. 실제 인증서 발급 담당
  • Server Certificate : 특정 도메인에 대해 발급된 인증서

 

검증 흐름
: 서버 인증서 → Intermediate CA 서명 확인 → Root CA 서명 확인 → OS/브라우저 내장 Root CA 목록과 일치 → 신뢰
  • Burp Suite CA 인증서를 아이폰에 설치하면 Burp Suite가 중간에서 인증서를 위조해도 신뢰하게 됨
    → HTTPS 트래픽 인터셉트 가능

 

02. SSL Pinning

▶ SSL Pinning이란?

 

  • 일반 TLS 통신은 OS/브라우저에 내장된 CA 목록을 기준으로 인증서를 검증함
  • 즉, Burp Suite CA처럼 신뢰할 수 있는 CA로 등록된 인증서면 무조건 통과
  • SSL Pinning은 이 검증 방식을 강화해, 앱 내부에 특정 인증서 또는 공개키를 미리 고정(Pin) 해두고 통신 시 이 값과 일치하는지 추가로 검증하는 보안 기법

 

 

▶ Pinning 방식 (Certificate / Public Key)

방식 고정 대상 설명
Certificate Pinning 인증서 전체 앱 내부에서 서버 인증서(.cer, .pem) 파일 자체를 저장
→ 통신 시 서버가 보낸 인증서와 1:1 비교
Public Key Pinning 공개키(SPKI) 인증서에 공개된(SPKI)만 추출해 저장
→ 인증서가 갱신되어도 공개키가 같으면 통과
→ 더 유연한 방식
Hash Pinning 인증/공개키의 해시값 인증서 또는 공개키를 SHA-256으로 해싱해 저장
→ 실제 값 대신 해시값만 비교
→ 저장 공간 절약 + 현재 가장 많이 사용하는 방식

 

▶ 왜 적용하는가?

 

  • 일반 TLS만으로는 중간자 공격(MITM, Man-in-the-Middle Attack) 에 취약할 수 있음
  • 공격자가 신뢰할 수 있는 CA 인증서를 확보하면 트래픽 가로채기 가능
  • SSL Pinning을 적용하면 CA 체계와 무관하게 앱이 직접 서버를 검증하므로 MITM 공격 차단 가능

공격자는 CA 인증서만 신뢰히면 통과

 

앱 내부에 Pin 값 검증 단계 추가 → 불일치 시 통신 차단

 

03. SSL Pinning 우회

▶ 우회 원리

 

  • SSL Pinning은 앱 코드 내부에서 인증서 검증 로직을 실행하는 방식
  • 즉, 검증 로직 자체를 런타임에 조작하면 Pin값 비교 단계를 무력화할 수 있음
  • Frida는 앱이 실행 중인 상태에서 함수 호출을 가로채 동작을 바꿀 수 있음 → 이를 후킹(Hooking) 이라고 함

일반적인 Pinning 검증 흐름

 

후킹 적용 후

 

▶ Frida 후킹 동작 방식

 

  • Frida는 동적 코드 주입(Dynamic Code Injection) 방식으로 동작
  • 앱 프로세스에 Frida Agent(JS 엔진)를 주입하여 런타임에 함수를 가로채고 재정의함

 

 

▶ objection

  • objection은 Frida 기반의 모바일 앱 분석 자동화 도구
  • SSL Pinning 우회 스크립트를 직접 작성하지 않아도 명령어 한 줄로 우회 가능
  • iOS / Android 모두 지원