Hacking  
  Październik 24 2014 22:29:25  
 
Nawigacja
folder Portal
. Artykuły
. Download
. Forum
. Szukaj
. FAQ
. Regulamin
folder Hacking
. Gry Hakerskie
. Filmy
folder Delphi
. Kursy
. Faq
. Źródła
. Komponenty
. Artykuły
folderWebmaster
. JavaScripts
. Skrypty PHP
folderRóżne
. Kontakt
. Zlokalizuj ip
Aktualnie online
. Gości online: 4

. Użytkowników online: 0

. Łącznie użytkowników: 152,047
. Najnowszy użytkownik: evil77
Ostatnie artykuły
. Metoda ataku symlin...
. Asembler x86 w pigułce
. Binder plików z komp...
. [Asembler/MASM] Pobi...
. Braifuck 4 fun
Nawigacja
Artykuły » Hacking » Rodzaje i klasyfikacja włamań oraz ataków internetowych
Rodzaje i klasyfikacja włamań oraz ataków internetowych
N
iniejsza publikacja opisuje teoretyczne aspekty bezpieczeństwa komputerowego (włamania, ataki oraz techniki; odpowiednio posortowane oraz przydzielone do odpowiednich im sekcji); w żadnym wypadku publikacja ta nie jest tutorialem i nie powinna być w taki sposób postrzegana. Autorzy skupili się na możliwie jak najwierniejszym przedstawieniu poszczególnych i konkretnych technik ataków oraz ich klasyfikacji (swoista hierarchia). Niektóre z prezentowanych tu technik w warunkach "normalnych" i "przyjaznych" służą jako przydatne narzędzia dla administratorów czy też chociażby funkcje implementowane w celu zwiększenia funkcjonalności dla potencjalnych użytkowników, jednak w rękach włamywaczy mogą one stanowić (i stanowią) potencjalną broń - publikacja ta również w swoim zamierzeniu poświęca miejsce takim aspektom.

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 (ew. węzły nadzorujące). 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 (albo co gorsza, utraty ważnych i często poufnych danych).

Warto także wspomnieć, iż ostatnimi czasy bardzo często używanym kryterium miejsca przeprowadzania ataków jest także podawanie warstwy OSI, na której atak / włamanie przebiega, ew. postronnie dotyczy. I tak przykładowo zgodnie z warstwami OSI, ataki na niższych warstwach (np. warstwa druga łącza danych L2 bądź też warstwa trzecia sieciowa L3) dotyczyć będą głównie routingu (ustalanie tras pakietów) czy też samego już "pakowania" danych w odpowiednie ramki. A więc ataki tutaj przynależne to m. in. ataki w sieciach DHCP oparte o sam przesył danych, ataki na MAC, ARP, wysyłanie niepoprawnych pakietów do routera w celu jego zablokowania, etc. Możliwości jest rzeczywiście bardzo wiele. Z kolei ataki na warstwach wyższych dotyczyć już będą głównie błędów w samych aplikacjach, ich złych konfiguracjach, błędnego działania mechanizmów zabezpieczających typu firewall, NIDS, HIPS, wstrzykiwanie danych, etc.

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

5. Dostęp do informacji:

a) Odczytanie (read) - odczytanie informacji, do której nie jest się uprawnionym.
b) Przekopiowanie (copy) - przekopiowanie zastrzeżonych informacji w celu ich swobodnego wykorzystania.
c) Modyfikacja (modify) - modyfikacja zawartości i charakterystyki informacji w celu dalszej kompromitacji.
d) Usunięcie (delete) - destrukcyjne działanie mające na celu bezpowrotne usunięcie wybranej informacji.

II. Ze względu na wyżej wymieniony podział rozróżniamy następujące rodzaje ataków:

1. Network snooping (namierzanie sieci) - ten rodzaj ataku jest przez wielu uważany za najbardziej wyrafinowaną metodę ataku. Do jej przeprowadzenia wykorzystuje się różnego rodzaju analizatory sieci, dzięki którym potencjalny włamywacz wybiera taką metodę ataku, która w danym przypadku będzie najbardziej efektywna. Bardzo często Network snooping sprowadza się do analizowania protokołów czy śledzenia ruchu sieciowego - włamywacz szuka najsłabszego punktu danej sieci czy serwera pod kątem stosowanych zabezpieczeń, aby następnie wykorzystać ów słaby punkt za pośrednictwem określonej techniki włamaniowej, np. sniffing (wykryte czynne połączenie przez telnet). Tak więc Network snooping jest bronią, która przygotowuje do przeprowadzenia innego skutecznego ataku. Odmianą Network snoopingu jest technika zwana próbkowaniem (ang. probe) polegająca na przeprowadzeniu wywiadu oraz uzyskiwaniu dostępu do obiektu i badanie jego charakterystyki. Działanie to jest na tyle niebezpieczne, iż pozostaje praktycznie niezauważalne, gdyż przeprowadzane jest poprzez legalne formy dostępu. W ten sposób zbierane są wrażliwe informacje wystawione na światło dzienne, przez co działanie takich nie jest wychwytywane przez standardowe systemy zabezpieczeń. Wprawny intruz przygotowujący atak zazwyczaj potrzebuje jednorazowego przeprowadzenia badania systemu, by wstępnie oszacować metody przeprowadzenia skutecznego ataku na system.

a) Firewalking (spacer po zaporze ogniowej) - dokładna analiza sieci od strony intruza pozwala ocenić stan jej odporności i pokazać słabości. Każdy audyt bezpieczeństwa dotyczy testów penetracyjnych. Idea opiera się na symulacji działań potencjalnego intruza. Testy penetracyjne przeprowadza się przy założeniu, że nie są znane struktura oraz usługi badanej sieci. Interesującą techniką umożliwiającą wykonanie takiej analizy sieci jest firewalking. Firewalking to technika umożliwiająca skanowanie sieci chronionej zaporą ogniową (firewall) oraz badanie konfiguracji samej zapory ogniowej. Technika ta jest zbliżona do metody traceroute umożliwiającej badanie trasy pakietów w sieci. Pozwala sprawdzić, jakie rodzaje pakietów są przepuszczane przez firewall chroniący daną sieć - nie tylko porty źródłowe i docelowe, ale także różne opcje ustawiane w pakietach. Wykorzystując firewalking można również odkryć szczegółową topologię chronionej sieci (wszystkie podsieci, routery i inne urządzenia). Firewalk, podobnie jak traceroute, wysyła pakiety ze zmniejszonym odpowiednio polem TTL. Wartość pola jest zmniejszana na każdym urządzeniu pośredniczącym w transmisji. W momencie gdy osiągnie wartość 0, host gubi pakiet i zwraca pakiet ICMP host unreachable informujący o tym, że host docelowy nie został osiągnięty. Technika traceroute polega na wysyłaniu pakietów o rosnących wartościach TTL (z reguły zaczyna się od TTL=1 i inkrementuje o 1) - otrzymany ciąg odpowiedzi ICMP pozwala określić trasę do maszyny docelowej (uwaga: może istnieć wiele tras i odpowiedzi nie zawsze będą jednoznaczne). Firewalking jest w pewnym sensie rozwinięciem traceroute - generowane pakiety mogą być różnych typów i z różnymi parametrami. Znając adres docelowy maszyny znajdującej się w chronionej sieci oraz adres firewalla można wykonać skan tą techniką. Najpierw wyznaczana jest minimalna wartość TTL (aby pakiet mógł dotrzeć do bramy łączącej skanowaną sieć ze światem). Badanie firewalla polega na wysyłaniu różnych rodzajów pakietów z polem TTL zwiększonym o 1. Przy badaniu pozostałych hostów sieci również stosuje się wartość TTL zwiększoną o 1, przy badaniu zaś podsieci - wartości odpowiednio większe. Aby ochronić sieć przed skanowaniem tą metodą, można filtrować wychodzące pakiety ICMP host unreachable. Trzeba jednak zdawać sobie sprawę z tego, że jest to naruszenie standardu i utrudni pracę niektórym użytkownikom sieci (np. korzystającym z traceroute). Można też oddzielić sieć wewnętrzną za pomocą serwerów proxy oraz wykonywać translację adresów (NAT) lub filtrować wszystkie pakiety z niską wartością TTL (np. < 2 ), zwracając odpowiedni komunikat ICMP natychmiast.

2. 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 źró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 obawy 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 źró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.

- Slow scan - typ skanowania, którego głównym założeniem jest oszukanie systemów zabezpieczających w taki sposób, aby skanowanie w ogóle nie zostało wykryte. W tym celu atakujący wykorzystując zależności czasowe systemów zabezpieczających znajdujących się na atakowanej maszynie będzie starał się manipulować wysyłaniem pakietów / próbami połączenia w taki sposób, aby zostało to zidentyfikowane jako zwykłe połączenia - nie skanowanie (jest to możliwe, gdyż znaczna część firewalli oraz systemów IDS/IPS posiada zdefiniowane przypadki skanowania jako ilość możliwych określonych połączeń w danej jednostce czasu; atakujący może sztucznie "rozciągać" ten czas wysyłając pakiety z określonym opóźnieniem - skanowanie może trwać przykładowo aż kilkadziesiąt minut lub dłużej).

- Decoy scan - metoda skanowania, której głównym założeniem jest to, aby ofiara nie była w stanie jednoznacznie (bądź w ogóle) stwierdzić, kto przypuszcza skanowanie. Tak więc atakujący najczęściej rozpocznie skanowanie wieloma pakietami, które to z kolei będą miały sfałszowane adresy nadawcy (a raczej bardzo wiele adresów). Oczywiście wśród nich będzie także ten jeden prawdziwy, ale będzie się on znajdował pomiędzy np. setką innych adresów, tak więc jednoznaczna identyfikacja atakującego będzie z reguły musiała się opierać na ręcznym sprawdzaniu przez ofiarę wszystkich adresów oraz oceny, który z tych adresów rzeczywiście może być tym prawdziwym. Niekiedy dojście do prawdziwego adresu atakującego jest realnie niemożliwe.

- Distributed Coordinated scan - skanowanie to, podobnie jak Decoy czy Slow scan, ma na celu po raz ukrycie samego atakującego a po dwa oszukanie aktywnych systemów zabezpieczających. W tym celu atakujący użyje wcześniej przejętych przez siebie maszyn do przeprowadzenia skanowania. Oczywiście skanowanie takie musi być idealnie skoordynowane w czasie. Dzięki temu systemy IDS / IPS / firewall mogą odczytać akcję jako nie skanowanie a zwykłe połączenia z wielu hostów. Oprócz tego , normalnie, nie jest możliwa w ogóle detekcja włamywacza, ponieważ wszystkie skanujące maszyny mogą być po prostu komputerami zombie (detekcja będzie więc musiała opierać się o dane pochodzące z plików dziennika przejętych maszyn a to możliwe jest tylko po uprzedniej konsultacji z użytkownikami / administratorami ów maszyn).

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 / Half-Open Scanning - 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.

Port otwarty:
[Skanujący] ----- SYN -----> [Serwer]
[#########] <-- SYN / ACK -- [######]

Port zamknięty:
[Skanujący] ----- SYN -----> [Serwer]
[#########] <---- RST ------ [######]

d) TCP SYN ACK (stealth scanning - "niewykrywalne" skanowanie) - 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 surowego gniazda (ang. raw socket), a większość zapór ogniowych blokuje wszelkie pakiety SYN kierowane na zabronione porty.

e) 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.

Port otwarty:
[Skanujący] ----- FIN -----> [Serwer]
[#########] <-- brak odp. -- [######]

Port zamknięty:
[Skanujący] ----- FIN -----> [Serwer]
[#########] <---- RST ------ [######]

f) TCP ACK (stealth scanning) - 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. Natomiast jeśli wartość TTL otrzymywanych pakietów jest niższa niż reszta otrzymywanych pakietów RST lub rozmiar okna jest większy niż zero (patrz Window Scan), istnieje duże prawdopodobieństwo, że dany port jest otwarty. Skanowanie tą metodą służy również do sprawdzenia zapór ogniowych. 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. Na potrzeby tej techniki wymagane są przywileje administratora do budowania własnych pakietów IP.

- Window Scan - jest to technika bardzo podobna do TCP 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. Linux od wersji 2.2.x nie jest podatny. Do przeprowadzenia tego rodzaju ataku wymagane są uprawnienia administratora.

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 odpowiedź na pakiet, z włączonymi wszystkimi flagami 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 to Windows lub filtrowanie ruchu (systemy Windows także odpowiadają pakietem RST). Inna odmiana skanowania typu XMAS polega na wysyłaniu segmentów z włączoną jedynie flagą 0x40 (nieużywaną) - wtedy skanowanie z włączonymi wszystkimi flagami nagłówka "przeobraża" się w nową nazwę: ZMAS.

- TCP YMAS (stealth scanning) - metoda pokrewna do skanowania XMAS z tą różnicą, iż pakiety posiadają jedynie ustawioną flagę 0x80 (nieużywaną).

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 Linux 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 Sweep. 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. Defragmentowanie pakietów stanowi poza tym dość "skomplikowane" zadanie dla systemów zabezpieczających (co z reguły może prowadzić do "security bypassing"). Otrzymywanie odpowiedzi mówi o istnieniu hosta, brak odpowiedzi sugeruje nieistnienie 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 źró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.

3. 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:

a) 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.

b) 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:

c) 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.

d) 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 (Linux w odpowiedzi odsyła pakiet z tą flagą). Umożliwia to wstępne zidentyfikowanie systemu.

e) 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 - Linux, 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.

f) 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.

g) ACK packet 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ść.

h) Fragmentation 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.).

i) 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.

j) 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 Linux jest w stanie obsłużyć 8 takich żądań.

k) Application Mapping (odwzorowanie aplikacji) - technika ta identyfikuje rodzaj i protokół badanej usługi, czyli pozwala dowiedzieć się jaka usługa kryje się za danym portem. Bazuje ona na modelu komunikacji klient - serwer, która wiąże się z portem TCP lub UDP. Dzięki temu umożliwia określenie używanego protokołu na podstawie zachowania usługi udostępnianej na otwartym porcie. Dzięki zróżnicowanym metodom można rozróżnić poszczególne aplikacje oraz częściowo ich charakterystyczne implementacje. Application mapping głównie bazuje na - Pattern Matching - który polega na wyszukiwaniu łańcucha znaków lub dopasowaniu do określonego wzorca. Najprostszą realizacją jest wyszukiwanie łańcuchów znaków. Wzorce porównawcze przechowuje się w bazie danych. W zależności od dokładności zdefiniowania pojedynczego wzorca, zgodności mogą zostać przeoczone (false negatives) lub stwierdzone nieprawidłowo (false positives).

4. Sniffing - (sniff w języku angielskim znaczy "wąchać, wyczuwać w powietrzu" np. niebezpieczeństwo) podsłuchiwanie transmisji w sieci. Ten atak pasywny 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. Napisano wiele takich programów; wiele z nich dostępnych jest w Internecie za darmo. Osoba używająca takiego programu ma dostęp do wszystkich informacji zawartych w danych, które są przesyłane w jej zasięgu.

a) Tempest - to nazwa jednej z tajnych amerykańskich norm dotyczących tzw. emisji ujawniającej. Nazwa TEMPEST składa się także na synonim elektronicznego podsłuchu. Każda elektroniczna transmisja danych, sygnału wizyjnego z karty graficznej do monitora, danych przesyłanych taśmą dysku twardego, sygnału naciśniętych klawiszy klawiatury, da się podsłuchać. Ochrona sprzętu komputerowego przed wyciekiem informacji (tzw. emisją ujawniającą) jest bardzo trudna. Dlatego Tempest jest bardzo wyrafinowaną metodą przechwytywania haseł i innych informacji z komputera na podstawie emitowanych fal elektromagnetycznych, emitowanych w dużej ilości przez podzespoły komputera. Za pomocą specjalistycznego, drogiego sprzętu można dostroić go do promieniowania z klawiatury czy z monitora i uzyskać dane pochodzące z tych urządzeń. Przeciętny użytkownik raczej nie stanie się ofiarą takiego ataku, chyba że interesują się nim służby specjalne. Jednakże firmy, dla których poufność danych jest krytyczna (np. instytucje finansowe), czy agencje rządowe, których pracą może interesować się obcy wywiad, muszą brać pod uwagę takie zagrożenie. Jedyną ochroną przed takim atakiem jest stworzenie osłony, która nie przepuszcza na zewnątrz żadnego promieniowania elektromagnetycznego.

5. 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) - spoofing w warstwie sieciowej polega na podmianie źródłowego adresu IP. Atakujący wysyła pakiety do ofiary z fałszowanym źródłowym adresem IP, wskazującym na zaufaną maszynę. Aby atak zakończył się powodzeniem, należy użyć znanych technik poszukiwania zaufanego adresu IP, który zostanie sfałszowany. Następnym krokiem jest modyfikacja nagłówka pakietu tak, aby wyglądał na pakiet przychodzący z zaufanej maszyny. Wynikiem fałszowania IP są znaczne utrudnienia w komunikacji sieciowej oraz komplikacje w wykryciu źródła ataków. IP spoofing jest bardzo często używany w celu zdobycia nieautoryzowanego dostępu do zasobów oraz blokady usługi (DoS). Atakujący przekazuje pakiety do ofiary z adresem źródłowym, z którego analizy wynika, że pochodzą one z zaufanego systemu. Atak składa się na etapy:

- określenie celu ataku oraz adresu IP zaufanej maszyny,
- wyłączenie komunikacji maszyny zaufanej,
- próba komunikacji między maszyną atakowaną a atakującym,
- analiza numerów sekwencyjnych pakietów zaufanej maszyny,
- modyfikacja nagłówka pakietów tak, aby wyglądały, że pochodzą z zaufanej sieci.

Istnieje kilka typów ataków wykorzystujących IP spoofing: non-blind spoofing, blind spoofing, man-in-the-middle. Atak może zostać przeprowadzony z wykorzystaniem adresu IP z puli publicznej używanej w Internecie lub puli niealokowanej czy prywatnej.

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. Głównie wyróżnia się trzy ataki związane z fałszowaniem DNS: 1) Atakujący włamuje się do serwera DNS podmieniając odwzorowanie nazw URL na adresy IP. Zapytanie o dany URL zostaje odesłane do maszyny, która będzie kontrolowana przez atakującego. 2) Atakujący może fałszować odpowiedź z serwera DNS przez kontrolę pomiędzy klientem, a serwerem nazw. Umożliwia to bezpołączeniowy charakter protokołu UDP. Numery sekwencyjne są zwiększane o jeden, co pozwala bardzo łatwo przewidzieć ich kolejność. Jeżeli atakujący potrafi odczytać wymianę pakietów z serwerem DNS, może przewidzieć numerowanie sekwencji. 3) DNS cache może zostać "zatruty" poprzez przesłanie fałszywej strefy z dużą wartością pola TTL. Atak jest wykonywalny przy założeniu, że zdalny serwer nazw jest kontrolowany przez atakującego.

- DNS cache poisoing (zatruwanie pamięci cache serwera DNS) - polega na wprowadzeniu do pamięci cache serwera DNS fałszywego odwzorowania adresu IP na nazwę domenową, z której skorzysta użytkownik Internetu wpisując ją w swojej przeglądarce internetowej. W ten sposób zostanie on skierowane pod niewłaściwy adres IP, gdzie czeka już przygotowana przez napastnika fałszywa witryna. Atak DNS cache poisoning można przeprowadzić zarówno na komputer zwykłego użytkownika, jak i serwer DNS. W obu przypadkach polega on na wprowadzeniu do pamięci podręcznej (ang. cache) fałszywego rekordu wiążącego nazwę domeny z adresem IP komputera będącego pod kontrolą napastnika. Otrzymując taki rekord, serwer DNS zapamięta go na jakiś czas (określony przez parametr Time To Live - TTL - w fałszywej odpowiedzi) i będzie zwracał klientom zapamiętany adres. Możemy wyróżnić trzy rodzaje ataku DNS cache poisoning - klasyczny, birthday attack oraz zmodyfikowaną nieco formę ataku klasycznego. Najprostszą obroną przed DNS spoofing jest korzystanie przy połączeniach bezpośrednio z adresów IP, a nie nazw domenowych. Dotyczy to szczególnie połączeń z usługami za pomocą których dokonujemy transakcji pieniężnych, na przykład ze stronami banków internetowych. Oczywiście takie korzystanie z Internetu nie będzie na pewno wygodne, ale z pewnością bezpieczniejsze.

- DNS rebinding - polega na podmianie adresu IP wybranej domeny pomiędzy kolejnymi zapytaniami DNS skierowanymi o jej adres IP. W ten sposób atakujący jest w stanie uzyskać dostęp np. do obszaru sieci lokalnej, w której znajduje się komputer ofiary. Wytłumaczenie: normalnie mechanizmy bezpieczeństwa w przeglądarkach udostępniają skryptom (JavaScript, Java, Flash) jedynie te obiekty, które pochodzą z tego samego źródła, co strona, w której kontekście dany skrypt się wykonuje. Posługują się przy tym zasadą tożsamego pochodzenia (ang. same origin policy), która zezwala na dostęp do zasobów stron, których adres wyróżnia się takim samym protokołem, nazwą domeny serwera i numerem portu. Więc jeśli odwiedzimy stronę źlihackerzy.com, skrypt Javy na tej stronie będzie mógł jedynie komunikować się z tą stroną. Każdy kod, który dokona próby wyciągnięcia danych z innego adresu (np. dobrzyhackerzy.com) zostanie zakończony z komunikatem błędu ponieważ łamię on zasadę tożsamego pochodzenia. Atak DNS rebinding pozwala na ominięcie tej polityki bezpieczeństwa. Polega on, na zarejestrowaniu domeny przez atakującego, która jest oddelegowana na serwer DNS, który pozostaje pod jego kontrolą. Taki serwer DNS jest tak skonfigurowany, aby odpowiadał z bardzo niskim parametrem TTL, który zapobiega dłuższemu czasu cache'owania wpisu adresu IP dot. danej domeny. Pierwsza odpowiedź serwera DNS zawiera adres IP hosta zawierającego szkodliwy kod; druga już sfałszowany adres IP lokalnej sieci (RFC1918), prawdopodobnie znajdujący się za zaporą ogniową - będący celem ataku. Ponieważ, obydwie odpowiedzi DNS są w pełni poprawne - dają możliwość wykonania skryptu wewnątrz sieci lokalnej. Poprzez takie zwracanie kilku krótko żyjących adresów IP, serwer DNS umożliwia szkodliwemu oprogramowaniu na przeskanowanie nawet całej sieci lokalnej. Przykładowy scenariusz ataku: Łączymy się do strony o adresie zła.strona.com, której odpowiada adres IP 1.2.3.4 - z niską wartością pola TTL. Strona ta dostarcza naszej przeglądarce szkodliwy kod JavaScript, który ma zostać wykonany za 10 sekund. Serwer DNS kontrolujący domenę *.strona.com natychmiast zmienia adres IP zła.strona.com na 10.0.0.1. 10 sekund później kod JavaScript w naszej przeglądarce łączy się z zła.strona.com zgodnie z zasadą tożsamego pochodzenia i dokonuje penetracji lokalnego serwera o IP 10.0.0.1. Serwer DNS resetuje z powrotem adres IP zła.strona.com na 1.2.3.4, i po określonym czasie złośliwy kod JavaScript z naszej przeglądarki wysyła hostowi 1.2.3.4 spusztoszenia lub informacje jakich dokonał / znalazł wewnątrz sieci lokalnej.

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. Oprócz standardowego podszywania się pod inny adres w celu np. nieautoryzowanego korzystania z lokalnej sieci komputerowej czy też podszywania się pod inne osoby w danej sieci atak ten często także służy do przeprowadzania nasłuchu komunikacji (ARP spoofing jako sniffing) oraz w celu przejmowania cudzych sesji (m. in. po uprzednim zerwaniu autentycznego połączenia - ARP spoofing jako hijacking).

d) MAC spoofing - atak ten dotyczy protokołu drugiej warstwy, na ogół Ethernet. Jest bardzo efektywny w działaniu przeciwko przełącznikom, powoduje aktualizację ich tablic przechowujących wszystkie adresy Ethernet związane z danym portem w przełączniku (w terminologii CISCO noszą one nazwę CAM - Content Adressable Memory). W przypadku, gdy tablica CAM jest statyczna, zostanie zamknięty port ofiary oraz ostrzeżony administrator.

e) Smartspoofing - korzystając z zatruwania cache'u ARP napastnik włącza swój komputer w ścieżkę komunikację między serwerem, a klientem. Dzięki forwardowaniu IP istniejący ruch trafia do klienta. Rzecz jasna na komputerze napastnika wyłączone zostały przekierowania ICMP. Wreszcie, napastnik wykorzystuje translację źródłowego adresu sieciowego by podszyć się pod adres IP klienta i utworzyć nowe połączenie z serwerem; potem może on uruchomić dowolne aplikacje sieciowe, by łączyć się z serwerem korzystając z adresu IP klienta. Oszukane zostaną wszelakie systemy kontroli dostępu oparte na sprawdzaniu adresu IP klienta. Ponadto istniejący ruch w sieci nie jest zakłócony i z punktu widzenia serwera atak smart spoofing jest nie do wykrycia. Udając host w sieci i przechwytując pewne połączenie, możemy ominąć firewall poprzez reguły dotyczące systemu, który udajemy.

f) 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).

g) Web spoofing - wstępem takiego ataku jest przeważnie kradzież zawartości, przez skopiowanie publicznie dostępnej strony z serwera. Można znaleźć wiele programów umożliwiających stworzenie kopii strony, tak aby użytkownik mógł oglądać stronę w trybie offline bez podłączenia do Internetu. Podobnie jak inne formy fałszowania, web spoofing przedstawia atakowanemu nieprawdziwe informacje. Przeglądamy i modyfikujemy strony WWW w rzeczywistości wysyłające do naszego komputera nie przez autoryzowane serwery, ale atakującego. Serwer fałszujący może wysłać podmienioną stronę, zapytać o prywatne dane, takie jak nazwa użytkownika, hasło, jego karty kredytowe itp. Metody web spoofingu są następujące:

- atak na serwer DNS, który odwzorowuje adres URL na adres sieciowy,
- modyfikacje strony WWW, aby podawały zły URL,
- błędy w przeglądarce HTTP, zła interpretacja skryptów CGI, JavaScript itp.

h) 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. W pierwszym przypadku wystarczy zazwyczaj dokonać zmian w opcjach programu pocztowego, przypadek drugi wymaga już pewnej wiedzy na temat działania sieci, protokołu SMTP lub remailerów, lecz umożliwia zachowanie nawet stuprocentowej anonimowości.

6. 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 źró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 źró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.

- DNS Amplification - odmiana ataku DDoS, polegająca na wysłaniu zapytań do serwerów DNS ze sfałszowanym adresem zwrotnym (spoofing). Najczęściej wykorzystuje się do tego sieć przejętych przez agresora komputerów (np. duży Botnet). Serwery DNS, w odpowiedzi na dziesiątki lub nawet setki tysięcy zapytań kierowanych z komputerów agresora, wysyłają odpowiedzi na jeden komputer, cel ataku włamywacza, zapychając jego łącze, pamięć i moc obliczeniową do granic możliwości. Atakowany ma małe możliwości obrony przed takim atakiem, gdyż odfiltrowanie odpowiedzi od DNS na odpowiedzi na zadane i na niezadane pytanie jest praktycznie niemożliwe. W maju 2006 w ten właśnie sposób zostało zaatakowane i doprowadzone do upadku przedsiębiorstwo Blue Security, które walczyło ze spamem.

- BackScatter - ta odmiana ataku typu DDoS (a także znana metoda spamu) wymierzona jest w serwery pocztowe bądź też pojedyncze konta e-mail. Atakujący wykorzystuje w takim przypadku najczęściej opcję autorespondera, która to jest bardzo często wykorzystywana przez wielu użytkowników kiedy to wyjeżdżają na wakacje etc. i chcą automatycznie informować korespondentów, iż w tym momencie są niedostępni. Technika BackScattingu oprócz autoresponderów, wykorzystuje także m. in. fakt informowania o zwrotach niedostarczonej poczty, system potwierdzania challenge-response, raporty systemów anty-spamowych, listy dyskusyjne nie korzystające z opcji double opt-in oraz wszystko to, co "zwrotnie" do Nas dochodzi (w tym przypadku bez Naszego uprzedniego działania w tym kierunku). Do sedna: atakujący rozsyła dużą ilość maili (spam) na przeróżnego rodzaju grupy dyskusyjne oraz mailowe a przy tym preparuje adres nadawcy tak, aby wskazywał na adres e-mail swojej ofiary. Po takim zabiegu ofiara otrzymuje olbrzymią ilość e-maili na swoją skrzynkę ze wszystkich stron świata, wygenerowaną przez autorespondery oraz automatyczne mechanizmy "wtórne"/zwrotne. Aby uzmysłowić ten proceder, proszę zobaczyć co się stanie po wysłaniu wiadomości na słynny Bugtraq; w odpowiedzi dostaniemy wiele zbędnych i automatycznie generowanych e-mailów od członków tejże grupy, a przecież to tylko jedna grupa, atakujący może wykorzystać ich setki!

- Stacheldraht - zaliczany jest do ataków DDoS. Jest to koń trojański robiący z zarażonych komputerów zombie, które są kontrolowane przez komputery zarządzające (master), a te z kolei są kontrolowane przez atakującego. W każdej chwili armia hostów może dostać od atakującego rozkaz przeprowadzenia zmasowanego ataku na dowolny cel. Narzędzie umożliwia przeprowadzenie z komputerów zombie większości znanych form ataku DoS. Rozprzestrzenia się wykorzystując różnorodne luki (jak robak) poprzez e-mail, www, icq i inne protokoły. Program klienta (atakującego) łączy się z komputerami zarządzającymi przez TCP/16660 - interfejs przypomina program telnet (uwierzytelnianie poprzez hasło). Komunikacja ta jest szyfrowana przy pomocy algorytmu blowfish. Komputery zombie zgłaszają się do zarządzających przy pomocy TCP/65000 oraz ICMP. Stacheldraht umożliwia komputerom zarządzającym automatyczną aktualizacje oprogramowania na zombie poprzez wydanie odpowiedniej komendy, po której wspomniane komputery poprzez komendę rcp ściągają najnowszą wersję trojana z podanej wcześniej przez polecenie strony. Każdy zombie ma zakodowany adres IP komputerów zarządzających (przy uruchomieniu łączy się z zarządcą). Ten zaś nie zna adresu IP atakującego - tylko nasłuchuje i czeka na rozkazy. Jest to dla atakującego względnie bezpieczna forma działania, gdy coś się dzieje, wówczas wystarczy zatrzeć ślady na komputerach zarządzających.

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---|

- SSPing - wykorzystywał również tą dziurę w ICMP (Internet Control Message Protocol). Atak polegał na wysłaniu rozfragmentowanego pakietu o nieprawidłowej długości. Standardowa długość pakietu nie powinna być większa od 65536 bajtów, ale i nie krótsza od nagłówka IP, czyli 20 bajtów. SSPing wysyłał jednak pakiety o długości większej niż 65536 bajtów. Windows po otrzymaniu takich danych, próbował je przetworzyć, zawieszając przy okazji cały komputer. Atakami o bardzo podobnym działaniu były: jolt, sPING oraz IceNewk.

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 powrotem 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 źró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 źró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 źró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 źró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

- Fraggle attack - jest to starsza forma ataku, bardzo podobna do smurf, jednak zamiast ICMP echo i replay fraggle polega na wysyłaniu rozgłoszeniowych pakietów UDP, na które zwracane są odpowiedzi ICMP o nieosiągalnym porcie (ICMP typ 3, kod 3). Zapytania UDP oraz ICMP Port Unreachable są filtrowane znacznie rzadziej niż pakiety ICMP Echo request i Echo Replay. Jednak wyłączenie możliwości broadcastu na adresy IP skutecznie zabezpiecza przed tym atakiem.

g) Land attack - należy do grupy ataków mających na celu wykorzystanie niepoprawnej implementacji stosu TCP/IP. Należy już raczej do ataków historycznych. Atakujący wysyła pakiet TCP SYN z podmienionym adresem źródłowym wskazującym na ofiarę oraz z takim samym portem źródłowym i docelowym - wskazującym na usługę atakowanego serwera. Jak się okazało, na taki zabieg podatnych było wiele systemów. Przykładowo CISCO: IOS blokowało ruch na 30 sekund. Maszyny z Windows 95 wieszały się. Atak można było łatwo przeprowadzić przy użyciu publicznie dostępnego programu land.c. Każdy nowoczesny system operacyjny powinien być uodporniony na ten typ ataku. Poza tym takie pakiety powinny być wycinane na poziomie firewalla.

- 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 źró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 źró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 źró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

h) 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ądź 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---|########|

- Bonk - jest starszą odmianą ataku typu TearDrop. Polegał on na przeprowadzeniu ataku na systemy Windows poprzez ingerencję i zaburzenie transmisji pakietów UDP na porcie DNS (53) w wyniku czego system załamywał się wyświetlając niebieski ekran z komunikatem błędu. Odmianą tego ataku był Boink - różnił się on tym, że atak był przeprowadzany tą samą techniką (wysyłaniem spreparowanych pakietów UDP), lecz na kilka portów - nie tylko DNS.

i) Chargen - najczęstszym problemem z jakim styka się 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

j) Winnuke - głośny swojego czasu atak wykorzystujący w systemie Windows lukę polegającą na niepoprawnym obsłużeniu danych OOB (Out of Band) skierowanych do portów 137 - 139 (NetBios). Windows nie potrafił obsłużyć danych OOB, co skutkowało dziwnym zachowaniem - od utraty połączenia internetowego po zawieszenie się maszyny. Atak było bardzo łatwo przeprowadzić za pomocą graficznych narzędzi spod Windows. W celu jego uniknięcie można wyłączyć obsługę NetBios albo zablokować na firewallu 137 - 139.

7. Flood - klasyczny atak gdzie ofiara jest zasypywana / floodowana informacjami. Przykładem tu może być wydanie komendy w systemie Linux: 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ładowują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.

- SPIT - forma spamu, która wykorzystuje dobrodziejstwo jakim jest usługa poczty głosowej lub VoIP. Innymi słowy, jest to spam rozsyłany poprzez pocztę głosową bądź telefonię VoIP.

c) MAC flooding ("zalewanie" adresami MAC) - skuteczność tej metody opiera się na założeniu, że lista zawarta w pamięci switcha, przechowująca adresy kart sieciowych (MAC) komputerów w sieci lokalnej, ma skończoną objętość. Lista ta jest uaktualniana za każdym razem, gdy w sieci pojawi się nowy komputer (lub zostanie wymieniona sama karta sieciowa). Jeżeli atakującemu uda się przepełnić tę listę, switch "głupieje" i zaczyna się zachowywać jak zwykły koncentrator (hub), rozsyłając pakiety do wszystkich komputerów w sieci, a taką komunikację bez problemu można podsłuchać. Realizacja tej metody sprowadza się do uruchomienia w sieci skryptu, który będzie "zalewał" switch pakietami o różnych adresach MAC. Metoda ta ma kilka poważnych wad. Po pierwsze jest łatwa do zauważenia i namierzenia - w zalewanej sieci bardzo łatwo zaobserwować gwałtowny wzrost ruchu sieciowego. Po drugie dla niektórych przełączników nie skutkuje, gdyż każdy port switcha obsługuje niezależnie przyporządkowany mu fragment listy adresów MAC - w rezultacie można najwyżej "zalać" jeden port, a to nic nie daje. Po trzecie "zalewanie" trzeba prowadzić nieprzerwanie, gdyż przełączniki co jakiś czas automatycznie aktualizują swoją listę adresów MAC, co w razie przerwania MAC floodingu spowoduje ustawienie prawdziwych adresów.

8. Session Hijacking / Blind spoofing (Uprowadzenie sesji) - 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 źró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.

d) Man / Monkey in the middle (atak z pośrednikiem) - atak polegający na czytaniu i modyfikowaniu komunikacji między dwoma stronami bez ich wiedzy. Jest to także atak na transmisję chronioną szyfrem polegający na podsunięciu własnego klucza. Scenariusz ataku w systemie klucza publicznego wygląda następująco: Komputer A chce się połączyć z komputerem B (np. stroną banku internetowego). Komputer C jest maszyną atakującą transmisję w celu przechwycenia tajnych haseł A. Komputer C w pierwszym etapie musi przekierować ruch z komputera A do B do siebie, może to zrobić np. poprzez zmianę danych podawanych przez DNS o adresie komputera B, lub nasłuchiwać zapytań do DNS i w odpowiednim momencie wysłać swój adres. Po połączeniu komputer C przekazuje A swój klucz publiczny rzekomo jako klucz B, jednocześnie nawiązuje połączenie z B, a otrzymane od niego dane (np. treść strony www) przekazuje A. Komputer A widząc stronę logowania B, wpisuje swoje tajne hasło i wysyła je do C, nie wiedząc o przechwyceniu transmisji. W zależności od ataku, C po odczytaniu hasła przerywa transmisję, albo w dalszym ciągu pośredniczy w transmisji pomiędzy A i B, cały czas wykradając tajne dane (stan konta, dodatkowe hasła itp.). W ten sposób komputer C potrafi odczytać wszystkie przesyłane pozornie bezpiecznym kanałem dane, nie będąc zmuszony do czasochłonnego łamania szyfrów zabezpieczających transmisję.

Sytuacja normalna:

Komputer A < [Klucz A] --RSA/AES-- [Klucz B] > Komputer B

Sytuacja z atakiem:

Komputer A < [Klucz A] --RSA/AES-- [Klucz1 C] > \
Komputer C < [Klucz2 C] --RSA/AES-- [Klucz B] > Komputer B

Komunikacja może być odporna na atak Man In The Middle, jeśli jedna ze stron zna klucz publiczny drugiej, lub potrafi go zweryfikować - np. jest on podpisany przez organizację certyfikującą (certyfication authority). Można też użyć bardziej egzotycznych zabezpieczeń - takich jak nadanie klucza publicznego na większej ilości kanałów niż atakujący jest w stanie przechwycić.

- Fuzzy fingerprint (FFP) - technika używana najczęściej na potrzeby ataku Man In The Middle (MITM), która skutecznie może aczkolwiek nie musi poprawić efekty jego działania. Polega ona na tym, iż generujemy sumę MD5 złudnie przypominającą inną, poprawną sumę MD5. Sprowadza się to do generowania metodą siłową (w zależności od używanego komputera, potrzebny na to czas może wynosić 15 minut bądź też 100 dni) klucza publicznego, tak ażeby odcisk tego klucza złudnie przypominał odcisk prawdziwego klucza. Dla przykładu poniżej mamy kolejno prawidłowy oraz podrobiony odcisk konkretnego klucza publicznego:

17:23:11:28:f8:59:47:4e:19:8b:27
17:23:11:28:f8:58:47:4e:19:8b:27

Dzięki zastosowaniu takiej operacji, użytkownik który będzie sprawdzał, czy zachodzi zgodność odcisków klucza nie zauważy różnicy. Dlatego też atak ten znajduje zastosowanie w MITM, gdzie jego główną funkcją jest oszukanie użytkownika, który sprawdza wzrokowo poprawność odcisków MD5, np. przy akceptowaniu połączeń bądź też certyfikatów. Metoda ta bywa często wykorzystywana do wszelakich ataków, które polegają na "podrabianiu" sum MD5. Podczas wzrokowego porównywania dwóch odcisków MD5 stwierdzono, iż człowiek z reguły porównuje do siebie początki oraz końce łańcucha znaków. Dlatego też, jeżeli będą one takie same, z reguły użytkownik zatwierdzi je. Tak samo sprawa wygląda z zamianą podobnych do siebie znaków. Technika nawiązuje trochę do socjotechniki (SE), ponieważ polega ona na oszukiwaniu użytkownika poprzez jego własną nierozwagę i brak ostrożności. Dobrze przeprowadzony atak, przynosi oczekiwane efekty.

e) Man in the browser - to nowa technika pozyskiwania poufnych danych coraz bardziej popularna wśród cyberprzestępców. Polega na zainfekowaniu komputerów złośliwym kodem, który jest aktywowany dopiero w momencie wejścia na stronę banku. Kiedy użytkownik podaje hasło i login aplikacja przechwytuje je, a następnie przesyła na serwer FTP. Technika Man in the browser jest dostosowana do konkretnych banków i instytucji finansowych. Tym właśnie różni się od masowo rozsyłanych e-maili stanowiących podstawę phishingu. Dedykowane ataki stanowią duże wyzwanie dla zapewnienia bezpieczeństwa użytkownikom. Skuteczną ochronę może zagwarantować analiza behawioralna, która polega na sprawdzeniu zachowania aplikacji w systemie i blokowania działań podejrzanych lub nietypowych.

f) Replay attacks - (Ataki odtwarzania) - są odmianą ataków z pośrednikiem. W ataku takim specjalny agent umieszczany jest w linii komunikacyjnej klient - serwer. W ten sposób są nagrywane / gromadzone dane, które są poddawane dalszej obróbce w celu ich modyfikacji oraz ponownym odtworzeniu ich serwerowi w późniejszym czasie - oczywiście dla nikczemnych celów. Dla przykładu ataki może zostać przeprowadzony dla nagrania danych całego procesu logowania się do systemu bankowego i przeprowadzenia transakcji bankowej. Tak nagrana kopia procesu może zostać później odtworzona serwerowi w celu powtórzenia procesu logowania, w celu kradzieży pieniędzy z konta. Ataki bardzo trudno przeprowadzić w warunkach, gdy stosowana jest kryptografia, znaczniki czasu, hasła jednorazowe lub pojedyncze sekwencje pakietów, czyli mechanizmy, które pozwalają serwerowi przeprowadzenie rozpoznania danych, które są odtworzeniem poprzedniej sesji.

9. 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 zautomatyzowaną metodą prowadzącą do opanowania systemu (tudzież także do zwiększenia uprawnień, etc). Przeważnie 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 (bądź na systemie specjalnie do tego wcześniej przygotowanym). 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.

*) zero-day exploit (0day exploit - 0dniowy exploit) - prawdziwe utrapienie dla wszelakiej maści administratorów Exploit taki jest publikowany tuż po ogłoszeniu istnienia określonej podatności w określonej aplikacji - zanim to jeszcze producent / autor oprogramowania wypuści "łatki" naprawiające ów błąd.

**) zero-class attack - jest to typowo indywidualny exploit typu non-public (niepublikowany oficjalnie), który to wykorzystuje także niepublikowaną oficjalnie lukę. Zarówno administrator, użytkownicy jak i autor podatnej aplikacji w ogóle nie wiedzą, iż w ich produkcie jest błąd, nie wiedzą także, że powstał już exploit wykorzystujący właśnie ten błąd (tak więc nie są świadomi tego, iż konkretny włamywacz jest w stanie ich zaatakować; fałszywe poczucie bezpieczeństwa). To dlatego exploity typu zero-class attack w odpowiednio "ostrożnych" rękach mogą działać "niezauważalnie" nawet przez okres kilku lat!

- Buffer overflow (b0f - przepełnienie bufora) - to klasyczna metoda dla exploita, który wysyła programowi więcej danych na bufor wejściowy niż ten oczekiwał dostać. Po takiej operacji następuje przepełnienie buffora danego programu i jego wyłożenie, a ponieważ bufor otrzymał więcej danych aniżeli mógł pomieścić, dane poza buforem zostają "zamazane" nowymi danymi. Sedno ataku polega na tym, aby nadpisać adres powrotu z funkcji nowym innym adresem, który to będzie wskazywał na kod atakującego (tzw. shellcode), który to znajduje się w pamięci oraz wykona dla atakującego określone czynności, m. in. zwiększenie uprawnień w systemie (więcej o samym ataku typu BO przeczytasz w artykule "Odkrywanie przepełnień bufora"). 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"). Dochodzi do niego, ponieważ autorzy swoich programów nie korzystają z bezpiecznych funkcji, tj. nie sprawdzają rozmiaru kopiowanych danych z bufora.

void funkcja(char *p)
{
char buf[1024];
strcpy(buf, p);
return;
}

*) return-into-libc - bardzo często zdarza się, iż system, w którym znajduje się podatna aplikacja, posiada niewykonywalny stos (non-executable stack, opcjonalnie także stertę); ochronę taką zapewniają takie łatki na system jak chociażby grsecurity czy OpenWall. Dzięki takiej ochronie, standardowy atak typu b0f zakończy się niepowodzeniem (stos jest niewykonywalny). W celu obejścia takowego zabezpieczenia i możliwości wykorzystania podatnej aplikacji stosuje się metodę return-into-libc, która to pozwoli atakującemu ominąć niewykonywalny stos (w przeciwym razie atak na podatną aplikację nie powiedzie się). Cała metoda opiera się na tym, iż atakujący użyje adresu funkcji standardowej biblioteki języka C (przeważnie będzie to funkcja system()) do nadpisania adresu powrotu z funkcji. Zaznaczmy, iż biblioteka standardowa języka C jest na stałe za mapowana w pamięci systemu oraz posiada atrybut wykonywalności, tak więc atak będzie już w takim wypadku możliwy, pomimo tego, iż stos jest niewykonywalny.

- 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 (więcej informacji w artykule pt. "Na czym polega integer overflow").

- 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;
}

- Heap overflow (przepełnienie sterty) - atak ten polega na przepełnieniu sterty (pamięć dynamicznie alokowana przez daną aplikację). Atak tego typu nie daje bezpośredniej możliwości wykonania własnego kodu (wyjątkiem są m.in. wskaźniki do funkcji, które atakujący może wykorzystać do wykonania swojego kodu), ale daje możliwość zmiany zawartości zmiennych i buforów (np. zmiana pliku, z którego program ma czytać określone dane). Atak ten jest bardzo często wykorzystywany, kiedy stos jest niewykonywalny - non-executable stack (patch Openwall, Grsecurity), ponieważ skuteczny atak typu b0f (buffer overflow) jest w takiej sytuacji niemożliwy (tylko z założenia - więcej informacji na ten temat można znaleźć w artykule "blokowanie b0f dzięki libsafe"), to jednak metodę heap overflow potencjalny włamywacz wciąż może wykorzystać. Udany atak heap overflow w dużej mierze zależy od implementacji funkcji alokujących dla danego systemu, dlatego też częściej stosowany jest o wiele prostszy (wymagający mniejszej wiedzy) atak typu b0f.

- Race condition (sytuacje wyścigu) - jak sama nazwa wskazuje, głównym założeniem tego ataku jest fakt, iż program zakłada, że dane które pobrał / otrzymał przed chwilą wciąż są aktualne. Aplikacja zakłada, iż dane znajdujące się w pliku czy zmiennej są takie jak kilka chwil wcześniej - a przecież tak naprawdę mogły ulec w międzyczasie zmianie poprzez inne procesy czy wątki. Typowy przykład wykorzystania sytuacji wyścigu: program nie przewidział, iż plik ten mógł w międzyczasie (po odczytaniu z niego informacji a przed jego usunięciem) stać się np. linkiem do pliku /etc/shadow! Innym przykładem może być użycie poleceń chmod, chown, chgrp i rm w połączeniu ze znacznikami -R lub --recursive. Kiedy wykonywane jest np. rekurencyjne usuwanie drzewa katalogów z opcją -r może wystąpić zjawisko wyścigu. Jeżeli zwyczajny użytkownik posiada prawa zapisu do drzewa katalogów, może dodać dowiązanie symboliczne wskazujące inne miejsce (na przykład partycję /), wskutek czego polecenie rm przejdzie do tego miejsca. Celem wyścigu jest określony wpis w usuwanym drzewie katalogów. Załóżmy, że taki wpis nosi nazwę narf. Polecenie rm wykonuje wywołanie lstat("narf", buf) dla tego wpisu; jeżeli jest to katalog, zostanie wykonane polecenie chdir("narf"). Jeżeli złośliwy użytkownik / włamywacz zdąży wykonać pokazane tu polecenie (ln -s / narf) pomiędzy operacjami lstat() i chdir(), wygrywa wyścig. Jeszcze innym przykładem może być wskazanie pliku /etc/passwd podczas wykonywania komendy chmod itp. Najprostszym sposobem uniknięcia tego typu problemów jest użycie poleceń chmod i chown dla katalogu najwyższego poziomu, na którym będzie wykonywana dana operacja - tak by tylko użytkownik root posiadał prawo do tego katalogu. Po wykonaniu operacji można przywrócić pierwotne prawa.

* /tmp races (wyścigi w /tmp) - rodzaj sytuacji wyścigu sprowadzający się do działania w katalogu /tmp. Opiera się on na fakcie, że niektóre programy do poprawnego działania potrzebują możliwości zakładania plików tymczasowych. Jeżeli nazwę używanego pliku tymczasowego można przewidzieć lub zgadnąć, to w środowisku wielozadaniowym można przeprowadzić tego rodzaju atak. Zakładając, iż wiemy, że użytkownik root często korzysta z programu narf, a program ten podczas pracy zakłada plik tymczasowy o nazwie /tmp/narf.tmp. W ten sposób możemy poinformować system, że /tmp/narf.tmp jest inną nazwą pliku /etc/shadow, wydając polecenie: ln -s /etc/shadow /tmp/narf.tmp. Jeśli teraz administrator zaloguje się w systemie i uruchomi program narf, nadpisze zawartość pliku /tmp/narf.tmp i tym samym /etc/shadow danymi, które z pewnością nie będą zgodne z formatem pliku /etc/shadow. W ten sposób system będzie zamknięty dla każdego użytkownika, który będzie próbował się zalogować. Jednak bardzo rzadko zdarza się, żeby nazwa pliku tymczasowego była ustalona z góry na jedną konkretną wartość. Najczęściej używa się "losowych" nazw generowanych na przykład za pomocą funkcji bibliotecznej mktemp(). Można powiedzieć, że ciąg znaków nazw, jest losowy, ale w większości systemów operacyjnych to nie do końca prawda - zazwyczaj można przewidzieć, jaką nazwę zaproponuje mktemp() przy następnym wywołaniu. Jednak zanim mktemp() uzna, że jakaś nazwa jest dobra, sprawdza, czy nie istnieje już plik o takiej nazwie. Po upewnieniu się, że go nie ma, zwraca proponowaną nazwę. W przypadku programów używających mktemp(), aby skutecznie zaatakować, trzeba być szybszym i zmieścić się pomiędzy dokonywanym przez funkcję sprawdzeniem, czy dany plik już istnieje, a próbą założenia takiego pliku przez program, który jest atakowany. Typowy wyścig.

10. 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. Okazuje się, że wiele aplikacji stosuje banalne sposoby szyfrowania danych. W wielu przypadkach zaszyfrowane hasło może zostać odtworzone dosłownie za pomocą kliku operacji matematycznych. W przypadku sporej grupy programów dobre algorytmy kryptograficzne zostały z kolei błędnie użyte przez autorów. W rezultacie liczba obliczeń potrzebnych do złamania hasła spada drastycznie w porównaniu z teoretyczną siłą algorytmu. Czas potrzebny na odtworzenie hasła jest wtedy często niezależny od jego długości i stopnia skomplikowania.

a) Brute force (ang. atak siłowy) - 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 odnaleźć 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). Jeden z przykładów ataku siłowego związany jest z tzw. problemem komiwojażera (ang. TSP - Travelling Salesman Problem) stanowiącym przykład problemu NP-trudnego. Komiwojażer wyrusza z pewnego miasta w celu odwiedzenia N wybranych miast i następnie powrotu do punktu wyjścia; sumaryczna długość przebytej trasy ma być jak najmniejsza. "Siłowe" podejście do problemu polega na generowaniu wszystkich możliwych tras i sprawdzaniu ich długości. Jedyną zaletą takiego algorytmu jest łatwość jego zaprogramowania; oprócz generowania najbardziej nawet absurdalnych tras (wszak sprawdzane są wszystkie) algorytm ten ma podstawową wadę, jaką jest jego złożoność, proporcjonalna do N! ("N silnia") - dla N równego 15 liczba tras równa jest 1 307 674 368 000; dla N = 1000 jest ona niewyobrażalna. Innym, prostszym koncepcyjnie przykładem "programowania siłowego" jest sortowanie listy (za pomocą istniejącej procedury sortującej) w celu znalezienia jej najmniejszej liczby. To, czy "programowanie siłowe" zasługuje na ignorancje, czy też jest praktyką godną polecenia, zależy od konkretnego przypadku. W przypadku niewielkich problemów nawet kilka godzin dodatkowego czasu komputera nie jest czasem straconym, jeżeli oznacza oszczędność kilku dni (czy tygodni) czasu programisty, który ten musiałby poświęcić na stworzenie algorytmu rozwiązującego problem w ciągu minuty. Ten "bardziej" inteligentny algorytm prawdopodobnie byłby algorytmem bardziej złożonym, a więc stwarzającym większe ryzyko popełnienia błędu w porównaniu z mało efektywnym, lecz prostszym algorytmem "siłowym". Ken Thompson, współtwórca systemu UNIX, jest autorem słynnego powiedzenia: "W razie wątpliwości zastosuj brute force". Mimo na pozór żartobliwego charakteru tego stwierdzenia, nie sposób nie dojrzeć tkwiącego w nim głębszego sensu - algorytm "siłowy", jako prostszy, jest raczej bezbłędny, a więc daje wiarygodne wyniki. Nie można także zapominać, iż to właśnie prostota, solidność i przenośność systemu UNIX przyczyniły się głównie do jego popularności. Wśród wielu kompromisów, na jakie nieustannie skazywani są twórcy oprogramowania, wybór między algorytmem "siłowym" a algorytmem bardziej "inteligentnym" uwarunkowany jest wieloma czynnikami natury technicznej, ekonomicznej i estetycznej.

b) Ciphertext only attack / key search - mechanizm ten dobrze sprawdza się w przypadku szyfrowania z użyciem krótkich kluczy (np. 40-bitowych). Wiele algorytmów kryptograficznych zmienia hasło podane przez użytkownika na liczbę (klucz) i dopiero jej używa do szyfrowania informacji. W wypadków kryptografii z krótkimi kluczami wiele różnych słów daje taki sam rezultat. Zamiast więc sprawdzać metodą brute foce każdą możliwą kombinację znaków w haśle, szybciej jest zweryfikować po kolei wszystkie klucze. W ten sposób nie jest możliwe odzyskanie oryginalnego hasła, lecz zaszyfrowany plik może zostać zapisany w postaci jawnej. Co najważniejsze, sprawdzenie wszystkich kluczy daje zawsze pozytywny wynik (pełna gwarancja rozszyfrowania), a czas obliczeń jest niezależny od stopnia skomplikowania hasła. 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.

g) Rainbow tables - jedna z nowszych metod łamania haseł - jej podstawy teoretyczne zostały publicznie przedstawione niecałe trzy lata temu. Idea jest bardzo prosta: program do odtwarzania haseł należy skonstruować w taki sposób, aby nie przeprowadzał on wszystkich obliczeń "od zera". Zamiast tego należy przygotować olbrzymie tablice z częściowo przeliczonymi danymi, które będą wykorzystywane wielokrotnie do odnajdywania różnych haseł. Oczywiście szczegóły implementacji są odmienne dla każdego konkretnego zastosowania. Do prowadzenia obliczeń potrzeba jednak zawsze co najmniej kilkaset megabajtów RAM-u. Czas obliczeń ulega więc skróceniu kosztem zwiększonego zapotrzebowania na pamięć. W praktyce niewiele jest jeszcze programów wykorzystujących tęczowe tablice. Problem polega na tym, że przeliczone zestawy "półproduktów" mają objętość setek megabajtów i muszą być dołączone do programu służącego do odzyskiwania haseł. Philippe Oechslin z Politechniki w Lozannie znalazł jednak na to sposób - zaproponowana przez niego metoda pozwala budować tablice, które przechowują zaledwie ułamek wszystkich możliwych haszy (np. jeden na dziesięć tysięcy), a mimo to gwarantują odtworzenie około 99% wszystkich haseł w ciągu kilku minut. Co to oznacza w praktyce? Otóż po jednorazowym zbudowaniu zestawu tęczowych tablic dla określonego algorytmu haszującego i zadanego zestawu znaków (litery, cyfry, znaki specjalne), odnalezienie hasła trwa góra kilkadziesiąt sekund. Czas kryptoanalizy skraca się przy tym czterokrotnie wraz z dwukrotnym powiększeniem rozmiaru tablic.

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. Web-hacking - rodzina ataków internetowych wymierzonych w aplikacje webowe, tzn. skrypty, formularze, itp. Z reguły do skutecznego przeprowadzania takich ataków wymagana jest wyłącznie przeglądarka internetowa. Za pośrednictwem odpowiedniej manipulacji adresem w pasku URL lub poprzez manipulację przy wysyłaniu danych przez wszelakie "aktywne pola", atakujący jest w stanie przeprowadzić skuteczny atak na daną witrynę www lub użytkownika, który ją przegląda. Ostatnimi czasy terminem Web-hacking określa się także ataki wymierzone w użytkownika a wykorzystujące słabości samej przeglądarki internetowej (mowa tu głównie o plikach cookie).

a) Code / HTML Injection - atak ten polega na przesłaniu atakowanej stronie internetowej bądź użytkownikowi specjalnie spreparowanego ciągu zawierającego tagi/kod HTML (bądź kod ok. języka skryptowego) pomimo tego, iż strona oczekuje, że zostanie przesłany czysty tekst (np. e-mail, imię, itp.). Najczęstsze miejsca, w których dochodzi do ataku Code / HTML inijection do wszelakiego rodzaju formularze on-line, aplikacje typu forum, które nie są poprawnie filtrowane pod względem pobieranych danych. Skutkiem takiego ataku może być m.in. ingerencja w wygląd strony www oglądanej przez użytkownika, manipulacja - poprzez przeglądarkę - użytkownikiem i danymi przechowywanymi przez niego.

- XSS (Cross-Site Scripting) - są to ataki z rodziny HTML Injection odnoszące się do danych zapisywanych / tworzonych poprzez przeglądarkę internetową, a połączonych z przeglądaną stroną WWW. Mowa tu głównie o plikach cookie oraz treściach tworzonych dynamicznie. Jeżeli włamywaczowi uda się wykonać wstrzyknięty przez niego kod z prawami aplikacji web, może spowodować to m.in. kompromitacje DOM (Document Object Mode). Z kolei to może prowadzić do kradzieży plików cookie, przejęcia internetowego konta, zmiana ustawień konta, itp. W atakach typu XSS wyróżniamy 3 główne gałęzie rozwoju oraz działania, które tworzą swoiste typy ataków XSS:

--| DOM-based XSS (znany także jako Local XSS bądź po prostu Type 0 XSS) - w tym przypadku błąd istnieje na stronie www (m.in. oskryptowanie) znajdującej się po stronie samego klienta (ma to miejsce wtedy, gdy np. strona oczekuje wpisania określonych danych w aktywnym polu bądź pasku URL a następnie dane te są wykorzystywane do dokonania zmian w tym samym dokumencie HTML). Jeżeli dane, które wprowadzimy w takim polu będą inne od oczekiwanych (np. kod JavaScript) i strona go wykona, można tu mówić o ataku XSS. Bardziej skomplikowane zastosowanie tego typu ataku może polegać m. in. na podaniu przez włamywacza na spreparowanej stronie specjalnego odnośnika (link), który to po kliknięciu przez ofiarę będzie się odwoływał do podatnej strony www znajdującej się w lokalnym systemie po stronie klienta (skrypt może zostać wstrzyknięty i wykonany w systemie z prawami użytkownika przeglądarki). Tak więc jeżeli użytkownik posiada na swoim dysku twardym zapisaną stronę www, która to jest podatna na Type 0 XSS, stanowi to także całkiem spore zagrożenie.

--| Non-persistent XSS (zwany także Reflected XSS bądź po prostu Type 1 XSS) - najbardziej znany i rozpowszechniony typ ataków XSS. Ma on miejsce wtedy, kiedy to dane wprowadzane przez użytkownika są impulsem do generowania przez skrypty po stronie serwera strony www z odpowiednim wynikiem/rezultatem (dynamiczne tworzenie strony www po stronie serwera z wykorzystaniem danych wprowadzanych przez użytkownika). Najczęstszym polem podatnym na ten atak jest np. pole 'szukaj'. Tak więc atak tego typu może doprowadzić m. in. do zniekształcenia bądź zmiany treści strony www przez użytkownika (wynik będzie jednak widoczny tylko dla osoby, która go wywołała). Sprytne wykorzystanie tej techniki przez włamywacza może wyglądać następująco: atakujący podsyła ofierze odnośnik URL, który to poprzez odpowiednie wstrzyknięcie kodu zwróci wynikową stronę www w kierunku atakującego, a nie w stronę zwyczajnego użytkownika (innymi słowy, atakujący zobaczy treść, którą normalnie zobaczyłaby ofiara). Innym przykładem może być np. podesłanie ofierze odnośnika URL, który to wyświetli ok. stronę www ale dzięki wstrzyknięciu kodu, będzie ona przedstawiała inną treść lub formę (w połączeniu z odrobiną Socjotechniki może prowadzić do ciekawych rezultatów).

--| Referred XSS (opcjonalnie znany jako Persistent XSS, Second-order XSS bądź po prostu Type 2 XSS) - najniebezpieczniejsza oraz najbardziej potężna technika XSS (bardzo często używana masowo). Atak ten ma miejsce wtedy, kiedy to dane podawane przez użytkownika do ok. aplikacji webowej są przetrzymywane w "jakiś" sposób na serwerze (np. baza danych) a następnie są wyświetlane na stronie www. Najczęstsze miejsce tego typu ataku to wszelakiego rodzaju fora dyskusyjne, systemy komentarzy bądź też księgi gości. Metoda bardzo wygodna dla atakującego, ponieważ dokonuje on jednego wstrzyknięcia, które to oddziałuje na duża liczbę odbiorców (np. każdy otwierający internetową księgę gości, którą to wcześniej odwiedził atakujący, pozostawiając po sobie ślad w postaci złośliwego kodu JavaScript). Dodatkowo na ten rodzaj ataku podatne są także takie aplikacje jak systemy kont pocztowych, logi systemowe, etc.

- CSRF (Cross-Site Request Forgery) - atak, którego działanie jest przeciwne do standardowych i znanych ataków typu XSS. CSRF opiera się na zaufaniu strony www w stosunku do użytkownika (standardowe XSS opiera się na zaufaniu użytkownika stronie www). Koncepcja metody jest dosyć prosta: jeżeli strona/serwer ufa nam zbyt wielce, atakujący może podesłać ofierze odpowiednio spreparowany adres URL, który to po uruchomieniu przez ofiarę zostanie wykonany na potencjalnie "ufającej" użytkownikowi stronie www. Banalnym i dziecinnym przykładem tego rodzaju ataku jest podesłanie ofierze adresu URL, który to wyloguje użytkownika z zalogowanego serwisu. Atak taki jest łatwy do przeprowadzenia, ponieważ użytkownik po zalogowaniu się do ok. serwisu jest "darzony" przez serwis zaufaniem w postaci np. pliku cookie. Wszystko co robi teraz użytkownik w obrębie tego serwisu dla serwera jest akcją dozwoloną, ponieważ użytkownik jest wciąż zalogowany. Jeżeli atakujący podeśle ofierze spreparowany link, którego zadaniem będzie wykonać określoną czynność w obrębie tego serwisu to zostanie ona wykonana, chociaż użytkownik sobie tego nie życzy. Skutki takiego ataku, na pozór praktycznie nie stwarzające groźnych dla użytkownika sytuacji, mogą w rzeczywistości prowadzić do redukcji użyteczności danego serwisu praktycznie do zera. Obroną przed CSRF mogą być różne składowe, m. in. częste sprawdzanie identyfikatora sesji oraz jego występowanie w odnośnikach danego serwisu po zalogowaniu (spreparowane przez włamywacza adresy URL będą wtedy w większości bezużyteczne).

- Cross Site Cooking - atak polegający na wykorzystaniu przez włamywacza potencjalnych błędów w przeglądarce internetowej ofiary, dzięki to którym będzie w stanie (po uprzednim wejściu ofiary na wcześniej spreparowaną przez włamywacza stronę www) umieścić na jej komputerze "niecne" pliki cookie. Ów pliki będą podawać się za te pochodzące z różnych ok. serwisów, z których rzeczywiście nie pochodzą (np. ingerencja pliku cookie w nazwę domenową serwisu, z którego to podobno plik pochodzi (w rzeczywistości pochodzi on z całkiem innego źródła - spreparowanej strony)). Kwintesencją tego typu ataku jest ingerencja niechcianych przez nas plików cookie w działanie innych, tym razem już poprawnych, plików cookie. Metoda ta może zostać także wykorzystana (jeżeli istnieje tylko taka możliwość) do przeprowadzenia bardziej wymyślnego ataku, np. atak przeprowadzany z komputera ofiary na określony podatny punkt zdalny (musi istnieć możliwość wykorzystania pliku cookie jako swoistego exploita na ok. błąd). W tym drugim wypadku komputer ofiary stanie się czymś w rodzaju pochodnej komputera zombi (narzędzie włamywacza do przypuszczania zdalnych ataków; bagatela!, za pomocą plików cookie).

- Cross-Zone Scripting - gama ataków, z której korzysta bardzo wiele technik Web-hacking'u (m. in. XSS). Polega ona na możliwości (a dokładniej na sytuacjach, które tworzą tę możliwość) uruchamiania ok. skryptu znajdującego się w danej strefie z prawami innej strefy (skrypt znajdujący się w strefie niedozwolonej/niezaufanej może zostać uruchomiony z prawami wskazującymi na to, iż strona www na której znajduje się ów niebezpieczny skrypt pochodzi z naszej wcześniej zdefiniowanej strefy zaufanej). Atakujący może najpierw zmusić przeglądarkę ofiary aby ta uruchomiła wstrzyknięty przez niego kod z większymi prawami niż normalnie miałoby to miejsce; następnie m. in. poprzez kontrolki ActiveX wykonać ok. czynności czy chociażby polecenia.

- XST (Cross-Site Tracing) - Praktycznie wszystkie renomowane serwery www (Apache, IIS, itp.) posiadają wbudowaną metodę HTTP TRACE (standard HTTP 1.1; RFC 2616 sekcja 9.8). Jej działanie oraz zastosowanie jest proste: metoda ta wymusza na serwerze www odesłanie uprzedniego zapytania klienta na jego wyraźne życzenie, przykładowo w celu debugowania błędów (innymi słowy, metoda TRACE służy do uzyskiwania odpowiedzi zwrotnych z !pełnymi! danymi uprzednio wysłanymi). Zgodnie ze standardami, zapytanie HTTP klienta (np. przeglądarki) zawierające pełne nagłówki HTTP jest zwracane w metodzie TRACE (po uprzednim wywołaniu tej metody). Stanowi to potencjalne zagrożenie dla użytkownika przeglądarki internetowej, ponieważ XMLHTTP, ActiveX czy chociażby XMLDOM może umożliwić naszej przeglądarce wydawanie zapytań TRACE bez naszej wiedzy (poprzez odpowiednio spreparowaną stronę www, którą ofiara uprzednio odwiedzi). Spreparowana strona będzie w stanie !czytać! dane zwrotne z wywołania TRACE: dane te mogą być przykładowo plikami cookie czy też ważnymi danymi służącymi do identyfikacji w ok. serwisie internetowym.

b) Code / SQL Injection - ten rodzaj ataku polega na nieupragnionym dostępie do bazy danych dzięki odpowiedniej manipulacji aplikacją, która komunikuje się z ową bazą danych. Z reguły to polega to na spreparowaniu specjalnego ciągu i "wstrzyknięciu" go do aplikacji poprzez pasek URL, formularz on-line, itp. Spreparowanym ciągiem może być czyste wyrażenie SQL lub charakterystyczny dla danej platformy język komunikacji z nią (DML). Podatna aplikacja pobiera dane od atakującego i wykonuje zapytania SQL bez wcześniejszego sprawdzenia, czy dane te są poprawnym czystym tekstem. Dzięki temu, włamywacz dostaje m.in możliwość modyfikacji, usuwania oraz dodawania nowych wpisów w bazie danych.

- Blind SQL Injection - atak tego typu jest identyczny jak SQL Injection, z małym wyjątkiem. Otóż atakującemu zależy na wyświetleniu poprzez serwer / bazę danych błędu mówiącego, iż zapytanie SQL przez niego "wstrzyknięte" jest niepoprawne. Dzięki temu włamywacz zbiera ważne informacje odnośnie samej bazy danych jak i jej producenta. Następnym krokiem włamywacza będzie poddanie analizie otrzymanych informacji, aby spreparować w pełni już sprawne i działające zapytania SQL.

- SQL Injection Singnatures Evansion - atak tego typu jest praktycznie identyczny z ordynarnym atakiem SQL Injection. Włamywacz tworzy zapytania SQL Injection. Jednak po stronie serwera może działać sprytny system IDS bądź IPS. Signature Evansion polega na wielu próbach "wstrzykiwania" zapytań SQL. I chociaż zostają one odrzucone przez określony system obronny (bazujący na wcześniej zdefiniowanych sygnaturach) włamywacz stara się wyłapać słowa kluczowe (ang. keywords), na które dany system reaguje obronnie. Dzięki temu, poprzez dogłębną analizę, włamywacz dochodzi do punktu, w którym wie w jaki sposób modyfikować zapytania SQL, aby te nie zostały odrzucone przez system obronny serwera.

c) Second Order Code Injection - do przeprowadzania tego typu ataku wykorzystuje się standardowe techniki wstrzykiwania kodu HTML bądź SQL z tą jedynie różnicą, iż atakujący nie oczekuje szybkiej odpowiedzi / efektów. Wstrzyknięcie odpowiedniego kodu, przykładowo w bazę danych, może spowodować w późniejszym czasie jego wykonanie. Atak ten tyczy się nie tylko samych baz danych, ale także plików dziennika czy samego obszaru pamięci cache. Jeżeli aplikacja Web okresowo pobiera dane z określonego źródła, następnie poddaje je obróbce bądź też wyświetla je, atakujący z chęcią spróbuje użyć tego właśnie rodzaju ataku. Second Order Code Injection jest o tyle skuteczny, iż dane które będzie pobierała określona aplikacja web'owa należą z reguły do strefy zaufanej (pliki dziennika na serwerze, statystyki odwiedzin, etc.), tak więc ich filtrowanie podczas pobierania z bazy jest z reguły okrojone przez samego twórcę aplikacji w celu zwiększenia wydajności serwisu. Od strony praktycznej wygląda to tak, iż jeżeli "niepoprawne" dane niestety "jakoś" trafią już do bazy danych (poprzez błędne ich filtrowanie) to potem nie będą już one poddane żadnej kontroli, co z kolei prowadzi do wysokiej skuteczności ataków Second Order Code Injection.

d) Directory traversal - podatność skrytpów na atak typu directory traversal umożliwia agresorowi nieuprawniony dostęp do plików na serwerze lub, w zależności od konfiguracji PHP dołączenie plików znajdujących się na innym serwerze. Podatne funkcje to te, które odpowiadają za działania na plikach: include(), require(), fopen(), file(), readfile() i inne. Jeśli dane do tych funkcji dostarczane są przez użytkownika (i nie są poprawnie neutralizowane, potocznie mówiąc - escapowane), może on wspiąć się wyżej w drzewie katalogowym i uzyskać dostęp do innych plików niż zakładał administrator serwera. Takie działanie może być bardzo proste i polegać na dodaniu ../ do wykorzystywanego parametru.

e) HTTP Request Smuggling (HRS) - atak ten możliwy jest do przeprowadzenia dzięki faktowi, iż z reguły aplikacje webowe akceptują zapytania lub dane, które "nieznacznie" odbiegają swą konstrukcją od oficjalnych standardów. Dodając do tego aplikacje pracujące na różnych warstwach, które nie współpracują ze sobą w należyty sposób, ataki HRS stają się coraz bardziej popularne. HRS jest narzędziem, które może zostać użyte na wielorakie sposoby, przykładowo omijanie systemów IDS / IPS czy też samych firewalli. HRS w swym działaniu ma osiągnąć jedno: to samo zapytanie HTTP ma zostać zinterpretowane na różne sposoby przez różne aplikacje (jest to możliwe dzięki temu, iż większość aplikacji tworzy swoje standardy nie trzymając się tych oficjalnych). Przykład: system IDS odrzuca zapytanie HTTP ponieważ zawiera ono w sobie złośliwą technikę "Directory Traversal", jednak sam firewall pracujący na tym samym serwerze ALE pochodzący np. od innego producenta zaakceptuje to zapytanie HTTP; powstaje konflikt. Atakujący zaciera ręce, ponieważ widzi, iż chociaż serwer jest chroniony przez odpowiednie systemy to nie współpracują one ze sobą w należyty sposób, akceptują także odchylenia od standardów.

13. Socjotechnika (social engineering - inżynieria społeczna) - 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.

- Inteligentne przekierowanie (Smart Redirection Attack) - technika ataku typu phishing, która została wymyślona na odpowiedź dużej wykrywalności fałszywych stron przez firmy zajmujące się bezpieczeństwem sieciowym. Polega ona na stworzeniu kilku lub nawet kilkunastu tak samo sfałszowanych stron i umieszczeniu ich w Sieci w różnych lokalizacjach geograficznych w celu zmniejszenia ich wykrywalności. Następnie do ofiar przesyłany jest e-mail z odpowiednio spreparowaną treścią nakłaniający czytelnika do kliknięcia na odnośnik. Adres odnośnika prowadzi do jednego i tego samego hosta, na którym jest zainstalowane inteligentne oprogramowanie do przekierowań na sfałszowane strony. Oprogramowanie to połączone z każdą sfałszowaną stroną sprawdza, która z nich jeszcze nie została wykryta i wyłączona. W ten sposób ofiara zostaje za każdym połączona z aktywną i fałszywą stroną, na której ofiara pozostawia dane pozwalające uzyskać przez internetowych oszustów korzyści majątkowe.

- Otwarte przekierowanie (Open Redirect) - luka w stronach internetowych (znajdujących się głównie na serwerach dużych usługodawców sieciowych), która pozwala dzięki skryptom zawartych w nich strukturze wykonać na ich adresach tzw. otwarte przekierowanie i w efekcie być wykorzystanym przez phisherów i scammerów. dołączeniu do adresu internetowego danej witryny parametru określającego miejsce, do którego ma nastąpić przekierowanie, np.:

http:⁄⁄www.ofiara.pl⁄index.php?URL=http:⁄⁄www.atakujący.pl

Atakującym łatwiej w ten sposób skłonić swoje ofiary do kliknięcia spreparowanego linku wysłanego na pocztę bądź poprzez inny rodzaj łączności, ponieważ sama domena odsyłacza wzbudza zaufanie. Gdzie pod adresem atakującego ukrywana jest fałszywa witryna lub szkodliwe oprogramowanie (exploity, konie trojańskie, reklamy, SPAM).

- Pharming - zaawansowana forma phishingu, polega na fałszowaniu adresów IP przypisanych nazwom domen i wprowadzaniu takich informacji do serwerów DNS. W rezultacie jeśli np. klient banku wpisze w przeglądarce adres domenowy witryny banku, połączy się z nie prawdziwą witryną banku, lecz ze stroną podstawioną przez złodzieja. Taka fałszywa strona najczęściej wygląda identycznie jak prawdziwa (nawet posida informacje i ostrzeżenia o możliwości próby wyłudzenia danych), a nieświadomy niczego użytkownik sieci bez wahania podaje swój login i hasło dostępu. Ataki typu pharming są o tyle niebezpieczne, że nie wymagają zmuszenia ofiary do jakichkolwiek działań mających pomóc złodziejowi. W metodzie tej nie wysyła się do ofiary fałszywych e-maili, zatem ofierze trudno cokolwiek podejrzewać. Cały atak koncentruje się na serwerach DNS (choć może być przeprowadzony na lokalny komputer), z których korzystają potencjalne ofiary.

*) drive-by pharming - jest to rodzaj zagrożenia polegający na tym, że po odwiedzeniu przez użytkownika specjalnie spreparowanej witryny internetowej atakujący może zmienić ustawienia DNS na routerze użytkownika lub w punkcie dostępu bezprzewodowego. Zmiana dokonywana jest przy pomocy kodu napisanego w JavaScript po wejściu na fałszywą stronę i jest możliwa w sytuacji, gdy router szerokopasmowy nie jest chroniony hasłem lub, gdy atakujący jest w stanie je odgadnąć - na przykład korzystając ze znanego hasła domyślnego, które nie zostało zmienione przez użytkownika. Dzięki temu przestępca komputerowy uzyskuje pełną kontrolę nad tym, które witryny użytkownik odwiedza w internecie. Użytkownikowi może na przykład wydawać się, że odwiedza stronę swojego banku, gdy w rzeczywistości został przekierowany do spreparowanej witryny. Najprostsze zabezpieczenie to zmiana w routerze hasła domyślnego na unikalne.

- Vishing (Phishing poprzez VoIP) - jest formą phishingu poprzez telefonię internetową. Tak jak w przypadku phishingu, oszuści wykorzystujący telefonię internetową starają się podszywać przede wszystkim pod instytucje finansowe. Jedną z praktykowanych przez nich metod jest rozesłanie spamu, w którym podawany jest numer 0-800, pod którym odbiorca e-maila powinien zaktualizować swoje dane przy np. koncie bankowym. Po wykręceniu podanego numeru włącza się automat, który prosi ofiarę o podanie konkretnych danych dostępowych do konta. Inną metodą jest ominięcie pośrednictwa e-miala w oszustwie oraz wykorzystaniu programów, które samoczynnie telefonują przez VoIP pod zadaną im listę numerów telefonicznych. W momencie odbioru takiego telefonu przez ofiarę automatycznie puszczana jest informacja o próbie wykorzystania karty kredytowej danej osoby oraz prośba o przejście procedury weryfikacyjnej, w której należy podać numer karty oraz dane jej właściciela.

- SMiShing (Phishing poprzez SMS) - odmiana ataku z kategorii phishing dokonywana za pomocą wiadomości typu SMS. Wiadomość taka jest masowo rozsyłana do najczęściej (choć nie zawsze) przypadkowych użytkowników oraz nakłania ich do m. in. kliknięcia w niebezpieczny, choć z pozoru niegroźnie wyglądający link. SMS może zachęcać także do odwiedzin, na pierwszy rzut oka, "normalnej" witryny internetowej. W rzeczywistości wszystkie te działania mają jeden cel: przekonać ofiarę aby ta zrobiła to, co atakujący posiada w swej intencji. Oprócz standardowych linków czy podejrzanych witryn (których celem jest infekcja maszyny / urządzenia oprogramowaniem typu malware) SMiShing w połączeniu ze spoofing'iem może nakłaniać ofiarę praktycznie do każdej czynności (atakujący może podawać się za bank, urzędnika, chorą babcię, itp).

c) NLP - (NeuroLingwistyczne Programowanie) - metoda ta, rozważana w sensie bezpieczeństwa komputerowego, wywodzi się od Socjotechniki. Polega ona na dogłębnej i zaawansowanej manipulacji ludźmi oraz ich poglądami. Metoda ta nie opiera się na znajomości techniki oraz pochodnych (w przeciwieństwie do Socjotechniki). Tutaj główną rolę odgrywają uczucia, poglądy oraz potrzeby. Chodzi o takie modelowanie sytuacji, w której będziemy "górą", zyskamy nad przeciwnikiem przewagę. I chociaż na pierwszy rzut oka mogłoby się wydawać, iż z bezpieczeństwem komputerowym nie ma to nic wspólnego, to jest to nieprawdą. Manipulacja tutaj polega na tym, aby poprzez szereg naszych ingerencji w otoczenie bądź konkretną osobę osiągnąć z góry zamierzony cel, który z kolei może nas doprowadzić do kolejnych ciekawych etapów (czego finałem może być. m. in. zdobycie bazy danych, której nie powinniśmy zdobyć). W metodzie tej główną opoką jest granie na ludzkich uczuciach i emocjach. Wszystko odbywa się w "życiowych codziennych" sytuacjach: długoterminowe zdobywanie sztucznych przyjaźni, protekcji, rekomendacji, które to z kolei prowadzą nas do upragnionego celu. Metoda brutalna i nieludzka, z reguły wymagająca biegłości w posługiwaniu się kłamstwem, braku sumienia, etc. Jak już było pisane, w metodzie tej głównym czynnikiem jest KŁAMSTWO (jakkolwiek niepojmowane). Na kłamstwie rodziły się największe mocarstwa a następnie upadały. Geniusz samego kłamstwa, dobrze wyuczony oraz stale ćwiczony potrafi przynosić niewyobrażalne korzyści. Kłamstwo jest skuteczne, jeżeli sami zaczniemy w nie wierzyć. Z kolei geniusz kłamstwa polega na balansowaniu pomiędzy tym co jest prawdą potencjalną a tym, co według nas jest prawdą. A zatem można uwierzyć we własne kłamstwa sztucznie je usprawiedliwiając - i tak koło się zamyka, ponieważ w naszym mniemaniu nie kłamiemy.

14. Cyberstalking - polega na ingerencji przestępcy w psychikę ofiary, na jej prześladowaniu i zastraszaniu. Definicja w tym przypadku nie jest jednolita, ale ogólnie zjawisko to oznacza prześladowanie danej osoby. Może ono być realizowane bezpośrednio lub wirtualnie. Natarczywe komunikowanie się z ofiarą (wbrew jej woli), przesyłanie gróźb pod jej adresem, rozsyłanie e-maili w jej imieniu, podszywanie się pod nią w Sieci, rozpowszechnianie informacji na jej temat (niekoniecznie prawdziwych), a nawet włamania do jej komputera. Poczucie nieustannego zagrożenia i życie pod presją uniemożliwia jej normalne funkcjonowanie. Aby nie narazić się na takie prześladowania, należy zadbać o własne bezpieczeństwo i anonimowość w Internecie. W kontaktach online stosować nicki, które nic o nas nie mówią, założyć dodatkowy adres e-mail, tylko na potrzeby uczestnictwa w listach dyskusyjnych itp., unikać uzupełniania formularzy z danymi personalnymi na stronach WWW i nie ufać ślepo sieciowym rozmówcom (patrz także NLP).

15. Trash-diving (nurkowanie w śmieciach) - jedna z ciekawych, bardzo awanturniczych metod polowania na dane innych użytkowników. Polega na zupełnym odrzuceniu komputera, przebraniu się w łachy nędzarza i... grzebania w śmieciach. Na pierwszy rzut oka technika jest bardzo prosta, jednak rzadko daje się ją zastosować wobec dużych firm softwareowych. Przewidziały one ewentualne problemy, zamykają i każą ochronie pilnować śmietników czy najmują firmy do niszczenia odpadów.

Dodatek A: Malware (malicious software):

A. Malware (malicious software) - bardzo szeroka i ogólnie pojmowana gama programów / skryptów / implementacji, które to działają całkowicie lub częściowo w sposób szkodliwy / wadliwy (z założenia; intencji autora oprogramowania) / złośliwy, utrudniając tym samym życie użytkownikowi komputera (m. in. zagrażając jego bezpieczeństwu i poufności w sieci). W systemie mogą znaleźć się w sposób jawny (za zgodą użytkownika) bądź też w sposób niejawny (bez uprzedniej akceptacji czy przyzwolenia).

A-1. Wirus (virus, virii) - ukryty program komputerowy, który posiada zdolność kopiowania się (opcjonalnie dopisywania się bądź też zamiany) i stawania się częścią innych programów. Niektóre wirusy posiadają funkcje destrukcyjne a niektóre tylko powodują nieznaczne zmiany w systemie. 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).

Nie istnieje stały i niezmienny podział wirusów, lecz jest on zawsze zależny od obranego kryterium. Ze względu na zachowanie się wirusa w swoim otoczeniu oraz jego typ, można je podzielić na kilka głównych grup:

a) Wirusy towarzyszące (companion viruses) - rodzina wirusów, które nie dokonują żadnych zmian na atakowanym pliku a w celu uruchomienia swojego kodu tworzą kopię oryginalnego pliku ofiary oraz dopisują się do niej (owej kopii). Przy próbie uruchomienia przez ofiarę określonego pliku, najpierw zostanie uruchomiona jego kopia zawierająca wirusa a dopiero w następstwie prawidłowy plik użytkownika.

b) Wirusy ukrywające się (stealth) - cała szeroka gama wirusów, które to wykorzystując różnorakie mechanizmy starają się ukrywać przed produktami anty-wirusowymi. W tym celu wirus może m. in. przy skanowaniu pokazywać kopię zaatakowanego pliku sprzed infekcji bądź też podawać poprzedni rozmiar pliku.

c) Wirusy pasożytnicze (parasitic viruses) - wirusy, które w celu skutecznego działania i reprodukcji samego siebie muszą dokonać infekcji pliku (z reguły bardzo wielu), tak więc dochodzi do zmian w strukturze ów infekowanego pliku i jego znikomej lub całościowej modyfikacji (nie zawsze istnieje możliwość odwrócenia tego procesu).

d) Bomby czasowe - grupa wirusów, które swoje najczęściej destrukcyjne zamiary ujawniają tylko w dokładnie określonym czasie lub w momentach częściowo zależnych / pokrewnych od czasu (m. in. ilość restartów maszyny bądź ilość uruchomień wirusa).

e) Bomby logiczne (logic bomb) - grupa wirusów, które swoje najczęściej destrukcyjne zamiary ujawniają w określonych momentach logicznych, tj. po spełnieniu przez maszynę / użytkownika określonych warunków, bardzo często mozolnych i skomplikowanych (cecha wirusów wymierzonych w konkretne instytucje).

f) Wirusy makr (macro viruses) - wirusy te, w przeciwieństwie do innych, nie próbują nawet infekować programów / plików używanych przez użytkownika, a zajmują się infekowaniem definicji makr oraz reprodukcją samego siebie w określonym wewnętrznym języku programowania dla danego oprogramowania (np. MS Office -> VBS).

g) Wirusy plików wsadowych wirusy wykorzystujące pliki typu BAT. Po udanej infekcji i uruchomieniu zainfekowanego pliku wsadowego, tworzony jest odpowiedni plik wykonywalny (COM, EXE).

h) Wirusy rezydujące w Boot sector (boot sector viruses) - wirusy tego typu z reguły tworzą swoje 2 kopie: jedna na normalnym obszarze dyskowym, a druga w obszarze ładowania bądź w głównym sektorze dysku (boot sector). Po ponownym uruchomieniu zainfekowanej maszyny (przy założeniu, iż start odbywa się z zainfekowanego nośnika / dysku) wirus zostaje aktywowany a następnie odwołuje się do swojego głównego źródła znajdującego się już w normalnym obszarze dyskowym (w boot sector z reguły zostaje umieszczony tylko skromny "kawałek" / odnośnik do rzeczywistego wirusa). Krewnymi takich wirusów są m. in. Wirusy inicjujące, które to starają się edytować dane znajdujące się w głównym sektorze ładowania, tak aby samemu się tam "dopisać". Inną możliwą czynnością jest także np. umiejętność rezydowania w pamięci systemu, jeżeli wcześniej nastąpił rozruch systemu operacyjnego z zainfekowanej dyskietki, CD-ROM itp.

i) Wirusy hybrydowe (zw. także wirusami wieloczęściowymi, z ang. "multi-partite viruses") - wirusy te charakteryzują się pewną wewnętrzną złożonością, tj. łączą one w sobie 2 lub więcej z powyżej wymienionych cech. Kiedyś najczęściej spotykaną hybrydą była kombinacja wirusa rezydującego w boot sector + wirus pasożytniczy.

Z kolei ze względu na zaawansowane technologicznie techniki wykorzystywane podczas ukrywania się wirusa przed oprogramowaniem anty-wirusowym, podział na stosowane / zaimplementowane techniki może wyglądać tak:

a) Polimorfizm - wirusy posiadające tę cechę charakteryzują się tym, iż posiadają dynamiczną możliwość zmiany części swojego kodu (w celu utrudnienia możliwości jego wykrycia standardowymi metodami). Do tego celu wirus taki używa zmiennych procedur oraz funkcji deszyfrowania. Wirus składa się z "deszyfratora" (o zmiennej procedurze oraz o zmiennym kluczu używanym podczas szyfrowania) oraz kodu już w pełni zaszyfrowanego. Pierwsze wirusy polimorficzne datuje się na początek lat 90-tych.

b) Metamorfizm - technika wykorzystywana w wirusach metamorficznych polega na "polimorfizmie zupełnym", tj. zmienne nie są tylko procedury deszyfrujące ale także całe logiczne instrukcje! Dzięki temu każda nowa kopia wirusa posiada praktycznie tylko znikome "kawałki" stałego kodu. Wirus taki jest w stanie zastępować określone procedury innymi funkcjami, przez co kod wirusa zmienia się praktycznie cały ale funkcjonalność pozostaje ta sama (inteligentny wirus). Wirusy takie posiadają swoje własne procedury szyfrujące / deszyfrujące a nawet deasemblery. Potrafią także inteligentnie "ważyć" swój kod - kiedy wirus stanie się zbyt duży (zbyt wiele automatycznie tworzonych instrukcji, poniekąd zbędnych dla całości działania programu), najmniej potrzebne z nich zostają usunięte.

Jeszcze innym podziałem może być podział wirusów ze względu na miejsce jego rezydencji w systemie:

a) Wirusy rezydentne - wirusy oparte o model TSR (Terminate and Stay Resident); cała "instalacja" odbywa się w pamięci systemu a o właściwym uruchomieniu wirusa świadczą określone warunki (zależne od samego wirusa). Wirus taki posiada łatwą możliwość kontrolowania systemu i jego pamięci, ponieważ cały czas aktywnie "czycha" w pamięci komputera na odpowiednie "znaki".

b) Wirusy nierezydentne - uruchomienie takiego wirusa możliwe jest tylko poprzez docelowe uruchomienie zainfekowanego programu. Najczęściej złośliwy kod zostanie wykonany tylko raz (wyjątkiem jest m. in. kolejne uruchomienie niebezpiecznego oprogramowania). Fakt ten stanowi duże ograniczenie dla wirusa, tak więc spotykane wirusy to z reguły wirusy rezydentne.

A-1-1. Rabbit (z ang. królik) - rodzina wirusów, których głównym celem i założeniem jest możliwie jak najszybsza i chaotyczna procedura powielania samego siebie na zainfekowanym komputerze, aż do wyczerpania się miejsca na twardym dysku komputera (opcjonalnie Rabbit może także zaprzestać działania po stworzeniu określonej liczby swoich kopii).

A-1-2. Robak (worm) - rodzaj wirusa zaprojektowany w taki sposób, aby do jego rozprzestrzeniania nie była konieczna interakcja "ciała żywiciela"; robak jest w stanie samoczynnie rozprzestrzeniać się za pomocą sieci, nie potrzebuje żadnych nosicieli (rozprzestrzenia się za pomocą m. in. błędów w oprogramowaniu sieciowym / serwerowym).

A-2. Dialer - aplikacja, której głównym zadaniem jest łączenie się z Internetem poprzez modem, przy czym dobór numeru dostępowego, z którego użytkownik będzie korzystał nie jest przypadkowy - pada przeważnie na numery zaczynające się od 0-700. Celem działania takiego programu jest naciągnięcie ofiary na wysokie koszty za połączenie z internetem.

A-3. Koń trojański (znany także jako Trojan) - program, który poniekąd podszywając się pod przydatną i użyteczną aplikację dla potencjalnego użytkownika, posiada tak naprawdę ukryte funkcje, które to pozwalają z kolei jego autorowi na przeprowadzanie nieautoryzowanych oraz niepożądanych czynności na maszynie swojej ofiary. Dla zachowania pozorów, niektóre konie trojańskie rzeczywiście oferują swojej ofierze przydatne funkcje, jednak użytkownik nie ma pojęcia, iż oprócz ów funkcji istnieje cały szereg innych postronnych procedur, dzięki to którym na pierwszy rzut oka "przyjazny" program jest niebezpiecznym narzędziem w rękach włamywacza (atakujący jest w stanie kierować działaniem trojana bez wiedzy użytkownika). Trojany mogą także nie oferować żadnych przydatnych funkcji dla swojej ofiary, ponieważ ofiara może nawet nie zdawać sobie sprawy z tego, iż w jej systemie w ogóle znajduje się trojan (kolokwialnie mówiąc jest on "głęboko ukryty"). Chociaż Koń trojański to określenie całej gamy niebezpiecznych aplikacji, to bardzo często słowo to występuje także w konkretnym znaczeniu, tj. może ono konkretnie opisywać postronną aplikację, która to pozwala włamywaczowi na zdalne administrowanie systemem ofiary.

A-3-1. Backdoor (tylna furtka, tylne drzwi) - aplikacja, która umożliwia swojemu autorowi wielokrotny nieautoryzowany dostęp do zdalnego systemu po uprzednim zdobyciu na nim praw administratora (bądź adekwatnie od sytuacji, przydzielenie odpowiednich praw "złośliwej aplikacji"). Mogą to być np. 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. 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. autoryzacja użytkownika. Drugi rodzaj backdoorów to tzw. konie trojańskie (to programy często autoryzowane, ale nie zawsze), które zostały zmodyfikowane 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ć go do naszego systemu - na nośnikach pamięci masowej lub poprzez połączenie sieciowe takie jak Back Orifice. Do tej kategorii można też zaliczyć zupełnie legalne (i komercyjne) oprogramowanie takie jak popularny pcAnywhere firmy Symantec. Wszystko to także zależy od celu w jakim dany program został zainstalowany. Umieszczanie tylnych furtek w systemie nie zawsze jest wynikiem zaniedbania czy chociażby działalności włamywacza i nie zawsze stanowi zagrożenie dla bezpieczeństwa; niekiedy jest ona konieczna dla zapewnienia właściwego nadzoru ze strony personelu serwisowego lub wsparcia technicznego dostawcy. Furtki takie mają jednak to do siebie, że administratorzy zwyczajnie o nich zapominają, dzięki czemu pozostają one w systemach dłużej, niż ktokolwiek by się spodziewał. Niesławnej pamięci robak RTM, który jesienią 1988 roku wyrządził niemałe szkody w komputerach z systemem UNIX BSD, wykorzystywał lukę w zabezpieczeniach programu sendmail. Inny przykład takiej "kontrolowanej furtki" przedstawiony został w artykule Kena Thompsona na łamach czasopisma Communications of the ACM 27, 8 z sierpnia 1984 roku, który opisuje poważną lukę we wczesnych wersjach UNIX-a, którą można uznać za jedno z najbardziej spektakularnych zaniedbań pod względem bezpieczeństwa. Kompilator języka C zawierał mianowicie kod rozpoznający, w którym miejscu znajduje się procedura logowania i wprowadzał kod wrażliwy na hasło wybrane przez Thompsona; dawało to Thompsonowi możliwości "wejścia" do systemu nawet wówczas, gdy nie miał on w tym systemie swego konta. Luka tego rodzaju powinna być naprawiona poprzez usunięcie niebezpiecznego fragmentu z kodu źródłowego kompilatora i jego ponowne skompilowanie. To jednak prowadziło do powstania błędnego koła, bowiem "spreparowana" wersja bajt 15 kompilatora zawsze wstawiała kwestionowany kod do produkowanych binariów, które nadal pozostawały "spreparowane". W efekcie rzeczona luka nadal pozostawała w kodzie binarnym, choć nie było już jej śladu w kodzie źródłowym!

- Cross Build Injection - (XBI) - jest techniką odkrytą przez firmę Fortify Software zajmującą się świadczeniem usług i produktów z zakresu bezpieczeństwa informacji. Technika ta polega na wprowadzeniu do aplikacji szkodliwego kodu już w momencie jej tworzenia. Wydawać by się mogło, że ten rodzaj ataku polega dokładnie na tym samym, co opisane powyżej przykłady, czyli: tylne drzwi. Różnica pomiędzy XBI i Backdoor polega na tym, że w dobie zautomatyzowanych systemów kompilowania kodu i podzielenia procesu produkcji oprogramowania na niezależne części, więcej osób ma dostęp do zasobów decydujących o przebiegu budowania aplikacji. Za przykład posłużyć mogą mechanizmy grupowej pracy obecne w wielu projektach Open Source i Free Software czy w korporacjach. Tworzenie aplikacji w nowym modelu jest zazwyczaj kilkuetapowe. Kod programu znajduje się w repozytorium systemu kontroli wersji (np. CVS, SVN czy GIT) i grupa deweloperów operuje właśnie na nim (wprowadza zmiany, które dystrybuowane są do każdego programisty). Kolejną warstwą jest tworzenie paczek z wersjami gotowymi do kompilacji. Zdarza się, że działanie to jest zautomatyzowane i polega na wysłaniu do jakiegoś systemu żądania stworzenia archiwum z kodem pochodzącym z repozytorium. Takie archiwum źródeł (np. w formacie .tgz) jest następnie udostępniane za pomocą protokołu FTP lub innego sposobu współdzielenia plików. Kolejny krok to kompilacja - w tym przypadku mamy częściej do czynienia z pełną automatyzacją. Systemy zwane builderami otrzymują zlecenie od osoby zarządzającej wersjami (tzw. release managera) i, posługując się wytycznymi zawartymi w odpowiednich plikach, pobierają paczkę źródeł, rozpakowują ją, aplikują potrzebne łatki i rozpoczynają kompilację oraz budowanie pakietu gotowego do instalacji. Wspomniane wytyczne bardzo często znajdują się w repozytorium dostępnym deweloperom. Mowa tutaj na przykład o plikach .spec używanych przez narzędzie rpmbuild podczas budowania pakietów RPM czy o instrukcjach zawartych w zbiorach build.xml, których wymaga Apache Ant. Ataki XBI, zależnie od przyjętej infrastruktury i modelu pracy nad aplikacją, mogą przybierać różną postać. Po pierwsze, istnieje ryzyko wprowadzenia szkodliwego kodu przez osoby zaangażowane w projekt. Niebezpieczne działanie może wtedy dotyczyć zmian dokonanych w repozytorium, jednak będzie to łatwe do namierzenia. Bardziej prawdopodobnym i trudniejszym do wyśledzenia występkiem może być podmiana zarchiwizowanych źródeł na serwerze FTP, ale zależy to od ograniczeń dostępu. Jest to kwestia zaufania - zdarza się, że w ramach projektu każdy deweloper ma "na wszelki wypadek" nazwę użytkownika i hasło pozwalające na dostęp do serwera plików, by w razie pomyłki szybko zainterweniować i usunąć wadliwe archiwum. Kolejnym punktem krytycznym, najbardziej narażonym na ataki XBI, są zbiory z wytycznymi budowania kodu. Mowa tu o wszelkich skryptach i plikach konfiguracyjnych narzędzi takich jak rpmbuild, ant, make, automake itp. W zbiorach tych można wskazać programowi kompilującemu aplikację lub budującemu pakiet, jakie dodatkowe czynności ma on wykonać albo skąd powinien ściągnąć źródła. Powodzenie ataku zależy od tego, w którym miejscu przechowywane są pliki z instrukcjami. Zdarza się, że rezydują tam, gdzie kody aplikacji, choć w przypadku większych projektów czy dystrybucji GNU/Linuksa przeznaczone są na nie osobne systemy kontroli wersji. Poważniejszy problem to atak hybrydowy, w którym to nie uczestnik projektu umieszcza niebezpieczne kody w bibliotece czy aplikacji. Strategią zewnętrznego intruza najczęściej będzie skompromitowanie serwera odpowiedzialnego za budowanie nowych wersji lub systemu przechowującego pliki z instrukcjami budowania. Ataki na repozytorium źródeł są raczej mało opłacalne, ponieważ napastnik pozostawia ślady swojej aktywności. Ciekawym sposobem jest atak na system DNS wykorzystywany przez builder. Intruz, który wie, skąd pobierane są archiwa źródeł, jest w stanie sfałszować wpis dotyczący ich lokalizacji po stronie serwera nazw i zmusić builder do pobrania własnej paczki kodu (np. z umieszczonym trojanem czy backdoorem). Na tego typu ataki najczęściej narażone są publiczne projekty, gdzie dostęp do źródeł ma wiele osób, a proces budowania pakietów i publikowania nowych wersji jest zautomatyzowany. Zagrożone są też większe projekty dużych firm. Nie używają one wprawdzie tak często infrastruktury Internetu, lecz mamy tam znacznie więcej sytuacji, w których przyjęty podział kompetencji nie przekłada się na zasady zarządzania dostępem (np. programiści, testerzy i osoby odpowiedzialne za budowanie kodu mają nawzajem pełny dostęp do swoich systemów). Przykładem takiego ataku jest kompromitacja serwerów ftp.openssh.com oraz ftp.opebsd.org i umieszczenie w wersjach 3.2.2p1, 3.4 oraz 3.4p1 programu OpenSSH szkodliwego kodu umożliwiającego uzyskanie dostępu poprzez tylne drzwi. Podobnie było w przypadku programu Sendmail 8.12.6 oraz IRSSI 0.8.4.

A-3-2. Rootkit - jest to złośliwy kod, który po zainstalowaniu (opcjonalnie uruchomieniu, załadowaniu) przez włamywacza na uprzednio zdobytym systemie, umożliwia utrzymanie całego ataku w ukryciu / tajemnicy, tak aby administrator maszyny nie podejrzewał, iż mogło dojść do jakkolwiek niepojmowanego naruszenia bezpieczeństwa. W tym celu rootkit może m. in. ukrywać określone procesy, pliki, zalogowanych użytkowników a przede wszystkim własną obecność w systemie. Dzięki temu, długotrwałe i niezauważalne utrzymywanie kontroli (bądź ukrywanie np. Konia trojańskiego, wszystko zależy od intencji włamywacza) nad zaatakowanym systemem staje się dla włamywacza realnie możliwe. Rootkit bardzo często uderza w samo jądro systemu (kernel level, kontrola rdzenia OS) - dlatego właśnie jego detekcja bądź detekcja struktur, które stara się ukrywać, jest wysoce trudna (rootkit może przecież np. kontrolować narzędzia, którymi administrator próbuje go wykryć!, albo być całkowicie poza ich zasięgiem). Do jego głównych zadań zalicza się ukrywanie faktu dokonanego włamania oraz oszukiwanie systemów zabezpieczających (anty-wirus, firewall, itp.).

a) Persistent Rootkit - ten rodzaj rootkita jest uruchamiany wraz z każdym nowym startem systemu; posiada także na dysku swoją kopię, która wraz z uruchomieniem systemu jest także "odpalana". Uruchamiany bez ingerencji użytkownika. Najczęściej rezyduje w plikach systemowych bądź rejestrze systemu.

b) Memory-based rootkit - tego rodzaju rootkit za miejsce przebywania upodobał sobie pamięc operacyjną systemu, tj. jej zrestartowanie nie pozwala na dalsze działania rootkita.

c) User-mode rootkit - ten rodzaj rootkita posiada wbudowaną możliwość przechwytywania i dynamicznej modyfikacji zapytań pochodzących od narzędzi systemu plików. Zaprojektowany w celu oszukiwania i pozostawania niewidocznym nawet dla zaawansowanych systemów zabezpieczających.

d) Kernel-mode rootkit - ten rodzaj rootkita posiada możliwość dokonywania zmian i edycji już na samym etapie rdzenia systemu; jego wykrycie jest wysoce skomplikowane, czasochłonne a przy okazji także kłopotliwe.

A-3-3. Spyware - grupa aplikacji / skryptów, która najczęściej należy poniekąd do rodziny oprogramowania typu Koń trojański. Zdarza się także, iż oprogramowanie typu spyware wymienia się jako osobną grupę dla malware, jednak z powodu tego, iż spyware to szeroko pojmowane oprogramowanie służące do szpiegowania, autorzy skłaniają się ku temu, aby twierdzić, iż spyware to w większości przypadków pochodne koni trojańskich, tj. spyware przez cały czas szpieguje użytkownika i bez jego wiedzy zapisuje jego systemową aktywność po to, aby dane te w końcu dotarły do atakującego / twórcy oprogramowania (bądź też do specjalnych mechanizmów do tego celu zaprogramowanych). Tak więc jest to pewien przykład konia trojańskiego z konkretną "misją" - dowiedzieć się o prywatności zainfekowanego użytkownika / komputera jak najwięcej a następnie tę wiedzę przekazać atakującemu.

Sporną sprawą jest, czy programy typu Adware, Scumware oraz tym podobne, w rzeczywistości są oprogramowaniem typu spyware. Wg autorów publikacji są one aplikacjami typu spyware! Jeszcze kilka lat temu, kiedy to oprogramowanie typu adware zmuszało użytkownika do oglądania niechcianych ale i zupełnie przypadkowych reklam, oprogramowanie to nie zaliczało się do gamy spyware. W dzisiejszych czasach Adware wykorzystuje zautomatyzowane i skomplikowane mechanizmy do szpiegowania (tracing), aby wyświetlane reklamy jak najbardziej "pasowały" do ofiary - tak więc w rzeczywistości są to programy spyware o ściśle określonej funkcji. Dlatego też autorzy publikacji (i nie tylko) zaliczają je na poczet spyware.

A-3-3-1. Keylogger - program z rodziny koni trojańskich (spyware), służący do przechwytywania i zapisywania w / do 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.

A-3-3-1-1. Software Keylogger - program pełniący funkcję systemowego keyloggera, tj. jego głównym zadaniem jest przechwytywanie naciskanych przez użytkownika klawiszy. Bardziej rozbudowane keyloggery posiadają także implementacje, które umożliwiają im robienie screenshoot'ów (zrzuty ekrany) w celu poznania środowiska graficznego, w którym pracuje użytkownik czy też możliwość "podglądania" obsługi wirtualnych klawiatur (zwykły keylogger, który podsłuchuje naciskane przez użytkownika klawisze nie przechwyci danych wprowadzanych poprzez wirtualną klawiaturę; screenshooty to umożliwiają). Do innych ciekawych funkcji zaawansowanych keyloggerów programowych można zaliczyć także możliwość przechwytywania zapamiętanych danych poprzez przeglądarkę internetową w różnego rodzaju polach logowania, formularzy itp.

- Kernel Keylogger (zwany także Driver Keylogger) - oprogramowanie zaliczane do keyloggerów programowych; złośliwy kod wyłapujący naciskane przez użytkownika klawisze jest implementowany już na poziomie Kernela / samych sterowników (boot level). Oprogramowanie takie jest bardzo ciężko wykryć, ponieważ jest ono uruchamiane zanim zostaną uruchomione aplikacje użytkownika (antywirus, firewall, etc). Skuteczność tego typu rozwiązań (kernel/driver keylogger) jest więc bardzo wysoka.

A-3-3-1-2. Hardware Keylogger - keylogger sprzętowy, trudny do wykrycia aczkolwiek posiadający mniejszą liczbę opcji. Najczęściej keylogger taki jest podłączany do kabla łączącego klawiaturę z komputerem. W przypadku laptopów urządzenie takie można zamontować pod główną matrycą wewnątrz laptopa. Kayloggery sprzętowe wymuszają posiadanie fizycznego dostępu do komputera w celu jego zamontowania. Ponieważ są to urządzenia stosunkowo małe, trudno je zauważyć, a co za tym idzie ich "żywotność" jest stosunkowo duża.

A-3-3-2. Adware - rodzina złośliwego oprogramowania należąca do kategorii spyware, której głównym zadaniem jest ciągłe i nachalne wyświetlanie użytkownikowi reklam bez jego bieżącej ani uprzedniej zgody. Fakt ten objawia się ciągłymi reklamami w wyskakujących okienkach typu pop-up bądź też np. otwieranie się nowych okien w przeglądarce internetowej (oczywiście merytorycznie z reklamami). Przy okazji tego procederu, aplikacje tego typu zbierają także prywatne dane o użytkowniku aby m. in. być w stanie wyświetlać reklamy "wpadające w gust" ofierze bądź też aby móc informować swojego autora, w które reklamy ofiara najchętniej "klika" (jeśli w ogóle klika).

A-3-3-2-1. Scumware - oprogramowanie tego typu potrafi na odwiedzanych przez ofiarę stronach WWW umieszczać różnego rodzaju linki, których w rzeczywistości na danej witrynie nie ma (są one widoczne tylko dla ofiary na lokalnym zainfekowanym komputerze) - jest to poniekąd formą reklamy serwisów, które występują pod tymi odnośnikami. Oprócz tego, jeżeli oprogramowanie typu scumware trafi na komputer człowieka tworzącego np. witryny WWW, pewnym jest, iż wysyłane / uploadowane przez niego witryny do sieci web będą zawierały w swoim kodzie niechciane linki (najczęściej do stron erotycznych). Oprogramowanie przechwyci także odwiedzane przez ofiarę linki a następnie może przekierować użytkownika na zupełnie inny adres. Poza tym wszystkim, twórca "złego" oprogramowania może być (i najczęściej jest) informowany o krokach swojej ofiary (oraz wynikach manipulacji) - naruszenie poufności.

Scumware posiada także drugą definicję, opisuje ona Scumware jako każde złośliwe oprogramowanie, które infekuje użytkownika poprzez witryny WWW bez jego wiedzy. Tak więc w takim znaczeniu Scumware to cała gama programów typu malware z tym założeniem, iż do ich rozprzestrzeniania musi dojść za pośrednictwem sieci web.

A-3-3-3. Stealware - oprogramowanie typu spyware, którego celem jest jak najskuteczniejsze okradanie użytkowników z "prawdziwych" pieniędzy. W tym celu stealware śledzi poczynania użytkownika i gdy tylko oprogramowanie wykryje, iż użytkownik dokonuje transakcji za pomocą komputera / internetu, natychmiast podmienia oraz spisuje używane przez ofiarę dane (głównie mowa tutaj o prywatnych numerach kont bankowych ofiary).

A-4. Wabbit - oprogramowanie, które poniekąd bardzo przypomina wirusa typu Rabbit, tj, jego głównym zadaniem jest powtarzanie w nieskończoność określonej operacji (najczęściej polegającej na kopiowaniu / powielaniu samego siebie). Jednak w odróżnieniu od wirusów czy robaków, oprogramowanie to nie infekuje żadnych plików oraz nie posiada możliwości samoczynnego rozprzestrzeniania się przez sieć, tj. działa tylko na zainfekowanym komputerze.

A-4-1. Fork bomb - typowy przykład oprogramowania typu Wabbit. Głównym zadaniem takiego oprogramowania to otwarcie / stworzenie / uruchomienie możliwie jak największej liczby procesów w tle (na zainfekowanym systemie), co z reguły prowadzi do ataku typu DoS.

A-5. Ransomware - nowy gatunek złośliwego oprogramowania. Jeżeli złośliwy kod typu Ransomware dostanie się do systemu, tj. system zostanie nim zainfekowany, program rozpoczyna wyszukiwanie plików spełniających odpowiednie kryteria (m .in. rozszerzenia plików, pliki konkretnych aplikacji, itp.) a po ich odnalezieniu następuje ich "mimowolne" (bez zgody właściciela) szyfrowanie. Ofiara, w celu odzyskania swoich ważnych danych / plików, proszona jest o przelanie odpowiednich środków pieniężnych na konto włamywacza. Po udanym przelewie, przestępca podaje swojej ofierze klucz niezbędny do deszyfrowania tych danych (tj. ich odzyskania; ofiara cały czas posiada ów ważne pliki na swoim dysku twardym lecz w postaci zaszyfrowanej).

III. Jedynym z podstawowych czynników, powodującym podatność 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.

Bonus:
Cybersquatting - nieprzyjemna i "nieuczciwa" praktyka polegająca na wykupywaniu domen internetowych znanych firm / marek / organizacji, a następnie oferowanie jej sprzedaży tymże właśnie firmom po zawyżonej cenie. Bardzo często firmy rejestrujące swoją domenę nie rejestrują wszystkich możliwych jej wariantów, tj. przykładowo firma XYZ posiada zarejestrowaną przez siebie domenę XYZ.com, ale już domena XYZ.net jest "wolna". Po wykupie tejże domeny jej kupno jest wtórnie oferowane firmie XYZ. Korporacje i przedsiębiorstwa z reguły odkupują takie właśnie domeny, aby dbać o dobre imię marki (nie wiadomo przecież, jakie treści aktualny właściciel może umieścić pod tym adresem; z reguły będą to treści obraźliwe bądź naruszające dobre imię firmy). Odmianą cybersquatting'u jest Typosquatting - czyli zakup domen różniących się zazwyczaj jedną literką (zbliżoną w odległości na klawiaturze), od popularnych, często odwiedzanych serwisów - technika ta jest wykorzystywana głównie do serwowania reklam w wszelakiej postaci, czyli zarabiania na reklamach wyświetlanych poprzez pomyłki typograficzne podczas wpisywania adresów internetowych.

Blended threats - (ang. Mieszane zagrożenia) - forma ataku przeprowadzana przy jednoczesnym użyciu wielu różnych technik oraz ogólnie ujetej socjotechniki. Te podejście stosowane jest w przypadku bardziej skomplikowanych ataków, gdzie ważne jest, aby atakujący przeniknął niezauważony przez wszystkie systemy bezpieczeństwa. Poprzez używanie wielu technik ataków jednocześnie zasięg mieszanych zagrożeń jest bardzo duży. Charakterystycznymi dla tej techniki są: wyrządzanie szkód na skalę masową, propagacja za pomocą wielu metod, atak wielu punktów jednocześnie przy wykorzystaniu luk w oprogramowaniu. Formy tego rodzaju ataku określane są za najbardziej groźne w dziedzinie bezpieczeństwa elektronicznego, w dodatku nie wymagają interwencji człowieka w własnej propagacji w Sieci. Raz zainicjowane automatycznie szukają nowych celi, poddając je wielu próbom na luki w mechanizmach bezpieczeństwa. Mają zarówno cechy wirusów, robaków, koni trojańskich, a także malware.

Artykuł napisany został przez:

Patryk Krawaczyński, agresor@nfsec.pl
Damian Zelek, jimmy@hacking.pl
Logowanie
Nazwa użytkownika

Hasło



Nie masz jeszcze konta?
Zarejestruj się

Nie możesz się zalogować?
Poproś o nowe hasło
Shoutbox
Musisz zalogować się, aby móc dodać wiadomość.

14-10-2014 10:39
Digipedia.pl tam jest lokalizator IP ale nie gwarantuje 100% skutecznosci ew javascript i geoapi

13-10-2014 23:06
jak zlokalizaowac kogos po ip

12-10-2014 20:59
ta

12-10-2014 16:31
Zyje tu ktoś ? Haker

12-10-2014 12:01
napisz do admina: http://hackme.pl/p
rofile.html?lookup
=1

Licznik
23,443,522 unikalne wizyty