참고강의: 프리다(Frida) 를 이용한 안드로이드 앱 모의해킹
프리다(Frida)를 이용한 안드로이드 앱 모의해킹| 보안프로젝트 - 인프런 강의
현재 평점 4.9점 수강생 752명인 강의를 만나보세요. 모의해킹 실무에서 활용되고 있는 프리다 (Frida)의 완벽 활용법을 배울 수 있습니다. 안드로이드보안, 취약점진단, 보안, 해킹, 모의해킹
www.inflearn.com
섹션 9. 프리다 실무 활용
SSL Pinning : 사용자의 인증서를 확인하는 보안 매커니즘
앱의 인증서 검증 과정을 실행 중에 변환해 SSL Pinning을 우회한다
- 인증서 비교 함수의 반환값을 항상 성공 처리
- 잘못된 인증서를 받아도 실패 처리를 하지 못하게 함
- 버프스위트 이용해 버프스위트 인증서로 대체
SSL 통신시 클라이언트 인증서 사용하는 단계
- 클라이언트 인증서 로드
- 클라이언트 인증서를 이용해 keyManarger 생성
- 클라이언트 인증서를 이용해서 TrustManager 생성
- 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 |