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?
encryption
swap
Kok
źródło
źródło
Odpowiedzi:
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.
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 przez
strings
lub 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 stosiezrobić,
sysctl vm.swappiness=100
aby 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ż zobaczyszbash -c
procesw innym terminalu, zapisz program Chimnay Kanchi od Linuksa: Jak obciążyć pamięć systemową? aby
usemem.c
, go skompilowaćgcc -o usemem usemem.c
i 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 -c
zamianę (wartość kolumny SWAP> 0)teraz biegnij
strings /dev/sdaX | grep SECRET
tam, gdzie X jest twoją parą wymianyGratulacje - 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żejunsigned long mem;
wiersza). Ponownie skompiluj i uruchomusemem &
wielokrotniestrings /dev/sdaX | grep SECRET
. Tym razem zobaczysz wyciek tajemnicy „XXXX”.źródło
To pytanie prowadzi nas do dyskusji na temat problemów między tworzeniem oprogramowania, takich jak oprogramowanie przechowujące wrażliwe dane w pamięci i szyfrowanie danych.
Na początek powinieneś przeczytać kilka artykułów dotyczących praktycznego tworzenia oprogramowania i szyfrowania danych.
Zacznij czytać ten artykuł: http://www.ibm.com/developerworks/library/s-data.html?ns-311
Mam nadzieję, że to pomoże.
źródło