background image

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ć. 

background image

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

����

background image

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

background image

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