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.uuid
Pliki 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.uuid
Pliki 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.sh
Pliki 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.uuid
ext4
z etykietą persistence
) jest partycją na dane i jej identyfikator UUID powinien zostać dodany do pliku target.uuid
ignore.uuid
Jeś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