2020. 5. 20. 12:24ㆍ2020/Android App Hacking
level1과 마찬가지로 디바이스의 루팅여부를 판단한다. exit함수 후킹코드를 작성하고 프리다를 통해 실행시킨다.
위 과정은 이전 게시글에 설명되어 있음.
이제 비밀번호를 확인하는 과정을 살펴본다.
this.m.a (입력값): m.a은 무엇인가?
CodeCheck 클래스 객체 m
CodeCheck클래스는 native library 함수 bar을 사용한다.
CodeCheck클래스의 this.m.a( 입력값 ) 의 반환값은 즉 CodeCheck.a(input) = bar(input)
그럼 native library에 존재하는 bar함수는 어떻게 분석할 수 있는가?
IDA, Ollydbg등의 프로그램을 활용할 수 있지만, 리눅스 리버싱 도구 radare2 프로그램을 사용할 것이다.
사용 명령 : rabin2, r2
rabin2 - 라이브러이에서 활용하는 모듈들을 검사할 수 있다.
r2 - 라이브러리 파일의 내부를 들여다 볼 수 있다.
# rabin2 -s <libraryFile> : symbols
# rabin2 -i <libraryFile> : 라이브러리에서 임포트하는 모듈 리스트
# rabin2 -E <libraryFile> : 라이브러리에서 익스포트하는 모듈 리스트
# r2 <libraryFile> : 라이브러리 파일들 내부 확인
> e emu.str=true : 라이브러리파일의 주석 확인가능 (매우유용)
> ? : help명령
> is~Java
- i: get information
- s: pattern
- ~Java : Java를 포함하는 문자열
> s 0xXXXXXXXX : 해당 주소로 이동
> af : 현재 주소부터 분석
- a: analyze
- f: add a flag
> pdf : 현재 주소부터 분석한 것들 출력
- p: print
- d: debugging mode
- f: add a flag
소스코드에서 System.loadLibrary("foo")를 확인할 수 있다. 해당 라이브러리에 bar메서드가 존재하는지 확인하자.
라이브러리 파일은 apktool을 통해 앱을 디컴파일 했을 때 얻을 수 있다.
애플리케이션에는 디바이스의 버전이 다양하기 때문에 다양한 버전의 라이브러리가 존재한다.
library foo.so - export list - Java Mainactivity_init, CodeCheck_bar
해당 라이브러리에서 해당 클래스들이 무엇을 가져다가 사용하는지 코드를 보고 확인할 수 있다.
CodeCheck_bar에서 사용하는 코드를 확인해보자. (strncmp함수를 사용하는 것을 확인할 수 있음)
다음 변수들이 무엇인지 확인하자.
; var int32_t var_1ch @ sp+0x1c
; arg int32_t arg1 @ r0
; arg int32_t arg3 @ r2
google: strncmp reference
int strncmp ( const char* str1, const char* str2, size_t num );
strncmp함수의 첫 번째 인자는 r0, 세 번째 인자는 r2
코드에서 cmp r0, 0x17 => 사용자가 입력하는 값의 길이가 23인 경우에 strncmp함수를 실행한다.
비밀번호 검증과정에서 두번 째 인자에는 앱에 저장된 비밀번호가 입력되고 strncmp함수를 통해 입력값과 비교한다.
strncmp함수를 후킹해서 두 번째 인자에 들어있는 값을 화면에 출력하자.
* 비밀번호를 검증하는 루틴을 분석하는 과정에서 strncmp함수를 발견하였다. 이 때 해당 함수는 비밀번호를 검증하는 데 사용하고 있다고 유추할 수 있어야한다.
strncmp에서 두번 째 인자가 무엇인지 파악할 수 없지만, r0에 입력값이 r3에는 입력값을 특정 길이값이 들어감으로 두 번째 인자에 앱에서 하드 코딩되어 사용하는 비밀번호가 들어감을 유추할 수 있어야한다.
Interceptor.attach( addr, callbacks ) : 해당 주소에 위치한 함수, 모듈에 동작 추가
'2020 > Android App Hacking' 카테고리의 다른 글
HACKTHEBOX. Don't Overreact (0) | 2022.10.05 |
---|---|
Uncrackable_level1.apk 풀이, Frida 후킹 (0) | 2020.05.20 |
Frida Java Script를 활용한 프로세스 후킹 (0) | 2020.05.19 |
Android Hacking: Ettercap 사용법 (0) | 2020.02.13 |
Android Hacnking: Setup (0) | 2020.02.13 |