Jak można włamać się na dowolną maszynę z Linuksem poprzez grub2 bezpieczny?

52

W jaki sposób zdolność osoby, która uzyskała fizyczny dostęp do twojego komputera, do zrootowania się tymi krokami w jakikolwiek sposób jest bezpieczna?

  1. Gdy otworzy się menu Grub2, naciśnij, e aby edytować opcje startu Linuksa
  2. Zmiana:

    "linux   /vmlinuz-2.6.35-23-generic root=UUID=e7f1e48d-0015-485f-be7d-836217a31312 ro   quiet splash" 
    

    do:

    "linux   /vmlinuz-2.6.35-23-generic root=UUID=e7f1e48d-0015-485f-be7d-836217a31312 ro init=/bin/bash"
    
  3. Teraz masz dostęp do roota:

    mount -o remount,rw /
    passwd user
    mount -o remount,ro / 
    sync
    
  4. uruchom ponownie komputer i wygrasz.

Moje pytanie brzmi: w jaki sposób można włamać się na dowolną maszynę z Linuksem za pomocą grub2 bezpiecznie? Nie rozumiem tego faktu o Linuksie, dziękuję za odpowiedzi.

Clutchy
źródło
51
Kto powiedział, że fizyczny dostęp musi stać się niemożliwy? Gdy ktoś ma fizyczny dostęp, WSZYSTKIE zakłady są wyłączone. Właściciel maszyny powinien - ZAWSZE - mieć dostęp do swojej maszyny, gdy będzie obok niej. W przeciwnym razie można by go zburzyć bez możliwości odzyskania.
Rinzwind
7
i możesz na to narzekać: ale co powiesz o włożeniu na żywo DVD / USB do systemu? Lub wyjmując dysk, wkładając go do innego komputera i wkładając dddysk? A „linux”? Działa z innymi systemami, które również używają gruba ... z drugiej strony ... zepsuje się okno ... prawdopodobnie możesz tylko sformatować system: P
Rinzwind
10
Aby być w pełni zabezpieczonym, potrzebujesz tego rozwiązania
Anwar,
5
Och, żadnych reklam! @Clutchy odkrył nasz sekret. Wszyscy musimy teraz wziąć kapsułki z cyjankiem.
paulzag
3
@paulzag Zrozumiałem, uruchomię mechanizm samozniszczenia serwerowni. Chwała RMS!
Kaz Wolfe

Odpowiedzi:

108

W jaki sposób zdolność osoby, która uzyskała fizyczny dostęp do twojego komputera, do rootowania [przy użyciu Grub / Bash] w jakikolwiek sposób jest bezpieczna?

Ponieważ jeśli Linux zdecyduje się to zrobić, hakerzy wykorzystają inne luki w zabezpieczeniach. Pierwszą zasadą bezpieczeństwa jest to, że jeśli mam fizyczny dostęp do twojego systemu, gra się kończy. Wygrałem.

Ponadto wyobraź sobie, że Twój serwer X zepsuł się i nie masz już GUI. Musisz uruchomić system w konsoli odzyskiwania, aby to naprawić, ale nie możesz, bo to nie jest bezpieczne. W tym przypadku masz całkowicie zepsuty system, ale hej, przynajmniej jest „bezpieczny!”

Ale Kaz, jak to możliwe? Ustawiłem hasło na Grub, abyś nie mógł zmienić mojego initna Bash!

Och, zrobiłeś, prawda? Ciekawe, bo to wygląda na twój album ze zdjęciami. GRUB nie ma żadnego nieodłącznego współczynnika bezpieczeństwa. To tylko bootloader , a nie krok w bezpiecznym łańcuchu rozruchu i uwierzytelniania. „Hasło”, które ustawiłeś, jest naprawdę dość łatwe do ominięcia.

To i który sysadmin nie ma na sobie napędu rozruchowego na wypadek awarii?

Ale jak?! Nie znasz mojego hasła (które całkowicie nie jest P@ssw0rdbtw)

Tak, ale to nie powstrzymuje mnie przed otwarciem komputera i wyciągnięciem dysku twardego. Stamtąd jest kilka prostych kroków, aby zamontować dysk na moim komputerze, zapewniając mi dostęp do całego systemu. Ma to również niesamowitą zaletę obchodzenia hasła BIOS. To lub mógłbym właśnie zresetować CMOS. Albo / lub.

Więc ... jak mogę nie pozwolić ci uzyskać dostępu do moich danych?

Prosty. Trzymaj swój komputer z dala ode mnie. Jeśli mogę go dotknąć, uzyskać dostęp do klawiatury, włożyć własne dyski flash lub rozebrać na części, mogę wygrać.

Czy mogę po prostu umieścić komputer w centrum danych? Te są dość bezpieczne, prawda?

Tak, są. Ale zapominasz, że ludzie też można hakować, a mając wystarczająco dużo czasu i przygotowań, prawdopodobnie mógłbym dostać się do tego centrum danych i wyssać z komputera wszystkie te słodkie, słodkie dane. Ale dygresję. Mamy tutaj do czynienia z prawdziwymi rozwiązaniami.

Okej, więc nazwałeś mój blef. Nie mogę umieścić go w centrum danych. Czy mogę po prostu zaszyfrować mój folder domowy lub coś takiego?

Oczywiście że możesz! To twój komputer! Czy to pomoże mnie zatrzymać? Nie jest w najmniejszym stopniu. Mogę po prostu zastąpić coś ważnego, na przykład /usr/bin/firefoxwłasnym złośliwym programem. Następnym razem, gdy otworzysz Firefoksa, wszystkie twoje tajne dane zostaną przeniesione na jakiś tajny serwer gdzieś tajny. I nawet nie będziesz wiedzieć. Lub, jeśli mam częsty dostęp do twojego komputera, mogę po prostu skonfigurować folder domowy do kopiowania do /usr/share/nonsecrets/home/dowolnej innej (niezaszyfrowanej) lokalizacji.

Dobra, a co z pełnym szyfrowaniem dysku?

To ... właściwie całkiem niezłe. Jednak nie jest jeszcze idealny! Zawsze mogę wykonać atak rozruchowy przy użyciu mojej zaufanej puszki sprężonego powietrza. Lub mogę po prostu podłączyć keylogger sprzętowy do twojego komputera. Jedno jest oczywiście łatwiejsze od drugiego, ale sposób nie ma znaczenia.

W zdecydowanej większości przypadków jest to dobre miejsce zatrzymania. Może sparujesz go z TPM (omówionym poniżej), a ty będziesz złoty. O ile nie rozgniewałeś trzyliterowej agencji lub bardzo zmotywowanego hakera, nikt nie przejdzie wysiłku wymaganego na tym etapie.

Oczywiście nadal mogę zmusić Cię do zainstalowania złośliwego oprogramowania / backdoorów, oferując PPA lub podobny, ale przechodzi to w bardzo mroczny obszar zaufania użytkowników.

Więc ... w jaki sposób iPhone'y są tak bezpieczne? Nawet przy fizycznym dostępie niewiele możesz zrobić.

Cóż, tak i nie. Chodzi mi o to, że gdybym był wystarczająco zmotywowany, mógłbym przeczytać układ flash i uzyskać wszystko, czego potrzebuję. Ale iPhone'y są zasadniczo różne, ponieważ są całkowicie zablokowaną platformą. Ale jednocześnie poświęcasz użyteczność i umiejętność powrotu do zdrowia po katastrofalnych awariach. GRUB (z wyjątkiem bardzo specjalnie zaprojektowanych) nie ma być łańcuchem w systemie bezpieczeństwa. W rzeczywistości większość systemów Linux ma swoje łańcuchy bezpieczeństwa uruchamiane po rozruchu, więc po zakończeniu pracy przez GRUBA.

Ponadto iPhone'y mają funkcję wymuszania podpisu kryptograficznego (omówioną również poniżej), co bardzo utrudnia złośliwemu oprogramowaniu przedostanie się do telefonu za pośrednictwem legalnych ścieżek.

Ale co z TPM / SmartCards / [wstaw tutaj technologię kryptograficzną]?

Cóż, teraz łączysz fizyczne bezpieczeństwo z równaniem, staje się jeszcze bardziej skomplikowane. Ale tak naprawdę nie jest to rozwiązanie, ponieważ moduły TPM są stosunkowo słabe i całe szyfrowanie nie odbywa się na chipie. Jeśli twój TPM jest (w jakiś sposób) wystarczająco silny, gdy szyfruje sam układ (niektóre bardzo fantazyjne dyski twarde mają coś takiego), klucz nigdy nie zostanie ujawniony, a takie ataki jak rozruch przy zimnym rozruchu są niemożliwe. Jednak klucze (lub nieprzetworzone dane) mogą nadal znajdować się w magistrali systemowej, co oznacza, że ​​można je przechwycić.

Mimo to mój keylogger sprzętowy nadal może uzyskać twoje hasło i mogę łatwo załadować na twoje oprogramowanie złośliwe oprogramowanie, takie jak exploit Firefox, o którym wspominałem wcześniej. Wszystko, czego potrzebuję, to opuścić dom / komputer na może godzinę.

Teraz, jeśli weźmiesz ze sobą swoją kartę TPM / kartę inteligentną / cokolwiek, a całe szyfrowanie odbywa się na chipie (co oznacza, że ​​twój klucz nie jest w ogóle przechowywany w pamięci RAM), praktycznie nie mogę się dostać do wszystko, chyba że (użytkownik) się poślizgnie i coś zapomni. To znaczy, chyba że znajdę jakiś sposób na odczytanie (niezaszyfrowanego) klucza z magistrali systemowej.

Ale co, jeśli mam jakąś formę wymuszania podpisu kryptograficznego / cyfrowego we wszystkich moich programach, aby upewnić się, że są one zgodne z prawem?

Jak pokazują różne firmy smartfonów, jest to bardzo dobry sposób radzenia sobie z bezpieczeństwem. Teraz unieważniłeś moją zdolność do wstrzykiwania kodu na twoją maszynę, aby robić niecne rzeczy, co jest plusem. W efekcie wyłączyłeś moją zdolność do zdalnego utrzymywania stałego dostępu do twojego komputera, co jest ogromnym plusem.

Jednak wciąż nie jest to idealna metoda! Wymuszanie podpisu cyfrowego nie zatrzyma na przykład keyloggera sprzętowego. Musi również być całkowicie wolny od błędów, co oznacza, że ​​nie ma sposobu, aby znaleźć exploita, który pozwoli mi załadować własny certyfikat do magazynu certyfikatów twojego komputera. Ponadto oznacza to, że każdy plik wykonywalny w systemie musi być podpisany . O ile nie chcesz ręcznie przejść przez to wszystko, bardzo trudno będzie znaleźć pakiety Apt i tym podobne, które mają podpisy cyfrowe na wszystkim. W podobny sposób blokuje to uzasadnione wykorzystanie niepodpisanych plików wykonywalnych, a mianowicie odzyskiwanie. Co się stanie, jeśli złamiesz coś ważnego i nie masz (podpisanego) pliku wykonywalnego, aby to naprawić? Cóż, idzie twój system.

Tak czy inaczej, wysiłek, aby to zrobić w Linuksie, został praktycznie zaniechany i nie działa już w przypadku nowych jąder, więc musisz stworzyć własne.

Więc nie można trzymać cię z dala od mojego komputera?

Skutecznie tak, przepraszam. Jeśli mam fizyczny dostęp i wystarczającą motywację, zawsze można dostać się do systemu. Bez wyjątków.

W rzeczywistości jednak większość złych ludzi nie będzie próbować posuwać się tak daleko, tylko po zdjęcia kotów. Zwykle samo szyfrowanie całego dysku (lub nawet uruchamianie Linuksa!) Wystarcza, aby powstrzymać większość dzieciaków skryptowych od zdobycia dwóch sekund sławy.

TL; DR: Po prostu nie pozwól osobom, którym nie ufasz, w pobliżu twojego komputera. To zazwyczaj wystarcza.

Kaz Wolfe
źródło
Lub po prostu zaszyfruj partycję domową.
user13161,
5
@ user13161 To wciąż pozwala złośliwemu bytowi zastąpić coś /bin/bashwłasnym skryptem zła, który zrobi Bad Things z nieszyfrowanym folderem domowym.
Kaz Wolfe
GRUB pozwala na użycie szyfrowanej partycji rozruchowej LUKS, w której scenariuszu nie można pominąć hasła do uruchomienia. Zobacz wiki.archlinux.org/index.php/Dm-crypt/… .
v7d8dpo4 27.10.16
@ v7d8dpo4: Szyfrowanie /bootjest w rzeczywistości bezużyteczne imo. Dodaje hasło rozruchowe, ale nadal musisz odszyfrować, /aby faktycznie zrobić coś pożytecznego, więc dodajesz trochę dodatkowego narzutu za niewielką lub żadną korzyść. Ponadto mogę po prostu użyć własnego dysku Grub, aby ominąć szyfrowany rozruch, jeśli tylko /boot jest chroniony. Albo mogę zwyczajnie odczytać dysk.
Kaz Wolfe
2
iPhone'y (chyba od 6) mają nie tylko pełne szyfrowanie „dyskowe”, ale są powiązane z kodem PIN / loginem biometrycznym. Jeśli więc chcesz, aby Twój komputer odmówił rozruchu bez interwencji, Ty również możesz powiązać jego szyfrowanie dysku ze sprzętowym tokenem / hasłem / modułem TPM. To po prostu sporo pracy.
pjc50 27.10.16
17

Jeśli chcesz to przywiązać, użyj hasła . Z linku:

GRUB 2 Uwagi dotyczące ochrony hasłem

Grub 2 może ustalić wymagania dotyczące hasła dla:

  • Wszystkie menu
  • Określone menu
  • Dla określonych użytkowników: na przykład użytkownik „Jane” może uzyskać dostęp do systemu Ubuntu, ale nie do trybu odzyskiwania systemu Windows, który jest dostępny tylko dla administratora „John”.
  • Administrator musi włączyć ochronę hasłem ręcznie, edytując pliki systemowe GRUB 2.

  • Użytkownicy i hasła powinny zostać zidentyfikowane w /etc/grub.d/00_headerpliku skryptu GRUB 2 lub innym.

  • O ile nie jest wymagana uniwersalna ochrona wszystkich menu, należy zidentyfikować określone wpisy:

    • Ręcznie, edytując /etc/grub.d/skrypty Grub 2, takie jak 10_linuxi30_os-prober
    • Ręcznie, edytując niestandardowy plik konfiguracyjny utworzony przez użytkownika.

    • Każda z powyższych metod umożliwia GRUB 2 automatyczne dodawanie wymagania hasła do pliku konfiguracyjnego (grub.cfg) przy każdym wykonaniu aktualizacji-grub.

    • Ręcznie przez edycję /boot/grub/grub.cfg. Edycje tego pliku zostaną usunięte po update-gruburuchomieniu, a ochrona hasłem zostanie utracona.

  • Jeśli włączona jest jakakolwiek forma ochrony hasłem GRUB 2, nazwa i hasło administratora są wymagane, aby uzyskać dostęp do wiersza poleceń GRUB 2 i trybów edycji menu.

  • Nazwa użytkownika i / lub hasło nie muszą być takie same jak nazwa / hasło logowania Ubuntu.
  • O ile nie jest używana funkcja szyfrowania hasła w GRUB 2, hasło jest przechowywane jako zwykły tekst w czytelnym pliku. Wskazówki dotyczące korzystania z tej funkcji znajdują się w sekcji Szyfrowanie hasła.

Domyślnie (!) W tym przypadku użyteczność przewyższa bezpieczeństwo. Jeśli nie możesz ufać ludziom w pobliżu, zawsze miej przy sobie maszynę. Ludzie, którzy potrzebują większego bezpieczeństwa, zwykle szyfrują cały system, co wymaga hasła.

Rinzwind
źródło
Bądźmy szczerzy, hasła te można łatwo ominąć fizycznym dostępem. Chronią system przed noobami, ale nie przed atakami z pewnymi podstawowymi umiejętnościami (używanie Google może już wystarczyć) i fizycznym dostępem.
Bajt Dowódca
3

Twój celowy hack zaczyna się od tego:

  1. Kiedy otworzy się menu Grub2, naciśnij 'e', ​​aby edytować opcje startu Linuksa

Ale możesz zabezpieczyć hasłem eopcję, jak omówiono tutaj: Jak dodać ochronę hasłem GRUB do procesu ładowania systemu operacyjnego zamiast podczas edycji opcji rozruchu

Możesz wykonać dodatkowy krok zaszyfrowania hasła grub zgodnie z opisem w linku. Rzeczywiście, być może 3% populacji (zgadnijcie) używające Linux / Ubuntu w domu, jest dobrym pomysłem dla Administratorów Systemów, aby zabezpieczyć się przed działaniem efunkcji w systemach produkcyjnych. Wyobrażam sobie, że jeśli Ubuntu będzie używane w pracy, to od 30 do 40% będzie go używać także w domu, a może 10% z nich nauczy się robić to ena swoich domowych systemach.

Dzięki Twojemu pytaniu właśnie dowiedzieli się więcej. Z powyższym linkiem administratorzy systemu mają jednak inne zadanie na liście zadań do wykonania w celu ochrony środowisk produkcyjnych.

WinEunuuchs2Unix
źródło
1
Bądźmy szczerzy, hasła te można łatwo ominąć fizycznym dostępem. Chronią system przed noobami, ale nie przed atakami z pewnymi podstawowymi umiejętnościami (używanie Google może już wystarczyć) i fizycznym dostępem.
Bajt Dowódca
@ByteCommander Chodzi o fizyczny dostęp. System BIOS można skonfigurować za pomocą hasła administratora, aby nigdy nie można go było uruchomić z dysku USB lub DVD. Ktoś może otworzyć skrzynkę, krótkie dwa piny na płycie głównej i hasło są resetowane do pustych (hasło nie jest wymagane, aby zmienić kolejność uruchamiania systemu BIOS).
WinEunuuchs2Unix
0

Aby grub był bezpieczny, musisz chronić dostęp do niego. Można to zrobić po prostu za pomocą hasła dysku twardego, a mówię tutaj o bezpieczeństwie dysku, w którym jest ono przechowywane w oprogramowaniu wewnętrznym samego dysku. Dysku nie można odczytać ani zapisać na nim. Dlatego nie tylko grub jest niedostępny bez hasła, ale również twoje dane.

Ponieważ hasło jest przechowywane na samym dysku, przeniesienie go do innego systemu nie pomoże hakerowi.

Istnieje oprogramowanie, wokół którego można usunąć hasło z dysków niektórych producentów, ale również skutecznie czyści dysk. Twoje dane są więc nadal bezpieczne.

Scooby-2
źródło
Późny komentarz, ale chciałbym zauważyć, że czasami można go pokonać w prosty sposób. Może być jakieś (udokumentowane) polecenie producenta, aby wyczyścić hasło dysku twardego bez wyzwalania formatu. Podobnie mogę po prostu „pożyczyć” dyski twarde i umieścić je we własnym kontrolerze - hasło jest (zwykle) przechowywane w pamięci NVRAM kontrolera, a nie na samych talerzach.
Kaz Wolfe
@Kaz, masz absolutną rację w tym, co mówisz, ale należy położyć nacisk na słowo „okazjonalnie” w zdaniu „można to czasami pokonać w prosty sposób”. W miarę udoskonalania technologii dysków twardych, w przeciwieństwie do tego, co mówisz, prawie wszyscy producenci przechowują teraz swoje oprogramowanie układowe i hasła na talerzach, więc zmiana karty kontrolera nie pomoże. Istnieje oprogramowanie do odblokowywania dysków bez czyszczenia danych, ale działa tylko na starych dyskach.
Scooby-2