[Android] Setcancelable ν†΅ν•œ μ•± μ’…λ£Œ 막기

AlertDialog Dialog(λ‹€μ΄μ–Όλ‘œκ·Έ)λŠ” 말 κ·ΈλŒ€λ‘œ λŒ€ν™” μƒμžμ˜ κ°œλ…μœΌλ‘œ Alert(νŒμ—…)λ₯Ό λ„μ›Œ 앱을 μ‚¬μš©ν•˜λŠ” μ‚¬μš©μžλ“€μ—κ²Œ μΆ”κ°€ μž…λ ₯을 λ°›κ±°λ‚˜ λ‹€μŒ ν–‰μœ„(Yes, No, Cancel)λ₯Ό κ²°μ •μ‹œν‚€λŠ” μš©λ„λ‘œ μ‚¬μš©λ©λ‹ˆλ‹€. 이 λ©”μ‹œμ§€ 창에 μ‚¬μš©μžκ°€ 응닡을 ν•˜μ§€ μ•ŠμœΌλ©΄ 화면에 사라지지 μ•Šκ³  계속 λŒ€κΈ°ν•˜κ²Œ λ©λ‹ˆλ‹€. AlertDialogμ—λŠ” μ‚¬μš©λ˜λŠ” μš”μ†Œλ“€ Title: λŒ€ν™”μƒμžμ˜ 제λͺ© Message: λŒ€ν™”μƒμžλ₯Ό μ΄ν•΄ν•˜κΈ° μœ„ν•œ λ‚΄μš© Positive Button: μ‚¬μš©μžμ˜ 긍정적인 λ°˜μ‘μ„ 의미(Yes, λ„€, 확인) Negative Button: μ‚¬μš©μžμ˜ 뢀정적인 λ°˜μ‘μ„ 의미(No, Cancel, μ·¨μ†Œ) Netural Button: 긍정 λ˜λŠ” 뢀정도 μ•„λ‹Œ λ°˜μ‘μ„ 의미(Cancel, Remind Later 일반적으..

MOBILE
[iOS] FairPlay DRM λ³΅ν˜Έν™”

κ°œμš” iOS 앱을 진단을 ν•˜κΈ° μœ„ν•΄μ„  λ³„λ„μ˜ iPA νŒŒμΌμ„ 전달받아 뢄석을 ν•˜κ±°λ‚˜ 그렇지 λͺ»ν•  경우 μ„œλΉ„μŠ€μ— λ“±λ‘λ˜μ–΄ μžˆλŠ” μ•± μŠ€ν† μ–΄μ—μ„œ 직접 λ‹€μš΄λ‘œλ“œν•˜μ—¬ 진행해야 λ˜λŠ” κ²½μš°κ°€ μžˆμŠ΅λ‹ˆλ‹€. 직접 μ „λ‹¬λ°›μœΌλ©΄ λ¬Έμ œκ°€ μ—†μ§€λ§Œ μ•± μŠ€ν† μ—μ„œ 내렀받을 κ²½μš°μ—λŠ” μ•± λ‚΄λΆ€μ˜ μ½”λ“œ 및 데이터λ₯Ό λ³΄ν˜Έν•˜κΈ° μœ„ν•œ "FairPlay Code" μ•”ν˜Έν™”κ°€ μ μš©λ˜μ–΄ μžˆλŠ”λ° μ•”ν˜Έν™”λœ λ°”μ΄λ„ˆλ¦¬ νŒŒμΌμ€ μ»€λ„μ˜ "Match-O"λ‘œλ”μ— μ˜ν•΄ λŸ°νƒ€μž„ 쀑에 해독이 λ©λ‹ˆλ‹€. 결둠적으둜 μ•± μŠ€ν† μ—μ„œ 받은 μ•±μ˜ 리버싱 과정을 거치기 μœ„ν•΄μ„  사전에 λ³΅ν˜Έν™” μž‘μ—…μ„ 진행해야 λœλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. otool -l Binaryname | grep -A4 LC_ENCRYPTION_INFO otool을 톡해 μ•±μ˜ FairPlay DRM μ—¬λΆ€λ₯Ό 확인해보면 "cyptid..

MOBILE
[iOS] Shared Clipboard 취약점

κ°œμš” iOSμ—μ„œλŠ” μ„€μΉ˜λœ μ•± 간에 μ‚¬μš©μžμ˜ νŽΈμ˜μ„±μ„ μœ„ν•œ "곡유 ν΄λ¦½λ³΄λ“œ"κ°€ μžˆμŠ΅λ‹ˆλ‹€. μ‹€ν–‰ 쀑인 μ•±μ—μ„œ 일뢀 ν…μŠ€νŠΈλ₯Ό "볡사" λ˜λŠ” "μž˜λΌλ‚΄κΈ°"μ‹œ -> pasteboard 버퍼에 μ €μž₯되며 μ΄λŠ” λ‹€λ₯Έ μ•±μ—μ„œ μ‚¬μš©ν•˜κΈ° μœ„ν•΄ 데이터λ₯Ό κ°€μ Έμ˜¬ 수 있기 λ•Œλ¬Έμ— 쑰심해야 될 ν•„μš”κ°€ μžˆμŠ΅λ‹ˆλ‹€. μ™œλƒν•˜λ©΄ μ•± 내뢀에 λ‹¨μˆœ μ €μž₯λ˜λŠ” 것이 μ•„λ‹Œ 단말 μž₯치 내뢀에 버퍼 ν˜•νƒœλ‘œ κΈ°λ‘λ˜κΈ°μ— λ‹€λ₯Έ 앱을 톡해 이 값을 ν˜ΈμΆœν•˜μ—¬ μœ μΆœν•  κ°€λŠ₯성이 있기 λ•Œλ¬Έμž…λ‹ˆλ‹€. μ„œλ‘œ 간에 κ³΅μœ ν•  수 μžˆλŠ” ν΄λ¦½λ³΄λ“œλ₯Ό μ• ν”Œμ—μ„œλŠ” Pasteboard라고도 λΆ€λ¦…λ‹ˆλ‹€. μ‚¬μš©μž κ΄€μ μ—μ„œ 보자면 이 κΈ°λŠ₯은 맀우 νŽΈλ¦¬ν•˜κ³  ν•„μˆ˜μ μΈ μ—­ν• λ‘œ 자리 μž‘μ•„ μžˆμŠ΅λ‹ˆλ‹€. 마치 κΈ΄ 데이터 ν˜•νƒœλ₯Ό κ°€μ§€λŠ” μ—°λ½μ²˜, μ£Όμ†Œ, μΉ΄λ“œλ²ˆν˜Έ 등을 μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„  보톡 볡사 λ°‘ λΆ™μ—¬ λ„£κΈ°λ₯Ό ..

MOBILE
[iOS] Functions Hooking

What Functions? iOS 앱을 μ§„λ‹¨ν•˜λ‹€ 보면 νƒˆμ˜₯을 νƒμ§€ν•˜λŠ” νŠΉμ • 버전이 μžˆμ„ μˆ˜λ„ 있고 μ–΄λ–€ ν•¨μˆ˜λ₯Ό 톡해 λ””λ°”μ΄μŠ€ λ‚΄λΆ€λ₯Ό κ²€μ‚¬ν•˜λŠ”μ§€ μ‘°κΈˆμ”© λ‹€λ¦…λ‹ˆλ‹€. κ·Έμ€‘μ—μ„œ λŒ€ν‘œμ μœΌλ‘œ NSFileManager 클래슀의 "fileExistsAtpath:"λ₯Ό 톡해 ν˜„μž¬ μ‹€ν–‰λœ λ””λ°”μ΄μŠ€ 내뢀에 νƒˆμ˜₯κ³Ό κ΄€λ ¨λœ 디렉토리 λ˜λŠ” 파일이 μ‘΄μž¬ν•˜λŠ”μ§€ 체크 ν›„ Boolean λ°˜ν™˜μ„ μ§„ν–‰ν•˜λŠ” 방법과 UIApplication 클래슀의 "canOpenURL:" ν•¨μˆ˜λ₯Ό 톡해 νƒˆμ˜₯κ³Ό κ΄€λ ¨λœ 앱이 μ‘΄μž¬ν•˜λŠ”μ§€ URL Scheme ν˜ΈμΆœν•˜λŠ” 2가지 방식이 μ‘΄μž¬ν•©λ‹ˆλ‹€. Example μ½”λ“œ NSString *filePath = @"/Applications/Cydia.app"; if ([[NSFileManager defaultManager] f..

MOBILE
[iOS] Objection μ£Όμš” λͺ…λ Ήμ–΄

κ°œμš” μ•± 진단을 ν•˜μ‹œλŠ” 뢄듀이라면 λŒ€ν‘œμ μœΌλ‘œ Frida, Drozer λ“± 을 μ‚¬μš©ν•˜μ‹œλ©΄μ„œ 동적, 정적 진단을 ν•˜μ‹œμ§€λ§Œ Objectionμ΄λΌλŠ” νˆ΄μ„ μ‚¬μš©ν•˜μ‹œλ©΄ λͺ‡ 가지 도ꡬ듀과 μ‘°ν•©ν•˜μ—¬ λ‹€μ–‘ν•œ μ‹œλ„λ₯Ό ν•  수 μžˆμŠ΅λ‹ˆλ‹€. Objection은 Run-Time Exploration 즉 λŸ°νƒ€μž„μ„ μ‘°μž‘ν•˜μ—¬ κ³΅κ²©μžκ°€ μ›ν•˜λŠ” ν–‰μœ„λ₯Ό μ„±κ³΅μ μœΌλ‘œ ν•  수 μžˆλ„λ‘ ν”„λ‘œμ„ΈμŠ€μ— μ‹€μ‹œκ°„μœΌλ‘œ μ£Όμž…ν•˜μ—¬ μ‚¬μš©ν•˜λ©° Frida 기반으둜 λ™μž‘ν•˜κΈ° λ•Œλ¬Έμ— Python3 ν™˜κ²½μ—μ„œ frida ν™˜κ²½μ„ 사전에 κ΅¬μΆ•ν•΄μ£Όμ‹œκ³  pip install을 톡해 objection을 μ„€μΉ˜ν•΄μ•Ό λ©λ‹ˆλ‹€. *프리닀 ν™˜κ²½ ꡬ좕 guleum-zone.tistory.com/137 프리닀(Frida) ν™˜κ²½ ꡬ좕 κ°œμš” Fridaλž€ Oleκ°€ κ°œλ°œν•œ DBI(Dynamic Binary..

MOBILE
[Android] Data Storage(Plain/Encryption) 취약점

κ°œμš” Mobile OWASP Top 10 쀑 아직도 높은 μˆœμœ„κΆŒμ— 자리 작고 μžˆλŠ” 취약점 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€. 일반적으둜 κ°œλ°œμžλ“€μ΄ 앱을 개발 κ΅¬ν˜„ν•˜λŠ” λ‹¨κ³„μ—μ„œ ν΄λΌμ΄μ–ΈνŠΈ 츑에 μ €μž₯λ˜λŠ” λ°μ΄ν„°λŠ” 타 μ‚¬μš©μžλ“€μ΄ μ‰½κ²Œ μ•‘μ„ΈμŠ€ ν•˜μ§€ λͺ»ν•˜λ„둝 μ œν•œμ„ ν•˜μ§€λ§Œ μƒŒλ“œλ°•μŠ€ ν™˜κ²½μΌμ§€λΌλ„ λ£¨νŒ… λ˜λŠ” νƒˆμ˜₯을 톡해 높은 κΆŒν•œμ„ νšλ“ν•˜κ²Œ 되고 보호 κΈ°λŠ₯을 μ‰½κ²Œ μš°νšŒν•˜μ—¬ μ•‘μ„ΈμŠ€κ°€ κ°€λŠ₯ν•΄μ§‘λ‹ˆλ‹€. 보톡 μ•…μ„± μ•±μ΄λ‚˜ μ•…μ˜μ μΈ μ‚¬μš©μžκ°€ λΆ„μ‹€λœ 단말을 λŒ€μƒμœΌλ‘œ κ°œμΈμ •λ³΄λ₯Ό νšλ“ν•  κ°€λŠ₯성이 μ‘΄μž¬ν•©λ‹ˆλ‹€. 1.log file 2.Plist file 3.androidmanifest.xml / SharedPreferecnes.xml 4.SQLite databases 5.Binary data stores 6.SD Card 7.Cloud synced μœ„μ˜ ..

MOBILE
[Android] Content Provider 취약점

κ°œμš” μ•ˆλ“œλ‘œμ΄λ“œμ˜ Content ProviderλŠ” "μ½˜ν…μΈ  제곡자 "λΌλŠ” 의미λ₯Ό 가지고 있으며 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 쀑앙 μ €μž₯μ†Œ 같은 역할을 ν•˜λŠ” 곡간에 λ‹€λ₯Έ 앱이 μ ‘κ·Όν•  수 μžˆλ„λ‘ λ„μ™€μ£ΌλŠ” 4λŒ€ μ»΄ν¬λ„ŒνŠΈ 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€. 주둜 파일 μ‹œμŠ€ν…œμ΄λ‚˜ SQLite λ°μ΄ν„°λ² μ΄μŠ€, Web 등을 ν†΅ν•΄μ„œ κ΄€λ¦¬ν•˜λ©° μ½˜ν…μΈ  ν”„λ‘œλ°”μ΄λ”λ₯Ό 톡해 λ‹€λ₯Έ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ €μž₯된 데이터에 접근이 κ°€λŠ₯ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ μ•± κ³Ό μ•± μ‚¬μ΄μ˜ 데이터 접근을 κ΄€λ¦¬ν•˜κ³  ν†΅μ œν•˜κΈ° μœ„ν•΄ "Content Resolver"λΌλŠ” μ€‘κ°œμž 역할이 μ‘΄μž¬ν•˜λŠ”λ° μ΄λ•Œ μ½˜ν…μΈ  제곡자의 μ£Όμ†ŒμΈ 즉 μ΄λ™ν•˜κ³ μž ν•˜λŠ” URIκ°€ λ“±λ‘λ˜μ–΄ μžˆμ–΄μ•Ό λ©λ‹ˆλ‹€. *uri ν˜•νƒœ -> content://user_dictionary/test λ“± Content ProviderλŠ” μ»΄ν¬λ„ŒνŠΈ 쀑 일뢀이기 ..

MOBILE