HTB Sherlock - TickTock Writeup

HTB Sherlock - TickTock Writeup

Scenariusz Zadania

Gladys jest nowym pracownikiem w firmie. Otrzymała e-mail informujący ją, że dział IT ma przeprowadzić prace na jej komputerze. Została poinstruowana, aby zadzwonić do zespołu IT, który poinformuje ją, jak umożliwić im zdalny dostęp. Jednak zespół IT to w rzeczywistości grupa hakerów, którzy próbują zaatakować Forela.

(ang. Gladys is a new joiner in the company, she has recieved an email informing her that the IT department is due to do some work on her PC, she is guided to call the IT team where they will inform her on how to allow them remote access. The IT team however are actually a group of hackers that are attempting to attack Forela.)

Artefakty

Po rozpakowaniu pliku ZIP otrzymujemy logi zebranych artefaktów w formacie CSV oraz kopie najważniejszych plików z dysku C użytkownika. W plikach znajdziemy MFT, pliki konfiguracyjne, logi zdarzeń, pliki Prefetch itp. Łącznie otrzymujemy około 990 plików (Rys. 1).

Rys. 1. Zawartość pobranego pliku zip po rozpakowaniu.
Rys. 1. Zawartość pobranego pliku zip po rozpakowaniu.

Rozwiązanie

Zadanie 1

Jak nazywał się plik wykonywalny, który został przesłany jako agent C2?

(ang. What was the name of the executable that was uploaded as a C2 Agent?)

Po przejrzeniu zawartości katalogów stwierdziłem, że tym razem rozpocznę poszukiwania od sprawdzenia pliku MFT. Za pomocą programu MFT Explorer otworzyłem plik i rozpocząłem przeglądanie plików znajdujących się w katalogu domowym użytkownika gladys. Na pulpicie użytkownika zauważyłem dwa wyróżniające się pliki: pierwszy to merlin.exe, który okazał się cross-platformowym agentem C2 napisanym w GO, oraz skrypt PowerShell Invoke-TimeWizard.ps1, czyli od razu odpowiedź na zadanie 7 (Rys. 2).

Rys. 2. MFTExplorer - wykryty agent C2.
Rys. 2. MFTExplorer - wykryty agent C2.

Odpowiedź: merlin.exe

Zadanie 2

Jaki był identyfikator sesji podczas początkowego dostępu?

(ang. What was the session id for in the initial access?)

Z opisu zadania dowiadujemy się, że atakujący uzyskał zdalny dostęp do komputera, uprzednio informując o tym pracownika. Analizując otrzymane pliki, zauważyłem, że w katalogu C/Users/gladys/AppData/Local/ znajdują się artefakty związane z aplikacją TeamViewer, która umożliwia łatwe i szybkie uzyskanie zdalnego dostępu do komputera.

Podczas swojej pracy byłem świadkiem, jak mój kolega, przeprowadzając testy socjotechniczne za pomocą TeamViewera, uzyskał dostęp do komputera ofiary, więc od razu zainteresowała mnie zawartość tego katalogu. Znajduje się tam plik TeamViewer15_Logfile.log, który zawiera wszystkie informacje dotyczące uzyskania dostępu przez atakującego. To właśnie w tym pliku znalazłem odpowiedź dotyczącą numeru sesji uzyskanej przez atakującego (Rys. 3). Dodatkowo w tym samym pliku znalazłem informacje na temat przesłanego pliku merlin.exe oraz odpowiedzi na jeszcze dwa zadania (zad. 4 oraz 8).

Rys. 3. Logi z oprogramowania TeamViewer, nawiązanie sesji przez atakującego.
Rys. 3. Logi z oprogramowania TeamViewer, nawiązanie sesji przez atakującego.

Odpowiedź: -2102926010

Zadanie 3

Napastnik próbował ustawić hasło BitLocker na dysku C:. Jakie było to hasło?

(ang. The attacker attempted to set a bitlocker password on the C: drive what was the password?)

Założyłem, że atakujący próbował ustawić hasło za pomocą polecenia w PowerShell. Po wykonaniu polecenia target/release/chainsaw search --skip-errors "powershell" ../htb/Collection/C/Windows/ --timestamp 'Event.System.TimeCreated_attributes.SystemTime' --from "2023-05-04T11:35:00" otrzymałem wszystkie wystąpienia PowerShell. Specjalnie dodałem czas, aby ograniczyć liczbę wyników, ale i tak było ich całkiem sporo - aż 634. Jednak znalezienie właściwego wpisu okazało się zaskakująco łatwe, ponieważ bardzo się wyróżniał na tle innych (Rys. 4).

Rys. 4. Polecenie wykonane przez atakującego.
Rys. 4. Polecenie wykonane przez atakującego.

Całe wykonane polecenie było zakodowane w base64. Po zdekodowaniu za pomocą CyberChef i usunięciu NULL otrzymałem hasło (Rys. 5).

Rys. 5. Zdekodowane polecenie zawierające hasło.
Rys. 5. Zdekodowane polecenie zawierające hasło.

Odpowiedź: reallylongpassword

Zadanie 4

Jakiego imienia użył napastnik?

(ang. What name was used by the attacker?)

Tak jak już wspomniałem podczas rozwiązywania zadania nr 2, w tym samym logu z TeamViewer TeamViewer15_Logfile.log znajdują się imię i nazwisko użyte przez atakującego (Rys. 6).

Rys. 6. Imie i nazwisko użyte przez atakującego.
Rys. 6. Imie i nazwisko użyte przez atakującego.

Odpowiedź: Fritjof Olfasson

Zadanie 5

Jaki jest adres C2?

(ang. What IP address did the C2 connect back to?)

Za pomocą polecenia chainsaw search --skip-errors "merlin.exe" ../htb/Collection/C/Windows/ otrzymuję wszystkie zdarzenia wywołane przez agenta merlin.exe. W prawie każdym z tych zdarzeń znajduje się adres IP, do którego agent nawiązywał połączenie (Rys. 7).

Rys. 7. Adres IP C2.
Rys. 7. Adres IP C2.

Odpowiedź: 52.56.142.81

Zadanie 6

Jaką kategorię nadał Windows Defender plikowi binarnemu C2?

(ang. What category did Windows Defender give to the C2 binary file?)

Przeglądając pliki zebrane jako artefakty w katalogu C/ProgramData/Microsoft/Windows Defender/Support, zauważyłem dostępne pliki logów z Windows Defendera. Moją uwagę zwrócił plik MPLog-07102015-052145.log. Ponieważ jest to plik binarny, użyłem polecenia strings -e l "C/ProgramData/Microsoft/Windows Defender/Support/MPLog-07102015-052145.log" | grep merlin.exe, aby wyszukać wszystkie wystąpienia merlin.exe. Wynik tego polecenia pozwolił mi znaleźć odpowiedź na to zadanie oraz na zadanie nr 9 (Rys. 8).

Rys. 8. Kategoria nadana przez Windows Defender dla agenta C2.
Rys. 8. Kategoria nadana przez Windows Defender dla agenta C2.

Odpowiedź: VirTool:Win32/Myrddin.D

Zadanie 7

Jaka była nazwa pliku skryptu PowerShell, którego napastnicy użyli do manipulacji czasem?

(ang. What was the filename of the powershell script the attackers used to manipulate time?)

Odpowiedź na to zadanie znalazłem już podczas rozwiązywania zadania nr 1. Przeglądając zawartość MFT, zauważyłem na pulpicie użytkownika dwa pliki: merlin.exe oraz Invoke-TimeWizard.ps1. Nazwa Invoke-TimeWizard.ps1 od razu sugeruje, że jest to skrypt odpowiedzialny za modyfikacje czasu w systemie. Dodatkowo, sprawdzając zawartość pliku, zauważyłem polecenia PowerShell odpowiedzialne za modyfikacje czasu, co utwierdziło mnie w przekonaniu, że jest to poszukiwany przeze mnie plik (Rys. 7).

Rys. 9. MFTExplorer - wykryty skrypt Powershell do manipulacji czasu.
Rys. 9. MFTExplorer - wykryty skrypt Powershell do manipulacji czasu.

Odpowiedź: Invoke-TimeWizard.ps1

Zadanie 8

O której godzinie rozpoczęło się połączenie podczas początkowego dostępu?

(ang. What time did the initial access connection start?)

Pytanie było trochę podchwytliwe, ponieważ zmyliła mnie kolejność tego zadania. Zazwyczaj pytanie o czas nawiązania połączenia przez atakującego odnosi się do C2. Zajęło mi chwilę, zanim zrozumiałem, że chodzi o pierwsze nawiązane połączenie przez atakującego. Pierwszym nawiązanym połączeniem było to przez TeamViewer (Rys. 10).

Rys. 10. Nawiązane pierwszego połączenie przez atakującego.
Rys. 10. Nawiązane pierwszego połączenie przez atakującego.

Odpowiedź: 2023/05/04 11:35:27

Zadanie 9

Jakie są sumy kontrolne SHA1 i SHA2 złośliwego pliku binarnego?

(ang. What is the SHA1 and SHA2 sum of the malicious binary?)

Odpowiedź na to pytanie znalazłem podczas rozwiązywania zadania nr 6 (Rys. 11).

Rys. 11. Sumy kontrolne zgłoszone przez Windows Defender dla agenta C2.
Rys. 11. Sumy kontrolne zgłoszone przez Windows Defender dla agenta C2.

Odpowiedź: ac688f1ba6d4b23899750b86521331d7f7ccfb69:42ec59f760d8b6a50bbc7187829f62c3b6b8e1b841164e7185f497eb7f3b4db9

Zadanie 10

Ile razy skrypt PowerShell zmienił czas na maszynie?

(ang. How many times did the powershell script change the time on the machine?)

Event ID odpowiedzialny za zmianę czasu to 4616. Za pomocą polecenia chainsaw search -t 'Event.System.EventID: =4616' --skip-errors C/Windows/System32 wyszukałem wszystkie zdarzenia. Okazało się, że liczba 2374 nie jest prawidłową odpowiedzią (Rys. 12).

Rys. 12. Wykryta liczba zdarzeń dotyczących zmiany czasu w systemie.
Rys. 12. Wykryta liczba zdarzeń dotyczących zmiany czasu w systemie.
Dlatego sprawdziłem, co znajduje się w logach. Inwestygacja okazała się nader prosta, ponieważ pierwsze eventy dotyczyły zmiany czasu za pomocą aplikacji SystemSettingsAdminFlows.exe (Rys. 13), natomiast mnie interesowały tylko zdarzenia dotyczące zmiany czasu za pomocą wcześniej znalezionego skryptu, który był wykonywany za pomocą PowerShell.
Rys. 13. Wykryte dodatkowe zmiany czasu wykonane przez <code>SystemSettingsAdminFlows.exe</code>.
Rys. 13. Wykryte dodatkowe zmiany czasu wykonane przez SystemSettingsAdminFlows.exe.
Dodanie grep oraz wc -l podało mi prawidłową liczbę zmian czasu wykonanych przez atakującego (Rys. 14).
Rys. 14. Liczba zdarzeń dotyczących zmiany czasu wykonana przez atakującego.
Rys. 14. Liczba zdarzeń dotyczących zmiany czasu wykonana przez atakującego.

Odpowiedź: 2371

Zadanie 11

Jaki jest SID użytkownika-ofiary?

(ang. What is the SID of the victim user?)

Odpowiedź na to pytanie znajduje się w każdym zdarzeniu, w którym zawarta była nazwa użytkownika. Tak więc, rozwiązując poprzednie zadanie, skopiowałem SID użytkownika (Rys. 15).

Rys. 15. SID użytkownika.
Rys. 15. SID użytkownika.

Odpowiedź: S-1-5-21-3720869868-2926106253-3446724670-1003