Kropka Kropka, ukośnik i inne znaki

Osoby odpowiedzialne za bezpieczeństwo systemów informatycznych wykorzystujących serwery WWW musi być wyczulone na nowe luki. Oprogramowanie serwera WWW okazało się szczególnie podatne na niektóre kategorie luk, które często powtarzają się w nowych wersjach. Za każdym razem, gdy te luki zostaną wykryte, atakujący szybko je wykorzystują. Zazwyczaj dostawcy oprogramowania wydają łatki, aby rozwiązać problem, ale systemy pozostają podatne, dopóki nie zostaną załatane, a atakujący używają zautomatyzowanych narzędzi do skanowania Internetu w poszukiwaniu serwerów, które są nadal podatne. Na przykład w kwietniu 2001 r. Wykryto lukę w używanych wówczas wersjach Microsoft Internet Information Server (IIS). Ta wada umożliwiła zdalnym użytkownikom wyświetlanie zawartości katalogu, przeglądanie plików, usuwanie plików i wykonywanie dowolnych poleceń. Innymi słowy, jeśli serwer sieci Web z uruchomionymi usługami IIS był podłączony do Internetu, każdy korzystający z Internetu mógłby potencjalnie kopiować, przenosić lub usuwać pliki na serwerze sieci Web. Przy takim poziomie dostępu można było uzyskać dostęp do serwera sieci Web do połączonych sieci, chyba że wprowadzono silne mechanizmy kontroli dostępu do sieci. W alertach wysłanych w celu ostrzeżenia użytkowników tego oprogramowania wykorzystanie tej luki opisano jako „trywialne”. W rzeczywistości duża liczba witryn została z tego powodu przeniknięta i wiele z nich ucierpiało (tj. Nieautoryzowane zmiany w wyglądzie ich strony internetowe). W innych przypadkach osoby atakujące pobrały poufne dane klientów oraz przesłały i zainstalowały oprogramowanie back-door. Szczególnie niepokojący z powodu tej podatności był fakt, że był to w zasadzie ponowny atak tak zwanego ataku katalogów kropkowych, który był możliwy na wielu wczesnych serwerach WWW. Serwery te na żądanie czytałyby katalogi „..” w adresach URL, które są nieopublikowanymi katalogami nadrzędnymi opublikowanego katalogu. W ten sposób osoby atakujące mogły wycofać się do głównego katalogu internetowego, a następnie do innych części struktury katalogów serwera. Ta technika zasadniczo pozwalała atakującym na dowolne poruszanie się po systemie plików. Wiele serwerów WWW, w tym IIS, zaczęło stosować zabezpieczenia, aby zapobiec atakowi „kropka-kropka”, odrzucając wszystkie zapytania do adresów URL zawierających zbyt wiele początkowych ukośników lub znaków „..”. Luka opublikowana w kwietniu 2001 r. Polegała na ominięciu tych ograniczeń, po prostu zastępując tłumaczenie Unicode „/” lub „Unic”. Atakujący odkryli, że dodając „..” i ukośnik Unicode lub ukośnik odwrotny po katalogu wirtualnym z uprawnieniami do wykonywania , możliwe było wykonywanie dowolnych poleceń. Atakujący mogą wykonać dowolne polecenie za pomocą specjalnie spreparowanego zapytania HTTP. Częstotliwość pojawiania się „starych” luk w nowym oprogramowaniu powinna być ostrzeżeniem dla specjalistów ds. Bezpieczeństwa informacji, aby nie zakładali, że „nowe” to „ulepszone”. Rzeczywiście, całe oprogramowanie należy traktować z dużym sceptycyzmem i sporo ciężkich testów przed wdrożeniem.

Exploity systemu plików

Inna kategoria ataków na strony internetowe wykorzystuje problemy z systemem plików samego serwera WWW. Odkąd serwery WWW zaczęły pojawiać się w Internecie, stale pojawiały się komunikaty o lukach w zabezpieczeniach wynikające z problemów z systemem plików. Najważniejsze z nich zostały przedstawione tutaj, ale prawdopodobieństwo pojawienia się innych jest wysokie z powodu braku czegoś, co David Brussin nazwał analizą klasy podatności na zagrożenia. Klasa podatności to rodzaj problemu, na przykład przepełnienie bufora lub kontrola dostępu do systemu plików. Deweloperzy serwerów WWW i wielu innych aplikacji często są przeciwni eliminacji luk w zabezpieczeniach lub ograniczeni zasobami, skupiając się na rozwiązywaniu poszczególnych przypadków luki w miarę ich powstawania. Zjawisko to jest w dużej mierze wynikiem szybkiego tempa, w jakim sieć została opracowana i wdrożona, napędzana przez potężne siły handlowe.

Ataki Przepełnienia

Jak opisano wcześniej w kontekście ukrytych pól formularzy, można uzyskać dostęp do serwerów sieci Web, dostarczając więcej danych wejściowych niż oczekiwano. Taki atak jest możliwy przy użyciu dowolnego pola w formularzu przesłanym przez użytkownika, a nie tylko pola ukrytego. Obroną jest wbudowanie szczegółowego sprawdzania błędów w aplikację przetwarzającą formularz. Ataki przepełnienia, które zostały wcześniej opisane ogólnie, mogą być również skierowane na aplikacje lub usługi działające na serwerze Web. Na przykład w czerwcu 2001 r. CERT ogłosił zdalne przepełnienie bufora w jednym z rozszerzeń ISAPI (Internet Server Application Programming Interface) zainstalowanych w większości wersji Microsoft Internet Information Server 4.0 i 5.0, w szczególności w rozszerzeniu interfejsu programowania aplikacji Internet / Indexing Service , IDQ.DLL. Intruz wykorzystujący tę lukę może być w stanie wykonać dowolny kod w kontekście bezpieczeństwa lokalnego systemu, dając atakującemu pełną kontrolę nad systemem ofiary

Nieoczekiwane ataki wejściowe

Jak można przesłać nieoczekiwane dane wejściowe do serwera? Odpowiedź leży w architekturze Internetu i paradoksalnej naturze systemu klienckiego, który uzyskuje dostęp do serwera. Typowy klient sieciowy to klient tylko z nazwy. Często jest to potężna maszyna, będąca samodzielnym serwerem i bardzo trudna do kontrolowania przez jakikolwiek inny serwer, ze względu na nieodłączną naturę ogromnej sieci, jaką jest Internet. Wszystkie węzły Internetu są uważane za hosty. I oczywiście wiele z tych hostów znajduje się poza fizyczną kontrolą organizacji hostujących te maszyny, które działają jak serwery. Ten fakt ma poważne konsekwencje dla bezpieczeństwa. O ile serwer nie może zainstalować ściśle sterowanego kodu aplikacji na kliencie i ograniczać wprowadzanie danych przez użytkownika do tego kodu, serwer musi polegać na kodowaniu najczęściej używanym do implementacji interakcji klient-serwer WWW, Hypertext Markup Language (HTML) i Hypertext Transfer Protocol Daemon (HTTPD). Oba są złożone i stosunkowo niedojrzałe. Na przykład nie identyfikują automatycznie źródła danych wejściowych. Rozważ formularz HTML na stronie internetowej, zaprojektowany tak, aby był prezentowany odwiedzającemu witrynę, który wypełnia pola, a następnie klika przycisk, aby przesłać formularz. Po stronie klienta nie ma nic, co mogłoby kontrolować dane wejściowe użytkownika. Zamiast wpisywać imię w polu Imię, użytkownik może wprowadzić długi ciąg losowych znaków. O ile aplikacja przetwarzająca to pole danych nie dokona szeroko zakrojonej weryfikacji danych wejściowych, skutki takich działań mogą być nieprzewidywalne, tym bardziej, że użytkownik zawiera znaki sterujące. Podobnie, jeśli sam serwer WWW nie jest zaprojektowany do sprawdzania poprawności żądań stron, użytkownik może powodować problemy, przesyłając fałszywy Universal Resource Locator (URL). Problem jest jeszcze poważniejszy. O ile aplikacja serwera sieci Web nie jest napisana specjalnie w celu pokonania następujących nadużyć, można jej użyć do spowodowania różnego rodzaju problemów, które potencjalnie mogą doprowadzić do udanej penetracji. Załóżmy, że zamiast po prostu wypełnić formularz, użytkownik tworzy lokalną kopię strony zawierającej formularz, a następnie zmienia kod źródłowy formularza, zapisuje plik i przesyła go do witryny internetowej zamiast oryginalnej strony. Nie narusza to podstawowych protokołów sieci, ale wyraźnie zapewnia znaczny potencjał penetracji. Wiele stron internetowych jest nadal podatnych na tego typu ataki.

Wykorzystanie sprawdzania poprawności danych wejściowych.

Ilekroć tworzona jest dozwolona ścieżka dostosowana do danych wejściowych użytkownika, istnieje możliwość, że zostanie ona wykorzystana. Takie nadużycie może prowadzić do nieautoryzowanego dostępu do systemu. W tej sekcji opisano szereg metod penetracji wykorzystujących to podejście, z których wszystkie w jakiś sposób wykorzystują nieprawidłowe dane wejściowe lub dane wejściowe:

  • Nie oczekuje tego aplikacja odbierająca na serwerze.
  • Niedozwolone zgodnie z zasadami działania aplikacji odbierającej.

 

Architektura systemu sieciowego

Standardową praktyką przy umieszczaniu komercyjnej witryny internetowej w Internecie jest zapobieganie jej wrogim działaniom, zwykle przy użyciu routera z listami kontroli dostępu (ACL) lub zapory ogniowej, lub obu. Jednakże, chyba że strona internetowa jest podstawowym rodzajem „broszurki”, która po prostu istnieje w celu dostarczania informacji tylko do odczytu, witryna musi umożliwiać wprowadzanie danych przez użytkownika. Wymagane jest podanie czegoś tak prostego, jak wpis do księgi gości lub formularz zapytania o informacje; bardziej złożone aplikacje, takie jak zakupy online, mają bardziej złożone wymagania dotyczące wprowadzania danych. Typową metodą przetwarzania danych wejściowych jest interfejs Common Gateway Interface (CGI). Jest to standardowy sposób, w jaki serwer WWW przekazuje dane wejściowe użytkownika do aplikacji i odbiera odpowiedź, którą można następnie przekazać użytkownikowi. Na przykład, gdy użytkownik wypełnia formularz na stronie internetowej i przesyła go, serwer sieciowy zwykle przekazuje informacje o formularzu do małej aplikacji. Ta aplikacja przetwarza dane i może wysłać wiadomość z potwierdzeniem. Ta metoda nosi nazwę CGI i stanowi część protokołu przesyłania hipertekstu (HTTP). Ponieważ jest to spójna metoda, aplikacje napisane w celu jej wykorzystania mogą być używane bez względu na system operacyjny serwera, na którym jest wdrożony. Dodatkowym czynnikiem zwiększającym popularność CGI jest fakt, że działa on z wieloma różnymi językami, w tym C, C ++, Java i PERL. Termin „CGI” jest używany ogólnie dla kodu serwera WWW napisanego w jednym z tych języków. Każdy system, który odbiera dane wejściowe, musi zapewnić ścieżkę w systemie, przez którą dane wejściowe mogą przepływać. Jest to określane jako „dozwolona ścieżka”. Konieczność dozwolonych ścieżek, w połączeniu z możliwością wykorzystania ich do ataków penetracyjnych, skłoniła eksperta ds. Bezpieczeństwa systemu Davida Brussina do określenia terminu „podatność na dozwolone ścieżki” dla tej klasy podatności. Dwie wiodące kategorie exploitów, które wykorzystują dozwolone ścieżki, to exploity sprawdzania poprawności danych wejściowych, które są podobne do exploitów przepełnienia bufora i często wykorzystywane do nadużywania CGI oraz exploitów systemu plików, które nadużywają systemu operacyjnego serwera i usług działających na serwerze. Oczywiście istnieją również inne sposoby nadużywania stron internetowych. Ataki typu „odmowa usługi” mogą służyć do blokowania legalnego dostępu, a tym samym do ograniczania dostępności. Nie każdy atak ma na celu dalszą penetrację systemów; same strony internetowe mogą być celem ataku, jak w przypadku zniesienia, nieautoryzowanej zmiany na stronach internetowych. Defacement często ma na celu zawstydzić właściciela strony, opublikować wiadomość protestacyjną lub poprawić reputację hakera kryminalnego, który dokonuje deflacji. Jednak jeśli chodzi o penetrację, głównym celem ataków na strony internetowe jest narażenie na szwank wewnętrznych sieci, które mogą być podłączone do serwera WWW. Wykorzystanie luk w dozwolonych ścieżkach jest prawdopodobnie najczęstszą formą takich ataków.

Penetracja za pośrednictwem stron internetowych.

Ogromne nowe terytorium sieciowe otworzyło się w ostatniej dekadzie XX wieku, częściowo poświęcone handlowi i w dużej mierze napędzane próbami zarabiania pieniędzy na technologii, która pierwotnie została opracowana do celów wojskowych i akademickich. Nieustanny rozwój tej sieci przekroczył 145 milionów zarejestrowanych domen w momencie pisania w maju 2013 r., Jak donosi Whois Source (www.whois.sc/internet-statistics), jedno z najbardziej wiarygodnych źródeł statystyk na temat Internetu. Penetracja Internetu na całym świecie, mierzona jako liczba użytkowników Internetu jako odsetek całkowitej populacji, wyniosła w czerwcu 2012 r. Ponad jedną trzecią, przy czym Ameryka Północna przekroczyła 75 procent. 14 Azja miała wówczas prawie 4 miliardy użytkowników. Nic dziwnego, że przy tak wielu maszynach w jednej sieci i ponad 2,4 miliarda użytkowników (dwa razy więcej niż odnotowano w piątej edycji tego podręcznika w 2009 r.), To nowe terytorium jest głównym placem zabaw dla hakerów, od zwykłych ciekawskich po poważnych przestępców. Sieć stanowi bogate w cel środowisko dla osób poszukujących nieautoryzowanego dostępu do systemów informacyjnych innych osób. Jest tego kilka przyczyn; Najważniejszym z nich jest fakt, że wiele organizacji, zarówno komercyjnych, jak i rządowych – w tym wojskowych – ma zewnętrzne, publiczne strony internetowe, które są w jakiś sposób połączone z wewnętrznymi, prywatnymi sieciami. To połączenie zapewnia ścieżkę penetracji systemu, którą można wykorzystać na wiele różnych sposobów, zgodnie z opisem w tej sekcji.

Back doors

Narzędzia tylnych drzwi są często powiązane z programami, które zostały trojanowane. Służą do uzyskania dostępu do systemu, gdy zawiodą inne metody. Nawet jeśli administrator systemu wykrył wtargnięcie i zmienił wszystkie nazwy użytkowników i hasła, istnieje duża szansa, że ​​nie wie on o istnieniu tylnych drzwi. Aby skorzystać z tylnych drzwi, haker musi tylko znać właściwy port, aby połączyć się z zainfekowaną maszyną i wprowadzić hasło lub polecenie, w którym zwykle nie jest wprowadzane.

Na przykład inetd, super-demon sieci, jest często trojanem. Demon nasłuchuje na nietypowym porcie (domyślnie rfe, port 5002 w Rootkit IV dla Linuksa). Jeśli poprawne hasło zostanie podane po połączeniu, powłoka root zostanie odrodzona i powiązana z portem. Funkcję rshd można podobnie trojanować, dzięki czemu powłoka root jest spawnowana, gdy hasło rootkita jest podane jako nazwa użytkownika, a zatem rsh [nazwa hosta] –l [hasło rootkita] uzyska dostęp do zainfekowanego komputera.a

Kod Trojana

Jak opisano wcześniej w kontekście zaatakowanych procedur logowania, kod trojana jest czymś innym niż się wydaje. W tym przypadku trojany to zmienione programy w rootkicie, które pozwalają ukryć ślady intruza lub pozwolić programowi na zebranie większej ilości informacji, gdy siedzi on w tle. Trojanowane programy lokalne często zawierają „chfn”, „chsh”, „login” i „passwd”. W każdym przypadku, jeśli hasło rootkita zostanie wprowadzone w odpowiednim miejscu, spawnowana jest powłoka roota.

Rootkity

Rootkity to jedno z wielu narzędzi dostępnych hakerom, które ukrywają fakt, że komputer został „zrootowany”. Rootkit nie służy do włamania się do systemu, ale raczej do zapewnienia, że ​​włamany system pozostaje dostępny dla intruza. Rootkity składają się z pakietu narzędzi zainstalowanych na zaatakowanym komputerze. Narzędzia zaczynają się od modyfikacji najbardziej podstawowych i najczęściej używanych programów, aby podejrzana aktywność została ukryta. Na przykład rootkit często zmienia proste polecenia, takie jak „ls” (pliki list). Zmodyfikowane „ls” z rootkita nie wyświetla plików ani katalogów, które intruz chce ukryć. Rootkity są niezwykle trudne do wykrycia, ponieważ polecenia i programy wydają się działać jak poprzednio. Często rootkit jest znaleziony, ponieważ coś „nie wydawało się właściwe”

administrator systemu. Ponieważ rootkity różnią się znacznie w programach, które zmieniają, nie można stwierdzić, które programy zostały zmienione, a które nie. Bez kryptograficznie bezpiecznego podpisu każdego systemu plików binarnych administrator nie może być z pewnością znalazłem cały rootkit. Niektóre z typowych narzędzi zawartych w rootkicie to:

* Narzędzia koni trojańskich

* Tylne drzwi, które pozwalają hakerowi na wejście do systemu do woli

* Narzędzia do czyszczenia dzienników, które usuwają rekord dostępu atakującego z systemowych plików dziennika

* Sniffery pakietów, które przechwytują ruch sieciowy dla atakującego