THM Honeynet Collapse – Zadanie 8

Ostatnim zadaniem w CTFie Honeynet Collapse było zadanie ósme. Polegało ono na analizie obrazu dysku urządzenia Mac. Użytkownik pobrał i zainstalował pewnego wirusa, a ja musiałem znaleźć informacje na jego temat.

Pytanie 1. — strona pobierania

  • Poziom trudności: łatwy 🟢
  • Liczba punktów: 30
  • Treść: Z jakiej strony internetowej użytkownik pobrał instalator złośliwej aplikacji?

Pierwsze co przyszło mi na myśl to przejrzenie historii przeglądania Safarii. Pliki tej przeglądarki znajdują się w katalogu ~/Library/Safari (~ oznacza katalog domowy użytkownika). Plik History.db odpowiada za przechowywanie historii przeglądania:

Po zamontowaniu obrazu dysku przy użyciu apfs-fuse, otworzyłem plik History.db w aplikacji DB Browser for SQLite. W tabeli history_items znalazłem URL z domeną .thm, który był odpowiedzią na pytanie pierwsze:

id | url                     | domain_expansion  [...]
[...]
55 | http://deve*******.thm/ | NULL              [...]
[...]

Pytanie 2. — plik instalacyjny

  • Poziom trudności: łatwy 🟢
  • Liczba punktów: 30
  • Treść: Jak nazywa się instalator złośliwej aplikacji?

Najbardziej oczywistym miejscem do sprawdzenia był katalog Downloads, ale tam nie było szukanego instalatora (był za toDocker.dmg, ale to nie ten plik).

Będąc jeszcze w katalogu z plikami Safarii, przejrzałem zawartość pliku Downloads.plist:

$ plistutil -i ./Downloads.plist

W historii pobierania znajdował się jeden wpis:

[...]
<date>2025-07-04T10:08:25Z</date>
<key>DownloadEntryURL</key>
<string>http://devexxxxxx.thm/Devexxxxxxxxx.pkg</string>
<key>DownloadEntrySandboxIdentifier</key>
<string>5E5E49EB-A07C-489C-B6D6-BCE05557044C</string>
<key>DownloadEntryBookmarkBlob</key>
[...]

Odpowiedzią na pytanie drugie było Develxxxxxxxxx.pkg.

Pytanie 3. — data i czas instalacji

  • Poziom trudności: średni 🟡
  • Liczba punktów: 60
  • Treść: Kiedy złośliwa aplikacja została zainstalowana w systemie?

Aby znaleźć czas instalacji pakietu, postanowiłem przeszukać plik install.log, który znajdował się w katalogu /private/var/log.

Po wyszukaniu w pliku nazwy instalatora znalazłem następujący wpis:

2025-07-04 xx:yy:zz-07 Lucass-Virtual-Machine installd[709]: Installed "Devexxxxxxxxxx" ()

Liczba „-07” przy czasie oznacza, że komputer był w strefie czasowej odsuniętej od UTC o siedem godzin. Z tego powodu odpowiedzią na pytanie był data i czas przesunięty o siedem godzin w przyszłość.

Pytanie 4. — uprawnienia TCC

  • Poziom trudności: średni 🟡
  • Liczba punktów: 60
  • Treść: Które uprawnienie TCC zostało najpierw zażądane przez aplikację?

Uprawnienia TCC (Transparency, Consent and Control)pozwalają użytkownikowi na wyraźne przyznawanie aplikacjom dostępu do wrażliwych usług i danych (np. do kamerki, mikrofonu itd.).

Informacje na temat przydzielonych uprawnień znajdują się w katalogu ~/Library/Application Support/com.apple.TCC/TCC.db (dostępny jest również plik dla całego systemu). Po otwarciu pliku TCC.db w przeglądarce baz danych szybko znalazłem pierwsze żądane uprawnienie:

Pytanie 5. — pełny adres URL do serwera C2

  • Poziom trudności: trudny 🔴
  • Liczba punktów: 120
  • Treść: Jaki jest pełny adres URL C2, do którego aplikacja przesłała dane?

We wcześniej analizowanym pliku install.log był widoczny wpis wskazujący ścieżkę instalacji:

xxxx xxxx Lucass-Virtual-Machine installd[709]: PackageKit: Touched bundle /Applications/Devexxxxxxxx.app

Po przejściu do katalogu /Applications/Devexxxxxxxx.app wystarczyło zgrepować rekursywnie katalog po frazie „http„:

Resources/script:LR="http://c7.macos-uxxxxxxxxxxx.info:8080"

grep: Resources/MainMenu.nib/keyedobjects-101300.nib: plik binarny pasuje do wzorca
grep: Resources/MainMenu.nib/keyedobjects.nib: plik binarny pasuje do wzorca

Adres http://c7.macos-uxxxxxxxxxxx.info:8080 był odpowiedzią na pytanie piąte.

Pytanie 6. — pełny adres URL do serwera C2

  • Poziom trudności: bonus 🌟
  • Liczba punktów: 25
  • Treść: Jakiego mechanizmu persistence używała aplikacja?

W ostatnim zadaniu w całym CTFie trzeba było znaleźć mechanizm, za pomocą którego aplikacja utrzymywała działanie w systemie.

Pierwszy mechanizm, który przyszedł mi na myśl to LaunchAgent. Na początek sprawdziłem katalog systemowy /System/Library/LaunchAgents, ale w nim był jedynie plik związany z agentem Spice.

Drugim katalogiem jakim sprawdziłem był katalog ~/Library/LaunchAgents, w którym już jasno było widać plik autostartu złośliwej aplikacji:

┌──(bonk㉿bonx)-[~/mac/root]
└─$ cd Users/lucasrivera/Library/LaunchAgents 
                                                                                                                                                                                                                                            
┌──(bonk㉿bonx)-[~/.../Users/lucasrivera/Library/LaunchAgents]
└─$ ls
com.developai.agent.plist  DevelopAI.sh