Autorem tekstu jest Jerzy Patraszewski, administrator systemów w Hostersi. Co rusz docierają do nas informacje o atakach hakerskich. Przy tej okazj...
Jak chronić systemy przed hakerami i czy testy bezpieczeństwa są skuteczne
Autorem tekstu jest Jerzy Patraszewski, administrator systemów w Hostersi.
Co rusz docierają do nas informacje o atakach hakerskich. Przy tej okazji spece od IT radzą nam, że należy dbać o bezpieczeństwo systemów i danych. Na co konkretnie powinniśmy zwrócić uwagę? Czy polecane testy bezpieczeństwa są skuteczną ochroną przed cyberwłamaniem?
W ogromnej większości przypadków hakerzy wykorzystują wciąż znane luki w systemach. Bardzo rzadko zdarzają się włamania przy użyciu jakichś wyrafinowanych metod. W zdecydowanej większości przestępcy wolą polegać na sprawdzonych już „dziurach”, głównie w zachowaniu nas samych – użytkowników sieci Internet. Wyjątkiem są tzw. APT (Advanced Persistant Threat), czyli grupy wysoko wykwalifikowanych i dobrze opłacanych specjalistów od włamań do systemów informatycznych, z reguły sponsorowane przez organizacje rządowe. Mimo, że ich dokonania są bardzo spektakularne (np. ataki na Google'a, RSA, agencje rządowe itd.), to stanowią zaledwie ułamek wszystkich przestępstw.
Aby ochronić się przed cyberatakami, wcale nie trzeba być specjalistą od zabezpieczeń IT. W mojej opinii, powszechne stosowanie przez programistów dobrych praktyk bezpiecznego tworzenia kodu, odpowiedzialne podejście administratorów do problemów bezpieczeństwa IT i zdroworozsądkowe podejście do surfowania w Internecie przez użytkowników końcowych – skutecznie i znacząco ograniczyłoby działalność przestępczą.
Dobre i bezpieczne praktyki
Niestety, rzeczywistość pokazuje, że bezpieczeństwo nie jest na stałe wpisane w proces tworzenia oprogramowania. Traktowane jest po macoszemu, jako zbędny etap finalizacji projektu, gdyż nie przynosi bezpośredniego zysku dla programisty, a angażuje dodatkowe zasoby i wpływa na termin realizacji zlecenia. Z kolei grzechem głównym administratorów jest nie przywiązywanie wagi do danych przechowywanych w ramach zarządzanych przez nich zasobów. Zbyt często da się słyszeć opinie w stylu: „Włamania to się zdarzają jakimś bankom! U mnie nie ma nic co, by mogło hakera zainteresować!”. W rezultacie nie ma żadnych polityk zabezpieczania systemów, czy chociażby ich aktualizacji. Czynności administracyjne wykonywane są „ad-hoc” – jak się komuś coś przypomni, a nie są częścią sformalizowanego procesu utrzymania infrastruktury.
Wreszcie użytkownicy końcowi – niby „nie techniczni”. Uważam jednak, że przy obecnym poziomie informatyzacji społeczeństwa, każdy posiada przynajmniej elementarną wiedzę komputerową. Zupełnie nieodpowiedzialne i niezrozumiałe są więc dla mnie praktyki wyłączania automatycznych aktualizacji systemów, brak antywirusa, klikanie „OK” na każdym wyskakującym okienku, czytanie i (co gorsza!) odpowiadanie na wiadomości typu spam. Bezkrytyczne ściąganie oprogramowania z Sieci również nie jest najlepszą praktykę. A jak już ktoś decyduje się na „piracenie”, to przynajmniej niech przeskanuje pobrane pliki programem antywirusowym.
Podsumowując, akceptowalny poziom zabezpieczeń może zostać osiągnięty bez specjalnych umiejętności technicznych. W przypadku użytkowników „domowych” wystarczy wykazać odrobinę zainteresowania tą tematyką, a w przypadku „profesjonalistów” – zagadnienia bezpieczeństwa należy wpisać jako obowiązkowy element procesów codziennych czynności.
Badaj stan bezpieczeństwa
Bezpieczeństwo jest ciągłym procesem, który musi podlegać ciągłej weryfikacji. Coś co jest dzisiaj bezpieczne, jutro może okazać się „dziurawe”… I umiejętnie wykorzystują to hakerzy. Stąd warto regularnie badać użytkowane przez nas systemy pod kątem ich podatności na ataki. Wcale nie trzeba być specjalistą w tej dziedzinie, bo obecnie dostępnych jest wiele narzędzi (darmowych i płatnych) potrafiących wykonać skanowanie aplikacji i usług systemowych pod kątem występowania znanych podatności. Narzędzia te umożliwiają samodzielne wykonanie podstawowego testu bezpieczeństwa, przy relatywnie niewielkiej wiedzy technicznej.
Jeśli jednak od stopnia zabezpieczenia ma zależeć nasze „być albo nie być” (np. jeśli prowadzimy sklep internetowy, chcemy zachować poufność danych klientów lub kontrahentów, albo też zobligowani jesteśmy do ochrony danych przepisami prawa), to musimy pamiętać, że test bezpieczeństwa wykonany za pomocą gotowych narzędzi jest absolutnie niewystarczający. Nie wyobrażam sobie profesjonalnych testów bezpieczeństwa bez kompleksowego zrozumienia różnych dziedzin technologii informacyjnych. Wykonane amatorsko testy są jak najbardziej przydatne do zastosowań „domowych” i potrafią wskazać ewidentne błędy z gatunku „low-hanging fruit”, nie zastąpią one serii testów wykonywanych kompleksowo przez zawodowego pen-testera.
„Czarna skrzynka”
Zasadniczo wyróżniamy dwa typy profesjonalnych testów bezpieczeństwa. Pierwszy to „black-box”, charakteryzujący się tym, że przed rozpoczęciem swoich prac tester nie posiada wiedzy dotyczącej analizowanego systemu. Zazwyczaj otrzymuje jedynie nazwę firmy lub zakres adresów IP. Test taki symuluje typowe działania hakera, nie znającego środowiska (systemów operacyjnych, działających w systemie usług i aplikacji, topologii sieci itp.). „Czarna skrzynka” jest więc najbardziej skutecznym i efektywnym rodzajem profesjonalnego testu bezpieczeństwa.
Drugim typem są testy „white-box”, gdzie atakujący (tester) otrzymuje szczegółowe informacje dotyczące badanego systemu (np. modele urządzeń sieciowych, wersje serwerów webowych, aplikacji, systemów operacyjnych, rodzaje baz danych, typy zastosowanych ścian ogniowych itp.). Ten typ testów pozwala na przeprowadzenie ataku odzwierciedlającego czynności wykonywane przez napastnika posiadającego szeroką wiedzę na temat celu ataku (np. Advanced Persistant Threat, włamania dokonywane przez byłych pracowników itp.).
Standardowo test penetracyjny składa się z kilku etapów. Niezależnie od posiadanej wiedzy (a więc rodzaju testu), pierwszą czynnością jest zgromadzenie i analiza informacji dotyczących celu ataku. Etap nazywany rekonesansem powinien dostarczyć maksimum informacji pozwalających na precyzyjne wykonanie dalszych czynności. Możliwe jest uzyskanie adresów IP, domen, schematów nazywania hostów (na podstawie zapytań DNS), serwerów poczty, schematów adresów mailowych itp. Niejednokrotnie już na tym etapie można określić precyzyjnie poufne informacje. Przykładowo, jeśli na podstawie zapytania do Google'a zostanie zwrócony nam dokument Word zawierający w metadanych ścieżkę „C:\Documents and Settings\jannow\Desktop\...”, to tylko z tej informacji możemy wywnioskować, że na stacji klienckiej używany jest system Windows, najprawdopodobniej w wersji XP oraz znamy już jeden login („jannow”).
Badanie w kilku etapach
W kolejnym kroku następuje próba identyfikacji aplikacji, usług i systemów operacyjnych – tzw. fingerprinting lub footprinting. Stosowane są różne techniki pasywne i aktywne. Następnie wykonywane jest mapowania sieci, którego efektem jest kompleksowa informacja dotycząca firewalli, urządzeń sieciowych, systemów IDS, stosowanej adresacji IP, topologii sieci oraz informacji o dostawcach usług internetowych (ISP). Następną fazą testów bezpieczeństwa jest skanowanie portów i identyfikacja usług oraz próba ominięcia zabezpieczeń firewalla.
Kiedy już tester uzyska dostęp do systemu, może rozpocząć zautomatyzowane badanie, którego celem jest zidentyfikowanie i zweryfikowanie słabości, nieprawidłowych konfiguracji i podatności związanych z badanym systemem. Automatyzacja tego procesu pozwala na efektywne czasowo przeprowadzenie testów, których wykonanie w sposób manualny byłoby niemożliwe z uwagi na ilość znanych luk (przykładowo, dla samego serwera Apache znanych jest 213 podatności, wg CVE-Mitre).
Kolejną, i jednocześnie najważniejszą, fazą testów bezpieczeństwa jest wykonywanie prób wykorzystania znalezionych podatności. To właśnie teraz odbywają się próby użycia publicznie znanych, własnych lub zmodyfikowanych „exploitów” na uprzedniozidentyfikowanych usługach. Również teraz badane jest bezpieczeństwo aplikacji webowych – ataki XSS (Cross-Site Scripting), CSRF (Cross Site Request Forgery), SQL Injection czy MiTM (Man-in The-Middle) itp. Celem jest uzyskanie dostępu do atakowanego systemu, ujawnienie ukrytych lub poufnych informacji, przejęcie kontroli nad domeną (tzw. domain hijacking) czy webową częścią systemu. Udane przeprowadzenie tej fazy może otworzyć dostęp w głąb infrastruktury, aż w końcu atakujący (tester) przejmuje całkowitą kontrolę nad systemem.
Ważne, nie tylko dla IT
Zwieńczeniem testów bezpieczeństwa jest raport, w którym opisane zostaną wszystkie wykryte podatności systemu na ataki (luki bezpieczeństwa), często wzbogacone o zalecenia bezpieczeństwa. Ważną częścią raportu powinna być również ocena wpływu ujawnionych nieprawidłowości na działalność biznesową – czyli określenie stopnia ryzyka biznesowego, w przypadku ataku wykorzystującego wykrytą „dziurę” w systemie.
Kompleksowe przeprowadzenie testów bezpieczeństwa jest procesem dość złożonym. Pen-tester musi wykazać się szeroką wiedzą na temat każdego aspektu szeroko rozumianego bezpieczeństwa IT. Można oczywiście skupić się na wybranym fragmencie, badając przykładowo wyłącznie bezpieczeństwo aplikacji webowych, jednak trzeba mieć świadomość ograniczeń wynikających z takiej decyzji.
System IT to złożone środowisko, w którym zachodzą skomplikowane interakcje pomiędzy jego poszczególnymi elementami. Systemy kontroli dostępu, kryptografia, telekomunikacja i sieciowość, aplikacje i procesy ich tworzenia, architektura systemów czy bezpieczeństwo fizyczne przeplatają się z procesami biznesowymi, zarządzaniem ryzykiem i ciągłością działania oraz obowiązującymi regulacjami prawnymi. Pen-tester powinien mieć świadomość i odpowiednią wiedzę pozwalającą na oszacowanie wpływu potencjalnych luk w bezpieczeństwie pojedynczego elementu na cały ten organizm.
AUTOR: Jerzy sm0q Patraszewski, Hostersi
Certyfikowany specjalista bezpieczeństwa systemów informatycznych (CISSP, administrator systemów w Hostersi Sp. z o.o.).
Hej, jesteśmy na Google News - Obserwuj to, co ważne w techu