Funkcjonariusz: platforma open source do szybkiej eksfiltracji danych z komputerów, serwerów, telefonów, tabletów, aparatów cyfrowych i innych urządzeń USB.

kontakt@funkcjonariusz.com

Funkcjonariusz jest w stanie automatycznie wykryć i odszyfrować w locie partycje zaszyfrowane Apple FileVault, pod warunkiem że dysponujesz albo hasłem użytkownika, albo kluczem odzyskiwania.

Jak skonfigurować hasła i klucze odzyskiwania?

Zobacz repozytorium keys-filevault-demo. Zawiera ono przykładowy plik filevault.keys.

Możesz stworzyć wiele takich repozytoriów - np. dzieląc wszystkie posiadane hasła i klucze wg działów atakowanej firmy (albo wg dowolnego innego kryterium). Każde takie repozytorium powinno:

  • być sklonowane na Twój dysk jako katalog /opt/drivebadger/config/keys-filevault-twojanazwa
  • zawierać plik filevault.keys z odpowiednią zawartością (patrz niżej)

Lokalny katalog /opt/drivebadger/config/keys-filevault-twojanazwa tak naprawdę nie musi zawierać podkatalogu .git, ani być kopią repozytorium - równie dobrze może to być ręcznie wgrany katalog, który będziesz aktualizował w inny sposób. Natomiast jeśli będzie to kopia repozytorium, będziesz mógł wszystkie takie katalogi aktualizować jednym skryptem: /opt/drivebadger/update.sh.

Posiadasz więcej informacji o tych hasłach i kluczach?

Jeśli udało Ci się wejść w posiadanie haseł i/lub kluczy sparowanych bezpośrednio z numerami seryjnymi dysków twardych, możesz takie hasła zapisać w katalogu "keys directory" - zwróć uwagę, że katalog ten różni się dla Funkcjonariusza i Funkcjonariusza Mobilnego.

Jeśli posiadasz dodatkowe informacje o hasłach, pozwalające je jakoś podzielić operacyjnie (np. na budynki, piętra, działy firmy, specjalności pracowników), ale nie pozwalające na powiązanie ich bezpośrednio z dyskami twardymi, wówczas możesz spróbować:

Format pliku filevault.keys

Plik filevault.keys może zawierać:

  • hasła i/lub klucze odzyskiwania FileVault (każde w osobnej linii; mogą być ze sobą wymieszane)
  • komentarze (linie zaczynające się od #, bez żadnych spacji na początku)
  • puste linie

Przykładowy plik filevault.keys:

# macbook pro, klucz odzyskiwania
ABCD-1234-5678-90AB-CDEF-1234

# mac mini, haslo uzytkownika
MyFancyPassword

Jak działa dopasowywanie haseł i kluczy do zaszyfrowanych partycji?

Partycja APFS ma inną strukturę niż większość innych typów partycji, przypominającą raczej plastry z FreeBSD: jedna partycja, widoczna jako pojedynczy UUID, zawiera kilka (z reguły 4 lub 5) osobnych systemów plików. Wszystkie te systemy plików są montowane w systemie jako nakładające się na siebie warstwy, tworzące jeden logiczny system plików. Spośród tych warstw, tylko 1 lub 2 zawierają interesujące dane i podlegają eksfiltracji - reszta zawiera różne dane związane ze startem i odzyskiwaniem systemu.

Podobnie do partycji szyfrowanych LUKS, partycje APFS są wykrywane przez systemd/udevd, niezależnie od tego, czy są szyfrowane, czy nie. Natomiast ze względu na specyfikę APFS, działanie mechanizmu dopasowującego hasła jest nieco bardziej skomplikowana:

  • najpierw pobierana jest lista wewnętrznych systemów plików (tylko tych z potencjalnymi danymi do eksfiltracji)
  • skrypt iteruje po kolejnych systemach plików i próbuje je zamontować:
    • najpierw bez hasła (jako nieszyfrowane)
    • następnie testując kolejne hasła załadowane przez skrypt get-drive-encryption-keys.sh ze wszystkich znalezionych plików filevault.keys (za każdym razem są one ładowane na nowo, aby wykorzystać ew. hasło dopasowane wcześniej dla poprzedniego systemu plików)
    • gdy zostanie znalezione pasujące hasło, skrypt save-drive-encryption-key.sh zapisuje je w katalogu "keys directory"