Authorized_keys, ssh-keygen i NFS jest niebezpieczny…

Dzisiejszy wpis będzie dotyczył niebezpiecznych plików konfiguracyjnych z naciskiem na authorized_keys. Wielu osobom wydaje się, że prawa dostępu do plików użytkownika są mało istotne i nie zmniejszają znacząco bezpieczeństwa systemu. Z jednej strony tak jest, bo cóż cyberprzestępcy lub wścibskiemu sąsiadowi po naszych gołych zdjęciach przypadkowo udostępnionych w sieci za pomocą mechanizmu udostępniania plików i folderów sieciowych. Jest to oczywiście złudne myślenie…

Jeśli prawa dostępu do folderu pozwalają na zapis/odczyt/modyfikacje to cyberprzestępca zawsze może ofierze podrzucić spreparowany plik z trojanem o pięknej nazwie kuszącej ją do uruchomienia. Większym niebezpieczeństwem jest udostępnienie folderów w których znajdują się pliki konfiguracyjne aplikacji. Najgroźniejszym scenariuszem jest udostępnienie właśnie plików ustawień aplikacji sieciowych takich jak ftp albo ssh. Jako przykład możemy podać udostępnienie pliku konfiguracji serwera openssh authorized_keys z możliwością jego edycji. Dzięki niemu możemy dodać sobie możliwość logowania zdalnego do systemu bez podawania hasła.

Wystarczy do tego wygenerować sobie jedynie za pomocą aplikacji Linux ssh-keygen lub Windowsowej PuTTYgen klucz prywatny i publiczny, a następnie zmodyfikować plik authorized_keys na zdalnym systemie, dodając tam wygenerowany klucz publiczny. Dzięki tym czynnością cyberprzestępca posiadając klucz prywatny może się logować do zdalnego systemu bez podawania hasla. W wpisie pokażemy również jak zamontować zasób NFS. Więcej o generowaniu klucza znajdziecie w tym oto wpisie.

Wideo demonstrujące scenariusz z authorized_keys

Poniższe wideo jest uzupełnieniem tego wpisu na blogu. Pokazuje jak w praktyce błędnie skonfigurowane udostępnianie plików może otworzyć cyberprzestępcy furtkę do systemu operacyjnego. Polecamy i wideo i przeczytanie ;-).

Detekcja usługi NFS

W celu przeprowadzenia tego treningowego scenariusza ataku, wystarczy udostępnić folder z konfiguracją logowania do serwera ssh za pomocą kluczy. W systemie Linux będzie to ukryty folder o nazwie .ssh w katalogu domowym użytkownika. W sieci jest bardzo dużo informacji już o instalacji serwera OpenSSH… pomijamy!

Udostępnienie folderu może zostać wykonane za pomocą dowolnego mechanizmu systemowego. Może być to błędnie skonfigurowany serwer ftp, Network File System (NFS) lub dla przykładu Windowsowy serwer Samba. O samym ataku wspomina książka Bezpieczny system w praktyce Georgia Weidman na stronie 195.

W moim przypadku wykorzystamy błędnie skonfigurowany NFS wspomniany w powyższej publikacji. Jeśli ktoś udostępnia z prawami do odczytu i zapisu folder .ssh z plikiem authorized_keys, to sam za chwile zobaczysz że popełnia błąd. W pierwszym kroku skanujemy zdalny serwer za pomocą skanera nmap z parametrem detekcji usług.

W odpowiedzi otrzymamy otwarte porty na zdalnym serwerze. Interesującą nas usługą jest Network File System na porcie 2049.

Jak widzimy na powyższym listingu zdalny host ma otwarty port protokołu NFS.

Nmap NFS-LS

Następnie przeskanujmy za pomocą skryptów programu nmap (Nmap Scripting Engine) wskazany host.

Powyższe polecenia dało nam następująćy wynik:

Jak widzimy serwer posiada udostępnione zasoby o nazwie /export/georgia. Na powyższym listingu widać również bardzo interesujący folder plików konfiguracyjnych serwera OpenSSH.




Nazwę zamontowanych zasobów możemy opcjonalnie sprawdzić w systemie Windows za pomocą programu NFSClient lub w Linuksie następującą komendą:

Dobrze. Teraz utwórzmy folder w którym zamontujemy znalezione przez nas zasoby. Zrobimy to poleceniem konsoli:

Mount nfs – montujemy zdalny zasób

Teraz w powyżej utworzonym folderze o nazwie zamontowane, zamontujmy znalezione zasoby:

Gotowe. W folderze /home/root/zamontowane/ mamy dostęp do zdalnych plików. Teraz wystarczy, że wygenerujemy sobie klucz publiczny i zmodyfikujemy plik authorized_keys na serwerze. UWAGA! Pamiętaj, że w systemie Linux pliki i foldery rozpoczynające się od znaku kropki są plikami ukrytymi. W celu ich wyświetlenia w konsoli używaj polecenia ls -la lub w eksploatatorze plików wybierz z górnej belki opcje Widok -> Wyświetlanie ukrytych plików.

mount nfs - ukryte pliki .ssh
Zamontowany folder NFS i włączenie pokazywania ukrytych plików

Generate ssh key i ssh authorized_keys 

Samo generowanie klucza publicznego i prywatnego RSA jest bardzo proste. W konsoli wydajmy następujące polecenie:

Jako że nie chcemy potwierdzać logowania dodatkowym hasłem, wystarczy że powciskasz kilka enterów i gotowe.

ssh-keygen generowanie publicznego i prywatnego pliku z kluczami RSA
Generowanie klucza publicznego i prywatnego za pomocą ssh-keygen w systemie Kali Linux

Teraz wystarczy wygenerowany klucz publiczny z pliku którego ścieżka została wyświetlony w konsoli (/root/.ssh/id_rsa.pub), przekopiować na zdalny serwer do pliku authorized_keys. Jako, że wcześniej zamontowaliśmy już zdalny katalog z plikami to przechodzimy w naszym systemie Kali Linux do /root/zamontowane/.ssh/authorized_keys, otwieramy go i doklejamy na końcu nasz klucz publiczny. Zapisujemy i gotowe. Zwróćmy uwagę na login użytkowników w pliku, bo na to właśnie konto się zalogujemy za pomocą terminala ssh.

Publiczne klucze w authorized_keys
Zawartość pliku authorized_keys z kluczami publicznymi znajduje się w folderze ukrytym .ssh

Logowanie się do SSH z pomocą authorized_keys

Wydaj następujące polecenie:

Wpisz jeśli zostaniesz o to poproszony (are you sure you want to continue connecting) frazę yes i gotowe. Właśnie zalogowałeś się do zdalnego serwera za pomocą swojego klucza publicznego i nazwy użytkownika georgia.

Podsumowanie o authorized_keys

Jak widać klucz publiczny ssh jak i ten prywatny za pomocą narzędzia ssh-keygen jest bardzo łatwo wygenerować. W przypadku w którym system operacyjny Windows, Mac OS, Linux a nawet mobilny zrootowany Android udostępnia w dowolny sposób zbyt dużą ilość plików (szczególnie tych konfiguracyjnych) to może się zdarzyć, że jest narażony na ataki z zewnątrz. Przedstawiony sposób nie dotyczy tylko protokołu NFS i autoryzacji za pomocą klucza. Udostępniane pliki są równie często przypadkowo przy pomocy protokołu FTP i Windowsowej Samby. Radze Ci już teraz audytuj co udostępniasz innym w sieci Internet. Jeśli podoba Ci się ten wpis to być może zainteresuje Cię jeszcze inny: o atakach na konta facebook, odzyskiwanie hasła routera lub atak na hasło skrzynki pocztowej. Mamy też Twittera i fejsbuka ;-). Trzymajcie się bezpiecznie!




Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *