본문 바로가기

App21

디버그 로그 내 정보 노출, 화면 강제 실행 인증단계 우회 1. 디버그 로그 내 정보 노출 shell에서 logcat 명령어를 치면 디버깅 로그 내에서 저장된 정보를 볼 수 있다. 개발하는 과정에서 로그를 찍어가며 확인하기 위해 넣고, 빼지 않고 그대로 출시했을 경우 확인된다. 2. 화면 강제 실행 인증단계 우회 패스워드 저장 후, 인증단계에서 패스워드가 틀리면 데이터를 볼 수 없고, 패스워드가 일치하면 저장되어있는 데이터들을 볼 수 있다. 이때 2번째 사진에서 하는 인증단계를 우회하여 패스워드가 달라도 데이터를 볼 수 있는지 진단한다. Manifest.xml 소스코드를 보면 exported 값이 true로 나타난다. exported가 true로 되어있다면 앱 외부에서의 접근이 가능다는 뜻이다. 이전 포스팅 중, injured.apk 분석할 때 잠깐 언급한 적 .. 2021. 11. 1.
Uncrackable Level 1 Uncrackable 은 Owasp에서 제공하는 모바일 어플리케이션이다. Uncrackable-Level1.apk를 다운받은 후, Nox 애뮬레이터에 Drag&Drop으로 설치한다. 1. Manifest.xml apk easy tool로 Uncrackable-Level1을 디컴파일 해주고 디컴파일된 파일 중, AndroidManifest.xml 파일을 열어보면 package명과 MainActivity를 알 수 있다. 상위루트 manifest에 있는 package : AndroidManifest.xml 파일의 루트 요소다. 나중에 프리다를 사용할 때 이 패키지명이 사용된다. 상위루트 activity에 있는 MainActivity : 액티비티 구성 요소를 선언한다. jadx로 어플리케이션을 분석할 때 Mai.. 2021. 11. 1.
AndroGoat.apk | 바이너리 패치 (smali) 0. 기본 세팅 AndroGoat.apk 파일을 다운받은 후, 에뮬레이터(Nox)로 옮겨준다. 1. 바이너리 패치 apk를 실행한 후 Binary Patching을 확인해보면 권한이 없다고 나타난다. 2. apk 디컴파일 apk easy tool을 사용해서 해당 apk 파일을 디컴파일 해준다. 2.1. package명 및 Binary Patching 탐지 영역 체크 디컴파일 후 나온 AndroidManifest.xml 파일을 통해 package명과 Binary Patching을 하는 영역을 확인한다. jadx로 위에서 확인한 영역을 보면 아래와 같은 코드가 있다. //owastp.sat.agoat.BinaryPatchingActivity if (this.isAdmin) { TextView textView.. 2021. 9. 20.
AndroGoat.apk | 에뮬레이터 탐지 (Frida) 초반 내용은 이전 글과 동일하다. https://lyk00331.tistory.com/97 AndroGoat.apk | 에뮬레이터 탐지 (smali) 0. 기본 세팅 AndroGoat.apk 파일을 다운받은 후, 에뮬레이터(Nox)로 옮겨준다. 1. 에뮬레이터 탐지 나는 녹스를 사용 중이기 때문에 원래는 "This is Emulator" 라고 떠야하지만, (아마도..) 해당 APK가 외국 lyk00331.tistory.com 위 게시물을 참고하여 2번까지 진행한 후, 이번 글은 Frida와 관련된 내용으로 3번부터 작성했다. 3. frida 서버 실행 adb shell에 접속한 후, 안드로이드 기기에 설치해둔 frida server를 실행한다. (이때 frida가 PC와 모바일에 동일 버전으로 설치되어있.. 2021. 9. 20.
AndroGoat.apk | 에뮬레이터 탐지 (smali) 0. 기본 세팅 AndroGoat.apk 파일을 다운받은 후, 에뮬레이터(Nox)로 옮겨준다. 1. 에뮬레이터 탐지 나는 녹스를 사용 중이기 때문에 원래는 "This is Emulator" 라고 떠야하지만, (아마도..) 해당 APK가 외국 앱이기 때문에 녹스를 탐지하지 않아서 "This is not Emulator"라는 문장이 나타난다. 어차피 목적은 탐지를 우회하는 것이기 때문에, is not Emulator → in Emulator 가 되도록 해본다. 2. apk 디컴파일 apk easy tool을 사용해서 해당 apk 파일을 디컴파일 해준다. 2.1. package명 및 Emulator Detection 탐지 영역 체크 디컴파일 후 나온 AndroidManifest.xml 파일을 통해 packag.. 2021. 9. 20.
AndroGoat.apk | SSL 피닝 (Frida) SSL 피닝을 위해서는 초기 설정이 필요하다. Burp 프록시 환경 구성이 되어있지 않다면 아래 링크를 따라 진행하길 바란다. https://lyk00331.tistory.com/84 안드로이드(Nox) Burp 프록시 환경 구성 | Burp 인증서 ※ Frida가 PC와 모바일(에뮬레이터 - Nox 사용)에 동일 버전으로 설치되어있다는 전제 하에 진행된다. 1. Burp 인증서 설치 1.1. Burp Suite에서 다음과 같이 진행한다. Next 버튼을 누른 후 나타나는 Select lyk00331.tistory.com 0. 기본 세팅 AndroGoat.apk 파일을 다운받은 후, 에뮬레이터(Nox)로 옮겨준다. 1. HTTP(S) 통신 및 SSL 피닝 1.1. HTTP 1.2. HTTPS 1.3. C.. 2021. 9. 20.
AndroGoat.apk | 루팅 탐지 (Frida) 초반 내용은 이전 글과 동일하다. https://lyk00331.tistory.com/93 안드로이드 AndroGoat.apk | 루팅 탐지 (smali) 0. 기본 세팅 AndroGoat.apk 파일을 다운받은 후, 에뮬레이터(Nox)로 옮겨준다. 나는 Nox 자체 설정에서 루팅을 켜놓았다. 1. 루팅 탐지 어플리케이션을 실행한 후, Root Delection에 들어가 루팅 탐지를 해 lyk00331.tistory.com 위 게시물을 참고하여 2번까지 진행한 후, 이번 글은 Frida와 관련된 내용으로 3번부터 작성했다. 3. frida 서버 실행 adb shell에 접속한 후, 안드로이드 기기에 설치해둔 frida server를 실행한다. (이때 frida가 PC와 모바일에 동일 버전으로 설치되어있어.. 2021. 9. 20.
AndroGoat.apk | 루팅 탐지 (smali) 0. 기본 세팅 AndroGoat.apk 파일을 다운받은 후, 에뮬레이터(Nox)로 옮겨준다. 나는 Nox 자체 설정에서 루팅을 켜놓았다. 1. 루팅 탐지 어플리케이션을 실행한 후, Root Delection에 들어가 루팅 탐지를 해보면 "Device is rooted"라며 제대로 탐지되는 것을 확인할 수 있다. 2. apk 디컴파일 apk easy tool을 사용해서 해당 apk 파일을 디컴파일 해준다. 2.1. package명 및 Root Detection 탐지 영역 체크 디컴파일 후 나온 AndroidManifest.xml 파일을 통해 package명과 Root Detection을 탐지하는 영역을 확인한다. jadx로 위에서 확인한 영역을 보면 아래와 같은 코드가 있다. // owasp.sat.ag.. 2021. 9. 17.
injured.apk | FLAG SEVEN - SQLITE 이 문제는 플래그와 패스워드를 입력해야한다. FlagSevenSqliteActivity 파일의 31~32번 라인을 보면 base64로 암호화되어있다. 디코딩하면 x ="sqlite" y = "f1ag-pa55" 이다. 코드를 보면 알 수 있듯이, DB를 생성하고 데이터가 기록이 된다. 191번 라인의 VGhlIGZsYWcgaGFzaCE= 를 base64로 디코딩해보면 The flag hash! 라는 값을 얻어낼 수 있다. 이것은 md5 암호화 방식이다. 2021. 9. 13.
injured.apk | FLAG SIX - LOGIN 3 FlagSixLoginActivity 파일을 확인해보면 73번 라인에서 k.a() 함수에서 반환된 값과 비교한다. k3FElEG9lnoWbOateGhj5pX6QsXRNJKh///8Jxi8KXW7iDpk2xRxhQ== 값이 인자로 넘어가는 것을 알 수 있다. k.a() 함수를 확인해보면 다음과 같다. 이 함수는 복호화 작업을 진행고, 함수를 frida와 연결하고 스크립트를 작성하여 암호화된 값을 넘기기 때문에 우리가 입력하는 값이 어떤 값이 되든 상관 없다. nox_adb shell 접속해서 frida 서버 실행 javascript 파일 제작 7번 라인에서는 k 클래스의 함수를 오버로드해서 클래스를 변수에 할당해준다. 디코딩 기능을 오버로드 해주고, 8번 라인에서 디코드를 진행할 문자열을 정의해준다. 이 .. 2021. 9. 13.
injured.apk | FLAG FOUR - LOGIN 2 FlagFourActivity의 submitFlag함수를 확인하면 60번 라인에서 obj 문자열에 입력받은 값을 저장하고, 61번 라인에서 g.a() 메서드의 값을 a2라는 byte 배열에 할당한다. g클래스의 a 함수는 아래와 같다. 여기서 base64로 체크된 문자열을 디코딩하고 f1911a로 반환해준다. 첫번째 사진의 62번 라인에서는 a2에 값이 들어왔는지 확인해주고, 63번 라인에서 if문을 통해 입력한 값이 디코딩된 값과 일치하는지를 비교한다. NF9vdmVyZG9uZV9vbWVsZXRz 값을 디코딩해주면 다음과 같이 flag가 나타나는 것을 확인할 수 있다. 2021. 9. 13.
injured.apk | FLAG THREE - RESOURCES 1번과 마찬가지로 FlagThreeActivity 파일을 열어보면 다음과 같이 플래그가 들어가있는 자리에 cmVzb3VyY2VzX3lv 값이 들어있다. 62번 라인에서는 문자열 비교함수를 통해 우리가 입력한 값과 리소스로부터 받은 문자열을 비교한다. R.string.으로 cmVzb3VyY2VzX3lv를 참조한다. APK Easy Tool로 디컴파일 한 파일들을 전체 검색기능을 통해 문자열 검사로 플래그를 찾을 수 있다. 2021. 9. 13.