Zakładamy, że wszyscy wiedzą, iż protokół SMB w wersji 1 zawiera krytyczne podatności i nie należy go stosować. Najbezpieczniej wyłączyć go na wszystkich urządzeniach w sieci i zablokować tym samym jego używanie przez aplikacje i usługi. Nie jest to jednak takie proste, gdyż grono naszych serwisów, starych urządzeń do videokonferencji, Windowsów XP czy drukarek może przestać poprawnie funkcjonować po wymuszeniu wyższej wersji SMB.

SMB, czyli z ang. Server Message Block, to protokół używany głównie do udostępniania plików i usług wydruku między komputerami w sieci. Historia SMB zaczyna się w latach 80, kiedy to IBM oraz Microsoft pracowali nad implementacją protokołu do sieciowego dostępu do systemu plików. Microsoft już po oficjalnym opublikowaniu SMBv1 nie widział w nim przyszłości, dlatego zdecydował się na szybką zmianę nazwy SMB na Common Internet File System (CIFS) i dodanie kilku funkcjonalności, między innymi bezpośrednią komunikację na porcie 445 i rozwijanie dalej tego protokołu właśnie pod nową nazwą. W rzeczywistości CIFS jest więc identyczną technologią jak SMB, prowadzoną według własnej polityki przez Microsoft.

W 2013 roku SMBv1 został wycofany ze wszystkich nowych systemów Windows i nie jest już domyślnie instalowany w systemach operacyjnych. Wszystko to za sprawą kilku luk, o których było głośno przy okazji ataku NonPetya. Podatności w SMBv1 pozwalają na zdalne wykonanie kodu na hoście docelowym z otwartą komunikacją po tym właśnie protokole.

SMBv2 został wprowadzony w systemie Windows Vista w 2006 roku. Wraz z nową wersją, zostały załatane podatności oraz poprawione bezpieczeństwo. Wprowadzono między innymi obsługę powiązań symbolicznych, co zwiększyło wydajność.

Razem z premierą systemów Windows 8 i Windows Server 2012 pojawił się SMBv3, który pozwala na kompleksowe szyfrowanie komunikacji end-to-end.


Jak podatność SMBv1 została wykorzystana?


Podatności ujrzały światło dzienne, kiedy to grupa hackerów wykradła je od NSA. Wkrótce potem, możliwości exploitacji SMB wykorzystuje znany ransomware WannaCry. Cała grupa exploitów SMB otrzymała nazwę „Eternal”, a najbardziej znanym z nich jest „EternalBlue”. Polega on na wysłaniu do atakowanego komputera spreparowanego pakietu, którego protokół SMBv1 nie jest w stanie obsłużyć, co prowadzi do wymuszenia wykonania zdalnego kodu bez żadnej weryfikacji i komunikatu po stronie odbiorcy.
Szacuje się, że ransomware WannaCry za pomocą luk w SMBv1 zainfekował w 2017 roku od 230 000 do 300 000 komputerów w 99 krajach, a wyrządzone szkody to ponad 1 bilion dolarów.


Jak wygląda atak?


Jednym ze scenariuszy, który atakujący jest w stanie wykonać za pomocą eksploitacji SMBv1, jest zdalny dostęp do wiersza poleceń z uprawnieniami SYSTEM. Z takim narzędziem w rękach, hacker jest w stanie zrobić praktycznie wszystko na systemie lokalnym i nie zostać wykrytym, np. modyfikować lokalne uprawnienia kont, przeskakiwać na inne hosty, pobierać i usuwać hashe z pamięci i wiele więcej.

Atak EternalBlue może zostać przeprowadzony za pomocą narzędzia dobrze znanego pentesterom – Metasploit, które zawiera ogrom modułów do atakowania systemów znanymi technikami i sprawdzania podatności.
Po uruchomieniu narzędzia, szukamy interesujących nas modułów:

Załóżmy sytuację, że mamy podstawową wiedzę o atakowanym środowisku i przeprowadziliśmy już rozpoznanie sieciowe oraz domeny AD. Z dużym prawdopodobieństwem wiemy, które hosty mogą działać na systemie Windows XP lub Windows Server 2008, co znaczy, że są podatne na atak.

Jednak sam Metasploit daje nam możliwość dodatkowego zweryfikowania, czy host jest podatny na atak EternalBlue. Sprawdzamy to w następujący sposób:

W wyniku wykonania polecenia otrzymujemy informacje o systemie operacyjnym oraz zainstalowanym service packu, co wiąże nam system z podatnością SMBv1. Na skanowanym hoście zainstalowany jest system Windows Server 2008 R2 Enterprise 7601, co skaner oznaczył na podatny.

Wywołując nazwę modułu z atakiem EternalBlue z opcją run i wskazując adres IP atakowanego hosta, otrzymamy dostęp do wiersza poleceń na uprawnieniach NT AUTHORITY\SYSTEM:

Jak wspominaliśmy wcześniej, zdobycie takich uprawnień (i to zdalnie!) wiąże się z całkowitą kompromitacją maszyny i gamą możliwości do wykorzystania w całej sieci organizacji w celu podszywania się pod skompromitowaną maszynę i przedstawiania się w jej imieniu.


Prewencja


Jak zapobiec taki atakom? Oczywiście, należy instalować wszystkie poprawki związane z bezpieczeństwem na punktach końcowych. Większość znanych podatności SMBv1 można załatać instalując aktualizacje.

Jednak, niektóre exploity wykorzystują słabość samej technologii SMB i bez przejścia na wyższą wersję nie ma możliwości ochrony. Dlatego, Microsoft zleca wymuszenie wyłączenia SMBv1 w całej organizacji. Przygotował nawet poradnik, który pomaga w identyfikacji podatnych hostów w sieci i podpowiada jak skutecznie pozbyć się SMB w wersji 1.