Worm Traffic Simulator

Total Page:16

File Type:pdf, Size:1020Kb

Worm Traffic Simulator

C S

7 0 2

T e r m

P r o j e c t

D e t a i l e d Worm Traffic Simulator

D e s i

g Detailed Design n

지도교수: 홍 원기 교수님 내용: Project Detailed Design 제출자: 조 룡권 일자: 2005-12-04

1. 프로젝트의 목적과 필요성

2003년, SQL Slammer 웜이 10분만에 전세계 7만5천 여대의 호스트를 감염시킨 이래, 인 CS 702 Term Project Requirements ------

터넷 웜에 대한 각종 연구들이 활발하게 진행되고 있다. 특히 특정 웜 예를 들면, CodeRed, Slammer, Witty, Sasser 등의 인터넷 웜들에 대한 Case Study는 실제 수집된 트래픽을 기준 으로 트래픽 특성 분석을 하고 있다. 이런 실제 인터넷 웜 트래픽을 갖고 있지 않는 경우 웜 트 래픽과 비슷한 특성을 갖는 트래픽을 Simulation하여 제안한 알고리즘을 검증한다. 그러나, 쉽 고 간단한 Simulation 툴이 현존하지 않음으로써, Simulation을 하는데 많은 어려움과 번잡함 이 대두된다. 본 프로젝트에서는 Simulation 툴을 개발하는데 그 목적을 두고 있다. 인터넷 웜 Simulator를 개발하는 이유는 다음과 같이 세부적으로 나누어 살펴볼 수 있다.

1) 인터넷 웜의 특성을 연구함에 있어서 실제 인터넷 웜 Traffic을 구하기가 어렵고 Simulate한다고 해도 그 비슷한 성격의 Traffic으로 한 두 가지 인터넷 웜 트래픽만 Simulate할 수 있다. 쉽고 용이하게 실제 인터넷 웜의 Traffic과 비슷한 성격의 조합된 트래픽을 발생하여 관찰하기 위해서 인터넷 웜 Simulator가 필요하다.

2) 인터넷 웜에 사용되는 스캐닝 기법은 갈수록 고급화 되여 가고 있다. Local Scanning, Sequential Scanning, Random Scanning 등의 방법을 상호 조합하여 사용함으로써 인터넷 웜의 전파속도를 빠르게 하고 탐지를 어렵게 하고 있다인터넷 웜 은 또 여러 가지 취약점을 동시에 이용 함으로써 그 탐지와 제어에 어려움을 가져다 준 다. 인터넷 웜의 각종 변수를 쉽게 조절하여 각종 인터넷 웜의 트래픽을 Simulate할 수 있게 하는 인터넷 Worm Traffic Simulator는 연구자에 쉽고 용이하게 각종 인터넷 웜의 여러 가지 변화된 형태를 고찰하는 편리하고 용이한 툴을 제공할 것이다.

이 프로젝트를 목적은 연구자들에게 쉽고 용이한 Simulation 툴을 제공하여 기존에 존재하 였던 인터넷 웜 이거나 앞으로 나오게 될 여러 가지 인터넷 웜 Traffic을 생성하여 관찰할 수 있 게 하는 것이다. 이 프로젝트의 수혜자는 인터넷 웜 트래픽 연구자, 네트워크 관리자, 보안업체, ISP 등 일 것이다.

2. 관련연구

비정상 트래픽을 Generate하는 툴로 Wisconsin 대학의 Advanced Internet Laboratory의 Joel Sommers의 MACE가 있다. MACE에 관한 간단한 관찰을 통하여 인터넷 웜 Traffic

18년 5월 2/28 DP&NM Lab. POSTECH CS 702 Term Project Requirements ------

Generator의 Requirements를 도출해보자. 2.1 MACE의 구조와 환경 MACE은 A Malicious Traffic Composition Environment의 약자로 인터넷웜, Denial of Service등의 비정상 트래픽을 Generation하는 툴이다.

그림1. MACE

그림2. MACE의 실험 Example 그림1은 MACE의 구조이고, 그림2는 MACE의 실험환경 예제이다. MACE는 Python으로 Program되였고, exploit 정의 모듈(각 비정상 트래픽을 정의한 파일), Obfuscation 방법의 정의 모듈 (exploit를 이용한 패킷 구성방법, 전송방법의 결정) 및 스캐닝 방법을 결정하는 propagation모듈로 구성 되였다. 실험환경은 MACE에서 비정상 트래픽을 전송하는 네트워크, 그 트래픽에 response하는 네트워크로 구성된다.

2.2 MACE의 단점과 User Needs 1) Worm Scanning 특성 인터넷 웜의 트래픽 특성에 있어서 가장 중요한 것은 스캐닝 단계에서의 대량 트래픽을 발생하 는 것이다. 인터넷 웜은 동시에 많은 Destination Host로 scanning 패킷을 보내서 취약점을

18년 5월 3/28 DP&NM Lab. POSTECH CS 702 Term Project Requirements ------

찾아내는 스캐닝 과정에 대부분의 트래픽을 발생한다. MACE는 한 개의 Host에 SYN 트래픽을 보내서 Response가 오면 Worm Body를 전송하고 다시 다른 Host에 Syn패킷을 보내는 과정 을 반복하는데, 이는 웜 스캐닝 특징과는 차이가 있다. 다른 비정상 트래픽 DoS, Syn flooding 등의 트래픽 발생과정을 고려했기 때문에 일으킨 작은 착오가 아닌가 싶다. 우리가 개발하려는 Worm Scanning Traffic Generator는 동시에 많은 스캐닝 패킷을 전송하여야 한다. 2) 인터넷 웜의 범위 인터넷 웜의 특성을 하나하나 정의하여서 configuration 파일에 추가함으로써 MACE는 Generate하려는 새로운 웜에 대해서 추가할 수 있다. 전반적인 인터넷 웜을 커버할 수 없고 소 스코드를 수정하여야 하는 어려움이 있다. 전반적인 인터넷 웜의 트래픽을 Generate할 수 있 는 Parameter에 근거한 조합방법이 필요하다. 3) 실험환경 MACE는 Response 네트워크가 동반하여 SYN 패킷에 Response하는 매커니즘을 사용하여 실 제 사용함에 있어 Testbed 네트워크의 구성을 어렵게 한다. 그리고 실제 웜이나 비정상 트래픽 의 본체를 담고 있어 연구를 진행함에 있어 테스트베드 기반에 의한 네트워크를 구성해야 한다. 실제 네트워크에서 발생한 트래픽을 제어하고 트래픽이 실제 네트워크로 흘러가도 실제 본체가 전송되지 않는 방법이 필요하다. 4) User friendly Interface MACE는 Unix Based 툴이며 User friendly Interface가 없어 사용자의 사용함에 불편하다. 각종 OS시스템에서 작동하는 GUI based 툴을 개발하는 것은 또 다른 하나의 User Need이 다.

3. 프로젝트의 요구사항 분석

3.1 User Needs by Scenario Tree 유저는 기존에 존재했던 인터넷 웜의 트래픽을 Generate 하거나, 패러미터를 선택하여 원하는

18년 5월 4/28 DP&NM Lab. POSTECH CS 702 Term Project Requirements ------

인터넷 웜의 트래픽을 생성함으로써 firewall, IDS 혹은 인터넷 웜 탐지나 모니터링 방법이 유 효한지를 검증하려고 한다. 이런 사용자의 Needs를 만족 시키는 시나리오는 다음과 같다.

Start

Worm selection Worm by Major Worm Selection by Parameters

Select worms: Several Worms Several Slammer , CodeRed, per Host Ports per Blaster Worm

Read parameters Select parameters from the Date Set

Select the # of Hosts

Generate Worm Traffic

End

18년 5월 5/28 DP&NM Lab. POSTECH CS 702 Term Project Requirements ------

먼저 제공된 tool: Worm Traffic Generator를 실행시키고; Traffic 생성할 인터넷 웜(하나 혹은 여러 개)의 타입, 스캐닝 속도와 감염된 호스트의 개수를 결정하고 실행버튼을 클릭하며; 선택한 인터넷 웜의 특성에 맞는 패러미터 들로 Target IP Generation Method, Protocol, Scanning Policy, Destination Port 등을 결정하여 IP Packet format을 생성하고; Scanning rate, Interval time 을 결정하여 감염호스트 개수만큼의 Thread가 실행되면서 Worm Scanning Traffic이 Generate된다. Generate 된 Traffic은 Monitoring System에 의해 Capture되며, Firewall에서 Drop한다.

3.2 Functional Requirements 인터넷 웜의 트래픽 특성을 결정하는 패러미터 들은 표1과 같다. Major Worm Code Red Slammer Blaster

Parameters # of Worm (1-3) # of Vulnerabilities (1-3) Destination Port

Scanning Rate Scanning Policy Target Scope (per Interval) (Random/Sequential) (Local/External)

Protocol (TCP/UDP) Interval Time Signature String

Worm Body Size

# of Host 1 10 100 사용자는 이런 패러미터의 선택으로 생성할 인터넷 웜의 트래픽 특성을 결정하게 되고 시스템 은 이런 패러미터에 근거하여 해당 트래픽을 생성한다. 이런 패러미터 들은 단순한 버튼 클릭이 나 입력을 통하여 선택이 가능하여야 한다. User는 실행된 UI에서 (Web or Java Swing) Major Worm이나 Parameter에 의한 선택으로 각종 웜을 선택할 있다. #of Host는 모두 몇개의 Thread를 발생시킬지 결정 한다. a) Major Worm User가 Major Worm에서 CodeRed, Slammer, Blaster의 세 가지 웜 트래픽을 생성할 수 있 다. 하나 혹은 두 개 혹은 세 개가 조합된 웜 트래픽 을 발생하게 된다. 동시 선택이 가능하여야 하고 세 가지 웜은 이미 Define된 Parameter Set을 갖고 있다. Slammer를 예로 들면 (Random, External, TCP, 1434, “81 F1 03 01 04 9B 81 F1”, 404 bytes, As many as possible packets) 등의 정해진 parameter set를 가지고 있다. 이런 Define된 Parameter Set을 읽고 조합하여 트래픽을 발생한다. b) Parameters 트래픽 특성 패러미터에 의해 발생 할 트래픽을 결정하는 것으로 각개 패러미터에 대해서 설명 하면:

18년 5월 6/28 DP&NM Lab. POSTECH CS 702 Term Project Requirements ------

먼저 # of Worm 이나, # of Vulnerabilities를 결정한다. #of worm은 한 호스트에서 몇 개의 웜 (3개까지 제한)을 발생 시킬 지를 결정하며, #of Vulnerabilities 는 한 웜이 몇 개의 취약점(3개까지 제한)을 이용하는지를 결정한다. #of worm을 선택하여 입력한 경우 매개 웜에 대해서 상세하게 패러미터들을 입력 받는다. Destination Port, Scanning Policy, Target Scope, Protocol, Interval Time, Scanning Rate, Worm Body Size, Signature (if there is any)등을 선택하고, Host의 개수를 선택하 고 웜 traffic을 생성한다. #of Vulnerabilities는 한 웜이 이용하는 취약점의 개수를 선택한다. 이는 Destination Port를 여러 개 선택하는 과정이다. 하나 혹은 세 개까지 취약점이 존재하는 서비스 즉 해당 포트를 입 력 받아 인터넷 웜이 여러 개의 Destination Port로 트래픽을 발생한다. c) #of Host 는 앞에서 선택한 트래픽 특성을 갖고 있는 인터넷 웜 트래픽이 몇 개의 호스트 에서 발생하는지를 Simulation 하는가를 선택 하는 것이다. 1개, 10개, 혹은 100개의 감염된 호스트에서 인터넷 웜 트래픽을 Generate하는 것을 보여주기 위함이다. Multi-Thread와 Source IP의 Spoofing을 통하여 이런 수요를 만족시킨다. 이렇게 인터넷 웜의 트래픽 특성을 결정하는 Parameter들이 결정되면 이런 패러미터들의 조합 으로 인터넷 웜의 트래픽을 Generate 한다. d) User Friendly GUI 선택 사항은 메뉴 혹은 Point & Click 혹은 간단한 입력으로 이루어진다. 사용자는 Mouse의 클릭 혹은 입력으로 편리하게 각 선택 Parameter를 결정하고, 실행할 수 있다.

3.3 Non-Functional Requirements a) Program Language and Tools 모든 Client 프로그램은 Java로 이루어 질것이다. Java는 GUI를 아주 훌륭하게 소화하는 장점 을 갖고 있기 때문이다. 자바 Swing library를 이용하여 GUI를 구현하고 시스템은 Network Library를 이용하여 구현한다. b) Traffic Control 트래픽을 Generate하면 해당 Generator 앞단의 라우터나 스위치의 전면에서 모니터링하고 분석한다. 이런 트래픽이 Internet으로 흘러 들어가지 않게 하기 위해서는 해당 트래픽을 Drop시키는 Firewall 의 구성도 필요하게 된다. Firewall (Iptables) 에서 어떻게 발생되는 웜 트래픽을 제어하는지도 그 방법에 대한 제안이 필요하다. c) Examples & User Guide 실제 연구에 사용했던 경우를 예제로 보여주고 Generate 한 트래픽의 결과를 분석하여 툴이 제대로 동작하는지 여부를 검증한다. 사용목적이 다름에 따라 연구에 사용될 수 있고 악용될 수 도 있기 때문에 잘 Define된 User Guide를 제공한다. d) Flexibilities Major Worm의 종류에 대한 추가나 삭제 같은 기능은 제공하지 않지만, Parameter에 의한 선

18년 5월 7/28 DP&NM Lab. POSTECH CS 702 Term Project Requirements ------

택으로 다양한 인터넷 웜의 트래픽을 발생시킬 수 있다. 인터넷 웜의 Traffic 특성의 변화가 고 려해야 할 parameter들의 변화를 가져 올 수 도 있지만 IPv4에서의 인터넷 웜의 특성을 충분 히 반영하였기 때문에 충분한 Flexibility를 제공한 것이다. e) Scalabilities Worm Traffic Generator는 Linux나 Windows OS 시스템에 쉽게 Setup할 수 있어야 하며, 모니터링하고 분석하고 Firewall을 구성하는 Machine은 Linux OS를 이용한다. (하나에 통합 되여 혹은 각각의 서버로 구성)

18년 5월 8/28 DP&NM Lab. POSTECH CS 702 Term Project Requirements ------

4. Analysis and Detail Design 4.1 Use-case Modeling & iterated Scenario

Worm Traffic Generator

Select Major Worms

Input the Host Number

Select Parameters

A normal scenario

1. User starts the application, and the main Frame is opened. 2. User selects Major Worm Menu and selected Slammer Worm and Blaster Worm. 3. The system read the Parameters from the Slammer and Blaster Worm dataset. Slammer { Protocol-UDP, Port-1434, Interval Time-0s, Packet Size-404 bytes, Random Scanning, Target-External, Scan Rate-As much as Possible } Blaster {Protocol-TCP, Port-135, Interval Time-20s, Packet Size-64 bytes, Sequential/Random Scanning, Target-Local/External, Scan Rate-254 Packets per an Interval} 4. With the Parameters, the system decides the Worm Attributes. 5. With the determined Worm Attributes, it generates IP packet. 6. User input the host number of infected, the system makes Threads as much as the number. 7. The Interval Time decides the waiting time of a Thread. 8. Threads start to generate worm packets. 9. User closes the Generator.

18년 5월 9/28 DP&NM Lab. POSTECH CS 702 Term Project Requirements ------

Another normal scenario

1. User starts the application, and the main Frame is opened. 2. User selects Parameter menu and selected #of Ports (vulnerabilities). 3. The system shows up the Parameter selection Menus. 4. User inputs the Destination Ports one by one (1-3) and selects other parameters. 5. With the Parameters, the system generates IP packets. 6. User input the host number of infected, the system makes Threads as much as the number. 7. The Interval Time decides the waiting time of a Thread. 8. Threads start to generate worm packets. 9. User exits the program.

4.2 Detailed Class Modeling & Diagram mainApp : Application의 main()function을 정의한 클래스로 Frame을 생성한다. Mainframe: 메뉴들을 생성하는 Frame으로 주로 유저가 선택할 메뉴들이 정의 되여 있다. 메뉴는 주로 major 웜에 의한 선택과 패러미터에 의한 선택하는 두개 부분이다. 그 외 도움말 등의 내용의 help메뉴가 있다. majorWorm: User가 Major웜을 선택할 때 사용하는 패널이다. Slammer, CodeRed, Blaster 등 세개의 웜의 조합으로 웜 을 선택할 수 있다. paramWorm: User가 Parameter에 의해 웜의 특성을 결정할 때 사용하는 패널로 인 터넷 웜의 특성 패러미터의 조합으로 웜을 결정한다. wormAttribute: 선택된 패러미터에 결정되는 웜 class이다. 몇 개의 thread를 생성 하여 패킷을 전송할지를 결정하고 웜의 속성들을 결정하는 class이다. Slammer: Slammer웜의 객체로, wormAttribute의 특성화된 class이다. CodeRed: CodeRed 웜의 객체로, wormAttirbute의 자식 class이다. Blaster: Blaster 웜의 객체로, wormAttribute의 자식 class이다. IP_Packet: network layer의 패킷의 포맷을 갖는 class로, 패킷 전송시 사용되는 class이 다. SYN_Packet: TCP flag가 syn으로 mark된 IP_Packet의 자식 class이다. TCP 웜의 스캐닝 패킷을 생성한다. Blaster, Sasser등의 웜의 패킷이다. UDP_Packet: UDP 패킷 class로 IP_Packet의 자식 class이다. UDP 웜의 스캐닝 패킷을 생성한다. Slammer, witty웜의 패킷이다.

18년 5월 10/28 DP&NM Lab. POSTECH CS 702 Term Project Requirements ------

HTTP_Packet: TCP packet으로 payload를 갖는 IP_Packet의 자식 class이다. CodeRed, Nimda 등의 웜 스캐닝 패킷이다.

18년 5월 11/28 DP&NM Lab. POSTECH CS 702 Term Project Requirements ------

4.3 Sequential and Collaboration diagram 1) Major Worm Selection

18년 5월 12/28 DP&NM Lab. POSTECH CS 702 Term Project Requirements ------

2) Parameter Selection

18년 5월 13/28 DP&NM Lab. POSTECH CS 702 Term Project Requirements ------

4.4 Pseudo Code

Class mainApp public class mainApp {

boolean packFrame = false; //control frame open

public mainApp() {

mainFrame frame = new mainFrame(); //main frame의 생성

//Pack frames that have useful preferred size info, e.g. from their layout

//frame의 크기, 위치 등을 결정

frame.setVisible(true);

}

/** main method

mainApp객체 생성

*/

static public void main(String[] args) {

new mainApp();

}

}

Class mainFrame public class mainFrame extends JFrame implements ActionListener{

18년 5월 14/28 DP&NM Lab. POSTECH CS 702 Term Project Requirements ------

JPanel contentPane; //보여줄 패널

JMenuBar jMenuBar1 = new JMenuBar(); //전체 메뉴

JMenu jMenuFile = new JMenu(); //메뉴1

JMenu jMenuPara = new JMenu();//메뉴2

JMenu jMenuHelp = new JMenu();//메뉴3

JMenuItem jMenuHelpAbout = new JMenuItem(); //메뉴3 종목

JMenuItem jMenuItem_exit = new JMenuItem(); //메뉴3 종목

JMenuItem jMenuItem_noPort = new JMenuItem();//메뉴2 종목

JMenuItem jMenuItem_mWorm = new JMenuItem();//메뉴2 종목

public mainFrame() {//생성자

jbInit(); //frame의 초기화

}

//frame 의 초기화 function

private void jbInit() throws Exception {

// frame의 초기화, 리스너, 포맷 정의한다.

//frame에 각 메뉴를 add한다

}

/**

* 윈도우에서 X버튼 눌렀을 때 종료해주는 리스너 function

*/

protected void processWindowEvent(WindowEvent e) {

super.processWindowEvent(e);

if (e.getID() == WindowEvent.WINDOW_CLOSING) {

System.exit(0);

}

}

//frame에서 각 메뉴의 리스너가 하는 일을 정의

public void actionPerformed(ActionEvent e) {

String command = e.getActionCommand();

//종료 메뉴

if (Exit.equals(command)) {

System.exit(0);

}

//major 웜 메뉴를 클릭했을 때 major웜 panel 생성

18년 5월 15/28 DP&NM Lab. POSTECH CS 702 Term Project Requirements ------

else if (mWorms.equals(command))

contentPane = new majorWorm();

}

//help 메뉴 클릭했을 때 도움말 생성

else if (About.equals(command)) {

//show Help panel

}

//패러미터에 의한 선택을 원할 때 보여주는 패널

else if (nPorts.equals(command)) {

contentPane = new paramWorm();

}

}

}

Class majorWorm public class majorWorm extends JPanel implements ActionListener, Serializable {

JRadioButton jRadio_CodeRed; //CodeRed 웜의 선택 버튼

JRadioButton jRadio_Slammer; //Slammer웜의 선택버튼

JRadioButton jRadio_Blaster; //blaster 웜의 선택버튼

JSlider number; // 감염호스트 개수

JButton generate; //실행 버튼

wormAttribute worm; //선택된 웜에 의해 웜의 성격 결정

public majorWorm(){ //생성자

//패널의 모양새를 결정하고 필요한 리스너를 추가한다.

}

public void actionPerformed(ActionEvent e) {

//실행버튼이 눌러졌을 때 하는 일을 정희하는 부분이다.

If(실행버튼 clicked){

//선택된 버튼들의 값을 읽고 그 특성에 맞게 worm을 결정한다.

//worm을 결정하고 host개수에 따라 thread를 생성하고 웜 트래픽을 생성한다.

}

}

}

//호스트 개수를 결정하는 JSlider의 리스너이다. class SlideListener implements ChangeListener{

18년 5월 16/28 DP&NM Lab. POSTECH CS 702 Term Project Requirements ------

}

Class paramWorm public class paramWorm extends JPanel implements ActionListener {

JTextField port1; //destination port

JTextField port2; // ,, 2번째

JTextField port3; // ,, 세번째

JRadioButton random; //랜덤 스캐닝

JRadioButton sequential; //순차적 스캐닝

JTextField rate; //스캐닝 속도

JRadioButton global; //전역 타겟

JRadioButton local; //로컬 타겟

JRadioButton udp; //UDP 웜

JRadioButton tcp; //TCP 웜

JTextField interval; //thread의 interval

JTextField bodySize; //웜 본체 사이즈

wormAttribute worm; //웜

public paramWorm() {//생성자

//패널의 모양새를 결정하고 필요한 리스너를 추가한다.

}

public void actionPerformed(ActionEvent e) {

//실행버튼이 눌러졌을 때 하는 일을 정희하는 부분이다.

If(실행버튼 clicked){

//선택된 버튼들의 값을 읽고 그 특성에 맞게 worm을 결정한다.

//worm을 결정하고 host개수에 따라 thread를 생성하고 웜 트래픽을 생성한다.

}

}

}

Class WormAttribute public class wormAttribute {

int dest_port1; //목적 포트

int dest_port2; //,, 2번째

int dest_port3; //,, 3번째

int protocol; //6 TCP, 17 UDP, HTTP?

18년 5월 17/28 DP&NM Lab. POSTECH CS 702 Term Project Requirements ------

int interval; //Traffic Generation Interval- second

int scanning_rate; //packets per interval

int scaning_property; //Random:0, Sequential:1

int target_range; //Global:0, Local:1

int bodySize; //TCP SYN 64bytes, UDP ?

boolean spoofing=false; //true for spoofing, false for Real IP

//두 가지 생성자

public wormAttribute(){}

public wormAttribute(int port, int interval, int scanrate){

this.dest_port1 = port;

this.interval = interval;

this.scanning_rate = scanrate;

}

public void setProtocol(int prot){ // 프로토클 설정

}

public void setDestPort(int port1, int port2, int port3){//목적포트 설정

}

public void setInterval(int interval){//간격 설정

}

public void setScanRate(int rate){//스캐닝 속도 설정

}

public void setScanProperty(int scanpro){//스캐닝 정책 설정

}

public void setTargetRange(int range){ //스캐닝 범위 설정

}

public void setbodySize(int size){ //웜본체 크기 설정

}

public void setSpoofing(boolean spoofing){//스푸핑 여부 설정

}

public void setThread(){ //Thread 생성 및 패킷 전송

}

} class slammer extends wormAttribute{ //slammer 웜의 특성 설정

public slammer(){ //생성자

}

}

18년 5월 18/28 DP&NM Lab. POSTECH CS 702 Term Project Requirements ------

class CodeRed extends wormAttribute{//CodeRed 웜의 특성 설정

public CodeRed(){//생성자

}

} class Blaster extends wormAttribute{//Blaster 웜의 특성 설정

public Blaster(){//생성자

}

}

Class IP_Packet public class IP_Packet{

byte version; //IPversion, 4 bit, ip Header length 4; 0x45

byte tos; //type of servic;

short length; //ip leangth;

short id; //ip id

short flag; //ip_flag 3bit, ip_offset 13;

byte ip_ttl; //time-to live

byte ip_protocol; //protocol

short ip_checksum; //checksum

int srcaddr; // Source IP Address

int dstaddr; // Destination IP Address

public IP_Packet(){//생성자

version = 0x45;

tos=0;

length = 0;

id = 0;

flag = 0;

ip_ttl = 0;

ip_protocol = 0;

ip_checksum = 0;

}

public void setSrcaddr(int src){//source address

srcaddr = src;

}

public void setDstaddr(int dst){//destination address

dstaddr = dst;

18년 5월 19/28 DP&NM Lab. POSTECH CS 702 Term Project Requirements ------

}

public void setSize(short size){ //size 의 결정

length = size;

}

public void setProt(byte p){//프로토클의 설정

ip_protocol = p;

}

public void sent(){ //생성 패킷 전송

}

} class SYN_Packet extends IP_Packet{ //SYN 패킷

short srcport;

short dstport;

byte flag; // X TCP flags

public SYN_Packet(){

super();

super.setSize((short)64);

super.setProt((byte)6);

}

public void setSrcport(short port){

srcport = port;

}

public void setDstport(short port){

dstport = port;

}

public void setFlag(byte f){

flag = f;

}

} class Http_Packet extends IP_Packet{ //HTTP 패킷

short srcport;

short dstport;

byte flag;

String payload;

public Http_Packet(){

super();

18년 5월 20/28 DP&NM Lab. POSTECH CS 702 Term Project Requirements ------

super.setProt((byte)6);

}

public void setSrcport(short port){

srcport = port;

}

public void setDstport(short port){

dstport = port;

}

public void setFlag(byte f){

flag = f;

}

public void setPayload(String data){

payload = data;

}

} class UDP_Packet extends IP_Packet{//UDP 패킷

short srcport;

short dstport;

String payload;

public UDP_Packet(){

super();

super.setProt((byte)6);

}

public void setSrcport(short port){

srcport = port;

}

public void setDstport(short port){

dstport = port;

}

public void setPayload(String data){

payload = data;

}

}

5. Implementation

18년 5월 21/28 DP&NM Lab. POSTECH CS 702 Term Project Requirements ------

Generator의 구조

Worm Traffic Generator

Parameter User Friendly GUI Aggregation Traffic Generation 인터넷 웜 트래픽 특성 웜 성격을 결정하고 패킷을 생성하고 패러미터 선택 Thread를 생성하고 제 트래픽을 발생 어

– User Friendly GUI  사용자는 간단한 클릭이나 입력으로 인터넷 웜의 트래픽 성격을 결정한 다. – Parameter Aggregation  사용자가 선택한 패러미터에 근거하여 인터넷 웜을 발생하는 thread를 생성하고 제어한다. – Traffic Generation  IP layer 패킷을 생성하고 네트워크로 전송한다.

5.1 User Interface 5.1.1(초기화면) (주메뉴)

5.1.2 Major Worm에 의한 선택

18년 5월 22/28 DP&NM Lab. POSTECH CS 702 Term Project Requirements ------

5.1.3 Parameter에 의한 선택

5.2 Parameter Aggregation – Major Worms • Slammer Worm: – {UDP 1434, Global Random, Bandwidth-limited, No interval time} • CodeRed:

18년 5월 23/28 DP&NM Lab. POSTECH CS 702 Term Project Requirements ------

– {TCP 80, Global Random, 300 or 600 packets/interval , 21s interval} • Blaster: – {TCP 135, Local Sequential, Up to 300 packets/interval, 20s interval} – Parameters • Protocol (TCP/UDP) • Destination Ports • Scanning Rate • Scanning Property (Random/Sequential) • Scanning Targets (Global/Local) – Number of host infected (Thread)

5.3 Traffic Generation(C programming) – Destination IP generation – Packet manipulation – Send Packets • RAW Socket

5.4 필요한 기술요소들

18년 5월 24/28 DP&NM Lab. POSTECH CS 702 Term Project Requirements ------

6. Testing 6.1 실험환경 – Worm Traffic Generator: 개발한 툴을 탑재한 Host – Firewall: Generator 앞단에서 패킷 제어 Firewall – Bridge: 패킷 캡쳐하기 위한 부분 – WDS: Worm Detection System

Generator의 testing을 위하여 구축된 실험환경 6.2 Testing 6.2.1 사용된 트래픽 – Global-Random Scanning Traffic (2005년 12월 17일 0시23분) – Global-Sequential Scanning Traffic (2005년 12월 17일 1시 37분) – Local Random/Sequential Scanning Traffic (2005년 12월 17일 4시31분, 33분)

6.2.2 WDS에서 탐지결과 1. Global–Random-1434 UDP port-Unlimited Scanning Rate

18년 5월 25/28 DP&NM Lab. POSTECH CS 702 Term Project Requirements ------

U D P Random 웜의 목적지 주소 분포

300

250

200 소 주

이 150 바

째 번

두 100

50

0 0 50 100 150 200 250 300 첫 바이트 주소

2. Global–Sequential-445 TCP port-20s Interval

300 Sequential Worm의 목적지 주소

250 값 200 의 t e t

c 150 O

막 100 지

마 50

0 1 101 201 패킷 개수

3. Local Sequential/Random

로컬 랜덤 웜의 3,4 Octet 분포 3id Octet 300 로컬 Sequential 웜의 목적지주소 300 4th Octet

250 250 포 포 분

200 200 분

의 t 의 t e e t 150 t 150 c c O O

100 째 째 100 번 번 4 4 ,

3 50 50 0 0 1 101 201 301 401 501 601 701 801 901 0 50 100 150 200 250 300 패킷의 개수 3번째 Octet의 분포

7. Project 수행 인원

18년 5월 26/28 DP&NM Lab. POSTECH CS 702 Term Project Requirements ------

1. 신상정보 이름 소속 직책 최종학위 졸업 년도 조 룡권 포항공대, 컴퓨터공학과 석사과정 학사 2003

2. 진행한 관련 프로젝트 국가보안연구소-“인터넷 웜 전파 및 활동에 따른 네트워크 트래픽 특성 연구” 8. 프로젝트 추진 일정 기간: 2005. 11.7 ∼ 2005. 12.14

2005년 Duration (days) 월 ~11/9 ~11/16 ~11/30 ~12/14 연구내용 Proposal 2 Requirements 7 Detail Design 14 Implementation 14 Total 37

References [1] Darrel M.Kienzle, Matthew C.Elder, "Recent Worms: A Survey and Trend," WORM 2003 Session 1: Internet Worms: Past, Present and Future, October 27, 2003. [2] Z.Chen, L.Gao, K.Kwiat "Modeling the Spread of Active Worms," IEEE INFOCOM 2003, Session: Network Security, April,2003. [3] Charles Schmidt and Tom Darby,"The What, Why, and How of the 1988 Internet Worm, “ http://www.snowplow.org/tom/worm/worm.html, July 2001. [4] CERT, “CERT Advisory CA-2001-19 'Code Red' Worm Exploiting Buffer Overflow In IIS Indexing Service DLL," http://www.cert.org/advisories/CA-2001-19.html. [5] Moore, D, V.Paxson, S.Savage, C.Shannon, S.Staniford, N.Weaver, "The Spread of Sapphire/Slammer," http://www.cs.berkeley.edu/~nweaver/sapphire/. [6] CERT, "CERT Advisory CA-2001-26 Nimda Worm," http://www.cert.org/advisories/CA-2001-26.html. [7] Symantec, http://securityresponse.symantec.com/avcenter/venc/data/freebsd.scalper.worm.html. [8] CERT, "CERT Advisory CA-2003-04 MS-SQL Server Worm," http://www.cert.org/advisories/CA-2003- 04.html. [9] CERT, "CERT Advisory CA-2003-20 W32/Blaster worm" http://www.cert.org/advisories/CA-2003- 20.html. [10] Symantec, http://securityresponse.symantec.com/avcenter/venc/data/w32.sasser.b.worm.html.

18년 5월 27/28 DP&NM Lab. POSTECH CS 702 Term Project Requirements ------

[11] Symantec, http://securityresponse.symantec.com/avcenter/venc/data/w32.kibuv.worm.html. [12]N. C. Weaver. Warhol " Worms: The Potential for very fast internet plagues," http://www.cs.berkeley.edu/~nweaver/warhol.html, 2001. [13] David Moore, Colleen Shannon, Jeffery Brown, "Code-Red: A case study on the spread and victims of an Internet worm," Proc.2nd ACM Internet Measurement Workshop, ACM Press 2002, pp273-284, 2002. [14] Symantec, http://securityresponse.symantec.com/avcenter/venc/data/w32.welchia.worm.html [15] Symantec, http://securityresponse.symantec.com/avcenter/venc/data/w32.bobax.a.html [16] Moore, D, V.Paxson, S.Savage, C.Shannon, S.Staniford, N.Weaver, "Slammmer Worm Dissection: Inside the Slammer Worm" IEEE Security&Privacy, Vol.1 No.4 July-August 2003, 2003.

18년 5월 28/28 DP&NM Lab. POSTECH

Recommended publications