LOVENSES.apk 악성앱 분석 | 공식 앱과 다른 패키지·민감 권한·의심 API
LOVENSES.apk 악성앱 분석에서 가장 먼저 확인할 것은 파일 이름이 아니라 해시와 패키지입니다.
핵심 판정: 분석 대상 LOVENSES_signed_new.apk는 공식 Google Play의 Lovense Remote 패키지 com.lovense.wear와 일치하지 않습니다. 대상에서는 com.astreon.lumisphere 계열 액티비티와 연락처·전화번호·사진·영상 접근 권한, 무작위 문자열 형태의 외부 도메인이 관찰됐습니다. 따라서 공식 앱을 사칭했을 가능성이 큰 고위험 정보 접근형 APK로 판단할 수 있습니다. 다만 제공된 정적 화면만으로 실제 정보 전송, 자동 메시지 발송, 부팅 후 재실행, 아이콘 숨김이나 자가 삭제까지 확정할 수는 없습니다.
- 분석한 APK를 특정하는 해시와 인증서 정보
- 정상 Lovense Remote와 분석 대상의 패키지 차이
- 연락처·전화번호·사진·영상 권한이 의미하는 범위
- AndroidUtilCode 구성요소를 악성 근거로 볼 수 없는 이유
- 내장 도메인과 네트워크 통신에서 확인된 것과 미확인된 것
- 설치했다면 삭제 전에 남겨야 할 기록
분석 대상은 공식 Lovense 앱 자체가 아닙니다
먼저 브랜드와 파일을 분리해야 합니다. Google Play에 공개된 정상 앱 이름은 Lovense Remote이고, 공식 스토어 주소에 표시되는 안드로이드 패키지는 com.lovense.wear입니다. 반면 제공된 기술 자료의 액티비티는 com.astreon.lumisphere.view.MainActivity와 com.astreon.lumisphere.view.SecondActivity로 시작합니다.
앱 화면이나 파일명이 Lovense와 비슷하더라도 패키지가 다르면 공식 앱과 동일한 설치물로 볼 수 없습니다. 특히 메신저에서 APK 파일을 직접 받았고, 공식 스토어가 아닌 파일 설치 화면을 거쳤다면 정상 브랜드와 별개의 앱을 설치했을 가능성을 먼저 확인해야 합니다. 이 글은 Lovense 브랜드나 공식 앱을 악성으로 분류하는 것이 아니라, 해당 이름을 사용한 특정 해시의 별도 APK를 분석하는 글입니다.
앱 이름: Lovense Remote
패키지: com.lovense.wear
확인 경로: Google Play
파일명: LOVENSES_signed_new.apk
관찰 네임스페이스: com.astreon.lumisphere
유통 맥락: 외부 APK
공식 앱과 패키지 불일치
이름 도용 가능성 큼
공식 앱과 혼동하면 안 됨
LOVENSES.apk 악성앱 분석 기준 샘플 정보
파일명은 공격자가 자유롭게 바꿀 수 있으므로 분석 대상을 특정하려면 해시를 함께 봐야 합니다. 제공된 화면에서 확인한 기준 샘플은 아래와 같습니다. 다른 해시의 `LOVENSES.apk`는 이름이 같아도 이 글의 분석 결과와 동일하다고 단정할 수 없습니다.
| 항목 | 확인값 | 분석 의미 |
|---|---|---|
| 파일명 | LOVENSES_signed_new.apk | 유통 과정에서 바뀔 수 있으므로 단독 식별자로는 부족합니다. |
| 파일 크기 | 13,218,222 bytes · 약 12.61 MiB | 크기만으로 정상·악성을 구분할 수 없습니다. |
| MD5 | 9fdf9d59956e590ceba54e7f46a31ea4 | 검색과 대조에 활용할 수 있는 보조 식별값입니다. |
| SHA-1 | 9a2f8d3e31a7ba8ccd81d2437bd083600d97e90f | 동일 파일 대조를 위한 보조 식별값입니다. |
| SHA-256 | 57fc11f3d0b244d8b53ea437d497eaea07d5e05ae81e6feec07d1b764228a931 | 이번 분석에서 사용한 주 식별값입니다. |
| 파일 형식 | Android application package · APK | AndroidManifest.xml을 포함한 안드로이드 설치 파일로 판독됐습니다. |
| 인증서 지문 | 4d8feeba2063342566da3bf771066260099d368f | 제공된 화면에 표시된 인증서 SHA-1 지문입니다. |
Android는 설치 가능한 모든 APK에 서명을 요구하며 자체 생성 인증서도 허용합니다. 따라서 인증서의 주체 값이 C=1, ST=1, L=1, OU=1, CN=1처럼 부실한 점은 출처 불명 정황이지만, 악성 판정은 공식 패키지 불일치, 권한, 코드, 네트워크 지표와 함께 내려야 합니다.
권한 선언은 무엇을 가능하게 하나
제공된 Manifest 분석 화면에는 연락처, 전화번호, 사진, 영상, 외부 저장소와 네트워크 관련 권한이 함께 나타납니다. 몸캠피싱 상황에서는 이 조합을 가볍게 볼 수 없습니다. 다만 Manifest에 권한이 적혀 있다는 사실과 실제로 권한이 허용되어 데이터가 읽혔다는 사실은 구분해야 합니다. Android 6.0 이상에서 위험 권한은 일반적으로 실행 중 사용자 승인이 필요하며, 저장소 권한의 동작 범위는 Android 버전과 앱의 대상 SDK에 따라 달라집니다.
| 선언 권한 | 가능한 접근 범위 | 이번 샘플에서의 해석 |
|---|---|---|
| READ_CONTACTS | 기기에 노출된 연락처 데이터 읽기 | 몸캠피싱 압박에 직접 악용될 수 있는 민감 권한입니다. 실제 허용 상태를 확인해야 합니다. |
| READ_PHONE_NUMBERS | 기기와 연결된 전화번호 접근 | 전화번호 기반 식별에 쓰일 수 있으나 OS·통신 환경과 권한 승인 여부의 영향을 받습니다. |
| READ_PHONE_STATE | 전화·기기 상태 일부 확인 | 기기 식별 정보 수집 정황과 함께 볼 수 있지만, 선언만으로 수집 완료를 뜻하지 않습니다. |
| READ_MEDIA_IMAGES READ_MEDIA_VIDEO |
Android 13 이상에서 다른 앱이 만든 사진·영상 읽기 | 사진과 영상 접근 능력을 노린 선언입니다. 시스템 권한 화면에서 허용 여부를 따로 확인해야 합니다. |
| READ_EXTERNAL_STORAGE WRITE_EXTERNAL_STORAGE |
구형 Android의 공유 저장소 읽기·쓰기 | 최신 Android에서는 범위가 제한되거나 효과가 달라질 수 있는 레거시 권한입니다. |
| INTERNET ACCESS_NETWORK_STATE |
네트워크 연결과 연결 상태 확인 | 외부 통신의 전제는 되지만, 이 두 권한만으로 정보 전송을 입증하지는 못합니다. |
| MOUNT_UNMOUNT_FILESYSTEMS | 파일 시스템 마운트·해제 관련 시스템 권한 | Android 공식 문서상 일반 서드파티 앱용 권한이 아닙니다. 선언돼 있어도 일반 설치 앱이 실제 획득했다고 볼 수 없습니다. |
설치만 했는지, 앱을 열었는지, 연락처와 사진·영상 접근을 실제로 허용했는지, 허용 뒤 네트워크가 연결돼 있었는지를 시간순으로 확인해야 합니다.
액티비티와 서비스 이름만으로 악성 행위를 확정할 수 없습니다
제공된 화면에는 대상 앱의 MainActivity, SecondActivity 외에 com.blankj.utilcode.util.UtilsTransActivity와 com.blankj.utilcode.util.MessengerUtils$ServerService가 보입니다. 여기서 Blankj의 AndroidUtilCode는 공개된 범용 안드로이드 유틸리티 라이브러리입니다.
공개 소스의 `UtilsTransActivity`는 권한 결과나 다른 액티비티 결과를 콜백으로 전달하는 투명 액티비티 형태의 도우미이고, `MessengerUtils$ServerService`는 Android의 `Messenger`와 `Binder`를 이용해 앱 프로세스 사이에서 메시지를 전달하는 서비스입니다. 이름에 `Messenger`와 `Server`가 들어가지만, 그 자체가 인터넷 메신저 자동 발송이나 C2 서버 통신을 뜻하지 않습니다.
공개 유틸리티 라이브러리 클래스가 APK에 포함돼 있습니다. 앱 내부 프로세스 간 메시지 전달과 화면 전환을 지원할 수 있습니다.
앱의 자체 코드가 이 라이브러리를 언제 호출하는지, 어떤 데이터를 넘기는지는 DEX 호출 흐름을 직접 추적해야 합니다.
자동 협박 메시지 발송, 부팅 후 재실행, 아이콘 숨김, 자가 삭제는 제공된 클래스 목록만으로 확인되지 않습니다.
번들 요약의 XML 510개, PNG 170개, WEBP 13개, SO 4개, DEX 2개 같은 수치도 동일합니다. 리소스나 DEX 개수는 앱 구성의 단서일 뿐이며, 개수가 많거나 적다는 사실만으로 정상·악성 또는 은닉 기능을 판정할 수 없습니다. `MessageBodyReader`, `MessageBodyWriter`, JSON, GZ, RSA, Coroutine 관련 문자열 역시 정상 앱과 악성 앱 모두에서 쓰일 수 있는 일반 기술 구성요소입니다.
내장 도메인은 강한 정황이지만 실제 전송 증거와는 다릅니다
정적 분석 화면에는 bhyjznbalkf[.]monster/prod-api/ 문자열이 포함돼 있습니다. 공식 앱 패키지와 무관한 APK 안에 무작위 문자열 형태의 외부 도메인과 `prod-api` 경로가 들어 있다는 점은 주의할 만한 네트워크 지표입니다. 그러나 APK 안에 URL 문자열이 있다는 사실만으로 설치 직후 그 주소에 접속했거나 연락처·미디어를 업로드했다고 단정할 수는 없습니다.
| 확인 단계 | 이번 조사에서 확인한 내용 | 판정 범위 |
|---|---|---|
| 정적 문자열 | https://bhyjznbalkf[.]monster/prod-api/가 APK 분석 화면에 존재 | 외부 API 후보가 코드 또는 리소스에 포함된 사실 |
| 공개 웹 관측 | URLScan 공개 검색에서 2025-11-26 루트 도메인 관측 기록과 당시 IP 107.148.47.220 확인 | 해당 시점에 도메인이 웹에서 응답한 이력 |
| 현재 DNS | 2026-07-22 Cloudflare·Google 공개 DNS 질의에서 NXDOMAIN | 조사 시점에는 공개 DNS에서 해석되지 않음 |
| 미확인 영역 | 앱 실행 패킷, 요청 메서드, API 경로, 전송 본문, 서버 응답 | 실제 C2 통신과 정보 반출 여부는 아직 입증되지 않음 |
과거 서버가 내려갔거나 주소가 바뀌었을 수 있고, APK에 다른 주소 생성 로직이 있을 가능성도 남습니다. 반대로 도메인이 수상하다는 이유만으로 전송된 데이터 종류까지 만들어 내서도 안 됩니다. 실제 전송 내용은 동적 실행과 네트워크 기록으로 확인해야 합니다.
몸캠피싱에서 이런 APK가 설치되는 흐름
제공된 사례 맥락에서는 상대가 SNS나 메신저로 접근한 뒤 성인기기 제어 또는 영상 연결에 필요한 앱처럼 설명하며 APK 설치를 유도합니다. 이용자는 정상 브랜드 이름을 보고 의심을 낮추지만, 실제로는 공식 스토어가 아닌 파일 설치 화면을 거치게 됩니다.
-
SNS·메신저에서 친밀감을 형성합니다.
짧은 대화 뒤 영상통화나 별도 기기 연동을 제안합니다. -
익숙한 브랜드와 비슷한 파일명을 보냅니다.
공식 앱처럼 느끼게 하지만 설치 경로는 메신저 파일이나 외부 다운로드 페이지입니다. -
알 수 없는 앱 설치 허용을 요구합니다.
브라우저나 메신저에 외부 APK 설치 권한을 열도록 안내할 수 있습니다. -
연락처·전화번호·사진·영상 권한을 요청합니다.
앱 기능에 필요하다는 설명과 함께 여러 민감 권한을 연속으로 요구할 수 있습니다. -
확보했다고 주장하는 정보를 압박에 사용합니다.
실제 접근 범위와 상대의 과장 문구가 섞일 수 있으므로 설치·실행·권한 허용 여부를 따로 확인해야 합니다.
위 흐름은 제공된 사례 맥락을 바탕으로 재구성한 사회공학적 설치 유도 시나리오입니다. 각 단계가 해당 SHA-256 샘플의 동적 코드로 모두 입증됐다는 뜻은 아닙니다.
설치했다면 삭제 전에 확인할 기록
불안해서 바로 초기화하거나 모든 기록을 지우기보다 현재 상태를 짧게 남기는 편이 좋습니다. 앱이 실행 중이거나 권한을 허용했다면 가능할 때 Wi-Fi와 모바일 데이터 연결을 잠시 끊고, 다른 기기로 상담 경로를 확보한 뒤 아래 항목을 확인합니다.
- 받은 파일: 실제 파일명, 다운로드 폴더, 받은 시각과 전달된 대화 화면
- 앱 정보: 설정의 앱 정보 화면에 표시된 이름, 패키지, 버전, 설치 출처
- 권한 상태: 연락처, 전화, 사진과 동영상이 허용인지 거부인지
- 추가 설정: 접근성, 알림 접근, 기기 관리자, 다른 앱 위에 표시가 활성화돼 있는지
- 실행 시간대: 설치 시각, 처음 실행한 시각, 권한을 허용한 순서
- 계정 기록: 외부 페이지에 입력한 로그인 정보와 새로운 로그인 알림이 있었는지
- 증상: 모르는 알림, 예상하지 못한 메시지, 배터리·데이터 사용량 변화가 있었는지
이후 Google Play Protect 검사를 실행하고 Android 보안 업데이트와 Google 계정의 연결 기기를 확인합니다. 앱 제거가 막히거나 접근성·기기 관리자 같은 추가 설정이 켜져 있다면 그 화면을 먼저 기록한 뒤 해당 설정을 해제해야 할 수 있습니다.
이번 정적 자료에는 접근성 서비스, 기기 관리자, 부팅 완료 리시버가 직접 확인되지 않았습니다. 따라서 이 샘플이 반드시 해당 기능을 사용한다고 쓰지는 않습니다. 다만 같은 이름을 쓰는 다른 변형 APK일 수 있으므로 실제 설치된 앱의 설정 화면을 확인하는 과정은 필요합니다.
안드로이드와 아이폰의 확인 포인트는 다릅니다
| 기기 | LOVENSES APK와의 관계 | 우선 확인할 항목 |
|---|---|---|
| 안드로이드 | APK를 실제 설치할 수 있습니다. | 다운로드와 설치를 구분하고 앱 정보, 패키지, 권한, 특수 접근, 설치 출처를 확인합니다. |
| 아이폰 | APK 파일 자체는 iOS 앱으로 설치되지 않습니다. | 파일을 내려받기만 했는지, 별도 구성 프로필을 설치했는지, 외부 페이지에 계정 정보를 입력했는지를 봅니다. |
아이폰에서 `LOVENSES.apk`를 내려받았다는 사실만으로 Android 권한이 작동하지는 않습니다. 다만 같은 대화에서 다른 링크나 구성 프로필, 계정 입력 페이지로 이어졌다면 그 흐름은 별도로 확인해야 합니다.
이번 분석에서 확인된 것과 확인되지 않은 것
| 구분 | 항목 | 근거 수준 |
|---|---|---|
| 확인 | 파일 크기와 MD5·SHA-1·SHA-256, 인증서 지문 | 제공된 정적 분석 화면에서 직접 판독 |
| 확인 | 공식 앱 패키지와 대상 네임스페이스 불일치 | Google Play 공식 정보와 대상 액티비티 비교 |
| 확인 | 연락처·전화번호·사진·영상·네트워크 권한 선언 | Manifest 분석 화면 |
| 확인 | 의심 도메인 문자열 내장 | 정적 URL 목록 |
| 강한 정황 | 정상 브랜드 이름을 도용한 정보 접근형 APK 가능성 | 패키지 불일치, 외부 유통 맥락, 민감 권한과 도메인을 종합 |
| 미확인 | 실제 연락처·사진·영상 업로드 | 패킷 캡처와 서버 요청 본문 없음 |
| 미확인 | 자동 메시지 발송, 부팅 후 재실행, 아이콘 숨김, 자가 삭제 | 관련 코드 호출과 동적 실행 기록 없음 |
이렇게 증거 수준을 나누는 이유는 피해 범위를 축소하기 위해서가 아닙니다. 확인되지 않은 기능을 모두 작동한 것처럼 쓰면 이용자가 무엇을 실제로 확인해야 하는지 흐려집니다. 반대로 패키지 불일치와 민감 권한, 의심 도메인이라는 확인된 정황만으로도 이 APK를 계속 실행하거나 권한을 유지해서는 안 된다는 판단에는 충분합니다.
자주 묻는 질문
Q1. 공식 Lovense 앱도 악성 앱이라는 뜻인가요?
아닙니다. 이번 분석 대상은 공식 Google Play 패키지와 다른 별도 APK입니다. 정상 브랜드 이름을 도용했을 가능성이 있는 특정 파일을 분석한 것이며 공식 앱 자체와 구분해야 합니다.
Q2. 파일명이 LOVENSES.apk이면 모두 같은 악성 앱인가요?
아닙니다. 파일명은 바꿀 수 있습니다. 이번 결과는 SHA-256이 57fc11f3d0b244d8b53ea437d497eaea07d5e05ae81e6feec07d1b764228a931인 샘플을 기준으로 합니다.
Q3. 설치만 하고 권한은 모두 거부했습니다. 연락처가 넘어갔나요?
제공된 자료만으로 넘어갔다고 단정할 수 없습니다. 연락처 같은 위험 권한은 실제 허용 상태가 중요합니다. 앱 정보의 권한 화면과 설치 후 실행·네트워크 연결 여부를 함께 확인해야 합니다.
Q4. MOUNT_UNMOUNT_FILESYSTEMS가 있으면 휴대폰 전체를 제어하나요?
그렇게 볼 수 없습니다. Android 공식 문서상 일반 서드파티 앱용 권한이 아니므로 Manifest 선언만으로 실제 권한 획득이나 전체 제어를 의미하지 않습니다.
Q5. MessengerUtils 서비스가 협박 메시지를 자동으로 보낸다는 증거인가요?
아닙니다. 공개 소스에서 이 서비스는 Android Messenger 기반 프로세스 간 통신 도구입니다. 실제 자동 발송을 입증하려면 대상 앱 자체 코드의 호출 흐름과 동적 실행 기록이 필요합니다.
Q6. 내장 도메인이 현재 열리지 않으면 앱을 그냥 둬도 되나요?
권장하지 않습니다. 현재 DNS에서 해석되지 않더라도 다른 주소나 로직이 있을 수 있고 민감 권한이 남아 있을 수 있습니다. 최소 기록을 확인한 뒤 권한 해제, 강제 종료, 제거와 Play Protect 검사를 진행하는 편이 좋습니다.
Q7. 아이폰에서 APK를 받았습니다. 설치된 건가요?
APK는 Android 설치 형식이어서 iOS 앱으로 설치되지 않습니다. 다만 별도 링크를 열어 계정 정보를 입력했거나 구성 프로필을 설치했다면 그 항목은 따로 확인해야 합니다.
조사에 사용한 공개 자료
본문은 제공된 샘플 정적 화면을 출발점으로 삼고, 공식 앱 정보와 Android 공식 문서, 공개 라이브러리 원본 코드를 교차 확인해 작성했습니다. 의심 도메인은 직접 접속하지 않고 공개 DNS와 URLScan 검색 기록만 확인했습니다.
- Google Play · Lovense Remote 공식 패키지 정보
- Android Open Source Project · APK 서명 구조
- Android Developers · Manifest 권한 목록
- Android Developers · 실행 중 권한 요청 방식
- Android Developers · 사진·영상 공유 저장소 접근
- Android Developers · Messenger와 Binder 기반 IPC
- AndroidUtilCode · MessengerUtils 원본 코드
- AndroidUtilCode · UtilsTransActivity 원본 코드
- URLScan · 의심 도메인 공개 관측 검색
- Google · Android에서 신뢰하지 않는 앱 제거와 Play Protect 확인
(주)사이버헬퍼 상담 안내
LOVENSES.apk 악성앱 분석처럼 특정 파일을 확인할 때는 이름만으로 판단하지 않고 해시, 공식 패키지 일치 여부, 실제 권한 승인 상태와 설치 후 흐름을 함께 봐야 합니다. 메신저에서 받은 APK를 설치했거나 연락처·사진 권한을 허용했다면 파일명, 앱 정보, 권한 화면과 설치 시각을 먼저 정리해 보시기 바랍니다. 현재 남아 있는 기록만으로 범위를 나누기 어렵다면 (주)사이버헬퍼가 상담 전 확인 순서를 함께 정리합니다.
- 홈페이지: https://cyberhelper.co.kr/
- 카카오톡 상담: https://pf.kakao.com/_xnDnxhn/chat
- 대표번호: 1877-0118