Przy dzisiejszym poziomie informatyzacji atakujący nie mają problemu z wyszukaniem odpowiednich firm do przeprowadzenia ataku. Jedna niezaktualizowana usługa na serwerze daje możliwość zainstalowania backdoora lub przeniknięcia do zasobów wewnętrznych organizacji. Błędna konfiguracja aplikacji i atakujący może atakować nie tylko firmę, ale również użytkowników korzystających z jej zasobów.

Aby upewnić się, że nasza firma lub aplikacja jest odpowiednio zabezpieczona przed takimi cyberatakami, należy przeprowadzić symulowany atak, tak zwane testy penetracyjne. Wykonując takie testy, staramy się określić rzeczywisty poziom bezpieczeństwa infrastruktury bądź aplikacji. Najczęściej wykonywanie są testy infrastruktury oraz testy aplikacji webowych.

Testy infrastruktury

Przy przeprowadzaniu testów penetracyjnych infrastruktury wewnętrznej danej firmy bardzo popularne są dwa scenariusze: Black Box i tzw. zły pracownik.

W scenariuszu Black Box atakujący posiada tylko i wyłącznie informację o zakresie i celach przeprowadzanych testów, najczęściej są to zakresy podsieci. Atakujący nie wie, jakie i do czego wykorzystywane są urządzenia będące przedmiotem testu, oraz nie posiada żadnych danych logowania do usług znajdujących się w zakresie. Jest to najbardziej czasochłonny wariant, ale również najlepiej odzwierciedlający prawdziwy atak. Pozwala ustalić słabe strony testowanego środowiska i zdiagnozować między innymi błędy konfiguracyjne oraz brakujące aktualizacje dla danych systemów.

Drugim popularnym scenariuszem jest „Zły pracownik”, w którym testujący otrzymuje dostępy odpowiadające tym, które posiada zwykły pracownik, i z tego punktu stara się zbadać, czy pracownik ma takie uprawnienia, jakie faktycznie zakładamy, i nie ma dostępu do zasobów, do których nie powinien mieć. Najczęściej spotykanym błędem jest brak zastosowania odpowiednich protokołów przy transmisji danych. W przypadku nieprawidłowej konfiguracji urządzeń sieciowych możliwe jest łatwe podszycie się pod innego użytkownika sieci. Przy wcześniej wspomnianym scenariuszu ze złym pracownikiem możemy, za pomocą tego ataku, przekierować ruch sieciowy przez komputer atakującego, dzięki czemu jesteśmy w stanie bez przeszkód przechwytywać niezabezpieczoną komunikację i odczytywać dane, które użytkownik podał przy logowaniu do niezabezpieczonych paneli logowania. Jeśli celem jest administrator, który używa takiego samego loginu i hasła jako poświadczeń domenowych, jesteśmy w stanie nie tylko przejąć kontrolę nad systemami, ale również podszywać się pod daną osobę, chociażby z wykorzystaniem maila lub komunikatora.

Atak na firmę nie musi pochodzić z wewnątrz, może on również nadejść z zewnątrz organizacji. Głównym przedmiotem takich testów są tak zwane miejsca stykowe, czyli takie, które łączą naszą firmę i resztę Internetu. Są to bariery, których przełamanie może doprowadzić do przeniknięcia atakującego do naszej infrastruktury wewnętrznej oraz umożliwia sprawdzenie, czy dane usługi są dostępne z Internetu. Atakujący jest w stanie stwierdzić, jakie domeny są zarejestrowane dla naszej organizacji, i na tej podstawie przeprowadzić atak.

Przy tego typu atakach wykorzystuje się publicznie dostępne informacje i narzędzia. W tym przypadku nie będziemy w stanie zareagować na etapie pozyskiwania informacji o naszej infrastrukturze. Na podstawie skrupulatnie zebranych informacji nasz system zostanie bezlitośnie sprawdzony, czy jest odporny na potencjalny atak. Głównymi zagrożeniami są tutaj niezaktualizowane systemy, usługi, błędna konfiguracja oraz nieodpowiednio zabezpieczone wszelkie panele logowania.

Pentesty oprogramowania

Testy penetracyjne aplikacji webowych co do zasady są bardzo czasochłonne. Praktycznie każda aplikacja posiada kilkanaście pól, w których użytkownik może wprowadzać dane. Przy niewłaściwym zabezpieczeniu każde z tych pól staje się celem dla atakującego. Zakres testów oprogramowania obejmuje każdy aspekt aplikacji, włączając w to sprawdzenie konfiguracji serwera, na którym dana aplikacja jest wystawiana, oraz wszystkie usługi, które na nim działają.

Może zaistnieć sytuacja, w której jedna niezaktualizowana usługa na serwerze umożliwia atak na sam serwer lub aplikację. Wszystkie parametry wprowadzane przez użytkownika są szczegółowo sprawdzane pod kątem wykorzystania przez atakującego. Błędy przy tworzeniu aplikacji mogą umożliwić napastnikowi wstrzyknięcie do niej dowolnego kodu. Napastnik może być  w stanie realizować instrukcje SQL w celu zrzutu zawartości bazy danych.

Rafał Grześkowiak, Lider Zespołu Projektów IT

Pentesty aplikacji

Poczta elektroniczna, system finansowo-księgowy, firmowy serwis internetowy, CRM, sklep internetowy, serwer plików, system płacowy, system ERP i wiele, wiele innych. Te narzędzia są wykorzystywane w każdej organizacji, również u Państwa. Przechowują, przetwarzają i raportują kluczowe dane, pozwalają na komunikację wewnętrzną i zewnętrzną oraz utrzymanie ciągłości produkcji, usług czy rozliczeń z kontrahentami. Trudno sobie wyobrazić prowadzenie biznesu bez wsparcia systemów IT, prawda? Czy Państwa biznes rozumie konsekwencje czasowej niedostępności kluczowych aplikacji? Co się stanie, jeśli ta niedostępność okaże się permanentna? Jakie będą konsekwencje wycieku danych finansowych lub osobowych?

Medialne informacje o spektakularnych cyberatakach przedstawiają jedynie ułamek rzeczywistej skali problemu. Większość skutecznych ataków pozostaje tajemnicą organizacji, którą dzielą się one co najwyżej z wąskim gronem zewnętrznych konsultantów i służbami państwowymi. Straty spowodowane atakiem sięgające setek tysięcy czy milionów złotych to niemal codzienność w polskich firmach. Ryzyko cyberataku musi być zatem bardzo poważnie brane pod uwagę przy zarządzaniu organizacją, jako zagrożenie mogące negatywnie oddziaływać na całość biznesu, a nie tylko na obszar IT.

Znakomitą pomocą przy przeciwdziałaniu atakom są testy penetracyjne aplikacji, dzięki którym można w kontrolowany sposób zidentyfikować luki bezpieczeństwa najważniejszych systemów. Statystycznie większość takich testów ujawnia różnego rodzaju zagrożenia dla bezpieczeństwa przetwarzanych danych. Jednocześnie w wielu przypadkach ich wyeliminowanie jest stosunkowo łatwe i tanie.

Cykliczne testy penetracyjne są jednym z wymagań zawartych w normach z zakresu bezpieczeństwa, a także coraz częściej są oczekiwane w relacjach biznesowych, m.in. przez klientów firm tworzących oprogramowanie lub aplikacje webowe.

Rafał Grześkowiak, Lider Zespołu Projektów IT

Nie tylko sama aplikacja, baza danych czy też serwer, na którym jest wystawiana, może stać się celem ataku, ale również użytkownicy, którzy z niej korzystają. Przykładem takiego ataku jest XSS (cross-site scripting). Polega on na wstrzyknięciu fragmentu kodu JavaScript, który może być uruchomiony w przeglądarce ofiary. Za pomocą takiego ataku atakujący jest w stanie przejąć sesję, a nawet przy odpowiednio napisanym skrypcie, uzyskać możliwość śledzenia naciśnięć klawiszy użytkownika.

Przedstawiliśmy wybrane przykładny podatności, jakie spotykamy przy testowaniu aplikacji. Każda aplikacja jest unikatowa, korzysta z innych technologii, ma inne zastosowanie i inne funkcjonalności, które zostały zaimplementowane, a zatem posiada inne słabe punkty.

Testy penetracyjne w realny sposób przyczyniają się do podniesienia bezpieczeństwa. Pozwalają zobaczyć aplikację czy infrastrukturę oczami atakującego. Kompleksowy raport z działań pentestera pozwoli odpowiedzieć na pytania, których nie możemy zadać prawdziwemu napastnikowi – gdzie była luka, której użył, oraz jakie działania należy podjąć, aby ją wyeliminować.