24-04-2020 / Podcast

Czy kody SMS są bezpieczne? Jak zabezpieczyć konto?

W tym materiale dowiesz się:

  • Czy kody SMS z banku chronią nas przed atakiem?
  • A może lepsza jest aplikacja mobilna?
  • Jak działa dwuskładnikowe uwierzytelnianie?
  • Czy można je obejść/zaatakować?
  • Czym różni się 2FA od U2F?
  • Po co nam klucze bezpieczeństwa - np. Yubikey?
  • Jak chronić się przed phishingiem?
  • Jak skonfigurować swoje konto pocztowe?
 O czym będzie materiał

Na początku jedna uwaga.

W tym materiale używam uproszczeń.

Jeżeli jesteś osobą techniczną - pamiętaj, że artykuł ten skierowany jest dla szerszej publiczności, a nie tylko Informatyków.

 Uwaga - uproszczenia

Możesz się spotkać z wieloma podobnymi do siebie terminami:

  • Uwierzytelnianie dwuskładnikowe
  • Two Factor Authentication
  • Weryfikacja dwuetapowa
  • Drugi składnik
  • 2FA
 2FA

Wszystkie te sformułowania pokazują jedną rzecz - hasło to za mało aby zapewnić bezpieczeństwo konta.

 Hasło to za mało

Dlaczego hasło to za mało w większości przypadków?

  • Bo może być zbyt proste (gdy używamy jako hasła imienia dziecka czy kota).
  • Bo można je podpatrzyć, podejrzeć (patrząc na klawiaturę, gdy ktoś wpisuje swoje hasło).
  • Bo musi być w jakiejś formie zapisane w bazie danych serwisu, z którego korzystamy (co oznacza, że może zostać z tej bazy skradzione).
  • Jeżeli znasz hasło drugiej osoby - możesz się nim posłużyć - tak jak możesz otworzyć czyjeś drzwi do mieszkania jeżeli otrzymasz od tej osoby właściwy klucz.

Hasło bowiem nie potwierdza kto jest po drugiej stronie. Mówi jedynie tyle, że osoba po drugiej stronie najprawdopodobniej posiada uprawnienia do posługiwania się danym serwisem.

Ale takie prawdopodobieństwo nie zawsze jest wystarczające. Zwłaszcza w kontekście aplikacji bankowych.

Bank bowiem musi mieć pewność, że to my zlecamy dany przelew czy też transakcję.

2FA

 2FA - coś co mam

Dlatego też wymyślono ideę dwuskładnikowego uwierzytelniania.

Oprócz standardowego loginu i hasła - do zalogowania konieczny jest drugi składnik.

Może to być:

  • Coś co posiadam (chociażby klucz, telefon)
  • Lub coś czym jestem (czyli mój odcisk palca, skan siatkówki).
 Moj bank

Żeby zrozumieć dlaczego jest to takie istotne opiszę tutaj hipotetyczną sytuację.

Załóżmy, że jesteśmy właścicielem konta w banku mojbank.local (ta domena nie istnieje - jest to przykład).

Bank reklamuje się jako najbezpieczniejszy bank świata.

Spróbujmy więc z niego skorzystać. W tym celu klikamy guzik Zaloguj.

 Interfejs logowania do banku

Teraz widzimy interfejs logowania do banku - pole na login i hasło.

Dodatkowo bank informuje nas o dobrych praktykach - o tym, że przed zalogowaniem powinniśmy sprawdzić, czy w oknie adresu znajduje się zielona kłódeczka.

To "kłódeczka" sprawia, że połączenie pomiędzy nami a serwerem banku jest zaszyfrowane.

Co to znaczy? Że nasze hasło nie będzie mogło być podsłuchane.

Trzeba bowiem pamiętać, że w transmisji pomiędzy naszym komputerem a serwerem banku bierze udział wiele serwerów pośredniczących.

Każdy z nich potencjalnie może podsłuchiwać to co wpisujemy i to, co otrzymujemy od serwera (chociażby stan naszego konta).

 Zielona kłódeczka SSL

Nasze połączenie jest szyfrowane - zielona kłódka widnieje obok pasku adresu.

Co więcej, po kliknięciu w nią otrzymujemy informację, że połączenie jest bezpieczne.

Możemy więc podać nasze hasło i zalogować się do banku.

 Czy to Ty, a może Twój kot?

I tu pojawia się problem.

  • Gdyby Twój kot znał Twoje hasło (i umiał korzystać z klawiatury) - mógłby zalogować się do banku jako Ty.

Tak samo każda inna osoba, która zna Twoje hasło - może się do niego zalogować z poziomu swojego komputera.

Co więcej - bank nie jest w stanie rozróżnić czy to Ty, a może inna nieupoważniona osoba, która w nielegalny (lub legalny) sposób pozyskała Twoje hasło.

A jak można takie hasło zdobyć?

Phishing

 Phishing

Wyobraź sobie, że otrzymujesz maila z banku.

Dział bezpieczeństwa informuje w nim, że Twoje konto zostało zablokowane z powodu dziwnej aktywności.

Aby je ponownie odblokować - musisz zalogować się na stronie i potwierdzić swoje dane.

Co więc robisz? Klikasz w odnośnik i zostajesz przekierowany na stronę swojego banku.

 Fałszywa strona banku

Jako uważny użytkownik Internetu - sprawdzasz zieloną kłódeczkę.

 Certyfikat należący do przestępców

Połączenie jest szyfrowane - podajesz więc swoje hasło.

I co?

  • Właśnie stałeś się ofiarą phishingu - czyli strony, która wygląda łudząco podobnie do strony Twojego banku - jednak nią nie jest.

Jedynym celem tej witryny jest zdobycie Twoich danych do logowania.

 Porównanie certyfikatów

Możesz sobie teraz zadać pytanie - ale jak to możliwe?

Przecież sprawdziłem certyfikat i wszystko wydawało się w porządku.

Jak za chwilę się przekonasz certyfikat o niczym nie świadczy.

Tutaj ważna była nazwa domeny, na którą zostałeś przekierowany po kliknięciu w odnośnik w mailu.

Mogłeś tego wcześniej nie zauważyć - ale oba adresy różniły się od siebie.

W tym drugim (złośliwym) litera o została zamieniona na cyfrę 0 (zero).

A taka zmiana w nazwie domeny - to zupełnie inna domena, która może należeć do zupełnie innych osób lub firm.

 Typosquatting

Taka technika - gdzie wykorzystuje się podobne do siebie znaki - nazywa się Typosquatting.

Sprawdź samemu na stronie DNS Twister. Podaj tam adres swojej ulubionej witryny i zobacz jakie podobne adresy można uzyskać.

 SSL/TLS

Możesz sobie teraz zadawać pytanie: skoro ta strona była niebezpieczna, to dlaczego widniała informacja o bezpiecznym połączeniu?

Musisz wiedzieć, że każdy prawowity właściciel danej domeny może wygenerować dla niej prawidłowy certyfikat SSL/TSL, który przez przeglądarkę będzie traktowany jako prawidłowy.

Właścicielem domeny m0jbank.local (pisanej przez zero) są przestępcy - a więc to oni mogą wygenerować prawidłowy certyfikat.

Aby jeszcze lepiej to zrozumieć posłużę się przykładem z życia codziennego.

 Właściciel może zatankować swój samochód

Każdy właściciel swojego samochodu może go zatankować. Dlaczego? Bo to jego samochód.

Podobnie z certyfikatami - każdy właściciel domeny może wygenerować taki certyfikat.

 Czy wiesz kto jest po drugiej stronie?

Wtedy połączenie pomiędzy nami a serwerem, na którym znajduje się dana strona - będzie zaszyfrowane.

Czyli w tym naszym hipotetycznym przykładzie - hasło podane na fałszywej stronie będzie widoczne tylko dla przestępców (i dla nikogo innego).

 Właściciel domeny może wygenerować prawidłowy certyfikat

Nie każdy certyfikat zawiera bowiem dane firmy, która jest właścicielem danej domeny.

Mówiąc jeszcze dosadniej - bardzo mała grupa certyfikatów zawiera takie dane.

 Nie każdy certyfikat zawiera dane firmy

Dlaczego? Ponieważ procedura weryfikacji utrudnia wygenerowanie certyfikatu - wymaga ludzkiej interwencji w całym procesie.

Obecnie większość firm generowanie certyfikatów próbuje w pewnym stopniu zautomatyzować - a tutaj nie jest to możliwe.

Trzeba bowiem złożyć wniosek, przesłać odpowiednie dokumenty, które potwierdzają, że jesteśmy właścicielami danej domeny.

Następnie odpowiednia instytucja musi je sprawdzić. A to wszystko trwa.

 Informacje o firmie

W przeszłości informacja o firmie była bardziej widoczna. Większość przeglądarek robiła wyjątek dla specjalnego rodzaju certyfikatu - tak zwanego Extended Validation.

W takim wypadku nazwa instytucji widniała obok zielonej kłódeczki w pasku adresu.

Obecnie jednak informacje te są schowane i praktycznie niewidoczne dla zwykłego użytkownika Internetu.

Należy bowiem kliknąć w kłódkę i przejść do ustawień zaawansowanych.

W przykładowym ataku, który przedstawiałem prawidłowa strona banku posiadała dane na temat firmy.

Ale jak widać są one mało widoczne - jest to tylko mała informacja: Wystawiony dla szarą czcionką.

 Phishing a https

To wszystko sprawia, że przestępcy bardzo często stosują prawidłowe certyfikaty dla swoich fałszywych domen.

Nic nie tracą, nic to ich nie kosztuje - a użytkownicy chętniej podają swoje dane na takich stronach.

 Hasło a szyfrowanie połączenia

Dochodzi bowiem do sytuacji, że użytkownicy podają swoje hasła na stronach phishingowych.

Przestępcy mogą się więc zalogować na stronach banków przy użyciu tych danych.

Jak więc banki zaczęły chronić się przed tego typu atakami?

Karty zdrapki

 Karty zdrapki

Zaczęły wysyłać swoim użytkownikom karty zdrapki. Jest to malutki kawałek papieru z nadrukowanymi numerkami.

Obok numeru - znajduje się specjalne pole pokryte farbą, którą można zdrapać (tak jak zdrapki Totalizatora Sportowego).

Jak działał ten mechanizm zabezpieczenia?

 Jak działała karta zdrapka

Po podaniu kwoty przelewu oraz adresata - należało taką operację potwierdzić. W tym celu system losował numer, który nie był jeszcze odsłonięty na naszej karcie zdrapce i prosił o jego podanie.

Wtedy użytkownik brał swoją kartę, drapał kawałek farby i przepisywał znajdujący się tam ciąg znaków.

Ponieważ to bank wygenerował te znaki - wiedział gdzie znajduje się jaka wartość. Mógł wiec zweryfikować czy dane podawane przez użytkownika są prawidłowe.

 Jak zaatakować kartę zdrapkę

Teoretycznie system jest bezpieczny - atakujący nawet jeśli posiadał nasz login i hasło to nie posiadał naszej fizycznej karty zdrapki.

Co więcej użyty kod nie był przez system losowany ponownie - jeżeli wykorzystaliśmy wszystkie dostępne możliwości - bank przesyłał nam zupełnie nową kartę z nowymi kodami. Jak zaczęli działać przestępcy?

 Strona phishingowa z obsługą karty zdrapki

Do swoich złośliwych stron zaczęli dodawać dodatkową funkcjonalność. Oprócz formularza, w którym zaatakowany użytkownik miał wpisać swój login i hasło - pojawiały się kolejne pola.

Proszono użytkowników o zdrapanie wszystkich (bądź większości) kodów z karty zdrapki i przepisanie ich zawartości. Teraz atakujący posiadał już wszystko co jest potrzebne do wykonania przelewu.

Posiada hasło oraz kod z karty zdrapki (no bo przecież właśnie przed chwilą użytkownik samemu mu je podał). To pokazuje minusy takiego rozwiązania - a jest ich co najmniej kilka.

 Minusy kart zdrapek

1. Nie wiesz co potwierdzasz (jaki przelew, do kogo, za ile)

2. Co gdy kody się skończą? (trzeba wysłać nowe pocztą)

3. Kod nie ma daty ważności (może potwierdzić dowolny przelew)

 Kart zdrapek

Najważniejszym problemem jest to, że każdy z kodów może potwierdzić dowolną operację. Użytkownik podając kod, o który prosi bank - nie wie, czy potwierdza przelew do żony - a może do kochanki. Nie wie także, czy wysyła 5000 a może 50 000 złotych.

Ten problem był tym większy dla użytkowników biznesowych - czyli firm, które wysyłają sporo przelewów na wysokie kwoty. Tam jedno zero robi różnicę. Jaka była odpowiedź banków? Tokeny sprzętowe.

 Tokeny sprzętowe

Jak działało takie urządzenie? Aby potwierdzić operację, należało wykonać szereg operacji:

1. Przepisać kwotę do urządzenia

2. Przepisać ostatnie 16 cyfr numeru konta, na które przelewało się pieniądze

3. Podać specjalny kod PIN (inny niż hasło do konta)

Jeżeli wszystko się zgadzało, urządzenie generowało specjalny kod, który potwierdzał tą jedną, konkretną transakcję.

Jakakolwiek zmiana kwoty lub numeru konta generowała błąd. Teoretycznie - bardzo bezpieczne. Atakujący nie ma fizycznego dostępu do urządzenia, a my nie jesteśmy mu w stanie podać prawidłowych kodów na przyszłość.

No bo każdy kod jest inny w zależności od numeru konta i kwoty. Ale jest jeden, malutki problem.

 Token sprzętowy a czas

Wprowadzanie tych wartości na klawiaturze urządzenia - to żmudny proces. Wyobraź sobie, że jesteś księgową, która musi wykonać 100 przelewów.

Czyli musisz przepisać 100 16 (numer konta) 5 (średnia ilość cyfr w kwocie) do tego urządzenia. A potem jeszcze przepisać te kody do interfejsu banku. Zastanów się ile razy się pomylisz i musisz powtarzać całą czynność od początku.

Kody SMS

 Kody SMS potwierdzające przelew

I tutaj dochodzimy do obecnie najpopularniejszego rozwiązania - czyli kodów SMS. Stwierdzono, że przecież zazwyczaj każda dorosła osoba, ma swój telefon komórkowy, który może odbierać wiadomości SMS.

Zamiast więc każdemu kupować drogie urządzenie, można wysyłać jednorazowe wiadomości z kodem, który służy to potwierdzenia jednej, konkretnej płatności.

I tak teraz, żeby potwierdzić przelew musisz przepisać kod z wiadomości SMS. Tam znajduje się kwota jaką przelewasz, numer odbiorcy a czasami także numer nadawcy. To rozwiązanie ma wiele plusów:

1. Jest tanie

2. Wiesz do kogo wysyłasz pieniądze (na jaki numer konta)

3. Wiesz ile wysyłasz (jaka kwota)

4. Kod ma datę ważności (działa tylko dla tej transakcji)

Pozbywamy się głównych wad kart zdrapek - czyli kod z SMS-a pozwala na akceptację tylko jednej, konkretnej płatności. Rozwiązanie idealne? I tutaj ponownie do gry wchodzą przestępcy.

 Kolekcjonerskie dowody osobiste

W Internecie można odnaleźć firmy, które oferują tak zwane "kolekcjonerskie dowody osobiste".

Są to kawałki plastiku, które wyglądają podobnie do oficjalnych dowodów używanych w naszym Państwie.

Problem w tym, że można ja zamówić na dowolne dane osobowe. Czyli na takim plastiku znajdzie się nasze zdjęcie ale czyjeś imię i nazwisko. I tu powstaje problem.

 SIM Swap

Wyobraź sobie, że gubisz swoją kartę SIM (tą, która znajduje się w Twoim telefonie komórkowym). Albo karta ta z jakichkolwiek powodów przestaje działać.

Fajnie byłoby móc ją wymienić i nadal mieć swój numer telefonu. Dlatego też firmy komunikacyjne posiadają specjalne procedury w przypadku takich sytuacji.

Zazwyczaj wystarczy pójść do filii firmy, pokazać swój dowód osobisty, oddać starą kartę i po prawidłowej weryfikacji - otrzymujemy jej duplikat. Czyli nową kartę, która posiada nasz stary numer.

Problem w tym jak wygląda ta weryfikacja. Czy pracownik dokłada należytej staranności podczas sprawdzania dowodu osobistego. Czy wie, że istnieje coś takiego jak kolekcjonerski dowód?

W innym bowiem przypadku może zostać oszukany i może wygenerować duplikat karty osobie, która nie powinna go otrzymać. To rodzi pewne konsekwencje.

 Duplikat karty SIM

Od tego momentu stara karta przestaje działać.

Działa tylko i wyłącznie ta nowa, którą właśnie odebraliśmy od pracownika firmy telekomunikacyjnej.

To oznacza, że kod SMS z banku nie trafi na telefon właściciela (bo tam jest stara, deaktywowana karta SIM) - ale do potencjalnego przestępcy - bo to on posiada nowy duplikat (czyli działającą kartę) w swoim telefonie.

Co najważniejsze - atak ten bardzo trudno wykryć i mu zapobiec.

Poszkodowany zauważy jedynie, że właśnie stracił zasięg sieci komórkowej (a tak naprawdę nie stracił zasięgu, tylko karta nie może się zalogować do systemu operatora - bo została deaktywowana).

No ale ile osób co pięć minut sprawdza, czy dalej ma zasięg? Nikt tak przecież nie robi. Z SMS-ami wiąże się jeszcze inny problem.

 Systemowe wiadomości SMS

SMS nie zawsze musi mieć nadawcę, którego numer jest liczbą. Istnieją specjalne numery SMS, które nie zawierają numeru - ale nazwę.

Jednym z takich nadawców jest rząd, który w ramach SMS-ów od ALERT RCB - przesyła informacje do obywateli w sprawie potencjalnych zagrożeń. Wiadomości takich używają także firmy kurierskie czy też sklepy Internetowe.

Wyobraź sobie, że dostajesz takiego SMS-a, w którym rząd (lub ktoś podszywający się) informuje Cię - że zostaną do Ciebie wysłane darmowe maseczki.

Musisz jedynie zapłacić za przesyłkę - co wydaje się całkowicie normalne.

 Fałszywa strona płatności

Klikasz więc w link, który znajduje się w wiadomości i zostajesz przekierowany do systemu płatności, gdzie możesz wybrać swój bank.

Widzisz ile zapłacić - 13,99 za przesyłkę. Wybierasz więc swój bank.

 Fałszywa strona banku

Podajesz swój login i hasło i po chwili otrzymujesz SMS od banku - z prośbą o potwierdzenie transakcji.

 Kod SMS

Sprawdzasz kwotę - wszystko się zgadza. Przepisujesz więc kod SMS aby potwierdzić przelew.

 Fałszywa strona potwierdzania przelewu kodem SMS

Niestety, pomyliłeś się podczas przepisywania. Nic się nie stało, tak czasami bywa.

 Fałszywy, błędy komunikat

Dostajesz więc drugi SMS, z nowym kodem, który również przepisujesz.

 Kolejny kod od banku

Tym razem wszystko się zgadza - a Ty właśnie straciłeś ponad 1300 złotych.

 Właśnie straciłeś pieniądze

Przestępcy właśnie wykorzystali Twoją nieuwagę. Jak to możliwe?

Spróbuj jeszcze raz prześledzić cały proces - czy widzisz gdzie mogłeś popełnić błąd?

Tak naprawdę podałeś swój login i hasło na stronie należącej do przestępców - a nie na oficjalnej witrynie banku. To samo z kodami SMS.

A wiec wszystko co wpisywałeś do formularzy trafiało do komputerów przestępców. Oni to przy pomocy tych danych zalogowali się na Twoje konto a następnie spróbowali wysłać dwa przelewy.

 Dwa przelewy - różnica w przecinku

Pierwszy przelew - na kwotę 13,99. To właśnie tego SMS-a dokładnie sprawdziłeś i przepisałeś jego kod.

Ten kod był prawidłowy, po prostu przestępcy anulowali ten przelew bo nie taka kradzież była ich celem. Gdy wysłałeś im pierwszy kod - wiedzieli, że mogą Cię złapać na dużo większą kwotę.

Dlatego w serwisie transakcyjnym wykonali drugi przelew - tym razem na 1399 złotych. Mała różnica w przecinku, ale spora w kwocie, którą można stracić.

Ponieważ posługiwali się Twoimi danymi - dostałeś ponownego SMS-a.

Równocześnie na fałszywej stronie (czyli tej, na której podawałeś swoje dane) - wyświetlili komunikat błędu (aby uśpić Twoją czujność).

No bo kto sprawdza tak dokładnie treść SMS-a, jeżeli pomylił się podczas przepisywania kodu? Mimowolnie zakładamy, że akceptujemy ten sam przelew - i właśnie to wykorzystują złodzieje.

 Czytaj treść wiadomości od banku

Ten przykład pokazuje jak istotne jest czytanie (ze zrozumieniem) wiadomości przesyłanych przez bank. Co z tego, że wiesz gdzie i ile wysyłasz pieniędzy, jeżeli nie czytasz tych wiadomości, a bezmyślnie przepisujesz kod z SMS-a.

 Pod nadawcę można się podszyć

Co więcej, pod nadawcę takiego specjalnego SMS-a można się podszyć. W Internecie można odnaleźć serwisy, które pozwalają na wysłanie takiej wiadomości z wybraną przez siebie nazwą nadawcy (oczywiście za odpowiednią opłatą).

W tym przykładzie skorzystałem z usługi, która skraca adresy internetowe. Czyli zamiast platnosci.darmowe.maseczki.local w treści skorzystałem z https://goo.gl/alertrcb.

To kolejny trik stosowany przez osoby, które chcą nas okraść. Nie wiemy bowiem gdzie taki link prowadzi - czy do prawdziwej strony banku, a może fałszywej - tak jak w tym przypadku.

Z SMS-ami wiąże się jeszcze jeden problem.

 Treść wiadomości SMS na odblokowanym telefonie

W zależności od konfiguracji naszego telefonu treść SMSów może się wyświetlać na zablokowanym ekranie telefonu komórkowego.

Mówiąc innymi słowami: czasami nie trzeba podać kodu PIN do telefonu aby zobaczyć treść wiadomości, którą właśnie otrzymaliśmy. Jest to wygodne - ale niebezpieczne.

Wyobraź sobie bowiem, że przestępcą jest Twój kolega z biura.

Zostawiasz telefon na biurku gdy wychodzisz zrobić sobie kawę. Jeżeli Twój kolega zna hasło do banku - może się do niego zalogować i wykonać przelew.

Po prostu podejdzie do Twojego smartfona (i bez odblokowania go) przepisze kod SMS, który właśnie otrzymałeś. A pieniądze stracisz Ty - drogi czytelniku.

 Tokeny ze zmiennym kodem

Innym, mniej popularnym narzędziem stosowanym przez banki były tokeny fizyczne, ale takie bez klawiatury. Tutaj nie trzeba było podawać numeru konta czy kwoty przelewu.

Wystarczyło przepisać kod, który zmieniał się co określoną liczbę sekund. Rozwiązanie ma podobne minusy jak karty zdrapki - ponownie nie wiadomo co się akceptuje.

Jedyny plus, to brak możliwości wygenerowania kodu dla przyszłego czasu (czyli "do przodu"). Są też pewne oszczędności po stronie banku - nie trzeba wysyłać kart zdrapek pocztą. W token inwestuje się raz i działa aż wyczerpie się bateria.

Takie tokeny nie były stosowane tylko w bankowości, ale umożliwiały także dostęp do infrastruktury firmowej z zewnątrz przy pomocy VPN. Co wymyślili pomysłowi użytkownicy, którzy chcieli się podzielić swoim tokenem z innymi osobami?

 Kamera nakierowana na fizyczny token

Wystarczy kamera nakierowana na token. Jeśli ktoś chciał się zalogować (a nie posiadał fizycznego dostępu do urządzenia) wchodził na obraz "na żywo" przekazywany przez kamerę i przepisywał kod, który tam zobaczył.

Aplikacja mobilna

 Aplikacja banku na telefonie

Pora na czasy obecne - a więc aplikacje mobilne banków, które można zainstalować na naszych telefonach. Jak one działają?

Dalej podajemy dane do przelewu na stronie banku.

Podczas potwierdzania transakcji - otrzymujemy powiadomienie na ekranie naszego telefonu.

 PIN do logowania się do aplikacji banku

Teraz - musimy się zalogować do aplikacji korzystając z PINu, który jest inny niż hasło służące do logowania się do banku. Na kolejnym ekranie widzimy wszystkie szczegóły transakcji, którą akceptujemy.

 Informacje na ekranie aplikacji

Widzimy ile pieniędzy przesyłamy oraz na jakie konto. W niektórych aplikacjach pokazywany jest także kraj, z którego się logujemy oraz adres IP naszego komputera.

Możesz się zastanawiać - po co pokazywać tutaj flagę kraju? Wyobraź sobie, że logujesz się na fałszywej stronie banku. Twoje dane trafiają do przestępcy, który to loguje się za ich pomocą na oficjalnej stronie banku.

Ale loguje się nie z Polski - ale jakiegoś innego kraju. Potem - podczas potwierdzania przelewu widzisz inną flagę, niż Polską - a to powinno wzbudzić Twoją czujność.

 Czy przestępca może aktywować aplikację na swoim telefonie

Częstym pytaniem jakie pada w tym kontekście jest to, że przecież przestępca może zainstalować i aktywować taką aplikację na swoim telefonie.

Zainstalować - owszem, może, ale powiązać ją z naszym kontem - już niekoniecznie. Aktywowanie drugiego i kolejnego telefonu - zazwyczaj wiąże się z odpowiednią procedurą.

 Dodanie drugiego telefonu

Zanim bank pozwoli nam na dodanie drugiego telefonu (czyli w tym wypadku telefonu przestępcy) - najpierw wyśle odpowiednie powiadomienie na nasz telefon.

W takim powiadomieniu widać jak na dłoni, że ktoś próbuje dodać drugi telefon do naszego konta.

Jeżeli na to pozwolimy - to nasza wina. Bank wyraźnie informował nas co właśnie będzie się działo.

 Złośliwe aplikacje bankowe

Inną wątpliwością, jaka pada w tym kontekście jest fakt, iż przecież można zainstalować fałszywą aplikację bankową na swoim telefonie - czyli taką, która nie należy do banku, ale do złodziei.

I rzeczywiście - jest to problem, z którym musimy sobie poradzić tylko raz. W momencie, gdy posiadamy już prawidłową aplikację na swoim telefonie - jesteśmy bezpieczni.

Kluczowy jest zatem moment instalacji aplikacji za pierwszym razem. Dlatego też najlepiej udać się na oficjalną stronę własnego banku i poszukać na nim odnośników do oficjalnej aplikacji. Dzięki temu będziemy pewni, że instalujemy właściwe oprogramowanie.

Niektórzy bardziej zaawansowani technicznie użytkownicy podnoszą tutaj głos, że przecież istnieje złośliwe oprogramowanie na Androida, które odczytuje SMSy przesłane przez bank.

No właśnie - SMSy. Większość tego złośliwego oprogramowania przechwytuje zwyczajne kody SMS. Przechwycenie potwierdzenia PUSH wysyłanego na aplikację mobilną jest dużo trudniejsze.

Co więcej - najpierw trzeba się zalogować do takiej aplikacji kodem PIN. Wnioski wysuwają się więc same:

1. Zainstalować aplikację mobilną na telefonie

2. Włączyć potwierdzenia transakcji poprzez aplikację mobilną

3. Wyłączyć kody SMS

TOTP

 Co z innymi serwisami

A co z innymi serwisami Internetowymi, chociażby pocztą internetową? Oczywistym jest, że nie każdy mały serwis internetowy będzie w stanie stworzyć własną aplikacje, służącą do potwierdzania logowania - tak jak to jest w przypadku banków.

Tutaj używa się innego rozwiązania.

Najbardziej popularnym (i niestety najmniej bezpiecznym) jest TOTP - czyli Time-based One-time Password.

- kod, który zmienia się co X sekund

- podobne do tokenu, ale bezpłatne

- dostępne na wiele platform

- szybkie do implementacji

- chroni konto gdy wycieknie hasło

 Aktywacja 2FA TOTP

Jak to działa? Po zalogowaniu się do serwisu przechodzimy do opcji uruchomienia dwuskładnikowego uwierzytelniania. Tam zostaje nam wyświetlony kod QR - czyli kwadrat z czarnymi kropkami.

Teraz potrzebujemy specjalnej aplikacji na telefon. W niej to skanujemy ten kod QR i nadajemy nazwę serwisowi - abyśmy wiedzieli z jakim kontem jest on powiązany.

 Zmieniający sie kod 2FA

Teraz w aplikacji co 30 sekund widzimy nowy kod powiązany z naszym kontem w serwisie internetowym. Musimy go teraz wpisać w odpowiednie pole formularza - aby dokończyć proces instalacji.

W aplikacji możemy mieć wiele różnych kont i usług.

 Wiele różnych kont

Każde konto w serwisie to inny kod, który zmienia się co określony czas. Kod ten ważny jest tylko w tym określonym momencie czasu. Kod z jednego serwisu nie zadziała na drugim.

Jest to więc unowocześnienie fizycznego tokenu, który pokazywałem jakiś czas wcześniej. Tylko, że zamiast fizycznego urządzenia - kody generowane są w specjalnej aplikacji na telefonie. Ale jak to działa z technicznego punktu widzenia?

 Jak działa 2FA

Dla każdego użytkownika serwis generuje unikalny sekret. Ta wartość jest znana użytkownikowi oraz serwisowi i to na jej podstawie generowany jest kod 2FA.

Przepisywanie losowych ciągów nie jest niczym przyjemnym - co więcej, jest podatne na błędy. A jeden zły znak przepisany na telefon powoduje, że kody nie będą działały prawidłowo.

Dlatego też wymyślono sposób z kodami QR - skanowanymi przez telefon komórkowy. Prawie każdy telefon ma aparat - więc nie jest to duży problem.

Ten kwadrat z czarnymi znaczkami zawiera właśnie sekretną wartość wygenerowaną przez serwis, tylko że zakodowaną w postaci obrazka. Aplikacja odczytuje te dane z kodu QR i zapisuje w swojej pamięci.

Teraz co 30 sekund następuje generowanie nowego, aktywnego kodu. Proces ten nie wymaga połączenia z Internetem i jest stosunkowo prosty.

Bierze się sekretną wartość oraz czas - zaokrąglony do 30 sekund. Cały taki ciąg przekazuje się następnie do pewnej matematycznej funkcji, która zamienia go na długi ciąg znaków. Ten ciąg znaków jest następnie zamieniany na cyfry.

Dokładnie tą samą procedurę wykonuje serwer - podczas sprawdzania czy wygenerowany przez nas kod jest prawidłowy.

 Minusy 2FA

Taki kod - podobnie jak karta zdrapka, czy też token fizyczny, posiadają pewne minusy. Przede wszystkim nie wiesz co potwierdzasz.

Taki kod nie jest ochroną przed atakami phishingowymi.

Aby to zrozumieć, spróbuję wyjaśnić to na przykładzie.

 Kod 2FA

Wyobraź sobie, że tak jak na początku logujesz się na nieprawdziwej stronie banku (pisanej przez zero zamiast litery o). A więc Twój login i hasło trafia do przestępcy, a nie do serwera banku.

Atakujący może użyć tych danych żeby zalogować się do Twojego banku (tym razem na prawdziwej stronie - pisanej przez o). Równocześnie, na fałszywej stronie wyświetla Ci komunikat - abyś podał swój kod z telefonu.

Jesteś przekonany, że logujesz się na prawdziwej stronie banku - podajesz więc ten kod. Ponieważ kod działa określony czas (około 60 sekund) - przestępca ma wystarczająco dużo czasu, aby go skopiować i wkleić na prawdziwej stronie banku.

Prawidłowy kod działa zawsze - nieważne przez kogo został wprowadzony (ważne, aby został wprowadzony w odpowiednim okresie czasu). Ponieważ przekazałeś działający kod przestępcy - właśnie zalogował się do Twojego konta w banku.

Pomimo dwuetapowego uwierzytelnienia - zostałeś zaatakowany.

 Jeżeli przekażesz komuś kod 2FA - może zalogować się na Twoje konto

Podsumowując: jeżeli przekażesz komuś login, hasło oraz kod z aplikacji (prawidłowy dla danego okresu czasowego) - może on (w Twoim imieniu, bądź podszywając się pod Ciebie) - zalogować na Twoje konto.

Jeżeli dalej tego nie rozumiesz, posłużę się inną analogią z życia codziennego.

 Każdy kto ma kluczyki do samochodu - może go prowadzić

Każdy, kto ma kluczyki do samochodu - może do niego wsiąść, włączyć silnik i odjechać.

Jeżeli więc dasz mi kluczyki do swojego samochodu (na 60 sekund) - to ja w tym momencie mogę do niego podejść, otworzyć go, wsiąść i odjechać.

Dokładnie tak samo jest w przypadku kodu z aplikacji. Jeżeli komuś przekażesz ten kod - to ktoś (znając Twoje hasło) - może go użyć do zalogowania się do strony.

BLIK

 Problem z kodem BLIK

Podobny problem powiązany jest z kodami BLIK - czyli alternatywną metodą płatności, która zdobywa w Polsce sporą popularność. Wyobraź sobie, że planujesz zagraniczne (drogie) wakacje.

A tu nagle na grupach na Facebooku (lub innym portalu) zauważasz post innej osoby, która sprzeda bon na takie wakacje - w dużo niższej cenie.

 Kradzież na kod BLIK

Myślisz sobie - raz się żyje - i wysyłasz prywatną wiadomość. Dogadujecie wszystkie szczegóły transakcji. Ty - wyślesz osobie po drugiej stronie kod BLIK - a ona Tobie voucher na adres email.

Co w tym niebezpiecznego? Twój kod BLIK umożliwia dostęp (w określonych limitach) do pieniędzy na Twoim koncie. Kodem tym można zapłacić za zakupy w Internecie, ale można też przy jego pomocy wybrać pieniądze z bankomatu.

 Kod BLIK w bankomacie

Przestępca więc wyrusza do najbliższego bankomatu i prosi Cię o wygenerowanie kodu. Następnie wprowadza go na ekranie oraz wybiera kwotę, którą chce uzyskać.

Wtedy Ty - na ekranie swojego telefonu otrzymujesz powiadomienie, że ktoś chce wybrać pieniądze z bankomatu. Nie budzi to Twoich podejrzeń - przecież chcesz kupić voucher od innego Internauty.

Potwierdzasz więc transakcję kodem PIN, a atakujący wybiera swoje pieniądze. I tyle go widziałeś. Zniknęły pieniądze, a kod oczywiście nie został wysłany na adres pocztowy.

Co więcej - taką transakcję bardzo trudno jest zareklamować.

No bo jak bank ma rozróżnić, że to nie Ty wybrałeś pieniądze z bankomatu (oczywiście oprócz obrazu z monitoringu).

Przecież aby wybrać pieniądze - atakujący musiał wygenerować kod BLIK (który jest ważny bardzo krótki okres czasu). A następnie transakcja ta musiała jeszcze zostać potwierdzona na telefonie.

A więc pomimo tego, że BLIK jest bezpieczny - należy zachować szczególną ostrożność i nie podawać kodów nowo poznanym osobom w Internecie - bo możesz stracić swoje pieniądze.

 Podsumowanie bezpieczeństwa 2FA

Podsumowując.

  • 2FA chroni:

- gdy ktoś pozna nasze hasło

- gdy wycieknie baza danych serwisu

  • 2FA nie chroni:

- przed phishingiem

- gdy podamy komuś kod przez telefon/Internet

Czy więc nie istnieją metody, które mogłyby nas ochronić przed Phishingiem? Istnieją - ale są mniej rozpowszechnione.

 Jak Google pozbyło się problemu phishingu

Pokażę Ci jak Google pozbyło się problemu phishingu na swoich pracownikach. Rozwiązanie jest proste - zaczęli korzystać z kluczy U2F (czyli Universal 2nd Factor) - nie mylić z 2FA.

U2F

 Klucze U2F

Są to podobnie brzmiące pojęcia - ale zasada ich działania jest odmienna.

Możesz się teraz przestraszyć - kolejna trudna i skomplikowana czynność, którą muszę wykonać aby móc bezpiecznie zalogować się do swojego konta. Nic bardziej mylnego.

 Jak działa klucz U2F

Z punktu widzenia użytkownika niewiele się zmienia:

- logujesz się do serwisu loginem i hasłem (tak jak dawniej)

- do portu USB wkładasz klucz bezpieczeństwa

- klikasz guzik, który się na nim znajduje

I to już. Tyle trwa bezpieczne logowanie do Twoich ulubionych serwisów. Gdzie tkwi haczyk? Może proces rejestracji i aktywacji urządzenia jest skomplikowany? Nic z tych rzeczy.

 Rejestracja klucza U2F

Wybierasz opcję korzystania z U2F w swoim ulubionym serwisie. Przeglądarka wyświetla Ci odpowiednie okienko z prośbą o włożenie klucza do portu USB. Wkładasz klucz i przyciskasz guzik, który się na nim znajduje.

Już - Twój klucz został powiązany z Twoim kontem w danym serwisie Internetowym. Prawda, że proste?

 Jak działa klucz U2F

No ale jak to się dzieje, że taki klucz chroni nas przed atakami phishingowymi? Aby to zrozumieć muszę przedstawić pewne szczegóły techniczne całego rozwiązania.

W całym tym procesie współuczestniczy przeglądarka. Ona to na prośbę serwisu, na którym próbujemy się zalogować, wysyła informacje bezpośrednio do klucza znajdującego się w porcie USB.

Najważniejsze co jest tutaj wysyłane, to domena strony na której jesteśmy. Jeżeli więc jesteśmy na stronie mojbank.local - właśnie taka domena zostanie wysłana.

Jeżeli jesteśmy na złej stronie m0jbank.local (pisane przez zero) - to właśnie ta domena zostanie wysłana. Z punktu widzenia klucza są to dwie różne domeny.

No ale po co ta domena? Na jej podstawie (i jeszcze kilku innych wartości) - urządzenie generuje specjalny klucz.

Składa się on z dwóch części - publicznej (która nie jest tajna) i prywatnej (która jest tajna). Część publiczna jest następnie wysyłana do serwera podczas rejestracji klucza.

Teraz podczas logowania cała procedura jest powtarzana. Czyli przeglądarka wysyła domenę do fizycznego urządzenia, a ono na tej podstawie generuje klucz.

Przeglądarka oprócz domeny wysyła także losową wartość. Urządzenie podpisuje teraz tą losową wartość wygenerowanym kluczem i tak wytworzone dane przesyła do serwera.

Serwer może je teraz sprawdzić - czyli zweryfikować czy podpis złożony przez urządzenie jest zgodny z danymi, które wcześniej zostały zapisane w bazie.

Jeśli tak - pozwala na zalogowanie.

No dobrze, ale jak to chroni przed phishingiem?

 U2F - ochrona przed phishingiem

Załóżmy, że jesteśmy na złośliwej stronie - m0jbank.local. To właśnie ta domena zostanie wysłana do urządzenia, które na tej podstawie wygeneruje odpowiedni klucz.

Atakujący chciałby zalogować się do oficjalnej strony banku - mojbank.local. Tylko, że klucz dla tej domeny powstanie w urządzeni tylko i wyłącznie jeżeli przeglądarka przekaże do niego właściwą domenę.

 U2F - ochrona przed phishingiem

Tak się jednak nie dzieje - bo przeglądarka przesyła zawsze adres domeny, na której się bieżąco znajdujemy.

A więc przestępca otrzyma podpisane dane, które pasują jedynie do domeny m0jbank.local - nie będzie ich w stanie wykorzystać nigdzie indziej.

 U2F - bezpieczeńswo zależy od przeglądarki

Nie można zmusić przeglądarki do wysłania do klucza domeny, której nie jest się właścicielem. Przestępca nie jest właścicielem mojbank.local a jedynie m0jbank.local – a to różne domeny.

Trochę to wszystko zagmatwane - dlatego postaram się to wytłumaczyć na bardziej życiowym przykładzie.

 Kupno kłódki do drzwi

Wyobraź sobie, że chcesz zabezpieczyć swoje mieszkanie. Kupujesz więc zestaw kłódek i odpowiadających im kluczy.

Kłódkę montujesz w drzwiach, które chcesz zabezpieczyć. Czyli "rejestrujesz" kłódkę w drzwiach - tak, jak robisz to z kluczem bezpieczeństwa - kojarzysz go ze swoim kontem.

Teraz, gdy chcesz otworzyć mieszkanie - wkładasz klucz do kłódki. Tak samo z kontem, wkładasz urządzenie do portu USB.

 Klucze działają tylko z jedną kłódką

A co, gdyby przyszedł złodziej ze swoimi kluczami?

Nie są w stanie otworzyć Twoich drzwi - bowiem tylko Twoje klucze pasują do tych kłódek (oczywiście stosując spore uproszczenie).

To tak jak z kluczem bezpieczeństwa - tylko Twoim kluczem da się zalogować na Twoje konto. Twój przyjaciel korzystający ze swojego klucza, nie będzie w stanie zalogować się nim na Twoje konto. Dlaczego? Bo klucze nie będą się zgadzały.

 Jak dostać się do mieszkania bez kluczy

No ale co w sytuacji, gdyby do Twojego mieszkania chciała wejść Twoja dziewczyna? Bez kluczy się to nie uda - musiałbyś je jej fizycznie przekazać (dać do ręki).

Nie da się kluczy podyktować przez telefon - to fizyczne przedmioty. Podobnie z kluczem bezpieczeństwa.

Nie da się go skopiować przez Internet. Aby atakujący mógł zalogować się na Twoje konto, musiałby Ci je fizycznie ukraść. Albo po prostu musiałbyś mu je wysłać zwykłą pocztą w kopercie.

 Różne strony to różne klucze

Co więcej - każda strona na której się zarejestrujesz - będzie zabezpieczona innym kluczem. Każdy bowiem klucz jest powiązany z domeną witryny na której się logujesz. To tak jak w życiu - każde drzwi mają swój zamek i klucz.

 Ile serwisów może obsłużyć U2F

Jeśli jesteś dociekliwy, możesz teraz zadać pytanie: to w ilu serwisach mogę skorzystać z tego samego klucza fizycznego? Przecież on gdzieś musi przechowywać te wszystkie informacje - a pamięć w urządzeniach jest limitowana.

Odpowiedz brzmi - nieskończenie wiele. Jak to możliwe?

 Ile serwisów może obsłużyć U2F

Klucz nie musi przechowywać tych wszystkich informacji w swojej pamięci. Wystarczy, że przechowuje tam tylko jedną wartość - klucz główny.

Wszystkie inne klucze są szyfrowane tym jednym kluczem głównym i mogą być bezpiecznie przechowywane na zewnętrznych serwerach.

Nikt nie może wykorzystać tych informacji bez dostępu do klucza głównego. A on przecież znajduje się tylko w naszym urządzeniu.

Gdy próbujemy się zalogować do jakiegoś serwisu - strona zwraca nam zaszyfrowany klucz. Urządzenie deszyfruje go na podstawie klucza głównego i tylko wtedy może z niego skorzystać.

 Implementacja Yubikey

Nie każda osoba czuje się bezpiecznie, gdy jakieś dane (nawet zaszyfrowane) znajdują się na zewnętrznych serwerach. Yuibikey wymyśliło więc U2F Key Wrapping.

W tym wypadku klucz nigdy nie jest nigdzie wysyłany - po więcej informacji odsyłam zainteresowanych do podlinkowanego materiału.

A więc mamy rozwiązanie problemu phishingu - klucze U2F.

FIDO2

 Fido2

Ale te klucze mają też swoje minusy. Użytkownik musi się najpierw zalogować do serwisu (swoim hasłem) i dopiero wtedy może skorzystać z fizycznego klucza.

I to do gry wchodzi nowość - czyli FIDO2.

- Kompatybilny z U2F

- Działa jako drugi składnik

- Ale także jako passwordless (bez loginu i hasła)

- Może być dodatkowo zabezpieczony (pin, odcisk palca, biometria)

- Może przechowywać klucze na urządzeniu (resident credentials)

Najważniejszą zmianą jest możliwość działania w trybie passwordless - czyli bez podawania żadnego loginu i hasła. Wtedy proces logowania do serwisu jest jeszcze prostszy - wystarczy włożyć klucz do portu i przycisnąć guzik.

I już - jesteśmy zalogowani. Niestety, jest to względna nowość i na razie mało serwisów obsługuje tą technologię. Mam jednak nadzieje, że to zmieni się w najbliższej przyszłości.

 Co jeśli strona nie obsługuje 2FA/U2F

No dobrze, ale co w przypadku jeżeli strona nie obsługuje ani U2F ani 2FA? Co mogę zrobić, aby czuć się nieco bezpieczniej? Porada jest prosta.

 Zacznij korzystać z menadżera haseł

Zacznij korzystać z menadżera haseł. No ale jak menadżer haseł ma pomóc w zabezpieczeniu dostępu do mojego konta? Zobaczmy jak działa taki menadżer.

 Jak działa menadżer haseł

Podczas rejestracji na stronie, gdy korzystasz z menadżera, w tle - zapisuje on nie tylko użyty login i hasło ale także domenę, na której rejestracja nastąpiła. To, że zapisywana jest również domena, jest bardzo ważne. Dlaczego?

 Bezpieczne logowanie się do serwisów z menadżerem haseł

Podczas próby logowania do serwisu menadżer sprawdza domenę, na której próbujemy to zrobić i podpowiada hasła tylko powiązane z tą konkretną domeną. Tłumacząc to bardziej obrazowo.

 Phishing a menadżer haseł

Jeżeli rejestrowałeś się na mojbank.local - a próbujesz zalogować się na złośliwej stronie m0jbank.local- menadżer nie podpowie Ci żadnego hasła.

Dlaczego? Bo nie zgadzają się domeny. A to dla Ciebie bardzo ważna informacja.

 Menadżer haseł nie podpowiada haseł na stronach phishingowych

Jeżeli menadżer nie podpowiada Ci haseł, masz do czynienia z jedną z trzech sytuacji:

- nigdy wcześniej nie korzystałeś z danej witryny

- menadżer haseł się zepsuł

- jesteś na złośliwej stronie

W takich więc wypadkach warto zachować szczególną ostrożność. Teraz już wiesz, że warto korzystać z U2F wszędzie tam, gdzie jest to możliwe. A więc gdzie?

 Lista stron z 2FA i U2F

Listę większych stron, które wspierają tą metodę znajdziesz tutaj.

Są to między innymi:

- Gmail

- Facebook

- Twitter

- Gitlab

 Jaki klucz U2F

Potrzebujesz więc klucza U2F. Jaki kupić? Sprawdź recenzję i wybierz ten, który Ci najbardziej odpowiada.

 U2F na telefonie

Jeżeli chciałbyś go używać także z telefonem komórkowym - musisz zadbać aby posiadał odpowiedni interfejs NFC/Bluetooth/Lightning.

Podsumowanie

 Podsumowanie bezpieczeństwa

Podsumowując:

- Czy używać 2FA? Tak, razem z menadżerem haseł

- Czy U2F jest lepsze niż 2FA? Tak

- Czy używać kodów SMS? Lepiej przejść na aplikacje na telefon

- Jakiej aplikacji używać? Authy/Google Authenticator

- Czy U2F działa w bankach? Z tego co wiem - nie

A co, gdy zgubisz aplikację lub token?

W takich sytuacjach warto posiadać dwa osobne fizyczne klucze. Większosć serwisów w momencie rejestracji pozwala na wydrukowanie tak zwanych kodów odzyskiwania (recovery keys).

W przypadku, gdy stracimy dostęp do aplikacji, w której generowaliśmy kody - możemy skorzystać z zapasowych kluczy i awaryjnie zalogować się do naszego konta.

 Jak zabezpieczyć dowolny serwis

Jak zatem zabezpieczyć dowolne konto w dowolnym serwisie Internetowym?

- Włącz FIDO2/U2F

- Jeśli się nie da, skorzystaj z aplikacji

- Jeśli się nie da, włącz 2FA z TOTP na telefonie

- Jeśli się nie da, włącz kody SMS

- Jeśli się nie da, zmień hasło

Jeżeli korzystasz z Gmaila - warto zastanowić się nad programem ochrony zaawansowanej.

W tym celu będziesz musiał posiadać dwa (różne) klucze bezpieczeństwa. Dlaczego? Żebyś mógł się zalogować w przypadku, gdy zgubisz jeden z nich. Od momentu aktywacji tej bezpłatnej usługi nie będziesz mógł się zalogować na swoje konto bez nich.

 Jak aktywować 2FA

A jak aktywować 2FA na serwisach, które nie obsługują U2F? Wpisz: nazwa serwisu + 2FA w Google.

Lub sprawdź poniższe podstrony:

- Twitter

- Facebook

- Google

Jeżeli jesteś zaawansowanym użytkownikiem Internetu - mogą Cię zainteresować zaawansowane tematy powiązane z FIDO2:

- Certified Authenticator Levels

- FIDO2 Attestation

- Debugger

- Solo Hacker