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

๊ฐœ์š”

์•ˆ๋“œ๋กœ์ด๋“œ์˜ Activity๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ 4๋Œ€ ๊ตฌ์„ฑ๋‹จ์œ„ ์ค‘ ํ•„์ˆ˜์ ์ธ ์š”์†Œ๋กœ ์ธํ…ํŠธ(Intent)๋ผ๋Š” ์ผ์ข…์˜ ๋ฉ”์‹œ์ง€ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ„์— ์ƒํ˜ธ์ž‘์šฉ์„ ํ•˜๋ฉด์„œ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํฌํ•จํ•œ ํ•˜๋‚˜์˜ ํ™”๋ฉด์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. 4๋Œ€ ์ปดํฌ๋„ŒํŠธ ์ค‘ ๊ฐ€์žฅ ๋งŽ์ด ์ƒ์šฉ๋˜๋ฉฐ ์ฃผ๋กœ UI(User Interface)ํ™”๋ฉด์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

 

https://google-developer-training.github.io/android-developer-fundamentals-course-concepts-v2

์˜ˆ์‹œ๋กœ ์ด๋ฉ”์ผ ์•ฑ์˜ Activity์— ๋Œ€ํ•ด ๊ฐ„๋‹จํ•˜๊ฒŒ ์ƒ๊ฐํ•ด๋ณด์ž๋ฉด

(1) ์ด๋ฉ”์ผ ๋ชฉ๋ก์„ ํ‘œ์‹œ

(2) ์ด๋ฉ”์ผ ์ž‘์„ฑ

(3) ์ „๋‹ฌ๋ฐ›์€ ์ด๋ฉ”์ผ ์ฝ๊ธฐ

๋“ฑ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์ด ์กด์žฌํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์—ฌ๋Ÿฌ Activity๊ฐ€ ํ•จ๊ป˜ ๋™์ž‘ํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด๊ธฐ ์‰ฌ์šด ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•˜์ง€๋งŒ (1), (2), (3) ๊ฐ๊ฐ์ด ๋…๋ฆฝ๋˜์–ด ์‹คํ–‰ ๋ฉ๋‹ˆ๋‹ค. ๋งˆ์น˜ (2) ์ด๋ฉ”์ผ ์ž‘์„ฑ์„ ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” Activity๊ฐ€ ํ—ˆ์šฉ๋˜์–ด ์žˆ์„ ๊ฒฝ์šฐ ์‚ฌ์ง„(๋‹ค๋ฅธ ์•ฑ)์—์„œ ๊ฐ€์ ธ์™€ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

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

 

ํ•ด๋‹น ์ทจ์•ฝ์ ์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋™์  ๋ถ„์„๋„๊ตฌ์ธ "Drozer(๋“œ๋กœ์ €)"๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

๊ตฌ์ถ• ๋ฐฉ๋ฒ•์€ ํ•˜๋‹จ์˜ ํฌ์ŠคํŒ… ์ฐธ๊ณ 

guleum-zone.tistory.com/152

 

[Android] ๋“œ๋กœ์ €(Drozer) ํ™˜๊ฒฝ ๊ตฌ์ถ•

๊ฐœ์š” Drozer๋Š” FSecureLABS์—์„œ ๊ฐœ๋ฐœํ•œ ์•ˆ๋“œ๋กœ์ด๋“œ ๋™์  ๋ถ„์„ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ PC์™€ ๋””๋ฐ”์ด์Šค ์‚ฌ์ด์˜ Agent๋ฅผ ํ†ตํ•ด ์•ฑ์˜ ์ทจ์•ฝ์„ฑ์„ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๋“œ๋กœ์ € ์ „์— Mercury๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉ๋˜์—ˆ

guleum-zone.tistory.com


Using Drozer

๋“œ๋กœ์ € ์ฝ˜์†”์„ ํ†ตํ•ด Activity๋ฅผ ํ˜ธ์ถœํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ž์‹ ์˜ ๋””๋ฐ”์ด์Šค์™€ ์—ฐ๊ฒฐ์„ ํ•ด๋‘๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์•ˆ์ „ํ•˜์ง€ ์•Š์€ ์•กํ‹ฐ๋น„ํ‹ฐ ๊ถŒํ•œ์„ ํ™•์ด ํ•˜๊ธฐ ์œ„ํ•ด Androidmanifest.xml ํŒŒ์ผ์„ ํ™•์ธํ•ด๋ด์•ผ ๋ฉ๋‹ˆ๋‹ค. jadx๋ฅผ ํ†ตํ•ด ๋””์ปดํŒŒ์ผํ•˜์—ฌ ํ™•์ธํ•ด ๋ณธ ๊ฒฐ๊ณผ ํŒจ์Šค์›Œ๋“œ ๋ณ€๊ฒฝ ๊ด€๋ จํ•œ ์•กํ‹ฐ๋น„ํ‹ฐ ํ˜ธ์ถœ์ด "True"๋กœ ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.

 

Activity๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„  ๋ฐ˜๋“œ์‹œ ๋งค๋‹ˆํŽ˜์ŠคํŠธ ํŒŒ์ผ์— ๋“ฑ๋ก๋˜์–ด ์žˆ์–ด์•ผ ๋ฉ๋‹ˆ๋‹ค. jadx ํ”„๋กœ๊ทธ๋žจ ์ด์™ธ์—๋„ ๋“œ๋กœ์ € ๋ช…๋ น์„ ์ด์šฉํ•˜์‹œ๋ฉด ์ข€ ๋” ํŽธํ•˜๊ฒŒ ๋‚ด๋ถ€ ์„ค์ • ์ •๋ณด๋ฅผ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

๋™์  ๋ถ„์„๋„๊ตฌ์ธ "๋“œ๋กœ์ €"๋ฅผ ํ†ตํ•ด ๊ณต๊ฒฉ ํ‘œ๋ฉด์„ ์Šค์บ”ํ•ด๋ณธ ๊ฒฐ๊ณผ 5๊ฐœ์˜ Activity๊ฐ€ ์™ธ๋ถ€์— ๋…ธ์ถœ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์•„Activity๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ View๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์™ธ๋ถ€์— ๋…ธ์ถœ๋œ 5๊ฐœ์˜ Activity ์ •๋ณด๋ฅผ ์ƒ์„ธํ•˜๊ฒŒ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ Permission: null์ด๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ํ†ตํ•ด ๋ณ„๋„์˜ ๊ถŒํ•œ์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

์ž‘์„ฑ๋œ ๋กœ์ง์— ์˜ํ•˜๋ฉด ํŒจ์Šค์›Œ๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด์„  "Login"์„ ์„ ํ–‰ํ•˜๊ณ  "Login"๋œ ๊ณ„์ •์— ํ•œํ•ด์„œ ์ •๋ณด๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋„๋ก ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋กœ๊ทธ์ธ์ด ๋˜์–ด ์žˆ์ง€ ์•Š์€ ์ƒํƒœ์—์„œ ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ๊ถŒํ•œ์„ ๊ฐ€์ง„ ChangePassword๋ฅผ ํ˜ธ์ถœํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

drozer๋ฅผ ํ†ตํ•ด ํ˜ธ์ถœํ•ด๋ณธ ๊ฒฐ๊ณผ ๊ธฐ์กด์— "Login" ๋กœ์ง ์ธ์ฆ์„ ์šฐํšŒํ•˜๊ณ  ์ ‘๊ทผํ•˜๊ณ ์ž ํ•˜๋Š” ํŽ˜์ด์ง€๋กœ ๋„˜์–ด์˜จ ๊ฒƒ์„ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


์ด๋ฒˆ์—๋Š” ์•ˆ๋“œ๋กœ ๊ณ ํŠธ๋ฅผ ํ†ตํ•ด ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ์•กํ‹ฐ๋น„ํ‹ฐ ํ˜ธ์ถœ์„ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์ž์‹ ์˜ ์ธ๋ณด์ด์Šค ๋‚ด์—ญ์„ ๋‹ค์šด๋ฐ›๊ธฐ ์œ„ํ•ด์„  ๊ธฐ์กด์— "PIN"์ฝ”๋“œ๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ๊ฒ€์ฆ์„ ํ•˜๋„๋ก ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋“œ๋กœ์ €๋ฅผ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์•ˆ๋“œ๋กœ ๊ณ ํŠธ์˜ ํŒจํ‚ค์ง€ ๋ช…์„ ์•Œ๊ณ  ์žˆ์–ด์•ผ ๋ฉ๋‹ˆ๋‹ค.

 

๋“œ๋กœ์ €๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋™์  ๋ถ„์„์„ ํ•ด๋ณด๋ฉด ์™ธ๋ถ€์— ๋…ธ์ถœ๋œ 2๊ฐœ์˜ Activity๊ฐ€ ํ™•์ธ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋…ธ์ถœ๋œ SplashActivity์™€ AccessControl1ViewActivity ์— Permission: null์ด ๋ถ€์—ฌ๋œ ๊ฒƒ์œผ๋กœ ๋ณด์•„ ๋ณ„๋„์˜ ์ ‘๊ทผ ๊ถŒํ•œ์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋งค๋‹ˆํŽ˜์ŠคํŠธ์˜ ์„ค์ • ์ •๋ณด๋ฅผ ํ™•์ธํ•ด๋ณธ ๊ฒฐ๊ณผ exported: "true"๋Š” ํ™•์ธ๋˜์ง€ ์•Š์ง€๋งŒ ๋ณ„๋„์˜ ์ ‘๊ทผ๊ถŒํ•œ์ด ๋ถ€์—ฌ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

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

 

jadx๋กœ ์•ˆ๋“œ๋กœ๊ณ ํŠธ.apk๋ฅผ ๋””์ปดํŒŒ์ผํ•˜์—ฌ ์–ด๋–ค ์—ฐ๊ด€์ด ์žˆ๋Š”์ง€ ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰์„ ํ†ตํ•ด ํ™•์ธํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

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

 

์™ธ๋ถ€์— ๋…ธ์ถœ๋œ AccessControl1ViewActivity๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ PIN ์ฝ”๋“œ ์ž…๋ ฅ ์—†์ด ๋ฐ”๋กœ DownloadInvoiceService ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅํ•œ์ง€ ์‹คํ–‰ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์„ฑ๊ณต์ ์œผ๋กœ ๋ณ„๋„์˜ PIN์ฝ”๋“œ ์ž…๋ ฅ ์—†์ด ๋ฐ”๋กœ ๋‹ค์Œ ๋กœ์ง์œผ๋กœ ์šฐํšŒํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ ํ™•์ธํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

๋Œ€์‘๋ฐฉ์•ˆ

1. Androidmanifest.xml ํŒŒ์ผ ์†์„ฑ ์„ค์„ฑ
- ์‚ฌ์šฉ์ด ๋ถˆํ•„์š”ํ•œ ๊ฒฝ์šฐ android : exported ="false" #true์ผ ๊ฒฝ์šฐ ํ™œ์„ฑํ™”
2. ์‚ฌ์šฉ์ž ์ง€์ • ๊ถŒํ•œ์œผ๋กœ ์•ก์„ธ์Šค ์ œํ•œ
- activity์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์ง€์ •(๊ฐœ๋ฐœ์ž, ์ด๋ฉ”์ผ ๋“ฑ ์œ ์ผํ•œ ๊ฐ’)์„ ํ†ตํ•ด ์•„๋ฌด๋‚˜ ์•ก์„ธ์Šค ํ•  ์ˆ˜ ์—†๋„๋ก ์ง€์ •
ex) ์‚ฌ์ „์— permission="com.secure.test" ๋ผ๊ณ  ์คฌ๋‹ค๋ฉด ๋งค๋‹ˆํŽ˜์ŠคํŠธ ์„ค์ •์—๋„<uses-permission name= "com.secure.test/> ๋ผ๊ณ  ๋ช…์‹œํ•ด์ค˜์•ผ๋จ

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

[Android] Content Provider ์ทจ์•ฝ์   (2) 2021.02.10
[Android] Broadcast Receiver ์ทจ์•ฝ์   (0) 2021.02.09
[Android] Rooting ํƒ์ง€ ์šฐํšŒ(Objection)  (0) 2021.02.07
[Android] SSL Pinning ์šฐํšŒ  (0) 2021.02.06
[Android] Burp Suite ์—ฐ๋™(NOX)  (0) 2021.02.05
๊ณต์œ ํ•˜๊ธฐ ๋งํฌ
Comment