Android SSL Pinning - 런타임 우회
정보보안기사 실기시험 중에 이 개념을 마주친 적이 있다.. 인증서 고정(Certificate Pinning)은 앱이 서버가 보내온 인증서를 직접 확인해서 미리 알고 있는 값과 다르면 통신을 아예 끊어버리는 안전장치이다. if (앱이 Pinning 하고 있다면) : if (프록시가 준 인증서 == 앱이 알고 있는 핀값) 통과 else 연결 거부 (TLS 핸드셰이크 중단) 우회 방법에는 대표적으로 - APK를 디컴파일해서 network_security_config나 핀 코드 자체를 제거하는 방법 - 런타임에서 후킹 해서 검증 함수를 통과시키는 방법 등이 있다. 첫 번째 방법은 영구적이지만 번거로우며, 재빌드가 필요하다. 나는 두 번째 방법을 선택했다.. 이 앱은 Kotlin으로 만들었고, 예전에 Kotlin으로 HTTP 클라이언트를 다뤄봤기 때문에 자연스럽게 Retrofit/OKHttp 같은 라이브러리부터 의심했다. OKHttp를 쓰면 CertificatePinner로 핀을 구현하는 경