Frida 활용 안드로이드 모의해킹 🤖
#4 프로세스, 트레이스, 디바이스 제어
frida-trace
Frida를 사용하여 애플리케이션의 함수 호출을 동적으로 추적하고 출력하는 도구
1. Nox 애뮬레이터로 Chrome 실행
2. 실행 프로세스 확인
$ frida-ps -Ua
3. 프로세스 추적
-i
옵션 : 추적할 함수의 이름을 지정하는 데 사용. 지정한 함수가 호출될 때마다 해당 호출 정보를 출력.
-U
옵션 : USB를 통해 연결된 디바이스와 상호 작용할 때 사용. Frida가 USB를 통해 연결된 디바이스에 대한 프로세스 추적.
$ frida-trace -i "open" -U com.android.chrome
– open.js 파일 생성 및 “Open” 함수 추적 시도 확인
4. open.js 분석
– onEnter 함수를 활용해 “open”이라는 로그를 계속 출력시켜주는 것을 확인할 수 있다.
onEnter
함수:onEnter
는 Frida 스크립트에서 사용되는 콜백 함수 중 하나입니다. 이 함수는 추적 중인 함수에 진입할 때 호출되는데, 여기에서는open
함수에 진입할 때 실행되는 코드를 정의합니다.
log
함수:log
는 Frida 스크립트에서 제공되는 함수로, 콘솔에 메시지를 출력하는 데 사용됩니다. 이 예시에서는'open()'
라는 문자열을 출력하여open
함수에 진입했음을 알립니다.
args
매개변수:args
는 현재 함수에 전달된 인수들을 나타내는 배열입니다.open
함수에 어떤 인수가 전달되었는지에 대한 정보를 이용하여 더 세부적인 분석이 가능합니다.
state
매개변수:-
state
는 스크립트의 상태를 나타내는 객체입니다. 이를 통해 콜백 함수 간에 정보를 공유하거나 상태를 관리할 수 있습니다.
-
state
는 스크립트의 상태를 나타내는 객체입니다. 이를 통해 콜백 함수 간에 정보를 공유하거나 상태를 관리할 수 있습니다.
-
5. 추가 분석을 위한 args 출력 방법
js 파일 수정
log('open(' + 'pathname=' + args[0] + ', flags=' + args[1] + ')');
pathname
(파일 경로):pathname
은 열고자 하는 파일의 경로를 나타내는 문자열입니다. 파일 시스템에서 해당 파일을 찾기 위해 사용됩니다.- 예시:
/path/to/file.txt
flags
(파일 열기 옵션):flags
는 파일을 어떤 방식으로 열지에 대한 옵션을 지정합니다. 여러 가지 옵션을 비트 플래그로 조합하여 사용할 수 있습니다.- 주요 플래그:
O_RDONLY
: 읽기 전용으로 열기O_WRONLY
: 쓰기 전용으로 열기O_RDWR
: 읽기 및 쓰기로 열기O_CREAT
: 파일이 없을 경우 생성O_APPEND
: 파일의 끝에 데이터를 추가- 등
- 예시:
O_RDONLY | O_CREAT
수정 후 메모리 경로, flags 값이 출력되는 것을 확인할 수 있다.
+ API 활용 메모리 객체 확인을 위한 utf-8 형태 변환
log('open(' + 'pathname=' + Memory.readUtf8String(args[0]) + ', flags=' + args[1] + ')');
Frida Trace 를 활용한 프로세스 추적 방법을 확인하였다.