Badacze bezpieczeństwa z IBM Security X-Force Red znaleźli w Google Cloud Platform (GCP) metodę, której potencjalnie mogą użyć atakujący do utworzenia stałego i ukrytego dostępu (z ang. persistence) za pomocą Google Cloud Shell.
Kwestii bezpieczeństwa chmury poświęciliśmy ostatnio dużą kampanię, opisującą Bezpieczeństwo Infrastruktury Chmurowej. Jak pokażemy poniżej, w nieodpowiednio zabezpieczonej infrastrukturze chmurowej atakujący mogą utworzyć specjalną tylną furtkę ze stałym dostępem (z ang. backdoor).
Co to jest Google Cloud Shell?
Google Cloud Shell to usługa udostępniająca powłokę internetową, w której można wykonywać czynności administracyjne GCP. Powłoka internetowa jest wygodną funkcją, ponieważ pozwala programistom i administratorom zarządzać zasobami GCP bez konieczności instalowania lub utrzymywania jakiegokolwiek oprogramowania lokalnie w ich systemie. Z technicznego punktu widzenia Google zauważa, że Cloud Shell jest efemeryczną wirtualną maszyną Debiana Linux (VM). To, z czym użytkownicy wchodzą w interakcję podczas korzystania z Cloud Shell, jest w rzeczywistości kontenerem Dockera. Aby korzystać z Cloud Shell, wystarczy zalogować się do konsoli Google Cloud i kliknąć ikonę terminala, która uruchamia instancję Cloud Shell.
W czym tkwi problem?
Naukowcy podkreślają fakt, iż pomimo efemeryczności (nietrwałości) wirtualnej maszyny istnieje możliwość utworzenia backdoora, ponieważ katalog domowy użytkownika (/home) może pomieścić do 5 GB danych i jest trwały. Odkryli, że Google Cloud Shell ma unikalną zdolność podczas uruchamiania do odczytu z pliku w folderze domowym o nazwie „.customize_environment”. Plik nie jest tworzony domyślnie, ale po dodaniu będzie otwierany przy każdym uruchomieniu Cloud Shell.
Z administracyjnego punktu widzenia jest to duże ułatwienie. Jeśli istnieją narzędzia, których administrator często używa, ale nie są instalowane domyślnie, może on napisać skrypt w pliku „.customize_environment”, aby zainstalować dowolne oprogramowanie, zmienić konfigurację systemu i nie tylko.
Powyższą metodę mogą również wykorzystać atakujący, na co zwracają uwagę badacze z IBM: „Jeśli jednak jesteś hakerem, ta funkcja może przyciągnąć Twoją uwagę z innych powodów. Źli aktorzy, testerzy penetracji i czerwone zespoły zazwyczaj mają podobny cel po początkowym wtargnięciu do środowiska. Celem jest pozostanie w zaatakowanej sieci, co oznacza, że muszą mieć co najmniej jedną metodę utrzymania dostępu. W cyberbezpieczeństwie nazywamy to trwałością”.
Jak utworzyć backdoor w GCP?
Jak opisują badacze z IBM, w pierwszej kolejności należy przeanalizować otwarte porty TCP, z którymi moglibyśmy się połączyć, oraz sprawdzić, czy żaden nie został zablokowany.
Otwarty dostęp wychodzący oznacza, że możliwe jest uruchomienie odwrotnej powłoki, np. za pomocą narzędzia Netcat, używając poniższego kodu w pliku .customize_environment. Zapewnia nam to zdalny dostęp do zhakowanego Cloud Shell.
Przy następnym uruchomieniu Cloud Shell otrzymamy odwróconą powłokę.
Na liście procesów widać, że .customize_environment jest automatycznie wywoływany z Bash podczas uruchamiania i nadal działa odwrotna powłoka.
Jak sobie radzić z problemem?
Opisywana metoda trwałości posiada dwie wady:
• Jej skuteczność zależy od tego, czy ofiara korzysta z Cloud Shell. Jeśli nie, nie będzie to niezawodna ani nawet skuteczna metoda utrwalania.
•Przy pierwszym wykonaniu w Cloud Shell czynności wymagającej uwierzytelnienia, w przeglądarce użytkownika pojawia się okno autoryzacji, które należy zaakceptować przed uruchomieniem polecenia. Jeśli pojawi się nieoczekiwane wyskakujące okienko, cel może nabrać podejrzeń i wykryć metodę utrwalania.
IBM twierdzi, że obejściem ograniczającym wykrywanie byłoby monitorowanie aktywności użytkownika i czekanie, aż wykona wywołanie interfejsu API przed próbą wykonania działania wymagającego uwierzytelnienia. Wreszcie, jeśli użytkownik nie korzysta regularnie z Cloud Shell, katalog domowy zostanie usunięty po 120 dniach braku aktywności.
Jedynym sposobem na skuteczne zablokowanie tej metody utrwalania jest wyłączenie Cloud Shell dla wszystkich użytkowników z poziomu konsoli administracyjnej Google Admin (https://admin.google.com/), wybierając opcję „Additional Google Services”, następnie „Google Cloud Platform” i ustawienia „Cloud Shell Settings”. W ustawieniach tych należy odznaczyć pole wyboru „Allow access to Cloud Shell”:
Podsumowanie
Plik „.customize_environment” to solidna opcja trwałości po uzyskaniu początkowego dostępu do GCP. Metoda ta daje wiele możliwości. Implant dowodzenia i kontroli można pobrać i uruchomić przy każdym otwarciu Cloud Shell lub włączyć skrypt, który kradnie tokeny i publikuje je na serwerze atakującego i tak dalej.
W sieci można znaleźć wcześniejsze badania pokazujące, jak używać pliku „.bashrc” do utrwalania w Cloud Shell. Przykład w poście Juana Bernera z 2018 roku.