프리다의 개발자가 frida의 ptrace 사용시점에 대하여 말하길 frida가 앱 프로세스에 attach할때 잠깐 ptrace를 사용하고 떨어진다고 합니다.
"Our injector needs to ptrace() the target briefly while attaching on Linux/Android".
구동중인 frida-server에 strace 실행한 상태에서 frida spawn 으로 앱에 attach 시도해봤습니다.
zygote64에 대하여 ptrace가 실행된 후, 앱 프로세스에 대하여 ptrace가 실행되는 것을 확인 할 수 있습니다.
이후 "/proc/<pid>/status"에서 "TracerPid" 항목을 확인해보면 정말이지 frida가 앱 프로세스에 attach 되어있음에도 "0"이 찍혀있는 것을 확인 할 수 있습니다.
Magisk Hide가 활성화된 상태에서의 ptrace는 어떻게 될까요?
Magisk Hide를 활성화한 상태에서 magiskd 프로세스에 대하여 strace를 수행해봤습니다.
zygote64에 대하여 ptrace가 실행된 후, 앱 프로세스에 대하여 ptrace가 실행되는 것을 확인할 수 있었습니다.
따라서, Magisk Hide가 활성화된 상태에서는 zygote64에 대한 ptrace 선점 문제로 인해 frida spawn을 사용할 수 없다는 결론에 이르게 됩니다.
그렇다면, magisk hide로 루팅우회가 되지만, ptrace를 사용하는 앱이어서 앱 실행후에 frida attach를 할 수 없다면 어떻게 대상 앱의 동적진단을 수행해야 할까요? magisk hide를 끄고 한땀한땀 보안솔루션을 우회해야 할까요? 만약 시간이 부족하다면 어떻게 해야 할까요?
이런 고민이 있었는데, 이와 관련하여 magisk 모듈이 하나 있습니다. 이 모듈은 매지스크와 루팅을 숨겨줍니다.
https://github.com/rmnscnce/hsu
모듈을 설치하고 터미널에서 hsu hide 명령어를 입력하면 Magisk 아이콘이 사라집니다. su 명령어도 실행되지 않습니다.
테스트해본 결과 해당 모듈로 루팅 탐지 우회가 100% 가능하지는 않아 보입니다. 금융권 앱들처럼 솔루션의 레벨이 높을 경우 우회가 되지 않더군요.
그러나, 그 외 보안솔루션의 레벨이 비교적 낮은 앱들의 경우에는 우회가 되었는데, frida spawn을 사용하여 ptrace를 사용하는 앱들을 무력화할 수 있다는 장점이 있습니다.
결론적으로 "Magisk Hide로 우회가능하지만 ptrace로 인해 앱 실행 후 frida attach가 불가한 앱" 들의 경우 진단시 "hsu module + frida spawn" 조합을 고려해볼 수 있겠습니다.
※ 참고
'Information Security > Android' 카테고리의 다른 글
갤럭시 S9(SM-G960N) Pixel AOS 10 커스텀롬 설치 (1) | 2021.07.10 |
---|---|
Uncrackable Level 3 Only Frida (2) | 2021.06.25 |
갤럭시 S7(SM-G930S) Pixel AOS 10 커스텀롬 설치 (4) | 2021.06.11 |
Android 10 SSH for Magisk (0) | 2021.05.19 |
gdb 단말기에서 실행 (0) | 2021.05.10 |