반응형

프리다의 개발자가 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" 조합을 고려해볼 수 있겠습니다.

 

※ 참고

https://www.programmersought.com/article/27994724445/

반응형

+ Recent posts