FILEM 악성 앱 분석: 12.87MB APK에서 확인할 권한·서명·통신 증거
파일 이름 하나만으로 감염이나 정보 유출을 단정할 수는 없습니다. 공개된 FILEM 샘플의 수치와 Android 공식 동작을 분리해 읽고, 설치 여부·실제 권한·통신 기록을 기준으로 현재 상태를 확인하는 방법을 정리합니다.
핵심 요약: 아크링크 보고서가 공개한 12.87MB, DEX 2개, 권한·Activity·Service·URL 정보는 한 분석 샘플의 관찰값입니다. 같은 이름의 파일이라도 내용이 달라질 수 있으므로 SHA-256, 패키지명, 인증서 지문, 설치 출처, 허용된 권한과 실제 통신을 함께 확인해야 합니다.
FILEM 악성 앱 공개 보고서에서 확인된 숫자
이번 글의 레퍼런스는 아크링크가 2025년 8월 공개한 기술 보고서입니다. 보고서는 사진·영상 또는 뷰어 앱처럼 보이는 FILEM APK 한 사례를 분석하고, 파일 기본정보와 매니페스트 구성요소를 제시합니다. 아래 수치는 보안 업계 전체 통계가 아니라 공개 보고서에 기재된 특정 샘플의 관찰값입니다.
| 관찰 항목 | 공개된 값 | 해석할 때의 한계 |
|---|---|---|
| APK 크기 | 12.87MB | 크기는 파일 식별 보조값입니다. 작거나 크다는 사실만으로 정상·위험을 판정할 수 없습니다. |
| DEX 구성 | 2개 | 코드 묶음 개수일 뿐입니다. 실제 함수, 난독화, 호출 흐름을 함께 봐야 합니다. |
| 공개된 Activity | 4개 클래스명 | Activity는 화면 진입점입니다. 클래스 이름만으로 데이터 탈취를 입증하지 못합니다. |
| 공개된 Service | 1개 | Service는 백그라운드 작업에 쓰이는 정상 구성요소이기도 합니다. 실행 조건과 행위를 확인해야 합니다. |
| 내장 네트워크 단서 | URL 1개 | 문자열 존재와 실제 접속·전송은 다릅니다. 격리 환경의 DNS·TLS·HTTP 기록이 필요합니다. |
파일명 주의: 공격자는 파일명을 자유롭게 바꿀 수 있습니다. `FILEM.apk`라는 이름이 같아도 동일 파일이 아닐 수 있고, 다른 이름을 사용해도 같은 내용일 수 있습니다. 동일성 비교에는 SHA-256 같은 해시가 우선입니다.
용량·서명·공개 라이브러리는 단독 판정 근거가 아닙니다
12.87MB라는 크기
단순한 앱도 크기가 작을 수 있고, 작은 파일이 실행 뒤 추가 데이터를 받을 수도 있습니다. 크기는 비교용 속성이지 악성 여부의 결론이 아닙니다.
자체 생성 인증서
Android는 설치되는 모든 APK에 암호학적 서명을 요구하지만, 모든 정상 앱이 Google이 발급한 하나의 인증서를 쓰는 것은 아닙니다. 공식 앱과 비교할 때는 패키지명과 서명 인증서 지문이 이어지는지를 봐야 합니다.
유틸리티 클래스
공개 라이브러리나 일반 유틸리티 클래스는 정상 앱에도 포함됩니다. 이름이 발견됐다는 이유만으로 숨김 기능이나 외부 전송을 확정해서는 안 됩니다.
내장 도메인 문자열
레퍼런스에는 `kubdad[.]store/prod-api/` 경로가 기재돼 있습니다. 다만 코드 안 문자열, 실제 접속, 데이터 업로드는 서로 다른 증거 단계입니다.
정확한 FILEM 악성 앱 분석은 정적 정보와 실행 증거를 연결해야 합니다. 파일 해시와 서명은 “무슨 파일인가”를, 권한 상태는 “무엇에 접근할 수 있었나”를, 네트워크 기록은 “실제로 어디와 통신했나”를 답합니다.
READ_CONTACTS부터 READ_MEDIA_VIDEO까지, 선언과 허용을 분리해야 합니다
공개 보고서에는 연락처, 전화번호, 사진·영상, 외부 저장소와 관련된 권한이 기록돼 있습니다. Android 공식 문서상 `READ_CONTACTS`와 `READ_PHONE_NUMBERS`는 위험 수준 권한이며, Android 6.0(API 23) 이상에서는 매니페스트 선언 외에 사용자의 런타임 허용이 필요합니다.
| 권한 | 허용될 때 가능한 범위 | 현재 확인할 항목 |
|---|---|---|
READ_CONTACTS | 사용자 연락처 데이터 읽기 | 설정의 앱 권한에서 연락처가 허용·거부·사용하지 않을 때 제거 중 어느 상태였는지 |
READ_PHONE_NUMBERS | 기기에 노출되는 전화번호 읽기 | 전화 관련 권한의 실제 허용 상태와 허용 시점 |
READ_MEDIA_IMAGESREAD_MEDIA_VIDEO | 다른 앱이 만든 이미지·영상 접근 | Android 13(API 33) 이상에서 사진·동영상 권한이 허용됐는지 |
READ_EXTERNAL_STORAGE | 구형 Android의 외부 저장소 읽기 | API 33부터 이 권한은 효력이 없으므로 OS 버전과 앱 대상 API를 함께 확인 |
Android 13 이상에서 이미지와 영상은 세분화된 권한으로 나뉩니다. 두 권한을 동시에 요청하면 시스템 대화상자는 하나로 표시될 수 있습니다. 반대로 사진 선택기(Photo Picker)를 이용하는 정상 앱은 전체 미디어 권한 없이 사용자가 고른 항목에만 임시 접근할 수 있습니다. 따라서 단순 뷰어가 처음부터 연락처와 전체 미디어를 함께 요구한다면 기능 설명과 맞는지 다시 확인해야 합니다.
Activity·Service·URL은 무엇을 보여주고 무엇을 보여주지 못하나
Android의 Activity는 사용자가 보는 한 화면의 진입점이고, Service는 사용자 인터페이스 없이 백그라운드 작업을 수행할 수 있는 구성요소입니다. 앱에 여러 Activity나 Service가 있다는 사실 자체는 일반적입니다. 중요한 것은 해당 구성요소가 어떤 조건에서 시작되고, 어떤 API를 호출하며, 허용된 데이터가 어느 목적지로 전달되는지입니다.
정적 분석으로 확인
SHA-256, 패키지명, 버전, 서명 인증서 지문, 권한 선언, 컴포넌트 목록, 내장 문자열과 라이브러리 구성을 기록합니다.
동적 분석으로 확인
개인 자료가 없는 격리 기기에서 실행 시점, 권한 요청 순서, 생성 파일, DNS 질의, 서버 연결과 전송 데이터를 관찰합니다.
개인 스마트폰에서 의심 파일을 다시 열어 동작을 시험해서는 안 됩니다. 실행 증거가 필요하다면 원본을 보존하고, 개인 연락처·사진·로그인 계정이 없는 분석 환경에서 다뤄야 합니다.
FILEM APK를 받았을 때 설치 단계별 초기 점검
파일을 받았다는 사실과 설치·실행·권한 허용은 다른 단계입니다. 먼저 어디까지 진행했는지 나누면 불필요한 공포와 놓친 보안 조치를 동시에 줄일 수 있습니다.
| 현재 상태 | 우선 확인할 것 | 주의점 |
|---|---|---|
| 링크만 받음 | 메신저 계정, 발신 프로필, URL 전체 | 미리보기와 실제 접속을 구분합니다. |
| APK 다운로드 | 파일명, 크기, 다운로드 시각, 가능하면 SHA-256 | 설치하지 않았다면 앱 권한은 실행되지 않습니다. |
| 설치 완료 | 설치 앱 목록, 패키지·버전, 설치 출처 | 아이콘이 사라져도 설정의 앱 목록을 확인합니다. |
| 권한 허용 | 연락처·전화·사진·동영상 각각의 상태 | 모든 권한이 한꺼번에 허용됐다고 가정하지 않습니다. |
| 실행 후 이상 징후 | 데이터 사용량, 배터리 기록, 브라우저·계정 세션 | 다시 실행하지 말고 네트워크를 분리한 뒤 기록합니다. |
- 의심 APK를 다시 실행하지 않습니다. 화면 확인을 위해 재실행하면 추가 권한 요청이나 외부 통신이 발생할 수 있습니다.
- 대화와 파일 유입 경로를 보존합니다. 메신저 대화, 프로필, URL, 파일명, 다운로드 시각을 화면과 원본 형태로 남깁니다.
- 앱 설치 정보를 기록합니다. 설정의 앱 정보에서 표시 이름, 버전, 설치 출처, 데이터 사용량을 확인합니다.
- 권한별 상태를 따로 기록합니다. 연락처·전화·사진·동영상과 특수 앱 접근 여부를 화면으로 남깁니다.
- 추가 통신이 의심되면 연결을 분리합니다. 비행기 모드를 활용하되 분석에 필요한 기록을 먼저 확보합니다.
- 신뢰할 수 있는 다른 기기에서 계정을 점검합니다. 메신저와 이메일의 접속 기기, 복구 정보, 비밀번호 재사용 여부를 확인합니다.
자주 묻는 질문
Q. FILEM이라는 이름의 APK는 모두 같은 파일인가요?
아닙니다. 파일명은 쉽게 바꿀 수 있습니다. 동일 파일 여부는 SHA-256, 패키지명, 서명 인증서 지문과 파일 크기를 함께 비교해야 합니다.
Q. 12.87MB보다 크기가 다르면 안전한가요?
그렇지 않습니다. 12.87MB는 공개 보고서 속 한 샘플의 값입니다. 리소스나 코드가 바뀌면 크기도 달라지므로 안전 판정 기준으로 사용할 수 없습니다.
Q. 연락처 권한을 거부했다면 주소록 접근은 없었나요?
일반적인 Android 권한 모델에서는 `READ_CONTACTS`가 거부된 앱의 연락처 API 접근은 실패합니다. 다만 계정 입력, 화면 공유, 알림 접근 등 다른 경로가 있었는지는 별도로 확인해야 합니다.
Q. 자체 서명 APK라서 악성이라고 볼 수 있나요?
자체 서명만으로는 부족합니다. 모든 설치 가능한 APK에는 서명이 필요합니다. 공식 배포본과 패키지·서명 지문이 일치하는지, 유입 경로와 실행 행위가 무엇인지가 중요합니다.
Q. 파일을 이미 삭제했으면 아무것도 확인할 수 없나요?
메신저 대화, 다운로드 기록, 설치 앱 목록, 권한 화면과 계정 접속 기록은 남아 있을 수 있습니다. 남은 자료부터 시간순으로 정리하면 점검 범위를 좁힐 수 있습니다.
참고 자료
- Android Developers: App manifest overview
- Android Developers: Manifest.permission API
- Android Developers: Android 13 granular media permissions
- Android Developers: Request runtime permissions
- Android Developers: APK signing and update continuity
- Android Developers: Activities and services
- MITRE ATT&CK Mobile: Protected user data
받은 파일과 현재 권한 상태부터 차분히 확인하세요
사이버헬퍼는 대화·파일·설치·권한·계정 기록을 구분해 현재 확인 가능한 범위를 안내합니다.