일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- gdb debug
- hooking script
- graphiql
- gdb memory dump
- Firebase 취약점
- http request smuggling
- actuator endpoint
- 휴대폰 번호 변조
- firebasescanner
- Android 취약점진단
- 보안진단원
- so hooking
- without frida
- actuator heapdump
- spring boot 취약점
- 무결성 검증 우회
- trace intent
- source map
- actuator env
- gdb 메모리 덤프
- digest hooking
- 취약점
- Firebase Real-time Database
- Android
- native code hooking
- android hooking
- 취약점진단
- Frida
- APP 진단
- trace cipher
- Today
- Total
목록취약점진단/Mobile (Android, iOS) (7)
Und3r__Score__
Android APP 진단 시 확인해야하는 class와 function을 후킹하여 인자 값이나 return 값을 확인하는 frida hooking 스크립트를 제작하면, 진단 시 확인해야하는 기능 특정이 빠르게 이루어질 것 같다라는 생각이 들었습니다. 그래서 스크립트를 제작하기 전에 먼저 취약점 진단 시 확인해야 하는 항목과 관련된 class와 method를 먼저 리스팅해보고자 합니다. 관련 취약점 Class function local storage 관련 로직 파악 (파일 내 중요정보 포함 여부, 중요 로직 사용 여부 확인 목적) android.content.SharedPreferences * java.io.FileOutputStream * android.content.Context getExternalF..
(in Android) classes.dex 파일을 이용하여 무결성 검증을 수행하는 진단 대상 애플리케이션이 있어 우회하기 위해 제작한 후킹 스크립트입니다. 애플리케이션에서 java.util.zip.ZipEntry를 이용하여 classes.dex 파일들을 확인하고, 해당 파일들의 hash digest 값을 비교하여 무결성을 검증하고 있었습니다. java.security.MessageDigest digest()를 후킹하여 classes.dex 파일들의 hash digest 값들을 확인하고, 문자열 비교에 사용되는strcmp 함수 return 값을 변조하여 검증 로직을 우회하는 스크립트입니다. import frida import time import sys def main(): jscode = """ /* ..
(in Android) Android NDK(Native Development Kit)는 C, C++과 같은 언어를 사용하여 native code로 앱의 일부를 구현할 수 있게 하는 도구 모음입니다. 빌드 시에 CMake(네이티브 라이브러리 빌드 도구)는 소스 파일(.cpp)을 Shared Object Library로 컴파일한 후 .so로 이름을 지정하고 Gradle(빌드 도구)가 .so 파일을 앱에 패키징합니다. 그렇기 때문에 APK 파일의 lib// 하위에서 .so 파일들을 확인할 수 있으며 .so 파일들은 Reversing을 통해 분석이 가능합니다. native code 후킹 예제 코드입니다. "function name을 이용하여 hooking, return 값 변조" import frida imp..
(in Android) Android 취약점 진단을 하면서 보조 스크립트 용도로 제작한 hooking 스크립트입니다. 앱 내에서 intent와 cipher가 사용되고 있는 부분을 확인하기 위해 제작하였습니다. import frida import time import sys def main(): jscode = """ Java.perform(function() { var targetIntent = Java.use("android.content.Intent"); targetIntent.$init.overload().implementation = function() { console.log("intent"); }; targetIntent.$init.overload('java.lang.String').imple..
(in Android) SMS 인증 시 디바이스의 휴대폰 번호가 자동으로 입력되고 수정이 불가능한 경우가 간혹 존재합니다. 에뮬레이터(설정에서 휴대폰 번호 설정이 가능하지만) 또는 유심이 존재하지 않는 실 디바이스의 경우에는 SMS 인증이 불가능한데, 별도의 분석이나 변조 없이 frida로 손쉽게 해결하기 위해 만든 스크립트입니다. import frida import time import sys def main(): telNum = input("input your phone number : "); jscode = """ Java.perform(function() { Java.use("android.telephony.TelephonyManager").getLine1Number.overload().imple..

해당 게시글은 OWASP_MASTG 일부를 번역하여 정리 및 참고하였습니다. Mobile(Android, iOS)에서 데이터를 저장하는 방법은 다양하게 존재합니다. 그 중 Firebase Real-time Database에 대해 다뤄보려고 합니다. Firebase Real-time Database? Firebase는 15개 이상의 제품을 보유한 개발 플랫폼으로, 그 중 하나가 Firebase Real-time Database입니다. 애플리케이션 개발자는 이를 활용하여 NoSQL 클라우드 호스팅 데이터베이스와 데이터를 저장하고 동기화할 수 있습니다. 데이터는 JSON으로 저장되며 연결된 모든 클라이언트에 실시간으로 동기화되고 애플리케이션이 오프라인 상태에서도 사용 가능한 상태로 유지됩니다. 잘못 구성된 F..