Często słyszę ludzi powołujących się sudo
na jedną z głównych barier przed złośliwym oprogramowaniem infekującym komputer z systemem Linux.
Najczęstszy argument wydaje się przebiegać w następujący sposób: Do zmodyfikowania konfiguracji systemu wymagane są uprawnienia rootowania, a do uzyskania uprawnień roota wymagane jest hasło, więc złośliwe oprogramowanie nie może modyfikować konfiguracji systemu bez pytania o hasło.
Wydaje mi się jednak, że domyślnie w większości systemów, gdy złośliwe oprogramowanie zainfekuje konto administratora, eskalacja uprawnień jest banalna - szkodliwe oprogramowanie musi tylko poczekać na uruchomienie użytkownika sudo
.
Jakie metody istnieją, aby złośliwe oprogramowanie zdobywało uprawnienia root'a podczas uruchamiania użytkownika sudo
i jak możemy się przed nim chronić?
Edycja: Jestem szczególnie zainteresowany ochroną przed zainfekowanym kontem administratora; to znaczy konto, które ma pełne uprawnienia roota sudo
(np. konto użytkownika w typowym systemie komputerowym).
startx
działa dobrze jako zwykły użytkownik. W rzeczywistości używam teraz X jako zwykłego użytkownika.Odpowiedzi:
Gdy kawałek złośliwego oprogramowania uzyska dostęp do konta użytkownika, może:
1. Utwórz alias bash (w bieżącej powłoce i in
~/.bashrc
) dla polecenia, które podszywa się pod[sudo] password for $USER:
monit i kradnie hasło użytkownika.2. Podobnie może umieścić plik wykonywalny o nazwie
sudo
w~/.bin
i zmodyfikowaćPATH
zmienną, aby osiągnąć ten sam efekt:PATH="$HOME/.bin:$PATH"
3. Złap naciśnięcia klawiszy przez serwer X, wypatruj słowa
sudo
, a następnie wypróbuj tekst między kolejnymi dwoma Enternaciśnięciami klawiszy jako hasło.4. Podobne działanie można wykonać w dowolnym środowisku (konsola, Wayland , X) przy użyciu np
$LD_PRELOAD
.5. Jeśli złośliwe oprogramowanie zainfekuje powłokę, która używa
sudo
isudo
buforuje dane uwierzytelniające, złośliwe oprogramowanie może stale sprawdzać, czy jest możliwesudo
bez hasła:Zapobieganie:
1 i 2. Użyj
\/bin/sudo
.\
Ignoruje aliasy i/bin/…
ignoruje$PATH
. Alternatywnie dodaj alias, taki jak:ssudo="\/bin/sudo"
i zawsze używajssudo
zamiastsudo
. Wydaje się mało prawdopodobne, aby wirus był wystarczająco sprytny, aby zmienić mapowanie tego aliasu.3. Unikaj wpisywania hasła podczas korzystania z X11. Zamiast tego użyj wirtualnej konsoli lub Westona .
5. Ustaw
timestamp_timeout=0
w/etc/sudoers
.Wydaje się, że jedynym sposobem na całkowite wyeliminowanie szansy na
sudo
wąchanie hasła jest całkowite uniknięcie go. Zamiast tego zaloguj się jako root do wirtualnej konsoli.Według Aleksandra Peslyaka : „jedynym bezpiecznym zastosowaniem dla su [i sudo] jest przejście z konta uprzywilejowanego na konto mniej uprzywilejowane…”
Na marginesie, sudo ma pewne środki zaradcze:
sudo
czytatty
zamiaststdin
, więcalias sudo='tee -a /tmp/sudo-password | sudo'
łamie sięsudo
(ale przechwytuje hasło).źródło
sudo
konfiguracji, ale tak czy inaczej, złośliwe oprogramowanie ma teraz wymagane hasłosudo
, więc jeśli użytkownik ma dostęp do roota, to samo robi złośliwe oprogramowanie.Nie ma prawdziwej ochrony.
Chroniony hasłem dostęp do sudo powraca do epoki przed złożonymi środowiskami powłoki z poleceniami wykonywanymi przez podkładki. Po przesłaniu hasła pojawi się okno, w którym shim może wykonywać polecenia za pośrednictwem sudo, bez powiadomienia i przy pełnej kontroli systemu.
Gdybym chciał uzyskać dostęp, stworzyłbym użyteczny shim dla bash, zsh i fish itp. Monitorowałbym wykonywane polecenia. Wkrótce po powrocie sudo ze statusem zero zacznę wydawać „sudo chmod + s / bin / sh” lub inne nieprzyjemne rzeczy.
W momencie, gdy sudo otrzyma zadowalające hasło i masz powłoki, które uruchamiają polecenia w celu wyświetlenia monitu, możesz mieć kłopoty. Nie ma żadnej ochrony poza optymizmem.
Inne odpowiedzi dotyczyły ochrony hasła. Jako agresor nie martwiłbym się tym. Skoncentruję się na czasie po podaniu hasła, gdy hasło nie jest potrzebne. To najbardziej ryzykowny czas, kiedy atakujący musi zrobić wszystko, aby całkowicie skompromitować system.
Chronisz się przed tym? Musisz chronić swoje pliki RC. Sprawdź wszelkie podkładki dystansowe lub inne polecenia używane w wierszach polecenia. Poszukaj koprocesów połączonych z powłoką i narzędzi używanych do utrzymania środowiska powłoki. Główną obroną byłyby narzędzia intruzów hosta, ale to już po fakcie. Zapobieganie atakom? Używanie tylko prostych powłok bez skomplikowanej automatycznej konfiguracji i aktywnych monitów - to środowisko, dla którego opracowano sudo.
Kiedyś grałem w gry z innymi programistami (lata 80-te), w których próbowaliśmy pisać rzeczy, które otrzymywałyby terminal, którego używał inny programista, do wstawiania poleceń - to w zasadzie ten sam problem. Ułatwiliśmy też osadzanie narzędzi, które wstawiałyby polecenia bez widocznego śladu. :)
źródło
Nie wiesz, o wszelkich metod nieupoważnionych użytkowników do uprawnieniami roota zysk, ale wiem, że coś można zrobić, aby nieco mniej niebezpieczne , jeśli chcesz powiedzieć. umożliwia skonfigurowanie szczegółowych uprawnień w celu zdefiniowania grup użytkowników z określonymi uprawnieniami oraz określonych poleceń, które mogą być uruchamiane przez niektórych użytkowników.
sudo
sudo
SUDO - KONTROLA GRANULARNA
Po prostu zaostrz swoje
sudo
zasady, tak jak nie ufasz użytkownikom :)źródło
sudo
. W szczególności mam na myśli normalne systemy komputerowe.Jeśli jesteś zainteresowany systemem, który Twoim zdaniem może być zagrożony, uruchom „Rootkit” i użyj „Tripwire”, aby sprawdzić integralność systemu plików.
Radziłbym również zaostrzyć uprawnienia sudo, ponieważ nie wszyscy użytkownicy mają dostęp do wszystkich poleceń root, a raczej dają dostęp do określonych poleceń za pośrednictwem SUDO.
źródło
Przede wszystkim spójrz na
/etc/sudoers
plik.Składnia będzie miała
user MACHINE=COMMANDS
format.Na przykład użytkownik root będzie miał
root ALL=(ALL) ALL
Oznacza to, że użytkownik root może uruchamiać dowolne (wszystkie) polecenia w dowolnym miejscu.Jeśli twój wpis również, oznacza
ALL=(ALL)
to, że jesteś prawie równy użytkownikowi root. Jeśli tak nie jest i masz tylko pewne ograniczone uprawnienia, atakujący / złośliwe oprogramowanie może zrobić tylko tyle, ile może zrobić twoje uprawnienie sudo.Wskazówki, które mogą Ci pomóc:
/etc/sudoers
plik.visudo
polecenia, aby edytować i modyfikować uprawnienia do pliku sudoers.Referencje: strona man sudoers i Linux z sudo sudoers człowieka
źródło