Rodzaje ataków internetowych
agresor@narf.shl.pl
Włamanie jest typem ataku, który obejmuje kradzież prywatnych lub poufnych informacji, dowolną zmianę lub usunięcie danych i zmianę ustawień konfiguracyjnych. Podczas ataku tego typu może również zostać zablokowane konfigurowanie zabezpieczeń, na przykład zamiana programów konfiguracyjnych, w celu ułatwienia następnych włamań…
Wraz z rozwojem komunikacji sieciowej rozwijają się także ataki ukazujące słabości tych nowo powstałych rozwiązań. Możliwe jest, że podział ataków utrzyma się taki sam, lecz ich rodzaj oraz klasyfikacja zmienia się poprzez mieszanie poszczególnych ich anatomii. Coraz nowsze ataki łączą w sobie wiele rodzajów lub są udoskonaleniem swoich poprzedników. Niektóre z ataków już nie pozwalają na przyporządkowanie siebie do istniejących grup, co zmusza do tworzenia nowych klasyfikacji, które wraz z upływem czasu będą się stawać coraz większe. Niżej wymienione rodzaje ataków są tylko nielicznymi przykładami z jakimi możemy się spotkać użytkując komputery, a co za tym idzie Internet. Poza nimi istnieje jeszcze wiele innych ataków, które posiadają własne rozwiązania w stosunku do stosowanych technik sieciowych oraz ich zabezpieczeń.
I. Ataki możemy podzielić ze względu na:
1. Miejsce ich przeprowadzania:
a) Zewnętrzne (zdalne) – ataki przeprowadzane są z systemów znajdujących się poza atakowaną siecią, na przykład atak na sieć firmy NARF.Inc odbywa się z sieci firmy Agresory.Inc.
b) Wewnętrzne (lokalne) – ataki przeprowadzane są z systemów znajdujących się w atakowanej sieci, na przykład atak na główny serwer firmy NARF.Inc odbywa się z serwera działu zaopatrzenia tej samej firmy.
Celem takich ataków są poszczególne komputery bądź serwer główny. Konsekwencjami są zwykle przerwy w pracy sieci lokalnej, uszkodzenie poszczególnych (bądź wszystkich) końcówek serwera, a co za tym idzie – całej sieci, co powoduje wielogodzinne przerwy w pracy. Skutki mogą być niewinne i skończyć się na zawieszeniu poszczególnych komputerów czy nawet całej sieci, ale może to także prowadzić do fizycznego uszkodzenia sprzętu.
2. Zamiar:
a) Zamierzony – atakujący zdaje sobie sprawę z tego, co robi i jakie konsekwencje mogą z tego wyniknąć, na przykład atak w celu uzyskania konkretnie wytyczonych informacji.
b) Niezamierzony – atakujący przypadkowo i nieświadomie dokonuje ataku, na przykład jeden z użytkowników serwera przez błąd programu obchodzi system autoryzacji uzyskując prawa administratora.
3. Skutek:
a) Udany – rozpoczęty atak przez atakującego kończy się osiągnięciem zamierzonego celu, na przykład poprzez przeskanowanie sieci wykrywa lukę w zabezpieczeniu, którą wykorzystuje do ataku, który okazuje się trafny i kończy się powodzeniem, zaciera za sobą ślady i opuszcza atakowany cel. Udany skutek ataku możemy podzielić na:
- Aktywny – w wyniku ataku system komputerowy traci integralność, na przykład atak włamywacza, który usuwa pewną ilość ważnych danych oraz powoduje zmianę działania programów. Atakiem aktywnym może być także modyfikowanie strumienia danych lub tworzenie danych fałszywych.
- Pasywny – atak ten polega na wejściu do systemu bez dokonywania żadnych zmian, na przykład atak włamywacza, który kopiuje pewną ilość ważnych danych nie powodując zmian w działaniu programów. Atakiem pasywnym może być także podsłuchiwanie lub monitorowanie przesyłanych danych. W tym przypadku celem osoby atakującej jest odkrycie zawartości komunikatu. Typowym atakiem pasywnym może być analiza przesyłu danych (traffic analysis). Ataki pasywne są bardzo trudne do wykrycia, ponieważ nie wiążą się z modyfikacjami jakichkolwiek danych.
b) Nieudany – rozpoczęty atak przez atakującego kończy się nie osiągnięciem zamierzonego celu, na przykład poprzez przeskanowanie sieci wykrywa lukę w zabezpieczeniu, którą wykorzystuje do ataku, który okazuje się nietrafny i kończy się niepowodzeniem, brak możliwości zatarcia śladów powoduje ryzyko wykrycia ataku jak i samego atakującego.
4. Przepływ informacji:
a) Przerwanie (interruption) – jest atakiem na dyspozycyjność polegający na częściowym zniszczeniu systemu lub spowodowaniu jego niedostępności (niezdolności do normalnego użytkowania). Przykładem tutaj może być fizyczne zniszczenie fragmentu komputera lub sieci, np. uszkodzenie dysku, przecięcie linii łączności między komputerem a drugim obiektem, lub uniemożliwienie działania systemu zarządzania plikami.
[##] ----------x---------> [##]
[##] | [##]
| | |
Użytkownik Agresor Serwer
b) Przechwycenie (interception) – jest atakiem opierającym się na poufności i występuje wtedy, gdy ktoś niepowołany uzyskuje dostęp do zasobów naszego systemu komputerowego. Przykładem tutaj może być podsłuch pakietów w celu przechwycenia danych w sieci i nielegalne kopiowanie plików lub programów.
[##] ----------|---------> [##]
[##] | [##]
| \ / |
Użytkownik Agresor Serwer
c) Modyfikacja (modification) – jest atakiem opierającym się na nienaruszalności polegający na zdobyciu dostępu do zasobów przez niepowołaną osobę, która wprowadza do nich jakieś zmiany w celu uzyskania wyższych praw lub utrzymaniu dostępu do danego systemu. Przykładem tutaj może być zmiana wartości w pliku z danymi, wprowadzenie zmiany w programie w celu wywołania innego sposobu jego działania lub modyfikacja komunikatów przesyłanych w sieci.
[##] ---------\ /--------> [##]
[##] | [##]
| | |
Użytkownik Agresor Serwer
d) Podrobienie (fabrication) – podrobienie jest atakiem opierającym się na autentyczności, podczas przesyłania danych z jednego do drugiego komputera trzeci komputer blokuję uniemożliwiając mu dalszy przesył, a sam wprowadza do systemu drugiego komputera fałszywe obiekty. Przykładem tutaj może być wprowadzenie nieautentycznych komunikatów do sieci lub dodanie danych do pliku.
[##] -------x-> /--------> [##]
[##] | [##]
| | |
Użytkownik Agresor Serwer
II. Ze względu na wyżej wymieniony podział rozróżniamy następujące rodzaje ataków:
1. Skanowanie – sondowanie atakowanego systemu poprzez przegląd jego adresów sieciowych oraz portów sieciowych. Skanowanie adresów sieciowych polega na przeglądaniu kolejnych adresów IP z złożonego zakresu w celu wytypowania ofiary lub też poznania topologii atakowanej sieci. Z reguły można poznać topologie części sieci niechronionej, listę serwisów TCP/UDP uruchomionych na identyfikowanym serwisie, architekturę systemu (x86, Sparc, Alpha itp.), typ systemu operacyjnego. Najprostsze skanowanie (i najłatwiej blokowane) można przeprowadzić za pomocą protokołu ICMP (Internet Message Protocol – internetowy protokół komunikatów kontrolnych) typu 8, czyli wysyłany jest popularny Ping (ICMP echo_request), a istniejący host powinien odpowiedzieć ICMP typu 0 (ICMP echo_replay), jeśli istnieje lub nie są zablokowane odpowiedzi, w hoście lub pośredniczącym urządzeniu. Skanowanie portów sieciowych polega na przeglądaniu kolejnych portów sieciowych systemu komputerowego w celu uzyskania informacji na temat, jakie porty są otwarte i jakie usługi są realizowane przez dany system komputerowy. Jest to pomocne przy określaniu usług TCP (Transmission Control Protocol) i UDP (User Datagram Protocol) działających na wybranym za cel komputerze; typu systemu operacyjnego, z którego korzysta wybrany za cel komputer; konkretnych aplikacji lub wersji świadczonych usług. Wiedza zdobyta w ten sposób może również pomóc określeniu typu urządzeń systemu zabezpieczeń. Skanowanie można zrealizować w prosty sposób poprzez badanie rezultatów funkcji connect(). Funkcja ta służy do inicjowania połączenia sieciowego między gniazdem (socket) programu klienta i odległym gniazdem serwera. Metoda ta jest najprostsza i jest łatwa do wykrycia przez skanowany system. Często zdarzą się tak, że agresor badający dany host, aby ukryć swoje działanie, bardzo często nie ogranicza się do kolejnego sprawdzania portów – większość programów typu IDS wykrywa sekwencyjne połączenia się z jednego adresu zródłowego do kolejnych portów w krótkich odstępach czasu. Dlatego też są stosowane metody mające na celu ukrywanie skanowania w szumie zwykłych połączeń. Do najprostszych należy skanowanie losowych portów, dzięki czemu staje się ono trudniejsze do wykrycia. Inną metodą jest wydłużenie czasu pomiędzy kolejnymi próbami połączenia z następnym portem, np. dwóch pakietów na dzień. Jeszcze inną techniką jest wykorzystywanie fragmentacji pakietów. Dokument RFC 791 określa minimalny rozmiar defragmentowanego pakietu na 8 oktetów, czyli znacznie mniej niż nagłówek. Niektóre filtry pakietów nie defragmentują odbieranych danych (choćby z obwany przed atakiem DoS z zastosowaniem bardzo silnej fragmentacji) i dzięki temu zdefragmentowane pakiety nie są odpowiednio analizowane przez filtr. Ochroną przed tego typu atakiem jest uaktywnienie rutera lub zapory ogniowej do defragmentowania wszystkich odbieranych pakietów. Należy pamiętać, że oprócz wymienionych wyżej metod agresor może fałszować adres zródłowy pakietu, zmieniając go na inny niż rzeczywisty. Metoda ta ma tę wadę, że musi on znajdować się w sieci, do której należy fałszywy adres – w przeciwnym razie rutery prześlą go w inne miejsce.
a) TCP Echo Port – próba połączenia z portem 7 TCP Echo. Ustanowienie połączenia objawia się wysyłaniem do klienta tekstu Hello. Otrzymanie odpowiedzi oznacza, że host istnieje i jest to prawdopodobnie *nix. Brak odpowiedzi nic nie mówi, ponieważ port ten jest rzadko otwarty.
b) TCP connect – najprostsza technika skanowania portów. Nazwa tej techniki wywodzi się od funkcji systemowej connect, służącej do nawiązania stabilnego połączenia z danym portem. Jest to najprostsza metoda polegająca na uzyskaniu pełnego połączenia z danym portem. Nawiązanie połączenia przebiega w trzech etapach: 1) Komputer próbujący nawiązać połączenia wysyła pakiet TCP z flagą SYN do docelowego hosta i interesującego go portu. 2) Następnie oczekuje, jaki pakiet zostanie odesłany w odpowiedzi: – jeżeli jest to SYN/ACK – to zwykle oznacza, że port jest otwarty i jest w stanie nasłuchu (listening); – jeżeli jest to RST/ACK, to oznacza, że port jest zamknięty i połączenie zostaje zerwane. Trzystopniowy etap połączenia (three way handshake) jest kończony – jeżeli odebrany został pakiet SYN/ACK – przez wysłanie potwierdzenia odebrania tego pakietu (wysyłanie pakietu potwierdzającego ACK). Połączenie jest zamykane pakietem RST. Ten typ połączenia jest stosunkowo łatwy do wykrycia. Ataki tego typu są też łatwe do wykrycia przez zaawansowane mechanizmy zapór ogniowych, na których mogą być skuteczne blokowane. Do ich niewątpliwie mocnych stron należy bardzo duża szybkość i możliwość przeprowadzenia przez zwykłego użytkownika.
c) TCP SYN – skanowanie półotwarte – technika ta jest odmianą techniki connect. Inicjowana jest tylko połowa procedury połączenia TCP: wysyłany jest pakiet TCP z ustawioną flagą SYN. Port docelowy odpowie, jeśli jest otwarty: pakietem z ustawionymi flagami SYN i ACK, natomiast zamknięty flagami RST i ACK. Komputer skanujący wysyła RST/ACK, dzięki czemu połączenie nie zostanie nawiązane. Otrzymanie odpowiedzi mówi o istnieniu hosta, brak odpowiedzi sugeruje nieistnienie hosta lub filtrowanie ruchu. Zaletą tego skanowania jest to, że częściowe połączenie nie jest rejestrowane przez sporą liczbę systemów, aczkolwiek większość wyspecjalizowanych systemów ochrony jest w stanie je odnotować oraz zablokować (blokowanie pakietów z flagą SYN jest pożądane ze względu na ochronę przed atakami typu SYN Flood). Do wykonania skanowania potrzebne są uprawnienia superużytkownika, a metoda jest szybsza od metody connect.
d) TCP ACK – do kontroli działania zapory ogniowej – wysyłanie pakietu TCP z ustawioną flagą ACK w odpowiedzi niezależnie od stanu portu otrzymujemy pakiet z flagą RST. Otrzymanie odpowiedzi mówi o istnieniu hosta, brak odpowiedzi sugeruje brak hosta lub filtrowanie ruchu.
e) TCP SYN ACK (stealth scanning) – wysyłanie pakietu z ustawionymi flagami SYN i ACK niezależnie od stanu portu otrzymujemy pakiet z flagą RST (wykorzystanie zalecenia RFC 793, określającego, że zamknięty port powinien odpowiedzieć pakietem RST na każdy pakiet niezgodny z kolejnością nawiązywania połączenia TCP). Otrzymanie odpowiedzi mówi o istnieniu hosta, brak odpowiedzi sugeruje nieistnienie hosta lub filtrowanie ruchu, może również sugerować ze host korzysta z kodu sieciowego BSD. Do techniki tej atakujący musi posiadać uprawnienia superużytkownika do utworzenia Raw socket, a większość zapór ogniowych blokuje wszelkie pakiety SYN kierowane na zabronione porty.
f) TCP FIN (stealth scanning) – niektóre filtry i firewalle są odporne nawet na SYN scanning dlatego wtedy korzysta się z metody FIN. Jest ona pozbawiona wad poprzedniej metody – jest bardzo trudna zarówno do wykrycia, jak i do zablokowania. Skanowanie to polega na przesyłaniu pakietu z ustawioną flagą FIN. Jeżeli w odpowiedzi dostaniemy pakiet RST i ACK oznacza to, że port nie istnieje, jeżeli nie otrzymamy żadnej odpowiedzi, oznacza to, że port istnieje. Nie pozostawia żadnych śladów w logach systemowych. Aby wykryć skanowanie FIN trzeba użyć dodatkowych programów. Otrzymanie odpowiedzi mówi o istnieniu hosta, brak odpowiedzi sugeruje nieistnienie hosta, otwarcie portu lub filtrowanie ruchu. Metoda ta wykorzystuje dość powszechny błąd w obsłudze stosu TCP/IP, nie zawsze jest jednak skuteczna – niektóre implementacje (np. Windows) są odporne na tego typu skanowanie.
g) TCP NULL (stealth scanning) – testuje odpowiedz na pakiet, z wyłączonymi wszystkimi flagami nagłówka. Zgodnie z RFC 793, jeśli port istnieje powinno otrzymać się pakiet RST i ACK w odpowiedzi. Jednak szereg systemów ma wadliwą implementację TCP/IP (Windows, CISCO, BSDI, HP/UX, MVS i IRIX) i po otrzymaniu tego pakietu na otwartym porcie także odpowiadają pakietem RST. Otrzymanie odpowiedzi mówi o istnieniu hosta, brak odpowiedzi sugeruje nieistnienie hosta, otwarcie portu lub filtrowanie ruchu, zabezpieczenie jest identyczne jak w poprzednich wypadkach.
h) TCP XMAS Christmas Tree (stealth scaning) – wysyłanie tzw. pakietu choinkowego. Testuje odpowiedz na pakiet, z wyłączonymi wszystkimi bitami nagłówka (SYN, ACK, FIN, RST, URG, PSH), wysyłany na zamknięty port. W odpowiedzi otrzymujemy pakiet z ustawionymi flagami RST i ACK. Otrzymanie odpowiedzi mówi o istnieniu hosta, brak odpowiedzi sugeruje nieistnienie hosta, otwarcie portu, że systemem hosta jest Windows lub filtrowanie ruchu (systemy Windows także odpowiadają pakietem RST).
i) TCP SYN FIN (fragmentation scanning) – nie jest to nowa metoda, tylko modyfikacja dwóch technik (SYN i FIN scanning). W związku z tym, że niektóre firewalle odrzucają pojedyncze pakiety SYN i FIN, można próbować je rozdrobnić na mniejsze fragmenty IP rozdzielając nagłówek TCP na kilka mniejszych części, aby były trudniejsze dla filtrów pakietów. Niestety niektóre programy mogą mieć trudności z tak małymi pakietami, na niektóre sieci technika ta działa, a w innych powoduje ich zawieszenie.
j) TCP Reverse Ident Scanning – metoda polega na nawiązaniu pełnego połączenia TCP i próbie ustalenia, poprzez protokół ident (RFC 1413), właściciela procesu na danym porcie. Jeśli właścicielem jest root wtedy możemy próbować przeprowadzić atak właśnie na ten port. Jest to bardzo ważna informacja dla agresora – największe znaczenie mają dla niego usługi pracujące na prawach superużytkownika, a to dlatego, że atak na taką usługę (np. przez przepełnienie bufora lub nadpisanie stosu) umożliwi mu otrzymanie uprawnień równych użytkownikowi danego procesu.
k) UDP Echo Port – próba połączenia z portem 7 UDP Echo. Ustanowienie połączenia objawia się wysyłaniem do klienta własnego datagramu. Otrzymanie odpowiedzi oznacza, że host istnieje i jest to prawdopodobnie *nix. Brak odpowiedzi nic nie mówi, ponieważ port ten jest rzadko otwarty.
l) UDP Closed Ports – wykorzystywana jest odpowiedz zamkniętego, nienasłuchującego portu UDP. Port taki powinien dać odpowiedz ICMP_PORT_UNREACH. Otrzymanie odpowiedzi pozwala stwierdzić istnienie hosta. Brak odpowiedzi – port jest otwarty; host nie istnieje; zagubiono datagram UDP.
m) UDP ICMP port unreachable scanning – w związku z tym, że protokół UDP nie jest protokołem połączeniowym, nie można stosować tych samych technik skanowania, jak dla protokołu TCP. Przeprowadzenie skanowania UDP jest trudniejsze w realizacji, mimo że sam protokół jest prostszy. Dzieje się tak dlatego, że otwarte porty nie wysyłają potwierdzenia w odpowiedzi na żądanie, a porty zamknięte nie wysyłają pakietów z komunikatem o błędzie. W protokole UDP obsługa błędów transmisji i retransmisja uszkodzonych lub zgubionych pakietów spada na aplikacje. Na szczęście większość systemów zwraca komunikat ICMP_PORT_UNREACH, kiedy wysyłane są pakiety do portu zamkniętego. W ten sposób można się dowiedzieć, które porty są zamknięte i poprzez eliminację wykazać, które mogą być otwarte. Technika ta jest stosunkowo wolna, ponieważ w specyfikacji dotyczącej protokołu IP, określony jest pewien limit wysyłanych komunikatów ICMP w danym przedziale czasowym. Dodatkowo, aby mieć dostęp do komunikatów ICMP, należy posiadać uprawnienia roota. Ten rodzaj skaningu ma najczęściej zastosowanie przy szukaniu usług RPC na portach innych niż wskazywane przez portmapper, albo gdy jest on wyłączony. Czasami dzięki tej technice możliwe jest ominięcie firewalli. Stosowany jest on w odniesieniu do wysokich portów, na których nie ma usług pracujących z protokołem UDP. Jednak większość ruterów blokuje pakiety UDP w sieci Internet, przepuszczając tylko pakiety kierowane na port 53 (DNS). Sporo serwisów nie odpowiada prawidłowo, nawet jeżeli są prawidłowo testowane. Zapory ogniowe zwykle blokują pakiety UDP (z wyjątkiem zapytań DNS), a także – ze względu na małą popularność pakietów UDP – łatwo je wykrywają. Prawidłowe zachowanie systemów to limitowana odpowiedz za pomocą pakietu błędu ICMP – zgodnie z zaleceniami w RFC 1812. Na przykład Linuks zezwala na wygenerowanie 80 pakietów ICMP sygnalizujących błąd w ciągu 4 s i nie częściej niż co 250 ms (z tego powodu jest to metoda bardzo powolna).
n) UDP recvform() & write() scanning – metoda ta polega na wykorzystaniu faktu, że niektóre funkcję systemowe zwracają inne komunikaty przy próbie połączenia z portem otwartym, a inne z zamkniętym, np. powtórne użycie funkcji write() do portu zamkniętego zwróci błąd. Również funkcja recvform() zazwyczaj zwraca EATGAIN (Try Again) jeśli błąd ICMP nie został odebrany oraz ECONNREFUSED (Connection refused) gdy został odebrany. Technika ta może być używana przez użytkowników nie posiadających uprawnień roota.
o) ICMP Echo Request Type 8 – Ping. Wysyłany datagram ICMP echo_request a otrzymujemy od aktywnego hosta odpowiedz ICMP Typ 0 echo_replay. Otrzymanie odpowiedzi mówi o istnieniu hosta, brak odpowiedzi sugeruje nieistnienie hosta lub filtrowanie ruchu. Jest to najprostsza i jednocześnie najmniej pewna metoda badania aktywności systemu – obecnie bardzo dużo systemów sieciowych celowo ma zablokowaną odpowiedz na pakiety ICMP echo request. Są one blokowane na routerach brzegowych lub zaporach ogniowych.
p) ICMP Broadcast – wysyłanie datagram ICMP Typ 8 echo_request do sieci lub na adres broadcast (rozgłoszeniowy – okólnikowy), otrzymujemy echo_replay od aktywnych hostów. Otrzymanie odpowiedzi mówi o istnieniu hosta, brak odpowiedzi sugeruje nieistnienie hosta, że systemem hosta jest Windows lub ustawione jest filtrowanie ruchu. Wysyłając taki pakiet na adres rozgłoszeniowy, można w pewnych warunkach określić liczbę komputerów w sieci. Większość systemów operacyjnych odpowiada na pakiet ICMP echo request nadany na adres okólnikowy (systemami, które nie reagują na taki pakiet, jest rodzina produktów Microsoft). Blokowanie pakietów ICMP przychodzących na adres rozgłoszeniowy jest ważne z uwagi na możliwość przeprowadzenia ataku typu DDoS, Smurf lub podobnych, polegających na wzmocnieniu ataku na wybrany host przez sieć kilkudziesięciu lub setek “nieświadomych” komputerów, działających we wspólnej sieci.
q) ICMP Router Solicitation Type 10 – wysyłanie ICMP Typ 10 do hosta routera lub hosta będącego routerem powoduje odpowiedz. Otrzymanie odpowiedzi mówi o istnieniu routera, brak odpowiedzi sugeruje nieistnienie routera, wyłączona jest implementacja ICMP Router Solicitation lub filtrowanie ruchu.
r) ICMP Timestamp Request Type 13 – wysyłanie zadania Timestamp (pytanie o aktualny czas) do hosta, który zwraca nam aktualny (systemowy) czas. Otrzymanie odpowiedzi mówi o istnieniu hosta, brak odpowiedzi sugeruje nieistnienie hosta, że systemem hosta jest Windows lub filtrowanie ruchu.
s) ICMP Information Request Type 15 – odpytywanie hosta, aby wykryć jego adres sieciowy. Otrzymanie odpowiedzi mówi o istnieniu hosta, brak odpowiedzi sugeruje nieistnienie hosta, że systemem hosta jest Windows lub filtrowanie ruchu.
t) ICMP Address Mask Request Type 17 – zadanie adresu maski podsieci hosta. Otrzymanie odpowiedzi sugeruje istnienie hosta, brak odpowiedzi sugeruje nieistnienie hosta, że systemem hosta jest *nix lub filtrowanie ruchu.
u) Timedout Packet Fragmentation – wysyłanie jednego pakietu z pofragmentowanym offsetem, po przekroczeniu czasu oczekiwania host zwróci komunikat, iż zbieranie fragmentów przekroczyło zadany czas. Otrzymywanie odpowiedzi mówi o istnieniu hosta, brak odpowiedzi sugeruje nie istnienie hosta.
v) Invalid IP Heder Length – Użycie nieprawidłowej długości nagłówka prowadzi do wygenerowania przez zdalny komputer pakietu ICMP Type 12 z kodem błędu 0 i 2. Otrzymanie odpowiedzi mówi o istnieniu hosta, brak odpowiedzi sugeruje nieistnienie hosta.
w) Invalid IP Field Values – Wysyłanie pakietu z błędną wartością w polu IP PROTO np. 0 co powoduje odesłanie błędu poprzez ICMP Type 3 kod 3. Otrzymanie odpowiedzi mówi o istnieniu hosta, brak odpowiedzi sugeruje nieistnienie hosta.
x) RPC scanning – RPC jest usługą pozwalającą uruchamiać programy na odległych maszynach. W wyniku istnienia pewnych słabych punktów usługi RPC, wiele maszyn jest podatnych na penetrację. Większość administratorów blokuje więc dostęp do portmappera (port 111), aby uniemożliwić na dostęp do ich słabych usług RPC. Jednakże jest możliwe skanowanie portów w poszukiwaniu usług RPC, które w dodatku nie pozostawia śladów w logach większości systemów. RPC opiera się na standardzie pytanie – odpowiedz. Klient wysyła inicjujące zapytanie z numerem interesującego go programu, numer procedury, argumentami i innymi potrzebnymi parametrami. W odpowiedzi otrzyma to, co zwróci procedura lub gdy wystąpi błąd informacje dotyczące jego przyczyny. Programy RPC zbudowane są z różnych procedur. Istnieje jedna procedura 0(), która występuje zawsze. Jest to procedura, która nie posiada argumentów i nie zwraca żadnych wartości. W ten sposób można określić, czy dany port obsługuje dany program, wywołując funkcję ping, lecz najpierw trzeba sprawdzić, które porty UDP są otwarte. Można tego dokonać właśnie metodą UDP connect(). Najpierw szukamy które porty UDP są otwarte, następnie próbujemy zapytać funkcją ping o numer programu, który nas interesuje. Jeżeli dostaniemy odpowiedz pozytywną, to numer programu, którego szukamy istnieje na tym porcie.
y) IP.id scanning – jest to względnie ostatnia metoda skanowania, która pozwala na użycie pakietów ze sfałszowanym adresem zródłowym. Charakterystyczne dla niej jest wykorzystanie pośredniego komputera. Wówczas, przewidując pole id w nagłówku IP, można podszyć się pod pośrednika i skanować docelowy host pod kątem oferowanych usług. Ważne przy tym jest to, że nie zdradzamy swojego prawdziwego adresu, ponieważ w logach systemowych skanowanej maszyny pojawia się tylko adres pośrednika. Należy zwrócić uwagę, że podczas skanowania techniką ip.id komputer pośredniczący nie może wysyłać żadnych pakietów (zerowy ruch w sieci) i jednocześnie skanowana maszyna musi być podatna na SYN scanning.
z) FTP bounce attack – interesującą opcją protokołu FTP (RFC 959) jest obsługa połączeń proxy. Technika ta była skuteczna 15 lat temu, kiedy to specyfikacja RFC została napisana. Ten słaby punkt protokołu może być użyty do wysyłania praktycznie nie do wyśledzenia wiadomości pocztowych i grup dyskusyjnych, zapełniać dyski, próbować omijać firewalle oraz być uciążliwym i ciężkim do wytropienia. Możemy wykorzystać to do skanowania portów TCP przez serwer FTP proxy. W ten sposób połączyć się z serwerami za firewallem i skanować porty, które są prawdopodobnie zamknięte. Jeśli serwer pozawala na czytanie i zapisywanie do katalogów, możemy wysłać przypadkowe dane do portów, które znaleźliśmy otwarte. Metoda ta polega na użyciu komendy port w celu zadeklarowania, że DTP (data transfer process) klienta jest gotów do odbioru na pewnym porcie. Następnie próbujemy poznać strukturę bieżącego katalogu poprzez komendę list. Jeśli nasz docelowy serwer pracuje na danym porcie transfer zakończy się pomyślnie (odpowiedz 150 lub 226). W innym przypadku otrzymamy komunikat 425 Can’t build data connection: Connection refused. Wtedy wydajemy kolejną komendę port z kolejnym numerem portu. Korzyścią z tej metody jest to, że jest trudniejsza do wyśledzenia oraz pozwala omijać firewalle. Wadą natomiast jest jej powolność oraz to, że większość serwerów ma już wyłączone proxy.
@) ACK scan – skanowanie tą metodą służy głównie do sprawdzenia firewalli. Dzięki tej technice możemy określić czy dany firewall jest typu stateful, czy też zwykłym filtrem pakietów blokującym pakiety z ustawionym bitem SYN. Rozwiązanie to polega na tym, iż wysyłane są pakiety z ustawionym bitem ACK wraz z losowo wyglądającym numerem potwierdzenia. Jeżeli wróci do nas pakiet z flagą RST wówczas taki port uważa się za niefiltrowany, a jeżeli otrzymujemy ICMP unreachable, lub też brak komunikatu, port uznaje się za filtrowany. Zwykły użytkownik nie może korzystać z tej metody, potrzebne są uprawnienia administratora.
#) Window scan – jest to technika bardzo podobna do ACK scan. Różnica polega na tym, iż czasami dzięki wielkości okna (w protokole TCP), a właściwie różną ich wielkością można określić czy dany port jest otwarty i czy jest on filrtowany czy nie. Jak pisze Fyodor – autor nmap’a – głównie systemy takie jak: Amiga, BeOS, BSDi, Cray, Tru64 Unix, DG/UX, OpenVMS, Digital Unix, FreeBSD, HP-UX, OS/2, IRIX, MacOS, NetBSD, OpenBSD, QNX, Rhapsody, SunOS 4.X, Ultrix, VAX, VxWorks oraz pewne AIXy są podatne na ten rodzaj ataku. Linuks od wersji 2.2.x nie jest podatny. Do przeprowadzenia tego rodzaju ataku wymagane są uprawnienia administratora.
!) Fingerprinting – ponieważ luki w bezpieczeństwie systemów operacyjnych silnie zależą od wersji oraz rodzaju tych systemów, to dla intruza jednym z priorytetów jest uzyskanie informacji, jaki system operacyjny jest uruchomiony na badanym hoście. Między innymi możemy wyróżnić następujące techniki:
- Banner grabbing – jest najprostsza technika polegająca po prostu na zbieraniu banerów, które większość usług, po połączeniu się nimi, wyświetla. Zawierają one często pełną informację o wersji zainstalowanego systemu i wersji demona obsługującego daną usługę. Najprostszym narzędziem służącym do tego celu jest zwykły telnet. W większości przypadków są to bannery systemu operacyjnego (/etc/issue.net), serwera pocztowego czy serwera httpd. Obecnie większość administratorów starannie usuwa tego typu banery lub zmienia je na fałszywe – stąd niska skuteczność tej metody.
- TCP/IP Analize – do najbardziej skutecznych należy analiza stosu TCP/IP badanej maszyny. Jest to najbardziej wiarygodna metoda określania typu systemu operacyjnego – każda implementacja stosu TCP/IP jest inna, reagowanie systemu na pewne błędne stany jest różne, szczególnie w przypadku sytuacji nie określonych dokumentami RFC. Analiza stosu może przebiegać w sposób aktywny i pasywny. Aktywny, gdy wysyłany jest jeden lub wiele specjalnie spreparowanych pakietów, po czym obserwuje się zachowanie systemu. Pasywny, gdy obserwuje się normalną aktywność systemu operacyjnego. Na kompletną analizę składa się od kilku do kilkunastu charakterystycznych testów:
*) Test FIN – znany już jako technika skanowania – pakiet z flagą FIN (lub dowolny bez flagi SYN czy ACK) jest wysyłany na otwarty port. Jednakże niektóre błędne implementacje reagują odpowiadając pakietem RESET. Metoda ta ma jednak kilka wad i niewielkie zastosowanie.
*) Bogus Flag Probe Test – bardziej zaawansowana technika posługująca się fałszywą flagą – po raz pierwszy tę metodę zastosowano w programie queso. Polega ona na wysyłaniu pakietu TCP z ustawioną nieprawidłową, nieistniejącą flagą – najczęściej jest to wartość 64 lub 128 w nagłówku pakietu TCP w pakiecie SYN. Niektóre systemy po odebraniu pakietu SYN+BOGUS wysyłają RESET (Linuks w odpowiedzi odsyła pakiet z tą flagą). Umożliwia to wstępne zidentyfikowanie systemu.
*) ISN Sampling – inną metodą na określenie systemu operacyjnego jest znalezienie pewnych zależności w generowaniu numerów sekwencyjnych, które są różne w zależności od implementacji. Algorytmy generowania numerów sekwencyjnych można podzielić na cztery grupy: 1) tradycyjna metoda oparta na cyklu 64 tysięcy – wykorzystują ją starsze implementacje systemów Unix; 2) pseudolosowe generatory spotykane w: FreeBSD, Digital-UX, IRIX, nowszych wersjach systemu Solaris; 3) losowe – Linuks, zależnie od kwantu czasu wysłania pakietu – MS Windows; 4) stałe – zawsze ten sam ISN (Inital Sequence Number). Kolejna technika opiera się na obecności bitu “nie fragmentuj” w odbieranym pakiecie. Niektóre systemy wysyłają pakiety z ustawionym bitem DF w celu zwiększenia wydajności i dobrania parametrów połączenia (np. systemy stosujące technikę Patch MTU-Discovery). Badając obecność tej flagi, można uzyskać pewne informacje na temat systemu operacyjnego.
*) TCP window size – jedna z metod pasywnego rozpoznawania systemu operacyjnego opiera się na testowaniu inicjującego rozmiaru okna TCP. Ta prosta technika sprawdza wielkość inicjowanego rozmiaru okna w odebranym pakiecie, który dla wielu systemów operacyjnych jest inny.
*) ACK pakiet value – kolejna metoda określenia systemu operacyjnego oparta jest na testowaniu wartości pakietu ACK. Chociaż powinien to być standard, wiele systemów przejawia nietypowe zachowanie przy tego sytuacjach np. po wysłaniu pakietu z flagami FIN, PSH i URG na zamknięty port TCP niektóre implementacje odsyłają ACK z identycznym numerem sekwencyjnym, a niektóre drukarki sieciowe odsyłają ACK ze zwiększonym numerem sekwencyjnym o jeden. Windows zachowuje się w tym przypadku w sposób nieprzewidywalny i czasami odsyła identyczny numer sekwencyjny, czasami zwiększa go o jeden, a niekiedy wysyła zupełnie losową wartość.
*) Framentation handling – autorstwa Thomas’a H. Ptacek’a z Secure Networks – technika wykorzystująca fakt, iż różne implementacje w różny sposób składają gęsto zdefragmentowane pakiety (chociaż jest to standard, to w dobie ataków DoS, opartych na fragmentacji, niektóre systemy mają ograniczenia co do wielkości fragmentów, czasu ich odbioru, liczby itp.).
- Badanie opcji TCP – wszystkie powyższe techniki posiadają liczne wady i ich zastosowanie nie daje pewności badania, którą daje technika “badanie opcji TCP”. Jest to technika dostarczająca bardzo dużo informacji na temat zdalnego rozpoznawania systemu operacyjnego, gdyż nie jest ono obowiązkowe i niektóre implementacje nie uwzględniają go lub uwzględniają błędnie. Wiadomo też, że jeżeli host ma je zaimplementowane to po odebraniu pakietu z aktywnymi opcjami odsyła w odpowiedzi pakiet informujący o ich obsłudze. Kolejną zaletą jest też to, iż cały test można przeprowadzić za pomocą pojedynczego pakietu.
- SYN Flood Resistance – bardzo brutalna technika, ale rzadko stosowana. Ten test bada odporność na zalew (ang. flood) pakietami SYN testowanego hosta. Metoda bardzo łatwa do wykrycia, opierająca się na sprawdzeniu liczby połączeń z danym portem z jednego adresu IP/portu. Metoda ta nosi też nazwę SYN cookies. Dla przykładu: system Linuks jest w stanie obsłużyć 8 takich żądań.
2. Sniffing – podsłuchiwanie transmisji w sieci. Polega na monitorowaniu i rejestrowaniu identyfikatorów i haseł używanych w trakcie logowania się autoryzowanych użytkowników do sieci chronionych w celu uzyskania dostępu do systemów zabezpieczających. Najprostsze sniffery przechwytują nazwy użytkowników i hasła, najbardziej złożone zapisują cały ruch sieciowy.
3. Spoofing – polega na podszywaniu się pod inny autoryzowany komputer. Cel pozostaje ten sam, oszukanie systemów zabezpieczających. Tradycyjnie, podszywanie oznaczało działanie atakującego, polegające na przeprowadzeniu procesu autoryzacji z jednego komputera do drugiego poprzez sfałszowanie pakietów z “zaufanego” hosta. Ostatnio podszywaniem określa się dowolną metodę łamania zabezpieczeń autoryzacyjnych opartych na adresie lub nazwie hosta. Rodzajami spoofingu jest: ARP spoofing, DNS spoofing, IP spoofing, Route spoofing, Non-blind i Blind spoofing.
a) IP spoofing (maskarada) – metoda ta polega na podsłuchiwaniu przez sniffer połączenia pomiędzy klientem a serwerem i wyłapywaniu wysyłanych numerów sekwencji. Po znalezieniu algorytmu jakim są one tworzone atakujący doprowadza do niestabilności połączenia np. poprzez atak SYN Flood na stacje klienta, zmienia numer IP na numer klienta i przewidując numery sekwencji korzysta z istniejącego połączenia jako autoryzowany użytkownik.
b) DNS spoofing – jest to atak na serwer DNS, który posiada bazę danych przechowującą numery IP dla poszczególnych adresów mnemonicznych. Atak DNS spoofing polega na ingerencji w tablicę DNS i modyfikacji poszczególnych wpisów tak, aby klient zamiast do komputera docelowego kierowany był do komputera atakującego.
c) ARP spoofing – polega na wprowadzeniu zmian do bufora (cache) protokołu ARP (Address Resolution Protocol) , który zawiera informacje o odwzorowaniach adresów sprzętowych na sieciowe, czyli adres IP interfejsu, z którym nadawca pragnie się komunikować. ARP spoofing przeprowadzany jest głównie w sieciach lokalnych ze względu na fakt iż protokół ARP nie jest protokołem internetowym.
d) Frame spoofing – forma oszustwa w sieci WWW, polegająca na tworzeniu serwisów internetowych podszywających się pod inne, bardziej znane witryny. Frame spoofing służy zazwyczaj do przejmowania informacji wprowadzanych do formularzy przez odwiedzających (np. fałszywa strona banku może posłużyć do gromadzenia danych osobowych, haseł dostępowych, numerów kart kredytowych).
e) Fakemail – wiadomość e-mail z zafałszowanym, fikcyjnym adresem zwrotnym (np. wskazującym na inną osobę) lub ze specjalnie spreparowanym nagłówkiem uniemożliwiającym identyfikację komputera nadawcy.
4. DoS – odmowa obsługi – unieruchomienie usługi – Denial of Service – w najbardziej podstawowej formie, atak odmowy usługi to dowolne działanie unieruchamiające sprzęt lub oprogramowanie i powodujące zaprzestanie świadczenia usług przez system komputerowy. Cel atakującego jest prosty: host lub hosty mają przestać reagować na bodzce z zewnątrz. Atak odmowy usługi to dokuczliwy problem z dwóch powodów. Po pierwsze są łatwe do przeprowadzenia, a wynik ich działania jest natychmiastowy. Stąd też ich przeprowadzanie to popularne zajęcie wśród początkujących włamywaczy. Po drugie, wiele ataków tego typu wykorzystuje błędy, ograniczenia lub niezgodności w implementacjach protokołu TCP/IP. Błędy te istnieją dopóty, dopóki producent oprogramowania nie stworzy odpowiedniego programu korekcyjnego. Do tego czasu wszystkie hosty pozostają podatne. Ze względu na charakter tego ataku, możemy wyróżnić trzy efekty jego działania:
- Designed Outage – wstrzymanie usług, wykorzystuje zjawisko odtwarzania procesów (process recovery) większości urządzeń, w szczególności tych, które mają komendy reset, tymczasowo się wyłączające lub przekazujące kontrolę innemu procesowi. Wstrzymanie usług jest wykonywane przez system w celu zachowania jego niezawodności poprzez zamykanie połączeń TCP dla danego zródłowego i docelowego adresu i portu (quad) i odrzuceniu dla nich połączeń przez określony czas.
- Resource Destruction – zniszczenie zasobów, to załamanie poszczególnych obiektów w strumieniu informacji poprzez sprawdzenie ich do stanu niestablinego i nie funkcjonującego prawidłowo. Zniszczenie ma miejsce, gdy jakiś program spowoduje błąd. Systemy operacyjne są nadzwyczajnie złożone i nie wszystkie matematyczne możliwości są przewidywalne. Czasami pewne wejścia do systemu powodują jego upadek. Może to nastąpić poprzez pakiet z nieprawidłowym rozmiarem lub błędnymi opcjami, których nie może obsłużyć gniazdo (socket). W rezultacie może nastąpić zawieszenie gniazda, a czasem nawet systemu.
- Resource Exhaustion – wyczerpanie zasobów, to ich przeciążenie w taki sposób, aby opózniane informacje nie docierały na czas. Komputery są maszynami cyfrowymi i ich działanie oparte jest na operacjach matematycznych, z pewnym ograniczeniem do operacji na liczbach skończonych. Każdy proces, który żąda więcej zasobów (pamięci, procesora, itp.) niż jest to przewidziane może być zablokowany.
a) DDoS (Distributed Denial of Service) – jest nowym atakiem wykorzystującym starą technikę ataku DoS. Sieć tego ataku składa się z kilku komponentów: Attacker (atakujący, zwany też klientem) – maszyna, z której rozpoczyna się atak; Master (zwany również Handler) – serwer, na który włamał się atakujący i umieścił odpowiednie oprogramowanie pozwalające na kontrolowanie demonów: każdy master może obsługiwać wiele demonów; Demon (zwany również agentem) – serwer, na który włamał się atakujący i zainstalował oprogramowanie do generowania potoku pakietów (packet stream); Demon oczekuje na rozkazy od swojego mastera, natomiast master od atakującego. Niektóre implementacje dopuszczają zmianę swojego mastera. Czyli atakujący wysyła rozkaz do masterów, które z kolei przekazują go do podległych sobie demonów, które generują potok pakietów. W ten sposób atakujący z jednego miejsca może rozpocząć atak, w którym biorą udział setki różnych hostów sieciowych. Im więcej hostów składa się na sieć DDOS, tym atak jest skuteczniejszy. Obecnie rozwiązania typu IDS czy Firewall mają trudności z wykrywaniem takich ataków. Można, co prawda tworzyć na podstawie analizy charakterystyki tych narzędzi, ale ponieważ kod zródłowy jest dostępny, to z pewnością pociągnie za sobą wiele modyfikacji oraz powstanie nowych narzędzi. Przykładowy schemat ataku typu DDOS:
A
/--- | ---\
M M M
/ | \ / | \ / | \
D D DD D DD D D
\ \ \\ | // / /
\ \ \\ | // / /
\ \ \\|// / /
-------C-------
Gdzie: A – atakujący; M – master; D – demon; C – cel ataku.
b) DRDoS (Distributed Reflection Denial of Service) – najbardziej zaawansowana technika ataków DoS. Atakujący wybiera grupę końcówek sieciowych (mogą nimi być serwery, zwykłe domowe komputery lub routery sieci szkieletowej). Następnie, korzystając z luk w zabezpieczeniach, bez potrzeby instalowania na nich własnego oprogramowania związuje je ze sobą wymianą pakietów tak, żeby same zaczęły generować pomiędzy sobą spreparowany ruch uniemożliwiający normalną pracę.
c) Ping of death (PoD) – większość systemów operacyjnych obsługujących stos TCP/IP posiada pewną wadę. Polega ona na tym, że wysyłany do komputera pakiet ping o złej długości może obciążyć lub nawet zawiesić cały komputer. Podczas ataku do ofiary jest wysyłany pofragmentowany pakiet IP. Poszczególne fragmenty zostają tak spreparowane, aby po ich złożeniu przez odbiorcę powstał pakiet o długości przekraczającej maksymalny rozmiar pakietów IP. Odebranie takich nieprawidłowych danych często powodowało zawieszenie się lub restart serwera. Najmniej zabezpieczone przed tym atakiem są komputery pracujące pod kontrolą systemu Windows. Jest to typowy atak Denial oF Service , czyli zablokowania świadczenia usług. Łatwo można sprawdzić czy system jest podatny na tego typu ataki, wykonując komendę: ping -l 65510 (lub 65535) nasz.adres.ip. Dla większości systemów unixowych istnieją już odpowiednie patche, które naprawiają ten błąd. Struktura pakietu PoD:
|----------Maksymalna długość pakietu IP-----------|#|
|---fragment I---|---fragment II---|---frament III---|
d) SYN flooding – atak opierający się na specyficznej własności protokołu TCP/IP, która polega trójfazowym nawiązaniu połączenia pomiędzy klientem a serwerem. W pierwszej fazie klient inicjuje połączenie przez wysłanie pakietu z flagą SYN i początkowym numerem sekwencyjnym. Następnie serwer wysyła z powtorem pakiet z ustawionymi bitami SYN i ACK oraz swoim początkowym numerem sekwencyjnym. W końcu klient wysyła trzeci pakiet z ustawionym jedynie bitem ACK. Flagi SYN i ACK pozwalają odróżnić pakiety wysyłane w celu nawiązania połączenia do pakietów odesłanych w odpowiedzi na już utworzone połączenie (tylko ustawiony bit ACK) – właściwość ta jest wykorzystywana przy budowie snifferów. Połączenia te mają najczęściej sfałszowany adres zródłowy, co umożliwia wyśledzenie.
e) ICMP flooding – atak ten bazuje na protokole Internet Control Message Protocol używanym do niskopoziomowych operacji w Internecie między innymi do testowania prawidłowości komunikacji sieciowej. Przesyłane pakiety identyfikowane są po 8 – bitowym polu typu np. na pakiet ICMP echo request (8) stacja odpowiada pakietem ICMP echo replay (0), co jest równoważne ze standardowym poleceniem ping. Serwer, który zostanie zarzucony prośbami o echo przez wiele hostów jednocześnie będzie je odbierał i próbował na nie odpowiedzieć. Spowoduje to takie jego obciążenie, że nie będzie mógł obsługiwać innych zadań. Atak tego typu najczęściej jest realizowany przez wysyłanie na adres sieci pakietu ICMP echo request z adresem zródłowym potencjalnej ofiary. Możliwe jest też fałszowanie innych ICMP typu 3 – ICMP destination unreachable, typu 4 – ICMP source quentch, typu 5 – ICMP redirect, co może spowodować przekierowanie ruchu sieciowego i zablokowanie działania sieci.
f) Smurf – atak “smurf” jest stosunkowo nowym atakiem w kategorii sieciowych ataków na hosty (wykorzystuje on efekt wzmocnienia). Zasada jego działania polega na wysyłaniu przez atakującego dużej ilości pakietów ICMP echo (ping) na adresy broadcastowe (broadcast address) z podmienionymi adresami zródłowymi na adresy ofiary. Jeśli router dostarczy pakiet na adres rozgłoszenia IP spowoduje to, że każda maszyna przyjmie żądanie ICMP echo i na nie odpowie. Dla przykładu jeśli założymy, że atakujący posiada łącze T1, a jego celem jest sieć przełączalna (switched network) posiadająca 100 komputerów, atakujący wysyła strumień 768 Kb/s pakietów ping na adres broadcastowy tej sieci. Pakiety ping zostaną wysłane do każdego z tych 100 komputerów z podmienionym adresem zródłowym i w rezultacie zostanie stworzone 100 dodatkowe pakietów odpowiedzi, które zostaną przesłane na adres ofiary strumieniem 76,8 Mb/s, co najprawdopodobniej spowoduję blokadę usług.
[##] -------------------------------> [##] [##] [##] -----------------> [##]
[##] ICMP Echo request [##] [##] [##] -----------------> [##]
| adres źródła = ip ofiary | | | -----------------> [##]
| adres docelowy = adres sieci | | | ICMP Echo replay |
| | | | |
Atakujący Sieć wzmacniająca Ofiara
g) Loopback SYN – atak typu land (land – atak ten swoją nazwę przejął od narzędzia, które wykorzystuje podatność niektórych implementacji TCP/IP na pakiety SYN, w których adres zródłowy i docelowy są identyczne; przy obecnej technologii protokołu IP nie jest możliwe wyeliminowanie sfałszowanych pakietów, można jednak zmniejszyć prawdopodobieństwo użycia ich w sieci poprzez filtrowanie pakietów wychodzących, które mają adres zródłowy inny niż te z sieci lokalnej) jest tak nazywany ponieważ cała transmisja odbywa się po interfejsie loopback, co uniemożliwia oglądanie wysyłanych pakietów narzędziami sieciowymi. Atak polega na przekierowaniu nawiązywanego połączenia TCP. Wystarczy odpowiednio rozpocząć inicjacje połączenia TCP, czyli wysłać pakiet do atakowanego komputera z ustawionym bitem SYN i z jego własnym adresem jako adresem zródłowym. Atakowany komputer po otrzymaniu takiego pakietu z flaga SYN wysyła w odpowiedzi pakiet z ustawionymi bitami SYN i ACK. Nie przerywa on połączenia ponieważ otrzymuje pakiet z flaga ACK. Atak ten blokuje i zawiesza wiele typów systemów operacyjnych oraz routerów.
[##] ----------------------------> [##] --->--\
[##] ----------------------------> [##] ---<--/
| pakiet SYN | pakiet
| adres źródła = ip ofiary | SYN/ACK
| |
Atakujący Ofiara
i) TearDrop – atak ten wykorzystuje błąd w module fragmentacji IP, gdzie funkcja ip_glue() nie dokonuje sprawdzania rozmiarów pakietów, choć sprawdza czy nie są za duże. Funkcja składania fragmentów pakietu w jedną całość działa w pętli kopiując oczekujące dane z kolejki i umieszcza je w nowo alokowanym buforze. Gdy pakiety te są zbyt małe, funkcja memcopy() przenosi ciąg bajtów w inne miejsca niż powinna, co z kolei powoduje zawieszenie, bądz restart systemu. Ogólnie mówiąc atakujący generuje pofragmentowany pakiet IP w ten sposób, aby poszczególne jego części nachodziły na siebie. Podobnie jak w przypadku Ping of Death, zmiana w algorytmie składania pakietów wyeliminowała zagrożenie ze strony ataków tego typu. Struktura pakietu:
|---fragment I---|#####|---fragment III---|
|##############|---fragment II---|########|
j) Chargen – najczęstszym problemem z jakim styka sie intruz, który chce przeprowadzić atak DoS, jest zbyt mała przepustowość posiadanego łącza z Internetem w porównaniu z łączem atakowanego. Rozwiązaniem tego typu problemu może być wykorzystanie innych komputerów do wzmocnienia (powielenia) ataku. Jako powielacza można użyć jednej maszyny, jak również całej sieci. Jako powielacze mogą być również użyte serwisy działające na bazie protokołu UDP. W tym celu najczęściej korzysta się z usługi chargen. Chargen (Character Generator) jest to serwis, który w odpowiedzi na dowolny pakiet wysłany na port 19 generuje wiadomość zawierającą ciąg znaków o losowej długości. Ataki z wykorzystaniem tej usługi mogą przybierać dwie formy. W pierwszym przypadku atakujący wysyła na port chargen pakiety UDP o jak najmniejszej wielkości. W odpowiedzi serwer wysyła do ofiary pakiety zawierające dane o długości od 0 do 512 znaków. Drugi rodzaj ataku wymaga znalezienia dwóch komputerów z działającą usługą chargen. Agresor wysyła na adres pierwszej ofiary pakiet UDP, podając jako nadawcę drugą maszynę. Komputer odpowiada na pakiet UDP, wysyłając ciąg znaków na port chargen drugiego serwera. Ten z kolei także generuje odpowiedź, co prowadzi do powstania nieskończonej pętli, która pochłania całą przepustowość łącza pomiędzy zaatakowanymi maszynami. Aby uniemożliwić przeprowadzenie ataku z wykorzystaniem serwisu chargen, wystarczy wyłączyć tę usługę na serwerze.
[##] -----------------------------> [##] ------------> [##]
[##] pakiet UDP [##] UDP chargen [##]
| adres źródła = ip ofiary 2 | <------------ |
| | |
| | |
Atakujący Ofiara 1 Ofiara 2
5. Flood – klasyczny atak gdzie ofiara jest zasypywana / floodowana informacjami. Przykładem tu może być wydanie komendy w systemie Linuks: write user /dev/tty1 < /dev/random. Działaniem tej komendy jest wypisanie nieskończonej ilości przypadkowych znaków na konsoli danego użytkownika tym samym powodując jego bezczynność w dotychczasowo przeprowadzanych operacjach na systemie.
a) Email bombing – bomba pocztowa jest efektem wysyłaniu komuś ton e-maili, przeładowywując jego skrzynkę pocztową i / lub sieciowe połączenie. Czasami można dokonać tego za pomocą specjalnego programu, lub po prostu zapisać ofiarę do dużej ilości grup dyskusyjnych.
b) Email spamming – jest to odmiana Email bombing’u ponieważ dotyczy większej ilości użytkowników, a polega na wysyłaniu wiadomości do wszystkich użytkowników danego serwera. Jest to metoda stosowana najczęściej do reklam, rzadziej do wyrządzania jakichkolwiek szkód, jednak można spotkać się z takimi przypadkami.
6. Hijacking – metoda pozwalająca na przejęcie połączenia TCP między dwoma maszynami, z których najczęściej przynajmniej jedna połączona jest w tej samej sieci lokalnej, co atakujący (dzięki czemu może on odbierać pakiety adresowane i wysyłane z tejże maszyny). Innymi słowy, jest to przykład spoofingu połączonego ze sniffingiem (bądz z jakakolwiek inną możliwością ustalenia numerów SYN / ACK, które to numery – zawarte w nagłówku protokołu TCP – służą niezawodnej transmisji jak też potwierdzeniu autentyfikacji zródła przychodzących pakietów). Termin TCP Hijacking nazywany jest generalnie Telnet Hijacking, mimo, że odnosi się do dowolnej aplikacji korzystającej z protokołu TCP. Dla przykładu: jeśli oznaczymy atakującego jako A, a maszyny między którymi nawiązane jest połączenie B i C (w tym przykładzie B jest w tej samej podsieci co A), to jeśli A ustawi kartę sieciową w promiscuous mode, może odbierać pakiety adresowane do innych maszyn w swojej podsieci, tym samym także do B. W ten sposób może on ustalić numery SYN / ACK połączenia między B i C, i jeśli będzie wysyłał pakiety do maszyny C jako maszyna B korzystając z tych numerów, maszyna C uzna je za właściwe, a właściwe połączenie po chwili zostanie zdesynchronizowane. Ataki tego typu są bardzo trudne do przeprowadzenia jednak powiedzenie się takiego przynosi intruzowi wiele zysku.
a) EarlySynchro (wczesne rozsynchronizowanie) – atak wczesnego rozsynchronizowania powoduje przerwanie połączenia między klientem a serwerem we wczesnej fazie konfiguracji. Atakujący podglądając pakiety oczekuje na potwierdzenie zsynchronizowanego połączenia SYN ACK, wysyłane przez serwer do klienta podczas drugiej fazy transmisji. Po jego wykryciu wysyła do serwera pakiet wyzerowania RST, a następnie pakiet zsynchronizowanej odpowiedzi SYN z takimi samymi parametrami, jak w SYN ACK serwera. Jednak pakiet atakującego na inny numer sekwencji. Po otrzymaniu pakietu RST serwer zamyka połączenie, a po otrzymaniu pakietu SYN, otwiera nowe połączenie przez ten sam port, ale z innym numerem sekwencyjnym. Do prawdziwego klienta serwer wysyła z powrotem pakiet SYN ACK, które przychwytuje atakujący i wysyła do serwera swój własny pakiet ACK. Serwer przełącza się w tryb połączenia zsynchronizowanego ESTABLISHED.
b) ActivSynchro (aktywne rozsynchronizowanie) – atak przez aktywne rozsynchronizowanie TCP. Polega na podesłaniu jednej z maszyn biorącej udział w komunikacji pakietu i oczekiwanie na kolejny. Pozwala to na przechwycenie na innej maszynie oryginalnych pakietów, podmianę ich zawartości o przesłanie do serwera lub klienta. Podmieniane pakiety muszą być tak spreparowane aby zostały zaakceptowane przez obydwie maszyny. Atak ten wymaga podsłuchania i pobierania każdego pakietu, a przy tym rozsynchronizowania połączenia między dwoma maszynami, by uniemożliwić im komunikacje. Najprostszym sposobem rozsynchronizowania transmisji pomiędzy serwerem a klientem jest przesłanie dużej liczby pakietów o zmiennym numerze sekwencji do obydwu maszyn.
c) ZeroSynchro (rozsynchronizowanie pustymi danymi) – atak tego typu polega na równoczesnym wysyłaniu dużej ilości pustych danych do serwera i do klienta. Puste dane nie mają wpływu na nic po stronie serwera oprócz zmiany numeru potwierdzenia. Skutkiem ubocznym ataku rozsynchronizowania jest pojawiająca się w sieci znaczna ilość retransmisji pakietów ACK. Podczas połączenia TCP prawie wszystkie puste pakiety z ustawioną flagą ACK oznaczają potwierdzenie odebrania, ale informują jednocześnie o tym, że zostały odrzucone. Klient nie akceptuje tego potwierdzenia, ponieważ poprzednio nie wysłał pakietu ze zmodyfikowanym zamówieniem, więc tworzy własny pakiet potwierdzenia. Tworzy się pętla, która może zostać zakończona tylko wtedy, gdy któryś pakiet się zagubi. W praktyce często traci się pakiet z danymi z powodu zatłoczenia sieci.
7. Root compromise – uzyskanie uprawnień super użytkownika. Jest to atak polegający na opracowaniu metody prowadzącej do opanowania systemu poprzez uzyskanie uprawnień administratora systemu inaczej nazywanym root’em. Atak ten wykorzystuje luki w systemie, których wykorzystanie powoduje zmianę statusu atakującego ze zwykłego użytkownika na administratora.
a) Exploit – jest najłatwiejszą metodą do opanowania systemu. Jest to sekwencja czynności mających na celu wykorzystanie błędów w oprogramowaniu systemów operacyjnych, usług sieciowych lub aplikacji użytkownika do uzyskania dostępu do powłoki systemowej z podwyższonymi uprawnieniami lub uzyskania danych, do których dostęp jest ograniczony lub zabroniony. Istnieją dwa rodzaje exploitów – local – lokalne – uruchamiane na atakowanym systemie i remote – zdalne – uruchamiane na systemie atakującym. Ich konstrukcja oraz sposób działania bezpośrednio zależy od: atakowanej aplikacji; systemu operacyjnego, na którym aplikacja jest uruchamiana (także jego konfiguracji); architektury sprzętowej; rodzaju popełnionego błędu, który będzie wykorzystany do ataku.
- Buffer overflow (b0f) – to klasyczny exploit, który wysyła programowi więcej danych niż ten oczekiwał dostać. Po takiej operacji następuje przepełnienie buffora danego programu i jego wyłożenie. Buffer Overflow jest najczęściej spotykanym błędem, który występuje podczas sprawdzania bezpieczeństwa programu oraz najbardziej popularną metodą ataku w Internecie (więcej informacji można uzyskać z artykułu “Blokowanie b0f dzięki libsafe”).
void funkcja(char *p)
{
char buf[1024];
strcpy(buf, p);
return;
}
- Integer overflow – błędy powszechnie znane zaledwie od kilku lat, polegają na wykorzystaniu oczywistej cechy zmiennych całkowitych ze znakiem: na platformie 32 – bitowej przekroczenie wartości +2^31-1 powoduje zmianę wartości na -2^31 (^ – potęga); wykorzystanie ujemnej zmiennej jako argumentu do funkcji malloc() nie powoduje błędu, a jedynie zaalokowanie kilkubajtowego bufora, który może być z łatwością nadpisany.
- Format string bugs – metodologia wykorzystywania tych błędów została opracowana przez Przemysława Frasunka, który podczas wykładu w 2000 roku wraz z grupą specjalistów zajmujących się bezpieczeństwem opublikowali pierwsze programy wykorzystujące tego typu błąd w aplikacji wu-ftpd 2.6.0. Błędy te wynikają z pominięcia przez programistę łańcucha formatującego przy wykorzystaniu funkcji z rodziny printf(). Taki błąd nie jest sygnalizowany przez kompilator C, a umożliwia napastnikowi nadpisywanie dowolnych komórek pamięci w przestrzeni adresowej procesu.
void funkcja(char *p)
{
char buf[1024];
snprintf(buf, p);
return;
}
8. Password attack – jest ogólnym terminem opisującym różne czynności, których celem jest ominięcie mechanizmów ochrony systemu komputerowego opartych na systemie haseł, a więc wszelkie próby złamania, odszyfrowania lub skasowania haseł. Ataki na hasło należą do najprymitywniejszych metod włamań do systemów komputerowych. Umiejętność łamania haseł to w gruncie rzeczy pierwsze, których uczą się początkujący agresorzy – głównie ze względu na to, iż nie wymaga ona specjalnego wykształcenia. Obecnie każdy może łamać hasła Linuksa przy pomocy gotowych programów. Głównie wyróżnia się trzy sposoby łamania: 1) frequency analysis – metoda wykorzystująca częstość występowania liter; 2) ciphertext relative length analysis – metoda wykorzystująca długość zakodowanego tekstu; 3) similar plaintext analysis – metoda badająca zaszyfrowane podobne informacje.
a) Brute force – metoda ta to najprostszy sposób wyszukiwania tajnych kluczy i haseł. Polega na wypróbowaniu (podstawianiu) wszystkich możliwych kombinacji znaków w obrębie całej przestrzeni klucza do momentu jego odnalezienia. Brute force znajduje zastosowanie wtedy, gdy wszystkie inne metody okazują się bezskuteczne. Podejście tą metodą może być ogromnie czasochłonne zależnie od długości hasła i mocy obliczeniowej komputera. Przy założeniu, że zbiór znaków użytych w kluczu obejmuje 92 znaki (wielkie, małe litery, cyfry i często stosowane znaki specjalne), liczba kombinacji – czyli możliwych haseł – wynosi 92n, przy czym n – oznacza długość hasła. Na komputerze Pentium 166 Mhz, który wykorzystywano do testów, programy deszyfrujące podstawiły maksymalnie 13.000 haseł na sekundę. Podczas gdy odnalezienie hasła o długości trzech znaków przebiega na wspomnianym pececie dość krótko (trwa to około minuty), ta sama operacja z hasłem o siedmiu znakach mogłaby zająć około 181 lat. By korzystać z wymienionego sprzętu by odnalezć do roku 2007 hasło o długości ośmiu znaków, poszukiwania należałoby rozpocząć już w epoce kamienia łupanego (metodą brute force został złamany algorytm szyfrujący DES).
b) Ciphertext only attack – atak na tekst zaszyfrowany stanowi statystyczną metodę ujawniania kluczy. Dla przykładu: litera, która najczęściej występuje w polskich tekstach, jest małe “a”. Deszyfrator wyszukuje zatem w zaszyfrowanym tekście najczęściej pojawiający się znak i zakłada, że odpowiada on literze “a”. Podobnie postępuje z pozostałymi znakami. Jeśli do zaszyfrowania tekstu użyto prostego algorytmu, można w ten sposób obliczyć fragment klucza. Metoda statystyczna jest bezskuteczna w przypadku, gdy dokument jest pusty lub zawiera zbyt mało tekstu.
c) Dictionary attack – wyszukiwanie słownikowe to szybszy wariant metody brute force. Podstawowym założeniem tej metody jest przypuszczanie, że do zaszyfrowania tekstu użyto naturalnego słowa (a nie dowolnych kombinacji liter) pochodzącego z języka, którym włada szyfrujący. Program deszyfrujący podstawia zatem wyrazy zawarte w dostępnym mu zbiorze (słowniku). Odpowiednie słowniki dla wielu języków można znaleźć w Internecie. Hackerzy często uzupełniają słowniki o hasła pochodzące z bliskiego otoczenia osoby, która szyfrowała dany tekst. Do takich wyrazów należą przykładowo imiona członków rodziny czy znajomych, ksywki, marki samochodów itp.
d) Known plaintext attack – w przypadku ataku za pomocą tekstu jawnego deszyfrujący zna fragment niezaszyfrowanego tekstu lub przypuszcza, że w zaszyfrowanym tekście występują określone wyrazy czy zdania. Najczęściej wypróbowuję się np. standardowe nagłówki i formułki grzecznościowe. Przy prostym algorytmie szyfrowania porównanie tekstu jawnego z tekstem zaszyfrowanym pozwala obliczyć klucz szyfrujący. Jako “tekst” jawny może posłużyć także znajomość struktury dokumentu. Jest ona taka sama dla wszystkich dokumentów danego formatu, zatem nie może ona być utajniona.
e) Chosen plaintext attack – atak przy użyciu wybranego tekstu jawnego. Jest to również atak przy użyciu tekstu jawnego, jednak atakujący ma możliwość podsunięcia fragmentu tekstu jawnego.
f) Adaptive chosen plaintext attack – atak przy użyciu dopasowanego wybranego tekstu jawnego. Jest to wielokrotnie powtarzany atak przy użyciu wybranego tekstu jawnego. W tym przypadku każdy następny tekst jawny podsuwany do zaszyfrowania jest wybierany w zależności od dotychczasowych rezultatów kryptoanalizy.
9. Backdoors – “tylne drzwi” mogą to być konta użytkownika z uprawnieniami administratora. Jednym ze sposobów wprowadzenia tylnego wejścia do systemu jest utworzenie konta lub procesu umożliwiającego uruchomienie innych programów z uprawnieniami super użytkownika. Liczba możliwych tylnych wejść dla każdej platformy jest praktycznie nieograniczona. Zastąpienie jednej z usług konkretnym programem czy też podstawienia shella z uprawnieniami super użytkownika umożliwi przejęcie kontroli nad systemem. Ale ogólnie możemy wyróżnić dwa typy backdoorów: pierwszy – zwany jest popularnie boczną furtką – oznacza to, że twórca danego rozwiązania umieścił w nim dodatkową możliwość wejścia – najczęściej z pominięciem wbudowanych mechanizmów ochronnych, takich jak np. autentyfikacja użytkownika – drugi rodzaj backdoorów to tzw. konie trojańskie (to programy często autoryzowane, ale nie zawsze), które zostały zmienione przez działającego w złym zamiarze programistę. Programista taki wstawia do kodu dodatkowe wiersze skrycie wykonujące nieautoryzowane czynności. Można na przykład wyobrazić sobie “podrobiony” program ssh, który po wpisaniu jakiegoś standardowego hasła wpuści nas do systemu; konie trojańskie mogą pojawić się wszędzie, ale zawsze do ich dystrybucji potrzebne jest działanie intruza, to intruz musi jakoś dostarczyć jego do naszego systemu – na nośnikach pamięci masowej lub poprzez połączenie sieciowe takie jak Back Orifice – pozwalają zdalnie zarządzać komputerem, na którym został zainstalowany dany klient. Do tej kategorii można też zaliczyć zupełnie legalne (i komercyjne) oprogramowanie takie jak popularny pcAnywhere firmy Symantec wszystko także zależy od celu w jakim dany program został zainstalowany.
a) Keylogger – program z rodziny koni trojańskich, służący do przechwytywania i zapisywania w pliku znaków wpisywanych przez użytkownika za pośrednictwem klawiatury. W połączeniu z innym programem typu backdoor (działającym w oparciu o model klient-serwer) pozwala uzyskać hasła oraz inne istotne informacje o użytkowniku komputera.
10. Wirus – ukryty, program komputerowy, który posiada zdolność kopiowania się i stawania się częścią innych programów. Niektóre wirusy posiadają funkcję destrukcyjne, a niektóre tylko powodują nieznaczne zmiany w systemie. Najczęściej spotykanym typem wirusów są takie, które posiadają zapłon czasowy. Wirusy komputerowe, składające się z ciągów zer i jedynek, funkcjonują na podobnej zasadzie, co ich tłoczeni w DNA kuzyni. Wirus komputerowy jest programikiem znikomych rozmiarów, który wykorzystuje inne programy, pliki lub strategiczne obszary dyskowe do swoich własnych celów. Taki wirus dopisuje się do swojego żywiciela, często nieodwracalnie go uszkadzając, po czym z nowej pozycji infekuje “wszystko, co się jeszcze rusza”. Medycynie komputerowej znanych jest wiele odmian wirusów. Z punktu widzenia użytkownika wyróżnić możemy wirusy nieszkodliwe – pisane po to, aby swą płodnością okryć chwałą ich twórców oraz pisane celowo po to, aby dokonać dzieła zniszczenia. Generalnie jednak wszystkie wirusy należą do grupy oprogramowania “Badware”, gdyż nawet te nieszkodliwe zużywają zasoby CPU, dysku twardego, jak również mogą spowodować niecelowe uszkodzenie danych (spowodowane na przykład interakcją kilku wirusów).
11. Kret (mole) – wiadomość e-mail, którą nadawca wykorzystuje w celu otrzymania określonych informacji o jej odbiorcy – najczęściej jego adresu IP. Nadawca po odebraniu odpowiedzi na wiadomość może z nagłówka odczytać adres IP komputera oraz informacje na temat systemu operacyjnego danej osoby. Inna metoda polega na wysłaniu wiadomości w formacie HTML zawierającej odwołanie do pliku (np. grafiki) znajdującego się na serwerze nadawcy. Podczas otwierania takiej przesyłki, program automatycznie wysyła żądanie pobrania obrazka, pozostawiając w ten sposób ślad po sobie na serwerze, w tym własny adres IP. Metoda ta wykorzystywana jest zwłaszcza do przechwytywania dynamicznych adresów IP przydzielanych komputerom korzystającym z połączeń modemowych. Wejście w posiadanie adresu użytkownika oraz informacji na temat jego systemu operacyjnego pozwala następnie atakującemu wybrać odpowiednią metodę ataku oraz przeprowadzić ją na konkretny komputer.
12. Socjotechnika (social engineering) – psychologia społeczna ukierunkowana na zdobywanie informacji o atakowanym systemie od osób pracujących z tym systemem, czyli jest to forma ataku opierająca się na atakowaniu celów w postaci umysłów ludzi, którzy są w stanie zapewnić nam dostęp do danych, na których nam zależy. Takim atakiem może być list / telefon od osoby, która podaje się za administratora systemu, a w rzeczywistości nim nie jest. Socjotechnika to wywieranie wpływu na ludzi i stosowanie perswazji w celu oszukaniu ich tak, aby uwierzyli, że socjotechnik jest osobą o sugerowanej przez siebie, a stworzonej na potrzeby manipulacji, tożsamości. Dzięki temu socjotechnik jest w stanie wykorzystać swoich rozmówców, przy dodatkowym (lub nie) użyciu środków technologicznych, do zdobycia poszukiwanych informacji. Ponieważ od dawna wiadomo, że nawet najbardziej zabezpieczony system ma poważną lukę, czyli beztroskiego użytkownika, dlatego ważne jest zatem wcześniejsze go przeszkolenie oraz uświadomienie.
a) Socjotechnika zwrotna – atak socjotechniczny, gdy napastnik kreuje sytuacją, w której ofiara zauważa jakiś problem i kontaktuje się z napastnikiem, prosząc o pomoc. Inna forma socjotechniki zwrotnej polega na odwróceniu ról. Ofiara orientuje się, że została zaatakowana i korzystając z wiedzy psychologicznej, i wywierając wpływ na napastnika stara się wyciągnąć od niego jak najwięcej informacji, w celu ochrony firmy.
b) Phishing – w branży komputerowej, oszukańcze pozyskanie poufnej informacji osobistej, jak hasła czy szczegóły karty kredytowej, przez udawanie osoby godnej zaufania, której te informacje są pilnie potrzebne. Jest to rodzaj ataku opartego na inżynierii społecznej. Termin został ukuty w połowie lat 90. przez crackerów próbujących wykraść konta w serwisie AOL (America On Line). Atakujący udawał członka zespołu AOL i wysłał wiadomość do potencjalnej ofiary. Wiadomość zawierała prośbę o ujawnienie hasła, np. dla “zweryfikowania konta” lub “potwierdzenia informacji w rachunku”. Gdy ofiara podawała hasło, napastnik uzyskiwał dostęp do konta i wykorzystywał je w przestępczym celu, np. do wysyłania spamu. Termin phishing jest niekiedy tłumaczony jako password harvesting fishing (łowienie haseł). Inni utrzymują, że termin pochodzi od nazwiska Briana Phisha, który miał być pierwszą osobą stosującą techniki psychologiczne do wykradania numerów kart kredytowych, jeszcze w latach 80. Jeszcze inni uważają, że Brian Phish był jedynie fikcyjną postacią, za pomocą której spamerzy wzajemnie się rozpoznawali. Dzisiaj przestępcy sieciowi wykorzystują techniki phishingu w celach zarobkowych. Popularnym celem są banki czy aukcje internetowe. Phisher wysyła zazwyczaj spam do wielkiej liczby potencjalnych ofiar, kierując je na stronę w Sieci, która udaje rzeczywsity bank internetowy, a w rzeczywistości przechwytuje wpisywane tam przez ofiary ataku informacje. Typowym sposobem jest informacja o rzekomym zdezaktywowaniu konta i konieczności ponownego reaktywowania, z podaniem wszelkich poufnych informacji. Strona przechwytująca informacje – adres do niej był podawany jako klikalny odsyłacz w poczcie phishera – jest łudząco podobna do prawdziwej, a zamieszanie było często potęgowane przez błąd w przeglądarkach, który pozwalał zamaskować także rzeczywisty adres fałszywej strony. Innym sposobem było tworzenie fałszywych stron pod adresami bardzo przypominającymi oryginalny, a więc łatwymi do przeoczenia dla niedoświadczonych osób – na przykład www.alegro.pl zamiast www.allegro.pl.
III. Jedynym z podstawowych czynników, powodującym poddatność systemu komputerowego na atak jest jego słaby punkt nazywany często dziurą w zabezpieczeniu lub zabezpieczeniach. Dziury w zabezpieczeniach można ogólnie podzielić na dwa rodzaje: a) spowodowane zaniedbaniami administratora lub błędną konfiguracją przez niego oprogramowania. b) spowodowane problemami w działaniu samego oprogramowania. Trzecim dodatkowym czynnikiem jest oddziaływanie dwóch wyżej wymienionych czynników wzajemnie na siebie.