웹뷰(WebView)


웹뷰(WebView)

1. 설명

웹뷰(WebView)란 프레임워크에 내장된 웹 브라우저 컴포넌트로 뷰(View)의 형태로 앱에 임베딩하는 것을 말한다. 즉, WebView는 앱 내에 웹 브라우저를 넣는 것이다. 웹 페이지를 보기 위해서 혹은 앱 안에서 HTML을 호출하여 앱을 구현하는 하이브리드 형태의 앱을 개발하는데에도 많이 사용된다. - 출처open in new window

2. 앱 분석

Manifest

jadx를 통해 Oh Bank의 apk 파일을 분석해보면 AndroidManifest.xml 파일에 http://xe.comopen in new window, https://xe.comopen in new window 에 대해서 DeepLink가 설정되어 CurrencyRates에 연결되는 것을 확인할 수 있다.

또한 CurrenyRates Class를 살펴보면 onCraete 메소드 코드는 다음과 같이 작성되어 있다.

image

해당 코드를 보면 기본적으로 Intent를 통해 data가 들어오지 않았을 때는 정상적인 xe.comopen in new window 페이지를 연결하여 환전에 대한 페이지를 WebView를 통해 앱 내에서 보여준다. 그러나 data가 존재한다면 해당 data에서 URL을 키 값으로 통해 URL을 가져와서 xe.comopen in new window 페이지가 아닌 해당 URL을 WebView를 통해 앱 내에서 보여주는 것을 알 수 있다.

3. 공격 방법

이와 같은 방식을 이용하여 http://xe.com?url=http://192.168.145.15:3001open in new window 처럼 해커의 피싱 사이트가 연결된 URL을 파라메터로 넘겨주어 해당 링크를 Short URL을 이용해 감춘 뒤

image

다음과 같은 피싱 메세지를 보낸 후 사용자가 해당 링크를 클릭하게 되면

image

이처럼 Oh Bank를 통해 열리게 되며

image

Oh Bank 앱 내의 WebView를 통해 피싱 사이트가 열리게 된다. 사용자는 이를 DeepLink를 통해 앱이 실행되었으므로 앱 내의 기능이라 착각할 수 있으며 사용자가 해당 피싱 사이트에서 정보를 입력 후 전송하기 버튼을 누르면

image

해커의 서버에 해당 내용이 전송되어 저장된다..