SSL 피닝을 위해서는 초기 설정이 필요하다. Burp 프록시 환경 구성이 되어있지 않다면 아래 링크를 따라 진행하길 바란다.
https://lyk00331.tistory.com/84
0. 기본 세팅
AndroGoat.apk 파일을 다운받은 후, 에뮬레이터(Nox)로 옮겨준다.
1. HTTP(S) 통신 및 SSL 피닝
1.1. HTTP
1.2. HTTPS
1.3. CERTIFICATE PINNING
HTTP와 HTTPS 처럼 burp suite로 패킷을 잡아보려고 했지만, 잡히지 않는다.
해당 apk 자체에서 허용하는 SSL 인증서가 있어야 패킷이 잡히지만(=SSL 피닝) 현재 그 인증서가 없기 때문이다.
이 과정을 frida로 후킹하여 SSL 피닝을 우회하는 언피닝을 진행한다.
2. apk 디컴파일
apk easy tool을 사용해서 해당 apk 파일을 디컴파일 해준다.
2.1. package명 및 Network Intercepting 확인
디컴파일 후 나온 AndroidManifest.xml 파일을 통해 package명과 Network Intercepting을 하는 영역을 확인한다.
jadx로 위에서 확인한 영역을 보면 아래와 같은 코드가 있다.
// owasp.sat.agoat.TrafficActivity
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_traffic);
TextView textView = (TextView) findViewById(R.id.result);
((Button) findViewById(R.id.httpButton)).setOnClickListener(new TrafficActivity$onCreate$1(this));
((Button) findViewById(R.id.httpsButton)).setOnClickListener(new TrafficActivity$onCreate$2(this));
((Button) findViewById(R.id.PinningButton)).setOnClickListener(new TrafficActivity$onCreate$3(this));
}
PinningButton이 TrafficActivity$onCreate$3 라는 것을 알 수 있다.
// owasp.sat.agoat.TrafficActivity$onCreate$3
public final void onClick(View it) {
this.this$0.doPinning();
}
이 버튼을 클릭했을 때 doPinning 메서드로 넘어간다.
// owasp.sat.agoat.TrafficActivity$doPinning$1
public final void invoke(AnkoAsyncContext<TrafficActivity> ankoAsyncContext) {
Intrinsics.checkParameterIsNotNull(ankoAsyncContext, "$receiver");
try {
OkHttpClient client = new OkHttpClient.Builder().certificatePinner(new CertificatePinner.Builder().add("owasp.org", "sha256/gdU/UHClHJBFbIdeKuyHm/Lq/aQvMLyuTtcvTEE/1JQ=").add("owasp.org", "sha256/YLh1dUR9y6Kja30RrAn7JKnbQG/uEtLMkBgFF2Fuihg=").add("owasp.org", "sha256/Vjs8r4z+80wjNcr1YKepWQboSIRi63WsWXhIMN+eWys=").build()).build();
Request.Builder builder = new Request.Builder();
ResponseBody body = client.newCall(builder.url("https://" + "owasp.org").build()).execute().body();
Log.v("Response", body != null ? body.string() : null);
} catch (Exception e) {
e.printStackTrace();
}
}
doPinning에서는 ???...??
??????????????????
*** 수정중 ***
'App > AndroGoat' 카테고리의 다른 글
AndroGoat.apk | 바이너리 패치 (smali) (1) | 2021.09.20 |
---|---|
AndroGoat.apk | 에뮬레이터 탐지 (Frida) (0) | 2021.09.20 |
AndroGoat.apk | 에뮬레이터 탐지 (smali) (2) | 2021.09.20 |
AndroGoat.apk | 루팅 탐지 (Frida) (0) | 2021.09.20 |
AndroGoat.apk | 루팅 탐지 (smali) (0) | 2021.09.17 |
댓글