<- Poprzedni rodział -- Następny rozdział ->

Rozdział 19: Dostęp do urządzenia z wykorzystaniem słowników

Prezentowany rozdział dotyczyć będzie sposobów na uzyskanie dostępu do urządzenia wykorzystując Metasploit oraz słowniki. Wiele spraw teoretycznych zostało omówionych w poprzednim materiale dlatego teraz skupimy się bardziej nad praktycznymi rozwiązaniami.

Pisząc ten rozdział postawiłem sobie za cel pokazanie Tobie w jaki sposób złamać login i hasło mając możliwość zdalnego zalogowania się do urządzenia. Wszelkie testy przeprowadzę na systemie Metasploitable. Nie chce zbyt długiego wstępu dlatego bez zbędnego dalszego rozpisywania się zapraszam do zapoznania się z poniższym materiałem.

19.1. OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)

OpenSSH pozwala na zdalne połączenie z urządzeniem oraz zarządzanie nim przy pomocy usługi SSH. My do tego celu wybierzemy oczywiście wcześniej poznany program Metasploit. Przyznam, że nie jest to taki typowy exploit jaki poznaliśmy we wcześniejszym rozdziale. Dlatego zobaczymy w jaki inny sposób możemy to wykorzystać.

19.1.1. Słownik

Atak który chcę zaprezentować wykorzystuje słownik. Nie wiem czy wiecie, ale przy instalacji programu Metasploit zostało stworzonych kilka słowników. Wiem również, że pamiętasz login i hasło do Metasploitable, ale wyobraź sobie, że nie znasz ich i co wtedy?

Wymienione wyżej słowniki znajdują się w katalogu:

/usr/share/metasploit-framework/data/wordlists/root_userpass.txt

Przyznaje, że ataki słownikowe nigdy nie należały do takich które lubiłem w jakikolwiek sposób wykorzystywać. Ma to związek z tym jaki czas trzeba na to poświęcić oraz z efektem jaki na samym końcu możemy osiągnąć. Po kilku godzinach tego typu ataku i tak nie mamy pewności czy ów słownik znajdzie nam poszukiwany login i hasło. No, ale lubi nie lubi czasami zdarza się skorzystać z tej metody dlatego zobaczmy jak to się robi.

W sieci istnieje bardzo dużo gotowych słowników z których możesz korzystać. W systemie jak już wspomniałem znajdują się również tak zwane gotowce. Jeżeli czytałeś rozdział 12 to wiesz, że jesteś w stanie wytworzyć własny słownik.

Hacking czegokolwiek przy wykorzystaniu słownika polega na tak zwanym chybił trafił. Jak trafisz lub stworzysz właściwy słownik to uda Ci się pozyskać pożądane dane jeżeli nie to zmarnujesz czas. Ja nie będę marnował twojego, dlatego na końcu słownika dodałem login i hasło. Ty zrób tak samo edytując plik:

sudo nano -w /usr/share/metasploit-framework/data/wordlists/root_userpass.txt

Pamiętaj o tym, że plik musi być edytowany jako użytkownik z odpowiednimi uprawnieniami, dlatego na początku polecenia znajduje się sudo. Na samym końcu pliku wpisz msfadmin msfadmin.

Jeżeli dokładniej przyjrzysz się zawartości zauważysz, że korzysta on z kilku haseł, ale jako użytkownik zawsze jest root. Ma to większy sens bo konto użytkownika z wszystkimi uprawnieniami do systemu w Linuksie to konto root. W normalnym trybie próby złamania hasła byłoby to jak najbardziej logiczne. Natomiast w naszym wypadku taka próba mogłaby zająć nawet kilka dni. Dlatego, że dopiero się uczysz zrób tak jak Ci radzę powyżej i na końcu dodaj login i hasło które znasz.

Po edycji zapisujemy zmiany wykorzystując kombinację klawiszy ctrl+o i wciskamy enter.

19.1.2. Odpowiedni typ

Mamy już słownik przygotowany dlatego nadeszła pora na uruchomienie Metasploit. W ramach przypomnienia robimy to w następujący sposób:

sudo msfconsole

Następnie jak pamiętasz z poprzedniego rozdziału należy wybrać odpowiednie narzędzie które posłuży do osiągnięcia celu. Tym razem nie korzystamy z exploita tylko ze sposobu słownikowego. Użyj opcji:

use auxiliary/scanner/ssh/ssh_login

Następnie w kolejności należy sprawdzić jakie mamy opcje do ustawienia:

show options

Pojawi się:

Module options (auxiliary/scanner/ssh/ssh_login): Name Current Setting Required Description ---- --------------- -------- ----------- BLANK_PASSWORDS false no Try blank passwords for all users BRUTEFORCE_SPEED 5 yes How fast to bruteforce, from 0 to 5 DB_ALL_CREDS false no Try each user/password couple stored in the current database DB_ALL_PASS false no Add all passwords in the current database to the list DB_ALL_USERS false no Add all users in the current database to the list DB_SKIP_EXISTING none no Skip existing credentials stored in the current database (Accepted: none, user, user&realm) PASSWORD no A specific password to authenticate with PASS_FILE no File containing passwords, one per line RHOSTS yes The target host(s), see https://github.com/rapid7/metasploit-framework/wiki/Using-Metasploit RPORT 22 yes The target port STOP_ON_SUCCESS false yes Stop guessing when a credential works for a host THREADS 1 yes The number of concurrent threads (max one per host) USERNAME no A specific username to authenticate as USERPASS_FILE no File containing users and passwords separated by space, one pair per line USER_AS_PASS false no Try the username as the password for all users USER_FILE no File containing usernames, one per line VERBOSE false yes Whether to print output for all attempts

Niestety szerokość przykładu, a szerokość strony może spowodować, że article-text trochę będzie porozrzucany. Masz to naprzeciwko siebie dlatego jeżeli niewygodnie Ci patrzeć na przykład ze strony, zerknij do siebie.

Pierwsze ustawienie jakim musimy się zająć dotyczy adresu ip naszego celu. Robimy to w ten sam sposób co poznaliśmy we wcześniejszym rozdziale:

set RHOSTS 10.0.2.5

Przypomnę tylko, że pod wpisanym adresem ip znajduje się mój Linux Metasploitable.

Następnie należy ustawić ścieżkę pod jaką znajduje się słownik. Robimy to w następujący sposób:

set USERPASS_FILE /usr/share/metasploit-framework/data/wordlists/root_userpass.txt

Pozostaje jedynie sprawdzić czy RPORT jest taki sam jak wskazał nmap i w razie błędu zmienić go. Teraz sprawdźmy czy wszystkie wprowadzone ustawienia zostały zapisane:

show options

Jeżeli wszystko się zgadza pozostaje tylko wpisać polecenie:

run

I zaczekać na wynik. Po dłuższej chwili powinniśmy otrzymać:

[*] 10.0.2.5:22 - Starting bruteforce [+] 10.0.2.5:22 - Success: 'msfadmin:msfadmin' 'uid=1000(msfadmin) gid=1000(msfadmin) groups=4(adm),20(dialout),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),107(fuse),111(lpadmin),112(admin),119(sambashare),1000(msfadmin) Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux ' [*] Command shell session 1 opened (10.0.2.15:34095 -> 10.0.2.5:22 ) at 2022-02-12 18:22:00 -0500 [*] Scanned 1 of 1 hosts (100% complete) [*] Auxiliary module execution completed

Jeżeli zgodnie z moim zaleceniem dodałeś do słownika login i hasło powinieneś otrzymać podobny wynik do mojego.

Otrzymaliśmy informację o powodzeniu oraz o tym, że sesja została otwarta i nosi nazwę session 1. Kolejnym krokiem jest połączenie się z nią. Robimy to przy wykorzystaniu polecenia, oczywiście w Metasploit:

sessions -i 1

Po wciśnięciu przycisku enter otworzymy sesję w której będziemy połączeni z naszym celem, aby to sprawdzić wpisujemy:

SSH msfadmin:msfadmin (10.0.2.5:22) uname -a Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux

W ten sposób upewniliśmy się, że nawiązaliśmy połączenie z odpowiednim urządzeniem.

Do złamania hasła można posłużyć się różnymi programami jak na przykład Hydra. Natomiast wolałem skorzystać z wbudowanego sposobu tak abyś lepiej poznał Metasploit.

19.2. Linux telnetd

Prezentowany w tym podrozdziale sposób jest prawie, identyczny jak poprzedni. Różnica polega na tym, że do złamania hasła użyjemy Metasploita natomiast do połączenia się z urządzeniem dodatkowo oprogramowania telnet oraz już poznanego wcześniej wbudowanego w program.

19.2.1. Połączenie telnet

Nim przejdziemy do samego łamania hasła chciałbym abyś spróbował połączyć się z urządzeniem. Do tego celu użyjemy polecenia:

telnet 10.0.2.5

Po wciśnięciu enter pojawi się w konsoli możliwość logowania do systemu Metasploitable tak jakbyś go właśnie uruchomił. Aby się upewnić, że tak jest zaloguj się do urządzenia wpisując znany Ci login i hasło msfadmin.

Po wprowadzeniu loginu i hasła zalogujesz się do konsoli systemu Metasploitable. Aby mieć 100% pewność wpisz poznane wcześniej polecenie:

uname -a

Powinieneś otrzymać jako odpowiedź:

Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux

Mało skomplikowane, ale by do tego dojść musisz znać login i hasło.

Teraz zajmiemy się zdobywaniem loginu oraz hasła dlatego, aby się wylogować z sesji wpisz exit. Zakończy to połączenie.

19.2.2. Zdobywanie loginu i hasła

Jak w poprzednim przykładzie, aby zdobyć login i hasło możemy skorzystać z bardzo dużej ilości oprogramowania. Ja w tym wypadku wykorzystam wbudowane rozwiązanie w oprogramowanie Metasploit.

Tak jak robiliśmy to ostatnio musimy wybrać odpowiedni moduł. Tym razem wykorzystamy:

use auxiliary/scanner/telnet/telnet_login

Jak widzisz jest to bardzo zbliżone do rozwiązania z poprzedniego podrozdziału z tą różnicą, że korzystamy z rozwiązania telnet.

Różnica występuje w samych słownikach. Wcześniej wykorzystywaliśmy jeden słownik, natomiast teraz wykorzystamy dwa. Jeden będzie zawierał loginy drugi hasła.

Sposób działania tego rozwiązania polega na tym, że pobierany jest login z pliku pierwszego, następnie do niego sprawdzane jest każde hasło z drugiego pliku. Jeżeli zadanie nie kończy się powodzenie program pobiera drugi login i ponownie sprawdza wszystkie hasła.

W związku z powyższym musimy stworzyć dwa pliki. Utwórzmy takie w naszym katalogu głównym home. Czyli otwórzmy lub podzielmy naszego terminatora i w nim wpiszmy:

touch hasla.txt touch loginy.txt

Stworzyliśmy dwa pliki, ale niestety są one puste. Nim przejdziemy do wpisania zawartości chciałbym byś pamiętał aby w takich przypadkach nigdy nie używać polskich znaków. Specjalnie w nazwie hasła nie użyłem „ł” tylko zapisałem hasla i Ty pamiętaj aby zawsze tak robić. Czasami może się zdarzyć, że nie każdy program dobrze zinterpretuje nasze polskie znaki.

Dodajmy do zawartości pliku hasla.txt:

root !root Cisco NeXT QNX admin attack ax400 bagabu msfadmin>

Natomiast w przypadku pliku loginy.txt wprowadź i zapisz:

root boot loot hoot msfadmin

Słowniki zostały specjalnie wymyślone z małą zawartością danych ponieważ mają na celu zobrazowanie tego jak wykonać atak słownikowy. Na samym końcu wpisałem prawidłowy login i hasło.

Gdy już stworzyliśmy słowniki nadszedł czas aby je ustawić w module. Nim jednak do tego przejdziemy warto zapoznać się z dostępnymi opcjami:

show options Name Current Setting Required Description ---- --------------- -------- ----------- BLANK_PASSWORDS false no Try blank passwords for all users BRUTEFORCE_SPEED 5 yes How fast to bruteforce, from 0 to 5 DB_ALL_CREDS false no Try each user/password couple stored in the current database DB_ALL_PASS false no Add all passwords in the current database to the list DB_ALL_USERS false no Add all users in the current database to the list DB_SKIP_EXISTING none no Skip existing credentials stored in the current database (Accepted: none, user, user&realm) PASSWORD no A specific password to authenticate with PASS_FILE no File containing passwords, one per line RHOSTS yes The target host(s), see https://github.com/rapid7/metasploit-framework/wiki/Using-Metasploit RPORT 23 yes The target port (TCP) STOP_ON_SUCCESS false yes Stop guessing when a credential works for a host THREADS 1 yes The number of concurrent threads (max one per host) USERNAME no A specific username to authenticate as USERPASS_FILE no File containing users and passwords separated by space, one pair per line USER_AS_PASS false no Try the username as the password for all users USER_FILE no File containing usernames, one per line VERBOSE true yes Whether to print output for all attempts

Jak w poprzednim przypadku pierwszą rzeczą jaką należy wykonać jest ustawienie adresu IP naszego celu robimy to przy pomocy:

set RHOSTS 10.0.2.5

Sprawdzamy również, czy został wybrany właściwy port i w razie czego zmieniamy go. Następnie należy ustawić nasze słowniki. Zgodnie z opisem na wyświetlonej powyżej liście musimy zrobić to w następujący sposób:

set PASS_FILE /home/kali/hasla.txt set USER_FILE /home/kali/loginy.txt

Jeżeli stworzyłeś pliki z hasłami w identyczny sposób jak ja to ścieżka do nich powinna być identyczna. W przypadku gdy zrobiłeś inaczej podaj ścieżkę do miejsca w którym zapisane są słowniki z których chcesz skorzystać. Teraz pozostaje wpisać polecenie i wcisnąć enter:

run

Po jakimś czasie powinniśmy otrzymać odpowiedź:

[+] 10.0.2.5:23 - 10.0.2.5:23 - Login Successful: msfadmin:msfadmin

Czyli odnalazło login i hasło.

Chciałbym jeszcze dopowiedzieć, że jedną z przydatnych opcji jest USER_AS_PASS. Jeżeli ustawimy jej wartość na True wykorzysta ten sam słownik zarówno do loginów jak i haseł.

Teraz mamy dwa sposoby połączenia. Pierwszy z nich poznaliśmy na początku tego podrozdziału z wykorzystaniem zewnętrznego narzędzia telnet. Drugi też już znasz. Łączyliśmy się w ten sposób przy OpenSSH:

sessions -i 1

Dzięki temu rozwiązaniu automatycznie zalogujemy się do urządzenia.

19.3. Wyszukiwanie w Metasploit

Przyznam, że słownikowych ataków jakie możemy przeprowadzić na Metasploitable jest jeszcze kilka. Pierwotnie chciałem opisać je wszystkie, ale w trakcie doszedłem do wniosku, że odebrałbym Ci przyjemność zrobienia tego samemu. Po dwóch powyższych przykładach można zauważyć, że jest to bardzo zbliżony proces polegający na czytaniu opisów po wpisaniu polecenia show options.

Rozmawialiśmy wcześniej, że aby odnaleźć sposób na lukę w systemie pierwsze co należy zrobić to skorzystać z wyszukiwarki. Uważam, że jest to bardzo przydatna umiejętność i musisz się nią bardzo często posługiwać.

W tym podrozdziale jednak zajmiemy się sposobami wyszukiwania bez wykorzystywania wyszukiwarek internetowych tylko wyszukiwać będziemy w samym programie.

Na pierwszy rzut okna może się to wydawać nie za bardzo czytelne, ale po czasie odkryjesz uroki tego typu wyszukiwania. Poznaliśmy sposoby złamania hasła do usługi Linux telnetd w poprzednim podrozdziale. Co możemy zrobić gdy okazuje się, że odnaleziony przez nas sposób nie zadziała? Odpowiedź jest oczywista, poszukać innego rozwiązania, dlatego w programie należy wpisać:

search telnet

W ten oto sposób wyświetli się lista wszelkich możliwości jakie mają związek z telnetem. Dość spora lista, ale po delikatnej analizie możemy wykluczyć te co dotyczą Windowsa, a na samym początku rozpocząć od tych które mają w swojej nazwie telnet.

Jeżeli wiemy jakiego typu jest to luka to możemy zmniejszyć ilość wyświetlonych możliwości. Nie wiem czy zwróciłeś uwagę po uruchomieniu programu pojawia się informacja:

=[ metasploit v6.1.14-dev ] + -- --=[ 2180 exploits - 1155 auxiliary - 399 post ] + -- --=[ 592 payloads - 45 encoders - 10 nops ] + -- --=[ 9 evasion ]

We wcześniejszych dwóch przykładach korzystaliśmy z usług auxiliary, które obsługują ataki słownikowe. Natomiast istnieją jeszcze inne typy ataków. Przykładowo we wcześniejszym rozdziale przy vsftpd 2.3.4 korzystaliśmy z exploita.

W związku z pogrupowaniem tych możliwości, jeżeli wiemy jaki typ ataku chcemy przeprowadzić możemy zawęzić poszukiwania korzystając z polecenia:

search type:auxiliary telnet

W ten sposób zawężamy zakres poszukiwań na dzień dzisiejszy z 42 pozycji do 15.

Jednak to jeszcze nie wszystko. Jeżeli uważnie przyjrzałeś się wyświetlonym wynikom, na samym dole każdej z list znajdowała się informacja „Interact with a module by name or index. For example info 42, use 42 or use post/windows/gather/credentials/mremote”. Dzięki tej informacji dowiadujemy się, że wcale nie musimy korzystać z nazwy, możemy też zrobić to samo wpisując liczbę znajdująca się przy danej pozycji.

Podsumowanie

Osobiście jak wspominałem ataki które tutaj wam zaprezentowałem nie należą do moich ulubionych. W testach penetracyjnych jednak mogą mieć spore znaczenie ze względu na to, że jeżeli urządzenie zostało zabezpieczone słabym hasłem to jesteśmy w stanie je złamać z wykorzystaniem słowników nawet wbudowanych. Oczywiście istnieją bardziej zaawansowane sposoby tworzenia takich słowników które poznaliśmy w rozdziale 12 dlatego masz naprawdę bardzo szerokie zaplecze możliwości.

Tym rozdziałem chciałem zamknąć etap ataków słownikowych. W następnych zajmiemy się bardziej szczegółowo exploitami i payloaderami.

<- Poprzedni rodział -- Następny rozdział ->

Strona stosuje pliki cookies w celu profilowania, oraz analizuje statystykę ruchu. Prosimy o zapoznanie się z naszą polityką prywatności i wyrażenie zgody na podejmowane działania. W przypadku braku zgody i pozostaniu na niej strona może nie działać właściwie.

Akceptuję warunki zawarte w Polityce Prywatności

Nie akceptuję warunków i chcę opuścić stronę