Und3r__Score__

Android 진단 시 확인해야 하는 Class 및 function 정리 본문

취약점진단/Mobile (Android, iOS)

Android 진단 시 확인해야 하는 Class 및 function 정리

_underscore_ 2024. 3. 21. 18:13

Android APP 진단 시 확인해야하는 class와 function을 후킹하여 인자 값이나 return 값을 확인하는 frida hooking 스크립트를 제작하면, 진단 시 확인해야하는 기능 특정이 빠르게 이루어질 것 같다라는 생각이 들었습니다.

 

그래서 스크립트를 제작하기 전에 먼저 취약점 진단 시 확인해야 하는 항목과 관련된 class와 method를 먼저 리스팅해보고자 합니다.

 

관련 취약점 Class function
local storage 관련 로직 파악
(파일 내 중요정보 포함 여부, 중요 로직 사용 여부 확인 목적)




android.content.SharedPreferences *
java.io.FileOutputStream *
android.content.Context getExternalFilesDir()
getExternalFilesDirs()
getExternalCacheDir()
getExternalCacheDirs()
getExternalMediaDirs() -  deprecated in API level 30
android.content.Context getCacheDir()
getExternalCacheDirs()
android.database.sqlite.SQLiteOpenHelper getWritableDatabase()
getReadableDatabase()
File Mode를 매개 변수로 사용하는 메서드 확인 (다른 앱에서 파일 읽기/쓰기 가능 여부 확인)

deprecated in API level 17
- MODE_WORLD_WRITABLE (1)
- MODE_WORLD_READABLE (2)

android.content.SharedPreferences getSharedPreferences()
android.content.Context openFileOutput()
getDir()
android.database.sqlite.SQLiteDatabase openOrCreateDatabase()
암호화 관련
(취약한 암호화 알고리즘 사용, 암호화/복호화 로직 분석 목적)

취약한 암호화 알고리즘
- RC2, RC4, RC5, RC6, MD4, MD5, SHA1, DES
android.content.pm.Signature
getInstance()
javax.crypto.Cipher getInstance()
javax.crypto.Mac getInstance()
java.security.MessageDigest getInstance()
javax.crypto.KeyGenerator generateKey()
동적 broadcasting receiver 사용 시 protectionlevel 확인 android.content.BroadcastReceiver registerReceiver()
Log 내 주요 정보 노출
android.util.Log d()
e()
i()
v()
w()
wtf()
java.util.logging.Logger *
StrictMode 설정 확인 android.os.StrictMode.VmPolicy.Builder penaltyLog()
penaltyDropbox()
취약한 함수 사용 (외부에서 조작 가능한 값을 사용하는지 확인)

android.webkit.WebView loadUrl()
java.lang.Runtime exec()
인텐트 처리 로직 분석
android.app.Activity setIntent()
getIntent()
android.content.Intent setData()
getData()
getDataString()
putExtra()
getExtras()
get*Extra()
addFlags()
getFlags()
setAction()
getAction()
addCategory()
getCategories()
parseUri()
getScheme()
getComponent()
Dynamic code 로드 메소드 확인
dalvik.system.DexClassLoader (apk 파일 또는 jar 파일에서 dex 파일 로드) DexClassLoader() constructor
dalvik.system.PathClassLoader (로컬 파일 시스템의 파일 또는 디렉터리에서 dex 파일 로드)
PathClassLoader() constructor
dalvik.system.InMemoryDexClassLoader (버퍼에 포함된 dex 파일 로드) InMemoryDexClassLoader() constructor