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

Chciałbym zaatakować firmę X, która ma ok. 5000 komputerów z zaszyfrowanymi dyskami. Namierzyłem już osobę, którą mogę zmusić do wydania kluczy, ale co dalej?

Kwestie prawne

Dla pewności: czy masz tytuł prawny do używania Funkcjonariusza? Zerknij na tą stronę, zanim przejdziesz dalej.

Niezbędny sprzęt

Eksfiltracja danych z ~5000 komputerów jest wyzwaniem. Aby podejść do tego wyzwania z sensem, potrzebujesz nie tylko szczegółowego planu działania, ale również odpowiedniej ilości sprzętu. Na tej stronie znajdziesz szczegółową instrukcję, dzięki której wyliczysz ilość potrzebnych nośników na eksfiltrowane dane (z kolei tutaj znajdziesz nasze rekomendacje co do wyboru modeli dysków SSD najbardziej właściwych w danej sytuacji).

Szyfrowanie dysków - wstęp

Szyfrowanie dysków twardych staje się z roku na rok coraz bardziej popularne. Szczególnie od roku 2018, gdy zaczęło obowiązywać RODO, szyfrowanie dysków w większych firmach stało się de facto standardem dla laptopów i innych urządzeń mobilnych, zabezpieczanych w ten sposób na wypadek kradzieży urządzenia.

Funkcjonariusz wspiera 4 najbardziej istotne metody szyfrowania. Oczywiście samo "wsparcie" nie wystarczy - aby możliwa była eksfiltracja danych z zaszyfrowanego dysku, potrzebujesz kluczy szyfrujących (najczęściej w postaci hasła, lub tzw. klucza odzyskiwania). Funkcjonariusz zapewnia pełną automatyzację obsługi takich kluczy (np. automatyczne wyszukanie klucza pasującego do danego dysku), ale Twoją rolą jest dostarczenie kluczy.

Jak firmy przechowują klucze szyfrujące i jak je pozyskać?

W firmach operujących setkami lub tysiącami komputerów, standardem jest zarządzanie użytkownikami i samymi komputerami za pomocą Microsoft Active Directory (czyli za pomocą tzw. domeny), bardzo często obudowanego narzędziami wspomagającymi zarządzanie grupowe typu ManageEngine, wzmacniającymi bezpieczeństwo typu CyberArk, i innymi.

Środowisko Active Directory jest najbardziej oczywistym miejscem składowania kluczy odzyskiwania do dysków zaszyfrowanych Bitlockerem (klucze te są standardowo replikowane do AD DS podczas instalacji nowych komputerów). Klucze te można potem znaleźć w pliku ntds.dit, który znajduje się na każdym tzw. kontrolerze domeny (DC, Domain Controller) - a serwery z tą rolą, z uwagi na swoją krytyczność najczęściej nie mają zaszyfrowanych dysków.

Plik ntds.dit jest główną bazą danych całego środowiska AD i jako taki, jest chroniony przed bezpośrednim dostępem, a w konsekwencji kradzieżą. Nie oznaczy to jednak, że nie da się dostać do jego zawartości. Można np. odzyskać jego kopię z Volume Shadow Copy, albo wykonać jego zrzut poleceniem ntdsutil. A mając już kopię tego pliku, można wyciągnąć z niego hasła FVE Bitlockera tym skryptem.

Czasami zamiast Active Directory, używane są inne systemy tzw. usług katalogowych. Jednak niezależnie od używanego w danej firmie systemu, możesz się spodziewać, że proces zarządzania kluczami szyfrującymi jest w pełni zautomatyzowany. A zatem:

  • kluczy tych nie znajdziesz na papierze ani w Excelu
  • są zaszyte w jakiejś bazie danych i niemal na pewno dostęp do nich jest logowany
  • dostęp do nich ma bardzo ograniczona grupa pracowników

Zespoły mające dostęp do takich baz mogą się różnie nazywać, w zależności od organizacji całego IT w firmie - np. w firmach opartych na ITIL będzie to ServiceDesk, gdzie indziej może to być Helpdesk, IT Support, Centrum Usług Wspólnych (Shared Services Center).

Powyższe ograniczenia sprawiają, że nawet jeśli zdołasz znaleźć pracownika z dostępem do takiej bazy i odpowiednio go "zmotywować", to sam proces zdobywania takiej bazy będzie najczęściej albo długotrwały (jeśli ma pozostać niezauważony), albo mocno ryzykowny. Przygotowując atak na dużą firmę, powinieneś wziąć to pod uwagę jako jedno z zagrożeń dla całego planu.

Jak rozpoznać typ klucza szyfrującego?

Funkcjonariusz wspiera 4 metody szyfrowania - wygląd klucza w każdej z nich jest inny:

  • Bitlocker - operuje na dwóch typach kluczy: haśle użytkownika (przy prawidłowo wdrożonym Bitlockerze, zna je tylko i wyłącznie użytkownik) oraz tzw. kluczu odzyskiwania, który jest przesyłany do AD i wygląda następująco: 123456-123456-123456-123456-123456-123456-123456-123456
  • Apple FileVault - podobnie jak Bitlocker, operuje na hasłach znanych tylko przez użytkownika oraz kluczach odzyskiwania, które wyglądają następująco: ABCD-1234-5678-90AB-CDEF-1234
  • VeraCrypt - tu kluczem może być hasło użytkownika, zawartość podanego pliku, lub jedno i drugie (Funkcjonariusz w tej chwili nie obsługuje tych plików) - hasło to nie jest nigdzie automatycznie przesyłane, a sam VeraCrypt jest stosowany raczej indywidualnie (gdzie użytkownik sam sobie szyfruje powierzony mu komputer), niż grupowo w firmach
  • LUKS - kluczem jest hasło użytkownika lub zawartość podanego pliku (jedno lub drugie, z czego Funkcjonariusz obsługuje tylko hasła), przy czym LUKS posiada 8 osobnych slotów, do których można przypisać różne hasła lub pliki

Hasła tworzone samodzielnie przez użytkownika, w przeciwieństwie do kluczy odzyskiwania, mogą mieć całkowicie różną postać - natomiast na podstawie samej postaci można wyciągnąć ciekawe wnioski, np.:

  • August!2021 - tego typu hasła sugerują dwie rzeczy:
    • firma narzuca pracownikom częste zmiany haseł
    • sam pracownik prawdopodobnie w innych miejscach też z przyzwyczajenia używa schematów haseł - możliwe że bardzo podobnych lub wręcz identycznych
  • WAW.1817 - tego typu hasła sugerują trzy rzeczy:
    • hasło nie zostało wymyślone przez samego użytkownika, ale założone automatycznie (najczęściej podczas instalacji Windows na nowym komputerze)
    • poszczególne elementy tego hasła są prawdopodobnie związane z czynnikami naturalnymi (np. "WAW" może oznaczać komputer przydzielony pracownikowi w Warszawie, a "1817" jest prawdopodobnie albo numerem seryjnym komputera przydzielanym przez firmę podczas instalacji, albo numerem ewidencyjnym środka trwałego, albo wręcz fragmentem jakiegoś numeru seryjnego, który można znaleźć na obudowie komputera)
    • w związku z tym, przewidzenie prawidłowego hasła dla danego komputera jest potencjalnie łatwe - tym łatwiejsze, im więcej wiedzy udało się nam zebrać o firmie, stosowanych w niej praktykach, sprzęcie komputerowym itp.
  • MyVCBootPassword123 - nawet nie patrząc na treść tego hasła, już sama jego budowa (brak znaków specjalnych i łatwa do zapamiętania forma) sugeruje, że jest to hasło do wpisywania ręcznego (którego nie można wkleić przez schowek)
  • R3c0ve4y_p@sSw0rd - jeśli treść hasła jest jakimś twierdzeniem, najprawdopodobniej jest ono prawdziwe (a przynajmniej użytkownik uznaje je za prawdziwe)
  • mStVIozEkbCTq1KYqElbkkd3TKQGpRak - długie i całkowicie losowe ciągi znaków sugerują dwie rzeczy:
    • pracownik najprawdopodobniej używa menedżera haseł (indywidualnego lub grupowego)
    • najprawdopodobniej nie jest to hasło do dysku (gdyż podczas uruchamiania komputera menedżer haseł nie jest jeszcze dostępny, a hasło w takiej postaci jest bardzo trudne i czasochłonne do wpisania ręcznie - ewentualnie może to być hasło do dysku maszyny wirtualnej, uruchamianej z poziomu Windows)

Jak ustalić realną wartość kupowanych haseł?

Zanim odkupisz od pracownika (czy kogokolwiek innego) bazę kluczy odzyskiwania lub haseł, zweryfikuj 3 aspekty:

  1. Czy te hasła/klucze pasują do którejś z metod szyfrowania obsługiwanych przez Funkcjonariusza? Jeśli nie, będą bezużyteczne, albo w najlepszym wypadku ich obsługę trzeba będzie samodzielnie zaimplementować.

  2. Jak te hasła/klucze wyglądają? I czy są to same hasła, czy też są powiązane z innymi danymi? A jeśli tak, jakimi? Przede wszystkim:

    • czy wyglądają jak klucze odzyskiwania Bitlockera lub Apple FileVault?
    • czy wyglądają jak hasła tworzone przez samych użytkowników? jeśli tak, to czy dostrzegasz w nich jakieś schematy?
    • czy wyglądają jako kody PIN? (np. 1234, 123456)
    • czy są do nich jakoś przypisane jakieś nazwy plików, numery seryjne czegokolwiek, albo jakieś inne dane? jeśli tak, to czy te dodatkowe dane zawierają coś, co wygląda na numer seryjny dysku twardego?

Pamiętaj że numery seryjne dysków twardych różnych producentów mają bardzo różną formę, np.:

  • WD-WXB1HB4WRMM5 (Western Digital, dyski konsumenckie i USB)
  • 3WGMWHCJ (Western Digital, dyski serwerowe i linia produktów HGST)
  • 5NK0071W (Seagate)
  • S1XWJ1KS928872 (Samsung)
  • 4C530001311104105165 (SanDisk)
  • OCZ-481V7ELJU81890TW (OCZ)
  • P02012409004 (Plextor)

W przypadku kluczy odzyskiwania do Bitlockera lub Apple FileVault jesteś w o tyle lepszej sytuacji, że:

  • są one generowane raz i najczęściej nie są już nigdy zmieniane (w przeciwieństwie do haseł, które użytkownik może zmieniać w dowolnym momencie, a czasem nawet bywa do tego zmuszany) - a co za tym idzie, nie ma ryzyka, że kupowane dane są już zwyczajnie nieaktualne
  • jest większa szansa, że są one generowane w ustandaryzowany, czy wręcz zautomatyzowany sposób, a następnie wiązane w jakimś systemie z konkretnym pracownikiem, środkiem trwałym, komputerem, czy dyskiem (w przeciwieństwie do VeraCrypta i LUKS, które częściej są zakładane samodzielnie przez użytkowników, w związku z czym najczęściej ciężko w ich przypadku o jakikolwiek spójny rejestr kluczy przypisanych do sprzętu)

Funkcjonariusz na chwilę obecną (grudzień 2021) nie obsługuje żadnych kluczy sprzętowych:

  • modułów TPM
  • kluczy U2F (Yubikey, Google Titan itd.)
  • kart inteligentnych (smart card)
  • urządzeń biometrycznych
  • modułów HSM
  • kluczy plikowych połączonych z hasłami (ich wsparcie jest planowane na 2022)

Natomiast kody PIN najczęściej służą do odblokowania właściwego klucza w module TPM - więc Funkcjonariusz nie będzie w stanie ich wykorzystać.

  1. Z jakimi konkretnie danymi te hasła/klucze są powiązane? Czy w praktyce jesteś w stanie odtworzyć powiązania z konkretnymi dyskami twardymi?

Możesz załadować na dysk z Funkcjonariuszem same hasła, bez jakichkolwiek dodatkowych danych - wtedy jednak dla każdego zaszyfrowanego dysku Funkcjonariusz będzie musiał po kolei sprawdzić wszystkie załadowane hasła (gdy już zdoła to hasło dopasować, przypisze je do dysku na przyszłość - ale musi to być robione dla każdego dysku i hasła osobno). Ma to sens, jeśli udało Ci się pozyskać np. 10 czy 30 haseł do kluczowych komputerów, ale już mając np. 1600 haseł do wypróbowania na 1600 zaszyfrowanych komputerach, będzie to kompletnie niepraktyczne czasowo.

Co jeśli nie jesteś w stanie zdobyć haseł przypisanych do konkretnych dysków?

Jeśli nie jesteś w stanie pozyskać kluczy połączonych z konkretnymi dyskami twardymi, nadal możesz próbować ograniczać ilość kluczy do przetestowania na każdym z eksfiltrowanych komputerów, poprzez podział posiadanej listy kluczy na mniejsze kawałki w oparciu o takie informacje, jakie udało Ci się nt. tych kluczy zdobyć - np. w oparciu o:

  • zawody/stanowiska pracy
  • działy
  • budynki (albo miasta)
  • marki komputerów
  • daty związane z poszczególnymi komputerami (zakupu, serwisowania, zaplanowanej wymiany itp.)
  • cechy charakterystyczne związane z konkretnymi dostawcami (np. popularny sklep X-Kom.pl sprzedaje komputery w różnych wariantach, różniących się wielkością RAM i dysku twardego, do większych konfiguracji dokładając prawie zawsze RAM marki GoodRAM, oraz dyski SSD ADATA lub Patriot)
  • standard komputera (np. firma wymienia i rotuje laptopy co 2 lata, gdzie pierwsze 2 lata komputer spędza w zarządzie, potem kolejne 2 lata u programistów, a kolejne w obsłudze klienta - jest to jak najbardziej realny przykład z dużej polskiej firmy)

Stosując tego typu techniki, zamiast np. 5240 kluczy Bitlocker do przetestowania na każdym komputerze, możesz mieć np.:

  • 21 kluczy do komputerów VIP (zarządu, właścicieli, innych strategicznie ważnych osób)
  • 48 kluczy do komputerów pracowników działu administracji we wszystkich siedzibach (i nawet jeśli trudno je będzie dalej dzielić, to w jednym budynku najprawdopodobniej będziesz eksfiltrował 1-2 takie komputery, więc dużo kluczy nie stanowi problemu)
  • 24 klucze do komputerów pracowników "twardego" HR (tych od wynagrodzeń)
  • 74 klucze do komputerów pracowników "miękkiego" HR - w tym 18 w głównym dziale i 56 "HR Business Partnerów" rozsianych po wszystkich budynkach i działach (a więc znowu po 1-2 komputery w jednym miejscu, więc skanowanie ponad 50 kluczy nie stanowi problemu)
  • 173 klucze do komputerów programistów, w tym 96 zatrudnionych przed 2019 z laptopami poprzedniej generacji i 77 po 2019 (te liczby są już trochę zbyt duże do efektywnego czasowo ataku, ale mając więcej informacji możesz próbować dalej dzielić te listy coraz mniejsze kawałki)
  • itd.

Generalnie, im więcej wiesz o atakowanej firmie, tym krótsze listy haseł jesteś w stanie przygotować.

Porządkowanie i wgrywanie kluczy na dyski z Funkcjonariuszem

Gdy zebrałeś już całą potencjalnie przydatną wiedzę o firmie i wszedłeś w posiadanie listy haseł/kluczy, czas na konfigurację dysków z Funkcjonariuszem.

Ten artykuł szczegółowo opisuje, w jaki sposób Funkcjonariusz przechowuje i obsługuje klucze:

  • przypisane do konkretnego dysku twardego
  • nieprzypisane

Jeśli masz jakieś klucze skojarzone z konkretnymi dyskami, możesz je skonfigurować za pomocą skryptu save-drive-encryption-key.sh, albo bezpośrednio wgrać pliki w odpowiednim formacie do katalogu z kluczami.

Natomiast w przypadku pozostałych (nieskojarzonych) kluczy:

  1. Przyjrzyj się im i podziel je na klucze odzyskiwania do Bitlockera i Apple FileVault, oraz hasła LUKS, VeraCrypt i inne wg tego opisu. Poszczególne grupy kluczy zapisuj w osobnych plikach.

  2. Przyjrzyj się przykładowym repozytoriom konfiguracyjnym. Następnie na ich podstawie, dla poszczególnych grup kluczy utwórz prywatne repozytoria zawierające pliki o nazwach:

  3. Przemyśl, które grupy kluczy można ze sobą bezpiecznie połączyć (tj. tak aby obniżyć koszty zakupu dysków, ale nie wydłużać niepotrzebnie procesu skanowania haseł).

  4. Przygotuj odpowiednią liczbę dysków z Funkcjonariuszem. Po zakończeniu podstawowej instalacji Funkcjonariusza, zainstaluj wybrane repozytoria prywatne, które mają znaleźć się na danym urządzeniu, zgodnie z wcześniej przygotowanym podziałem.

Zabezpieczenia przeciwko nieuczciwym wspólnikom

Dobór właściwych osób do roli operatorów ataku, to temat wychodzący poza zakres tej strony. Natomiast kilka poniższych, generalnych rad powinno pomóc Ci ograniczyć ewentualne straty związane z wyborem niewłaściwej osoby:

  1. Możesz podzielić posiadane listy kluczy na tyle osobnych repozytoriów, ile tylko chcesz - np. możesz podzielić klucze Bitlockera na osobne pliki bitlocker.keys dla każdego piętra czy wręcz pokoju w ramach siedziby atakowanej firmy. Tak aby każdy operator przydzielony do jakiegoś piętra czy listy pokojów miał własne dyski z Funkcjonariuszem, z unikalnym zestawem "swoich" kluczy. Dzięki temu po pierwsze ograniczysz zakres ewentualnego wycieku, a po drugie po kluczach będzie można łatwo dojść do osoby za niego odpowiedzialnej.

  2. Dobrym pomysłem jest tworzenie osobnych kluczy deploymentowych do prywatnych repozytoriów Git z kluczami do dysków. Dzięki temu będziesz mógł łatwo "odłączyć" dysk z Funkcjonariuszem od otrzymywania przyszłych aktualizacji w razie, gdyby wpadł w niewłaściwe ręce.

  3. Możesz też całkowicie zrezygnować z zarządzania kluczami za pomocą repozytoriów Git i napisać własny mechanizm do zarządzania wieloma grupami kluczy na wielu urządzeniach z Funkcjonariuszem. Na tej stronie znajdziesz podpowiedzi odnośnie sposobu działania konfiguracji kluczy w Funkcjonariuszu.

  4. Funkcjonariusz pozwala na szyfrowanie partycji docelowej na dane za pomocą LUKS, oraz ustawienie nawet 8 osobnych haseł. Dobrym pomysłem jest ustawienie indywidualnych haseł dla każdego dysku, a co najmniej dla każdego operatora.

Na koniec kilka ogólnych rad odnośnie wyboru właściwych osób:

  • zanim dasz komuś dostęp do wrażliwych danych, czy nawet zaczniesz z nim rozmawiać o takiej możliwości, zastanów się, czy i w jakim stopniu mu ufasz?
  • zapoznaj się z procedurą awaryjną i upewnij się, że zrobiły to również osoby, którym dajesz dostęp do urządzeń