Funkcjonariusz Mobilny zapisuje eksfiltrowane dane:
Kiedy urządzenie klasy USB Mass Storage jest podłączane (lub odłączane) do komputera z Linuxem, jądro generuje całą serię różnych zdarzeń, które mechanizm udev przetwarza za pomocą reguł i we współpracy z demonem systemd konfiguruje odpowiednie interfejsy - np. pliki urządzeń w katalogu /dev, czy linki symboliczne w różnych katalogach.
Konkretnie w przypadku podsystemu "usb" i zdarzeń "add", dodawane są linki symboliczne dla poszczególnych partycji w katalogach /dev/disk/by-uuid i /dev/disk/by-id (i kilku innych, które nie są tutaj istotne).
Funkcjonariusz Mobilny rozszerza standardowe reguły udev o kilka własnych, które dla każdej nowo skonfigurowanej partycji tworzą dynamiczną usługę systemd, która z kolei uruchamia eksfiltrację danych z tej partycji. Szczegółowo wygląda to następująco:
ignore.uuidPliki ignore.uuid (dostarczane w repozytoriach konfiguracyjnych) zawierają listy identyfikatorów partycji (UUID), po jednym w każdej linii:
2021-02-18-17-44-06-00
2021-02-18-17-16-26-00
1366-8586
FFFF-FFFF
Partycje zdefiniowane w tych plikach (może być ich wiele, dostarczonych przez kilka odrębnych repozytoriów) będą kompletnie ignorowane przez Funkcjonariusza Mobilnego.
Dostępne są 2 gotowe, publiczne repozytoria z plikami ignore.uuid:
target.uuidPliki target.uuid zawierają listy identyfikatorów partycji (UUID), po jednym w każdej linii - identycznie do plików ignore.uuid.
Partycje zdefiniowane w plikach target.uuid będą:
/media/targets/sda1 (gdzie sda1 jest identyfikatorem urządzenia i partycji w systemie, np. /dev/sda1)/media/target (zawsze będzie to najnowszy podłączony dysk)Jeśli podłączysz do Funkcjonariusza Mobilnego więcej niż 1 dysk docelowy na dane jednocześnie, wówczas:
Aby to naprawić, po prostu odłącz swój dysk na dane, poczekaj 10 sekund i podłącz go ponownie.
Natomiast jeśli chcesz zmienić dysk (który się np. zapełnił), najpierw odłącz stary, potem podłącz nowy - nigdy odwrotnie.
rebuild-uuid-lists.shPliki ignore.uuid i target.uuid nie są używane bezpośrednio - zamiast tego, po każdej aktualizacji urządzenia, pliki te są przetwarzane przez skrypt /opt/drivebadger/internal/mobile/rebuild-uuid-lists.sh, który generuje z nich docelowe pliki konfiguracyjne, nie zawierające już komentarzy ani pustych linii.
Jeśli wgrywasz aktualizacje na swoje urządzenia z Funkcjonariuszem Mobilnym inaczej niż za pomocą skryptu /opt/drivebadger/update.sh aktualizującego sklonowane repozytoria Git, pamiętaj aby na końcu procesu aktualizacji uruchomić skrypt rebuild-uuid-lists.sh.
Największą wydajność zapisu danych uzyskasz dla partycji ext4 - natomiast tak naprawdę możesz użyć dowolnego typu partycji, do którego Linux posiada sterowniki obsługujące zapis, w tym NTFS (pamiętaj jednak, że zapis na NTFS jest ponad 2x wolniejszy).
Nie jest obsługiwane szyfrowanie LUKS - chyba że zainstalujesz Funkcjonariusza Mobilnego na laptopie lub komputerze stacjonarnym, na bazie Kali Linuxa (zamiast Raspberry Pi i Raspbiana).
Partycja na dane musi mieć ręcznie utworzony jeden z podanych łańcuchów katalogów:
.support/.files
.files/.data
files/data
eksfiltrowane dane są wówczas zapisywane wewnątrz podkatalogu np.
/media/target/.files/.data/20210723/$deviceserial/$partition
Jeśli na podłączonym dysku nie istnieje żaden z powyższych łańcuchów katalogów, Funkcjonariusz Mobilny przejdzie w tryb "fallback storage". Jest to prosty mechanizm zabezpieczający, mający na celu:
Uniknięcie zapisania danych na niewłaściwy dysk, jeśli partycja na nim została omyłkowo dopisana do pliku target.uuid (podwójna weryfikacja).
Proste zabezpieczenie przed przypadkowym ujawnieniem nazw i numerów seryjnych eksfiltrowanych dysków, jeśli ktoś przypadkowo przechwyci Twój dysk z danymi i podłączy do komputera, aby szybko przejrzeć jego zawartość. Dodatkowo możesz dla niepoznaki wgrać do głównego katalogu tego dysku jakieś pliki mp3, filmy itp., a katalog .files będzie ukrywany przez wiele menedżerów plików. Dzięki temu, w sytuacjach kryzysowych masz dużą szansę przejść z sukcesem pobieżną inspekcję nośników (np. na przejściu granicznym).
Funkcjonariusz używa partycji typu ext4, z opcjonalnym - aczkolwiek bardzo mocno rekomendowanym - szyfrowaniem LUKS. Funkcjonariusz Mobilny może używać partycji od Funkcjonariusza, ale tylko tych niezaszyfrowanych.
W praktyce, jeśli zależy Ci na ograniczeniu kosztu nośników użytych do ataku, warto rozważyć połączenie dysku zapasowego z Funkcjonariuszem, do eksfiltracji starych komputerów, które mają problem z obsługą szyfrowania LUKS (który to dysk nie będzie szyfrowany), z dyskiem docelowym dla Funkcjonariusza Mobilnego.
Dysk z Funkcjonariuszem zawiera 3 (lub czasem więcej) partycje:
ignore.uuidext4 z etykietą persistence) jest partycją na dane i jej identyfikator UUID powinien zostać dodany do pliku target.uuidignore.uuidJeśli:
wówczas Funkcjonariusz Mobilny będzie pracował w trybie "fallback storage" - czyli:
/media/target będzie linkiem symbolicznym do /media/fallback (a ten katalog leży na głównym systemie plików, a więc na karcie pamięci lub dysku wewnętrznym, zależnie od wybranej platformy sprzętowej)/media/fallback/20210723/$deviceserial/$partition