Hack4S3cur1ty

Lab #9 Analyze Malicious Android Application 본문

DoubleS 1405/개인발표

Lab #9 Analyze Malicious Android Application

h4ck4s3cur1ty 2016. 12. 28. 23:58

실습 목표

1. 여러 가지 분석 방법을 통해 APK 파일 내 악성 코드를 찾아내고 분석하고 이해한다.

필수 구성 요소

1. dex2jar
2. jd-gui
3. sample apk

실습 과정

안드로이드 애플리케이션은 APK 파일의 형대로 배포된다.
APK파일은 ZIP과 같은 PE구조이므로 그냥 압축 해제하면 구성파일을 확인할 수 있다.
구성파일은 대표적으로 assets, res, libs 폴더와 AndroidManifest.xml, classes.dex 파일들로 구성된다.

[그림1]
특히 classes.dex파일에는 달빅 바이트코드가 담긴다. 여기에 담긴 코드는 4가지의 주요 컴포넌트로 나뉜다.


[그림2]

Activity -
사용자가 앱 아이콘을 터치할 때 실행되어 보이는 UI화면을 뜻한다. 가장 흔히 쓰이는 클래스고 onCreate 함수는 Activity가 실행되었을 때 가장 먼저 실행되기 때문에 대부분 여기에 악성코드를 작성한다. 

Broadcast / Intent Receiver -
해당 채널의 접근권한이 있을때 발생하는 Broadcast를 수신하는 역할을 한다. 예를 들어 Notification을 이용하여 진동, 사운드 재생, 상태바 알림 등에 이용된다.

Content Provider -
앱 자신의 데이터, 특히 SQLite DB 데이터를 공유할 때 주로 쓰인다. 카카오톡이 대화 내용을 암호화 시킨후 db형태로 저장시키는데 이로 인해 데이터 유출이 일어나는 사례가 많다.

Service -
Content Provider와 비슷하지만 Service는 함수를 공유하는데 목적이 있다.

어플리케이션 분석 방법은 달빅 바이트코드가 담긴 classes.dex를 dex2dar로 디컴파일해서 jd-gui로 분석한다.

먼저 분석에 이용할 악성 어플리케이션 샘플을 구한다. 
http://rogunix.com/docs/Android/Malware/


[그림3]
악성 어플리케이션 샘플을 모아둔 사이트도 있지만 나는 지인들로부터 직접 구했다.
내가 구한 어플리케이션은 스카이프를 이용한 몸캠사기에 이용됬던 어플리케이션 이다.

먼저 어플리케이션을 압축해제 해보자.


[그림4]
[그림1]과 비슷한 내용이 들어있다.
여기서 classes.dex파일을 dex2jar로 디컴파일을 진행 할 것이다.

dex2jar을 다운로드 받고 압축을 풀다


[그림5]

압축을 푼 dex2jar폴더에 [그림4]에서 추출한 classes.dex 파일을 같이 넣는다.

CMD를 실행시켜 classes.dex가 들어있는 폴더로 이동한 후 
> dex2jar.bat classes.dex 
를 입력하여 classes.dex파일을 디컴파일 한다.


[그림6]


[그림7]
classes_dex2jar.jar파일이 생성되었다.

이제 이 파일을 jd-gui툴에서 불러들여서 앱의 구조를 확인해보자


[그림8]
대부분 앱의 실행경로인 MainActivity.class를 찾아간다.


[그림9]

MainActivity에는 특별한 내용이 없어보인다. SecretView를 클릭해서 다음 실행으로 넘어간다.


[그림10]

recvMail이라는 정의에서 이메일이 노출되었다. GMailSender이라는 정의도 보인다. 좀 더 정확하게 찾기 위해 스크롤을 내려서 천천히 살펴본다.


[그림11]

스크롤을 다 내렸을 때 쯤 이메일과 비밀번호가 노출되었다. 아마 메일을 발송할 때 필요한 계정인거같다. gmail이니 로그인을 시도해 보자.


[그림12]

아쉽게도 계정이 정지되어있다. 아마 구글측에서 차단을 했거나 누군가 분석하여 이미 신고를 한 상태인거같다.

-----
이 어플리케이션은 몇 개월이 지난 어플리케이션이라서 작동을 멈춘거같다.
그래서 최신 악성코드를 찾아내어 분석했다.
분석도중 전화번호와 SMS가 저장되는 URL을 발견했고, admin으로 sql injection을 시도해보았지만 잘 되지 않았다.
최신 악성코드 샘플을 첨부(악성코드 디컴파일.jar)해놨으니 연습용으로 분석을 시도해보는것도 나쁘지 않을거같다.

'DoubleS 1405 > 개인발표' 카테고리의 다른 글

BadUSB 취약점과 시연동영상  (0) 2020.08.12
Volatility Plugins  (0) 2020.08.12
라즈베리파이를 이용한 RC카 만들기 (WII Remote)  (0) 2020.08.12
pfSense 방화벽  (0) 2020.08.12
Lab #2 Making Malware using SFX Archive  (0) 2016.12.28
Comments