개요
모바일 앱을 진단하다 보면 DroidX, AndroGuard 등 다양한 보안 솔루션이 적용된 앱을 보게 되는데 이들 대부분은 Frida를 필수적으로 탐지한다. 솔루션이 Frida를 탐지할 때는 보편적으로 Frida 생성 파일, 포트, 모듈 검사를 통해 탐지하며, 몇몇 솔루션에서는 역후킹 방안을 이용해 Frida를 막기도 한다. 해당 포스팅은 이러한 탐지 방법 중에서도 Frida 서버를 이용하여 포트 탐지를 우회하는 방법을 기술하고자 한다.
방법
1. PC와 모바일 디바이스를 USB로 연결한 상태에서 [그림 1]과 같이 원격 셸에 접근한다.
adb shell
2. Frida 서버를 -h 옵션을 인자로 주고 실행하면 Frida 서버에 관한 다양한 옵션을 확인할 수 있으며, 이 중에서 -l 옵션은 Frida 서버 실행 시 IP 및 포트를 사용자가 지정할 수 있도록 기능을 지원한다.
3. 사용 법은 간단하다. -l 옵션 뒤에 사용할 IP 및 포트 번호를 지정해주면 된다.
./frida-server -l localhost:12345
4. 임의의 포트 번호를 지정하여 Frida 서버를 실행하였다면 Frida 클라이언트가 해당 포트를 인지하여 통신할 수 있도록 디바이스의 포트 번호와 PC 포트를 포워드 해야한다.
adb forward tcp:12345 tcp:12345
5. 포트 포워드를 하지 않고 Frida 연결을 시도할 경우 아래 [그림 5]와 같이 연결 가능한 Frida 서버 포트를 찾지 못하여 오류가 발생한다.
6. Frida 서버와 연결 시 PC와 디바이스가 USB로 연결 됐음을 Frida에게 알려주기 위해 -U 옵션을 사용하는데 지금과 같이 Frida 서버 실행 시 기본 포트 번호(27042)가 아닌 별도의 포트 번호를 지정한 경우 -H 옵션을 사용해줘야 한다. 포트 포워드가 잘 되었다면, [그림 6]과 같이 지정한 포트로 정상 연결되는 것을 확인할 수 있다.
frida -H localhost:12345 -F com.playground.anditer
마무리
이번 포스팅에서는 Frida 서버의 기능을 이용하여 임의의 IP 및 포트를 지정하는 방법을 다뤄봤다. 해당 방법을 사용하면 앱에서 Frida 포트를 검사할 때 Frida 서버의 기본 포트인 27042 또는 27000 ~ 27500과 같이 범위를 지정해서 검사하는 경우 별도의 후킹 과정 없이 우회 할 수 있게 된다.
다음 포스팅에서는 Frida 역후킹의 원리와 과정 그리고 우회하는 방안에 대해서 포스팅해보겠다.
'안드로이드 기타 > Frida' 카테고리의 다른 글
Frida 백트레이스를 활용한 함수 호출 지점 찾기 (0) | 2023.08.18 |
---|---|
Frida로 네이티브 코드(C/C++) 변수(레지스터) 값 변조하는 방법 (0) | 2023.07.28 |
Frida 메모리(Memory) 모듈 정리 (0) | 2023.07.12 |
Frida 에러(unexpectedly timed out while waiting for) 해결 방법 (0) | 2023.07.12 |