burp suite를 사용하여 진행
환경설정은 아래 링크를 참고
SSL 피닝
클라이언트 측에서 사용하는 기법
SSL 핸드셰이킹 이후에도 서버의 증명서를 다시 확인하여 중간자 공격을 피할 수 있다.
클라이언트 측에 신뢰할 수 있는 증명서들을 저장하고, 이는 이후 실제 통신 과정에서 서버가 제공하는 증명서와 비교하는 데 사용
만약 이 과정에서 일치하지 않는다면, 연결은 중단될 것이고 유저의 정보가 서버로 전송되지 않을 것이다.
출처
https://ohseunghyeon.github.io/study/ssl-pinning/
실습
HTTP 클릭 시
HTTPS 클릭 시
그러나 마지막 CERTIFICATE PINNING은 잡히지 않는다.
해당 APK 자체에서 허용하는 SSL 인증서가 있어야 패킷이 잡힌다.
이 과정을 frida로 후킹하여 SSL 피닝을 우회하도록 진행
1. AndroidManifest.xml파일 확인
33번째 줄을 보면 network에 관한 코드 확인
2. owasp.sat.agoat.TrafficActivity 확인
PinningButton이 존재하는 것을 확인할 수 있다.
.doPinning()으로 넘어가는 것을 50번째 줄을 통해 알 수 있다.
109번째 줄을 보면 pinner1에 CertificatePinner을 사용하여 인증서를 지정해준다.
그리고 해당 인증서를 가지고 "https://owasp.org"에 요청한다.
3. 스크립트 작성
이를 우회하기 위해서 CertificatePinner의 검증 로직을 후킹하면 우회가 가능하다.
console.log("Script loaded successfully");
Java.perform(function x() {
console.log("java perform function");
var CertificatePinner = Java.use('okhttp3.CertificatePinner');
CertificatePinner.check.overload('java.lang.String','java.util.List').implementation = function (p0, p1) {
console.log('! Intercepted okhttp3: ' + p0);
return;
};
});
4. 스크립트 실행
결과
'Study > App' 카테고리의 다른 글
[App]AndroGoat Emulator Detection(frida) (0) | 2022.09.15 |
---|---|
[App]AndroGoat Emulator Detection(smali) (0) | 2022.09.15 |
[App]AndroGoat 루팅탐지(Frida) (0) | 2022.09.14 |
[App]AndroGoat 루팅탐지(smali) (1) | 2022.09.14 |
[App]InjuredAndroid FLAG SEVEN - SQLITE (0) | 2022.09.11 |