일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- lord of sql injection
- base64
- igoat
- ESXi
- 안드로이드
- beebox
- 2018
- 인시큐어뱅크
- kibana
- foremost
- Volatility
- ctf
- elasticsearch
- MFT
- Reflected XSS
- frida
- diva
- vulnhub
- Strings
- XSS
- InsecureBank
- NTFS
- Openstack
- Suninatas
- CTF-d
- Docker
- logstash
- 파이썬
- SQL Injection
- otter
- Today
- Total
Information Security
UnCrackable - Level1 본문
해당 apk파일을 jadx로 불러와서 디컴파일된 코드를 확인할 수 있다.
Text Search 기능을 통해 root detected 메시지를 찾았다.
MainActivity 부분에서 a메서드를 호출하면서 루팅 탐지 메시지를 전달해주고 있다. [Ctrl]을 누른 상태에서 a를 클릭하여 어떤 메서드인지 찾아보았다.
Main Activity 코드내에 a라는 메서드가 존재하며 인자 값으로 string을 받고 있다. 이 메서드는 alert dialog라고 해서 dialog창을 만들면서 메시지를 만들고 있다. 이 메시지는 해당 앱에서 보여주는 것과 같다.
system.exit(0) 코드는 앱을 종료
create.setButton으로 [OK]버튼 하나 만든다. 이 버튼이 OnClickListener()를 받고 있다.
클릭할 때 앱이 종료되지 않도록(system.exit()이 동작하지 않도록) onClick 메서드를 재작성을 해야 될 것 같다.
OnClickListener가 어떻게 불러오고 생성하는 지 보기 위해 import의 DialogInterface를 확인했다.
frida-ps -Ua 명령어를 통해 해당 앱의 실행 이름을 알 수 있다.
타임아웃을 방지하기 위한 setImmediate 사용하고 클래스에 대한 객체 받아오기 위해 java.use를 사용한다.
독립된 환경으로 불러올 때는 삽입될 수 있도록 --no-pause 옵션을 사용하고 해당 프로세스가 스폰될 수 있도록 f옵션을 사용한다.
OnClickListener는 클래스가 아닌 인터페이스이다. 프리다 공식 api에서 이 인터페이스를 받아와서 사용하기 위한 api가 존재하지 않기 때문에 에러가 날 수 있다.
해당 내부에 있는 system.exit를 무력화시키기 힘들기 때문에 다른 한 가지 방법으로 java.lang.System에서 가져오는 메서드가 exit인데 이 메서드를 후킹 한 후 재작성해서 동작하지 않도록 한다. 이렇게 되면 [OK] 버튼을 누르고도 앱이 종료되지 않고 사용할 수 있는 것을 볼 수 있다.
해당 스크립트를 실행시키면 Exit Bypass 메시지를 확인할 수 있다.
[OK] 버튼을 클릭해도 앱이 종료되지 않는다.
'모바일 > Frida' 카테고리의 다른 글
Frida - sieve.apk 로그인 우회 (1) | 2020.12.20 |
---|---|
Uncrackable1 - 암호화 (0) | 2020.12.18 |
FridaLab - Change 'check' button's text value to 'Confirm' (0) | 2020.12.16 |
FridaLab - Bruteforce check07Pin() then confirm with chall07() (0) | 2020.12.15 |
Fridalab - Run chall06() after 10 seconds with correct value (0) | 2020.05.13 |