안녕하세요. 분석팀의 Jiyong입니다.
모바일 악성코드가 단순한 정보 유출을 넘어 사용자의 가상화폐 지갑을 직접 노리는 형태로 고도화되고 있습니다. 오늘은 보안 업계에서 이슈가 됐었던 악성코드를 직접 입수하여, 껍데기인 드로퍼부터 악성 행위의 심장부까지 코드 레벨에서 파헤쳐본 분석 결과를 공유하려 합니다.
새로운 위협의 등장
작년 12월 글로벌 보안 기업 Cleafy Labs에서는 ‘Albiriox’라고 불리는 신종 안드로이드 뱅킹 트로이목마에 대한 심층 리포트를 발표했습니다. Albiriox의 첫 흔적은 2025년 9월 말 특정 텔레그램 채널에서 발견되었는데, 초기 대화에서 이 악성코드를 MaaS 형태로 출시할 계획이라고 발표했으며 베타 버전은 평판이 좋은 회원들에게만 제공될 것이라고 언급했습니다.
![[그림 1] 텔레그램에서 베타 테스트 가격을 논의하는 모습 (출처: Cleafy Labs)](/blog/post_albiriox/image01.png)
[그림 1] 텔레그램에서 베타 테스트 가격을 논의하는 모습 (출처: Cleafy Labs)
Albiriox의 주요 특징은 다음과 같습니다.
- MaaS(Malware-as-a-Service) 기반 배포: 다크웹 포럼을 통해 누구나 서비스 형태로 구매해 유포할 수 있어 확산 속도가 매우 빠릅니다.
- 러시아어권 공격자: 포럼 활동과 코드 내 언어 패턴 분석 결과, 러시아어권 조직에 의해 개발된 것으로 추정됩니다.
- Global & Crypto 타겟팅: 전 세계 400개 이상의 금융 앱을 타겟으로 하며 특히 가상화폐(Cryptocurrency) 지갑 탈취에 특화된 강력한 원격 제어기능을 탑재하고 있습니다.
- ODF(On-Device Fraud) 공격: 단순 정보 탈취를 넘어 하이브리드 VNC(Virtual Network Computing)와 원격 터치 기술을 결합해 공격자가 원격에서 피해자 스마트폰을 직접 조작하여 자산을 이체합니다.
- 지능형 은폐 및 삭제 방지: 악성 행위 중에는 화면을 검게 가리고 사용자가 앱을 삭제하려고 진입하면 강제로 ‘뒤로 가기’를 실행하여 삭제를 막습니다.
이번 포스팅에서는 단순 리포트 요약이 아닌 실제 샘플을 시작으로, 드로퍼(Dropper)가 어떻게 보안을 우회하여 숨겨진 본체를 실행시키는지 그리고 그 내부에서 VNC와 키로깅이 어떻게 작동하는지 제가 분석한 순서대로 따라가면서 검증해 보겠습니다.
신뢰를 가장한 드로퍼(Dropper)
악성코드 분석의 첫 단계는 공격자가 사용자 기기에 어떻게 침투하는지 파악하는 것입니다. 이번에 확보한 샘플은 겉보기에 평범한 쇼핑 앱처럼 위장하고 있었습니다.
분석 대상 앱(com.example.myapplication)을 실행하자마자 독일의 유명 할인 슈퍼마켓 체인인 PENNY의 로고와 함께 업데이트 화면이 나타났습니다. 하지만 이 화면은 실제 앱의 기능이 아닌 MainActiviy에 하드코딩된 HTML을 웹뷰로 띄운 가짜 화면이었습니다.
[그림 2] PENNY 앱 메인 화면
화면 중앙에는 독일어로 다음과 같은 문구가 적혀있습니다.
‘휴대전화를 보호하려면 최신 소프트웨어 업데이트를 설치하세요. 계속하려면 외부 출처 업데이트 설치를 허용해야 합니다.’
공격자는 보안을 핑계로 사용자가 설치 권한을 클릭하도록 유도하고 있습니다. 하단에는 Google Play 로고까지 배치해 신뢰를 주려 했지만, 아이러니하게도 요구하는 것은 구글 플레이가 아닌 출처를 알 수 없는 앱 설치 권한입니다.
사용자가 이 문구에 속아서 권한을 허용하면 드로퍼는 숨겨왔던 본체를 설치합니다. 하지만 APK 내부를 단순히 훑어봐서는 악성 코드를 찾을 수 없었습니다. 공격자가 2차 페이로드(본체)를 암호화하여 숨겨두었기 때문입니다.
Assets 폴더를 분석하던 중, dexopt.sssgf라는 수상한 파일을 발견했습니다. a5x40Gss라는 난독화된 클래스를 분석한 결과, 해당 파일을 복호화하는 XOR 로직을 찾아낼 수 있었습니다.
![[그림 3] 드로퍼 APK 복호화 로직](/blog/post_albiriox/image03.png)
[그림 3] 드로퍼 APK 복호화 로직
분석한 알고리즘을 바탕으로 파이썬 스크립트를 작성하여 dexopt.sssgf를 복호화하자, 드디어 Albiriox의 본체인 com.nmz.nmz 라는 패키지명을 가진 APK 파일이 추출되었습니다.
본색을 드러내다
PENNY 앱에서 추출된 com.nmz.nmz 패키지는 Albiriox RAT(Remote Access Trojan)의 실제 본체입니다. 이 앱은 설치되자마자 사용자의 기기를 장악하기 위해 몇가지 권한을 요구합니다.
BIND_ACCESSIBILITY_SERVICE: 안드로이드의 모든 UI를 읽고 조작할 수 있는 접근성(Accessibility Service) 권한, RAT의 핵심입니다.
REQUEST_IGNORE_BATTERY_OPTIMIZATIONS: 시스템이 백그라운드 앱을 종료시키는 절전 모드를 우회합니다.
SYSTEM_ALERT_WINDOW: 다른 앱 위에 그릴 수 있는 권한으로 오버레이(Overlay) 피싱 공격에 사용됩니다.
앱 실행 시 발생한 로그에서도 설치 직후 시스템이 이 앱의 배터리 최적화 정책으로 부터 제외하기 위한 권한 요청을 감지하는 모습이 포착되었습니다.
// [Logcat 분석] 패키지 설치 성공 및 권한 등록
11:37:08.657 APKInstaller: Install result - Status: 0, Message: INSTALL_SUCCEEDED, Package: com.nmz.nmz
11:37:13.214 DeviceIdleController: addPowerSaveWhitelistApps(name = [com.nmz.nmz])
앱이 실행되면 MainActivity는 즉시 배터리 최적화 정책에서 제외되고 접근성 서비스 활성화 권한을 체크합니다. 코드를 보면 사용자가 권한을 허용할 때까지 재귀 호출을 이용하여 반복적인 권한 요구를 수행하는 모습을 볼 수 있습니다.
![[그림 4] 권한 요구 루프 로직](/blog/post_albiriox/image04.png)
[그림 4] 권한 요구 루프 로직
분석 중 흥미로웠던 점은 특정 제조사를 타겟팅한 우회 코드가 포함되어 있다는 것입니다. 중국의 샤오미(Xiaomi) 기기는 MIUI 운영체제(현재는 HyperOS) 특성상 백그라운드 앱을 강력하게 차단하는데 Albiriox는 이를 인지하고 별도의 전용 가이드 화면을 띄우는 로직을 심어놨습니다.
![[그림 5] 샤오미 기기 관련 코드](/blog/post_albiriox/image05.png)
[그림 5] 샤오미 기기 관련 코드
이 코드는 사용자에게 ‘안정적인 동작을 위해 설정을 변경하라’고 속여 MIUI의 보안을 사용자가 스스로 해제하게 만듭니다.
이렇게 모든 권한을 획득한 드로퍼 앱은 MainActivity를 종료(finish())시키고 화면에서 사라진 후에 백그라운드에 상주하며 AccessService가 정보 탈취를 시작합니다.
악성 행위의 심장: AccessService 집중 분석
권한 획득과 은닉에 성공한 Albiriox는 이제 본격적인 활동을 시작합니다. 그 중심에는 AccessService 클래스가 있습니다. 이 클래스는 안드로이드의 접근성 서비스를 악용하여 기기의 모든 입력과 화면 정보를 장악합니다.
아래는 많은 악성 행위 중에서도 Albiriox의 기술적 정교함과 위험성을 가장 잘 보여주는 3가지 핵심 기능입니다.
하이브리드 VNC(Hybird Screen Grabbing) & RAT
가장 인상적인 부분은 화면을 훔치는 방식이 안드로이드 버전에 따라 이중 구조로 되어있다는 점입니다.
- Mode 1(Node Tree Extraction): 화면의 UI 구조를 JSON 형태로 가볍게 추출하여 데이터 소모를 줄입니다.
- Mode 2(Reflection Screenshot): 안드로이드 최신 보안 정책(API 30+)을 우회하기 위해 자바 리플렉션 기법을 사용하여 비공개 API를 강제로 호출, 고화질 스크린샷을 찍어 전송합니다.
![[그림 6] Mode 1: 화면 구조 JSON으로 추출](/blog/post_albiriox/image06.png)
[그림 6] Mode 1: 화면 구조 JSON으로 추출
![[그림 7] Mode 2: 리플렉션을 이용한 강제 스크린샷](/blog/post_albiriox/image07.png)
[그림 7] Mode 2: 리플렉션을 이용한 강제 스크린샷
이러한 VNC 행위로 공격자는 사용자의 화면 정보를 수집합니다. 수집된 정보를 기반으로 사용자 기기로 좌표를 보내 실제 원격 터치(DispatchGesture)를 발생시키는 로직도 AccessService의 PerformClick 메서드에 정의되어 있습니다.
![[그림 8] 원격 클릭 구현](/blog/post_albiriox/image08.png)
[그림 8] 원격 클릭 구현
가상화폐 집중 공략
감염된 기기에서 가상화폐 앱이 발견될 경우 CRYPTO_WARNING 이라는 타입으로 C2 서버에 긴급 보고를 수행합니다. 특히 전송 우선 순위를 10으로 설정한 점은 공격자가 다른 정보보다 가상화폐 탈취를 최우선 목표로 삼고 있음을 시사합니다.
![[그림 9] 가상화폐 앱 감지 시 알람 전송](/blog/post_albiriox/image09.png)
[그림 9] 가상화폐 앱 감지 시 알람 전송
생존과 은폐 기술
사용자가 설정 앱에 들어가는 것을 0.05초마다 감시하고, 만약 화면에서 삭제 또는 제거 버튼이 식별되면 강제로 ‘뒤로가기’를 눌러 사용자를 쫓아냅니다.
![[그림 10] 앱 삭제 방지 로직](/blog/post_albiriox/image10.png)
[그림 10] 앱 삭제 방지 로직
기타 악성 행위 요약
핵심 기능 외에도 AccessService는 기기를 완벽하게 장악하기 위한 다양한 보조 기능들을 탑재하고 있습니다.
| 기능 |
상세 설명 및 분석 내용 |
| 지능형 키로깅 |
단순 텍스트 탈취를 넘어 잠금 화면(LockScreen)의 터치 좌표와 UI 변화를 역추적하여 PIN 번호와 패턴을 계산해 냅니다. |
| C2 실시간 제어 |
하드코딩된 IP(194.32.79.94:5555)와 Raw Socket 통신을 수행합니다. 서버 다운 시 로컬에 로그를 저장했다가 재연결 시 전송하는 오프라인 로깅 기능이 있습니다. |
| 맞춤형 피싱 |
카카오톡, 텔레그램 등 타겟 앱 실행 시 가짜 로그인 창(Overlay)을 띄웁니다. 특히 Trust Wallet은 전용 레이아웃(input.xml)을 통해 정교하게 위장합니다. |
| 은신 모드 |
원격 제어 중 사용자가 눈치채지 못하도록 BlankOverlay로 화면을 검게 가리고 터치를 차단하며, 미디어 볼륨을 0으로 조절하여 소리를 숨깁니다. |
[표 1] 악성 행위 요약
비교 분석
이번 분석을 통해 Albiriox는 기존 국내에서 유행하던 악성 앱들과는 목적이 완전히 다름을 확인했습니다. 국내 악성 코드가 사기를 위한 도구라면 Albiriox는 강도를 위한 무기에 가깝습니다.
두 위협의 차이점을 3가지로 정리해봤습니다.
공격의 최종 목적: 전화 유도 vs 직접 탈취
- 국내 악성 앱 (하이브리드 보이스피싱):
- 주요 목적: 사용자가 범죄자에게 전화를 걸도록 유도하거나 오는 전화를 가로챕니다. 상담원(범죄자)이 피해자를 말로 속이는 동안, 화면을 훔쳐보며 경찰 신고 여부를 감시하거나 OTP 번호를 실시간으로 탈취하는 데 사용됩니다.
- 공격 방식: 실시간 협박이 동반되며 피해자를 심리적으로 압박하며 원격 제어를 수행합니다.
- Albiriox (RAT형):
- 주요 목적: 사용자의 개입 없이 기기 내 자산을 직접 이체합니다.
- 공격 방식: 공격자는 사용자와 대화할 필요 없이 확보된 권한을 이용해 사용자가 기기를 사용하지 않는 새벽 시간대에 몰래 접속합니다. VNC로 화면을 보면서 코인을 전송하고 흔적을 지웁니다.
핵심 기술: 전화 가로채기 vs 화면 제어
| 구분 |
국내 악성 앱 (보이스피싱) |
Albiriox (RAT) |
| 핵심 권한 |
READ_CALL_LOG,PROCESS_OUTGOING_CALLS |
BIND_ACCESSIBILITY_SERVICE |
| 주요 기능 |
발신 번호 변조, 수신 전화 차단, 통화 녹음 |
실시간 화면 송출, 원격 터치 |
| 은폐 방식 |
아이콘 은닉, 가짜 금융감독원 팝업 |
블랙 스크린, 볼륨 조절 |
[표 2] 핵심 기술 비교
타겟의 확장: 뱅킹 vs 가상화폐
국내 악성 앱은 주로 은행 앱이나 대출 앱을 사칭하여 원화 송금을 유도합니다. 반면, Albiriox는 국경이 없는 자산인 가상화폐를 최우선 타겟으로 삼습니다.
결국 Albiriox가 시사하는 바는 명확합니다. 기존의 보이스피싱 앱이 사용자를 감시하며 송금을 강요했다면, Albiriox는 사용자가 잠든 사이 조용히 접근해 지갑을 털어가는 디지털 빈집털이와 같습니다.
국내 사용자들은 금감원 팝업이나 수사관을 사칭하는 피싱 수법에는 익숙해졌지만, 내 스마트폰이 스스로 움직여 계좌를 비우는 ODF 공격에는 사실상 무방비 상태입니다. 특히 은행을 넘어 추적이 불가능한 가상화폐를 노린다는 점에서, 피해 발생 시 자산 회수가 더욱 어렵다는 점을 명심해야 합니다.
결론
이번 심층 분석을 통해 확인한 Albiriox는 단순히 계정 정보를 훔치는 피싱 앱을 넘어 사용자 기기를 원격에서 완전히 장악하는 고도화된 악성코드였습니다. 특히 하이브리드 VNC와 원격 터치 기술을 결합해 장소에 구애받지 않고 피해자 기기를 직접 제어하는 ODF 공격의 정석을 보여줍니다.
![[그림 11] Albiriox 행위 요약](/blog/post_albiriox/image11.jpg)
[그림 11] Albiriox 행위 요약
또한 네트워크 단절 시 오프라인 로깅으로 데이터를 보존하고, 삭제 방지 로직으로 사용자의 삭제 시도를 물리적으로 차단하는 행위까지 식별되었습니다. 은행을 넘어 추적이 어려운 가상화폐 지갑을 최우선 타겟으로 삼고 카카오톡까지 감시 대상에 포함시킨 점은 국내 사용자들에게도 시사하는 바가 큽니다.
Albiriox와 같은 위협으로부터 자산을 지키기 위해서는 무엇보다 예방이 최선이며, 감염 시 정확한 대처가 필수적입니다.
첫째, 접근성 서비스 권한을 절대적으로 경계해야 합니다. 보안 업데이트나 시스템 최적화를 핑계로 이 권한을 요구한다면 즉시 앱을 삭제해야 합니다.
둘째, 신뢰할 수 없는 사이트에서 APK 파일 설치를 멈추고 반드시 공식 마켓을 이용해야합니다.
마지막으로, 만약 감염되어 일반적인 삭제가 불가능하다면 당황하지말고 안전 모드로 부팅하거나 PC와 연결하여 ADB 명령어를 통해 강제로 제거해야 합니다.
악성 코드는 이제 거대 자본과 조직력을 갖춘 MaaS 형태로 진화하고 있습니다. 이번 포스팅이 안드로이드 악성코드의 고도화된 동작 원리를 이해하고, 날로 지능화되는 보안 위협에 대비하는 데 실질적이 도움이 되었기를 바랍니다.
긴 글 읽어주셔서 감사합니다.