Study/App 32

[App]AndroGoat NETWORK INTERCEPTING(SSL 피닝)

burp suite를 사용하여 진행 환경설정은 아래 링크를 참고 [App]모바일 burp 프록시 환경 구성하기 1. 네트워크 프록시 설정 설정 > WIFI > WiredSSID 'WiredSSID'를 길게 누르면 아래와 같은 화면이 나온다. 여기서 '네트워크 수정'을 선택 해당 페이지에서 설정이 필요 고급옵션 프록시: 수동 프록시 호 seomj74.tistory.com SSL 피닝 클라이언트 측에서 사용하는 기법 SSL 핸드셰이킹 이후에도 서버의 증명서를 다시 확인하여 중간자 공격을 피할 수 있다. 클라이언트 측에 신뢰할 수 있는 증명서들을 저장하고, 이는 이후 실제 통신 과정에서 서버가 제공하는 증명서와 비교하는 데 사용 만약 이 과정에서 일치하지 않는다면, 연결은 중단될 것이고 유저의 정보가 서버로 ..

Study/App 2022.09.14

[App]AndroGoat 루팅탐지(Frida)

상세한 과정은 아래 포스팅을 참고 [App]AndroGoat 루팅탐지(smali) AndroGoat 설치 https://github.com/satishpatnayak/AndroGoat 해당 링크에서 androgoat.apk를 다운받아 녹스(Nox)에 설치해주면 된다. 변조 전 루팅 탐지 현재 녹스 자체에서 루팅을 켜 놓았다. AndroGoat를 실.. seomj74.tistory.com 본 포스팅에서는 Frida를 사용하는 부분만 설명 adb shell로 연결해 frida 서버를 실행한다. frida script를 작성 isRooted() 함수를 후킹하여 False를 리턴하도록 작성 console.log("Script loaded successfully"); Java.perform(function x()..

Study/App 2022.09.14

[App]AndroGoat 루팅탐지(smali)

AndroGoat 설치 https://github.com/satishpatnayak/AndroGoat 해당 링크에서 androgoat.apk를 다운받아 녹스(Nox)에 설치해주면 된다. 변조 전 루팅 탐지 현재 녹스 자체에서 루팅을 켜 놓았다. AndroGoat를 실행하여 ROOT DETECTION에 들어가 CHECK ROOT를 해보면 'Device is rooted'라고 뜬다. 제대로 잘 탐지되고 있다. smali 변조 1. apk 파일을 디컴파일하자. 2. jadx를 사용하여 AndroidManifest.xml을 확인한다. 2번째 줄에서 package를 보면 "owasp.sat.agoat"라고 나와있으며 15번째 줄에서 "owasp.sat.agoat.RootDetectionActivity"을 찾을 수..

Study/App 2022.09.14

[App]InjuredAndroid FLAG SEVEN - SQLITE

문제 풀이 FlagSevenSqliteAcitivity 파일을 확인 173번째 줄에서 SQLiteDatabase를 통해 데이터 베이스를 생성 title과 subtitle에 base64로 인코딩된 값을 디코딩하여 넣어줌 이를 하나하나 base64로 디코딩 해보아도 db 값을 알 수 있으나 직접 db 파일을 확인해보는 방법으로 진행해 보았다. 데이터 베이스는 /data/data/b3nac.injuredandroid에서 확인할 수 있다. tar -cvf b3nac.tar b3nac.injuredandroid tar로 압축한 파일을 /storage/emulated/0/Download/로 옮겨준다. adb pull로 파일을 가져올 때 기존 경로의 경우 권한 문제가 발생하기 때문이다. mv b3nac.tar /st..

Study/App 2022.09.11

[App]InjuredAndroid FLAG SIX - LOGIN 3

문제 풀이 FlagSixLoginActivity 파일을 확인 67번째 줄을 보니 k.a"k3FElEG9lnoWbOateGhj5pX6QsXRNJKh///8Jxi8KXW7iDpk2xRxhQ==" 와 비교하여 동일해야 함 k클래스의 a 함수를 확인 이를 해결하기 위해 frida를 사용할 것이다. Frida는 고유한 코드를 삽입하고 실행중인 프로세스를 프로그래밍 방식으로 대화식으로 검사하고 변경 우선 js 파일을 작성 (아래 링크를 통해 python 코드도 볼 수 있음) console.log("Script loaded successfully"); #현재 스레드가 가상머신에 연결되어 있는지 확인하고 fn을 호출 Java.perform(function x() { var my_class = Java.use("b3na..

Study/App 2022.09.11

[App]InjuredAndroid FLAG FOUR - LOGIN 2

문제 풀이 FlagFourAcitivity 파일 확인 obj에 입력 값을 저장하고(57번째 줄) a2에 g클래스의 a 함수의 반호나 값을 저장(58번째 줄) 두 개의 값을 비교하여 플래그를 확인하게 된다. g클래스를 보면 'NF9vdmVyZG9uZV9vbWVsZXRz'를 base64로 디코딩하여 a 함수를 통해 f1911a라는 값을 return 해주는 것을 확인 즉, 'NF9vdmVyZG9uZV9vbWVsZXRz'은 base64로 인코딩 된 값 해당 값을 디코딩(복호화) 결과

Study/App 2022.09.11

[App]InjuredAndroid FLAG TWO - EXPORTED ACTIVITY

문제 main activity를 우회하고 other activities를 호출할 수 있다고 한다. 풀이 AndroidManifest.xml 파일의 147번째 줄을 보니 android:exported가 true 값으로 설정되어 있다. 이는 다른 애플리케이션의 구성요소로 Activity를 시작할 수 있는지 설정한다. ture로 설정했으므로 다른 앱에서 Activity를 시작할 수 있다. 또한, FlagTwoActivity 파일에서도 22번째 줄을 통해 adb를 사용해야 한다는 힌트를 얻을 수 있다. cmd 창에 adb를 실행하여 해당 명령어를 입력한다. am start -n b3nac.injuredandroid/b3nac.injuredandroid.b25lActivity 'am start'를 사용하여 쉘에서..

Study/App 2022.09.11

[App]InjuredAndroid FLAG ONE - LOGIN

문제 flag값을 찾아서 입력하면 되는 문제 풀이 jadx를 사용하여 'FlagOneLoginActivity' 파일을 확인 21번째 줄부터 확인해보면 Flag에 값을 안주면 "The flag is right under your nose." 틀린 Flag 값을 주면 "The flag is also under the GUI." 코드를 좀 더 내려가 살펴보면 57~58번째 줄에서 입력한 값을 받아옴 59번째 줄에서 입력한 값과 "F1ag_0n3" 값이 같으면 60번째 줄에서 FlagOneSuccess 함수를 실행시켜 intent에 저장 63번째 줄에서 intent 실행 결과

Study/App 2022.09.11

[App]InjuredAndroid XSS

XSS cross site scripting의 약자 악의적인 사용자가 공격하려는 사이트에 스크립트를 넣는 기법 클라이언트를 대상으로 한 공격 사용자의 정보(쿠키, 세션, 토큰 등) 탈취 자세한 내용은 아래 게시글 참고 XSS(Cross Site Scripting) XSS란? cross site scripting의 약자 악의적인 사용자가 공격하려는 사이트에 스크립트를 넣는 기법 클라이언트를 대상으로 한 공격 사용자의 정보(쿠키, 세션, 토큰 등) 탈취 크게 세가지로 분류: reflec seomj74.tistory.com InjuredAndroid에서 XSSTEXT를 들어가서 XSS 스크립트 구문을 입력 코드 확인 jadx를 사용하여 XSSTextActivity 파일을 확인 submit Text를 보니 'D..

Study/App 2022.09.11