목록AOS (64)
Self-Improvement
https://github.com/frida/frida-core/issues/376 Failed to spawn: unexpectedly timed out while waiting for app to launch · Issue #376 · frida/frida-core Hi! Android v10 In Frida 14.2.18 i have same problem - Failed to spawn: unexpectedly timed out while waiting for app to launch. github.com Android 10 이상부터 존재하는 USAP 기능(빠른 앱 실행 기능)을 비활성화 하면 된다. setprop persist.device_config.runtime_native.usap_pool..
안드로이드 앱 manifest.xml에서 디폴트로 exported=false로 설정되어 있으나, 해당 컴포넌트에 인텐트 필터를 설정할 경우 exported 설정이 true로 변경됩니다. 따라서 intent-filter가 설정된 activity에 exported=false설정이 없을 경우 am 명령어를 통해 실행시킬 수 있습니다. 아래는 실습이 대상이될 앱의 manifest.xml 일부입니다. https://boanit.github.io/pen/android_exported_true exported=true 설정 취약점 exported=true 설정 취약점 안드로이드 애플리케이션에서 manifest.xml 파일에 android:exported=“true”로 설정되어 있는 컴포넌트는 외부에서 해당 컴포넌트에..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
분석 Part3도 역시나 앞서 봤던 것과 동일하다. 자바 코드를 확인해보면 임시 createTempFile()을 이용하여 임시 폴더를 생성하고 있는 것을 확인할 수 있다. createTempFile() 임시 파일을 생성하는 함수로 파일명의 가운데 숫자는 랜덤으로 정해지게 된다. 그리고 프로그램이 종료되도 임시 파일은 삭제되지 않고 남아있게 됨으로 deleteOnExit()을 통해 지워줘야 한다. ADB adb에 접근하여 확인해보면 uinfo1782302958tmp라는 임시 파일이 생성된 것을 알 수 있다. 평문 저장 확인 cat 명령어로 확인해보면 입력했던 값이 그대로 저장되어져 있다. FIND FIND 명령어로 최근에 생성된 파일들을 판별할 수 있는 명령어이다. // 10분내에 변경된 파일 찾기(변경된..
분석 Part2도 역시나 아이디랑 비밀번호를 입력하여 저장하면 "3rd party ~~" 문자열이 출력된다. 자바 소스코드를 확인해보면 SQLiteDatabase로 mDB 객체를 생성해준 후 ids2 라는 DB를 생성해주는 것을 알 수 있다. 그리고 입력한 값을 생성한 DB에 저장해준다. ADB ADB에 접근하여 /data 폴더를 확인하면 databases 폴더가 있으며 거기에서 ids2 라는 소스코드에서 봤던 DB 파일이 존재하였다. adb pull 명령어로 해당 파일을 추출하여 파일 내용을 확인하기 위해서는 Sqlite3를 설치해줘야 한다. Sqlite3 설치 아래의 링크에서 다운로드 가능하며 Magisk에서 모듈로 바이너리 명령어 설치 가능하다. https://www.sqlite.org/downlo..
분석 아래의 파트에서 username과 password를 입력하여 SAVE 버튼을 눌러본다. 아래와 같이 저장을 눌르게 되면 "3rd party credentials ~~ "라고 문구가 출력되는 것을 확인할 수 있다. 해당 문자열을 증거로 디컴파일하여 찾아본다. 자바 소스 코드를 확인해보면 입력한 값을 SharedPreferences 형식으로 저장하는 것을 알 수 있다. SharedPreferences 란 개발을 진행하다 보면, 앱의 데이터들을 저장하여 관리해야 할 상황에 직면하게 되는데. 데이터의 양이 많거나 중요한 데이터라면 서버나 DB, 파일의 형태로 저장을 하면 되겠지만, 간단한 설정 값이나 문자열 같은 데이터들은 DB에 저장하기에는 부담스럽고 애매한 경우가 있다. 이런 경우 안드로이드에서 기본적..
Uncrackable 1 System.exit() 후킹 이번에는 함수를 후킹해서 해볼 것이다. 마찬가지로 루팅 탐지할 때의 문자열을 디컴파일하여 검색해보면 메인 액티비티에서 c클래스의 a(), b(), c() 메소드의 결과 값 중 하나라도 True일 경우에는 "Root detected!"가 출력된다. 그리고 화면에 출력된 텍스트박스를 클릭하면 a() 메소드에서 System.exit(0)으로 종료가 되어진다. 이 때의 system.exit() 함수를 후킹해서 원래의 기능인 종료가 아닌 단순하게 콘솔 로그를 찍는 로직으로 재정의하여 종료되지 않도록 해볼 것 이다. import frida, sys Hook_package = "owasp.mstg.uncrackable1" def on_message(message..