Jak wyglądają ataki na firmy korzystające z 2FA?

Twoja firma używa 2FA? Świetnie. Ale nie oznacza to, że nie da się do Was włamać.

Opublikowano 15.01.2023 14:51

Kradzież ciasteczek

2FA to nie jest magiczne zaklęcie, które sprawia, że na Twoje konta nie da się włamać. Dobitnie pokazuje to niedawny atak na CircleCI. 4 stycznia powiadomili oni swoich klientów o incydencie bezpieczeństwa. Kilka dni później pojawił się raport z tego zajścia:

We have learned that an unauthorized third party leveraged malware deployed to a CircleCI engineer’s laptop in order to steal a valid, 2FA-backed SSO session. (...) Malware was able to execute session cookie theft, enabling them to impersonate the targeted employee in a remote location and then escalate access to a subset of our production systems.

  • Konta pracowników były zabezpieczone przez 2FA.
  • Na jednym z komputerów uruchomiono złośliwe oprogramowanie.
  • Nie zostało ono wykryte przez program antywirusowy.
  • Malware ten wykradł ciasteczka użytkownika.
  • Atakujący używając tych ciasteczek mógł zalogować się na konto pracownika.
  • Pracownik posiadał spore uprawnienia potrzebne do wykonywania swoich obowiązków.
  • Tak udało się pobrać dane klientów.

Ale co to znaczy, że złośliwe oprogramowanie wykradło ciasteczka?

Sesja

Zazwyczaj gdy logujesz się na stronie - po podaniu prawidłowego loginu i hasła serwer zwraca ciasteczko. Znajduje się w nim unikalny identyfikator, na podstawie którego serwer wie kto właśnie się z nim łączy.
Teraz gdy przechodzisz na inną podstronę przeglądarka automatycznie wysyła to ciasteczko do serwera. Ten weryfikuje zawarte w nim dane i wie, że to Ty. Może dzięki temu wyświetlić informacje z Twojego konta.

Dzięki temu nie musisz podawać hasła za każdym razem gdy przechodzisz na nową podstronę. Logujesz się raz i możesz korzystać z Facebooka/Twittera czy innej witryny.

Bardzo podobnie działa to jeśli Twoje konto jest dodatkowo zabezpieczone przy pomocy kodu 2FA.

  1. Podajesz login i hasło.
  2. Serwer sprawdza ich poprawność i prosi Cię o kod 2FA.
  3. Podajesz kod z aplikacji na telefonie.
  4. Serwer weryfikuje kod i jeśli wszystko się zgadza zwraca ciasteczko.

Od tego momentu nie musisz już podawać kodu 2FA gdy zmieniasz podstronę. Serwer ufa swoim ciasteczkom. Wie, że już zweryfikował Twoje dane i nie musi o nie pytać za każdym razem.

Poprosi o nie dopiero gdy się wylogujesz i będziesz próbował zalogować się ponownie. Wtedy cała procedura zostanie powtórzona (o ile nie skorzystałeś z opcji "zapamiętaj mnie").

Ciasteczka w przeglądarce

Bezpieczny dostęp do Twojego konta opiera się więc w głównej mierze na losowej wartości przechowywanej w ciasteczku. Te ciasteczka są przechowywane przez przeglądarkę. Problem w tym, że przeglądarka w żaden sposób ich nie szyfruje, nie zabezpiecza. Każdy kto ma dostęp do Twojej przeglądarki może je odczytać. Jeśli używasz Google Chrome możesz to sprawdzić samodzielnie.

  1. Wciśnij klawisz F12.
  2. Przejdź do zakładki Aplikacja.
  3. Po lewej stronie wybierz Pliki cookie
  4. Sprawdź zawartość ciasteczek.

Oczywiście nie wszystkie ciasteczka są równie ważne. Niektóre przechowują mniej istotne informacje. Można tam na przykład zapisać czy wolisz ciemny czy jasny motyw graficzny.

Jeśli ktoś pozna zawartość Twojego ciasteczka z sesją może wykorzystać go do zalogowania się na Twoje konto. Wystarczy, że:

  1. W swojej przeglądarce przejdzie do zakładki Pliki cookie.
  2. Kliknie dwa razy na tabelkę i wprowadzi skradzione informacje.
  3. Odświeży stronę.
  4. Przeglądarka wyśle wtedy ciasteczko do serwera.
  5. Ten sprawdzi, że ten plik sesji należy do Ciebie i zaloguje oszusta na Twoje konto.

W prawdziwym ataku wszystkie te czynności się automatyzuje. Raczej nikt fizycznie nie przychodzi do Twojego domu i nie sprawdza zawartości przeglądarki. Wykorzystuje się do tego złośliwe oprogramowanie, które możesz pobrać i uruchomić przez swoją niewiedzę.

Przestępcy mogą na przykład korzystać z programu ChromeCookiesView. Pozwala on pobrać wszystkie ciasteczka naraz i zapisać w jednym pliku a jego użycie jest banalnie proste. Wystarczy uruchomić program i wskazać plik wynikowy. Potem taki plik tekstowy można wysłać na maila i już.

Zauważ, że nie trzeba czekać aż podasz swój login i hasło. Wszystkie dane potrzebne do zalogowania się na stronie są w ciasteczku. Przestępca nie musi czekać aż podasz swoje hasło. Po prostu go nie potrzebuje.

Sklepy z ciasteczkami

Niektóre ciasteczka są ważne nawet kilkadziesiąt dni. Pojawiły się więc sklepy z ciasteczkami dla złodziei. Istnieją grupy, które specjalizują się w kradzieży danych dostępowych. Zbierają wszystkie pozyskane informacje i wystawiają na sprzedaż w specjalnym sklepie.

Potencjalny klient może wybrać jaki kraj bądź strona go interesuje. A potem jak to w normalnym sklepie. Zapłata i dostarczenie wykupionego dobra - w tym wypadku ciasteczka.

Więcej o sklepie przeczytasz w artykule Zaufanej Trzeciej Strony.

Źródło: zaufanatrzeciastrona.pl

Właśnie w taki sposób włamano się do Electronic Arts:

  • Za $10 zakupiono ciasteczko pozwalające na zalogowanie się do firmowego Slacka.
  • Atakujący przy pomocy komunikatora poprosił o dostęp do sieci firmowej.
  • Pomoc techniczna nie domyśliła się, że nie rozmawia z pracownikiem i udzieliła dostępu.

Phishing

Kod 2FA możesz też podać na stronie phishingowej, czyli takiej, która podszywa się pod inną witrynę. Może to wyglądać mniej więcej tak:

  1. Na złośliwej stronie podajesz swój login i hasło.
  2. Ponieważ to strona przestępców - widzą Twoje hasło. Oni wchodzą na prawdziwą stronę i logują się na niej używając podanych przez Ciebie danych.
  3. Fałszywa strona wyświetla prośbę o kod 2FA z aplikacji. Przepisujesz go z telefonu.
  4. Złodzieje zalogowali się na Twoje konto i wyświetla się im prośba o kod. Podają ten, który właśnie podałeś na fałszywej stronie. Ponieważ kod jest ważny przez określony czas (zazwyczaj około 60 sekund) jeśli są wystarczająco szybcy może im się to udać.
  5. Tobie wyświetla się komunikat o błędzie a przestępcy właśnie zalogowali się na Twoje konto. I to pomimo tego, że używałeś 2FA.

Demo takiego ataku możesz zobaczyć w tym filmie na moim kanale.

Atak może wyglądać podobnie jeśli zamiast kodów używasz powiadomień PUSH. Atakujący może wysyłać wiele próśb o potwierdzenie logowania - licząc, że w końcu którąś z nich zaakceptujesz. Więcej o MFA Fatique przeczytasz w tym artykule.

Resetowanie konta

W zależności od implementacji użytej na konkretnej stronie - czasami możliwe jest wyłączenie kodów 2FA w przypadku resetu hasła użytkownika. Wtedy atak może wyglądać następująco:

  1. Atakujący przechodzi do opcji resetowania konta i podaje Twój login/email.
  2. Otrzymujesz kod weryfikacyjny na telefon/email.
  3. Przestępca wysyła do Ciebie wiadomość z prośbą o podanie kodu z poprzedniej wiadomości.
  4. Jeśli podasz ten kod można przy jego pomocy zresetować dostęp do konta.
  5. Atakujący resetuje hasło i loguje się nim na Twoje konto.

Oczywiście nikt nie napisze Ci wprost do czego służy ten kod. Używa się socjotechniki aby sprawić wrażenie, że jest on nieistotny i możesz go bezpiecznie przekazać:

Co robić?

  • W przypadku zwyczajnych użytkowników możesz zawsze wylogowywać się z ważnych dla Ciebie stron. Wtedy sesja powinna zostać unieważniona i logowanie za pomocą skradzionego ciasteczka nie powinno być możliwe.
  • Jeśli tylko masz odpowiedni budżet - rozważ przejście na klucze U2F. Nie eliminują one wszystkich problemów (bo nadal można ukraść ciasteczko) - ale przynajmniej chronią przed popularnymi rodzajami phishingu.
  • W przypadku firm:
    • Można ograniczyć długość sesji użytkownika, który ma dostęp do krytycznych funkcji do minimum.
    • Można dodać dodatkową weryfikację jeśli użytkownik wykonuje ważną z punktu widzenia bezpieczeństwa akcję. Możesz go poprosić o kolejny kod 2FA/użycie tokenu U2F lub przepisanie kodu z emaila. Nawet jeśli ktoś ma ciasteczko to szkody jakie wyrządzi są ograniczone.
    • Jeśli używacie powiadomień PUSH - sprawdź te porady.
    • Możesz spróbować zablokować logowanie spoza terenu Polski/logowanie spoza usługi VPN. Odpowiednio doświadczony atakujący może to łatwo obejść (na przykład kupując serwer VPS w danym kraju) - ale zawsze to dodatkowa warstwa ochrony.

Uwagi

  • Niektóre serwisy zapisują z jakiego adresu IP łączył się użytkownik. Jeśli ktoś przejmie identyfikator naszej sesji i spróbuje go użyć z innego adresu IP - nie będzie mógł się zalogować. Obecnie nie jest to jednak częsta praktyka. Dlaczego? Bo coraz częściej korzystamy z Internetu mobilnego z telefonów. A tam adres IP może się zmieniać co chwilę. Wtedy użytkownik za każdym razem musiałby się logować ponownie. A to może sprawić, że zrezygnuje z używania danej strony.
  • Identyfikator sesji może być też przechowywany w pamięci lokalnej, w pamięci sesji czy w IndexedDB. Może to być też token JWT. W artykule zastosowano uproszczenia aby był on zrozumiały dla szerszego grona czytelników.

#ataki