Internet roi się od witryn zawierających szkodliwe elementy. Niestety, takie niebezpieczeństwa mogą czaić się również na stronach Twoich partnerów biznesowych – klientów lub dostawców.
Współczesne przedsiębiorstwa w znacznym stopniu opierają się na różnorodnych integracjach, które zasilają lub przetwarzają dane na stronach internetowych klientów i dostawców. Choć te usługi są niezbędne, stanowią również potencjalne źródło zagrożeń. Witryny zewnętrzne, z którymi wchodzisz w interakcję, mogą zawierać złośliwe treści – czy to celowo zainstalowane, czy też będące efektem ataku osób trzecich. Jeśli takie treści zostaną uruchomione w nieodpowiednim miejscu, konsekwencje mogą być bardzo poważne.
Czy ręczne sprawdzanie witryn pod kątem złośliwych elementów nie byłoby wystarczające?
Mogłoby się wydawać, że doświadczony programista z łatwością przeskanuje stronę w poszukiwaniu potencjalnych zagrożeń. Niestety, z kilku powodów nie jest to tak proste, jak mogłoby się wydawać:
- Programiści nie są specjalistami w dziedzinie wykrywania i neutralizacji zagrożeń. Ich wiedza i doświadczenie koncentrują się na tworzeniu złożonych systemów poprzez łączenie mniejszych modułów. Krótko mówiąc, brakuje im specjalistycznych umiejętności z zakresu bezpieczeństwa.
- Nawet gdyby udało się znaleźć programistę o odpowiednich kompetencjach, zakres zadania byłby przytłaczający. Typowa, rozbudowana strona internetowa składa się z tysięcy linii kodu. Przeanalizowanie ich wszystkich, aby wyłapać wszelkie potencjalne zagrożenia, to zadanie karkołomne. To tak, jakby kazać komuś zjeść całego słonia na obiad!
- W celu skrócenia czasu ładowania strony, pliki CSS i JavaScript są często kompresowane i minimalizowane. W rezultacie kod staje się nieczytelny i praktycznie niemożliwy do analizy.
Czy potrafisz stwierdzić, do czego służy ten kod? (Źródło: elgg.org)
Jeśli ten kod wydaje się czytelny, to tylko dlatego, że twórcy starali się zachować w miarę sensowne nazwy zmiennych. Spróbuj przeanalizować kod źródłowy jQuery, który ktoś mógł umieścić na swojej stronie i zmodyfikować (dwa podejrzane wiersze ukryte w gąszczu kodu):
Nie wspominając o tym, że ten kod źródłowy liczy blisko 5000 linii.
To tylko jeden z możliwych scenariuszy. Strona internetowa zazwyczaj zawiera od 5 do 15 skryptów, a Ty prawdopodobnie współpracujesz z 10-20 stronami. Wyobraź sobie, że musisz to robić codziennie… a może nawet kilka razy dziennie!
Na szczęście istnieje możliwość szybkiego i prostego skanowania adresów URL za pomocą interfejsów API. Możesz skanować nie tylko strony internetowe, ale także pliki udostępnione do pobrania. Przyjrzyjmy się kilku narzędziom API, które Ci w tym pomogą. A ponieważ są to interfejsy API, zadanie dla Twojego programisty będzie znacznie prostsze – może on stworzyć narzędzie do skanowania witryn przy użyciu tych właśnie interfejsów.
Google Web Risk
Nie jest zaskoczeniem, że narzędzie do analizy bezpieczeństwa stron internetowych pochodzi od firmy, która w zasadzie zdominowała internet (a przynajmniej jego strony). Jest jednak pewien haczyk: Google Web Risk wciąż znajduje się w fazie beta i jest udostępniane na wniosek. Status beta oznacza, że należy spodziewać się częstych zmian.
Niemniej, interfejs API jest stosunkowo prosty w obsłudze. Programista powinien sobie poradzić ze wszystkimi zmianami za pomocą narzędzia do monitorowania API i krótkiej sesji programowania.
Korzystanie z API jest bardzo intuicyjne. Aby sprawdzić pojedynczą stronę za pomocą wiersza poleceń, wystarczy wysłać żądanie w następujący sposób:
curl -H "Content-Type: application/json" "https://webrisk.googleapis.com/v1beta1/uris:search?key=YOUR_API_KEY&threatTypes=MALWARE&uri=http%3A%2F%2Ftestsafebrowsing.appspot.com%2Fs%2Fmalware.html"
Jeśli żądanie zostanie zrealizowane, API zwróci informacje o rodzaju zagrożenia wykrytego na stronie:
{ "threat": { "threatTypes": [ "MALWARE" ], "expireTime": "2019-07-17T15:01:23.045123456Z" } }
Jak widać, API potwierdza, że strona zawiera złośliwe oprogramowanie.
Warto zaznaczyć, że Google Web Risk API nie przeprowadza analizy na żądanie dla podanego adresu URL czy pliku. Porównuje adres z czarną listą prowadzoną przez Google na podstawie wyników wyszukiwania i zgłoszeń, informując, czy dany adres URL znajduje się na tej liście. Innymi słowy, jeśli API stwierdzi, że adres URL jest bezpieczny, można założyć, że tak jest, ale nie ma na to 100% gwarancji.
VirusTotal
VirusTotal to kolejna interesująca usługa, która umożliwia skanowanie nie tylko adresów URL, ale także pojedynczych plików (dzięki czemu uważam ją za bardziej użyteczną niż Google Web Risk). Jeśli chcesz ją wypróbować, wystarczy przejść na stronę i zacząć skanować bezpośrednio ze strony głównej.
Chociaż VirusTotal jest dostępny jako darmowa platforma tworzona i zarządzana przez aktywną społeczność, oferuje również komercyjną wersję API. Oto dlaczego warto rozważyć zakup wersji premium:
- Elastyczność w zakresie liczby żądań i dziennego limitu (w przeciwieństwie do zaledwie czterech żądań na minutę w publicznym API).
- Przesłany zasób jest analizowany przez VirusTotal z użyciem różnych programów antywirusowych, a użytkownik otrzymuje dodatkowe dane diagnostyczne.
- Dostęp do informacji o zachowaniu analizowanych plików (pliki są uruchamiane w piaskownicy w celu monitorowania podejrzanych działań).
- Możliwość przeszukiwania bazy danych plików VirusTotal z użyciem różnych parametrów (wsparcie dla złożonych zapytań).
- Gwarantowany czas odpowiedzi i warunki umowy SLA (pliki przesyłane do VirusTotal przez publiczne API trafiają do kolejki i mogą być analizowane z dużym opóźnieniem).
Jeśli zdecydujesz się na prywatne API VirusTotal, może to być jedna z najlepszych inwestycji w oprogramowanie SaaS dla Twojej firmy.
Scanii
Kolejnym godnym polecenia API do skanowania pod kątem bezpieczeństwa jest Scanii. Jest to prosty interfejs API REST, który pozwala skanować przesyłane dokumenty i pliki pod kątem potencjalnych zagrożeń. Można go traktować jako skaner antywirusowy na żądanie, który można uruchomić i skalować bez żadnego wysiłku!
Scanii oferuje następujące funkcje:
- Wykrywanie złośliwego oprogramowania, skryptów phishingowych, spamu i treści NSFW (Not Safe For Work).
- Oparcie działania o platformę Amazon S3, co zapewnia łatwą skalowalność i bezpieczne przechowywanie plików.
- Wykrywanie obraźliwych, niebezpiecznych lub potencjalnie ryzykownych tekstów w ponad 23 językach.
- Proste, bez zbędnych dodatków podejście do skanowania plików za pomocą API (czyli bez niepotrzebnych funkcji „wspomagających”).
Ważną zaletą Scanii jest to, że jest to silnik meta – co oznacza, że nie wykonuje skanów samodzielnie, lecz korzysta z wielu różnych silników bazowych. To ogromna korzyść, ponieważ nie jesteś przywiązany do jednego konkretnego rozwiązania. Dzięki temu nie musisz się martwić o problemy związane ze zmianami w API.
Uważam, że Scanii jest niezwykle przydatne dla platform, które zależą od treści generowanych przez użytkowników. Innym zastosowaniem jest skanowanie plików pochodzących od usługodawców, którym nie można w pełni ufać.
MetaDefender
W przypadku niektórych organizacji skanowanie plików i stron internetowych w jednym punkcie końcowym to za mało. Mają złożony obieg informacji i żaden punkt nie może zostać pominięty. W takich przypadkach idealnym rozwiązaniem jest MetaDefender.
MetaDefender można traktować jako swego rodzaju „paranoicznego” strażnika, który znajduje się między Twoimi kluczowymi zasobami danych a wszystkim innym, w tym siecią. Mówię „paranoiczny”, ponieważ taka jest filozofia projektowania MetaDefendera. Trudno to opisać lepiej niż oni sami, więc oto ich słowa:
Większość rozwiązań z zakresu bezpieczeństwa cybernetycznego opiera się na wykrywaniu zagrożeń jako podstawowej funkcji ochronnej. Oczyszczanie danych MetaDefender nie opiera się na wykrywaniu. Zakłada, że wszystkie pliki mogą być zainfekowane i przebudowuje ich zawartość w bezpieczny sposób. Obsługuje ponad 30 typów plików i generuje bezpieczne i funkcjonalne wersje. Oczyszczanie danych jest niezwykle skuteczne w ochronie przed atakami kierowanymi, oprogramowaniem ransomware oraz innymi rodzajami znanych i nieznanych zagrożeń związanymi ze złośliwym oprogramowaniem.
MetaDefender oferuje wiele przydatnych funkcji:
- Zapobieganie utracie danych: możliwość zastąpienia i zabezpieczenia poufnych informacji wykrytych w plikach. Na przykład, numer karty kredytowej widoczny w dokumencie PDF zostanie zamaskowany przez MetaDefender.
- Możliwość wdrożenia lokalnego lub w chmurze (w zależności od poziomu „paranoi”).
- Analiza ponad 30 typów archiwów (zip, tar, rar itp.) i 4500 różnych technik fałszowania plików.
- Różne modele wdrożenia: ochrona samych plików lub również obsługa skanowania poczty e-mail, sieci i logowania.
- Możliwość tworzenia niestandardowych potoków skanowania w oparciu o zdefiniowane reguły.
MetaDefender wykorzystuje ponad 30 silników skanujących, ale udostępnia je w sposób abstrakcyjny, dzięki czemu nie musisz się o nie martwić. Jeśli jesteś średnim lub dużym przedsiębiorstwem, które nie może sobie pozwolić na problemy związane z bezpieczeństwem, MetaDefender jest doskonałym wyborem.
Urlscan.io
Jeśli pracujesz głównie ze stronami internetowymi i zawsze chciałeś lepiej zrozumieć ich działanie „od kuchni”, Urlscan.io to potężne narzędzie, które warto mieć w swoim arsenale.
Ilość informacji dostarczanych przez Urlscan.io jest imponująca. Możesz uzyskać między innymi:
- Liczbę adresów IP, z którymi strona nawiązuje połączenie.
- Listę lokalizacji geograficznych i domen, do których strona wysyła dane.
- Informacje o technologiach użytych w warstwie interfejsu i zaplecza witryny (brak gwarancji stuprocentowej dokładności, ale wyniki są bardzo precyzyjne).
- Dane o domenie i certyfikacie SSL.
- Szczegółowe informacje o interakcjach HTTP, w tym ładunek żądania, nazwy serwerów, czasy odpowiedzi i wiele innych.
- Informacje o ukrytych przekierowaniach i nieudanych żądaniach.
- Linki wychodzące.
- Analizę JavaScript (zmienne globalne używane w skryptach itp.).
- Analizę drzewa DOM, zawartość formularzy i wiele innych.
Tak to wszystko wygląda w praktyce:
Interfejs API jest prosty i intuicyjny. Umożliwia przesłanie adresu URL do skanowania i sprawdzenie historii skanowania tego adresu (w tym skanów wykonanych przez innych). Podsumowując, Urlscan.io dostarcza mnóstwo cennych informacji dla każdej firmy lub osoby zainteresowanej bezpieczeństwem.
SUCURI
SUCURI jest dobrze znaną platformą w zakresie skanowania witryn internetowych pod kątem zagrożeń i złośliwego oprogramowania. Być może nie wiesz, że oferuje również interfejs API REST, który pozwala korzystać z tej samej funkcjonalności w sposób programowy.
Nie ma tu zbyt wiele do dodania – API jest proste w obsłudze i działa bez zarzutu. SUCURI to jednak nie tylko skanowanie przez API, dlatego zachęcam do zapoznania się z innymi funkcjami platformy, takimi jak skanowanie po stronie serwera (podajesz dane dostępowe do FTP, a system loguje się i skanuje wszystkie pliki w poszukiwaniu zagrożeń!).
Quttera
Ostatnim rozwiązaniem na tej liście jest Quttera, które oferuje coś nieco innego. Zamiast skanować domenę i przesyłane strony na żądanie, Quttera może również przeprowadzać ciągłe monitorowanie, pomagając w wykrywaniu luk typu zero-day.
Interfejs API REST jest prosty, wydajny i obsługuje kilka dodatkowych formatów danych poza JSON (np. XML i YAML). Pełna obsługa wielowątkowości i współbieżności umożliwia jednoczesne uruchamianie wielu wyczerpujących skanów. Ponieważ usługa działa w czasie rzeczywistym, jest bezcenna dla firm, które oferują krytyczne usługi, gdzie jakikolwiek przestój może być katastrofalny.
Podsumowanie
Narzędzia bezpieczeństwa, takie jak te omówione w tym artykule, stanowią dodatkową linię obrony (lub ostrożności, jak wolisz). Podobnie jak programy antywirusowe, są bardzo pomocne, ale nie są w stanie zapewnić absolutnej ochrony. Dzieje się tak dlatego, że z punktu widzenia komputera program napisany w złych zamiarach wygląda tak samo jak ten, który ma pozytywny cel – oba korzystają z zasobów systemu i wysyłają żądania sieciowe. Problem tkwi w kontekście, którego komputer nie jest w stanie samodzielnie zinterpretować.
Mimo wszystko, te interfejsy API zapewniają solidną ochronę bezpieczeństwa, która w większości przypadków jest wystarczająca – zarówno w przypadku witryn zewnętrznych, jak i Twojej własnej!