
최근 스페인어권의 안드로이드 사용자를 대상으로 유포되는 악성 앱 DroidLock이 발견됐다. DroidLock은 피싱 웹사이트에서 정상 앱으로 위장해 내부에 실제 악성 동작을 수행하는 추가 APK가 숨겨진 형태로 배포됐다. 해당 악성 앱은 오버레이 공격으로 사용자에게 잠금 해제 패턴을 입력하도록 유도해 자격 증명을 탈취하거나 VNC(Virtual Network Computing) 기능으로 실시간 화면 스트리밍 및 원격 제어를 수행한다. 또한 실제로 파일을 암호화하지는 않지만 화면을 잠근 후 협박 문구가 포함된 페이지를 띄워 랜섬웨어처럼 금전을 요구하기도 한다.
Stage 1
문자열 복호화
DroidLock 악성 앱의 유포 파일과 해당 파일 내 포함된 추가 APK는 클래스명, 명령어 및 로그 메시지 등의 문자열을 암호화한 상태로 저장하고 있으며 Base64 디코딩 및 XOR 연산으로 복호화해 사용한다. [그림 1]은 APK에서 smali 파일을 추출하고 문자열을 복호화한 후 다시 리패키징한 결과이다.

앱 업데이트 화면 출력
피싱 웹사이트에서 다운로드한 DroidLock 앱을 실행하면 먼저 assets에서 앱 업데이트 페이지를 모방한 index.html 파일을 읽어와 WebView를 이용해 화면에 출력한다. 사용자가 해당 화면에서 스페인어로 적힌 ACTUALIZAR(업데이트) 및 Update now 버튼을 클릭하면 index.html 파일에 포함된 자바스크립트가 시스템 정보 수집 및 추가 APK 설치를 수행하는 onUpdateClicked() 메서드를 호출한다.


추가 APK 설치
onUpdateClicked() 메서드는 기기의 모델, 브랜드 및 OS 버전 등의 기본적인 시스템 정보를 수집하고 HTTP의 POST 요청을 이용해 공격자가 운영하는 C&C 서버로 수집한 정보를 전송한다. 이후 getAssets() 메서드로 추가 APK 파일(childjosh.apk)을 읽어와 PackageInstaller를 이용해 해당 앱을 설치하고 설치가 완료되면 APK의 패키지 이름과 activity-alias 이름을 이용해 지정한 컴포넌트를 Intent에 등록 및 호출한다.


Stage 2
설치된 추가 APK는 html 페이지를 이용해 앱 업데이트 화면을 출력했던 방식과 동일하게 사용자의 상호작용으로 접근성 권한을 허용하도록 유도한다. 해당 권한이 허용되면 WebSocket을 이용해 공격자가 운영하는 C&C 서버와 통신을 시도하며 [표 1]의 명령어를 수신해 공장 초기화, 패턴 변경 및 원격 제어 등 악성 동작을 수행한다. 명령어 중 BLOCK_BIOMETRIC는 화면을 잠그고 RANSOMWARE로 랜섬노트를 띄워 금전을 요구하지만 실제 파일 암호화 기능은 포함하지 않는다.

오버레이 공격
명령어 APP_BLOCK_LOCK_PATTERN 및 INJECT_APP은 오버레이를 이용한 잠금 해제 패턴 탈취 공격에 활용된다. 먼저 APP_BLOCK_LOCK_PATTERN 명령어는 함께 수신된 공격 대상 앱의 패키지 이름을 리스트 형식으로 저장하며 INJECT_APP은 공격 대상 앱의 패키지 이름과 base64로 인코딩된 html 데이터 쌍을 데이터베이스에 저장한다.

사용자가 공격 대상 목록에 포함된 패키지 이름의 앱을 실행하면 DroidLock은 데이터베이스에서 실행한 앱에 해당하는 html 데이터를 읽어와 Base64로 디코딩한 후 WebView를 이용해 가짜 패턴 잠금 해제 페이지를 출력한다. 해당 페이지에 사용자가 패턴을 입력하면 패턴이 수집되고 공격자에게 전송된다. 단, 분석 시점에서 C&C 서버가 응답하지 않아 실제 수신되는 데이터는 확인되지 않았다.


DroidLock은 실제로 파일을 암호화하지는 않지만 공격자가 기기를 원격 제어하거나 초기화해 데이터를 손상시킬 수 있으며 오버레이 공격으로 수집한 자격 증명을 악용해 2차 피해가 발생할 수 있어 주의가 필요하다. 따라서 앱을 설치하거나 업데이트할 경우 공식 스토어를 이용하고 접근성 권한의 필요성을 고려할 필요가 있다. 또한 주기적으로 백신과 OS를 최신버전으로 업데이트 할 것을 권고한다.

'분석 정보 > 모바일 분석 정보' 카테고리의 다른 글
| SMS를 이용해 악성 링크를 전파하는 ClayRat (0) | 2025.10.28 |
|---|---|
| 지도 앱으로 위장한 Origin 스파이웨어 (0) | 2025.05.30 |
| Dynamic Dex Loading을 이용하는 TrickMo (1) | 2024.12.30 |
| 구글 플레이 업데이트로 위장한 Antidot (2) | 2024.07.25 |
| 디지털 인증서를 탈취하는 SoumniBot (0) | 2024.05.16 |