이 글의 내용은 APK 악성코드 분석에 대한 참고용 정보로 제공되며, 사용자가 이 정보를 바탕으로 행하는 모든 행위에 대해 법적 책임은 지지 않습니다. 악성코드 분석을 수행할 경우, 관련 법규와 윤리를 철저히 준수하여 타인의 권리를 침해하지 않도록 주의해야 합니다. 모든 사용자는 법적 책임을 인식하고, 적법한 절차를 따르며, 자신의 행위가 타인에게 미치는 영향을 고려해야 합니다.
1. APK 파일이란?
APK 파일(Android Package Kit)은 Android 운영체제에서 애플리케이션을 배포하고 설치하는 파일 형식입니다.
APK는 애플리케이션의 모든 컴포넌트(코드, 리소스, 매니페스트 파일 등)를 포함한 패키지 파일로, Android 시스템에서 실행 가능한 애플리케이션으로 변환됩니다.
1.1 APK 파일의 구성 요소
- DEX 파일(Classes.dex) : Dalvik 가상 머신에서 실행할 수 있는 바이트코드를 포함합니다. 이 파일은 앱의 실행 코드입니다.
- AndroidManifest.xml: 애플리케이션의 구성 정보를 담은 파일로, 권한, 애플리케이션 버전, 구성 요소(Activity, Service 등)를 정의합니다.
- Lib 디렉토리: C/C++로 작성된 네이티브 코드 라이브러리를 포함합니다.
- Res 디렉토리: 애플리케이션의 리소스(이미지, 레이아웃, 문자열 등)를 포함합니다.
- Assets 디렉토리: 애플리케이션에서 사용되는 추가 파일(폰트, 데이터 파일 등)을 포함합니다.
- META-INF 디렉토리: APK의 서명 정보와 관련된 파일을 포함합니다.
- Resources.arsc: 앱의 리소스를 최적화하고 컴파일한 파일입니다.
1.2 APK 감염 위험 및 방지 방법
APK 파일을 분석하거나 실행하는 과정에서 컴퓨터가 감염될 가능성이 있습니다.
특히 악성 APK파일을 다루는 경우에는 매우 조심해야 합니다.
(1) 격리된 환경에서 분석
- 가상머신 : 가상머신 소프트웨어를 사용하여, 격리된 안드로이도 에뮬레이터 또는 Kali Linux 같은 분석 환경을 만들어야 합니다.
- 샌드반스(sandbox) : 샌드박스는 악성코드를 격리된 환경에서 실행하고 그 동작을 분석하는 데 사용됩니다. Cuckoo Sandbox와 같은 툴을 이용하여 악성 APK 파일이 실제로 무엇을 하는지 분석할 수 있습니다.
(2) 네트워크 연결 차단
- 악성 APK 파일은 네트워크를 통해 공격자에게 정보를 전송하거나 추가 악성코드를 다운로드 할 수 있습니다. 네트워크 연결을 차단하여 이런 행동을 막을 수 있습니다.
(3) 정적분석
- APK 파일을 실제로 실행하기 전에 가능한 정적 분석(실행하지 않고 파일 구조 및 코드 분석)을 수행하는 것이 좋습니다 이를 위해 jadx,apktool 등을 사용하여 APK 파일을 디컴파일 하고 분석할 수 있습니다.
(4) 루트권한 조심
- APK 파일을 분석하는 시스템에서 루트권한을 가진 계정으로 실행하지 않는 것이 좋습니다. 루트 권한을 통해 시스템 전체에 영향을 미칠 수 있는 악성 코드의 위험을 줄이기 위함입니다.
1. APK 파일 가져오기
MalwareBazaar 사이트를 이용합니다.
- 악성코드 샘플을 무료로 횟수와 상관없이 다운로드 할 수 있는 사이트입니다.

- 압축 푸는방법
7z x 7 [apk파일]
이렇게 풀게되면 비밀번호를 입력하는 란이 나옵니다.
위에 ZIP password 의 비밀번호를 입력합니다.
2. APK 파일 확인하기

압축을 푼 디렉토리에 여러가지 파일이 있는 것을 알 수 있습니다.
보통 Androidmanifest.xml 파일을 먼저 분석을 합니다.
이 구조를 통해 APK 파일의 내용을 이해하고, 특히 애플리케이션의 권한, 사용되는 리소스, 코드를 분석할 수 있습니다. APK 파일 분석을 통해 악성코드 여부를 판단하거나, 특정 기능을 분석하는 데 유용합니다.