Tag: macOS

  • THM Honeynet Collapse – Zadanie 8

    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