Jak naprawdę można uzyskać poufne informacje z partycji wymiany?


8

Kiedy szukam w Google tego pytania, otrzymuję tylko informacje na temat ochrony poufnych danych, szyfrowania wymiany i tego, jak „niebezpieczne” może być utrzymanie „normalnej” wymiany w systemie Linux.

Ale nie mogłem znaleźć żadnego oprogramowania, metody ani poradnika, aby naprawdę pobrać (odczytać) dowolny fragment danych z partycji wymiany.

Moje pytanie brzmi: będąc „normalnym” obywatelem mieszkającym w Europie Zachodniej, czy naprawdę konieczne jest wyczyszczenie lub zaszyfrowanie wymiany na moim komputerze? I zanim ktoś odpowie „tak”, czy mogę uzyskać przykład, w jaki sposób mogę przetestować i wyciec moją własną wymianę, aby rzeczywiście zobaczyć, jakie dane są niezabezpieczone pomimo mojego zaszyfrowanego domu?


1
Można znaleźć jedną metodę na to pytanie
Nattgew,

Odpowiedzi:


10

będąc „normalnym” obywatelem mieszkającym w zachodniej Europie, czy naprawdę konieczne jest wyczyszczenie lub zaszyfrowanie wymiany na moim komputerze?

Jest to osobisty osąd, który zależy od tego, jak bardzo cenisz prywatność swoich danych i ile chcesz chronić swoje dane przed ujawnieniem, gdyby wpadły w ręce atakującego. Załóżmy, że masz laptopa i pewnego dnia zostanie on skradziony - jak prawdopodobne jest, że złodziej spróbuje wyodrębnić hasła lub klucze szyfrujące lub w inny sposób prywatne dane, a czy ci zależy? Wielu ludzi to nie obchodzi, ale niektórzy tak. Trzeba przyznać, że większość złodziei po prostu sprzedałaby laptopa w celu uzyskania natychmiastowych korzyści finansowych, ale zdarzają się przypadki, w których osoba atakująca może być zmotywowana do podjęcia dalszych kroków w celu uzyskania dostępu do samych danych.

I zanim ktoś odpowie „tak”, czy mogę uzyskać przykład, w jaki sposób mogę przetestować i wyciec moją własną wymianę, aby rzeczywiście zobaczyć, jakie dane są niezabezpieczone pomimo mojego zaszyfrowanego domu?

Pamięć dowolnego procesu może potencjalnie zostać zamieniona na przestrzeń wymiany. Wyciek pamięci może być niebezpieczny - oczywistym przykładem jest Heartbleed - zobacz, jak użyłem Heartbleed do kradzieży prywatnego klucza szyfrowania witryny . Pamięć ujawniona przez Heartbleed należy tylko do jednego procesu, natomiast pamięć potencjalnie narażona przez przestrzeń wymiany należy do każdego procesu. Wyobraź sobie proces wymiany klucza prywatnego lub listy haseł (np. Przeglądarki internetowej) - te elementy pojawią się w postaci zwykłego tekstu w przestrzeni wymiany. Wyodrębnianie ich polega na przeszukiwaniu pamięci dla określonych wzorców danych - mogą to być dane tekstowe ASCII widoczne przezstringslub może być bardziej zaangażowany, jak w Heartbleed (gdzie test polega na tym, że niektóre kolejne bajty są dzielnikiem publicznego klucza kryptograficznego). Jeśli masz zaszyfrowaną partycję / home, oczywistą rzeczą jest poszukiwanie bloku danych, który tworzy klucz szyfrowania, który odblokuje dane użytkownika.

Przykład roboczy:

  • zrobić, bash -c 'echo SECRET=PASSWORD > /dev/null; sleep 1000'aby utworzyć proces bash z pewnymi tajnymi danymi na swoim stosie

  • zrobić, sysctl vm.swappiness=100aby zwiększyć swapiness (nie jest to konieczne, ale może ułatwić przykład)

  • uruchom top -c, naciśnij f, włącz kolumnę SWAP, naciśnij q, aby wrócić do widoku głównego procesu, przewiń w dół, aż zobaczysz bash -cproces

  • w innym terminalu, zapisz program Chimnay Kanchi od Linuksa: Jak obciążyć pamięć systemową? aby usemem.c, go skompilować gcc -o usemem usemem.ci uruchomić usemem &wielokrotnie w terminalu. Spowoduje to zużycie do 512 MB bloków pamięci na raz. (Nie ma znaczenia, co powoduje zamianę pamięci, może to być normalne użycie systemu, proces ucieczki lub celowy atak, wynik końcowy jest taki sam)

  • patrz na górę, poczekaj na bash -czamianę (wartość kolumny SWAP> 0)

  • teraz biegnij strings /dev/sdaX | grep SECRETtam, gdzie X jest twoją parą wymiany

  • Gratulacje - właśnie wyodrębniłeś „tajne” dane z partycji wymiany. zobaczysz wiele kopii TAJEMNEGO tekstu, a następnie „hasło”, kopie zawierające pełny wiersz poleceń wyciekły z nadrzędnego procesu bash, najwyższego procesu i procesu „bash -c”. Linie, które nie zawierają pełnego wiersza poleceń, wyciekły z procesu „bash -c”.

  • Aby udowodnić, że tajemnice wyciekają z pamięci procesu, a nie tylko z wiersza poleceń, dodaj wiersz unsigned char secret[] = "SECRET=XXXX";do usemem.c (tuż poniżej unsigned long mem;wiersza). Ponownie skompiluj i uruchom usemem &wielokrotnie strings /dev/sdaX | grep SECRET. Tym razem zobaczysz wyciek tajemnicy „XXXX”.


+1 za całkiem dobre wyjaśnienie i świetny przykład.
Jobin

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.