인시큐어뱅크 애플리케이션의 apk파일을 추출 후 apk tool 파일을 이용해서 디컴파일을 한다.apktool d "apk파일명" 디컴파일을 했을 경우 위의 사진과 같이 디컴파일 된 것을 확인변경하고 싶은 smali 코드를 수정 후 리패키징apktool b "디컴파일 했던 폴더" -o "저장할 apk 파일 이름" 이후 인증서를 생성keytool -genkey -v -keystore "keystore이름" -alias "별칭" -keyalg "키 알고리즘" -keysize "키사이즈" 이후 서명을 해준다. jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore "keystore이름" "리패키징할 앱" "별칭" 후 생성되는 apk 파일을 안드로이드..
문제의 제목을 확인했을 경우 Insecure Logging(안전하지 않은 로깅)이다. 아마도 로그를 확인하는 실습이다.그렇기 때문에 logcat을 이용한다. logcat 실행 전 logcat -c 명령어를 사용하여 초기화 후 adb shell logcat 명령어를 입력하여 로그를 받는다. 실습은 다음과 같아서 임의의 수를 넣어 CHECK OUT 버튼 클릭adb환경에서 logcat -f /data/local/tmp/[로그파일 저장이름]으로 저장로그 파일을 PC로 전송로그에 입력한 값이 남아있는것을 확인
1. 문제확인더보기문제이다.임의의 로그인 값을 넣고 "Login Method 1"이라는 버튼을 클릭 시 비밀번호가 틀렸다는 알림 창이 나타나는데 이걸 인증을 우회하는 게 문제인 것 같다.2. 문제풀이(Login Method 2)더보기문제의 소스코드를 확인해 본 결과 tbz라는 분기 연산을 통하여 유저가 계정인증을 값을 주는 것 같다.연산해 주는 부분의 메모리 주소를 확인하여 w8의 레지스터를 변조하면 될 것으로 판단된다.if(ObjC.available){ var realb = Module.findBaseAddress('DVIA-v2'); var jailb = realb.add('0x1645a8'); Interceptor.attach(jailb,{ onEnter:function(args){ cons..
1. 문제확인더보기3번 문제 버튼을 클릭 시 "Device is Jailbroken, the application will now exit"라는 창이 띄워진다. 2. 문제 해결더보기 그러므로 ghidra에서 해당 문구를 검색하여 접근해당 부분의 주소의 레지스터에서 tbz라는 분기 연산을 이용해 0x0이면 미탐지 0x1은 탐지가 되도록 되어있다.if(ObjC.available){ var realbase = Module.findBaseAddress('DVIA-v2');//DVIA-v2 시작 시 메모리주소 var jail = realbase.add("0x14307c"); // 오프셋 추가한 메모리주소 Interceptor.attach(jail,{ onEnter:function(args){ console..
1. 문제확인더보기이 전의 Jailbreak Detection 1번 문제를 해결하고 2번 문제를 풀어보겠다.2번 문제는 1번 문제에서 푼 후킹코드로 해결된다. 아마 내 추측으로는 같은 문제지만 다른 방식으로 해결해 보라는 것 같다. 2. 문제 풀이더보기그래서 다른 방법이 뭐 있을까 검색하다가 보니 다른 사람들은 메서드를 탐색해서 후킹 하는 방식으로 해결하던 것을 확인하고 시도해 보기로 했다.if(ObjC.available){ for(var classlist in ObjC.classes) console.log(classlist)}해당 코드를 작성하여 frida로 실행해 본 결과 무수히 많은 클래스들이 발견되었다. 그러므로 뒤에 frida -U -l exam2.js DVIA-v2 | find "Jail"위..
1. 문제확인 및 풀이Jailbreak Detection 이라는 문제를 풀어보기 위해 접근접근 후 1번 문제인 Jailbreak Test1을 눌러보니 "Device is Jailbroken"이라는 명령어와 함께 탈옥 탐지가 된 것을 확인할 수 있다.해당 내용을 찾기 위해 search - for strings 에서 device is jailbroken을 검색하여 접근해당 부분(함수 및 데이터 영역의 참조원)을 클릭하여 접근 후 windows - function graph 를 사용 해당 부분을 확인하면 tbz(특정 비트가 0이면 분기) 연산을 이용한다. 위를 봤을 때는 w0의 레지스터 값을 확인하는것 같다. 그래서 frida를 이용해서 확인해보기로 하였음if(ObjC.available){ var realba..