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 공격 차단 가능


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


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

▶ objection
- objection은 Frida 기반의 모바일 앱 분석 자동화 도구
- SSL Pinning 우회 스크립트를 직접 작성하지 않아도 명령어 한 줄로 우회 가능
- iOS / Android 모두 지원
'study > mobile' 카테고리의 다른 글
| [Mobile] iOS Crackme : Uncrackable L1 (0) | 2026.05.12 |
|---|---|
| [Mobile] iOS 탈옥 : 앱 진단 환경 세팅 (0) | 2026.05.11 |
| [Mobile] iOS 탈옥 : Palera1n (0) | 2026.05.07 |
| [Mobile] MASTG-KNOW-0001 : Biometric Authentication (0) | 2026.04.30 |
| [Mobile] Android APK 정적 분석 : 실습 환경 세팅 (0) | 2026.04.28 |