최종연구보고서 KISA-WP-2009-0024 DDoS 공격근원지분류방법개발 Developing A Method for Discovering DDoS Attack Origins 수탁기관 : 고려대학교산학협력단 2009. 06.
제출문 한국정보보호진흥원원장귀하 본보고서를 DDoS 공격근원지분류방법개발 의최종연구개발결과보고서로제출합니다. 2009 년 6 월 30 일 수탁기관 : 고려대학교산학협력단연구책임자 : 교수이희조 ( 고려대학교컴퓨터통신공학부 ) 참여연구원 : 연구원최현상 ( 고려대학교컴퓨터통신공학부 ) 연구원이제현 ( 고려대학교컴퓨터통신공학부 ) 연구원김인환 ( 고려대학교컴퓨터통신공학부 ) 연구원정구현 ( 고려대학교컴퓨터통신공학부 ) 연구원이주석 ( 고려대학교컴퓨터통신공학부 ) 연구원도희성 ( 고려대학교컴퓨터통신공학부 )
요약문 1. 제목 DDoS 공격근원지분류방법개발 2. 연구개발의목적및중요성 서비스거부공격, 즉 DoS(Denial of Service) 공격은정상적인사용자가서비스를이용하지못하도록방해하는공격기법이다. 이러한 DoS 공격을극대화시키기위해서수천, 수만대에이르는다수의컴퓨터를동원하여공격을감행하는분산서비스거부 (DDoS: Distributed Denial-of-service) 공격이근래에인터넷을위협하는이슈로자리매김하였다. DDoS 공격에대응하기위하여공격주체, 공격대상, 그리고그사이의네트워크를대상으로다양한기법들이연구개발되고있으나모두완벽한답이되지는못하고있다. 본연구는 DDoS 공격이발생하는근원지에서공격의사전준비작업혹은공격에이용되는봇이나악성코드등이발생시키는네트워크트래픽의분석을통해발견된악성코드및봇을제거하거나공격트래픽을중도에서차단함으로써 DDoS 공격에대해효율적으로대응하는방법을개발하는것을목적으로한다. 3. 연구개발의내용및범위 DDoS 공격을차단하기위하여공격근원지를분류하는데필요한기법들을개발하는것을그주내용으로한다. 공격근원지에서악성코드와 - 5 -
봇의정보를얻을수있는네트워크요소중악성코드의활동을관찰할수있고, 그범위와효율성이가장좋은것은 DNS 이다. DDoS 공격근원지를분류방법을개발하기위하여공격자 DNS 트래픽과정상 DNS 트래픽분류기법의연구는탐색하고자하는대상인공격자의공격수행시나리오의 DNS 트래픽및정상 DNS 트래픽대조군을가상으로생성, 실험군의 DNS 트래픽분석한다. 그결과를통해그특징을관찰, 관찰된특징을기준으로트래픽의종류를구별하는기법을연구하고이기법을바탕으로분류결과로부터 DDoS 공격근원지의 IP/ 도메인을추출하고이정보를필터링시스템에등록하여차단할수있는형태의정보로제공하는시스템구조및알고리즘을설계한다. 4. 연구결과 DDoS 공격근원지의악성행위들의 DNS 트래픽을분석하고이를정상트래픽과분류하였다. 비정상행위의탐지, 악성행위의탐지, 악성 IP, 도메인정보추출의기능을수행하며, 그목적에따라총 3개의분리된시스템과내부모듈의트래픽분류시스템을설계하고, 악성행위를탐지하고트래픽을분류하는알고리즘을개발하였다. 설계한시스템은입력된 DNS 트래픽을평가, 분석하여악성 IP, 도메인정보를결과물로서출력한다. 개발된기법들은실제인터넷환경에서수집한 DNS 트래픽을사용하여그유효성을확인하였으며구동환경변화에따라세부적조정을거쳐대규모 DNS 환경에서넓은범위에걸쳐악성코드와 DDoS 공격코드, 봇넷의활동, DNS에대한공격들을탐지해낼수있는시스템과분류, 탐지알고리즘을설계, 제안하였다. 5. 활용에대한건의 DDoS 공격의근원지분류방법은봇과같은공격트래픽의발생근원을제거하거나활동을제한할수방어방법이다. 그러나봇과같이근원지에도피해를입히는경우를제외하고는기법의적용으로인해직접적이득을보지않기때문에널리이용되지않고있었다. 또한곧바로공격여부를알수있는방어지에비해근원지는네트워크규모에서관 - 6 -
찰하지않는이상개개의컴퓨터에서는공격의발생을탐지할수있는정보가많지않다. 제안한 DDoS 공격근원지분류방법에서는이러한제한을 DNS를이용함으로써상당부분해결하였다. 본연구결과를활용하여 DDoS 공격의예방과대응이원활이이뤄지기위해서는설계한시스템과 DNS를포함한정보제공시스템과도출한정보를활용하는시스템이유기적으로활동하여야한다. 정보제공시스템으로는공격근원지의지리, 행정적정보를제공하는시스템이활용가능하며, 도출된정보를이용하는시스템으로 DNS 싱크홀이나방화벽등을통하여공격근원지분류시스템과연동할수있다. 6. 기대효과 DDoS 공격근원지분류방법개발을통하여대규모 DNS 환경에서넓은네트워크범위에걸쳐악성코드와 DDoS 공격코드, 봇넷의활동, DNS에대한공격들을탐지하고그정보를제공함으로써, 이를활용하여악성코드의확산과활동을제한하고, 이로부터잠재적정보유출위험과경제적손실을예방할수있다. - 7 -
SUMMARY 1. Title Developing A Method for Discovering DDoS Attack Origins 2. Purpose of the study DoS attack, the short of Denial of Service attack is an internet intrusion technique which harasses service availability of legitimate users. Moreover, the Distributed Denial-of-service attack which exploit thousands, or tens of thousands of multiple computers to amplify damage of attack is growing to the significant internet threat. To respond the DDoS attack, a lot of methods focusing attack source, target and intermediate network, have been proposed, but there have not been a clear solution. In this study, we purpose the prevention of malicious activity and early detection of DDoS attack by detecting and removing the activity of botnets, or other malicious codes. For the purpose, the proposed method monitors the network traffic, especially DNS traffic, which is originated from botnets or malicious codes. 3. Contents and scope The main contents of this study is to developing a method for discovering DDoS attack origins. In the attack origins, we can observe and collect useful information of botnet activities from some network component, and the most widely effective and efficient one is the - 8 -
Domain Name System. To develope a method for discovering DDoS attack origins, this study includes the works of analyzing malicious and legitimate DNS traffic which are generated by virtual situation. From the result of the analysis, we found out some features of malicious attack code which make a detecting mechanism being able to classify the legitimate and malicious client, domain, and DNS traffic. Using this classification method, the proposed method discovers the DDoS attack origins and the information will be offered to the filtering system which can eliminate the malicious activity of attack origins. 4. Results of the study This system analyze DNS traffic that is the source of DDoS attack and malicious behaviors, and separate from normal DNS traffic. The system has three subsystems (detecting abnormal behavior module, finding malicious behavior module and extracting information of malicious IP and DNS name module). It analyzes and evaluates input DNS traffic, gives results of malicious IPs and domains. We evaluate availability of the mechanism using real-life DNS traffic. It can adjust in a large scale network for detecting malicious codes, DDoS attack codes, botnet behaviors and DNS related attacks. 5. Expected effects and application As the result of developing a method for discovering DDoS attack origins, the developed method and system which operates it will have the functionality for monitoring and detecting the malicious activities of botnets and other malicious codes. The system makes cooperations with the other systems which limit activities and spreading of malicious codes by sharing monitoring information. Consequently, reduction of malicious codes and its activities means that it can prevent much of potential loss of information leakage and economic values. - 9 -
목 차 제 1 장연구의필요성 23 제 2 장 DDoS 공격관련동향분석 26 제 1 절 DDoS 공격사례및국내외동향 26 제 2 절 DDoS 공격, 방어기법의기술동향 28 1. DDoS 공격기술동향 28 2. DDoS 방어기술동향 30 제 3 장 DNS와악성행위연관성및탐지기법분석 33 제 1 절 DNS와악성행위의연관관계 33 1. DDoS 공격을수행하는악성코드의 DNS 이용 34 2. DDoS 공격도구로서 DNS 서버이용 35 제 2 절 DNS를이용한 DDoS 공격및공격근원지탐지기법 37 1. 적용범위 37 2. 효율성 38 3. 유용성 38 제 4 장 DDoS 공격근원지분류시스템설계 39 제 1 절설계방법및시스템개요 39 제 2 절 DDoS 공격근원지탐지시스템의상세설계 42-10 -
1. 모듈 1-비정상 DNS 트래픽분류모듈설계 46 2. 모듈 2-악성행위분류 / 탐지모듈설계 47 3. 모듈 3-악성 IP/Domain 추출모듈설계 48 제 3 절 DDoS 공격근원지지역분류시스템설계 50 제 4 절공격근원지의차단연동시스템설계 51 제 5 장시스템 1 : 모듈 1 의사코드및자료구조 52 제 1 절공통자료구조 54 1. 패킷셋 (Packet Set) 54 제 2 절프로세스 1 : Rule Checker 1 56 1. 구조체 57 2. 동작설명 59 제 3 절프로세스 2 : Rule Checker 2 60 1. 구조체 61 2. 동작설명 63 제 4 절프로세스 3 : Rule Checker 3 64 1. 구조체 65 2. 동작설명 66 제 5 절프로세스 4 : Rule Checker 4 67 1. 구조체 68 2. 동작설명 70 제 6 절프로세스 5 : Rule Checker 5 71 1. 구조체 72 2. 동작설명 73 제 7 절프로세스 6 : Rule Checker 6 74 1. 구조체 75 2. 동작설명 78 제 8 절프로세스 7 : Rule Checker 7 79 1. 구조체 80-11 -
2. 동작설명 82 제 9 절프로세스 8 : Rule Checker 8 83 1. 구조체 84 2. 동작설명 86 제 10 절프로세스 9 : Abnormal Traffic Multiplexer 87 1. 구조체 88 2. 동작설명 91 제 6 장시스템 1 : 모듈 2 의사코드및자료구조 92 제 1 절프로세스 10 : Similarity Estimate 1 92 1. 구조체 94 2. 동작설명 100 제 2 절프로세스 11 : Similarity Estimate 2 102 1. 구조체 103 2. 동작설명 110 제 3 절프로세스 12 : Similarity Estimate 3 112 1. 구조체 113 2. 동작설명 118 제 4 절프로세스 13 : Similarity Estimate 4 120 1. 구조체 121 2. 동작설명 125 제 7 장 DDoS 공격근원지탐지실험결과 127 제 1 절. 모듈 1 의비정상행위탐지결과 127 제 2 절. 시스템 1 의 DDoS 공격근원지탐지결과 128 제 8 장결론 133 참고문헌 134-12 -
Contents Chapter 1 Motivation 23 Chapter 2 Background and Related work 26 Section 1 Trend and example of DDoS attack 26 Section 2 Defense mechanism of DDoS attack 28 1. Trend of DDoS Attack Techniques 28 2. Trend of DDoS Defense Techniques 30 Chapter 3 Relation of DNS to malicious behavior and analysis of detection mechanism 33 Section 1 Relation of DNS and malicious behavior 33 1. Malicious behavior using DNS service 34 2. Usage of DNS server as a DDoS attack object 35 Section 2 Detecting DDoS attack and attack origins using DNS 37 1. Coverage 37 2. Efficiency 38 3. Practicality 38 Chapter 4 System design for Discovering DDoS Attack Origins 39-13 -
Section 1 Method and system design overview 39 Section 2 Detail architecture of DDoS Attack Origins Discovering system 42 1. Module 1-Design of Abnormal DNS traffic classification module 46 2. Module 2-Design of Malicious behavior identification module 47 3. Module 3-Design of Malicious IP address & Domain refinement module 48 Section 3 Design of Location classification system of DDoS Attack Origins 50 Section 4 Design of Cooperated quarantine system of DDoS Attack Origins 51 Chapter 5 System1: Pseudo code and data structure of module 1 52 Section 1 Common data structure 54 1. Packet Set 54 Section 2 Process 1 : Rule Checker 1 56 1. Structure 57 2. Algorithm explanation 59 Section 3 Process 2 : Rule Checker 2 60 1. Structure 61 2. Algorithm explanation 63 Section 4 Process 3 : Rule Checker 3 64 1. Structure 65 2. Algorithm explanation 66 Section 5 Process 4 : Rule Checker 4 67 1. Structure 68-14 -
2. Algorithm explanation 70 Section 6 Process 5 : Rule Checker 5 71 1. Structure 72 2. Algorithm explanation 73 Section 7 Process 6 : Rule Checker 6 74 1. Structure 75 2. Algorithm explanation 78 Section 8 Process 7 : Rule Checker 7 79 1. Structure 80 2. Algorithm explanation 82 Section 9 Process 8 : Rule Checker 8 83 1. Structure 84 2. Algorithm explanation 86 Section 10 Process 9 : Abnormal Traffic Multiplexer 87 1. Structure 88 2. Algorithm explanation 91 Chapter 6 System2: Pseudo code and data structure of module 2 92 Section 1 Process 10 : Similarity Estimate 1 92 1. Structure 94 2. Algorithm explanation 100 Section 2 Process 11 : Similarity Estimate 2 102 1. Structure 103 2. Algorithm explanation 110 Section 3 Process 12 : Similarity Estimate 3 112 1. Structure 113 2. Algorithm explanation 118 Section 4 Process 13 : Similarity Estimate 4 120-15 -
1. Structure 121 2. Algorithm explanation 125 Chapter 7 Experiment result of Discovering DDoS Attack Origins system 127 Section 1 Classification example of Module 1 127 Section 2 Detection result of DDoS Attack origins discovering system 128 Chapter 8 Conclusion 133 Reference 134-16 -
그림목차 ( 그림 3-1) 봇넷의동작방식 32 ( 그림 3-2) NS를이용한 Amplification 공격예 34 ( 그림 3-3) 봇넷과 NS를연동한 DDoS 공격예 34 ( 그림 4-1) 기법설계의계층구조도 38 ( 그림 4-2) DDoS 공격근원지분류시스템배치도 39 ( 그림 4-3) 전체시스템의주변시스템과의연동및정보흐름도 40 ( 그림 4-4) 비정상행위탐지를통한악성행위탐지과정 42 ( 그림 4-5) 시스템 1 구조도 43 ( 그림 4-6) 시스템 1 자료흐름도 43 ( 그림 4-7) 모듈 2 자료흐름도 45 ( 그림 4-8) 시스템 1의프로세스흐름도 47 ( 그림 4-9) 시스템 2의시스템1, 3와의 Use-case diagram 48 ( 그림 4-10) 시스템 3 구현을위한시스템배치도 49 ( 그림 7-1) 이상패턴탐지예 : 규칙적으로동일 DNS 요청을발생시키는악성코드 125-17 -
표목차 [ 표 3-1] 여러형태의봇넷과 DNS 사용특징 33 [ 표 4-1] DDoS 공격코드의비정상적 DNS 이용특징 41 [ 표 4-2] 봇 / 봇넷의비정상적 DNS 이용특징 41 [ 표 4-3] 악성코드의비정상적 DNS 이용특징 42 [ 표 4-4] DNS 캐쉬포이즈닝공격자의비정상적 DNS 이용특징 42 [ 표 4-5] 비정상 DNS 트래픽분류모듈의행위판단규칙목록 44 [ 표 4-6] 트래픽패턴유사도평가요소 46 [ 표 5-1] 시스템 1의프로세스의사코드, 상세설명색인 50 [ 표 5-2] 프로세스 1 ~ 8의입력데이터 DNS 패킷타입분류표 51 [ 표 5-3] 패킷셋 (Packet Set) 의구성변수 52 [ 표 5-4] 패킷셋 (Packet Set) 의구성함수 53 [ 표 5-5] 프로세스 1의의사코드 54 [ 표 5-6] 구조체 R1의구성변수 55 [ 표 5-7] 구조체 R1의구성함수 55 [ 표 5-8] 구조체 D, E의구성변수 56 [ 표 5-9] 구조체 D, E의구성함수 56 [ 표 5-10] 프로세스 1의동작설명 57 [ 표 5-11] 프로세스 2의의사코드 58 [ 표 5-12] 구조체 R2의구성변수 59 [ 표 5-13] 구조체 R2의구성함수 59 [ 표 5-14] 구조체 D, E의구성변수 60 [ 표 5-15] 구조체 D, E의구성함수 60 [ 표 5-16] 프로세스 2의동작설명 61 [ 표 5-17] 프로세스 3의의사코드 62 [ 표 5-18] 구조체 R3의구성변수 63 [ 표 5-19] 구조체 R3의구성함수 63 [ 표 5-20] 프로세스 3의동작설명 64-18 -
[ 표 5-21] 프로세스 4의의사코드 65 [ 표 5-22] 구조체 R4의구성변수 66 [ 표 5-23] 구조체 R4의구성함수 66 [ 표 5-24] 구조체 TR4의구성변수 67 [ 표 5-25] 프로세스 4의동작설명 68 [ 표 5-26] 프로세스 5의의사코드 69 [ 표 5-27] 구조체 R5의구성변수 70 [ 표 5-28] 구조체 R5의구성함수 70 [ 표 5-29] 프로세스 5의동작설명 71 [ 표 5-30] 프로세스 6의의사코드 72 [ 표 5-31] 구조체 R6의구성변수 73 [ 표 5-32] 구조체 R6의구성함수 73 [ 표 5-33] 구조체 D의구성변수 74 [ 표 5-34] 구조체 D의구성함수 74 [ 표 5-35] 구조체 E의구성변수 75 [ 표 5-36] 구조체 E의구성함수 75 [ 표 5-37] 프로세스 6의동작설명 76 [ 표 5-38] 프로세스 7의의사코드 77 [ 표 5-39] 구조체 R7의구성변수 78 [ 표 5-40] 구조체 R7의구성함수 78 [ 표 5-41] 구조체 R7의구성변수 79 [ 표 5-42] 구조체 D의구성함수 79 [ 표 5-43] 프로세스 7의동작설명 80 [ 표 5-44] 프로세스 8의의사코드 81 [ 표 5-45] 구조체 R8의구성변수 82 [ 표 5-46] 구조체 R8의구성함수 82 [ 표 5-47] 구조체 D의구성변수 83 [ 표 5-48] 구조체 D의구성함수 83 [ 표 5-49] 프로세스 8의동작설명 84-19 -
[ 표 5-50] 프로세스 9의의사코드 85 [ 표 5-51] 구조체 Rx 의구성변수 86 [ 표 5-52] 구조체 Rx의구성함수 86 [ 표 5-53] 구조체 T 의구성변수 87 [ 표 5-54] 구조체 T의구성함수 87 [ 표 5-55] 구조체 P 의구성변수 88 [ 표 5-56] 구조체 P의구성함수 88 [ 표 5-57] 구조체 A 의구성변수 88 [ 표 5-58] 구조체 A의구성함수 89 [ 표 5-59] 프로세스 9의동작설명 89 [ 표 6-1] 프로세스 10의의사코드 _1 90 [ 표 6-2] 프로세스 10의의사코드 _2 91 [ 표 6-3] 구조체 P의구성변수 92 [ 표 6-4] 구조체 P의구성함수 92 [ 표 6-5] 구조체 S1의구성변수 93 [ 표 6-6] 구조체 S1의구성함수 93 [ 표 6-7] 구조체 D c 의구성변수 93 [ 표 6-8] 구조체 D c 의구성함수 94 [ 표 6-9] 구조체 D i 의구성변수 95 [ 표 6-10] 구조체 D i 의구성함수 95 [ 표 6-11] 구조체 lt j 의구성변수 96 [ 표 6-12] 구조체 lt j 의구성함수 97 [ 표 6-13] 프로세스 10의동작설명 _1 98 [ 표 6-14] 프로세스 10의동작설명 _2 99 [ 표 6-15] 프로세스 11의의사코드 _1 100 [ 표 6-16] 프로세스 11의의사코드 _2 101 [ 표 6-17] 구조체 P의구성변수 102 [ 표 6-18] 구조체 P의구성함수 102 [ 표 6-19] 구조체 S2의구성변수 103-20 -
[ 표 6-20] 구조체 S2의구성함수 103 [ 표 6-21] 구조체 D c 의구성변수 103 [ 표 6-22] 구조체 D c 의구성함수 104 [ 표 6-23] 구조체 D i 의구성변수 105 [ 표 6-24] 구조체 D i 의구성함수 105 [ 표 6-25] 구조체 lc k 의구성변수 106 [ 표 6-26] 구조체 lc k 의구성변수 107 [ 표 6-27] 프로세스 11의동작설명 _1 108 [ 표 6-28] 프로세스 11의동작설명 _2 109 [ 표 6-29] 프로세스 12의의사코드 110 [ 표 6-30] 구조체 P의구성변수 111 [ 표 6-31] 구조체 P의구성함수 111 [ 표 6-32] 구조체 S3의구성변수 112 [ 표 6-33] 구조체 S3의구성함수 112 [ 표 6-34] 구조체 D c 의구성변수 113 [ 표 6-35] 구조체 D c 의구성함수 113 [ 표 6-36] 구조체 D i 의구성변수 114 [ 표 6-37] 구조체 D i 의구성함수 115 [ 표 6-38] 프로세스 12의동작설명 _1 116 [ 표 6-39] 프로세스 12의동작설명 _2 117 [ 표 6-40] 프로세스 13의의사코드 _1 118 [ 표 6-41] 프로세스 13의의사코드 _2 119 [ 표 6-42] 구조체 P의구성변수 119 [ 표 6-43] 구조체 P의구성함수 120 [ 표 6-44] 구조체 S4의구성변수 121 [ 표 6-45] 구조체 S4의구성함수 121 [ 표 6-46] 구조체 D의구성변수 122 [ 표 6-47] 구조체 D의구성함수 122 [ 표 6-48] 프로세스 13의동작설명 _1 123-21 -
[ 표 6-49] 프로세스 13의동작설명 _2 124 [ 표 7-1] 시스템 1 실험대상자료 126 [ 표 7-2] 시스템 1의 1차실험결과 _1 127 [ 표 7-3] 시스템 1의 1차실험결과 _2 128 [ 표 7-4] 시스템 1의 2차실험결과 129 [ 표 7-5] 시스템 1의 3차실험결과 130-22 -
제 1 장연구의필요성 본장에서는분산서비스거부 (DDoS) 공격의개요및보안취약성에따른공격근원지방어기법의필요성에대해서기술한다. 근원지방어기법이란 DDoS 공격에대응하는위치인공격근원지와공격대상지중공격이발생하는근원지에서사전공격활동을제한하거나, 사후에빠른대처를하는것을목표로하는기술이다. 서비스거부공격, 즉 DoS(Denial of Service) 공격은정상적인사용자가서비스를이용하지못하도록방해하는공격기법이다. 예를들어서버나네트워크에조작된패킷을반복적으로보내어정상트래픽이처리되는것을방해하거나두기기의통신연결을방해하는등의시도등이 DoS 공격이다. 이러한 DoS 공격을극대화시키기위해서수천, 수만대에이르는다수의컴퓨터를동원하여공격을감행하는 DDoS(Distributed Denial-of-service) 공격이근래에인터넷을위협하는이슈로자리매김하였다. DDoS 공격은 1990년대후반에나타났으나, 주목을받게된것은 2000년 2월 Yahoo, Buy.com, e-bay, Amazon, E-Trade, CNN등유명인터넷사이트가공격을받아몇시간동안접속할수없었던사건이후이다. DoS 공격이가능한이유는현재의인터넷은정보를주고받는두개체 ( 서버와클라이언트 ) 사이에정보를주고받음에있어서트래픽을감시하거나조정하는것보다는네트워크에서정보의전달이원활하고빨리주고받을수있도록서비스를제공하는것에초점을맞춰설계했기때문이라볼수있다. 따라서정보를보내는송신자측에서정보를받는수신자측의처리능력이상의과다한정보를전달할경우, 수신자가동시에수용할수있는정보량또는동시에처리할수있는정보량을초과하 - 23 -
게되고, 초과분은버려지거나처리가지연되게된다. 이러한상황을악 의적인목적으로발생시키는공격이바로서비스중단 (DoS) 공격이다. DDoS 공격에대응하기위하여공격주체, 공격대상, 그리고그사이의네트워크를대상으로다양한기법들이연구개발되고있으나모두완벽한답이되지는못하고있다. 공격주체가되는것은공격자에의해제어되는컴퓨터들이다. 인터넷상의컴퓨터들이공격에이용이되어공격주체가되는것을방지하기위하여충분한보안체계를갖추는것이근본적대안이라고할수있겠지만, 그규모와비용문제뿐아니라수많은현실적제약으로인하여불가능하다. 공격대상의측면에적용되는대응기법은 DDoS 공격트래픽을감소시켜주지만, 공격트래픽만을완벽히차단하는기법이존재하지않기때문에가용치이상의자원소모를유발시키는규모의공격에항상취약한상태에놓여있다. DDoS 공격에효과적으로대응하기위해서는네트워크침임을탐지하는시스템이나방어기술을적용할필요성이있다. 실제로최근 DDoS 공격으로피해를입은업체들은 IPS, 방화벽등기본적인보안솔루션을갖추지않은경우가대부분이었다. DDoS 공격에대한대응은시점에따라서는사전예방과사후대응기법이있으며, 대응위치에따라공격대상지방어와공격근원지방어의두가지접근방법이존재한다. 공격대상지방어기법은 DDoS 공격의목표가되는공격대상지에서방어하는방법이다. DDoS 공격으로판단되는트래픽을차단하거나일부제한하는등의방식으로대상을보호한다. 자원고갈이나웜의감염에이용되는소프트웨어의취약점이나 OS 취약점패치, 자원관리정책적용등의사전예방기법과방화벽, 싱크홀등의사후대응기법이있다. 공격근원지방어기법은 DDoS 공격을수행하는공격근원지에서공격발생을방어하는방법이다. DDoS 공격이발생하기전에공격을수행하는봇이나악성코드가감염되는것을막거나, 발견하여제거하는사전 - 24 -
예방기법과공격이발생한후외부로유출되는 DDoS 공격트래픽을 감지하여차단하는사후대응기법이있다. 공격대상지와공격근원지모두 DDoS 공격의방어주체로써활용될수있고, 각기다음과같은장단점을가진다. 공격대상지방어기법은대상을공격으로부터직접적으로보호하기때문에기법의효과가곧대상자의보호로이어지며, 따라서그관리나설치의동기와보상이직접적이다. 그러나사전대응기법들은 IP 스푸핑등의기술을사용하여공격자에의해회피되거나반사공격, 분산공격등으로강도가강화된공격에의해무시되기쉽고, 사후대응기법은피해를감소시킬뿐완전히방어하지는못하는한계점을지닌다. 공격근원지방어기법은봇과같이근원지에도피해를입히는경우를제외하고는기법의적용으로인해직접적이득을보지않기때문에널리이용되지않고있다. 또한곧바로공격여부를알수있는방어지에비해근원지는네트워크규모에서관찰하지않는이상개개의컴퓨터에서는공격의발생을탐지할수있는정보가많지않다. 공격근원지방어기법의장점은공격대상지가공격이전의징후를거의알수없는것에반해근원지에서는공격코드들이활동하는징후를보이며, 공격의발생지를상대적으로정확히탐지해낼수있다는것이다. 공격대상지가정상트래픽과공격트래픽을분류해야하는어려움이있는것에비해서공격근원지에서는공격코드와같은공격트래픽의발생근원을제거할수있는입장에있어근본적대책이가능한방어위치라고볼수있다. - 25 -
제 2 장 DDoS 공격관련동향분석 본장에서는 DDoS 공격이어떻게변화해왔으며어떠한공격으로어떠한피해들을발생시키고있는지조사하고, 앞으로의방향에대해분석한다. DDoS 공격과방어의기술동향을분석함으로써그한계점과보완기술에대해서파악한다. 제 1 절 DDoS 공격사례및국내외동향 DDoS 공격이공격의대상이되는기업 / 기관에미치는일차적피해는경제적손실이다. DDoS 공격으로인하여공격대상이완전히그기능을상실하지않더라도서비스가일시적으로지연되거나불안정해지는현상이발생한다. 서비스의중단및지연은그종류에따라매출감소, 사용자피해의배상등의직접적손실과서비스불만에의한고객감소, 서비스신용도하락, 기업이미지실추, 주가하락등의간접적손실이발생할수있다. 시장조사기관인포레스트, IDC 등에서집계한통계수치에따르면, 시스코사가 24시간동안서비스마비상황에이르게되면 3천만달러 ( 약 313억원 ) 의금전적인손실이직접적으로발생한다고추정하였다. 또다른세계적인시장조사기관인양키그룹의집계에의하면 2000년 2월에발생했던인터넷사이트들에대한대규모의 DDoS 공격에의한직접적인피해액수는 12억달러 ( 약 1조 2천5백억원 ) 에이른다고발표했다. 또한, 2001년 1월에마이크로소프트사의인터넷사이트가수일동안 DDoS 공격을받았을때발생했던손실규모는 5억달러 ( 약 5천2백억원 ) 로집계되었다. - 26 -
과거에는자기과시나영웅심리에의해특정대형웹사이트를대상으로시도되었던 DDoS 공격이최근에는중소형사이트를포함, 금전을갈취하는협박형 (ransom) 공격으로바뀌는양상을보이고있다. 지난 2007 년국가 민간부문의사이버침해위협과관련한 10대동향이슈중 DDoS 공격이첫번째이슈가될정도로중대한위협요소로평가되었다. 2007년들어중국인으로추정되는해커가국내특정웹사이트에대해메신저나이메일, 전화를통하여금품을요구하고, 이에응하지않을경우 DDoS공격을가하는등협박형 DDoS 공격이크게증가하였다. 공격대상역시법적보호를받기어려운불법사이트에서부터서비스중단이매출감소로이어지는온라인상거래사이트, 온라인예약예매사이트등으로다양화되었고공격트래픽의규모도수 ~ 수십 Gbps에달하면서국내인터넷에커다란위협으로대두되고있다. DDoS 공격은경제적목적이외의다른형태로도존재한다. 2007년 6 월 Czech Business Weekly 지에실린한기사에따르면에스토니아가 1991년소련에서독립한후 2007년 4월에수도에서있던 붉은군대병사 동상을끌어내렸고이로인해에스토니아에있던소수계층의러시아사람들이대규모폭동을일으켰다. 그후 5월에에스토니아의정부, 정당, 신문사, 은행, 기업들의웹사이트가 2주간서비스중단되는사태가발생했고이때에스토니아의웹사이트들을공격한해커들이사용한기법이 DDoS 공격인것으로알려졌다. 에스토니아에서는공격패킷중하나가러시아의푸틴대통령의측근의 IP 주소를가지고있었다고주장했지만러시아정부는부인하였고러시아의개입에대한증거를찾을수는없었다. 이와같은사례는 DDoS 공격이협박성금품갈취공격으로악용되는것외에도국가간의혹은다수의집단간의정치적목적으로사용될수도있음을보여준다. - 27 -
제 2 절 DDoS 공격, 방어기법의기술동향 1. DDoS 공격기술동향 DDoS 공격은몇단계의과정을거쳐서수행된다. 첫번째단계로공격자는우선공격을수행할공격코드를다수의컴퓨터에감염시키기위해주변컴퓨터들의보안취약점을탐색한다. 그다음, 공격코드들을발견한취약한컴퓨터들에감염시키고, 마지막으로원하는시점에공격코드들에공격명령을내려특정대상을공격하게한다. 이 3단계의과정중 1, 2단계는일반적으로자동화된소프트웨어에의해이뤄진다. 예를들어공격자가취약점을가진컴퓨터들을감염시키는코드에인접한컴퓨터중동일한취약점을가진컴퓨터를탐색하여감염시키는또다른코드를삽입해두었다면, 감염된컴퓨터는감염후 2차적으로다른컴퓨터들을감염시키기위한시도를하게된다. 그리고감염된컴퓨터들은다시이과정을반복한다. 컴퓨터에공격용도의코드를감염시키는다른기법은정상적소프트웨어로가장한공격소프트웨어를배포하는것이다. 실행파일을조작하여공격코드를사용자모르게설치하게하거나, 이메일에첨부하여이를열람한사용자의컴퓨터에공격코드가설치되게하는방법등이사용된다. 이와같은방법으로공격코드에감염된컴퓨터들은공격자의명령에의해공격패킷을보내는데사용된다. 공격자들은이감염된컴퓨터들이방어기법에의해탐지되고통제되는것을방지하기위하여패킷의송신 IP주소를조작하는데, 이것을 IP 스푸핑 (Spoofing) 이라고한다. DDoS 공격은여러가지형태로분류가가능하며, 다음 3 가지방법이가 장일반적으로사용되고있다. - 28 -
가. 공격자동화정도 공격의자동화정도따라서분류가가능하다. 위에언급한바와같이 DDoS는그준비단계부터공격까지총 3단계의단계를가지는데, 그중몇단계를자동화시켰느냐에따라서 완전자동화공격, 자동확산, 수동공격, 수동확산, 수동공격 의 3가지로나누어볼수있다. 완전자동화공격 은탐색, 감염, 공격이공격자의명령없이모두자동으로이뤄지는공격으로, 웜을예로들수있다. 자동확산, 수동공격 은자동으로탐색, 감염작업을수행하고, 감염된컴퓨터에숨어서공격자의명령을기다리다가명령을내리면공격을시작하는형태이다. 예로는웜을이용해확산되는봇을들수있다. 마지막으로 수동확산, 수동공격 방식은봇과같은 DDoS 공격코드를공격자가직접탐색및감염작업을수행하거나, 사용자가스스로악성코드를설치하기를기다렸다가공격명령을내려공격하는방식이다. 나. 공격대상의서비스를중단시키는방법 공격대상의서비스를중단시키는방법에따라구분할수있다. 공격대상이가진어느자원을소모시키느냐에따라, 네트워크마비, 서비스기아상태유발, 공간포화상태유발 로나누어볼수있다. 네트워크마비는네트워크하드웨어의성능을넘어서는과도한트래픽으로네트워크송수신능력을상실시키는방법이며, 서비스기아상태유발은사용자에게동시에제공할수있는자원이한정적인서비스에과도한요청을하여정상서비스가무한히지연되게하는방법이다. 세번째공간포화상태유발은공격대상이가진메모리혹은저장공간을과도하게점유함으로써그기능을상실하게하는방법이다. 네트워크마비 공격은서버의네트워크인터페이스와회선의속도 한계, 라우터또는허브의처리능력한계치이상의트래픽을발생시켜 - 29 -
공격한다. 서비스기아상태유발 은온라인게임서비스와같이동시사용자혹은서비스양에제한이있거나, 컴퓨팅부하가많은서비스를대상으로공격한다. 마지막 공간포화상태유발 은메일서버, FTP 서버와같이저장공간부족이곧바로서비스중단으로이어지는서비스를대상으로수행된다. 다. IP 스푸핑방식 IP 스푸핑방식에따른분류가가능하다. IP 스푸핑방식에따라 공격지은폐, 분산공격, 그리고 반사공격 으로나눠진다. 공격지은폐 는공격을수행하는컴퓨터의 IP 주소를노출시키지않기위하여 IP 주소를조작하는것이다. 분산공격 은한대의컴퓨터가마치여러대의컴퓨터인것처럼송신자 IP 주소를조작하여적은수의컴퓨터로다수컴퓨터의효과를얻는것이다. 반사공격은공격컴퓨터가공격대상컴퓨터의 IP로송신 IP를조작한요청을발생시켜그응답이공격대상컴퓨터에돌아가게하는방법이다. 후자일수록더고도화된방법이며, 앞의방법의효과를포함한다. 브로드캐스팅을이용한반사공격은자신의위치를숨김과동시에분산공격을일으킨다. 2. DDoS 방어기술동향 DoS 공격에효과적으로대응하기위해서는네트워크침임을탐지하는시스템이나방어기술을적용할필요성이있다. 실제로최근 DDoS 공격으로피해를입은업체들은 IPS, 방화벽등기본적인보안솔루션을갖추지않은경우가대부분이었다. DDoS 공격에대한대응은시점에따라서는사전예방과사후대응기법이있으며, 대응위치에따라공격대상지방어와공격근원지방어의두가지접근방법이존재한다. - 30 -
가. 공격대상지방어기법 DDoS 공격의목표가되는공격대상지에서방어하는방법. DDoS 공격으로판단되는트래픽을차단하거나일부제한하는등의방식으로대상을보호한다. 자원고갈이나웜의감염에이용되는소프트웨어의취약점이나 OS 취약점패치, 자원관리정책적용등의사전예방기법과방화벽, 싱크홀등의사후대응기법이있다. 공격대상지방어기법은대상을공격으로부터직접적으로보호하기때문에기법의효과가곧대상자의보호로이어지며, 따라서그관리나설치의동기와보상이직접적이다. 그러나사전대응기법들은 IP 스푸핑등의기술을사용하여공격자에의해회피되거나반사공격, 분산공격등으로강도가강화된공격에의해무시되기쉽고, 사후대응기법은피해를감소시킬뿐완전히방어하지는못하는한계점을지닌다. 나. 공격근원지방어기법 DDoS 공격을수행하는공격근원지에서공격발생을방어하는방법. DDoS 공격이발생하기전에공격을수행하는봇이나악성코드가감염되는것을막거나, 발견하여제거하는사전예방기법과공격이발생한후외부로유출되는 DDoS 공격트래픽을감지하여차단하는사후대응기법이있다. 공격근원지방어기법은봇과같이근원지에도피해를입히는경우를제외하고는기법의적용으로인해직접적이득을보지않기때문에널리이용되지않는다. 또한곧바로공격여부를알수있는방어지에비해근원지는네트워크규모에서관찰하지않는이상개개의컴퓨터에서는공격의발생을탐지할수있는정보가많지않다. 공격근원지방어기법의장점은공격대상지가공격이전의징후를거의알수없는것에반 - 31 -
해근원지에서는공격코드들이활동하는징후를보이며, 공격의발생지를상대적으로정확히탐지해낼수있다. 공격대상지가정상트래픽과공격트래픽을분류해야하는어려움이있는것에비해서공격근원지에서는공격코드와같은공격트래픽의발생근원을제거할수있는입장에있어근본적대책이가능한방어위치라고볼수있다. - 32 -
제 3 장 DNS 와악성행위연관성및탐지기법 분석 2장에서분석한것과같이 DDoS 공격은공격대상지에서대응하기에어려움이있다. 이에반해 DDoS 공격이발생하는근원지에서는공격의사전준비작업혹은공격에이용되는봇이나악성코드등이발생시키는네트워크트래픽의분석을통해대상지보다상대적으로더많은정보를획득하고, 발견된악성코드및봇의제거하거나공격트래픽을중도에서차단함으로써 DDoS 공격에대해효율적으로대응할수있다. 공격근원지에서악성코드와봇의정보를얻을수있는네트워크요소중악성코드의활동을관찰할수있고, 그범위와효율성이가장좋은것은 DNS 이다. 본장에서는 DNS와 DDoS 공격과의연관관계와 DNS를이용한 DDoS 공격근원지탐지의장점에대해서설명하였다. 제 1 절 DNS 와악성행위의연관관계 Domain Name System은현대인터넷서비스의한근간을이루고있는 Domain-to-IP 서비스를제공함과더불어, 서비스를제공하는네트워크내의서버및사용자 PC의네트워크활동을개괄적으로살펴볼수있는위치에있는요소이기도하다. DNS가 DDoS 공격에연관되는경우는크게 3가지로볼수있다. 첫번째는대다수의 DDoS 공격의원인인악성코드가공격준비단계나감염확산단계에서 DNS 서비스를이용한다는것이다. 두번째는 DNS 서비스와그네트워크인프라가 DDoS 공격의직접적공격의도구로서악용되는형태의공격이존재한다. 세번째로는 DNS 자체가 DDoS의공격의대상이된다. DDoS 공격의근원지 - 33 -
를분류하는접근방법에서볼때, 세번째의연관성은첫번째경우의악성코드를탐지하고대응함으로써포괄적으로보호될수있는사항으로둘수있다. 이와같은 DDoS 공격과 DNS의관계는 DNS 서비스의이용양상으로부터 DDoS 공격의근원지를찾아내는중요한근거가사용될수있다. 아래는 DNS와 DDoS 공격의두가지연관관계에대해구체적으로설명하였다. 1. DDoS 공격을수행하는악성코드의 DNS 이용 DDoS 공격을수행하는봇넷의동작 / 운영과정에서 DNS 서비스가이용되고있으며, 이는 ( 그림 3-1) 과같은방식으로 [ 표3-1] 에서그구체적인내용을살펴볼수있다. 봇은사용자컴퓨터에감염되어활동하는악성코드이다. 다수의봇은봇넷이라는네트워크를이루어공격자의명령에의해 DDoS 뿐아니라다양한형태의공격을수행한다. DDoS 공격의근원지의대다수는이봇에감염된 PC 이다. ( 그림 3-1) 봇넷의동작방식 봇넷은크게전파 (Propagation), 통신 (Communication) 그리고공격 (Attack) 의 3 가지의단계를거쳐동작한다. 전파단계에선다양한방법을 - 34 -
통해 PC의취약성을이용해악성코드를설치한다. 감염된 PC는실제봇코드를인터넷을통해다운로드하고자신이감염된사실을봇마스터에게알리기위해명령및제어채널에접속한다. 이후채널을통해봇마스터로부터명령을전달받고공격을수행하게된다. 이렇게채널에접속하여봇마스터로부터의명령을받아악성행위를수행하는감염 PC 의네트워크가봇넷이다. [ 표 3-1] 여러형태의봇넷과 DNS 사용특징 2. DDoS 공격도구로서 DNS 서버이용 DNS의 Name Server(NS) 는그컴퓨팅자원과네트워크대역등이공격도구로서사용되기도한다. 이경우 DDoS 공격은분산된여러대의공격지로부터 NS를거쳐공격대상지에도달하고, NS는패킷의크기를증가시켜 DDoS 공격의위력을강화시키는역할과더불어피해자가공격근원지를찾기힘들게하는효과까지부여한다. 이러한공격형태를 Amplification 공격이라한다. 공격근원지로부터피해자에게직접적공격을하는 DDoS 공격에서다량의 SYN 패킷이나서비스요청이이용되었던것과다르게 NS를거치는 DDoS 공격은 Resolution 패킷을이용한다. - 35 -
( 그림 3-2) NS 를이용한 Amplification 공격예 ( 그림 3-2) 와같이공격자가 NS에스푸핑된 Query를보내고, NS가 Query에비하여수배크기가큰 Reply 패킷을공격대상에게보냄으로써 DoS 공격이이뤄진다. 이것이다수의공격근원지에의해수행되게되면 ( 그림3-3) 과같이강화된 DDoS(Amplified DDoS) 공격이된다. ( 그림 3-3) 봇넷과 NS 를연동한 DDoS 공격예 이 DDoS 공격형태에서 DNS 는공격근원지로부터 Query 를받을뿐 - 36 -
아니라실제적으로공격대상에트래픽을전송하는직접적공격자로서의위치에있게된다. 이위치에서 NS는봇넷활동의탐지뿐아니라조기발견여부에따라공격차단에직접관여할수있다. 이뿐아니라 NS의 Cache 정보를조작 (DNS Cache Poisoning) 하여봇넷을이용하지않고도정상적인사용자들의요청을공격대상으로우회시킴으로써피해자가예상하지못한많은트래픽에의해 DoS 공격을받는공격또한가능하다. 이공격방식은공격대상의서버가수용할수있는네트워크트래픽과대형포탈등의다수사용자가이용하는서비스의네트워크트래픽의규모차이를이용한다. 제 2 절 DNS 를이용한 DDoS 공격및공격근원지 탐지기법 1. 적용범위 넓은범위의네트워크를대상으로보안기법을적용하는데에있어물리적으로분산되어있고그수가적지않은라우터혹은소규모지역 ISP 와비교하여 DNS는방어기법의설치가용이할뿐만아니라넓은범위에서모여드는정보를집중된한곳에서관찰하고관리할수있다는장점을가진다. DNS는서비스권역내에서가장중앙집중적인구조를가지고있다. 많은 ISP들이그비용및관리상의어려움을이유로자체적으로 NS를구축하기보다기존의 DNS 운용자에의존하고있으며대형 ISP 및기관에서운용하는한개의 DNS가서비스를제공하는네트워크의크기는수개의 B 클래스네트워크에달한다. 한번설치된기법에대하여 DNS 서비스를제공하는네트워크의범위만큼그관리범위에포함되어넓은지역의사용자및기관들이그혜택을받을수있다. - 37 -
2. 효율성 넓은지역의네트워크를대상으로적용되는네트워크공격방어기법들은관찰하고분석해야하는트래픽의양이많을뿐아니라그구성이다양하고복잡하다. 또한분석과정에서발생하는서비스지연은정상적사용자에게불편을안겨주어서비스의평가를떨어뜨리는원인이되기도한다. DNS는이런제약사항들에있어유리한조건을가지고있다. 우선 DNS 트래픽은통일된 1개의 Resolution 프로토콜을사용하며, 일반적상황에서패킷의크기가 50 Byte ~ 400 Byte 수준으로매우작다. 이는패킷의관찰및분석기법을단순화시킬수있어소모되는처리비용및지연시간에서유리하게작용한다. 또한프로토콜구성이단순하여 NS의운영체제, DNS 데몬등의구성요소나서비스네트워크의크기및구성이변화하더라도방어기법의큰수정없이범용될수있다. 3. 유용성 DNS는앞서 DNS와 DDoS/ 봇 / 악성코드의연관관계 절에서설명한것과같이공격이시작되기이전과공격상황에서악성코드, 봇, 악성도메인, 명령 / 제어서버로부터서비스요청을받는다. 따라서 DNS는유입되는트래픽속에서이런악성코드와악성도메인의트래픽을찾을수있으며, 그내용과특성을분석하여공격징후나공격행위를탐지하고그종류를분류할수있는위치에있다. 또한 DNS로들어오는패킷들은공격대상지에서받는공격패킷처럼일방적으로보내지는것이아니라답변을필요로하는서비스요청이기때문에그송신지주소와내용을조작하지못한다. 공격자가이점을고려하여탐지를회피하는의미없는요청이나패킷을섞어보내는시도가최신의봇들에서발견되었다는사례가있으나, 다수패킷집단을분석함으로써유효한 IP 주소나도메인을추출해낼수있다. - 38 -
제 4 장 DDoS 공격근원지분류시스템설계 본장에서는 DDoS 공격근원지분류방법개발의결과물인시스템과알고리즘의세부설계에대해기술한다. 전체시스템은총 3개의독립된세부시스템으로분리설계되었으며그중가장핵심적인공격근원지탐지시스템 ( 시스템 1) 의구조와내부알고리즘을구체적으로기술한다. 시스템 2와 3는시스템 1과연동되어전체시스템이유용히동작하기위해필요한시스템으로그개략적인구조와요구사항에대한분석을수행한다. 제 1 절설계방법및시스템개요 DDoS 공격근원지탐지시스템분류기법은가장추상화된수준의시스템배치에서시스템내부에서각기독립된기능을수행하는 3개의시스템, 각시스템내부의모듈, 모듈내부의데이터흐름과알고리즘의수준으로점차적세부설계를하는방식을사용하였다. - 39 -
( 그림 4-1) 기법설계의계층구조도 ( 그림 4-1) 의계층구조를참조하여설명하면, 첫번째로최상위계층에서는기법이설치되고운용되는환경과위치를표현하고기법이 DNS 서버와같은주변의네트워크요소들에서어떤정보를입력받아출력하는지나타낸다. 두번째로시스템계층에서는기법내에서동작하는서로다른기능의세개의시스템을설명하고각기능들이어떠한정보를입출력하는지를나타낸다. 마지막으로모듈계층에서는정보가알고리즘에의해처리되고저장되는과정을자료의흐름에따라구체적으로표현하고있다. - 40 -
( 그림 4-2) DDoS 공격근원지분류시스템배치도 최상위계층에해당하는기법의배치도는 ( 그림4 2) 와같으며각시스템과모듈에대한상세설계는시스템설명단계에서다룬다. DDoS 공격근원지분류시스템은 DNS 서버에들어가거나서버로부터나오는 DNS 트래픽을미러링하여입력으로받아처리하는구조를가지고있다. 분류시스템은일반적데스크탑환경에서소프트웨어기반으로동작하며, 모니터, 키보드, 마우스등의일반적입출력장치이외의부가장치를필요로하지않는다. 다만시스템내부와외부의네트워크인터페이스의차이가존재할경우에는이를연결하기위한하드웨어가필요하다. 파일시스템은운영체제의파일시스템또는외부의데이터베이스를사용하는환경을고려하여설계되엇으며내부자료구조역시데이터베이스의사용을고려하여개발되었다. ( 그림 4-3 은 DDoS 공격근원지분류시스템을중심으로한정보의입 출력및주변시스템과의연동관계를표현한것이다. 시스템의핵심기 - 41 -
능인공격근원지의탐지기능은 3단계에걸쳐비정상트래픽의분류, 악성행위의탐지, 주변시스템과의연동으로수행되며, DNS 서버를통해봇에감염된클라이언트와명령 / 제어서버 (Command & Control Server) 의정보를획득한다. ( 그림 4-3) 전체시스템의주변시스템과의연동및정보흐름도 제 2 절 DDoS 공격근원지탐지시스템의상세설계 DDoS 공격근원지를탐지하기위해서는공격을수행하는봇과같은악성코드에감염된클라이언트와이를통제하는명령제어서버를찾는것이주된과제라고할수있다. DNS 트래픽으로부터봇넷또는악성코드, 그외 DDoS 공격이이용되는캐쉬포이즈닝등의공격주체를찾아내기위해서는우선이러한악성행위의존재를탐지하여야한다. 많은수의봇이나악성코드가악성행위의과정중에 DNS 서비스를이용하고있 - 42 -
으며, DNS 트래픽으로부터이러한정황을탐지하고그출처를추적하는 것이 DNS 트래픽분석을통한 DDoS 공격근원지탐지의방법론이라 할수있다. 제안한시스템은악성행위의주체를찾기위해서우선악성행위들에서나타나는비정상행위가무엇인지분석하고, 상습적이고규칙적인비정상행위들로부터악성행위와이를수행하는근원지를탐지해가는방식을사용하였다. 시스템의주탐지대상이되는 DDoS 공격코드, 봇넷, 악성코드, DNS 캐쉬포이즈닝공격도구등의 DNS 이용행위중정상사용자와구분되는비정상적특징을보이는행위들을분석한결과 [ 표 4-1], [ 표 4-2], [ 표 4-3], [ 표 4-4] 와같은분석결과를얻을수있었다. 이를이용하여비정상 DNS 행위를악성행위의탐지에사용하는과정을간단히표현하면 ( 그림 4-4) 와같다. [ 표 4-1] DDoS 공격코드의비정상적 DNS 이용특징 악성행위주체비정상적 DNS 이용특징표식어공격 / 감염대상검색 B11 DDoS 공격코드대형 RR 요청 B12 (A1) 공격코드그룹의 DNS 서비스동시이용 B13 [ 표 4-2] 봇 / 봇넷의비정상적 DNS 이용특징 악성행위주체 비정상적 DNS 이용특징 표식어 주기적 C&C Ping/Pong B21 배포도메인단체접속 B22 봇 / 봇넷 C&C 채널이주 B23 (A2) C&C 탐지회피를위한다중도메인 /IP 사용 B24 DNS 이용을최소화하기위한높은 TTL B25-43 -
[ 표 4-3] 악성코드의비정상적 DNS 이용특징 악성행위주체비정상적 DNS 이용특징표식어배포도메인단체접속 B31 악성코드기계적인중복 / 반복서비스요청 B32 (A3) Phishing, Pharming을위한다중도메인 /IP B33 [ 표 4-4] DNS 캐쉬포이즈닝공격자의비정상적 DNS 이용특징 악성행위주체 비정상적 DNS 이용특징 표식어 DNS 공격성공확률을높이기위한중복질의 B41 캐쉬포이즈닝 조작된다량의응답패킷 B42 공격자 중복된 IP/Domain 맵핑 RR 발생 B43 (A4) 공격효과장기화를위한높은 TTL B44 ( 그림 4-4) 비정상행위탐지를통한악성행위탐지과정 DDoS 공격근원지탐지시스템은설계구조에서시스템 1에해당하며, 수집된 DNS 트래픽으로부터악성이용 IP/Domain 탐지시스템으로비정상 DNS 트래픽을분류하여악성행위를분류, 탐지하고이를기반으로악성 IP 및 Domain 정보를추출한다. 시스템 1은세부적기능을 3개의모듈로분리하여설계되었으며, 각각의모듈은비정상트래픽의분류, 악성행위의탐지, 악성 IP, Domain 정보의추출및출력의기능을담당하 - 44 -
고, 각기순서대로모듈 1, 2, 3 로구분한다. 이구조는 ( 그림 4-3) 의구조 도에개략적으로도식되어있다. ( 그림 4-5) 시스템 1 구조도 ( 그림 4-5) 은시스템 1의입출력을포함한내부구조도이다. 시스템 1 은 3개의모듈로구성되어있으며각각의모듈은비정상트래픽분류, 악성행위탐지, 악성 IP/Domain추출의기능을담당하고선행모듈의출력이후방모듈의입력이되는선형배치를이루고있다. ( 그림 4-6) 시스템 1 자료흐름도 ( 그림 4-6) 는시스템 1 내부의자료흐름을도식한것이다. 시스템 1은 DNS 트래픽을입력으로제공받아각모듈간의처리르거쳐최종적으로시스템 2의입력이되는 IP, Domain 리스트를출력한다. 이과정에서 DNS 트래픽은모듈 1의처리의결과로서출력되는비정상분류된 DNS - 45 -
트래픽이모듈 2의입력으로서사용되는순차구조를기본으로하고, 구현방식에따라서는 DNS 트래픽은 3개모듈에서공유할수있는시스템을구축하고, 모듈간의입출력은 DNS 트래픽의색인정보로대체하여처리량을줄이는방식또한가능하다. 다음 1, 2, 3 단락은모듈 1, 2, 3 에대한각기세부설계에대해기술한다. 1. 모듈 1- 비정상 DNS 트래픽분류모듈설계 모듈 1은가공되지않은 DNS 트래픽을규칙기반트래픽분류 (Rule-based classification) 방식으로처리하여악성행위로의심되는 DNS 트래픽을분리한다. 유사한 DNS 이용특징이지속적, 중복적으로확인되면, 악성행위가존재함을추측할수있는점을바탕으로 [ 표4-5] 과같은 8개의규칙 (Rule) 을정의한다. [ 표 4-5] 비정상 DNS 트래픽분류모듈의행위판단규칙목록 규칙비정상행위측정기준관련악성행위 Rule 1 대량요청 (Query) Query/sec Bot, Cache Poisoning Rule 2 대량응답 (Reply) Reply/sec Cache Poisoning DDoS 공격 Rule 3 요청응답불균형 비율 Bot, Cache Poisoning Rule 4 극단적헤더값 수치 Bot, Cache Poisoning Rule 5 대형 RR 출입 크기증감율 Cache Poisoning, Bot, DDoS 공격 Rule 6 중복요청 규칙성 Bot, DDoS 공격 Rule 7 IP/Domain 다중맵핑 맵핑비율 Bot, Cache Poisoning Rule 8 무작위요청 분포도 DNS 취약점탐색 모듈 1에서는입력된 DNS 트래픽을 DNS 프로토콜을이용하여필요한정보를얻고, 각각의규칙을검사하는 8개의 Rule Checker를통해서비정상행위를탐지한다. 비정상행위정도를측정한측정값은각각규칙의번호를따라 r i 로, 탐지된비정상행위와비정상행위로분류된트 - 46 -
래픽 ( 분류된트래픽또는패킷의색인번호 ) 은 Ri 로표현한다. 비정상행 위 R1 부터 R8 에대한설명은세부설명에서구체적으로다룬다. 모듈 1에서는총 8개의 Rule Checker가평행하게동작한다. Rule Checker들은 DDoS 공격코드, 봇넷, 악성코드 (Malware), DNS 캐시포이즈닝공격등에서나타나는 DNS 이용형태중정상사용자와비교하여이상행위를검사하여경고한다. 대응대상으로삼는 4가지의악성행위는각기다른목적으로 DNS 사용하지만그과정중에나타나는비정상트래픽의특징은유사하여, 정의한 8개의비정상행위들이단독적혹은복합적으로나타나는것으로부터악성행위의존재를판별할수있다. 모듈 1의세부알고리즘에대한기술은 2절의마지막에자세히기술한다. 2. 모듈 2- 악성행위분류 / 탐지모듈설계 모듈 2는모듈 1에서분류된악성행위에대한규칙과실제트래픽을이용하여상세분석을수행한다. 입력된비정상 DNS 트래픽에대한패턴을분석하여 DB에저장된 DDoS, Botnet, 악성코드, DNS Cache Poisoning과관련된트래픽과비교, 확인작업을거쳐서어떤종류의악성행위인지판별한다. 알려진패턴혹은새로운패턴의악성코드, Botnet 리스트와이용된 DNS 트래픽정보를출력한다. ( 그림 4-7) 모듈 2 자료흐름도 - 47 -
패턴으로사용하는트래픽의특성은 [ 표 4-6] 와같이 4 가지이며, 등록 되어있는악성행위의패턴임계값과비교하여판단한다. 표현평가요소평가기준평가값범위 i 등장간격패킷과패킷간의시간간격의규칙성 0.0 ~ 1.0 r 반복규모동일질의의반복생성횟수의유사성 0.0 ~ 1.0 p 경로동일질의의근원지유사성 0.0 ~ 1.0 b 질의단체유사성 [ 표 4-6] 트래픽패턴유사도평가요소 동일질의발생근원지단체유사성 0.0 ~ 1.0 3. 모듈 3- 악성 IP/Domain 추출모듈설계 모듈 3는독립적인알고리즘이존재하지않고, 모듈 2에서제공된이상행위정보와 Log 정보로부터 IP, Domain을추출하여시스템 2에제공하기좋은형태로표현하는기능을한다. 이는 DB의튜플형태, 기록파일형태, 그리고이정보가필요한다른시스템들에전송을위한패킷형태, 시각적표시를위한화면표시형태등으로표현하는인터페이스모듈이다. - 48 -
( 그림 4-8) 시스템 1 의프로세스흐름도 - 49 -
제 3 절 DDoS 공격근원지지역분류시스템설계 시스템 2-DDoS 공격근원지지역분류시스템에대한설계는그기능과시스템 1으로부터제공되는입력정보에대응하기위한요구사항과시스템 3에필요한요구사항에대한설계가진행되었다. ( 그림 4-9) 은시스템 2의 Use-case 다이어그램이다. 이다이어그램은요구분석단계의설계에사용되는것으로시스템 1과시스템 3에서시스템 2에어떤기능을요청하는지에대해나타나있다. ( 그림 4-9) 시스템 2 의시스템 1, 3 와의 Use-case diagram - 50 -
제 4 절공격근원지의차단연동시스템설계 ( 그림 4-10) 은외부시스템과의연동기능을담당하는시스템 3가어떤위치에서어떤기능을수행하는지에대한모식도이다. 시스템 3는시스템 1과시스템 2에서도출된정보를외부시스템에전달하는인터페이스시스템으로써이종환경이나자료형에적용될수있도록자료변환, 관리기능을필요로한다. ( 그림 4-10) 시스템 3 구현을위한시스템배치도 - 51 -
제 5 장시스템 1 : 모듈 1 의사코드및 자료구조 본장에서기술하는이하의자료구조및의사코드는시스템 1의모듈 1, 모듈 2, 모듈 3에사용된알고리즘들의세부설계이다. [ 표 5-1] 은각프로세스의색인번호와명칭, 그리고기능에대한목차이다. 총 14개의프로세스가시스템 1을구성하고있으며, 프로세스 1~9가모듈 1, 프로세스 10 ~ 13이모듈 2, 그리고모듈 3는프로세스 14에해당한다. 모듈 3를구성하는프로세스 14는특정알고리즘을수행하는프로세스가아니므로상세설계에서제외하였다. Process List [ 표 5-1] 시스템 1 의프로세스의사코드, 상세설명색인 Index Name Functionality 1 Rule Checker 1 Client query per second counter 2 Rule Checker 2 Authoritative reply per second counter 3 Rule Checker 3 Packet type ratio checker 4 Rule Checker 4 Header field anomality checker 5 Rule Checker 5 Packet size anomality checker 6 Rule Checker 6 Iterated packet detecter 7 Rule Checker 7 IP per Domain anomality checker 8 Rule Checker 8 Scanning detecter 9 Abnormal Traffic Multiplexer Aggregate abnormal traffic 10 Similarity Estimate 1 Packet interval similarity checker 11 Similarity Estimate 2 Packet frequency similarity checker 12 Similarity Estimate 3 Packet path similarity checker 13 Similarity Estimate 4 BotGAD similality (Average of Kulczynski, Cosine, and extended Jaccard similarity) 14 Suspicious List out Printout suspicious IP/Domain List out - 52 -
[ 표 5-2] 프로세스 1 ~ 8 의입력데이터 DNS 패킷타입분류표 DNS Traffic-Process Input Packet Type Mapping Table From Client Query To Client Reply To Authoritative Query From Authoritative Reply Process 1 Process 2 Process 3 Process 4 Process 5 Process 6 Process 7 Process 8-53 -
제 1 절공통자료구조 1. 패킷셋 (Packet Set) 가. 패킷셋 (Packet Set) From Client Query(Cq), To Client Reply(Cr), To Authoritative Query(Aq), From Authoritative Reply(Ar) (1) Member [ 표 5-3] 패킷셋 (Packet Set) 의구성변수 자료형명칭설명 수치 Index 패킷셋에저장된순서상의간이색인번호 수치 PacketIndex 패킷이수집된순서대로할당되는패킷의고유한번호 시간 Time 패킷이수집된시간 IP주소 SrcAddr 패킷의근원지 IP 주소 IP주소 DstAddr 패킷의목적지 IP 주소 나열 Type 패킷의목적에 Answer,... ) 따른 분류형 ( Query, 수치 QuestionCount 질의문의개수 수치 AnswerCount 답변문의개수 수치 AuthoritativeCount 관할정보문의개수 수치 AdditionalCount 추가정보문의개수 문자열 Question 패킷의질의, 또는응답하고자하는질의내용 이진문자열 Answer 패킷의답변문필드의이진데이터 이진문자열 Authoritative 패킷의관할정보문필드의이진데이터 이진문자열 Additional 패킷의추가정보문필드의이진데이터 - 54 -
(2) Method [ 표 5-4] 패킷셋 (Packet Set) 의구성함수 반환형입력1 입력2 함수명설명자료형변수명자료형변수명 문자열 GetQuestionByIndex 수치 Index 없음없음 패킷셋의 Index 값을입력으로받아, Index 에해당하는패킷의 Question 문자열값을반환한다. 수치 GetPacketIndexByIndex 수치 Index 없음없음 패킷셋의 Index 값을입력으로받아, Index 에해당하는패킷의고유 PacketIndex 값을반환한다. 수치 GetQuestionCountByIndex 수치 Index 없음없음 패킷셋의 Index 값을입력으로받아, Index 에해당하는패킷의 Question Count 필드값을반환한다. 수치 GetAnswerCountByIndex 수치 Index 없음없음 패킷셋의 Index 값을입력으로받아, Index 에해당하는패킷의 Answer Count 필드값을반환한다. 수치 GetAuthoritativeCountByIndex 수치 Index 없음없음 패킷셋의 Index 값을입력으로받아, Index 에해당하는패킷의 Authoritative Count 필드값을반환한다. - 55 -
제 2 절프로세스 1 : Rule Checker 1 Process 1. Rule Checker 1 : Query per Second Counter Process 1. Rule Checker 1 : Query per Second Counter Input : Client query set C Previous VAR n Previous DATASTRUCT D Threshold T R1 // Absolute Threshold of Rule Checker 1 Threshold T V1 // Relative Threshold of Rule Checker 1 VAR n = C VAR m = Previous n DATASTRUCT D = { SrcAddr, QueryCount } DATASTRUCT E = Previous D DATASTRUCT R1 // Abnormal Packet Index Set of R1 LOOP ( INIT i = 0 ; WHILE i < n ; STEP i++ ) D.IncreaseCount ( C.SrcAddr ) VAR a = (n - m) / n VAR k = D LOOP ( INIT i = 0 ; WHILE i < k ; STEP i++ ) VAR cnt = D.GetQueryCountByIndex( i ) VAR src = D.GetSrcAddrByIndex( i ) VAR cntp = E.GetQueryCountByAddr( src ) VAR b = (cnt - cntp) / cnt IF ( cnt > T R1 ABS( b ) > ABS ( a ) + T V1 ABS( b ) < ABS ( a ) - T V1 ) LOOP ( INIT j = 0 ; WHILE j < n ; STEP j++ ) IF ( C.GetSrcAddrByIndex( j ) == src ) R1.InsertIndex ( C.GetPacketIndexByIndex ( j ) ) END IF END IF Output : DATASTRUCT R1, VAR n [ 표 5-5] 프로세스 1 의의사코드 - 56 -
1. 구조체 가. DATASTRUCT R1 패킷셋 C 중에서 Rule 1에서비정상으로판단된패킷들의색인번호를저장하는구조체. 구조체 R1은복수개의원소 ( 레코드 ) 를가질수있으며, 각각의원소를구분하는 Key값은 PacketIndex 필드가된다. 색인번호들이나열되는구조로, 색인번호그자체로선후관계가명시되므로스택이나큐, 연결리스트등의자료구조로구현될수있으며, 입력이나출력순서가유지되지않아도된다. (1) Member [ 표 5-6] 구조체 R1 의구성변수 자료형 변수명 설명 수치 PacketIndex 유일한색인번호값 (2) Method [ 표 5-7] 구조체 R1 의구성함수 반환형입력1 입력2 함수명설명자료형변수명자료형변수명없음 InsertIndex 수치 PacketIndex 없음없음 PacketIndex 값을입력으로받아새로운레코드를추가한다. 동일한레코드가이미존재할경우입력값을무시한다. 없음 InsertIndex 목록 PacketIndex 없음없음복수개의 PacketIndex 목록을입력으로받아새로운레코드를추가한다. 목록중에동일한레코드가이미존재할경우무시한다. - 57 -
나. DATASTRUCT D, E 구조체 D 는복수개의원소 ( 레코드 ) 를가질수있으며각각의원소를 구분하는 Key 값은 SrcAddr 필드가된다. 구조체 E 는프로세스가실행된 이전단위시간에사용된구조체 D 를참조하기위한구조체이다. (1) Member [ 표 5-8] 구조체 D, E 의구성변수 자료형 변수명 설명 IP주소 SrcAddr DNS 질의패킷의근원지주소 수치 QueryCount 질의개수 (2) Method [ 표 5-9] 구조체 D, E 의구성함수 반환형입력1 입력2 함수명설명자료형변수명자료형변수명없음 IncreaseCount IP주소 SrcAddr 없음없음 DNS 질의패킷의근원지주소 SrcAddr를입력으로받으며, 입력된 SrcAddr 의레코드가이미존재할경우, 해당레코드의 QueryCount 를 1 증가시킨다. 수치 GetItemCount 없음없음없음없음구조체에저장된고유한 Key값을가지는레코드의개수를반환한다. Key 값은 SrcAddr이다. 목록 PullEntirePacketIndexByIndex 수치 Index 없음없음 Index값을입력받아구조체에저장된해당 Index의레코드의 PacketIndex 목록을반환한다. 목록 GetQueryCountByIndex 수치 Index 없음없음 Index값을입력받아구조체에저장된해당 Index의레코드의 QueryCount값을반환한다. 목록 GetSrcAddrByIndex 수치 Index 없음없음 Index값을입력받아구조체에저장된해당 Index의레코드의 SrcAddr를반환한다. - 58 -
2. 동작설명 [ 표 5-10] 프로세스 1 의동작설명 VAR n = C VAR m = Previous n DATASTRUCT D = { SrcAddr, QueryCount } DATASTRUCT E = Previous D DATASTRUCT R1 // Abnormal Packet Index Set of R1 LOOP ( INIT i = 0 ; WHILE i < n ; STEP i++ ) D.IncreaseCount ( C.SrcAddr ) 코드 설명 VAR a = (n - m) / n VAR k = D LOOP ( INIT i = 0 ; WHILE i < k ; STEP i++ ) VAR cnt = D.GetQueryCountByIndex( i ) VAR src = D.GetSrcAddrByIndex( i ) VAR cntp = E.GetQueryCountByAddr( src ) VAR b = (cnt - cntp) / cnt IF ( cnt > T R1 ABS( b ) > ABS ( a ) + T V1 ABS( b ) < ABS ( a ) - T V1 ) LOOP ( INIT j = 0 ; WHILE j < n ; STEP j++ ) IF ( C.GetSrcAddrByIndex( j ) == src ) R1.InsertIndex ( C.GetPacketIndexByIndex ( j ) ) END IF END IF 1. 이전에계산되었던 n 값과구조체 D 를각각 m 과 E 에보존하고새로운 n 과 D 구조체를만든다 2. 근원지주소 (src) 를기준으로질의수를계산하여구조체 D 에넣는다 3. 0 에서부터 k 값까지아래의작업을반복수행한다 3.1. 임시변수에 Di 의근원지주소 (src), DNS 질의수 (cnt) 를저장하고, 근원지주소에따른이전 DNS 질의수 (cntp) 를저장한다. 3.2. 질의수가절대임계치 (T R1 ) 를넘거나, b 의비율이 a ± 상대임계치 (T V1 ) 를넘으면 R1 에 C 구조체에서해당 src 의색인를넣는다. - 59 -
제 3 절프로세스 2 : Rule Checker 2 Process 2. Rule Checker 2 : Reply per Second Counter Process 2. Rule Checker 2 : Reply per Second Counter Input : Authoritative reply set C Previous VAR n Previous DATASTRUCT D Threshold T R2 // Absolute Threshold of Rule Checker 2 Threshold T V2 // Relative Threshold of Rule Checker 2 VAR n = C VAR m = Previous n DATASTRUCT D = { SrcAddr, ReplyCount } DATASTRUCT E = Previous D DATASTRUCT R2 // Abnormal Packet Index Set of R2 LOOP ( INIT i = 0 ; WHILE i < n ; STEP i++ ) D.IncreaseCount ( C.SrcAddr ) VAR a = (n - m) / n VAR k = D LOOP ( INIT i = 0 ; WHILE i < k ; STEP i++ ) VAR cnt = D.GetReplyCountByIndex( i ) VAR src = D.GetSrcAddrByIndex( i ) VAR cntp = E.GetReplyCountByAddr( src ) VAR b = (cnt - cntp) / cnt IF ( cnt > T R2 ABS( b ) > ABS ( a ) + T V2 ABS( b ) < ABS ( a ) - T V2 ) LOOP ( INIT j = 0 ; WHILE j < n ; STEP j++ ) IF ( C.GetSrcAddrByIndex( j ) == src ) R2.InsertIndex ( C.GetPacketIndexByIndex ( j ) ) END IF END IF Output : DATASTRUCT R2, VAR n [ 표 5-11] 프로세스 2 의의사코드 - 60 -
1. 구조체 가. DATASTRUCT R2 패킷셋 C 중에서 Rule 2에서비정상으로판단된패킷들의색인번호를저장하는구조체. 구조체 R1은복수개의원소 ( 레코드 ) 를가질수있으며, 각각의원소를구분하는 Key값은 PacketIndex 필드가된다. 색인번호들이나열되는구조로, 색인번호그자체로선후관계가명시되므로스택이나큐, 연결리스트등의자료구조로구현될수있으며, 입력이나출력순서가유지되지않아도된다. (1) Member [ 표 5-12] 구조체 R2 의구성변수 자료형 변수명 설명 수치 PacketIndex 유일한색인번호값 (2) Method [ 표 5-13] 구조체 R2 의구성함수 입력1 입력2 반환형함수명자료형변수명자료형변수명없음 InsertIndex 수치 PacketIndex 없음없음 PacketIndex 값을입력으로받아새로운레코드를추가한다. 동일한레코드가이미존재할경우입력값을무시한다. 없음 InsertIndex 목록 PacketIndex 없음없음복수개의 PacketIndex 목록을입력으로받아새로운레코드를추가한다. 목록중에동일한레코드가이미존재할경우해당값을무시한다. - 61 -
나. DATASTRUCT D, E 구조체 D 는복수개의원소 ( 레코드 ) 를가질수있으며각각의원소를 구분하는 Key 값은 SrcAddr 필드가된다. 구조체 E 는프로세스가실행된 이전단위시간에사용된구조체 D 를참조하기위한구조체이다. (1) Member [ 표 5-14] 구조체 D, E 의구성변수 자료형 변수명 설명 IP주소 SrcAddr DNS 질의패킷의근원지주소 수치 ReplyCount 응답개수 (2) Method [ 표 5-15] 구조체 D, E 의구성함수 입력1 입력2 반환형함수명자료형변수명자료형변수명없음 IncreaseCount IP주소 SrcAddr 없음없음 DNS 질의패킷의근원지주소 SrcAddr를입력으로받으며, 입력된 SrcAddr 의레코드가이미존재할경우, 해당레코드의 ReplyCount 를 1 증가시킨다. 수치 GetItemCount 없음없음없음없음구조체에저장된고유한 Key값을가지는레코드의개수를반환한다. Key 값은 SrcAddr이다. 목록 PullEntirePacketIndexByIndex 수치 Index 없음없음 Index값을입력받아구조체에저장된해당 Index의레코드의 PacketIndex 목록을반환한다. 목록 GetReplyCountByIndex 수치 Index 없음없음 Index값을입력받아구조체에저장된해당 Index의레코드의 ReplyCount 값을반환한다. 목록 GetSrcAddrByIndex 수치 Index 없음없음 Index값을입력받아구조체에저장된해당 Index의레코드의 SrcAddr를반환한다. - 62 -
2. 동작설명 [ 표 5-16] 프로세스 2 의동작설명 VAR n = C VAR m = Previous n DATASTRUCT D = { SrcAddr, ReplyCount } DATASTRUCT E = Previous D DATASTRUCT R2 // Abnormal Packet Index Set of R2 LOOP ( INIT i = 0 ; WHILE i < n ; STEP i++ ) D.IncreaseCount ( C.SrcAddr ) 코드 설명 VAR a = (n - m) / n VAR k = D LOOP ( INIT i = 0 ; WHILE i < k ; STEP i++ ) VAR cnt = D.GetReplyCountByIndex( i ) VAR src = D.GetSrcAddrByIndex( i ) VAR cntp = E.GetReplyCountByAddr( src ) VAR b = (cnt - cntp) / cnt IF ( cnt > T R2 ABS( b ) > ABS ( a ) + T V2 ABS( b ) < ABS ( a ) - T V2 ) LOOP ( INIT j = 0 ; WHILE j < n ; STEP j++ ) IF ( C.GetSrcAddrByIndex( j ) == src ) R2.InsertIndex ( C.GetPacketIndexByIndex ( j ) ) END IF END IF 1. 이전에계산되었던 n 값과 D 구조체를각각 m 과 E 에보존하고새로운 n 과 D 구조체를만든다. 2. 근원지주소 (src) 를기준으로 DNS 응답수를계산하여 D 구조체에넣는다. 3. 0 에서부터 k 값까지반복하여아래의작업을수행한다. 3-1. 임시변수에 Di 의근원지주소 (src), DNS 응답수 (cnt) 를저장하고, 근원지주소에따른이전 DNS 응답수 (cntp) 를저장한다. 3-2. cnt 가절대임계치 (T R2 ) 를넘거나, b 의비율이 a ± 상대임계치 (T V2) 를넘으면 R2 에 C 구조체에서해당 src 의 DNS 데이터를넣는다. - 63 -
제 4 절프로세스 3 : Rule Checker 3 Process 3. Rule Checker 3 : Packet Type Ratio Checker Process 3. Rule Checker 3 : Packet Type Ratio Checker Input : Client query set Cq Client reply set Cr Authoritative query set Aq Authoritative reply set Ar VAR ncq // Pre-processed variable by Process 1 VAR nar // Pre-processed variable by Process 2 Threshold T R3 // Absolute Threshold of Rule Checker 3 Threshold T V3 // Relative Threshold of Rule Checker 3 DATASTRUCT R3 // Abnormal Packet Index Set of R3 VAR ncr = Cr VAR naq = Aq VAR rq = naq / ncq VAR rr = nar / ncr IF ( rq > T R3 + T V3 rq < T R3 - T V3 ) R3.InsertIndex ( Cq.GetEntireIndex( ) ) R3.InsertIndex ( Aq.GetEntireIndex( ) ) END IF IF ( rr > T R3 + T V3 rr < T R3 - T V3 ) R3.InsertIndex ( Cr.GetEntireIndex( ) ) R3.InsertIndex ( Ar.GetEntireIndex( ) ) END IF Output : DATASTRUCT R3 [ 표 5-17] 프로세스 3 의의사코드 - 64 -
1. 구조체 가. DATASTRUCT R3 패킷셋 Cq, Cr, Aq, Ar 중에서 Rule Checker 3에서비정상으로판단된패킷들의색인번호를저장하는구조체. 구조체 R3은복수개의원소 ( 레코드 ) 를가질수있으며, 각각의원소를구분하는 Key값은 PacketIndex 필드가된다. 색인번호들이나열되는구조로, 색인번호그자체로선후관계가명시되므로스택이나큐, 연결리스트등의자료구조로구현될수있으며, 입력이나출력순서가유지되지않아도된다. (1) Member [ 표 5-18] 구조체 R3 의구성변수 자료형 변수명 설명 수치 PacketIndex 유일한색인번호값 (2) Method [ 표 5-19] 구조체 R3 의구성함수 입력1 입력2 반환형함수명자료형변수명자료형변수명설명 InsertIndex 수치 PacketIndex 없음없음 PacketIndex 값을입력으로받아새로운레코드를추가한다. 동일한레코드가이미존재할경우입력값을무시한다. 없음 InsertIndex 목록 PacketIndex 없음없음복수개의 PacketIndex 목록을입력으로받아새로운레코드를추가한다. 목록중에동일한레코드가이미존재할경우해당값을무시한다. - 65 -
2. 동작설명 [ 표 5-20] 프로세스 3 의동작설명 DATASTRUCT R3 VAR ncr = Cr VAR naq = Aq // Abnormal Packet Index Set of R3 VAR rq = naq / ncq VAR rr = nar / ncr 코드 설명 IF ( rq > T R3 + T V3 rq < T R3 - T V3 ) R3.InsertIndex ( Cq.GetEntireIndex( ) ) R3.InsertIndex ( Aq.GetEntireIndex( ) ) END IF IF ( rr > T R3 + T V3 rr < T R3 - T V3 ) R3.InsertIndex ( Cr.GetEntireIndex( ) ) R3.InsertIndex ( Ar.GetEntireIndex( ) ) END IF 1. Client에서보내고받은 DNS 질의수 (ncq) 와응답패킷수 (ncr) 를구하고, 인증된 DNS서버에서보내고받은 DNS 질의수 (naq) 와응답수 (nar) 를구한다 2. 전체패킷중인증된 DNS 서버에서보내온질의 (rq) 및응답 (rr) 패킷들의비율을구한다 3. rq 혹은 rr의비율이 T R3 ± T V3 이면 R3에 Client에서사용한 DNS 패킷정보와인증된 DNS서버에서사용한 DNS 패킷정보를저장한다. - 66 -
제 5 절프로세스 4 : Rule Checker 4 Process 4. Rule Checker 4 : Header Field Anomality Checker [ 표 5-21] 프로세스 4 의의사코드 Process 4. Rule Checker 4 : Header Field Anomality Checker Input : Client reply set Cr Authoritative reply set Ar DATASTRUCT T R4 = { T trxid, T qsc, T awc, T nsc, T adc } // Threshold of Rule Checker 4 DATASTRUCT R4 // Abnormal Packet Index Set of R4 VAR n = Cr VAR m = Aq LOOP ( INIT i = 0 ; WHILE i < n ; STEP i++ ) VAR trxid = Cr.GetTrxIdByIndex( i ) VAR qscnt = Cr.GetQuestionCountByIndex( i ) VAR awcnt = Cr.GetAnswerCountByIndex( i ) VAR nscnt = Cr.GetAuthorityCountByIndex( i ) VAR adcnt = Cr.GetAddtionalCountByIndex( i ) IF ( trxid < T R4.T trxid trxid > 2 16 - T R4.T trxid qscnt > T R4.T qsc awcnt > T R4.T qsc nscnt > T R4.T nsc adcnt > T R4.T adc ) R4.InsertIndex( Cr.GetPacketIndexByIndex( i ) END IF LOOP ( INIT i = 0 ; WHILE i < m ; STEP i++ ) VAR trxid = Ar.GetTrxIdByIndex( i ) VAR qscnt = Ar.GetQuestionCountByIndex( i ) VAR awcnt = Ar.GetAnswerCountByIndex( i ) VAR nscnt = Ar.GetAuthorityCountByIndex( i ) VAR adcnt = Ar.GetAddtionalCountByIndex( i ) IF ( trxid < T R4.T trxid trxid > 2 16 - T R4.T trxid qscnt > T R4.T qsc awcnt > T R4.T qsc nscnt > T R4.T nsc adcnt > T R4.T adc ) R4.InsertIndex( Ar.GetPacketIndexByIndex( i ) END IF Output : DATASTRUCT R4-67 -
1. 구조체 가. DATASTRUCT R4 패킷셋 Cr, Ar 중에서 Rule Checker 4에서비정상으로판단된패킷들의색인번호를저장하는구조체. 구조체 R4은복수개의원소 ( 레코드 ) 를가질수있으며, 각각의원소를구분하는 Key값은 PacketIndex 필드가된다. (1) Member [ 표 5-22] 구조체 R4 의구성변수 자료형 변수명 설명 수치 PacketIndex 유일한색인번호값 (2) Method [ 표 5-23] 구조체 R4 의구성함수 반환형입력1 입력2 함수명설명자료형변수명자료형변수명없음 InsertIndex 수치 PacketIndex 없음없음 PacketIndex 값을입력으로받아새로운레코드를추가한다. 동일한레코드가이미존재할경우입력값을무시한다. 없음 InsertIndex 목록 PacketIndex 없음없음복수개의 PacketIndex 목록을입력으로받아새로운레코드를추가한다. 목록중에동일한레코드가이미존재할경우해당값을무시한다. - 68 -
나. DATASTRUCT T R4 (1) Member [ 표 5-24] 구조체 T R4 의구성변수 자료형 변수명 설명 자연수 T trxid Transaction ID 임계값 자연수 T qsc Question 필드수임계값 자연수 T awc nswer 필드수임계값 자연수 T nsc Authority 필드수임계값 자연수 T adc Additional 필드수임계값 (2) Method : 해당없음 - 69 -
2. 동작설명 [ 표 5-25] 프로세스 4 의동작설명 DATASTRUCT R4 VAR n = Cr VAR m = Aq // Abnormal Packet Index Set of R4 LOOP ( INIT i = 0 ; WHILE i < n ; STEP i++ ) VAR trxid = Cr.GetTrxIdByIndex( i ) VAR qscnt = Cr.GetQuestionCountByIndex( i ) VAR awcnt = Cr.GetAnswerCountByIndex( i ) VAR nscnt = Cr.GetAuthorityCountByIndex( i ) VAR adcnt = Cr.GetAddtionalCountByIndex( i ) 코드 IF ( trxid < T R4.T trxid trxid > 2 16 - T R4.T trxid qscnt > T R4.T qsc awcnt > T R4.T qsc nscnt > T R4.T nsc adcnt > T R4.T adc ) R4.InsertIndex( Cr.GetPacketIndexByIndex( i ) END IF LOOP ( INIT i = 0 ; WHILE i < m ; STEP i++ ) VAR trxid = Ar.GetTrxIdByIndex( i ) VAR qscnt = Ar.GetQuestionCountByIndex( i ) VAR awcnt = Ar.GetAnswerCountByIndex( i ) VAR nscnt = Ar.GetAuthorityCountByIndex( i ) VAR adcnt = Ar.GetAddtionalCountByIndex( i ) 설명 IF ( trxid < T R4.T trxid trxid > 2 16 - T R4.T trxid qscnt > T R4.T qsc awcnt > T R4.T qsc nscnt > T R4.T nsc adcnt > T R4.T adc ) R4.InsertIndex( Ar.GetPacketIndexByIndex( i ) END IF 1. Client에서발생한 DNS 응답패킷개수 (n) 만큼아래의행위를한다. 1.1. 응답패킷에서 transaction ID와각각필드의개수를각각변수 (trxid, qscnt, awcnt, nscnt, adcnt) 에저장한다. 1.2. 각각의변수들이각각의임계값 (T trxid, T qsc, T awc, T nsc, T adc) 중하나라도넘으면 R4에패킷 Index 정보를저장한다. 2. 인증된 DNS 서버에서발생한 DNS 응답패킷개수 (m) 만큼아래의행위를한다 2.1. 응답패킷에서 transaction ID와각각필드의개수를각각변수 (trxid, qscnt, awcnt, nscnt, adcnt) 에저장한다. 2.2. 각각의변수들이각각의임계값 (T trxid, T qsc, T awc, T nsc, T adc) 중하나라도넘으면 R4에패킷 Index 정보를저장한다. - 70 -
제 6 절프로세스 5 : Rule Checker 5 Process 5. Rule Checker 5 : Packet Size Anomality Checker Process 5. Rule Checker 5 : Packet Size Anomality Checker Input : Client reply set Cr Authoritative reply set Ar Threshold T R5 // Absolute Threshold of Rule Checker 5 Threshold T V5 // Relative Threshold of Rule Checker 5 DATASTRUCT R5 // Abnormal Packet Index Set of R5 VAR n = Cr LOOP ( INIT i = 0 ; WHILE i < n ; STEP i++ ) VAR v = Cr.GetPacketSizeByIndex( i ) VAR d = Cr.GetQuestionByIndex( i ) VAR k = Global::GetAverageReplySizeByDomain( d ) IF ( k == NULL ) IF ( v > T R5 ) R5.InsertIndex ( Cr.GetPacketIndexByIndex ( i ) ) END IF ELSE IF ( v > k + TV5 v < k - T V5 ) R5.InsertIndex ( Cr.GetPacketIndexByIndex ( i ) ) END IF END IF VAR m = Ar [ 표 5-26] 프로세스 5 의의사코드 LOOP ( INIT i = 0 ; WHILE i < m ; STEP i++ ) VAR v = Ar.GetPacketSizeByIndex( i ) VAR d = Ar.GetQuestionByIndex( i ) VAR k = Global::GetAverageReplySizeByDomain( d ) IF ( k == NULL ) IF ( v > T R5 ) R5.InsertIndex ( Ar.GetPacketIndexByIndex ( i ) ) END IF ELSE IF ( v > k + TV5 v < k - T V5 ) R5.InsertIndex ( Ar.GetPacketIndexByIndex ( i ) ) END IF END IF Output : DATASTRUCT R5-71 -
1. 구조체 가. DATASTRUCT R5 Rule 5에서비정상으로판단된패킷들의색인번호를저장하는구조체. 구조체 R5은복수개의원소 ( 레코드 ) 를가질수있으며, 각각의원소를구분하는 Key값은 PacketIndex 필드가된다. 색인번호들이나열되는구조로, 색인번호그자체로선후관계가명시되므로스택이나큐, 연결리스트등의자료구조로구현될수있으며, 입력이나출력순서가유지되지않아도된다. (1) Member [ 표 5-27] 구조체 R5 의구성변수 자료형 변수명 설명 수치 PacketIndex 유일한색인번호값 (2) Method [ 표 5-28] 구조체 R5 의구성함수 입력1 입력2 반환형함수명자료형변수명자료형변수명없음 InsertIndex 수치 PacketIndex 없음없음 PacketIndex 값을입력으로받아새로운레코드를추가한다. 동일한레코드가이미존재할경우입력값을무시한다. 없음 InsertIndex 목록 PacketIndex 없음없음복수개의 PacketIndex 목록을입력으로받아새로운레코드를추가한다. 목록중에동일한레코드가이미존재할경우해당값을무시한다. - 72 -
2. 동작설명 [ 표 5-29] 프로세스 5 의동작설명 코드설명코드설명 VAR n = Cr LOOP ( INIT i = 0 ; WHILE i < n ; STEP i++ ) VAR v = Cr.GetPacketSizeByIndex( i ) VAR d = Cr.GetQuestionByIndex( i ) VAR k = Global::GetAverageReplySizeByDomain( d ) IF ( k == NULL ) IF ( v > T R5 ) R5.InsertIndex ( Cr.GetPacketIndexByIndex ( i ) ) END IF ELSE IF ( v > k + TV5 v < k - T V5 ) R5.InsertIndex ( Cr.GetPacketIndexByIndex ( i ) ) END IF END IF 1. 패킷셋 Cr의패킷수만큼다음과정을반복수행한다. 1.1. Cr의 i번째패킷의크기 (v), 질의문 (d), 질의문에해당하는응답패킷의평균크기 (k) 를가져온다. 1.2. 저장된값이없을경우 (k== null) 패킷의크기가임계값 (T R5 ) 초과하면 R5에패킷색인을저장한다 1.3. 저장된평균값이있을경우패킷의크기의임계값 (T R5 ± T V5 ) 초과하면 R5에패킷색인을저장한다. VAR m = Ar LOOP ( INIT i = 0 ; WHILE i < m ; STEP i++ ) VAR v = Ar.GetPacketSizeByIndex( i ) VAR d = Ar.GetQuestionByIndex( i ) VAR k = Global::GetAverageReplySizeByDomain( d ) IF ( k == NULL ) IF ( v > T R5 ) R5.InsertIndex ( Ar.GetPacketIndexByIndex ( i ) ) END IF ELSE IF ( v > k + TV5 v < k - T V5 ) R5.InsertIndex ( Ar.GetPacketIndexByIndex ( i ) ) END IF END IF 2. 패킷셋 Ar의패킷수만큼다음과정을반복수행한다. 2.1. Ar의 i번째패킷의크기 (v), 질의문 (d), 질의문에해당하는응답패킷의평균크기 (k) 를가져온다. 2.2. 저장된값이없을경우 (k== null) 패킷의크기가임계값 (T R5 ) 초과하면 R5에패킷색인을저장한다 2.3. 저장된평균값이있을경우패킷의크기의임계값 (T R5 ± T V5) 초과하면 R5에패킷색인을저장한다. - 73 -
제 7 절프로세스 6 : Rule Checker 6 Process 6. Rule Checker 6 : Iterated Packet Detecter Process 6. Rule Checker 6 : Iterated Packet Detecter Input : Client query set Cq Authoritative reply set Ar Threshold T R6 // Absolute Threshold of Rule Checker 6 DATASTRUCT R6 // Abnormal Packet Index Set of R6 DATASTRUCT D = { SrcAddr, Question, Count, LIST PacketIndex } DATASTRUCT E = { SrcAddr, Question, Answer, Authoritative, Count, LIST PacketIndex} VAR n = Cq VAR m = Ar LOOP ( INIT i = 0 ; WHILE i < n ; STEP i++ ) D.IncreaseCount( Cq.SrcAddr, Cq.Question, Cq.PacketIndex ) LOOP ( INIT i = 0 ; WHILE i < m ; STEP i++ ) E.IncreaseCount( Ar.SrcAddr, Ar.Question, Ar.Answer, Ar.Authoritative, Cq.PacketIndex ) VAR n = D.GetItemCount( ) VAR m = E.GetItemCount( ) LOOP ( INIT i = 0 ; WHILE i < n ; STEP i++ ) VAR k = D.GetCountByIndex( i ) IF ( k > T R6 ) D.GetSrcAddrCq. R6.InsertIndex( D.PullEntirePacketIndexByIndex( i ) ) END IF LOOP ( INIT i = 0 ; WHILE i < m ; STEP i++ ) VAR k = E.GetCountByIndex( i ) IF ( k > T R6 ) R6.InsertIndex( E.PullEntirePacketIndexByIndex( i ) ) END IF Output : DATASTRUCT R6 [ 표 5-30] 프로세스 6 의의사코드 - 74 -
1. 구조체 가. DATASTRUCT R6 패킷셋 Cq 에서 Rule Checker 6에서비정상으로판단된패킷들의색인번호를저장하는구조체. 구조체 R6은복수개의원소 ( 레코드 ) 를가질수있으며, 각각의원소를구분하는 Key값은 PacketIndex 필드가된다. 색인번호들이나열되는구조로, 색인번호그자체로선후관계가명시되므로스택이나큐, 연결리스트등의자료구조로구현될수있으며, 입력이나출력순서가유지되지않아도된다. (1) Member [ 표 5-31] 구조체 R6 의구성변수 자료형 변수명 설명 수치 PacketIndex 유일한색인번호값 (2) Method [ 표 5-32] 구조체 R6 의구성함수 반환형입력1 입력2 함수명설명자료형변수명자료형변수명없음 InsertIndex 수치 PacketIndex 없음없음 PacketIndex 값을입력으로받아새로운레코드를추가한다. 동일한레코드가이미존재할경우입력값을무시한다. 없음 InsertIndex 목록 PacketIndex 없음없음복수개의 PacketIndex 목록을입력으로받아새로운레코드를추가한다. 목록중에동일한레코드가이미존재할경우해당값을무시한다. - 75 -
나. DATASTRUCT D (1) Member [ 표 5-33] 구조체 D 의구성변수 자료형 변수명 설명 IP주소 SrcAddr 근원지주소 문자열 Question 질의문 목록 PacketIndex 패킷고유색인번호목록 (2) Method [ 표 5-34] 구조체 D 의구성함수 반환형 함수명 입력1 입력2 자료형변수명자료형변수명 없음 IncreaseCount IP주소 SrcAddr 문자열 Question 수치 PacketIndex 근원지주소, 질의문을기준으로레코드를검색하여패킷색인을목록에추가하고 Count 값을 1 증가. 레코드가없는경우 Count가 1인레코드를추가 없음 GetItemCount 없음 없음 없음 없음 데이터구조의원소개수반환 없음 GetCountByIndex 수치 Index 없음 없음 Index에해당하는 Count 값반환 목록 PullEntirePacketIndexByIndex 수치 Index 없음 없음 Index에해당하는레코드의패킷색인목록을반환 - 76 -
나. DATASTRUCT E (1) Member [ 표 5-35] 구조체 E 의구성변수 자료형 변수명 설명 IP주소 SrcAddr 근원지주소 문자열 Question 질의문 이진문자열 Answer 패킷의 Answer 필드 이진문자열 Authoritative 패킷의 Authoritative 필드 목록 PacketIndex 패킷의고유색인번호목록 (2) Method [ 표 5-36] 구조체 E 의구성함수 반환형입력1 입력2 함수명설명자료형변수명자료형변수명 IP주소 SrcAddr 문자열 Question 입력3 입력4 이진 Answer 이진없음 IncreaseCount 문자열문자열 Authoritative 입력5 입력6 목록 PacketIndex 근원지주소, 질의도메인이름, Answer필드정보, Authority 필드정보기준으로패킷고유색인을추가하고, 패킷개수를증가수치 GetItemCount 없음없음없음없음레코드개수반환없음 GetCountByIndex 수치 Index 없음없음 Index에해당하는레코드의 Count 반환목록 PullEntirePacketIndexB 수치 Index 없음없음 yindex Index에해당하는레코드의패킷고유색인목록을반환 - 77 -
2. 동작설명 [ 표 5-37] 프로세스 6 의동작설명 코드설명코드설명코드설명코드설명 VAR n = Cq LOOP ( INIT i = 0 ; WHILE i < n ; STEP i++ ) D.IncreaseCount( Cq.SrcAddr, Cq.Question, PacketIndex::Push( Cq.PacketIndex ) ) 1. Cq의레코드수 (m) 만큼아래의작업을반복수행한다 1.1. 근원지주소 (SrcAddr), 질의한질의문 (Question) 을기준으로패킷고유색인 (PacketIndex) 과질의수 (Count) 를획득하여구조체 D에넣는다. VAR m = Ar LOOP ( INIT i = 0 ; WHILE i < m ; STEP i++ ) E.IncreaseCount( Ar.SrcAddr, Ar.Question, Ar.Answer, Ar.Authoritative, Cq.PacketIndex ) 2. Ar의레코드수 (m) 만큼아래작업을반복수행한다 2.1. 근원지주소 (SrcAddr), 질의문 (Question), Answer필드, Authority 필드 (Authoritative) 를기준으로고유색인 (PacketIndex) 와질의수 (Count) 를획득여구조체 E에넣는다. VAR n = D.GetItemCount( ) LOOP ( INIT i = 0 ; WHILE i < n ; STEP i++ ) VAR k = D.GetCountByIndex( i ) IF ( k > T R6 ) R6.InsertIndex( D.PullEntirePacketIndexByIndex( i ) ) END IF 3. 구조체 D의레코드수 (n) 만큼아래작업을반복수행한다 3.1. 구조체 D의원소의패킷수 (k) 가임계값 (T R6) 넘으면 R6에패킷고유색인목록을추가한다. VAR m = E.GetItemCount( ) LOOP ( INIT i = 0 ; WHILE i < m ; STEP i++ ) VAR k = E.GetCountByIndex( i ) IF ( k > T R6 ) R6.InsertIndex( E.PullEntirePacketIndexByIndex( i ) ) END IF 4. 구조체 E의레코드수 (m) 만큼아래작업을반복수행한다 4.1. 구조체 E의 i번째레코드의 Count값이 (k) 가임계값 (T R6) 넘으면 R6에패킷고유색인목록을추가한다. - 78 -
제 8 절프로세스 7 : Rule Checker 7 Process 7. Rule Checker 7 : IP per Domain Anomaly Checker Process 7. Rule Checker 7 : IP per Domain Anomaly Checker Input : Client reply set Cr Threshold T R7 // Absolute Threshold of Rule Checker 7 DATASTRUCT R7 // Abnormal Packet Index Set of R7 DATASTRUCT D = { IpAddr, LIST Domain, DomainCount, LIST PacketIndex } VAR n = Cr LOOP ( INIT i = 0 ; WHILE i < n ; STEP i++ ) VAR a = Cr.GetAnswerCountByIndex( i ) VAR r = Cr.AuthoritativeCountByIndex( i ) LOOP ( INIT j = 0 ; WHILE j < a ; STEP j++ ) IF ( Cr.GetAnswerTypeByIndex( j ) == A ) D.InsertDomain( Cr.GetAIpByIndex( i, j ), Cr.GetnAnswerDomaiByIndex( i ) ) END IF LOOP ( INIT j = 0 ; WHILE j < r ; STEP j++ ) D.InsertDomain( Cr.GetNsIpByIndex( i, j ), Cr.GetNsDomainByIndex( i ) ) VAR n = D.GetItemCount( ) [ 표 5-38] 프로세스 7 의의사코드 LOOP ( INIT i = 0 ; WHILE i < n ; STEP i++ ) VAR k = D.GetDomainCountByIndex( i ) IF ( k > T R7 ) R7.InsertIndex( D.PullEntirePacketIndexByIndex( i ) ) END IF Output : DATASTRUCT R7-79 -