개요
TEMU 앱은 피싱앱 및 악성앱에서 나타나는 멀웨어(Malware)/스파이웨어(Spyware)의 모든 특성을 가지는 것으로 분석하였다. 이 앱은 사용자가 알지 못하는 광범위한 데이터 유출을 허용하는 숨겨진 기능이 있으며, 잠재적으로 악의적인 공격자가 사용자의 모바일 단말에 있는 거의 모든 데이터에 대한 전체 접근 권한을 부여할 수 있다.
악의적인 의도와 행위를 숨기기 위해 많은 기법들이 적용되었으며, 많은 노력 하에 개발 된 것으로 분석하였다.
TEMU 앱은 출시 이후 미국과 유럽에서 1억 건이 넘는 다운로드 횟수를 기록하고 있으며 앱의 활성도(일간 활성 사용자 수)도 높다. 이는 많은 데이터 유출에도 기여하고 있다. 전세계를 대상으로 배포되고 있지만 TEMU 앱은 중국에서는 제공되지 않는 앱이며, TEMU 앱 개발팀은 구글 플레이 스토어에서 서비스 정지를 받은 '핀둬둬(Pinduoduo)' 앱을 만든 100명의 엔지니어가 포함되어 있다. 핀둬둬 앱은 악성행위를 하는 부분을 제거하고 다시 배포되고 있는데, 그 중 일부 악성행위를 하는 구성 요소가 TEMU 앱에 동일하게 적용되어 있는 것으로 분석하였다.
값싼 중국 쇼핑 앱은 우수한 비즈니스 모델로 하여 지속 가능한 수익성이 없다. TEMU는 주문 당 약 $30의 손실을 보고 있는 것으로 추정되며, 광고 지출과 배송비는 천문학적인 수준이다. 이 비즈니스 모델이 어떻게 수익을 낼 수 있는지 궁금해진다. TEMU는 업계에서 이미 악명 높은 업체이며 사용자 조작, 가입을 유도하기 위한 무분별한 스팸 전송 등 공격적이고 의심스러운 기술을 쉽게 접할 수 있다
PDD의 재정 상태 또한 신뢰할 수 없는 상태이다. 시가 총액 1,350억 달러에 달하는 기업임에도 불구하고 PDD는 2018년 이후 최고재무책임자(CFO)를 두지 않고 있다. 주요 재무 직책은 수시로 바뀐다. 책임지는 사람이 없는 것처럼 보인다.
Disclaimer
필자는 웹, 앱 취약점 분석을 하고 있으며, 실 사용자 입장에서 다양한 취약점을 찾고 대응방안을 제시하는 업무를 하고 있다. 이 글은 다른 분석 리포트의 내용을 벤치마크하고 있다. 지식과 경험을 바탕으로 하여 다룰 수 있는 최대한의 진실만을 다루지만 내용을 참고하여 수행하는 행위에 대해서는 어떠한 책임도 지지 않는다. 이 글은 어떤 집단이나 개인의 의견을 대변하지 않는다. 따라서 법적 근거가 있는 신빙성 있는 자료로는 사용될 수 없음을 밝힌다. 허가 없는 무단 복제, 전제, 재배포를 일절 금지한다.
Part 1. 가장 널리 유포되고 있는 악성 앱
TEMU 앱은 악성앱에서 나타나는 모든 특징을 가지고 있다. 다양한 분석을 통해 사용자의 개인 정보를 위협하는 위험 요인들을 알아본다.
보안 이슈
TEMU 앱의 경우 18개의 모든 항목이 위협으로 식별되며, 특히 1,4,10,15번 항목은 실제 스파이웨어를 만들기 위해 결합될 가능성이 높다. 명령 실행 함수(exec)는 안드로이드 운영체제에 직접 명령을 실행할 수 있으며, 실행 결과를 단말에서 출력되는 로그(logcat) 등을 통해 확인할 수 있다. 단말의 고유식별주소(MAC Address)를 수집하여 외부 서버(공격자 서버)로 전송하는 기능이 구현되어 있으며 새로운 앱 설치 파일을 설치할 수 있도록 권한을 요청하고 있다. 일부 사용자의 권한 허용 등 개입이 필요한 동작도 있지만, 불특정 다수 또는 특정 사용자를 타겟으로 한 공격도 가능한 것으로 분석하였다.
위험 권한 선언
단말의 중요 정보에 접근하기 위해서는 사용자에게 권한 허용을 요청하고 정보를 수집할 수 있다. 위치정보, 저장소 직접 접근 등은 사용자에게 민감한 정보를 다루기 때문에 안드로이드 운영체제에서도 반드시 필요한 경우에만 사용하도록 권고하고 있다. 위험 권한의 사용만으로 앱이 위험하다고 단정지을 수는 없지만 다양한 위협 요소 중 하나로 분석할 수 있다. TEMU 앱의 경우 '카메라(CAMERA)', '외부 저장소 쓰기(WRITE_EXTERNAL_STORAGE)', '새로운 패키지 설치(INSTALL_PACKAGES)', 화면 켜짐 상태 유지(WAKE_LOCK) 등 권한을 사용하고 있음을 확인하였다. 알리바바, 아마존 등 다른 쇼핑몰 앱과 비교해도 불필요하게 많은 권한을 요청하고 있는 것을 확인할 수 있다.
유출된 데이터?
TEMU 앱을 통해 사용자 단말의 정보가 유출된다면 어디로 흘러가며 누가 이득을 볼까. 중국은 다음과 같은 법률을 시행하고 있다.
"국가는 국가 정보 업무를 지원, 협조, 협력하는 개인과 조직을 보호해야 한다."
중국 기업은 중국 정부 기관이 전체 데이터베이스에 접근할 수 있는 경우에만 영업을 할 수 있다.(참고 링크) 미국에서는 미국 관할에 있는 민감한 데이터를 중국의 영향을 받는 외국인에게 고의로 제공하거나 전송할 가능성이 있는 사람과 거래하는 것을 금지하도록 하고 있다(HR1153). 이 법안은 소프트웨어나 앱 등 특정 거래에도 적용되며, 이를 운영하는 외국인을 대상으로 제재를 부과할 수 있다.
미국의 예시로 들었지만 보안 전문가와 정치인들은 중국 기업이 수집한 모든 사용자 데이터는 중국 보안 서비스가 접근할 수 있는 데이터베이스에 저장될 것으로 추정하고 있다.
TEMU 앱의 코드 기반은 이전에 개발이 중단된 핀둬둬(Pinduoduo)의 앱과 공유되는 악성 스파이웨어이다. 핀둬둬의 멀웨어는 실수로 개발된 것이 아니다. PDD는 100명의 프로그래머로 구성된 팀을 모집하고 고용하여 안드로이드의 OEM 커스터마이징을 찾아 익스플로잇하기 위해 안드로이드 메인 브랜치가 아닌 덜 감사되는 코드에서 취약점을 찾고 악용하려고 시도했다. CNN의 보도에 따르면(기사), PDD의 전략 중 하나는 개발 과정에서 악성코드 탐지를 회피하기 위해 베이징과 상하이를 피해 중국의 소도시와 기타 저개발 지역에서만 이 소프트웨어를 실행하는 것이다.
이렇게 주류 앱이 권한을 높여서 접근해서는 안되는 곳에 접근하려는 시도는 본 적이 없다. 이는 매우 이례적인 일이며, 핀둬둬에게 매우 큰 타격이다.
- Mikko Hyppὃnen, 사이버 보안 전문가
2023년 3월 21일, 구글은 플레이 스토어 외부 버전에서 멀웨어 문제가 발견된 이후 보안 문제로 인해 구글 플레이 스토어 버전의 PDD의 핀둬둬 앱을 중단한다고 발표했다.(멀웨어는 앱 스토어에서도 종종 발견되지만 외부에서 앱을 내려받아 설치하는 '사이드로드(sideload)' 설치는 더 위험하다.)
구글의 Play 스토어가 핀둬둬를 중단한 이후, 모회사인 PDD는 멀웨어를 제거하였다고 홍보하며 멀웨어를 포함하여 개발한 팀을 해체하고 해고하였다고 했다. 하지만 이는 보여주기 위한 것이었으며, 그들은 즉시 PDD의 다른 회사인 TEMU에 재고용되었다.
Part 2. 앱 분석
출시된 앱에 대해 취약점을 분석하는 것과 악성행위를 분석하는 것은 관점이 조금 다르다. 앱이 가지고 있는 잠재적인 위협을 식별하기 위해 사용자의 중요 정보를 침해하는 유출 코드를 식별하고, 외부에서 침입 가능성이 있는 시스템 호출을 찾는 것부터 시작한다. 분석하는 과정에서는 분석을 회피하기 위한 목적으로 사용된 난독화나 분석 탐지 로직등의 실행에 주의해야 한다. 다음은 TEMU 앱에서 발견된 보안 위협을 다룬다.
1) runtime.exec()를 사용한 동적 컴파일
소스코드에서 암호화된 이름의 함수는 runtime.exec() 함수를 사용하여 "package compile"을 호출한다. 컴파일은 개발자가 작성한 소스코드를 단말에서 실행 가능한 파일을 만드는 과정이다. 이 함수에 의해 생성된 실행 파일은 앱 설치 전이나 설치 중에는 식별되지 않기 때문에 백신 앱에서도 탐지되지 않는다. 따라서 TEMU 앱은 무제한 익스플로잇이 가능한 앱이지만 구글 플레이 스토어의 악성앱 검사를 모두 통과할 수 있다. 심지어 로컬 컴파일을 통해 TEMU 서버로부터 동적으로 바이너리를 생성하여 컴파일하면 단말의 다른 데이터에도 접근할 수 있다.
이 앱이 위험한 가장 큰 요인을 설명하였다. 이 기능만으로도 멀웨어의 특징을 전부 가지고 있다고 할 수 있으며, 마스터키를 손에 쥐고 있을 때 누가 건물에 침입할 수 있는 가장 많은 열쇠를 가지고있는지 논쟁하는 것과 같다. 다시 말해, 다른 악성 코드가 모두 제거되었다 하더라도 이 백도어 하나가 탐지되지 않는다면, 앱은 거의 모든 방식으로 동작을 변경하고 외부 서버에 의해 제어될 수 있다. 예를 들어, TEMU는 의심스러운 데이터로 가장하여 암호화된 소스 코드를 단말로 전송한 다음 실행 파일로 컴파일하여 실행할 수 있다.
2) 비표준 권한 선언
디컴파일된 소스 코드의 표준 라이브러리(구글, 페이스북, 안드로이드, 페이팔 등)가 아닌 특정 부분에서 권한 요청에 사용되는 'android.permission' 구문이 참조된 것을 확인했다. 특정 시나리오에서 이러한 권한을 사용할 수 있는 옵션이 없는데 소스 코드에서 단독으로 권한을 참조하는 이유가 무엇일까. TEMU의 소스 코드에 있는 이러한 권한 중 상당수가 앱의 표준화된 개요를 나열하는 위치인 메니페스트 파일(AndroidManifest.xml)에 나열되어 있지 않다. 권한을 조사하기 위해서 분석가는 메니페스트 파일에 선언된 권한을 확인하는 것이 첫번째 순서이다. 하지만 TEMU 앱은 메니페스트에서 선언하지 않은 카메라, 오디오 녹음, 외부 저장소 쓰기, 패키지 설치, 자세한 위치정보 이다. 이러한 권한 사용이 무조건 위험하다는 것은 아니지만, 피싱앱 등 악성 행위에 가장 많이 사용되는 권한인 것은 우연이 아니다.
3) 불필요 쿼리 요청
TEMU는 앱 자체에서 관리하는 파일 목록 뿐만 아니라 외부 저장소(External Storage), 슈퍼 유저(Super User)권한 및 로그 파일을 참조하여 사용자 단말의 모든 정보를 요청하고 있다. 특정 안드로이드 버전에 따라 채팅 로그, 이미지, 다른 앱의 사용자 컨텐츠 등 모든 사용자 및 시스템 데이터를 읽고, 처리하고 수정하는 데 앱을 사용할 수 있다.
3a) 이 앱에는 'us.temu.com'에 연결된 명령 서버를 기반으로 하는 파일 업로드 기능이 포함되어 있다. 즉, 사용자가 무의식적으로라도 TEMU앱에 파일 저장 권한을 부여하면 TEMU는 사용자 단말에서 모든 파일을 원격으로 수집하여 자체 서버로 전송할 수 있다. 다른 개인 정보를 침해하는 권한 또한 마찬가지이다.
참고: 권한의 허용은 사용자가 직접 선택하는 것이다. 다만, 대부분의 사용자는 앱 설치 대화 상자를 마주했을 때 그 결과를 충분히 이해하지 못하는 경우가 많으며 일반적으로 피곤하고 조급해한다. 다른 앱과 마찬가지로 TEMU도 설치 또는 앱 실행 중에 사용자의 파일 시스템과 위치 정보에 한 번씩 액세스 하는 것처럼 보인다. 개발자와 메인 서버가 중국에 있는 앱의 이러한 권한을 거부할 만큼 충분히 인지하고 있는 사용자는 10% 미만일 것으로 추정된다.
하지만 대부분의 사용자에게는 이 권한은 그저 체크박스에 불과하며, 일단 설정이 완료되면 그대로 잊혀진다. 마치 장기 휴가를 떠나면서 집의 금고를 열어둔 채로.
3b) 권한 요청을 거부하더라도 다른 위협에 마주친다. TEMU 앱은 처음 설치할 때 많은 권한을 공격적으로 요청하지 않는다. 그러나 예를 들어 사진을 게시할 수 있고 TEMU가 비슷한 상품이 있는지 목록을 검색할 수 있다는 사실을 알게 되면 이 매력적인 기능을 사용해보고 싶을 것이다. 셔츠 사진을 업로드한다. TEMU는 정확한 위치 또는 대략적인 위치에 대한 권한을 요청하는 일반적인 안드로이드 화면을 표시한다. 카메라에서 사진을 업로드하려고 했기 때문에 앱 흐름상 TEMU 앱에서 촬영한 사진에 위치를 게시할 수 있는 권한을 요청하는 것으로 간주한다. 그래서 '앱 사용중에 권한 허용'을 선택하고 즐거운 마음으로 진행한다. 이제 멋진 게이밍 마우스를 단돈 3달러에, 화면과 같은 멋진 셔츠를 4달러 미만의 금액으로 구할 수 있다. 정말 끝내주는 일이 아닌가.
그럼 이제 TEMU 앱을 사용할 때마다. 50m 이내의 내 위치에 대한 접근 권한을 방금 TEMU에 부여했다는 사실을 어떻게 알 수 있을까. 왜 사진을 업로드 하는 시점에 TEMU는 그런 권한을 요청한 것일까?
카메라에 "정확한" 위치를 부여할 수 있는 구체적인 권한은 존재하지 않는다. 이 경우, TEMU 앱을 사용할 때마다 "정확한" 위치 권한(FINE_LOCATION)을 부여한 것이다. TEMU 앱에는 단말로 원하는 모든 작업을 수행할 수 있고 저장된 거의 모든 것을 백그라운드에서 자체 서버로 전송할 수 있는 멀웨어/스파이웨어 도구가 포함되어 있다는 것을 지금까지 확인했다. 또한 사용자의 개인 정보를 침해하는 앱은 일반적으로 구글의 플레이스토어 또는 애플의 앱스토어에 배포용으로 게시할 수 없기 때문에 그 의도는 숨겨져 있다. 이러한 무분별한 권한 동의 행위 뒤에는 집 열쇠, 금고 비밀번호, 암호화된 파일의 암호, 갤러리의 사진 등 모든 것을 TEMU에 넘겨주는 것이 된다.
4. 위치정보, GPS 정보, 내 위치 정보
안드로이드는 사용자의 개인정보를 침해하지 않으면서 앱이 어느 정보 합리적인 수준의 위치 데이터를 수집할 수 있도록 시스템 함수 ACCESS_COARSE_LOCATION를 특별히 구현했다. 이는 사용자의 대략적인 위치를 제공하는 것으로써 사용자의 위치를 그만큼 모호하게 함으로써 개인 정보를 보호한다. 하지만 TEMU앱은 이 권한을 사용하지 않는다. 안드로이드에서 사용할 수 있는 가장 구체적인 위치(ACCESS_FINE_LOCATION)를 요청한다. 이는 안드로이드에서도 앱의 핵심 기능으로 사용하지 않는 이상(예: 지도 앱)은 사용하지 못하도록 금지하고 있다.(공식 문서)
TEMU가 현재 정확한 위치를 확인할 수 있는가? 최소한 TEMU 앱이 실행 중일 때에는 그렇다. 이외에는 안타깝지만 설명할 수 없다. 실행 중인 안드로이드 버전, TEMU 앱에 부여한 권한, 현재 하나 이상의 기지국에 연결되어 있는지 여부에 따라 달라진다. 이 사례를 통해 이러한 발견을 공유하며 느끼는 개인적인 긴박감을 명확히 하는데 도움이 되기를 바란다.
5. Root 접근
루트 접근은 TEMU 앱에서 단말에 루트 권한이 있는지 확인한다. 루트 접근 권한이 있으면 사용자와 TEMU 앱은 사용자 파일 뿐만 아니라 다른 앱과 운영체제의 모든 프로그래밍을 포함하여 디바이스의 모든 파일을 읽고, 수정하고 쓸 수 있다.
6. 암호화 및 복호화
악성행위를 식별하지 못하게 하기 위해 암호화와 복호화를 사용하고 있다. 이 기능의 유일한 목적은 핀둬둬의 악성행위가 구글에 의해 발견될 때 구성요소를 매우 빠르게 제거했기 때문에 파악되었다. TEMU의 코드 베이스에 갑작스러운 변경 전후를 분석한 결과 파악하였다. 물론 난독화를 이용하여 기업의 핵심 영업 비밀을 보호하고자 함도 있지만 난독화 기능과 앞서 언급한 로드 가능한 컴파일된 코드를 결합하면 더 심각한 일이 일어날 것이다.
참고자료