ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๊ฐœ์š”

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

์œ„์˜ ๊ตฌ์กฐ๋Š” OWASP ๋ฌธ์„œ์— ์œ ์‹ฌํžˆ ํŒŒ์•…๋  ํ•„์š”๊ฐ€ ์žˆ๋Š” ํŒŒ์ผ๋“ค ์ž…๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ํ•ญ๋ชฉ์„ ์ฐธ๊ณ ํ•˜์—ฌ ์ €์žฅ ํ˜•ํƒœ๋ฅผ ํŒŒ์•…ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

SharedPreferences.xml

์›์‹œํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” xml ํŒŒ์ผ๋กœ ์ดˆ๊ธฐ ์„ค์ • ๊ฐ’ ์ด๋‚˜ ์ž๋™ ๋กœ๊ทธ์ธ ์‹œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ„๋‹จํ•œ ๊ฐ’์„ ํŽธํ•˜๊ฒŒ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋ฉฐ SharedPreferences.xml ์— ์ €์žฅ๋œ ๊ฐ’์€ ๋Œ€์ƒ ์•ฑ์ด ์‚ญ์ œ๋˜๊ธฐ ์ „๊นŒ์ง€ ๋ณด์กด๋ฉ๋‹ˆ๋‹ค.

 

adb pull "๋ฐ์ดํ„ฐ๊ฒฝ๋กœ"

๋‚ด๋ถ€์— ์ €์žฅ๋œ ์ •๋ณด๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด Nox -> PC๋กœ ๊ฐ€์ ธ์˜ค๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

๋งค์šฐ ์ทจ์•ฝํ•œ ์ƒํƒœ๋ผ๋ฉด ํ‰๋ฌธ์œผ๋กœ ์ €์žฅ๋˜์–ด ์žˆ์—ˆ๊ฒ ์ง€๋งŒ ํ˜„์žฌ์˜ ๊ฒฝ์šฐ ์•”ํ˜ธํ™”๊ฐ€ ๋˜์–ด ์ €์žฅ์ด ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋˜ํ•œ ๊ฐ•๋ ฅํ•œ ์•”ํ˜ธํ™”๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ์ƒํƒœ๋ผ๋ฉด ์‰ฝ๊ฒŒ ํ•ด๋…์ด ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค.

 

EncryptedUsername ๊ฐ’์„ Base64 Decoding ํ•ด๋ณด๋ฉด ์‰ฝ๊ฒŒ ์‚ฌ์šฉ์ž์˜ ์ด๋ฆ„์„ ํš๋“ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ superSecurePassword ๋ณ€์ˆ˜๋Š” ์ €์žฅ๋œ ๊ฐ’์„ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์‰ฝ๊ฒŒ ๋…ธ์ถœ๋˜์ง€ ์•Š๋„๋ก ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

์–ด๋–ค ํ˜•ํƒœ๋กœ ์•”ํ˜ธํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ถ„์„์„ ํ†ตํ•ด ๋กœ์ง์„ ๋”ฐ๋ผ๊ฐ€ ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์ƒ๋‹จ์˜ ๋กœ์ง์„ ๋ณด๋ฉด ์‚ฌ์šฉ์ž์˜ ์ด๋ฆ„์€ Base64 ํ˜•ํƒœ๋กœ ๋น„๊ต์  ๊ฐ„ํŽธํ•œ ์ธ์ฝ”๋”ฉ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ํŒจ์Šค์›Œ๋“œ๊ฐ€ ๋‹ด๊ธฐ๋Š” ๋ณ€์ˆ˜์—๋Š” "AES" ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•˜์—ฌ ์‰ฝ๊ฒŒ ํ•ด๋…๋˜์ง€ ์•Š๋„๋ก ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

์•”ํ˜ธํ™”๊ฐ€ ์ˆ˜ํ–‰๋˜๋Š” ํด๋ž˜์Šค๋กœ ์ถ”์ ์„ ํ•˜๋‹ค ๋ณด๋ฉด ์œ„์ฒ˜๋Ÿผ ๋Œ€์นญํ‚ค๊ฐ€ ์‰ฝ๊ฒŒ ๋…ธ์ถœ์ด ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

ํš๋“ํ•œ ํ‚ค ๊ฐ’์„ ํ†ตํ•ด AES Decryption์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ํ•˜๋‹จ์˜ Output ๊ฐ’์ด ๋‚˜์˜ค๋Š”๋ฐ ์ด๋Š” ๋งˆ์ง€๋ง‰์œผ๋กœ Base64 Decoding์„ ๊ฑฐ์น˜๋ฉด ์›ํ•˜๋Š” ํŒจ์Šค์›Œ๋“œ ๊ฐ’์„ ํš๋“ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

SmFia0 AxMiMk ๊ฐ’์„ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋””์ฝ”๋”ฉํ•˜์—ฌ ์‚ฌ์šฉ์ž์˜ ํŒจ์Šค์›Œ๋“œ์ธ Jack@123$ ์„ ํš๋“ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ์ทจ์•ฝ์ ์˜ ๊ฒฝ์šฐ Local Encryption ์ทจ์•ฝ์ ์—๋„ ์†ํ•˜๋ฉฐ ์ด๋ณด๋‹ค ๋” ์ทจ์•ฝํ•œ ํ™˜๊ฒฝ์ด์—ˆ์„ ๊ฒฝ์šฐ ์•”ํ˜ธํ™” ์กฐ์ฐจ ๋˜์ง€ ์•Š์€ ํ‰๋ฌธ ์ƒํƒœ์ผ ๊ฐ€๋Šฅ์„ฑ๋„ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

 

SQLite Database

ํŠน์ • ์„œ๋ฒ„์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๊ธฐ๊ธฐ ๋‚ด๋ถ€์— ์กด์žฌํ•˜๋Š” ๊ฐ€๋ฒผ์šด ์ž„๋ฒ ๋””๋“œ ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ ๋™์ผํ•˜๊ฒŒ SQL๋ฌธ์„ ํ†ตํ•ด ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ํ…Œ์ด๋ธ” ํ˜•ํƒœ๋กœ ๊ฐ„๋‹จํžˆ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. 

 

์‚ญ์ œ๊ฐ€ ๋˜์–ด๋„ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋Š” ๊ฐ„๋‹จํžˆ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜๊ฑฐ๋‚˜ sharedpreferences๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณด๊ด€ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ž˜๋ชป ๋‚ ์•„๊ฐ€์ง€ ์•Š๊ธฐ ์œ„ํ•ด์„œ๋‚˜ ์ฝ๊ธฐ/์“ฐ๊ธฐ/์—…๋ฐ์ดํŠธ๊ฐ€ ์žฆ์€ ๋ฐ์ดํ„ฐ๋ผ๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ์„ ํ•ด๋‘๋Š” ๊ฒŒ ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค.

ํŠน์ • ์•ฑ์—์„œ ์‚ฌ์šฉ์ž์˜ ์ด๋ฆ„๊ณผ ํŒจ์Šค์›Œ๋“œ๋ฅผ SQLite Database์— ์ €์žฅํ•˜๋Š” ํ™˜๊ฒฝ์—์„œ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด Androgoat๋ฅผ ์„ค์น˜ํ•˜์—ฌ ์ง„ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋œ ์ •๋ณด๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„  ํ•ด๋‹น ํŒŒ์ผ์„ ๋กœ์ปฌ PC๋กœ ๊ฐ€์ ธ์™€ ๋ณ„๋„์˜ SQLite ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ํ…Œ์ด๋ธ” ์ •๋ณด๋ฅผ ์ฝ์–ด์„œ ํ™•์ธํ•ด ์ฃผ์…”์•ผ ๋ฉ๋‹ˆ๋‹ค.

 

adb pull "๋ฐ์ดํ„ฐ ๊ฒฝ๋กœ" "๋กœ์ปฌPC ๊ฒฝ๋กœ"

adb ๋ช…๋ น์„ ํ†ตํ•ด ๋กœ์ปฌ PC๋กœ ๊ฐ€์ ธ์˜ค๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

SQLite ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ "agoat" ํŒŒ์ผ์„ ์ฝ์–ด๋ณด๋ฉด ๊ฐ๊ฐ์— ์–ด๋–ค ํ…Œ์ด๋ธ”์ด ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

users ํ…Œ์ด๋ธ”๋กœ ์ ‘๊ทผํ•ด ๋ณด์‹œ๋ฉด ์กฐ๊ธˆ ์ „์— ์ž…๋ ฅํ–ˆ๋˜ ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ํŒจ์Šค์›Œ๋“œ๊ฐ€ ๋ณ„๋„์˜ ์•”ํ˜ธํ™”๊ฐ€ ๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ์ €์žฅ๋œ ๊ฒƒ์„ ํš๋“ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

# objection -g "ํŒจํ‚ค ์ง€๋ช…" explore
# cd "databaseํŒŒ์ผ๋กœ ๊ฒฝ๋กœ ์ด๋™"
# ls -> database ํŒŒ์ผ๋ช… ํ™•์ธ
# sqlite connect "ํŒŒ์ผ๋ช…"
# .tables -> ํ…Œ์ด๋ธ”๋ช… ํ™•์ธ
# select * from "ํ…Œ์ด๋ธ”๋ช…"

Objection์„ ์‚ฌ์šฉํ•˜์‹œ๋ฉด ๋ณ„๋„์˜ ํ”„๋กœ๊ทธ๋žจ ์—†์ด ํ•ด๋‹น ์•ฑ์— ๋‹ค์ด๋ ‰ํŠธ๋กœ attached ๋˜์–ด ์ปค๋งจ๋“œ ํ™˜๊ฒฝ์—์„œ ์‰ฝ๊ฒŒ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

tmp

์‹ค์ œ ์„œ๋น„์Šค ์ค‘์ธ ์•ฑ์—์„œ๋Š” ์‰ฝ๊ฒŒ ๋ฐœ๊ฒฌ๋  ํ™•๋ฅ ์€ ๋‚ฎ์€ ๋ถ€๋ถ„์ด์ง€๋งŒ ์‚ฌ์šฉ์ž๋ฅผ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐœ์ธ์ •๋ณด๋ฅผ ์ž„์‹œํŒŒ์ผ ํ˜•ํƒœ๋กœ ์ž ์‹œ ์ €์žฅํ•ด๋‘๋Š” ํ™˜๊ฒฝ์ผ ๊ฒฝ์šฐ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ •๋ณด๋ฅผ ํš๋“ํ•˜์—ฌ ํƒˆ์ทจ๋‹นํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

 

SD card

์™ธ๋ถ€ ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ ๋ˆ„๊ตฌ๋‚˜ ์ฝ๊ณ  ์“ฐ๊ธฐ๊ฐ€ ๊ฐ€๋Šฅํ•œ ์˜์—ญ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฏผ๊ฐ์ •๋ณด๊ฐ€ ์ €์žฅ๋˜์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ €์žฅ์„ ํ•ด์•ผ ๋˜๋Š” ํ™˜๊ฒฝ์ด๋ผ๋ฉด "javax.crypto" ๋˜๋Š” "EncryptedFile" ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ด ์•”ํ˜ธํ™”๋ฅผ ํ•ด์ฃผ์…”์•ผ ๋ฉ๋‹ˆ๋‹ค.

 

์ž„์˜์˜ ์‚ฌ์šฉ์ž์˜ ์ด๋ฆ„๊ณผ ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์™ธ๋ถ€ ์ €์žฅ์†Œ์— ์–ด๋–ค ํ˜•ํƒœ๋กœ ์ €์žฅ๋˜๋Š”์ง€ ํ™•์ธํ•ด ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์šฐ์„  androidmanifest.xml ๋‚ด๋ถ€๋ฅผ ๋ณด์‹œ๋ฉด WRITE_ENTERNAL_STORAGE ์™€ READ_ENTERNAL_STORAGE ์— ๊ถŒํ•œ์ด ์„ค์ •์ด ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋กœ์ง์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ํŠน์ • ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒ€์ƒ‰ํ•ด๋ณธ ๊ฒฐ๊ณผ SDcard์™€ ์—ฐ๊ด€๋œ ๋ถ€๋ถ„์ด ํ™•์ธ๋ฉ๋‹ˆ๋‹ค.

 

์†Œ์Šค ๋กœ์ง์„ ํ™•์ธํ•ด๋ณด๋ฉด editText๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž์˜ ์ด๋ฆ„๊ณผ ํŒจ์Šค์›Œ๋“œ๋ฅผ ๋ฐ›์•„ ์ž…๋ ฅ๋œ ๊ฐ’์„ ์™ธ๋ถ€ ์ €์žฅ์†Œ์— "users"์™€ "tmp"๋ช…์œผ๋กœ ์ƒ์„ฑํ•˜๊ณ  ์žˆ๊ณ  ๋ณ„๋„์˜ ์•”ํ˜ธํ™”๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

sdcard ๋””๋ ‰ํ† ๋ฆฌ์— ์ ‘๊ทผํ•ด๋ณด๋ฉด "user tmp" ๋ช…์„ ํฌํ•จํ•˜๋Š” ์ž„์‹œํŒŒ์ผ์ด ํ™•์ธ๋ฉ๋‹ˆ๋‹ค.

 

๋‚ด๋ถ€๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด ์ €์žฅ๋œ ๊ฐ’์€ ์•”ํ˜ธํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์€ ํ‰๋ฌธ ํ˜•ํƒœ๋กœ ์ €์žฅ๋˜๊ณ  ์žˆ์œผ๋ฉฐ ํ•ด๋‹น ์ •๋ณด๋ฅผ ํ†ตํ•ด ์ถ”๊ฐ€์ ์ธ ์•…์šฉ ๋ฒ”์ฃ„๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

'MOBILE' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[iOS] Functions Hooking  (1) 2021.09.24
[iOS] Objection ์ฃผ์š” ๋ช…๋ น์–ด  (0) 2021.02.14
[Android] Content Provider ์ทจ์•ฝ์   (2) 2021.02.10
[Android] Broadcast Receiver ์ทจ์•ฝ์   (0) 2021.02.09
[Android] Activity Component ์ทจ์•ฝ์   (0) 2021.02.08
๊ณต์œ ํ•˜๊ธฐ ๋งํฌ
Comment