가. 개발 방식 별 차이 및 장단점
- 모바일 앱의 개발방식은 크게 4가지로 분류된다.
개발 방식 | 앱 설치 여부 | 디바이스 기능 접근 | 개발 언어 | 개발 시간/비용 |
네이티브 앱 | O | O | 네이티브 전용 Kotlin, Java, Swift, Objective C 등 |
높은 개발 비용 오랜 개발 기간 |
웹 앱 | X | X | 웹 전용 HTML, CSS, Javascript 등 |
효율적인 개발 비용 짧은 개발 기간 |
모바일 웹 | ||||
하이브리드 앱 | O | O | 네이티브 앱 + 웹 | 효율적인 개발 비용 짧은 개발 기간 |
1. 네이티브 앱(Native App)
1.1. 정의
- 모바일 기기에 최적화된 *네이티브 언어로 개발된 앱을 말한다.
*네이티브 언어 : [안드로이드 : 코틀린(Kotlin), 자바(Java)], [iOS : 스위프트(Swift), 오브젝티브 C(Objective C)]
예시) 카카오톡, 유튜브, 페이스북, 인스타그램 등
1.2. 장점
- 각 운영체제에 최적화된 방식으로 만들어지므로 앱의 구동 속도가 빠르고 안정적이다.
- 높은 사양의 그래픽으로 원하는 디자인을 구현할 수 있다.
- 디바이스 전체에 접근 권한을 가질 수 있기 때문에 기기 자체의 기능을 앱에 활용할 수 있다.
1.3. 단점
- 다른 운영체제에서 호환이 되지 않기 때문에 안드로이드와 iOS 앱을 별도로 개발해야 한다.
- 다른 앱 개발 방식에 비해 제작하는 데에 비용과 시간이 많이 든다.
- 앱에 수정사항이 생기는 경우 *앱 마켓의 심사를 거치고 전체 업데이트를 진행해야 한다.
*앱 심사 : 앱 마켓에 등록할 때 앱의 적절성과 안전성등을 심사받는 것을 말함.
1.4. 예시
- 카카오톡, 유튜브, 페이스북, 인스타그램, 고사양의 그래픽을 요구하는 앱 등
2. 웹 앱(Web App)
2.1. 정의
- 웹 브라우저를 통해 사용할 수 있는 앱을 말하며, 네이티브 앱처럼 보이도록 구현되어 있다.
- 네이티브 앱과 달리 *웹 기반의 언어로 개발된다.
*웹 기반 언어 : HTML, CSS, Javascript 등.
2.2. 장점
- 웹 브라우저를 기반으로 작동하기 때문에 별도의 앱을 설치하지 않아도 된다.
- 표준 웹 언어로 만들 수 있기 때문에 상대적으로 제작 비용이 저렴하고 개발 기간도 짧은 편이다.
- 수정사항이 생겨도 앱 마켓의 심사를 거치치 않아도 되기 때문에 업데이트 속도가 빠르다.
2.3. 단점
- 디바이스에 접근 권한이 없기 때문에 카메라나 음성 인식 등의 기능을 활용할 수 없다.
- 앱 설치 대신 웹 브라우저 실행, url 입력 및 별도의 링크 클릭 등의 번거로운 과정을 거쳐야 한다.
- 네이티브 앱에 비해 상대적으로 구동 속도가 느리고 안정성도 떨어진다.
2.4. 예시
- 네이티브 앱처럼 보이고 도메인에 'm'이 붙은 사이트들이 대표적인 예시이다.
3. 모바일 웹(Mobile Web)
3.1. 정의
- 웹 앱과 같이 웹 브라우저를 통해 사용할 수 있고, 동일한 장단점을 가지고 있지만 아래와 같은 차이점을 가진다.
개발 방식 | 정의 | 실행 방식 |
모바일 웹 | 데스크탑 웹 브라우저를 기준으로 제작된 뒤 모바일 화면 규격에 맞게 폰트나 이미지 등을 줄여 놓은것 | 풀 브라우저 방식(Full Browsing) |
웹 앱 | 처음부터 모바일을 기준으로 제작되기 때문에 스마트폰 이용자에게 훨씬 편안한 환경을 제공 | 단일 페이지 방식(SPA) |
3.2. 풀 브라우저 방식(Full Browsing)
- 화면 일부분이 변경될 때 화면 전체 내용을 서버에서 새로 받아오는 방식을 말한다.
- 페이지 리로드(Page Reload) 시 전체 내용을 새로 받아와야 하기 때문에 단일 페이지 방식보다 속도가 느리다.
- 전통적인 웹 애플리케이션 실행 방식(Traditional Page Lifecycle)에 가깝다.
3.3. 단일 페이지 방식(SPA, Single Page Application)
- 최초 접속 시 한 번에 페이지 전체를 받아오고, 화면 일부분이 변경/요청될 때 해당 부분만 *Ajax를 통해 *데이터를 바인딩하는 방식을 말한다.
*Ajax(Asynchronous JavaScript and XML) : 웹 애플리케이션에서 *비동기적으로 서버와 데이터를 교환하기 위한 기술이나 기법을 가리킵니다.
*비동기 방식 : 웹페이지를 리로드 하지 않고도 동적으로 데이터를 로드하거나 서버와 통신할 수 있게 해주는 방식을 말함.
*데이터 바인딩 : 화면에 보이는 데이터와 브라우저 메모리에 있는 데이터를 일치시키는 기법.
3.4. 디자인 방식(최적화 방식)
- 웹 앱과 모바일 앱 모두 *적응형 웹(Adaptive Web)과 *반응형 웹(Responsive Web) 방식을 상용하여 네거티브 앱처럼 보이게 한다.
*적응형 웹 : 데스크톱, 태블릿, 모바일 등의 템플릿을 만들어두고 웹에 접근한 디바이스에 맞는 템플릿을 제공하는 방식.
*반응형 웹 : 해상도에 따라 페이지의 크기 및 레이아웃을 조절하는 기술.
3.5. 예시
- 데스크톱 웹 브라우저 화면과 큰 차이가 없고 크기만 줄어든 사이트들이 하나의 예시이다.
4. 하이브리드 앱(Hybrid APP)
3.1. 정의
- 네이티브 앱과 웹 앱의 개발 방식을 모두 사용한 방식을 말한다
- 앱의 화면이나 주요 기능 등은 웹 기반 언어로 개발되고, 웹뷰(WebView)를 통해 동작한다.
*웹뷰 : 모바일 앱에 내장된 미니 웹 브라우저.
- 웹뷰는 JavaScript 인터페이스를 통해 앱과 데이터를 주고받을 수 있다.
- 겉모습은 일반 사용자가 보기엔 네이티브 앱처럼 느껴진다.
3.2. 장점
- 웹 기술을 기반으로 제작되지만, 모바일 API도 사용할 수 있으므로 디바이스의 자체 기능을 활용할 수 있다.
- 네이티브 앱에 비해 개발 비용 및 시간을 절약할 수 있다.
- 한 번 개발해 두면 패키징을 바꾸는 방식으로 여러 플랫폼에 대응할 수 있다.
3.3. 단점
- 네이티브 앱 개발 지식이 필요하다.
- 브라우저의 성능이 떨어지면 앱 구동 속도가 저하된다.
- 네이티브 앱에 비해 디자인의 자유도가 떨어진다.
3.4. 예시
- 네이버, 다음, 구글 등
나. 개발 방식 별 진단방법
1. 네이티브 앱
- 네트워크 패킷 분석 툴(WireShark)을 이용하여 평문으로 전송되는 중요정보가 있는지 확인한다.
- 디버깅 툴(Frida)과 리버싱 툴(Ghidra)등을 이용하여 취약점 진단을 수행한다.
2. 웹 앱, 모바일 앱
- 웹 애플리케이션 취약점 진단 체크리스트를 기준으로, 웹 프록시 툴(BurpSuite)을 사용하여 진단을 수행한다.
3. 하이브리드 앱
- 웹으로 동작하는 기능은 "2. 웹 앱, 모바일 앱"과 동일하게 취약점 진단을 수행한다.
- 그 외 기능은 "1. 네이티브 앱"과 동일하게 취약점 진단을 수행한다.
- *다양한 이유로 Javascript 파일이 앱 내 저장공간에 존재하는 경우가 있다. 이때 Javascript 파일에 대한 암호화가 이루어지지 않을 경우, 공격자가 파일의 내용을 변조하여 보안기능을 우회할 수 있으므로 암호화 여부를 꼭 체크하여야 한다.
*다양한 이유 : 페이지 리로드시 지연되는 시간 감소, 모바일 데이터 사용량 감소 등
'Mobile App 취약점 진단 · 모의해킹 > iOS App 취약점 진단 · 모의해킹' 카테고리의 다른 글
Odysseyra1n Sileo Tweak 설치 방법 정리(오류 해결) (0) | 2023.11.25 |
---|---|
아이폰 탈옥 방법 - Odysseyra1n(오디세이레인) (0) | 2023.11.22 |
[iOS 취약점 진단] 16강 - Web View 종류 및 취약점 (0) | 2023.11.04 |
스마트폰 와이어샤크 네트워크 패킷 캡처 방법 정리 (0) | 2023.11.03 |
[iOS 취약점 진단] 15강 - 로컬 인증(Touch ID/Face ID) 우회 (0) | 2023.10.30 |