banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận mạng và thiết bị mạng DDoS và nguyên tắc phân tích gói tin  XML
  [Article]   DDoS và nguyên tắc phân tích gói tin 10/07/2013 00:03:12 (+0700) | #1 | 277324
[Avatar]
xnohat
Moderator

Joined: 30/01/2005 13:59:19
Messages: 1210
Location: /dev/null
Offline
[Profile] [PM] [Email] [WWW] [Yahoo!] [MSN]
DDoS và nguyên tắc phân tích gói tin

Như đã đề cập ở bài trước /hvaonline/posts/list/0/44934.html)

Giảm thiểu tác hại của DDoS có hai hướng chính:

1) Giảm thiểu bằng cách cản lọc những đặc điểm cụ thể.

2) Giảm thiểu bằng cách cản lọc theo ấn định số lần truy cập trong một khoản thời gian (nếu không tìm ra được đặc điểm cụ thể).


Từ những thông tin nào có thể giúp mình thực hiện việc giảm thiểu ấy? Cách khó nhất, tỉ mỉ nhất nhưng cũng chính xác nhất là lấy thông tin từ những gói tin bắt được trong lúc chúng tràn vào mục tiêu (để thực hiện việc DDoS).

Có lẽ một trong những công cụ phổ biến nhất ngày nay cho công việc bắt gói tin và phân tích gói tin đó là Wireshark (ngày xưa có tên là Ethereal). Công cụ này cho phép chúng ta sắp xếp gói tin theo:
- thời gian gói tin đi đến.
- theo nguồn IP của gói tin.
- theo dạng giao thức của gói tin.
- theo chiều dài của gói tin.
- và đi sâu vào tính chất của từng gói tin.

Tuỳ nhu cầu, tuỳ hoàn cảnh mà sử dụng biện pháp sắp xếp để phân tích. Đôi khi cần phải đổi từ cách sắp xếp gói tin từ dạng này sang dạng khác để có thể nắm bắt tính chất được xem là "đặc điểm cụ thể".

Tất nhiên, logs trên proxies, trên web server (như Apache, Nginx, IIS..v..v..) cũng có thể dùng để phân tích nhưng chúng thiếu hẳn những thông tin cụ thể về giao thức. Tuy vậy chúng có điểm lợi là đơn giản hơn, dễ phân tích hơn nhưng nếu muốn nắm rõ tính chất những gói tin thuộc dạng DDoS không thể không dùng Wireshark để bắt gói tin và phân tích gói tin.

Lấy một đoạn packets được dùng để tấn công một nạn nhân gần đây (5/7/2013), chúng ta có thể thấy gì?




- Các gói tin đã được sắp xếp (sort) theo nguồn (IP) ở đây đang tập trung vào phân tích nguồn 113.170.184.21.

- Nếu bấm vào dòng có giao thức là HTTP và có Info là "GET / HTTP/1.1" thì sẽ thấy có giá trị "User-Agent" hiện ra. Theo thông tin ở đây, đó là một điện thoại di động dạng Android và có địa phương (locale) là Canada (en-ca).

- Gói tin HTTP kia có chiều dài là 502 bytes (bao gồm chiều dài của gói tin TCP/IP tầng dưới).

- Nếu sử dụng tính năng "follow TCP stream" của gói tin cụ thể trên, bạn sẽ thấy một nhóm các gói tin được gởi / nhận và được ráp lại.

Nếu xoáy sâu xuống một chút, mình có thể thấy thêm đây là một gói ACK có PSH flag và có chiều dài là 448 bytes.




Nếu tiếp tục xem xét danh sách các request đi từ 113.170.184.21, bạn sẽ thấy nhiều gói tin có tính chất y hệt xảy ra nhiều lần. Đó là chuyện bình thường nhưng sự thể sẽ bất thường khi cùng một IP lại có User-Agent khác cùng gởi request trong cùng 1 giây đó và đặc biệt, chúng gởi request đến cùng một địa chỉ lặp đi lặp lại liên tục như: http://www.abc.com/ trong một khoảng thời gian.




Những thông tin trên có vẻ rất bình thường nhưng đó là một bức ảnh mẫu để so sánh và để đặt ra những câu hỏi giúp cho việc phân tích, ví dụ:

a. Tại sao một IP thuộc Việt Nam mà lại dùng bằng điện thoại Android có ấn định địa phương là Canada?

b. Tại sao một IP như trên lại có User-Agent khác có ấn định địa phương là từ Đan Mạch gởi nhiều request cùng một lúc đến cùng một địa chỉ URL?

c. Tại sao những HTTP requests kia có cùng những nhóm "length" y hệt nhau và lặp đi lặp lại?

d. Tại sao chúng có cùng giá trị Referer, thậm chí Referer ấy không tồn tại?

e. Có bao nhiêu requests xảy ra trong một giây, một phút, 5 phút đi cùng một IP có cùng một User-Agent?

f. Có bao nhiêu User-Agents khác nhau đi từ một IP trong một khoản thời gian nào đó?

g. Liệu những IP tấn công kia có phải là IP của một proxy có nhiều người dùng chung hay không?

v....v....v....

Nói chung, càng nhiều câu được đặt ra và trả lời càng giúp cung cấp các thông tin để hình thành những điểm đặc thù của dạng tấn công. Từ đó mới có thể hình thành biện pháp cản lọc.

1. Cản lọc trên tầng IP:
Là những cản lọc thuần tuý mang tính chất thuộc về tầng IP thay vì những "string" và "text" thấy được ở tầng application (sau khi các packets đã gom lại hoàn chỉnh). Ví dụ, bạn thống kê được có 1 triệu requests đánh tới "index.php" có mấy chục User-Agents khác nhau và những requests này thuộc dạng ACK-PSH và có chiều dài chung là 488, 502, 515, 576, 590 (chẳng hạn). Trong khi đó, các requests (được xem là hợp lệ và sạch sẽ) của người dùng bình thường có chiều dài khác. Bạn có thể có hai chọn lựa:

1.1 Cản cụ thể các packets ACK-PSH có chiều dài như trên vì bạn (biết) rằng người dùng đến trang web của bạn không có mấy ai xài đổ địa phương là Canada, Đan Mạch, Belarus...v.v.v.. Chọn lựa này có thể cản nhầm một số người nhưng trong tình trạng bị đập nặng nề, đó là một chọn lựa nhằm cứu vãn số người dùng còn lại.

1.2 Cản tổng quát dựa trên số lần truy cập trong 1 giây (hoặc một phút, hoặc một khoản thời gian nào đó). Lý là người dùng bình thường chẳng có ai liên tục truy cập hàng chục lần đến trang chủ trong mỗi giây hoặc vài trăm lần đến một hoặc nhiều URL trong một phút. Chẳng có ai có thể đọc nhanh như thế.


2, Cản lọc trên tầng application:
Là những cản lọc cụ thể và chính xác những "string" và "text" thấy được trên logs của các web server. Ví dụ, bạn thống kê được có 1 triệu requests đánh tới "index.php" có mấy chục User-Agents khác nhau và bạn biết rằng những User-Agents ấy trước giờ ít xuất hiện vì không có mấy ai xài đổ địa phương là Canada, Đan Mạch, Belarus...v.v.v.. Bạn cũng có hai chọn lựa:

2.1 Cản cụ thể các User-Agents lạ như đã thống kê. Chọn lựa này có thể cản nhầm một số người nhưng trong tình trạng bị đập nặng nề, đó là một chọn lựa nhằm cứu vãn số người dùng còn lại. Ngày nay, biện pháp cản lọc trên tầng application có vô số các công cụ, tiên ích, plugins, modules...v..v... giúp cho việc này.

2.2 Cản tổng quát dựa trên số lần truy cập trong 1 giây (hoặc một phút, hoặc một khoản thời gian nào đó), y hệt với nguyên tắc phần 1.2 ở trên.

Conmale
[Up] [Print Copy]
  [Article]   DDoS và nguyên tắc phân tích gói tin 10/07/2013 07:55:44 (+0700) | #2 | 277327
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
Có bạn nào hứng thú trả lời mấy câu hỏi này không nhỉ?

e. Có bao nhiêu requests xảy ra trong một giây, một phút, 5 phút đi từ cùng một IP và có cùng một User-Agent?

f. Có bao nhiêu User-Agents khác nhau đi từ một IP trong một khoản thời gian nào đó?
 
Let's build on a great foundation!
[Up] [Print Copy]
  [Article]   DDoS và nguyên tắc phân tích gói tin 10/07/2013 11:07:47 (+0700) | #3 | 277334
[Avatar]
mylove14129
Member

[Minus]    0    [Plus]
Joined: 27/04/2008 19:07:19
Messages: 106
Offline
[Profile] [PM]

quanta wrote:
Có bạn nào hứng thú trả lời mấy câu hỏi này không nhỉ?

e. Có bao nhiêu requests xảy ra trong một giây, một phút, 5 phút đi từ cùng một IP và có cùng một User-Agent?

f. Có bao nhiêu User-Agents khác nhau đi từ một IP trong một khoản thời gian nào đó?
 
 

Không rõ quanta có tool nào tự động thực hiện việc này không, thường mình hay sử dụng splunk filter khá tốt nhưng nếu yêu cầu phức tạp quá thì có lẽ nên làm một cái script có khi tốt hơn
[Up] [Print Copy]
  [Article]   DDoS và nguyên tắc phân tích gói tin 11/07/2013 01:06:01 (+0700) | #4 | 277339
[Avatar]
xnohat
Moderator

Joined: 30/01/2005 13:59:19
Messages: 1210
Location: /dev/null
Offline
[Profile] [PM] [Email] [WWW] [Yahoo!] [MSN]

mylove14129 wrote:

quanta wrote:
Có bạn nào hứng thú trả lời mấy câu hỏi này không nhỉ?

e. Có bao nhiêu requests xảy ra trong một giây, một phút, 5 phút đi từ cùng một IP và có cùng một User-Agent?

f. Có bao nhiêu User-Agents khác nhau đi từ một IP trong một khoản thời gian nào đó?
 
 

Không rõ quanta có tool nào tự động thực hiện việc này không, thường mình hay sử dụng splunk filter khá tốt nhưng nếu yêu cầu phức tạp quá thì có lẽ nên làm một cái script có khi tốt hơn 


Với lưu lượng DDoS lớn và kích thước log phì đại nhanh khủng khiếp thì việc dùng script để phân tích log có vẻ là thiếu hiệu quả vô cùng smilie
iJust clear, "What I need to do and how to do it"/i
br
brBox tán gẫu dời về: http://www.facebook.com/hvaonline
[Up] [Print Copy]
  [Article]   DDoS và nguyên tắc phân tích gói tin 11/07/2013 07:07:40 (+0700) | #5 | 277342
whisky9x
Member

[Minus]    0    [Plus]
Joined: 07/07/2013 10:29:09
Messages: 6
Offline
[Profile] [PM]
Em nghĩ ta xây dựng một hệ thống để lưu trữ log của tất cả các dịch vụ (Hadoop chẳng hạn). Khi cần thì lôi ra để phân tích.
[Up] [Print Copy]
  [Article]   DDoS và nguyên tắc phân tích gói tin 11/07/2013 09:29:56 (+0700) | #6 | 277343
[Avatar]
mylove14129
Member

[Minus]    0    [Plus]
Joined: 27/04/2008 19:07:19
Messages: 106
Offline
[Profile] [PM]

xnohat wrote:

mylove14129 wrote:

quanta wrote:
Có bạn nào hứng thú trả lời mấy câu hỏi này không nhỉ?

e. Có bao nhiêu requests xảy ra trong một giây, một phút, 5 phút đi từ cùng một IP và có cùng một User-Agent?

f. Có bao nhiêu User-Agents khác nhau đi từ một IP trong một khoản thời gian nào đó?
 
 

Không rõ quanta có tool nào tự động thực hiện việc này không, thường mình hay sử dụng splunk filter khá tốt nhưng nếu yêu cầu phức tạp quá thì có lẽ nên làm một cái script có khi tốt hơn 


Với lưu lượng DDoS lớn và kích thước log phì đại nhanh khủng khiếp thì việc dùng script để phân tích log có vẻ là thiếu hiệu quả vô cùng smilie 

smilie Đúng vậy, nhưng ở đây chúng ta đang nói đến việc dùng wireshark capture gói tin lúc đang bị tấn công để phân tích( để nhận dạng chính xác thông tin các trường của gói tin), mình nghĩ việc sử dụng wireshark( hoặc tcp dump) để capture một lượng gói tin quá lớn sẽ có thể sẽ ảnh hưởng đến tài nguyên của máy chủ. Nên giải pháp dùng script sẽ dùng tốt trong trường hợp này( capture bằng wireshark một vài phút sau đó chạy script để thống kê).
Trường hợp đã lưu thành log, khi đó lượng dữ liệu là cực lớn. Chúng ta bắt buộc phải sử dụng một công cụ có khả năng index cực nhanh trong trường hợp này sử dụng splunk là hợp lý.
[Up] [Print Copy]
  [Article]   DDoS và nguyên tắc phân tích gói tin 15/05/2014 15:36:50 (+0700) | #7 | 280663
alphax
Member

[Minus]    0    [Plus]
Joined: 02/07/2013 09:52:12
Messages: 6
Offline
[Profile] [PM]
This post is set hidden by a moderator because it may be violating forum's guideline or it needs modification before setting visible to members.
[Up] [Print Copy]
  [Article]   DDoS và nguyên tắc phân tích gói tin 28/05/2014 15:15:54 (+0700) | #8 | 280714
explorer88
Member

[Minus]    0    [Plus]
Joined: 06/11/2010 22:32:47
Messages: 75
Offline
[Profile] [PM]

quanta wrote:
Có bạn nào hứng thú trả lời mấy câu hỏi này không nhỉ?

e. Có bao nhiêu requests xảy ra trong một giây, một phút, 5 phút đi từ cùng một IP và có cùng một User-Agent?

f. Có bao nhiêu User-Agents khác nhau đi từ một IP trong một khoản thời gian nào đó?
 
 


Câu hỏi của anh quanta có ai trả lời không ạ ? Bây giờ em cũng muốn thu thập các thống kê kiểu này từ wireshark mà không biết cách ?
[Up] [Print Copy]
  [Article]   DDoS và nguyên tắc phân tích gói tin 01/06/2014 01:22:53 (+0700) | #9 | 280739
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

explorer88 wrote:
Bây giờ em cũng muốn thu thập các thống kê kiểu này từ wireshark mà không biết cách ? 

Bạn thử dùng `tshark` http://www.wireshark.org/docs/man-pages/tshark.html) kết hợp với `awk`, `sort`, `uniq`, ... xem.
Let's build on a great foundation!
[Up] [Print Copy]
  [Article]   DDoS và nguyên tắc phân tích gói tin 14/06/2014 10:21:49 (+0700) | #10 | 280824
explorer88
Member

[Minus]    0    [Plus]
Joined: 06/11/2010 22:32:47
Messages: 75
Offline
[Profile] [PM]
Theo tinh thần open source, em chia sẻ sơ qua cách thức:

Trước hết chạy tcpdump để capture gói tin:
sudo tcpdump -vv -x -w file.pcap | strings

-vv để thu thập càng nhiều thông tin càng tốt
-x để lấy cả data packet
Ở đây strings là lệnh quan trọng để convert data của tcp packet ra http packet hoàn chỉnh

Ví dụ để hiển thị tất cả user agent, bạn cần chuyển đổi file pcap thành file text dùng tshark sau đó thực hiện awk, grep, sed, uniq, sort... trên file đó:

tshark -r file.pcap -T fields -e http.user_agent | strings | sort | uniq

Lý do có strings để loại bỏ các dòng rỗng. Vì với những dòng không có user agent (ví dụ tcp three way handshake) thì tshark sẽ hiện thị dòng rỗng.

Tuỳ vào nhu cầu phân tích mà bạn sẽ truyền giá trị tham số -e khác nhau và áp dụng các cú pháp grep, cat, sed... khác nhau
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|