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

Faza 1: wybór odpowiedniej platformy, instalacja systemu

Zanim zabierzesz się za instalację czegokolwiek, musisz dokonać wyboru platformy sprzętowej - wybór ten determinuje zarówno możliwe systemy operacyjne, jak i sam sposób ich instalacji:

  • platforma Raspberry Pi to Raspbian (obecnie Raspberry Pi OS), względnie Ubuntu for Raspberry Pi - pobrany obraz systemu musisz nagrać na kartę pamięci, a następnie, koniecznie przed pierwszym startem systemu, na pierwszej partycji utworzyć pusty plik o nazwie "ssh" (bez rozszerzenia)
  • platforma NanoPi (NEO2 i NEO3) to Ubuntu w specjalnej wersji od FriendlyElec (pobrany obraz systemu po nagraniu na kartę pamięci jest gotowy do pracy)
  • normalny komputer stacjonarny lub laptop - Debian, Ubuntu, Kali Linux lub inny klon Debiana z systemd w wersji 229 lub wyższej (czyli wydany w 2016 lub później) - pobrany obraz musisz nagrać na płytę CD lub pen drive'a i wykonać standardową instalację systemu
  • Macbook (w tym z procesorem M1) - Kali Linux (patrz niżej)

Raspberry Pi - Raspbian czy Ubuntu?

Wybierając platformę Raspberry Pi, masz do wyboru 2 systemy: Raspbian lub Ubuntu. Różnice między nimi:

  • Raspbian (oryginalnie dostępny tylko w wersji 32-bitowej) - jest to system Debian, mocno zmodyfikowany pod Raspberry Pi, z różnymi dodatkowymi narzędziami i prekonfigurowany do działania w trybie graficznym
  • Raspberry Pi OS (czyli 64-bitowy Raspbian) - tej wersji raczej unikaj, gdyż ma ona jeszcze (grudzień 2021) różne drobne niedoróbki
  • Ubuntu 20.04 for Raspberry Pi - dostępne w wersjach 32- i 64-bit, obsługuje tylko model Raspberry Pi 4, jego potencjalną przewagą jest większa zgodność ze standardowym Ubuntu Server, oraz nieco nowsze wersje pakietów z oprogramowaniem, niż w przypadku Debiana

Wersja 32- czy 64-bitowa?

Jeśli Twoja wybrana platforma ma 3 GB RAM lub mniej, a masz dla niej wybór pomiędzy 32- i 64-bitowym systemem operacyjnym, wybierz wersję 32-bitową, gdyż zarządza ona dużo efektywniej tak niewielką ilością pamięci. System 64-bitowy opłaca się dopiero od 4 GB RAM.

Kali Linux - pełna instalacja czy tryb Live USB Persistence?

Decydując się na użycie Kali Linuxa masz dwie możliwości:

  1. Pobrać obraz instalacyjny dla wybranej architektury sprzętowej i wykonać pełną instalację, jako podstawowy system na komputerze (albo jako multi-boot, czego jednak nie polecamy).

  2. Pobrać obraz Live:

    • zapisać go na dysk zewnętrzny
    • stworzyć na tym dysku dodatkową, trzecią, szyfrowaną partycję na dane
    • każdorazowo uruchamiać system z tego dysku w trybie Live USB Encrypted Persistence (prawie identycznie jak w przypadku Funkcjonariusza, tyle że w kolejnych krokach zamiast Funkcjonariusza musisz zainstalować Funkcjonariusza Mobilnego)

Ten drugi tryb daje Ci największe możliwości: Kali Linux pracuje tak samo jak gdyby był normalnie zainstalowany na komputerze, pozwalając też na zaszyfrowanie partycji z danymi (co w ogóle nie jest możliwe na Raspberry Pi).

Z drugiej strony, uruchamianie Kali Linuxa w tym trybie (nawet bez szyfrowania partycji) wymaga użycia ekranu i klawiatury, aby manualnie wybrać czwartą lub piątą opcję w menu startowym - co jest z reguły bezproblemowe na laptopie, ale już może stanowić poważny problem na komputerze stacjonarnym działającym w trybie headless.

Faza 2: instalacja Funkcjonariusza Mobilnego

Instalacja podstawowa

Uruchom nowo zainstalowany system. Upewnij się, że masz połączenie z Internetem (podłącz kabel lub skonfiguruj sieć Wi-fi), po czym otwórz terminal tekstowy i wykonaj sudo su - aby przełączyć się na roota. Będąc już rootem, wykonaj kolejno:

apt update
apt install git
git clone https://github.com/drivebadger/drivebadger /opt/drivebadger
git clone https://github.com/drivebadger/compat /opt/drivebadger/external/compat
git clone https://github.com/drivebadger/ext-veracrypt /opt/drivebadger/external/ext-veracrypt
git clone https://github.com/drivebadger/ignore-known /opt/drivebadger/config/ignore-known

(dlaczego Drive Badger?)

Konfiguracja i dodatki funkcjonalne

Powyższe 4 repozytoria to wersja minimum - wystarczająca, aby uruchomić proces eksfiltracji danych, ale nie będzie on działał optymalnie. Do powyższego zestawu musisz jeszcze dorzucić wybrane repozytoria konfiguracyjne i hooki - klonując je do katalogów odpowiednio /opt/drivebadger/config i /opt/drivebadger/hooks:

  • to dotyczy również Twoich dodatkowych repozytoriów (spoza przestrzeni nazw github.com/drivebadger)
  • możesz używać również repozytoriów prywatnych - tutaj masz instrukcję ich instalacji i późniejszej aktualizacji
  • możesz też używać repozytoriów SVN - skrypt /opt/drivebadger/update.sh również je rozpoznaje i aktualizuje
  • możesz też ręcznie (albo własnymi skryptami) tworzyć podkatalogi wewnątrz /opt/drivebadger/config i /opt/drivebadger/hooks - jesteś wówczas odpowiedzialny za zarządzanie zawartością tych podkatalogów

Upewnij się, że zainstalowałeś wszystkie komponenty, których zamierzasz używać (zobacz ten artykuł oraz poniższy przykład gotowego skryptu instalacyjnego jako przykłady komponentów, jakie masz do wyboru).

Klucze szyfrujące

Funkcjonariusz Mobilny wspiera 4 najbardziej istotne metody szyfrowania: Apple FileVault, Bitlocker, LUKS i VeraCrypt.

Oczywiście aby odszyfrowanie czegokolwiek było możliwe, musisz jeszcze zainstalować repozytoria z hasłami i/lub kluczami odzyskiwania (jeśli posiadasz tylko te hasła/klucze) - lub wgrać klucze przypisane do dysków do katalogu /etc/drivebadger/keys. Dokładną instrukcję znajdziesz na tej stronie.

Prywatne repozytoria z kluczami instalujesz podobnie jak prywatne repozytoria konfiguracyjne:

GIT_SSH=/opt/drivebadger/internal/git/helper.sh \
    GIT_KEY=~/.ssh/id_github_nazwa-repozytorium \
    git clone \
    git@github.com:twoj-uzytkownik-github/nazwa-repozytorium.git \
    /opt/drivebadger/config/nazwa-repozytorium

Modyfikatory systemy plików

Funkcjonariusz Mobilny posiada funkcjonalność modyfikacji systemu plików w locie, zaraz po jego eksfiltracji. Aby z niej skorzystać, musisz najpierw stworzyć własny injector - zobacz repozytorium z przykładami. Mając gotowe repozytorium z injectorem, instalujesz je w katalogu /opt/drivebadger/injectors w sposób identyczny, jak instaluje się hooki.

Pamiętaj, że w Polsce dozwolone jest używanie tej funkcji tylko w celach testowych, ew. technicznego przygotowania działań, które mają być prowadzone już poza polską jurysdykcją.

Uzbrojenie dysku

W terminalu tekstowym, jako root, wykonaj:

cd /opt/drivebadger/setup/mobile && ./install.sh

Spowoduje to uzbrojenie komputera - od teraz, każde podłączenie i odłączenie urządzenia USB będzie generować zdarzenie, obsługiwane następnie przez skrypty Funkcjonariusza Mobilnego - najczęściej będzie to po prostu eksfiltracja danych.

Przykładowy skrypt instalacyjny

Poniższy przykład powinien być uruchamiany na terminalu jako użytkownik root. Instaluje on wszystkie możliwe komponenty:

apt update
apt install git

git clone https://github.com/drivebadger/drivebadger /opt/drivebadger
git clone https://github.com/drivebadger/hook-wcxftp /opt/drivebadger/hooks/hook-wcxftp
git clone https://github.com/drivebadger/hook-fstab /opt/drivebadger/hooks/hook-fstab
git clone https://github.com/drivebadger/ignore-known /opt/drivebadger/config/ignore-known
git clone https://github.com/drivebadger/exclude-windows /opt/drivebadger/config/exclude-windows
git clone https://github.com/drivebadger/exclude-macos /opt/drivebadger/config/exclude-macos
git clone https://github.com/drivebadger/exclude-linux /opt/drivebadger/config/exclude-linux
git clone https://github.com/drivebadger/exclude-antivirus /opt/drivebadger/config/exclude-antivirus
git clone https://github.com/drivebadger/exclude-software /opt/drivebadger/config/exclude-software
git clone https://github.com/drivebadger/exclude-devel /opt/drivebadger/config/exclude-devel
git clone https://github.com/drivebadger/exclude-user /opt/drivebadger/config/exclude-user
git clone https://github.com/drivebadger/exclude-erp /opt/drivebadger/config/exclude-erp
git clone https://github.com/drivebadger/compat /opt/drivebadger/external/compat
git clone https://github.com/drivebadger/ext-veracrypt /opt/drivebadger/external/ext-veracrypt

# w tym miejscu instalujesz własne repozytoria:
# - paczki z kluczami szyfrującymi do dysków; przykład: https://github.com/drivebadger/keys-bitlocker-demo
# - konfigurację Twoich dysków na dane; przykład: https://github.com/drivebadger/target-demo
# - ewentualne hooki, injectory i inne dodatki funkcjonalne

cd /opt/drivebadger/setup/mobile && ./install.sh