1. 개요
디지털 환경이 발전할수록, 악성 앱과 피싱 앱은 그 기법을 점차 고도화하며 사용자들을 노리고 있다. 특히 스마트폰 사용이 일상화된 지금, 안드로이드 기기를 표적으로 한 악성 앱들이 빠르게 증가하고 있다. 이 포스팅에서는 이러한 악성 앱들이 어떻게 작동하며, 어떤 방식으로 사용자에게 위협을 가하는지 실제 사례와 함께 분석한다.
이 글을 통해 일상에서 자주 접할 수 있는 악성 앱의 흔적을 알아차리는 방법과, 안전하게 모바일 기기를 사용하는 팁을 제공하여 사용자의 정보 보안 의식을 높이는 데 도움을 주고자 한다.
DISCLAIMER
이 분석은 특정 시점에서 관찰된 악성 행위에 대해 서술하고 있으며, 해당 앱의 전체 기능이나 미래에 발생할 수 있는 모든 변동 사항을 다루지 않습니다. 따라서 이후에 앱이 업데이트되어 새로운 악성 행위가 추가되거나, 다른 유사한 앱에서 유사한 악성 행위가 발견될 수 있습니다. 이 포스팅은 참고 자료로서 제공되는 것이며, 특정 앱의 악성 여부를 완전히 보증하거나 모든 가능성을 포괄하지 않음을 알려드립니다.
필자는 어떤 단체에 소속되지 않은 개인으로서 특정 집단을 대표하거나 의견을 대변하지 않습니다.
2. 초대 코드 입력 피싱앱
악성 앱에서 '초대 코드' 입력을 요구하는 이유는 탐지를 피하고 특정 사용자에게만 기능을 제공하기 위해서이다. 분석가나 자동화된 분석 도구를 회피하고 앱 마켓의 검열을 피하고자 하는 목적도 있다. 또한, 정상 사용자와 공격 대상을 구분하여 초대 코드를 타겟으로 한 사용자에게만 부여하여 악성 기능을 활성화하게 하는 필터 역할을 한다. 모든 사용자에 대해 모든 악성 기능을 노출하는 대신, 코드 입력을 통해 선별된 사용자만 공격 대상으로 삼을 수 있다.
사회 공학적인 기법을 사용하여 초대 코드를 사용하면, 피해자에게 신뢰를 형성하거나 "초대된 사람"만 사용할 수 있다는 식으로 접근하여 심리적으로 방심하게 만들 수 있다.
필자는 피싱앱의 사용자도, 피해자도 아닌 분석가이기 때문에 앱 분석의 입장에서 악성행위를 어떻게 수행하는지 분석한다. 초대 코드가 없으면 악성 기능이 활성화되지 않기 때문에, 분석 중에 해당 기능이 드러나지 않아 앱이 정상적이라고 오인할 수 있다.
분석 대상 앱은 HBDILDO 앱이다. 분석 난이도가 있는 편이었다.
앱을 처음 실행하면 아이디와 패스워드를 입력받고 있어 허용된 사용자만 입장가능한 것처럼 꾸며놓은 로그인 화면이 보인다. 실시간으로 공격자에게 초대코드를 받지 않으면, 입장할 수 없는 구조이다.
3. 분석
임의로 초대코드를 입력하고 프록시 도구를 이용하여 응답을 확인하면, 실제로 공격자의 서버로 초대코드가 전송되며 서버에서 검증하고 있는 것을 확인할 수 있다. 초대코드의 정합성 여부를 서버에서 검증하고, HTTP 응답을 받아 앱이 다음 동작을 정의하는 구조일 것으로 예상할 수 있다.
그런데 입력란은 ID(전화번호)/PW만 존재하는데 프록시 도구를 통해 살펴본 데이터는 전화번호, "123456", 휴대전화모델명이다. 타겟이 어떤 휴대전화를 사용하는지 먼저 파악하고 있다. 그리고 입력한 패스워드는 전송하지 않고 있다.
또한 분석을 방해하기 위한 DEX 사이드로딩도 적용되어 있다. 앱파일 /asset 경로에 dex 파일을 위치하고 설치 및 실행시점에 동적으로 로딩한다. 이 파일은 공격자 서버와 피해자 단말 사이에 데이터를 송수신하는 기능이 구현되어 있어 악성행위 범위에 포함되므로 디컴파일 및 분석시 포함하여 분석한다.
사이드로딩된 DEX 파일을 분석하면 공격자의 서버 주소 및 피해자 단말의 어떤 정보가 전송되는지 확인할 수 있다. 서버는 현재 기준 동작하지 않기 때문에 상세 분석은 어렵지만, 악성행위를 식별하는 데는 충분하다.
앱의 첫 화면은 웹뷰로 구성되어 있는데 공격 서버로부터 받아오는 것이 아닌 앱 내에 저장된 파일에서 로드한다. 웹뷰와 자바스크립트로 구성된 화면은 사용자의 입력값을 서버로 전송하는 코드를 포함하고 있다. 정보 입력 후 로그인 버튼을 클릭하면 입력한 정보가 전송됨을 이미 파악하였다. 자바스크립트 코드를 좀 더 분석해 보았다.
전송된 패킷에 포함된 임의 문자열 "123456"은 html 내 히든 속성으로 포함되어 있었다. 이 속성을 제거하면 기본 값으로 코딩된 값을 확인할 수 있다.
같은 폴더 내에는 여러 자바스크립트 파일들이 존재하는데 이중 dm.js 파일에 주요 악성행위가 구현되어 있다. 코드 내 bind_ui() 함수에서 앱 화면을 구성하고 초대코드를 처리하는 로직을 포함하고 있다.
'로그인' 버튼 클릭시 호출되는 콜백함수를 분석하면 두 개의 입력폼(전화번호, 비밀번호)에 대한 사용자 입력 값을 저장하고 빈칸이 아닐 경우 새로운 창을 열도록 하고 있다. 서버의 응답으로 url(jump_url)가 전달되는데 서버가 동작중이 아니어서 확인할 수 없다. 따라서 확인가능한 범위에서 악성행위 위주로 분석한다.
악성행위가 포함된 함수로 연락처 정보 수집, SMS 수집, 사진 목록 등을 수집하는 코드를 확인하였다. 함수 실행 시 전화번호와 초대코드를 인자로 받고 있어 공격자가 피해자를 구분하는 방법으로 사용하고 있음을 확인할 수 있다. 마찬가지로 서버가 동작하지 않아 응답을 확인할 수는 없었다.
간략하게 정리한 악성앱 실행 흐름이다.
4. 결론
사용자는 Google Play 스토어 외부에서 앱을 설치할 때 신뢰할 수 있는 출처에서만 다운로드 해야 한다. 만약 앱이 의심스러운 동작을 보이거나 악성 행위가 우려되는 상황이라면, 보안 전문가의 도움을 받아 정확한 진단과 대응 조치를 받는 것이 중요하다. 안전한 모바일 환경을 유지하기 위해 신중한 접근과 정보 보안 의식이 필요하다.
'Report > Term paper' 카테고리의 다른 글
비타민과 미네랄 (0) | 2021.05.14 |
---|---|
[정보보안] 침투 테스트(Penetration Testing) 개요 (0) | 2021.03.08 |
[컨텐츠 보안] Steganography 스테가노그래피 기법 (0) | 2020.12.16 |
BUFFRER OVERFLOWS ON REDHAT 6.2 (0) | 2020.11.25 |
산술 부호화 (0) | 2020.11.22 |