Wielu użytkowników komputerów macOS nadal jest przekonanych, że ich sprzęt nie potrzebuje ochrony. Co gorsza, zdanie to często podzielają administratorzy systemów w firmach, w których pracownicy korzystają ze sprzętu firmy Apple.
Podczas konferencji Black Hat USA 2020 badacz Patrick Wardle starał się wyprowadzić słuchaczy z tego błędnego przekonania, prezentując im swoją analizę szkodliwego programu dla systemu macOS i tworząc łańcuch exploitów, dzięki któremu można było przejąć kontrolę nad komputerem marki Apple.
Microsoft, makra i Maki
Jednym z najpowszechniejszych sposobów atakowania komputerów z systemem macOS jest wykorzystywanie dokumentów ze szkodliwymi makrami — czyli za pośrednictwem aplikacji pakietu Microsoft Office. Oczywiście mimo tego, że dostępne są odpowiedniki firmy Apple, wielu użytkowników woli używać właśnie tego pakietu; Niektórzy są po prostu do niego przyzwyczajeni; inni biorą pod uwagę zgodność z dokumentami tworzonymi przez ich kolegów z pracy.
Oczywiście to, że dokumenty zawierające makra stwarzają potencjalne zagrożenie, wiadomo od dawna. Z tego względu zarówno firma Microsoft, jak i Apple stosują odpowiednie mechanizmy zabezpieczające ich użytkowników.
Microsoft ostrzega użytkowników, gdy otwierany dokument zawiera makra. Ponadto, jeśli użytkownik postanowi je uruchomić, kod jest wykonywany w piaskownicy, co według programistów z tej firmy uniemożliwia mu dostęp do plików użytkownika ani nie zagraża w żaden sposób systemowi.
Jeśli chodzi o Apple, w najnowszej wersji swojego systemu operacyjnego — macOS Catalina — firma wprowadziła kilka nowych funkcji zabezpieczających. Między innymi pliki są poddawane kwarantannie i „notaryzacji”, czyli technologii, która uniemożliwia uruchomienie plików wykonywalnych ze źródeł zewnętrznych.
Zasadniczo obie technologie powinny w wystarczającym stopniu chronić przed zagrożeniami ze strony szkodliwych makr. W teorii wszystko wydaje się dość bezpieczne.
Łańcuch exploitów pozwala makrom opuścić piaskownicę
Jednak w praktyce wiele mechanizmów zabezpieczających jest zaimplementowanych tak, że mogą być źródeł problemów. Dlatego badacze (lub atakujący) mogą potencjalnie znaleźć metody ich ominięcia; Wardle zademonstrował efekty działania łańcucha exploitów.
- Omijanie mechanizmu wyłączającego makra
Jeśli na przykład system ostrzeże użytkownika, że w dokumencie znajdują się makra, przeważnie jest to zgodne z założeniami programistów. Jednak z drugiej strony można tworzyć dokument, w którym makro uruchamia się automatycznie, bez powiadamiania o tym użytkownika, nawet jeśli funkcja makr została wyłączona w ustawieniach.
Można to osiągnąć dzięki wymyślnemu w latach osiemdziesiątych formatowi plików Sylk (SLK). Używa on języka XLM makr, a ostatnią aktualizację otrzymał w 1986 r. Jednak aplikacje firmy Microsoft (np. Excel) nadal obsługują Sylk w ramach kompatybilności wstecznej. Podatność ta nie jest nowa; została ona szczegółowo opisana w 2019 r.
- Ucieczka z piaskownicy
Załóżmy, że atakujący może w sposób niezauważalny uruchomić makro. Wówczas kod nadal będzie wykonywany w izolowanej piaskownicy pakietu MS Office. W jaki sposób osoba postronna może zaatakować komputer? Okazuje się, że ucieczka z piaskownicy Microsoftu na komputerze Mac nie jest taka trudna.
Prawdą jest, że plików, które już znajdują się na komputerze, nie można zmodyfikować z wnętrza piaskownicy. Jednak można je utworzyć. Taki exploit został już kiedyś użyty do ucieczki z piaskownicy, a Microsoft udostępnił aktualizację zamykającą tę lukę. Niestety problem nie do końca został rozwiązany, co pokazała bardziej szczegółowa analiza łaty: wyeliminowała ona objawy, blokując możliwość tworzenia pliku w miejscach, które przez część programistów zostały uznane za niebezpieczne, np. w folderze LaunchAgents przechowującym skrypty, które są uruchamiane automatycznie po ponownym uruchomieniu komputera.
Kto jednak zdecydował, że Microsoft uwzględnił każdą „niebezpieczną lokalizację”, tworząc wspomnianą łatę? Tak się złożyło, że skrypt napisany w języku Python i uruchomiony z dokumentu Office — a przez to wykonany w piaskownicy — mógł zostać użyty do utworzenia obiektu o nazwie „Login Item”. Obiekt posiadający taką nazwę uruchamia się automatycznie, gdy użytkownik loguje się do systemu. System uruchamia obiekt, więc zostanie on wykonany poza piaskownicą Office, dzięki czemu ominie ograniczenia związane z bezpieczeństwem, narzucone przez Microsoft.
- Ominięcie mechanizmów zabezpieczających w systemie firmy Apple
Teraz już wiemy, w jaki sposób można potajemnie uruchomić makro i utworzyć obiekt Login Item. Oczywiście w teorii mechanizmy zabezpieczające w systemie macOS nadal powinny blokować uruchomienie backdoora, który został utworzony przez podejrzany proces z wnętrza piaskownicy, co czyni go niezaufanym.
Z jednej strony tak właśnie jest: mechanizmy zabezpieczające stosowane przez system Apple naprawdę blokują wykonanie kodu uzyskanego w taki sposób. Z drugiej jednak strony, istnieje obejście dla tych warunków: jeśli użyjesz archiwum ZIP podpisanego jako Login Item, podczas kolejnego logowania się w systemie plik zostanie automatycznie rozpakowany.
Wówczas atakujący muszą tylko wybrać odpowiednią lokalizację do rozpakowania pliku. Na przykład archiwum może zostać umieszczone w tym samym katalogu co biblioteki użytkownika, czyli krok wyżej niż miejsce, w którym mają być przechowywane obiekty typu Launch Agent (te, które Microsoft poprawnie uważa za niebezpieczne). Samo archiwum może zawierać katalog o nazwie LaunchAgents, zawierający skrypt Launch Agent.
Po rozpakowaniu skrypt jest umieszczany w folderze LaunchAgents w celu wykonania po uruchomieniu ponownym komputera. Ponieważ został on utworzony przez zaufany program (Archiver) i nie ma atrybutów kwarantanny, może zostać użyty do uruchomienia czegoś bardziej niebezpiecznego. W takiej sytuacji mechanizmy zabezpieczające nie zablokują uruchomienia takiego pliku.
W efekcie atakujący może uruchomić mechanizm za pomocą powłoki poleceń Bash, aby uzyskać dostęp zdalny (uzyskując w ten sposób tzw. odwróconą powłokę). W ten sposób można pobierać pliki, które również nie będą posiadać atrybutów kwarantanny, dzięki czemu atakujący może pobrać naprawdę szkodliwy kod i wykonać go bez żadnych ograniczeń.
Podsumowując:
- Atakujący może potajemnie uruchomić szkodliwe makro bez wyświetlania użytkownikowi żadnego ostrzeżenia czy pytania, nawet jeśli uruchamianie makr zostało wyłączone w ustawieniach. Użytkownik musi tylko pobrać dokument Office i go otworzyć.
- Następnie atakujący może opuścić piaskownicę Microsoft Office, utworzyć obiekt Login Item i umieścić w nim archiwum zawierające Launch Agent, które uruchamia się automatycznie poza piaskownicą podczas następnego logowania.
- Za pomocą zaledwie kilku kroków atakujący może z łatwością ominąć mechanizmy zabezpieczające firmy Apple, wypakowując obiekt typu Launch Agent z archiwum ZIP. Po ominięciu w ten sposób mechanizmu zabezpieczającego w systemie program może pobrać i uruchomić szkodliwą część złośliwego kodu.
Jak zapewnić sobie bezpieczeństwo przed szkodliwymi makrami w systemie macOS
Oczywiście wspomniany badacz poinformował o swoich odkryciach zarówno firmę Apple, jak i Microsoft, a obie organizacje szybko poprawiły po cichu swoje rozwiązania, nie przypisując nawet lukom żadnych identyfikatorów CVE. Jednak sytuacja ta sugeruje, że dokładne zbadanie mechanizmów zabezpieczających może ujawnić metody ich ominięcia.
Dawniej system macOS był słusznie uważany za bezpieczniejszy, ale nie chodziło o posiadanie szczególnie zaawansowanych mechanizmów bezpieczeństwa, lecz ignorowanie go przez atakujących. Z biegiem czasu komputery firmy Apple stały się znacznie popularniejsze, również w środowisku firmowym, przez co ataki wymierzone w system macOS stają się dla cyberprzestępców coraz interesujące.
Aby zapewnić sobie bezpieczeństwo, należy nie tylko dbać o aktualność systemu i wszystkich aplikacji, ale także używać rozwiązań zabezpieczających, które potrafią wykrywać i blokować podejrzaną aktywność. Na przykład nasza linia produktów, zarówno dla użytkowników domowych, jak i firm, obejmuje także wersje dla systemu macOS.