Popularne metody włamań do systemów
komputerowych i zabezpieczenie się przed nimi
Wśród całej mnogości oprogramowania dostępnego na różne wersje UNIX'a można trafić na najprzeróżniejsze programy. Często wiele z tych programów jest nieznanego lub wątpliwego pochodzenia (shareware). Jest to dobry sposób na rozpowszechnianie różnych złośliwych programów, wykonujących oprócz swoich założonych zadań różne inne, nie zawsze oczekiwane przez użytkownika. Programy takie dzieli się zasadniczo na kilka grup według podobnego schematu:
· Wirusy – Wirus to kod, który sam siebie reprodukuje, infekując inne komputery. Kod wirusa może być zawarty w programie wykonywalnym, a także dzięki temu, że aplikacje Microsoft Office automatycznie uruchamiają makra zawarte w dokumentach, można napisać kod wirusa w postaci makra np. Worda. Wirus nie rozprzestrzenia się samodzielnie, a za pomocą zainfekowanych programów lub dokumentów.
· Konie trojańskie – Koń trojański to program, który udaje, że jest programem zupełnie innego typu, np. pomocnym narzędziem do pracy, a w rzeczywistości wykonuje zupełnie inne zadanie. Trojany najczęściej nie infekują innych komputerów.
· Robaki – Robak to kod, który samodzielnie rozprzestrzenia się w sieci, np. poprzez wysyłanie samego siebie do innych komputerów, pobierając adresy np. z książki adresowej lub e-maili
· Bomby logiczne - wywołują ukryte funkcje w określonych warunkach,
· Bakterie - programy rozmnażające się i tworzące ogromną liczbę kopii, które zajmują zasoby systemowe.
Atak na bezpieczeństwo, atak na system komputerowy, zagrożenie bezpieczeństwa (angielskie security attack, security threat), działanie mające na celu przeniknięcie do chronionego systemu komputerowego w celu przechwycenia lub zniekształcenia przechowywanych w nim informacji.
Rozróżnia się następujące rodzaje ataków na bezpieczeństwo:
a) przerwanie (interruption), czyli zniszczenie części systemu lub jej unieruchomienie, np. przecięcie linii łączności;
b) przechwycenie (interception), czyli uzyskanie dostępu do zasobów systemu przez czynnik postronny (osobę, komputer), np. podsłuch;
c) modyfikacja (modification), tj. zmiana zasobów przez osobę nieupoważnioną, np. modyfikacja programu lub komunikatów sieciowych;
d) podrobienie (fabrication), czyli atak na autentyczność, np. dodanie fałszywych danych do pliku.
Naruszenia bezpieczeństwa (nadużycia) systemu można podzielić na przypadkowe i rozmyślne (złośliwe). Łatwiej jest chronić system przed nadużyciami przypadkowymi niż przed złośliwymi.
Maskarada, kamuflaż (angielskie masquerade), atak na bezpieczeństwo polegający na udawaniu upoważnionego użytkownika, np. w celu przechwycenia jego hasła.
Atak przez ponawianie (z angielskiego replay attack), atak na bezpieczeństwo polegający na retransmitowaniu porcji danych po jej uprzednim przechwyceniu (atak pasywny), np. próba dokonania powtórnej transakcji przelewu z konta.
Bezpieczeństwo (angielskie security), miara zaufania, że system i jego dane pozostaną nienaruszone. Zapewnianie bezpieczeństwa jest znacznie szerszym zagadnieniem niż ochrona; oprócz rozwiązań programowych bezpieczeństwo obejmuje problemy zabezpieczeń konwencjonalnych.
Atak pasywny (z angielskiego passive attack), atak na bezpieczeństwo polegający na podsłuchiwaniu lub śledzeniu przesyłania w celu odkrycia treści komunikatu lub wykonania analizy ruchu (traffic analysis) danych w sieci. Ponieważ ataki pasywne nie zmieniają danych, są trudne do wykrycia.
Atak aktywny (z angielskiego active attack), atak na bezpieczeństwo, polegający na wykonywaniu zmian w strumieniu danych lub tworzeniu danych fałszywych. Rozróżnia się cztery rodzaje ataku aktywnego: maskaradę, atak przez ponawianie, modyfikowanie komunikatów oraz blokowanie działania. Modyfikowanie komunikatów może również oznaczać ich opóźnianie. Blokowanie działania ma utrudnić normalną pracę systemu, np. niedocieranie informacji do miejsca, w którym są sprawdzane, dezintegrację sieci lub jej przeładowanie.
Spośród wielu różnorodnych zagrożeń do najczęściej spotykanych należą: włamania do systemu, działania z ukrycia za pomocą bocznych drzwi (np. popełnianie nadużyć bankowych, kradzieże “elektronicznych pieniędzy”), łamanie praw autorskich wskutek nielegalnego handlu kopiami oprogramowania (np. nagminne kopiowanie i nielegalna sprzedaż pamięci CD-ROM i DVD-ROM), kradzież prywatnych lub poufnych baz danych, podsłuchiwanie sieci lub monitorów (zmian w ich promieniowaniu elektromagnetycznym), złośliwe niszczenie danych, rozpowszechnianie komputerowych wirusów, robaków lub bakterii.
Porty najczęściej używane przez "konie trojańskie"31......................Master's Paradise555....................StealthSpy, phAse1001..................Web EX1025..................NetSpy1981..................Bowl1999..................Backdoor 25000..................Sockets de Troie6969..................GateCrasher12345................NetBus 1.712346................NetBus 1.721554................GirlFriend31337................BO, T5Port33333................Prosiak40421................Master's Paradise40426................Master's Paradise44444................Prosiak
Zabezpieczanie
Wiele z mechanizmów wykorzystywanych w programach złośliwych jest także wykorzystywana w zwykłych programach do 'pokojowych' celów. Niezależnie od sposobu w jaki takie programy atakują system, należy zachować kilka elementarnych zasad bezpieczeństwa, które w każdej sytuacji znacząco pomogą zwiększyć bezpieczeństwo naszego systemu. Oto kilka ku temu wskazówek:
· zawsze należy zapoznać się z programem przed jego pierwszym uruchomieniem,
· należy dokładnie przeczytać uruchamiane skrypty i starać się je dokładnie zrozumieć,
· warto zapoznać się, w miarę możliwości, z kodem źródłowym, aby poznać mechanizmu użyte w programie i wiedzieć czego się po nim można spodziewać,
· nie należy uruchamiać nowych programów z konta root'a, mają one wtedy dostęp do wszystkich zasobów systemu i mogą już na wejściu dokonać dużych szkód,
· najlepiej nowe programy testować, w miarę możliwości, na komputerze odłączonym od sieci, tak aby nie mogły udostępnić nikomu żadnych zasobów w jakiś tajny nieudokumentowany sposób.
· Oprócz tych zabezpieczeń należy też pamiętać o stałych elementach zabezpieczających system przed nieproszonymi programami:
· nie wolno w łańcuchu ścieżki umieszczać nietypowych katalogów, takich jak np. katalog bieżący (.),
· nie można zostawiać niezabezpieczonych katalogów takich jak /bin, /usr/bin itp.
· uprawnienia do poleceń należy ustawiać na 555 lub 551, tak aby nikt ich nie mógł zmieniać,
· Ogólnie zaleca się zachowanie dystansu do programów importowanych z niepewnych i nieznanych źródeł, i to zarówno do programów źródłowych jak i skompilowanych. Zdecydowanie nie powinno się ufać programom ściąganym z grup dyskusyjnych dotyczących programów źródłowych. Również programy ściągane z archiwów FTP należy uważać za niepewne i każdy z nich ostrożnie przetestować przed wprowadzeniem do powszechnego użycia.
Programy antywirusowe
Najbardziej popularne programy antiwirusowe to:
· McAfee Virus Scan - shareware, komercyjny,
· AntiViral Toolkit - shareware (ograniczony czas działania),
· Panda Antivirus - shareware,
· eSafe Protect - shareware, komercyjny,
· Norton Antivirus - darmowa wersja 30-dniowa, komercyjny,
· Mks_Vir - darmowa wersja, komercyjny
Firewall ("ściana ogniowa") to urządzenie, którego zadaniem jest zapewnienie bezpieczeństwa sieci w przypadku prób włamania. Najbardziej popularnymi typami firewallów są:
· statyczny filtr pakietów,
· dynamiczny filtr pakietów,
· proxy
FUNKCJE SCIANY OGNIOWEJ:
1. Kontrola dostępu do usług systemu.
2. Ograniczenie liczby dostępnych usług.
3. Kontrolowanie połączeń sieciowych.
4. Skanowanie serwisów sieciowych.
5. Wykrywanie i eliminowanie prób włamania do systemu.
6. Zabezpieczenie przesyłanych informacji.
7. Nadzorowanie pracy routerów.
8. Ochrone systemu przed niebezpiecznymi programami.
9. Kontrola antywirusowa przesyłanych plikow.
10. Ukrywanie struktury wewnętrznej systemu.
11. Monitorowanie bieżącego stanu komunikacji sieciowej.
12. Rejestrowanie ważnych zdarzeń.
13. Równoważenie obciążenia serwerów.
Statyczny filtr pakietów
Statyczny filtr pakietów jest nieinteligentnym urządzeniem filtrującym. Oferuje proste zabezpieczenie przed zaawansowanymi typami ataków. Wiele ruterów ma możliwość statycznego filtrowania pakietów. Statyczny filtr pakietów kontroluje ruch przy użyciu informacji zapisanych w nagłówkach pakietów. Kiedy pakiet dociera do urządzenia filtrującego, sprawdzane są dane zapisane w nagłówku pakietu. W zależności, czy informacje w nagłówku są zgadzają się z listą dostępu, pakiet jest przepuszczany lub odrzucany.
Statyczny filtr pakietów może użyć następujących informacji w momencie decyzji czy przepuścić pakiet:
· docelowy adres IP lub podsieć,
· źródłowy adres IP lub podsieć,
· numer portu docelowego,
· numer portu źródłowego,
· flagi: ACK, FIN, PSH, RST, SYN, URG (tylko TCP)
Filtrowanie UDP jest dużo trudniejsze niż filtrowanie TCP, ponieważ UDP nie zawiera tak wielu informacji, jak połączenie przy użyciu protokołu TCP. Jedynymi informacjami, które mogą być użyte do kontroli ruchu w sieci są numery źródłowe i docelowe portów. Dodatkowym utrudnieniem jest fakt, że wiele usług bazujących na UDP używa tych samych portów dla źródła oraz dla celu (np. DNS używa portów 53). Uniemożliwia to blokowanie przychodzącego ruchu na taki port, ponieważ spowoduje to blokowanie danych, które są odpowiedziami.
Pakiety ICMP nie posiadają pola numeru portu. Filtrowanie pakietów ICMP polega na sprawdzeniu zawartości pola typu i kodu. Jednak nie wszystkie filtry pakietów są dostosowane do filtrowania wszystkich typów i kodów.
Dynamiczny filtr pakietów
Dynamiczny filtr pakietów to urządzenie inteligentne, które kontroluje ruch na postawie atrybutów pakietu oraz tabeli stanów. Tabela stanów pozwala urządzeniu na zapamiętanie poprzedniej wymiany pakietów i podjęcie decyzji w oparciu o dodatkowe informacje.
Dynamiczny filtr wykonuje tę samą pracę co statyczny, ale dodatkowo tworzy tabelę stanów, do której wpisuje dane, gdy zostało utworzone jakieś połączenie. Za każdym razem, gdy zdalna maszyna próbuje odpowiedzieć chronionej, sprawdzana jest tabela stanów w poszukiwaniu:
· czy chroniona maszyna wysłała jakieś zapytanie,
· czy port źródłowy informacji zgadza się z odpowiedzią,
· czy port docelowy informacji zgadza się z odpowiedzią.
Kiedy pakiety FIN są przesłane przez każdy system, odpowiedni wpis w tabeli jest usuwany.
Statyczne filtrowanie pakietów UDP jest bardzo trudne, ponieważ nagłówek UDP nie zawiera informacji na temat stanu połączenia. Dynamiczny filtr pakietów radzi sobie dobrze z pakietami UDP, ponieważ ma swoją własną tabelę stanów i nie polega na danych zapisanych w nagłówkach pakietów. Gdy potrzebujemy filtrowania pakietów UDP dymaniczny filtr pakietów jest bardzo zalecany.
Implementacja dynamicznego filtru pakietów jest specyficzna dla każdego typu transportu. Oznacza to, że dla każdego protokołu takiego jak TCP, UDP oraz ICMP implementacja jest inna. Dlatego podczas wyboru dynamicznego filtru pakietów należy się upewnić, że firewall obsługuje filtrowanie tego typu, którego chcemy używać.
Proxy
Serwer proxy jest aplikacją, która przekazuje ruch między dwoma segmentami sieci. Proxy są często stosowane zamiast filtrowania, aby wstrzymać ruch bezpośredni między sieciami. Dzięki proxy, źródłowy i docelowy system nie są w rzeczywistości połączone ze sobą. Proxy stoi pośrodku każdej próby połączenia.
Proxy nie wykonuje rutowania, ale wykonuje połączenia za każdy system po każdej stronie firewalla. Kiedy chcemy połączyć się z jakąś usługą na zdalnym serwerze, żądanie kierowane jest do bramy prowadzącej do zdalnej sieci, którą jest w rzeczywistości serwer proxy. Gdy proxy odbierze żądanie, identyfikuje jaki rodzaj usługi żądamy. Po identyfikacji, proxy przpuszcza żądanie do specjalnej aplikacji używanej tylko dla sesji danego protokołu. Aplikacja ta weryfikuje żądanie z listą dostępu, czy pozwolić na ten typ ruchu. Jeśli tak, proxy formułuje nowe zapytanie do zdalnego serwera z tym, że podaje siebie jako źródło. Kiedy serwer odpowiada, przesyła dane do proxy. Kiedy proxy odtrzymuje odpowiedź, kieruje ją znowu do aplikacji odpowiedzialnej za dany protokół. Kiedy informacje w odpowiedzi są akceptowalne, kierowane są do naszego komputera.
Ponieważ serwery proxy podwajają każde połączenie, możliwe jest zapisywanie (logowanie) każdego z nich. Serwery proxy są w pełni bezpieczne, gdyż nie dokonują bezpośredniego rutingu. Jedyną ich wadą są ogromne wymagania sprzętowe oraz pewien brak elastyczności. W momencie pojawienia się nowej usługi, z której użytkownicy sieci chcą skorzystać, musimy zainstalować dodatkowy program na serwerze zapewniający daną usługę.
Tłumaczenie adresów
Translacja adresów jest implementowana we większości firewalli i jest używana wtedy, gdy nie chcemy, aby zdalny system poznał prawdziwe adresy IP w wewnętrznej sieci. Są trzy sposoby translacji adresów:
· ukrywanie adresu sieciowego (ukrywanie NAT),
· statyczna translacja adresów sieciowych (staticzne NAT),
· translacja numerów portów (PAT).
Ukrywanie NAT polega ukryciu wszystkich wewnętrznych adresów IP za jednym adresem IP, który może być adresem IP firewalla lub zupełnie innym poprawnym adresem. Największym ograniczeniem tej metody jest brak możliwości połączenia się z zewnątrz. Poniważ wszystkie komputery schowane są za jednym adresem IP, firewall nie ma możliwości sprawdzenia, do którego z komputerów w wewnętrznej sieci kierowane jest połączenie.
Statyczne NAT jest podobne do ukrywania NAT, z wyjątkiem tego, że każdy lokalny adres IP jest ukryty za osobnym adresem. Pozwala to firewallowi na rozpoznanie do którego komputera skierować połączenie. Wiekszość urządzeń NAT pozwala na jednoczesne ukrywanie NAT i statyczne NAT. Pozwala to na przydzielenie osobnych adresów tylko tym systemom, które tego potrzebują, ukrywając inne.
Translacja PAT jest używana przez większość serwerów proxy. Cały ruch na zewnątrz jest tłumaczony w taki sam sposób, jak ukrywanie NAT, lecz adresy muszą być ukryte za adresem firewalla. Aby umożliwić ruch przychodzący z zewnątrz, mapuje się porty do konkretnego systemu.
8
andrzej_kwasny