Wiedza dedykowana Tobie
bezpieczeństwo stron www

Bezpieczeństwo stron internetowych, jak monitorować oraz weryfikować infekcje?

03 kwietnia 2019

Tworzenie stron WWW wydaje się prostą dziedziną, szczególnie patrząc na ilość dostępnych kreatorów dynamicznych stron czy wtyczek takich jak Elementary do WordPress, czy faktu ogólnodostępnej wiedzy w tej dziedzinie. O tym, dlaczego tworzenie stron WWW nie jest wcale tak proste i przyjemne opowiada Paweł Otlewski. 


Tworzenie stron WWW możemy porównać do zakupu samochodu. Mogłoby się wydawać, że zakup samochodu to proste zadanie. Szybko jednak pojawiają się pytania JAKI właściwie powinien być ten idealny samochód. Jak duży, w jakiej cenie, do jakich zastosowań? Starszej osobie używającej pojazdu tylko do zakupów, samochód sportowy lub terenowy z napędem 4×4 jest raczej zbędny… O podobnych zależnościach możemy mówić w przypadku stron internetowych. Dlatego świadomość tego, jak powinna funkcjonować nasza strona WWW jest bardzo ważna. To determinuje dalsze działanie. Wpływa na wybór firmy, która taką stronę WWW wykona bądź kieruje ku innym rozwiązaniom. W niektórych wypadkach lepszym wyjściem będzie dostosowanie gotowej platformy (np.: WordPress) do konkretnych zastosowań takich jak: sprzedaż w Internecie lub system ERP, w innych konieczne może okazać się dedykowane rozwiązanie szyte na miarę.


Nie ma oprogramowania bez wad…

I o ile w przypadku stron typu wizytówka czy blog – bezpieczeństwo nie jest już tym aspektem numer 1, gdyż zazwyczaj są to już strony tanie i wyjątkowo proste, to tak w przypadku sklepów – bezpieczeństwo naszego klienta powinno być na pierwszym miejscu. Nie ma oprogramowania bez wad, bez błędów i miejsc, gdzie coś można poprawić. Zbyt często są pomijane zabezpieczenia takie jak SQL Injection (pozwalające wykonać coś w bazie danych i mogące narazić nas na wyciek danych – szczególnie po wprowadzeniu RODO, warto na to zwrócić uwagę), ataki typu XSS (wykonanie coś na stronie, mogące np.: uruchomić kod JavaScript po stronie użytkowników strony), Content Spoofing (np.: wykorzystanie wyszukiwarki, podmieniając wartości i tym samym zdobyć przydatne informacje), czy RCE – Remote Code Execution (moim zdaniem najgroźniejsze, gdyż pozwala na wykonanie kodu po stronie serwera – czyt. Malware/wirus).


Konsekwencje

I o ile w przypadku stron typu wizytówka czy blog – bezpieczeństwo nie zawsze jest aspektem numer 1, to w przypadku sklepów – bezpieczeństwo naszego klienta musi być kwestią priorytetową. Nie ma oprogramowania bez wad, bez błędów i miejsc, gdzie coś można poprawić.

Zbyt często pomijane są zabezpieczenia takie jak SQL Injection, pozwalające wykonać coś w bazie danych i mogące narazić nas na wyciek. Na ten aspekt warto zwrócić szczególną uwagę zwłaszcza po wprowadzeniu RODO. Ataki typu XSS (wykonanie coś na stronie, mogące np.: uruchomić kod JavaScript po stronie użytkowników strony), Content Spoofing (np.: wykorzystanie wyszukiwarki, podmieniając wartości i tym samym zdobyć przydatne informacje), czy RCE – Remote Code Execution (moim zdaniem najgroźniejsze, gdyż pozwala na wykonanie kodu po stronie serwera – czyt. Malware/wirus).

Większość firm tworzących oprogramowanie nie testuje bezpieczeństwa swoich aplikacji, co widzę niemal codziennie w swojej pracy. Na jednej z moich prywatnych stron mam utworzony specjalny honeypot (taka pułapka), który codziennie odnotowuje kilkanaście prób włamania, wykorzystania różnego typu podatności, przesyłania zainfekowanych plików na serwer i prób odwołania się do tego pliku przez atakującego i wiele innych ciekawych ataków. Miałem kilkaset zapisów o takich atakach każdego dnia, więc zdobyłem sporą ilość przydatnych informacji, które też wykorzystałem do napisania tego artykułu.


Dane osobowe i dane płatnicze 

Dlaczego w takim razie atakowane są strony WWW? Atak na witrynę dużej, międzynarodowej firmy może być wynikiem np. protestu niezadowolonych klientów, ale czemu małe sklepy internetowe padają ofiarą cyberprzestępców? Odpowiedź jest prosta. Przede wszystkim do zdobywania danych osobowych i danych płatniczych, które stanowią dość szybki zarobek. Oprócz tego celem ataków może być coraz popularniejsze Black Hat SEO, wysyłki spamu oraz, w przypadku serwerów, tworzenie botneta.


Monitoring strony – czy już mnie zainfekowano?

Bardzo popularne jest podejście właścicieli stron, szczególnie osób nietechnicznych – skoro działa, po co ruszać, a monitorowanie strony na infekcje jest banalnie proste i pozwoli nam uniknąć przykrych konsekwencji swojej ignorancji. Istnieją gotowe rozwiązania, które bez problemu można polecić, jednakże ja lubię stawiać na proste rozwiązania, a takim w przypadku serwerów są:

  • http://aide.sourceforge.net/, gdzie możemy sprawdzić integralność plików i na bieżąco mieć informacje o zmianach w plikach, a pozwoli nam to wykryć wszelkie zmiany na serwerze.

Są również rozwiązania, które można wykorzystać przykładowo na hostingu, na przykładzie najpopularniejszego CMS’a, czyli WordPress’a, może polecić:

  • Sucuri (https://pl.wordpress.org/plugins/sucuri-scanner/)
  • Cerber (https://pl.wordpress.org/plugins/wp-cerber/)

Niestety, są to rozwiązania po stronie aplikacji i to aplikacja sprawdza poprawność plików i wykrywa zmiany w plikach, jednak na pewno to lepsza opcja niż pozostawienie strony samej sobie, szczególnie gdy korzystamy z hostingu współdzielonego.

Tak samo można wykrywać zmiany w bazie i je po prostu śledzić. Dzisiaj eksportujemy bazę, jutro eksportujemy bazę, porównujemy różnice. Jeśli tych danych jest sporo – warto to zautomatyzować i przygotować sposób wykrywania anomalii (tutaj do pomocy przychodzi np.: ELK Stack, chociaż to dosyć spore narzędzie i niezbyt nadaje się na zwykłe, małe sklepy).


Te sposoby monitoringu stron pod kątem infekcji to podstawowe, najprostsze rozwiązania, jednak większość jest trudna w przygotowaniu dla właścicieli małych stron (pomijając temat gotowych wtyczek do stron). Jednak dobry hosting sam przychodzi z pomocą. Niejednokrotnie się zdarzyło, że strona została zablokowana za infekcje na jakimś hostingu i właściciel strony nie miał pretensji do twórcy strony, do firmy, czy do siebie o swoje zaniedbania o własny interes. Mieli pretensje do hostingu, który zadbał o bezpieczeństwo użytkowników strony. Wsparcie techniczne hostingu też zazwyczaj wykonuje skan antywirusowy strony i przesyła wyniki, które pozwolą na szybsze wyleczenie strony. Jednak nawet “profesjonalne” firmy uważają dalej, że skoro jest infekcja, to wystarczy usunąć zainfekowane pliki i zaktualizować stronę. To nie jest rozwiązanie. Trzeba sprawdzić co mogło spowodować infekcję i czy to się powtórzy?


Mam wirusa – i co teraz? Jakie kroki podjąć?

Tutaj właśnie dochodzimy do trzeciej części tematu – już mam wirus na stronie i co dalej? Jak mogę uratować swoją stronę i zabezpieczyć ją na przyszłość? Skoro już mamy infekcję na stronie, warto byłoby ją usunąć i zabezpieczyć aplikację, by w przyszłości uniknąć podobnych sytuacji. Tutaj pomoże na pewno antywirus. Dobrym rozwiązaniem jest https://www.clamav.net/ wraz z gotowymi sygnaturami wirusów (lub co polecam dużym firmom IT – własnymi sygnaturami, zbieranymi przez lata swojej działalności). Raczej większość hostingów korzysta z tego rozwiązania, pomaga w znalezieniu infekcji, a gdy już mamy konkretne pliki – warto je poddać analizie. Dzięki takiej analizie będziemy mogli zrozumieć, co infekcja miała za zadanie i jakie kolejne kroki należy podjąć. Zależnie od wyników, warto spojrzeć, co się w bazie zmieniło albo co się stało z wysłaną korespondencją przez stronę. Może hasła były gdzieś wysyłane?


Duża część infekcji z którymi miałem styczność, była w formie kodowanej, gdzie kod nie był jawny, ale też nie sprawia dużego problemu w “deszyfracji”. Warto mieć na uwadze, że przykładowa funkcja eval() jest często wykorzystywana, dlatego należy sprawdzić, co jest wykonywane w zainstalowanym malware. Gdy już posiadamy listę tego, co wirus mógł dokonać na naszej stronie, warto to sprawdzić, by uniknąć konsekwencji lub te konsekwencje infekcji zmniejszyć. Wyciek danych i wysyłanie spamu to najpopularniejsze, ale nie jedyne skutki infekcji. Gorzej, jeśli strona zainfekowała kolejnych użytkowników, uzyskała dostęp do danych na temat kart płatniczych lub służyła phishingowi (np.: udawała stronę banku). To  może skończyć się kompromitacją, utratą klientów i zaufania użytkowników, a co gorsza – może się spotkać z dużymi karami. W skrajnym przypadku zaniedbania i pełnej świadomości, że strona jest zainfekowana i dopuszcza do phishingu i oszustw, właścicielom grozi nawet kara więzienia.

Gdy już wiemy, co aplikacja uczyniła będąc pod kontrolą malware, warto przeprowadzić testy swojej strony. Testy bezpieczeństwa są podstawą prowadzenia działalności w internecie, choć często zapominane i ignorowane.


Do testowania można wykorzystać setki gotowych rozwiązań. Są przecież narzędzia takie jak:

Warto też korzystać z dedykowanych narzędzi. WordPress przykładowo posiada https://wpvulndb.com/ i automatyczne narzędzie do szukania podatności. Jeśli jesteśmy ambitni, możemy skorzystać z VulnDB i powiadomień na temat odkrytych podatności. Zawsze będziemy w miarę na bieżąco z tematem i nie wymaga to od nas dużej wiedzy (a pozwoli na jej rozwijanie) ani dużej ilości czasu, by poświęcić na bycie w miarę na bieżąco w temacie bezpieczeństwa.


Podsumowanie

Jak widać drogi czytelniku, monitoring i zabezpieczenie po fakcie infekcji strony nie jest tematem prostym, jednak też nie aż  tak trudnym. Temat bezpieczeństwa bywa demonizowany, są jednak gotowe narzędzia, bardzo proste, które pozwolą zwiększyć bezpieczeństwo naszej aplikacji,  strony www, sklepu, CRM, czy ERP niedużym kosztem, bez większych wymogów technologicznych. Największym problemem w bezpieczeństwie naszych danych nie jest brak wiedzy – jest nim ignorancja i lenistwo, a z tym trzeba walczyć nie tylko przy temacie stron WWW, ale również w życiu codziennym, bo doświadczenie budowane na błędach jest najlepszym nauczycielem, a patrząc po dostępnych narzędziach – uczmy się na błędach innych i ich chęci w niesieniu pomocy.

Temat bezpieczeństwa aplikacji, sposób monitoringu oraz leczenie objawów i przyczyn problemów ze stroną jest ogromny. Napisano już na ten temat dużo wielotomowych książek, stworzono strony internetowe i setki aplikacji. Moim celem było jedynie przybliżenie możliwości oraz najprostszych sposobów na bezpieczeństwo tego, co dla nas jest bardzo ważne, nasz wizerunek i nasz interes, który często decyduje o naszym dobrobycie.

Student informatyki na Collegium Da Vinci w Poznaniu, początkujący programista i administrator interesujący się bezpieczeństwem IT oraz sztuczną inteligencją i jej wykorzystaniem w celu ułatwienia codziennego życia.

Bezpieczeństwo stron internetowych, jak monitorować oraz weryfikować infekcje?
5 (100%) 5 głosów