딥링크(Deeplink)


딥링크(Deeplink)

Deeplink는 URI를 통해 어플리케이션을 작동하기위한 하나의 기능이다. 일반적으로 https://www.naver.comopen in new window 등의 URL을 클릭하면 자동으로 웹 브라우저가 실행된다. 운영체제는 어떻게 웹 브라우저를 실행시켜줄까? 이는 바로 웹 브라우저가 이 기능을 “명시”하였기 때문이다. 안드로이드 운영체제의 경우에는 AndroidManifest.xml에서 Browsable로 본인이 실행 되고 싶은 intent를 명시한다. 안드로이드 크롬 어플리케이션 또한 http 또는 https 로 실행될 때 해당 앱의 특정 클래스를 로딩해달라는것이 명시되어있다. 다른 일반적인 예시로는 동영상 플레이어가 있다. 파일어플리케이션이나 웹 브라우저에서 다운로드받은 동영상을 클릭하면 동영상 앱이 뜨는 경우가 있다. 이 또한 동영상 플레이어마다 AndroidManifest.xml에 명시된 규칙에 따라 실행되는 것이다. 안드로이드의 경우 동영상 플레이어가 여러개 설치되어있는 경우 어떤 동영상 플레이어로 실행할지 고르는 팝업이 뜨는데, 이는 해당 동영상 플레이어들의 실행 규칙에 해당하기 때문이다. - 출처open in new window

2. 앱 분석

Manifest

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

DeepLink

이처럼 브라우저를 통해 http://xe1.comopen in new window 으로 연결시에 Oh Bank로 연결되는 것을 볼 수 있다.

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

SendMoney

해당 if 문의 조건을 확인하면 SendMoney Activity가 실행 될 때 DeepLink를 통해 실행될 때 Intent를 통해 data를 받아오기 때문에 DeepLInk로 실행 될 때만 if 문의 내용으로 들어가는 것을 알 수 있다. 또한 if 문의 내용으로는 data에서 파라메터로 account와 money라는 값을 받아오는 것을 알 수 있다.

2. 공격 방법

이와 같은 방식을 이용하여 http://xe1.com?account=282838&money=500open in new window 처럼 해커의 account와 원하는 금액을 넘기는 URL를 만들고 Short URL을 이용하여 URL을 감춘 뒤

Phising

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

DeepLink2

이처럼 Oh Bank를 통해 열리게 되어 SendMoney가 작동하여 사용자 자신도 모르는 사이에 해커의 account로 인증도 없이 이체가 되어버린다..

Hacking