macOS SIP
WhiteIntel to mechanizm dark-web, który oferuje darmowe funkcje do sprawdzania, czy firma lub jej klienci nie zostali skompromitowani przez złośliwe oprogramowanie kradnące dane.
Głównym celem WhiteIntel jest zwalczanie przejęć kont i ataków ransomware wynikających z złośliwego oprogramowania kradnącego informacje.
Możesz sprawdzić ich stronę internetową i wypróbować ich silnik za darmo pod adresem:
Podstawowe informacje
Ochrona Integralności Systemu (SIP) w macOS to mechanizm zaprojektowany w celu zapobiegania nawet najbardziej uprzywilejowanym użytkownikom dokonywania nieautoryzowanych zmian w kluczowych folderach systemowych. Ta funkcja odgrywa kluczową rolę w utrzymaniu integralności systemu poprzez ograniczanie działań takich jak dodawanie, modyfikowanie lub usuwanie plików w chronionych obszarach. Główne foldery chronione przez SIP to:
/System
/bin
/sbin
/usr
Zasady regulujące zachowanie SIP są określone w pliku konfiguracyjnym znajdującym się w /System/Library/Sandbox/rootless.conf
. W tym pliku ścieżki poprzedzone gwiazdką (*) są oznaczone jako wyjątki od zasadniczo rygorystycznych ograniczeń SIP.
Rozważ poniższy przykład:
Ten fragment sugeruje, że SIP zazwyczaj zabezpiecza katalog /usr
, ale istnieją konkretne podkatalogi (/usr/libexec/cups
, /usr/local
i /usr/share/man
), w których modyfikacje są dozwolone, o czym świadczy gwiazdka (*) poprzedzająca ich ścieżki.
Aby sprawdzić, czy katalog lub plik jest chroniony przez SIP, możesz użyć polecenia ls -lOd
, aby sprawdzić obecność flagi restricted
lub sunlnk
. Na przykład:
W tym przypadku flaga sunlnk
oznacza, że sam katalog /usr/libexec/cups
nie może zostać usunięty, chociaż pliki wewnątrz niego mogą być tworzone, modyfikowane lub usuwane.
Z drugiej strony:
Oto flaga restricted
wskazuje, że katalog /usr/libexec
jest chroniony przez SIP. W katalogu chronionym przez SIP pliki nie mogą być tworzone, modyfikowane ani usuwane.
Co więcej, jeśli plik zawiera atrybut rozszerzony com.apple.rootless
, ten plik również będzie chroniony przez SIP.
SIP ogranicza również inne działania roota, takie jak:
Ładowanie niezaufanych rozszerzeń jądra
Uzyskiwanie portów zadań dla procesów podpisanych przez Apple
Modyfikowanie zmiennych NVRAM
Umożliwianie debugowania jądra
Opcje są przechowywane w zmiennej nvram jako flaga bitowa (csr-active-config
w przypadku Intel i lp-sip0
jest odczytywane z drzewa urządzenia uruchomionego dla ARM). Flagi można znaleźć w kodzie źródłowym XNU w pliku csr.sh
:
Status SIP
Możesz sprawdzić, czy SIP jest włączony na swoim systemie za pomocą następującej komendy:
Jeśli musisz wyłączyć SIP, musisz ponownie uruchomić komputer w trybie odzyskiwania (naciskając Command+R podczas uruchamiania), a następnie wykonać poniższą komendę:
Jeśli chcesz zachować włączony SIP, ale usunąć zabezpieczenia debugowania, możesz to zrobić za pomocą:
Inne Ograniczenia
Zakaz ładowania niepodpisanych rozszerzeń jądra (kexts), zapewniając, że tylko zweryfikowane rozszerzenia współdziałają z jądrem systemowym.
Zapobiega debugowaniu procesów systemowych macOS, zabezpieczając podstawowe składniki systemu przed nieautoryzowanym dostępem i modyfikacją.
Zakazuje narzędziom takim jak dtrace inspekcji procesów systemowych, dodatkowo chroniąc integralność działania systemu.
Dowiedz się więcej o informacjach SIP w tej prezentacji.
Ominiecie SIP
Ominięcie SIP umożliwia atakującemu:
Dostęp do danych użytkownika: Odczytanie wrażliwych danych użytkownika, takich jak poczta, wiadomości i historia przeglądania w Safari, we wszystkich kontach użytkowników.
Ominięcie TCC: Bezpośrednie manipulowanie bazą danych TCC (Transparency, Consent, and Control) w celu udzielenia nieautoryzowanego dostępu do kamery internetowej, mikrofonu i innych zasobów.
Ustanowienie trwałości: Umieszczenie złośliwego oprogramowania w chronionych przez SIP lokalizacjach, sprawiając, że jest ono odporne na usunięcie, nawet przy uprawnieniach root. Obejmuje to również potencjalną ingerencję w Narzędzie do Usuwania Złośliwego Oprogramowania (MRT).
Ładowanie Rozszerzeń Jądra: Pomimo dodatkowych zabezpieczeń, ominięcie SIP upraszcza proces ładowania niepodpisanych rozszerzeń jądra.
Pakiety Instalacyjne
Pakiety instalacyjne podpisane certyfikatem Apple mogą ominąć jego zabezpieczenia. Oznacza to, że nawet pakiety podpisane przez standardowych deweloperów zostaną zablokowane, jeśli spróbują modyfikować chronione przez SIP katalogi.
Nieistniejący plik SIP
Potencjalną luką jest to, że jeśli plik jest określony w rootless.conf
ale obecnie nie istnieje, może zostać utworzony. Złośliwe oprogramowanie mogłoby wykorzystać to do ustanowienia trwałości w systemie. Na przykład złośliwy program mógłby utworzyć plik .plist w /System/Library/LaunchDaemons
, jeśli jest on wymieniony w rootless.conf
, ale nie istnieje.
com.apple.rootless.install.heritable
Uprawnienie com.apple.rootless.install.heritable
pozwala na ominięcie SIP
Odkryto, że było możliwe zamienienie pakietu instalacyjnego po weryfikacji kodu przez system, a następnie system zainstalowałby złośliwy pakiet zamiast oryginalnego. Ponieważ te działania były wykonywane przez system_installd
, pozwalało to na ominięcie SIP.
Jeśli pakiet był instalowany z obrazu zamontowanego lub zewnętrznego dysku, instalator wykonywałby binarny plik z tego systemu plików (zamiast z chronionej przez SIP lokalizacji), powodując, że system_installd
wykonywałby dowolny binarny plik.
CVE-2021-30892 - Shrootless
Badacze z tego wpisu na blogu odkryli lukę w mechanizmie Integrity Protection System (SIP) macOS, zwaną luką 'Shrootless'. Ta luka koncentruje się wokół demona system_installd
, który ma uprawnienie, com.apple.rootless.install.heritable
, pozwalające na ominięcie restrykcji systemu plików SIP przez dowolne z jego procesów potomnych.
Demon system_installd
będzie instalował pakiety podpisane przez Apple.
Badacze odkryli, że podczas instalacji pakietu podpisanego przez Apple (.pkg), system_installd
wykonuje wszystkie skrypty po instalacji zawarte w pakiecie. Te skrypty są wykonywane przez domyślną powłokę, zsh
, która automatycznie wykonuje polecenia z pliku /etc/zshenv
, jeśli istnieje, nawet w trybie nieinteraktywnym. To zachowanie mogło zostać wykorzystane przez atakujących: tworząc złośliwy plik /etc/zshenv
i czekając, aż system_installd
wywoła zsh
, mogli wykonać dowolne operacje na urządzeniu.
Ponadto odkryto, że /etc/zshenv
mogło być używane jako ogólna technika ataku, nie tylko do ominięcia SIP. Każdy profil użytkownika ma plik ~/.zshenv
, który zachowuje się tak samo jak /etc/zshenv
, ale nie wymaga uprawnień root. Ten plik mógłby być użyty jako mechanizm trwałości, uruchamiający się za każdym razem, gdy zsh
się uruchamia, lub jako mechanizm podnoszenia uprawnień. Jeśli użytkownik administrujący podnosi uprawnienia do roota za pomocą sudo -s
lub sudo <polecenie>
, plik ~/.zshenv
zostanie uruchomiony, efektywnie podnosząc uprawnienia do roota.
W CVE-2022-22583 odkryto, że ten sam proces system_installd
nadal mógł być wykorzystywany, ponieważ umieszczał skrypt po instalacji w losowo nazwanym folderze chronionym przez SIP wewnątrz /tmp
. Problem polegał na tym, że /tmp
samo w sobie nie jest chronione przez SIP, więc było możliwe zamontowanie na nim obrazu wirtualnego, a następnie instalator umieściłby tam skrypt po instalacji, odmontował obraz wirtualny, ponownie utworzył wszystkie foldery i dodał skrypt po instalacji z ładunkiem do wykonania.
Zidentyfikowano lukę, w której fsck_cs
został wprowadzony w błąd, aby uszkodzić istotny plik, ze względu na jego zdolność do śledzenia linków symbolicznych. Konkretnie, atakujący stworzyli link od /dev/diskX
do pliku /System/Library/Extensions/AppleKextExcludeList.kext/Contents/Info.plist
. Wykonanie fsck_cs
na /dev/diskX
doprowadziło do uszkodzenia Info.plist
. Integralność tego pliku jest kluczowa dla Systemu Integrity Protection (SIP) systemu operacyjnego, który kontroluje ładowanie rozszerzeń jądra. Po uszkodzeniu, zdolność SIP do zarządzania wykluczeniami jądra jest zagrożona.
Polecenia do wykorzystania tej luki to:
Wykorzystanie tej podatności ma poważne konsekwencje. Plik Info.plist
, zwykle odpowiedzialny za zarządzanie uprawnieniami do rozszerzeń jądra, staje się nieskuteczny. Dotyczy to niemożności umieszczenia na czarnej liście określonych rozszerzeń, takich jak AppleHWAccess.kext
. W rezultacie, przy mechanizmie kontroli SIP wyłączonym, to rozszerzenie może być załadowane, co umożliwia nieautoryzowany odczyt i zapis do pamięci RAM systemu.
Było możliwe zamontowanie nowego systemu plików nad chronionymi folderami SIP w celu ominięcia ochrony.
System jest ustawiony na rozruch z wbudowanego obrazu dysku instalacyjnego w Install macOS Sierra.app
w celu aktualizacji systemu operacyjnego, wykorzystując narzędzie bless
. Użyta komenda jest następująca:
Bezpieczeństwo tego procesu może zostać zagrożone, jeśli atakujący zmieni obraz aktualizacji (InstallESD.dmg
) przed uruchomieniem. Strategia polega na zastąpieniu dynamicznego ładowacza (dyld) złośliwą wersją (libBaseIA.dylib
). Ta zamiana powoduje wykonanie kodu atakującego podczas inicjowania instalatora.
Kod atakującego przejmuje kontrolę podczas procesu aktualizacji, wykorzystując zaufanie systemu do instalatora. Atak polega na zmianie obrazu InstallESD.dmg
poprzez metodę swizzling, szczególnie kierując się do metody extractBootBits
. Pozwala to na wstrzyknięcie złośliwego kodu przed użyciem obrazu dysku.
Co więcej, w InstallESD.dmg
znajduje się BaseSystem.dmg
, który służy jako system plików główny kodu aktualizacji. Wstrzyknięcie dynamicznej biblioteki pozwala złośliwemu kodowi działać w procesie zdolnym do zmiany plików na poziomie systemu operacyjnego, znacząco zwiększając potencjał kompromitacji systemu.
W tej prezentacji z DEF CON 31 pokazano, jak systemmigrationd
(który może ominąć SIP) wykonuje skrypt bash i perl, które mogą być wykorzystane za pomocą zmiennych środowiskowych BASH_ENV
i PERL5OPT
.
CVE-2023-42860
Jak opisano w tym wpisie na blogu, skrypt postinstall
z pakietów InstallAssistant.pkg
był wykonywany:
i było możliwe utworzenie symlinka w ${SHARED_SUPPORT_PATH}/SharedSupport.dmg
, który pozwalał użytkownikowi odblokować dowolny plik, omijając ochronę SIP.
com.apple.rootless.install
Uprawnienie com.apple.rootless.install
pozwala ominąć SIP
Uprawnienie com.apple.rootless.install
jest znane z omijania System Integrity Protection (SIP) w macOS. Zostało to szczególnie wspomniane w kontekście CVE-2022-26712.
W tym konkretnym przypadku usługa XPC systemu znajdująca się w /System/Library/PrivateFrameworks/ShoveService.framework/Versions/A/XPCServices/SystemShoveService.xpc
posiada to uprawnienie. Pozwala to powiązanemu procesowi omijać ograniczenia SIP. Ponadto ta usługa prezentuje metodę, która pozwala na przenoszenie plików bez stosowania żadnych środków bezpieczeństwa.
Uszczelnione migawki systemu
Uszczelnione migawki systemu to funkcja wprowadzona przez Apple w macOS Big Sur (macOS 11) jako część mechanizmu System Integrity Protection (SIP), zapewniająca dodatkową warstwę bezpieczeństwa i stabilności systemu. Są to w zasadzie wersje tylko do odczytu woluminu systemowego.
Oto bardziej szczegółowe spojrzenie:
System niemutowalny: Uszczelnione migawki systemu sprawiają, że wolumin systemowy macOS jest "niemutowalny", co oznacza, że nie można go modyfikować. Zapobiega to nieautoryzowanym lub przypadkowym zmianom w systemie, które mogłyby zagrażać bezpieczeństwu lub stabilności systemu.
Aktualizacje oprogramowania systemowego: Podczas instalowania aktualizacji lub uaktualnień macOS tworzona jest nowa migawka systemu. Wolumin startowy macOS używa wtedy APFS (Apple File System) do przełączenia się na tę nową migawkę. Cały proces stosowania aktualizacji staje się bezpieczniejszy i bardziej niezawodny, ponieważ system zawsze może powrócić do poprzedniej migawki, jeśli coś pójdzie nie tak podczas aktualizacji.
Separacja danych: W połączeniu z koncepcją separacji woluminu danych i systemu wprowadzoną w macOS Catalina, funkcja uszczelnionych migawek systemu zapewnia, że wszystkie dane i ustawienia są przechowywane na osobnym woluminie "Dane". Ta separacja sprawia, że dane są niezależne od systemu, co upraszcza proces aktualizacji systemu i zwiększa bezpieczeństwo systemu.
Pamiętaj, że te migawki są automatycznie zarządzane przez macOS i nie zajmują dodatkowej przestrzeni na dysku, dzięki możliwościom współdzielenia przestrzeni w APFS. Ważne jest również zauważenie, że te migawki różnią się od migawek Time Machine, które są dostępnymi dla użytkownika kopiami zapasowymi całego systemu.
Sprawdź migawki
Polecenie diskutil apfs list
wyświetla szczegóły woluminów APFS i ich układ:
W poprzednim wyniku można zobaczyć, że dostępne dla użytkownika lokalizacje są zamontowane pod /System/Volumes/Data
.
Co więcej, migawka woluminu systemowego macOS jest zamontowana w /
i jest uszczelniona (podpisana kryptograficznie przez system operacyjny). Dlatego jeśli SIP zostanie zignorowany i zmodyfikowany, system nie uruchomi się.
Możliwe jest również zweryfikowanie, czy uszczelnienie jest włączone, wykonując:
Ponadto, dysk migawkowy jest również zamontowany jako tylko do odczytu:
WhiteIntel to wyszukiwarka zasilana przez dark web, która oferuje darmowe funkcje do sprawdzenia, czy firma lub jej klienci nie zostali skompromitowani przez złośliwe oprogramowanie kradnące informacje.
Ich głównym celem WhiteIntel jest zwalczanie przejęć kont i ataków ransomware wynikających z złośliwego oprogramowania kradnącego informacje.
Możesz odwiedzić ich stronę internetową i wypróbować ich silnik za darmo pod adresem:
Last updated