최종연구보고서	KISA-WP-2014-0038

악성코드 분석

Malware Analysis

수탁기관 : 순천향대학교 산학협력단

2014. 12.

제       출       문

한국인터넷진흥원 원장 귀하

본 보고서를 “악성코드 분석”의 최종연구개발 결과보고서로 제출합니다.

2014년 12월 18일

수탁 기관 : 순천향대학교 산학협력단

연구책임자 : 교    수    염 흥 열 (순천향대학교 정보보호학과)

참여연구원 : 연 구 원    고 재 남 (순천향대학교 정보보호학과)

연 구 원    김 동 석 (순천향대학교 융합서비스보안학과)

연 구 원    김 종 기 (순천향대학교 융합서비스보안학과)

연 구 원    가 예 람 (순천향대학교 정보보호학과)

연 구 원    김 재 홍 (순천향대학교 정보보호학과)

연 구 원    김 학 수 (순천향대학교 정보보호학과)

연 구 원    양 정 인 (순천향대학교 정보보호학과)

연 구 원    양 준 호 (순천향대학교 정보보호학과)

연 구 원    유 동 현 (순천향대학교 정보보호학과)

연 구 원    유 승 우 (순천향대학교 정보보호학과)

연 구 원    이 세 빈 (순천향대학교 정보보호학과)

연 구 원    이 창 진 (순천향대학교 정보보호학과)

연 구 원    최 진 선 (순천향대학교 정보보호학과)

요       약       문

1. 제목

악성코드 분석

2. 연구개발의 목적 및 중요성

최근 컴퓨터와 인터넷의 보급이 크게 확산됨에 따라 인간의 삶을 편하고 윤택하게 만들어 주었으나 이에 따른 부작용 역시 급증하고 있다. 그중 분산서비스(DDoS) 공격, 개인정보 유출, 해킹 등은 대부분 악성코드에 의해 발생하며, 사용자의 피해가 지속해서 증가하고 있다. 한국인터넷진흥원 인터넷침해사고대응센터의 “14년 인터넷 침해사고 대응계획” 보고서에 따르면, 하루 평균 악성코드 출현량이 2013년에 1,435종에서 2014년에 8,847종으로 한해 사이에 약 6배가 증가했다.[1] 이처럼 악성코드가 급격히 증가한 이유는 악성코드 제작자들이 자동화 도구로 유사·변종 악성코드를 빠르게 제작하기 때문이다. 자동화 도구로 제작된 악성코드는 EPO(Entry Point Obscuring)나 암호화 코드 부분만 변경하여 악성 행위는 같으나 겉모습만 바꾸어 백신의 탐지를 피하고 있다. 이러한 다형성 기법의 보편화로 인하여 유사·변종 악성코드가 급증하고 있으며 분석 방해 기법도 진화하는 추세이다.

본 연구 과제에서는 500여 종의 악성코드를 상세 분석하여 유사·변종 악성코드를 효과적으로 구분할 수 있는 연관성 분석의 기반이 되는 악성코드 특징점 추출을 연구 목표로 한다.

3. 연구개발의 내용 및 범위

본 연구 과제에서는 악성코드 상세 분석 및 특징점 추출을 위해 다음과 같은 연구 내용을 수행한다.

o 악성코드 정의 및 유형 분류

- 악성코드 정의 조사

- 악성코드 유형별 분류

o 악성코드 분석 방법 연구

- 정적 분석을 이용한 악성코드 분석 방법 연구

- 동적 분석을 이용한 악성코드 분석 방법 연구

o 악성코드 분석 및 특징점 추출 연구

- 500여종의 악성코드 상세 분석

- 시그니처 기반 악성코드 분류 도구 조사 및 분석

- 악성코드 특징점 항목 조사

- 악성코드별 특징점 추출

4. 연구결과

현재까지의 연구 결과 내용은 다음과 같다.

o 중간 연구 보고서

중간 연구 보고서에서는 악성코드 분석 방법과 한글 취약점으로 유포되는 악성코드, 6.25 사이버테러에 사 용된 악성코드를 상세 분석하여 연관성 분석의 기반을 기술하였다.

o 최종 연구 보고서

최종 연구 보고서에서는 중간 연구 보고서 이후 추가로 받은 악성코드에 대한 상세 분석을 추가하였다. 또한, 악성코드를 시리즈별로 분류하여 각각의 특징점을 추출하여 악성코드 연관성 분석을 위한 기반을 기술하였다.

5. 활용에 대한 건의

본 최종 보고서의 결과물은 다음과 같이 활용될 수 있다.

o 악성코드 공격자 추적 및 연관성 분석을 위해 사용

o  기존의 악성코드와 일치하거나 변종 악성코드의 가능성을 확인하여 신속한 대응 및 피해 확산 최소화

6. 기대효과

본 연구과제에서 도출되는 악성코드 상세 분석과 특징점은 연관성 분석의 기반이 되어 유사·변종 악성코드를 보다 빠르고 효율적으로 판단할 수 있는 환경을 제공할 것이며, 신속한 대응 및 피해 확산을 최소화할 것으로 기대된다.

아울러 본 연구과제를 통하여 배출되는 인력들은 향후 국내 악성코드 분석 분야에 진출하여 각종 침해사고 대응에 크게 기여할 수 있을 것으로 기대된다.

SUMMARY

1. Title

Malware Analysis

2. Purpose of the study

As wide deployment of the computers and the greatly expanding of Internet, the daily life of people has become comfortable. However, the side effects are also increasing rapidly. The cyber attacks are examples of the most typical side effects: for instance, Distributed Denial of Service (DDoS), leak of massive personal information, and cyber hacking, etc. These attacks using malware mostly are occurring and the damage from these attacks are increasing continuously. According to the report of the KISA(Korea Internet & Security Agency) and KrCERT(Korea Computer Emergency Response Team), titled "'2014 Internet emergency response plan", the average amount of new malware per day was only 1,435 in 2013, However, this number is increased to 8,847 in 2014. It shows that amount of malware by one year is increasing by six times, compared to those last year[1]. The major reasons for increasing amount of malware rapidly come from that malware writers make easily and quickly variants of a malicious code using an automated tool. Malware fabricated by automated tools, like EPO (Entry Point Obscuring) changes or encryption code changes, malware vaccine is not aable to detect them efficiently, while they are behaving in same ways. As widely spreaded polymorphisms of malware has been rapidly increasing, malware variants are rapidly increasing, and there is a tendency for them not to be analyzed by the efficient analysis tool of malware.

This purpose of this study is to extract key features of 500 or more malware by conducting detailed analysis and identifying relationships between them to effectively distinguish malware variants.

3. Contents and scope

In this study, we conduct following items for extracting the feature of malicious codes:

o Malware definitions and type classification

- Malware definitions and investigation

- Classification of malware

o Research methods of malware analysis

- Study of the malware analysis method using the static analysis

- Study of the malware analysis method using the dynamic analysis

o Study of malware analysis and feature extraction

- Detailed analysis of more than 500 malware

- Analysis of signature-based malware classification tool and Research

- Extraction of Features for investigation of malware

- Extraction of features of malware

4. Results of the study

o The interim Research Report

In the intermediate research report, malware analysis disseminated by exploiting “Hangul” vulnerability was described. In addition, detailed analysis of malicious code used in the 6.25 cyber terror was also presented

o The final Research Report

The final research report following interim research report describes malware analysis results. Also, classifying of malwares and extracting features of a series of malware variants are also described.

5. Expected effects and applications

The results of this final report, it is possible to use as follows.

o Use for malware attackers tracking and malware-related analysis

o Check the possibility of subspecies of malware if to match the existing malware, be reduced to a rapid response and damage diffusion minimum

Detailed analysis and features of the malware found in this study is to provide an environment which could more efficiently and faster analysis to determine the similar variants of malicious code. Also the environment would be the basis for analysis of the relationship, and using this, we can expect minimize the spread of the damage.

In addition, our research teams could aid in contributing to protect and respond to cyber incidents in the future through domestic malware analysis.

목       차

제 1 장 서  론	1

제 1 절 연구의 목적 및 필요성	1

제 2 장 악성코드	2

제 1 절 악성코드 개요	2

1. 악성코드 정의	2

2. 악성코드 유형	2

제 2 절 악성코드 분석 방법	6

1. 정적 분석	6

2. 동적 분석	11

제 3 장 악성코드 상세 분석	16

제 1 절 7.7 디도스 악성코드	16

1. 분석 내용	16

2. 분석 결과	22

제 2 절 3.4 디도스 악성코드	25

1. 분석 내용	25

2. 분석 결과	34

제 3 절 3.20 사이버테러 악성코드	37

1. 분석 내용	37

2. 분석 결과	42

제 4 절 6.25 사이버테러 악성코드	44

1. 분석 내용	44

2. 분석 결과	51

제 5 절 한글 문서 취약점 악성코드	54

1. 분석 내용	54

2. 분석 결과	59

제 6 절 Kimsuky APT 악성코드	62

1. 분석 내용	62

2. 분석 결과	72

제 7 절 아이스포그(IceFog) APT 악성코드	73

1. 분석 내용	73

2. 분석 결과	78

제 8 절 라이브리(LiveRe) 유포 악성코드	80

1. 분석 내용	80

2. 분석 결과	87

제 9 절 미분류 악성코드	90

1. 분석 내용	90

2. 분석 결과	94

제 4 장 악성코드 특징점	97

제 1 절 야라(YARA)	97

제 2 절 악성코드 특징점 추출	101

1. 7.7 디도스 악성코드	101

2. 3.4 디도스 악성코드	104

3. 3.20 디도스 악성코드	108

4. 6.25 디도스 악성코드	111

5. 한글 취약점 악성코드	113

6. Kimsuky APT 악성코드	115

7. 아이스포그(IceFog) APT 악성코드	118

8. 라이브리(LiveRe) 유포 악성코드	120

9. 미분류 악성코드	124

제 5 장 결  론	127

참고문헌	128

Contents

Chapter 1 Introduction	1

Section 1 Purpose and Need for Research	1

Chapter 2 Malware	2

Section 1 Malware Overview	2

1. Definition of Malware	2

2. Types of Malware	2

Section 2 Malware Detailed Analysis	6

1. Static Analysis	6

2. Dynamic Analysis	11

Chapter 3 Malware Detailed Analysis	16

Section 1 7.7 DDoS Malware	16

1. Analysis Content	16

2. Analysis Result	22

Section 2 3.4 DDoS Malware	25

1. Analysis Content	25

2. Analysis Result	34

Section 3 3.20 Cyber Terrorism Malware	37

1. Analysis Content	37

2. Analysis Result	42

Section 4 6.25 Cyber Terrorism Malware	44

1. Analysis Content	44

2. Analysis Result	51

Section 5 Hancom Office Vulnerability Malware	54

1. Analysis Content	54

2. Analysis Result	59

Section 6 Kimsuky APT Malware	62

1. Analysis Content	62

2. Analysis Result	72

Section 7 IceFog APT Malware	73

1. Analysis Content	73

2. Analysis Result	78

Section 8 LiveRe Spread Malware	80

1. Analysis Content	80

2. Analysis Result	87

Section 9 Uncategorized Malware	90

1. Analysis Content	90

2. Analysis Result	94

Chapter 4 Malware Feature Point	97

Section 1 YARA	97

Section 2 Malware Feature Point Extraction	101

1. 7.7 DDoS Malware	101

2. 3.4 DDoS Malware	104

3. Section 3 3.20 Cyber Terrorism Malware	108

4. 6.25 Cyber Terrorism Malware	111

5. Hancom Office Vulnerability Malware	113

6. Kimsuky APT Malware	115

7. IceFog APT Malware	118

8. LiveRe Spread Malware	120

9. Uncategorized Malware	124

Chapter 5 Conclusion	127

References	128

그림 목차

(그림 2-1) PE 구조 분석 도구(PEiD)	7

(그림 2-2) PE 분석 도구(PEview)	8

(그림 2-3) 리소스 분석도구(Resource Hacker)	8

(그림 2-4) Hex 코드 분석 도구(HxD)	9

(그림 2-5) 문자열 추출도구(BinText)	10

(그림 2-6) 디스어셈블러(IDA Pro)	11

(그림 2-7) 프로세스 분석 도구(Process Explorer)	12

(그림 2-8) Regshot	13

(그림 2-9) 네트워크 분석 도구(WireShark)	13

(그림 2-10) 파일 시스템 분석 도구(CaptureBAT)	14

(그림 2-11) 디스어셈블러(OllyDbg)	15

(그림 2-12) API 호출관계 분석 도구 (API Monitor)	15

(그림 3-1) 디도스 악성코드 서비스 등록	17

(그림 3-2) Windows 방화벽 비활성화	17

(그림 3-3) 공격 대상과 공격 시간 추출	18

(그림 3-4) 디도스 페이로드 설정	18

(그림 3-5) 디도스 페이로드 전송	19

(그림 3-6) 악성코드 내 문자열 복호화 루틴	20

(그림 3-7) 문자열 복호화 테이블	20

(그림 3-8) 악성코드 다운로드 URL 복호화	21

(그림 3-9) 추가 악성코드 다운로드	21

(그림 3-10) 하드디스크 내 확장자 검사	22

(그림 3-11) 스팸메일 전송	22

(그림 3-12) 7.7 디도스 악성코드 유형 통계	24

(그림 3-13) 3.4 디도스 악성코드 실행과정	25

(그림 3-14) 드롭된 파일	25

(그림 3-15) 호스트 파일 변조 루틴	26

(그림 3-16) 변조된 호스트 파일	27

(그림 3-17) 시간 비교 후 소켓 통신	28

(그림 3-18) 수집 정보 전송	28

(그림 3-19) 파일 수신 루틴	29

(그림 3-20) 복호화 루틴	29

(그림 3-21) 시스템 시간 비교	30

(그림 3-22) 공격 시간이 저장된 파일	30

(그림 3-23) 복호화 루틴 일부	31

(그림 3-24) DNS 쿼리 요청 루틴	31

(그림 3-25) 디도스 공격 루틴	32

(그림 3-26) 특정 파일의 내용 변조	33

(그림 3-27) 디스크 파괴 루틴	34

(그림 3-28) 3.4 디도스 악성코드 유형 통계	37

(그림 3-29) 수집된 정보 전송	38

(그림 3-30) 레지스트리 정보 수집	39

(그림 3-31) 운영체제 정보 수집	39

(그림 3-32) 수집된 정보 전송	40

(그림 3-33) 시스템 시간 비교	40

(그림 3-34) MBR 영역 변조	41

(그림 3-35) MBR 영역 변조 전/후 비교	41

(그림 3-36) UNIX계열 디스크 파괴 스크립트	42

(그림 3-37) 3.4 디도스 악성코드 유형 통계	44

(그림 3-38) 디도스 악성코드 흐름도	45

(그림 3-39) 랜덤한 레지스트리 값 추출을 위한 루틴	46

(그림 3-40) 서비스 레지스트리의 문자열 검사	46

(그림 3-41) 서비스 레지스트리 하위키 복사	46

(그림 3-42) 파일 다운로드 및 시그니처(BM6W) 검사	47

(그림 3-43) 컴퓨터 시간 검사	47

(그림 3-44) 디도스 공격 패킷	47

(그림 3-45) MBR 영역 파괴	48

(그림 3-46) MBR 영역 변조 전/후 비교	48

(그림 3-47) 파일 삭제 및 변경	49

(그림 3-48) 변경된 바탕화면 – 1	50

(그림 3-49) 변경된 바탕화면 – 2	50

(그림 3-50) 사용자 계정 비밀번호 변경	51

(그림 3-51) 6.25 사이버테러 악성코드 유형 통계	53

(그림 3-52) 디스크 드라이브 정보 수집	54

(그림 3-53) 컴퓨터 및 사용자 이름, 컴퓨터 시간 수집	55

(그림 3-54) 운영체제 정보 수집	55

(그림 3-55) 기본 시스템 정보 수집	56

(그림 3-56) 수집된 시스템 정보	56

(그림 3-57) 키보드 입력 정보 수집	57

(그림 3-58) 키보드 입력 정보 수집	57

(그림 3-59) C&C 서버 접속 설정	58

(그림 3-60) 데이터 수신 및 명령 실행	58

(그림 3-61) 이메일 계정에서 파일 다운로드	59

(그림 3-62) 한글 취약점 악성코드 유형 통계	61

(그림 3-63) 정보탈취 악성코드 흐름도	62

(그림 3-64) 복호화 루틴	63

(그림 3-65) 특정 백신 프로그램 무력화	63

(그림 3-66) 윈도우 방화벽 무력화	64

(그림 3-67) 감염PC 정보 수집	64

(그림 3-68) 수집 정보 통합	65

(그림 3-69) 수집 정보 암호화	65

(그림 3-70) 이메일 전송	66

(그림 3-71) 키로그 루틴 - 1	67

(그림 3-72) 키로그 루틴 - 2	68

(그림 3-73) 키로그 루틴 - 3	69

(그림 3-74) 수집된 키로그 파일	69

(그림 3-75) TeamViewer 프로그램 문자열	70

(그림 3-76) TeamViewer 명령어	71

(그림 3-77) Kimsuky APT 악성코드 유형 통계	73

(그림 3-78) 정보 수집	74

(그림 3-79) C&C 서버 접속	75

(그림 3-80) cmd 명령어	75

(그림 3-81) 파일 업로드 명령어 루틴	76

(그림 3-82) 파일 다운로드 명령어 루틴	76

(그림 3-83) 코드 명령어 루틴	77

(그림 3-84) 파일 암/복호화 루틴	77

(그림 3-85) 이메일을 통한 업로드/다운로드 루틴	78

(그림 3-86) 아이스포그(IceFog) APT 악성코드 유형 통계	80

(그림 3-87) 뮤텍스 생성 및 BITS 서비스 확인	81

(그림 3-88) 특정 백신의 경로 수집	82

(그림 3-89) 백신 제거 프로그램 실행	83

(그림 3-90) 백신 제거 진행	83

(그림 3-91) 정보탈취	84

(그림 3-92) 암호화된 URL	84

(그림 3-93) 복호화 루틴	85

(그림 3-94) 복호화된 URL	85

(그림 3-95) 특정 URL 접속 및 파일 다운로드	86

(그림 3-96) “MZ”시그니처 삽입 및 실행	86

(그림 3-97) 라이브리(LiveRe) 유포 악성코드 유형 통계	90

(그림 3-98) 게임 계정 탈취 악성코드 구조	91

(그림 3-99) 게임 계정 탈취 악성코드 구조	92

(그림 3-100) 수집 정보 통합	93

(그림 3-101) 특정 웹사이트 접속 확인	94

(그림 3-102) 미분류 악성코드 유형 통계	96

(그림 4-1) 야라 실행 화면	97

(그림 4-2) 야라 룰 기본 형태	99

(그림 4-3) 야라 nocase, wide, ascii 사용 방법	100

(그림 4-4) 7.7 디도스 악성코드 야라 룰(디도스)	102

(그림 4-5) 3.4 디도스 악성코드 야라 룰(디도스)	104

(그림 4-6) 3.4 디도스 악성코드 야라 룰(디스크 파괴)	107

(그림 4-7) 3.20 사이버테러 악성코드 야라 룰(드롭퍼)	108

(그림 4-8) 3.20 사이버테러 악성코드 야라 룰(디스크 파괴)	110

(그림 4-9) 6.25 사이버테러 악성코드 야라 룰(드롭퍼)	111

(그림 4-10) 6.25 사이버테러 악성코드 야라 룰(디스크 파괴)	112

(그림 4-11) 한글 문서 취약점 악성코드 야라 룰(키로거)	114

(그림 4-12) Kimsuky APT 악성코드 야라 룰(정보탈취)	115

(그림 4-13) Kimsuky APT 악성코드 야라 룰(키로거)	117

(그림 4-14) 아이스포그(IceFog) APT 악성코드 야라 룰(백도어)	118

(그림 4-15) 라이브리(LiveRe) 유포 악성코드 야라 룰(다운로더)	120

(그림 4-16) 미분류 악성코드 야라 룰(게임 계정 탈취)	125

표 목차

[표 3-1] 7.7 디도스 악성코드 C&C 서버 주소	23

[표 3-2] 7.7 디도스 공격 대상 사이트	23

[표 3-3] 호스트 파일 변조 URL	27

[표 3-4] 검색하는 확장자명	32

[표 3-5] 3.4 디도스 악성코드 C&C 서버 주소	34

[표 3-6] 3.4 디도스 악성코드 공격 대상 사이트	35

[표 3-7] 3.20 사이버테러 악성코드 C&C 서버 주소	43

[표 3-8] 6.25 사이버테러 악성코드 C&C 서버 주소	51

[표 3-9] 6.25 사이버테러 악성코드 토르 주소	52

[표 3-10] 한글 취약점 악성코드 C&C 서버 주소	59

[표 3-11] 한글 취약점 악성코드 이메일 주소	60

[표 3-12] Kimsuky APT 악성코드 이메일 주소	72

[표 3-13] 아이스포그(IceFog) APT 악성코드 C&C 서버 주소	79

[표 3-14] 아이스포그(IceFog) APT 악성코드 이메일 주소	79

[표 3-15] 라이브리(LiveRe) 유포 악성코드 C&C 서버 주소	87

[표 3-16] 라이브리(LiveRe) 유포 추가 다운로드 주소	87

[표 3-17] 특정 백신 프로세스명	92

[표 3-18] 특정 프로세스와 게임명	93

[표 3-19] 미분류 악성코드 C&C 서버 주소	95

[표 4-1] 야라 예약어	98

[표 4-2] condition 규칙	100

[표 4-3] 악성코드 특징점	101

제 1 장 서  론

제 1 절 연구의 목적 및 필요성

최근 컴퓨터와 인터넷의 보급이 크게 확산됨에 따라 인간의 삶을 편하고 윤택하게 만들어 주었으나 이에 따른 부작용 역시 급증하고 있다. 그중 분산서비스(DDoS) 공격, 개인정보 유출, 해킹 등은 대부분 악성코드에 의해 발생하며, 사용자의 피해가 지속해서 증가하고 있다. 한국인터넷진흥원 인터넷침해사고대응센터의 “14년 인터넷 침해사고 대응계획” 보고서에 따르면, 하루 평균 악성코드 출현량이 2013년에 1,435종에서 2014년에 8,847종으로 한해 사이에 약 6배가 증가했다.[1] 이처럼 악성코드가 급격히 증가한 이유는 악성코드 제작자들이 자동화 도구로 유사·변종 악성코드를 빠르게 제작하기 때문이다. 자동화 도구로 제작된 악성코드는 EPO(Entry Point Obscuring)나 암호화 코드 부분만 변경하여 악성 행위는 같으나 겉모습만 바꾸어 백신의 탐지를 피하고 있다. 이러한 다형성 기법의 보편화로 인하여 유사·변종 악성코드가 급증하고 있으며 분석 방해 기법도 진화하는 추세이다.

본 연구 과제에서는 500여 종의 악성코드를 상세 분석하여 유사·변종 악성코드를 효과적으로 구분할 수 있는 연관성 분석의 기반이 되는 악성코드 특징점 추출을 연구 목표로 한다.

제 2 장 악성코드

제 1 절 악성코드 개요

1. 악성코드 정의

악성코드(Malware)란 사용자 컴퓨터에 악의적인 영향을 끼칠 수 있는 모든 소프트웨어의 총칭으로, 1985년 BBS(Bulletin Board System)을 통해 정상적인 공개 소프트웨어로 가장하여 일반 사용자들을 감염시킨 것이 최초의 악성코드라 알려져 있다.[2]

1990년대 말부터 악성코드의 감염 방법과 증상들이 다양화 되었다. 개인용 컴퓨터의 사용이 증가하면서 악성코드도 빠르게 증가하였다. 컴퓨터의 발전과 악성코드의 진화는 매우 밀접하게 연관되어 있는데, 불법 복제가 많던 시절에는 디스크 복제 등의 저장매체를 통한 전파에 적합한 악성코드가 유행하였고, 초고속 인터넷이 등장하고 사용자가 늘어나면서 이메일이나 웹으로 전파되는 악성코드가 급격히 증가 하였다.

최근 사이버공격, 사이버테러, 사이버전에 사용되는 새로운 악성코드도 등장하고 있으며, 빠른 속도로 변화하고 지능화되고 있다.

2. 악성코드 유형

악성코드는 감염 방법, 목적, 행위에 따라 컴퓨터 바이러스, 웜, 트로이 목마 등으로 분류된다. 실질적 악성코드는 아래의 기능들이 합쳐져 만들어지는 복합적인 형태이지만 아래에서는 각각의 단일 고유 기능으로 분류하였다.

가. 컴퓨터 바이러스 (Computer virus)

정상적인 파일이나 시스템 영역에 침입하여 그곳에 자신의 코드를 삽입하거나 설치하는 프로그램을 칭하는 이름으로 감염 방법이나 동작 원리에 따라 메모리 상주형 바이러스, 파일 바이러스, 덮어쓰기, 은폐형 등 여러 가지로 세분화하여 나뉜다.[3]

나. 웜 (Worm)

컴퓨터 바이러스처럼 다른 파일을 감염시키는 것이 아닌 자기 자신을 레지스트리에 등록하거나 복사본을 생성하여 전파하는 등의 독자적으로 실행되는 악성코드를 말한다. 웜은 이메일에 첨부되어 확산되거나, P2P 파일 공유, 프로그램 보안 취약점, 네트워크 공유 기능 등을 이용하여 스스로 증식하여 빠르게 확산한다는 특징을 가지고 있다.[3]

다. 트로이 목마 (Trojan horse)

정상적인 소프트웨어의 형태를 띠지만 악의적인 행위를 포함하고 있는 악성코드를 말한다. 다른 파일을 감염하는 형태가 아닌 스스로 피해를 유발하는 악성코드를 말한다. 주로 웹페이지, 이메일, 파일 공유 사이트 등을 통해서 일반 프로그램으로 가장하여 사용자가 클릭하기를 기다리는 형태의 전파 방법을 사용한다.[3]

라. 스파이웨어 (Spyware)

사용자의 PC에서 사전 동의 없이 설치되어 컴퓨터의 정보와 개인 정보를 수집하는 악성코드를 말한다. 신용카드와 같은 금융정보 및 주민등록번호와 같은 신상정보, 사이트 아이디나 비밀번호 등의 각종 정보를 수집하여 원격지의 특정 서버에 주기적으로 보내는 형태를 말한다.[3]

마. 백도어 (Backdoor)

감염된 사용자 PC에 특정 포트를 열어두어 정상적인 인증 과정 없이 원격 접속을 통해 직접 조작하는 형태로, 사용자 몰래 특정 파일을 삭제하거나 파일이나 정보를 빼가는 등의 행위를 한다. 백도어의 종류에는 여러 가지가 있는데, 로컬 백도어의 경우 기존의 일반 계정의 비밀번호를 알아낸 후 새로운 계정을 만들어 사용하는 것을 말한다. 원격 백도어의 경우에는 따로 시스템 계정이 필요하지 않으며, 원격에서 공격자가 지정한 포트를 통해 접속하여 사용한다. 원격 GUI 백도어의 경우 원격관리 툴과 같은 형태로 직접 마우스를 제어하며 조작하는 형태로 실질적으로는 그리 많지 않다.[3]

바. 키로거 (Keylogger)

컴퓨터가 입력받는 정보를 기록하는 것으로 그 중에서도 주로 키보드를 통한 메시지를 중간에 가로채서 기록하는 형태를 말한다. 키로거 탐지를 위한 다양한 키보드 보안 솔루션이 나왔지만 이에 대응하는 새로운 방식의 키로거가 계속해서 나오고 있다. 초기 키로거가 단순히 윈도우 메시지를 후킹하는 형태였지만, 루트킷을 이용하여 점차 고도화 된 기술의 키로거로 변화하고 있다.[3]

사. 드롭퍼 (Dropper)

일종의 악성 프로그램의 설치 프로그램의 형태로, 실행 시 내부에 포함되어 있던 바이러스나 웜, 또는 트로이 목마 등의 악의적인 프로그램이 설치되는 형태의 악성코드를 말한다. 백신 프로그램에서 악성코드가 실행된 후 의심스러운 행위를 탐지하여 차단하는 방법 등 대응 방법을 우회하기 위해 프로그램 실행 자체에서는 파일 설치 이외의 아무 행위를 하지 않고, 일정 시간이 지난 후 악성코드를 실행하는 등의 시간차를 이용한다.[3]

아. 다운로더 (Downloader)

프로그램에서 지정한 웹 사이트에 접속하여 추가 악성코드를 다운로드하여 실행시키는 악성코드이다. 다운로더는 드롭퍼와 같이 백신 프로그램을 우회하는 목적으로 사용한다.[3]

자. 다형성 바이러스 (Polymorphic virus)

다형성 바이러스의 경우, 원본 바이너리에서 같은 기능을 수행하지만 형태는 달라지는 악성코드로, 바이너리 고유 패턴을 변경시켜 휴리스틱 기반의 백신 업체들의 감염여부를 파악하기 어렵게 하여 추적을 피하려는 목적의 악성코드이다.[3]

차. 애드웨어 (Adware)

상업용 광고 목적으로 만들어진 악성코드로, 웹 브라우저 시작페이지 변경, BHO(Browser Helper Object) 객체를 이용하여 팝업 윈도우 생성 등의 동작을 한다. 애드웨어와 비슷한 형태로는 하이재커(Hijacker)라는 툴바 설치 등의 브라우저 형태 자체를 변경시키는 악성코드가 있다.[3]

타. 랜섬웨어 (Ransomware)

랜섬웨어란 사용자의 문서와 사진 등을 암호화 시켜 일정 시간 안에 일정 금액을 지불하면 암호를 풀어주는 방식으로 사용자에게 금전적인 요구를 하는 악성코드를 말한다.[3]

카. 루트킷 (Rootkit)

악의적인 행동을 하는 프로그램을 숨기기 위한 목적으로 시작된 악성코드로, 현재는 프로세스나 파일 등의 흔적을 사용자가 볼 수 없도록 하는 프로그램에 대한 이름으로 사용된다. 루트킷의 설치 위치는 커널, 가상화 계층, 부트로더, 펌웨어, 라이브러리 등 다양한 위치에서 작동될 수 있다.[3]

파. 부트킷 (Bootkit)

PC의 부팅영역인 MBR(Master Boot Record)를 조작하는 프로그램을 칭하는 이름으로, 크게 파괴형 부트킷과 은신형 부트킷으로 나뉜다. 파괴형 부트킷이란 MBR(Master Boot Record)과 VBR(Volume Boot Record)를 의미 없는 문자열 등으로 덮어씌워 부팅 시 시스템 정보를 읽어오지 못하게 만드는 형태이고, 은신형의 경우 부트섹터의 빈 영역에 악성코드를 설치하여 백신이 탐지하지 않게 만드는 형태를 말한다.[3]

제 2 절 악성코드 분석 방법

1. 정적 분석

정적 분석이란 악성코드를 실행하지 않고 디스어셈블러를 이용하여 내부 코드와 구조를 확인하거나 헤더 정보와 내부 문자열, 실행 압축 여부, 등록 정보 등을 통하여 동작을 파악하는 것을 말한다. 동적 분석을 하기 전, 정적 분석을 통하여 악성코드의 정보들을 먼저 수집함으로써 동적 분석에서 필요한 분석 기술을 파악한다.[4]

가. PE 구조 분석 도구

PE 구조 분석 도구는 PE의 헤더나 섹션별 정보를 이용하여 파일의 패킹 여부, 컴파일 정보, 오프셋, 엔트리 포인트 등의 정보를 알려주는 형태의 도구를 말하는 것으로 분석할 때 기본적인 정보를 파악하는 데 사용한다. PEiD, Exeinfo PE와 같은 종류의 프로그램들이 있으며 좀 더 추가적인 PE 구조를 볼 때는 PEview와 같이 PE 전체의 구조를 보여주는 프로그램을 통해 프로그램 컴파일 날짜, 추가된 섹션 영역 등을 파악할 수 있다.

(그림 2-1) PE 구조 분석 도구(PEiD)

(그림 2-2) PE 분석 도구(PEview)

나. 리소스 분석 도구

악성코드 중 리소스 영역에 저장된 파일을 감염된 사용자 PC에 저장하는 형태를 분석할 때에 리소스 파일 탐색 도구로써 사용된다. Resource Hacker, eXeScope 등이 있다.

(그림 2-3) 리소스 분석도구(Resource Hacker)

다. Hex 코드 분석 도구

프로그램의 Hex 값을 확인할 때 이용하는 도구로 악성코드 분석에 있어 사용된 문자열에 대한 확인이나 암호화의 유무 등을 확인할 때에 사용된다. HxD, WinHex 등이 있고, 다형성 바이러스와 같이 변형 악성코드에 대한 분석 시 Hex 코드 분석 도구들을 이용하여 바이너리 비교를 진행하여 달라진 부분을 파악한다.

(그림 2-4) Hex 코드 분석 도구(HxD)

라. 문자열 추출 도구

바이너리 파일의 문자열을 추출하여 보여주는 도구이다. 바이너리 파일안의 모든 문자열을 추출하여주는 도구로 C&C서버 주소, E-Mail주소 등을 빠르게 찾을 수 있으며 분석과 룰 작성 시 유용하게 사용된다.

(그림 2-5) 문자열 추출도구(BinText)

마. 디스어셈블러 (IDA Pro)

IDA Pro는 Hex-Rays사의 유료 디스어셈블러 툴로, Windows, Linux, Mac OS X 등 다양한 버전으로 지원되는 프로그램이다. 프로그램의 구조적 흐름을 그래프로 나타내어 각 함수의 관계나 분기점들을 보여주고, Hex-Ray라는 기능을 이용해 Psuedo 코드로 확인할 수 있기 때문에 분석을 쉽게 할 수 있는 특징이 있다.[8] 또한 다양한 플러그인이 지원되고 난독화 된 코드도 해석이 잘되기 때문에 정적 분석 도구로 유용하게 사용된다. 동적 분석 또한 가능하나 주로 정적 분석 도구로 사용된다.

(그림 2-6) 디스어셈블러(IDA Pro)

2. 동적 분석

파일을 직접 실행시켜 그 행위를 분석하고 디버깅을 통해 코드 흐름과 메모리 상태를 직접 확인하는 것을 말한다. 파일, 레지스트리, 네트워크 등을 확인하며 동작 행위를 분석한다.[5]

가. 프로세스 분석 도구

프로세스의 변화를 분석하기 위한 도구로써 시스템에서 발생하는 변화를 살펴보기 위해 유저 모드와 커널 모드에서의 API를 가로채 보여주거나 디렉터리 생성, 파일 삭제와 같은 특정 이벤트가 발생한 것을 보여준다. Process Explorer, Process Hacker, Process Viewer 등이 있으며 프로세스의 실시간 감시 및 메모리 덤프 등의 기능과 부팅 시간 동안에 악성 행위를 캡처할 수 있다.[6]

(그림 2-7) 프로세스 분석 도구(Process Explorer)

나. 레지스트리 분석 도구

파일 시스템과 레지스트리에서 악성코드 감염의 전과 후의 차이점을 기반으로 변화를 탐지해내는 도구를 말한다. Regshot, Winalysis, InCtrl5 등이 있으며 대표적으로 오픈 소스인 Regshot이 많이 쓰인다.[11]

(그림 2-8) Regshot

다. 네트워크 분석 도구

백도어, 키로거, 스파이웨어와 같이 공격자에게 수집한 로그를 전송하는 경우 그 흔적을 찾아내기 위해 네트워크의 변화를 분석한다. 이것을 위해 WireShark, Tcpview 등을 통하여 공격에 사용된 포트나 통신 흔적을 찾는다.

(그림 2-9) 네트워크 분석 도구(WireShark)

라. 파일 시스템 분석 도구

악성코드가 실행된 후에 파일 시스템에 일어나는 파일의 생성 및 삭제, 레지스트리 등록 및 변경 등과 같은 모든 변화를 분석하는 도구를 말한다. 대표적으로 CaptureBAT이 있다.

(그림 2-10) 파일 시스템 분석 도구(CaptureBAT)

마. 디스어셈블러 (OllyDbg)

OllyDbg는 동적 분석과 정적 분석 모두에서 다양하게 쓰이는 디스어셈블러로, 레지스터, 스택, API 호출, 스위치, 상수, 문자열 등을 동적 분석을 통해 모두 얻을 수 있다. 악성코드의 주요 핵심 부분의 동작에 대해 세세한 파악이 필요할 때에나 악성코드 내에 사용된 함수를 분석하는 데 주로 사용되며, 확장성이 높아서 다양한 플러그인을 이용하여 안티 디버깅, 패킹 등의 기술들을 간단하게 우회하여 분석할 수 있다. 실행 파일 내부 문자열이 암호화된 경우 OllyDbg를 통한 동적 분석을 통해 복호화된 문자열을 확인할 수가 있다.

(그림 2-11) 디스어셈블러(OllyDbg)

바. API 호출관계 분석 도구

프로그램이 실행되면서 윈도우에서 일어나는 API의 호출 및 인자 값들을 나타내는 주는 동적 분석 도구이다. 대표적으로 API Monitor가 있다. 악성코드가 실행되면서 사용하는 API들과 인자 값들을 통해 악성행위를 추적할 수 있다. 알려지지 않거나 풀지 못하는 패킹되어있는 프로그램을 실행 시 API 호출관계 분석을 통해 행위를 추적할 수 있다.

(그림 2-12) API 호출관계 분석 도구 (API Monitor)

제 3 장 악성코드 상세 분석

제 1 절 7.7 디도스 악성코드

1. 분석 내용

7.7 디도스 악성코드는 2009년 7월 7일 정부기관 및 주요 포털사이트, 은행사이트 등을 디도스 공격(Distributed Denial of Service), 스팸 메일 전송, 감염 PC 디스크 파괴를 수행한 악성코드를 말한다.

가. 디도스 공격

디도스 공격 악성코드는 메인 드롭퍼에서 디도스 공격을 수행하는 악성코드와 공격 시간과 공격 대상이 저장된 데이터 파일을 생성한다. 이 파일을 악성코드가 생성된 데이터 파일에 공격 대상과 시간을 확인하여 디도스 공격을 수행한다.

(그림 3-1) 은 감염 PC에 디도스 악성코드를 서비스에 등록하기 위한 루틴이다. “WmiConfig”, “WMI Performance Configuration”는 서비스명과 서비스 설명으로 악성코드가 등록한 서비스가 정상 서비스로 위장하기 위해 사용한다.

(그림 3-1) 디도스 악성코드 서비스 등록

(그림 3-2)는 현재 동작하고 있는 Windows 방화벽을 해제하기 위한 루틴으로 방화벽 관련 레지스트리 위치에 있는“EnableFirewall”레지스트리 값을 “0”으로 변경한다.

(그림 3-2) Windows 방화벽 비활성화

(그림 3-3)은 디도스 공격시간과 공격대상은 “uregvs.nls” 데이터 파일에 저장되어 있으며, 해당 파일을 참조해 디도스 공격 시간과 공격 대상 정보를 가져온다.

(그림 3-3) 공격 대상과 공격 시간 추출

(그림 3-4)은 공격 대상 사이트에 디도스 공격을 위해 “GET”방식과 “POST”방식으로 페이로드를 설정하며, (그림 3-5)와 같이 공격 대상 사이트로 반복적으로 패킷을 보내며 디도스를 발생시킨다.

(그림 3-4) 디도스 페이로드 설정

(그림 3-5) 디도스 페이로드 전송

나. 스팸 메일 전송

스팸 메일 전송 악성코드는 특정 파일의 내용을 복호화하고, 복호화된 특정 주소에 접속해 추가적인 악성코드를 다운로드하며, 하드 디스크 내에 존재하는 특정 문자, 확장자를 가진 파일에서 이메일 정보를 수집 후 스팸 메일을 전송하는 행위를 한다.

(그림 3-6)은 악성코드 내에 암호화된 문자열을 복호화할 때 사용되는 루틴이며, (그림 3-7)은 복호화에 이용되는 테이블이다.

(그림 3-6) 악성코드 내 문자열 복호화 루틴

(그림 3-7) 문자열 복호화 테이블

평문	a	b	c	d	e	f	g	h	i	j	k	l	m	n	o	p	q	r	s	t	u	v	w	x	y	z
암호	n	o	p	q	r	s	t	u	v	w	x	y	z	a	b	c	d	e	f	g	h	i	j	k	l	m

추가 악성코드를 다운받기 위하여 (그림 3-8)의 복호화 루틴을 통해 URL 정보를 얻고, URLDownloadToFile() 함수 사용해 (그림 3-9)와 같이 특정 URL에 접속하여 “flash.gif”파일을 다운로드한다.

(그림 3-8) 악성코드 다운로드 URL 복호화

(그림 3-9) 추가 악성코드 다운로드

(그림 3-10)은 감염 PC에 존재하는 파일 중 “txt”, “htm”,“sht”, “jsp”, “cgi”, “xml”, “php”, “asp”, “dbx”, “tbb”, “adb”, “pl”, “web”확장자를 가진 파일을 검색하고, 파일 내용에 “@(0x40)”과 “.(0x2e)”가 붙은 이메일 문자열 수집 후 스팸 메일을 전송한다.

(그림 3-10) 하드디스크 내 확장자 검사

(그림 3-11) 스팸메일 전송

2. 분석 결과

가. C&C 서버

7.7 디도스 악성코드에서 사용하는 C&C 서버 주소는 아래 표와 같다.

[표 3-1] 7.7 디도스 악성코드 C&C 서버 주소

C&C 서버
2*1.1*6.*8.*31	2*2.*4.7*.1*6
1*3.1*.2*9.*2	9*.*3.2.*18
2*0.6.21*.*94	1*2.*55.5.1*6
5.1*1.*2.*82	n*wr*zf*.co*

나. 공격 대상 사이트

7.7 디도스 악성코드에서 공격 대상이 되는 사이트 주소는 아래 표와 같다. 공격자는 국내뿐 아니라 해외 주요 사이트까지 디도스 공격을 수행한다.

[표 3-2] 7.7 디도스 공격 대상 사이트

디도스 공격 사이트
http://b*n****.n***h**p.com	http://w*w.**d.g*.kr
http://b***.n***r.com	http://w*w.m****.g*.kr
http://e***k.***.c*.kr	http://w*w.m**e****to*y.*ov
http://e**a**.s**n*a*.com	http://w*w.n***a*.com
http://f****c*.y***o.com	http://w*w.n**.g*v
http://m**l.**v**.com	http://w*w.n**e.c*m
http://t**v*l.**at*.*ov	http://w*w.p****d**t.*o.kr
http://w*w.a**z**.com	http://w*w.s***-b****t*.com
http://w*w.a**e***y.*o.kr	http://w*w.*t**e.*o*
http://w*w.a***i*n.co.kr	http://w*w.***u*t**n**i*e.com
http://w*w.c**s**.com	http://w*w.**b***.com
http://w*w.d***n*****k.**l	http://w*w.u**k.**l
http://w*w.d**.*o*	http://w*w.u***.g**
http://w*w.d**.**v	http://w*w.**t***s.**v
http://w*w.f*a.***	http://w*w.v**n***.com
http://w*w.f**.**v	http://w*w.**s**n***n*o**.com
http://w*w.h***a**.*r.kr	http://w*w.**i*e****e.**v
http://w*w.**r***w***h.com	http://w*w.***o*.com

다. 악성코드 통계

7.7 디도스 악성코드 15개 중 8개의 샘플이 드롭퍼(53%), 3개의 샘플이 디도스(20%), 1개의 샘플이 백도어(7%)와 디스크 파괴(7%), 다운로더(7%), 파일/서비스 삭제(6%)이며, 전체 악성코드 유형 통계는 (그림 3-12)이다.

(그림 3-12) 7.7 디도스 악성코드 유형 통계

제 2 절 3.4 디도스 악성코드

1. 분석 내용

3.4 디도스 악성코드는 2011년 3월 4일 국내 정부부처, 공공기관, 금융기관, 포탈, 쇼핑몰 웹 사이트를 대상으로 디도스 공격(Distributed Denial of Service), 감염 PC의 디스크 파괴 등을 수행한 악성코드를 말한다.

3.4 디도스에 사용된 최초 파일의 실행 과정은 (그림 3-13)과 같으며,  호스트 파일 변조 및 7개의 파일을 드롭하며 각각 C&C 서버와 송수신, 디도스 공격, 디스크 파괴, 로그 기록, 디도스 공격 시간, 디도스 공격 대상, 감염 시간을 기록한다.

(그림 3-13) 3.4 디도스 악성코드 실행과정

(그림 3-14) 드롭된 파일

가. 호스트 파일 변조

호스트 파일 변조 악성코드는 특정 백신 제품의 업데이트를 방해하기 위해 호스트 파일을 찾고, 특정 URL에 접속할 경우 “127.0.0.1”로 연결되도록 내용을 변조한다.

(그림 3-15) 호스트 파일 변조 루틴

(그림 3-16) 변조된 호스트 파일

[표 3-3] 호스트 파일 변조 URL

변조된 URL 목록
**p*i**tu*da*e.*l**c.co.kr	**.**nl**.com
*m*.*h**a*.com	*u*.*h*l*b.com
*o-k*.*l*n.**t*o*s.com	*p*a*e.*h**a*.com
*o-**.**u**a*e*ly*c.a*to*l*.com	*h*la*.*e*fi*ie*t.co.kr

나. 백도어

백도어 악성코드는 드롭된 *a*l*r*p.dat 파일을 참조하여 시스템 시간을 30분 간격으로 비교하고, 조건이 성립되면 C&C서버와 소켓통신을 한다.

(그림 3-17) 시간 비교 후 소켓 통신

C&C 서버에 연결되면 성공할 경우 C&C서버에 *a*l*r*p.dat에 수집된 정보를 전송하며, 암호화된 파일을 수신 후 저장한다.

(그림 3-18) 수집 정보 전송

(그림 3-19) 파일 수신 루틴

C&C 서버에서 암호화된 파일을 복호화 루틴을 통해 실행파일로 변경하고 실행한다.

(그림 3-20) 복호화 루틴

다. 디도스

디도스 악성코드는 드롭된 특정 파일에 저장된 공격 시간을 참조하여 현재 시스템 시간과 비교하며, 다른 파일에 저장된 데이터를 참조해 공격 사이트를 복호화하고 디도스 공격을 수행한다.

(그림 3-21) 시스템 시간 비교

(그림 3-22) 공격 시간이 저장된 파일

*lj*q**.dat 파일에서 암호화된 정보를 가져와 (그림 3-23)의 루틴 통해 디도스 공격 주소를 복호화한다.

(그림 3-23) 복호화 루틴 일부

특정 주소에 DNS 쿼리를 요청하고, 공격 패킷을 생성해 복호화한 URL에 디도스 공격을 수행한다.

(그림 3-24) DNS 쿼리 요청 루틴

(그림 3-25) 디도스 공격 루틴

라. 디스크 파괴

디스크 파괴 악성코드는 특정 확장자를 검색하여 파일의 내용을 Null로 채운 후 임의의 암호가 걸린 CAB 파일로 확장자를 교체하며, 감염 PC의 디스크의 MBR 영역을 파괴한다.

[표 3-4] 검색하는 확장자명

확장자명
.doc	.pdf	.php
.docx	.hwp	.asp
.docm	.hna	.aspx
.wpd	.gul	.jsp
.wpx	.kwp	.java
.wri	.eml	.cpp
.xls	.pst	.h
.xlsx	.alz	.c
.mdb	.gho	.zip
.ppt	.rar

(그림 3-26)은 파일의 내용을 Null 변경하고 CAB 파일로 확장자를 변경하는 루틴이다.

(그림 3-26) 특정 파일의 내용 변조

(그림 3-26)은 감염 PC의 디스크 영역에 접근하여 내용을 변조하는 루틴이다.

(그림 3-27) 디스크 파괴 루틴

2. 분석 결과

가. C&C 서버

[표 3-5] 3.4 디도스 악성코드 C&C 서버 주소

C&C 서버
9*.2*.2*3.11*	2*9.*5.*23.2*
8*.1*3.*2.10*	2**.8*.*10.2*
8*.1**.*0.10*	2**.8*.1*3.11*
8*.15*.*48.13*	**9.1*7.*4*.24*
7*.*0.*2.4*	**7.1*1.**1.17*
7*.3*.*2*.9*	**7.1*4.**.23*
7*.9*.*4.17*	2*4.1*.*7.13*
7*.4*.*53.16*	2*2.1*0.*02.16*
7*.8*.*5.7*	2*0.1*2.*9.12*
6*.6*.*7.1*	1*9.3*.*9.4*
6*.1*5.*5.1*	1*5.1*0.*3.25*
6*.9*.*26.16*	1*0.2*2.*7.4*
6*.6*.*40.8*	1*4.3*.*25.5*
6*.1*1.*25.10*	1*3.1*.*7.15*
6*.1*7.*2.22*	1*1.9*.*43.5*
5*.1*6.*14.19*	1*1.2*4.*1.3*
2*0.1*8.*18.3*	1*8.2*3.*70.19*
2*6.1*6.*5.23*	1*4.2*7.*54.20*
2*2.2*0.*1.8*	1*2.1*2.*02.3*
2*1.7*.*64.9*	1*5.3*.*43.1*
2*9.8*.*23.3*	1*4.6*.*37.*

3.4 디도스 악성코드에서 사용되는 C&C 서버의 주소는 아래 표와 같다. 악성코드에 감염된 PC는 해당 C&C 서버에 수집된 정보 전송하거나 추가 명령어를 수신하며, 추가 악성코드를 다운로드 한다.

나. 디도스 공격 주소

3.4 디도스 악성코드에서 사용되는 공격대상 URL 주소는 아래 표와 같다. 악성코드에 감염된 PC는 해당 주소에 디도스 공격을 수행한다.

[표 3-6] 3.4 디도스 악성코드 공격 대상 사이트

디도스 공격 주소
http://a***o*ce.m**.kr	http://k**a.o*.kr
http://***a*.com	http://k**o*m.com
http://****.*il.kr	http://**rai*.com
http://a**e*b*y.go.kr	http://**r*a*.*o.kr
http://***t*m*.go.kr	http://***a*.a*.mil
http://c**.*o.kr	http://m**.m**.kr
http://**i**i*.co.kr	http://m**a*.*o.kr
http://d***.g*.kr	http://**pa*.*o.kr
http://**u*.net	http://***e*.com
http://d*ins*de.com	http://n*v*.m*l.kr
http://d*ma.*il.kr	http://n*n*h**p.com
http://f*c.g*.kr	http://**s.*o.kr
http://**n**an*.com	http://**s.*o.kr
http://h*ng*m*.com	http://p***c*.*o.kr
http://**s.mi*.kr	http://s*i*h*n.com
http://j*i**a*k.*o.kr	http://u*i***e*d.go.kr
http://k*s**r.c*m	http://u*f*.m**
http://k*c.g*.kr	http://***r****k.com
http://k*b.c*.kr	http://w*w.**a**e*.com
http://k*n*.c*.kr

다. 악성코드 통계

3.4 디도스 악성코드 61개 중 20개의 샘플이 백도어(33%), 19개의 샘플이 드롭퍼(19%), 8개의 샘플이 다운로더(13%), 4개의 샘플이 디스크 파괴(6%), 디도스, 호스트 변조, 기타(키로거/원격제어/인젝터)가 5%로 3개, 실행되지 않는 악성코드가 1개이며, 전체 악성코드 유형 통계는 (그림 3-28)이다.

(그림 3-28) 3.4 디도스 악성코드 유형 통계

제 3 절 3.20 사이버테러 악성코드

1. 분석 내용

3.20 사이버테러 악성코드는 2013년 3월 20일 국내 금융권 및 방송사를 대상으로 전산 장애를 발생시켰으며, 감염 PC의 마스터 부트 레코드(MBR) 영역과 볼륨 부트 레코드(VBR)을 손상하는 등 디스크 파괴 행위를 수행한 악성코드를 말한다.

가. 백도어

백도어 악성코드는 감염 PC의 정보를 수집하고, 공격자가 원하는 명령을 수행, 추가 악성코드를 다운로드하는 행위를 한다.

(그림 3-29)는 공격자의 명령에 따라 추가 악성코드를 다운로드, 소켓 연결, 감염 PC 정보 수집, 파일 검색, 컴퓨터 재시작 등을 수행한다.

(그림 3-29) 수집된 정보 전송

(그림 3-30) 레지스트리 정보 수집

(그림 3-31) 운영체제 정보 수집

(그림 3-32)는 감염 PC에서 수집한 정보를 특정 URL에 전송하는 루틴이다.

(그림 3-32) 수집된 정보 전송

나. 디스크 파괴

디스크 파괴 악성코드는 (그림 3-33)을 통해 현재 시스템 시간을 비교하며, 3월 20일 15시일 경우 MBR 영역에 접근해 특정 문자열로 값을 변경 후 재부팅시켜 감염 PC가 정상적으로 부팅되지 않도록 한다.

(그림 3-33) 시스템 시간 비교

(그림 3-34)은 감염 PC의 MBR 영역에 접근해 특정 문자열 “PRINCPES”, “HASTATI”로 변경하는 루틴이다.

(그림 3-34) MBR 영역 변조

(그림 3-35) MBR 영역 변조 전/후 비교

악성코드 실행 전
악성코드 실행 후

(그림 3-36)은 UNIX 시스템에서 디스크를 파괴하기 위한 스크립트이다.

(그림 3-36) UNIX계열 디스크 파괴 스크립트

2. 분석 결과

가. C&C 서버

3.20 사이버테러 악성코드에서 사용하는 C&C 서버 주소는 아래 표와 같다. 악성코드에 감염된 PC는 해당 C&C 서버에 수집된 정보 전송하거나 추가 명령어를 수신하며, 추가 악성코드를 다운로드한다.

[표 3-7] 3.20 사이버테러 악성코드 C&C 서버 주소

C&C 서버 주소
1*8.*9.*50.1*	http://l**b*****n**r.co.kr
1*2.1**.*2.1*4	http://m*p*.co.kr
1*9.*7.1*6.1*1	http://***1.i*.**n*s.com
2*1.2*.*00.1*3	http://s**p***c***n*de.com
2*3.2*.*1.9*	http://s**i**r.*e.kr
2*5.2*1.*6*.1*4	http://s**g**.org
2*9.1*7.*3*.3	http://w*b**d**no*e.com
2*9.13*.*3*.*	http://w**-***-no*e.com
2*9.9*.*24.8*	http://w****e*.com
2*0.4*.*55.2*3	http://www.a***a*bar.com
2*1.1*0.*6.14*	http://www.a**u*o.co.kr
2*6.5*.*6*.8*	http://www.b*2***a.net
6*.1**.*1.1*	http://www.d***k*.net
9*.2*.*10.3*	http://www.h****ga.com
9*.7*.*8.*	http://www.h****g*.com
http://***u***.**o**er.**i.com	http://www.m*g***i**ou***.co.kr
http://**u**.c**e*1.com	http://www.n*****u*i*.com
http://**c**ng.*e.kr	http://www.*****m.co.kr
http://f*s*a****a.*k**a*hd.net	http://www.**a******d.co.kr
http://***r***a**s*or*.com.au	http://www.y***s*.net
http://l.**m*.com

나. 악성코드 통계

3.20 사이버테러 악성코드 90개 중 33개의 샘플이 드롭퍼(37%), 12개의 샘플이 백도어(13%), 11개의 샘플이 다운로더(12%), 9개의 샘플이 디스크 파괴(10%), 7개의 샘플이 정보탈취(8%), 5개의 샘플이 인젝터(6%), 원격제어(5%), UAC우회(5%), 파일실행(5%) 샘플이 각각 4개, 자동실행 등록(1%) 샘플이 1개이며, 전체 악성코드 유형 통계는 (그림 3-37)이다.

(그림 3-37) 3.4 디도스 악성코드 유형 통계

제 4 절 6.25 사이버테러 악성코드

1. 분석 내용

6.25 사이버테러 악성코드는 2013년 6월 25일 언론사 11곳, 정부기관 및 정당 5곳 등 총 16개 기관이 홈페이지 변조, 디도스 공격(Distributed Denial of Service), 컴퓨터 디스크 파괴 등을 수행한 악성코드를 말한다.

가. 디도스

디도스 악성코드는 메인 드롭퍼에서 감염 PC의 윈도우 운영체제 버전과 환경을 확인하여 각각 다른 악성코드를 생성한다. 두 번째 드롭퍼는 윈도우 서비스에 악성코드를 등록하고, 마지막 드롭퍼를 생성한다. 마지막 드롭퍼에서는 특정 C&C 서버에 접속하여 파일을 다운로드하며, 파일에 저장된 시그니처(*M*W)와 시간을 확인한다. 2013년 6월 25일 오전 10시에 최종 악성코드를 생성해 디도스 공격을 수행한다.

(그림 3-38) 디도스 악성코드 흐름도

(그림 3-39)는 감염 PC내에 있는 서비스 레지스트리 값에 악성코드를 등록하기 위한 루틴이며, rand()함수로 랜덤한 정수형 숫자를 얻고 이를 서비스 레지스트리 검색 시 사용한다.

(그림 3-39) 랜덤한 레지스트리 값 추출을 위한 루틴

(그림 3-40)은 등록된 서비스 레지스트리 중 “ImagePath”와“%SystemRoot%\system32\svchost.,exe –k netsvcs” 문자열이 포함된 키를 찾는다. 랜덤한 정상 서비스 레지스트리를 찾으면 하위 키들을 복사하고, 정상 서비스명 뒤에 “*v*”문자열을 삽입하며, ServiceDLL의 키 값 앞에 “ole”문자열을 넣어 악성코드를 서비스에 등록한다.

(그림 3-40) 서비스 레지스트리의 문자열 검사

(그림 3-41) 서비스 레지스트리 하위키 복사

악성코드는 특정 C&C서버에서 파일을 다운로드하고, 파일 안에 있는 “*M*W”시그니처가 있는지 확인한다. 만약 다운로드한 파일에 시그니처가 있을 경우 뒤에 있는 시간을 가져와 컴퓨터 시간과 비교하며 대기하고, 지정된 시간이 되면 디도스 악성코드를 생성한다.

(그림 3-42) 파일 다운로드 및 시그니처(BM6W) 검사

(그림 3-43) 컴퓨터 시간 검사

하드코딩 된 특정 주소에 디도스 공격을 수행한다.

(그림 3-44) 디도스 공격 패킷

나. 디스크 파괴

디스크 파괴 악성코드는 아래 그림과 같이 MBR 영역에 접근해 해당 값을 수정하여 부팅이 정상적으로 되지 않도록 하고 악성코드에 따라 추가적인 행위를 수행한다.

(그림 3-45) MBR 영역 파괴

(그림 3-46) MBR 영역 변조 전/후 비교

변경 전
변경 후

(그림 3-47)은 감염 PC에 있는 특정 확장자 “.doc .xls .ppt .docx .xlsx .pptx .txt .eml .pst .dbx .onenote .pdf .hwp .jpg .jpeg .png .rar .alz”를 가진 파일을 삭제하거나 변경하고, 사용자의 바탕화면을 임의의 이미지로 변경하는 악성 행위를 수행한다.

(그림 3-47) 파일 삭제 및 변경

(그림 3-48) 변경된 바탕화면 – 1

(그림 3-49) 변경된 바탕화면 – 2

(그림 3-50)는 감염 PC의 사용자 계정의 비밀번호를 변경하는 부분이며, 공격자가 지정한 암호로 변경한다.

(그림 3-50) 사용자 계정 비밀번호 변경

2. 분석 결과

가. C&C 서버

6.25 사이버테러 악성코드에서 사용하는 C&C 서버의 주소는 아래 표와 같다. 악성코드에 감염된 PC는 해당 C&C 서버에 수집된 정보 전송하거나 추가 명령어를 수신하며, 추가 악성코드를 다운로드한다.

[표 3-8] 6.25 사이버테러 악성코드 C&C 서버 주소

C&C 서버
1*2.2*7.*90.2*0	4*.2*7.*2*.1**
1*2.2*7.*90.2*8	http://d*sk.***g**n.com
2*.2*.*.2*	http://e*it.**e**c**.co.kr
2*0.1*7.*9.2*	http://m*.*o***o**.com
2*1.1*6.*80.6*	http://w***a**.***e*y**o*t.com
2*1.2*2.*.5*	http://w*w.*a****t.co.kr
2**.8*.*3.23*	http://w*w.****n*.co.kr
2**.1*6.*80.6*	http://w*w.l**k***u*.ca
2*9.2*5.*5*.2*0

나. 토르 주소

6.25 사이버테러 악성코드에서 사용하는 토르 주소는 아래 표와 같다. 공격자는 네트워크 추적을 피하고자 토르 네트워크를 이용하여 감염 PC와 통신을 한다.

[표 3-9] 6.25 사이버테러 악성코드 토르 주소

토르 주소

http://**c*z*p**d**f*zp.onion/etc/

http://***w*x**j**4**p*.onion/etc/

http://**d***n*u**h*p**.onion/etc/

http://**e****k*4*7*g**.onion/etc/

http://7****d*m****h*ye.onion/etc/

http://v***e*e**g*i**x*.onion/etc/

http://*****5**y**f**c*.onion/etc/

http://***3*5*****u***i.onion/etc/

http://*****n***x****q*.onion/etc/

http://****5**z*****x*2.onion/etc/

다. 악성코드 통계

6.25 사이버테러 악성코드 샘플 108개 중 36개의 샘플이 드롭퍼(34%), 36개의 샘플이 백도어(34%), 11개의 샘플이 다운로더(13%), 9개의 샘플이 디스크 파괴(13%), 디도스(2%), UAC우회(2%), 기타(8%)은 정보탈취, 키로거, 파일실행, DHCP변조, 권한변경, 바탕화면 변조, 토르, 포트확인, 실행불가능한 샘플이 각각 1개씩이며, 전체 악성코드 유형 통계는 (그림 3-51)이다.

(그림 3-51) 6.25 사이버테러 악성코드 유형 통계

제 5 절 한글 문서 취약점 악성코드

1. 분석 내용

한글 문서 취약점 악성코드는 아래 한글(.hwp)의 힙 스프레이 기법으로 쉘 코드를 실행시키는 힙 오버플로우 취약점 등을 통해 유포되고 있는 악성코드이다.

가. 정보 탈취

정보 탈취 악성코드는 특정 Windows API 함수를 사용하여 감염 PC의 시스템 정보를 탈취하고, C&C서버나 이메일 계정으로 정보를 전송하는 행위를 한다.

(그림 3-52)은 GetLogicalDriveStringsA(), GetDriveTypeA() 함수를 이용해 디스크 드라이브 목록, 드라이브 유형 정보를 수집한다.

(그림 3-52) 디스크 드라이브 정보 수집

(그림 3-53)는 GetComputerNameA(), GetUserNameA(), GetLocalTime() 함수를 이용해 컴퓨터 이름, 사용자 이름, 컴퓨터 시간을 수집한다.

(그림 3-53) 컴퓨터 및 사용자 이름, 컴퓨터 시간 수집

(그림 3-54)은 GetVersionExA() 함수를 이용해 시스템 버전을 구하고, VersionInformation 구조체 변수에 저장된 운영체제 플랫폼, 운영체제 주 버전, 운영체제 부 버전 정보와 윈도우 서비스 팩 정보를 수집한다.

(그림 3-54) 운영체제 정보 수집

(그림 3-55)는 환경 변수 “COMSPEC”을 이용해 명령 프롬프트를 실행하고 인자 값으로 “systeminfo”명령어를 실행하여 기본 시스템 구성 정보를 수집한다.

(그림 3-55) 기본 시스템 정보 수집

(그림 3-56) 수집된 시스템 정보

나. 키로거

키로거 악성코드는 특정 Windows API 함수를 사용하여 키보드나 마우스로 입력되는 값을 수집하는 것을 말한다.

(그림 3-57)은 키로그 루틴이며 윈도우 API함수 중 GetKeyState(), GetForegrounWindow(), GetWindowTextA()를 사용하여 입력된 키보드의 가상키 값과 시스템의 최상위 윈도우 프로그램, 제목 표시줄의 문자열을 수집한다.

(그림 3-57) 키보드 입력 정보 수집

(그림 3-58) 키보드 입력 정보 수집

다. 백도어

백도어 유형은 특정 Windows API 함수나 소켓 함수를 사용하여 C&C 서버에 접속하여 추가 명령을 수행한다.

(그림 3-59)과 (그림 3-60)은 소켓 함수를 이용하여 특정 C&C 서버에 접속하여 추가 명령을 수신하고, 이를 “cmd.exe /c”뒤에 인자 값으로 넣어 명령을 수행한다.

(그림 3-59) C&C 서버 접속 설정

(그림 3-60) 데이터 수신 및 명령 실행

라. 다운로더

다운로더 악성코드는 특정 Windows API 함수를 사용해 C&C 서버에 접속하거나 이메일 계정을 통해 추가 악성코드를 다운로드한다.

(그림 3-61)은 InternetConnectA() 함수로 공격자가 지정한 이메일 계정에 연결하고, InternetReadFile()로 추가 악성코드를 다운로드를 수행한다.

(그림 3-61) 이메일 계정에서 파일 다운로드

2. 분석 결과

가. C&C서버

한글 문서 취약점으로 감염되는 악성코드에서 사용하는 C&C 서버의 주소는 아래 표와 같다. 악성코드에 감염된 PC는 해당 C&C 서버에 수집된 정보 전송하거나 추가 명령어를 수신하며, 추가 악성코드를 다운로드한다.

[표 3-10] 한글 취약점 악성코드 C&C 서버 주소

C&C 서버
1*3.*0.*0.19*	http://m*l**c*.s***r*.*e.*p
1*8.1*7.*61.13*	http://m**i*o*s*.*e*s*t*.*i*w*n.com
1*6.9*.*2.24*	http://m*a*t*r.com
2*9.1*4.*27.13*	http://p*c.*o*a*n**a*.com
2*1.1*5.*6.2*	http://r*o*.*i*i*s**o*u*.o*g
5*.18*.*24.4*	http://t*n**i.***.c*
6*.22*.*.5*	http://t**c.*a**r*.n*.jp
6*.16*.*54.2*	http://v*s*.**g.*a*o*.com
http://c***e.******s**r.com	http://w*w.**a**w*.net
http://c*u*.r*n**m.kr	http://w*w.b*d**f*.net
http://c***t.***i*e*a.com	http://w*w.*l**s*l*.co.kr
http://****t*o*p.*.**0*1*.com	http://w*w.d**t*c*.com
http://i*a*e.*o*a*n*t*r.com	http://w*w.k**h*s**t*l.com
http://i***5.*i*e**r*.co.kr	http://w*w.**n*8.com
http://i****.**s*c*r*.co.kr	http://w*w.q***.com

나. 이메일 주소

한글 문서 취약점으로 감염되는 악성코드에서 사용하는 이메일 주소는 아래 표와 같다. 악성코드에 감염된 PC는 해당 이메일 주소를 통해 수집된 정보 전송하거나 추가 악성코드를 다운로드한다.

[표 3-11] 한글 취약점 악성코드 이메일 주소

이메일 주소
a*f*d*6@mail.com	f*f*x*f*@hotmail.com
A*n**ov*1*8*@mail.com	m*s*n*9*8@hotmail.com
G*a*a*0@mail.com	m*s*n*9*8@hotmail.com
J*c*m*n*9*0@mail.com	q*z*1*1*7@hotmail.com
j*l*1*1*2@mail.com	G*o*e*a*l@indiatimes.com
p*d*s*1*@mail.com	j*r*t*0*1@zoho.com
r*a*j*w*s@mail.com	k*s*n*1*0@zoho.com
u*d*v*5@mail.com	q*p*j*e*3*@zoho.com
w*t*d*k*0*3@mail.com	j*k*m*4*8@daum.net
a*f*q@opera.com	j*k*m*4*8@daum.net
e*a*g@myopera.com	k*j*3*@aol.com
d*n*h*n*u@gmail.com	k*a*4*2*1@yahoo.co.kr
k*i*8*5@gmail.com	l*e.*u*8@yahoo.com
o*s*o*1*2*3@gmail.com	v*r*h*p*y@mail.bg

다. 악성코드 통계

한글 문서 취약점으로 생성되는 악성코드 샘플 112개 중 38개의 샘플이 드롭퍼(34%), 19개의 샘플이 정보탈취(17%), 16개의 샘플이 키로거(14%), 13개의 샘플이 인젝터(12%), 11개의 샘플이 백도어(10%)와 다운로더(10%), 기타(3%)이며, 전체 악성코드 유형 통계는 (그림 3-62)이다.

(그림 3-62) 한글 취약점 악성코드 유형 통계

제 6 절 Kimsuky APT 악성코드

1. 분석 내용

Kimsuky APT 악성코드는 2013년 9월경 카스퍼스키랩에서 “The ‘Kimsuky’ Operation: A North Korean APT?”라는 제목으로 처음 소개되었으며, 국내 주요 기관을 대상으로 APT 공격을 수행한다.

가. 정보 탈취

정보 탈취 악성코드는 Windows API 함수를 사용하여  감염 PC의 시스템 정보를 탈취하고, 기존 키로거 악성코드에서 수집한 파일과 로그를 이메일 계정으로 정보를 전송하는 행위를 한다.

(그림 3-63) 정보탈취 악성코드 흐름도

먼저 악성코드는 특정 루틴을 통해 문자열을 복호화하고, 감염 PC에 설치된 특정 백신 프로그램의 레지스트리에 접근해 “RunMode”, “fwmode”를 수정하고, 윈도우 방화벽 레지스트리에 접근해 “EnableFirewall”값을 수정하여 무력화한다.

(그림 3-64) 복호화 루틴

(그림 3-65) 특정 백신 프로그램 무력화

(그림 3-66) 윈도우 방화벽 무력화

Windows API함수 GetComputerNameA()와 GetUserNameA()로 컴퓨터 이름과 사용자 이름을 수집하고, 기존에 설치된 악성코드에서 수집한 정보를 하나의 파일에 저장한다.

(그림 3-67) 감염PC 정보 수집

(그림 3-68) 수집 정보 통합

하나의 파일에 수집된 정보를 저장하고, “Microsoft Enhanced Cryptographic Provider v1.0"를 이용해 암호화한다.

(그림 3-69) 수집 정보 암호화

공격자는 메일서버를 이용해 특정 계정에 로그인하고, 수신자 메일을 지정하여 암호화된 파일을 전송한다.

(그림 3-70) 이메일 전송

나. 키로거

키로거 악성코드는 Windows API 함수를 사용하여 키보드나 마우스로 입력되는 값을 수집하는 행위를 한다.

GetAsyncKeyState(), GetForegroundWindow(), GetWindowTextA() 함수를 사용하여 입력된 키보드의 가상키 값과 시스템의 최상위 윈도우 프로그램, 제목 표시줄의 문자열을 수집한다.

(그림 3-71) 키로그 루틴 - 1

(그림 3-72) 키로그 루틴 - 2

(그림 3-73) 키로그 루틴 - 3

(그림 3-74) 수집된 키로그 파일

다. 원격제어

원격제어 악성코드는 TeamViewer 프로그램을 변조한 것으로 공격자는 감염 PC에 원격제어 행위를 수행한다.

(그림 3-75) TeamViewer 프로그램 문자열

(그림 3-76) TeamViewer 명령어

2. 분석 결과

가. 이메일 주소

Kimsuky APT 악성코드에서 사용하는 이메일 주소는 아래 표와 같다. 악성코드에 감염된 PC는 해당 이메일 주소를 통해 수집된 정보 전송하거나 추가 파일을 다운로드 한다.

[표 3-12] Kimsuky APT 악성코드 이메일 주소

이메일 주소
3*r*s*@myopera.com	m*n*e*m**@mail.bg
b*a***f*@mail.bg	n*t*u*c*@hotmail.com
f*s*o*m*n@mail.bg	o*1*0*1*@hotmail.com
h*p*y*o*e@mail.bg	r*h*2**@hotmail.com
h*p*y**v*@mail.bg	s*o*t*m**@mail.bg
i*p*1**1*@hotmail.com	v*r***p*y@mail.bg
l***s*0**@mail.bg

나. 악성코드 통계

Kimsuky APT 악성코드 샘플 38개 중 14개의 샘플이 정보탈취(37%), 8개의 샘플이 드롭퍼(21%)이며, 각각 4개씩 키로거(10%), 원격제어(11%), 파일실행(11%),  각각 2개의 샘플이 다운로더(5%), 리소스 파일(5%)이며,전체 악성코드 유형의 통계는 (그림 3-77)이다.

(그림 3-77) Kimsuky APT 악성코드 유형 통계

제 7 절 아이스포그(IceFog) APT 악성코드

1. 분석 내용

아이스포그(IceFog) APT 악성코드는 국내와 일본을 대상으로 공격하는 소규모 APT 공격 조직으로 2011년부터 시작되었으며 지난 수년간 규모와 범위가 확대 되었다.

가. 백도어

백도어 악성코드는 기본적으로 시스템 정보를 수집하고, cmd 명령어 수행, 파일 다운로드/업로드 행위, 암/복호화 루틴이 존재하며, 특정 샘플에서는 이메일을 통한 다운로드/업로드 행위를 수행한다.

먼저 호스트 이름, 프록시, 사용자 이름, 시스템 디렉토리 위치, OS 언어, 시스템 버전을 수집하고 저장한다.

(그림 3-78) 정보 수집

특정 C&C서버 주소에 접근하여 명령을 수신하고, 명령에 따라 cmd 명령어를 실행하거나 파일 다운로드/업로드, 코드를 암/복호화하는 행위를 수행한다.

(그림 3-79) C&C 서버 접속

(그림 3-80) cmd 명령어

(그림 3-81) 파일 업로드 명령어 루틴

(그림 3-82)  파일 다운로드 명령어 루틴

(그림 3-83) 코드 명령어 루틴

(그림 3-84) 파일 암/복호화 루틴

(그림 3-85)은 백도어 유형의 아이스포그(IceFog) APT 악성코드 중 특정 샘플에만 존재하며, 이메일 계정을 통해 파일을 업로드하거나 다운로드를 시도한다.

(그림 3-85) 이메일을 통한 업로드/다운로드 루틴

2. 분석 결과

가. C&C 서버

아이스포그(IceFog) APT 악성코드에서 사용하는 C&C 서버의 주소는 아래 표와 같다. 악성코드에 감염된 PC는 해당 C&C 서버에 수집된 정보를 업로드하거나 파일을 다운로드하고, 추가 명령어를 수신해 cmd 명령을 수신한다.

[표 3-13] 아이스포그(IceFog) APT 악성코드 C&C 서버 주소

C&C 서버
http://i*efo*.8.*009*1.com	http://w*w.k*vin*w.net
http://s*ar*ing*.net	http://w*w.m*vi*ta*tar.com
http://w*w.cl*uds*it.com

나. 이메일 주소

IceFog APT 악성코드에서 사용하는 이메일 주소는 아래 표와 같다. 악성코드에 감염된 PC는 해당 이메일 주소를 통해 수집된 정보를 업로드하거나 파일을 다운로드하고 추가 명령을 수신한다.

[표 3-14] 아이스포그(IceFog) APT 악성코드 이메일 주소

이메일 주소
d*f*u***a*l*0*@aol.com	w*s*i*e***0*@aol.com
m*m*l*m*0**@aol.com

다. 악성코드 통계

아이스포그(IceFog) APT 악성코드 샘플 10개 중 6개의 샘플이 백도어(60%), 3개의 샘플이 드롭퍼(30%), 1개의 샘플이 실행 불가능(10%)이며, 전체 악성코드 유형 통계는 (그림 3-86)이다.

(그림 3-86) 아이스포그(IceFog) APT 악성코드 유형 통계

제 8 절 라이브리(LiveRe) 유포 악성코드

1. 분석 내용

라이브리(LiveRe) 유포 악성코드는 소셜 댓글 플러그인 서비스를 제공하는 시스템에서 사용하는 솔루션의 보안 취약점을 악용해 2014년 6월에 처음 유포되었다.

가. 다운로더

다운로드 악성코드는 특정 백신을 제거하고, 여러 웹사이트에 접속해 파일을 다운로드하는 행위를 수행한다.

아래 그림은 악성코드의 중복 실행을 막기 위해 공격자가 정한 “RK********” 문자열을 뮤텍스로 등록하며, BITS 서비스의 상태를 확인한다.

(그림 3-87) 뮤텍스 생성 및 BITS 서비스 확인

레지스트리에 등록된 백신 V3Lite, V3 365 Clinic, AlYac, NaverVaccine, AMSP, ESET 백신의 설치 경로를 가져온다.

(그림 3-88) 특정 백신의 경로 수집

악성코드는 특정 백신의 경로에서 설치 제거 프로그램을 실행시키며, FindWindowA() 함수를 이용해 자동으로 백신이 제거될 수 있도록 한다.

(그림 3-89) 백신 제거 프로그램 실행

(그림 3-90) 백신 제거 진행

감염 PC의 MAC 주소와 운영체제 정보, 인터넷 익스플로러의 정보를 수집하여 특정 C&C서버에 수집한 정보를 전송한다.

(그림 3-91) 정보탈취

암호화된 특정 문자열을 루틴을 통해 복호화한다.

(그림 3-92) 암호화된 URL

(그림 3-93) 복호화 루틴

(그림 3-94) 복호화된 URL

복호화된 URL에 접속하여 파일을 다운로드하여, “MZ”시그니처를 삽입하고 실행한다.

(그림 3-96) “MZ”시그니처 삽입 및 실행

(그림 3-95) 특정 URL 접속 및 파일 다운로드

2. 분석 결과

가. C&C 서버

라이브리(LiveRe) 유포 악성코드에서 사용되는 C&C 서버의 주소는 아래 표와 같다. 악성코드에 감염된 PC는 해당 C&C 서버에 수집된 정보를 전송하고, 무작위로 특정 URL에 접속해서 악성코드를 다운로드한다.

[표 3-15] 라이브리(LiveRe) 유포 악성코드 C&C 서버 주소

C&C 서버
http://u*avi*at*.com/	http://w*w.k*pl*yer.com
http://g*me*oc*s.co.kr/	http://w*w.g*an*jv.com

[표 3-16] 라이브리(LiveRe) 유포 추가 다운로드 주소

악성코드 다운로드 주소

http://*etma*b*e.net/ja525.jpg

http://*nsda*e.g*dot.com/button.jpg

http://*nsda*e.g*dot.com/button01.jpg

http://*nsda*e.g*dot.com/ja525.jpg

http://*pdat*.nc*ok.net/ja510.jpg

http://*pdat*.nc*ok.net/ja525.jpg

http://*pdat*.nc*ok.net/ja525.jpg

http://*pdat*.nc*ok.net/ja527.jpg

http://*ravi*at*.com/images/ja525.jpg

http://*ravi*at*.com/images/ja525.jpg

http://*ww.d*mp*ge.co.kr/board/data/button.jpg

http://*ww.d*mp*ge.co.kr/board/data/button01.jpg

http://*ww.g*zm*do.jp/button.jpg

http://*ww.g*zm*do.jp/button01.jpg

http://*ww.g*zm*do.jp/ja525.jpg

http://*ww.g*zm*do.jp/ja525.jpg

http://*ww.g*zm*do.jp/ja527.jpg

http://*ww.h*ng*me.com/button.jpg

http://*ww.h*ng*me.com/button01.jpg

http://*ww.h*ng*me.com/ja525.jpg

http://*ww.h*ng*me.com/ja525.jpg

http://*ww.j*in*msn.com/button.jpg

http://*ww.j*in*msn.com/button01.jpg

http://*ww.j*in*msn.com/ja525.jpg

http://*ww.m*m.*om/button.jpg

http://*ww.m*m.*om/button01.jpg

http://*ww.m*n.*om/ja525.jpg

http://*ww.m*je*e.net/button.jpg

http://*ww.m*je*e.net/button01.jpg

http://*ww.m*je*e.net/ja424.jpg

http://*ww.m*je*e.net/ja525.jpg

http://*ww.n*nk*-pg.co.jp/bbs/data/update/ja510.jpg

http://*ww.n*nk*-pg.co.jp/bbs/data/update/ja525.jpg

http://*ww.n*nk*-pg.co.jp/bbs/data/update/ja527.jpg

http://*ww.n*t*.com/button.jpg

http://*ww.n*t*.com/button01.jpg

http://*ww.n*t*.com/ja525.jpg

http://*ww.n*t*.com/ja527.jpg

http://*ww.n*v*r.jp/button.jpg

http://*ww.n*v*r.jp/button01.jpg

http://*ww.n*v*r.jp/ja525.jpg

http://*ww.n*tm*rble.net/button.jpg

http://*ww.n*tm*rble.net/button01.jpg

http://*ww.n*tm*rble.net/ja525.jpg

http://*ww.n*x*n.com/button.jpg

http://*ww.n*x*n.com/button01.jpg

http://*ww.n*x*n.com/ja510.jpg

http://*ww.n*x*n.com/ja525.jpg

http://*ww.p*a*nc.jp/button.jpg

http://*ww.p*a*nc.jp/button01.jpg

http://*ww.p*a*nc.jp/ja525.jpg

http://*ww.p*usp*int.jp/member/img

http://*ww.p*usp*int.jp/member/img/button.jpg

http://*ww.p*usp*int.jp/member/img/button01.jpg

http://*ww.p*usp*int.jp/member/img/ja510.jpg

http://*ww.p*usp*int.jp/member/img/ja525.jpg

http://*ww.p*usp*int.jp/member/img/ja527.jpg

http://*ww.s*sd*te.gndot.com/ja525.jpg

http://*ww.s*ha*.co.kr/bbs/data/free/button.jpg

http://*ww.s*ha*.co.kr/bbs/data/free/button01.jpg

http://*ww.s*ha*.co.kr/bbs/data/free/ja525.jpg

http://*ww.s*sr.co.kr//bbs2/data/prize/button.jpg

http://*ww.s*sr.co.kr//bbs2/data/prize/button01.jpg

http://*ww.t*st*ry.com/start/button.jpg

http://*ww.t*st*ry.com/start/button01.jpg

http://*ww.t*st*ry.com/start/ja510.jpg

http://*ww.t*st*ry.com/start/ja525.jpg

http://*ww.t*st*ry.com/start/ja527.jpg

http://*ww.y*ho*.co.jp/button.jpg

http://*ww.y*ho*.co.jp/button01.jpg

http://*ww.y*ho*.co.jp/ja510.jpg

http://*ww.y*ho*.co.jp/ja525.jpg

http://*ww.y*ho*.co.jp/ja527.jpg

http://*ww.y*ko*ng.jp/ja525.jpg

http://*ww.y*ko*ing.jp/button.jpg

http://*ww.y*ko*ing.jp/button01.jpg

http://*ww.y*ko*ing.jp/ja525.jpg

http://*pd*te.nc*ok.net/rat.gif

http://*ww.sr*r.co.kr/bbs2/data/column/rat.gif

http://*ns*ate.gn*ot.com/rat.gif

http://*ww.plu*po(nt.jp/member/img/rat.gif

http://*ww.sr*a*.co.kr/bbs/data/free/rat.gif

나. 악성코드 통계

라이브리(LiveRe) 유포 악성코드 18개 중 드롭퍼(50%), 다운로더(50%)가 각각 9개이며, 전체 악성코드 유형 통계는 (그림 3-97)이다.

(그림 3-97) 라이브리(LiveRe) 유포 악성코드 유형 통계

제 9 절 미분류 악성코드

1. 분석 내용

미분류 악성코드는 7.7 디도스, 3.4 디도스, 3.20 사이버테러, 6.25 사이버테러, 한글 문서 취약점, Kimsuky APT, 아이스포그(IceFog) APT, 라이브리(LiveRe) 유포 악성코드 분류에 속하지 않는 게임 계정 탈취, 웹사이트 관리자 계정 수집, 파밍, 루트킷 악성코드와 상용툴, 정상파일이 해당한다.

가. 게임 계정 탈취

미분류 악성코드 중 게임 계정 탈취 악성코드는 백신 프로세스가 실행 중인지 검사하고, 특정 게임 프로세스나 인터넷 익스플로러(iexplore.exe)가 실행중 인지 확인 후 계정을 탈취하는 악성코드이다.

(그림 3-98) 게임 계정 탈취 악성코드 구조

아래 그림은 특정 백신 프로세스가 실행중인지 확인하는 루틴이다.

(그림 3-99) 게임 계정 탈취 악성코드 구조

[표 3-17] 특정 백신 프로세스명

프로세스명
A****nt.*ye	N****ent.n*c
A****rv.*ye	N****t.n*c
A****ate.*ye	s****er.*xe
A****ate.*ye	V****n.exe
A****Srv.*ye	V****c.exe
N****A****.*xe	V****CDOS
N****vc.n*c	v****.exe
n****n.n*c	v****c.exe

아래 그림은 특정 게임 프로세스가 실행중인지 확인하며, 인터넷 익스플로러(iexplore.exe)가 실행중일 경우 특정 게임의 웹사이트인지 확인하고 아이디와 패스워드를 가로챈다.

(그림 3-100) 수집 정보 통합

[표 3-18] 특정 게임프로세스

프로세스명

c*****m*i*.exe

d**.exe

f****i**t.exe

h****s.exe

K****K**C****.exe

l**.bin

M******o**.exe

N**.exe

P****.exe

R****t*.exe

W****r**.exe

w**.exe

(그림 3-101) 특정 웹사이트 접속 확인

2. 분석 결과

가. C&C 서버

미분류 악성코드에서 사용하는 C&C 서버의 주소는 아래 표와 같다. 악성코드에 감염된 PC는 해당 C&C 서버에 수집된 정보를 전송하거나 추가 악성코드를 다운로드한다.

[표 3-19] 미분류 악성코드 C&C 서버 주소

C&C 서버
1*2.10.*.6*	http://s*l*er*ig*t.e*5.org
2*6.83.*3.22*	http://s*ud*.l*f*on*t.com/
http://a*rah*m22*.z8*.us	http://w*w.d*ge*od*.com
http://e*an.*o.kr	http://w*w.e*em*o*.net
http://e*dl*n.com	http://w*w.l*na*30*12.com
http://i*ra*e.i*13*.com	http://w*w.p*ac*4r*.org
http://n*co*p.com	http://w*w.s*gf*it*.com
http://q*q.s.com	http://w*w.s*s*tl*.com

나. 악성코드 통계

미분류 악성코드 53개 중 11개의 샘플이 드롭퍼(21%), 10개의 샘플이 상용툴(19%), 7개의 샘플이 다운로더(13%), 5개의 샘플이 정상파일(9%), 4개의 샘플이 백도어(7%, 루트킷(6%)과 토르(6%)가 각각 3개, 2개의 샘플이 자동실행(4%), UAC우회(3%)이며 리소스 파일, 게임 계정 탈취, 봇넷, 원격접속, UAC우회, 인젝터, 웹사이트 관리자 계정 탈취, 실행불가 샘플이 기타(11%)이며, 전체 악성코드 유형 통계는 (그림 3-102)이다.

(그림 3-102) 미분류 악성코드 유형 통계

제 4 장 악성코드 특징점 추출

제 1 절 야라(YARA)

야라(YARA)는 악성코드의 시그니처를 이용하여 악성 여부를 확인하고, 그 특징에 따라 분류하기 위한 목적으로 사용되는 도구이다. 악성코드 시그니처는 샘플 파일이나 프로세스에 포함된 텍스트 스트링 또는 바이너리 패턴으로 로직을 구현하여 야라에서 실행하면 해당 시그니처가 포함되어 있는지 알려준다. 이외에 특정 EP(Entry Point) 값을 지정하거나 파일 오프셋, 가상 메모리 주소를 제시하고 정규 표현식(Regular Expression)을 이용하는 등 효율적인 패턴 매칭 작업이 가능하다.[7]

(그림 4-1) 야라 실행 화면

야라의 각 규칙은 식별자 규칙을 따르는 키워드 “rules”로 시작한다. 식별자는 C 프로그래밍 언어와 같은 어휘 규칙을 준수해야 하며, 영숫자와 밑줄 문자를 포함할 수 있지만, 첫 번째 문자는 숫자를 사용하면 안 된다. 규칙 식별자는 대소문자를 구분하며 128자를 초과하거나 사용할 수 없으며, [표 4-1]는 키워드들은 예약되어 있어 식별자로 사용할 수 없다.

[표 4-1] 야라 예약어

야라 예약어
all	in	private
and	include	rule
any	index	rva
ascii	indexes	section
at	int8	strings
condition	int32	true
entrypoint	matches	uint8
false	meta	uint16
filesize	nocase	uint32
fullword	note	wide
for	or
global	of

야라를 실행하기 위해서는 패턴 정보가 포함된 야라 룰 파일이 필요하다. (그림 4-2)는 야라 룰의 기본 형태를 나타낸 것이며, 텍스트 문자열, 16진수 문자열, 정규표현식의 3가지 타입의 문자열이 있다. (그림 4-2)의“strings:”구문에서 “$”가 붙은 식별자를 이용해 각 타입의 형태로 패턴을 작성할 수 있다.

(그림 4-2) 야라 룰 기본 형태

rule test_yara

{

strings:

$Text_string = "Text_String”	// 문자열

$hex_string = { 4D 5A 90 00 }	// 16진수 문자열

$re = /md5: [0-9a-zA-Z]{32}	// 정규 표현식

condition:

// strings:에서 사용된 식별자

$Text_string or $hex_string or $re

}

텍스트 문자열은 (그림 4-3)의 “$string”식별자가 있는 구문처럼 사용되며 “nocase”를 추가하여 대소문자를 구분하지 않는 모드로 설정할 수 있다. nocase로 설정된 “Test”는 “TEst”, “TESt”, “TEST”, “tEST”, “teST”와 일치하며 매우 유용하게 사용된다. 또한 “wide”를 추가하여 Wide-character 문자열을 검색하는 데 사용할 수 있으며, Wide-character 문자열과 ASCII형태 둘 다 검색할 때는 순서에 상관없이 “wide”와 “ascii”를 함께 사용한다.

정규표현식은 (그림 4-2)의 “$re”식별자가 있는 구문처럼 사용되며 구문 뒤에 (그림 4-3)처럼 “nocase”, “wide”, “ascii”를 붙일 수 있다.

(그림 4-3) 야라 nocase, wide, ascii 사용 방법

rule test_yara

{

strings:

$string1 = "Test” nocase

$string2 = "Test” wide

$string3 = "Test” wide ascii

condition:

$string0 or $string1 or $string2

}

작성된 식별자는 condition 구문에서 사용한다. “condition:”구문은 Boolean 값으로만 결과가 나타나며 기본적인 C 연산자가 모두 사용할 수 있다. (부울 연산자 [and, or, not], 관계연산자 [>=, <=, >, <, ==, !=], 산술연산자 [+,-,*,/], 비트연산자 [&, |, <<, >>, ~])[7]

[표 4-2] condition 규칙

규칙	설명
all of them	모든 스트링에 적용
any of them	스트링 중 최소 하나 적용
all of ($value*)	$value로 시작되는 모든 스트링 적용
any of ($value, $string, $test)	$value, $string, $test 중 최소 하나 적용
1 of ($value*)	스트링 중 최소 하나 적용 (any of them과 동일)

제 2 절. 악성코드별 특징점 추출

악성코드는 제작자나 악성 행위에 따라 특징점이 존재하며 [표 4-3]은 악성코드를 구분하기 위한 특징점이다. 제 3장 악성코드 상세 분석의 결과를 바탕으로 악성코드의 특징점을 추출하였다.

[표 4-3] 악성코드 특징점

악성코드 특징점

분석방해 기법(안티 디버깅 등)

개발 경로

악성코드 감염 경로(유포지)

C&C 서버 IP

중복실행 방지 문자열(뮤텍스, 이벤트, 파일매핑 등)

암호화 기법

암호화 키

자체 제작 암호화 모듈 구조

암호화, 복호화 루틴

C&C 통신 프로토콜

C&C 명령어 구조

등록된 서비스 명

자동실행 방식

PE 파일 리소스 명

생성 파일 이름

악성코드 유포에 사용된 취약점

기타 문자열(로그 문자열 등)

1. 7.7 디도스 악성코드

(그림 4-4)는 7.7 디도스 악성코드 야라 룰이며, 디도스를 수행하는 악성코드의 특징점을 패턴화한 것이다. 해당 악성코드는 (1)방화벽을 우회하는 레지스트리와 (2)추가 악성행위를 하는 파일명, (3)인터넷에 접근이 가능한지 확인하는 명령어, (4)디도스 공격을 수행하기 위한 페이로드 값, (5)공격 대상 주소가 존재하는 특징점이 있다.

(그림 4-4) 7.7 디도스 악성코드 야라 룰(디도스)

rule apt124_win32_77ddos_DDoS : DDos

{

strings:

$REG_1 = "Wmiconf”

$REG_2 = "HKLM\\SYSTEM\\CurrentControlSet\\Services\\SharedAccess\\Parameters\\FirewallPolicy\\StandardProfile”

$REG_3 = "EnableFirewall”

$FileName_1 = "uregvs.nls”

$FileName_2 = "pxdrv.nls”

$FileName_3 = "wmiconf.dll”

$String_1 = "HTTP/1.1 GET /china/dns?”

$String_2 = "200 www.google.com!”

$Payload_1 = "Cache-Control: no-store, must-revalidate”

$Payload_2 = "GET %s HTTP/1.1\\r\\nAccept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml”

$Payload_3 = "Accept-Language: ko”

$Payload_4 = "UA-CPU: x86”

$Payload_5 = "Accept-Encoding: gzip, deflate”

$Payload_6 = "User-Agent: %s”

$Payload_7 = "%sHost: %s”

$Payload_8 = "Connection: Keep-Alive”

$URL_1 = "www.w***e*o**e.**v”

$URL_2 = "www.**a.gov”

$URL_3 = "www.**a*e.gov”

$URL_4 = "www.***e*f**t*ry.gov”

$URL_5 = "www.**t.gov”

$URL_6 = "www.***r*as.gov”

$URL_7 = "www.*h*.*ov”

$URL_8 = "www.**c.gov”

$URL_9 = "www.**a.gov”

$URL_10 = "www.**p*.gov”

$URL_11 = "www.**a*e*s.com”

$URL_12 = "www.y**o*.com”

$URL_13 = "www.***e**e*i*k.*i*”

$URL_14 = "t****l.**a*e.gov”

$URL_15 = "www.**s*.com”

$URL_16 = "www.n**d**.com”

$URL_17 = "www.s*t***y-*ite.com”

$URL_18 = "www.***k****t*h.com”

$URL_19 = "*i*a**e.*a**o.com”

$URL_20 = "www.u*a**t**n**i*e.com”

$URL_21 = "www.*s*a*k.com”

$URL_22 = "www.*m*z**.com”

$URL_23 = "www.**e*i*e*t.go.kr”

$URL_24 = "www.**d.go.kr”

$URL_25 = "www.**f*t.go.kr”

$URL_26 = "www.*s*e**ly.go.kr”

$URL_27 = "www.u*f*.m*l”

$URL_28 = "*l*g.***e*.com”

$URL_29 = "**i*.*a*e*.com”

$URL_30 = "*a**i*g.**n**y**.com”

$URL_31 = "*z***k.****h**.com”

$URL_32 = "*b***.**b.c*.kr”

$URL_33 = "www.*a****a.or.kr”

$URL_34 = "www.*h***n.com”

$URL_35 = "www.*u**i*n.co.kr”

$URL_36 = "www.***h***t*n***t.com”

condition:

(1 of ($REG*)) or (1 of ($FileName*)) or (1 of ($String*)) or (1 of ($Payload*)) or (1 of ($URL*))

}

2. 3.4 디도스 악성코드

(그림 4-5)는 3.4 디도스 악성코드 야라 룰이며, 디도스 공격을 수행하는 악성코드의 특징점을 패턴화한 것이다. 해당 악성코드는 (1)디도스 공격에 사용하는 API와 (2)디도스 공격시간과 공격타겟을 가지고 있는 파일, (3)평문의 공격 대상 URL과 (4)디도스 루틴 (5)복호화 루틴이 존재하는 특징점이 있다.

(그림 4-5) 3.4 디도스 악성코드 야라 룰(디도스)

rule apt97_win32_34ddos_DDos : DDoS

{

strings:

$API1 = "SystemTimeToVariantTime”

$API2 = "DnsQuery_A”

$ReadFile1 = "t*n**y*.dat”

$ReadFile2 = "t*j*q*v.dat”

$URL1 = "**v*r.com”

$URL2 = "***m.net”

$URL3 = "***g**e.com”

$URL4 = "**i**i*e.com”

$URL5 = "**w.***r*et.com”

$URL6 = "**d.*o.kr”

$URL7 = "**f**.*o.kr”

$URL8 = "**s.*o.kr”

$URL9 = "**i**r*a*.go.kr”

$URL10 = "**s*m*l*.go.kr”

$URL11 = "*o*e*.go.kr”

$URL12 = "***a.go.kr”

$URL13 = "*o**e.go.kr”

$URL14 = "**s.go.kr”

$URL15 = "*u****s.go.kr”

$URL16 = "**d.**l.kr”

$URL17 = "*c*.**l.kr”

$URL18 = "***y.**l.kr”

$URL19 = "*i***r**.**l.kr”

$URL20 = "***y.**l.kr”

$URL21 = "***k.**l”

$URL22 = "***a.**l.kr”

$URL23 = "****n.*f.*il”

$URL24 = "**c.*o.*r”

$URL25 = "***a*.g*.kr”

$URL26 = "***a.or.kr”

$URL27 = "*n***.com”

$URL28 = "**c.go.kr”

$URL29 = "***t*r.com”

$URL30 = "*****b***.com”

$URL31 = "*a***a**.com”

$URL32 = "**b.co.kr”

$URL33 = "*h***n.com”

$URL34 = "**i***n*.co.kr”

$URL35 = "*o***y**.com”

$URL36 = "*i****.com”

$URL37 = "*a****n.co.kr”

$URL38 = "***a*l.com”

$URL39 = "k**p.co.kr”

$DDoS = {8B 3D ?? ?? ?? ?? 66 89 44 24 0E 66 C7 44 24 0C 02 00 33 F6 FF D7 88 44 34 1C 4681 FE 00 04 00 00 72 F1 8D 54 24 0C}

$Decode = {88 06 8B C2 8B CA 88 56  03 C1 E8 08 C1 E9 10 88 46 02 8B 44 24 20 88 4E 01 8B C8 C1 E9 18 8B D0 88 4E 04 C1 EA 10 8B C8 88 46 07 8B 44 24 18 88 56 05 8B D0 33 DF C1 E9 08 C1 EA 18 88 4E 06 88 56 08 8B C8 8B D0 C1 E9 10 C1 EA 08 88 4E 09 88 46 0B 88 56 0A 8B C3 8B CB 8B D3 C1 E8 18 C1 E9 10 C1 EA 08 88 46 0C 88 4E 0D 88 56 0E 88 5E 0F 5F}

condition:

(1 of ($API*)) or (1 of ($ReadFile*)) or (1 of ($URL*)) or $DDoS or $Decode

}

(그림 4-6)은 3.4디도스 악성코드 중 디스크를 파괴하는 악성코드의 특징점을 패턴화한 것이다. 해당 악성코드는 (1)디스크 파괴 전 특정 확장자를 가진 파일을 변조하고, (2)로그에 사용되는 문자열과 (3)디스크 파괴 전 확인하는 파일 명, (4)디스크 영역을 변조할 때 사용하는 문자열, (5)암호화된 문자열을 복호화하는 루틴이 존재하는 특징점이 있다.

(그림 4-6) 3.4 디도스 악성코드 야라 룰(디스크 파괴)

rule apt55_win32_Dropper : Dropper

{

strings:

$String_1 = "c:\\windows\\temp\\~v3.log”

$String_2 = "%sLocal Settings\\Application Data\\Felix_Deimel\\mRemote\\confCons.xml”

$String_3 = "%sApplication Data\\VanDyke\\Config\\Sessions”

$String_4 = "%sAppData\\Local\\Felix_Deimel\\mRemote\\confCons.xml”

$String_5 = "%sAppData\\Roaming\\VanDyke\\Config\\Sessions”

$String_6 = "%s -batch -P %s -l %s -pw %s %s %s:/tmp/cups”

$String_7 = "%s -batch -P %s -l %s -pw %s %s \"chmod 755 /tmp/cups;/tmp/cups\"”

$String_8 = "E:\\_O_\\_N_\\work\\AutoServerCrasher\\Release\\AutoServerCrasher.pdb”

$String_9 = "Username=\"root\"”

$String_10 = "Protocol=\"SSH”

$String_11 = "Password=\"\"”

$String_12 = "%s\\cmd.exe /c %s”

$String_13 = "S:\"Protocol Name\"=SSH”

$String_14 = "S:\"Username\"=root”

$String_15 = "D:\"Session Password Saved\"=00000001”

$String_16 = "S:\"Hostname\"=”

$String_17 = "S:\"Password\"=”

$String_18 = "D:\"[SSH2] Port\"=”

$Decrypt = { 8B 95 F4 FE FF FF 8A 0B 30 0C 1E 52 57 46 FF 15 3C 7C 41 00 3B F0 72 E8 8B B5 EC FE FF }

$FileName_1 = "*l*.exe”

$FileName_2 = "c**m**e.exe”

$FileName_3 = "*p**.tmp”

$FileName_4 = "*g**t**s*.exe”

$API_1 = "FindResourceA”

$API_2 = "LoadResource”

$API_3 = "SizeofResource”

condition:

(1 of ($String*)) or (1 of ($FileName*)) or (1 of ($API*)) or (1 of ($Decrypt*))

}

3. 3.20 사이버테러 악성코드

(그림 4-7)은 3.20 사이버테러 악성코드의 야라 룰이며, 드롭퍼 악성코드의 특징점을 패턴화한 것이다. 해당 악성코드는 (1)악성 행위를 위한 문자열들과 (2)복호화 루틴, (3)드롭 악성코드 파일명, (4)파일 드롭에 사용된 Windows API 함수가 존재하는 특징점이 있다.

(그림 4-7) 3.20 사이버테러 악성코드 야라 룰(드롭퍼)

rule apt55_win32_Dropper : Dropper

{

strings:

$String_1 = "c:\\windows\\temp\\~v3.log”

$String_2 = "%sLocal Settings\\Application Data\\Felix_Deimel\\mRemote\\confCons.xml”

$String_3 = "%sApplication Data\\VanDyke\\Config\\Sessions”

$String_4 = "%sAppData\\Local\\Felix_Deimel\\mRemote\\confCons.xml”

$String_5 = "%sAppData\\Roaming\\VanDyke\\Config\\Sessions”

$String_6 = "%s -batch -P %s -l %s -pw %s %s %s:/tmp/cups”

$String_7 = "%s -batch -P %s -l %s -pw %s %s \"chmod 755 /tmp/cups;/tmp/cups\"”

$String_8 = "E:\\_O_\\_N_\\work\\AutoServerCrasher\\Release\\AutoServerCrasher.pdb"

$String_9 = "Username=\"root\"”

$String_10 = "Protocol=\"SSH”

$String_11 = "Password=\"\""

$String_12 = "%s\\cmd.exe /c %s”

$String_13 = "S:\"Protocol Name\"=SSH”

$String_14 = "S:\"Username\"=root"

$String_15 = "D:\"Session Password Saved\"=00000001”

$String_16 = "S:\"Hostname\"=”

$String_17 = "S:\"Password\"=”

$String_18 = "D:\"[SSH2] Port\"=”

$Decrypt = { 8B 95 F4 FE FF FF 8A 0B 30 0C 1E 52 57 46 FF 15 3C 7C 41 00 3B F0 72 E8 8B B5 EC FE FF }

$FileName_1 = "alg.exe”

$FileName_2 = "conmine.exe”

$FileName_3 = "~pr1.tmp”

$FileName_4 = "AgentBase.exe”

$API_1 = "FindResourceA”

$API_2 = "LoadResource”

$API_3 = "SizeofResource”

condition:

(1 of ($String*)) or (1 of ($FileName*)) or (1 of ($API*)) or (1 of ($Decrypt*))

}

(그림 4-8)은 3.20 사이버테러 악성코드 중 디스크 파괴 악성코드의 특징점을 패턴화한 것이다. 해당 악성코드는 (1) 디스크 파괴 시 MBR 영역을 덮어쓰는 문자열과 (2) 디스크 파괴에 사용되는 특정 문자열이 존재하는 특징점이 있다.

(그림 4-8) 3.20 사이버테러 악성코드 야라 룰(디스크 파괴)

rule apt53_win32_MBR : MBR

{

strings:

$MBR_String_1 = "PRINCPES” nocase

$MBR_String_2 = "HASTATI” nocase

$String_1 = "JO840112-CRAS8468-11150923-PCI8273V”

$String_2 = "PhysicalDrive%d” nocase

$String_3 = "shutdown -r -t” nocase

$String_4 = "taskkill /F /IM p*s*c.exe” nocase

$String_5 = "taskkill /F /IM C*i*v*.exe” nocase

condition:

(1 of ($MBR_String)) or 1 of ($String_*)

}

4. 6.25 사이버테러 악성코드

(그림 4-9)는 6.25 사이버테러 악성코드의 야라 룰이며, 디도스 악성코드 의 드롭퍼 악성코드 특징점을 패턴화한 것이다. 해당 악성코드는 (1)파일매핑 값“Global\\MicrosoftUpgradeObject9.6.4”으로 감염 확인을 하고, (2)“www.microsoft.com”에 접속하여 인터넷 연결 여부를 확인하며, (3)특정 C&C에 접속해 파일을 다운로드한다. (4)다운로드 한 파일에서 시그니처(BM6W)를 확인 후 (5)특정 시간에 파일명(wuauieop.exe)으로 디도스 악성코드를 생성하는 특징점이 있다.

(그림 4-9) 6.25 사이버테러 악성코드 야라 룰(드롭퍼)

rule apt37_win32_win64_625_DdosDropper : DdosDropper

{

strings:

$String_1 = "w*u*e*p.exe”

$String_2 = "w**.m**r**f*.com”

$String_3 = "B***”

$Mapping = "Global\\MicrosoftUpgradeObject9.6.4”

$URL_1 = "http://www.h*t*y*i*.*e*/pictures/e*2*4*e*5*3*1*c*d*8*e*4*2*0*1**0.jpg”

$URL_2 = "http://webmail.*e*e*y*h*s*.com/mail/images/c*.jpg”

condition:

(all of ($String*)) and $Mapping and (all of ($URL*))

}

(그림 4-10)은 6.25 사이버테러 악성코드 중 디스크 파괴 악성코드의 특징점을 패턴화한 것이다. 해당 악성코드는 (1)중복 실행을 방지하기 위한 뮤텍스 명이 존재하고, (2)사용자의 바탕화면을 변경시키는 .BMP 파일명과 (3)사용자 계정 암호 변경 값, (4)악성 행위를 기록하는 문자열이 존재하며, (5)로그파일을 암호화, (6)리소스 영역을 복호화, (7) MBR 영역을 변경하는 특징점이 있다.

(그림 4-10) 6.25 사이버테러 악성코드 야라 룰(디스크 파괴)

rule apt38_win32_625_MBR : MBR

{

strings:

$Mutex = "Microsoft-Windows-LDAP32-Client”

$String_1 = "i18n.nms”

$String_2 = "desktop_image001.bmp” wide

$String_3 = "highanon2013” wide

$String_4 = "\\\\.\\PhysicalDrive%d” wide

$CheckStr_1 = "EXIST”

$CheckStr_2 = "SVC-CREATE-ERROR”

$CheckStr_3 = "SVC-CREATE-OK”

$CnC_1 = "11*.2*7.1*0.**8”

$CnC_2 = "21*.1*7.3*.*9”

$Routine_1 = {8A 14 01 8A 18 32 DA 88 18 40 4E 75 F3}	// 로그파일 암호화

$Routine_2 = {8A 54 24 10 8B 4C 24 08 53 8A 1C 08 32 DA 88 1C 08 40 3B C6 7C}	// 리소스영역 복호화

#Routine_3 = {56 33 F6 6A 01 56 E8 E5 E3 FF FF 83 C4 08 46 83 FE 08 7C EF 5E }	// MBR 변경

condition:

$Mutex or (all of ($String*)) or (all of ($CheckStr*)) or (all of ($CnC*)) or (1 of ($Decrypt*))

}

5. 한글 문서 취약점 악성코드

(그림 4-11)은 한글 문서 취약점 악성코드의 야라 룰이며, 감염 PC의 키보드 입력 값을 탈취하고 FTP 서버로 전송하는 키로거 악성코드의 특징점을 패턴화한 것이다. 해당 악성코드는 (1)중복실행 방지를 위한 뮤텍스 명, (2)키로그를 저장할 때 현재 시간을 같이 저장하며, (3)특정 인터넷 브라우저 실행 여부를 확인하고, (4)탈취한 키로그 파일을 암호화 알고리즘과 킷값으로 암호화, (5)복호화 루틴이 존재, (6)암호화된 키로그 파일을 전송하기 위해 특정 FTP서버에 전송하는 특징점이 있다.

(그림 4-11) 한글 문서 취약점 악성코드 야라 룰(키로거)

rule apt1_4_win32_keylogger : Keylogger Transfer

{

strings:

$Mutex = "ntdxssvcn”

$Keylog = "------ %d/%d/%d : %d/%d ------”

$String_1 = "IEXPLORE.EXE”

$String_2 = "chrome.exe”

$String_3 = "firefox.exe ”

$Key_1 = "www.GoldDragon.com”

$Key_2 = "www.microsoft.com”

$Encryption = { 88 44 04 0C 40 3D 00 01 00 00 72 F4 }

$Decryption = { 8B C2 BD 03 00 00 01 C1 E0 05 03 C2 8A 0E 8D 14 40 8D 84 12 9B 00 00 00 33 D2 F7 F5 3A CA 74 02 32 CA 88 0F 46 47 4B 75 D7 }

$Send_1 = "FtpGetFileA”	//API

$Send_2 = "**.2*0.9.*0”

$Send_3 = "maya120”	//ID

$Send_4 = "jin2010h”	//ID

$Send_5 = "sanmain717”	//PW

condition:

$Mutex or ( $Keylog and (all of ($String*)) ) or ( 1 of ($Key*) and ($Encryption or $Decryption) ) or ( 1 of ($Send*) )

}

6. Kimsuky APT 악성코드

(그림 4-12)는 Kimsuky APT 악성코드의 야라 룰이며, 정보탈취 악성코드의 특징점을 패턴화한 것이다. 해당 악성코드는 (1)감염 PC의 정보를 저장하는 문자열과 (2)악성행위 실행 시 로그 문자열을 남기며, (3)특정 백신과 방화벽을 무력화, (4)다른 악성코드에서 수집한 정보 파일을 종합하여 공격자가 지정한 이메일에 전송하는 특징점이 있다.

(그림 4-12) Kimsuky APT 악성코드 야라 룰(정보탈취)

rule apt129_win32_kimsuky_Collect : Collect

{

strings:

$String_0 = "ShellExecuteA Err!!!”

$String_1 = "ShellExecuteA Ok!!!”

$String_2 = "Decrypt Erro!!!”

$String_3 = "kkk.exe Executing!!!”

$String_4 = "Down Ok!!!”

$String_5 = "////// KeyLog End //////”

$String_6 = "////// KeyLog //////”

$String_7 = "///// UserId End //////”

$String_8 = "///// UserId //////”

$String_9 = "//////// SystemInfo End ///////”

$String_10 = "//////// SystemInfo ///////”

$String_11 = "File Delete Ok!”

$String_12 = "kkk.exe Copy Ok!”

$String_13 = "File Executing!”

$String_14 = "File Existing!”

$String_15 = "taskmgr.exe Execute Err!!!”

$String_16 = "taskmgr.exe Execute Ok!!!”

$String_17 = "Computer name: %s”

$String_18 = "User name:  %s”

$String_19 = "Microsoft Enhanced Cryptographic Provider v1.0”

$REG_1 = "SOFTWARE\\AhnLab\\V3IS2007\\InternetSec”

$REG_2 = "SOFTWARE\\AhnLab\\V3IS80\\is”

$REG_3 = "SYSTEM\\CurrentControlSet\\Services\\SharedAccess\\Parameters\\FirewallPolicy\\StandardProfile”

$REG_4 = "SYSTEM\\CurrentControlSet\\Services\\SharedAccess\\Parameters\\FirewallPolicy\\PublicProfile”

$Email_1 = "i*p*1*1*2@hotmail.com”

$Email_2 = "l*v*s*0**@mail.bg”

$Email_3 = "r**1**3@hotmail.com”

$Email_4 = "b*a*t**l@mail.bg”

$Email_5 = "o***0*1*@hotmail.com”

$Email_6 = "s*o*t**a*@mail.bg”

$Email_7 = "h**p*l**e@mail.bg”

$Email_8 = "f**io***n@mail.bg”

$Email_9 = "v*r*h***y@mail.bg”

$Email_10 = "m***e**a*@mail.bg”

$Pwd = "5tgb%5EYHN”

$Decrypt = { 8A 0C 10 80 F1 99 88 0C 10 40 3B C3 7C F2 }

condition:

(1 of ($String*)) or (1 of ($REG*)) or (1 of ($Email*)) or $Pwd or $Decrypt

}

(그림 4-13)은 Kimsuky APT 악성코드 중 키로거 악성코드의 특징점을 패턴화한 것이다. 해당 악성코드는 (1)감염 PC의 키보드, 마우스 입력 값을 탈취하기 위해 특정 Windows API 함수를 사용하고, (2)특정 프로세스를 검색해 권한 변경, (3)입력된 마우스의 가상키를 변환시키는 문자열이 존재, (4) 수집된 정보를 암호화하는 루틴이 존재하는 특징점이 있다.

(그림 4-13) Kimsuky APT 악성코드 야라 룰(키로거)

rule apt130_win32_kimsuky_KeyLogger : KeyLogger

{

strings:

$API_1 = "GetKeyboardState”

$API_2 = "GetWindowTextA”

$API_3 = "GetForegroundWindow”

$API_4 = "GetKeyState”

$Privilege = "SeDebugPrivilege”

$String_1 = "winsta0”

$String_2 = "explorer.exe”

$String_3 = "winlogon.exe”

$String_4 = "URL:[ %s ]”

$String_5 = "[RMOUSE]”

$String_6 = "[LMOUSE]”

$String_7 = "[Ent]”

$String_8 = "--------[%s]--------”

$String_9 = "[%02d:%02d:%02d]”

$String_10 = "setup.log”

$Decrypt = {85 DB F3 A4 7E 0E 8A 0C 10 80 F1 99 88 0C 10 40 3B C3 7C F2}

condition:

(1 of ($API*)) or $Privilege or (1 of ($String*)) or $Decrypt

}

7. 아이스포그(IceFog) APT 악성코드 특징점

(그림 4-14)은 아이스포그(IceFog) APT 악성코드의 야라 룰이며, 백도어 악성코드의 특징점을 패턴화한 것이다. 해당 악성코드는 (1)중복 실행 방지를 위해 뮤텍스 명을 사용하고, (2)감염 PC의 정보를 수집, (3)특정 URL에서 파일을 다운하여 (4) 파일을 업로드하거나 다운로드, 코드를 복호화하는 행위를 수행하는 특징점이 있다.

(그림 4-14) 아이스포그(IceFog) APT 악성코드 야라 룰(백도어)

rule apt135_win32_icefog_Backdoor : Backdoor

{

strings:

$Mutex = "**h**s***a**e*”

$FileName_5 = "*d*a*d.drv”

$FileName_2 = "*r**r.dat”

$FileName_3 = "**u*.dat”

$FileName_4 = "*m**o*.dat”

$FileName_7 = "%s_%s_%d.jpg”

$URL_1 = "http://i*e*o*.8.100911.com/news/download/order.dat”

$URL_2 = "i***g.8.”

$URL_3 = "1***11.com”

$String_1 = "/news/upload.aspx”

$String_2 = "Get Proxy Failed”

$String_3 = "ID: %d (%s)”

$String_4 = "HostName: %s\\r\\nIP: %s\\r\\nProxy: %s\\r\\nUser: %s\\r\\nSystemDir: %s\\r\\nOS Language Version: %d\\r\\nSystem Version: %d.%d %s (Build %d)”

$String_5 = "Process:”

$String_6 = "uploads”

$String_7 = "download_”

$String_8 = "order”

$String_9 = "Failed to open local file %s.”

$String_10 = "code_”

$String_11 = "mymainfuc”

$String_12 = "/news/order/%s”

condition:

$Mutex or (1 of ($FileName*)) or (1 of ($URL*)) or (1 of ($String*))

}

8. 라이브리(LiveRe) 유포 악성코드

(그림 4-15)은 라이브리(LiveRe) APT 악성코드 야라 룰이며, 백도어 악성코드의 특징점을 패턴화한 것이다. 해당 악성코드는 (1)중복 실행 방지를 위해 뮤텍스 명을 사용하고, (2)암호화된 URL 정보를 복호화하기 위한 루틴과 (3)특정 백신의 위치를 파악해 제거하는 루틴, (4)특정 URL에서 파일을 다운하는 특징점이 있다.

(그림 4-15) 라이브리(LiveRe) 유포 악성코드 야라 룰(다운로더)

rule apt143_win32_livere_DownLoader : DownLoader

{

strings:

$Mutex = "R*Y**n****”

$Decrypt = { 74 09 32 CA 88 08 40 FE CA EB F1 C3 56 8B 74 24 08 8A 06 84 C0 74 11 0F BE C0 50 46 E8 A9 29 00 00 85 C0 59 75 EB 5E C3 6A 01 58 5E C3 55 8B EC }

$REG_1 = "SOFTWARE\\AhnLab\\V3Lite”

$REG_2 = "SOFTWARE\\AhnLab\\V3 365 Clinic”

$REG_3 = "SOFTWARE\\ESTsoft\\ALYac”

$REG_4 = "SOFTWARE\\NHN Corporation\\NaverVaccine”

$REG_5 = "SOFTWARE\\TrendMicro\\AMSP”

$REG_6 = "SOFTWARE\\ESET\\ESET Security\\CurrentVersion\\Info”

$FileName_1 = "c*l**s*.exe”

$FileName_2 = "U*i*s*.exe”

$FileName_3 = "u*i*s***.aye”

$FileName_4 = "v*r*i*n*6*.dat”

$FileName_5 = "s*t*p*i*w***.exe”

$FileName_6 = "b*t***0*.jpg”

$String_1 = "ProductCode”

$String_2 = "InstallDir”

$String_3 = "RootDir”

$String_4 = "ProductPath”

$String_5 = "InstallPath”

$String_6 = "Uninstall”

$String_7 = "callmsi.exe /i”

$String_8 = "ESET Smart Security”

$String_9 = "\\AMSP\\”

$String_10 = "\\Titanium\\Remove.exe”

$String_11 = "WebViewHost”

$String_12 = "versionname”

$String_13 = "V3 365 클리닉 제거”

$String_14 = "알약 삭제”

$String_15 = "예(&Y)”

$String_16 = "아니오(&N)”

$String_17 = "LaunchAppIntoDifferentSession 1”

$String_18 = "WTSGetActiveConsoleSessionId”

$String_19 = "winsta0\\default”

$CnC_1 = "http://ur****ta.com/”

$CnC_2 = "http://ga*****us.co.kr/”

$URL_1="http://net***ble.net/ja525.jpg”

$URL_2="http://sn***te.gndot.com/button.jpg”

$URL_3="http://sn***te.gndot.com/button01.jpg”

$URL_4="http://sn***te.gndot.com/ja525.jpg”

$URL_5="http://u***te.ncook.net/ja510.jpg”

$URL_6="http://u***te.ncook.net/ja525.jpg”

$URL_7="http://u***te.ncook.net/ja525.jpg”

$URL_8="http://u***te.ncook.net/ja527.jpg”

$URL_9="http://u***idata.com/images/ja525.jpg”

$URL_10="http://u***idata.com/images/ja525.jpg”

$URL_11="http://www.d***age.co.kr/board/data/button.jpg”

$URL_12="http://www.d***age.co.kr/board/data/button01.jpg”

$URL_13="http://www.g***odo.jp/button.jpg”

$URL_14="http://www.g***odo.jp/button01.jpg”

$URL_15="http://www.g***odo.jp/ja525.jpg”

$URL_16="http://www.g***odo.jp/ja525.jpg”

$URL_17="http://www.gi***do.jp/ja527.jpg”

$URL_18="http://www.ha***e.com/button.jpg”

$URL_19="http://www.ha***.com/button01.jpg”

$URL_20="http://www.ha***.com/ja525.jpg”

$URL_21="http://www.han***.com/ja525.jpg”

$URL_22="http://www.join***.com/button.jpg”

$URL_23="http://www.join***.com/button01.jpg”

$URL_24="http://www.join***.com/ja525.jpg”

$URL_25="http://www.m*m.com/button.jpg”

$URL_26="http://www.m*m.com/button01.jpg”

$URL_27="http://www.m*n.com/ja525.jpg”

$URL_28="http://www.m***je.net/button.jpg”

$URL_29="http://www.m***je.net/button01.jpg”

$URL_30="http://www.m***je.net/ja424.jpg”

$URL_31="http://www.m***je.net/ja525.jpg”

$URL_32="http://www.n***i-pg.co.jp/bbs/data/update/ja510.jpg”

$URL_33="http://www.n***i-pg.co.jp/bbs/data/update/ja525.jpg”

$URL_34="http://www.n***i-pg.co.jp/bbs/data/update/ja527.jpg”

$URL_35="http://www.n***.com/button.jpg”

$URL_36="http://www.n***.com/button01.jpg”

$URL_37="http://www.n***.com/ja525.jpg”

$URL_38="http://www.n***.com/ja527.jpg”

$URL_39="http://www.na***.jp/button.jpg”

$URL_40="http://www.na***.jp/button01.jpg”

$URL_41="http://www.na***.jp/ja525.jpg”

$URL_42="http://www.ne***rble.net/button.jpg”

$URL_43="http://www.ne***rble.net/button01.jpg”

$URL_44="http://www.ne***rble.net/ja525.jpg”

$URL_45="http://www.ne***.com/button.jpg”

$URL_46="http://www.ne***.com/button01.jpg”

$URL_47="http://www.ne***.com/ja510.jpg”

$URL_48="http://www.ne***.com/ja525.jpg”

$URL_49="http://www.pl***c.jp/button.jpg”

$URL_50="http://www.pl***c.jp/button01.jpg”

$URL_51="http://www.pl***c.jp/ja525.jpg”

$URL_52="http://www.pl***oint.jp/member/img”

$URL_53="http://www.pl***oint.jp/member/img/button.jpg”

$URL_54="http://www.pl***oint.jp/member/img/button01.jpg”

$URL_55="http://www.pl***oint.jp/member/img/ja510.jpg”

$URL_56="http://www.pl***oint.jp/member/img/ja525.jpg”

$URL_57="http://www.pl***oint.jp/member/img/ja527.jpg”

$URL_58="http://www.sn***te.gndot.com/ja525.jpg”

$URL_59="http://www.sr***.co.kr/bbs/data/free/button.jpg”

URL_60="http://www.s***n.co.kr/bbs/data/free/button01.jpg”

$URL_61="http://www.s***n.co.kr/bbs/data/free/ja525.jpg”

$URL_62="http://www.s**r.co.kr//bbs2/data/prize/button.jpg”

$URL_63="http://www.s**r.co.kr//bbs2/data/prize/button01.jpg”

$URL_64="http://www.ti***ry.com/start/button.jpg”

$URL_65="http://www.ti***ry.com/start/button01.jpg”

$URL_66="http://www.ti***ry.com/start/ja510.jpg”

$URL_67="http://www.ti***ry.com/start/ja525.jpg”

$URL_68="http://www.ti***ry.com/start/ja527.jpg”

$URL_69="http://www.y***o.co.jp/button.jpg”

$URL_70="http://www.y***o.co.jp/button01.jpg”

$URL_71="http://www.y***o.co.jp/ja510.jpg”

$URL_72="http://www.y***o.co.jp/ja525.jpg”

$URL_73="http://www.y***o.co.jp/ja527.jpg”

$URL_74="http://www.y***ing.jp/ja525.jpg”

$URL_75="http://www.y***king.jp/button.jpg”

$URL_76="http://www.y***king.jp/button01.jpg”

$URL_77="http://www.y***king.jp/ja525.jpg”

condition:

$Mutex or $Decrypt or (1 of ($REG*)) or (1 of ($FileName*)) or (1 of ($String*)) or (1 of ($URL*)) or (1 of ($CnC*))

}

9. 미분류 악성코드

(그림 4-16)은 미분류 악성코드 야라 룰이며, 게임 계정 탈취 악성코드의 특징점을 패턴화한 것이다. 해당 악성코드는 (1)이벤트 명을 지정해 중복 실행을 방지하고, (2)암호화된 문자열을 복호화하는 루틴, (3)특정 백신이 실행되고 있는지 확인, (4)게임 프로세스가 실행중인지 확인, (5)특정 게임 웹사이트에 접속하는지 확인하는 특징점이 있다.

(그림 4-16) 미분류 악성코드 야라 룰(게임 계정 탈취)

rule apt88_win32_game_Collect : Collect

{

strings:

$String_1 = "MEIMEI”

$String_2 = "NAIMA”

$String_3 = "Global\\D91FD087-CCAB-4157-8327-4444BDA36321”

$AntiPro_1 = "**L**c.exe”

$AntiPro_2 = "**A**t.aye”

$AntiPro_3 = "***p**t*.aye”

$AntiPro_4 = "**U***e.aye”

$AntiPro_5 = "*Y***r*.aye”

$AntiPro_6 = "*Y**S*v.aye”

$AntiPro_7 = "**L**n.exe”

$AntiPro_8 = "**v***g**t.exe”

$AntiPro_9 = "**a***c.*p*”

$AntiPro_10 = "**v**n.n*c”

$AntiPro_11 = "**C**e**.n*c”

$AntiPro_12 = "**s**.exe”

$AntiPro_13 = "**s**c.exe”

$AntiPro_14 = "**b**e*.exe”

$AntiPro_15 = "**C**t.*p*”

$AntiPro_16 = "**L**C**S”

$GamePro_1 = "*x**o*e.exe”

$GamePro_2 = "*C**P.exe”

$GamePro_3 = "**f.exe”

$GamePro_4 = "**p**S**y.exe”

$GamePro_5 = "**n.*in”

$GamePro_6 = "******n*.exe”

$GamePro_7 = "w**.exe”

$GamePro_8 = "****a**m.exe”

$GamePro_9 = "***o*s.exe”

$GamePro_10 = "**M.exe”

$GamePro_11 = "***c**y.exe”

$GamePro_12 = "***I*A***i**t.exe”

$GamePro_13 = "**b***m***.exe”

$URL_1 = "*a***m*.com”

$URL_2 = "*t.*a***m*.com”

$URL_3 = "p***g.com”

$URL_4 = *s.**a**c.com”

$URL_5 = "**t***b**.net”

$URL_6 = "*f.n***n.com”

$Decrypt = { 8B C6 33 D2 B9 58 00 00 00 BB 07 00 00 00 F7 F1 8B C6 8B CA 33 D2 F7 F3 8A 1C 3E 32 CA 32 CB 80 F1 94 88 0C 3E 46 3B F5 72 D6 }

condition:

(1 of ($String*)) or (1 of ($AntiPro*)) or (1 of ($GamePro*)) or (1 of ($URL*)) or $Decrypt

}

제 5 장 결  론

최근 악성코드는 더욱 고도화 및 다양화되고 있으며, 단순 정보 유출에서부터 정보 시스템 파괴 등 심각한 피해를 일으키고 있다. 또한, 공격자들은 악성코드 자동화 도구를 이용해 유사·변종 악성코드를 제작하기 때문에 악성코드 출현량은 빠르게 증가하고 있으며, 악성코드 분석을 방해하는 기술도 지능화됨에 따라 악성코드에 대한 대응이 점차 어려워지고 있는 실정이다.

이에 본 과제에서는 500여 종의 악성코드를 상세 분석하여 악성코드별 특징점을 추출하였고, 시그니처 기반으로 악성코드를 분류할 수 있는 도구에서 사용할 수 있도록 패턴화하였다.

본 연구의 결과물을 기반으로 악성코드 연관성을 분석하여 공격자를  추적하거나 급격히 증가하고 있는 유사·변종 악성코드를 빠르게 탐지할 것으로 기대된다.

참고 문헌

[1] 한국인터넷진흥원 인터넷침해대응센터, “`14년 인터넷 침해사고 대응계획”, 2014. 01.

[2] AhnLab, http://www.ahnlab.com/kr/site/securityinfo/secunews/secuNew

sView.do?menu_dist=3&seq=7500, 2006.01.31.

[3] 위키백과, http://ko.wikipedia.org

[4] 이승원, “리버싱 핵심원리”. 인사이트, p.4, 2014

[5] Hex-Rays, http://www.hex-rays.com

[6] MICHAEL HALE LIGH, “악성코드 분석가의 비법서”, 에이콘, p.376-8, 2012

[7] HNS, “YARA를 이용한 악성코드 시그니처 확인 방법”, 2013. 07.

악성코드 분석

인  쇄 : 2014 년  12 월

발  행 : 2014 년  12 월

발행인 :  백 기 승

발행처 :  한국인터넷진흥원(KISA, Korea Internet&Security Agency)

서울시 송파구 중대로 109 대동빌딩

Tel: (02) 405-4118

인쇄처 :  프라임카피

Tel: (041) 541-6769

<비매품>

1. 본 보고서는 미래창조과학부의 출연금으로 수행한 정보보호 인프라 확충 사업의 결과입니다.

2. 본 보고서의 내용을 발표할 때에는 반드시 한국인터넷진흥원 정보보호 인프라 확충 사업의 결과임을 밝혀야 합니다.

3. 본 보고서의 판권은 한국인터넷진흥원이 소유하고 있으며,

당 진흥원의 허가 없이 무단 전재 및 복사를 금합니다.