본문 바로가기

4-1. 2025-2 심화 스터디/안드로이드

[2025.11.29] APP 6주차 활동

참고강의: 프리다(Frida) 를 이용한 안드로이드 앱 모의해킹

https://inf.run/WqSJ9

 

프리다(Frida)를 이용한 안드로이드 앱 모의해킹| 보안프로젝트 - 인프런 강의

현재 평점 4.9점 수강생 752명인 강의를 만나보세요. 모의해킹 실무에서 활용되고 있는 프리다 (Frida)의 완벽 활용법을 배울 수 있습니다. 안드로이드보안, 취약점진단, 보안, 해킹, 모의해킹

www.inflearn.com

 

섹션 9.  프리다 실무 활용

 

SSL Pinning : 사용자의 인증서를 확인하는 보안 매커니즘

 

앱의 인증서 검증 과정을 실행 중에 변환해 SSL Pinning을 우회한다

  • 인증서 비교 함수의 반환값을 항상 성공 처리
  • 잘못된 인증서를 받아도 실패 처리를 하지 못하게 함
  • 버프스위트 이용해 버프스위트 인증서로 대체 

 

SSL 통신시 클라이언트 인증서 사용하는 단계

  1. 클라이언트 인증서 로드
  2. 클라이언트 인증서를 이용해 keyManarger 생성
  3. 클라이언트 인증서를 이용해서 TrustManager 생성
  4. keyManager, TrustManager 이용해서 SSLContext 생성
setTimeout(function() {
    Java.perform(function() {
        var CertificateFactory = Java.use("java.security.cert.CertificateFactory");
        var cf = CertificateFactory.getInstance("X.509");

        var FileInputStream = Java.use("java.io.FileInputStream");
        var fileInputSteam = FileInputStream.$new("/data/local/tmp/cert-der.crt");
        var ca =cf.generateCertificate(fileInputSteam);

        var KeyStore = Java.use("java.security.KeyStore");
        var keyStoreType = KeyStore.getDefaultType();
        KeyStore.getInstance(keyStoreType);
        keyStore.load(null, null);
        keyStore.setCertificateEntry("ca", ca);
        
        var TrustManagerFactory = Java.use("javax.net.ssl.TrustManagerFactory");
		var tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
		var tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
		tmf.init(keyStore);
		var tmf_get = tmf.getTrustManagers();
        
        var SSLContext = Java.use("javax.net.ssl.SSLContext");
		SSLContext.init.implementation = function(a, b, c) {
    		SSLContext.init.call(this, a, tmf_get, c);
		}


    })
})

 

SSL Pinning 우회 코드 분석

 

1. 버프 인증서 읽어오기

2. KeyStore 새로 생성해 버프 인증서 저장

3. TrustManager을 버프 인증서 기반으로 생성

4. SSLContext에 TrustManager 강제 삽입

 

'4-1. 2025-2 심화 스터디 > 안드로이드' 카테고리의 다른 글

[2025.11.22] APP 5주차 활동  (0) 2025.11.29
[2025.11.08] APP 3주차 활동  (0) 2025.11.09
[2025.10.04] APP 2주차활동  (0) 2025.10.04
[2025.09.27] APP 1주차활동  (0) 2025.09.28