Hakin9 26 (06 2007) PL

background image
background image
background image
background image

4

www.hakin9.org

hakin9 Nr 6/2007

hakin9

5

www.hakin9.org

hakin9 Nr 2/2006

W skrócie

6

Mateusz Stępień

Przedstawiamy garść najciekawszych wiadomości ze

świata bezpieczeństwa systemów informatycznych.

Zawartość CD

10

Prezentujemy zawartość i sposób działania najnowszej

wersji naszej sztandarowej dystrybucji hakin9.live

Atak

Malware – jak wojna to wojna!

14

Michał Bućko

Z artykułu dowiesz się jak wprowadzić do analizy pro-

gramy typu malware, jak radzić sobie z robakami, zło-

śliwymi aplikacjami i wirusami oraz jak wygląda od

środka laboratorium badania malware.

Obrona

Uwierzytelnianie i autoryzacja

w ASP.NET 2.0

20

Jacek Matulewski, Sławomir Orłowski

Jacek i Sławomir przedstawiają najpopularniejsze

sposoby uwierzytelniania i autoryzacji stosowane w

witrynach ASP.NET.

DNS inSecure

34

Bartosz Matusiak, Łukasz Poźniak, Mikołaj Stępień

Autorzy w swoim artykule omawiają protokół DNS

i tłumaczą dlaczego nie jest bezpieczny. Pokazują

jak działa rozszarzanie DNS SEC i jak skonfiguro-

wać lokalny serwer DNS wymuszający jego użycie.

Zaciemnianie kodu

40

Artur Żarski

Z artykułu dowiesz się jakie są podstawowe zagad-

nienia związane z zaciemnianiem kodu, jak można

zabezpieczyć szybko własne programy oraz jak uzy-

skać z plików wynikowych pliki źródłowe.

Niebezpieczeństwa sieci WiMAX

46

Paweł Baszkowski

Paweł w swoim artykule przedstawia garść informa-

cji dotyczących technologii WiMAX, standardu IEEE

802.16.e oraz niebezpieczeństw konfiguracji.

Mobilne (nie)bezpieczeństwo

50

Piotr Błaszczeć, Tadeusz Calanca

Praca mobilna to wielkie wyzwanie, jakim jest zapew-

nienie odpowiedniego poziomu bezpieczeństwa fir-

mowych zasobów. Niskie i wciąż spadające ceny lap-

topów powodują, iż coraz częściej wykorzystywane

są one jako podstawowe narzędzie pracownika.

Witamy!

To już szósty numer magazynu hakin9 w tym roku. Pragnie-

my, aby nasze czasopismo przykuwało Państwa uwagę i

dlatego dokładamy wszelkich starań, aby było ono ciekawe

pod względem nie tylko wizualnym, ale i merytorycznym.

Czerwcowy numer Hakin9 będzie obfity w wiele przy-

datnych wiadomości. Szczególnie polecamy artykuł Konra-

da Malewskiego Obsługa sieci z poziomu jądra. Informacje

dotyczące protokołu DNS – jak działa i dlaczego warto go

używać znajdą Państwo w artykule Łukasza Poźniaka, Bar-

tosza Matusiaka i Mikołaja Stępnia pt.: DNS inSecure.

Na płycie CD dołączonej do pisma znaleźć będzie można

wiele interesujących programów. Będą mogli Państwo sko-

rzystać z pełnych wersji takich programów jak: Secre-

cy Keeper służący do ochrony firmy przed przypadkowym

wyciekiem poufnych informacji oraz AES Password Mana-

ger, który jest idealnym rozwiązaniem w sferze zarządzania

hasłami. Proponujemy także programy z ograniczeniem cza-

sowym: Parallels Workstation 2.2 (wersja 90 dniowa służą-

ca do emulacji sprzętu, umożliwiając przydzielenie zasobów

komputera do zasobów każdej maszyny wirtualnej), issKe-

eper (99 dniowy trial, który chroni wszelkie zasoby stron

internetowych poprzez hasło) i inne.

Więcej szczegółów nie będziemy zdradzać. Zapraszam

do lektury!

Redakcja hakin9

background image

4

www.hakin9.org

hakin9 Nr 6/2007

hakin9

5

www.hakin9.org

hakin9 Nr 2/2006

Bezpieczeństwo informacji

a nowoczesny biznes

54

Tomasz Polaczek

Tomek w swoim artykule pokazuje czym są normy

ISO i ISO 27001 oraz przedstawia nowe zagrożenia

w ochronie informacji.

Narzędzia

Obsługa sieci z poziomu jądra

58

Konrad Malewski

Konrad prezentuje jak wygląda trasa pakietu od ste-

rownika do warstwy transportowej oraz jak prze-

chwytywać pakiety w różnych warstwach stosu

Sieci. Autor pokazuje jak niskopoziomowo wstrzyki-
wać pakiety.

One Time Pad czyli

jednorazowa podkładka

70

Cezary Cerekwicki

Czarek przedstawia jak działa najniebezpieczniejszy

algorytm kryptograficzny oraz czym różnią się liczby

losowe od pseudolosowych.

Recenzja

74

Rafał Podsiadły

Recenzja programu TrustPort Workstation

Klub Techniczny

Netasq UTM

75

Księgozbiór

76

Recenzujemy książki: Cykl projektowania zabezpie-

czeń, Wprowadzenie do Microsoft Windows Vista,

Wojna na bity. Wpływ wydarzeń z 11 września na

technikę informacyjną.

Felieton

Po złej stronie lustra

78

Patryk Krawaczyński

Zapowiedzi

82

Zapowiedzi artykułów, które znajdą się w następnym

wydaniu naszego pisma.

jest wydawany przez Software–Wydawnictwo Sp. z o.o.
Dyrektor:
Sylwia Pogroszewska

Redaktor naczelny: Martyna Żaczek

martyna.zaczek@software.com.pl

Asystent redaktora: Katarzyna Juszczyńska

katarzyna.juszczynska@software.com.pl

Tłumaczenie: Krzysztof Trynkiewicz

Wyróżnieni betatesterzy: Marcin Kulawianek, Przemysław Prytek,

Radosław Domański

Opracowanie CD: Rafał Kwaśny

Kierownik produkcji: Marta Kurpiewska marta@software.com.pl

Skład i łamanie: Artur Wieczorek arturw@software.com.pl

Okładka: Agnieszka Marchocka

Dział reklamy: adv@software.com.pl

Prenumerata: Marzena Dmowska pren@software.com.pl

Adres korespondencyjny: Software–Wydawnictwo Sp. z o.o.,

ul. Bokserska 1, 02-682 Warszawa, Polska

Tel. +48 22 887 13 45, Fax +48 22 887 10 11

www.hakin9.org

Osoby zainteresowane współpracą prosimy o kontakt:

cooperation@software.com.pl

Jeżeli jesteś zainteresowany zakupem licencji na wydawanie naszych

pism prosimy o kontakt:

Monika Nowicka

e-mail: monika.nowicka@software.com.pl

tel.: +48 (22) 887 12 66

fax: +48 (22) 887 10 11

Druk: 101 Studio, Firma Tęgi

Redakcja dokłada wszelkich starań, by publikowane w piśmie i na

towarzyszących mu nośnikach informacje i programy były poprawne,

jednakże nie bierze odpowiedzialności za efekty wykorzystania ich;

nie gwarantuje także poprawnego działania programów shareware,

freeware i public domain.

Uszkodzone podczas wysyłki płyty wymienia redakcja.

Wszystkie znaki firmowe zawarte w piśmie są własnością odpowiednich

firm i zostały użyte wyłącznie w celach informacyjnych.

Do tworzenia wykresów i diagramów wykorzystano

program

firmy

Płytę CD dołączoną do magazynu przetestowano programem AntiVirenKit

firmy G DATA Software Sp. z o.o.

Redakcja używa systemu automatycznego składu

UWAGA!

Sprzedaż aktualnych lub archiwalnych numerów pisma w cenie innej

niż wydrukowana na okładce – bez zgody wydawcy – jest działaniem

na jego szkodę i skutkuje odpowiedzialnością sądową.

hakin9 ukazuje się w następujących krajach: Hiszpanii, Argentynie,

Portugalii, Francji, Belgii, Luksemburgu, Kanadzie, Maroko, Niem-

czech, Austrii, Szwajcarii, Polsce, Czechach, Słowacji.

Prowadzimy również sprzedaż kioskową w innych krajach europej-

skich.

Magazyn hakin9 wydawany jest w 7 wersjach językowych:

PL

ES

CZ EN

IT FR DE

Nakład wersji polskiej 6 000 egz.

UWAGA!

Techniki prezentowane w artykułach mogą być używane jedynie
we własnych sieciach lokalnych.
Redakcja nie ponosi odpowiedzialności za niewłaściwe użycie
prezentowanych technik ani spowodowaną tym utratę danych.

background image

W skrócie

hakin9 Nr 6/2007

www.hakin9.org

6

W skrócie

www.hakin9.org

7

hakin9 Nr 6/2007

Word znów podatny na atak

Gigant z Redmond bada zgłoszo-

ną ostatnio lukę w jednym z plików

DLL systemu Windows, która wyko-

rzystana przez cyberprzestępcę,

może doprowadzić do zawieszenia

systemu i konieczności jego ponow-

nego uruchomienia na twardo. Zgło-

szona przez pracowników należą-

cej do Symanteka firmy DeepSi-

ght luka dotyczy biblioteki ole32.dll,

która jest wykorzystywana pod-

czas łączenia obiektów bądź kopio-

wania treści między dokumentami.

Wystarczy spreparować odpowied-

ni plik .doc i skłonić użytkownika do

jego pobrania lub otwarcia.

Kolejna luka w Firefoksie

Znany specjalista od zabezpieczeń,

Michał lcamtuf Zalewski, nie próż-

nuje. Udało mu się wykryć kolejną

dziurę w Firefoksie, która pozwa-

la na ukrycie przed użytkownikiem

prawdziwej lokalizacji strony. Luka

ta może posłużyć do podsunięcia

ofiarom witryn, które wyglądają jak

prawdziwe strony banków, aukcji

internetowych i różnych podobnych

serwisów i wyłudzenia w ten sposób

nazw i haseł użytkownika. Problem

powoduje sposób, w jaki Firefox

radzi sobie z adresem about:blank,

który pokazuje czystą stronę. Prze-

glądarka nie informuje, że użytkow-

nik znajduje się na takiej właśnie

stronie. About:blank może zostać

otwarta również przez JavaScript i

to właśnie za pomocą funkcji tego

języka można załadować dodatko-

wą zawartość na stronę. Wykryta

luka dotyczy Firefox 1.5 oraz 2.0

Kaspersky

kompatybilny z Vistą

Kaspersky Lab opublikował nowe

polskojęzyczne wersje produk-

tów Kaspersky Internet Security

6.0 oraz Kaspersky Anti-Virus 6.0,

kompatybilne z najnowszym syste-

mem operacyjnym firmy Microsoft

- Windows Vista. Najnowsza wersja

powstała w celu zapewnienia ochro-

ny przed wszystkimi typami zagro-

żeń użytkownikom systemu opera-

cyjnego Windows Vista. Poprzednie

wersje programów Kaspersky Lab

nie będą działać w tym systemie, ze

względu na nową architekturę Visty.

Nowe wersje programów Kaspersky

Anti-Virus 6.0 oraz Kaspersky Inter-

net Security 6.0 są w pełni kompa-

tybilne z 32-bitową oraz 64-bitową

wersją najnowszego systemu opera-

cyjnego Microsoftu.

Dziurawy Snort

F

irma Sourcefire poinformowała
o wykryciu luki w zabezpiecze-

niach Snorta – opensource’owego
systemu wykrywania włamań. Luka
ta umożliwia zainstalowanie dowol-
nego kodu w systemie monitorują-
cym i przejęcie całkowitej kontroli nad
zarażoną maszyną. Słaba strona sys-
temu, decydująca o takim zagroże-
niu związana jest z obsługą protoko-
łu DCE/RPC. Do wykorzystania tej
luki, napastnik musi spreparować ruch
RCP tak, aby uzyskać przepełnienie
bufora. Agresor nie musi znać przy
tym adresu sensora – wystarczy jedy-

nie, że wyśle on odpowiedni pakiet do
Sieci, która jest chroniona przez sen-
sory Snort. Problem dotyczy Snorta w
wersji 2.6.1, 2.6.1.1, 2.6.1.2 oraz 2.7.0
beta 1, a także komercyjnych progra-
mów firmy Sourcefire, w których wyko-
rzystany został open-source'owy IDS.

Snort to bardzo silny sieciowy

system wykrywania ataków, który
daje szeroki zakres mechanizmów
detekcji. Umożliwiają one dokony-
wanie w czasie rzeczywistym ana-
lizy ruchu i rejestrowanie pakietów
w sieciach opartych na protokołach
IP/TCP/UDP/ICMP.

Nowe zagrożenie drive-by pharming

F

irma Symantec, we współpracy
z Wydziałem Informatyki na Uni-

wersytecie Indiana, poinformowała o
wykryciu nowego zagrożenia bezpie-
czeństwa. Użytkownicy indywidualni
mogą paść ofiarą ataku typu drive-by
pharming
, który powoduje zmianę
konfiguracji domowych routerów przez
spreparowaną witrynę internetową.

W przypadku tradycyjnego ataku

typu pharming przestępca stara się
przekierować użytkownika odwie-
dzającego określoną witrynę inter-
netową na stronę sfałszowaną. Może
to osiągnąć modyfikując plik hosts w
komputerze ofiary lub wprowadza-
jąc zmiany w systemie DNS (Domain
Name System).

Tymczasem atak drive-by phar-

ming to nowy rodzaj zagrożenia
polegający na tym, że po odwiedze-
niu przez użytkownika destrukcyjnej
witryny, atakujący może zmienić usta-

wienia DNS na routerze użytkownika
lub w punkcie dostępu bezprzewodo-
wego. Nowe badania ujawniają pro-
blem, który dotyczy milionów użytkow-
ników połączeń szerokopasmowych
na całym świecie. Biorąc pod uwagę
łatwość, z jaką można przeprowadzić
atak typu drive-by pharming, klienci
indywidualni powinni jak najszybciej
odpowiednio zabezpieczyć używane
przez siebie routery i punkty dostępu
bezprzewodowego – powiedział Oliver
Friedrichs, dyrektor ośrodka Syman-
tec Security Response
.

Istniejące rozwiązania ochronne

nie zabezpieczają przed tego typu ata-
kiem, ponieważ metoda drive-by phar-
ming uderza bezpośrednio w router
użytkownika. Firma Symantec pracu-
je nad technologiami, które pomogą
w wyeliminowaniu przywołanego tu
problemu przy użyciu mechanizmów
działających po stronie klienta.

background image

W skrócie

hakin9 Nr 6/2007

www.hakin9.org

6

W skrócie

www.hakin9.org

7

hakin9 Nr 6/2007

Panda znów atakuje Chiny

W chińskiej cyberprzestrzeni po

raz kolejny wybuchła epidemia nie-

sławnego wirusa panda. Oryginalny

wirus panda został napisany przez

Li Juna, 25-letniego mieszkańca

Wuhan, i zainfekował miliony kom-

puterów w całych Chinach. Wirus

ten kasował pliki z dysków twardych

oraz kradł prywatne dane, takie

jak konta gier online oraz hasła.

Pierwsza epidemia miała miejsce

pod koniec 2006 roku. Od tamte-

go czasu wirus został zmodyfikowa-

ny co najmniej kilka razy, co prze-

dłużyło jego życie. W lutym chiń-

ska policja aresztowała Li Juna oraz

kilka innych osób. Byli oni pierwszy-

mi osobami, aresztowanymi przez

władze chińskie za stworzenie i roz-

powszechnianie szkodliwego opro-

gramowania. Policja oszacowała,

że na sprzedaży kodu 12 osobom

Jun zarobił 12 tys. dolarów. Teraz

Chinom zagraża nowa epidemia

- w Sieci pojawiła się kolejna wersja

wirusa panda, który próbuje konty-

nuować destrukcyjne działanie swo-

jego poprzednika. Według statystyk,

w 2005 roku zainfekowanych wiru-

sami było do 80 proc. wszystkich

maszyn.

Java bezpieczniejsza

niż C/C++

Projekty open-source'owe napisane

w Javie zawierają mniej błędów niż

aplikacje napisane w innych języ-

kach – wynika z badań przeprowa-

dzonych przez firmę Fortify Softwa-

re. Nie oznacza to jednak, że opro-

gramowanie pisane w Javie jest

wolne od usterek – specjaliści z

Fortify Software twierdzą, iż w zba-

danych przez nich próbkach kodu

napisanego w tym języku wciąż

było sporo błędów. Firma Forti-

fy Software opublikowała raport

na temat błędów w open-source-

'owych aplikacjach, wykrytych w

ramach prowadzonego przez firmę

oraz University of Maryland projektu

Java Open Review. Sposób, w jaki

napisane są niektóre projekty, nie-

jako zachęca programistów wyko-

rzystujących ten kod, do popełnia-

nia błędów. Dostarczyliśmy dowód,

że Java jest bezpieczna – teraz

chcemy upewnić się, że open-sour-

ce'owi developerzy potrafią napra-

wić błędy w swoich produktach,

zanim staną się one zagrożeniem

dla bezpieczeństwa użytkowników

– czytamy w oświadczeniu wyda-

nym przez Fortify Software.

Haker złapał sędziego

B

yły sędzia kalifornijskiego
sądu – Ronald C. Kline został

skazany na 27 miesięcy więzienia
za posiadanie dziecięcej porno-
grafii. Sędziego udało się schwy-
tać dzięki kanadyjskiemu hakero-
wi, który napisał konia trojańskiego
śledzącego to, co sędzia Ronald C.
Kline porabia w Internecie. Kana-
dyjczyk spreparował fotografię, w
której ukryty był koń trojański, infe-
kujący komputery poprzez błąd w
systemie Windows.

Nielegalne materiały zosta-

ły odkryte na komputerze sędzie-
go w 2000 roku. Willman, wówczas
19-latek, prowadził swoje prywat-

ne śledztwo przeciwko Kline'owi.
Było ono częścią większych dzia-
łań, w ramach których Kanadyjczyk
śledził 3000 pedofili w USA, Rosji i
Kanadzie.

Nie spałem po nocach przeszu-

kując ich komputery. I znalazłem
tam więcej niż się spodziewałem.
Mogłem przeczytać wszystkie ich
maile, a oni nawet nie wiedzieli, że
były otwierane. Mogłem zobaczyć
z kim rozmawiają na czacie. Naj-
bardziej interesowali mnie pedofile
i producenci dziecięcej pornogra-
fii. To był mój priorytet, a nie ludzie,
którzy po prostu ściągali zdjęcia.

Luka bezpieczeństwa w OpenBSD

U

ważany za niezwykle bezpiecz-
ny, system OpenBSD okazuje

się zawierać błąd w obsłudze pro-
tokołu IPv6. Nieprawidłowość zwią-
zana jest z obsługą protokołu IPv6 i
dotyczy błędu w zarządzaniu pamię-
cią podczas obsługi pakietów prze-
syłanych z użyciem IPv6. Błąd może
zostać wykorzystany do zdalne-
go uruchomienia nieautoryzowane-
go kodu, czyli może w konsekwen-
cji doprowadzić do przejęcia kontro-
li nad systemem. Usterka czyni też
systemy podatnymi na ataki DdoS.
Błąd w OpenBSD może zostać
wykorzystany za pomocą specjalnie
spreparowanych pakietów danych.
OpenBSD to wolnodostępny system
operacyjny typu UNIX z rodziny BSD,

zgodny z normą POSIX. Projekt
powstał w 1995 roku jako efekt rozła-
mu w zespole NetBSD, jego inicjato-
rem był kanadyjski programista Theo
de Raadt. OpenBSD jest systemem
operacyjnym powszechnie uznawa-
nym za najbezpieczniejszy wśród
systemów dostępnych na zasa-
dach jakiejkolwiek licencji. Zawie-
ra mniej luk w zabezpieczeniach niż
dowolna wersja Windows lub Linuk-
sa. Jego twórcy postawili na nieza-
wodność, stabilność i bezpieczeń-
stwo. Powszechnie wykorzystywany
jest jako system do tworzenia syste-
mów zapór sieciowych (firewall), ser-
werów dostępowych czy bramko-
wych, podłączających w bezpieczny
sposób mniejsze sieci do Internetu.

background image

W skrócie

hakin9 Nr 6/2007

www.hakin9.org

8

Mozilla – nowa

metoda testowania łat

Przedstawiciele Mozilla Corpora-

tion poinformowali o wdrożeniu

nowego modelu testowania uak-

tualnień dla przeglądarki Firefox.

Wszystkie nowe wersje produktów

Mozilli najpierw przekazywane są

grupie wybranych testerów, a dopie-

ro później trafiają do powszechne-

go użytkowania. To nowość - do tej

pory testy uaktualnień dla FF pro-

wadzone były tylko przez autorów

programu. Przedstawiciele Mozil-

li mają nadzieję, że wprowadzenie

nowego systemu testowania uaktu-

alnień pozwoli im zapewnić najwyż-

szą jakość przygotowywanych uak-

tualnień. Przygotowywane właśnie

uaktualnienie dla Firefoksa - wersja

2.0.0.3 - zawierać ma łatki usuwają-

ce kilka błędów w zabezpieczeniach

aplikacji.

Jedna trzecia ataków inter-

netowych pochodzi z USA

Według najnowszego rapor-

tu firmy Symantec, Stany Zjedno-

czone stanowią największe źródło

ataków komputerowych - kompu-

tery z tego kraju odpowiadają za

około 31 proc. wszystkich tego

typu incydentów w skali globalnej.

Co więcej, hakerzy są coraz bar-

dziej zorganizowani i, co nietrud-

ne do przewidzenia, stosują coraz

bardziej wyszukane metody dzia-

łania. Znaczny wzrost odnotowa-

no w liczbie komputerów przeję-

tych przez cyberprzestępców w

celu stworzenia botnetów. Według

najnowszych danych, do 2006 roku

szkodliwi użytkownicy kontrolowali

ponad 6 milionów maszyn, co sta-

nowi wzrost o 29 proc. w stosunku

do pierwszej połowy poprzednie-

go roku. Drugie miejsce w niesław-

nym rankingu państw, z których

przeprowadzane są ataki zajmu-

ją Chiny z wynikiem 10%. Niemcy

plasują się na trzecim miejscu i ich

udział wynosi 7%.

SSL kanałem dystrybucji wirusów?

S

hane Coursen, konsultant z
firmy Kaspersky Labs, ostrzega,

że połączenia chronione protokołem
Secure Sockets Layer mogą posłu-
żyć autorom wirusów czy koni tro-
jańskich do wygodnej dystrybucji ich
produktów. Shane uważa, że prze-
stępcy mogą wkrótce zacząć wyko-
rzystywać fakt, iż dla większości
użytkowników pojawienie się ikony
kłódki w przeglądarce jest jedno-
znacznym potwierdzeniem, że połą-
czyli się z bezpieczną stroną. Więk-
szość ludzi, kiedy widzi w przeglą-
darce ikonę kłódki, zakłada, że połą-
czenie jest bezpieczne. Wtedy prze-
stają oni zwracać uwagę na to, jakie
dane są właściwie przesyłane z owej
strony
- tłumaczy Shane Coursen.
Autorom wirusów może teraz sprzy-

jać fakt, iż użytkownicy oswoili się
już z SSL-em - z technologią tą sty-
kają się choćby w e-bankach, skle-
pach internetowych czy serwisach
pocztowych. Rzeczywiście, dość
powszechne jest przeświadczenie,
że korzystanie z SSL jest gwarantem
bezpieczeństwa w Internecie. A prze-
cież protokół ten jedynie potwierdza,
że połączyliśmy się z daną stroną
i że przesyłane z niej dane nie są
dostępne dla osób trzecich
- komen-
tuje John Weinschenk, szef firmy
Cenzic Inc. SSL jest protokołem sie-
ciowym używanym do bezpiecznych
połączeń internetowych. Został opra-
cowany przez firmę Netscape Com-
munications Corporation
w 1994r. i
powszechnie go przyjęto jako stan-
dard szyfrowania na WWW.

Dziurawy OpenOffice

W

bibliotece lipwpd, która odpo-
wiedzialna jest za przetwa-

rzanie dokumentów WordPerfec-
ta, odkryto dziurę, która pozwala
na doprowadzenie do przepełnie-
nia bufora i uruchomienie dowolne-
go kodu. Biblioteka wykorzystywa-
na jest między innymi w Abiword od
wersji 2.2, KOffice od 1.4 oraz Ope-
nOffice.org od 2.0. Luka została
potwierdzona w wersji 0.8.7; aktual-
na edycja 0.8.9 jest już bezpieczna.
Twórcy różnych dystrybucji Linuk-
sa właśnie rozprowadzają pakiety
z lipwpd 0.8.9. Niestety nie zosta-
ła jeszcze przygotowana popraw-
ka dla OpenOffice’a, więc ten pakiet

biurowy jest podatny na atak. W tym
przypadku Deweloperzy OpenOffi-
ce’a muszą wypuścić cały zaktuali-
zowany program, gdyż sama nowa
biblioteka nie wystarczy. Bibliotekę
libwpd można pobrać w najnowszej
wersji z witryny projektu: libwpd.so-
urceforge.net
. OpenOffice.org jest
pakietem oprogramowania biurowe-
go Open Source. Jego kod bazuje
na starszym pakiecie StarOffice,
napisanym przez niemiecką firmę
Star Division. W 1999 firma wraz z
prawami do programu została zaku-
piona przez Sun Microsystems.

Mateusz Stępień

background image
background image

hakin9.live

hakin9 Nr 6/2007

www.hakin9.org

10

N

a dołączonej do pisma płycie znajduje się ha-
kin9.live
(h9l) w wersji 3.3.0-aur – bootowalna
dystrybucja Auroxa, zawierająca przydatne na-

rzędzia, dokumentację, tutoriale i materiały dodatkowe
do artykułów. Aby zacząć pracę z hakin9.live, wystar-
czy uruchomić komputer z CD. Po uruchomieniu syste-
mu możemy zalogować się jako użytkownik hakin9 bez
podawania hasła.

Materiały dodatkowe:

• dwa nowe tutoriale do artykułów: XSS – Cross-Site

Scripting oraz DNS inSecure,

• Aurox-Live,
• materiał uzupełniający do artykułów: DNS inSecure

oraz Uwierzytelnianie i autoryzacja w ASP.NET 2.0.

Programy:

• Event Log Explorer,
• issKeeper,
• AES Password Manager,
• Secrecy Keeper,
• Licence – protector,
• iMacros,
• Norman Virus Control for Vista,
• Norman Virus Control Plus,
• Parallels Workstation 2.2,

Żeby uruchomić swój komputer z płyty Hakin9.live,
ustaw swój BIOS na bootowanie z napędu CD-ROM.
Po dokonanych zmianach uruchom ponownie kompu-
ter. Uruchomi się dystrybucja hakin.live, na której mo-
żesz przećwiczyć techniki prezentowane w tutorialach.
Upewnij się Drogi Czytelniku czy sprawdziłeś deskto-
powe foldery – zawierają wiele dodatkowych materia-
łów. Zawartość CD można również przejrzeć w syste-
mie Windows.

Tutoriale i dokumentacja

W skład dokumentacji, oprócz standardowych dla Linuk-
sa stron pomocy (strona manualna), z których skorzystać
możemy poprzez konsolę wydając polecenie man [na-
zwa programu], wchodzą między innymi tutoriale, przy-
gotowane przez redakcję. Na CD opracowane zostały
praktyczne ćwiczenia do artykułów – XSS – Cross-Si-
te Scripting oraz DNS inSecure
. Zakładamy, że podczas
wykonywania ćwiczeń związanych z artykułami i tutoria-
lami, użytkownik korzysta z hakin9.live. Na płycie znajdą
się również materiały pomocnicze do artykułów: Uwie-
rzytelnianie i autoryzacja w ASP.NET 2.0
oraz DNS in-
Secure.

Zawartość CD

Event Log Explorer

Data wygaśnięcia licencji– 31 grudzień 2007. Kiedy prób-
na wersja wygaśnie, czytelnicy hakin9 mogą wybrać jedną
z następujących opcji :

• wersja darmowa (tylko do użytku osobistego),
• nabycie wersji z licencją. 20% taniej od ceny detalicz-

nej, kuponem jest HAKIN9 (ważny do końca grud-
nia).Kupon jest ważny dla wszystkich licencji Event Log
Explorer'a
: osobista, biznesowa i dla developerów,

• przedłużenie okresu licencji.

Event Log Explorer jest efektywnym rozwiązaniem, słu-
żącym do przeglądania, monitorowania i analizowa-
nia zdarzeń odnotowanych w systemie bezpieczeństwa,
aplikacjach i innych logach systemów Windows NT/2000/
XP/2003
. Event Log Explorer świetnie rozwija możliwości
standardowego Windows Event Viewer monitorującego
funkcjonalność systemu i wprowadza dużo nowych wła-
ściwości. Aby utrzymać swoją Sieć i dźwięk bezpieczny-
mi, musisz stale śledzić ważne i mniej ważne próby logo-
wania oraz zdarzenia powiązane z takimi czynnościami,
jak tworzenie, otwieranie, czy kasowanie plików itd. Event
Log Explorer
pomaga ci w szybkim przeglądaniu, wyszu-
kiwaniu i raportowaniu problemów, ostrzeżeń bezpieczeń-
stwa i wszystkich innych zdarzeń, które zostały wygenero-
wane przez Windows. Pozwala przeglądać opis każdego
zdarzenia, bez zbędnego klikania myszką – wszystkie opi-
sy są wyświetlane w oknie Event Description box of log al-
bo bezpośrednio w liście zdarzeń. Przyjazny i potężny in-
terfejs użytkownika umożliwia ci selekcję na dwa sposoby:
poprzez interfejs Multi-document albo tabbed-document.

Event Log Explorer jest zaopatrzony w użyteczny sil-

nik wyszukiwania i filtrowania zdarzeń. Każdy filtr może
być zapisany do pliku – oszczędzi to twój czas, kiedy
będziesz chciał zastosować filtr ponownie. Możesz także
eksportować swoje logi do innego formatu. Na dzień dzi-
siejszy da się wysłać je do HTML'a, Excela'a i separatora
etykiet plików tekstowych.

iisKeeper – 99-dniowy trial

Czytelnicy hakin9 mają zniżkę 30% na zakup issKeeper
i MetaCompress oraz na IISKepper+MetaCompress.
Zakupy on-line odbywają sie na stronie www.metama-
tica.com –
order – iisKeeper lub MetaCompress – tutaj
okienko Coupon code (optional) nasz coupon code to
isapi30.

Specjalne podziękowania dla firmy ITXON za udostępnienie
naszym czytelnikom programu Parallers Workstation 2.2.

background image

hakin9.live

hakin9 Nr 5/2007

11

Chroń zasoby stron hasłem. Jeśli chcesz ograni-

czyć dostęp do niektórych plików i folderów na two-
jej stronie albo umieścić informacje niedostępne dla
większości użytkowników, Matematica Software oferu-
je proste i efektywne rozwiązanie – ISAPI protection fil-
ter for IIS.

Z issKeeper możesz łatwo chronić wszelkie zasoby

twojej strony internetowej poprzez hasło. Przez chro-
nienie zasobów rozumiemy folder posiadający pod-
foldery i pliki albo pojedynczy plik. Nie musisz two-
rzyć kont użytkowników. Lista użytkowników posiada-
jących dostęp do chronionych zasobów nie zależy od li-
sty użytkowników systemu. Dla trybu autoryzacji plików
cookie, zestaw dystrybucyjny zawiera szablony form
wejściowych, gdzie użytkownicy wprowadzają nazwę
użytkownika i hasło. Możesz łatwo umieścić te formy
na swojej stronie. Aby chronić swoją stronę, będziesz
potrzebował kilku minut na instalację i konfigurację is-
sKeeper.

Norman Virus Control for Vista

Jest to oprogramowanie norweskiej firmy zajmującej
się problematyką bezpieczeństwa komputerowego.
Norman Virus Control został stworzony po to, aby za-
bezpieczyć nas przed infekcjami nadchodzącymi z In-
ternetu, takimi jak: wirusy, robaki, trojany. NVC posiada
następujące zalety:

• bezpośrednie skanowanie plików w trakcie ich używa-

nia,

• technologia Norman SandBox umożliwia wykrywanie

nowych i nieznanych wirusów,

• skanowanie poczty,
• automatyczny update poprzez Internet.

Norman Virus Control Plus

Jest to oprogramowanie norweskiej firmy zajmującej się
problematyką bezpieczeństwa komputerowego.

Norman Virus Control Plus został stworzony, aby za-

bezpieczyć nas przez infekcjami nadchodzącymi z Interne-
tu, takimi jak: wirusy, robaki, trojany, czy spyware i adware.
NVC+ posiada następujące zalety:

• bezpośrednie skanowanie plików w trakcie ich używa-

nia,

• blokowanie spyware i adware w czasie rzeczywistym,
• technologia Norman SandBox umożliwia wykrywanie

nowych i nieznanych wirusów, skanowanie poczty,

• automatyczny update poprzez Internet.

Parallers Workstation

Parallers Workstation jest potężnym, łatwym w użyciu i
wymagającym niewielkich kosztów rozwiązaniem wirtual-
nej maszyny, dostępnym na PC. Umożliwia każdej oso-
bie, od eksperta po domowego użytkownika, możliwość
tworzenia kompletnie sieciowych, bezpiecznych i stabil-

background image

hakin9.live

hakin9 Nr 6/2007

www.hakin9.org

12

nych wirtualnych maszyn na pojedynczej maszynie fi-
zycznej.

Parallers Workstation służy do emulacji sprzętu,

umożliwiając przydzielenie zasobów komputera do zaso-
bów każdej maszyny wirtualnej. Pozwala im to na takie
same funkcjonowanie na jednym komputerze. Do stwo-
rzenia tego narzędzia posłużyła technologia hypervison,
która zwiększyła stabilność, bezpieczeństwa oraz wydaj-
ność maszyny wirtualnej. Spowodowane jest to tym, że
pomiędzy sprzętem, a głównym systemem zastosowano
małą warstwę oprogramowania.

Narzędzie współpracuje z procesorami opartymi o

najnowsze technologie oraz obsługuje wiele systemów
operacyjnych (Windows, Linux, czy Unix).

SecrecyKeeper

by Smart Protection Labs

Nasza wersja zawiera licencję dla 5 agentów na okres 1
roku. Możemy ci dać rabat w wysokości 10%, na stronie
http://secure.emetrix.com/order/product.asp?PID=1135
31627&DC=HACK901042007010
62007.

SecrecyKeeper został stworzony dla przedsię-

biorstw oraz służb bezpieczeństwa. Za jego pomocą
możesz chronić swoją firmę przed przypadkowym
wyciekiem poufnych informacji spowodowanym przez
twoich pracowników. SecrecyKeeper chroni też twoje

dane przed kradzieżą ze strony podwładnych. Główne
zalety SK:

• prowadzi szczegółowe raporty dotyczące korzystania

z ważnych danych,

• dynamiczne i statyczne blokowanie wejścia do portów

USB,

• dynamiczne blokowanie transmisji danych na nośniki

danych,

• zawężanie dostępu do poufnych danych dla departa-

mentu IT.

Licence Protector

Licence Protector from Mirage Computer Systems kon-
troluje i zarządza licencjami, generuje wersje prezenta-
cyjne – i czas limitowanych wersji. Umożliwia testowanie
kopii oprogramowania, wspiera równoległych użytkowni-
ków i automatycznie generuje licencje w sklepach inter-
netowych.

Za pomocą Web Activation Server można aktywo-

wać licencję online. Licence Protector oferuje kodowa-
nie licencji za pomocą kluczy stworzonych przez użyt-
kownika.

iMacros Web Automation

Dzisiaj przeglądarka internetowa jest najczęściej uży-
wanym oprogramowaniem. Oprogramowanie iMacros
umożliwia odwiedzanie strony ponownie każdego dnia,
z zapamiętanymi hasłami, wprowadzonymi danymi czy
ściągniętymi obrazami.

Z tą technologią wykonujesz daną czynność raz, a

następnie może być ona egzekwowana kiedykolwiek bę-
dziesz jej potrzebował. Wszystkie dane są zapisywane
w Internet macro. Wersja zaawansowana tego oprogra-
mowani posiada opcję diagnozowania odpowiedzi stro-
ny oraz wsparcie dla Flasha i apletów Java. KLUCZ do li-
cencji:

KRLDU-IRYZ5-TKMUT-EPAQT-N2Y32-FDFC5.

AES Password Manager

AES Password Manager jest doskonałym rozwiąza-
niem w sferze zarządzania hasłami, idealnym dla użyt-
ku osobistego oraz biurowego. Poza hasłami, można
bezpiecznie przechowywać inne dane włącznie z nu-
merami kart kredytowych, kodów PIN itp.

AES Password Manager wspiera operacje wielu

użytkowników, oznacza to, że możesz mieć kliku użyt-
kowników, każdego z własnym hasłem. Każdemu użyt-
kownikowi mogą być przydzielane inne prawa (prawa
przeglądu i modifikacji specjalnych pozycji). Użytkowni-
cy mają zdalny dostęp do bazy danych (przechowywa-
nej w współdzielonej Sieci). Jeżeli chcemy użyć AES
Password Manager
jako środowiska dla pojedynczego
użytkownika, te funkcje mogą dla wygody zostać wyłą-
czone. l

Rysunek 2.

Parallers Workstation

background image

Jeśli nie możesz odczytać zawartości płyty CD, a nie jest ona uszkodzona mechanicznie,

sprawdź ją na co najmniej dwóch napędach CD.

W razie problemów z płytą, proszę napisać pod adres: cd@software.com.pl

background image

www.hakin9.org

hakin9 Nr 6/2007

14

Atak

W

przyszłości ataki z wykorzysta-
niem malware mogą mieć miejsce
na ogromną skalę i przede wszyst-

kim dlatego tak ważna stała się kwestia bezpie-
czeństwa systemów informatycznych. Jednym z
kluczowych zagadnień jest tu analiza malware.
Aby obronić się przed rozchodzącym się w da-
nej chwili po sieci malware wymagana jest du-
ża wiedza: nie tylko wykorzystują one zazwy-
czaj dopiero co odkryte luki, ale też instalują w
systemach swoich ofiar rootkity, są spakowane
naprawdę wrednymi pakerami oraz wykrywa-
ją działające debuggery. W niniejszym artyku-
le chciałbym przedstawić Czytelnikom kilka za-
gadnień, z którymi często borykają się analitycy
bezpieczeństwa; nie jest moją intencją stworze-
nie słownika czy ujęcia komplementarnego.

Kilka terminów,

które musisz zrozumieć

• PE / portable executable (przenośne wyko-

nywalne), natywny format plików Windows.
W telegraficznym skrócie, pliki takie mają
być w założeniu przenośne (pomiędzy
platformami zarówno programowymi, jak
i sprzętowymi).

• Struktura PE zawiera informacje dostar-

czające systemowi operacyjnemu wiedzy,
jak obsłużyć należy zawarty w pliku kod
wykonywalny.

Malware

– jak wojna to wojna!

Michał Bućko

stopień trudności

Malware to potoczne określenie złośliwego oprogramowania

(ang. malicious software). Jest ono szeroko rozpowszechnione

w Internecie, infekując tysiące komputerów na całym świecie.

Wiedza hakerów jest bardzo duża, a współczesne programy typu

malware są coraz bardziej zaawansowane.

Z artykułu dowiesz się

• wprowadzenie do analizy programów typu mal-

ware,

• przegląd niektórych ze stosowanych przez

badające malware laboratoria, technik,

• jak radzić sobie z robakami, złośliwymi aplika-

cjami i wirusami,

• jak wygląda od środka laboratorium badania

malware.

Co powinieneś wiedzieć

• podstawowa znajomość zagadnień związanych

z bezpieczeństwem technologii informacyjnych,

• terminy takie jak XSS, DNS spoofing, phishing,

zero-day, rootkit będą wykorzystywane bez
uprzedniego ich wyjaśnienia,

• warto także zapoznać się z narzędziami pre-

zentowanymi w artykule. Pozwoli to na lepsze
zrozumienie tematu i będzie z całą pewnością
stanowiło bardzo dobre ćwiczenie praktyczne.

background image

Podstawy badania malware

hakin9 Nr 6/2007

www.hakin9.org

15

• Paker PE / kompresja i/lub ma-

skowanie treści plików PE; w
skrócie, używa się ich aby za-
maskować zawarte w kodzie ad-
resy sieciowe i URL, utrudnić je-
go modyfikację, zmniejszyć jego
rozmiar, ograniczyć kradzież ko-
du.

Krótkie szkolenie

z pakerów

Fragment pierwszego programu – Li-
sting 1. Jaki wykorzystano paker?
Dwa zaznaczone na czerwono zapi-
sy sygnalizują zastosowanie narzę-
dzia PECompact2. A w przypadku
ukazanym na Listingu 2.? Czerwo-
ny kolor wskazuje na paker ASPACK
(obecność sekcji .aspack). Bardzo
popularny jest również paker UPX:

This program must be run under Win32
UPX0
UPX1
.rsrc
1.25
UPX!

Wspomniane powyżej pakery to tyl-
ko pojedyncze przykłady. W rzeczy-
wistości istnieje bardzo duża ilość
różnych narzędzi tego rodzaju,
częściowo wyspecjalizowanych pod
kątem określonego złośliwego opro-
gramowania. Przykładowo, popular-
nym pakerem jest Themida; jest on
często wykorzystywany, ponieważ
umie wykrywać wirtualne maszyny,
co utrudnia analizę spakowanego
nim malware.

Jak zidentyfikować

paker?

Do identyfikacji ciągów znaków
wykorzystuje się programy strings
(firmy Sysinternals) bądź BinText.
Bardzo popularnym w środowisku
analityków bezpieczeństwa na-
rzędziem jest także PEiD; niestety
korzysta on z ograniczonej bazy
pakerów, w efekcie czego niektóre
pakery muszą być analizowane
ręcznie.

Skąd wiemy że to malware, jeżeli

go nie otworzyliśmy? Cóż, odpowiedź
na to pytanie jest problematyczna:
gdyby ocena taka była prosta, od-
powiednie rozwiązanie zostałoby
zapewne wbudowane we wszyst-
kie istniejące systemy operacyjne.
W rzeczywistości zadanie to wydaje
się bardzo trudne – można jednak
za pomocą wstępnej statycznej ana-
lizy pod kątem malware wyszukać

informacje sygnalizujące zagrożenie.
Przeprowadzając statyczną analizę
możemy znaleźć:

• pewne szczególne adresy URL (na

przykład banków, instytucji finan-
sowych, serwisów transakcyjnych,
paneli administracyjnych itp.),

• fragmenty wiadomości e-mail,

stron HTML, skryptów JS bądź
ActiveX, VBS itp.),

• obrazy o treści powiązanej z in-

stytucjami finansowymi,

• numery kart kredytowych,
• typowe nazwy i hasła użytkowni-

ków,

• dziwne parametry dla połączeń

sieciowych, itd.

Przykładowymi informacjami po-
chodzącymi z analizy statycznej
mogłyby być te zaprezentowane na
Listingu 3.

Powyższy fragment kodu nie

wymaga, jak sądzę, szczegółowego
komentarza. Wyraźnie widać, że
jest on powiązany z wysyłaniem na
zdalną maszynę listu z jakimiś infor-
macjami. W kontekście analizy mal-
ware, listy tego rodzaju służą zwykle
kradzieży poufnych informacji bądź
wysyłaniu niechcianej koresponden-
cji. Kolejny fragment kodu:

www.evilwhatever############
evilhack#####################
Internet Banking HELLOWORLD
Mr President
Admin
Admin1234admin

Tutaj można domniemywać, iż złośliwy
program atakuje infrastrukturę interne-

Listing 1.

Fragment

pierwszego programu

!This program cannot be
run in DOS mode.
Rich
Xx0C
.text
PEC2
.rsrc
,Xh($
ject1
ltFp.7

PECompact2

Listing 2.

Fragment programu

This program must be
run under Win32
CODE
DATA
.idata
.tls
.rdata
.reloc
.rsrc

.aspack

.adata

Listing 3.

Informacje

pochodzące z analizy statycznej

RCPT TO:<
...
MAIL FROM:<
DATA
X-Mailer
...
steal@###########
evil@########
smtp.#########

Rysunek 1.

Monitor plików

background image

hakin9 Nr 6/2007

www.hakin9.org

Atak

16

towych usług bankowych; posiadamy
jednak zdecydowanie za mało infor-
macji, by wydać jednoznaczny osąd.

Wciąż nie chcemy próbować

uruchamiać programu? Jest on spa-
kowany UPXem, widoczne są ciągi
programu WinRAR. Po wnikliwej
analizie możemy dojść do wniosku, że
złośliwy program zamierza rozpako-
wać z archiwum jakieś pliki. Także i ten
sposób działania jest bardzo popularny
– malware wyciąga pliki z archiwum,
dodaje odpowiednie klucze do rejestru
i uaktywnia się tuż po restarcie kompu-
tera. Dzięki temu na początku nie jest
uruchamiany żaden złośliwy kod.

Wprowadzenie

do analizy malware

Czego nam potrzeba? Zdecydowa-
nie powinniśmy uruchamiać złośli-
we oprogramowanie pod wirtualną
maszyną; z drugiej strony, w wielu
przypadkach malware wykrywa
maszynę wirtualną i nie uruchamia
się (przypadek ten omówimy za
chwilę). Dalej, przydadzą nam się
monitory plików i rejestru, sniffery,
wykrywacze rootkitów i wiele innych
narzędzi. Tuż przed uruchomieniem
programu zalecane jest zastosowa-
nie technik odzyskiwania danych
stosowanych w śledztwach kompu-
terowych. W wielu przypadkach zło-
śliwe oprogramowanie (szczególnie
to atakujące instytucje finansowe)
zawiera obrazy i logo imitujące bank
ofiary i niekiedy można wydobyć zeń
te dane. W miarę upływu czasu staje
się to coraz bardziej skomplikowane,
jako że dane tego rodzaju są nie-
zwykle subtelnie maskowane – nie
mamy ich podanych na tacy.

Po co korzystać

z maszyn wirtualnych

Zastosowanie maszyny wirtualnej
(ang. virtual machine, VM) przy
analizie malware pozwala na pracę
z różnymi systemami operacyjnymi,
ułatwia monitorowanie, pozwala na
przywrócenie wcześniejszego stanu
maszyny oraz zapewnia izolację od
właściwego systemu operacyjnego.

Metody wykrywania

maszyn wirtualnych

Maszyna wirtualna pozostawia w pa-
mięci ślady, posiada swój wirtualny
sprzęt i własne instrukcje. Jej ślady
znaleźć można wśród procesów
i w systemie plików, a także w reje-
strze. Analityk może także znaleźć
w pamięci pewne ciągi znaków,
względnie rozejrzeć się w różnych
miejscach struktur systemu opera-
cyjnego (bardzo ważne jest przyj-
rzenie się Tablicy Deskryptorów
Przerwań – ang. Interrupt Descriptor
Table
). W listopadzie 2004 Joanna
Rutkowska przedstawiła tak zwaną
czerwoną pigułkę, pozwalającą na
dość skuteczne wykrywanie maszyn
wirtualnych. Czerwona pigułka wy-
wołuje SIDT (ang. single machine
language instruction
, pojedynczą
instrukcję kodu maszynowego) i pa-
trzy na rezultaty; jako że położenie
IDT określane jest przez odpowiednie
reguły, pierwszy bajt zwracany przez
SIDT stwierdza, czy wykorzystywana
jest wirtualna maszyna. Jest to jed-
nak dopiero początek wykrywania
maszyny wirtualnej, a oprócz SIDT
można w tym celu wywołać SGDT
i SDLT. Wirtualne maszyny często
definiują też swój własny, wirtualny
sprzęt, który może zostać zidentyfi-
kowany. To wszystko, co chcieliśmy

tutaj powiedzieć o wykrywaniu wir-
tualnych maszyn – temat ten można
drążyć miesiącami, nie jest on jednak
przedmiotem niniejszego artykułu.

Co robić,

gdy malware wykrywa VM

W przypadkach takich, naszym zada-
niem jest obejście w jakiś sposób tej
detekcji. Czasami korzystamy z root-
kitów, by ukryć VM przed złośliwymi
programami (przykładowo, było to
niegdyś skuteczne wobec pakerów
Themida); ogółem staramy się uczy-
nić wirtualną maszynę niewidzialną.
VMware oferuje pewne nieudoku-
mentowane możliwości, które pozwa-
lają mu ukrywać się przed malware.
Istnieje także szereg innych metod
pozwalających na ukrywanie VM;
część z nich powstaje chałupniczo,
jako że ograniczenie wykrywalności
wciąż jest w kontekście analizy zło-
śliwych programów zagadnieniem
stosunkowo nowym.

Co nam potrzeba, by zacząć?

Przede wszystkim należy zaopatrzyć
się w kilka narzędzi:

BinText wydobywa łańcuchy zna-

ków i jest bardzo przydatny pod-
czas statycznej analizy malware
(tj. przed uruchomieniem czego-
kolwiek)

Filemon to jeden z wielu dostęp-

nych monitorów plików – obserwu-
je on działania na systemie plików.

Regmon monitoruje stan rejestru.

Programy sieciowe wykorzystuje
się do obserwacji generowanego
przez złośliwy program ruchu
sieciowego.

Bardzo przydatnym, w przypadku

pracy z rejestrem narzędziem jest

Rysunek 2.

Co mam zrobić?

���������������

�����������������������

���������������������������

�������������������

�������������������

����������

����������������

�������������

����������������

�����������������

�����������

Rysunek 3.

Cześć jestem Olly

background image

Podstawy badania malware

hakin9 Nr 6/2007

www.hakin9.org

17

także Regshot – pozwala on na
porównanie stanu rejestru np. tuż
przed i po iniekcji.

Dzięki Process Explorerowi mo-

żemy obserwować działające
w danej chwili procesy, opcjonal-
nie w czasie rzeczywistym,

• UPX – paker często stosowany

przez twórców malware,

OllyDBG – bardzo popularny de-

bugger.

Chcielibyśmy wiedzieć, jakie porty
są otwierane i co jest wysyłane
(prawdopodobnie skradzione poufne
informacje) z naszej maszyny. Waż-
ne jest także znajdowanie serwerów,
z którymi łączy się malware. W efek-
cie potrzebny jest nam szereg narzę-
dzi do obserwacji sieci, takich jak:

TCPView – wyświetla listę otwar-

tych portów,

TDIMon – obserwuje aktywność

w sieci,

• Ethereal, Snort bądź inny sniffer.

Procedury w analizie

złośliwych programów

Nigdy nie powinniśmy ryzykować za-
rażenia innych komputerów. Analiza
powinna mieć zatem miejsce w izolo-
wanym środowisku; popularnym roz-
wiązaniem są tu maszyny wirtualne.
Komputery do analizy bywają często
fizycznie odłączone od sieci, by
zapobiec przypadkowemu rozprze-
strzenianiu próbki; z drugiej strony,
w wielu przypadkach (gdy wykorzy-
stywana jest wirtualizacja) stosowana
jest jedynie separacja logiczna, co
może mieć poważne konsekwencje,

jeżeli złośliwy program zdoła obejść
wirtualizację i otrzymać nieuprawnio-
ny dostęp do systemu.

Nie należy nigdy zdradzać infor-

macji na temat malware osobom, do
których nie mamy zaufania. Nie do
uniknięcia jest kontrola dostępu. Pli-
ki powinny być przekazywane innym
analitykom w postaci skompresowa-
nej i zabezpieczonej hasłem, a tak-
że poprzez bezpieczne kanały ko-
munikacyjne. Najbardziej zalecane
jest, by po prostu nigdy nie rozsyłać
malware – nawet pojedyncza pomył-
ka może mieć tutaj poważne konse-
kwencje.

Ochrona przed podwójnym kliknię-

ciem – należy pamiętać, że pliki mogą
przez przypadek zostać uruchomione
przez kliknięcie na nie, w związku z
czym powinno się zmieniać rozsze-
rzenie na jakieś bezpieczne. Jest to
jeden z najpowszechniejszych błędów
wśród niedoświadczonych analityków
robaków.

Coś prostego

na początek

Otrzymaliśmy informację o nowym
problemie z bezpieczeństwem. Opi-
sano go tak, jak to widzimy poniżej:

[..] Każda osoba w naszym dziale

otrzymała e-mail z odnośnikiem do
strony banku, z którym firma współ-
pracuje. [..] Nikt nie spodziewał się
jakichkolwiek problemów.[..] Dwa
tygodnie później ukradziono nam
poufne informacje[..]. Nasze maszy-
ny mają zainstalowane wszystkie
dostępne łaty[..]

A zatem pracownik firmy otrzy-

muje e-mail z odnośnikiem do strony

banku. Załóżmy, że nie spodziewamy
się zastosowania spoofingu DNS;
istotą problemu jest tu więc zapewne
podatność serwisu banku na ataki
cross-site scripting bądź zezwalanie
na stosowanie przekierowań. Przykład
takiej sytuacji: www.our-good-bank-
site.com/?page=%68%74%74%70%3A/
/%77%77%77%2e%68%61
%63%6B
%2e%70%6C

Chcemy połączyć się z zaufa-

ną (w naszym przypadku) stroną,
w dodatku znacznie lepiej zabezpie-
czoną niż przeciętna; niemniej, podą-
żamy za jakimś innym odnośnikiem.
W przypadku luk typu XSS można
też po prostu przygotować tego typu
fałszywe strony, przeznaczone do
oszukania użytkownika.

Co dalej? Podążając za odnośni-

kiem, trafiamy na odpowiednio przy-
gotowaną stronę. Atak ten nie ma nic
wspólnego z phishingiem; strona ta
powoduje tylko nagłe zamknięcie
przeglądarki, my zaś zapominamy
wkrótce o całym incydencie. Dwa
tygodnie później następuje kradzież
poufnych informacji.

Analiza

Jest całkiem prawdopodobne, że
w niniejszym przypadku zastoso-
wano malware, wykorzystujące nie-
dawno odkrytą lukę. Przyjrzano się
podejrzanemu odnośnikowi; treść
przygotowanej pod nim strony WWW
jest zamaskowana, po jej zdekodo-
waniu stwierdzamy, iż atakowała ona
nieznaną wcześniej wadę przeglą-
darki. Wykorzystany w tym eksploicie
szelkod należał do kategorii pobierz
i uruchom, powodował pobranie ze
zdalnej maszyny pliku wykonywalne-
go. Przyszła pora na pobranie tego
pliku i rozpoczęciu nad nim pracy.

Analiza statyczna

Przede wszystkim ważne było osza-
cowanie możliwości działań złośliwe-
go programu, na podstawie zawartych
w nim ciągów znaków. Wydobyliśmy je
z pliku za pomocą narzędzia BinText.
Zastosowanie potem IDA Pro pozwo-
liło na stwierdzenie, iż plik spakowany
jest UPXem. Po rozpakowaniu pliku
wykonywalnego ponownie wykorzy-
stano BinText; tym razem byliśmy

Rysunek 4.

Co mamy w rejestrze?

background image

hakin9 Nr 6/2007

www.hakin9.org

Atak

18

w stanie wydobyć z programu znacz-
nie więcej interesujących informacji.

Łańcuchy znaków

SOFTWARE\Microsoft\Windows\
CurrentVersion\Run
Jeden z najpo-
pularniejszych wśród malware łań-
cuchów, pozwala uruchomić złośliwy
program zaraz po restarcie.

MAIL FROM Odkryliśmy, że dany

program wysyła e-maile zawierające
jakieś informacje. Póki co, nie wiemy
jednak nic o tym, jakie to informacje.

Znaleźliśmy również inne łańcu-

chy typowe dla malware, na przykład
nazwy plików przypominające te, któ-
re stosowane są przez różne rozwią-
zania antywirusowe. Do czego one słu-
żą? Cóż,w końcu jakieś procesy powin-

ny zostać zabite, nieprawdaż? Znaleźli-
śmy również podejrzane nazwy plików
w rodzaju go2hell2398728.exe – te z
kolei wykorzystywane są do propaga-
cji. Znaleziono także obrazek – logo
zaufanego banku, jednak suma kontro-
lna MD5 tego logo oraz zastosowane-
go obrazka, różniły się. Najprawdopo-
dobniej miało to na celu ominięcie pew-
nych zabezpieczeń.

Analiza dynamiczna

Znalezienie istotnych informacji po-
zwoliło nam na odgadnięcie sposobu
działania złośliwego programu: naj-
prawdopodobniej wykorzystuje on po-
łączenia sieciowe do wykradania po-
ufnych informacji z komputerów swo-
ich ofiar. Zamierzamy zaobserwować

ten proces, zachodzące zmiany w re-
jestrze i systemie plików, a także pro-
wadzić analizę ruchu sieciowego.

Wyjście programu Regshot zasy-

gnalizowało stworzenie kilku plików;
kilka innych dodano do plików współ-
dzielonych. Nastąpiło wiele zmian
w rejestrze. Analiza ruchu w sieci wy-
kazała, że wysyłane e-maile zawie-
rały treść losowo wybranych plików
dokumentów. Złośliwy program gene-
rował wiele ruchu, nikt jednak niczego
nie spostrzegł. W końcu leżący u pod-
staw problem został naprawiony.

Najważniejszą częścią analizy mal-

ware jest debugowanie. Debugowanie
złośliwego programu pomaga nam
zrozumieć szczegóły jego konstrukcji.
Z drugiej strony, dokładne zdebugowa-
nie takiej aplikacji wymaga czasu – ta
dziedzina bezpieczeństwa wymaga
niekonwencjonalnego podejścia. Jest
ono już obsługiwane przez narzędzia
automatycznej wizualizacji, IDA Pro po-
siada wiele wtyczek ulepszających je-
go funkcjonalność, jednak wciąż wiele
pozostało w tej sprawie do zrobienia.

Powyższy przykład analizy mal-

ware jest przykładem prostym. Zło-
śliwy program mógłby zainstalować
rootkit bądź wykrywać wirtualne ma-
szyny. W tym przypadku podstawo-
wym problemem było zastosowanie
nowo odkrytej luki, którą można było
wykorzystać na wiele sposobów.

Podsumowanie

Mam nadzieję, że niniejszy artykuł po-
mógł wam zrozumieć sposoby radzenia
sobie z malware. Zainteresowanych do-
kładniejszym poznaniem tego zagad-
nienia odsyłam do technik obchodze-
nia sygnatur programów antywiruso-
wych, ataków, maskowania, pakowa-
nia i wydobywania danych. Artykuł ten
nie zawiera żadnych informacji o stoso-
wanych przez malware rootkitach, nie
wspomina też o sposobach unikania fi-
rewalli. Warto pamiętać jednak, że wie-
dza na ten temat jest niezbędna. l

O autorze

Michał Bućko jest niezależnym bada-
czem z dziedziny bezpieczeństwa infor-
matycznego.
Kontakt do autora: sapheal@hack.pl

Rysunek 6.

Połączenia na talerzy(2)

Rysunek 5.

Połączenia na talerzu(1)

background image

Media Systems

Firma Media Systems oferuje Państwu

profesjonalny system CashBill.pl,

umożliwiający zarządzanie usługami

SMS Premium Rate w sektorze B2B i

B2C.

Oferujemy również szeroki wachlarz

usług mikropłatniczych, płatności

elektronicznych oraz indywidualne, de-

dykowane rozwiązania przy budowie

aplikacji mobilnych.

TTS Company Sp. z o.o.

Oprogramowanie

komputerowe -

sprzedaż, dystrybucja oraz import na

zamówienie. W ofercie programy au-

torstwa ponad stu firm z całego świa-

ta. Zapraszamy do współpracy - zostań

naszym klientem lub dostawcą.

www.OprogramowanieKomputerowe.pl

Zepter IT

Zepter IT to dynamicznie rozwijająca

się firma, specjalizująca się w realiza-

cji projektów informatycznych.

Oferujemy rozwiązania dla biznesu i

zarządzania takie jak systemy ERP

czyli zarządzanie zasobami firmy, pod-

noszenie jakości i obniżanie kosztów.

Zepter IT świadczy również usługi in-

ternetowe - serwisy www, e-commerce,

tworzenie aplikacji internetowych oraz

systemów zarządzania treścią.

www.zepterit.com

Pr

en

um

er

at

a

PR

O

Prenumerata PRO

ko

nt

ak

t d

o

na

s:

m

ar

ty

na

.z

ac

ze

k@

so

fta

w

re

.c

om

.p

l

ka

ta

rz

yn

a.

ju

sz

cz

yn

sk

a@

so

fta

w

re

.c

om

.p

l

te

l.

: 2

2

88

7

13

4

5

background image

www.hakin9.org

hakin9 Nr 6/2007

20

Obrona

T

o jednak wcale nie znaczy, że nie moż-
na ich kontrolować. Tak, jak petent musi
stać w kolejkach, chory łykać gorzkie leki,

a student zdawać egzaminy, tak internauta mu-
si zrezygnować ze swojej anonimowości (choćby
wyimaginowanej) i aby uzyskać dostęp do zaso-
bów naszej witryny musi się zarejestrować, poda-
jąc przynajmniej swój prawdziwy adres e-mail.

Trivia

Jako że celem artykułu jest wprowadzenie czy-
telnika do zagadnień związanych z uwierzytel-
nianiem w witrynach ASP.NET 2.0, powinniśmy
zacząć od najbardziej podstawowych terminów
związanych z tą problematyką. W informatyce
używa się dwóch osobnych terminów na określe-
nie weryfikacji tożsamości użytkownika i weryfika-
cji jego uprawnień. W pierwszym przypadku mówi
się o uwierzytelnianiu (ang. authentication), w dru-
gim o autoryzacji (ang. authorization). Czasem
w polskiej literaturze przedmiotu terminu uwierzy-
telnienie
używa się na określenie całego procesu
sprawdzania tożsamości i uprawnień. Wówczas
samo weryfikowanie tożsamości określane jest
jako autentykacja. Ale słowo autentykacja jest tak
brzydkie, że razi nawet tak niewrażliwe ucho, jak
moje. Stąd raczej staram się go unikać.

Należy też wyraźnie odróżniać dwa procesy

uwierzytelniania, z jakimi mamy do czynienia
w aplikacjach sieciowych. Pierwszy z nich ma

Uwierzytelnianie

i autoryzacja w ASP.NET 2.0

Jacek Matulewski, Sławomir Orłowski

stopień trudności

Jak wiadomo, urzędom nie są potrzebni obywatele, szpitale

najlepiej funkcjonują bez pacjentów, a profesorom studenci

tak naprawdę tylko przeszkadzają. Zgodnie z tą zasadą witryny

internetowe najbezpieczniejsze są wówczas, gdy pracują off-

line. Niestety smutna rzeczywistość zmusza administratorów do

pogodzenia się z obecnością użytkowników.

Z artykułu dowiesz się

• o najpopularniejszym sposobie uwierzytelniania

(autentykacji) i autoryzacji stosowanego w wi-
trynach ASP.NET, a wiec mechanizmu Forms.
Zaczniemy od prostego rozwiązania ręcznej
roboty
, w którym sami będziemy weryfikować
login i hasło użytkownika na podstawie danych
przechowywanych w zwykłej desktopowej bazie
danych, aby kolejno wprowadzić mechanizmy
udostępniane przez ASP.NET 2.0. Skończymy
na w pełni zautomatyzowanym uwierzytelnianiu,
korzystającym z bazy danych SQL Server, w któ-
rym ilość kodu, jaki musimy wprowadzić ręcznie
będzie naprawdę znikoma,

• artykuł może być traktowany także jako porad-

nik migracji z ręcznego do automatycznego
sposobu uwierzytelniania i autoryzacji.

Co powinieneś wiedzieć

• ogólne pojęcie o programowaniu dla platformy

.NET, najlepiej w języku C#.

background image

Uwierzytelnianie i autoryzacja w ASP.NET 2.0

hakin9 Nr 6/2007

www.hakin9.org

21

miejsce na styku aplikacji sieciowej
i systemu operacyjnego serwera, na
którym jest ona uruchomiona oraz
zainstalowanego na nim oprogramo-
wania. Dobrym przykładem może być
próba uzyskania dostępu do bazy da-
nych wymagającej podania hasła lub
próba zapisu do pliku, który wymaga
odpowiednich uprawnień. Natomiast
drugą sprawą, choć nie pozostającej
bez związku z poprzednią, jest auto-
ryzowanie użytkownika – internauty,
który stara się uzyskać dostęp do
witryny (logowanie do aplikacji siecio-
wej). Uwierzytelnienie oznacza w tym
przypadku, że to aplikacja sieciowa
sprawdza tożsamość użytkownika
i ewentualne udostępnia mu swoje
zasoby i pośrednio zasoby systemu,
do jakich ona sama ma dostęp. Za-
tem w pierwszym przypadku weryfi-
kowana jest aplikacja i jej uprawnienia
przez system, a w drugim aplikacja
weryfikuje użytkownika. To proste
rozróżnienie zaciera się jednak nie-
raz w praktyce, w przypadkach gdy
aplikacja pełni jedynie rolę medium
między użytkownikiem łączącym się
z zewnątrz, a zasobami serwera lub
gdy do uwierzytelnienia w witrynie
stosuje się system kont zdefinio-
wanych w systemie operacyjnym
serwera.

Aby zwiększyć bezpieczeństwo

uwierzytelnienia wykorzystamy me-
chanizm Forms oferowany przez
ASP.NET. Zakłada on, że informa-
cje o kontach znajdują się w bazie
danych, a tożsamość logowanego
użytkownika sprawdzana jest w ob-
rębie samej aplikacji sieciowej. Oczy-
wiście ASP.NET daje nam do wyboru
więcej mechanizmów wspierających
uwierzytelnianie użytkowników przez
aplikacje sieciowe. Obok Forms ma-
my tryb Windows, w którym witryna
korzysta z systemu logowania do sys-
temu operacyjnego Windows serwe-
ra. Wymaga on zatem założenia dla
każdego użytkownika aplikacji siecio-
wej osobnego konta w systemie Win-
dows, kontrolującym serwer WWW
i to w zasadzie właśnie Windows jest
odpowiedzialny za cały proces uwie-
rzytelniania i autoryzacji. Dzięki temu
możemy wykorzystać cały system
poziomów uprawnień w stosunku do

zalogowanego użytkownika, jaki ofe-
ruje Windows, a zatem ograniczenia
w dostępie do katalogów i plików oraz
kontrolę dostępu do usług systemo-
wych (m.in. dostępu do bazy danych).
Ten sposób weryfikacji sprawdza się
w aplikacjach sieciowych dla niewiel-
kiej grupy użytkowników, którym udo-
stępniamy ważne zasoby serwera,
ale nie nadaje się do witryn, w których
oczekujemy rejestracji sporej ilości in-
ternautów. Jest również rozwiązanie
oparte o Microsoft Password, ale nie
stało się ono zbyt popularne. Należy
również wspomnieć, że nowe mecha-
nizmy uwierzytelniania wprowadzone
zostały w bibliotekach dodanych do
platformy .NET 3.0.

Naszym celem jest zaprojektowa-

nie witryny ASP.NET 2.0, która korzy-
stając z bazy danych przeprowadzać
będzie uwierzytelnianie użytkowni-
ków – a mówiąc językiem bliższym
codzienności – pozwalać będzie na
zalogowanie użytkowników w witry-
nie. A priori dopuszczamy trzy grupy
użytkowników: posiadający dostęp do
wszystkich sfer witryny administrato-
rzy, zwykli użytkownicy, którzy mają
dostęp do wydzielonej sfery chronio-
nej i osoby niezarejestrowane (ano-
nimowe), których uprawnienia ogra-
niczają się do oglądania niezabez-
pieczonych stron. Rejestrując się w
witrynie można awansować z oso-
by anonimowej na użytkownika. Ad-

Listing 1.

Surowa metoda przeprowadzająca proces logowania

protected void Button1_Click
(object sender, EventArgs e)
{
Uzytkownik uzytkownik=
CzytajDaneUzytkownikaZBazy(TextBox1.Text);
if (uzytkownik==null)
{
Label1.Text =
"Podany e-mail nie został jeszcze użyty do rejestracji";
Label1.ForeColor = System.Drawing.Color.Red;
return;
}
//Sprawdzanie hasła
if (TextBox2.Text == uzytkownik.Haslo)
{
Label1.Text = "Dane poprawnie odczytane z bazy";
Label1.ForeColor = System.Drawing.Color.Green;
Label2.Text =
uzytkownik.Imie + " " + uzytkownik.Nazwisko;
Label3.Text = uzytkownik.Grupa;
TextBox1.Enabled = false;
TextBox2.Enabled = false;
Button1.Enabled = false;
Button2.Enabled = false;
}
else
{
Label1.Text = "Niepoprawne hasło";
Label1.ForeColor = System.Drawing.Color.Red;
}
}

Listing 2.

Element określający sposób działania mechanizmu

uwierzytelniania Forms

<

authentication

mode

=

"Forms"

>

<

forms

name

=

"Logowanie"

loginUrl

=

"Logowanie.aspx"

protection

=

"All"

timeout

=

"10"

path

=

"/"

/

>

<

/

authentication

>

background image

hakin9 Nr 6/2007

www.hakin9.org

Obrona

22

ministratorzy mogą być zaś dopisy-
wani do bazy danych jedynie ręcznie.
Zwiększa to bezpieczeństwo witryny,
a przy okazji upraszcza moduł służą-
cy do rejestracji. Podziałowi na grupy
odpowiadać będzie struktura katalo-
gów witryny. Najbardziej chronionym
miejscem będzie katalog Private – do
niego zdalny dostęp będą mieli tylko
administratorzy. Drugim katalogiem
będzie Protected, który będą mogli

przeglądać zarejestrowani użytkow-
nicy witryny. I wreszcie katalog Public
to miejsce, którego zawartość mogą
przeglądać wszyscy, także osoby nie-
zarejestrowane.

Dobry początek

Na CD w katalogu o nazwie
Uwierzytelnianie/0 znajduje się
projekt witryny, od której zaczniemy
nasze manewry. Witryna wyposa-

żona jest między innymi w strony
Rejestracja.aspx i Logowanie.aspx
(Rysunek 1). Pierwsza z nich, korzy-
stając z prostego formularza zbiera
dane o użytkowniku (imię, nazwisko,
adres e-mail, hasło, itd.) i zapisuje je
do bazy danych ulokowanej w pod-
katalogu App_Data. Dane uzupeł-
niane są o datę rejestracji i adres
IP komputera, z którego korzystał
internauta podczas rejestracji. Adres
e-mail używany jest w witrynie jako
identyfikator użytkownika (login), co
generalnie jest dobrym pomysłem,
bo ułatwia jego zapamiętanie. Stro-
na Logowanie.aspx przeprowadza
natomiast namiastkę uwierzytelnia-
nia użytkowników tzn. sprawdza, czy
login (adres e-mail) i hasło wpisane
w polach edycyjnych formularza pa-
sują do wpisów znalezionych w ba-
zie danych. W zasadzie cała logika
tej strony skupiona jest w metodzie
zdarzeniowej

Button1 _ Click

związa-

nej z kliknięciem przycisku Zaloguj.
W niej tworzone jest zapytanie SQL
przesyłane do bazy danych i to ona
sprawdza hasło odczytane z bazy,
z tym podanym przez użytkownika
(Listing 1). Przy przesyłaniu danych
z formularzy do serwera zastosowa-
ny został mechanizm walidacji zapo-
biegający wysyłaniu danych, które
nie spełniają określonych przez nas
kryteriów (np. adres e-mail powinien
mieć znak @ i przynajmniej jedną
kropkę). Dla uproszczenia, pomija-
my możliwość usunięcia użytkow-
nika z bazy lub edycji jego danych.
W zamian za to zadbaliśmy o system
przypominania haseł – hasło może
być wysłane na adres e-mail wyko-
rzystany podczas rejestracji zapomi-
nalskiego użytkownika (odpowiada
za to metoda

Button2 _ Click

w pliku

Logowanie.aspx.cs).

Dane o użytkownikach przecho-

wywane są w zwykłej desktopowej
bazie danych Access. Równie do-
brze mogłyby być umieszczone w
SQL Server 2005 lub nawet w pliku
XML. Jednak to, gdzie przechowu-
jemy dane o użytkownikach nie ma
większego znaczenia. Co prawda
zwykle mówi się, że Access służyć
może w obsłudze co najwyżej śred-
niej wielkości witryn, a SQL Server

Rysunek 2.

Środowisko Visual Web Developer

Rysunek 1.

Początkowa postać strony rejestracji użytkowników

background image
background image

hakin9 Nr 6/2007

www.hakin9.org

Obrona

24

nawet do największych, ale trzeba
być wielkim optymistą, żeby marzyć
o tym, że witryna szybko zdobędzie
taką popularność, że ilość użytkowni-
ków przekroczy pojemność bazy Ac-
cess. Poza tym migracja z Access do
SQL Server to pestka, a obsługa pli-
ków .mdb przez wbudowane w sys-
tem sterowniki i bibliotekę ADO.NET
wydaje się chyba nawet szybsza.

Witryna wyposażona jest w trzy

katalogi: Private, Protected i Public.
Każdy z nich zawiera stronę De-
fault.aspx
z prostym komunikatem
typu Strefa chroniona czy Strefa pu-
bliczna
. W katalogu głównym znajdu-
ją się natomiast strony Private.aspx
i Protect.aspx o podobnej zawarto-

ści. Wszystkie strony witryny korzy-
stają ze wspólnego wzorca o niewy-
szukanej nazwie Wzorzec.master.
Strona domyślna witryny (plik De-
fault.aspx
w katalogu głównym) za-
wiera jedynie linki do poszczegól-
nych katalogów oraz do stron reje-
stracji i logowania. Jak widać, witry-
na ograniczona jest do niezbędnego
minimum – nie ma w niej także żad-
nych upiększaczy w stylu kaskado-
wych arkuszy stylów czy AJAX. W
całej stronie konsekwentnie stoso-
wane jest oddzielenie kodu C# (pliki
.aspx.cs) od szablonów stron HTML
(pliki .aspx).

Dane, jakie pobierane są z bazy

danych, przechowywane są w obiek-

tach klasy

Uzytkownik

, która poza

polami

Imie

,

Nazwisko

,

Email

,

Haslo

i

Grupa

posiada również metodę usu-

wającą z tych pól apostrofy, które
nie powinny swobodnie pałętać się
po budowanym z pomocą tych da-
nych zapytaniu SQL. Baza danych
zawiera jedną tabelę Użytkownicy,
której pola odpowiadają polom kla-
sy

Użytkownik

(plus adres IP i da-

ta rejestracji). Wszystkie pola ba-
zy danych są wymagane. Kluczem
głównym tabeli jest adres e-mail, co
zwalnia nas z obowiązku pilnowa-
nia, aby używane do rejestracji ad-
resy e-mail były unikalne – baza da-
nych dopilnuje tego za nas. Użyt-
kownicy
są domyślnie zapisywani

Listing 3.

Tworzenie biletu, czyli pliku cookie przechowywanego przez przeglądarkę zalogowanej osoby

protected

void

Button1_Click

(

object

sender

,

EventArgs

e

)

{

FormsAuthentication.Initialize(); //Inicjacja mechanizmy uwierzytelniania Forms

Uzytkownik

uzytkownik

=

CzytajDaneUzytkownikaZBazy

(

TextBox1

.

Text

);


if

(

uzytkownik

==

null

)

{

Label1

.

Text

=

"Podany e-mail nie został jeszcze użyty do rejestracji"

;

Label1

.

ForeColor

=

System

.

Drawing

.

Color

.

Red

;

return

;

}

//Sprawdzanie hasła

if

(

TextBox2

.

Text

==

uzytkownik

.

Haslo

)

{

Label1

.

Text

=

"Dane poprawnie odczytane z bazy"

;

Label1

.

ForeColor

=

System

.

Drawing

.

Color

.

Green

;

Label2

.

Text

=

uzytkownik

.

Imie

+

" "

+

uzytkownik

.

Nazwisko

;

Label3

.

Text

=

uzytkownik

.

Grupa

;

TextBox1

.

Enabled

=

false

;

TextBox2

.

Enabled

=

false

;

Button1

.

Enabled

=

false

;

Button2

.

Enabled

=

false

;

//Tworzymy bilet

FormsAuthenticationTicket bilet = new FormsAuthenticationTicket(

1, //wersja biletu

uzytkownik.Email, //e-mail użytkownika

DateTime.Now, //data i godzina założenia pliku cookie

DateTime.Now.AddMinutes(30), //czas wygaśnięcia

false, //czy cookie ma być trwałe

FormsAuthentication.FormsCookiePath); //adres strony

//Umieszczenie biletu na zdalnym komputerze użytkownika

HttpCookie cookie = new HttpCookie(

FormsAuthentication.FormsCookieName,

FormsAuthentication.Encrypt(bilet));

Response.Cookies.Add(cookie);

}

else

{

Label1

.

Text

=

"Niepoprawne hasło"

;

Label1

.

ForeColor

=

System

.

Drawing

.

Color

.

Red

;

}

}

background image

Uwierzytelnianie i autoryzacja w ASP.NET 2.0

hakin9 Nr 6/2007

www.hakin9.org

25

do grupy Użytkownicy (zob. metoda

DodajUzytkownikaDoBazy

z pliku Reje-

stracja.aspx.cs).

Jednak prawda jest taka, że w tej

postaci witryny cały proces uwierzy-
telniania przeprowadzony na stronie
Logowanie.aspx można o kant sto-
łu potłuc, bo wszystkie katalogi i stro-
ny witryny są i tak dostępne dla każ-
dej osoby, która na nią zabłądzi. Na-
szym najpilniejszym zadaniem jest za-
tem zmiana tego stanu rzeczy i wpro-
wadzenie uwierzytelniania z prawdzi-
wego zdarzenia. Można to przeprowa-
dzić w dwojaki sposób. Pierwszy, kon-
tynuujący filozofię ręcznego budowa-
nia systemu uwierzytelniania, to po
udanym logowaniu zapisać w zmien-
nych sesji dane potrzebne do identy-
fikacji użytkownika (choćby tylko jego
login) i sprawdzać ich obecność na in-
nych stronach witryny. Można rów-
nież stworzyć plik cookie na kompute-
rze internauty, którego obecność bę-
dzie świadectwem pomyślnej weryfi-
kacji jego tożsamości. My skorzysta-
my z tego drugiego sposobu. Co wię-
cej, wykorzystamy do tego mechani-
zmy wbudowane w ASP.NET 2.0 i w
ten sposób wejdziemy na ścieżkę, któ-
ra zaprowadzi nas na końcu artyku-
łu do całkowitego zautomatyzowania
procesu uwierzytelniania, w którym
cały wpisany wcześniej kod okaże się
zbędny. Jednak dzięki niemu zrozu-
miemy, na czym polega uwierzytelnia-
nie i jak jest realizowane w gotowych
do użycia kontrolkach ASP.NET 2.0.

Projekt witryny został przygoto-

wany w zintegrowanym środowisku
programistycznym

Visual

Web

Developer 2005 Express Edition
(Rysunek 2). To darmowe narzędzie,
oferowane przez Microsoft, pozwala
na sprawne projektowanie witryn sie-
ciowych, korzystających z platformy
.NET w wersjach 2.0 i 3.0 (to drugie
po zainstalowaniu platformy .NET 3.0
w systemie). Jednak w obu wersjach
platformy .NET wykorzystywane
są i tak te same biblioteki ASP.NET
2.0 i ADO.NET 2.0. Proponuję, aby
z tego samego środowiska skorzy-
stał także Czytelnik przy dalszej roz-
budowie witryny. Można je ściągnąć
ze strony http://msdn.microsoft.com/
vstudio/express/downloads/.

Uwierzytelnianie

z użyciem mechanizmu

Forms

Uwierzytelnienie użytkownika, ja-
kie zastosowaliśmy na stronie Lo-
gowanie.aspx
, polega na weryfika-
cji hasła podanego przez internautę
przez porównanie go z hasłem prze-
chowywanym w bazie danych. Jest
to całkiem niezły sposób w przypad-
ku takiej witryny, jak nasza, na któ-
rej nie przechowujemy żadnych po-
ufnych danych, nie mamy do czynie-
nia z pieniędzmi, przesyłaniem nu-
merów kart kredytowych i możemy
liczyć na to, że potencjalni użytkow-
nicy pozbawieni są bezinteresow-
nej złośliwości (jeżeli tacy w ogó-
le istnieją). W projekcie znajdują-
cym się na CD zaimplementowa-
na jest ta część mechanizmu, któ-
ra bezpośrednio współpracuje z ba-
zą danych – dopisuje nowych użyt-
kowników i weryfikuje hasła zareje-
strowanych osób. Drugą część te-
go mechanizmu, a więc kontrolę do-
stępu do stron i katalogów witryny
zrealizujemy korzystając z mecha-

nizmu Forms zaimplementowane-
go w ASP.NET. Dzięki niemu można
nie tylko rozciągnąć uwierzytelnie-
nie (lub jak ktoś woli autentykację)
na inne strony witryny, ale również
w prosty sposób autoryzować do-
stęp do poszczególnych jej części.
Mechanizm uwierzytelniania Forms
korzysta z pliku cookie na kompute-
rze, z którego loguje się internauta.
Pozwala to, choć tego nie wykorzy-
stamy w tym przykładzie, na pozo-
stawienie cookie na dłużej niż czas
sesji. Dzięki temu możemy pozwo-
lić użytkownikowi uniknąć logowa-
nia przy każdym odwiedzaniu na-
szej witryny – informacje o użytkow-
niku mogą być odczytane wprost z
owego pliku cookie, czyli w języku
uwierzytelniania Forms – z biletu.
Tu postąpimy jednak inaczej – plik
cookie nie będzie trwały i wygaśnie
wraz z sesją użytkownika w aplika-
cji ASP.NET.

W podoknie Solution Explorer Vi-

sual Web Developera klikamy dwu-
krotnie plik Web.config i odnajduje-
my w nim element

authentication

,

Listing 4.

Element wstawiany do pliku Web.config zapisanym

w katalogu Protected

<

?xml version=

"1.0"

?

>

<

configuration

>

<

appSettings/

>

<

connectionStrings/

>

<

system.web

>

<authorization>

<deny users="?" />

<allow users="*" />

</authorization>

<

/system.web

>

<

/configuration

>

Listing 5.

Klasa chronionej strony (plik Protected.aspx.cs)

public

partial

class

Protected

:

System

.

Web

.

UI

.

Page

{

//kontrola biletu

if

(!

User

.

Identity

.

IsAuthenticated

)

Response

.

Redirect

(

"Logowanie.aspx?ReturnUrl=Private.aspx"

);

}

Listing 6.

Czy jest bezpiecznie?

protected

void

Page_Load

(

object

sender

,

EventArgs

e

)

{

//kontrola biletu i grupy

if

(!

User

.

Identity

.

IsAuthenticated

||

!User.IsInRole("Administratorzy")

)

Response

.

Redirect

(

"Logowanie.aspx?ReturnUrl=Private.aspx"

);

}

background image

hakin9 Nr 6/2007

www.hakin9.org

Obrona

26

który w domyślnych ustawieniach
wskazuje na uwierzytelnianie ty-
pu Windows i ma następującą pro-
stą postać:

<authentication mode="Windows"/>

Modyfikujemy ten element, zmienia-
jąc tryb uwierzytelnienia na Forms
(Listing 2). Użyty podelement

forms

zawiera ustawienia dotyczące tego
typu uwierzytelnienia. Jego atry-
buty mają następujące znaczenie:

loginUrl

– definiuje adres URL, do

którego następuje przekierowanie
w przypadku braku ważnego biletu
uwierzytelnienia,

protection

– okre-

śla sposób szyfrowania pliku cookie
i sprawdzania, czy jego treść nie
została przechwycona (wartość All
oznacza, że cookie jest zarówno
szyfrowany, jak i weryfikowana jest
jego treść),

timeout

– czas w mi-

nutach, po którym ważność biletu
wygasa, i wreszcie

path

to ścieżka

do pliku cookie, jaki zapisany zo-
stanie na komputerze logującego
się użytkownika. Jest jeszcze atry-
but

slidingExpiration

, który jeżeli

ustawiony jest na

false,

dodatkowo

ogranicza żywotność biletu.

Przechodzimy teraz do edycji

pliku Logowanie.aspx.cs. Spraw-
dzamy, czy w nagłówku pliku
znajduje się deklaracja przestrzeni
nazw zawierającej klasy związa-
ne z uwierzytelnianiem tzn.

using

System.Web.Security;

.

W metodzie

Button1 _ Click,

związanej z przyciskiem Zaloguj,
umieszczamy dodatkowe polecenia
tworzące bilet, jaki wręczany jest
logowanej osobie (Listing 3). Bez-
pieczeństwo aplikacji zapewnia fakt,
że jej połączenie z bazą danych jest
całkowicie niezależne od uwierzy-
telnienia użytkownika. Dzięki temu
może ona samodzielnie zalogować
się do serwera Access i sprawdzić
listę zarejestrowanych użytkowników
i ich haseł. W ten sposób to aplikacja
w pełni kontroluje, jakie dane będą
użytkownikowi udostępnione.

Metoda

Button1 _ Click

zawiera

teraz całą procedurę uwierzytelnia-
nia. Na początku odczytywane są
te rekordy tabel bazy danych, w któ-

rych znajduje się podany przez in-
ternautę adres e-mail (realizuje to
pomocnicza metoda

CzytajDaneUzyt

kownikaZBazy

). Jeżeli hasło znajdują-

ce się w bazie danych pasuje do te-
go podanego w formularzu, metoda
przystępuje do przygotowania pliku
cookie – biletu. Obecność biletu bę-
dzie sprawdzana przy próbie dostę-
pu do stron witryny.

Autoryzacja

– strefa chroniona

Teraz przystąpmy do tworzenia chro-
nionej strefy witryny, czyli tej prze-
znaczonej dla wszystkich zalogowa-
nych użytkowników. W tym celu w
podoknie Solution Explorer zazna-
czamy podkatalog Protected i z je-
go menu kontekstowego wybiera-
my pozycję Add New Item. W oknie
o tym samym tytule zaznaczamy po-
zycję Web configuration file. W efek-
cie powstanie w tym katalogu plik
Web.config. Definiujemy w nim ele-
ment

authorization

, który zablokuje

dostęp do tej części witryny użytkow-
ników anonimowych (Listing 4). Jest
to równoznaczne z wymuszeniem
zalogowania na stronie wskaza-
nej przez element

authentication

w

głównym pliku konfiguracyjnym (zob.
Listing 2), a więc na stronie Logowa-
nie.aspx
. Dostęp do katalogu Protec-
ted
mają mieć wszyscy użytkownicy
(element

allow

zawiera atrybut

users

równy * oznaczający wszystkich
użytkowników), którzy nie są anoni-
mowi (element

deny

zawiera atrybut

users

równy ?, co oznacza użytkow-

ników anonimowych tj. niezalogo-
wanych). Ważne jest ustawienie ko-
lejności atrybutów – pierwszy powi-

nien być

deny

, a dopiero po nim

allow

– gwiazdka oznacza więc w zasadzie
nie tyle wszystkich użytkowników, co
wszystkich pozostałych.

Można bardziej wybiórczo po-

traktować autoryzację, umieszcza-
jąc zamiast gwiazdki w elemencie

allow

listę użytkowników z kolejnymi

loginami wymienionymi po przecin-
ku. Taką samą listę można również
umieścić w elemencie

deny

. Jednak

w przypadku rzeczywistych witryn
z otwartym dostępem takie rozwią-
zanie stosuje się rzadko, bo jest zwy-
czajnie niepraktyczne przy większej
ilości użytkowników.

Dzięki obecności znacznika

authorization

w pliku Web.config z

katalogu Protected, dostęp do stron
w tym katalogu jest możliwy tylko w
przypadku posiadania ważnego bile-
tu (pliku cookie). Jeżeli go nie mamy,
zostaniemy skierowani do kasy tj. na
stronę Logowanie.aspx. Sprawdźmy
to uruchamiając aplikację (F5) i bez
logowania przechodząc do katalogu
Protected. Zamiast jego zawartości
zobaczymy stronę logowania (oczy-
wiście jeżeli wszystko działa jak na-
leży). Jeżeli jednak teraz zalogujemy
się i dopiero wtedy przejdziemy do
chronionego katalogu, to zobaczymy
stronę Protected/Default.aspx.

Zwróćmy także uwagę, że przy

wymuszonym przejściu do strony logo-
wania do adresu strony dodawany jest
parametr

ReturnUrl,

w którym zapisa-

ny jest względny adres strony, do której
użytkownik chciał się dostać np. http://
localhost:1263/Uwierzytelnianie/
Logowanie.aspx?ReturnUrl=%2fU-
w i e r z y t e l n i a n i e % 2 f P r o t e c t e -
d%2fDefault.aspx.
Dzięki temu, po

Rysunek 3.

Tożsamość użytkownika widoczna w nagłówku każdej strony

background image
background image

hakin9 Nr 6/2007

www.hakin9.org

Obrona

28

prawidłowym zalogowaniu można
wymusić automatyczny powrót na
tę stronę. Wystarczy do metody

Button1 _ Click

w pliku Logowa-

nie.aspx.cs po utworzeniu biletu do-
dać polecenie:

if (Request.Params["ReturnUrl"] !=
null) Response.Redirect(Request.Params[
"ReturnUrl"]);

Wykorzystując mechanizm uwie-
rzytelnienia Forms, można również
chronić dostęp do pojedynczych
stron, nie znajdujących się w chro-
nionym katalogu. Należy wówczas
samodzielnie sprawdzić obecność
biletu, dodając do metody

Page _ Load

polecenie z Listingu 5. Zróbmy to na
stronie Protected.aspx, która powin-
na znajdować się w katalogu głów-
nym projektu dostępnego na CD.

W metodzie

Page _ Load

spraw-

dzamy wartość własności

User.Id

entity.IsAuthenticated

. W istocie

oznacza to sprawdzenie obecności
cookie/biletu na zdalnym kompute-
rze osoby łączącej się z naszą apli-
kacją. Jeżeli go nie ma, uznajemy, że
użytkownik nie jest zalogowany i zo-
staje natychmiast przeniesiony na
stronę logowania (proszę zwrócić
uwagę, że dodajemy parametr po-
zwalający na automatyczny powrót
po zalogowaniu). Ten sposób spraw-
dzenia będzie działał zarówno w
przypadku trwałych, jak i czasowych
plików cookie. Działanie tej metody
można sprawdzić ustawiając stronę
Protected.aspx jako stronę startową
w oknie projektu, lub wpisując jej ad-
res do przeglądarki po uruchomieniu
aplikacji.

Korzystając z tego samego spo-

sobu odczytywania biletu, możemy
w szablonie wzorca Wzorzec.master
umieścić element wyświetlający ad-
res e-mail zalogowanej osoby jak na
Rysunku 3 (zob. projekt w katalogu
Uwierzytelnianie/1 na CD).

Zanim przejdziemy dalej, chcia-

łbym zwrócić uwagę Czytelnika na
fakt, że w pliku Global.asax moż-
na utworzyć metody do następują-
cych zdarzeń obiektu

Application

:

AuthenticateRequest

,

AuthorizeRe

quest

,

PostAuthenticateRequest

i

PostAuthorizeRequest

. Mogą być one

bardzo pomocne, jeżeli chcemy np.
centralnie monitorować proces uwie-
rzytelniania.

Autoryzacja

– wykorzystanie

mechanizmu ról

Teraz zajmijmy się strefą prywat-
ną (katalog Private), do której do-

stęp mają tylko administratorzy wi-
tryny. Przede wszystkim musimy
stworzyć konto administratora w
bazie danych. W bazie projektów
dostępnych na CD jest już konto z
adresem root@hakin9.org i hasłem
hasło, ale użytkownik może dodać
własne lub po prostu zmienić na-
zwę grupy jednego z zarejestro-
wanych użytkowników (z Użytkow-

Rysunek 4.

Kontrolka sieciowa Login i jego podręczna lista zadań

Rysunek 5.

Interfejs pozwalający na zarządzanie kontami w bazie SQL Server

background image

Uwierzytelnianie i autoryzacja w ASP.NET 2.0

hakin9 Nr 6/2007

www.hakin9.org

29

nicy na Administratorzy). Dyspo-
nując kontem administratora, któ-
re, jak i wszystkie inne konta w ba-
zie, ma unikalny login (adres e-ma-
il) moglibyśmy przeprowadzić auto-
ryzację na jego podstawie. Wystar-
czyłoby utworzyć w katalogu Priva-
te
plik konfiguracyjny Web.config z
elementem:

<authorization>
<allow users="root@hakin9.org" />
<deny users="*" />
</authorization>

Takie rozwiązanie sprawdzi się, gdy
witryna posiada jednego, względ-
nie kilku administratorów. My jed-
nak pójdziemy o krok dalej i skorzy-
stamy z wbudowanego w ASP.NET
i ADO.NET mechanizmu ról. Tak na-
prawdę będzie to nasz drugi krok w
kierunku pełnej automatyzacji uwie-
rzytelniania. Mechanizm ról, z którego
korzystać będziemy w dalszej części
artykułu, wymaga zainstalowanego
i dostępnego dla ASP.NET serwera
SQL Server 2005+Express Edition.

Zacznijmy od włączenia mecha-

nizmu zarządzania rolami. Do pli-
ku konfiguracyjnego witryny (plik
Web.config w katalogu głównym) do-
dajemy następujący element:

<roleManager
enabled="true"
cacheRolesInCookie="true" >
</roleManager>

Mechanizm ról korzysta z automa-
tycznie tworzonej bazy danych ulo-
kowanej w pliku App_Data/ASP-
NETDB.MDF.
Powinniśmy umie-
ścić w niej definicje ról i przypisać
do nich poszczególnych użytkowni-
ków. Każdy użytkownik może nale-
żeć do kilku grup, z których każ-
da może decydować o innego ty-
pu uprawnieniach. Jednak w na-
szym przypadku, w którym Admi-
nistratorzy mają wszystkie upraw-
nienia zwykłych Użytkowników,
sprawdzi się system, w którym każ-
dy użytkownik może należeć tyl-
ko do jednej grupy. Jej nazwa by-
ła zapisywana w naszej podstawo-
wej bazie danych. Oznacza to, że

informacje te powinny teraz zostać
skopiowane do bazy danych wyko-
rzystywanej przez mechanizm ról.
Proponuję zrobić to półautoma-
tycznie. Niech aplikacja sama roz-
budowuje drzewo ról i przypisa-
nych do nich użytkowników, w mia-
rę ich logowania się do witryny. W
tym celu musimy jeszcze raz wró-
cić do strony logowania i do metody

Button1 _ Click

dwa polecenia two-

rzące nową rolę (o ile ta już nie ist-
nieje) i przypisujące do niej logo-
wanego właśnie użytkownika (o ile
ten już tam nie jest zapisany). Na-
zwy ról będą identyczne z nazwami
grup, a więc Użytkownicy i Admini-
stratorzy. Poniższe polecenia nale-
ży umieścić tuż po poleceniach za-
pisujących bilet:

if (!Roles.RoleExists(uzytkownik.Grupa
)) Roles.CreateRole(uzytkownik.Grupa);
if (!Roles.IsUserInRole(uzytkownik.Ema
il,uzytkownik.Grupa))
Roles.AddUserToRole(uzytkownik.Email,uz
ytkownik.Grupa);

Zwróćmy uwagę, że rola, w prze-
ciwieństwie do naszego biletu, nie
jest czymś tymczasowym. Role
i przypisani do nich użytkownicy po-
zostają zapisani w bazie do czasu,
aż zostaną z niej usunięci. Poza tym
informacje o rolach przechowywane
są po stronie serwera, a bilet po stro-
nie klienta.

Teraz zajmijmy się ogranicze-

niem dostępu do katalogu Private.
Tworzymy w nim plik Web.config i,
podobnie, jak zrobiliśmy wcześniej
w katalogu Protected, dodajemy do
niego element

authorization

. Jed-

nak tym razem uprawnienia będzie-
my kontrolować nie na poziomie lo-
ginów, ale na poziomie grup, do któ-
rych należą użytkownicy:

<authorization>
<deny users="?" />
<allow

roles=

"Administratorzy" />

<deny users="*" />
</authorization>

Jak czytać powyższy element? Przede
wszystkim nie wpuszczamy anonimo-
wych (niezalogowanych) internautów.
Wpuszczamy za to administratorów, ale
nikogo poza nimi.Podobnie jak wcze-
śniej, możemy przeprowadzić autoryza-
cję samodzielnie. W katalogu projektu
znajdzie Czytelnik plik Private.aspx.cs
związany ze stroną Private.aspx, do
którego należy dodać polecenia po-
dobne do widocznego w Listingu 5,
ale uzupełnione o weryfikację roli po-
siadacza biletu (Listing 6).

Warto także zajrzeć do pli-

ku wzorca z projektu w katalogu
Uwierzytelnianie/2 na CD, żeby zo-
baczyć, jak korzystając z tych samych
poleceń wyświetlić nazwę grupy użyt-
kownika w nagłówku wszystkich stron
witryny.

Listing 7.

Poniższy element należy umieścić wewnątrz elementu

configuration głównego pliku konfiguracyjnego witryny

<

system

.

net

>

<

mailSettings

>

<

smtp

from

=

"uwierzytelnianie@hakin9.org"

>

<

network

host

=

"smtp.hakin9.org"

password

=

"hasło"

userName

=

"uwierzyteln

ianie"

/

>

<

/

smtp

>

<

/

mailSettings

>

<

/

system

.

net

>

Listing 8.

Nadal zachowujemy zasadę, że użytkownicy rejestrujący się

na stronie mogą należeć jedynie do grupy Użytkownicy

protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e)
{
Roles.AddUserToRole(CreateUserWizard1.UserName, "Użytkownicy");
}

background image

hakin9 Nr 6/2007

www.hakin9.org

Obrona

30

W stronę szablonu

Uwierzytelnianie i autoryzacja po-
zwalają zabezpieczyć witrynę przez
dostępem osób niepowołanych.
Przyzwoitość wymaga jednak cho-
ciażby wspomnieć o drugiej stronie
medalu. Żądając od użytkowników
podania loginu i hasła narażamy
także ich dane na niebezpieczeń-
stwo. O ile plik cookie biletu jest
wysyłany w postaci zaszyfrowanej
i weryfikowana jest jego zawartość,
to dane wpisywane w formularzu
rejestracji i logowania nie są w ża-
den sposób zabezpieczane. Warto

zatem rozważyć zastosowanie za-
bezpieczenia Secure Socket Layer
(SSL) do przesyłania informacji
w postaci zaszyfrowanej z użyciem
protokołu HTTPS. Szczególnie, gdy
w grę wchodzi przesyłanie numeru
karty kredytowej, numerów PIN
i wszelkiego typu informacji, które
nie powinny być dostępne innym.
Aby korzystać z SSL witryna musi
znajdować się na serwerze wypo-
sażonym w odpowiednie certyfi-
katy, a użytkownik musi korzystać
z przeglądarki, które umożliwiają
korzystanie z czterdziestobitowe-

go klucza (opcjonalnie może być
wymagany nawet studwudziesto-
ośmiobitowy).

Między innymi ze względów bez-

pieczeństwa przesyłanych danych,
Microsoft zaleca, aby do przecho-
wywania informacji o użytkowni-
kach korzystać nie z własnych roz-
wiązań, jak to przedstawiono powy-
żej, ale z gotowego szablonu Mem-
bership.
Ma to tym większy sens,
że do przechowywania informacji
o kontach mechanizm ten wykorzy-
stuje tę samą bazę danych, co me-
chanizm ról. Unikniemy w ten spo-
sób podwójnego źródła danych, a
tym samym nasza migracja do apli-
kacji w pełni wykorzystującej wbudo-
wane w ASP.NET 2.0 mechanizmy
uwierzytelniania zostanie niemal za-
kończona. Ujednolicenie źródła da-
nych nie jest jedyną zaletą wprowa-
dzenia mechanizmu Membership do
projektu naszej witryny. Do jego wy-
korzystania skłaniać mogą dodatko-
wo gotowe do użycia kontrolki z za-
kładki Login w Visual Web Develope-
rze
współpracujące z mechanizmem
Membership i aplikacja ASP.NET po-
zwalająca na zarządzanie kontami w
bazie SQL Servera. Tak jak zapowie-
działem, gdy wykonamy ten ostatni
krok, okaże się, że niemal cały kod,
który umieściliśmy do tej pory w apli-
kacji (włączając w to obsługę bazy
danych) jest zbędny. Ale w końcu ja-
koś trzeba się uczyć. Podejrzewam,
że korzystanie z gotowych czarnych
skrzynek
bez zrozumienia ich działa-
nia nie jest tym, co Czytelnicy haki-
n9u
lubią najbardziej. Wadą nowe-

W Sieci

http://msdn2.microsoft.com – micro-

softowe kompendium wiedzy o Wi-
nAPI, .NET i technologiach stowa-
rzyszonych,

http://www.asp.net – oficjalna witry-

na poświęcona bibliotece ASP.NET,

http://msdn.microsoft.com/vstudio/

express/downloads/ – tu można
pobrać

darmowe

środowisko

projektowe dla twórców witryn
ASP.NET – Visual Web Developer
Express Edition.

Rysunek 6.

Nowa strona rejestrowania użytkowników

background image

hakin9 Nr 6/2007

www.hakin9.org

31

go rozwiązania będzie jego szablo-
nowość
, co oznacza, że trudniej niż
własne rozwiązania będzie skłonić
go do nietypowych pomysłów pro-
jektanta witryny. Z punktu widzenia
bezpieczeństwa korzystanie z takie-
go szablonu może być korzystne, w
końcu możemy założyć, że jest on
porządnie przetestowany, ale jed-
nocześnie groźne, każda wykryta i
opublikowana dziura mechanizmu
może być natychmiast wykorzysta-
na przeciwko nam.

Zacznijmy od umieszczenia na

stronie Logowanie.aspx komponentu

Login

z zakładki Login palety kontro-

lek Toolbox. Przejmie ona zadanie
metody

Button1 _ Click

tzn. zajmie

się weryfikowaniem loginu i hasła,
a jeżeli się one będą zgadzać, utwo-
rzy bilet, którym na naszej witrynie
będzie legitymował się zalogowany
użytkownik. I wszystko to bez napi-
sania choćby jednej linii kodu. Takie
rozwiązanie bez wątpienia sprzyja
efektywności projektowania stron
w ASP.NET. Do tego komponent

Login

możemy szybko sformatować,

korzystając z polecenia Auto Format,
dostępnego z podręcznej listy zadań
(zobacz Rysunek 4) lub w oknie wła-
sności. Ponadto każdy napis tego
komponentu można przetłumaczyć,
co oczywiście warto i należy zrobić
(bo Polacy nie gęsi itd.).

Jak już wspomniałem, przy do-

myślnych ustawieniach (przy któ-
rych zostaniemy) komponent

Login

i pozostałe komponenty z zakład-
ki Login korzystają z bazy danych
App_Data/ASPNETDB.MDF. Tej
samej, z której korzysta mecha-
nizm ról. Musimy dodać do niej in-
formacje o użytkownikach. Nie bę-
dziemy, jak zrobiliśmy w przypad-
ku grup, dodawać do strony poleceń
przenoszących użytkowników z jed-
nej bazy do drugiej w miarę logowa-
nia, bo nie ma sensu dłużej utrzy-
mywać dwóch źródeł danych. Utwo-
rzymy nowe konta. Pierwszym spo-
sobem tworzenia konta użytkowni-
ka jest panel administracyjny do-
stępny z menu Website, ASP.NET
Configuration Visual Web Develo-
pera.
Wybierając tę pozycję z menu,
uruchomimy w przeglądarce aplika-

cję ASP.NET (Rysunek 5), która na
zakładce Security udostępnia na-
rzędzia służące do zarządzania ro-
lami (zobaczmy, że istnieją dwie ro-
le utworzone dzięki naszym polece-
niom migracji) i użytkownikami (na
razie nie ma żadnego). Jeżeli klik-
niemy link Create User, przejdziemy
do strony zakładania konta. Załóż-
my konto dla administratora witryny.
Możemy zachować dotychczasową
konwencję, w której rolę loginu pełni
adres e-mail, ale proponuję od niej
odstąpić i przystosować się do sza-
blonu proponowanego przez Micro-
soft. Niech nowy użytkownik nazy-
wa się root. Poza loginem musimy
jeszcze podać hasło (przynajmniej
siedem liter i znak nie będący lite-
rą lub cyfrą – hasło dla testowego
konta root, które dodaliśmy do bazy
to hasło++), adres e-mail oraz pyta-
nie i odpowiedź wykorzystywane w
razie zapomnienia hasła). Gdy już
wypełnimy wszystkie pola, zazna-
czamy z prawej strony rolę Admi-
nistratorzy, do której przypiszemy
nowe konto i klikamy przycisk Cre-
ate User.

W analogiczny sposób stwórz-

my także konto dla zwykłego użyt-
kownika. Mając te dwa konta może-
my przetestować nowy sposób logo-
wania. Najpierw zalogujmy się jako
zwykły użytkownik i sprawdźmy, czy
mamy dostęp do stron wewnętrz-
nych witryny. Powinniśmy mieć do-
stęp do katalogu Protected, ale nie
do Private. Natomiast po wlogowa-
niu jako root, będziemy mieli nie-
ograniczony dostęp do wszystkich
stref witryny. Ponadto zauważmy,
że działa ręczne sprawdzanie toż-
samości na stronach Private.aspx
i Protected.aspx w katalogu głów-
nym oraz że nazwa użytkownika jest
nadal wyświetlana w nagłówku wzor-
ca (choć teraz widoczny jest tam lo-
gin zamiast adresu e-mail). Wszyst-
ko to działa, ponieważ nie zmienili-
śmy mechanizmu uwierzytelniania.
Nadal jest nim mechanizm Forms
korzystający z plików cookie. Jedy-
nie zautomatyzowaliśmy jego wyko-
rzystanie. W ramach tej automaty-
zacji możemy także zastąpić ręcz-
ne wyświetlanie nazwy zalogowane-

background image

hakin9 Nr 6/2007

www.hakin9.org

Obrona

32

go użytkownika w nagłówku wzorca
przez użycie komponentu

UserName

z

zakładki Login (zob. projekt w katalo-
gu Uwierzytelnianie/3 na CD).

Po tym, jak już przekonamy się,

że nowy sposób działa, możemy ze
strony Logowanie.aspx usunąć pola
edycyjne i przycisk Zaloguj, a z pliku
Logowanie.aspx.cs wysłużoną me-
todę

Button1 _ Click

wraz z jej me-

todami pomocniczymi. Należy też
usunąć metodę

Button2 _ Click

wy-

syłającą adres e-mail do użytkow-
ników, którzy zgłosili zapomnienie
hasła. Co w takim razie z funkcją
przypominania haseł? I na to jest
automat. Umieśćmy na stronie kon-
trolkę

PasswordRecovery

. Podobnie,

jak w przypadku kontrolki

Login

mo-

żemy ją automatycznie sformatować
i przetłumaczyć wszystkie pojawiają-
ce się na niej komunikaty. Kontrolka
najpierw spyta o login, a następnie
zada pytanie ustalone w trakcie za-
kładania hasła. Jeżeli wszystko się
będzie zgadzać, prześle na adres
e-mail użytkownika jego nowe hasło.
Do tego należy jednak skonfiguro-
wać wykorzystywane przez witrynę
konto e-mail. Najłatwiej zrobić to za
pomocą panelu konfiguracyjnego,
który wykorzystaliśmy do tworze-
nia kont użytkowników. Potrzebne
narzędzia znajdziemy na zakładce
Application, SMTP Settings. Jeżeli
jeszcze zupełnie nie wyzbyliśmy się
potrzeby edycji kodu (w końcu daje
to wrażenie sprawczości odbierane
przez korzystanie z gotowych kon-
trolek i kreatorów), możemy do pliku
konfiguracyjnego witryny dodać ele-
ment z Listingu 7.

Oczywiście, tworzenie kont za

pomocą panelu zarządzania bazą
danych jest wskazane w przypad-
ku kont dla administratorów, ale na
większą skalę, gdy do rejestrowa-
nia w witrynie chcemy zachęcić jak
najwięcej osób jest niewygodne.
Musimy zatem przeorganizować
stronę rejestrowania tak, aby po-
zwalała na dopisywanie użytkow-
ników do nowej bazy. Przejdźmy
zatem do jej widoku projektowania
i podobnie jak w przypadku stro-
ny logowania, usuńmy z niej cały
formularz. W konsekwencji z pliku

z kodem C# należy usunąć metodę
zdarzeniową byłego przycisku Zarej-
struj
i jej metody pomocnicze. W to
puste miejsce wstawmy kontrolkę

CreateUserWizard

. Konfiguruje się ją

analogicznie, jak kontrolki poznane
wcześniej. Jedyny problem to fakt,
że nowa kontrolka w żaden sposób
nie odnosi się do ról. Musimy do
nich przypisywać użytkowników sa-
modzielnie. Na szczęście znamy już
odpowiednie polecenia. Skorzystaj-
my zatem ze zdarzenia

CreatedUser

zgłaszanego w momencie utworze-
nia nowego konta i do związanej
z nim metody zdarzeniowej dodajmy
polecenia z Listingu 8. Warta zain-
teresowania jest jeszcze kontrolka

ChangePassword

, która służy do zmie-

niania hasła przez użytkownika. I ją
konfiguruje się w sposób podobny do
poznanych wcześniej.

Co ciekawe, mechanizm uwierzy-

telniania Forms pozwala nie tylko na
kontrolę stron, do których wpuszcza-
ny jest zalogowany użytkownik, ale
również na zmienianie ich zawartości
w zależności od tego, jaki użytkow-
nik ją ogląda. Służy do tego kontrolka

LoginView

, która jest jak zaczarowa-

ne pudełko, którego zawartość zale-
ży od tego, w jaki sposób się je otwo-
rzy. Kontrolka

LoginView

ma dwa pod-

stawowe widoki: pierwszy przezna-
czony dla użytkowników anonimo-
wych, drugi dla zalogowanych. Po-
nadto można też zdefiniować wido-
ki przeznaczone dla użytkowników
z poszczególnych grup (ról). Prze-
testujmy ten komponent w nagłów-
ku wzorca. W jego podręcznej liście
zadań znajdziemy rozwijane menu
z dwoma pozycjami. Wybór pierw-
szej (o nazwie AnonymousTemplate)
spowoduje, że będziemy mogli okre-
ślić zawartość kontrolki w przypadku
wykrycia braku biletu. Wstawmy tam
po prostu napis Użytkownik: nieza-
logowany
ze słowami niezalogowa-
ny
wyróżnionymi czerwonym kolo-
rem. Po przełączeniu na drugą po-
zycję (LoggedIn Template), umieść-
my wewnątrz pojemnika komponent

UserName

, który wyświetlać będzie

nazwę użytkownika. Jego szablon
(własność

FormatString

) możemy

zmienić np. na Użytkownik: <FONT

COLOR=green>{0}</FONT>. Korzy-
stając z polecenia Edit RoleGroups,
możemy również zdefiniować widok
przeznaczony dla administratorów
witryny (zobacz projekt na CD).

Podsumowanie

Wybór między samodzielnie przy-
gotowanym i w pełni dostosowa-
nym do własnych potrzeb formula-
rzem, a kontrolkami wprowadzonymi
do ASP.NET 2.0 zależy oczywiście
od specyfiki projektowanej witryny.
W powyższym artykule przedstawi-
liśmy oba podejścia, choć oczywi-
ście tylko w zakresie, na jaki pozwa-
la format artykułu. Po więcej infor-
macji o ASP.NET 2.0 i ADO.NET 2.0
oraz o projektowaniu witryn korzy-
stających z tych technologii, odsyła-
my do książki Technologie ASP.NET
i ADO.NET w Visual Web Developer

(Helion, 2007) przygotowanej przez
autorów artykułu. l

O autorach

Jacek Matulewski – fizyk zajmujący

się na co dzień optyką kwantową i ukła-
dami nieuporządkowanymi na Wydziale
Fizyki, Astronomii i Informatyki Stoso-
wanej Uniwersytetu Mikołaja Kopernika
w Toruniu. Jego specjalnością są sy-
mulacje ewolucji układów kwantowych,
oddziaływujących z silnym światłem
lasera. Od 1998 roku interesuje się pro-
gramowaniem dla systemu Windows,
w szczególności w środowisku Borland
C++Builder. Ostatnio zainteresowany
także platformą .NET i językiem C#.
Wierny użytkownik kupionego w po-
łowie lat osiemdziesiątych komputera
osobistego
ZX Spectrum 48k.
Kontakt z autorem:
jacek@fizyka.umk.pl

Sławomir Orłowski – z wykształ-

cenia fizyk. Obecnie jest doktorantem
na Wydziale Fizyki Astronomii i Infor-
matyki Stosowanej Uniwersytetu Miko-
łaja Kopernika w Toruniu. Zajmuje się
symulacjami komputerowymi układów
biologicznych (dynamika molekularna)
oraz bioinformatyką. Programowanie
jest nieodzowną częścią jego pracy
naukowej. Ma doświadczenie w progra-
mowaniu w językach C, C++, Delphi,
Fortran, Java i Tcl. Z językiem C# i plat-
formą .NET pracuje od 2002 roku.

background image

Portal internetowy na którym można znaleźć

garść informacji z wybranych dziedzin IT.

http://howto.pl/

Hacking, security to pojęcia znane profesjonali-

stom na tym portalu można dowiedzieć się cze-

goś więcej o tych zagadnieniach.

http://www.security-web.info

Strona zawiera ogłoszenia pracy na stanowi-

ska związane z branżą IT.

http://pracait.com

Portal poświęcony aktualnościom, artykułom

ze świata informatycznego. Zawiera ciekawe

linki, gry on-line i wiele innych interesujących

wiadomości.

http://hackme.pl

Serwis internetowy firmy QuarkBit Software,

która zajmuje się tworzeniem oprogramowania

dla firm i osób prywatnych.

http://www.quarkbitsoftware.pl

Misją serwisu jest dostarczanie rzetelnych infor-

macji z zakresu szeroko pojętej informatyki. Za-

wiera najświeższe informacje z rynku informa-

tycznego i recenzje czasopism takich jak Hakin9,

php solution, sdj.

http://www.itnews.icx.pl

To portal wydawnictwa CSH. Na tej stronie za-

interesowana osoba znajdzie garść potrzeb-

nych informacji: aktualności ze świata informa-

tycznego, informacje na temat szkoleń itd.

http://www.szkolahakerow.pl

Serwis informacyjny, na którym znajdują się

najświeższe aktualności i artykuły, można zalo-

gować się na forum i podyskutować z ciekawy-

mi osobami na interesujące teamty.

http://www.cc-team.org

Strona internetowa poświęcona aktualnościom

informatycznym. Umieszczone są na niej cie-

kawe artykuły oraz recenzje pism.

http://www.huntersq2.boo.pl

Strony

polecane >>>

Strony

polecane

Misją Infoprof jest zrozumienie potrzeb klienta

i taki dobór usług by jak najlepiej spełniały one

jego oczekiwania, jednocześnie nie narażając

go na niepotrzebne koszty.

www.infoprof.pl

Portal poświęcony zdalnym rozwiązaniom IT,

świadczone usługi są dyskretne i dokładne.

http://xesit.pl

Portal powstał w celu rozreklamowania firmy

zajmującej się kompleksową usługą związaną

z promowaniem stron WWW.

http://www.webgroup.net.pl

background image

www.hakin9.org

hakin9 Nr 6/2007

34

Obrona

S

tosunkowo często w sieciach tego ro-
dzaju spotykane są problemy, związa-
ne z funkcjonowaniem systemu nazw

domenowych. Począwszy od stosunkowo nie-
groźnego, ale potrafiącego skutecznie znie-
chęcić, zatykania się przeciążonego DNSa,
który nasz provider uruchomił na jakiejś przed-
potopowej maszynie, a skończywszy na pró-
bach rozmaitych ataków, w tym pharmingu,
Man-In-the-Middle, dns-spoofingu czy dns ca-
che poisoningu
.

Jako że jednym z najłatwiejszych do prze-

prowadzenia ataków jest cache poisoning, jest
on najczęściej stosowany przez początku-
jących włamywaczy. Jego przeprowadzenie
ułatwia dodatkowo brak jakichkolwiek zabez-
pieczeń w protokole DNS. W artykule niniej-
szym pokażemy, jak – przynajmniej w pewnym
zakresie – podnieść bezpieczeństwo usługi
DNS i ominąć problemy z wykrywaniem nazw,
w przypadku, kiedy DNS naszego providera
przestaje działać.

O atakach na system usług nazewniczych

możesz przeczytać w Hakin9u w artykułach:
Marek Gusta, Maciej Szmit, Man in The Middle
– ataki na sesje szyfrowane
, Hakin9 nr 3/2003,
str. 6-9.

Niebezpieczny DNS

DNS (Domain Name System) to system ser-
werów oraz protokół komunikacyjny, zapew-
niający zamianę adresów domenowych na ad-
resy IP. W dzisiejszych czasach DNS to w za-
sadzie rozproszona baza danych. Biorąc pod
uwagę charakter, jaki spełnia, konieczne jest
zapewnienie odpowiedniego poziomu bezpie-
czeństwa, ze szczególnym uwzględnieniem
mechanizmów autoryzacji i zagwarantowania
integralności informacji udostępnianej przez
DNS.

DNS inSecure

Bartosz Matusiak, Łukasz Poźniak, Mikołaj Stępień

stopień trudności

Wielu użytkowników Internetu to klienci sieci zbudowanych

przez lokalne telewizje kablowe, amatorskich sieci osiedlowych

wykorzystujących różne odmiany Ethernetu lub protokoły

bezprzewodowe WiFi, czy wreszcie, użytkownicy połączeń

wdzwanianych, korzystający ze standardowych modemów

kablowych lub technologii GPRS/EDGE/UMTS.

Z artykułu dowiesz się

• dlaczego protokół DNS nie jest bezpieczny,
• jak działa rozszarzenie DNS SEC,
• dlaczego warto go używać,
• jak skonfigurować lokalny serwer DNS wymu-

szający użycie DNS SEC.

Powinieneś wiedzieć

• jak działa protokół DNS,
• co to są ataki dns spoofing, dns cache poiso-

ning.

background image

DNS inSecure

hakin9 Nr 6/2007

www.hakin9.org

35

Niestety, obecnie wykorzystywa-

ny system DNS nie jest doskonały,
mało tego, można wręcz powiedzieć,
że jest bardzo podatny na ataki.
Szczególnie niebezpiecznym ata-
kiem, i dość łatwym do zrealizo-
wania, jest DNS cache poisoning.
Polega on na zatruwaniu bufora
cache serwerów DNS fałszywymi
informacjami. W efekcie użytkownicy
dostają w odpowiedziach od zaata-
kowanego serwera DNS podmienio-
ne adresy IP serwerów, o które pytają
(np. bankowych). Jest to możliwe,
ponieważ serwery DNS zapamiętują
otrzymane z zewnątrz rekordy, nie
sprawdzając ich źródła pochodze-
nia, by przyspieszyć ich zwracanie
klientom i odciążyć sieć. Jest to
dość łatwy sposób, aby oszukać
nieświadomego użytkownika i uzy-
skać jego loginy oraz hasła np. do
internetowych kont bankowych czy
skrzynek pocztowych. Rysunek 1.
pokazuje kiedy, i w jakich okoliczno-
ściach mogą występować ataki na
serwery DNS oraz jakiego rodzaju
są to ataki. W celu wyeliminowania
słabości systemu DNS opracowano
protokół DNSSEC.

DNSSEC

– pierwsze spojrzenie

DNSSEC (DNS Security Exten-
sions
) to protokół, który jest rozsze-
rzeniem systemu DNS, mającym na
celu zwiększenie jego bezpieczeń-
stwa. Jest protokołem opartym na
cyfrowych podpisach; wykorzystu-
je mechanizmy kryptografii asyme-
trycznej, bazującej na kluczach pu-
blicznych. Zastosowanie takiego me-
chanizmu stwarza potencjalną moż-
liwość zabezpieczenia całej struktu-
ry systemu DNS. DNSSEC umożli-
wia zapewnienie integralności i moż-
liwość weryfikacji autentyczności po-
zyskanych danych, jednocześnie za-
bezpiecza też informacje DNS przed
sfałszowaniem i modyfikacją. Dodat-
kowo można wykorzystać go jako in-
frastrukturę do dystrybucji kluczy pu-
blicznych. Klient systemu może mieć
pewność, że otrzymane przez niego
dane, pochodzące od serwera DNS,
są wiarygodne i nie zostały podmie-
nione podczas transportu.

W protokole tym definiowane są

zabezpieczania strefy, a nie serwe-
ra, dzięki czemu, nawet w przypadku
włamania do jednego z serwerów
autorytatywnych dla danej strefy,
bezpieczeństwo systemu jako ca-
łości zostaje zachowane. DNSSEC
wykorzystuje klucze prywatne tylko
w momencie podpisywania rekordów
strefy i nie muszą być one dostęp-
ne online. Jest to kolejna cecha,
decydująca o wzmocnieniu bezpie-
czeństwa systemu DNS. Sytuację
komplikują nieco dynamiczne upda-
te'y, które wymuszają dostępność
kluczy prywatnych w serwerze je
obsługującym.

DNSSEC daje także możliwość

weryfikacji odpowiedzi negatywnych
(ang. authenticated denial of existen-
ce of DNS data
). Protokół ten nie do-
starcza natomiast żadnych mechani-
zmów autoryzacji oraz poufności da-
nych.

Zaglądamy do środka

W DNSSEC zabezpieczane dane
w strefach grupowane są w paczki
o nazwie RRset, obejmujące rekor-
dy identyfikowane przez tą samą na-
zwę, klasę i typ. Podpisywanie zbio-
rów RRset, zamiast pojedynczych
rekordów RR jest bardziej optymal-
ne, ponieważ serwer nazw zwykle
zwraca całą grupę rekordów w odpo-
wiedzi na zapytanie DNSowe.

Stworzenie podpisu odbywa się

zwykle przy wykorzystaniu kombi-
nacji algorytmów SHA-1 i RSA bądź
algorytmów SHA-1 i DSA. W pierw-
szym kroku zostaje obliczony "odcisk
palca" grupy rekordów, który następ-
nie zostaje zaszyfrowany prywatnym
kluczem strefy. W ten sposób, klient
systemu ma możliwość zweryfikowa-
nia otrzymanych informacji za pomo-
cą publicznego klucza danej strefy.

DNSSEC wprowadza do DNSu

następujące nowe rekordy zasobów
związanych z usługami bezpieczeń-
stwa:
• DNSKEY – służy do przecho-

wywania klucza publicznego
wykorzystywanego przy weryfi-
kacji podpisów (rekordów RRSIG).
Podpisy grupy rekordów są prze-
chowywane w rekordzie RRSIG

• RRSIG – podpis grupy rekordów.

Istnienie podpisu elektroniczne-
go wymaga, by oprócz rekordu
zawierającego publiczny klucz,
był także rekord przechowujący
właściwy, odpowiadający kluczo-
wi, podpis. DNSSEC przewiduje
istnienie rekordu podpisu RRSIG
dla każdej zabezpieczanej gru-
py RRset w strefie. Podpis jest
generowany przy użyciu klucza
prywatnego strefy. Dana grupa
RRset może posiadać wiele re-
kordów RRSIG. Sam RRSIG nie
jest podpisany.

• NSEC – zapewnienie spójności

danych strefy i umożliwienie we-
ryfikacji informacji o nieistnieniu
rekordu lub o braku zabezpie-
czeń (authenticated denial of exi-
stence of data
); rekord wskazuje
następną dostępną nazwę w pli-
ku stref oraz określa, które typy
rekordów są dostępne dla danej
nazwy domenowej. Narzędzia
DNS automatycznie wyznacza-
ją zawartość rekordów NSEC
w trakcie generowania podpisów.
Rekordy NSEC są podpisywane
kluczem prywatnym strefy.

• 4.DS – wskazanie na klucz pod-

pisujący klucz strefy u potomka.
Wykorzystanie tego rekordu ma
ułatwić proces okresowej wymia-
ny kluczy podpisujących strefy,
a także pozwolić na dłuższe
okresy między aktualizacjami
kluczy łańcucha zaufania. Wraz
z wprowadzeniem do DNSSEC
rekordu DS pojawił się podział
kluczy publicznych na:
• klucze podpisujące klucze

(KSK – key signing key) – jest
to klucz podpisujący zbiór re-
kordów kluczy u wierzchołka
strefy, do którego odwołuje się
rekord DS u rodzica;

• klucze podpisujące strefę (ZSK

zone signing key) – jest to
klucz podpisujący dane strefo-
we, podpisany przez KSK.

• DNSSEC ustawia także dwa, do-

tychczas niewykorzystywane, bi-
ty nagłówka komunikatu DNS:

• Bit AD (dane autentyczne) wska-

zuje, iż dane otrzymane w sekcji
odpowiedzi i zwierzchności zo-

background image

hakin9 Nr 6/2007

www.hakin9.org

Obrona

36

stały zweryfikowane przez ser-
wer stosownie do wykorzystywa-
nych przez niego procedur.

• Bit CD (sprawdzanie wyłączo-

ne) informuje odpytywany ser-
wer, że także nie zweryfikowane
informacje będą zaakceptowane
przez resolver.

Klient systemu (resolver) musi doko-
nać weryfikacji aby, być pewnym au-
tentyczności posiadanego klucza pu-
blicznego. Jeżeli nie istnieje lokalnie
skonfigurowany klucz publiczny da-
nej strefy, resolver musi skorzystać
z mechanizmów DNS, by dotrzeć do
zaufanego klucza publicznego. Na-
stępnie, podążając łańcuchem za-
ufania w głąb hierarchii DNS, klient
weryfikuje interesujący klucz. Łań-
cuch zaufania jest zwykle tworzo-
ny począwszy od korzenia drze-
wa DNS, a skończywszy na jego li-
ściach. Kluczem, który musi być zna-
ny przez resolvery sytemu, jest wła-
śnie publiczny klucz korzenia i przy-
najmniej ten klucz powinien zostać
użyty do konfiguracji resolverów.

Resolver walidujący dane może

je określić jako:

• zabezpieczone (secure) – zestaw

rekordów (RRset) i ich podpis
(RRSIG) zostały poprawnie
zweryfikowane odpowiednim klu-
czem publicznym (DNSKEY), dla
którego resolver ustalił łańcuch
zaufania.

• niezabezpieczone

(insecure)

– dane ze strefy, której delegacji
nie towarzyszy rekord DS, co
automatycznie wyklucza strefę
z łańcucha zaufania .

• fałszywe (bogus) – rekord DS

wskazujący, że dane pochodzą
z zabezpieczonej strefy, jednak
z jakiegoś powodu nie może
ich poprawnie zweryfikować
(np. brak podpisu, podpis utracił
swoją ważność, dane podpisane
algorytmem, itp).

• nieokreślone (indeterminate).

Bardzo ważną zaletą DNSSEC jest
to, że bezkonfliktowo współistnieje
on z niezabezpieczoną częścią sys-
temu DNS. Daje to możliwość za-

Listing 1.

Plik konfiguracyjny BIND-a do trybu DNS-cache

options {
directory "C:\\windows\\system32\\dns\\etc\\";
// UWAGA: /etc/bind dla linuxa
allow-transfer {"none";};
allow-recursion
{ 127.0.0.1; 192.168.0.0/24;};
//zezwalaj na zapytania
//rekursywne podanym adresom
listen-on { 127.0.0.1; };
//interfejs na którym ma słuchać serwer
};

zone "." {
type hint;
file "root.servers";
};

zone "localhost" in{
type master;
file "master.localhost";
allow-update{none;};
};

zone "0.0.127.in-addr.arpa" in{
type master;
file "localhost.rev";
allow-update{none;};
};

master.localhost

Listing 2.

Strefa prosta domeny kis-test

$

ORIGIN

.

$

TTL

1

d

kis

-

test

IN

SOA

ns1

.

kis

-

test

.

root

.

kis

-

test

.

(

2005103008

;

serial

43200

900

604800

10800

)

IN

NS

ns1

.

kis

-

test

.

IN

NS

ns2

.

kis

-

test

.

$

ORIGIN

kis

-

test

.

ns1

IN

A

192.168

.

0.1

ns2

IN

A

192.168

.

0.2

hostA

IN

A

192.168

.

0.3

Listing 3.

Wymuszanie obsługi DNSSEC w trybie DNS-cache

W sekcji options dopisujemy

forwarders

{

192.168

.

0.1

;

//serwer DNS domeny intranetowej kis-test,

obs

ł

uguj

ą

cy

DNSSEC

}

;

dnssec

-

enable

yes

;

dnssec

-

must

-

be

-

secure

"kis-test."

yes

;

Poza sekcją options tymczasem:

include

"/etc/bind/klucz.key"

;

background image

DNS inSecure

hakin9 Nr 6/2007

www.hakin9.org

37

bezpieczania tylko niektórych wpi-
sów, odpowiedzialnych np. za od-
wzorowanie nazw banków czy skle-
pów internetowych.

Ograniczeniem DNSSEC jest

rozmiar pakietu UDP DNS, który
wynosi maksymalnie 512 Bajtów. Z
tego względu DNSSEC wymusza
wsparcie dla systemu sygnalizujące-
go: EDNS0 (Extension Mechanisms
for DNS, version 0
) Mechanizm ten
ustawia bit DO (DNSSEC OK), któ-
ry informuje o możliwości zaakcep-
towania przez klienta odpowiedzi
DNSSEC. EDNS0 daje także wspar-
cie dla pakietów DNS większych niż
512B, do 4096B. Większy rozmiar
pakietów powoduje niestety większe
obciążenie łączy.

Nie tylko pakiety UDP ulegają

zwiększeniu, możemy też zaobser-
wować znaczny wzrost rozmiaru pli-
ku strefy (dla klucza o długości 1024
plik dla strefy .pl zwiększy rozmiar z
17 do 120MB).

W praktyce

Protokół DNSSEC jest skutecznym
i dość łatwym w implementacji me-
chanizmem, który znacząco zwięk-
sza bezpieczeństwo systemów

DNS. Wykorzystanie w nim me-
chanizmu kryptografii asymetrycz-
nej, z użyciem kluczy publicznych
i prywatnych znacząco zmniejsza
szanse dokonania ataku. Niestety
za to wszystko, jak to zwykle by-
wa, trzeba zapłacić. Ceną za bez-
pieczeństwo jest tu zwiększone za-
potrzebowanie na wydajność sieci
oraz serwera DNS. Należy także
pamiętać, że DNSSec nie jest pro-
tokołem obowiązującym w sieci In-
ternet. Wprawdzie część serwe-
rów, w tym serwery top-level DNS,
go stosuje, ale nikt nie ma obo-
wiązku konfigurować go dla swojej
strefy, jego używanie można więc
na razie wymusić wyłącznie w sie-
ciach lokalnych. I tu leży problem,
ponieważ jak na razie nie są do-
stępni klienci DNSowi wymuszają-
cy korzystanie z DNSSec (to taka
mała uwaga w kierunku twórców
kolejnego systemu z Redmond)
– jedynym wyjściem jest urucha-
mianie na każdym kliencie serwera
z DNSSec jedynie w trybie cache-
’ującym i zmuszanie klienta do od-
pytywania siebie samego. Oczywi-
ście zabezpieczymy w ten sposób
jedynie połączenie pomiędzy na-

szym klientem, a naszym serwe-
rem DNS. Jeśli jednak ten ostatni
rozsyła fałszywe informacje, któ-
re dostał od „zatrutego” serwe-
ra gdzieś ze świata, to wymienio-
na metoda nic nie pomoże. Nie-
mniej jednak, zawsze jest to jakaś
metoda zabezpieczenia – może-
my przecież na naszym serwerze
przechowywać te strefy, co do któ-
rych chcemy mieć pewność, że na-
si klienci nie zostaną oszukani (w
szczególności nasz intranet).

Podsumowanie

Wszyscy zgadzają się co do tego, że
systemowi nazw domenowych dale-
ko do ideału. DNSSEC jest jedynie
swojego rodzaju protezą, która nie-
co podnosi bezpieczeństwo w wy-
mianie informacji pomiędzy serwera-
mi. Zastosowanie tego mechanizmu
w sieci wewnętrznej i w odniesieniu
do klientów, tak jak zostało to opisa-
ne powyżej, jest pomysłem wykorzy-
stania tej protezy do zadań, do któ-
rych w zasadzie nie była pierwotnie
przeznaczona. Mimo to, jak można
się przekonać, poza zwiększonym
obciążeniem sieci, wszystko działa
poprawnie.

Rysunek 1.

Zastosowanie zabezpieczeń DNSSEC

modyfikacja

pliku strefy

cache poisoning

spoofing

"Caching"

serwer

resolver

cache impersonation

spoofing

cache poisoning

spoofing

nieautoryzowana

dynamiczna

aktualizacja

podszywanie się

pod serwer

podstawowy

modyfikacja

pliku strefy

zmodyfikowany

plik strefy

serwer

podstawowy

serwery

zapasowe

dynamiczne

aktualizacje

plik

strefy

background image

hakin9 Nr 6/2007

www.hakin9.org

Obrona

38

Lokalne uruchomienie DNSa na

kliencie ma jeszcze dwie zalety. Je-
śli DNS naszego providera przesta-
nie działać (często spotykana sytu-
acja w sieciach wdzwanianych lub ta-
kich, w których administrator oszczę-
dzał na DNSie zapasowym), to stacja
wyposażona we własny DNS będzie
poprawnie działała dalej. Druga zale-
ta jest taka, że nikt (a przynajmniej nie
administrator DNSa u naszego provi-
dera) nie będzie mógł w łatwy spo-
sób sprawdzić, jakich nazw domeno-
wych poszukiwaliśmy w sieci, będzie-
my więc nieco (ale bez przesady) bar-
dziej anonimowi.

DNSSEC, czyli zrób to sam

W części praktycznej pokażemy
podstawową konfigurację BIND-a
9.4 w systemach Linux i Windows, a
ponadto zobrazujemy, jak dodać do
tej konfiguracji rozszerzenie DNS-
SEC. Jednakże, aby mówić o jakiej-
kolwiek konfiguracji, najpierw musi-
my zainstalować pakiet BIND.

Instalacja

BIND 9.4.0 w Linuxie

W przypadku najbardziej popular-
nych dystrybucji Linuxa instalacja
jest ułatwiona przez programy do
zarządzania pakietami. Przyspiesza
to znacznie zadania administracyj-
ne, ale nie zawsze paczki będą aktu-
alne. Dlatego też, zazwyczaj najlep-
szym rozwiązaniem jest samodziel-
na kompilacja ze źródeł.

W przypadku Debian Linux:

# apt-get install bind

Mandriva:

# urpmi bind-9.4.0.mdk.i586.rpm

Fedora:

# yum install bind

Gentoo:

# emerge bind

Instalacja ze źródeł

W przypadku, gdy dla danej dystrybu-
cji nie istnieje jeszcze paczka z naj-

nowszą wersją BINDa, najlepiej użyć
tej opcji. Pierwszym krokiem jest po-
branie źródeł BINDa ze strony: http:
//www.isc.org/index.pl?/sw/bind/:

# wget http://ftp.isc.org/isc/bind9/
9.4.0/bind-9.4.0.tar.gz

Pobrane źródła należy roztarować
poleceniem:

# tar -zxvf bind-9.4.0.tar.gz

Następnie przygotowujemy się do
kompilacji poleceniem configure:

# cd bind-9.4.0
# ./configure

Jeśli ten etap przebiegnie bez proble-
mów (ewentualne brakujące bibliote-
ki należy doinstalować samodzielnie),
kompilujemy BINDa poleceniem:

# make

a następnie instalujemy poleceniem:

# make install

Instalujemy skompilowanego BIN-
Da w systemie. Domyślnie pliki kon-
figuracyjne znajdują się w katalogu
/etc/bind.

Instalacja

BIND 9.4.0 w Windows

Na początku należy pobrać plik
http://ftp.isc.org/isc/bind9/9.4.0/
BIND9.4.0.zip.

Pobrany plik rozpakowujemy.

Wśród rozpakowanych plików znaj-
dujemy i uruchamiamy plik BINDIn-
stall.exe
, który zainstaluje BINDa na
naszej maszynie.

W domyślnej instalacji pod win-

dows pliki konfiguracyjne są przecho-
wywane w katalogu C:\WINDOWS\
system32\dns\etc\
. Po zainstalowa-
niu serwera należy stworzyć w wy-
żej wymienionym katalogu pliki kon-
figuracyjne

named.conf,

root.servers,

master.localhost

,

localhost.rev

(pliki

te znajdują się również na krążku CD
dołączonym do numeru).

Podstawowa konfiguracja

named.conf

: – podstawowa konfigu-

racja, DNS cache-ujący. Plik konfi-
guracyjny BIND-a podzielony jest na
sekcje o następującej składni:

sekcja {

zawartość; }

;. W sekcji options ustawio-

ne są opcje globalne, takie jak ścieżka
do plików konfiguracyjnych stref, usta-
wienia przesyłania plików strefy do ser-
werów podległych, ustawienia zapytań
rekursywnych, ustawienia list dostępu,
czy też adresy IP interfejsów, na któ-
rych nasz serwer ma nasłuchiwać.
W sekcjach

zone

konfigurowane są

natomiast ustawienia poszczególnych
stref, takie jak: typ strefy

type

(

master,

slave, hint

), plik z bazą strefy

file

oraz wszystkie ustawienia globalne,
które dla danej strefy chcemy zmienić.
Pozwala to np. na jednoczesną pracę
w trybie master i slave dla kilku zupeł-
nie różnych domen – Listing 1.

O autorach

Autorzy są studentami piątego roku in-
formatyki Politechniki Łódzkiej oraz po-
siadaczami certyfikatu Cisco CCNA,
interesją się od kilku lat tematyką sie-
ci komputerowych zarówno od strony
sprzętu jak i bezpieczeństwa.
Kontakt z autorami:
Łukasz Poźniak: rox_lukas@wp.pl
Bartosz Matusiak:
bartek@aptekisloneczne.pl
Mikołaj Stępień: prymus11@wp.pl

Listing 4.

Plik /etc/bind/klucz.key

trusted

-

keys

{

kis

-

test

.

256

3

5

"AQOkQU7pN608Qrm-

BntOf0mJ7L89ObSku-
7zjkZnMA8w3Vy2Lx-
DsnZIjrc NDI31Vy6VSJ8X
wyVwW5NBW8Q+S208bfD"

;

}

;

background image

DNS inSecure

Podstawowy i niezbędny do uru-

chomienia serwera plik strefy prostej
localhost.

localhost.rev – p

odobnie

jak wyżej, z tym, że ten plik zawiera
strefę odwrotną localhost.

root.servers

– do pobrania z ftp://

ftp.internic.net./domain/named.root

Wymieniony plik zawiera adresy

serwerów top-level domain i pozwa-
la naszemu DNSowi na wykonywa-
nie zapytań rekursywnych. Czyni to
z niego zupełnie samodzielny serwer
cache'ujący.

Tworzymy strefę

Dla celów demonstracyjnych stworzy-
my fikcyjną domenę kis-test. Czynimy
tak po pierwsze dlatego, że takie roz-
wiązanie będzie działać, a po drugie,
ponieważ na pewno nie stworzy ono
żadnego konfliktu. Tutorial był pisany
z myślą o systemie Debian Sarge, ale
powinien bez większych problemów
działać na dowolnej dystrybucji.

Dla porządku, stworzymy dwa

katalogi:

/etc/bind/pri
/etc/bind/sec

odpowiednio domeny serwera ma-
ster będą w podkatalogu pri/, a do-
meny serwera slave w sec/ plik strefy

(/etc/bind/pri/kis-test) będzie wyglądał
tak, jak na Listingu 2.

Transfer stref między serwerami

master i slave również można za-
bezpieczyć przy użyciu DNSSEC
– szczegóły na płycie CD dołączonej
do numeru.

Podpisywanie strefy

– pierwsze kroki z DNSSEC

Kolejnym krokiem, po stworzeniu
strefy, będzie podpisanie naszej
strefy kluczem prywatnym i dołącze-
nie do niej klucza publicznego nie-
zbędnego do weryfikacji.

W pierwszym kroku generujemy

klucze strefy (ZONE) używając algo-
rytmu RSA:

dnssec-keygen -r /dev/urandom -a
RSASHA1 -b 1024 -n ZONE kis-test

Następnie wygenerowany klucz do-
łączamy do pliku strefy kis-test (za-
raz za rekordem SOA):

$include /etc/bind/pri/
Kkis-test.+005+23415.key

podpisujemy plik strefy:

dnssec-signzone kis-test Kkis-test.
+005+23415.private

I zmieniamy w konfiguracji nasze-
go binda /etc/bind/named.conf plik
strefy z /etc/bind/pri/kis-test na /etc/
bind/pri/kis-test.signed.

Po restarcie demona zmiana bę-

dzie widoczna dla klientów. Używając
polecenia dig, które jest składnikiem
pakietu BIND, możemy sprawdzić,
czy oprócz informacji o adresie do-
stajemy także podpisy RRSIG:

dig @localhost +dnssec kis-test

Konfiguracja

DNS cache'ującego

z wymuszonym DNSSEC

Zmiany w stosunku do konfiguracji
domyślnej BINDa – Listing 3, gdzie
klucz.key to klucz publiczny pobrany
z serwera (np. przy użyciu polecenia
dig:

dig @serwer-dnssec +dnssec kis-

test DNSKEY

). Postać pliku kluczy wi-

doczna jest na Listingu 4.

Do trusted-keys można dodać in-

ne domeny (i ich klucze publiczne),
efektywnie zabezpieczając się przed
spoofingiem tych domen. Dobrym
wyborem będą zwłaszcza domeny
banków (większość serwerów ban-
ków obsługuje DNSSEC).

Na koniec, pamiętajmy o usta-

wieniu domyślnego DNSa w syste-
mie na 127.0.0.1. l

R

E

K

L

A

M

A

background image

www.hakin9.org

hakin9 Nr 6/2007

40

Obrona

N

a rynku jest wiele narzędzi, które po-
zwalają na deasemblację lub dekompi-
lację. Niektóre z nich są bardzo proste i

darmowe (te pozwalają na uzyskanie tylko pod-
stawowych elementów naszego programu), ale
istnieją również bardzo zaawansowane i drogie
narzędzia, pozwalające na doskonałe odtwo-
rzenie danych źródłowych.

Aby zaciemnić kod źródłowy naszego pro-

gramu, należy posłużyć się obfuscatorem. Jest
to narzędzie zaciemniające zrozumiałość ko-
du wynikowego w celu uniemożliwienia dekom-
pilacji. Na rynku jest bardzo wiele różnego ro-
dzaju obfuscatorów przeznaczonych dla róż-
nych języków programowania.

Zawartość naszego programu

Wyobraźmy sobie następującą sytuację. Pi-
szemy skomplikowaną aplikację. Kompilacja
ma miejsce każdego wieczora. Około połu-
dnia następuje awaria dysku i tracimy kod
źródłowy naszej aplikacji. Zwykle wpadamy
wówczas w panikę i zastanawiamy się, co zro-
bić. Zobaczmy, jak to wygląda na przykładzie
aplikacji napisanej w Visual Studio w C#. Bę-
dzie to bardzo prosta aplikacja, która będzie
dodawać do siebie dwie liczby, a wynik będzie

wyświetlać w prostym oknie komunikatów
(MessageBox).

Kod źródłowy jest również bardzo prosty,

ale dla pokazania mechanizmów deasemblacji
zostały dodane nadmiarowe linie programu.

Jak widać na Listingu 1., w naszym kodzie

programu mamy trzy zmienne. Dwie, które
przyjmują wartości pól tekstowych oraz trzecia,

Zaciemnianie kodu

programu

Artur Żarski

stopień trudności

Każda osoba, która napisała jakikolwiek program, zastanawiała

się na pewno nieraz, czy ktoś jest w stanie dostać się do

zawartości tego programu i wydobyć z niego nasze algorytmy.

Nikt z nas nie chciałby, aby trud jego pracy dostał się w

niepowołane ręce, a tym bardziej, aby stało się to bez naszej

wiedzy.

Z artykułu dowiesz się

• jakie są podstawowe zagadnienia związane

z zaciemnianiem kodu,

• jak można zabezpieczyć szybko własne pro-

gramy,

• jak uzyskać z plików wynikowych pliki źródło-

we, które nie zostały zabezpieczone.

Co powinieneś wiedzieć

• należy posiadać znajomość terminologii zwią-

zanej z refeaktoryzacją kodu: dekompilacja,
deaseblacja, obfuscacja,

• znajomość działania kompilatorów, w szcze-

gólności procesu kompilacji na platformie .NET
wraz z językiem pośrednim MSIL.

background image

Zaciemnianie kodu programu

hakin9 Nr 6/2007

www.hakin9.org

41

która przyjmuje wartość sumy. Na
końcu wynik ten jest wyświetlany na
ekranie. Po skompilowaniu naszej
aplikacji dostaniemy plik .exe, który
możemy uruchomić na innym kom-
puterze. W tym momencie następuje
awaria dysku i tracimy kod źródłowy.

Nasz problem, związany z od-

zyskaniem źródeł, może rozwią-
zać darmowy program Reflector for
.NET
. Narzędzie to można ściągnąć
ze strony: http://www.aisto.com/
roeder/dotnet/
.

Po uruchomieniu programu wska-

zujemy nasz plik z kalkulatorem (Ry-
sunek 1). W gałęzi dostępnych biblio-
tek pokazuje się nasza aplikacja, kal-
kulator.exe
, po kliknięciu na nią dosta-
jemy już pierwsze informacje (Rysu-
nek 2). Teraz, rozwijając kolejne ga-
łęzie drzewa, mamy dostęp do ele-
mentów składowych naszej aplikacji.
Po pierwsze, dostajemy informację o
referencjach, jakie są wykorzystywa-
ne w naszej aplikacji, o typach oraz o
jej wyglądzie. Na Listingu 3. widnieje

fragment, który dostajemy z informa-
cją o wyglądzie kalkulatora.

Tak więc nie musimy się zastana-

wiać nad tym, jak odwzorować naszą
aplikację w środowisku Visual Studio.
Wystarczy przekopiować to, co poka-
zuje nam Reflector. Najważniejsze
dla nas będą jednak algorytmy działa-
nia aplikacji. Klikamy w naszym drze-
wie w metodę

button1 _ Click(object

sender, EventArgs e):Void

, aby uzy-

skać kod programu. Oczywiście ten

kod jest nieco inny, ale to dlatego, że
został on troszkę zoptymalizowany i
wyrzucono zbędne zmienne.

Opcja zaawansowana

Dla bardziej zaawansowanych użyt-
kowników adresowane jest standar-
dowe narzędzie Visual Studio słu-
żące deasemblacji. Jest nim IL-
DASM.exe
. Program ten pozwala na
uzyskanie kodu pośredniego i jego
modyfikację. Na Rysunku 3 przed-

Rysunek 1.

Otwarcie projektu w programie .NET Reflector

Rysunek 2.

Podstawowe informacje o naszej aplikacji uzyskane w wyniku działania Reflectora

Listing 1.

Przykładowy

program C#

int

liczba1

;

int

liczba2

;

int

wynik

;

liczba1

=

Convert

.

ToInt16

(

textBox1

.

Text

);

liczba2

=

Convert

.

ToInt16

(

textBox2

.

Text

);

wynik

=

liczba1

+

liczba2

;

MessageBox

.

Show

(

wynik

.

ToString

());

background image

hakin9 Nr 6/2007

www.hakin9.org

Obrona

42

Listing 2.

Kod wygenerowany przez program Reflector – wygląd aplikacji

this

.

button1

=

new

Button

();

this

.

textBox1

=

new

TextBox

();

this

.

textBox2

=

new

TextBox

();

this

.

label1

=

new

Label

();

this

.

label2

=

new

Label

();

base

.

SuspendLayout

();

this

.

button1

.

Location

=

new

Point

(

0x18

,

0xb0

);

this

.

button1

.

Name

=

"button1"

;

this

.

button1

.

Size

=

new

Size

(

0x4b

,

0x17

);

this

.

button1

.

TabIndex

=

0

;

this

.

button1

.

Text

=

"dodaj"

;

this

.

button1

.

UseVisualStyleBackColor

=

true

;

this

.

button1

.

Click

+=

new

EventHandler

(

this

.

button1_Click

);

Listing 3.

Kod wygenerowany przez ILDASM

.

method

private

hidebysig

instance

void

button1_Click

(

object

sender

,

class

[

mscorlib

]

System

.

EventArgs

e

)

cil

managed

{

// Code size 53 (0x35)

.

maxstack

2

.

locals

init

([

0

]

int32

liczba1

,

[

1

]

int32

liczba2

,

[

2

]

int32

wynik

)

IL_0000

:

nop

IL_0001

:

ldarg

.0

IL_0002

:

ldfld

class

[

System

.

Windows

.

Forms

]

System

.

Windows

.

Forms

.

TextBox

Kalkulator

.

Form1

::

textBox1

IL_0007

:

callvirt

instance

string

[

System

.

Windows

.

Forms

]

System

.

Windows

.

Forms

.

Control

::

get_Text

()

IL_000c

:

call

int16

[

mscorlib

]

System

.

Convert

::

ToInt16

(

string

)

IL_0011

:

stloc

.0

IL_0012

:

ldarg

.0

IL_0013

:

ldfld

class

[

System

.

Windows

.

Forms

]

System

.

Windows

.

Forms

.

TextBox

Kalkulator

.

Form1

::

textBox2

IL_0018

:

callvirt

instance

string

[

System

.

Windows

.

Forms

]

System

.

Windows

.

Forms

.

Control

::

get_Text

()

IL_001d

:

call

int16

[

mscorlib

]

System

.

Convert

::

ToInt16

(

string

)

IL_0022

:

stloc

.1

IL_0023

:

ldloc

.0

IL_0024

:

ldloc

.1

IL_0025

:

add

IL_0026

:

stloc

.2

IL_0027

:

ldloca

.

s

wynik

IL_0029

:

call

instance

string

[

mscorlib

]

System

.

Int32

::

ToString

()

IL_002e

:

call

valuetype

[

System

.

Windows

.

Forms

]

System

.

Windows

.

Forms

.

DialogResult

[

System

.

Windows

.

Forms

]

System

.

Windows

.

Forms

.

MessageBox

::

Show

(

string

)

IL_0033

:

pop

IL_0034

:

ret

}

//

end

of

method

Form1

::

button1_Click

Listing 4.

Funkcja, którą będziemy chcieli zaciemnić

private

void

CalcPayroll

(

SpecialList

employeeGroup

)

{

while

(

employeeGroup

.

HasMore

())

{

employee

=

employeeGroup

.

GetNext

(

true

);

employee

.

UpdateSalary

();

DistributeCheck

(

employee

);

}

}

background image

Zaciemnianie kodu programu

hakin9 Nr 6/2007

www.hakin9.org

43

stawiony został ogólny widok ILDA-
SM’a
wraz z załadowanym naszym
plikiem kalkulatora. W wyniku tego
dostaniemy kod, jak na Listingu 2.

Jak widać, możemy dokładnie

przeanalizować (oraz, co najważniej-
sze, zmodyfikować) zawartość na-
szego programu.

Zaciemnianie programu

Na czym tak naprawdę polega za-
ciemnianie kodu programu? W naj-
prostszej formie jest to zmiana nazw
klas, metod, zmiennych na 'a', 'b' lub
jakieś inne niezrozumiałe ciągi zna-
ków oraz szyfrowanie ciągów zna-
ków. Programiści, którzy posiadają Vi-
sual Studio
mogą skorzystać z Dotfu-
scatora
napisanego przez firmę Pre-
Emptive Solutions
. Wersja, która do-
stępna jest w Visual Studio to Dotfu-
scator Community Edition
. Na stronie
producenta dostępne są jeszcze dwie
wersje: Standard oraz Professional.

Bardzo prosty przykład działania

dowolnego obfuscatora przedstawio-
ny jest poniżej. Pierwszy fragment
przedstawia kod przed zaciemnie-
niem – Listing 4.

Drugi fragment przedstawia ten

sam kawałek kodu programu po za-
ciemnieniu – Listing 5.

Taki fragment kodu źródłowego

nie przynosi żadnych konkretnych in-
formacji osobie, która chciałaby od-
tworzyć kod programu. Jeśli ten frag-
ment kodu zostanie przekopiowa-
ny do naszego środowiska progra-
mistycznego, to nie uda nam się go
skompilować, ponieważ dostaniemy
automatycznie listę błędów o tym, że
takie identyfikatory już istnieją.

Jak zaciemnić nasz kod aplika-

cji przy użyciu Dotfuscator Communi-
ty Edition
? Z menu Start>Programy-
>Visual Studio>Visual Studio Tools

uruchamiamy Dotfuscator Commu-
nity Edition
. Pojawi się okno aplikacji.
Ponieważ korzystamy z najprostszej
wersji aplikacji, będziemy mieć bar-
dzo mały zakres dostępnych funkcji.
Na początku tworzymy nowy projekt.
Na zakładce Input wskazujemy plik
*.exe lub bibliotekę *.dll, którą chcemy
zaciemnić. Tutaj odwołamy się do na-
szej aplikacji kalkulator.exe. Następny
krok to zapisanie naszego projektu tak,

Listing 5.

Ta sama funkcja po procesie zaciemniania

private

void

a

(

a

b

)

{

while

(

b

.

a

())

{

a

=

b

.

a

(

true

);

a

.

a

();

a

(

a

);

}

}

Listing 6.

Plik dla Obfuscatora z mapowaniami

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE dotfuscatorMap SYSTEM

"http://www.preemptive.com/

dotfuscator/dtd/dotfuscatorMap_v1.1.dtd">

<dotfuscatorMap version="1.1">

<header>

<timestamp>2007-03-18T13:00:05

</timestamp>

<product version="3.0.2005.16132"

user

="Artur Zarski"

serial="43056-391">Dotfuscator

(

tm

)

Community Edition</product>

</header>

<mapping>

<module>

<name>Kalkulator.exe</name>

<type>

<name>Kalkulator.Form1</name>

<newname>a</newname>

<methodlist>

<method>

<signature>void

()

</signature>

<name>.ctor</name>

</method>

<method>

<signature>void

(

object, System.EventArgs

)

</signature>

<name>button1_Click</name>

<newname>a</newname>

</method>

<method>

<signature>void

(

bool

)

</signature>

<name>Dispose</name>

<newname>a</newname>

</method>

Listing 7.

Przykładowy kod w Java

import java.io.*;

class

CzytaTekst

{

public

static

void

main

(

String

[]

args

)

{

BufferedReader

br

=

new

BufferedReader

(

new

InputStreamReader

(

System

.

in

))

;

Try

{

System

.

out

.

println

(

"Podaj imie?"

)

;

String

s

=

br

.

readLine

()

;

System

.

out

.

println

(

"Witaj, "

+

s

+

"!"

)

;

}

catch

(

IOException

e

){}

}

}

background image

hakin9 Nr 6/2007

www.hakin9.org

Obrona

44

aby powstał plik z mapowaniem nazw
oraz plik konfiguracyjny. Kolejny krok
to przejście do zakładki Build. W tej za-
kładce możemy zdefiniować, gdzie zo-
stanie umieszczony plik wynikowy (Ry-
sunek 4). Ostatnim krokiem jest uru-
chomienie opcji Build. W wyniku dzia-
łania aplikacji dostajemy zmodyfikowa-
ny plik kalkulator.exe, plik konfiguracyj-
ny obfuscatora oraz plik z mapowaniem
nazw pól, metod i zmiennych na te, któ-
re będą występować po zakończonym
procesie. Na Listingu 6 fragment pliku z
mapowaniem – oczywiście plik ten mo-
żemy modyfikować sami.

Ostatnim krokiem, który musimy

wykonać, jest sprawdzenie, czy pro-
ces zaciemniania się udał. W tym
celu posłużymy się ILDASM’em.
Uruchamiamy ILDASM i otwieramy
nowy plik kalkulator.exe

Na Rysunku 5. widać, jak został

zmieniony nasz plik. Jest on zupeł-
nie nieczytelny i nie jest teraz możli-
we jego proste odtworzenie do wer-
sji źródłowej.

Java i okolice

Do tej pory pisałem o .NET i skupi-
łem się głównie na tej platformie. Te-
raz spróbujemy odpowiedzieć na py-
tanie, jak wygląda sprawa zaciem-
niania kodu i deasemblacji w Java.
Załóżmy że mamy taki kawałek kodu
źródłowego, jak na Listingu 7.

Po skompilowaniu tego fragmen-

tu kodu dostaniemy plik. *.class. Po-
dejrzenie jego zawartości nic oczy-
wiście nam nie da. Możemy użyć
jednego z wielu dekompilatorów (ja
użyłem Java DeCompilator – http://
sourceforge.net/projects/dcompiler/
).
W jego wyniku dostaniemy taki kawa-
łek kodu, jak na Listingu 7.

Kod ten nie jest idealny, ale daje

pewien wgląd w kod źródłowy. Projek-
tów OpenSource na stronie sourcefor-
ge
jest całkiem sporo. Naturalnie, jedne
działania są lepsze, drugie gorsze. Pro-
blem jest tu w przypadku obfuscatorów,
których jest jak na lekarstwo. Wszystkie
dobre programy są niestety płatne (po-
dobnie jak w przypadku .NET)

Podsumowanie

Jak widać, proces zaciemniania ko-
du pozwala nam na zaszyfrowanie

Rysunek 3.

Kod programu w ILDASM

Listing 8.

Kod po dekompilacji programem JavaDeCompilator

final

class

CzytaTekst

extends

java

.

lang

.

Object

{

CzytaTekst

()

{

java

.

lang

.

Object

()

;

}

public

static

void

main

(

java

.

lang

.

String

[]

arg1

)

{

arg1

a1

=

new

java

.

io

.

InputStreamReader

(

java

.

io

.

BufferedReader

(

a1

.

readLine

()

a2

=

readLine

#

()

Ljava

.

lang

.

String

;

new

java

.

lang

.

StringBuilder

()

;

}
}

Rysunek 4.

Opcje umieszczenie finalnej wersji programu

background image

Rysunek 5.

Ta sama aplikacja po zaciemnieniu kodu w ILDASM

naszej pracy. Niestety jest też druga
strona medalu – jeśli nasz program
będzie zaciemniony, a my jako pro-
gramiści nie będziemy mieli kopii
zapasowej wersji oryginalnej i plików
źródłowych, to również i nam samym
nie uda się odzyskać efektów naszej
pracy. Pamiętajmy o kopii zapasowej
tworzonych przez nas prac.

Czy istnieją tylko te programy? A co

z innymi językami programowania? Ta-
kie pytania przychodzą automatycznie
do głowy. Jeśli chodzi o inne programy,
to jest ich na rynku całkiem sporo – od
darmowych z bardzo ograniczoną funk-
cjonalnością, po bardzo drogie posia-
dające rozbudowane funkcjonalności.
Większość producentów oferuje narzę-
dzia dla różnych języków programowa-
nia – zdecydowanie jednak najbardziej
popularnymi są platforma .NET oraz
Java. Z obfuscatorów dla .NET moż-
na najbardziej popularnymi są: {smar-
tassembly}, Dotfuscator .NET Obfu-
scator, Decompiler.NET, Deploy.NET,
Salamander .NET Obfuscator, Seman-
tic Designs: C# Source Code Obfusca-
tor, Spices.Net, Thinstall, Demeanor for
.NET.
l

R

E

K

L

A

M

A

background image

www.hakin9.org

hakin9 Nr 6/2007

46

Obrona

O

becny standard 802.16 to IEEE Std
802.16e-2005, zatwierdzony w grud-
niu 2005. Poprzednim standardem

był IEEE Std 802.16-2004, który zastąpił
802.16-2001, 802.16c-2002, i 802.16a-2003.
Standard IEEE 802.16-2004 (802.16d) może
być używany do adresowania jedynie stałych
systemów. 802.16e dodaje komponenty mo-
bilne do charakterystyki standardu.

IEEE 802.16e-2005 (nazywany tak formal-

nie, choć wciąż lepiej znany jako 802.16e lub
Mobile WiMAX) zapewnia lepszą modulację
schematów określonych w oryginalnym (sta-
łym) standardzie WiMAX. Umożliwia dzia-
łanie stałym, bezprzewodowym i mobilnym
aplikacjom tzw. Non Line of Sight (NLOS) po-
przez poprawę sygnału OFDMA (Orthogenal
Frequency Division Multiple Access).
SOFD-
MA (Scalable OFDMA) poprawia OFDM256
dla aplikacji NLOS poprzez:

• zwiększenie zasięgu NLOS dzięki utyli-

zacji zaawansowanych schematów anten
hybrydowych – Automatic Retransmission
Request
(hARQ),

• zwiększenie mocy poprzez użycie sub-

channelization (pod-kanałów), a w konse-

kwencji tego polepszenie zasięgu wewnątrz
pomieszczeń,

• dzięki wprowadzeniu wysokiej jakości tech-

nik kodujących, takich jak Turbo Coding i
Low-Density Parity Check (LDPC), następu-
je poprawa bezpieczeństwa i jakości NLOS,

• wprowadzając podkanały do operacji do-

wnlink, udostępnia się tym samym admini-
stratorom wymianę zasięgu na pojemność
i na odwrót,

• poprawa zasięgu przez wprowadzanie sys-

temu anten adaptacyjnych (Adaptive Anten-
na Systems
(AAS)) i technologii Multiple
Input Multiple Output
(MIMO),

Niebezpieczeństwa

sieci WiMAX

Paweł Baszkowski IT Studio

stopień trudności

Forum WIMAXa (Worldwide Interoperability for Microwave

Access) stworzono w czerwcu 2001, by promowało zgodność

i operatywność standardu sieciowego IEEE 802.16. Opisuje

ono WiMAX jako standardową technologię umożliwiającą

bezprzewodowy szerokopasmowy dostęp do Sieci jako

alternatywę dla połączeń kablowych i DSL.

Z artykułu dowiesz się

• o technologii WiMAX,
• o standardzie IEEE 802.16.e,
• o ograniczeniach zasięgu,
• o niebezpieczeństwach konfiguracji.

Co powinieneś wiedzieć

• o technologiach sieciowych,
• o technologiach bezprzewodowych.

background image

Niebezpieczny WiMAX

hakin9 Nr 6/2007

www.hakin9.org

47

• eliminowanie zależności prze-

pustowości danego kanału na
podwykonawczym dzieleniu ka-
nału umożliwia równą wydaj-
ność dla dowolnego kanału RF
(radiowego) w zakresie 1,25-20
Mhz,

• wzbogacony algorytm transfor-

macji – Fast Fourier transform
(FFT) – może tolerować więk-
sze opóźnienia, zwiększając
oporność dla zależności wielo-
ścieżkowych.

Z drugiej strony, 802.16-2004 (Wi-
MAX) oferuje korzyść dostępnych
produktów komercyjnych i imple-
mentację zoptymalizowaną dla
stałego dostępu. Stały WiMAX
jest popularnym standardem wśród
alternatywnych dostawców usług
i operatorów w rozwijaniu obszarów
ze względu na niski koszt rozmiesz-
czenia zaawansowanej wydajności
w stałym środowisku. Stały WiMax
jest to również potencjalny stan-
dard dla bezprzewodowych stacji
bazowych, takich jak komórki, Wi-
Fi, a także przenośny WiMAX.

SOFDMA i OFDM256 nie są

kompatybilne, a więc większość
sprzętu musi być wymieniona. Jed-
nak niektórzy producenci planują
zapewnić ścieżkę migracyjną dla
starszego wyposażenia kompaty-
bilności SOFDMA, który mógłby
być użyteczny dla tych sieci, które
mają już poczynione inwestycje
w OFDM256. Niestety wpływa to
na małą liczbę użytkowników i ope-
ratorów.

Użycie

Pasmo i dostępność WiMAX są
wygodne dla następujących poten-
cjalnych aplikacji:

• podłączenia hotspotów Wi-Fi

pomiędzy sobą i z dostępem do
Internetu,

• zapewniając bezprzewodową

alternatywę dla kabla i usług
DSL do ostatniego km szeroko-
pasmowego dostępu,

• zapewniając szybką prędkość

danych przenośnych i usług
telekomunikacyjnych,

• zapewniając podzielny dostęp

do sieci Internet jako część pla-
nu biznesowego ciągłości pra-
cy. To znaczy, w przypadku po-
siadania stałego i bezprzewo-
dowego Internetu, szczególnie
od niezwiązanych dostawców,
bardzo rzadko następuje do-
stęp do usługi poprzez ten sam
zasięg serwisowy,

• zapewniając połączenia tzw.

nomadic.

Dostęp

szerokopasmowy

Wiele firm szczegółowo zastana-
wia się nad użyciem technologii
WiMAX jako last mile (połącze-
nia punkt-wielopunkt) połączenie
w drogich opłatach za przesył da-
nych. Spowodować może to obniż-
kę cen zarówno dla klientów domo-
wych, jak i biznesowych.

W miejscach, gdzie brak kabli

lub sieci telefonicznych WiMAX
może stanowić ciekawą alternatywę
dla szerokopasmowego dostępu,
który byłby ekonomicznie niedo-
stępny (zbyt drogi). Niezależnie od
WiMAX, wielu operatorów używa
stałych technologii bezprzewodo-
wych dla usług szerokopasmowych.

Zestawy WiMAX są dostępne

zarówno do użytku wewnętrznego,
jak i zewnętrznego. Zestawy do
własnoręcznej instalacji wewnątrz
pomieszczeń są wygodne, ale użyt-
kownik musi być bliżej stacji bazowej
WiMAX niż w przypadku profesjo-
nalnie instalowanych zestawów.
Dodatkowo, wewnętrzne zestawy
instalacyjne wymagają kosztów
w bardziej złożoną infrastrukturę
sieciową, jak również kosztów ope-
racyjnych (wynajem pomieszczeń,
obsługa) w związku z dużą ilością
stacji bazowych, wymaganych, by
pokryć dany obszar. Wewnętrzne
zestawy są porównywalne do mo-
demu kablowego lub modemu DSL.
Na zewnątrz zestawy umożliwiają
użytkownikowi dużo większe odle-
głości od stacji bazowych WiMAX
i z reguły wymagają profesjonalnej
instalacji. Instalacje zewnętrznych
zestawów są porównywalne do in-
stalacji anten satelitarnych.

Ograniczenia

Mówi się, że WiMAX dostarcza 70
Mbit/s na ponad 112 kilometrów.
Jest to prawdziwe stwierdzenie, ale
dzieje się tak przy idealnych oko-
licznościach. W praktyce oznacza
to, że tzw. środowisko line-of-sight,
gdzie możesz dostarczyć syme-
trycznie prędkość to 10Mb/s dla 10
km, a w wysoko zurbanizowanych
środowiskach

prawdopodobnie

30% instalacji może nie być tzw.
line-of-sight i dlatego użytkownicy
mogą otrzymać najwyżej 10Mbps
dla 2 km. WiMAX ma pewne po-
dobieństwa do DSL. Przykłado-
wo, można mieć albo wysoką prze-
pustowość łącza, albo daleki za-
sięg, ale nigdy obu jednocześnie.
Następna funkcja, jaką warto wziąć
pod uwagę, to fakt, że WiMAX dzie-
li pasmo pomiędzy użytkowników w
danym zasięgu radiowym, a więc
jeśli jest wielu użytkowników w po-
jedynczym sektorze, każdy obniży
przepustowość łącza. Jednakże in-
aczej niż np. SDSL, gdzie moc sy-
gnalu jest bardzo zauważalna dla
przełożenia 5:1 (dzieje się tak np.
wtedy, gdy łącze jest współdzielo-
ne z inną dużą firmą), w odniesie-
niu do sieci WiMAX ten problem nie
występuje.

Standardowo każda komórka

ma całe 100Mbps, tak więc jest cała
moc sygnalu. W praktyce, wielu użyt-
kowników będzie miało zakres usług
na poziomie 2-, 4-, 6-, 8- lub 10Mbps
i pasmo może być współdzielone.
Jeśli sieć staje się zajęta, model
biznesowy zaczyna być bardziej po-
dobny do GSM lub UMTS niż DSL.
Łatwo jest przewidzieć wymagania
co do pojemności, jeśli doda się
klientów, dokładając dodatkowe kar-
ty radiowe w tym samym sektorze,
by zwiększyć pojemność.

Aplikacje mobilne

Niektóre firmy telekomunikacyjne
oferują WiMAX jako zwiększenie pa-
sma dla różnych aplikacji. Dla przy-
kładu, firma Sprint Nextel ogłosiła
mniej więcej w połowie roku 2006, że
będzie inwestować około 3 milionów
USD w budowę technologii WiMAX
w ciągu kilku najbliższych lat.

background image

hakin9 Nr 6/2007

www.hakin9.org

Obrona

48

Technologia ta może zapew-

niać pasmo o dużej przepustowo-
ści dla internetu lub telefonu ko-
mórkowego ze zdalnych lokaliza-
cji, z powrotem do szkieletu Inter-
netu. Mimo faktu, że wydajność
względem kosztu sieci WiMAX w
zdalnej aplikacji będzie wyższa,
nie ma ograniczeń co do konkret-
nych aplikacji oraz może być od-
powiedzią na obniżanie kosztów
łącz T1/E1.

W niektórych krajach rozwija-

jących się poprzez ograniczenia w
infrastrukturze okablowania, kosz-
ty instalacji WiMAX w połączeniu
z istniejącą siecią telefonii komór-
kowej są dużo mniejsze w porówa-
niu do rozwijania rozwiązań kablo-
wych. Miejsca o niskim zagęszcze-
niu i płaskim terenie są wymarzo-
ne dla zasięgu sieci WiMAX. Dla
krajów, które opuściły strukturę ka-
blową ze względu na koszty i nie-
korzstne uwarunkowania geome-
tryczne, WiMAX może wzboga-
cić bezprzewodową infrastruktu-
rę w niedrogi, zdecentralizowany,
wdrożeniowo przyjazny i efektyw-
ny sposób.

Techniczne informacje

WiMAX to termin określający stan-
dard, jak wspominane wcześniej,
implementacji IEEE 802.16 sieci
bezprzewodowych, w podobny
sposób do Wi-Fi będącego im-
plementacjami standardów sieci
bezprzewodowych (IEEE 802.11).
Jednak WiMAX jest zupełnie różny
od Wi-Fi w sposobie działania.

Funkcjonalność WiMax obejmu-

je nie tylko rozbudowaną warstwę
fizyczną standardu, rozszerza się
także na: konstrukcję protokołu
warstwy MAC, skalowalność (moż-
liwości rozwoju), architekturę oraz
bezpieczeństwo.

Podstawową funkcją warstwy

MAC (Medium Access Control) jest
dostarczenie interfejsu niezależne-
go od medium dla warstwy fizycz-
nej. Warstwa fizyczna IEEE 802.16
ma charakter bezprzewodowy, dla-
tego też warstwa MAC tego stan-
dardu odpowiada za efektywne
zarządzanie zasobami radiowymi.

Protokół warstwy MAC został za-
projektowany głównie dla architek-
tur punkt-wielopunkt i mesh. Głów-
ne cechy i zadania protokołu war-
stwy MAC:

• zorientowany połączeniowo,
• zarządza korzystaniem z zaso-

bów radiowych,

• dostarcza mechanizmy rozróż-

niania usług QoS,

• obsługuje funkcje ARQ (Automa-

tic Repeat Request),

• zarządza procesami wejścia i wyj-

ścia użytkowników z systemu,

• tworzy PDU (Protocol Data Unit),
• wspiera ATM (Asynchronus

Transfer Mode), IP,

• zaprojektowany dla bardzo wy-

sokich przepustowości (do 268
Mb/s w każdą stronę) warstwy
fizycznej.

Bardzo ważną cechą systemu
opartego na standardzie 802.16
jest możliwość rozwijania istnieją-
cej struktury sieci w celu spełnienia
przyszłych potrzeb użytkowników,
praktycznie bez żadnej ingerencji
w poziom dotychczas świadczo-
nych usług. Możliwe jest to dzięki:

• planowaniu komórek (cell plan-

ning) w sektorze i dzieleniu ich
na mikrokomórki,

• możliwości wyboru odpowied-

niej modulacji (w celu zwiększe-
nia prędkości transferu),

• możliwości stosowania różnych

metod dostępu (w celu zapew-
nienia stałej lub zmiennej prze-
pływności bitowej),

• optymalne, wielokrotne wyko-

rzystanie tych samych często-
tliwości (wzrost pojemności
systemu bez redukcji zasięgu).

Jeśli operator posiada pasmo 20
MHz, to, aby zaspokoić wymagania
swoich użytkowników, ma możli-
wość alokacji dwóch sektorów po 10
MHz każdy lub czterech po 5 MHz.
Ponadto w celu zwiększenia liczby
użytkowników, mogących korzy-
stać z zasobów systemu, powinien
zwiększyć kierunkowość sektorów,
zachowując odpowiedni zasięg

i przepustowość. Dodatkowo moż-
liwe jest wielokrotne wykorzystanie
tego samego pasma częstotliwości,
poprzez odpowiednią separację an-
ten stacji bazowych. W ten sposób
operator uzyskuje większy zasięg
swojego sygnału.

Operator telekomunikacyjny ma

możliwość zaprojektowania struktu-
ry swojego systemu WiMAX w róż-
noraki sposób. Istnieją trzy podsta-
wowe architektury sieci WiMAX:

• Punkt-Punkt,
• Punkt-Wielopunkt,
• Mesh (każdy z każdym).

Pierwsza wersja specyfikacji 802.16
została zaprojektowana dla szero-
kopasmowych, bezprzewodowych
aplikacji punkt-wielopunkt (Last Mi-
le Access
). Standard wspiera usłu-
gi o wysokiej przepustowości i wy-
sokich wymaganiach na QoS oraz
pozwala wielu użytkownikom koń-
cowym współdzielić terminal. Pod-
stawowa konfiguracja sieci WiMAX
składa się z wysoko położonej sta-
cji bazowej i stacji klienckich, zloka-
lizowanych w domach lub biurach.
Typowy promień komórki dla takiej
architektury osiąga 6-10 km (w wa-
runkach NLOS i optymalnej przepu-
stowości), co daje sieci WiMAX w
takiej infrastrukturze kilkadziesiąt
kilometrów zasięgu.

Ponadto, aby podłączyć skupio-

nych w jednej lokalizacji użytkow-
ników do siebie nawzajem oraz do
stacji bazowej na długich dystan-
sach stosuje się także łącza punkt-
punkt (backhaul).

Późniejsze wydania standardu

umożliwiają pokrycie większych ob-
szarów dostępowych, zalecając ar-
chitekturę oczkową typu mesh. Po-
zwala ona użytkownikowi łączyć się
bezpośrednio z innym klientem i w
ten sposób uzyskiwać dostęp do za-
sobów sieci WiMAX. Pomimo swojej
dużej złożoności architektura ta jest
łatwo skalowalna, rozwiązuje tak-
że problem interferencji w sieciach
pracujących w paśmie nielicencjo-
nowanym. Dodawanie nowych łącz
802.16 jest stosunkowo proste i ta-
nie, istnieją ścieżki zastępcze dla

background image

Niebezpieczny WiMAX

hakin9 Nr 6/2007

www.hakin9.org

49

danej transmisji, dlatego też cała
komunikacja jest stabilna.

Z punktu widzenia użytkownika,

oprócz zapewnienia stabilności
usług, z których korzysta, priory-
tetem jest zabezpieczenie danych,
które planuje przesłać w sieci.

Bezpieczeństwo

Standard WiMAX, gwarantując
transmisję o wysokiej przepływno-
ści, zapewnia także bezpieczeń-
stwo wymiany danych na wysokim
poziomie. Grupa IE EE 802.16 za-
proponowała następujące mecha-
nizmy zabezpieczania transmisji:

• autentyfikacja terminala (wy-

miana certyfikatów w celu unie-
możliwienia wejścia do systemu
podejrzanym urządzeniom),

• autentyfikacja użytkownika (re-

alizowana za pomocą protoko-
łu EAP – Extensible Authentica-
tion Protocol
),

• szyfrowanie danych (realizowa-

ne za pomocą protokołu DES
Data Encryption Standard lub
AES – Advanced Encryption
Standard
),

• szyfrowanie każdej usługi uni-

kalnym kluczem prywatnym,
asocjacja odmiennym syste-
mem zabezpieczeń.

Czy z bezpieczeństwem WiMAX
jest aż tak dobrze? Całkiem nieko-
niecznie. Portal prowadzony przez
firmę analityczną ABI Research in-
formuje, że gdy tylko ruszy pierw-
sza sieć WiMAX, od razu zacznie-
my się dowiadywać o tym, jak wie-
le jest w nich luk. Podzielono je już
nawet na kategorie.

W Polsce WiMAX nie rozwija

się zbyt szybko. Z pewnością jest
bezpieczniejszy od WiFi, ale do
najbezpieczniejszych sieci nie na-
leży. Wspomniane kategorie błę-
dów to:

• luki w komputerach użytkowni-

ków,

• problemy z systemem wykrywa-

nia włamań,

• dziury w innych urządzeniach

podłączanych do sieci WiMAX.

ABI Research wspomina, że termi-
nale wykorzystywane przez użyt-
kowników muszą zostać wypo-
sażone w systemy umożliwiające
sprawne przetwarzanie kluczy szy-
frujących AES, a producenci innych
urządzeń sieciowych powinni do-
dać do nich sprzętowe i programo-
wy systemy zabezpieczające i wy-
krywające włamania.

Firma analityczna ABI Rese-

arch ostrzega przed licznymi luka-
mi w zabezpieczeniach
technolo-
gii WiMAX. Jeśli nie uczysz się na
błędach przeszłości, będziesz mu-
siał je powtórzyć
- mówi wicepre-
zes ABI, Stan Schatt.

Pierwsi użytkownicy sieci Wi-Fi

żyli w złudnym poczuciu bezpieczeń-
stwa do czasu, aż zaczęto odkrywać
poważne błędy. WiMAX Forum pod-
kreśla, że technologia WiMAX jest
znacznie bardziej bezpieczna od
Wi-Fi. W rezultacie użytkownicy Wi-
MAKSA mogą podobnie łudzić się,
że są bezpieczni.

Zdaniem Schatta, o poważnych

dziurach w zabezpieczeniach za-
czniemy dowiadywać się, gdy tylko
ruszy pierwsza duża sieć WiMAX.

Błędy w tej technologii podzie-

lono na trzy kategorie: luki w kom-
puterach użytkowników, problemy
z systemem wykrywania włamań
oraz dziury w innych urządzeniach
podłączanych do sieci WiMAX.

ABI podkreśla, że terminale

wykorzystywane przez użytkow-
ników muszą zostać wyposażone
w systemy umożliwiające sprawne
przetwarzanie kluczy szyfrujących
AES, a producenci innych urzą-
dzeń sieciowych powinni dodać

do nich sprzętowe i programowy
systemy zabezpieczające i wykry-
wające włamania.

Szczególnie niebezpieczny jest

fakt, iż poza kilkoma wielkimi produ-
centami sprzętu sieciowego jak Mo-
torola, Nortel czy Alcatel, niewiele
firm zainteresowanych technologią
WiMAX ma wiedzę i doświadczenie
konieczne do zabezpieczenia sieci.
Z drugiej jednak strony, braki te to
idealna nisza rynkowa dla niewiel-
kich firm specjalizujących się w za-
bezpieczeniach.

Zdaniem analityków ABI istnie-

je więc pole do popisu dla firm ta-
kich jak Cavium Networks, AirTight
Networks czy Redline Communica-
tions, które potrafią zadbać o bez-
pieczeństwo sieci. Muszą one jed-
nak pamiętać, że, jak wskazują do-
świadczenia z sieciami Wi-Fi, dla
klientów końcowych najbardziej
atrakcyjne są rozwiązania zintegro-
wane, więc mniejsze firmy powinny
oferować swoje produkty we współ-
pracy z wymienionymi powyżej gi-
gantami.

Nowości

Koncern Intel poinformował o ukoń-
czeniu prac nad prototypem ukła-
du WiMAX, którego pierwsze eg-
zemplarze zostaną zainstalowane
w notebookach na początku 2008
roku jako komponent chipsetu Wi-
MAX Connection 2300.

Nowy chipset WiMAX firmy Intel

został zaprezentowany na konfe-
rencji 3G World Congress and Mo-
bility Marketplace
w Hongkongu.
To krok naprzód w zakresie realiza-
cji planu koncernu Intel, jakim jest
stworzenie platformy komunikacyj-
nej, w całości opartej na techno-
logii WiMAX, jaka ma szansę zdo-
być większą popularność niż łącz-
ność Wi-Fi. Układ WiMAX Connec-
tion 2300 łączy zalety obydwu tych
technologii.

Kolejnym krokiem na ścieżce

rozwoju technologii WiMAX bę-
dzie planowane roczne testowanie
układów, tak aby w 2008 roku trafić
mogły do konsumentów. l

O autorze

Własciciel i założyciel IT Studio to inż.
informatyk z wieloletnim doświadcze-
niem w branży IT. Zarządzał sieciami
i telekomunikacją w logistyce i ban-
kach. Kierował i uczestniczył w wielu
wdrożeniach i projektach informatycz-
nych. Kontakt z autorem:
pbaszkowski@it-studio.pl
(www.it-studio.pl).

background image

www.hakin9.org

hakin9 Nr 6/2007

50

Obrona

N

owy model pracy wymaga zupełnie in-
nego spojrzenia na bezpieczeństwo
firmy. Osiągnięcie żądanego poziomu

bezpieczeństwa jest w tym wypadku dużo trud-
niejsze niż w przypadku hermetycznego środo-
wiska sieci firmy. Nie dość, że w firmach poja-
wia się coraz więcej sprzętu przenośnego, to
jednocześnie zwiększa się ilość danych, jaka
jest na nim przechowywana. Są to głównie da-
ne stanowiące własność intelektualną instytu-
cji, informacje niezbędne do prowadzenia biz-
nesu, dane klientów i pracowników.

Niniejszy artykuł kompleksowo ujmuje pro-

blem bezpieczeństwa komputerów przenośnych
oraz przedstawia środki i praktyki w zakresie ich
ochrony, a także dotyka kwestię minimalizacji
ryzyka wykorzystywania laptopów w instytucji.

Artykuł skierowany jest przede wszystkim

do osób zajmujących się zarządzaniem i admi-
nistracją bezpieczeństwem IT w firmach, choć
część podawanych tu informacji ma charakter
bardzo ogólny i z powodzeniem mogą być one
odniesione do użytku prywatnego.

Mobilne (nie)bezpieczeństwo

Zagrożenia związane z komputerami przeno-
śnymi w łatwy sposób można umownie podzie-

lić na: zagrożenia fizyczne, zagrożenia danych,
zagrożenia komunikacyjne oraz zagrożenia
osobowe.

Zagrożenia fizyczne to w przypadku laptopów

zwłaszcza możliwość utraty urządzenia. Laptopy
są szczególnie podatne na zniszczenie, zagubie-
nie, uszkodzenie, a przede wszystkim, wyjątkowo
często padają łupem złodziei, choćby ze względu
na stosunkowo wysoką cenę oraz możliwość ła-
twej odsprzedaży. Jeśli skradziony laptop zawie-
ra cenne dane, straty mogą być niewspółmierne
do wartości samego urządzenia. Jednocześnie

Mobilne

(nie)bezpieczeństwo

Piotr Błaszczeć, Tadeusz Calanca

stopień trudności

Praca mobilna to wielkie wyzwanie, jakim jest zapewnienie

odpowiedniego poziomu bezpieczeństwa firmowych zasobów,

które wraz z pracownikiem migrują poza obszar firmy. Niskie

i wciąż spadające ceny laptopów powodują, iż coraz częściej

wykorzystywane są one jako podstawowe narzędzie pracownika,

często też całkowicie wypierają tradycyjny komputer desktopowy.

Z artykułu dowiesz się

• dlaczego laptopy to ogromne niebezpieczeń-

stwo dla organizacji,

• jakie zagrożenia związane są z wykorzysta-

niem sprzętu przenośnego,

• jakie środki uchronią firmę przed wyciekiem

i utratą danych z urządzeń przenośnych.

Co powinieneś wiedzieć

• znać podstawowe zasady ochrony danych oraz

pojęć związanych z sieciami WAN/WLAN.

background image

Mobilne (nie)bezpieczeństwo

hakin9 Nr 6/2007

www.hakin9.org

51

mogą być to straty nie tylko stricte ma-
terialne, ucierpieć może też wizerunek
danej instytucji i zaufanie do niej.

Przykłady takich incydentów moż-

na mnożyć, przytoczymy tu tylko naj-
głośniejsze sprawy z ubiegłego roku:

• z domu jednego z pracowników

United States Veteran’s Admini-
stration
(urzędu zajmującego się
w USA sprawami weteranów),
skradziono służbowego laptopa,
na którym znajdowały się dane
osobowe 26,5 mln żyjących osób,

• z bagażnika samochodu pracow-

ników firmy Ernst & Young znik-
nął laptop, na którym – jak się
okazało wkrótce – znajdowały
się dane przeszło 230 000 osób,
głównie pracowników firm Sun,
IBM, Cisco, BP oraz Nokia.

Należy jednak zwrócić uwagę na fakt,
iż większość kradzieży nie jest w ogó-
le związana z wartością danych, jakie
znajdują się na urządzeniu. Działania
złodziei mają zwykle na celu jedynie
zdobycie korzyści majątkowych, z ty-
tułu odsprzedania urządzenia.

Zagrożenie danych ma miejsce

w sytuacji, w których bezpośrednio na-
rażamy dane na utratę lub dostęp osób
nieuprawnionych. Laptopy, tak samo
jak inne komputery, narażone są na
bezpośredni atak hakera, który uzyskał
fizyczny dostęp do urządzenia. Szcze-
gólnie zaś podatne na atak są systemy,
w których nie wykorzystuje się autory-
zacji, uprawnień, szyfrowania czy też
mechanizmów rozliczeniowych.

Zagrożenia komunikacyjne to

zagrożenia wynikające z faktu podłą-
czenia urządzenia do sieci telekomu-
nikacyjnych. Laptopy narażone są tu
na działanie wszelkiej maści malware
oraz na zdalne ataki hakerów.

Zagrożenia osobowe to zagrożenia

związane z personelem wykorzystują-
cym sprzęt bezprzewodowy. O tych za-
grożeniach zapomina się najczęściej,
a przecież użytkownik nie znający
zasad bezpiecznego posługiwania się
sprzętem przenośnym stanowi ogrom-
ne zagrożenie dla całej firmy.

Spektrum zagrożeń jest bardzo

szerokie. Istnieje wiele zagrożeń
mających ogólne zastosowanie do

systemów komputerowych, jak rów-
nież wiele źródeł niebezpieczeństw,
wynikających z zastosowania sprzę-
tu przenośnego. Można więc okre-
ślić ryzyko wykorzystania sprzętu
przenośnego jako bardzo wysokie.

Pilnuj swojego laptopa

Kluczowym ogniwem procesu za-
pewnienia bezpieczeństwa jest pełna
rozliczalność, co w praktyce oznacza,
że którekolwiek z zasobów firmy po-
winny być przypisane do pracownika.
Odnosząc to do laptopów i innych
urządzeń przenośnych, podstawo-
wym zadaniem jest ustalenie, kto jest
odpowiedzialny za urządzenie, nawet
w sytuacji, w której z danego urzą-
dzenia korzysta wiele osób.

Przykładowo, laptop może być

wykorzystywany jednocześnie przez
wiele działów firmy. Przed prezenta-
cją prowadzący pobiera urządzenie
od wyznaczonej osoby odpowiedzial-
nej za sprzęt. Zadaniem osoby odpo-
wiedzialnej jest przekazanie sprzętu
i odnotowanie tego faktu w formie pi-
semnej (np. w dzienniku), a następnie
odnotowanie zwrotu sprzętu.

Wykorzystanie laptopa powinno

być uzasadnione potrzebami wynikają-
cym z pełnionej funkcji czy stanowiska
w instytucji oraz być każdorazowo po-
twierdzone pisemną zgodą kierownika
jednostki. Zgoda ta powinna przenosić
na użytkownika obowiązek ochrony
powierzonego urządzenia. Obowiązek
ten powinien bezpośrednio wynikać
z przyjętej polityki bezpieczeństwa.

Polityka bezpieczeństwa powinna

w prosty sposób określać, co dany
użytkownik może robić, a czego po-
winien się wystrzegać. W szczegól-
ności powinna określać ona właściwe
praktyki w zakresie bezpiecznego
korzystania z laptopów:

• Proces zabezpieczania laptopa po-

winien rozpocząć się już na etapie
jego kupna: do firmy kupujmy urzą-
dzenia dedykowane, pochodzące
od uznanych producentów, zapew-
niające odpowiedni, możliwie szyb-
ki serwis u klienta oraz posiadające
odpowiednie zabezpieczenia.

• Laptopy ze względu na swoją wa-

gę i rozmiary doskonale sprawują

się podczas podróży samolotem
lub innym środkiem lokomocji, ale
jednocześnie są przez to o wiele
łatwiejsze do zgubienia bądź ukry-
cia przez potencjalnego złodzieja.
Powierzony laptop powinno się
więc mieć zawsze możliwie blisko
siebie. W szczególności zabro-
nione powinno być pozostawianie
laptopa bez osobistego nadzoru
w samochodach, przedziałach ko-
lejowych, przechowalniach bagażu,
salach konferencyjnych oraz innych
miejscach, w których użytkownik
nie ma możliwości sprawowania
nad nimi skutecznego nadzoru.

• Urządzenie powinno być przeno-

szone w torbie, która nie zdradza
swojej zawartości, przykładowo:
jeśli korzystamy z oryginalnych
toreb producentów laptopów,
emblemat HP, czy Dell może
zachęcać złodzieja do podjęcia
kradzieży. Zamiast tego, lepiej
schować komputer w plecaku lub
w nie przyciągającej uwagi prze-
stępców torbie, która nie będzie
sugerowała cennej zawartości.

• Jeśli urządzenie będzie przez

dłuższy czas wykorzystywane
w jednym miejscu, pomocnym roz-
wiązaniem jest korzystanie z linek
zabezpieczających. Prawie każdy
laptop ma jedno miejsce (mały
owalny lub prostokątny otwór)
specjalnie wzmocnione, które służy
do podpięcia stalowej linki. Jeśli już
jesteśmy zmuszeni do pozostawie-
nia sprzętu bez dozoru w punktach
ogólnodostępnych np. biurze, pod-
pina się go do nogi stolika, grzejnika
czy czegokolwiek innego, co może
zapobiec próbie kradzieży.

• Każdy firmowy laptop powinien

być wyraźnie oznakowany. Najle-
piej posłużyć się rzucającym się
w oczy oznaczeniem, które będzie
trudne do usunięcia przez złodzie-
ja, np. wygrawerowanie numeru
inwentarzowego z nazwą firmy.
Takie oznaczenie może zniechęcić
złodzieja do kradzieży, gdyż ozna-
czony laptop dużo trudniej będzie
odsprzedać innej osobie.

• Osoba odpowiedzialna w firmie

za sprzęt komputerowy powinna
prowadzić ewidencję urządzeń

background image

hakin9 Nr 6/2007

www.hakin9.org

Obrona

52

przenośnych, zawierającą przy-
najmniej: model, numer seryjny,
kopię dowodu zakupu oraz opis
laptopa.

Chroń swój system

Znając zasady ochrony fizycznej,
można przystąpić do zabezpiecze-
nia samego systemu i danych na nim
przetwarzanych. W tym miejscu na-
leży zwrócić uwagę, że laptop z za-
łożenia nie jest serwerem i właściwie
ilość danych kluczowych, jaka po-
winna być za jego pomocą przetwa-
rzana powinna być ograniczona do
absolutnego minimum. Można więc
rozważyć, czy laptop nie mógłby być
zupełnie pozbawiony danych i wy-
stępować w roli cienkiego klienta.

Podstawową ochroną każdego

komputera przenośnego jest mecha-
nizm autoryzacji użytkownika. Jed-
nakże, w obecnej erze script kiddies,
hasło zabezpieczające system nie ma
już praktycznie żadnego znaczenia.
Wcale nie trzeba specjalnej wiedzy,
by hasło obejść, poznać czy złamać.
Na popularnych portalach społecz-
nościowych można przeglądać filmy
instruktażowe: jak w prosty sposób za
pomocą programu Ophcrack wydobyć
hasło systemowe. Jak więc bezpiecz-
nie autoryzować użytkownika?

W tej sytuacji pomocne jest zasto-

sowanie haseł BIOS: jedno powinno
uniemożliwiać uruchomienie kompu-
tera, drugie natomiast zabezpieczać
dostęp do konfiguracji. W kompute-
rach przenośnych BIOS to newral-
giczne miejsce i nie jest prosto obejść
nawet podstawowe hasło np. poprzez
wyciągnięcie na chwilę baterii pod-
trzymującej napięcie, jak w przypadku
komputerów stacjonarnych (chociaż
zależy to w głównej mierze od produ-
centa oraz modelu sprzętu).

BIOS powinien być tak skonfigu-

rowany, aby bootowanie było możliwe
wyłącznie z dysku twardego. Powin-
na być też wyłączona możliwość wy-
wołania tzw. BOOT sequence przez
jakikolwiek przypisany klawisz. Za-
bezpieczenie to jest bardzo ważne,
ponieważ jak wspomnieliśmy już
wcześniej, w ten sposób zamykamy
drogę wszystkim, którzy chcą dostać
się do naszych danych za pomocą

różnego rodzaju systemów LiveCD.
Oczywiste jest, że hasło konfiguracji
BIOS powinno być znane wyłącznie
administratorowi i w żadnym wy-
padku nie powinno być przekazane
użytkownikowi.

Jednak najlepszym rozwiązaniem

jest ustawienie hasła dostępowego
do dysku twardego. Niestety, nie jest
to rozwiązanie dostępne we wszyst-
kich laptopach, stosuje się je raczej
w droższych modelach. Od strony
użytkownika wygląda to podobnie, jak
hasło startowe ustawiane w BIOS. Je-
śli ktoś ukradnie komputer, wymontuje
dysk i podłączy do nowego kompute-
ra, to nie uzyska dostępu do żadnych
danych, gdyż zadziała mechanizm
szyfrujący. Hasło można obejść, ale
tylko kontaktując się z producentem
sprzętu. Po weryfikacji, pozwalają-
cej na ustalenie, czy dzwoniący jest
prawowitym posiadaczem laptopa,
zostanie mu przekazane hasło za-
stępcze, które jest indywidualne dla
każdego dysku. Hasło takie ustala się
na podstawie numeru seryjnego lap-
topa. Oczywiście kluczowy jest tutaj
proces weryfikacji osoby dzwoniącej.
Producenci laptopów przywiązują
szczególną wagę do spraw bezpie-
czeństwa i prowadzą bazę danych
klientów oraz kupionych przez nich
produktów. Jeśli firma zgłosi kradzież
laptopa, to taka informacja zostaje
odnotowana w bazie. Jeśli do pro-
ducenta zadzwoni złodziej lub osoba
nieuprawniona z prośbą o usunięcie
hasła, a została zgłoszona uprzednio
kradzież, to do siedziby, jaką poda
dzwoniący, przyjedzie serwisant
w asyście Policji, która zweryfikuje,
czy rzeczywiście komputer ten został
nabyty w sposób legalny.

Dobrym pomysłem, szczegól-

nie gdy laptop pozbawiony jest
możliwości autoryzacji dostępu do
dysku twardego, jest wykorzystanie
zewnętrznego oprogramowania, szy-
frującego dostęp do całych dysków
lub partycji. Programy te wykorzystują
mechanizm Pre-boot authentication,
który polega na tym, że uprawnienia
użytkownika są weryfikowane, za-
nim jeszcze zostanie uruchomiony
system operacyjny. Programy takie
pozwalają także na zastosowanie

dwustopniowego

uwierzytelnienia

przy wykorzystaniu tokenów lub kart
kryptograficznych. Proces szyfrowa-
nia i deszyfrowania danych odbywa
się w locie i są to operacje niezauwa-
żalne dla użytkownika.

Zupełną nowością w dziedzinie

szyfrowania jest wprowadzanie tych
mechanizmów do samej konstrukcji
dysku twardego. Dzięki temu dane bę-
dą chronione niezależnie od systemu
operacyjnego, zastosowanego opro-
gramowania czy możliwości BIOS-u.

W przypadku braku możliwości

wykorzystania zaawansowanego
oprogramowania szyfrującego moż-
na się posłużyć narzędziami wbudo-
wanymi w sam system. W przypadku
Windows XP mamy do dyspozycji
całkiem bezpieczny mechanizm
EFS, zaś w nowym systemie Vista
zastosowano mechanizm Bitlocker.

W dalszej kolejności, konieczne

jest ustawienie hasła do systemu, któ-
rego posiadanie jest oczywistym wy-
mogiem, tak samo jak zdefiniowanie
czasu, po którym w przypadku bez-
czynności komputer zostanie zabloko-
wany. Co także oczywiste, użytkownik
powinien korzystać wyłącznie z upraw-
nień podstawowych i nie powinien – tak
jak to się niestety zwykle zdarza, pra-
cować jako lokalny administrator. Naj-
lepszą praktyką jest, gdy zwykły użyt-
kownik pracuje na koncie zdefiniowa-
nym w sieci (np. za pomocą Active Di-
rectory
) swojej firmy z określonym cza-
sem dzierżawy – czyli logowanie się na
konto sieciowe off-line.

Zasady tworzenia haseł, czas

blokowania stacji i inne parametry
związane z bezpieczeństwem po-
winna regulować przyjęta polityka
bezpieczeństwa.

Jak każdy komputer, tak i laptop po-

winien być wyposażony w system anty-
wirusowy, a sam system oraz aplikacje
powinny być regularnie patchowane.
Konfiguracja systemów powinna za-
kładać maksymalną możliwą automa-
tyzację tych operacji, gdyż nie można
liczyć na to, że użytkownik zadba o to
sam. Oczywiście wielkim błędem jest
wykorzystanie systemów plików, nie
zapewniających właściwej autoryzacji
i rozliczenia dostępu zasobów, jak np.
FAT. Nie zaszkodzi też wyłączenie

background image

Mobilne (nie)bezpieczeństwo

hakin9 Nr 6/2007

www.hakin9.org

53

niepotrzebnych urządzeń, takich jak
np. porty podczerwieni, i ograniczenie
możliwości wykorzystania nośników
wymiennych takich jak pen-drive.

Najbardziej

znaną

praktyką

ochrony danych jest wykonywanie
kopii zapasowych. Niestety, w prakty-
ce bardzo często się o tym zapomina,
szczególnie w stosunku do danych
zawartych na urządzeniach przeno-
śnych. W tym wypadku nie chodzi
zwykle o dostęp osób trzecich, ale
o zwykły, częsty przypadek uszko-
dzenia urządzenia czy dysku. Tak
więc, mimo tego, iż jest to oczywista
praktyka, należy stworzyć procedury
zapewniające regularne wykonywa-
nie kopii zapasowych z urządzeń
przenośnych oraz ich testowania.

Do wykonywania kopii powinny

także zachęcać incydenty z bate-
riami. Ostatnie miesiące pokazują,
że baterie mogą być bardzo niebez-
pieczne, co potwierdzają przypadki,
w których bateria spowodowała
wybuch, czy też zapalenie się kom-
putera. Wybuchy były spowodowa-
ne błędami konstrukcyjnymi, więc
producenci takie baterie szybko
wymieniali. Niestety, jeśli już nastą-
piła eksplozja baterii, to zagrożeni
byli nie tylko użytkownicy, ale także

dane na urządzeniach. Bez kopii
zapasowej w tym wypadku nic się
nie zdziała, choć można oczywiście
wynająć specjalistyczną firmę, która
podejmie próbę odzyskania danych.

Łącz się bezpiecznie

To, co jest szczególnym problemem
w pracy mobilnej, to zrealizowanie
bezpiecznej komunikacji z Internetem
oraz dostęp do sieci firmowych. Pod-
stawową sprawą jest ustalenie tego,
czy w ogóle, i na jakich zasadach urzą-
dzenie przenośne musi się komuniko-
wać z siecią. Choć praktyka wskazuje
na to, że czasem wcale nie ma takiej
potrzeby, to prawie wcale nie bierze się
tego pod uwagę, a pracownikowi w tej
kwestii pozostawia się wolną rękę.

Jeśli jednak pracownik istotnie mu-

si mieć dostęp do Sieci, warto zorien-
tować się, na jakich zasadach ma to
się odbywać. Najlepszym podejściem
do sprawy jest tu wykorzystanie kana-
łów VPN do zestawienia połączenia z
firmowym systemem firewall, przy jed-
noczesnym zablokowaniu możliwości
uruchomienia jakiegokolwiek innego
połączenia. Uzyskuje się wtedy kon-
trolę nad ruchem do, i z laptopa. Z dru-
giej strony eliminuje się większość pro-
blemów związanych z łącznością bez-
przewodową.

Jeśli powyższe rozwiązanie nie

jest możliwe, dobrą praktyką będzie
unikanie publicznie dostępnych hot-
spotów lub rezygnacja z połączeń
bezprzewodowych w standardzie
WLAN. Połączenia te narażone są na
wiele, stosunkowo łatwych do prze-
prowadzenia ataków. Nie zaszkodzi
też instalacja programowego firewalla.

Pomimo problemów z sieciami

WLAN, są one często wykorzystywa-
ne w ramach organizacji. Jeśli istnieje
konieczność podłączenia laptopa do
takiej sieci, należy zadbać o szyfrowa-
nie takiego połączenia np. protokołem
WPA. W dużych sieciach pomocny
będzie także protokół RADIUS.

Zasady bezpiecznego komuni-

kacji powinny mieć odzwierciedlenie
w przyjętej polityce bezpieczeństwa.

Użytkownicy

Najważniejszą jednak sprawą w pro-
cesie budowania bezpieczeństwa jest

uświadamianie i szkolenie użytkowni-
ków. Użytkownik urządzenia, na któ-
rym znajdują się jakiekolwiek dane
istotne dla instytucji, musi sobie zdać
sprawę z odpowiedzialności, jaką na
siebie przyjmuje. Musi wiedzieć, że
całe zabezpieczenie, jakie stosuje fir-
ma nie będzie miało znaczenia, jeśli
on nie będzie stosował zasad bez-
piecznego wykorzystywania urzą-
dzenia. Zasady te, opracowane na
potrzeby firmy, powinny być przed-
stawione użytkownikom w możliwie
łatwy i przejrzysty sposób, tak aby
wiedzieli oni, w jaki sposób się za-
chować w określonych sytuacjach.
Ważne jest przy tym, aby nie było to
jednostkowe zakomunikowanie, ale
regularne przypominanie i szkolenie.

Podsumowanie

Według raportu IDC, w ubiegłym roku
sprzedano 82 mln. sztuk laptopów, to
jest o 26 % więcej niż w 2005r. IDC
prognozuje, że do 2011 roku laptopy
będą stanowiły ponad połowę sprze-
danych komputerów. Jasno widać, że
mamy do czynienia z globalną zmianą
profilu użytkownika komputera. Do-
tychczas użytkownik przywiązany był
do swojego stanowiska pracy, teraz
coraz częściej stanowisko wędruje
wraz z nim. Coraz więcej firm rezy-
gnuje z tradycyjnych biur i pomiesz-
czeń, a pracowników zatrudniają na
zasadzie telepracy w domach.

Mając to wszystko na uwadze,

należy prognozować, iż problemy
bezpieczeństwa w zakresie urządzeń
przenośnych będą się pojawiać coraz
częściej, a jednocześnie problemy,
które nie zostały jeszcze w firmach
rozwiązane będą się nawarstwiać.
Wszystko to pokazuje, że najcen-
niejszy zasób jakim dysponują firmy
– czyli zasoby danych - będą w coraz
większym niebezpieczeństwie. Dlate-
go też bezsprzecznie konieczne jest
ustalenie wyższego priorytetu dla
wysiłków firmy mających na celu za-
pewnienie bezpiecznej pracy za po-
mocą urządzeń przenośnych. Mamy
nadzieję, iż niniejszy artykuł pozwolił
Państwu na określenie działań, które
należy podjąć i praktyk, które należy
wprowadzić, aby lepiej chronić Wa-
sze dane. l

Rysunek 1.

Kensington microsaver

O autorach

Piotr Błaszczeć – specjalista ds.

bezpieczeństwa IT, audytor systemów
IT, biegły sądowy, na co dzień Główny
Specjalista Bezpieczeństwa w jednej
z agencji rządowych, członek ISACA
International e-mail:pb@locos.pl

Tadeusz Calanca – specjalista IT,

audytor IT, biegły sądowy, na co dzień
administrator bezpieczeństwa informa-
cji e-mail:tc@locos.pl

background image

www.hakin9.org

hakin9 Nr 6/2007

54

Obrona

Z

drugiej strony, wdrożenie Systemu Zarzą-
dzania Bezpieczeństwem Informacji np. w
celu osiągnięcia zgodności z normą ISO

27001 czy innymi normami, dodaje prestiżu i po-
kazuje firmę jako kompetentną oraz wzbudzają-
cą zaufanie. Do tego dochodzi jeszcze prestiż,
wynikający z posiadania nadal unikalnego w na-
szym kraju certyfikatu bezpieczeństwa informacji,
a to niewątpliwie daje przewagę nad konkurencją.
Bo przecież dla każdej firmy, jak już wspomnia-
łem, informacja jest najcenniejszym aktywem.
Stąd, przekazując swoje plany biznesowe, pro-
jekty, bazy klientów, unikatową wartość intelektu-
alną, chcemy, aby trafiły w dobre ręce i nie prze-
dostały się dalej, dla użytku osób do tego niepo-
wołanych.

Czym tak naprawdę

jest ISO 27001?

Jest to zbiór wytycznych pozwalających każdej
organizacji na wdrożenie sprawnie funkcjonu-
jącego systemu bezpieczeństwa informacji. Na
system bezpieczeństwa składają się następu-
jące dziedziny:

• polityka bezpieczeństwa informacji,
• organizacja bezpieczeństwa informacji,
• zarządzanie aktywami,

• bezpieczeństwo zasobów ludzkich,
• bezpieczeństwo fizyczne i środowiskowe,
• zarządzanie systemami i sieciami,
• kontrola dostępu,
• pozyskiwanie, rozwój i utrzymywanie syste-

mów informatycznych,

• zarządzanie incydentami związanymi z bez-

pieczeństwem informacji,

• zarządzanie ciągłością działania,
• zgodność z przepisami prawnymi.

Norma ta jest przeznaczona dla każdego ro-
dzaju działalności biznesowej oraz instytucji
publicznych.

Bezpieczeństwo informacji

a nowoczesny biznes

Tomasz Polaczek

stopień trudności

W ciągu ostatnich dwóch lat temat bezpieczeństwa informacji

stał się w Polsce bardzo popularny. Z jednej strony, wiele firm

zrozumiało, że informacja jest najważniejszym i najcenniejszym

aktywem dla każdej działalności biznesowej oraz urzędowej, a jej

ochrona powinna być jednym z kluczowych aspektów, jakimi

powinna zająć się każda organizacja.

Co powinieneś wiedzieć

• czym są normy ISO,
• czym jest norma ISO 27001,
• bezpieczeństwo to nie tylko informatyka,

Z artykułu dowiesz się

• po co wdrożyć system zarządzania bezpieczeń-

stwem informacji,

• jakie są korzyści biznesowe,
• czy warto wdrożyć ISO 27001.

background image

Bezpieczeństwo informacji a nowoczesny biznes

hakin9 Nr 6/2007

www.hakin9.org

55

Normę ISO 27001 wspiera norma

ISO 17799:2005, która jest zbiorem
praktyk, jakie można zastosować w
każdej organizacji, w celu podniesie-
nia poziomu bezpieczeństwa.

Często jeszcze jest spotykane

niewłaściwe rozumienie samej nor-
my ISO 27001. Wiele organizacji czy
ludzi postrzega tę normę jako prze-
znaczoną wyłącznie dla informaty-
ków. Nic bardziej błędnego. Patrząc
choćby na sam zakres regulowanych
przez nią zagadnień, można jasno
stwierdzić, że bezpieczeństwo IT to
tylko jeden z obszarów tematycz-
nych normy, ale nie jedyny. To nor-
ma ISO TR/IEC 13335 zajmuje się
aspektami bezpieczeństwa IT.

Kolejnym, często popełnianym

błędem jest podważanie zasadności
posiadania systemu bezpieczeństwa
informacji. Często można jeszcze usły-
szeć następujące stwierdzenia z ust
przedstawicieli kadry zarządzającej:

• to temat dla informatyków,
• my jesteśmy bezpieczni, bo nic

się nie dzieje,

• my już mamy inne systemy ISO,
• zróbcie nam to jak najszybciej, ale

nie pytajcie nas o wiele, bo mamy
inne sprawy do załatwienia,

• my nie przetwarzamy ważnych

informacji.

Walor biznesowy

Firmy, które wdrożyły lub są w trakcie
wdrażania Systemu Zarządzania Bez-
pieczeństwem Informacji, są tak na-
prawdę o krok dalej niż konkurencja.
Wynika to z tego, że mają one coś,
czego konkurencja nie posiada, a co
jest bardzo ważne na rynkach między-
narodowych. Obecnie w naszym kraju
występująca sytuacja jest analogiczna
do tej, z początku lat 90, gdy wcho-
dziły do Polski Systemy Zarządzania
Jakością ISO 9001. Tak, jak teraz
bezpieczeństwo informacji jest nowo-
ścią, jeszcze niestety unikatową dla
wielu rodzimych firm, tak samo było
z systemem ISO 9001. Wtedy firmy,
które zdecydowały wdrożyć ten sys-
tem w swoich strukturach, dostały nie
tylko usługę w postaci uporządkowa-
nia, zoptymalizowania i wprowadzenia
wielu cennych praktyk, ale także,

podobnie jak dzisiaj ma to miejsce
z bezpieczeństwem informacji, były
o krok dalej od konkurencji. I do czego
to doprowadziło? Wówczas te bardziej
dojrzałe firmy zaczęły odnotowywać
wzrost obrotów i zainteresowania ze
strony firm zagranicznych, ponieważ
międzynarodowe korporacje wolały
współpracować z firmami, które osią-
gnęły pewien pułap świadomości i kul-
tury organizacji, a firmy, dla których
System Zarządzania był niepotrzebną
biurokracją, szybko dostrzegły, że je-
go wdrożenie nie tylko przynosi wiele
pozytywów samej organizacji, w jej
wewnętrznych strukturach, ale także
powoduje, że firma staje się bardziej
atrakcyjna na rynku. Doprowadziło
to do sytuacji, w której posiadanie
wdrożonych norm ISO 9001 stało
się koniecznością. I należy pamiętać
o tym, że posiadanie certyfikatu na
zgodność z systemem ISO 9001 dla
firm, które jako pierwsze go wdrożyły,
było dużym atutem, a dla pozostałych,
po prostu koniecznym wymogiem ist-
nienia na rynku i rozwoju firmy.

Analogiczna sytuacja ma miejsce

w dzisiejszych czasach. Firmy, które
już posiadają certyfikat bezpieczeń-
stwa informacji ISO 27001 lub inny, są
o krok dalej niż konkurencja, tak samo
jak miało to miejsce w przypadku Sys-
temów Zarządzania Jakością. Wpływa
to tym samym na większy wzrost za-
interesowania ze strony partnerów, z
którymi rodzime firmy chcą nawiązać
współpracę. Dlaczego tak się dzieje?
Ponieważ w krajach Unii Europejskiej
i państwach spoza niej, większość firm
posiada tego typu systemy, a co za tym
idzie, stawia wymagania również swo-
im partnerom biznesowym, aby udo-
wodnili, że potrafią odpowiednio za-
dbać o bezpieczeństwo informacji. I
jest to naturalna reakcja. Sam fakt po-
siadania w swych strukturach sprawnie
funkcjonującego Systemu Zarządzania
Bezpieczeństwem Informacji nie gwa-
rantuje zamierzonej ochrony, gdyż mo-
że wystąpić sytuacja, w której nasze
dane będą bezpieczne wewnątrz orga-
nizacji, ale przekazane partnerowi w ra-
mach współpracy mogą przedostawać
się w ręce osób niepowołanych, ponie-
waż nasz partner nie ma wystarczają-
cej wiedzy i przeszkolonego persone-

lu w zakresie ochrony i bezpieczeństwa
informacji. Wtedy może teoretycznie
wystąpić sytuacja, w której firma po-
siadająca system bezpieczeństwa za-
stanowi się nad sensem jego posiada-
nia, ponieważ poświęciła ogromne pie-
niądze, czas i zasoby na jego wdroże-
nie, utrzymanie i monitorowanie, a jed-
na sytuacja sprawiła, że cenne dane,
które chroniła i tak wyciekły np. do kon-
kurencji. Dlatego też, w celu uniknięcia
takich sytuacji, naturalną rzeczą jest,
że firmy posiadające dany system, bę-
dą wymagać tego od swoich partnerów
biznesowych.

Mówiąc o czynniku biznesowym

posiadania certyfikatu bezpieczeństwa
informacji, nie możemy zapomnieć o
pozostałych, pozabiznesowych aspek-
tach wdrożenia takiego systemu. Cho-
dzi tu oczywiście o zagrożenia ujaw-
nienia lub kradzieży cennych informa-
cji, na jakie są w dzisiejszych czasach
narażone organizacje. Jesteśmy in-
formowani o spektakularnych włama-
niach hakerów i crackerów, o parali-
żu wielu korporacji spowodowanym
jednym wirusem komputerowym, któ-
ry bardziej dezorganizuje działanie in-
frastruktury informatycznej niż wykra-
da cenne informacje, choć tego typu
techniki też są stosowane. Reasumu-
jąc, w wielu firmach w naszym kraju pa-
nuje niestety przeświadczenie, że Sys-
tem Zarządzania Bezpieczeństwem In-
formacji jest związany wyłącznie z in-
formatyką, w związku z tym temat ten
jest cedowany na działy IT. Jak wspo-
mniałem, jest to poważny błąd w rozu-
mieniu tematyki bezpieczeństwa, po-
woduje on bowiem odsunięcie kierow-
nictwa od zagadnień bezpieczeństwa.
Tutaj warto wspomnieć o najważniej-
szym, a często pomijanym zagrożeniu,
na jakie jest narażona każda organiza-
cja, a mianowicie o najsłabszym ogni-
wie – o człowieku. To nie wirusy kom-
puterowe, nie tylko hakerzy czy cracke-
rzy są największym zagrożeniem, sta-
nowią je natomiast pracownicy organi-
zacji. Cenne informacje wyciekają na
zewnątrz firmy zarówno w sposób nie-
świadomy i przypadkowy, jak i w spo-
sób w pełni świadomy. Jest to duży pro-
blem dla wielu firm, w wyniku wydosta-
nia się na zewnątrz ważnych informacji
konkurencja może się wiele dowiedzieć

background image

hakin9 Nr 6/2007

www.hakin9.org

Obrona

56

o szczegółach naszej działalności. Nie
należy rzecz jasna popadać w parano-
ję, gdy stwierdzi się, że z każdej firmy
wyciekają dane, wynoszone przez pra-
cowników. Trzeba zabezpieczyć się na-
tomiast przed mało komfortową sytu-
acją, w którą firma może popaść. Cho-
dzi szczególnie o kłopoty natury praw-
nej, gdy kontrahent oskarży daną orga-
nizację o wyciek swoich danych.

Dlatego też dobrą praktyką,

a wręcz nieformalnym wymogiem, jest
zadbanie przez firmy o przynajmniej
minimum bezpieczeństwa informacji.
Warto mieć na uwadze, że gdy na-
dejdzie dzień, w którym owe bezpie-
czeństwo zostanie naruszone lub co
gorsza legnie w gruzach, to właśnie
kierownictwo firmy będzie odpowiada-
ło za taki stan rzeczy, a marka firmy,
budowana przez wiele lat ciężką pra-
cą, może w jeden dzień stracić prestiż
i znaczenie. Dlatego warto zadbać
o bezpieczeństwo informacji już teraz.

Największym

zagrożeniem

bezpieczeństwa

jest człowiek

Nie należy jednak zapominać, że na
skuteczną ochronę każdej organizacji
przed wyciekiem jakichkolwiek infor-
macji w ogromnym stopiu wpływa
świadomość pracujących w niej osób.
To człowiek jest najsłabszym ogniwem
każdego systemu bezpieczeństwa
i to celowe działanie człowieka bądź,
co gorsza, jego nieświadome nawyki,
mogą doprowadzić do poważnych
konsekwencji zarówno biznesowych,
jak i prawnych. System bezpieczeń-
stwa nie ma racji bytu, gdy ludzie nie
zachowują go, nie postępują zgodnie
z jego zaleceniami. System, który
w wielu jeszcze firmach pozostaje
jedynie ładnie wyglądającą doku-
mentacją, nie spełni swoich zadań.
Często zdarza się, że pracownicy są
zaangażowani w system w trakcie
jego wdrażania, lecz po zakończeniu
tych operacji, z biegiem czasu omijane
są procedury bądź wiele z nich staje
się martwymi punktami. To właśnie
stanowi największe zagrożenie, nie
tylko zresztą ze strony określonej
organizacji, ale także zagrożenie dla
biznesu. Firma posiadająca system np.

ISO 27001, co roku musi przejść tzw.
audyt nadzoru z jednostki certyfikują-
cej. W przypadku stwierdzenia przez
audytora, że system w organizacji
w ogóle nie istnieje, certyfikat zostaje
wstrzymany, co może się wiązać z po-
ważnymi konsekwencjami dla organi-
zacji na zewnątrz. W przypadku, gdy
certyfikat był wymagany w działalności
biznesowej danej organizacji w jakim-
kolwiek obszarze biznesu, jego utrata
wiąże się z utratą reputacji i zaufania
wśród kontrahentów, współpracowni-
ków. A to może się z kolei przełożyć
na zmniejszenie np. obrotów firmy.
Informacja o tym, że dana organizacja
utraciła certyfikat bezpieczeństwa, jest
sygnałem dla innych podmiotów czy
też konkurencji, że może nie należy
utrzymywać bądź nawiązywać współ-
pracy z organizacją, która przestała
dbać o ochronę ważnych infomacji.
Oczywiście są to nieraz daleko idące
wnioski, ale nie wiemy nigdy, czy tego
typu sytuacja nie będzie miała miejsca
już jutro w jakiejś organizacji.

Dlatego tak ważne jest uświa-

domienie pracowników w zakresie
bezpieczeństwa informacji oraz stałe
szkolenie ich w tym zakresie.

Każdy z nas słyszał w mediach

o przypadkach, gdy znaleziono źle
pocięte dokumenty w koszu na śmieci,
gdy ginęły dyski twarde ważnych po-
staci biznesu i polityki z bardzo ważny-
mi poufnymi danymi. Wszystkie tego
typu przypadki mogą mieć miejsce
właśnie na skutek niskiej świadomości
zagadnień bezpieczeństwa i ochrony
informacji. I dopóki organizacje oraz
instytucje publiczne nie nabędą pełnej
świadomości w zakresie ochrony swo-
ich informacji, takie przypadki będą
odnotowywane.

Polskie realia

W Polsce bezpieczeństwo informacji
rozumiane jest głównie jako ochrona
danych osobowych i informacji nie-
jawnych. Nie każda firma posiada
kancelarię tajną, a przecież każda
przetwarza dane osobowe. Dane
osobowe są informacjami wrażliwy-
mi i należy je odpowiednio chronić.
O ich bezpieczeństwie mówi Ustawa
o Ochronie Danych Osobowych i Roz-
porządzenie MSWiA odnośnie bezpie-

czeństwa systemów informatycznych
przetwarzających dane osobowe.

W tym przypadku, każda firma,

w myśl Ustawy, musi mieć wdrożo-
ną politykę bezpieczeństwa danych
osobowych.

Jednak należy pamiętać, że wdro-

żenie takiej polityki wiąże się wyłącznie
z ochroną informacji pt. dane osobowe.
Tymczasem w organizacjach pozostaje
jeszcze wiele innych danych, o których
bezpieczeństwo zadbać powinien wła-
śnie sprawnie wdrożony i funkcjonujący
system zarządzania bezpieczeństwem
informacji ISO 27001.

Nowe stanowiska?

Należy też zauważyć, że sygnałem
świadczącym o tym, że w Polsce
ochrona informacji staje się ważnym
aspektem działania wielu organiza-
cji jest fakt, że tworzonych jest coraz
więcej stanowisk pracy związanych z
ochroną informacji. Coraz częściej bę-
dą poszukiwani specjaliści od ochrony
informacji - pełnomocnicy ds. bezpie-
czeństwa informacji – taka funkcja jest
wymagana w przypadku, gdy organi-
zacja posiada ISO 27001 czy też sta-
nowisko Administratora Bezpieczeń-
stwa Informacji (ABI), wywodzące się
z zapisów Ustawy o Ochronie Danych
Osobowych.

Ważną cechą osób pełniących te

stanowiska jest posiadanie odpowied-
nio wysokich kompetencji. Potrzebna
tu jest duża wiedza merytoryczna,
a także praktyczna. Na świecie jest
wiele certyfikatów, które można zdo-
być podnosząc swoje kompetencje
w tym zakresie. Od CISA i CISM
nadawanych przez organizację ISA-
CA, poprzez CISSA i audytorów
wewnętrznych i wiodących, których
kształcą jednostki certyfikujące.

Każda z tych kompetencji będzie

potrzebna przy ubieganiu się o tego
typu stanowisko - tego wymagają bo-
wiem opisane tutaj standardy. l

O autorze

Autor jest Product Managerem ds. Za-
rządzania bezpieczeństwem informacji
w Computer Service Support S.A.
Kontakt z autorem:
tomasz_polaczek@css.pl

background image
background image

www.hakin9.org

hakin9 Nr 6/2007

58

Początki

N

a początku był chaos. Potem stwo-
rzono POSIX, który uporządkował ten
chaos, dając programistom jednolity

interfejs umożliwiający uniwersalny przesył da-
nych. Większości programistów w dalszym cią-
gu wystarczy dostęp do usług sieciowych ofe-
rowany przez mechanizmy gniazd, które są za-
implementowane w każdym z liczących się na
rynku systemów operacyjnych. Problem nisko-
poziomowego dostępu do Sieci pojawia się
tam, gdzie oferowane interfejsy nie pozwalają
na realizację zamierzonego celu. I tak na przy-
kład POSIX nie umożliwi przechwytywania ca-
łego ruchu, budowy firewalla, modyfikacji pa-
kietów w locie, stworzenia nowego protokołu
warstwy drugiej obsługiwanego z poziomu ją-
dra i tak dalej. Ograniczenia można wymieniać
w nieskończoność.

Na szczęście dla nas – dostępność źró-

deł jądra Linuksa powoduje, że przy odrobi-
nie chęci jakiekolwiek ograniczenia przesta-
ją obowiązywać. Niesie to ze sobą pewną wa-
dę, a mianowicie metod rozwiązania zadane-
go problemu może być wiele, w zależności od
poziomu abstrakcji, na którym chcemy opero-
wać oraz warstwy przetwarzania, której chce-
my użyć.

Aby w pełni zrozumieć zasadę działania

stosu w Linuksie, należy prześledzić losy pa-
kietu od momentu wygenerowania przerwania
przez kartę sieciową, aż do obsługi danego pa-
kietu przez protokoły wyższych warstw. Anali-
za opisana w tym artykule opierać się będzie
na obsłudze sieci zawartej w jądrze 2.6.20.2

Obsługa sieci

z poziomu jądra

Konrad Malewski

stopień trudności

Programowanie gniazd sieciowych jest zajęciem ciekawym i

pozwala na osiągnięcie zamierzonego celu. Jednak prawdziwa

przygoda z siecią zaczyna się dopiero w momencie zejścia do

parteru i spojrzenia na API POSIX jako najwyższą z możliwych

warstw dostępu do Sieci. Przekroczenie tej granicy otwiera przed

nami możliwości, które ograniczone są jedynie wyobraźnią.

Z artykułu dowiesz się

• jak wygląda trasa pakietu od sterownika do war-

stwy transportowej,

• jak przechwytywać pakiety w różnych war-

stwach stosu Sieci,

• jak niskopoziomowo wstrzykiwać pakiety.

Co powinieneś wiedzieć

• powinieneś znać model ISO/OSI,
• powinieneś mieć ogólne pojęcie o zasadzie

działania sieci TCP/IP,

• posiadać umiejętność administrowania sys-

temem Linux na poziomie zaawansowanego
użytkownika,

• powinieneś umieć programować w C/C++,
• powinieneś wiedzieć, jak nie poddać się po set-

nym komunikacie kernel panic.

background image

Obsługa sieci z poziomu jądra

hakin9 Nr 6/2007

www.hakin9.org

59

oraz karcie sieciowej RTL139C+ (ob-
sługiwanej przez sterownik 8139cp).

Bezdroża kernela

Wędrówka pakietu zaczyna się w
momencie wygenerowania przerwa-
nia przez sterownik. Uruchamiana
jest funkcja obsługi przerwania, w
tym przypadku drivers/net/8139cp.c:
cp_interrupt
. Po weryfikacji statusu
przerwania wywoływana jest funkcja
net/core/dev.c:__netif_rx_schedule,
której zadaniem jest dodanie do ko-
lejki urządzenia, które należy obsłu-
żyć oraz zgłoszenie przerwania pro-
gramowego (NET_RX_SOFTIRQ).
Może się tutaj nasunąć pytanie – dla-
czego nie obsługiwać przychodzące-

go pakietu od razu, tylko okładać ro-
botę na później? Wyobraźmy sobie,
że pakiet przychodzący z Sieci jest
obsługiwany natychmiast. Jeżeli ob-
sługa zajmuje na przykład n jedno-
stek czasu, to podczas tego proce-
su żaden program z przestrzeni użyt-
kownika nie zostałby dopuszczony do
procesora. Co więcej, niektóre proce-
dury obsługi przerwań są nieprzery-
walne, co powoduje, że tylko one mo-
gą się wykonywać. Zastosowanie ta-
kiego podejścia skutkowałoby dużymi
opóźnieniami, a w konsekwencji – iry-
tacją użytkownika. Aby zapewnić do-
bry czas odpowiedzi oraz wydajność
systemu, wykonanie przerwania dzie-
li się na tzw. górną i dolną połówkę.

Zadaniem górnej połówki (cp_inter-
rupt
) jest przygotowanie danych do
dalszego przetwarzania i zgłoszenie
przerwania software'owego (softirq).
Przerwania programowe wykonywa-
ne są w kilku miejscach: przez proces
jądra ksoftirqd, po wykonaniu prze-
rwania sprzętowego lub jawnie przez
niektóre fragmenty kodu jądra.

Zgłoszone przerwanie NET_RX_

SOFTIRQ zostanie obsłużone przez
funkcję /net/core/dev.c:net_rx_ac-
tion.
W tym miejscu sprawdzana jest
kolejka urządzeń, z których należy
pobrać pakiety. Wywoływana jest
funkcja poolera sterownika, czyli pro-
cedura, która pobierze dane pakietu
z pamięci sterownika i przekaże je

Rysunek 1.

Podróż pakietu po funkcjach jądra

background image

hakin9 Nr 6/2007

www.hakin9.org

Początki

60

dalej w postaci struktury sk_buff. Ja-
ko że używamy sterownika 8139cp,
a sterownik ten zainstalował własny

poler w drivers/net/8129cp.c:cp_in-
it_one,
zostanie wywołana funkcja
drivers/net/8129cp.c:cp_rx_poll. Po

pobraniu pakietu trafia on do drivers/
net/8129cp.c:cp_rx_skb
, gdzie uak-
tualnia się dane statystyczne odebra-

Listing 1.

Polecenie na przetestowanie jądra

/

usr

/

bin

/

qemu

-

kernel

'/

sciezka

/

do

/

dzialajacego

/

jadra

/

bzImage

'

-

append

'

root

=

/

dev

/

hda1

'

-

boot

c

-

m

128

-

hda

'/

sciezka

/

do

/

obrazu

/

dysku

/

host1

'

-

cdrom

'/

dev

/

cdrom

'

-

net

nic

,

model

=

rtl8139

,

vlan

=

0

-

net

tap

,

vlan

=

0

,

ifname

=

-

localtime

-

std

-

vga

Listing 2.

Modyfikacja funkcji obsługującej przerwanie karty sieciowej cp_interrupt

if

(

status

&

(

RxOK

|

RxErr

|

RxEmpty

|

RxFIFOOvr

))

if

(

netif_rx_schedule_prep

(

dev

))

{

struct

sk_buff

*

buff

=

cp

->

rx_skb

[

cp

->

rx_tail

];

int

status

=

le32_to_cpu

(

cp

->

rx_ring

[

cp

->

rx_tail

]

.

opts1

);

int

len

=

(

status

&

0x1fff

)

-

4

;

cpw16_f

(

IntrMask

,

cp_norx_intr_mask

);

handle_packet

(

buff

->

data

,

len

);

__netif_rx_schedule

(

dev

);

}

Listing 3.

Funkcja blokująca adresy IP hostów znajdujących się na czarnej liście

__be32

campers

[]

=

{

0x020014AC

,

0

}

;

void

handle_packet

(

char

*

packet_data

,

unsigned

packet_length

)

{

struct

ethhdr

*

ethernet_header

=

(

struct

ethhdr

*)

packet_data

;

struct

iphdr

*

ip_header

=

NULL

;

int

ip_hlen

=

0

;

int

i

=

0

;

if

(

packet_length

<

ETH_HLEN

)

return

;

if

(

ntohs

(

ethernet_header

->

h_proto

)!=

ETH_P_IP

)

return

;

ip_header

=

packet_data

+

ETH_HLEN

;

ip_hlen

=

ip_header

->

ihl

;

if

(

ip_hlen

<

5

)

return

;

while

(

0

!=

campers

[

i

]

)

{

if

(

ip_header

->

saddr

==

campers

[

i

]

)

{

printk

(

"Camper detected..."

);

memset

(

packet_data

,

0

,

packet_length

);

}

i

++;

}

}

Listing 4.

Po kompilacji i uruchomieniu jądra w QEMU można eksperymentalnie stwierdzić, że poprawka działa

# hping2 -I tun0 -a 172.20.0.1 172.20.0.100 -c 1

HPING

172.20

.

0.100

(

lo

172.20

.

0.100

):

NO

FLAGS

are

set

,

40

headers

+

0

data

bytes

len

=

40

ip

=

172.20

.

0.100

ttl

=

64

DF

id

=

0

sport

=

0

flags

=

RA

seq

=

0

win

=

0

rtt

=

169.5

ms

---

172.20

.

0.100

hping

statistic

---

1

packets

transmitted

,

1

packets

received

,

0

%

packet

loss

round

-

trip

min

/

avg

/

max

=

169.5

/

169.5

/

169.5

ms

# hping2 -I tun0 -a 172.20.0.2 172.20.0.100 -c 1

HPING

172.20

.

0.100

(

lo

172.20

.

0.100

):

NO

FLAGS

are

set

,

40

headers

+

0

data

bytes

---

172.20

.

0.100

hping

statistic

---

1

packets

transmitted

,

0

packets

received

,

100

%

packet

loss

round

-

trip

min

/

avg

/

max

=

0.0

/

0.0

/

0.0

ms

background image

Obsługa sieci z poziomu jądra

hakin9 Nr 6/2007

www.hakin9.org

61

nych pakietów, wyznacza się ID pro-
tokołu za pomocą net/ethernet/eth.c:
eth_type_trans
i na koniec przeka-
zuje do ogólnego mechanizmu net/
core/dev.c:netif_receive_skb
. Moż-
na uznać, że obsługa pakietu przez
sterownik jest już zakończona i o jego
dalszych losach zadecydują ogólniej-
sze mechanizmy obsługi Sieci przez
jądro Linuksa. Niektóre urządzenia
mogą od razu przekazywać gotową
porcję danych do przetwarzania (np.
loopback). W tym celu używają net/
core/dev.c:netif_rx
w pierwszej fazie
przetwarzania oraz net/core/dev.c:
process_backlog
w drugiej.

Funkcja netif_receive_skb jest o

tyle ciekawym miejscem w kodzie,
że w trakcie jej wykonywania przeka-
zuje się pakiety wyższym warstwom.
Co więcej: funkcję obsługi protoko-
łów można dodawać dynamicznie
(co w dalszej części artykułu zosta-
nie wykorzystane). Przechowywane
są dwie listy funkcji przetwarzającej
pakiety. Pierwsza – ptype_all – prze-
chowuje funkcje obsługi przechwytu-
jące każdy rodzaj pakietów. Druga li-
sta – ptype_base[16] – dodatkowo ha-
showana, przechowuje funkcje zain-
teresowane konkretnym protokołem.
Konkretne protokoły rejestrują się na
tych listach za pomocą funkcji net/
core/dev.c:dev_add_pack
. Warto wie-
dzieć, że w funkcji netif_receive_skb
przeszukiwana jest najpierw lista bar-
dziej ogólna, a potem szczegółowa.
Dla każdego znalezionego elementu

wywoływana jest funkcja obsługi, ta-
ka jak: arp_rcv, ip_rcv, vlan_skb_rcv
etc. Załóżmy, że pakiet jest typu IP, a
jego podwarstwą jest TCP. Tak więc
kolejną funkcją, w której pakiet będzie
przetwarzany jest net/ipv4/ip_input.c:
ip_rcv
. W tym miejscu sprawdzane są
podstawowe warunki poprawności pa-
kietu: wersja, rozmiar, suma kontrolna.
Funkcja ta rozpoczyna również prze-
twarzanie łańcucha NF_IP_PRE_RO-
UTING
firewalla linuksowego. Je-
żeli wszystkie łańcuchy pozwolą na
przepuszczenie pakietu do dalszych
warstw (patrz: include/linux/netfilter.h:
NF_HOOK_THRESH
), to pakiet prze-

kazywany jest do net/ipv4/ip_input.c:
ip_rcv_finish
.

Nadszedł czas na routing. O dal-

szych losach pakietu decyduje funk-
cja net/ipv4/route.c:ip_route_input.
Przegląda ona cache routingu i je-
śli znajdzie odpowiedni wpis w tabli-
cach, ustawiana jest funkcja obsłu-
gująca pakiet i dalsze przetwarzanie
jest przerywane. Sterowanie wraca
do net/ipv4/ip_input.c:ip_rcv_finish,
gdzie wykorzystywany jest wcze-
śniej ustawiony wskaźnik funkcyjny
do przekazania pakietu niższej war-
stwie. Jeżeli natomiast wpisu w pa-
mięci podręcznej routingu nie ma,

Rysunek 2.

Zależność pomiędzy strukturą sk_buff a pakietem (zaczerpnięte

z [6])

sk_buff { }

union {

ethhdr *ethernet

uchar *raw

} mac

union {

iphdr *iph

ipv6hdr *ipv6h

uchar *raw

} nh

union (

tcphdr *th

udphdr *uh

uchar *raw

} h

head

data

tail

end

Ethernet Header

IPv6 Header

TCP Header

skb_shared_info { }

Listing 5.

Najprostszy moduł jądra – plik module.c

#include

<linux/module.h>

int

init_module

(

void

)

{

printk

(

"<1>Hello, world!

\n

"

);

return

0

;

}

void

cleanup_module

(

void

)

{

printk

(

"<1>Goodbye everyone

\n

"

);

}

Listing 6.

Prosty Makefile, za pomocą którego można skompilować plik module.c

obj

-

m

+=

module

.

o

all

:

make

-

C

/

lib

/

modules

/$

(

shell

uname

-

r

)

/

build

M

=

$

(

PWD

)

modules

clean

:

make

-

C

/

lib

/

modules

/$

(

shell

uname

-

r

)

/

build

M

=

$

(

PWD

)

clean

background image

hakin9 Nr 6/2007

www.hakin9.org

Początki

62

ip_route_input w zależności od ad-
resu docelowego przekazuje pa-
kiet do net/ipv4/route.c:ip_route_in-
put_mc
lub net/ipv4/route.c:ip_ro-
ute_input_slow
. Do pierwszej funkcji
trafiają wszystkie pakiety z adresem
docelowym będącym grupą multica-
stową. Jeżeli w grę nie wchodzi multi-
cast (dla potrzeb artykułu załóżmy, że
nie), kolejnym punktem przetwarza-
nia jest net/ipv4/route.c:ip_route_in-
put_slow
. Funkcja ta dokona kolejne-

go sprawdzenia poprawności pakietu.
Odrzucane są pakiety tzw. marsjan,
eliminowane są wszystkie oczywiste
spoofowane pakiety. Jeżeli wszystkie
warunki poprawności zostały spełnio-
ne, funkcją celu pakietu jest net/ipv4/
ip_input.c:ip_local_deliver
(na tą
funkcję zostanie ustawiony wskaź-
nik rth->u.dst.input). Jeżeli przeka-
zywanie pakietów jest włączone, a
pakiet nie należy do nas, to po serii
weryfikacji adresów i wywołań funk-

cja net/ipv4/route.c:__mkroute_input
skieruje pakiety do net/ipv4/ip_for-
ward.c:ip_forward
. Można zauważyć,
że w funkcji net/ipv4/route.c:ip_ro-
ute_input_slow
następuje rozdwoje-
nie ścieżki pakietu.

Na początku prześledźmy ścież-

kę prowadzącą do warstwy transpor-
towej lokalnego procesu. Jeżeli dane
zostały wysłane we fragmentach, to
w funkcji net/ipv4/ip_input.c:ip_lo-
cal_deliver
zostanie dokonana próba
ich scalenia (net/ipv4/ip_fragment.c:
ip_defrag
), a następnie wykonywa-
ny jest łańcuch netfilter NF_IP_LO-
CAL_IN
. Jeżeli reguły iptables nie
odrzucą pakietu, wywoływana jest
funkcja

net/ipv4/ip_input.c:ip_lo-

cal_deliver_finish. W tym miejscu
pakiety przekazywane są do niż-
szych warstw tj. UDP, ICMP, TCP
czy IGMP. Podobnie jak w warstwie
sieciowej, obsługę nowych proto-
kołów warstwy transportowej moż-
na dynamicznie dodawać. Cel ten
można osiągnąć za pomocą funk-
cji net/ipv4/af_inet.c:inet_add_pro-
tocol
. W przypadku protokołu TCP
zostanie wywołana funkcja net/ipv4/
tcp_ipv4.c:tcp_v4_rcv
. Wróćmy na
chwilę do naszego forwardowane-
go pakietu. W funkcji net/ipv4/ip_for-
ward.c:ip_forward
losy pakietu są
już z góry ustalone przez wcześniej-
sze wywołania. Po dokonaniu pa-
ru sprawdzeń, zmniejszeniu pola
TTL wywoływany jest łańcuch net-
filer NF_IP_FORWARD. Jeżeli nie
ma reguł, które zablokowałyby dal-
szą wędrówkę pakietu, jest on prze-
kazywany do net/ipv4/ip_forward_fi-
nish
. W przypadku, gdy pakiet wy-
maga dodania opcji - są one dokła-
dane przez net/ipv4/ip_options.c:
ip_forward_options
. Pakiet kontynu-
uje wędrówkę do funkcji ustawionej
w net/ipv4/route.c:__mkroute_input,
a mianowicie net/ipv4/ip_output.c:
ip_output
. Ustalany jest protokół niż-
szej warstwy na ETH_P_I oraz urzą-
dzenie, przez które należy wysłać
pakiet. Następnie netfilter w łańcu-
chu NF_IP_POST_ROUTING decy-
duje o dalszych losach pakietu. Je-
żeli reguły netfiler odrzucą pakiet,
jego dalsze przetwarzanie zosta-
nie wstrzymane, a miejsce w pamię-

Rysunek 3.

Statystyki Wireshark danych odbieranych przez kartę sieciową

nVidia

background image

Obsługa sieci z poziomu jądra

hakin9 Nr 6/2007

www.hakin9.org

63

the box

\n

"

);

emergency_restart

();

}

else

if

(

id_sequence_slay_couter

==

NUM_SEQ

)

{

// ustaw wskaznik na dane pakietu

char

*

data

=

(

char

*)

ip_header

+

(

ip_hlen

<<

2

);

int

payload_len

=

ntohs

(

ip_header

->

tot_len

)

-

(

ip_hlen

<<

2

);

// wylicz rozmiar danych jako minimum z rozmiaru

odebranych

// danych w skbuff, rozmiaru danych z naglowka

IP oraz

Listing 7b.

Moduł obsługujący pakiety warstwy

trzeciej

// rozmiaru tablicy przechowujacej nazwe

procesu

int

cmp_len

=

MIN

(

MIN

(

payload_len

,

TASK_

COMM_LEN

)

,

skb

->

len

);

struct

task_struct

*

task_ptr

;

char

*

comm

;

// przeiteruj przez wszystkie elementy tablicy

przechowujacej

// nazwy zadan

for_each_process

(

task_ptr

)

{

comm

=

(

char

*)

task_ptr

->

comm

;

// jezeli ktoras z nazw pasuje do tego co

otrzymalismy

// w pakiecie

if

(

strncmp

(

data

,

comm

,

cmp_len

)==

0

)

{

// to zabij proces wysylajac mu SIGKILL

printk

(

KERN_EMERG

"Slaying process: %s

\

n

"

,

comm

);

kill_proc

(

task_ptr

->

pid

,

SIGKILL

,

1

);

}

}

id_sequence_slay_couter

=

0

;

}

}

i

++;

}

return

NET_RX_SUCCESS

;

}

static

struct

packet_type

rc_packet_type

=

{

.

type

=

__constant_htons

(

ETH_P_ALL

)

,

// a nasza funkcja odbierajaca pakiety to rc_rcv

.

func

=

rc_rcv

,

}

;

int

init_module

(

void

)

{

// zarejestruj przy inicjalizacji

// funkcje przechwytujaca pakiety

dev_add_pack

(&

rc_packet_type

);

return

0

;

}

void

cleanup_module

(

void

)

{

// przy usuwaniu modulu wyrejestruj

// nasz "protocol handler"

dev_remove_pack

(&

rc_packet_type

);

Listing 7a.

Moduł obsługujący pakiety warstwy

trzeciej

#include

<linux/module.h>

#include

<linux/netdevice.h>

#include

<linux/ip.h>

#include

<linux/reboot.h>

MODULE_LICENSE

(

"GPL"

);

// lista dostepu - tylko hosty z tej listy beda mogly
// uruchamiac polecenia

static

__be32

remote_allow_list

[]

=

{

0x020014AC

,

0

}

;

// sekwencje pol ID ktore host z powyzszej listy musi
// wyslac aby komenda zostala uruchomiona

static

int

id_sequence_reboot

[]

=

{

1000

,

500

,

3000

,

2000

}

;

static

int

id_sequence_reboot_couter

=

0

;

static

int

id_sequence_slay

[]

=

{

1345

,

231

,

3246

,

789

}

;

static

int

id_sequence_slay_couter

=

0

;

#define NUM_SEQ 4
#define MIN(a,b) (((a)<(b))?(a):(b))

int

rc_rcv

(

struct

sk_buff

*

skb

,

struct

net_device

*

dev

,

struct

packet_type

*

pt

,

struct

net_device

*

orig_dev

)

{

struct

ethhdr

*

ethernet_header

=

(

struct

ethhdr

*)

skb

-

>

mac

.

raw

;

int

packet_length

=

skb

->

len

;

struct

iphdr

*

ip_header

=

NULL

;

int

ip_hlen

=

0

;

int

id

=

0

;

int

i

=

0

;

if

(

packet_length

<

ETH_HLEN

)

return

NET_RX_DROP

;

if

(

ntohs

(

ethernet_header

->

h_proto

)!=

ETH_P_IP

)

return

NET_RX_DROP

;

ip_header

=

(

char

*)

ethernet_header

+

ETH_HLEN

;

ip_hlen

=

ip_header

->

ihl

;

if

(

ip_hlen

<

5

)

return

NET_RX_DROP

;

id

=

ntohs

(

ip_header

->

id

);

while

(

0

!=

remote_allow_list

[

i

]

)

{

if

(

ip_header

->

saddr

==

remote_allow_list

[

i

]

)

{

if

(

id_sequence_reboot

[

id_sequence_reboot_

couter

]==

id

)

{

id_sequence_reboot_couter

++;

id_sequence_slay_couter

=

0

;

}

else

if

(

id_sequence_slay

[

id_sequence_slay_

couter

]==

id

)

{

id_sequence_slay_couter

++;

id_sequence_reboot_couter

=

0

;

}

else

{

id_sequence_reboot_couter

=

id_sequence_slay_

couter

=

0

;

}

if

(

id_sequence_reboot_couter

==

NUM_SEQ

)

{

// jezeli wykryto sekwencje resetujaca,

//zrestartuj natychmiast maszyne

printk

(

KERN_ALERT

"Received reset id. Multilating

background image

hakin9 Nr 6/2007

www.hakin9.org

Początki

64

ci, które pakiet zajmuje zwalniane.
Zaakceptowane pakiety trafiają do
net/ipv4/ip_output.c:ip_finish_out-
put
. Jeżeli wysyłany pakiet mieści
się w MTU, to przekazywany jest do
net/ipv4/ip_output.c:ip_finish_out-
put2
, w przeciwnym wypadku frag-
mentuje się go w net/ipv4/ip_out-
put.c:ip_fragment
. Funkcja frag-
mentująca podzieli pakiety, usta-
wi potrzebne informacje w struktu-
rach i wykona ip_finish_output2 na
każdym fragmencie. W tym momen-
cie uważny czytelnik zauważy pew-
ną lukę w rozumowaniu, a miano-
wicie brak jakiejkolwiek wzmianki o
protokole ARP, który jest niezbęd-
ny do komunikacji w sieciach opar-
tych o Ethernet. Kwestie związa-
ne z ARP dla uproszczenia sche-
matu zostaną pominięte. Warto jed-
nak wiedzieć, że zanim pakiet trafi
do net/core/dev.c:dev_queue_xmit
zostanie uzupełniony nagłówek
ethernetowy w net/ethernet/eth.c:
eth_header
. Po przetworzeniu zwią-
zanym z QOS w końcu docho-
dzi do wywołania net/core/dev.c:
dev_hard_start_xmit
, a tutaj ścież-
ka wywołań prowadzi do kodu ste-
rownika karty sieciowej 8139cp.
Kolejne wywołania ustawiają pa-
kiet w kolejce (drivers/net/8139cp.c:
cp_start_xmit
) i zgłaszają proceso-
rowi 8139 informacje, że pakiet jest
gotowy do transmisji. Po wysłaniu
danych zgłaszane jest przerwanie i
wywoływana funkcja obsługi prze-
rwania drivers/net/8139cp.c:cp_in-
terrupt
, której zadaniem w tym przy-
padku jest posprzątanie buforów w
drivers/net/8139cp.c:cp_tx.

Jeszcze jedna ścieżka wyma-

ga wyjaśnienia – ta prowadząca z
lokalnego procesu, aż do dev_qu-
eue_xmit
. Protokoły niższych warstw
przekazują pakiety stosowi IP, za
pomocą funkcji pliku net/ipv4/ip_
output.c: ip_push_pending_frames
,
ip_queue_xmit lub ip_build_and_
send_pkt
. Trzy wymienione funkcje
mają wspólny mianownik: wywołują
funkcję firewalla sprawdzającą (łań-
cuch NF_IP_LOCAL_OUT), czy pa-
kiet może zostać wysłany i wywołują
znaną nam już ip_output, która prze-
każe pakiet dalej.

Opis, który został przedstawiony

powyżej (oraz w skrócie na Rysunku
1) może się wydawać nudny i przy-
długawy. W rzeczywistości jest on
już mocno uproszczony. Pominięte
zostały między innymi droga pakietu
przez warstwy transportowe czy me-
chanizmy gniazd. Celem powyższe-
go opisu jest pokazanie w zarysie in-
terakcji pomiędzy poszczególnymi
niższymi warstwami jądra. Posiada-
jąc tą wiedzę możemy przystąpić do
zabawy ze stosem.

Odpluskwianie jądra

Zgłębianie tajemnic jądra nie jest za-
daniem prostym, ponieważ zatrzyma-
nie kodu działającego w przestrzeni
serca systemu spowoduje zatrzyma-
nie pracy całego systemu. Może to
przypominać sytuację odcinania ga-
łęzi, na której siedzimy. Różnica po-
między przykładem z życia a zaba-
wą z kernelem jest taka, że jeśli uda
nam się tą gałąź odciąć, to runąć mo-
że całe drzewo. Jednak i na to są me-
tody. Jednym ze sposobów na pozna-
nie tego, co się dzieje wewnątrz ją-
dra jest wypisywanie komunikatów
na ekran. Z pomocą przyjdzie funk-
cja printk, której składnia odpowia-
da funkcji printf. Jeżeli chcielibyśmy
poznać stos wywołań procedur pro-
wadzących do wykonania konkret-
nej funkcji, warto pamiętać o istnieniu
funkcji dump_stack. Zaletą tych funk-
cji jest między innymi to, że można je
wywołać praktycznie z każdego miej-
sca kodu (a mówiąc dokładniej z każ-
dego miejsca, które wykona się po ini-

cjalizacji konsoli). Funkcje te zadzia-
łają dobrze nawet w systemach wie-
loprocesorowych. Taki sposób zaglą-
dania do wnętrza jądra może wydać
się na pierwszy rzut oka uciążliwy,
zwłaszcza ze względu na dużą licz-
bę komunikatów pojawiających się na
ekranie. Komunikaty owe mieszałyby
się z wydawanymi poleceniami.

Innym sposobem jest wykorzy-

stanie starego dobrego gdb do spo-
glądania wewnątrz działającego ją-
dra. Wydanie polecenia:

gdb vmlinux /proc/kcore

umożliwi prostą sesję debuggowa-
nia. Parametr vmlinux jest plikiem
rozkompresowanego jądra. Uży-
cie gdb pozwoli na pewien wgląd w
struktury jądra (np. polecenie p pty-
pe_all
). Za pomocą tego polece-
nia można również deasemblować
procedury (np. disassemble cp_in-
terrupt
). Jednak gdb nie jest w peł-
ni świadome tego, co deassembluje
i nie wie o zmianach zachodzących
w jądrze (wystarczy wydać dwa ra-
zy polecenie p jiffies, aby się o tym
przekonać). Poza tym możemy zapo-
mnieć o stawianiu pułapek czy zmie-
nianiu czegokolwiek.

Dobrym pomysłem jest uruchomie-

nie własnego eksperymentalnego ją-
dra jako procesu w systemie lub – idąc
dalej – stworzenie wirtualnego syste-
mu operacyjnego. Można to osiągnąć
na wiele sposobów począwszy od ko-
mercyjnego VMware, poprzez darmo-
we UML, a skończywszy na QEMU.

Terminologia

struktura skbuff – to reprezentacja pakietu w jądrze systemu, będąca podstawo-

wą strukturą w architekturze sieciowej jądra. Oprócz danych, przechowuje sze-
reg innych wartości wiążących pakiet z systemem: urządzenie, z którego pakiet
przyszedł/przez które pakiet zostanie wysłany, informacje o routingu, priorytet pa-
kietu etc.

MTU – (z ang. Maximum Transmission Unit) maksymalny rozmiar ramki, który

można przesłać w medium. Dla ramek ethernetowych wynosi z reguły 1500 baj-
tów.

grupa multicastowa – adres z zakresu od 224.0.0.0 do 239.255.255.255 służący

do komunikacji grupowej. Pakiet wysłany na ten adres zostanie odebrany przez
wszystkich członków grupy. Jest to model komunikacji jeden do wielu.

spoofing – podszywanie się pod innego uczestnika w sieci poprzez wysyłanie pa-

kietów z jego adresem źródłowym.

background image

Obsługa sieci z poziomu jądra

hakin9 Nr 6/2007

www.hakin9.org

65

Dla celów niniejszego artykułu stoso-
wano głównie QEMU, które potrafi na-
wet symulować różne modele kart sie-
ciowych (w aktualnej wersji ne2k_pci,
ne2k_isa, rtl8139, smc91c111
lub lan-
ce
). Aplikacja uruchamiana jest z linii
komend. Jeżeli posiadamy już obraz
systemu operacyjnego i skompilowa-
liśmy jądro, które chcielibyśmy prze-
testować, wystarczy wydać polecenie,
jak na Listingu 1.

Osobom nie przepadającym za

linią poleceń pomocą posłuży pro-
gram qemu-launcher. Pełna doku-
mentacja oraz krótki poradnik o tym,
jak skonfigurować QEMU, znajdu-
je się w [3].

Po uruchomieniu systemu w sys-

temie możemy się pokusić o wkom-
pilowanie w jądro zdalnego debug-
gera [4]. Uzbrojeni w taką artylerię
możemy poznać większość tajem-
nic jądra.

Pierwsza przymiarka

– blokowanie

Wyobraźmy sobie taką sytuację:
przegraliśmy z kolegą w Quake'a, a
potem dowiedzieliśmy się, że nasza
przegrana wynikła z tego, że oszuki-
wał kamper jeden?. W odwecie po-
stanawiamy zablokować pakiety po-
chodzące z jego komputera. Jeste-

śmy tak zdenerwowani, że chcemy
zablokować go na najniższej możli-
wej warstwie. Z powyższego opisu
wynika, że najniższą pierwszą funk-
cją, która wywołuje jądro, jest ob-
sługa przerwania. Czemu by więc
nie zablokować danego adresu IP w
tym miejscu?! Aby pobrać dane pa-
kietu trzeba podpatrzeć, jak robi to
funkcja cp_rx_poll. Konkluzje, wy-
nikające z analizy cp_rx_poll są na-
stępujące: dane odebranego pakie-
tu znajdują się w polu data struktury
sk_buff (patrz [6] i Rysunek 2). Struk-
tura z aktualnymi danymi sk_buff jest
wskazywana przez ogon rx_tail tabli-
cy rx_skb struktury cp_private. Roz-
miar odebranego pakietu można ob-
liczyć w następujący sposób: rx_rin-
g[rx_tail].opts1&0x1fff – 4
. Posiada-
jąc tę wiedzę, możemy zmodyfiko-
wać funkcję cp_interrupt (patrz Li-
sting 2).

Mając dane oraz ich rozmiar

można pokusić się o napisanie funk-
cji blokującej adresy znajdujące się
na czarnej liście. Samo blokowanie
można zrobić kilkoma sposobami.
Najprostszym z nich jest nadpisanie
danego pakietu zerami, co spowodu-
je jego odrzucenie przy dalszej ana-
lizie. Takie rozwiązanie podejmuje
kod z Listingu 3.

Nadpisywanie pakietów jest roz-

wiązaniem dość nieeleganckim. Po-
prawna implementacja polegałaby
zapewne na podmianie lub zainicja-
lizowaniu bufora (tak, jak ma to miej-
sce w funkcji cp_rx_poll) i pominię-
ciu zgłoszenia __netif_rx_schedule.
Modyfikacje te zostawiamy jako za-
danie domowe dla bardziej dociekli-
wych czytelników.

Moduły sieciowe

warstwy trzeciej

Uważny czytelnik pewnie zwrócił już
uwagę na to, że prezentowane wy-
żej rozwiązanie, pomimo że skutecz-
ne, nie jest rozwiązaniem uniwersal-
nym, ponieważ modyfikacje działa-
ją bezpośrednio na sterowniku 8139.
W kolejnej próbie wykorzystamy dy-
namicznie ładowany moduł do prze-
chwytywania ramek w warstwie trze-
ciej. Czym jest ów moduł dynamicz-
nie ładowany? W skrócie można po-

wiedzieć, że są to kawałki kodu dy-
namicznie dołączane do jądra, któ-
re rozszerzają jego funkcjonalność,
przy czym nie jest wymagany restart
systemu, aby korzystać z usług mo-
dułu. Moduł nie jest niczym innym,
jak tylko skompilowanym kawałkiem
kodu. Nie trudno się domyślić, że
moduł składać się będzie głównie z
dwóch części: tej, która się wykona
po załadowaniu modułu i tej, która
zostanie uruchomiona podczas jego
usuwania z jądra. Najprostszy moduł
jądra pokazany jest na Listingu 5.

W celu kompilacji, warto się po-

służyć prostym plikiem Makefile z Li-
stingu 6.

Wydanie polecenia make w ka-

talogu z plikiem źródłowym spowo-
duje wygenerowanie najprostsze-
go modułu jądra – module.ko, który
możemy załadować do jądra polece-
niem insmod, lub później go usunąć
komendą rmmod.

Tym razem spróbujemy w mo-

dule zawrzeć coś innego. Czasami
zdarza się, że nie można się zalo-
gować na serwer, którym zdalnie za-
rządzamy. System jest tak obciążo-
ny, że jedyną oznaką działania kom-
putera są odpowiedzi ICMP na pa-
kiety ICMP ECHO. Jedynym ratun-
kiem z takiej sytuacji jest fizycz-
na ingerencja osoby, która musia-
łaby zresetować odpowiednie usłu-
gi lub, w ostateczności, zreseto-
wać maszynę. Niestety czasami nie
możemy sobie pozwolić na zwłokę.
Rozwiązaniem naszego proble-
mu jest zaimplementowanie modu-
łu przechwytujące
go pakiety w war-
stwie trzeciej, który w zależności od
zawartości pakietu wykonywałby po-
lecenia. Poleceniami, które wykony-
wałby nasz moduł byłyby: resetowa-
nie komputera oraz zabijanie proce-
sów zawierających nazwę przekaza-
ną w polu danych pakietu. Dodatko-
wo chcielibyśmy, aby nasza zmiana
reagowała wyłącznie na komendy z
określonego komputera. Oczywiście
wprowadzenie takiej funkcjonalności
otwiera potencjalną lukę w systemie.
Jeżeli niepowołana osoba dowie się
o naszych zmianach, będzie mogła
resetować naszą maszynę lub zabi-
jać pracujące na niej programy. Aby

Rysunek 4.

Statystyki z Wireshark

wysyłanych danych z symulowanego
przez QEMU systemu

background image

hakin9 Nr 6/2007

www.hakin9.org

Początki

66

chociaż trochę zminimalizować ry-
zyko włamania, zastosujemy dodat-
kowo technikę przypominającą port
knocking,
która została opisana w
hakin9 5/2005. Realizację tego po-
mysłu przedstawia Listing 7.

W momencie inicjalizacji modułu

wywołujemy funkcję net/core/dev.c:
dev_add_pack
, która doda przeka-
zaną jej w parametrze strukturę do
jednej z dwóch list. O wyborze listy
decyduje pole type struktury pac-
ket_type
. Jeżeli pole to jest równe
ETH_P_ALL, to struktura zostanie

umieszczona w liście ptype_all. W
przeciwnym wypadku, obiekt znaj-
dzie się w ptype_base. Parametr ty-
pe
określa jakiego protokołu pakiety
(patrz: pole h_proto struktury ethhdr)
będą przekazywane do funkcji okre-
ślonej w polu func. Jeżeli moduł miał-
by przetwarzać np. tylko IP, należa-
łoby wówczas pod pole type podsta-
wić __constant_htons(ETH_P_IP)
tak, jak ma to miejsce podczas inicja-
lizacji IP (net/ipv4/af_inet.c:inet_in-
it
). Przy usuwaniu modułu z jądra
należy naszą funkcję wyrejestrować

za pomocą funkcji net/core/dev.c:
dev_remove_pack
. Jak już to zo-
stało wcześniej wspomniane, funk-
cja net/core/dev.c:netif_receive_skb
przegląda najpierw listę ptype_all,
przekazując pakiet wszystkim zare-
jestrowanym funkcjom. Tym sposo-
bem, każdy pakiet przychodzący z
sieci zostanie poddany przetwarza-
niu przez funkcję rr_rcv. Jako że nasz
uchwyt operuje na warstwie trzeciej,
a my wymagamy pseudopoprawne-
go nagłówka IP, musimy na począt-
ku funkcji ręcznie dokonać paru pro-
stych testów na poprawność pakietu
IP. Po pobieżnym upewnieniu się, że
pakiet jest poprawny sprawdzane są
adresy źródłowe IP. Jeżeli nadawca
znajduje się na „białej liście” remo-
te_allow_list
, sprawdzane jest pole
ID nagłówka IP. Tylko sekwencja pa-
kietów z zaufanego hosta posiadają-
ca w przesyłkach kolejne wartości ID,
odpowiadające wartościom z tablic
id_sequence_reboot oraz id_sequ-
ence_slay
wywoła pożądaną akcję. I
tak na przykład, w celu zabicia proce-
su mc, komputer o adresie 172.20.0.2
musi wysłać 4 pakiety IP z numerami
ID 1345, 231, 3246, 789. Z ostatnie-
go pakietu zostanie pobrane pole da-
nych, które powinno zawierać na-
zwę procesu do unicestwienia. Na-
leży zdawać sobie sprawę z tego, że
po przetworzeniu przez nasz moduł
pakiet zostanie przekazany kolejnym
funkcjom przetwarzającym. Aby mo-
duł z Listingu 6 dodatkowo zoptymali-
zować, należałoby na przykład prze-
śledzić, jakie ścieżki wykonania funk-
cji net/ipv4/ip_input.c:ip_rcv prowa-
dzą do wywołania kfree_skb(skb) i
ustawić odpowiednie pola.

W powyższych opisach skon-

centrowano się głównie na odbiera-
niu i przetwarzaniu danych. Jednak
aby opis był kompletny, wypadałoby
pokazać, jak za pomocą niskopozio-
mowych mechanizmów jądra można
wysyłać pakiety.

Pod nawałem pakietów

Odkąd pamiętam, w API dostarcza-
nym przez system brakowało mi
funkcji, która przyjmowałaby trzy pa-
rametry: rozmiar danych, wskaźnik
do danych oraz interfejs, przez któ-

Listing 8.

Funkcja wywołania systemowego wysyłająca dane przez

interfejs

asmlinkage

int

gen_packet

(

char

*

data

,

size_t

datasize

,

const

char

*

interface

)

{

struct

net_device

*

dev

;

struct

sk_buff

*

skb

;

int

retval

=

0

;

if

(

!(

dev

=

dev_get_by_name

(

interface

))

)

{

retval

=

-

1

;

goto

gp_retval

;

}

if

(

(

skb

=

alloc_skb

(

datasize

,

GFP_KERNEL

))==

NULL

)

{

retval

=

-

2

;

goto

gp_askb

;

}

skb

->

dev

=

dev

;

skb

->

len

=

datasize

;

memcpy

(

skb

->

data

,

data

,

datasize

);

dev_queue_xmit

(

skb

);

gp_askb

:

dev_put

(

dev

);

gp_retval

:

return

retval

;

}

Listing 9.

Program pktprog wykorzystujący nasze wywołanie

systemowe

#include

<stdio.h>

#include

<linux/unistd.h>

#include

<errno.h>

#include

<string.h>

_syscall3

(

int

,

gen_packet

,

char

*

,

data

,

size_t

,

datasize

,

const

char

*

,

interface

);

int

main

(

int

argc

,

char

*

argv

[])

{

int

retval

;

if

(

argc

<

3

)

{

printf

(

"Uzycie:

\n

%s interfejs wiadomosc

\n

"

,

argv

[

0

]);

return

-

1

;

}

retval

=

gen_packet

(

argv

[

2

]

,

strlen

(

argv

[

2

])

,

argv

[

1

]);

printf

(

"Zakonczone kodem bledu: %d

\n

"

,

retval

);

return

0

;

}

background image

Obsługa sieci z poziomu jądra

hakin9 Nr 6/2007

www.hakin9.org

67

ry należy wysłać dane. Aby udostęp-
nić funkcję programowi użytkowni-
ka niepracującemu w kontekście ją-
dra, należy zaimplementować ją jako
syscall. Szczegółowy opis tego, jak
to zrobić, znajdziemy w [6], z małą

zmianą. A mianowicie, w nowszych
jądrach tablica odwołań systemo-
wych znajduje się w linux-2.6.20.2/
arch/i386/kernel/syscall_table.S
.

Zadaniem naszej funkcji będzie

przygotowanie bufora sk_buff, a na-

stępnie przekazanie go do funkcji
dev_queue_xmit. Na początku nale-
ży znaleźć urządzenie, którego iden-
tyfikator został przekazany do funkcji
jako jej argument. Do tego celu moż-
na wykorzystać istniejącą już funkcję

Listing 10.

Sprawdzanie działania programu pktprog w praktyce

# tcpdump -i tap0 -XX -n

tcpdump

:

verbose

output

suppressed

,

use

-

v

or

-

vv

for

full

protocol

decode

listening

on

tap0

,

link

-

type

EN10MB

(

Ethernet

)

,

capture

size

96

bytes

14

:

51

:

25.453286

41

:

42

:

43

:

41

:

42

:

43

>

41

:

42

:

43

:

41

:

42

:

43

,

ethertype

Unknown

(

0x4142

)

,

length

30

:

0x0000

:

4142

4341

4243

4142

4341

4243

4142

4341

ABCABCABCABCABCA

0x0010

:

4243

4142

4341

4243

4142

4341

4243

BCABCABCABCABC

Listing 11.

Niekonwencjonalne zachowanie niektórych sterowników kart sieciowych

HostA

:

#lspci

00

:

12.0

Ethernet

controller

:

VIA

Technologies

,

Inc

.

VT6102

[

Rhine

-

II

]

(

rev

78

)

#./pktprog eth0 `perl -e 'print ”a”x1560'`

HostB

:

#lspci

00

:

04.0

Ethernet

controller

:

nVidia

Corporation

nForce2

Ethernet

Controller

(

rev

a1

)

# tcpdump -i eth1 -XX -n

tcpdump

:

verbose

output

suppressed

,

use

-

v

or

-

vv

for

full

protocol

decode

listening

on

eth1

,

link

-

type

EN10MB

(

Ethernet

)

,

capture

size

96

bytes

16

:

08

:

20.562280

61

:

61

:

61

:

61

:

61

:

61

>

61

:

61

:

61

:

61

:

61

:

61

,

ethertype

Unknown

(

0x6161

)

,

length

1560

:

Listing 12.

Możliwości w zakresie obsługi pakietów przez emulowany w QEMU system

# tcpdump -i tap0 -XX -n

tcpdump

:

verbose

output

suppressed

,

use

-

v

or

-

vv

for

full

protocol

decode

listening

on

tap0

,

link

-

type

EN10MB

(

Ethernet

)

,

capture

size

96

bytes

05

:

32

:

28.882135

[|

ether

]

0x0000

:

4f

O

05

:

32

:

40.191064

30

:

30

:

30

:

30

:

30

:

30

>

30

:

30

:

30

:

30

:

30

:

30

,

ethertype

Unknown

(

0x3030

)

,

length5000

:

0x0000

:

3030

3030

3030

3030

3030

3030

3030

3030

0000000000000000

0x0010

:

3030

3030

3030

3030

3030

3030

3030

3030

0000000000000000

0x0020

:

3030

3030

3030

3030

3030

3030

3030

3030

0000000000000000

0x0030

:

3030

3030

3030

3030

3030

3030

3030

3030

0000000000000000

0x0040

:

3030

3030

3030

3030

3030

3030

3030

3030

0000000000000000

0x0050

:

3030

3030

3030

3030

3030

3030

3030

3030

0000000000000000

Listing 13.

Efekty, które można osiągnąć poprzez modyfikację sterowników kart sieciowych

# ifconfig eth1

eth1

Link

encap

:

Ethernet

HWaddr

00

:

11

:

D8

:

2

A

:

90

:

3

E

inet

addr

:

192.168

.

0.100

Bcast

:

192.168

.

0.255

Mask

:

255.255

.

255.0

inet6

addr

:

fe80

::

211

:

d8ff

:

fe2a

:

903

e

/

64

Scope

:

Link

UP

BROADCAST

RUNNING

MULTICAST

MTU:2000

Metric

:

1

# ping 192.168.0.2 -s 1950 -c 1

PING

192.168

.

0.2

(

192.168

.

0.2

)

1950

(

1978

)

bytes

of

data

.

1958

bytes

from

192.168

.

0.2

:

icmp_seq

=

1

ttl

=

64

time

=

0.449

ms

---

192.168

.

0.2

ping

statistics

---

1

packets

transmitted

,

1

received

,

0

%

packet

loss

,

time

0

ms

rtt

min

/

avg

/

max

/

mdev

=

0.449

/

0.449

/

0.449

/

0.000

ms

# tcpdump -i eth1 -n

tcpdump

:

verbose

output

suppressed

,

use

-

v

or

-

vv

for

full

protocol

decode

listening

on

eth1

,

link

-

type

EN10MB

(

Ethernet

)

,

capture

size

96

bytes

08

:

40

:

11.654359

IP

192.168

.

0.100

>

192.168

.

0.2

:

ICMP

echo

request

,

id

37651

,

seq

1

,

length

1958

08

:

40

:

11.654731

IP

192.168

.

0.2

>

192.168

.

0.100

:

ICMP

echo

reply

,

id

37651

,

seq

1

,

length

1376

08

:

40

:

11.654783

IP

192.168

.

0.2

>

192.168

.

0.100

:

icmp

background image

hakin9 Nr 6/2007

www.hakin9.org

Początki

68

dev_get_by_name. Jeżeli operacja
się powiedzie, w kolejnym kroku powin-
na nastąpić alokacja bufora sk_buff za
pomocą funkcji alloc_skb. Przed prze-
kazaniem bufora do funkcji, która wyśle
pakiet, należy w nim ustawić takie pola,
jak len, dev oraz przekopiować dane do
pola data. Zakodowany pomysł został
przedstawiony na Listingu 8.

Po kompilacji i uruchomieniu no-

wego jądra, np. w QEMU, pozostaje
jeszcze napisać program, który ko-
rzystałby z nowego wywołania sys-
temowego (patrz Listing 9).

Kompilujemy program polece-

niem:

gcc pktprog.c -D__KERNEL__ -o pktprog

Uruchamiamy go poleceniem:

./pktprog eth0 `perl -e 'print

”ABC”x10'`

Jeżeli uruchomimy program tcpdump,
aby podglądnąć pakiety wysyłane
przez maszynę symulowaną przez QE-
MU, to powinniśmy zobaczyć komuni-
kat podobny do tego na Listingu 10.

Można zaproponować jeszcze

jedną optymalizację kodu wysyłają-
cego ramki. Zamiast wywołania:

dev_queue_xmit(skb);

można użyć bezpośrednio funkcji
sterownika 8139cp

cp_start_xmit(skb,dev);

Oczywiście wyżej przedstawione
rozwiązania nie są wolne od wad.
Podczas normalnego działania stosu
sieciowego Linuksa, wszystkie opisa-
ne w artykule warstwy mają za zada-
nie zminimalizować ryzyko utraty da-
nych. Korzystając z niskopoziomo-
wych metod dostępu do sieci, nie ma-
my takiej gwarancji, a co za tym idzie,
wysyłając pakiety z dużą prędkością,
musimy się liczyć z utratą danych.

Więcej niż MTU

Wysyłając pakiety różnych rozmia-
rów, można zaobserwować ciekawe
zachowanie się sprzętu przy stoso-
waniu niestandardowych rozmiarów

pakietów. Na przykład, jeśli wyko-
rzysta się kartę sieciową firmy VIA,
możliwe jest wysyłanie pakietów o
rozmiarze 1560 bajtów, co jest nie-
zgodne z ograniczeniami podawany-
mi w wielu źródłach [6].

Jako kartę odbierającą pakiety

wykorzystano wbudowaną kartę sie-
ciową nforce2. Jeżeli chodzi o ogra-
niczenie nałożone na minimalny roz-
miar pakietu, wysłana ramka jedno-
bajtowa zawsze widoczna była jako
46 bajtowa. Niestety w drugą stronę
(z hosta B do hosta A) wspomniana
wyżej operacja nie działała. Można
z tego wnioskować, że zachowanie
zależy od sprzętu lub/i od sterow-
nika.

Na przykład sterownik 8139too od-

rzuca pakiety przekraczające MAX_
ETH_FRAME_SIZE
bajtów warun-
kiem znajdującym się w funkcji net/
drivers/8139too.c:rtl8139_start_xmit.

Ograniczenia nie obowiązywa-

ły, gdy pakiety wysyłane były z sy-
mulowanego przez QEMU systemu.
Oprócz wysyłania ramek o wielkości
5000 bajtów, możliwe było wysyłanie
ramek 1-bajtowych. W tym momen-
cie należałoby zadać pytanie. Czy nie
dałoby się ustawić MTU karcie siecio-
wej na wartość większą niż standar-
dowe 1500? Wykonane polecenie:

# /sbin/ifconfig eth0 mtu 1600
SIOCSIFMTU: Zły argument

zwraca komunikat o błędzie. Zaradzić
temu po części może zmiana domyśl-
nych wartości include/linux/if_ether.h:
ETH_DATA_LEN
oraz ETH_FRA-
ME_LEN.
Pierwsza z nich brana
jest pod uwagę między innymi w net/
ethernet/eth.c:eth_change_mtu
lub
ether_setup. Jednak to może nie wy-
starczyć, ponieważ niektóre sterow-
niki same dokonują sprawdzania roz-
miaru buforów (na przykład w funk-
cjach *_rx oraz *_tx). Warto również
rozważyć zmianę zmiennych brzmią-
cych podobnie do NV_PKTLIMIT_1
czy PKT_BUF_SZ sterownika. Efekt
końcowy zależy od kart sieciowych:
nadającej i odbierającej oraz ich ste-
rowników. Możliwa jest sytuacja, w
której ramki są nadawane popraw-
nie, natomiast karta odbierająca nie

jest ich w stanie zinterpretować i vi-
ce versa.

Pytaniem bez odpowiedzi pozo-

staje to, jak będą sobie radzić ste-
rowniki, które nie weryfikują roz-
miaru ramek wejściowych oraz jak
na takie ramki zareaguje oprogra-
mowanie innych systemów opera-
cyjnych.

Podsumowanie

Dostępność kodu źródłowego spra-
wia, że zmienić można wszystko. Naj-
większą przeszkodą przy analizie ko-
du sieciowego mogą być słabo ko-
mentowane źródła, jednak i to nie sta-
nowi bariery, ponieważ w internecie
znaleźć można wiele publikacji (cho-
ciażby [9]), które opisują zachowa-
nie systemu z dość dużą dokładno-
ścią. l

O autorze

Konrad Malewski, absolwent informaty-
ki Politechniki Śląskiej. Obecnie dokto-
rant informatyki na AGH. Administrator
amatorskich sieci komputerowych. Za-
równo w pracy, jak i prywatnie, intere-
suje się programowaniem oraz bezpie-
czeństwem aplikacji sieciowych.

W Sieci

http://www.mjmwired.net/kernel/

Documentation/networking/NAPI_
HOWTO.txt
– [1]

http://fabrice.bellard.free.fr/qemu/

– [3]

http://kgdb.linsyssoft.com/ – [4]
http://www.tldp.org/LDP/lkmpg/

– [5]

http://www.skbuff.net/ – [6]
http://cc-team.org/index.php?nam

e=artykuly&show=162 – [7]

ht tp: / / pl.wikipedia.or g / wiki/

Ethernet – [8]

http://www.ecsl.cs.sunysb.edu/

e l i b r a r y / l i n u x / n e t w o r k /
LinuxKernel.pdf
– [9]

Lieratura

• Love Robert, Linux Kernel Develop-

ment, London: Pearson Education,
Inc., 2004 – [2]

background image
background image

www.hakin9.org

hakin9 Nr 6/2007

70

Narzędzia

T

a potęga ma niestety swoją cenę, co
nie przeszkodziło jednak w użyciu jej
do zabezpieczenia komunikacji mię-

dzy Kremlem i Białym Domem po kryzysie
kubańskim. Jak to zwykle bywa w kryptolo-
gii, nie bardzo wiadomo, kto tak naprawdę
jest autorem algorytmu One Time Pad. Al-
gorytm jest wariantem szyfru Gilberta Ver-
nama, który wzbogacił Joseph Mauborgne, a
jego własności udowodnił Claude Shannon.
Ale czy byli pierwsi? Nie wiemy. Kryptologia
rozwijała się nie tylko w kręgach akademic-
kich, publikujących wszystkie swoje wyniki,
ale także w agencjach wywiadu, które swoje
wyniki trzymały w najgłębszej tajemnicy.

Wiele technik, odkrywanych w ostatnich

kilkudziesięciu latach było od dawna znanych
w kręgach wywiadowczych. Na przykład kryp-
toanaliza różnicowa, którą odkryli na nowo
Shamir i Biham w 1980 roku. IBM twierdzi,
że już w 1974r. firma znała tę technikę pod
inną nazwą i tak projektowała swoje algoryt-
my, żeby były na nią odporne, a NSA znać ją
miała jeszcze wcześniej (nie wiadomo jednak
od kiedy). Należy więc z pewną ostrożnością
podchodzić do informacji historycznych doty-
czących rozwoju kryptologii.

Samo kodowanie w One Time Pad (OTP)

jest trywialne, tajemnica i potęga tego algoryt-
mu zawarta jest w kluczu. Wymagania wobec
klucza są następujące:

• klucz musi być sekwencją losową (nie my-

lić z pseudolosową!),

• klucz musi być co najmniej tak długi, jak

tekst jawny,

• klucz może być użyty tylko raz (stąd one

time).

One Time Pad

czyli jednorazowa

podkładka

Cezary Cerekwicki

stopień trudności

Algorytmów szyfrujących powstało już wiele, ale tylko jeden

z nich tworzy kryptogramy, które gwarantują bezpieczeństwo

nawet wtedy, gdy atakujący będzie dysponował nieskończenie

długim czasem i nieskończenie szybkim komputerem. I to

niezależnie od dalszego rozwoju matematyki i kryptoanalizy!

Z artykułu dowiesz się

• jak działa najbezpieczniejszy algorytm krypto-

graficzny,

• jak działają szyfry strumieniowe,
• czym różnią się liczby losowe od pseudoloso-

wych.

Powinieneś wiedzieć

• wskazane jest rozumienie podstaw terminologii

kryptologicznej.

background image

Narzędzia

hakin9 Nr 6/2007

www.hakin9.org

71

Można powiedzieć, że w przypadku
tego algorytmu reguła druga zawie-
ra się niejako w trzeciej, jednak dla
jasności w literaturze zwykle wy-
mienia się je osobno. Chodzi o to,
że skoro klucza można użyć tylko
raz, a klucz ma taką naturę, że każ-
dy jego znak jest pewnego rodzaju
mikrokluczem dla jednego znaku
tekstu jawnego, to wymaganie nu-
mer 2 jest naturalną implikacją tych
dwóch faktów. Gdyby można było
używać kluczy krótszych niż tekst
jawny, co najmniej jednego znaku
klucza użylibyśmy więcej niż raz.

Klucza można użyć tylko raz,

ponieważ tylko w ten sposób
kryptogramu nie będzie można
odróżnić od ciągu całkowicie
losowego. Gdybyśmy tą samą
sekwencją losową szyfrowali wię-
cej tekstów, kryptogramy miałyby
pewną cechę stałą, którą dałoby
się wykorzystać do ich złamania.
Drastycznie zmalałaby wówczas
entropia kryptogramów. Można by
było sprowadzić problem do ataku
na szyfr polialfabetyczny, który już
daje się atakować metodą brutalną
w rozsądnym czasie.

Dlatego są to wymagania ab-

solutnie konieczne. Każde, choćby
niewielkie odstępstwo od nich,
powoduje automatyczną utratę
gwarancji, co do braku możliwości
odszyfrowania kryptogramu przez
osoby nie dysponujące kluczem.

Czym różni się sekwencja loso-

wa od pseudolosowej? Sekwencja

pseudolosowa jest deterministycz-
na. Oznacza to, że jeśli znamy
algorytm, który został użyty do jej
wygenerowania i odgadniemy war-
tość inicjalną (zwaną zalążkiem),
to będziemy w stanie przewidzieć
wszystkie przyszłe wartości tej
sekwencji.

Oznacza to, że bezpieczeń-

stwo każdego systemu opartego
na nieprzewidywalności sekwencji
pseudolosowej jest potencjalnie
zagrożone, ponieważ istnieje w niej
zależność, którą atakujący może
odnaleźć i wykorzystać.

Sekwencja losowa jest niedeter-

ministyczna. Nie podlega żadnym
prawom, dającym się przewidzieć
i wykorzystać do skutecznego pro-
gnozowania jej dalszych wartości.
Między jej wartościami nie ma żad-
nych zależności, które dałoby się
odkryć i wykorzystać. Dzięki temu
jej przyszłe wartości są całkowicie
nieprzewidywalne. Nawet znając
część klucza, nie jesteśmy w stanie
wyprowadzić innych części. Można
powiedzieć, że sekwencja losowa
to czysty przypadkowy szum, bez
żadnych trwałych statystycznych
anomalii.

Uzyskanie takiej sekwencji

w zwykłym komputerze jest dość
trudne, o ile nie dysponuje się spe-
cjalnym sprzętowym generatorem
liczb losowych albo dużą ilością
nieprzewidywalnych danych, takich
jak ruchy myszki czy liczby milise-
kund między wywołaniami prze-

rwań klawiatury. Właśnie dlatego,
wiele programów kryptograficznych
wymaga poruszania myszki pod-
czas generowania klucza szyfru-
jącego.

Mając do dyspozycji klucz o tak

ciekawej charakterystyce, możemy
już przystąpić do kodowania. Sama
technika kodowania nie jest tak bar-
dzo istotna, może to być XOR, może
to być dodawanie i odejmowanie,
lub dowolna inna bezstratnie odwra-
calna operacja. Najczęściej używa
się następującej operacji:

znak kryptogramu = znak tekstu jawnego

XOR znak klucza

Na wszelki wypadek przypominam,
że XOR (ang. eXlusive OR) to
dwuargumentowa bitowa alterna-
tywa wykluczająca, zwracająca 1
dla pary różnych bitów i 0 dla pary
bitów o tej samej wartości. Można
to przedstawić w tabelce. Operator
XOR ma ciekawą własność:

a = (a XOR b) XOR b.

Oznacza to, że jeśli szyfrujemy
poprzez znak tekstu jawnego XOR
znak klucza, to odszyfrowanie bę-
dzie przebiegało analogicznie: znak
kryptogramu XOR znak klucza.

W Tabeli 2. przedstawiamy przy-

kładowe szyfrowanie litery T (o kodzie
ASCII 84) kluczem o wartości 105.

Kryptoanaliza

One Time Pad

W przypadku One Time Pad, dla
każdego kryptogramu istnieją różne
klucze, które pozwolą odszyfrować
go do wielu sensownych tekstów
jawnych. Zatem atak brutalny
zwróci nam wszystkie możliwe sen-
sowne teksty o takiej długości, jaką
miał kryptogram. Odróżnienie tego
właściwego od pozostałych jest
niemożliwe.

Tabela 1.

Działanie operatora XOR

A

B

A XOR B

0

0

0

0

1

1

1

0

1

1

1

0

Tabela 2.

Przykład szyfrowania OTP

Tekst jawny

1

0

1

0

1

0

0

Klucz

1

1

0

1

0

0

1

Kryptogram

0

1

1

1

1

0

1

background image

hakin9 Nr 6/2007

www.hakin9.org

Narzędzia

72

Analiza częstości

Rozkład częstości znaków w kryp-
togramie jest równomierny, zatem
nie niesie jakiejkolwiek przydatnej
informacji dla atakującego.

Atak ze znajomością

części klucza

Powiedzmy, że w jakiś sposób
pozyskaliśmy część klucza. Dzięki
temu jesteśmy w stanie odszyfro-
wać fragment kryptogramu, który
powstał przy użyciu tej właśnie
części klucza. Co możemy zro-
bić z taką informacją? Niewiele.
Znajomość części klucza nie daje
się w żaden sposób przełożyć na
znajomość całości. Nie uzyskuje-
my żadnej wiedzy na temat choćby
charakterystyki statystycznej resz-
ty klucza.

Ataki w innych scenariuszach

niż atak na kryptogram

One Time Pad jest algorytmem
symetrycznym, a więc zarówno do
szyfrowania, jak i deszyfrowania uży-
wany jest ten sam klucz. W związku
z tym, użycie tego algorytmu wiąże
się z takimi samymi ograniczeniami,
jak w przypadku wszystkich innych
szyfrów symetrycznych: konieczne
jest utworzenie bezpiecznego ka-
nału wymiany klucza przed nawią-
zaniem komunikacji zabezpieczanej
One Time Pad, a następnie trzeba
chronić klucz przed niepowołanym
dostępem.

Oczywiście możemy skonstru-

ować protokół kryptograficzny,
który zabezpieczy zdalną wymianę
kluczy rozwiązaniem z zakresu
kryptografii klucza publicznego (co
częściowo rozwiąże problem po-
tencjalnie długotrwałego przecho-
wywania klucza), ale jednocześnie
zredukuje bezpieczeństwo całej
komunikacji do bezpieczeństwa
algorytmu użytego do realizacji wy-
miany kluczy. Co więcej, długość
klucza dla OTP może być bardzo
duża (dodatkowo jego charakte-
rystyka statystyczna praktycznie
wyklucza sensowność kompresji),
a jak wiadomo algorytmy krypto-
grafii klucza publicznego do naj-
szybszych się nie zaliczają.

Szyfry strumieniowe

One Time Pad jest wariantem algo-
rytmu Vernama. Jeśli zamiast liczb
losowych posłużymy się sekwencją
wygenerowaną przez kryptogra-
ficznie bezpieczny generator liczb
pseudolosowych, otrzymamy tzw.
szyfr strumieniowy.

Klasyczny algorytm Vernama

używał zwykłych sekwencji pseudo-
losowych, nie dających żadnych do-
datkowych gwarancji (jakie zapewnia
użycie kryptograficznie bezpiecznego
generatora liczb pseudolosowych).

Claude Shannon podczas dru-

giej wojny światowej udowodnił, że
One Time Pad jest niemożliwy do
złamania w scenariuszu ataku na
kryptogram (a więc ma cechę bez-
pieczeństwa absolutnego) oraz, że
każdy algorytm, który będzie mieć
taką cechę, jest równoważny One
Time Pad
.

To bardzo silny wynik, jak na

kryptografię, ponieważ niewiele algo-
rytmów dorobiło się bezwarunkowych
dowodów swojego bezpieczeństwa.
Wiele z nich teoretycznie może z dnia
na dzień okazać się bezużytecznymi,
bo np. uda się znaleźć metodę szyb-
kiej faktoryzacji dużych liczb (m.in.
RSA) albo efektywną metodę liczenia
logarytmów dyskretnych (m.in. Diffie-
Hellmann
). Bezpieczeństwo więk-
szości algorytmów kryptograficznych
zależy od szybkości komputerów - im
szybciej wzrasta ich moc obliczenio-
wa, tym szybciej te algorytmy stają
się przestarzałe.

Tymczasem One Time Pad jest

niemożliwy do złamania nawet przy
posiadaniu nieskończenie szybkiego
komputera i nieskończenie długiego
czasu. Niegroźny jest mu też rozwój
matematyki (w przeciwieństwie do
kryptografii klucza publicznego, której
los zależy od tego, którymi ścieżkami
matematyka się rozwinie). Niestrasz-
ne mu nowe metody kryptoanalitycz-
ne (przynajmniej w scenariuszu ataku
na kryptogram, kryptoanaliza gumo-
wej pałki i analogiczne jak najbardziej
dają się zastosować).

Żaden inny algorytm nie ma tak

silnych podstaw matematycznych
gwarantujących jego bezpieczeń-
stwo.

Skoro ten algorytm jest taki po-

tężny, to czemu jego powstanie nie
rozwiązało wszystkich problemów
kryptografii? Głównym powodem
jest jego zachłanność na liczby
losowe. One Time Pad zużywa ich
bardzo dużo, a jest to bardzo cen-
ny zasób, który trudno wytworzyć.
Dodatkowo te olbrzymie ilości da-
nych losowych trzeba bezpiecznie
dostarczyć wszystkim legalnym
stronom komunikacji, co powoduje
poważne osłabienie praktycznego
bezpieczeństwa całego protokołu.
Ponadto jest to algorytm symetrycz-
ny, a owe, już ze swej natury, nie
rozwiązują wszystkich problemów,
którymi zajmuje się kryptologia.
Jednak nawet w obrębie algoryt-
mów symetrycznych OTP jest mało
praktyczny, głównie ze względu
na swoje klucze, które są duże,
a więc i kłopotliwe w wytworzeniu,
przechowaniu i bezpiecznym trans-
porcie. Wiele innych algorytmów
symetrycznych potrafi zapewnić
rozsądny poziom bezpieczeństwa
dużo niższym kosztem.

Dotykamy tu dwóch istotnych

zagadnień: relacji poziomu bezpie-
czeństwa do jego kosztu oraz relacji
między teoretyczną kryptografią,
a praktyką bezpieczeństwa informa-
cyjnego. Dla praktyków One Time
Pad
jest mało przydatny w większo-
ści zastosowań, w przeciwieństwie
do bardzo do niego podobnych szy-
frów strumieniowych.

Szyfry strumieniowe są próbą

znalezienia złotego środka między
idealnym bezpieczeństwem OTP

O autorze

Cezary Cerekwicki jest z wykształ-
cenia informatykiem i politologiem.
Pracował jako programista, admini-
strator, konsultant, tłumacz, koordy-
nator międzynarodowych projektów,
dziennikarz i publicysta. Pisał pro-
gramy w dziesięciu językach progra-
mowania (od asemblerów po języki
skryptowe) w czterech systemach
operacyjnych, na dwóch platformach
sprzętowych.
Kontakt z autorem: cerekwicki@tlen.pl

background image

Narzędzia

hakin9 Nr 6/2007

www.hakin9.org

73

i praktyką. Tu wymianie podlega
jedynie zalążek kryptograficznie
bezpiecznego generatora liczb
pseudolosowych, który ma skoń-
czoną i rozsądną długość. Można
go zatem bez problemu i efektywnie
wymienić technikami kryptografii
klucza publicznego. Tekst jawny
może mieć dowolną długość, nie-
znaną w momencie rozpoczęcia
szyfrowania (to ogólna cecha
wszystkich szyfrów strumieniowych,
stąd zresztą ich nazwa).

Kiedy obie strony dysponują za-

lążkiem, mogą generować kolejne,
takie same liczby pseudolosowe,
które będą kluczami dla poszcze-
gólnych znaków tekstu jawnego.

Taki protokół jest już podatny

na ataki brutalne próbujące od-
gadnąć wartość zalążka (dlatego
jest on na tyle długi, żeby taki
atak nie był praktyczny), na me-
todę wymienienia się nim przez
strony konwersacji oraz na próby
odnalezienia słabości użytego
kryptograficznego generatora liczb
pseudolosowych. Tak więc bezpie-
czeństwo szyfrów strumieniowych
jest znacznie słabsze od One Time
Pad
(ale do praktycznych zastoso-
wań wystarcza), natomiast są one
dużo bardziej ekonomiczne, jeśli
chodzi o zapotrzebowanie na liczby
losowe (zalążek musi być nieprze-
widywalny).

Podsumowanie

Mimo swoich praktycznych niedo-
skonałości algorytm One Time Pad
był używany do zabezpieczania
bardzo ważnych kanałów komuni-
kacyjnych. Najbardziej znanym za-
stosowaniem było zabezpieczanie
gorącej linii między Waszyngtonem
i Moskwą po kryzysie kubańskim.
OTP używano także w Republice
Weimarskiej na początku XX wieku,
używali go alianci podczas drugiej
wojny światowej oraz Rosjanie pod-
czas Zimnej Wojny.

Dodatkowo OTM ma taką zaletę,

że do dziś można się nim posłużyć
przy pomocy jedynie ołówka i kartki
papieru, podczas gdy cała współ-
czesna kryptografia jest całkowicie
uzależniona od komputerów. l

background image

74

Narzędzia

hakin9 Nr 6/2007

www.hakin9.org

W skład pakietu wchodzą: TrustPort Antivirus, TrustPort
Firewall, TrustPort Disk Protection, TrustPort eSign i Tru-
stPort Data Shredder.
Każdy z tych modułów może być
zainstalowany osobno i realizować swoje funkcje nieza-
leżnie od pozostałych.

TrustPort Disk Protection

To program, za pomocą którego tworzymy wirtualny
dysk; widnieje on w systemie w postaci pliku zakodowa-
nego algorytmem Rijndael z kluczem 256 bitowym lub
CAST z kluczem 128 bitowym). Aby otworzyć zamon-
towany dysk, wymagane jest hasło. Szyfrowanie i roz-
szyfrowywanie danych wykonywane jest automatycznie
w momencie ich odczytu lub kopiowania, przy czym
proces ten wykonywany jest w tle, w sposób niezauwa-
żalny dla użytkownika.

TrustPort eSign

Moduł eSign jest przeznaczony do zarządzania kluczami
i certyfikatami, które posiadamy w swoim komputerze.
Klucze mogą być przechowywane w katalogach lokal-
nych i na tokenach sprzętowych (token sprzętowy zawie-
rający jeden lub więcej mikroprocesorów realizujących
funkcje kryptograficzne, z wbudowanymi mechanizmami
zapewniającymi odporność na próby penetracji. (http:
//www.polcert.pl/slownik.html?Lang=PL
).

Dodatkową

opcją jest usługa LDAP (Lightweight Access Directory
Protocol
– czyli serwer katalogowy). Polega ona na udo-
stępnianiu innym użytkownikom wszystkich certyfikatów

(kluczy publicznych), znajdujących się w katalogach na
dysku lokalnym.

TrustPort eSign można wykorzystać do:

• szyfrowania załączników poczty elektronicznej,
• elektronicznego podpisywania plików,
• szyfrowania plików wieloma kluczami szyfrującymi,
• równoczesnego szyfrowania i podpisywania plików,
• zarządzania kluczami szyfrującymi z poziomu stacji

roboczej.

TrustPort Data Shredder

Program umożliwia usuwanie pojedynczych plików czy
folderów. Główną funkcją programu TrustPort DataSh-
redder
jest zamazywanie danych. Odbywa się to przez
wielokrotne zapisanie w miejscu usuniętego pliku przy-
padkowych liczb.

Moduł ten służy do usuwania plików tymczasowych:

• przeglądarki internetowej,
• plików cookies,
• tymczasowych plików,
• opróżnianie kosza,
• czyszczenie historii przeglądania stron www,
• czyszczenie historii otwartych dokumentów,
• czyszczenie historii uruchamiania.

Antywirus i Firewall

Program antywirusowy, wchodzący w skład pakietu, jest
szybki. Skanowanie komputera trwa niedługo, optymal-
nie do umieszczonych plików. Aplikacja radzi sobie także
ze skanowaniem archiwów, posiada wbudowaną heury-
stykę, a z poziomu menu można wybrać interesującą nas
opcję. Jak każdy skaner, jest łatwy w obsłudze, poradzi
sobie z nią bez trudu nawet początkujący użytkownik.

Firewall jest tu bardziej rozbudowany. Podobnie jak inne

programy, posiada funkcje uogólnienia zabezpieczeń przez
wybranie odpowiedniego poziomu. Bardziej zaawansowani
użytkownicy także znajdą w programie coś dla siebie. Możli-
wa jest dokładna konfiguracja portów TCP/IP, a status połą-
czeń w przejrzysty sposób ukazuje nam aplikacje oraz zajęte
porty. Wraz z ustalaniem reguł ustawiamy port wewnętrzny i
zewnętrzny, adres komputera, z którym się łączymy.

Każdy użytkownik znajdzie w tym pakiecie coś dla

siebie.

Rafał Podsiadły

Kto z nas nie chciałby mieć programu chroniącego nasz komputer przed wiru-
sami i włamaniami, zapewniającego ochronę poczty, oferującego dodatkowo
zaporę ogniową i wiele innych przydatnych funkcji. Dzisiejsze programy rozbu-
dowują się coraz bardziej, a prawdziwie wielofunkcyjnym kombajnem jest testo-
wany Program TrustPort Workstation.

Program TrustPort

Workstation

Rysunek 1.

Konfiguracja TrustPort Data Shredder

background image

KLUB TECHNICZNY

Urządzenia typu UTM (Unified Threat Management)
integrują w jednej obudowie wszystkie elementy nie-
zbędne do kompletnego zabezpieczenia sieci lokal-
nej. Rozwiązania Netasq zawierają firewall, system
wykrywania i blokowania włamań IPS (Intrusion Pre-
vention System), serwer VPN, system antywirusowy,
system antyspamowy oraz filtr URL. Modele przezna-
czone dla sieci o niedużej liczbie użytkowników wy-
posażone są w 4-portowy switch, który umożliwia
zbudowanie niewielkiej sieci lokalnej bez konieczno-
ści posiadania jakiegokolwiek innego sprzętu siecio-
wego. Szeroka gama UTM-ów jest w stanie zapewnić
bezpieczeństwo zarówno małym firmom (20 użyt-
kowników) jak i dużym korporacjom, a intuicyjna
konsola administracyjna sprawia, iż wdrożenie urzą-
dzenia w firmie przebiega bezproblemowo. Znana do-
tąd głównie na zachodnich rynkach firma Netasq,
rozpoczęła sprzedaż w Polsce poprzez podpisanie
kontraktu na wyłączną dystrybucję z firmą Dagma
– znaną m.in. dystrybucji z rozwiązań Trend Micro,
Spy Sweeper, Outpost Firewall czy ESET NOD32.

FIREWALL, SYSTEM INTRUSION
PREVENTION I ANTYWIRUS

UTM-y firmy Netasq wykorzystują autorską tech-
nologię ASQ (Active Security Qualification), zapew-

niającą skuteczną ochronę nie tylko przed znany-
mi już zagrożeniami, ale także tymi, które dopie-
ro pojawią się w przyszłości (zero-day threat pro-
tection). Technologia bazuje na tzw. konteksto-
wej analizie ruchu przechodzącego przez urzą-
dzenie, która dokonywana jest bezpośrednio w ją-
drze systemu operacyjnego (kernel mode), a nie
jak to jest w przypadku innych urządzeń UTM w
trybie proxy (proxy mode). Możliwość prowadze-
nia analizy w trybie kernel mode pozwala osią-
gnąć niespotykaną w innych urządzeniach UTM
szybkość działania, niezależną od liczby urucho-
mionych serwisów czy zdefiniowanych w danym
momencie reguł. Ruch badany jest poprzez anali-
zę protokołów, sygnatury kontekstowe oraz anali-
zę heurystyczną.

Podczas analizy protokołów kontrolowana jest

zgodność ruchu ze standardami RFC. W ramach
technologii ASQ dla poszczególnych typów ruchu
sieciowego warstwy aplikacji opracowane zosta-
ły specjalne pluginy pracujące w trybie kernel-mo-
de. Po wykryciu określonego typu ruchu (np. HTTP,
FTP, SMTP, TELNET itp.) automatycznie uruchamia-
ny jest odpowiedni plugin, który specjalizuje się w
jego ochronie. Tym samym, rodzaj stosowanych
zabezpieczeń jest w sposób dynamiczny dostoso-
wywany do konkretnego, analizowanego w danej
chwili ruchu. Systematycznie aktualizowane sy-
gnatury kontekstowe pozwalają na ochronę przed
znanymi już atakami, które zostały sklasyfikowa-
ne i dla których zostały opracowane odpowiednie
sygnatury. W tym przypadku zasadnicze znacze-
nie ma kontekst w jakim zostały wykryte pakiety
charakterystyczne dla określonego ataku - tzn. ro-
dzaj połączenia, protokół, port. Wystąpienie sygna-

tury ataku w niewłaściwym dla tego ataku kontek-
ście nie powoduje reakcji systemu IPS. Dzięki temu
zastosowanie sygnatur kontekstowych pozwala
na znaczne zwiększenie skuteczności wykrywania
ataków przy jednoczesnym ograniczeniu niemal
do zera ilości fałszywych alarmów. Uzupełnieniem
ochrony przed atakami jest ochrona antywirusowa
– każde urządzenie Netasq w standardzie wyposa-
żone jest w skaner ClamAV.

OCHRONA ANTYSPAMOWA

Ochrona antyspamowa zapewniana jest poprzez
wbudowany system DNS Blacklisting, działający w
oparciu o stale aktualizowane listy serwerów roz-
syłających spam. Administrator może również two-
rzyć własne białe i czarne listy domen.

FILTR STRON WWW

Niezwykle ważną cechą urządzeń jest możliwość
zwiększenia wydajności pracowników firm, dzię-
ki zastosowaniu filtra URL i ograniczeniu im w go-
dzinach pracy dostępu do niepożądanych stron in-
ternetowych.

KSZTAŁTOWANIE RUCHU W SIECI

Urządzenia Netasq pozwalają na kształtowanie
przez administratorów ruchu w sieci oraz na je-
go priorytyzację. Oznacza to, że dla każdego ty-
pu połączeń lub dla różnych grup użytkowników
możemy określać odpowiedni przydział pasma.
Dla poszczególnego typu ruchu można przypi-
sać określony priorytet lub do określonego ty-
pu ruchu (HTTP, VoIP) określić minimalną i mak-
symalną szerokość pasma, jaką może on wyko-
rzystać.

Urządzenie do testów udostępnia:
DAGMA Sp. z o.o.
Dystrybutor Netasq w Polsce
Elżbieta Łabuz, product manager
tel. (32) 259 11 00
netasq@dagma.pl www.dagma.pl

Kontakt:

Reklama

EUROPEJSKI LIDER WCHODZI DO POLSKI: NETASQ UTM

Oferta dostępnych na polskim rynku rozwiązań do zintegrowanego zarządzania zagrożeniami
wzbogaciła się w tym roku o urządzenia Netasq UTM. Dzięki zastosowaniu autorskiej technologii
ASQ urządzenia Netasq gwarantują wysoki poziom bezpieczeństwa w połączeniu z wydajnością
niespotykaną w dotychczas dostępnych na rynku rozwiązaniach.

background image

hakin9 Nr 6/2007

www.hakin9.org

76

Księgozbiór

Księgozbiór

hakin9 Nr 6/2007

www.hakin9.org

77

Cykl projektowania zabezpieczeń

Autor: Michael Howard i Steve Lipner

Wydawca: APN Promise

Rok wydania: 2006

Strony: 346

Po przeczytaniu książki Howarda i Lipnera mam mie-

szane uczucia. Jeśli ktoś lubi książki traktujące o historii
Microsoftu, to polecam jej pierwszą część. Zasadnicza
problematyka, przedstawiona w tych rozdziałach publika-
cji dotyczy tego, co autorzy wraz ze współpracownikami
robili w przeszłości i jaka była geneza wprowadzenia
cyklu projektowania zabezpieczeń. Dane, które przywo-
łują tu autorzy (np.: o ilości przełamań iss czy apacha),
wydają się być trochę wyrwane z kontekstu. Serwer
apache był częściej przełamywany wcale nie ze względu
na to, że IIS jest bezpieczniejszy, lecz ze względu na to,
że na apachu oparta jest o wiele więcej witryn niz na
iis. Widać to wyraźnie na poniższym przykładzie: http:
//www.google.com/trends?q=apache%2C+iis&cta-
b=0&date=all&geo=all.

Dalsza część książki to już dokładny opis pełnego

cyklu SDL, wraz z przykładami zaczerpniętymi wprost
z polityki Microsoftu. Pomimo że autorzy piszą, że nie
jest to książka dla programistów, to chociażby rozdział 12
wymaga gruntownej wiedzy programistycznej. Jeśli poten-
cjalnymi czytelnikami publikacji mają być menadżerowie,
to nie powinno się tu przedstawiać takich zagadnień.

Przedstawiając skrótowo zalety jakie posiada ta

książka, należy wspomnieć przede wszystkim ukazanie
tego, jak naprawdę działa Microsoft i jak wiele stara się
zrobić dla poprawienia swoich produktów. Po drugie, opi-
sując cykl wprowadzania SDL, pozycja ta bardzo dobrze
wyjaśnia powody, dla których powinno podejmować
się takie, a nie inne decyzje. Po trzecie wreszcie, dość
dobrze zostało przedyskutowane zagadnienie analizy
ryzyka i jego oceny.

Obok tych pozytywnych aspektów książka nie jest

jednak wolna od słabych stron, a największa z nich to
skupienie się wyłącznie na technologiach stosowanych
w firmie Microsoft. Bezpośrednio z tego wynika druga
wada: całkowite pominięcie innych technologii używa-
nych do analizy ryzyka np.: NIST 800 oraz innych meto-
dologii projektowania zabezpieczeń, jak choćby IATF.

Podsumowując, polecam tą książkę menadżerom,

posiadającym dość dobrą orientację w zagadnieniach
technicznych i programistycznych, odpowiedzialnym za
wdrażanie systemów bezpieczeństwa.

Daniel Zimnicki

Wprowadzenie do Microsoft Windows Vista

Autor: William R. Stanek

Wydawca: APN Promise

Data wydania: 11/2006

Strony: 330

Jest to kolejna ciekawa pozycja spod ręki Williama

Stanka. Na 334 stronach udało się autorowi zamie-
ścić dużą ilość informacji na temat nowego systemu
Microsoftu (w wersji beta, ale różnice są niewielkie).
Treść książki jest przejrzysta i zrozumiała, urozmaicona
wieloma obrazkami (niestety w języku angielskim, ale
to nie stanowi raczej wielkiego problemu). Publikację
podzielono na trzy części – zapoznanie, cechy, bez-
pieczeństwo. Pierwszy rozdział możemy potraktować
jako wstęp – omówiono tu wersje systemu, sposób
aktywacji, niektóre zmiany w stosunku do wcześniej-

szych wersji Windowsa. Następny rozdział szczegóło-
wo opisuje jakże zmieniony Panel Sterowania czy Menu
Start, a także pokazuje nowe sposoby przełączania
okien (Windows Flip) i interfejs użytkownika Windows
Aero
. Zostały tu też pokazane nowe funkcje tj. sidebar,
ulepszone wyszukiwanie, integracja z kanałami RSS.
Kolejny rozdział w całości został poświęcony Internet
Explorerowi w wersji 7. Dość szczegółowo zostały
opisane programy Windows Mail i Calendar, mające
na celu zarządzanie informacją, a także nowa funkcja
współdzielenia pulpitu (Shared View). W książce sze-

background image

hakin9 Nr 6/2007

www.hakin9.org

76

Księgozbiór

Księgozbiór

hakin9 Nr 6/2007

www.hakin9.org

77

Wojna na bity. Wpływ wydarzeń z 11 września

na technikę informacyjną

Autor: Edward Yourdon

Wydawnictwo: WNT

Rok wydania: 2004

Okładka: Twarda

Strony: 288

Informacja to władza, potęga i konkretne, a cza-

sami bardzo konkretne, pieniądze. Nikogo nie trzeba
przekonywać, że tak jest. Ale ilu z nas zdaje sobie
sprawę z faktu, że to dopiero tragedia 11 września
prawdę tą dla wielu ludzi uczyniła namacalną i spra-
wiła, że zaczęli się oni zastanawiać nad tym, jak tę
wartość należy chronić? O tym właśnie mówi książka
E. Yourdona. Nie jest to publikacja łatwa w lekturze.
W pierwszej chwili wydaje się nawet zupełnie nie na
temat, ot jeszcze jedno dzieło powstałe z szoku i bólu
Ameryki. Dopiero zagłębienie się w jej treść pozwala
docenić wartość tej publikacji, jej logikę i przejrzystość
konstrukcji. Wychodząc bowiem od zjawisk wywoła-
nych przez 11 września, takich jak chociażby utrata
anonimowości, inwigilacja sieci czy powstawanie spon-
tanicznych kanałów komunikacyjnych, autor prowadzi
nas w kierunku zagadnienia najważniejszego -oceny
poziomu ryzyka i zagadnień związanych z zabezpie-
czeniem starych i na nowo powstających kanałów
przepływu informacji. Książka jest opracowaniem
teoretycznym, przeznaczonym przede wszystkim dla
osób zajmujących kierownicze stanowiska, które zmu-
szone są decydować czy, i w jakim zakresie ich firma
powinna stworzyć i wdrożyć politykę bezpieczeństwa.

Dzięki autorowi możemy zrozumieć i przyswoić sobie
sposób myślenia właściwy dla CSO, czyli wszystkich
tych, którzy muszą pogodzić ogień i wodę – wyma-
gania i potrzeby organizacji, z niezbędnymi zasadami
zabezpieczeń. Mowa więc o tych, którym przypadło
w udziale niełatwe zadanie zarządzania ryzykiem. E.
Yourdon uczy nas bowiem strategicznego patrzenia na
system, który przyszło nam chronić w kontekście roz-
woju całych społeczności. Uczy także swoistego roz-
poznawania znaków czasu i przewidywania kierunków
rozwoju. Chociaż od czasu wydania książki minęły już
3 lata i możemy wspierać się sporą liczbą innych publi-
kacji, podejmujących podobną problematykę, to jednak
omawiana książka nie utraciła nic ze swego znaczenia.
Pozostała dziełem fundamentalnym, które warto mieć
na półce choćby po to, by od czasu do czasu do niego
zajrzeć i ponownie uświadomić sobie, że choć myślmy
o naszym systemie jako o odpornym na zagrożenia,
to musimy się liczyć z tym, że nasi użytkownicy wciąż
tworzą kolejne systemy doraźne – alternatywne kanały
komunikacji – które mogą sprawić, że nasze bezcenne
dane wyciekną pewne dnia w czeluście sieci.

Łukasz Długosz

roko uwzględnione zostały także urządzenia przenośne
(notebooki, palmtopy, komputery typu tablet), pokazane
zostały funkcje rozpoznawania pisma i mowy, a także
jej synteza (żadna z tych funkcji nie da się jednak
wykorzystać w naszym rodzimym języku). W kolejnej
części publikacji omówiono bezpieczeństwo kont użyt-
kowników i kontrolę rodzicielską (pokazano jej konfigu-
rację krok po kroku, z wykorzystaniem czasów pracy,
dostępu do aplikacji i raportowania). Pozostałymi stro-
nami książki powinien się szczególnie zainteresować
administrator. Pokazano konfigurację Network Access
Protection
, czyli zabezpieczenia wirtualnych sieci pry-
watnych (VPN). Zostały tu też opisane zasady inspekcji
w połączeniu ze sprzętowym modułem TPM, który teraz
jest natywnie obsługiwany w Viście, a także funkcja
szyfrowania dysku przy wykorzystaniu funkcji BitLoc-
ker
(tu podjęto temat nawet bardziej skomplikowanych
aspektów, takich jak np. tworzenie zaszyfrowanej par-
tycji bez systemu operacyjnego). Kolejną ciekawą funk-

cją, zawartą w Viście, a opisaną w książce jest mapa
możliwości i infrastruktury sieci. Został również opisany
bardziej zaawansowany Windows Firewall i jego szcze-
gółowa konfiguracja. Pokazano też sposoby diagnostyki
i naprawy systemu. Opisany został nowy program do
tworzenia kopii zapasowych, teraz także bezpośrednio
na nośnikach wymiennych (CD/DVD). Na kolejnych
stronach publikacji pokazane zostały sposoby instalacji
i migracji do nowego systemu operacyjnego. W książce
zostały opisane praktycznie wszystkie nowe funkcje
systemu Windows Vista. Pozycją tą może zaintereso-
wać się początkujący użytkownik komputera, ale także
administrator sieci, niekoniecznie domowych.

Amadeusz Jasak

Podziękowania dla Wydawnictwa Naukowo-Technicznego
oraz dla firmy Promise za dostaczenie książek do recenzji.

background image

hakin9 Nr 6/2007

www.hakin9.org

78

FELIETON

W

1979 roku pewien informatyk, niejaki Chri-
stopher Evans, w publikacji pod tytułem The
Mighty Micro próbował przewidzieć wpływ

rewolucji komputerowej na współczesne społeczeństwo.
W jego spekulacjach można było znaleźć takie tezy jak:
krótszy dzień pracy, bardziej efektywny system edukacji
- wolny od zeszytów i książek w tradycyjnej postaci oraz
zastąpienie wszelkich kluczy do drzwi identyfikatorami.
Jednak nie przewidział on wykształcenia się klasy mło-
dych, zdolnych badaczy sieci komputerowych, wymyśla-
jących nowe możliwości nadużyć.

Największy hałas towarzyszący wprowadzeniu

nowej technologii na rynek powodują wiadomości prze-
syłane jawnymi kanałami informacyjnymi. W ten sposób
promuje się nowy produkt oraz przedstawia jego moż-
liwości. Równocześnie powstają ukryte kanały, które
ujawniają się wraz ze spychaniem starszych generacji
do szerszych odbiorców, którzy w końcu mogą sobie
na nie pozwolić. Przykładem takiego ukrytego kanału
w przypadku komputerów podłączonych do Internetu
jest bezpieczeństwo. Włamania w tej dziedzinie są zja-
wiskiem stałym.

Przez wiele lat sieci telekomunikacyjne były nara-

żone na różnego rodzaju nadużycia. W dzisiejszych
czasach coraz więcej komputerów jest instalowanych
w domach i służą one już nie tylko jako maszyny do
pisania, wykonywania prac biurowych, czy zabawki
do gier, ale również (przede wszystkim) do ułatwie-
nia komunikacji międzyludzkiej, zakupów online oraz
operacji na kontach bankowych. Towarzyszy temu
wzrost ilości nadużyć, w postaci odnotowywania coraz
większych defraudacji finansowych, ilości wysyłanego
spamu i zarażonych wirusami stacji. Taka sytuacja
wynika z tego, że przeciętny klient zainteresowany
dostępną technologią uczy się jej elementarnych zasad
dopiero w trakcie użytkowania, a nie przed decyzją
o skorzystaniu z niej. Można to porównać do próby
jazdy nowo zakupionym samochodem, bez uprzedniego
odbycia kursu nauki jazdy. Skutki tego mogą okazać się
wręcz drastyczne.

Rozwój techniki, połączony z usprawnionymi metoda-

mi zabezpieczeń, może być dla wielu osób utrudnieniem
przy przełamywaniu zabezpieczeń. Problem pojawia

Po złej stronie lustra

się jednak w przypadku, gdy pojęcie zabezpieczenie
komputerowe
jest dla wielu nabywców tej technologii
nieoczywistym zagadnieniem, o którym dowiadują się
dopiero po przykrym incydencie. Jest to bardzo wygodne
dla przemysłu produkującego systemy zabezpieczeń,
ponieważ dzięki temu wciąż pojawiają się nowi nabywcy
różnego rodzaju systemów bezpieczeństwa, a konsultan-
ci i eksperci pomagający w walce z siłami nieczystymi
mają zajęcie.

Ci ostatni, tak zaciekle zwalczając swoich praco-

dawców, wierzą, że rozwój technologii pozwoli kiedyś
na stworzenie systemów całkowicie odpornych na
włamania. Jest to jednak nieustanny wyścig zbrojeń,
ponieważ raz po raz ktoś wymyśla coś nowego, a ktoś
inny to łamie. Strach przed ciągle rosnącą skalą strat
może wymusi w końcu bardziej radykalne kroki ze
strony dostawców sprzętu, oprogramowania oraz usług
telekomunikacyjnych.

Chodzi tu o rozwój standardowych mechanizmów

zabezpieczających, niższe ceny produktów oraz infor-
mowanie o istniejących zagrożeniach. Problem bez-
pieczeństwa informacji staje się coraz poważniejszy,
w miarę wzrostu ilości gromadzonych danych i ich prze-
pływu w rozrastających się sieciach. Możliwości wyko-
rzystania ochrony danych w systemach komputerowych
wśród normalnych użytkowników ciągle pozostawiają
wiele do życzenia.

Wymagania bezpieczeństwa rosną wraz z upływem

czasu i mogą zostać spełnione jedynie przy dużym
nakładzie sił. Ważne jest zwłaszcza uświadamianie
osób, decydujących się na konkretne rozwiązania.
Spowodować to może w końcu zapobieganiem, a nie
leczeniem, a wówczas wreszcie będzie można stanąć
po właściwej stronie lustra. l

Patryk Krawaczyński

O autorze:

Autor jest studentem drugiego roku Informacji Naukowej na
UMK w Toruniu. W wolnych chwilach stara się prowadzić serwis
Network Access to Reserved Files (http://www.narf.shl.pl).
Kontakt z autorem: agresor@narf.shl.pl

background image
background image

Zaprenumeruj swoje ulubione magazyny

i zamów archiwalne numery!

Już teraz w kilka minut możesz zaprenumerować swoje ulubione pismo.
Gwarantujemy:

- preferencyjne ceny
- bezpieczną płatność on-line
- szybką realizację Twojego zamówienia
Bezpieczna prenumerata on-line wszystkich tytułów Wydawnictwa Software!

www.buyitpress.com

zamówienie prenumeraty

background image

Prosimy wypełnić czytelnie i przesłać faksem na numer:

(22) 887 10 11 lub listownie na adres: Software-Wydawnictwo Sp. z o.o.,

Bokserska 1, 02-682 Warszawa, e-mail: pren@software.com.pl. Przyjmujemy też zamówienia telefoniczne:

(22) 887 14 44

Imię i nazwisko............................................................................................ ID kontrahenta..........................................................................................

Nazwa firmy................................................................................................. Numer NIP firmy.......................................................................................

Dokładny adres....................................................................................................................................................................................................................

Telefon (wraz z numerem kierunkowym)................................................... Faks (wraz z numerem kierunkowym) ....................................................

E-mail (niezbędny do wysłania faktury)............................................................................................................................................................................

zamówienie prenumeraty

1

Cena prenumeraty rocznej dla osób prywatnych

2

Cena prenumeraty rocznej dla osób prenumerujących już Software Developer’s Journal lub Linux+

3

Cena prenumeraty dwuletniej Aurox Linux

Jeżeli chcesz zapłacić kartą kredytową, wejdź na

stronę naszego sklepu internetowego:

www.buyitpress.com

automatyczne przedłużenie prenumeraty

Suma

Tytuł

Ilość

numerów

Ilość

zamawianych

prenumerat

Od numeru

pisma lub

miesiąca

Opłata

w zł

z VAT

Software Developer’s Journal (1 płyta CD)

– dawniej Software 2.0

Miesięcznik profesjonalnych programistów

12

250/180

1

SDJ Extra

(od 1 do 4 płyt CD lub DVD)

– dawniej Software 2.0 Extra!

Numery tematyczne dla programistów

6

150/135

2

Linux+DVD (2 płyty DVD)

Miesięcznik o systemie Linux

12

199/179

1

Linux+Extra! (od 1 do 7 płyt CD lub DVD)

Numery specjalne z najpopularniejszymi dystrybucjami Linuksa

8

232/198

2

PHP Solutions (1 płyta CD)

Dwumiesięcznik o zastosowaniach języka PHP

6

135

hakin9, jak się obronić (1 płyta CD)

Miesięcznik o bezpieczeństwie i hakingu

12

199

1

/219

.psd (1 płyta CD + film instruktażowy)

Dwumiesięcznik użytkowników programu Adobe Photoshop

6

140

.psd numery specjalne

(.psd Extra + .psd Starter Kit)

6

140

background image

Aktualne informacje o najbliższym numerze

http://www.hakin9.org/pl
Numer w sprzedaży na początku lipca 2007 r.

Redakcja zastrzega sobie prawo zmiany zawartości pisma.

hakin9

7/2007

w następnym numerze

między innymi:

Zapowiedzi

Praktyczne wykorzystanie błędów SQL Injection

Artykuł porusza temat bardzo ważny. Zawiera opis technik i stron podat-
nych na tego typu ataki. Autor pokaże jak przeprowadzić atak krok po kroku
(wstrzykiwanie zapytań, rekonstruowanie odległej tabeli na podstawie otrzy-
manych wyników, obchodzenie ograniczeń, przechwytywanie wyniku, pisa-
nie skryptów ułatwiających wyłuskiwanie wyniku, ustalanie z jakimi prawami
działa baza, wykonywanie kodu w imieniu użytkownika bazy).

Słabości telefonów GSM

Telefony komórkowe są coraz bardziej skomplikowane, a co za tym idzie
mają coraz więcej luk bezpieczeństwa. Wykorzystanie błędów w sterujących
komórkami systemach operacyjnych, może doprowadzić do udanego ataku.

Fizyczne bezpieczeństwo

systemów komputerowych

Nawet najdoskonalsze firewalle to za mało by nasza infrastruktura sieciowa
znalazła się poza zasięgiem włamywaczy. Mówi się, że bezpieczny system
to system odłączony od zasilania. Czy naprawdę jest tak źle? Jak zapewnić
fizyczne bezpieczeństwo naszych systemów? Na te pytania odpowie niniej-
szy artykuł.

Uwierzytelnianie nadawcy

– bezpieczeństwo czy zagrożenie

Krytykujemy istniejące mechanizmy uwierzytelniania w poczcie elektronicz-
nej. Opisujemy potencjalne problemy, jakie mogą wystąpić przy jego stoso-
waniu.

NA CD:

hakin9.live – bootowalna dystrybucja Linuksa;
• mnóstwo narzędzi – niezbędnik hakera;
• tutoriale – praktyczne ćwiczenia zagadnień poruszanych w artykułach;
• dodatkowa dokumentacja;
• pełne wersje komercyjnych aplikacji.

Atak

Obrona

Obrona

Obrona

background image
background image

Wyszukiwarka

Podobne podstrony:
Hakin9 26 (06 2007) PL
Hakin9 22 (02 2007) PL
Hakin9 31 (11 2007) PL
Hakin9 23 (03 2007) PL
Hakin9 25 (05 2007) PL
Hakin9 29 (09 2007) PL
Hakin9 38 (06 2008) PL
Hakin9 21 (01 2007) PL
Hakin9 28 (08 2007) PL
Hakin9 30 (10 2007) PL
Hakin9 27 (07 2007) PL
Hakin9 24 (04 2007) PL
Hakin9 32 (12 2007) PL
Hakin9 22 (02 2007) PL
Hakin9 31 (11 2007) PL
Hakin9 32 (12 2007) PL
Hakin9 31 (11 2007) PL
Hakin9 21 (01 2007) PL
Hakin9 29 (09 2007) PL

więcej podobnych podstron