58
OBRONA
HAKIN9 7-8/2008
O
czywistym jest, że typowe portale
internetowe mogą lekko odstąpić
od tej zasady i przedłożyć prostotę
użytkowania nad bezpieczeństwo, jednak w
przypadku instytucji finansowych takich, jak banki,
proces autoryzacji tożsamości musi zapewniać
maksymalny poziom ochrony danych osobowych,
informacji dotyczących stanu konta, historii
rachunku itp. Celem tego artykułu jest obiektywne
spojrzenie na obecne systemy informatyczne
wcześniej wymienionych instytucji, pokazanie
ich słabych i mocnych stron oraz po części
przedstawienie firm, które pracują w domenie
bezpieczeństwa internetowego i świadczą usługi
z zakresu wdrażania kompleksowych systemów
zabezpieczeń.
Autoryzacja tożsamości
Proces autoryzacji tożsamości, powszechnie
nazywany etapem logowania, jest jednym z
najważniejszych modułów aplikacji webowych.
Niestety, jest on zwykle mniej lub bardziej
zaniedbywany, przez co dane osobowe
użytkowników są potencjalnie narażone na
kradzież.
System autoryzacyjny powinien wymagać od
nas kilku rzeczy:
• czegoś, co wiemy (np. hasło, identyfikator),
• czegoś, co posiadamy (np. karta kredytowa),
• czegoś, z czym się utożsamiamy (np. odcisk
palca, skan siatkówki oka).
GRZEGORZ
PEŁECHATY
Z ARTYKUŁU
DOWIESZ SIĘ
z jakich etapów powinien
składać się bezpieczny system
autoryzacji,
jak uniknąć kradzieży danych
osobowych,
którym systemom bankowym
możesz zaufać przy
dokonywaniu transakcji online,
jakim firmom można powierzyć
proces wdrażania zabezpieczeń
aplikacji webowych.
CO POWINIENEŚ
WIEDZIEĆ
powinieneś mieć rozeznanie
w sposobie działania funkcji
skracających,
jak działa protokół SSL i jakie
możliwości zapewnia jego
stosowanie.
Bazując na tych danych, możemy wyróżnić 3
sposoby autoryzacji:
• jednoetapową, wymagającą tylko czegoś, co
wiemy,
• dwuetapową, wymagającą od nas czegoś, co
wiemy i czegoś, co posiadamy,
• wieloetapową, wymagającą równocześnie np.
identyfikatora, hasła, karty kredytowej i odcisku
palca.
Każdy z powyższych sposobów narażony jest
na ataki – zarówno po stronie klienta, jak i
podczas transmisji danych. Znanych jest całkiem
sporo metod przejęcia informacji przez osoby
trzecie, przed którymi solidny system powinien
być zabezpieczony. Opiszę teraz te najczęściej
wykorzystywane, a zarazem najbardziej
niebezpieczne.
Phishing
Jest to atak polegający na wyłowieniu poufnych
danych poprzez podszywanie się pod osobę lub
firmę posiadającą do nich autoryzowany dostęp.
Ten typ ataku oparty jest na inżynierii społecznej.
Atakujący może podmienić autentyczną stronę
banku na swój własny serwis i w ten sposób
pozyskać od użytkownika potrzebne dane. Adres
takiej strony jest najczęściej łudząco podobny
do oryginalnego – lub też po prostu osoba
atakująca infekuje serwery DNS, w wyniku czego
błędnie rozwiązują one adresy URL (sposób
Stopień trudności
Bezpieczne
instytucje
finansowe
Wraz z rozwojem aplikacji webowych aspekt bezpieczeństwa
stał się zagadnieniem istotnym zarówno dla projektantów
oprogramowania, jak i dla użytkowników końcowych, którym z
tego oprogramowania przyjdzie korzystać.
59
BEZPIECZNE INSTYTUCJE FINANSOWE
HAKIN9
7-8/2008
działania napastnika zobrazowany jest
na Rysunku 1). Znacząca większość
instytucji finansowych na świecie
nie oferuje własnych mechanizmów
ochronnych przed tym atakiem, co jest
poważnym błędem. Odstępstwem jest
system Banku Amerykańskiego (Bank of
America) i polskiego banku BGŻ, gdzie po
wprowadzeniu identyfikatora wyświetlany
jest symboliczny obrazek, wybrany
podczas rejestracji. Daje to gwarancję na
połączenie z oryginalnym serwerem, a nie
podszytą stroną. Najnowsze przeglądarki
internetowe również udostępniają moduły
wykrywające próbę takiego oszustwa,
informując użytkownika o ewentualnych
zastrzeżeniach co do autentyczności
witryny. Przed phishingiem użytkownik może
się również do pewnego stopnia obronić
poprzez używanie zaufanych serwerów
DNS, do których zaliczamy np. OpenDNS
(serwer główny: 208.67.222.222, serwer
alternatywny: 208.67.220.220).
Człowiek pomiędzy
(man-in-the-middle)
Schemat tego ataku przedstawiony jest
na Rysunku 2. – atakujący występuje tutaj
w roli pośrednika pomiędzy serwerem a
klientem. Wszystkie dane przechodzą przez
jego komputer w formie niezaszyfrowanej,
nawet przy korzystaniu z połączenia
SSL. Jak to możliwe? Otóż protokół SSL
daje nam gwarancję na bezpieczne
połączenie z witryną, jednak nie daje
gwarancji na to, że połączyliśmy się z tą
witryną, z którą zamierzaliśmy. Co prawda
zabezpieczeniem są tutaj certyfikaty, jednak
podstawienie własnych – nieznacznie
różniących się od oryginałów – jest rzeczą
dość prostą. Zarówno IE, jak i Firefox
sygnalizują nawiązanie bezpiecznego
połączenia, pomimo, że w tej samej chwili
człowiek pomiędzy odczytuje wszystkie
nasze dane. Atak ten jest znany od dawna
– przy połączeniach HTTP był on trywialny
do przeprowadzenia, w przypadku HTTPS
jest tylko trochę bardziej skomplikowany
(co zostanie udowodnione w podpunkcie
Scenariusz ataku na system autoryzacji
tożsamości). Nie istnieje jedno, w 100%
pewne zabezpieczenie przed tym
atakiem, jednak powinniśmy przynajmniej
w minimalnym stopniu utrudnić jego
wykonanie. Dobrym sposobem jest
generowanie skrótów danych krytycznych,
takich jak hasła. W tym celu poleciłbym
zastosowanie algorytmu HMAC w oparciu
o hasła jednorazowe (patrz Ramka).
Oprogramowanie
szpiegowskie
Kolejnym czyhającym na użytkownika
niebezpieczeństwem jest oprogramowanie
szpiegowskie, zainstalowane na jego
własnym komputerze. O ile kiedyś
przechwytywało ono jedynie wciśnięte
klawisze, w dzisiejszych czasach
oprogramowanie to jest znacznie
groźniejsze. Przechwytując zrzuty ekranu,
śledząc ruch myszki itp., atakujący jest w
stanie wykraść dane dotyczące logowania.
Zdolni projektanci systemów bankowych
wymyślają co chwile nowe zabezpieczenia
w tym kierunku, w polskim Internecie
niestety zatrzymały się one na poziomie
statycznej wirtualnej klawiatury, która nijak
jest w stanie ochronić użytkownika przed
wykradnięciem danych. Dobre rozwiązanie
zaprezentował CitiBank, umieszczając
wirtualną klawiaturę z losowym położeniem
znaków, co skutecznie chroni przed
większością ataków o tym charakterze.
Scenariusz ataku na
system autoryzacji tożsamości
Przedstawię teraz prosty scenariusz ataku na
bezpieczny system logowania. Celem będzie
Keyed-Hash Message Authentication Code
Teoria
Algorytm HMAC działa bardzo podobnie do funkcji skracających – z tym wyjątkiem, że do
wygenerowania tablicy wynikowej potrzebuje dodatkowego klucza szyfrującego. Dzięki temu wynik
funkcji może być weryfikowany pod względem autentyczności i aktualności. Wartość wynikową
obliczamy ze wzoru:
�������������������������������������������
�
�
�
�
�
gdzie h jest funkcją skracającą, K jest naszym kluczem, a m wiadomością do zaszyfrowania.
Siła algorytmu HMAC zależy od złożoności klucza (K) oraz od funkcji skracającej (h). Tak samo, jak
w przypadku algorytmów md5, sha1 itp., odszyfrowanie danych zaszyfrowanych za pomocą tego
algorytmu jest z matematycznego punktu widzenia odpowiednio trudne.
Zastosowanie
Powyższy algorytm może znaleźć zastosowanie w procesie autoryzacji tożsamości, w którym
kluczem szyfrującym będzie hasło jednorazowe. Transmitowanie w ten sposób najważniejszych
danych skutecznie obroni nas przed kradzieżą danych osobowych np. w skutek ataku man-in-the-
middle.
Rysunek 1.
Zasada przeprowadzania ataku powszechnie znanego jako phishing
����
60
HAKIN9 7-8/2008
61
HAKIN9
7-8/2008
system bankowy. Atak dokonany zostanie
w sieci lokalnej, na bramie zainstalowany
jest program Burp Proxy, pozwalający
dokonać ataku typu man-in-the-middle. Na
komputerze działającym w sieci lokalnej
uruchamiamy stronę internetową banku.
Przeglądarka nawiązuje w tym momencie
bezpieczne połączenie z naszym proxy
(Burp Proxy) z wykorzystaniem protokołu
SSL, podczas etapu inicjacyjnego zostają
wymienione klucze publiczne oraz ustalane
są algorytmy szyfrujące. Użytkownik jest
pewien, że połączył się z rzeczywistą witryną
banku. Burp po nawiązaniu połączenia z
klientem łączy się z faktyczną stroną banku
i od tego momentu działa w roli pośrednika
pomiędzy nieświadomym niczego
użytkownikiem a serwerem bankowym. W
związku z tym, że klient szyfruje dane kluczem
publicznym Burp'a, jesteśmy w stanie je
przechwycić w formie niezaszyfrowanej.
Rysunek 3. obrazuje konsekwencje braku
zabezpieczenia przed tego typu atakiem.
Implementacja bezpiecznego
procesu autoryzacji
Pokazałem już, jak w prosty sposób można
skompromitować obecne zabezpieczenia
w systemach logowania. Statystycznie w
dzisiejszych czasach najpowszechniejsza
wydaje się być autoryzacja jednoetapowa,
co uwarunkowane jest minimalnym
kosztem jej implementacji oraz największą
dostępnością dla użytkowników, dlatego też
przedstawię przykładową architekturę tego
właśnie systemu.
• Nawiązujemy połączenie z serwerem
(oczywiście dane są transmitowane
poprzez bezpieczny tunel SSL).
• Po stronie serwera generujemy hasło
jednorazowe (OTP) i przesyłamy je do
klienta – najlepiej za pomocą innego
kanału komunikacyjnego (np. w formie
SMSa).
• Pobieramy od użytkownika identyfikator
i hasło, po stronie klienta szyfrujemy
hasło algorytmem HMAC(otp,
password).
• Identyfikator i zaszyfrowane hasło
przesyłamy do serwera.
• Serwer po otrzymaniu identyfikatora
użytkownika porównuje
zaszyfrowane hasło ze swoim
W Sieci
• http://www.rsa.com – jedna z najbardziej
renomowanych firm działających w
domenie bezpieczeństwa internetowego,
• http://www.maximussoft.net – polska
firma wdrażająca bezpieczne systemy
autoryzacji tożsamości,
• http://portswigger.net/proxy
– program napisany w Javie,
umożliwiający wykonywanie wielu
ataków w sieci lokalnej, np. man-in-
the-middle, który został opisany w tym
artykule,
• http://www.opendns.com – strona
domowa OpenDNS.
Rysunek 2.
Zasada przeprowadzania ataku typu man-in-the-middle
Rysunek 3.
Konsekwencje braku zabezpieczeń przed atakiem man-in-the-middle
OBRONA
60
HAKIN9 7-8/2008
61
HAKIN9
7-8/2008
własnym skrótem. Jeżeli dane są
identyczne, proces autoryzacji
zostaje zakończony pomyślnie, a
użytkownik przekierowywany jest na
uwierzytelnioną stronę.
Firmy pracujące
w domenie bezpieczeństwa
Jeżeli mowa była już o lukach w
zabezpieczeniach, warto wspomnieć
również o sposobie ich wyeliminowania.
Polska jest krajem dosyć specyficznym pod
względem zaufania do firm działających w
domenie bezpieczeństwa, zajmujących się
wdrażaniem solidnych systemów autoryzacji.
O ile na całym świecie normą jest zlecanie
podwykonawstwa systemów zabezpieczeń
firmom działającym w tym sektorze rynku,
to w Polsce sprawa ta jest traktowana
powierzchownie i system taki wykonywany jest
łącznie z resztą projektu – w konsekwencji
czego otrzymujemy zazwyczaj aplikacje słabo
zabezpieczone, pozwalające w łatwy sposób
przechwycić poufne dane przez osoby
trzecie. Do firm godnych polecenia można
zaliczyć np. RSA lub polską firmę Maximus
Soft, posiadającą opatentowany w Stanach
Zjednoczonych system wieloetapowej
autoryzacji tożsamości net-auth. Adresy WWW
tych firm można znaleźć w Ramce W Sieci.
Podsumowanie
Mam nadzieję, że ten krótki – acz treściwy
– artykuł zweryfikował przynajmniej po
części Wasze poglądy na temat tego,
czym bezpieczeństwo tak naprawdę jest i
jak łatwo dopuścić do kradzieży własnych
danych osobowych, tak istotnych w
systemach instytucji finansowych. Istotnym
jest, aby poświęcić szczególną uwagę temu
zagadnieniu i w jak największym stopniu
ochronić się przed atakami, zwłaszcza
tymi opisanymi w artykule. Solidny system
autoryzacyjny jest podstawą każdej aplikacji
i pełni rolę miernika wiarygodności w
oczach klientów, dlatego też jego projekt i
implementację powinno zlecać się firmom z
odpowiednimi kwalifikacjami.
Grzegorz Pełechaty
Autor jest programistą, zajmującym się rozwojem
systemów operacyjnych. Hobbystycznie interesuje się
sprawami bezpieczeństwa aplikacji webowych. Pracował
wielokrotnie jako doradca ds. bezpieczeństwa przy
wdrażaniu dużych systemów informatycznych. Wolne
chwile spędza na rozwoju wolnego oprogramowania,
oglądaniu dobrego kina japońskiego i czytaniu książek.
Kontakt z autorem: g.pelechaty@gmail.com