Chcesz uzyskać dostęp superużytkownika do systemu Linux? Oto niektóre z najlepszych sposobów wyliczania maszyny z systemem Linux.
Wyliczanie jest jednym z kluczowych etapów testów penetracyjnych. Jest to pierwsza rzecz do zrobienia, gdy zhakujesz system docelowy jako tester penetracyjny. Chociaż istnieje mnóstwo narzędzi do automatyzacji tego procesu, zawsze zaleca się ręczne przeszukiwanie i podwójne sprawdzanie systemu pod kątem potencjalnych wektorów eskalacji uprawnień.
Przyjrzyjmy się różnym sposobom ręcznego wyliczania systemu Linux w celu eskalacji uprawnień.
Dlaczego wyliczanie jest ważne dla eskalacji uprawnień?
Eskalacja uprawnień, znana również jako eskalacja uprawnień (EOP), jest podstawowym elementem testów penetracyjnych i metodologii testów penetracyjnych. Jak sama nazwa wskazuje, jest to etap, w którym próbujesz podnieść swoje uprawnienia do administratora lub, w systemach Linux, użytkownika root.
Aby uzyskać uprawnienia roota, musisz najpierw znaleźć lukę w systemie. Tutaj wchodzi w grę wyliczanie. Chociaż istnieją narzędzia do automatyzacji wyliczania, najczęściej ręczne i dokładne wyliczanie może wykryć błędne konfiguracje i inne luki w zabezpieczeniach, których nie wykrywają narzędzia.
1. Wyliczanie systemu
Pierwszą rzeczą, którą powinieneś zrobić po zdobyciu początkowej pozycji, jest poznanie systemu, do którego masz dostęp. Pomoże to zoptymalizować ładunki, aby pasowały do architektury i zapewnić maksymalną kompatybilność ładunków z systemem docelowym.
Na przykład, jeśli masz 64-bitowy exploit, musisz go zmodyfikować, jeśli twój system docelowy obsługuje tylko oprogramowanie 32-bitowe, ponieważ istnieje różnica między systemami 32-bitowymi i 64-bitowymi.
Znajomość wersji jądra pomoże również w wyszukiwaniu exploitów w sieci na wypadek, gdyby okazało się, że wersja jest nieaktualna i podatna na publiczne wykorzystanie. Oto kilka poleceń, które pomogą ci pobrać informacje o systemie:
Aby znaleźć informacje o systemie, takie jak wersja jądra, wersja systemu operacyjnego itp., wpisz:
cat /etc/informacje o procesorze
nazwa -a
Jeśli chcesz dowiedzieć się więcej o architekturze procesora, użyj polecenia lscpu:
lscpu
2. Wyliczanie procesów
Procesy to programy w trakcie wykonywania. Znajomość pełnej listy procesów w systemie Linux w połączeniu z kilkoma innymi taktykami wyliczania wymienione w tym przewodniku pomogą Ci zidentyfikować potencjalnie podatne na ataki procesy i wykorzystać je do podniesienia poziomu przywilej.
Na przykład, jeśli znajdziesz proces działający z uprawnieniami roota, możesz być w stanie wstrzyknąć do niego dowolny kod, co może doprowadzić do pomyślnej eskalacji uprawnień.
Możesz użyć polecenie ps z pomocniczy flagi, aby wyświetlić listę wszystkich procesów w systemie:
ps pom
3. Wyliczanie użytkowników i grup
Wyliczanie użytkowników i grup jest ważne, aby dowiedzieć się, kto ma dostęp do której części systemu. Wiedza o tym pozwala na efektywne określenie celów i zbudowanie skutecznej strategii ataku. Ponadto możesz tworzyć odpowiednie mapowania i dogłębnie rozumieć role i uprawnienia każdego konta.
Dostęp do kont uprzywilejowanych umożliwia wypróbowanie znanych kombinacji nazwy użytkownika i hasła. Zawartość pliku można wydrukować /etc/passwd I /etc/group pliki, aby uzyskać dostęp do listy użytkowników. Alternatywnie możesz także użyć polecenia getent.
Do uzyskać listę użytkowników w systemie Linux:
uzyskać hasło
Aby uzyskać listę grup:
Getent grupa
4. Badanie w poszukiwaniu wrażliwych plików
Wrażliwe pliki, takie jak /etc/passwd I /etc/shadow może potencjalnie ujawnić wiele informacji. Z /etc/shadow możesz znaleźć skróty haseł użytkowników i spróbować je złamać za pomocą narzędzia do łamania skrótów, takiego jak Hashcat lub John the Ripper.
Jest też /etc/sudoers plik, który, jeśli możesz go jakoś edytować, pozwoli modyfikować uprawnienia sudo dla użytkowników i grup.
5. Sprawdzanie uprawnień sudo
Właściwe zarządzanie uprawnieniami sudo ma kluczowe znaczenie dla bezpieczeństwa systemu Linux. Analiza uprawnień sudo zapewni wgląd w potencjalne wektory eskalacji uprawnień. Jeśli występują błędne konfiguracje, takie jak niektóre programy mają alarmujący poziom uprawnień, możesz być w stanie je wykorzystać, aby uzyskać dostęp do konta root.
To tylko przykład wielu ścieżek ataku, które mogą się otworzyć, gdy masz jasność uprawnień sudo w systemie Linux. Innym przykładem może być nadużywanie mechanizmu wstępnego ładowania biblioteki LD_PRELOAD, który można wyliczyć, patrząc na uprawnienia sudo.
sudo -l
6. Znajdowanie exploitów jądra Linuksa
Exploity jądra Linuksa są śmiertelne, ponieważ atakują rdzeń systemu operacyjnego działającego w zaatakowanym systemie. Z krytyczną wadą jądra będziesz mógł zrobić z systemem prawie wszystko.
Aby znaleźć exploity jądra, najpierw znajdź wersję jądra, a następnie użyj narzędzia takiego jak searchsploit lub za pomocą Google Dorks, znajdź odpowiedni exploit wpływający na dokładną wersję jądra działającego w systemie.
7. Eksploatacja plików binarnych SUID
SUID to skrót od Set Owner User ID po wykonaniu. Jest to specjalny typ uprawnień do plików, który po ustawieniu uruchamia program z uprawnieniami jego właściciela.
Jeśli program został utworzony przez użytkownika root i został dla niego ustawiony bit SUID, program po uruchomieniu miałby uprawnienia roota. Jak można nadużywać SUID? To proste.
Wylicz wszystkie pliki binarne z ustawionym bitem SUID, przejrzyj listę, znajdź plik binarny, dla którego masz uprawnienia do zapisu, i edytuj jego źródło, aby dodać ładunek. Możesz użyć polecenia find, aby wyszukać pliki binarne SUID i przekierować standardowe wyjście do /dev/null:
znajdź / -perm -4000 2>/dev/null
8. Przechwytywanie bibliotek
Czasami w systemie mogą działać programy korzystające z bibliotek, które nie są chronione przed zapisem. W takim scenariuszu można łatwo nadpisać używaną bibliotekę i przejąć kontrolę nad funkcjonalnością programu.
Jeśli masz szczęście i znajdziesz program działający jako root, możesz przejąć bibliotekę, od której zależy, i potencjalnie uzyskać dostęp do powłoki roota.
9. Badanie i przejmowanie zmiennych środowiskowych
Zmienne środowiskowe to specjalne typy zmiennych, które w pewnym stopniu definiują sposób działania systemu i programów. Ważną zmienną środowiskową jest zmienna PATH.
Przechowuje lokalizację wszystkich wykonywalnych plików binarnych w systemie. Możesz manipulować zmienną PATH i połączyć ją z innymi lukami, takimi jak przejęcie biblioteki, aby uzyskać dostęp do konta root.
Załóżmy na przykład, że istnieje plik wykonywalny z ustawionym bitem SUID. Aby działać poprawnie, wywołuje plik binarny bez definiowania jego pełnej ścieżki.
Możesz to wykorzystać, tworząc duplikat, złośliwą wersję pliku binarnego i aktualizując zmienną PATH lokalizacją złośliwy plik binarny, więc po uruchomieniu pliku wykonywalnego SUID złośliwy plik binarny zostanie uruchomiony jako root i będziesz mógł odrodzić powłokę root.
Co więcej, istnieje również duża szansa na znalezienie tajnych kluczy i haseł, po prostu przeglądając zmienne środowiskowe. Możesz wydrukować wszystkie zmienne środowiskowe za pomocą polecenia env:
śr
10. Znajdź artefakty w historii Bash
Często historia bieżącego użytkownika nie zostanie usunięta. Możesz to wykorzystać, aby potencjalnie uzyskać dostęp do poufnych informacji lub ponownie uruchomić poprzednie polecenia ze zmodyfikowanymi parametrami.
Chociaż prawdopodobnie nie doprowadzi to do eskalacji uprawnień, jest to dobre źródło wycieków informacji, aby dać ci jasność, co użytkownik zwykle robi w systemie.
11. Przechwytywanie wrażliwych zadań Cron
Zadania Cron są wbudowaną i wysoce zaradną funkcją Linuksa. W przypadku migracji z systemu Windows zadanie cron można bezpośrednio porównać z zaplanowanym zadaniem w systemie Windows.
Działa okresowo i wykonuje polecenia. Zarówno czas, w którym zostanie uruchomiony, jak i polecenia, które wykona, są z góry definiowane przez użytkownika. Czasami może się okazać, że kilka zadań crona jest podatnych na ataki, takie jak wstrzykiwanie symboli wieloznacznych, lub są one dostępne do zapisu przez użytkownika, na którego się zalogowałeś.
Możesz wykorzystać te luki, aby uzyskać dostęp administratora do systemu. Aby wykorzystać zadanie cron, musisz najpierw znaleźć podatną na ataki pracę. Oto polecenia wyświetlające aktualnie uruchomione zadania cron i inne istotne dane:
ls /etc/cron.d/
crontab -l -u
12. Wyświetlanie nieaktualnych pakietów
Po uzyskaniu dostępu do systemu, jednym z pierwszych kroków, które należy wykonać, jest sporządzenie listy wszystkich zainstalowanych pakietów oprogramowania i zestawienie ich zainstalowanych wersji z najnowszą wersją.
Istnieje możliwość, że zainstalowany jest jakiś mało znany pakiet, który może nie być często używany, ale jest krytycznie narażony na atak polegający na eskalacji uprawnień. Następnie możesz wykorzystać ten pakiet, aby uzyskać dostęp do konta root.
Użyj polecenia dpkg z plikiem -l tag, aby wyświetlić listę zainstalowanych pakietów w systemach opartych na Debianie i Ubuntu:
dpkg -l
W przypadku systemów RHEL/CentOS/Fedora użyj tego polecenia, aby wyświetlić listę zainstalowanych pakietów:
obr./min -qa
Teraz wiesz, jak ręcznie wyliczyć Linuksa w celu eskalacji uprawnień
Eskalacja uprawnień zależy wyłącznie od wyliczenia. Im więcej informacji masz dostęp, tym lepiej będziesz w stanie zaplanować strategie ataku.
Wydajne wyliczanie jest kluczem do ustanowienia przyczółka, eskalacji uprawnień i pomyślnego utrwalenia się w systemie docelowym. Chociaż robienie rzeczy ręcznie pomaga, niektóre zadania można przypisać zautomatyzowanym narzędziom, aby zaoszczędzić czas i wysiłek. Musisz wiedzieć o najlepszych narzędziach bezpieczeństwa do skanowania systemu w poszukiwaniu luk.