• Nie Znaleziono Wyników

Metody ochrony przed włamaniami do systemu informatycznego

N/A
N/A
Protected

Academic year: 2021

Share "Metody ochrony przed włamaniami do systemu informatycznego"

Copied!
78
0
0

Pełen tekst

(1)

INFORMATYKI W KRAKOWIE Wydział Ekonomii i Zarządzania

Bartłomiej Trynka

Metody ochrony przed włamaniami do systemu

informatycznego

Praca dyplomowa napisana pod kierunkiem dr inŜ. Tadeusza Wilusza

Kraków • 2006

(2)

WSTĘP... 4

1. CHARAKTERYSTYKA NAJWAśNIEJSZYCH METOD ATAKÓW SIECIOWYCH... 5

1.1 KLASYFIKACJA ATAKÓW... 5

1.2 ATAKI AKTYWNE... 7

1.2.1 PODSZYWANIE(SPOOFING) ... 7

1.2.2 PRZECHWYCENIE SESJI(HIJACKING)... 11

1.2.3 ATAKI BLOKADY USŁUG... 12

1.2.4 KONIE TROJAŃSKIE I TYLNE WEJŚCIA... 16

1.3 ATAKI PASYWNE... 19

1.3.1 SKANOWANIE SIECI... 20

1.3.2 PODSŁUCHIWANIE(SNIFFING) ... 21

1.3.3 KRADZIEśE HASEŁ... 24

1.4 BŁĘDY W OPROGRAMOWANIU... 26

1.5 SOCJOTECHNIKA(SOCIALENGINEERING) ... 28

2. PRZEGLĄD NARZĘDZI ATAKU... 30

2.1 NMAP-SKANOWANIE PORTÓW I HOSTÓW W SIECI... 30

2.1.1 WYSZUKIWANIE HOSTÓW... 30

2.1.2 SKANOWANIE PORTÓWTCP ... 31

2.1.3 SKANOWANIE PORTÓWUDP... 33

2.1.4 INNE FUNKCJE PROGRAMU... 34

2.2 JOHN THERIPPER-ATAK NA HASŁA... 35

2.2.1 ATAK SŁOWNIKOWY NA HASŁO... 36

2.2.2 METODA SIŁOWA(BRUTE FORCE) ... 38

2.3 ETTERCAPWĘSZENIE I PRZECHWYTYWANIE... 40

2.4 NARZĘDZIA ATAKUDDOS... 42

2.4.1 TRINOO... 42

2.4.2 TFN (TRIBALFLOODNETWORK)... 43

2.4.3 STACHELDRAHT... 44

2.4.4 ATAKDDOSZ WYKORZYSTANIEM ROBAKÓW POCZTOWYCH... 44

3. WSPÓŁCZESNE METODY BUDOWY POLITYKI BEZPIECZEŃSTWA SYSTEMÓW INFORMATYCZNYCH ... 46

3.1 DEFINICJA POLITYKI BEZPIECZEŃSTWA... 46

3.2 ZABEZPIECZENIA FIZYCZNE SYSTEMÓW... 49

3.3 ZABEZPIECZENIA ORGANIZACYJNE... 52

3.4 REGULACJE PRAWNE... 55

4. METODY I ŚRODKI INFORMATYCZNEGO ZABEZPIECZANIA SYSTEMÓW... 58

4.1 UWIERZYTELNIANIE... 58

(3)

4.2 KERBEROS... 62

4.3 ZAPORY SIECIOWE(FIREWALL) ... 65

4.4 IDS – SYSTEM WYKRYWANIA WŁAMAŃ... 70

ZAKOŃCZENIE... 74

LITERATURA ... 76

WYKAZ RYSUNKÓW ... 77

WYKAZ TABEL... 77

DODATEK 1 – KLASY OCENY BEZPIECZEŃSTWA SYSTEMÓW INFORMATYCZNYCH.. 78

(4)

Rozwój Internetu oznacza, między innymi, Ŝe coraz większa liczba komputerów jest na stale lub czasowo przyłączona do tejŜe sieci globalnej. Daje to określone korzyści, ale stwarza równieŜ i zagroŜenia, których kaŜdy uŜytkownik Internetu powinien być świadom. Jednym z nieodłącznych ryzyk związanych z pracą w sieci w ogóle, a w sieci publicznej, jaką jest Internet w szczególności jest zagroŜenie naruszenia prywatności ze strony innych uŜytkowników sieci, którzy nie zostali upowaŜnieni do dostępu do określonych zasobów systemu podłączonego do Internetu.

W literaturze przedmiotu zdobycie uprawnień do działania w określonym systemie komputerowym pracującym w sieci bez upowaŜnienia ze strony jego właściciela nosi nazwę „ataku”. Jest to jeden z najbardziej spektakularnych aspektów szeroko rozumianego bezpieczeństwa systemów informatycznych.

Niniejsza praca podejmuje tematykę ochrony systemów informatycznych przed atakiem z zewnątrz, a jej zasadniczym celem jest zarówno przegląd metod i narzędzi słuŜących atakującym do naruszania prywatności systemów dostępnych w sieci jak i dyskusja moŜliwości i dostępnych technologii obrony.

Tekst pracy składa się z czterech zasadniczych rozdziałów. Rozdział pierwszy zawiera charakterystykę współcześnie najczęściej stosowanych metod ataku.

W rozdziale drugim przedstawiono narzędzia, które umoŜliwiają przeprowadzanie ataków na systemy informatyczne. Ponadto, zamieszczono tam wyniki eksperymentu polegającego na łamaniu haseł.

Rozdziała trzeci to wskazanie współczesnych metod budowy polityki bezpieczeństwa systemów informatycznych od strony fizycznej systemu, organizacyjnej i prawnej.

W rozdziale czwartym omówione zostały metody zabezpieczenia systemu informatycznego przed atakami oraz sposób, w jaki sobie z nimi radzić.

(5)

1.1 Klasyfikacja ataków

Atak na system komputerowy to działanie, którego celem jest przeniknięcie do chronionego systemu komputerowego w celu przechwycenia, zniszczenia lub zmodyfikowania przechowywanych tam informacji. Zapewnienie właściwej ochrony przed zagroŜeniami z sieci to obecnie podstawowe wymaganie bezpieczeństwa w systemach informatycznych. Przy klasyfikacji rodzaju ataków, moŜemy brać pod uwagę róŜne kryteria:

- miejsce przeprowadzania ataku - aktywność

- sposób przepływu informacji

Biorąc pod uwagę miejsce przeprowadzanego ataku, moŜemy wyróŜnić ataki zewnętrzne (zdalne), czyli takie, które prowadzone są z systemów znajdujących się poza atakowaną siecią oraz ataki wewnętrzne (lokalne) przeprowadzane z systemów znajdujących się w atakowanej sieci. O ile moŜna próbować przewidzieć, na jaki rodzaj ataków system informatyczny będzie naraŜony z zewnątrz i próbować odpowiednio go chronić o tyle ataki prowadzone z wewnątrz sieci atakowanej mogą być trudne do wykrycia i przyczyną wielu problemów.

Innym podziałem ataków jest podział na aktywne oraz pasywne. Atak aktywny prowadzi do utraty integralności systemu komputerowego, np.: 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. Atak pasywny natomiast polega na wejściu do systemu bez dokonywania Ŝadnych zmian, np.: 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. Ataki pasywne

(6)

są bardzo trudne do wykrycia, poniewaŜ nie wiąŜą się z modyfikacjami jakichkolwiek danych.

Biorąc pod uwagę sposób przepływu informacji w atakowanym systemie, moŜemy wyróŜnić cztery przypadki:

• Przerwanie sygnału (rys. 1), które polega na częściowym lub całkowitym zniszczeniu systemu lub spowodowaniu jego niedostępności (niezdolności do normalnego uŜytkowania) w skutek zerwania strumieni danych. 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.

Rys. 1 Atak przerwania (źródło: opracowanie własne)

• Przechwycenie sygnału (rys. 2), które opiera 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.

Rys. 2 Atak przechwycenia (źródło: opracowanie własne)

Modyfikacja sygnału (rys. 3), która opiera się 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

(7)

wywołania innego sposobu jego działania lub modyfikacja komunikatów przesyłanych w sieci.

Rys. 3 Atak modyfikacji (źródło: opracowanie własne)

• Podrobienie sygnału (rys. 4) jest atakiem opierającym się na autentyczności.

Podczas przesyłania danych z jednego do drugiego komputera trzeci komputer blokuje 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.

Rys. 4 Atak podrobienia (źródło: opracowanie własne)

1.2 Ataki aktywne

1.2.1 Podszywanie (spoofing)

Spoofing jest techniką polegającą na podszywaniu się pod inny komputer w celu złamania zabezpieczeń autoryzacyjnych opartych na adresie lub nazwie hosta.

W odniesieniu do zagadnienia transmisji danych popularną odmianą tego ataku jest "IP Source Addresss Spoofing", który sprowadza się do przesyłania pakietów zawierających sfałszowany adres źródłowy, co powoduje, Ŝe komputer odbierający te pakiety błędnie identyfikuje ich nadawcę. Najczęściej atak "IP Spoofing" jest

(8)

wykonywany z obszaru sieci publicznej, skąd napastnik wysyła pakiety danych w imieniu uprzywilejowanego komputera zlokalizowanego w atakowanej sieci prywatnej. Pierwszy atak przeprowadzony z wykorzystaniem tej techniki odnotowano w 1994 roku. Technika ta została po raz pierwszy opisana juŜ w 1985 roku, a prawie dziesięć lat później zaawansowana technologia pozwoliła przeprowadzić niszczący atak, który miał miejsce w 1994 r. i był skierowany przeciw Centrum Superkomputerowemu w San Diego. Celem napastnika było włamanie i kradzieŜ powstającego oprogramowania zabezpieczającego. Cel został osiągnięty za pomocą

"ręcznie" skonstruowanych pakietów wstrzelonych do sieci Centrum, dzięki którym komputer hackera udawał jeden z komputerów tej sieci. Istnieje wiele innych mniej znanych odmian tej techniki, wśród których moŜna wyróŜnić, np. „ARP Spoofing",

"DNS Spoofing", "RIP Spoofing".

IP Spoofing

Atak typu "IP Spoofing" składa się z trzech faz. Pierwszą z nich jest wyłączenie z działania jednego z serwerów. Z reguły osiąga się to za pomocą powodzi pakietów SYN Flood. W drugiej fazie napastnik przejmuje adres serwera i udaje jego działanie w odniesieniu do ufających serwerowi klientów. Dzięki temu hacker moŜe przejąć kompletną kontrole nad systemem. Z kolei trzecia faza obejmuje atak ze strony właśnie zmienionego klienta na poprzednio wyłączony serwer. Od momentu przejęcia kontroli nad serwerem, hacker ma nieograniczoną władzę nad siecią lokalną. Atak "IP Spoofing" moŜna częściowo zablokować przez odpowiednio skonfigurowany filtr pakietów, który blokuje wszystkie pakiety napływające z sieci publicznej, mające adres źródłowy naleŜący do komputera z sieci prywatnej. Bardziej zaawansowane przeciwdziałanie atakowi moŜna wykonać za pomocą odpowiedniej ściany ogniowej.

ARP Spoofing

Metoda ta związana jest z modyfikowaniem przechwyconych par adresów MAC oraz IP w sieci lokalnej.

Działanie protokołu rozróŜniania adresów (ARP) polega na wysyłaniu ethernetowych pakietów rozgłoszeniowych, zawierających poszukiwany adres IP. Stacja będąca

(9)

IP i adres ethernetowy. System, z którego prowadzony jest atak, transmituje fałszywe zapytania lub odpowiedzi ARP, skierowując cały ruch w swoim kierunku i przedstawiając się jako autoryzowany odbiorca.

Jednym z najbardziej niebezpiecznych, jest atak Man In the Middle (MITM).

Atak ten polega na postawieniu atakującego systemu pomiędzy systemem ofiary a lokalną bramą tak, aby system agresora mógł monitorować wszystko, co ofiara wysyła i otrzymuje. Atakujący najpierw oszukuje system ofiary dzięki nieprawidłowo zaadresowanej ramce ethernetowej w jego pakiecie. Powoduje to przesyłanie danych ofiary do systemu naleŜącego do atakującego. Od tego momentu dla atakującego jest moŜliwe monitorowanie połączeń ofiary. Aby umoŜliwić ofierze wysyłanie i odbieranie danych, napastnik wysyła kolejną zmodyfikowaną ramkę rozgłoszeniową ARP.

Spreparowana wiadomość wprowadza w błąd system ofiary, mówiąc, Ŝe informacje przeznaczone dla zdalnych systemów powinny być wysłane do atakującego adresu MAC zanim zostaną wysłane przez lokalną bramkę. W tym momencie system napastnika przechwytuje dane wejściowe i wyjściowe. Ostatnim krokiem ataku MITM jest przekazanie ruchu do maszyny, dla której był on oryginalnie przeznaczony. W efekcie napastnik zamienia się w tymczasową bramkę między systemem ofiary, a prawdziwą bramką LAN. Ofiara nadal ma moŜliwość wysyłania i otrzymywania danych do i z zdalnych systemów, ale wszystkie dane są transportowane przez system agresora. W tym momencie kaŜda przesyłana informacja taka jak hasła, czy adresy e-mail, mogą być monitorowane przez napastnika, a nawet modyfikowane. Umiejętność edytowania sieciowych danych ofiary w locie pozwala atakującemu na zmianę kierunku komunikacji systemu ofiary, wykonać atak MITM podczas wymiany kryptograficznego klucza, oraz narazić wiele innych aspektów bezpieczeństwa. W przypadku modyfikowania ruchu podczas inicjalizacji wymiany klucza w zaszyfrowanej sesji Web, napastnik moŜe przechwycić i rozszyfrować sieciowy ruch ofiary, nawet, gdy sesja nadal wydaje się być zaszyfrowana.

DNS Spoofing

DNS spoofing to atak na serwer DNS, który odwzorowuje nazwy hostów na numery IP i odwrotnie. Atak ten polega na ingerencji w tablicę DNS i modyfikacje poszczególnych wpisów tak, aby klient zamiast do komputera docelowego kierowany był do komputera atakującego.

(10)

Na rysunku 5 przedstawiono schemat ataku typu DNS Spoofing, który wykorzystuje fakt, Ŝe serwery DNS nie posiadają całej bazy adresów, lecz przechowują - przez jakiś czas - informacje o numerach IP i odpowiadających im nazwach hostów w pamięci podręcznej (cache’u).

Rys. 5 Schemat ataku DNS Spoofing (źródło: opracowanie własne)

Sytuacja przedstawiona na rysunku 5 zakłada, Ŝe:

Napastnik posiada własną domenę (atak.net) i swój własny serwer DNS (ns.atak.net) gdzie umieścił fałszywe wpisy (np.: www.onet.pl = 42.42.42.42).

Atakujący prosi serwer DNS, którego informację zawartą w cache’u chce sfałszować („zatruć”) o połączenie z www.atak.net (rys 5.a).

Atakowany serwer DNS nie zna numeru IP adresu www.atak.net, więc sam wysyła o niego zapytanie do autoryzowanego serwera domeny atak.net (rys. 5.b)

Serwer ns.atak.net odpowiada, jednocześnie transferując fałszywe wpisy (rys. 5.c)

Próba wywołania adresu www.onet.pl spowoduje, Ŝe serwer DNS zwróci adres IP taki jaki został pobrany z serwera ns.atak.net a nie adres rzeczywisty.

(11)

1.2.2 Przechwycenie sesji (hijacking)

Atak tego typu jest jednym z najbardziej niebezpiecznych ataków na system komputerowy. Technika polega na tym, Ŝe napastnik powoduje przerwanie połączenia zestawionego pomiędzy klientem a serwerem, następnie podszywa się pod klienta i podsyła serwerowi pakiety z własnymi numerami sekwencji. Połączenie TCP wymaga zsynchronizowanej wymiany pakietów, więc jeśli z jakiegoś powodu numery sekwencji pakietu nie zgadzają się z wartościami oczekiwanymi przez komputer, to zostaną one odrzucone i ponownie nastąpi faza oczekiwania na poprawnie numerowany pakiet.

Haker moŜe wykorzystać wymagania dotyczące numerów sekwencji protokołów TCP i przechwycić połączenie. Aby mieć moŜliwość wglądu w przesyłane pakiety, konieczne jest korzystanie ze sniffera. Hijacking jest więc połączeniem dwóch metod:

sniffingu i IPspoofingu. W celu doprowadzenia do przerwania połączenia TCP naleŜy je wcześniej rozsynchronizować.

Synchronizacja połączenia TCP1

Rys. 6 Synchronizacja połączenia TCP

(źródło: W. Chestwick, M. Bellovin, A. Rubin „Firewalle i bezpieczeństwo w sieci)

Klient wysyła w kierunku serwera pakiet z bitem synchronizacji (SYN) i wstępnym numerem sekwencji klienta (CSEQ). Po otrzymaniu przez serwer pierwszego pakietu SYN, połączenie jest w stanie half-opened (na wpół otwarte). Pakiet będący odpowiedzią serwera zawiera dane synchronizacji (SYN), potwierdzenia (ACK) a takŜe numery sekwencyjne sesji, tj.: otrzymany numer sekwencji klienta zwiększony o 1 (CSEQ + 1) oraz serwera (SSEQ). Następnie, po otrzymaniu pakietu, klient zwiększa o 1 swój numer sekwencyjny i wysyła pakiet z ustawionym bitem

1Douglas E. Comer: ‘Sieci komputerowe i intersieci’, WNT Warszawa 2000, 2001

(12)

potwierdzenia (ACK). Od tej chwili zostaje nawiązane połączenie i moŜe rozpocząć się wymiana danych. Warto zaznaczyć, Ŝe napastnicy potrafią wykorzystywać istnienie stanu „half-opened”. Ataki wykorzystujące pakiety SYN polegają na zalewaniu serwera tylko pakietami synchronizacji (pierwszy etap procesu nawiązywania połączenia) licząc, Ŝe tak duŜa liczba Ŝądań, które nigdy nie zamieniają się w rzeczywiste połączenia spowoduje jego zablokowanie. Pierwszy etap tego trzystopniowego procesu moŜe być równieŜ wykorzystywany do wykrycia aktywnych usług TCP bez alarmowania aplikacji, które zwykle nie są informowane o połączeniu, zanim nie zakończy się cała ta trzystopniowa procedura nawiązywania połączenia.

Istnieje kilka metod prowadzących do rozsynchronizowania połączenia takich jak:

• Wczesne rozsynchronizowanie

• Aktywne rozsynchronizowanie

• Rozsynchronizowanie pustymi danymi

1.2.3 Ataki blokady usług

Ataki blokady(odmowy) usługi (DoS) polega na obciąŜaniu oprogramowania, sprzętu czy łączy sieciowych poza granice ich załoŜonej wydajności. Celem takiego ataku jest uniemoŜliwienie działania jakiejś usługi lub obniŜenie jakości jej działania.

Ataki takie w dość prosty sposób moŜna wykryć, jednak znacznie trudniej moŜna ustalić źródło tych ataków. Mogą one przebiegać pod róŜnymi postaciami – od zasypywania wiadomościami pocztowymi (mail bombing lub spam), po wysyłanie specjalnie spreparowanych pakietów, by załamać działanie programu w atakowanym systemie. Skutkiem tego działania moŜe być np.: przepełnienie dysku, przeciąŜenie procesora, załamanie się systemu operacyjnego lub po prostu przeciąŜenie łącza. Aby doszło do przeciąŜenia łącza wystarczy wygenerować więcej pakietów niŜ dany odbiorca moŜe obsłuŜyć.

Ataki pakietami SYN

Ataki zalewania pakietami SYN nie powodują zablokowania łącza sieciowego, ale są skierowane przeciwko stosowi TCP/IP. W protokole TCP będącym

(13)

odpowiedzialnym za obsługę połączeń, konieczne jest śledzenia ich stanu. Za to zadanie odpowiedzialny jest stos TCP/IP, który moŜe jednak śledzić tylko określoną liczbę połączeń. Atak przepełnienia typu SYN Flooding wykorzystuje to ograniczenie, uniemoŜliwiając nawiązywanie nowych połączeń sieciowych.

Napastnik wysyła do systemu ofiary duŜą liczbę pakietów synchronizacji SYN - pierwszymi w procesie nawiązywania połączenia, z fałszywym, nieistniejącym adresem źródłowym. PoniewaŜ pakiet SYN jest uŜywany do inicjowania połączeń TCP, komputer ofiary będzie wysyłał w odpowiedzi pakiet SYN/ACK, oczekując z kolei na odpowiedź ACK. KaŜde takie częściowo otwarte połączenie jest umieszczane w kolejce, która ma jednak ograniczoną pojemność. PoniewaŜ fałszywe adresy źródłowe nie istnieją, system nigdy nie odbierze odpowiedzi ACK, które spowodowałyby usunięcie niepotrzebnych wpisów z kolejki i nawiązanie pełnego połączenia. W tym przypadku musi upłynąć czas waŜności poszczególnych połączeń, co zwykle trwa dość długo. JeŜeli haker kontynuuje zalewanie systemu ofiary fałszywymi pakietami SYN, kolejka połączeń pozostanie zapełniona, przez co prawdziwe pakiety SYN nie będą mogły przedostać się do tego systemu. Oznacza to brak moŜliwości tworzenia nowych połączeń TCP/IP.

Pierwszym dokładnie opisanym atakiem tego typu był atak przeprowadzony na dostawcę usług internetowych – firmę Panix. Do komputera tej firmy w ciągu sekundy wysyłano około 150 pakietów TCP SYN. Pakiety te zasypały mechanizm przetwarzania połączeń półotwartych jądra systemu Unix. Gdy tabela połączeń półotwartych wypełniła się, nadchodzące od upowaŜnionych uŜytkowników polecenia nawiązania połączenia były odrzucane, uniemoŜliwiając im korzystanie z komputera.

Atak Ping of death

Zgodnie ze specyfikacją protokołu ICMP, komunikaty echa ICMP mogą zawierać maksymalnie 65 536 bajtów w obszarze danych pakietu. Wiele systemów operacyjnych moŜe się jednak zawiesić po odebraniu komunikatów echa ICMP, których wielkość przekracza dozwolony limit. Proces wysyłania komunikatów echa o bardzo duŜej wielkości został nazwany atakiem Ping of Death. Jest to bardzo prosta technika ataku, poniewaŜ większość twórców oprogramowania nigdy nie zwracała uwagi na tę kwestię, skupiając się na nagłówku tego pakietu gdzie zazwyczaj mieszczą się

(14)

najwaŜniejsze informacje. Obecnie większość systemów operacyjnych została jednak zabezpieczona przeciwko atakom tego typu.

Smurf

Atak typu Smurf jest stosunkowo nowym atakiem w kategorii sieciowych ataków na hosty, wykorzystujący efekt wzmocnienia. Zasada jego działania polega na wysyłaniu przez atakującego duŜej ilości pakietów ICMP echo (ping) na adresy rozgłoszeniowe (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.

Jako przykład moŜna przedstawić następującą sytuację2:

Zakładając, Ŝe celem atakującego jest sieć 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.

DDoS

Rozproszony atak DDoS (Distributed Denial of Service) stanowi szczególną odmianę klasycznego ataku przepełnienia. Jak juŜ wcześniej wspomniano, atak przepełnienia jest przeprowadzany w celu całkowitego zablokowania łącza sieciowego ofiary. W ataku DDoS wykorzystywanych jest wiele komputerów włączonych do Internetu a komputery te uczestniczą w ataku zupełnie bezwiednie. W przypadku ataku DDoS haker musi najpierw włamać się do wielu róŜnych systemów i zainstalować w nich złośliwe oprogramowanie, które będzie czekało w ukryciu na sygnał do ataku.

Włamywacz wykorzystuje specjalny program sterujący, który umoŜliwia rozpoczęcie ataku, a wszystkie zainfekowane systemy jednocześnie uderzają w ofiarę, wykonując określony typ ataku DoS. Taka technika ataku moŜe spowodować powaŜne szkody,

2Craig A. Huegen „The latest in Denial of Service attack: Smurfing” - http://www.pentics.net/denial-of-

(15)

utrudniając jednocześnie próby wykrycia rzeczywistego połoŜenia hakera. Na rysunku 7 przedstawiono schemat ataku tego typu.

Rys. 7 Atak DDoS (źródło: opracowanie własne)

Napastnik za pomocą odpowiednich środków instaluje odpowiednie oprogramowanie na jak największej ilości komputerów zwanych „zombi”3. Program na komputerze „zombi” wiąŜe się z jednym z portów i czeka na dalsze instrukcję.

Następnie, napastnik instaluje na jednym z komputerów w Internecie program główny, który dysponuje listą wszystkich komputerów przygotowanych do przeprowadzenia ataku. Kiedy nadchodzi czas ataku, napastnik wysyła programowi głównemu komunikat, w którym przekazuje mu adres ofiary, po czym wszystkie komputery

„zombi” jednocześnie przeprowadzają atak typu DoS, wysyłając w kierunku celu taką liczbę pakietów, które go obezwładnią.

Email bombing, email spamming

Email bomb jest serią wiadomości wysyłanych do skrzynki pocztowej ofiary.

Celem takiego ataku jest zapełnienie skrzynki nieistotnymi wiadomościami.

W przypadku słabych, niezabezpieczonych systemów, mogą one doprowadzić do skutecznego zablokowania łącza i zapełnienia wolnego miejsca na twardym dysku.

3William. R. Chestwick, Steven M. Bellovin, Aviel D. Rubin „Firewalle i bezpieczeństwo w sieci”

Helion 2003

(16)

Email spamming jest natomiast inną odmianą tego ataku. Dotyczy on większej ilości uŜytkowników a polega na wysyłaniu wiadomości do wszystkich uŜytkowników danego serwera. Metoda ta najczęściej wykorzystywana jest bardziej do wysyłania reklam niŜ próbie wyrządzenia jakiś szkód.

Istnieje równieŜ inna metoda szybkiego zapełnienia skrzynki pocztowej.

Napastnik podszywając się pod innego uŜytkownika zapisuje go na duŜą ilość list dyskusyjnych jednocześnie. Lista dyskusyjna działa w ten sposób, Ŝe wszyscy uŜytkownicy piszą na jeden wspólny adres e-mail, a kopie tych wiadomości rozsyłane są do wszystkich uczestników danej listy. Rezultaty tego działania mogą być katastrofalne w skutkach dla ofiary. Zakładając, Ŝe została ona zapisana np. na 200 list dyskusyjnych, z których kaŜda ma po 50 członków wysyłających średnio 2 listy dziennie, na jego skrzynkę trafi dziennie 20000 wiadomości. Jeśli będą to same wiadomości tekstowe liczące około 5 KB kaŜda, to dziennie trafia na skrzynkę pocztową około 90MB danych. To chyba pozwala uzmysłowić sobie skalę zagroŜenia.

1.2.4 Konie trojańskie i tylne wejścia

Dr Alan Solomon, specjalista zajmujący się wirusami komputerowymi, w swojej pracy pt. „All about Viruses”4podaje następującą definicję konia trojańskiego:

„Koń trojański jest programem, który robi więcej, niŜ oczekuje od niego uŜytkownik i te jego dodatkowe właściwości są z punktu widzenia uŜytkownika niepoŜądane. To załoŜenie prowadzi nas do trudności w wykrywaniu koni trojańskich.

Przypuśćmy, Ŝe mamy program, który mógłby nieomylnie wykryć program, który sformatował nam dysk twardy. Czy moŜna by wówczas stwierdzić jednoznacznie, Ŝe ten program jest koniem trojańskim? Oczywiście nie. Jeśli ten inny program z załoŜenia słuŜy do formatowania dysków (jak na przykład ‘format’) - wówczas nie jest on koniem trojańskim. Problemem jest porównanie tego, co robi program, z tym, czego oczekuje od niego uŜytkownik, a oczekiwania uŜytkownika wobec programów przez niego wykorzystywanych są - na poziomie aplikacji - nieweryfikowalne”.

Koń trojański jest obcym kodem dołączonym do prawowitego programu, który realizuje funkcje nieznane uŜytkownikowi (i zapewne przez niego niepoŜądane).

4

(17)

Nielegalne funkcje realizowane przez konia trojańskiego mogą czasami zakwalifikować go do grupy wyjątkowo niebezpiecznych programów destrukcyjnych. Do określenia tego pasują niektóre wirusy, które mogą ukrywać swoją obecność w poŜytecznym programie. Wówczas, taki program moŜna nazywać zarówno koniem trojańskim jak i wirusem. Program, w którym zawarto konia trojańskiego, moŜe pełnić poŜyteczne funkcje lub robić po prostu coś interesującego. Zawsze natomiast wykonuje zadania, których nie spodziewa się osoba go uruchamiająca, jak na przykład zbieranie i wysyłanie haseł czy usuwanie plików bez wiedzy uŜytkownika. Koń trojański moŜe być programem narzędziowym, który indeksuje katalogi lub łamie kody rejestracyjne w oprogramowaniu. MoŜe być edytorem tekstów lub narzędziowym programem sieciowym. Krótko mówiąc, koń trojański moŜe robić wszystko to, co robią inne programy i moŜe być znaleziony w kaŜdym programie.

Konie trojańskie mogą być zaszyte nie tylko w skompilowanych programach.

MoŜna je znaleźć równieŜ w skryptach powłoki, programach w Perlu, a nawet w skryptach takich jak JavaScript czy VBScript. Jednak przypadki występowania koni trojańskich w skryptach są rzadkie ze względu na to, Ŝe opisowy język skryptu jest czytelny dla człowieka, stąd niepoŜądany kod jest łatwy do wykrycia. ZagnieŜdŜenie konia trojańskiego w takim kodzie jest bardziej prawdopodobne w przypadku, gdy dany skrypt jest częścią duŜego pakietu, poniewaŜ rozbudowana struktura wydatnie zmniejsza prawdopodobieństwo wykrycia obcej wstawki programistycznej.

Dobrze napisany koń trojański pracuje w tle nie ujawniając swej obecności. Co gorsza, większość dobrze zaprojektowanych programów tego typu zawiera się w narzędziach, które normalnie są obecne i uruchomione w systemie. W takim przypadku, nawet przeglądanie uruchomionych procesów niewiele moŜe pomóc w odkryciu konia trojańskiego. W odróŜnieniu od wirusów koń trojański nie ulega replikacji i nie dołącza się do innych plików. UŜytkownik sam uruchamia program, nie będąc świadom jego przeznaczenia. Chcąc zainstalować komuś „trojana”, moŜna go samemu uruchomić na jego maszynie, trzeba jednak postarać się o bezpośredni dostęp do komputera osoby, której „trojan” zostanie podłoŜony.

Odmianą koni trojańskich są bomby logiczne (ang. logical bombs). RóŜnią się od koni trojańskich tym, Ŝe koń trojański działa natychmiast natomiast bomba logiczna swe destrukcyjne oblicze ukazuje tylko w określonym odpowiednimi warunkami czasie (najczęściej zaleŜne od aktualnej daty lub liczby poprzednich wywołań programu).

(18)

Często mianem bomby określa się destrukcyjny kod zawarty w wirusach, którego wywołanie następuje tylko po spełnieniu jakiegoś warunku.

Konie trojańskie często wykorzystywane są do instalowania tzw. tylnych wejść (backdoor), które umoŜliwiają hakerowi dostęp do zainfekowanego komputera.

Najczęściej działają one w ten sposób, Ŝe po zainstalowaniu się na zaatakowanym komputerze otwierają w systemie określone porty. Następnie wysyłają powiadomienie do napastnika, Ŝe w komputerze o danym adresie została stworzona „dziura” w systemie bezpieczeństwa i moŜe zostać zaatakowany. Często konie trojańskie występują jako aplikacje klient - serwer. Serwer jest uruchomiony na komputerze ofiary i czeka na rozkazy napływające drogą sieciową. Klient słuŜy do wysyłania owych rozkazów. Jeśli

„trojan” jest niezbyt skomplikowany, to do komunikacji z serwerem uŜywany jest programu Telnet. W przypadku bardziej skomplikowanych koni trojańskich Telnet jest zastępowany specjalnymi aplikacjami. Programy te maja na ogół przejrzysty i bogaty interfejs uŜytkownika. Zasada współdziałania serwera i klienta jest zawsze taka sama.

Komunikują się one przy uŜyciu protokołu TCP/IP. Serwer zainstalowany na komputerze, na którym przypuszcza się atak, otwiera jeden z nieuŜywanych dotąd portów, z którym moŜe połączyć się klient i w ten sposób wysyłać mu rozkazy. Serwer przyjmuje je i na maszynie „ofiary” podejmuje odpowiednie działanie. Proces ten moŜe być zabezpieczony hasłem, aby nikt, oprócz osoby, która zainstalowała „konia trojańskiego”, nie wykorzystał otwartej w ten sposób bramki.

Przykładem takiego konia trojańskiego jest Backdoor.Antilam5 działającego w systemach Windows. Jest to rodzina programów pozwalających na zdalną administrację zainfekowanym komputerem poprzez sieć lokalną lub Internet.

Większość funkcji tego backdoor’a moŜe być konfigurowana przez hakera przy pomocy specjalnego narzędzia. Istnieje równieŜ aplikacja, wyposaŜona w graficzny interfejs uŜytkownika, umoŜliwiająca wysyłanie komend. Przy uŜyciu Backdoor.Antilam, napastnik moŜe wykonać następujące operacje na zainfekowanym komputerze:

 zamykanie i usuwanie backdoor’a,

 gromadzenie informacji o zainfekowanym systemie,

 modyfikowanie zawartości pulpitu systemu Windows,

5

(19)

 wyświetlanie dowolnych komunikatów,

 zarządzanie otwartymi oknami,

 restartowanie i zamykanie komputera,

 modyfikowanie daty systemowej,

 wyłączanie klawiatury,

 zarządzanie plikami zapisanymi na dyskach,

 uzyskiwanie pełnego dostępu do rejestru systemowego

 zapisywanie informacji wprowadzanych z klawiatury,

 drukowanie dowolnych tekstów,

 zarządzanie połączeniami dial-up,

 zarządzanie schowkiem,

 komunikowanie się z innymi hakerami podłączonymi do zainfekowanego komputera.

Warto wspomnieć, Ŝe tworzenie tylnych wejść w systemie nie musi wiązać się z instalowaniem w nim konia trojańskiego. Jedną z metod moŜe być zmiana kodu źródłowego programu i jego podmiana w systemie. W systemach takich jak Linux, gdzie dostępne są kody źródłowe, ewentualna modyfikacja i ponowna kompilacja nie jest większym problemem. Jedyny problem to podmiana tak spreparowanego programu czy teŜ usługi w atakowanym systemie. Jednak, jeśli uda się to napastnikowi, wykrycie obecności tylnego wejścia w systemie będzie bardzo trudne.

1.3 Ataki pasywne

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. Ataki pasywne mogą być trudne do wykrycia, poniewaŜ nie wiąŜą się z modyfikacjami jakichkolwiek danych.

(20)

1.3.1 Skanowanie sieci

Napastnik wybierając cel ataku, musi dowiedzieć się czegoś na jego temat.

Bezpośrednim sposobem uzyskania takiej wiedzy jest skanowanie sieci i jej komponentów. Napastnik moŜe lokalizować komputery bezpośrednio za pomocą skanerów sieciowych lub pośrednio (np. za pomocą informacji otrzymywanych z DNS).

Dostępnych jest wiele narzędzi skanujących komputery i porty. Najprostszymi z nich są banalne programy składające się z kilku wierszy najczęściej napisanych w języku Perl lub C. Jednak skanowanie takimi programami łatwo jest wychwytywane przez systemy wykrywania włamań, dlatego teŜ przeprowadzane są one ze skradzionych kont lub komputerów, do których się włamano.

Najczęściej stosowanymi próbnikami do wykrycia komputerów są pingi ICMP.

Napastnik skanuje komputery w celu wykrycia w nich aktywnych portów, poszukuje aktywnych usług sieciowych oraz identyfikuje oprogramowanie serwera i jego wersje.

Istnieje kilka metod skanowania portów:

TCP Connect Scanning – jest to podstawowa metoda skanowania. Polega ona na nawiązywaniu połączenia z interesującym portem. Jeśli połączenie dojdzie do skutku, oznacza to, Ŝe dany port jest otwarty. Zaletą tej metody jest jej prostota.

Wadą zaś jest łatwość wykrycia skanowania, gdyŜ logi na danym serwerze wskaŜą na duŜą ilość nawiązywanych połączeń i listę komunikatów z błędami.

Jeśli na serwerze działają antyskanery to zamkną połączenie z intruzem.

TCP SYN Scanning (half-opened scanning) – w przeciwieństwie do poprzedniej metody, w metodzie tej połączenie nie jest ustanawiane. Napastnik wysyła pakiet SYN tak jak by chciał nawiązać połączenie. Jeśli cel zwróci pakiet RST wiadomo jest, Ŝe port jest zamknięty. JeŜeli natomiast, w odpowiedzi serwer zwróci pakiet SYN/ACK wiadomo jest, Ŝe port jest otwarty. Napastnik wtedy wysyła pakiet RST przerywając połączenie, zamiast wysłać pakiet ACK kończący trzystopniową wymianę potwierdzeń. W takim przypadku zwykle jądro nie poinformuje uŜytkownika o usiłowaniu nawiązania połączenia. WaŜne jest by system monitorowania rejestrował wszystkie pakiety, nie tylko te, które spowodowały nawiązanie połączenia.

(21)

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, pomimo tego, Ŝe sam protokół jest prostszy. Dzieje się tak, dlatego, Ŝe otwarte porty nie wysyłają potwierdzeń 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 spada na aplikację. Jednak 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. Czasami, dzięki tej technice moŜliwe jest ominięcie firewalli.

ICMP echo scanning. Metoda ta pozwala sprawdzić czy istnieje komputer o wskazanym numerze IP. Jeśli w odpowiedzi na wysłany pakiet ustawione są bity 72-79 nagłówka na wartość 1 i pierwszym polem obszaru danych ustawionym na 8, znaczy to, Ŝe istnieje komputer pod skanowanym numerem IP. Tak działa m.in. program ping.

1.3.2 Podsłuchiwanie (sniffing)

Sniffing jest techniką polegającą na podsłuchiwaniu pakietów w sieci. Programy podsłuchujące ruch (sniffery) początkowo były stosowane przez administratorów systemów w celu identyfikacji potencjalnych problemów w sieci. PoniewaŜ sniffery świetnie nadają się do przechwytywania cennych danych, zaczęły z czasem wykorzystywane być przez hakerów. Warto wspomnieć, Ŝe istnieją zarówno programy darmowe, łatwo dostępne w Internecie, ale równieŜ komercyjne, których koszt niejednokrotnie sięga kilku tysięcy dolarów6.

Najłatwiej jest prowadzić sniffing w sieciach, w których wykorzystane są urządzenia zwane koncentratorami (hubs), które działają w pierwszej warstwie (fizycznej) modelu OSI. Ich zadaniem jest wzmacnianie transmitowanego sygnału i przekazywanie go do wszystkich portów, do których mogą być podłączone inne urządzenia sieciowe (komputery, kolejne koncentratory itp.). Karty sieciowe

6Przykładowo pogram Anasil, umoŜliwiający nie tylko przechwytywanie pakietów, ale wykrywanie i identyfikacje urządzeń sieciowych, tworzenie mapy sieci itp. kosztuje ok. 7000 zł.

(22)

w normalnym trybie pracy, są w stanie odfiltrować wszystkie pakiety, które skierowane były do innego interfejsu sieciowego, sprawdzając swój adres MAC z zapisanym w pakiecie adresem MAC odbiorcy. MoŜliwe jest jednak przełączenie karty sieciowej w tryb „promiscuous” potocznie zwany trybem podsłuchu. W tym przypadku, karta sieciowa przekazuje do wyŜszych warstw modelu OSI wszystkie odebrane pakiety, nawet, jeŜeli nie były one do niej adresowane. Dzięki temu, moŜliwie jest odbieranie pakietów nie zaadresowanych do niej. Sytuację tą ilustruje rysunek 8.

Rys. 8 Rozsyłanie pakietów w sieci opartej o hub (źródło: opracowanie własne)

Poszczególne pakiety mogą być zapisane przez sniffer do pliku, co pozwoli osobie korzystającej z programu na dokładniejszą analizę ruchu w dowolnym czasie.

Takie działanie umoŜliwia zebranie wielu informacji, które mogą być przydatne w celu przeprowadzenia na przykład innego ataku, uzyskaniu nieautoryzowanego dostępu do określonych zasobów, podejrzeniu niezaszyfrowanych haseł itp. Sniffing w sieciach bez przełączników moŜna uznać za działanie pasywne, gdyŜ atakujący musi jedynie programowo przestawić tryb pracy swojej karty sieciowej na bezładny, uruchomić sniffer i określić, jakie pakiety ma on wychwytywać. Nie jest konieczna Ŝadna interakcja z innymi urządzeniami pracującymi w sieci. Jedynym koniecznym warunkiem jest, aby maszyna, na której prowadzony jest sniffing, była podpięta do dowolnego portu koncentratora. Ten po odebraniu pakietu wyśle go na wszystkie swoje porty i w rezultacie pakiet trafi do kaŜdego spiętego z koncentratorem urządzenia (komputera lub kolejnego koncentratora). KaŜda z kart sieciowych - za wyjątkiem karty prawdziwego odbiorcy oraz karty pracującej w trybie promiscuous (uŜywanej przez sniffującego) - odfiltruje pakiet po adresie MAC. W ten sposób moŜliwe jest podsłuchiwanie całej komunikacji odbywającej się w sieci.

(23)

W sieciach, w których zamiast koncentratorów wykorzystano przełączniki (switches) sniffing jest znacznie utrudniony, ale nadal istnieje moŜliwość prowadzenia podsłuchu. Trzeba jedynie wykorzystać jedną z dostępnych metod pozwalających obejść ograniczenia, które narzuca zasada działania przełączników.

Typowe przełączniki spotykane w sieciach lokalnych są urządzeniami działającymi w drugiej warstwie modelu OSI. Z tego względu funkcjonują one bardziej inteligentnie niŜ koncentratory. W trakcie pracy przełączniki budują tablice adresów MAC urządzeń przyłączonych do ich portów i zapisują te informacje we własnej pamięci. Dzięki temu kaŜdy przełącznik po odebraniu pakietu przesyła go nie na wszystkie porty, a jedynie do jednego z nich, do którego podpięte jest urządzenie o odpowiednim adresie MAC. To z kolei oznacza, Ŝe do karty sieciowej maszyny-odbiorcy trafiają wyłącznie pakiety dla niej przeznaczone oraz pakiety rozgłoszeniowe (broadcast). Wówczas przełączenie karty w tryb bezładny i uruchomienie sniffera nie przyniesie poŜądanego efektu.

Sytuacja ta przedstawiona została na rysunku 9:

Rys. 9 Rozsyłanie pakietów w sieci opartej o switch (źródło: opracowanie własne)

Istnieją jednak sposoby na przeprowadzenie tego ataku w sieci opartej na przełącznikach, a mianowicie:

• Dopóki przełącznik nie wybuduje aktualnej tablicy odwzorowań (MAC-port), rozsyła pakiet przeznaczony dla nieokreślonego odbiorcy (moŜe to być np. nowy komputer podpięty do wolnego portu, który jeszcze nie wygenerował Ŝadnego ruchu) do wszystkich portów. Wówczas urządzenie to działa jak typowy koncentrator. Tworzenie tablicy odwzorowań polega na tym, Ŝe kiedy na porcie

(24)

przełącznika pojawia się pakiet, ten odczytuje informację o nadawcy pakietu i zapisuje ją w pamięci, łącząc odkryty adres MAC z określonym portem. Ten proces ma charakter dynamiczny, gdyŜ w przeciwnym razie nie byłoby moŜliwe przepinanie urządzeń na inne porty.

• Pamięć przełącznika, w której przechowywana jest tablica odwzorowań ma ograniczony rozmiar; napastnik moŜe więc dąŜyć do próby jej przepełnienia.

Pojedynczy adres MAC zajmuje 6 bajtów. Nie jest to duŜo, biorąc pod uwagę pamięć urządzenia, jednak stosując technikę MAC flooding moŜna przesłać odpowiednią ilość fałszywych pakietów i spowodować przepełnienie tablicy.

• Większość producentów kart sieciowych pozwala na zmianę adresu MAC przypisanego danemu urządzeniu, a to daje moŜliwość podszycia się pod inną maszynę. Nie jest to jednak działanie konieczne, poniewaŜ istnieje wiele narzędzi pozwalających na manipulację pakietami ARP, a to otwiera juŜ kilka moŜliwych dróg rozwiązania problemu.

1.3.3 KradzieŜe haseł

W przypadku praktycznie wszystkich systemów, aby wejść do systemu wymagane jest podanie w określonej liczbie prób prawidłowego hasła. We wczesnych systemach operacyjnych, hasła przechowywane były w plikach dyskowych, w czystej tekstowej postaci. Bezpieczeństwo takich systemów opierało się na tajności nazwy pliku przechowującego hasło a systemowe polecenie przedstawiające zawartość katalogu pomijało nazwę tego pliku. KaŜdy więc, kto znał nazwę pliku, mógł odczytać hasło.

We współczesnych systemach, hasła nie są przechowywane w czystej tekstowej postaci. Poddawane są one szyfrowaniu za pomocą jednostronnych algorytmów szyfrujących (np. MD5), które to uniemoŜliwiają odszyfrowanie zakodowanej informacji. Autoryzacja uŜytkownika polega na zaszyfrowaniu podanego przez niego hasła i porównaniu z zaszyfrowanym hasłem przechowywanym w systemie.

Jednak największą słabością systemu haseł nie jest sposób ich szyfrowania czy przechowywania, ale sami uŜytkownicy wybierający słabe hasła typu imię, nazwisko, pesel itp. W badaniach przeprowadzonych w USA, na około 14000 losowo wybranych kontach, ponad 3300 miało ustawione hasła, które znajdowały się w standardowym

(25)

słowniku, 1500 haseł składało się z sześciu lub mniej znaków, prawie 550 stanowiło nazwy pospolite, a ponad 300 haseł zawierało imię7.

Ze względu na metodę działania programów słuŜących do łamania haseł moŜna je podzielić na dwie grupy. Pierwszą grupę stanowią programy przeprowadzający tzw.

atak słownikowy. Polega on na generowaniu haseł na podstawie wyrazów z dołączonego słownika i ich kombinacji - łączenia, dodawania liczb na początku i na końcu wyrazów, itp. Dlatego teŜ, wybranie hasła, które jest wyrazem w jakimkolwiek języku jest duŜym zagroŜeniem gdyŜ w Internecie znaleźć moŜna wiele słowników zawierających po kilkaset tysięcy wyrazów w róŜnych językach. Błędem jest takŜe, wybranie takiego wyrazu pisanego od końca, czy dodanie na początku bądź na końcu liczby, co jest dość często stosowane. Często równieŜ uŜytkownicy uŜywają jako hasła swojego „loginu” w połączeniu z innymi znakami. Złamanie hasła w tym przypadku, trwa zazwyczaj kilka sekund.

Drugą grupą programów słuŜących łamaniu haseł są programy wykorzystujące metodę siłową (brute force). W przeciwieństwie do metody słownikowej polega ona na sprawdzeniu wszystkich moŜliwych kombinacji znaków. Powodzenie tej metody (a przede wszystkim czas) zaleŜy od długości i złoŜoności wybranego hasła. Jeśli np.

składa się ono z samych cyfr, wygenerowanie prawidłowego hasła moŜe zająć zaledwie kilka minut. Tabela 1 przedstawia przewidywany czas znalezienia hasła w zaleŜności od jego złoŜoności, z wykorzystaniem jednego z najbardziej znanych programów do łamania haseł jakim jest John the Ripper, na komputerze z procesorem 1,7 GHz, dla średniej prędkości generowania haseł ok. 130 000 na sekundę.

długość hasła znaki uŜyte

w haśle 4 znaki 6 znaków 7 znaków 8 znaków cyfry

(10 znaków) 0,07 sekundy 7,7 sekund 76 sekund 12,8 minut małe litery

(26 znaków) 3,5 sekundy 40 minut 17,1 godzin 18,5 dni małe i duŜe litery

(52 znaki) 56,2 sekund 42,2 godziny 91,5 dni 13,3 lat wszystkie znaki

(95) 10,4 minut 65,4 dni 17 lat 1,6 tys. lat Tabela 1 Przewidywany czas łamania haseł

(źródło: opracowanie własne)

7Daniel V. Klein „Foiling the Cracker - A Survey of Improvemented to Password Security”;

(http://www.ussrback.com/docs/passwords_klein.ps.gz)

(26)

NaleŜy zaznaczyć, Ŝe rzeczywisty czas wygenerowania hasła na ogół jest mniejszy gdyŜ podane tutaj wartości są teoretycznymi, maksymalnymi czasami potrzebnymi na przeanalizowanie wszystkich moŜliwych kombinacji znaków w danym haśle. Ponadto załoŜono, Ŝe znaki składające się na dane hasło są losowe i nie występują w całości lub w części słowniku. W przeciwnym wypadku czas moŜe ulec znacznemu skróceniu. W rozdziale drugim przedstawiono przykładowe czasy „łamania”

konkretnych haseł.

1.4 Błędy w oprogramowaniu

Kolejnym sposobem wejścia do systemu, jego zablokowania czy wykradzenia poufnych danych, jest wykorzystanie przez napastnika błędów w oprogramowaniu danego systemu.

Jedną z najbardziej znanych metod wykorzystującej luki w oprogramowaniu jest „przepełnienie bufora” (Buffer Overflow). Technika ta polega na podaniu programowi większej liczby danych, niŜ przewidział to twórca programu. Nadmiarowe dane przekraczają obszar pamięci, który został przeznaczony dla danych, a tym samym wkraczają w obszar pamięci, który był przeznaczony na instrukcje programu.

W idealnej wersji tego ataku nadmiarowe dane są nowymi instrukcjami, które umoŜliwiają napastnikowi sterowanie pracą procesora. PoniŜej znajduje się prosty przykład programu podatnego na przepełnienie bufora:

void func(char *p);

int main(int argc, char *argv[]){

func("Tekst ten, spowoduje przepelnienie bufora");

return 0;

}

void func(char *p) {

char tmp[10];

strcpy(tmp, p);

printf(tmp);

}

Kompilacja przebiegnie bez przeszkód, ale przekazanie funkcji func()

łańcucha o długości większej niŜ dziewięć znaków powoduje przepełnienie bufora.

(27)

W tym konkretnym przypadku załamanie programu spowodowane jest próbą czytania poza granicą statycznego łańcucha. W najgorszym przypadku, tego rodzaju przepełnienie umoŜliwia wykonanie w zaatakowanym systemie dowolnego kodu (tzw. exploitów), choć przeprowadzenie takiego ataku jest dość trudne. Jednak nawet wtedy, gdy atak przepełnienia bufora nie powiedzie się do końca, najczęściej i tak spowoduje problemy w atakowanym komputerze. Zwykle polegają one na załamaniu się działania zaatakowanego programu lub nawet całego systemu.

Kolejnym rodzajem ataku korzystającego tym razem z błędów w aplikacjach internetowych jest tzw. SQL injection. Polega on na nieautoryzowanym wykonaniu wyraŜeń języka SQL. Jednym z podstawowych błędów jest brak filtracji danych przekazywanych przez uŜytkownika. Oto bardzo prosty przykład programu weryfikującego login i hasło:

$query = ”SELECT * FROM user WHERE login=’$login’ AND

password=’$pass’”;

$result=mysql_db_query($db,$query);

$num_rows=mysql_num_rows($result);

if ($num_rows!=0){

login i hasło poprawne } else brak dostepu

Jeśli dane nie są sprawdzane pod kątem metaznaków (konkretnie - '), sytuacja moŜe wyglądać bardzo źle. Wpisując jako login i hasło:

' or ''='

zapytanie wysłane do serwera bazy danych ma postać:

SELECT * FROM use WHERE Login='' or ''='' AND Password='' or ''='';

Oczywiście ' ' = ' ' , więc warunek z klauzuli WHERE jest zawsze prawdziwy.

(28)

Gdy aplikacja sprawdza, czy zapytanie zwróciło jeden wiersz i tylko wtedy dokonuje autoryzacji wystarczy znać albo nazwę uŜytkownika albo hasło:

login : 'janek' and ''='' or ''='

password : ' or ''='

W tym przypadku zapytanie ma postać:

SELECT * FROM user WHERE Login='janek' and ''='' or ''='' AND

Password='' or ''='';

Inny sposób to wykorzystanie SQL'owego komentarza:

login : '/*

password : */ OR ''='

O ile powyŜsze działania mogą prowadzić do nieautoryzowanego dostępu do danych, to nie trudno sobie wyobrazić napastnika, który wykorzystując błędy niszczy bazę danych kasując całą tabelę. Np. podając login:

x';DROP TABLE user;--

Zapytanie sql’owe przyjmie postać:

SELECT * FROM user WHERE Login='x';

DROP TABLE user;

--and ''='' or ''='' AND Password='' or ''='';

1.5 Socjotechnika (Social Engineering)

Socjotechnika to wywieranie wpływu na ludzi i stosowanie perswazji w celu oszukania 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 informacji8.

Socjotechnika polega na wykorzystywaniu niewiedzy i naiwności ludzi w celu uzyskania poufnych informacji. InŜynieria socjalna, we współczesnym świecie jest dziedziną hackingu zajmującą się aspektami manipulacji ludźmi. Socjotechnik przedstawia się jako osoba, która posługując się manipulacją wydobywa od innych informacje. Nie moŜna jednoznacznie stwierdzić, iŜ jest to wymuszenie przekazania

8

(29)

danych. Socjotechnik do kaŜdego ataku dokładnie się przygotowuje. Często poświęca trochę czasu na poznanie Ŝargonu firmy, specyfiki jej działalności. Metod stosowanych przez napastnika korzystającego z socjotechniki moŜe być wiele i zaleŜą one jedynie od jego pomysłowości i wyobraźni. Najprostszą z nich moŜe być wykonanie telefonu do firmy i podając się za jej pracownika, serwisanta czy nawet za samego szefa poproszenie o hasła dostępu. Warto tutaj zaznaczyć, Ŝe celem socjotechnika nie musi być firma. Mogą nim być np. banki czy jednostki samorządu terytorialnego.

Wyzwaniem dla niego są miejsca, w których trudniej o pozyskanie informacji. Zapewne ogromną satysfakcję daje zdobycie danych z jednostek, które, zgodnie z ich przeznaczeniem, powinny te informacje chronić. Nierzadko w firmach i instytucjach bagatelizuje się waŜność kaŜdej informacji. Dba się o te z klauzulą „niejawne”, a te bez oznaczenia mogą swobodnie „wypływać”. Z drugiej strony coraz częściej mówi się o bezpieczeństwie firm, co moŜe sugerować powolne wprowadzenie zmian organizacyjnych, proceduralnych w celu zapewnienia bezpieczeństwa informacji.

NajwaŜniejsze są tutaj szkolenia i odpowiednie zapisy w polityce bezpieczeństwa kaŜdej firmy czy instytucji oraz ich realizacja. NaleŜy połoŜyć w nich nacisk na klasyfikowanie informacji jako niejawne oraz na takie, które są jawne. JednakŜe przy tych ostatnich naleŜy równieŜ spisać procedury ich przekazywania, szczególnie na zewnątrz. Nie moŜna dopuścić do sytuacji, w której informacje z kategorii „jawne”, przekazywane są kaŜdej zainteresowanej nimi osobie. Sposób podawania danych powinien się odbywać poprzez róŜnego typu moŜliwości uwierzytelniania osoby, która o nie prosi.

Więcej na temat wykorzystania socjotechniki moŜna znaleźć w cytowanej juŜ ksiąŜce K. Mitnick'a, byłego hackera, który opanował socjotechnikę do perfekcji, a obecnie zajmującego się bezpieczeństwem systemów komputerowych.

(30)

2.1 Nmap - skanowanie portów i hostów w sieci

Jednym z najbardziej popularnych skanerów sieci, który moŜe być uŜyty zarówno do wykrywania hostów jak i do skanowania portów danego hosta jest program Nmap (Network Mapper)9. Dostępny jest on w wersjach dla róŜnych systemów operacyjnych, takich jak Linux, Microsoft Windows, FreeBSD, OpenBSD, Solaris, IRIX, Mac OS X, HP-UX, NetBSD, Sun OS i innych.

2.1.1 Wyszukiwanie hostów

Wyszukiwanie hostów w programie Nmap (opcja –sP) działa podobnie do tradycyjnego programu ping wysyłającego komunikat protokołu ICMP typu Echo Request (prośba o odpowiedź, lub tzw. ping). Protokół ICMP słuŜy do diagnostyki i sterowania przepływem komunikatów w sieci. Po wysłaniu pakietu ICMP, Nmap czeka na odpowiedź od hosta, który był jego adresatem. PoniŜszy przykład ilustruje wynik działania programu po przeszukaniu lokalnej sieci na obecność uruchomionych hostów:

E:\nmap-3.93>nmap -sP 192.168.1.1-254

Starting nmap 3.93 ( http://www.insecure.org/nmap ) at 2005-12-03 11:44

Host (192.168.1.7) appears to be up.

Host trynka (192.168.1.20) appears to be up.

Host bartek (192.168.1.202) appears to be up.

Nmap finished: 254 IP address (3 host up) scanned in 14.837 seconds

Nmap zwrócił informację, Ŝe trzy hosty w sieci o adresie 192.168.1.0/24 odpowiedziały na wysłany pakiet. Są to komputery o adresach IP 192.168.1.7, 192.168.1.20 oraz 192.168.1.202.

9

(31)

PoniewaŜ w wielu hostach pakiety protokołu ICMP są blokowane (np. przez zapory ogniowe, rutery, itp.), moŜliwa jest próba nawiązania połączenia TCP z portem 80 (standardowy port usługi WWW) lub na innym dowolnym porcie (opcja – P). Zwykle, gdy skanowany host nie udostępnia Ŝadnej usługi (wszystkie porty są zamknięte), wysyłany jest przez jego podsystem TCP/IP pakiet RST, co w tym przypadku równieŜ wystarcza, aby stwierdzić, Ŝe dany komputer jest uruchomiony.

Jednak nie wszystkie systemy operacyjne postępują zgodnie ze specyfikacją protokołów, dlatego brak odpowiedzi nie daje 100% pewności odnośnie braku istnienia skanowanego hosta.

2.1.2 Skanowanie portów TCP

Podstawową metodą skanowania jest próba nawiązania połączenia z otwartym portem zdalnego hosta (opcja -sT). W poniŜszym przykładzie, Nmap próbuje połączyć się z portami od 1-1024 (tzw. well known ports - dobrze znane porty) hosta o adresie IP 192.168.1.20. Porty 1-1024 skanowane są domyślnie natomiast, jeŜeli istnieje potrzeba skanowania portów powyŜej 1024, naleŜy to sprecyzować podczas uruchamiania programu. Te porty, które odpowiedzą inaczej niŜ pakietem z ustawioną flagą RST uznaje się za otwarte, pozostałe traktowane są jako zamknięte.

E:\nmap-3.93>nmap -sT 192.168.1.20

Starting nmap 3.93 ( http://www.insecure.org/nmap ) at 2005-12-03 14:48

Interesting ports on 192.168.1.20:

(The 1661 ports scanned but not shown below are in state: filtered)

PORT STATE SERVICE

25/tcp open smtp

119/tcp open nntp

135/tcp open msrpc

139/tcp open netbios-ssn

143/tcp open imap

445/tcp open microsoft-ds

1025/tcp open NFS-or-IIS

MAC Address: 00:20:ED:41:29:A5 (Giga-byte Technology CO.)

Nmap finished: 1 IP address (1 host up) scanned in 170.966 seconds

(32)

Jak widać, w badanym systemie zostało wykrytych siedem otwartych portów.

W celu wykrycia usług RPC10, naleŜy wprowadzić opcję -sR.

Ciekawy jest sposób, w jaki program działa w zaleŜności od uŜytych opcji skanowania. W przypadku opcji: –sT, -sR oraz –sP (ping scan) zawsze najpierw wysyłany jest pakiet SYN. Gdy zostanie wysłana odpowiedź SYN/ACK, Nmap odpowiada pakietem ACK i od razu wysyła pakiet RST kończąc w ten sposób wymianę pakietów. Wynikiem działania jest informacja, Ŝe skanowany port jest otwarty, a host jest dostępny. Gdy Nmap otrzyma odpowiedź RST, oznacza to zamknięty port, ale skanowany komputer jest dostępny. Gdy nie ma odpowiedzi, zakłada się, Ŝe port jest zablokowany przez zaporę sieciową lub skanowany host nie działa. Jednak połączenia nawiązywane w powyŜszy sposób raczej na pewno zostaną odnotowane w logach systemowych skanowanej maszyny. Z punktu widzenia włamywacza jest to absolutnie nie do zaakceptowania. I właśnie tutaj okazuje się jak bardzo wszechstronnym narzędziem jest Nmap. UŜycie opcji -sS programu powoduje, Ŝe program nawiązuje sesję ze skanowanym hostem wysyłając pakiet SYN, ale potem zachowuje się niezgodnie ze specyfikacją protokołu TCP. Gdy otrzyma pakiet z ustawioną flagą RST będzie to oznaczało, Ŝe port jest zamknięty. Natomiast, jeśli otrzyma w odpowiedzi pakiet SYN/ACK, zamiast wysłać pakiet SYN (zgodnie ze specyfikacją) wysyła pakiet RST. PoniewaŜ zachowanie to powoduje zerwanie procesu ustanawiania sesji, wiele usług potraktowanych w ten sposób nie odnotuje takiego połączenia w logach bezpieczeństwa. Skoro nie ma śladu w logach, intruz moŜe spokojnie skanować wszystkie porty. Mimo Ŝe większość usług nie odnotuje przerwanego nawiązywania sesji, większość systemów IDS (Intrusion Detection System) oraz zapór ogniowych (firewalls) jest bardzo uczulona na podobne praktyki. Najnowsze systemy operacyjne i systemy zapisujące zdarzenia odnotowują wszelkie nieprawidłowości, takŜe nie do końca nawiązane sesje lub wszelkie anomalia (zdarzenia niezdefiniowane protokołem).

Jednak w Internecie funkcjonuje sporo starszych systemów, często w Ŝaden sposób niezabezpieczonych. Skanowanie tym sposobem określane jest mianem skanowania niewidzialnego – stealth.

Jednym z pomysłów na ominięcie powyŜszej niedogodności jest wykorzystanie cechy protokołu TCP, w którym, w przypadku próby nawiązania połączenia

10Remote Procedure Call -usługi pozwalające na zdalne wykonywanie zadań; np.: SSH, X11, HTTP i

(33)

z zamkniętym portem wysyłany jest pakiet RST. Opcja -sF programu uruchamia skanowanie FIN typu stealth. Pakiet TCP z ustawioną flagą FIN normalnie kończy sesję między dwoma hostami. Gdy jednak zostanie wysłany bez wcześniejszego ustanowienia sesji, otwarte porty powinny go zignorować, natomiast w przypadku portów zamkniętych powinien zostać wysłany pakiet RST.

Innymi metodami skanowania typu stealth jest wysyłanie przez Nmap pakietów z aŜ trzema bez sensownie (z punktu widzenia specyfikacji protokołu TCP) ustawionymi flagami (opcja -sX) czy skanowanie puste (opcja -sN), w którym Nmap próbuje nawiązać połączenie wysyłając pakiet bez ustawionych flag11.

Niestety nie wszystkie systemy operacyjne mają prawidłowo (zgodnie z zaleceniem) zaimplementowaną obsługę stosu protokołów TCP/IP. Oznacza to, Ŝe nie muszą się zachowywać tak, jak opisano wcześniej. Dobrze zabezpieczone hosty mogą teŜ wysyłać fałszywe odpowiedzi. Istnieje teŜ grupa inteligentnych zapór ogniowych, które zapisują w swoich tablicach stanów historię przepływu pakietów, potrafiąc wyciągać wnioski i odpowiednio do potrzeb działać na podstawie ruchu pakietów odbywającego się w określonym czasie.

2.1.3 Skanowanie portów UDP

Za pomocą programu Nmap moŜna równieŜ badać porty bezpołączeniowego protokołu UDP. Określenie bezpołączeniowy oznacza, Ŝe pakiety wysyłane są bez uprzedniego zestawienia sesji jak to ma miejsce w komunikacji poprzez protokół TCP.

W komunikacji przy pomocy protokołu UDP nie występują potwierdzenia otrzymania informacji, dlatego pakiety te mogą się gubić w sieci. Nmap z opcją -sU wysyła pusty pakiet UDP i czeka na informację zwrotną ICMP Port unreachable (port niedostępny).

Otrzymanie jej oznacza zamknięty port. Gdy skaner nie otrzyma Ŝadnej informacji zwrotnej, zakłada się, Ŝe port jest otwarty. Trzeba teŜ wybadać, czy zapora sieciowa nie blokuje pakietów ICMP wysyłanych do skanowanego hosta, poniewaŜ w takim przypadku Nmap moŜe zwrócić informację, Ŝe wszystkie porty są otwarte, co moŜe nie być prawdą. Mając na uwadze ten problem, program domyślnie próbuje wysłać

11Więcej o opcjach programu i przykładach zastosowań moŜna znaleźć w dokumentacji programu, który jest dostępny pod adresem http://www.insecure.org/nmap/man/

(34)

pakiet ICMP Echo request (tzw. ping) do skanowanego hosta zanim rozpocznie skanowanie.

2.1.4 Inne funkcje programu

Dla hakera, nie mniej waŜne od zgodnych z rzeczywistością wyników skanowania jest równieŜ skuteczne ukrywanie samego faktu skanowania. Nmap pozwala na wykorzystanie kilku technik zmniejszających ryzyko wykrycia.

Pierwszą z nich jest FTP Bounce (odbijanie FTP). Technika ta wykorzystuje pewną słabość zdefiniowaną w specyfikacji protokołu FTP. Kiedy nawiązywane jest połączenie z serwerem FTP za pomocą klienta FTP, klient nawiązuje domyślnie połączenie z serwerem poprzez port 21 TCP serwera. Jest to tzw. połączenie kontrolne, słuŜące do przesyłania informacji diagnostycznych i konfiguracyjnych. Aby przesyłać strumienie danych, serwer musi nawiązać osobne połączenie z klientem. Oczywiście klient zacznie nasłuchiwać na nowym porcie, ale najpierw musi poinformować o tym serwer FTP. SłuŜy do tego komenda PORT, za pomocą której klient prosi o zainicjowanie połączenia podając adres IP i numer portu, na którym nasłuchuje.

Metoda ta nosi nazwę aktywnego transferu. Okazuje się jednak, Ŝe klient wcale nie musi podać swojego adresu IP. MoŜna więc, wykorzystać serwer FTP do nawiązania połączenia z innym hostem niŜ nasz klient FTP i przechwycić informacje, które serwerowi zwróci ów host.

Z aktywnym transferem wiąŜe się teŜ pewien problem. OtóŜ wiele klientów FTP znajduje się za zaporą sieciową lub urządzeniem NAT (Network Address Translation), które nie dopuszczają ruchu FTP inicjowanego z zewnątrz. W takim przypadku technika FTP bounce jest idealnym rozwiązaniem. Napastnik uzyskuje dostęp do serwera FTP, a serwer FTP uzyskuje dostęp do poszczególnych hostów wewnątrz strefy zwracając potrzebne informacje. Obecnie najczęściej komunikacja FTP odbywa się w trybie pasywnym - klient inicjuje zarówno połączenie kontrolne jak i transfer danych, co pozwala na korzystanie z FTP mimo obecności urządzeń filtrujących, takich jak zapory sieciowe (pod warunkiem, Ŝe reguły w nich zdefiniowane pozwalają na to komputerom z sieci wewnętrznej). Jednak w Internecie działa sporo starych serwerów FTP podatnych na technikę FTP bounce i pozwalających na wykorzystywanie aktywnego transferu. Nmap potrafi nawiązać połączenie FTP w trybie

(35)

aktywnym, a następnie wysłać do serwera FTP komendę PORT zawierającą adres IP skanowanego hosta oraz numery portów, które mają być sprawdzone.

Drugą techniką zmniejszającą ryzyko wykrycia jest wykorzystanie fragmentacji (opcja -f). Pakiety te wysyłane są z uciętymi nagłówkami TCP imitując uszkodzone lub zdefragmentowane pakiety. Niektóre słabsze zapory ogniowe nie radzą sobie z tego typu przepływem danych.

Trzecią techniką oferowaną przez Nmap jest wykorzystanie tzw. przynęty. Dzięki opcji -D uŜytkownik moŜe wprowadzić kilka adresów IP oddzielonych przecinkami. Nmap rozpocznie skanowanie wykorzystując te adresy jako adresy źródłowe. Dodatkowo zostanie pomieszana kolejność skanowanych portów dla kaŜdego adresu. W logach skanowanego systemu pojawi się więc kilka prób skanowania róŜnych portów z róŜnych adresów IP i tylko jeden z tych adresów będzie prawdziwy.

Kolejną techniką mogącą ukryć fakt skanowania jest wykorzystywana domyślnie przez Nmap randomizacja numerów skanowanych portów. O wiele trudniej jest znaleźć w logach wpisy dotyczące skanowania, gdy numery portów wybierane są w kolejności losowej, a nie po kolei np. od najmniejszego do największego.

Warto równieŜ wspomnieć, Ŝe program ten zawiera rozbudowaną bazę danych, zawierającą luki w stosach TCP/IP wielu wersji, wielu systemów operacyjnych. Baza ta, słuŜąca identyfikacji systemów operacyjnych i ich wersji na odległość uwaŜana jest za jedną z najlepszych12. Do identyfikacji systemu komputera Nmap potrzebuje dostępu do zamkniętych i otwartych portów TCP oraz działających usługach. Gdy program napotka na system, którego nie moŜe rozpoznać, tworzy dla tego systemu „odcisk palca” i prosi o przesłanie go twórcom bazy danych, by został uwzględniony w następnych wersjach programu.

2.2 John the Ripper - atak na hasła

Jednym z najpopularniejszych programów umoŜliwiającym łamanie haseł jest John the Ripper13 autorstwa Solar Designer. Dostępny jest on w wersji dla wielu

12William. R. Chestwick, Steven M. Bellovin, Aviel D. Rubin „Firewalle i bezpieczeństwo w sieci”

Helion 2003

13Źródła programu jak i pełna jego dokumentacja dostępna jest na stronie www.openwall.com/john

Cytaty

Powiązane dokumenty

• Kiedy ma sens stwierdzenie, że program A jest dwa razy bardziej złożony niż program B. • Jaki sens ma stwierdzenie, że średnia złożoność programów w systemie A

Do momentu wciśnięcia przycisku wydającego napój klient może zrezygnować z zakupu wciskając przycisk „Zwrot monet”,. pieniądze

Wszystko to, co znajduje się poza granicami systemu, stanowi jego otoczenie, które może być traktowane jako system. Otoczenie systemu dzieli się na: otoczenie bliższe

Podstawowym celem analizy i projektowania jest zamiana wymagań w specyfikację sposobu.. implementowania

Argila, Analiza obiektowa i projektowanie przykłady zastosowań, Wydawnictwo Naukowo-Techniczne, Warszawa 2000.. Yourdon, Marsz

Należy podać atrybuty tytułu: ISBN jako obowiązkowa dana oraz dodatkowo aktor, jeśli poszukiwany jest tytuł książki jako nagranie dźwiękowe. Tworzony jest tytuł wzorcowy

Należy podać atrybuty tytułu: ISBN jako obowiązkowa dana oraz dodatkowo aktor, jeśli poszukiwany jest tytuł książki jako nagranie dźwiękowe. Tworzony jest tytuł wzorcowy

Adamczewski, Zintegrowane systemy informatyczne w praktyce, Wydanie IV, MIKOM, Warszawa 2004 r., Integracja i architektury systemów informatycznych przedsiÚbiorstw, red..