HTB Sherlock - Detroit becomes Human Writeup

HTB Sherlock - Detroit becomes Human Writeup

Scenariusz Zadania

Alonzo Spire jest zafascynowany sztuczną inteligencją po zauważeniu ostatniego wzrostu wykorzystania narzędzi AI do wspomagania codziennych zadań. Natrafił na sponsorowany post w mediach społecznościowych dotyczący narzędzia AI od Google. Post miał ogromny zasięg, a strona, która go opublikowała, miała ponad 200 tysięcy obserwujących. Bez zastanowienia pobrał narzędzie udostępnione w poście. Jednak po zainstalowaniu nie mógł go znaleźć na swoim systemie, co wzbudziło jego podejrzenia. Analityk DFIR został powiadomiony o możliwym incydencie na maszynie administratora systemu Foreli. Twoim zadaniem jest pomoc analitykowi w przeprowadzeniu analizy, aby znaleźć prawdziwe źródło tego dziwnego incydentu.

(ang. Alonzo Spire is fascinated by AI after noticing the recent uptick in usage of AI tools to help aid in daily tasks. He came across a sponsored post on social media about an AI tool by Google. The post had a massive reach, and the Page which posted had 200k + followers. Without any second thought, he downloaded the tool provided via the Post. But after installing it he could not find the tool on his system which raised his suspicions. A DFIR analyst was notified of a possible incident on Forela’s sysadmin machine. You are tasked to help the analyst in analysis to find the true source of this odd incident.)

Artefakty

Po rozpakowaniu otrzymanego archiwum ZIP otrzymujemy kopię plików z dysku C. Wśród nich znajdują się m.in. pliki Prefetch, logi zdarzeń, kilka katalogów domowych użytkowników oraz plik MFT. Łącznie mamy do dyspozycji 492 pliki różnego typu do rozwiązania zadań (Rys. 1). Moim zdaniem jest to jedna z mniejszych ilości, z jaką miałem do czynienia podczas rozwiązywania tego typu zadań.

Rys. 1. Pobrane artefakty.
Rys. 1. Pobrane artefakty.

Rozwiązanie

Zadanie 1

Jaki jest pełny link do posta w mediach społecznościowych, który jest częścią kampanii malware, a który został nieświadomie otwarty przez Alonzo Spire’a?

(ang. What is the full link of a social media post which is part of the malware campaign, and was unknowingly opened by Alonzo spire?)

Ponieważ użytkownik odwiedził post w mediach społecznościowych, od razu rozpocząłem poszukiwania od zlokalizowania plików odpowiedzialnych za historię przeglądarki. W katalogu C/Users/alonzo.spire/AppData/Local/Microsoft/Edge/User Data/Default znalazłem plik History przeglądarki Edge. Dalej było już dość prosto. W tabeli urls, w wierszu 21, znalazłem pierwszy link prowadzący do medium społecznościowego odwiedzonego przez użytkownika. Kolumna z tytułem potwierdziła, że jest to post dotyczący nowego narzędzia AI (Rys. 2).

Rys. 2. Historia przeglądarki użytkownika Alonzo.
Rys. 2. Historia przeglądarki użytkownika Alonzo.

Odpowiedź: https://www.facebook.com/AI.ultra.new/posts/pfbid0BqpxXypMtY5dWGy2GDfpRD4cQRppdNEC9SSa72FmPVKqik9iWNa2mRkpx9xziAS1l

Zadanie 2

Czy możesz potwierdzić znacznik czasu w UTC, kiedy Alonzo odwiedził ten post?

(ang. Can you confirm the timestamp in UTC when alonzo visited this post?)

W tym samym wierszu, w kolumnie last_visit_time, która informuje o ostatniej wizycie użytkownika pod danym adresem URL, znalazłem wartość 13355296200136503. Jest to znacznik czasu zapisany w formacie WebKit/Chrome. Za pomocą narzędzia epochconverter przekonwertowałem ten znacznik na standardowy format i uzyskałem odpowiedź.

Odpowiedź: 2024-03-19 04:30:00

Zadanie 3

Alonzo pobrał plik na system, myśląc, że jest to narzędzie asystenta AI. Jaka jest nazwa pobranego pliku archiwum?

(ang. Alonzo downloaded a file on the system thinking it was an AI Assistant tool. What is name of the archive file downloaded?)

W tym samym pliku (History), w tabeli downloads znajduje się pełna ścieżka do archiwum RAR pobranego przez użytkownika. Nazwa archiwum zawiera “AI Gemini”, co bezpośrednio sugeruje odpowiedź (Rys. 3).

Rys. 3. Pobrane archiwum przez użytkownika.
Rys. 3. Pobrane archiwum przez użytkownika.

Odpowiedź: AI.Gemini Ultra For PC V1.0.1.rar

Zadanie 4

Jaki był pełny bezpośredni adres URL, z którego został pobrany plik?

(ang. What was the full direct url from where the file was downloaded?)

Z poprzedniego zadania wiem, że ID dla pobranego pliku RAR wynosi 5. W kolejnej tabeli, downloads_url_chains, dla tego samego ID znajdują się cztery wpisy. Oznacza to, że zanim użytkownik ostatecznie pobrał oprogramowanie, został trzykrotnie przekierowany. Ostatni wpis to adres URL, z którego pobrano plik RAR (Rys. 4).

Rys. 4. Pełny bezpośredni URL, z którego zostało pobrane złośliwe oprogramowanie.
Rys. 4. Pełny bezpośredni URL, z którego zostało pobrane złośliwe oprogramowanie.

Odpowiedź: https://drive.usercontent.google.com/download?id=1z-SGnYJCPE0HA_Faz6N7mD5qf0E-A76H&export=download

Zadanie 5

Alonzo następnie przystąpił do instalacji nowo pobranej aplikacji, myśląc, że to legalne narzędzie AI. Jaka jest rzeczywista wersja produktu, która została zainstalowana?

(ang. Alonzo then proceeded to install the newly download app, thinking that its a legit AI tool. What is the true product version which was installed?)

Muszę przyznać, że to zadanie rozwiązałem dopiero po zakończeniu zadania nr 6. Po wykryciu zdarzenia dotyczącego instalacji złośliwego oprogramowania postanowiłem przeszukać zdarzenia pod kątem wartości Binary. Za pomocą polecenia chainsaw search '7B41424332434530312D373841352D343535342D413332412D3434303241344538334242337D' --skip-errors C/Windows/System32 przeszukałem jeszcze raz wszystkie zdarzenia. W wyniku otrzymałem tylko dwa zdarzenia, z czego w pierwszym z nich była podana poszukiwana przeze mnie wersja (Rys. 5).

Rys. 5. Wykryta wersja zainstalowanego oprogramowania.
Rys. 5. Wykryta wersja zainstalowanego oprogramowania.

Odpowiedź: 3.32.3

Zadanie 6

Kiedy złośliwy produkt/pakiet został pomyślnie zainstalowany na systemie?

(ang. When was the malicious product/package successfully installed on the system?)

ID zdarzenia systemu Windows, które informuje o poprawnej instalacji nowego oprogramowania na systemie, to 11707. Za pomocą polecenia chainsaw search -t 'Event.System.EventID: =11707' --skip-errors C/Windows/System32 otrzymałem 18 zdarzeń. Jednak tego dnia, kiedy użytkownik pobrał złośliwe oprogramowanie, wystąpiło tylko jedno zdarzenie dotyczące instalacji oprogramowania (Rys. 6).

Rys. 6. Czas instalacji złośliwego oprogramowania na systemie.
Rys. 6. Czas instalacji złośliwego oprogramowania na systemie.

Odpowiedź: 2024-03-19 04:31:33

Zadanie 7

Złośliwe oprogramowanie wykorzystało legalną lokalizację do umieszczenia swoich plików na końcówce. Czy możesz znaleźć ścieżkę katalogu tej lokalizacji?

(ang. The malware used a legitimate location to stage its file on the endpoint. Can you find out the Directory path of this location?)

Za pomocą polecenia MFTECMD.exe -f "$MFT" --csv ". ---csvf mft.csv" przetworzyłem plik MFT na format CSV, a następnie wykorzystałem Timeline Explorer do dalszej analizy. Znając czas instalacji złośliwego oprogramowania oraz mając na uwadze kolejne pytania, założyłem, że instalator będzie instalował skrypt PowerShell. W otrzymanych wynikach tylko jeden wpis się wyróżniał, mianowicie ru.ps1 (Rys. 7).

Rys. 7. Miejsce instalacji złośliwego pliku.
Rys. 7. Miejsce instalacji złośliwego pliku

Odpowiedź: C:\Program Files (x86)\Google

Zadanie 8

Złośliwe oprogramowanie wykonało polecenie z pliku. Jaka jest nazwa tego pliku?

(ang. The malware executed a command from a file. What is name of this file?)

Analizując zawartość katalogu, zauważyłem, że w katalogu głównym znajduje się dodatkowy plik install.cmd (Rys. 8).

Rys. 8. Wykryta nazwa złośliwego pliku.
Rys. 8. Wykryta nazwa złośliwego pliku.

Odpowiedź: install.cmd

Zadanie 9

Jakie są zawartość pliku z pytania 8? Usuń białe znaki, aby uniknąć problemów z formatowaniem.

(ang. What are the contents of the file from question 8? Remove whitespace to avoid format issues.)

Za pomocą programu MFTExplorer podejrzałem zawartość pliku (Rys. 9).

Rys. 9. Zawartość pliku <code>install.cmd</code>.
Rys. 9. Zawartość pliku install.cmd.

Odpowiedź: @echooffpowershell-ExecutionPolicyBypass-File"%~dp0nmmhkkegccagdldgiimedpic/ru.ps1

Zadanie 10

Jakie polecenie zostało wykonane z tego pliku według logów?

(ang. What was the command executed from this file according to the logs?)

Za pomocą polecenia chainsaw search 'ru.ps1' --skip-errors C/Windows/System32 wyszukałem wszystkie zdarzenia związane ze skryptem ru.ps1. W sumie znalazłem 8 zdarzeń, w każdym z nich była taka sama linia poleceń (Rys. 10).

Rys. 10. Wykonane polecenie znalezione w logach.
Rys. 10. Wykonane polecenie znalezione w logach

Odpowiedź: powershell -ExecutionPolicy Bypass -File C:\Program Files (x86)\Google\Install\nmmhkkegccagdldgiimedpic/ru.ps1

Zadanie 11

W katalogu staging malware znajduje się plik JS, który ma bardzo mały rozmiar. Jaki jest offset szesnastkowy (hex offset) tego pliku w systemie plików?

(ang. Under malware staging Directory, a js file resides which is very small in size.What is the hex offset for this file on the filesystem?)

W katalogu malware znalazłem dwa pliki JS: background.js i content.js. Spośród tych dwóch plików, content.js okazał się mniejszy. W zakładce Overview znalazłem informacje na temat offsetu pliku (Rys. 11).

Rys. 11. Wykryty offset dla najmniejszego pliku JS.
Rys. 11. Wykryty offset dla najmniejszego pliku JS.

Odpowiedź: 3E90C00

Zadanie 12

Odzyskaj zawartość tego pliku JS, abyśmy mogli przekazać go naszemu zespołowi RE/MA do dalszej analizy i zrozumienia tego łańcucha infekcji. Aby zneutralizować payload, usuń białe znaki.

(ang. Recover the contents of this js file so we can forward this to our RE/MA team for further analysis and understanding of this infection chain. To sanitize the payload, remove whitespaces.)

Podobnie jak w przypadku zawartości pliku install.cmd, zawartość pliku content.js podejrzałem za pomocą MFT Explorer (Rys. 12).

Rys. 12. Zawartość pliku <code>content.js</code>.
Rys. 12. Zawartość pliku content.js

Odpowiedź: varisContentScriptExecuted=localStorage.getItem('contentScriptExecuted');if(!isContentScriptExecuted){chrome.runtime.sendMessage({action:'executeFunction'},function(response){localStorage.setItem('contentScriptExecuted',true);});}

Zadanie 13

Jakich słów kluczowych użył Alonzo podczas wyszukiwania w Eksploratorze plików, gdy nie mógł znaleźć uruchomionej aplikacji asystenta AI?

(ang. Upon seeing no AI Assistant app being run, alonzo tried searching it from file explorer. What keywords did he use to search?)

Na początku nie wiedziałem, jak się do tego zabrać, ponieważ po raz pierwszy w Sherlockach natrafiłem na tego typu pytanie. Aby znaleźć odpowiedź, skorzystałem z tego artykułu. Za pomocą Registry Explorer otworzyłem plik NTUSER.DAT użytkownika Alonzo, a następnie pod wpisem Software\Microsoft\Windows\CurrentVersion\Explorer\WordWheelQuery znalazłem odpowiedź na to i kolejne zadanie (Rys. 13).

Rys. 13. Słowa kluczowe użyte przez Alonzo w Eksploratorze plików.
Rys. 13. Słowa kluczowe użyte przez Alonzo w Eksploratorze plików.

Odpowiedź: Google Ai Gemini tool

Zadanie 14

Kiedy Alonzo wyszukiwał tę aplikację?

(ang. When did alonzo searched it?)

Odpowiedź na to pytanie znalazłem, rozwiązując zadanie nr 13.

Odpowiedź: 2024-03-19 04:32:11

Zadanie 15

Kiedy Alonzo usunął pobrany plik po tym, jak nie mógł znaleźć żadnego narzędzia AI na systemie, stał się podejrzliwy i skontaktował się z zespołem ds. bezpieczeństwa?

(ang. After alonzo could not find any AI tool on the system, he became suspicious, contacted the security team and deleted the downloaded file. When was the file deleted by alonzo?)

Ponownie wróciłem do Timeline Explorer. Tym razem ustawiłem filtr na wszystkie pliki RAR oraz pliki usunięte. Zgodnie z chronologią, tylko jeden plik RAR został usunięty (Rys. 14).

Rys. 14. Czas usunięcia pliku rar.
Rys. 14. Czas usunięcia pliku rar.

Odpowiedź: 2024-03-19 04:34:16

Zadanie 16

Spoglądając wstecz na początek tej infekcji, znajdź wartość skrótu MD5 złośliwego instalatora.

(ang. Looking back at the starting point of this infection, please find the md5 hash of the malicious installer.?)

Wykorzystując znalezioną nazwę instalatora Google AI Gemini Ultra For PC V1.0.1.msi (Rys. 15), poszukałem informacji i znalazłem odpowiedź pod tym linkiem (Rys. 16).

Rys. 15. Znaleziona nazwa instalatora w katalogu Downloads użytkownika Alonzo.
Rys. 15. Znaleziona nazwa instalatora w katalogu Downloads użytkownika Alonzo.
Rys. 16. Znaleziona wartość md5 dla pliku <code>Google AI Gemini Ultra For PC V1.0.1.msi</code> (źródło: https://any.run/report/bb7c3b78f2784a7ac3c090331326279476c748087188aeb69f431bbd70ac6407/0ef391d1-20c0-4279-adb6-e89afe28d37f).
Rys. 16. Znaleziona wartość md5 dla pliku Google AI Gemini Ultra For PC V1.0.1.msi (źródło: https://any.run/report/bb7c3b78f2784a7ac3c090331326279476c748087188aeb69f431bbd70ac6407/0ef391d1-20c0-4279-adb6-e89afe28d37f )

Odpowiedź: BF17D7F8DAC7DF58B37582CEC39E609D