ethical.blue Magazine

// Cybersecurity clarified.

Podstawy  tworzenia i  analizy złośliwego oprogramowania (ang. malware)

...
Computer Viruses // // Dawid Farbaniec
Ostatnia modyfikacja:

Spis treści

Wprowadzenie

Na potrzeby tego dokumentu próbowano znaleźć prostą analogię, która pomogłaby łatwiej zrozumieć sposób, w jaki urządzenie wykonuje kod programu. Ostatecznie udało się wymyślić, że jednostkę obliczeniową (CPU) można porównać do postaci w grze komputerowej, która pożera kolorowe kropki. Wykonanie programu to w przenośni takie właśnie „zjadanie bajtów” kodu maszynowego przez moduł w urządzeniu. Natomiast naukowo mówi się, że kod programu jest wykonywany lub urządzenie wykonuje obliczenia.

Złośliwe oprogramowanie (ang. malware) to inaczej szkodliwe bajty programu komputerowego. Jeśli „zjedzone bajty” będą zainfekowane lub złośliwe, to może dojść do uszkodzenia „wnętrzności” systemu operacyjnego lub nawet urządzenia.

...
Postać zjadacza z gry komputerowej

Przed rozpoczęciem pracy z niniejszym tekstem warto zapoznać się z dokumentem dołączonym poniżej. Opisano tam podstawowe rodzaje wirusów komputerowych i złośliwego oprogramowania (ang. malware).

Podstawowe rodzaje wirusów komputerowych i malware »

Po tym krótkim wprowadzeniu do zagrożeń związanych z wirusami komputerowymi można przejść dalej, czyli do utworzenia własnego laboratorium.

Instalacja programu Oracle VirtualBox. Krok po kroku

Dla bezpiecznego przeprowadzania eksperymentów i analiz potrzebny będzie osobny system, który można pozwolić zainfekować. Niektórzy przeznaczają do tego celu oddzielne fizyczne urządzenie. Inne rozwiązanie to utworzenie maszyny wirtualnej za pomocą odpowiedniego oprogramowania. Niniejszy dokument jest oparty o bezpłatne rozwiązanie VirtualBox.

...
Oracle VirtualBox

Poniżej przygotowana instrukcja prowadząca użytkownika krok po kroku przez proces instalacji narzędzia VirtualBox.

Instalacja programu Oracle VirtualBox. Krok po kroku »

Następne kroki to utworzenie maszyny wirtualnej z systemem Windows w programie VirtualBox co opisuje poniższa instrukcja.

Utworzenie maszyny wirtualnej z systemem Windows w programie VirtualBox. Krok po kroku »

...
Maszyna wirtualna z systemem Windows w narzędziu Oracle VirtualBox

Jeśli system operacyjny Windows nie wyświetla rozszerzeń nazw plików, to należy zmienić tę opcję zgodnie z poniższą instrukcją. Najwyższy czas zacząć się przyzwyczajać, że ikona pliku nie świadczy o tym jak system traktuje plik i co ten plik zawiera.

...
Wyświetl / Pokaż / Rozszerzenia nazw plików (View / Show / File name extensions)

Warto też utworzyć maszynę wirtualną z bezpłatnym systemem z rodziny Linux takim jak np. Ubuntu Desktop. Poniższa instrukcja opisuje ten proces krok po kroku.

Utworzenie maszyny wirtualnej z systemem Linux (Ubuntu) w programie VirtualBox. Krok po kroku »

Po wykonaniu powyższych instrukcji można przejść dalej.

Bezpieczne uruchomienie próbki w środowisku izolowanym

Podstawowa wiedza, która jest wymagana już na samym początku i od której zależy bezpieczeństwo naszych urządzeń, to odpowiednie obchodzenie się z próbkami – plikami, które mogą być wirusem komputerowym.

Próbki przechowujemy w postaci skompresowanej (np. *.zip) z ustawionym hasłem. Wymyślenie hasła dla archiwum plików i podanie go obok nie jest bez sensu. Zabezpieczenie hasłem ma za zadanie chronić przed przypadkowym uruchomieniem niebezpiecznego pliku. Działa to w taki sposób, że podwójne kliknięcie na plik nie spowoduje automatycznego otworzenia, ale wyświetli monit o wpisanie hasła.

Podsumowanie. Próbki przechowujemy w postaci skompresowanej z nadanym hasłem. W takiej samej postaci wymieniamy się próbkami i przesyłamy je. Wyodrębnienie plików z archiwum następuje tylko w izolowanym środowisku (np. maszyna wirtualna) z wyłączonym dostępem do internetu.

Próbka (ang. sample)

ethicalblue-sample.zip [223 841 bajtów]

Hasło (ang. password)

NOT-A-VIRUS.Education.Win64.ethical.blue.Magazine

Jeśli nie można określić czy próbka jest wormable, czyli może zainfekować inne urządzenia przez sieć, to przed eksperymentami należy wyłączyć maszynie wirtualnej dostęp do internetu. Dość dobrym rozwiązaniem jest wejście w ustawienia maszyny wirtualnej i całkowite wyłączenie karty sieciowej.

...
Przycisk Ustawienia w menedżerze VirtualBox
...
Wyłączenie karty sieciowej w ustawieniach maszyny wirtualnej

W celu aktywacji przesyłania plików z głównego systemu do maszyny wirtualnej należy zainstalować dodatki gościa nazywane Guest Additions.

Poniżej przygotowana instrukcja prowadząca użytkownika krok po kroku przez proces instalacji dodatków do programu VirtualBox.

Instalacja dodatków gościa (ang. guest additions) w programie VirtualBox. Krok po kroku »

Opcję przeciągania i upuszczania (ang. drag & drop) plików z systemu gospodarza do systemu gościa można aktywować wybierając z górnego menu Urządzenia / Przeciąganie i upuszczanie / Gospodarz do gościa

...
Urządzenia / Przeciąganie i upuszczanie / Gospodarz do gościa

Przykładowa próbka jest zabezpieczona hasłem przed przypadkowym uruchomieniem. Z tego powodu można ją pobrać bezpiecznie na główny system i przeciągnąć do odłączonej od sieci maszyny wirtualnej.

Próbka (ang. sample)

ethicalblue-sample.zip [223 841 bajtów]

Hasło (ang. password)

NOT-A-VIRUS.Education.Win64.ethical.blue.Magazine

...
Pobieranie przykładowej próbki

Próbkę można teraz przekopiować z głównego systemu do systemu gościa na maszynie wirtualnej dzięki zainstalowanym wcześniej dodatkom nazywanym Guest Additions.

...
Przeciągnięcie próbki do izolowanego systemu na maszynie wirtualnej

Próbka jest zabezpieczona przed przypadkowym uruchomieniem dlatego należy kliknąć na archiwum prawym przyciskiem myszy i wybrać opcję Wyodrębnij wszystkie.

...
ethicalblue-sample.zip

Następnie należy wybrać folder do którego zostaną wypakowane pliki z archiwum *.zip.

...
Wyodrębnianie plików (wybór folderu)

Powinno pojawić się okno z prośbą o wprowadzenie hasła, którym jest zabezpieczona próbka przed przypadkowym uruchomieniem.

Hasło (ang. password)

NOT-A-VIRUS.Education.Win64.ethical.blue.Magazine

...
Okno z prośbą o wprowadzenie hasła

Przykładowa próbka to plik wykonywalny o nazwie ethicalblue.exe, który zostanie uruchomiony w izolowanym środowisku. Plik można otworzyć podwójnym kliknięciem lewym przyciskiem myszy lub pojedynczym kliknięciem prawym przyciskiem myszy i wybraniem opcji Otwórz.

...
Uruchomienie próbki ethicalblue.exe

Program antywirusowy w systemie Windows przeniósł plik do kwarantanny, ponieważ prawdopodobnie rozpoznał w nim coś nietypowego dla zwykłych programów. Próbka ethicalblue.exe zdążyła jednak zmienić obraz tła w systemie na maszynie wirtualnej.

...
Próbka ethicalblue.exe po uruchomieniu zmieniła tło
...
Program antywirusowy przeniósł plik ethicalblue.exe do kwarantanny

Teraz za pomocą wcześniej utworzonej migawki (ang. snapshot) można przywrócić czystą postać systemu sprzed prezentowanej infekcji. W tym celu należy w oknie maszyny wirtualnej wybrać z górnego menu Plik / Zamknij.

...
Wyłączenie maszyny wirtualnej

W oknie dialogowym potwierdzającym wyłączenie maszyny wirtualnej należy zaznaczyć Przywróć aktualną migawkę (ang. snapshot) i kliknąć przycisk OK.

...
Wyłączenie maszyny wirtualnej z przywróceniem poprzedniego stanu

Teraz można ponownie uruchomić maszynę wirtualną w stanie takim jak zaznaczona migawka (ang. snapshot).

...
Uruchomienie maszyny wirtualnej
...
Czysty system sprzed infekcji

Sytuacja w której infekcja wirusem komputerowym przetrwa ponowną instalację systemu jest możliwa, lecz mało prawdopodobna. Nie ma powodu do paniki. Jednak istnieje złośliwe oprogramowanie (ang. malware) typu bootkit. Podstawowe metody ochrony przed tego rodzaju zagrożeniem zostały opisane w dokumencie poniżej.

Bezpieczeństwo BIOS-u, UEFI oraz złośliwe oprogramowanie typu bootkit »

MITRE ATT&CK. Podstawowe informacje

Pod adresem https://attack.mitre.org/ dostępna jest globalna baza danych taktyk i technik używanych m.in. przez podmioty zagrażające (ang. threat actor). Już na początku przeglądania wspomnianej witryny można przeczytać, że wiedza ta pochodzi z obserwacji rzeczywistych ataków i jest gromadzona dla zwiększenia poziomu bezpieczeństwa cybernetycznego na świecie.

Macierz (ang. matrix) zawiera czternaście taktyk.

Każda z prezentowanych taktyk zawiera techniki np. wiadomość wyłudzająca dane (ang. phishing) to technika z kategorii Initial Access, czyli etap początkowego dostępu. Jeśli taka wiadomość zawiera złośliwy kod i zostanie on uruchomiony, to zaczyna się etap Execution. Jednak użytkownik lub program obronny może usunąć plik. Dlatego podmiot zagrażający będzie dążył do utrzymania trwałego dostępu (ang. persistence). Taki prosty przypadek doskonale prezentuje, że taktyki oraz techniki zawarte w macierzy ATT&CK układają się w logiczną całość. Nie trzeba też nikogo przekonywać jakie korzyści może dać przeglądanie tej rozległej, globalnej bazy wiedzy.

Ładunek (ang. payload) i program wczytujący kolejny etap (ang. stager)

Słowem ładunek (ang. payload) w kontekście bezpieczeństwa cybernetycznego najczęściej określa się fragment kodu, który jest dostarczany na atakowany system w celu wykonania poleceń przygotowanych przez podmiot zagrażający (ang. threat actor).

Plik z ładunkiem (ang. payload) może być niezależny i self-contained np. jeśli atakowany system nie ma połączenia z siecią. Inne rozwiązanie to stworzenie małego fragmentu kodu (ang. stager), który po uruchomieniu pobiera przez sieć kolejne moduły.

...
Przykładowe łańcuchy infekcji (ang. infection chain)

Wyłączenie ochrony antywirusowej w systemie na maszynie wirtualnej

Utworzone wcześniej środowisko izolowane, które służy jako laboratorium posiada domyślnie zabezpieczenia antywirusowe. Jeśli nie zostaną one wyłączone, to ciężko będzie przeprowadzać eksperymenty i analizy, ponieważ próbki będą usuwane. Rozpocznijmy od przywrócenia ostatniej migawki maszyny wirtualnej, czyli czystego systemu.

...
Przywrócenie migawki (ang. snapshot) czystego systemu

Po uruchomieniu maszyny wirtualnej należy znaleźć ustawienia ochrony przed wirusami i zagrożeniami.

...
Ochrona przed wirusami i zagrożeniami

Tutaj należy wybrać łącze Zarządzaj ustawieniami.

...
Ochrona przed wirusami i zagrożeniami / Zarządzaj ustawieniami

Kolejny krok to wyłączenie ochrony w czasie rzeczywistym, aby nie pojawiały się alarmy oprogramowania antywirusowego.

...
Wyłączenie ochrony w czasie rzeczywistym (Ochrona przed wirusami i zagrożeniami)

Dla pewności, że nie będzie alarmów programu antywirusowego należy dodać wykluczenia, czyli wpisy decydujące o pomijaniu skanowania określonym elementów.

...
Dodaj lub usuń wykluczenia (Ochrona przed wirusami i zagrożeniami)

Najpierw dodajmy do wykluczeń cały dysk C:\.

...
Folder C:\ (Dodaj lub usuń wykluczenia)

Otwórzmy okno dodawania wykluczeń według rozszerzenia pliku.

...
Wykluczenie według typu pliku (Dodaj lub usuń wykluczenia)

Tutaj należy wprowadzić wykluczenie wszystkich rozszerzeń plików, czyli *.*.

...
Rozszerzenie *.* (Dodaj lub usuń wykluczenia)

Dodajmy jeszcze wykluczenie wszystkich procesów.

...
Dodaj wykluczenie / Proces (Dodaj lub usuń wykluczenia)

Wzorzec jest taki sam jak w przypadku wykluczania według rozszerzenia, czyli *.*.

...
Procesy o nazwie *.* (Dodaj lub usuń wykluczenia)

Teraz można wyodrębnić z archiwum *.zip przykładową próbkę.

...
Wyodrębnij wszystkie... (Przykładowa próbka)

Próbka (ang. sample)

ethicalblue-sample.zip [223 841 bajtów]

Hasło (ang. password)

NOT-A-VIRUS.Education.Win64.ethical.blue.Magazine

Próbka jest zabezpieczona hasłem przed przypadkowym uruchomieniem.

...
Zabezpieczenie hasłem przed przypadkowym uruchomieniem (Przykładowa próbka)

Próbka jest już przygotowana do eksperymentów i analizy.

...
ethicalblue.exe (Przykładowa próbka)

Teraz można bezpiecznie wyłączyć maszynę wirtualną.

...
Start / Zamknij (Maszyna wirtualna)

W celu zachowania wprowadzonych zmian i ustawień należy utworzyć migawkę (ang. snapshot) przyciskiem Zrób (ang. take).

...
Utworzenie migawki (Maszyna wirtualna)

Analiza statyczna i dynamiczna

Analizę próbek można podzielić na dwa podstawowe rodzaje: statyczna i dynamiczna. W przypadku analizy statycznej wykonywane jest badanie właściwości próbki bez wykonywania zawartego w niej kodu. Natomiast analiza dynamiczna to uruchamianie próbki w izolowanym i kontrolowanym środowisku w celu poznania jej zachowania. Niektóre próbki mogą stosować różne metody ochrony kodu zarówno przed analizą statyczną jak i dynamiczną. Popularne metody utrudniania analizy to m.in. szyfrowanie fragmentów kodu, wykrywanie środowiska wirtualnego, opóźnienie w uruchamianiu, wyzwalacze logiczne, różne zachowanie zależne od wykrytych ustawień systemowych i inne.

Wskaźniki infekcji (ang. Indicators of Compromise)

Skrótem IoC nazywane są artefakty, które świadczą o infekcji systemu. To takie cyfrowe ślady do których można zaliczyć adresy serwerów Command & Control, utworzone pliki, specyficzne wzorce w ruchu sieciowym, sygnatury, zmiany ustawień systemowych i inne.

Typy plików, funkcje skrótu (ang. hash) i ciągi znaków

Rozszerzenie nazwy pliku określa jego rodzaj i często skojarzenie z odpowiednim programem. Dlatego obrazy otwierają się domyślnie w przeglądarce zdjęć, a pliki dźwiękowe w odtwarzaczu muzyki.

W przypadku eksperymentów z wirusami komputerowymi i analizie próbek często można spotkać fragment kodu lub po prostu plik, który nie jest skojarzony z żadnym narzędziem. Na przykład: ethicalblue.bin, ethicalblue.hex lub nawet plik bez rozszerzenia. Na szczęście istnieją sposoby rozpoznania typu danych na podstawie bazy sygnatur. Można do tego celu zastosować np. program TrID.

Na początek spróbujmy zmienić rozszerzenie pliku wykonywalnego *.exe na jakieś nietypowe.

...
Próbka ethicalblue.exe (Zmień nazwę)

Pojawia się komunikat ostrzegawczy. Zatwierdzamy przyciskiem Tak.

...
Potwierdzenie zmiany rozszerzenia (Tak)

TrID – File Identifier

trid_w32.zip [2 432 187 bajtów]

Narzędzie TrID na podstawie bazy definicji potrafi procentowo określić jakiego rodzaju mogą być nieznane dane (plik). Program uruchamia się za pomocą Wiersza polecenia lub PowerShell. Folder z pobranym narzędziem ma nazwę trid_w32 i znajduje się na Pulpicie. Przejdźmy do tego folderu za pomocą polecenia cd %USERPROFILE%\Desktop\trid_w32\. Próbka ethicalblue.vx znajduje się o jeden katalog wyżej, dlatego zastosowano tutaj dwie kropki (..\), czyli polecenie wygląda trid.exe ..\ethicalblue.vx.

...
Wywołanie narzędzia TrID.exe z Wiersza polecenia z parametrem ..\ethicalblue.vx

Narzędzie poprawnie rozpoznało, że większa część zawartości pliku to bajty wyglądające na plik wykonywalny *.exe.

...
Rozpoznanie typu pliku za pomocą narzędzia TrID

Identyfikacja próbek za pomocą funkcji skrótu (ang. hash)

Suma kontrolna (ang. hash) nazywana też funkcją skrótu to wartość obliczana według określonego algorytmu, który jeśli jest bezpieczny kryptograficznie, to dla takich samych danych zwróci taką samą sumę kontrolną. W prostych słowach: Zmiana choćby jednego bajta powinna dać inną sumę kontrolną.

Istnieją różne narzędzia do obliczania sum kontrolnych. W tym eksperymencie obliczamy funkcję skrótu SHA512 za pomocą narzędzia PowerShell, które jest domyślnie dostępne w systemie Windows.

Najpierw przejdźmy do folderu z próbką za pomocą polecenia cd podając za parametr ścieżkę do Pulpitu (w ścieżce jest nazwa użytkownika).
cd C:\Users\n\Desktop

Polecenie obliczenia funkcji skrótu (sumy kontrolnej) SHA512 jest następujące:
(Get-FileHash ethicalblue.vx -Algorithm SHA512).Hash;
Nazwę pliku należy podać według własnego systemu (tutaj jest to ethicalblue.vx).

Na konsoli tekstowej programu PowerShell powinna się pojawić wartość funkcji skrótu SHA512.
830C9680DA6ED79AA54FB03BB328E10CD1B27749053FD5B68123C90421DA2FE7A6C01BEE68DC05C9DADD01DADB994A77F78C67CB7349FDF06761E5F7F91E2DEA

Podstawowa korzyść obliczania funkcji skrótu (ang. hash) z pliku to możliwość sprawdzenia czy ktoś już nie wykonał analizy określonej próbki lub nie utworzył narzędzia do pracy z określoną próbką.

...
Obliczenie funkcji skrótu (ang. hash) z próbki (algorytm SHA512)

Odczytanie ciągów znaków zawartych w próbce

Rozpoznanie wstępne w postaci wyciągnięcia napisów, które są zawarte w pliku to często stosowana metoda. Można do tego zastosować narzędzie FLARE Obfuscated String Solver (FLOSS), które służy do automatycznej analizy statycznej.

https://github.com/mandiant/flare-floss/releases

Po pobraniu i wyodrębnieniu plików z archiwum *.zip otrzymujemy plik narzędzia floss.exe. Uruchamiamy Wiersz polecenia (ang. command prompt) i kursorem myszy trzymając lewy przycisk przeciągamy plik floss.exe nad okno Wiesza polecenia i zwalniamy lewy przycisk myszy. Na konsoli tekstowej powinna się wstawić ścieżka do floss.exe. Teraz wciskamy spację na klawiaturze i podobnie przeciągamy próbkę ethicalblue.exe, która jest parametrem dla narzędzia floss.exe.

...
Automatyczna analiza statyczna próbki ethicalblue.exe za pomocą floss.exe

Po zakończeniu automatycznej analizy przez narzędzie floss.exe na ekranie Wiersza polecenia powinny pojawić się wydobyte ciągi znaków.

...
Ciągi znaków wydobyte z pliku ethicalblue.exe za pomocą narzędzia floss.exe

Przechwycenie zrzucanych ładunków (ang. payload) za pomocą piaskownicy Sandboxie

Program Sandboxie to bezpłatna piaskownica, która izoluje wykonanie programu od systemu operacyjnego.

Narzędzie to można pobrać z adresu https://sandboxie-plus.com/downloads/

Instalacja programu Sandboxie nie powinna sprawić kłopotu, ale poniżej jest instrukcja jeśli ktoś potrzebuje.

Instalacja piaskownicy Sandboxie. Krok po kroku »

Po zakończonej instalacji należy kliknąć prawym przyciskiem myszy na próbkę ethicalblue.exe i wybrać nową opcję Uruchom w piaskownicy.

...
Sandboxie (Uruchom w piaskownicy)

Zostawiamy zaznaczoną domyślną piaskownicę (Default Box) i zatwierdzamy przyciskiem OK.

...
Sandboxie (Default Box / OK)

Program ethicalblue.exe został uruchomiony pod kontrolą piaskownicy Sandboxie. Okno sterowania piaskownicą Sandboxie jest dostępne po kliknięciu ikony w zasobniku systemowym i wybraniu opcji Pokaż okno.

...
Ikona Sandboxie w zasobniku systemowym (Pokaż okno)

W oknie sterowania zmieniamy widok z Programy na pozycję Pliki i foldery.

...
Sterowanie Sandboxie (Widok / Pliki i foldery)

Rozwijając kolejne elementy struktury katalogów można dojść do pliku ethicalblue.png. Jest to niegroźny ładunek (ang. payload) zrzucony przez próbkę ethicalblue.exe.

...
Niegroźny ładunek (ang. payload) z próbki ethicalblue.exe

Próbka ethicalblue.exe pod kontrolą piaskownicy Sandboxie nie zmieniła tła ekranu, gdyż wykonanie zostało wyizolowane od systemu. Utworzony plik również został odizolowany od systemu oraz dodatkowo można go w miarę łatwo odnaleźć.

Zakończenie

Niniejszy tekst powstał, aby zainteresowane osoby poznały jak w celach edukacyjnych bezpiecznie wymieniać się próbkami oraz jak bezpłatnie stworzyć małe laboratorium do analizy i eksperymentów z wirusami komputerowymi.

Warto przeczytać