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

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.

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

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

PR

O

Prenumerata PRO

ko

nt

ak

t d

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

88

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

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 
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 lendev 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

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