57
ASEC Unit. 악성코드와 분석 방법론 ㈜안철수연구소 시큐리티대응센터(ASEC) 장 영 준 연구원

악성코드와 분석 방법

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: 악성코드와 분석 방법

ASEC Unit.

악성코드와 분석 방법론

㈜안철수연구소

시큐리티대응센터(ASEC)

장 영 준 연구원

Page 2: 악성코드와 분석 방법

2

Ⅰ. 악성코드개요

Ⅱ. 악성코드분석

Ⅲ. 맺음말

목 차

Page 3: 악성코드와 분석 방법

3

Ⅰ. 악성코드 개요

1. 악성코드정의

2. 악성코드분류

3. 악성코드사례

4. 감염경로

Page 4: 악성코드와 분석 방법

4

Fred Cohen, “Computer Viruses – Theory and Experience”, 1984

– We define a computer ‘virus’ as a program can ‘infect’ other

programs by modifying them to include a possibly evolved copy

of itself. With the infection property, a virus can spread

throughout a computer system or network using the

authorizations of every user using it to infect their programs. Every program that gets infected may also act as a virus and

thus the infection grows.

Lawrence E. Bassham & W. Timothy Polk, “Treat Assessment of Malicious Code and Human Threats”, 1992.

– The following are necessary characteristics of a virus

• Replication

• Requires a host program as a carrier

• Activated by external action

• Replication limited to (virtual) system

1.악성코드 정의 (1/2)

Page 5: 악성코드와 분석 방법

5

악성코드 정의

악성코드는 '악의적인 목적을 위해 작성된 실행 가능한 코드‘ 이다.

실행 가능한 코드는 프로그램, 매크로, 스크립트 뿐만 아니라 취약

점을 이용한 데이터 형태들도 포함한다.

형태에 따라서 바이러스, 웜, 트로이 목마로 분류되고 있다.

The Malware (for "malicious software") is any program

or file that is harmful to a computer user.

Thus, malware includes computer Viruses, Worms,

Trojan Horses, and also SpyWare, programming that

gathers information about a computer user without

permission.

1.악성코드 정의 (2/2)

Page 6: 악성코드와 분석 방법

6

2.악성코드 분류 (1/5)

바이러스 (Virus)

바이러스는 일반적으로 감염대상이 되는 프로그램 또는 코드에 바이러스

자신의 코드 및 변형 코드를 감염시키며 컴퓨터 시스템 내부에서 확산된다.

Page 7: 악성코드와 분석 방법

7

웜 (Worm)

웜은 컴퓨터 내부의 기억장소에 코드 형태 또는 컴퓨터 내부 실행파일 형태로

존재한다. 실행 시 파일이나 코드 자체를 네트워크와 전자우편 등을 통해

다른 시스템으로 자기 복제를 시도하는 형태이다.

2.악성코드 분류 (2/5)

Page 8: 악성코드와 분석 방법

8

트로이목마 (Trojan Horse)

트로이 목마는 자기 자신을 복제하지 않지만 악의적 기능을 포함하는

프로그램이나 악의적 목적에 적극적으로 활용되는 프로그램이나 데이터를

통칭한다.

2.악성코드 분류 (3/5)

Page 9: 악성코드와 분석 방법

9

기타

스파이웨어 (Spyware)

유해가능 프로그램 중 사용자가 정확한 용도를 모르고 설치하여 사용자를 불편하게 하거나 사생활을

침해 할 수 있는 유형

애드웨어 (Adware)

유해가능 프로그램 중 사용자의 동의를 구하지 않고 광고를 목적으로 실행되는 유형

훅스 (Hoax)

실제로 존재하지 않지만 사용자들로 하여금 믿게 하기 위하여 정상파일을 악성코드로 속이는 유형

조크 (Joke)

장난을 목적으로 제작된 프로그램이지만 사용자에게 심리적 불안감을 조장하는 유형

2.악성코드 분류 (4/5)

Page 10: 악성코드와 분석 방법

10

* 바이러스/트로이목마/웜 특성 비교

특성종류

자기 복제 감염 대상 형 태 복구방법

바이러스 기생/겹침 치료

트로이목마 독립 삭제

웜 독립 삭제

※ 악성코드 분류의 기준이 점점 모호해짐

O O

X X

O X

2.악성코드 분류 (5/5)

Page 11: 악성코드와 분석 방법

11

도스 바이러스 Brain (1988, 최초, 부트, 파키스탄, 컴퓨터 속도 저하 )

예루살렘 (파일, 13일의 금요일에 파일 삭제)

미켈란젤로 (부트, 매년 3월 6일 파일 파괴)

Win16 (Windows 3.1) 바이러스 WinVir 1.4 (1992, 최초, 비상주형, 문자열 존재 ”Virus_for_Windows v1.4” )

Win16/Tentacle, Win16/Tentacle.II (1996, 비상주형)

Win9x 계열 바이러스 Win95/Boza (1996, 최초, 비상주형)

Win95/CIH (1998, VXD 이용한 상주형, IFSMGR 함수, 롬바이오스 삭제)

Win95/Scorpion (1998, 국내제작)

Win32 계열 바이러스 Window 95 이상의 9x/NT 환경에서 동작함

Win32/FunLove, Win32/Nimda, Win32/Klez

3.악성코드 사례 (1/6)

Page 12: 악성코드와 분석 방법

12

부트 바이러스 부트섹터 감염

Brain, Monkey, Anti-CMOS 등

파일 바이러스 COM, EXE 실행파일 감염

예루살렘, Sunday, Scorpion, Crow, Win95/CIH 등

부트 / 파일 바이러스 부트섹터, 파일 모두 감염

Invader(1990), 안락사(Euthanasia), Ebola(1998) 등

매크로 바이러스 엑셀과 워드 파일 감염

XM/Laroux

3.악성코드 사례 (2/6)

Page 13: 악성코드와 분석 방법

13

이 름 포 트 감염 방법 취약점 비 고

CodeRed

(2001)

TCP 80 1. 인덱스 서비스취약점 공격 CVE-2001-0500

CVE-2001-0506

매달 1-19일에는스캔, 20일후에는 특정사이트에 DoS

Attack

Nimda

(2001)

TCP 25

TCP 80

TCP 139

TCP 445

1. 전자 메일을이용한 전파

2. 네트워크공유 폴더를 이용한 전파

3. 윈도우 IIS 취약점 공격

CVE-2001-0154 1. eml 혹은 nws 파일을 생성

Slammer

(2003)

UDP 1434 1. MS-SQL의취약점 공격

2. 메모리 상주

CAN-2002-0649 376 bytes의한 개 Packet으로짜여진웜,

Header를포함하면 404 bytes.

Blaster

(2003)

TCP 135

TCP 4444

UDP 69

1. RPC DCOM 취약점공격

2.웜 본체 전송

3.웜 실행

CAN-2003-0352 1.IP generation

(40% 는 C클래스로컬 IP, 60%는랜덤)

2. Generate된 IP부터순서적인 20개의 IP에 스캔

Sasser

(2004)

TCP 445

TCP 5554

TCP 9996

1.LSASS 취약점을공격

2. TCP 9996 포트 오픈

CAN-2003-0533 공격 패킷으로인한 시스템 종료 현상 발생

Korgo

(2004)

TCP 445

TCP 2041

TCP 6667

1. LSASS 취약점을공격

2. 웜 본체 전송

3. 웜 실행

CAN-2003-0533 정상 프로세스인 Exploer.exe 에 RemoteThread 로 인젝션

되어 실행 및 외부 네트워크공격

3.악성코드 사례 (3/6)

Page 14: 악성코드와 분석 방법

14

35만 대 이상의 서버가 감염

약 26억 달러의 복구비용.

CodeRed (2001)

8백 3십만 대 이상의 서버가 감염

약 5억 9천만 달러의 재정 손실 발생

7000군데 이상 감염피해

Nimda (2001)

인터넷 대란 발생(2005.01.23)

한국의 주요 ISP서비스가 9시간여 동안 중단됨.

Slammer (2003)

3.악성코드 사례 (4/6)

Page 15: 악성코드와 분석 방법

15

Trojan Horse Win-Trojan/HangHack, Win-Trojan/LineageHack

Win-Trojan/NetDevil, Win-Trojan/BackOrifice, Win-Trojan/NetBus 등

3.악성코드 사례 (5/6)

Page 16: 악성코드와 분석 방법

16

기타 Win-Addware/Shortcur-INBEE, Win-Spyware/Look2Me,

Win-Joke/Ghost

3.악성코드 사례 (6/6)

Page 17: 악성코드와 분석 방법

17

감염 경로1. Internet

- www, FTP, Telnet

- E-mail

- News Group

3. System 장치

- FDD, CDROM

- Modem

2. LAN

- C/S

- P2P

www,

FTP

E-mail

Run, Copy,

Download

C/S,

P2P

감염

4.감염 경로

Page 18: 악성코드와 분석 방법

18

Ⅱ. 악성코드 분석

1. 사전 지식

2. 분석도구

3. 정적분석

4. 동적분석

Page 19: 악성코드와 분석 방법

19

분석도구 사용법 기본 툴 (HexEditor, ProcessExplorer, PEID, Dependency Walker 등)

모니터링 툴 (FileMon, RegMon, TcpViewer, Analyzer, Ethereal 등)

디버깅 / 디스어셈블 툴 (OllyDbg, IDA, WinDbg, SoftIce, Wdasm 등)

운영체제 / 통신 기본지식 Process / Thread, 가상메모리, MemoryMapping, DLL, 서비스 프로세스, Kernel Object, Structured

Exception Handlling, Synchronization Object 등

TCP / UDP 프로토콜, 통신 프로그램 구조, 소켓 통신 함수 socket, bind, listen, connect accept 등

1.사전 지식 (1/7)

Page 20: 악성코드와 분석 방법

20

Program Language Assembly Language, Visual C++, Visual Basic, Delphi, Jscript, VBScript, ASP, Perl 등

StartUp Code 프로그램 언어 / 컴파일러 종류별 Startup Code (Assembly Language 제외)

사용자가 작성한 메인 코드부분이 실행되기

이전에 초기화 부분 담당

[메인 덧셈 프로그램]

[StartUp Code]

1.사전 지식 (2/7)

Page 21: 악성코드와 분석 방법

21

실행파일 구조 COM, EXE, NE 등 윈도우 시스템에서 실행 가능한 PE 파일들의 구조

1.사전 지식 (3/7)

Page 22: 악성코드와 분석 방법

22

실행압축 분석지연 및 방해, 안티 바이러스 프로그램의 진단 우회, 다양한 변형제작 목적

[실행압축 종류]

1.사전 지식 (4/7)

Page 23: 악성코드와 분석 방법

23

실행압축 다양한 AntiDebugging 기법 적용

[실행압축 이전 OEP]

[실행압축 이후 OEP]

1.사전 지식 (5/7)

Page 24: 악성코드와 분석 방법

24

AhnLab ASEC 악성코드 분석 교육 프로그램 일정

1.사전 지식 (6/7)

Page 25: 악성코드와 분석 방법

25

동적 분석 정적 분석

파일유형판단

문자열추출및 분석

파일등록정보활용

샘플접수정보활용

전 이미지정보수집

샘플실행

후 이미지정보수집

증상정보분석

증상정보추가분석

각종정보수집

로그정보수집 / 분석

디스어셈블분석

상세디버깅

엔진반영여부결정

진단시그니쳐및함수작성

분석정보작성

외형 분석 증상 분석 자료 분석 상세 분석 엔진 반영

분 석 과 정

1.사전 지식 (7/7)

Page 26: 악성코드와 분석 방법

26

Frhed HexaEditor Hexa Editor

www.kibria.de

UltraEdit Hexa Editor

www.ultraedit.com

2.분석 도구 (1/8)

Page 27: 악성코드와 분석 방법

27

Process Explorer 프로세스, Thread, DLL 실행 정보

www.sysinternals.com

Dependency Walker DLL, Export 함수 정보

www.microsoft.com

2.분석 도구 (2/8)

Page 28: 악성코드와 분석 방법

28

FileMon 파일시스템 변경 모니터링

www.sysinternals.com

RegMon 레지스트리 변경 모니터링

www.sysinternals.com

2.분석 도구 (3/8)

Page 29: 악성코드와 분석 방법

29

TcpView 통신 포트 모니터링

www.sysinternals.com

Active Ports 통신 포트 모니터링

www.protect-me.com

2.분석 도구 (4/8)

Page 30: 악성코드와 분석 방법

30

Analyzer 네트워크 패킷 캡쳐

www.analyzer.polito.it

Ethereal 네트워크 패킷 캡쳐

www.ethereal.com

2.분석 도구 (5/8)

Page 31: 악성코드와 분석 방법

31

LordPE 실행 프로세스 Dump 및 PE Rebuld

y0da.cjb.net

PEiD PE 정보 획득

peid.has.it

2.분석 도구 (6/8)

Page 32: 악성코드와 분석 방법

32

OllyDbg 범용 디버거

www.ollydbg.de

IDA 디스어셈블러

www.datarescue.com

2.분석 도구 (7/8)

Page 33: 악성코드와 분석 방법

33

WinDbg User / Kernel mode 디버거

www.microsoft.com

SoftIce User / Kernel mode 디버거

www.compuware.com

2.분석 도구 (8/8)

Page 34: 악성코드와 분석 방법

34

증상 분석

[CPU / 프로세스]

Thread 생성

3.동적 분석 (1/5)

Page 35: 악성코드와 분석 방법

35

증상 분석

[파일]

3.동적 분석 (2/5)

Page 36: 악성코드와 분석 방법

36

증상 분석

[레지스트리]

3.동적 분석 (3/5)

Page 37: 악성코드와 분석 방법

37

증상 분석

[포트]

3.동적 분석 (4/5)

Page 38: 악성코드와 분석 방법

38

증상 분석

[네트워크]

3.동적 분석 (5/5)

Page 39: 악성코드와 분석 방법

39

Win32/Korgo.worm 상세분석

[Entry Point - UPX]

- 악성코드가 UPX로 Packing

- UnPack 루틴 디버깅

[OEP JMP 부분]

- UPX Unpack 후 OEP로 JMP 코드

3.정적 분석 (1/13)

Page 40: 악성코드와 분석 방법

40

Win32/Korgo.worm 상세분석

[MSVC Startup Code]

- Visual C++로 제작

- MSVCRT StartUp 코드를 알아야 함

[사용자 Main함수로 JMP 부분]

- 사용자 Main 함수로 JMP

3.정적 분석 (2/13)

Page 41: 악성코드와 분석 방법

41

Win32/Korgo.worm 상세분석 시스템 폴더에 랜덤한 파일명의 DLL (UPX Pack) 생성

3.정적 분석 (3/13)

Page 42: 악성코드와 분석 방법

42

Win32/Korgo.worm의 DLL 상세분석 [DllMain 부분 1]

3.정적 분석 (4/13)

Page 43: 악성코드와 분석 방법

43

Win32/Korgo.worm의 DLL 상세분석[DllMain 부분 2]

3.정적 분석 (5/13)

Page 44: 악성코드와 분석 방법

44

Win32/Korgo.worm의 DLL 상세분석 [DLL Injection 부분]

3.정적 분석 (6/13)

Page 45: 악성코드와 분석 방법

45

Win32/Korgo.worm의 DLL 상세분석 [레지스트리 등록, 인젝션 후 동작 부분]

3.정적 분석 (7/13)

Page 46: 악성코드와 분석 방법

46

[Accept Thread, 접속 성공시 웜 본체 전송]

3.정적 분석 (8/13)

Win32/Korgo.worm의 DLL 상세분석

Page 47: 악성코드와 분석 방법

47

[인터넷을 통한 파일 다운로드]

3.정적 분석 (9/13)

Win32/Korgo.worm의 DLL 상세분석

Page 48: 악성코드와 분석 방법

48

[취약점 스캔 / 공격 1]

3.정적 분석 (10/13)

Win32/Korgo.worm의 DLL 상세분석

Page 49: 악성코드와 분석 방법

49

Win32/Korgo.worm의 DLL 상세분석

3.정적 분석 (11/13)

[취약점 스캔 / 공격 2]

Page 50: 악성코드와 분석 방법

50

Win32/Korgo.worm의 DLL 상세분석

3.상세 분석 (12/13)

[취약점 스캔 / 공격 3]

Page 51: 악성코드와 분석 방법

51

Win32/Korgo.worm의 DLL 상세분석 [프로세스 강제 종료]

3.상세 분석 (12/13)

Page 52: 악성코드와 분석 방법

52

Ⅲ. 맺음말

1. 사전대응중요성

2. 악성코드미래

3. 분석기술미래

4. Reference

Page 53: 악성코드와 분석 방법

53

취약점 취약점 공격코드 악성코드 악성코드 긴급 악성코드 엔진 엔진 고객

발견 패치 발표 발견 출현 샘플 입수 대응 분석 제작 업로드 업데이트

시간이 지날 수록 고객 피해는 급격히 증가됨

시간 경과

1.사전 대응 중요성

Page 54: 악성코드와 분석 방법

54

1995

2000

2003

2005

200?

Password guessing

Self-replicating code

Exploiting Known Vulnerability

Moris Worm

Password cracking

Hijacking sessionsBackdoor

Packet spoofing

Denial of service

Automated probes/scansCIHStealth

Happy99 Worm

WWW Atack

CodeRedNimda

DDOS Attack

SQL SlammerBlaster

Sasser Korgo

Zeroday Attack

Future Malware

2.악성코드 미래

Page 55: 악성코드와 분석 방법

55

2000

2005

20??

Tool Analysis

Manual Analysis

?DNA Analysis

Automatic Analysis

2.분석기술 미래

Page 56: 악성코드와 분석 방법

56

AhnLab 웹 사이트 (www.ahnlab.com)

NCSC 웹 사이트 (www.ncsc.go.kr)

KISA 웹 사이트 (www.kisa.or.kr)

KrCert 웹 사이트 (www.krcert.or.kr)

악성 모바일 코드 (윈도우 바이러스 작동원리와 퇴치) – 로저 그라이암스

The Art of Computer Virus Research and Defense - Peter Szor

윈도우 인터널즈 Fourth Edition - Mark E. Russinovich & David A. Solomon

Programming Applications for Microsoft Windows Fourth Edition - Jeffrey Ritcher

Programming the Microsoft Windows Driver Model - Walter Oney

소프트웨어 보안 – Greg Hoglund & Gary McGrew

Hacker Dissembling Uncovered - Kris Kaspersky

Hacker Debugging Uncovered - Kris Kaspersky

Reversing (Secrets of Reverse Engineering) – Eldad Eilam

4. Reference

Reference Web-Sites

Reference Anti-Virus Books

Reference Analysis Books

Page 57: 악성코드와 분석 방법

57

Q&A

Thanks for your attention