Jak obejść klasyczne MFA?

multifactor-authentication-phioshing-resistant-fid

Niemalże w każdym poradniku, dotyczącym zabezpieczenia konta czytamy, że powinnyśmy zabezpieczyć nasze konta wielopoziomowym uwierzytelnianiem. O co w tym chodzi? Jakie MFA jest najlepsze? Wyjaśnimy to w dzisiejszym artykule.

Problemy z hasłami

Takim podstawowym zabezpieczeniem konta jest hasło. Podstawowym i zupełnie nie wystarczającym na dzisiejsze czasy, kiedy mamy mnóstwo systemów zarówno w chmurze jak i lokalnie. Dodatkowo, obecnie aby hasło było bezpieczne, musi być odpowiednio długie – conajmniej 15 znaków i być odpowiednio skomplikowane. No dobrze, ale co w przypadku jeśli nasze hasło jest 40 znakowe, a serwis w którym mamy konto będzie miał wyciek haseł? W takiej sytuacji jedyne co możemy zrobić to zmiana hasła. A jeśli nie dowiemy się, że taki wyciek miał miejsce to atakujący będzie mógł z naszego konta korzystać i to często bez naszej wiedzy. Do tego wszystkiego, każde hasło musi być unikalne, więc pojawia się problem z zarządzaniem hasłami.

Rodzaje MFA

Na przestrzeni lat powstawały kolejne rozwiązania służące wzmocnienia zabezpieczenia kont. I tak powstało MFA (Multi Factor Authentication) czyli nic innego jak uwierzytelnianie kilku poziomowe. Pierwszym podstawowym drugim czynnikiem logowania były kody SMS, potem weszły aplikacje generujące kody jednorazowe i aplikacje wyświetlające powiadomienia PUSH. W każdym z tych przypadków oprócz hasła, musimy podać drugi czynnik – np. kod z aplikacji czy SMSa, który potwierdza naszą tożsamość. Te metody opierają się na kryptografii symetrycznej a więc zarówno po stronie serwera jak i po stronie klienta jest ten sam kod, który jest porównywany ze sobą.

Czynniki MFA jakie możemy wyróżnić i których możemy użyć można zgrupować do 3 kategorii:

  1. Coś co wiesz (nazwa użytkownika i hasło)
  2. Coś co masz (telefon lub klucz sprzętowy FIDO)
  3. Coś czym jesteś (odcisk palca lub skan twarzy)

Używając metod opartych o kryptografię symetrycznę (kod SMS czy kod z aplikacji) można w prosty sposób przechwycić ciasteczko sesyjne w ramach ataku AiTM (Adversary In The Middle). Samo przygotowanie ataku nie jest skomplikowane i można go przeprowadzićz użyciem darmowych narzędzi. Jednym z nich jest narzędzie EvilGinx stworzone przez Polaka, o którym jakiś czas temu na blogu przygotowałem wpis: Jak zasymulować atak man in the middle – EvilGinx. Działa ono jak reverse proxy – pośredniczy w ruchu pomiędzy użytkownikiem a serwerem docelowym, do którego łączy się klient. Możemy przygotować więc atak, gdzie użytkownik wchodzi na stronę o losowym adresie URL ale wizualnie widzi stronę np. Microsoftu. Wszystkie operacje jak logowanie, rejestracja wyglądają dokładnie tak samo bo tak naprawdę, użytkownik jest na stronie Microsoft. Różnica polega tylko na innym adresie URL strony w przeglądarce.

Atakujący, jest w stanie przechwycić wszystko co użytkownik wpisuje i przekazać te dane do oryginalnej strony. Dlatego też, proces logowania MFA oparty o kody również zakończy się sukcesem. A kiedy zakończy się sukcesem to atakujący ma już dostęp do kompletnego ciasteczka sesyjnego, które może wykorzystać na prawdziwej stronie do zalogowania.

Jeśli chciałbyś przekonać się jak taki atak wygląda na żywo to odsyłam do tego filmu: https://www.youtube.com/watch?v=octo3ye8SwI

Jakie MFA jest lepsze?

Odpowiedzią na ten problem jest protokół FIDO i jego następca FIDO2. Protokoły te zostały opracowane przez organizację FIDO Alliance, w skład której wchodzą firmy takie jak Apple, Cisco, Google, Lenovo oraz Yubico.

Z danych jakie możemy znaleźć na stronie organizacji jasno wynika, że czas logowania protokołem FIDO jest 82% szybszy. Inne statystyki są dostępne na tej stronie: https://fidoalliance.org/statistics-sources

No dobra, wyjaśnijmy jeszcze czym rożni się FIDO od FIDO2. Protokół FIDO jest wykorzystywany jako drugi składnik logowania. Potrzebujemy zatem loginu, hasła jako pierwszy składnik i klucza sprzętowego jako składnik kolejny. Aby logowanie doszło do skutku użytkownik musi wpisać hasło, PIN do klucza i dotknąć klucza (w zależności od implementacji). Protokół FIDO2 wykorzystuje WebAuthn i tutaj już zupełnie pomijamy element hasła. Logujemy się tylko i wyłącznie certyfikatem i kodem PIN do certyfikatu. Z większych firm, takie logowanie oferuje np. Microsoft i jeśli prywatnie czy w firmie używasz Microsoft 365 to warto rozważyć wdrożenie logowania opartego o FIDO2.

A jeśli chciałbyś przetestować bez zobowiązań jak wygląda logowanie passwordless to Yubico oferuje darmowy serwis, gdzie możesz to sprawdzić. Uwaga, będziesz potrzebował do tego klucza sprzętowego:
Link tutaj: https://demo.yubico.com/playground. A jeśli chciałbyś dowiedzieć się nieco więcej co to jest klucz sprzętowy Yubikey zapraszam Cię do tego wpisu.

Dlaczego proces logowania FIDO2 jest szybszy i wygodniejszy? Bo nie wymaga hasła! Logowanie jest oparte na kryptografii asymetrycznej. Użytkownik ma w posiadaniu zabezpieczony klucz prywatny, natomiast druga część pary certyfikatu – klucz publiczny znajduje się na serwerze do którego się logujemy. Podczas każdej rejestracji klucza sprzętowego, jest generowana nowa para kluczy – a więc ile skonfigurowanych kont, tyle par kluczy.

Rejestracja poświadczeń wygląda mniej więcej tak:

źródło: https://webauthn.guide

A samo logowanie tak:

źródło: https://webauthn.guide

Jeśli poważnie myślisz o ochronie swoich danych, warto zainwestować w klucz sprzętowy i zacząć korzystać z logowania opartego o certyfikaty. To obecnie najskuteczniejszy sposób zabezpieczenia tożsamości online – odporny na phishing, ataki typu man-in-the-middle i inne techniki stosowane przez cyberprzestępców.

1 Komentarz

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *