왜 VirusTotal만으로는 APK 안전성을 확인하기에 충분하지 않은가
Source: Dev.to

매주 수천 명의 안드로이드 사용자가 텔레그램 그룹, 포럼, 서드파티 사이트에서 APK 파일을 다운로드합니다. 대부분은 안전성을 확인하기 위해 한 가지를 합니다 — 파일을 VirusTotal에 끌어다 놓고 빨간색 플래그가 있는지 확인하죠.
그것만으로는 충분하지 않습니다. 이유는 다음과 같습니다.
What VirusTotal Actually Does
VirusTotal은 파일을 70개 이상의 안티바이러스 시그니처 데이터베이스와 비교합니다. 시그니처는 기본적으로 알려진 위협의 지문과 같습니다. APK가 알려진 악성 지문과 일치하면 플래그가 표시됩니다.
문제는 새로 나온 악성코드에는 아직 지문이 없다는 점입니다. 탐지를 회피하도록 변형된 APK에도 지문이 없습니다. 알려진 어떤 가족에도 속하지 않는 스파이웨어도 지문이 없습니다.
시그니처 스캔은 어제의 위협을 잡을 수는 있지만 오늘의 위협은 잡지 못합니다.
What Actually Hides Inside Malicious APKs
수백 개의 APK를 스캔한 결과, 가장 흔한 레드 플래그는 시그니처 엔진으로 전혀 잡히지 않습니다:
- Permission mismatches – 플래시라이트 앱이 마이크와 연락처 접근을 요청한다면 정당한 이유가 없습니다.
- Broken or missing certificates – 모든 정상적인 앱은 개발자가 올바르게 서명합니다.
- Silent background network calls – 사용자의 행동 없이 알 수 없는 서버에 연결하는 앱.
- Repackaged legitimate apps with injected malicious code that looks clean on the surface.
이러한 항목들은 깨끗한 VirusTotal 보고서에 나타나지 않습니다.
A Real Example
텔레그램 그룹(회원 50 000명)에서 공유되는 인기 있는 모드 게임 APK를 예로 들어보겠습니다. VirusTotal은 0개의 탐지를 보여줍니다. 깨끗해 보이죠?
자세히 살펴보면:
- SMS‑read 권한을 요청합니다 — 게임이 메시지를 읽을 이유가 전혀 없습니다.
- 인증서가 손상되었습니다 — 원본이 빌드된 뒤 재패키징되었음을 의미합니다.
- 게임이 로드되기도 전에 첫 실행 시 외부 서버 3곳에 연결합니다.
이는 깨끗한 APK가 아닙니다. 게임으로 위장한 데이터 수집 도구입니다.
What to Actually Check Before Installing an APK
1. Permissions
각 권한이 앱이 주장하는 기능에 합당한지 스스로 물어보세요. 계산기는 카메라 접근이 필요 없고, 배경화면 앱은 마이크가 필요 없습니다.
2. Certificate validity
정상적인 앱은 항상 서명됩니다. 인증서가 손상되었거나 없다는 것은 APK가 원본 패키징 이후에 수정되었다는 의미이며, 이는 심각한 레드 플래그입니다.
3. Network behavior
앱이 어떤 서버와 언제 연결하는지 확인하세요. 사용자가 앱과 상호작용하기 전에 발생하는 백그라운드 호출은 기본적으로 의심스러워야 합니다.
4. Behavioral analysis
시그니처 매칭을 넘어서는 도구—예를 들어 APKScannerPro—는 APK 자체 내부의 구조적·행동적 패턴을 분석하여 시그니처 데이터베이스로는 잡히지 않는 이상 현상을 플래그합니다.
The Bottom Line
VirusTotal은 유용한 첫 번째 체크포인트일 뿐, 최종 판결은 아닙니다. 깨끗한 결과는 파일이 알려진 위협 시그니처와 일치하지 않는다는 의미이며, 파일이 안전하다는 뜻은 아닙니다.
APK를 정기적으로 사이드로드한다면, 매 설치 전에 다음 세 단계를 습관화하세요:
- 권한을 수동으로 확인 — 합당한가?
- 인증서가 유효하고 온전한지 검증.
- 시그니처 검사만이 아니라 행동 분석을 수행.
이 세 단계만으로도 매일 VirusTotal을 통과하는 대부분의 위협을 잡을 수 있습니다.