솔루션이 적용된 앱들을 우회하려면 IDA를 통한 분석보다 Frida Trace를 이용한 분석을 더 많이 사용할 수 있다.
이전에 포스팅한
2022.05.04 - [모바일/Ios] - [ios] ios 클래스 및 메소드 추적 Frida-Trace
raptor 스크립트를 활용한 클래스 추적이 아닌
Frida 자체에서 지원하는 Trace 기능도 있다.
raptor 스크립트로 추적을 했을 때 앱의 어떤 클래스와 충돌해 다 끌어오지 못하고 시작하자마자
꺼지는 경우가 생길 수도 있으며,
또 각각 트레이스의 방법마다 결과가 다르게 나오는 경우도 많아서 다른 방법도 알아두면 좋다.
일단 Frida자체 Trace 모듈은 정말로 어떤 클래스의 메소드가 실행되는지 딱 그것만 알아내기때문에
충돌할 일이 거의 없다.
다양한 옵션들은 아래 사이트에서 확인이 가능하다
https://frida.re/docs/frida-trace/
하지만 쓰는 것은 -m, -M 두가지면 충분할 듯 하고 나머지 정규식 사용법만 필요하다.
추가로 필요할 때 들어가서 참고해도 무방함
-m 옵션은 검색 키워드를 포함해서 추적함 (Jail로 키워드를 잡고 실행하면 Jail 문자열이 포함된 클래스 출력)
-M 옵션은 검색 키워드를 제외해서 추적함 ( Jail 키워드를 잡고 실행하면 그 문자열이 포함된 클래스는 출력안함)
실행 명령어는 간단하다
frida-trace -U -f 패키지명 -m "-또는+[클래스 메소드명]"
위 사진처럼 명령어를 실행하면 찾은 클래스와 메소드를 출력해주고
트레이스를 걸어둔 상태로 해당 클래스의 메소드 기능이 실행되게되면
아래 사진처럼 실행된 시간정보와 실행되었다고 출력해준다
근데 이렇게 클래스와 메소드 메소드의 종류가 다 알고있는 상태에서 트레이스는 의미가없다
그래서 * 로 정규식을 사용할 수 있다
frida-trace -U -f com.highaltitudehacks.DVIAswiftv2.6932TUUP33 -m "*[*Jail* *]"
정규식을 사용하게되면 위 사진처럼 Jail이 포함된 + 메소드든 -메소드든 다 출력해주는데
위에서 사용된 정규식의 의미는 첫번째 * 부터 1번이라고하고 4번 * 까지 존재한다고 했을 때
"*[*Jail* *]"
1번 *은 + 메소드인지 - 메소드 인지 구분하지말고 다 포함하는 것이다
Objective-C 문법에서 + 메소드는 "클래스 메소드" - 메소드는 "인스턴스 메소드" 라고 부른다.
동작 방식에 따른 차이가 있음
2번 3번 * 2개는 [ ] 안에 들어가는건 [ 클래스 메소드] 이고 첫번째 문자열 자리는 클래스 부분이다.
Jail 뒤에 *이 붙었다는건 Jail 문자열로 시작하는 모든 클래스를 포함하는 것이다.
위처럼 *Jail* 이라고 적었다면 앞이든 뒤든 중간이든 어디에 Jail이란 문자열이 포함되어있으면 찾아준다.
4번 *은 두번째 문자열 자리 바로 메소드 부분인데 아무 문자열없이 정규식만 표현했으니
모든 메소드를 의미한다.
그럼 "*[*Jail* *]" 이란것은
클래스 메소드(+) 또는 인스턴스 메소드(-)를 다 포함해서 Jail 문자열이 포함된 클래스는 다 추적하고
Jail이 포함된 클래스의 모든 메소드를 다 추적하는 것이다.
정규식을 활용하여 앱 전체의 모든 클래스 메소드를 추적하고싶다면
"*[* *]" 이렇게 되는데 거의 10중 10은 에러가 나서 아래 처럼 앱이 꺼져버리니 잘 사용하지않는다.
정규식을 잘 활용해서 클래스 및 메소드를 효율적으로 추적할 수 있다.
Jail이 포함된 클래스에서 jail이 포함된 메소드만 추적
위 사진에서 알 수 있듯이 검색할 때 영문 대소문자를 철저하게 구별한다.
Jail과 jail의 결과가 다르게 나오는 것을 확인
만약 너무 많은 클래스나 메소드가 출력되어 필요없는 결과는 제외하고 추적하고 싶을 때는
-M 옵션을 똑같이 정규식을 활용해서 사용할 수 있다.
아래 사진은 아래 명령의 결과
frida-trace -U -f com.highaltitudehacks.DVIAswiftv2.6932TUUP33 -m "*[*Jail* *]"
여기서 'jail' 이 포함된 메소드를 제외하고 싶다면 뒤에 -M 옵션을 붙여주면된다.
frida-trace -U -f com.highaltitudehacks.DVIAswiftv2.6932TUUP33 -m "*[*Jail* *]" -M "*[*Jail* *jail*]"
메소드가 제외되어 출력됨
이 옵션은 똑같은 정규식 사용 원리로 클래스든 메소드든 활용해서 사용할 수 있다.
그리고 위 사진에서 알 수 있는게 하나 더 있는데 여러가지 키워드를 설정할 수 있다.
frida-trace -U -f com.highaltitudehacks.DVIAswiftv2.6932TUUP33 -m "*[*Jail* *]"
-M "*[*Jail* *jail*]" -m "*[*AntiAnti* *]"
위 그림과 같이
Jail이 포함된 클래스와 AntiAnti가 포함된 클래스를 찾고 Jail이 포함된 클래스의 jail이 포함된 메소드는 제외할 수 있다.
옵션은 단말기 자원이 허용하는 만큼 제한없이 사용이 가능한 것으로 추정된다.
트레이스의 최대 장점은 클래스나 메소드가 실행될 때 그 결과를 출력해준다는 것이다.
아래 사진처럼 어떤 기능을 사용했을 때 내가 트레이스를 걸어둔 클래스가 실행된다면
앱이 종료되거나 사용자가 트레이스를 끝낼 때 까지는 계속 추적해준다
끝
'모바일 > Ios' 카테고리의 다른 글
[ios] 주소값 변조를 통한 탈옥 탐지 우회 (4) | 2022.07.15 |
---|---|
[ios] 프리다 후킹 (Frida Hooking)을 통한 탈옥 탐지 우회 방법 2 (스크립트 활용) (0) | 2022.06.13 |
[ios] 사용자 함수(User Function) or 서브 루틴(Sub Routine) 프리다 후킹 및 변조 (0) | 2022.05.04 |
[ios] ios 클래스 및 메소드 추적 Frida-Trace (2) | 2022.05.04 |