hakin9 07 08 2008 pl

background image
background image
background image
background image

SPIS TREŚCI

4

HAKIN9 7-8/2008

SPIS TREŚCI

5

HAKIN9

7-8/2008

5

HAKIN9 5

HAKIN9 5

HAKIN9

NARZĘDZIA

12

AVG Internet Security 8.0

Recenzja programu AVG Internet Security 8.0.
Pakiet przeznaczony do kompleksowego zabezpieczenia komputera.
Jego trzonem jest ceniony program antywirusowy AVG Anti-Virus
znany głównie ze swej bezpłatnej wersji.

13

Gdata Internet Security 2008

Recenzja programu Gdata Internet Security 2008.
Zaawansowany pakiet do kompleksowej ochrony pracy w Internecie.
W jego skład wchodzi oprócz programu AntiVirus 2008, osobisty
firewall, filtr spamu a także moduły ochrony rodzicielskiej i filtrowania
treści.

POCZĄTKI

14

Wirtualny pulpit Windows

MACIEJ PAKULSKI

Współczesne systemy operacyjne umożliwiają uruchomienie wielu
programów jednocześnie, co może powodować problem organizacji
okien na pulpicie. Rozwiązaniem tego problemu może być użycie
wirtualnych pulpitów, choć mechanizm ten może także tworzyć
podstawę do działania złośliwego oprogramowania.

ATAK

20 Niebezpieczne przegladarki

PRZEMYSŁAW ŻARNECKI

Przeglądarka internetowa jest jednym z najczęściej używanych
programów. Z tej racji bywa również jednym z najczęściej
atakowanych. Wiele osób nie zdaje sobie chyba do końca sprawy, jak
ważne jest dbanie o jej bezpieczeństwo. Tym bardziej, że przeglądarki
zawitały również do urządzeń mobilnych. Korzystamy z nich więc
niemalże wszędzie. W artykule autor postanowił zwrócić uwagę na
zagrożenia, jakie płyną z używania poszczególnych przeglądarek, jak
również z niewłaściwego z nich korzystania. Ku przestrodze.

30 Hakowanie Gadu-Gadu

KONRAD ZUWAŁA

Gadu-Gadu to z pewnością najpopularniejszy w Polsce komunikator
internetowy. Niemal każdy z nas kiedyś się z nim zetknął, najczęściej
aby porozmawiać ze znajomymi. Jednak nawet tak popularna
aplikacja nie ustrzeże się błędów – czy możemy czuć się bezpieczni z
Gadu-Gadu?

38 Format GIF okiem hakera

MICHAŁ SKŁADNIKIEWICZ

Format GIF, oprócz podstawowej funkcjonalności oferowanej przez
wszystkie standardowe formaty graficzne, udostępnia również kilka
rozszerzeń umożliwiających stworzenie animacji czy też dodanie
komentarza do grafiki.

jest wydawany przez Software–Wydawnictwo Sp. z o.o.

Dyrektor wydawniczy: Sylwia Małecka

Redaktor naczelny: Katarzyna Juszczyńska

katarzyna.juszczynska@software.com.pl

Redaktor prowadzący: Robert Gontarski

robert.gontarski@software.com.pl

Kierownik produkcji: Marta Kurpiewska

marta.kurpiewska@software.com.pl

DTP Manager: Robert Zadrożny

DTP: Tomasz Kostro, Grzegorz Laskowski

Okładka: Agnieszka Marchocka

Dział reklamy: adv@software.com.pl

Prenumerata: Marzena Dmowska

pren@software.com.pl

Wyróżnieni betatesterzy:

Rafał Lysik, Michał Składnikiewicz

Opracowanie CD: Rafał Kwaśny

Druk: 101 Studio, Firma Tęgi

Nakład wersji polskiej 6 000 egz.

Wydawca:

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

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, Niemczech,

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

Prowadzimy również sprzedaż kioskową

w innych krajach europejskich.

Magazyn hakin9 wydawany jest

w 7 wersjach językowych:

PL

ES

CZ

EN

IT

FR

DE

UWAGA!

Techniki prezentowane w artykułach mogą być

używane jedynie we własnych sieciach lokalnych.

Redakcja nie ponosi odpowiedzialności za

niewłaściwe użycie prezentowanych technik

ani spowodowaną tym utratę danych.

background image

SPIS TREŚCI

4

HAKIN9 7-8/2008

SPIS TREŚCI

5

HAKIN9

7-8/2008

5

HAKIN9 5

HAKIN9 5

HAKIN9

OBRONA

42 Konsola NSM i HeX LiveCD

GRZEGORZ BŁOŃSKI

Monitorowanie sieci i systemów informatycznych w niej działających
to bardzo ważna część pracy administratorów. Choć narzędzi do
monitorowania jest wiele, nie wszyscy znają konsolę NSM (Network
Security Monitoring), stworzoną na potrzeby dystrybucji HeX.
Grzegorz w swoim arytkule wyjaśnia co to jest NSM-Console oraz do
czego służy dystrybucja HeX.

46 Zagrożenia wyścigowe

CEZARY G. CEREKWICKI

Czy w coraz bardziej skomputeryzowanych świecie, w którym informatyka
nie zawsze radzi sobie z trunymi do wykrycia błędami, możemy się czuć
bezpieczni? Cezary opisał jakie są błędy i podatności oraz co mogą
powodować. Wyjaśnia nieznane pojęcie heisenbug’a oraz czym są
sytuacje wyścigu.

50 Mobilna ochrona

MARCIN KLAMRA

Urządzenia mobilne zyskują coraz większą popularność. Trudno sobie
wyobrazić dziś firmę, w której pracownicy nie posiadają urządzeń
mobilnych, wyposażonych w bezprzewodowy interfejs sieciowy, pracujących
pod kontrolą systemu Windows Mobile. Problem w tym, by komunikację
tych urządzeń z siecią firmową uczynić bezpieczną.

58 Bezpieczne instytucje finansowe

GRZEGORZ PEŁECHATY

Wraz z rozwojem aplikacji webowych aspekt bezpieczeństwa stał się
zagadnieniem istotnym zarówno dla projektantów oprogramowania,
jak i dla użytkowników końcowych, którym z tego oprogramowania
przyjdzie korzystać. Oczywistym jest, że typowe portale internetowe mogą
lekko odstąpić od tej zasady i przedłożyć prostotę użytkowania nad
bezpieczeństwo, jednak w przypadku instytucji finansowych takich, jak
banki, proces autoryzacji tożsamości musi zapewniać maksymalny poziom
ochrony danych osobowych, informacji dotyczących stanu konta, historii
rachunku itp. Celem tego artykułu jest obiektywne spojrzenie na obecne
systemy informatyczne wcześniej wymienionych instytucji, pokazanie ich
słabych i mocnych stron oraz po części przedstawienie firm, które pracują
w domenie bezpieczeństwa internetowego i świadczą usługi z zakresu
wdrażania kompleksowych systemów zabezpieczeń.

62 Przepełnienie bufora

ARTUR ŻARSKI

Często tworząc oprogramowanie zastanawiamy się nad jego
bezpieczeństwem, ale czy zawsze? Szczególnie wrażliwy na
bezpieczeństwo jest sam kod naszej aplikacji, dlatego warto zwrócić
uwagę na jedno z największych zagrożeń, jakie czyha na programistę
– przepełnienie bufora.

67 Klub Techniczny

Zagrożenie pochodzi z Internetu
Raport firmy Trend Micro na temat wirusów w 2007 roku i prognoza na
2008 rok.

STAŁE

RUBRYKI

6 W skrócie

Przedstawiamy garść najciekawszych
wiadomości ze świata bezpieczeństwa
systemów informatycznych i nie tylko.

10 Zawartość CD

Prezentujemy zawartość i sposób
działania najnowszej wersji naszej
sztandarowej dystrybucji hakin9.live.

68 Zestawienie

produktów Security

Walka między użytkownikiem a
wirusem wciąż trwa – na rynku jest
dużo programów antywirusowych,
pomiędzy którymi niezwykle trudno
wybrać ten odpowiedni.

72 Wywiad

Wywiad z Maciejem Rybackim,
prezesem firmy szkoleniowej Diacom.

76 Księgozbiór

Recenzujemy książki : Bezpieczeństwo
Microsoft Windows – Podstawy
praktyczne oraz Analiza Ryzyka i
Ochrona Informacji w Systemach
Komputerowych.

78 Felieton

Ataki społecznosciowe
Patryk Krawaczyński

82 Zapowiedzi

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

background image

6

W SKRÓCIE

HAKIN9 7-8/2008

7

JAKUB BUCZYŃSKI

HAKIN9

7-8/2008

ZNALEZIONO NAJWIĘKSZY BOTNET

Do tej pory za największy botnet uważano
sieć robaka Storm , jednak najświeższe
informacje wskazują, że istnieje botnet
składający się z ponad 400 000 komputerów.
Jest to liczba dwa razy większa niż w
przypadku Storma. Nowy botnet nosi nazwę
Kraken, a w jego skład wchodzą między
innymi komputery z 50 firm znajdujących
się na liście Fortune 500. Botnet ten jest
obserwowany przez firmę Damballa, która
przestrzega przed Krakenem i informuje, że
jest on trudny do wykrycia, ponieważ potrafi
modyfikować swój kod. Jedynie 20 procent
programów antywirusowych potrafi wykryć
malware odpowiedzialne za zarażenie
maszyn. Przebiegły Kraken podszywa się pod
plik graficzny, po jego otwarciu automatycznie
kopiuje się na dysk w zmienionym formacie.
Co się zatem stanie, gdy nowy botnet
zarazi nasz komputer? Otóż zainfekowany
system komunikuje się z serwerami
wydającymi rozkazy poprzez własne
protokoły wykorzystujące TCP i UDP. Ponadto
malware jest wyposażony w mechanizm,
który umożliwia samoczynne pobieranie
aktualizacji, co pomaga mu lepiej się ukryć.

DZIURAWE OPROGRAMOWANIE
FIRMY SYMANTEC

W laboratorium VeriSign iDefense wykryto
luki w oprogramowaniu firmy Symantec,
które pozwalają atakującemu na przejęcie
kontroli nad komputerem użytkownika.
Firmie nie pozostało nic innego, jak tylko
potwierdzić istnienie błędów w swoich
produktach. Luki bazują na kontrolce ActiveX
o nazwie SymAData.dll i pozwalają na
wykonanie złośliwego kodu z uprawnieniami
zalogowanego użytkownika. Warunkiem
powodzenia ataku jest wcześniejsze
odwiedzenie przez użytkownika strony
internetowej ze specjalnie spreparowaną
zawartością. Produktami podatnymi na
ten atak są: Norton AntiVirus (2006-2008),
Norton Internet Security (2006-2008),
Norton SystemWorks (2006-2008) i Norton
360 (v 1.0).

BŁĄD W ARKUSZU
KALKULACYJNYM GOOGLE

Billy Rios, specjalista od zabezpieczeń,
wykrył lukę w Google Spreadsheets.

Jest to aplikacja służąca do edycji
arkuszy kalkulacyjnych. Błąd pozwala
na przejęcie plików cookies użytkownika
poprzez odwołanie się do specjalnie
spreparowanych tabel. Luka, którą wykrył
Rios, bazuje na błędnych lub ignorowanych
przez przeglądarkę nagłówkach Content-
Type, które są zawarte w odpowiednich
HTTP. Problem ten występuje w takich
przeglądarkach, jak: Internet Explorer,
Mozilla Firefox, Opera, Safari. Błąd pozwala
napastnikowi na swobodny dostęp do
niemal wszystkich usług udostępnianych
przez Google na koncie ofiary.

Na szczęście Google szybko

naprawiło znalezioną lukę.

PODMIENIONO STRONY RZĄDOWE

Dnia 16 kwietnia 2008 r. strona
Ministerstwa Pracy została podmieniona
przez hakera, który napisał kilka słów do
odwiedzających – a może bardziej do
przedstawicieli Ministerstwa.

Haker skrytykował politykę

państwa oraz poziom bezpieczeństwa
teleinformatycznego instytucji państwowych
w naszym kraju.

18 kwietnia przypuszczalnie ta sama

osoba zaatakowała stronę Kancelarii
Premiera. Na stronę główną znów zawitał
znany napis HACKED oraz dalsza treść,
którą prezentujemy poniżej (w oryginale):
kurde
ale się porobiło
co nie? ;]
Drugie włamanie i kolejny dowód na to, że
bezpieczeństwo instytucji państwowych w
naszym kraju nie idzie w dobrym kierunku
:/
Nie mam zamiaru włamywać się na
kolejne strony, nie szukam rozgłosu i
dlatego pozostanę raczej w podziemiu ;)
Pozdrowienia dla premiera [;P} oraz dla
całego polskiego undergroundu
Pokój
Prawdopodobnie ataku dokonano
wykorzystując dziury w nieaktualizowanym
serwerze Apache. Według Zbigniewa
Urbańskiego z Komendy Głównej Policji
na razie nie ma pewności, czy obu ataków
dokonał ten sam haker. Zaskoczony
Urbański przypomina, że za atak na strony
rządowe grozi do 8 lat więzienia.

Kancelaria zawiadomi policję

o popełnieniu przestępstwa

– poinformował szef Centrum
Informacyjnego Rządu Jacek Filipowicz.
Hakerzy zaatakowali w nocy – poprzez
jedną z nieużywanych stron – cztery
podstrony serwisu internetowego
Kancelarii Premiera, m.in. te dotyczące
służby cywilnej i funduszy strukturalnych
– powiedział Filipowicz.

UBUNTU 8.04 LTS

Pojawiła się stabilna wersja dystrybucji
Ubuntu 8.04 Desktop Edition, kryjącej się
również pod nazwą kodową Hardy Heron
(dosł. Śmiała Czapla). Wersja Ubuntu 8.04
to wydanie LTS, będzie ono wspierane
technicznie przez okres 3 lat. Posiadając już
ów system, będziemy mogli go aktualizować
do wersji Ubuntu 8.10, która ukaże się w
październiku 2008 roku.

Hardy Heron proponuje nam między

innymi najnowsze aplikacje Gnome
z efektami wizualnymi, odtwarzacz z
możliwością przeglądania zasobów
YouTube i integracji z Myth TV, aplikacją
do nagrywania sygnału video o otwartym
kodzie. Nowy system Ubuntu wspiera
ponad trzydziestu komercyjnych dostawców
oprogramowania, np: Adobe, Google, Real
Networks, Skype, Corel, Parallels, Fluendo.
System można pobrać ze strony projektu
lub zamówić płytę.

SLAX 6.0.6

Ukazała się zaktualizowana wersja
Dystrybucji SLAX 6, zbudowanej w oparciu
o dystrybucję Linux – Slackware.

Głównymi zaletami systemu są

niewielki rozmiar (niespełna 200 MB)

background image

6

W SKRÓCIE

HAKIN9 7-8/2008

7

JAKUB BUCZYŃSKI

HAKIN9

7-8/2008

oraz modularna budowa. System oparty
jest na środowisku graficznym KDE.
Zaktualizowano bazę systemu Slackware
do najnowszej wersji, eliminującej kilka
błędów w bibliotece glibc, zmieniono
także kolejność pakietów w celu
rozwiązania problemów z działaniem
gtk+2. Poza tym autor wprowadził kilka
poprawek w obsłudze slink:// i usunął
problem z zapamiętywaniem ustawień
miksera alsa.

JĄDRO 2.6.25

Ukazała się wersja 2.6.25 jądra
Linuksa. Zawiera ona nowy mechanizm
zarządzania pamięcią, bazujący na
kontrolowaniu grupowym, którego początki
pojawiły się w poprzedniej wersji kernela.
Pozwala on na oddzielenie aplikacji
pamięciożernej od innych, mających
mniejsze zapotrzebowanie na zasoby.
Podobnie jest z obsługą procesora. W
nowej wersji umożliwiono kontrolowanie
procesów czasu rzeczywistego.
Dodatkowo wprowadzono możliwość
wywłaszczania mechanizmu Read-copy-
update
, co pozwala na wyeliminowanie
opóźnień i sprawia, ze Linux zbliża
się bardziej do systemów czasu
rzeczywistego. Usprawniono mechanizm
spinlocków, a także mierzenie użycia
pamięci przez procesy.

Wprowadzono ulepszenia w wywołaniu

systemowym timerfd, wprowadzając
implementację korzystającą z
deskryptorów plików. Dodano mechanizm
Simplified Mandatory Access Control
– framework bezpieczeństwa alternatywny
dla SELinuksa. Na użytek programistów
przygotowano narzędzie pozwalające
wykrywać opóźnienia w systemie
operacyjnym. Do jądra dodano dwa
rozwiązania pochodzące z technologii
exec-shield opracowanej przez Red
Hata. Służą one do wyboru losowych
miejsc w pamięci dla aplikacji, które
chcą zaalokować pamięć. Zastosowanie
losowych adresów jest utrudnieniem
dla hakerów, którzy dzięki temu muszą
pokonać dodatkową przeszkodę przy
tworzeniu exploitów wykorzystujących
dziury w oprogramowaniu.
Jądro 2.6.25 wspiera popularny w
przemyśle protokół CAN, służący do
niezawodnej komunikacji pomiędzy

urządzeniami. Wprowadzono lepszą
komunikację dla regulacji termicznej w
ACPI oraz mapper dla WMI (Windows
Management Interface), który jest
rozszerzeniem ACPI wykorzystywanym w
systemach Microsoftu. Ukazały się nowe
funkcje obsługi systemu plików ext4.
Zastosowano alokację wieloblokową,
wsparcie dla dużych bloków, sumy
kontrolne dla dziennika, obsługę dużych
plików, wersjonowanie i-nodów oraz
rozszerzone atrybuty w i-nodzie. Dodano
wsparcie dla architektur MN10300/AM33
i Orion SoCs. Pojawiła się obsługa
technologii EFI support na platformie x86-
64 oraz początkowe wsparcie dla ATI r500
DRI/DRM.

Wprowadzono również trochę nowych

i zaktualizowanych sterowników oraz wiele
innych drobniejszych zmian i istotnych
poprawek.

LUKA
W ODTWARZACZU DIVX PLAYER

DivX Player, odtwarzacz plików wideo
znany z pakietu z popularnym kodekiem
wideo DivX, posiada lukę bezpieczeństwa,
która pozwala cyberprzestępcy na
przejęcie kontroli nad komputerem.
Usterkę tę wykrył haker securfrog, dotyczy
ona plików o rozszerzeniu .srt, które mogą
powodować zawieszanie się aplikacji.
Jest to możliwe w wyniku niedopatrzenia
skutkującego brakiem weryfikacji
poprawności danych wejściowych, co
pozwala na atak typu przepełnienie
bufora. Wynikiem tego jest zawieszenie
się programu lub, co gorsza, umożliwienie
intruzowi wstrzyknięcia do komputera
szkodliwego kodu.

Błąd występuje w wersji 6.7.0.22

odtwarzacza DivX Player. Istnieje jednak
obawa, że poprzednie wersje także
zawierają opisaną lukę.

SAFARI 3.1.1

Ukazała się nowa wersja przeglądarki
Safari firmy Apple dla systemu Mac OS X i
Windows.

W tym wydaniu skupiono się na

poprawkach bezpieczeństwa zarówno
samej aplikacji, jak i silnika WebKit.
Rozwiązano problem z synchronizacją
w programie Safari, pozwalający stronie
WWW na zmianę zawartości paska adresu
bez wczytywania zawartości odpowiedniej
witryny. Błąd ten mógł zostać wykorzystany
do podszycia się pod zawartość uczciwej
witryny, co umożliwiało przechwycenie
danych uwierzytelniających lub innych
informacji użytkownika. Naprawiono
także błąd pozwalający doprowadzić do
nieoczekiwanego zakończenia działania
programu lub wykonania dowolnego
kodu przez odwiedzenie specjalnie
spreparowanej strony. Błędy te występowały
w systemach Windows XP i Vista.

Błędy w silniku aplikacji wystąpiły

nie tylko w systemie Windows, ale
również Mac OS X, Pozwalają one na
przeprowadzenie ataku typu Cross Site
Scripting (XSS).

FIREFOX 2.0.0.14

Pojawiła się nowa wersja przeglądarki
Firefox 2.0.0.14. Rozwiązuje ona problem
niestabilności związany z obsługą
JavaScriptu, który w efekcie prowadził do
całkowitego zawieszenia przeglądarki.
Sama Mozilla twierdzi, że nie ma żadnych
podstaw, aby twierdzić, iż luka była
wykorzystywana. Firma zadecydowała
jednak o załataniu przeglądarki.

CYBERPRZESTĘPCA NA ZAKUPACH

Jak informuje Polska Agencja Prasowa,
suwalska policja poszukuje hakera, który
na konto jednej z firm zamówił zakupy o
wartości miliona złotych, m.in. porsche
i audi, jacht oraz przedmioty erotyczne
w sex-shopie. Według prokuratury, haker
zamawiał towary w imieniu jednego z

background image

8

W SKRÓCIE

HAKIN9 7-8/2008

9

JAKUB BUCZYŃSKI

HAKIN9

7-8/2008

suwalskich sklepów komputerowych.
Wszystko wyszło na jaw, kiedy w sklepie
komputerowym rozdzwoniły się telefony
od sprzedających na jednym z portali
internetowych, którzy upominali się o
pieniądze za towar. Cena wszystkich
kupionych przedmiotów to prawie milion
złotych.

Haker dokonał włamania na skrzynkę

e-mail, z której wykasował wiele informacji
i danych oraz anulował kilkadziesiąt umów
z kontrahentami sklepu. Kiedy właściciel
firmy zorientował się o wszystkim,
poinformował prokuraturę. Ta twierdzi, że
ma pewne podejrzenia, kto mógł dokonać
przestępstwa.

LUKA W CLAMAV

Firma Secunia poinformowała o luce
w popularnej aplikacji antywirusowej
ClamAV. Błąd ten może być wykorzystany
za pośrednictwem specjalnie
spreparowanych plików wykonywalnych
i umożliwia przemycenie na komputer
ofiary dowolnego szkodliwego kodu.
Wszystko za sprawą modułu libclamav/
pe.c skanera antywirusowego ClamAV,
a konkretnie mechanizmu sprawdzania
długości w funkcji

cli _ scanpe()

.

Wspomniana usterka może spowodować,
iż pliki wykonywalne o rozszerzeniu exe,
które skompresowane są za pomocą
archiwizatora Unpack, mogą przyczynić
się do przepełnienia bufora na stercie
– a co za tym idzie, na wstrzyknięcie do
zaatakowanego komputera złośliwego
kodu, który umożliwi przejęcie kontroli nad
urządzeniem.

Na oficjalnej stronie projektu

opublikowano nową wersję aplikacji
ClamAV (0.93), w której opisywana luka
została załatana. Podatność występuje w
wersji 0.92.1 oraz starszych.

NIEUDOLNE ŁATANIE QUICKTIME

Mogło się wydawać, że wydanie
nowej aktualizacji dla odtwarzacza
multimedialnego Apple QuickTime
przyniesie oczekiwaną poprawę stanu
bezpieczeństwa (aktualizacja rozwiązuje
aż 11 błędów). Okazuje się jednak, że
korporacja dokonała uaktualnienia
niedbale. Ekspert bezpieczeństwa
Davic Maynor przeprowadził test wersji

7.45 za pomocą napisanego przez
siebie narzędzia Looking Glass i wykrył,
że stosowany przez Windows Vista
mechanizm Address Space Layout
Randomization, mający za zadanie chronić
przed atakami poprzez przydzielanie
losowo wybranych obszarów pamięci,
został wyłączony przez Apple'a tylko w
przypadku niektórych bibliotek programu.
Niedokładność Apple'a powoduje,
że napastnik w dalszym ciągu może
doprowadzić do błędu przepełnienia bufora
w QuickTime, co w konsekwencji umożliwia
atak na system.

SZKODNIK EBAYA ZŁAPANY

Haker który wielokrotnie włamywał
się do sieci eBay, został aresztowany
w Bukareszcie przez rumuńskich
przedstawicieli prawa. Cyberprzestępca,
ukrywający się pod pseudonimem Vladuz,
to 20-letni Vlad Constantin Duiculescu.
Rumuński sąd nakazał tymczasowy areszt
podejrzanego na 29 dni. W ubiegłym roku
Vladuzowi udało się otrzymać informacje,
które pozwoliły mu uzyskać dostęp do
sekcji eBaya przeznaczonej dla jego
pracowników. Dzięki temu pojawił się
na forach jako oficjalny przedstawiciel
serwisu aukcyjnego. Vladuz twierdził, iż
miał dostęp do jeszcze silniej strzeżonych
sekcji eBay. Przedstawiciele serwisu ostro
zaprzeczyli jego twierdzeniom, utrzymując,
iż cyberprzestępca miał dostęp jedynie
do nielicznych sekcji i nigdy nie pojawił się
tam, gdzie przechowywane są numery kart
kredytowych klientów.

eBay szacuje, iż działalność Vladuza

kosztowała firmę milion dolarów.

GNOME 2.23.1

Wydano pierwszą wersję deweloperską
stabilnego GNOME 2.24, jednego z
najpopularniejszych środowisk graficznych
przeznaczonych dla systemu Linux.

Zgodnie z zasadą publikowania

nowych wersji, w przypadku gdy druga
liczba w nazwie jest nieparzysta,

jest ona wersją rozwojową, w której
rozwijane jest wszystko, łącznie z nowymi
funkcjonalnościami – i która dodatkowo
przy uzyskaniu stabilności oznaczana
jest numerkiem parzystym. W GNOME
2.23.1 znajdują się głównie poprawki
wykrytych błędów i aktualizacje tłumaczeń.
Zmiany obejmują miedzy innymi takie
aplikacje, jak klient VoIP Ekiga, klient poczty
Evolution, odtwarzacz multimedialny
Totem, przeglądarka obrazów Eog, a także
interfejs wprowadzania tekstu Dasher,
aplety, gry, menu i skórki.

WINDOWS XP SP3 DOSTĘPNY

Zakończono prace nad dodatkiem
Service Pack 3 dla Windows XP. Oficjalnie
ukaże się on 29 kwietnia na stronie
centrum pobierania Microsoftu oraz usługi
Windows Update. Pojawiły się jednak
głosy sprzeciwu ze strony subskrybentów
TechNetu i MSDN, że kolejny raz (tak
samo, jak w przypadku SP1 do Visty)
muszą oni niepotrzebnie czekać na
pobranie dodatku – i to nawet o trzy dni
dłużej.

Być może te argumenty przekonały

Microsoft do wydania subskrybentom
TechNetu i MSDN dodatku Service Pack
3 już teraz.

SOLARIS 10 5/08 WYDANY

Ukazała się nowa wersja systemu
operacyjnego firmy Sun, o nazwie Solaris
10, oznakowana symbolem 5/08 i
przeznaczona na platformę Sparc, x86
i x86-64. Wersja ta zawiera wiele zmian
i ulepszeń w stosunku do poprzednich
edycji. Najważniejsze z nich to m.in.
ulepszenie wykorzystania zasobów
nowoczesnych procesorów Xeon,
AMD64, UltraSPARC T1 i T2 oraz obsługi
zarządzania energią w procesorach

background image

8

W SKRÓCIE

HAKIN9 7-8/2008

9

JAKUB BUCZYŃSKI

HAKIN9

7-8/2008

Intel i AMD. Poprawione zostały również:
narzędzie do administracji Sun StorEdge
Traffic Manager, mechanizm służący
do aktualizacji Solaris Live Upgrade
oraz protokoły druku Internet Printing
Protocol (IPP) i Open Printing API (PAPI).
Z systemem operacyjnym w ręce
użytkownika trafia także platforma
programistyczna Sun Studio 12, aplikacja
do tworzenia klastrów HPC Cluster
Tools 7.1 oraz pakiet NetBeans IDE 6.0.1.
Solaris 10 5/08 można pozyskać na
dwa sposoby: pobrać z oficjalnej strony
producenta lub zakupić nośnik CD/DVD
(koszt 35 USD).

MICROSOFT ZAPRASZA HAKERÓW

Przedstawiciele firmy Microsoft obiecali
na konferencji ToorCon w Seattle, iż
firma nie będzie stosowała żadnych
kar wobec etycznych hakerów. Ten
nowatorski pomysł tłumaczy Katie
Moussouris, strateg zabezpieczeń w
firmie Microsoft: Cała filozofia polega
na tym, że jeśli ktoś jest na tyle miły,
że wskazuje nasze słabe strony, to tak
naprawdę robi nam przysługę – należy
mu więc podziękować, a nie wołać
policję. Jest to bardzo odważny i mało
popularny krok w walce z hakerami. Co
to oznacza dla hakerów? Dzięki temu
będą oni mogli eksperymentować bez
konsekwencji prawnych. Jest jednak
warunek – nie mogą powodować
faktycznych zniszczeń. Po wykryciu luk
hakerzy będą mogli współpracować z
Microsoftem

.AVAST! 4.8

Pojawiła się nowa wersja
oprogramowania antywirusowego
firmy ALWIL Software - Avast! 4.8. W
poprzedniej wersji 4.7 znaleziono lukę
bezpieczeństwa umożliwiającą lokalnym
użytkownikom rozszerzenie uprawnień
systemowych. Nowe wydanie 4.8
eliminuje tę wadę, a także wprowadza
nowe funkcje ochrony przed rootkitami
i spyware'em.

Avast! 4 Home Edition to w pełni

funkcjonalny pakiet antywirusowy
przeznaczony dla użytkowników
domowych. Program posiada kilka
modułów umożliwiających kompleksowe

zabezpieczenie przed wirusami i
groźnymi programami. avast! posiada
dwa skanery, jeden standardowy i drugi
działający w linii komend, zaawansowany
interfejs użytkownika.

WIRESHARK 1.0

Po prawie dziesięciu latach prac,
deweloperzy projektu Wireshark wydali
w końcu oficjalną wersję 1.0 tego
popularnego sniffera dostępnego na
wiele systemów operacyjnych, kiedyś
znanego też jako Ethereal.

Wireshark jest darmowym i do

tego bardzo popularnym narzędziem
do analizy ruchu sieciowego. Program
używany jest przez profesjonalistów
zajmujących się sieciami na całym
świecie. Pozwala on na analizowanie,
wykrywanie błędów, rozwój protokołów.
Stosowany jest również w celach
edukacyjnych.

SUPERKOMPUTER
DO ZADAŃ SPECJALNYCH

W Centrum Informatycznym Trójmiejskiej
Akademii Sieci Komputerowej został
uruchomiony najszybszy superkomputer
w Europie Środkowo-Wschodniej
– Galera. W uroczystości wziął udział
Paul S. Otellini, prezes i dyrektor
generalny firmy Intel Corporation.
Moc obliczeniowa superkomputera
Galera i projekty, w których będzie on
wykorzystywany, wpłyną bezpośrednio na
nasze codzienne życie – od medycyny
i nowych sposobów leczenia raka do
zwiększenia bezpieczeństwa lotów. Dzięki
nowoczesnej technologii wyniki badań
będą dostępne o wiele szybciej, niż ich
realizacja metodami laboratoryjnymi, a
przy tego typu projektach właśnie czas
ma największe znaczenie
– powiedział
dr Paweł Gepner z Intel EMEA High
Performance Computing Architecture
Specialist.

Superkomputer mieści się

w specjalnie zaprojektowanym
pomieszczeniu Centrum
Informatycznego Trójmiejskiej
Akademickiej Sieci Komputerowej w
Gdańsku. Klaster jest oparty na 1400
procesorach czterordzeniowych Intel
Xeon, co daje łącznie liczbę 5400

rdzeni. Sprzęt waży 7 ton ma 17
metrów długości, 8 kilometrów kabli i
bilionową liczbę tranzystorów. Instalacja
superkomputera rozpoczęła się w
listopadzie 2007 r. i trwała aż do stycznia
tego roku. Galera potrafi wykonać 50
bilionów działań matematycznych
(takich jak dodawanie lub mnożenie
liczb zmiennoprzecinkowych) w ciągu
sekundy!. Wykonanie takiej liczby działań
zajęłoby wszystkim ludziom na Ziemi
około 1000 lat.

Jestem dumny, że Intel Technology

uruchamia superkomputer o największej
mocy obliczeniowej w tym regionie
-
przyznał Paul S. Otellini, główny szef firmy
Intel.

CRACKER ZROBIŁ NA KONTO
FIRMY ZAKUPY ZA MILION ZŁOTYCH

Jak poinformowała Polska Agencja
Prasowa, Suwalska policja poszukuje
crackera, który na konto jednej z firm
zamówił zakupy o wartości miliona
złotych, m.in. porsche warte ponad pół
miliona zł, audi, jacht oraz przedmioty
erotyczne w sex-shopie. Według
prokuratury, włamywacz zamawiał
towary w imieniu jednego z suwalskich
sklepów komputerowych. Cracker
włamał się na skrzynkę e-mail, z której
wykasował wiele informacji i danych
oraz anulował kilkadziesiąt umów z
kontrahentami sklepu. Kiedy właściciel
firmy zorientował się o wszystkim,
poinformował prokuraturę. Ta twierdzi,
że ma pewne podejrzenia, kto mógł
dokonać przestępstwa.

FRIBET ODSZYFROWANY

Specjaliści zbadali konia trojańskiego
odpowiedzialnego za ostatnią falę
ataków na witryny WWW popierające
Tybetańczyków oraz osoby odwiedzający
te witryny. Okazało się, że malware o
nazwie Trojan.Fribet oprócz możliwości
kontroli zainfekowanego komputera
pozwala także na wykonywanie zapytań
SQL. Daje to możliwość składowania
niebezpiecznego kodu na komputerze
ofiary w celu ponownego użycia w
przyszłości. Specjaliści twierdzą, że
Fribet może wykorzystywać pewien
szczególny rodzaj ataków SQL Injection.

background image

10

NA CD

HAKIN9 7-8/2008

11

HAKIN9.LIVE

HAKIN9

7-8/2008

Na dołączonej do pisma płycie znajduje się dystrybucja hakin9.live (h9l) w wersji 4.0.3

on BackTrack2.0, zawierająca przydatne narzędzia, dokumentację, tutoriale i materiały

dodatkowe do artykułów.

ZAWARTOŚĆ CD

Aby zacząć pracę z hakin9.live, wystarczy uruchomić komputer z CD. Po

uruchomieniu systemu możemy zalogować się jako użytkownik hakin9 bez

podawania hasła.

JAK ZACZĄĆ

PROGRAMY

• Advanced Lotus Password Recovery,
• Advanced Office Password Breaker,
• Advanced WordPerfect Office Password

Recovery,

• AnonymousBrowsingToolbar,
• Twister Anti-TrojanVirus,
• StealthKeylogger,
• kaspersky Internet Security.

FILMY INSTRUKTAŻOWE

Dziewiąty odcinek: XSS-Cross Site Scripting.
Kolejny odcinek z serii filmów instruktażowych,
przedstawiający najpopularniejsze metody
ataków na strony internetowe.

BACKTRACK2.0 NA TWOIM PENDRIVIE

Utwórz partycję na pendrivie:

# fdisk /dev/sda

Uwaga: Jeśli posiadasz dyski SCSI lub SATA,
sprawdź gdzie są umieszczone – /dev/sda
może być Twoim dyskiem systemowym!

Wykasuj wszystkie istniejące partycje

(wciśnij d oraz [Enter], później wprowadź ilość
partycji – od 1 do 4). Aby sprawdzić obecny
stan partycji, wprowadź p. Później zacznij
tworzyć nową partycję FAT32 – o wielkości
około 800 MB. W tym celu wciśnij n,
zatwierdzając klawiszem [Enter]. Zacznij od
początku i ustal wielkość tworzonej partycji
lub wciśnij jeszcze raz [Enter], aby użyć
całego urządzenia. Rodzaj partycji musi
zostać zmieniony na FAT32 – wprowadź t
i odpowiedz b na pojawiające się pytanie.
Musimy teraz sprawić, żeby nowa partycja

była bootowalna. Wpisz a, a następnie
wprowadź numer partycji – 1. Teraz wpisz
w celu zapamiętania zmian.

Pliki

Na początku utwórz na nowej partycji
system plików:

# mkfs.vfat /dev/sda1

Teraz zdefiniuj punkt montowania
tworzonego systemu plików:

# mount /dev/sda1 /mnt/usb

Skopiuj pliki hakin9 live do przygotowanej
lokalizacji:

# cp -a /mnt/cdrom/* /mnt/usb/

Niektóre struktury plików powinny zostać
usunięte:

# cd /mnt/usb/
# rm boot/vmlinuz
# rm boot/initrd.gz

W /mnt/usb powinien znajdować się
plik syslinux.cfg. Po tej operacji wykonaj
następujące polecenia:

# umount /dev/usb/
# syslinux /dev/sda1

W przypadku problemów wydaj polecenie:

# syslinux-nomtools /dev/sda1

Zrestartuj teraz maszynę i w BIOSie ustaw
bootowanie z USB–HDD.

Gotowe, utworzyłeś w pełni funkcjonalny

system na swoim pendrivie. Pamiętaj, że
bootowanie z USB jest obsługiwane jedynie
przez nowe płyty główne. Obecnie cała
operacja jest możliwa tylko z pendrive'ami,
posiadającymi sektory o rozmiarze 512 bajtów.

ADVANCED LOTUS

PASSWORD RECOVERY

Program odzyskuje hasła chroniące
dokumenty utworzone w każdej wersji IBM/
Lotus SmartSuite. Rozpoznaje i odzyskuje
hasła do dokumentów: Lotus Organizer, Lotus
WordPro, Lotus 1-2-3, Lotus Approach oraz
Freelance Graphics, podobnie, jak hasła FTP
i do proxy w komponentach Lotus SmartSuite.

ADVANCED WORDPERFECT

OFFICE PASSWORD RECOVERY

Corel WordPerfect Office to powszechny
wybór wielu użytkowników korporacyjnych
i domowych. Atrakcyjna cena oraz
profesjonalne narzędzia sprawiają,
że program, dzięki najwyższej jakości
za najniższą cenę, zadowala każdego

background image

10

NA CD

HAKIN9 7-8/2008

11

HAKIN9.LIVE

HAKIN9

7-8/2008

roku miliony klientów. Mimo możliwości
zablokowania dokumentów hasłem, Corel
nie zapewnia narzędzi do odzyskania
zgubionego hasła. Co zrobić, kiedy
potrzebujemy użyć takiego rozwiązania?

Aplikacja Advanced WordPerfect Office

Password Recovery pozwala na szybkie
i automatyczne uzyskanie dostępu do
chronionych hasłem dokumentów Corel
Office. Advanced WordPerfect Office
Password Recovery pozwala na szybkie
odzyskanie hasła zabezpieczającego
dokumenty stworzone w Corel Office
WordPerfect, Quattro Pro oraz Paradox
– bez długich prób i wprowadzania
zaawansowanych ustawień. Wystarczy
po prostu uruchomić narzędzie i wybrać
przycisk Open a hasło uzyskamy
w mgnieniu oka.

ADVANCED OFFICE

PASSWORD BREAKER

Advanced Office Password Breaker
(AOPB) – program do odczytywania
dokumentów Word 97/2000 i Excel 97/
2000, zabezpieczonych przed odczytem
przez hasło. Program gwarantuje
otwarcie dokumentu niezależnie od
stopnia trudności hasła i jego długości.
Uzyskuje się to dzięki przeszukiwaniu
całej przestrzeni 40-bitowych kluczy
szyfrowania. Tak niewielką długość klucza

stosuje się w Office 97/2000 z powodu
ograniczeń eksportowych. Ponieważ
długość klucza szyfrowania wynosi 40
bitów, całkowite przeszukiwanie wszystkich
kluczy zajmuje około dwóch tygodni na
komputerze z procesorem klasy P-III,
taktowanym częstotliwością 1 GHz.
Po znalezieniu klucza możliwy jest odczyt
dokumentu i usunięcie wszystkich
ustawionych haseł.

KASPERSKY INTERNET SECURITY

Pakiet zapewnia kompleksową ochronę
komputerów PC przed wszelkimi
rodzajami zagrożeń. Oparty jest
o program antywirusowy Kaspersky
Anti-Virus 7.0. Wyposażony jest również
w osobistą zaporę ogniową. Użytkownicy
laptopów mogą definiować odrębne tryby
pracy zapory dla różnych sieci – Internet,
sieć lokalna oraz sieć zaufana. Program
pozwala także na pracę w trybie ukrycia,
w którym komputer użytkownika będzie
całkowicie niewidoczny w sieci. Nad
pocztą czuwa filtr antyspamowy. Pakiet
został również wyposażony w nowy moduł
kontroli rodzicielskiej. Dzięki systemowi
analizy lingwistycznej oraz możliwości
wykorzystywania czarnych list moduł
ten pozwala rodzicom na kontrolowanie
poczynań swoich pociech w Sieci.
Produkt zawiera także nową funkcję,
pozwalającą na ochronę poufnych
danych użytkownika (adresów e-mail,
haseł, informacji o kartach kredytowych
itp.) przed kradzieżą.

STEALTH KEYLOGGER

Aplikacja oferuje kompleksowe
rozwiązanie dla domu i biura, zawiera
wiele zaawansowanych narzędzi,
które pozwolą na monitoring osób
używających Twojego komputera,
śledzenie wiadomości oraz wizyt
na różnych stronach internetowych.
Wszystkie te zaawansowane możliwości
powodują, że produkt stał się bardzo
popularny wśród pracodawców, którzy
mogli inwigilować działania swoich
pracowników podczas godzin pracy.
Jest także wykorzystywany w celach
prywatnych – przez rodziców, w celu
sprawdzenia, po jakich stronach
internetowych surfują ich dzieci.

ANONYMOUS BROWSING TOOLBAR

Program jest łatwy w użyciu, służy do
ochrony prywatności w Sieci. Ukrywa adres
IP dzięki rozdzielaniu ruchu sieciowego
przez zdalny serwer.

TWISTER ANTI-TROJAN VIRUS

Aplikacja oferująca zintegrowaną
ochronę systemu, skanująca komputer
w poszukiwaniu wirusów, trojanów
i innych rodzajów złośliwego kodu,
które wkradają się do systemu przez
Internet, e-mail czy otrzymane zarażone
pliki. Program zapewnia ochronę na
bieżąco dzięki ciągłym aktualizacjom.
Wśród innych funkcji można znaleźć:
automatyczne skanowanie, kwarantannę
podejrzanych plików, a także funkcję
logowania własnej aktywności. Ochrona
rejestru Windows zapobiega jakimkolwiek
nieautoryzowanym jego modyfikacjom.

PODZIĘKOWANIA

Serdeczne podziekowania dla
dystrybutora Softkey Poland Sp. z o.o.
http://www.softkey.pl/ za udostepnienie
programów na płytę, która jest dołączona
do magazynu.

Rysunek 2.

Advanced Office Password

Breaker

Rysunek 1.

Advanced WordPerfect Office

Password Recovery

Żeby uruchomić swój komputer

z płyty hakin9.live, ustaw swój BIOS

na bootowanie z napędu CD-ROM.

Po dokonanych zmianach uruchom

ponownie komputer. Uruchomi się

dystrybucja hakin.live, na której możesz

przećwiczyć techniki prezentowane

w tutorialach. Upewnij się, że sprawdziłeś

desktopowe foldery – zawierają wiele

dodatkowych materiałów. Zawartość CD

można również przejrzeć w systemie

Windows.

background image

12

NARZĘDZIA

HAKIN9 7-8/2008

13

NARZĘDZIA

HAKIN9

7-8/2008

AVG to produkt firmy AVG Technologies,
zapewniający kompleksową ochronę
komputera przed atakami z Sieci,

wirusami, złośliwym oprogramowaniem oraz
spamem. Użytkownik może zarządzać wszystkimi
składnikami pakietu korzystając z panelu
administracyjnego (Przegląd systemu). Licencja
jednostanowiskowa na okres 1 roku kosztuje
51,74 euro. Produkt można pobrać bezpośrednio
ze strony producenta (podobnie, jak 30-dniową
wersję Trial).

Instalując AVG Internet Security, mamy

możliwość wyboru języka instalacji, a więc i języka
interfejsu programu. Do wyboru mamy kilka
języków, m.in. polski, angielski oraz niemiecki.

Producent przygotował do wyboru dwa

typy instalacji: standardową – zalecaną dla
większości użytkowników oraz zaawansowaną,
rekomendowaną użytkownikom zaawansowanym.

Wybierając instalację zaawansowaną, możemy

sami zdecydować, które ze składników pakietu AVG
zostaną zainstalowane na naszym komputerze.
I tak, mamy do wyboru: Zaporę AVG, Ochronę
sieci WWW, Dodatkowe instalowane języki, Skaner
poczty e-mail oraz Anti-Spam. W następnym
kroku mamy możliwość włączenia modułu AVG
Security Toolbar. Składnik ten zapewnia ochronę
przed sfałszowanymi witrynami – phishingiem.
Po zakończeniu instalacji przechodzimy do kroku,
w którym ustalamy częstotliwość aktualizacji
programu – standardowo co 4 godziny – oraz
porę codziennego skanowania. Następnie
aktywujemy produkt AVG. Po tej czynności warto
włączyć opcję zgłaszania niebezpiecznych
witryn do laboratorium AVG. Kolejny krok to
wybór profilu sieciowego naszego komputera.
Przewidziane przez producenta możliwości to:
Pojedynczy komputer, Komputer w domenie,
Komputer przenośny oraz Sieć w domu lub
małym biurze. W tym momencie zalecane jest
wykonanie skanowania komputera, aby mieć
pewność że korzystanie z niego jest bezpieczne.
Do wyboru są trzy metody skanowania: Pełne
skanowanie, Najczęściej skanowane katalogi – tj.
katalogi programów oraz systemowe, Skanowanie

wybranych obszarów. Zwykle większość
antywirusów po instalacji wymaga zrestartowania
komputera. W AVG nie jest to konieczne.

Zaraz po zakończeniu instalacji AVG wykryje

nową sieć (połączenie sieciowe). W tym momencie
profil sieciowy jest niezdefiniowany, a więc mamy
możliwość zablokowania całego ruchu sieciowego,
zezwolenie na dostęp do sieci dla wszystkich
aplikacji oraz przełączenie na profil sieciowy, który
wcześniej wybraliśmy. W warunkach normalnej
pracy zalecane jest skorzystanie z tej ostatniej
opcji. W momencie, gdy dowolny program będzie
próbował połączyć się z Internetem, zostanie
wyświetlone okienko dialogowe z możliwością
odblokowania dostępu do Internetu bądź
zablokowania dostępu do Sieci. Zaznaczając pole
Zapisz odpowiedź sprawimy, że Zapora AVG nie
będzie więcej monitować o próbie połączenia
z Siecią wykonywaną przez tę konkretną
aplikację. Jest to tzw. reguła firewalla, a AVG
będzie wprowadzał reguły firewalla dla każdego
programu żądającego połączenia z Internetem. W
przypadku, gdy zachodzi obawa, że na komputerze
zainstalowane jest złośliwe oprogramowanie,
zalecane jest wybranie opcji blokowania całego
ruchu sieciowego i stopniowe zezwalanie na
dostęp do sieci dla zaufanych aplikacji. W module
ochrony rezydentnej możemy ustawić opcję
automatycznego leczenia zarażonych plików (!),
skanowania plików przy zamykaniu lub skanowania
sektorów rozruchowych dysków wymiennych.

Podsumowując, pakiet AVG Internet Security

8.0 dobrze spełnia swoje zadanie ochrony
przed zagrożeniami z Internetu, złośliwym
oprogramowaniem, spamem, równocześnie
wymagając minimum interakcji z użytkownikiem.
Obsługa programu jest intuicyjna, łatwo można
włączyć czy wyłączyć poszczególne moduły.
W sytuacji, gdy wszystkie składniki pakietu są
włączone, można odczuć nieduże spowolnienie
pracy komputera. Ostatecznie jednak można
włączyć jedynie niezbędne komponenty.
Użytkownik komputera instalując AVG Internet
Security 8.0 może mieć pewność, że jego
maszyna będzie dobrze chroniona.

Producent

AVG Technologies,
dawniej Grisoft

System

Windows 2000, Windows
XP, Windows Vista

Typ

Internet Security

Strona producenta

http://www.quantus.pl

Recenzent

Rafał Lysik

AVG Internet Security 8.0

««««

«

OCENA

background image

12

NARZĘDZIA

HAKIN9 7-8/2008

13

NARZĘDZIA

HAKIN9

7-8/2008

GData Internet Security 2008 BOX
otrzymujemy w kartonowym pudełku,
w którym znajdziemy: 140-stronicowy

podręcznik (choć powiedziałbym, że to raczej
książka/kompendium), 2 ulotki (szybki start,
dzięki któremu nie musimy od razu czytać
całego podręcznika oraz ulotkę reklamową,
informującą nas o innych wersjach pakietu),
kartę – zdrapkę z kluczem rejestracyjnym oraz
oczywiście płytę z programem. W tym miejscu
należy wspomnieć, iż na płycie znajdziemy
dodatkowo bootowalną wersję antywirusa
działającą pod Linuksem, dzięki czemu możemy
przeskanować komputer w poszukiwaniu
wirusów jeszcze przed instalacją.

Na pakiet GData Internet Security

2008 składają się: program antywirusowy
korzystający z dwóch silników skanujących
(konkretnie Kaspersky oraz avast), firewall,
program antyspamowy, filtr stron sieci Web oraz
rozbudowany, lecz prosty w konfiguracji moduł
kontroli rodzicielskiej, w którym mamy możliwość
blokowania dostępu do stron WWW stanowczo
nie przeznaczonych dla dzieci (pornografia/
przemoc/sekty/piractwo) oraz ograniczania
czasu spędzanego przy komputerze.

Instalacja przebiega dwuetapowo, jest prosta

i bezproblemowa. Sprowadza się praktycznie
do przysłowiowego klikania dalej, dalej, dalej,
zakończ
. Po restarcie komputera firewall
przygotuje listę reguł i już można uruchomić
program po raz pierwszy.

Po pierwszym uruchomieniu program

zaleca aktualizację poprzedzoną jednorazową
rejestracją klucza ze zdrapki, dzięki czemu
otrzymujemy login i hasło wymagane do
pobierania aktualizacji.

W ciągu pierwszych dni zapora będzie

tworzyła reguły podczas uruchamiania
programów. Tutaj należy także wspomnieć o
trybie Autopilot, który włącza się automatycznie
podczas uruchamiania pełnoekranowej aplikacji,
np. gry, dzięki czemu podczas rozgrywki program
nie będzie męczył nas pytaniami o zgodę na
połączenie.

W przypadku, gdy chcemy sprawdzić nasz

system na obecność wirusów jeszcze przed
instalacją pakietu (lub gdy – co gorsza – nasz
komputer jest już zainfekowany), możemy
użyć skanera z płyty instalacyjnej, która
jednocześnie jest bootowalną płytą z okrojoną
wersją skanera. Po uruchomieniu komputera
z płyty mamy do dyspozycji maksymalnie
uproszczone środowisko graficzne XFCE, skaner
obsługiwany jednym kliknięciem oraz linię
komend. Niestety, bazy sygnatur są nieaktualne
– lecz nie jest to problemem, jeśli korzystamy z
połączenia z Internetem dostarczanego przez
zewnętrzny router (modem UPC, osiedlówka,
Liveboksy). Dzięki temu możemy bez problemu
zaktualizować bazy, nawet, jeśli nie mamy jeszcze
zarejestrowanej subskrypcji.

Pakiet dostępny jest w trzech wersjach :

• GData Antivirus 2008 – zawiera tylko skaner

antywirusowy,

• GData InternetSecurity 2008 – obejmuje

wszystkie składniki wymienione w powyższej
recenzji,

• GData TotalCare 2008 – zawiera zestaw

programów z wersji InternetSecurity plus
narzędzia optymalizujące komputer i służące
do wykonywania kopii zapasowych danych.

Obsługę programu oraz pracę z nim oceniam
na bardzo łatwą i przyjemną. Użytkownicy chcący
maksymalnie dostosować program do swoich
potrzeb mają możliwość np. tworzenia własnych
reguł firewalla, profili skanowania oraz ustawień
innych modułów programu.

Producent

GData

System

Windows 2000, Windows
XP, Windows Vista

Typ

Internet Security

Strona producenta

http://www.gdata.pl/
portal/PL/

Recenzent

Damian Klimek

Gdata Internet

Security 2008

««««

OCENA

background image

14

POCZĄTKI

HAKIN9 7-8/2008

W

irtualny pulpit jest mechanizmem
dość powszechnie stosowanym w
wielu dystrybucjach systemu Linux.

Używając go mamy wrażenie, jakbyśmy
dysponowali kilkoma pulpitami. Dzięki temu
możemy podzielić aplikacje na grupy i w razie
potrzeby przełączać się między nimi. W ten
sposób łatwo możemy zarządzać oknami.
Zasada działania wirtualnych pulpitów jest dość
prosta.

Poszukujemy wszystkich widocznych

okien na pulpicie, zapamiętując ich położenie
oraz wymiary, a następnie ukrywamy je. W
ten sposób powstaje nowy wirtualny pulpit,
na którym możemy swobodnie pracować.
Gdy zechcemy powrócić do poprzedniego
pulpitu, chowamy bieżące okna, zapamiętując
ich wymiary i położenie, a przywracamy
widoczność okien wcześniej ukrytych. Na takiej
zasadzie przełączamy się między wirtualnymi
pulpitami.

Cała trudność polega na znalezieniu

sposobu zarządzania oknami pulpitu jako
jednym obiektem. Z pomocą przychodzi nam
WinApi.

Artykuł ten ma na celu zilustrowanie

mechanizmu wirtualnych pulpitów jako
metody polepszającej komfort pracy z
systemem Windows, a także pokazanie, jak
łatwo użyteczną technikę można wykorzystać
w sposób szkodliwy. Projekt zrealizujemy
pod platformą .NET. Do napisania kodu

MACIEJ PAKULSKI

Z ARTYKUŁU

DOWIESZ SIĘ

jak działają wirtualne pulpity,

jak zarządzać oknami w

Windows.

CO POWINIENEŚ

WIEDZIEĆ

znać podstawy projektowania

zorientowanego obiektowo.

wykorzystamy darmowe środowisko Visual C#
2008 Expres Edition.

Klasa

obsługująca wirtualny pulpit

Tworzymy nowy projekt i nadajemy mu
odpowiednią nazwę. Dodajemy klasę, która
będzie reprezentować wirtualny pulpit. Zaczniemy
od importu niezbędnych funkcji WinApi. Ilustruje
to kod z Listingu 1.

Aby móc skorzystać z

DllImport

,

musimy najpierw dodać przestrzeń nazw

System.Runtime.InteropServices

. Działanie

poszczególnych zaimportowanych funkcji jest
następujące:

GetDesktopWindow

– funkcję

wykorzystujemy do uzyskania uchwytu do
pulpitu,

GetTopWindow

– funkcja zwraca uchwyt do

okna będącego najwyżej w porządku osi z
(ang. z order). Jako parametr przekazujemy
uchwyt do okna będącego oknem
nadrzędnym (ang. parent window) w stosunku
do poszukiwanego okna,

GetWindow

– funkcja zwraca uchwyt

do okna, które jest w specjalnej relacji
z wybranym oknem. Pierwszy parametr
określa relację między oknami, drugi
parametr to uchwyt do okna, z którym
poszukiwane okno jest w relacji określonej
pierwszym parametrem,

Stopień trudności

Wirtualny

pulpit

Windows

Współczesne systemy operacyjne umożliwiają uruchomienie

wielu programów jednocześnie, co może powodować problem

organizacji okien na pulpicie. Rozwiązaniem tego problemu może

być użycie wirtualnych pulpitów, choć mechanizm ten może także

tworzyć podstawę do działania złośliwego oprogramowania.

background image

15

WIRTUALNY PULPIT WINDOWS

HAKIN9

7-8/2008

IsWindowVisible

– funkcja

sprawdza, czy okno jest widoczne
(czy ma ustawiony styl okna WS_
VISIBLE),

FindWindowEx

– funkcja zwraca

uchwyt do okna. Pierwszy parametr
to uchwyt do okna będącego
oknem nadrzędnym w stosunku do
poszukiwanego okna, drugi parametr
określa uchwyt okna, od którego
rozpocznie się przeszukiwanie w
porządku osi z, trzeci parametr określa
nazwę klasy okna, a czwarty jest
nazwą okna,

BeginDeferWindowPos

– przydziela

pamięć dla struktury opisującej
położenie okien, których liczba jest
przekazywana jako parametr. Funkcja
zwraca uchwyt do struktury,

DeferWindowPos

– funkcja zmienia

atrybuty okna (takie, jak położenie,
rozmiar, widoczność), jako parametry
przyjmuje ona kolejno:
• uchwyt do struktury

opisującej okna uzyskiwany
przy pomocy wywołania

BeginDeferWindowPos

,

• uchwyt do okna, którego atrybuty

chcemy zmienić,

• uchwyt do okna, które poprzedza

konkretne okno w porządku osi z.
Możliwe jest także zastosowanie
stałej, która będzie określać
położenie okna względem innych,

• współrzędna x lewego górnego

rogu okna,

• współrzędna y lewego górnego

rogu okna,

• szerokość okna w pikselach,
• wysokość okna w pikselach,
• flagi.

Wywołanie

DeferWindowPos

powoduje

zaktualizowanie struktury będącej
pierwszym parametrem funkcji, dzięki
czemu zawiera ona informacje o oknie,
którego uchwyt przekazujemy jako drugi
parametr.

Funkcja zwraca uchwyt do

zaktualizowanej struktury.

EndDeferWindowPos

– wywołanie

funkcji powoduje jednoczesną zmianę
atrybutów okien, określonych przez
strukturę, której uchwyt przekazujemy
jako parametr.

Kolejnym krokiem będzie zdefiniowanie
stałych, których użyjemy przy wywołaniu
funkcji WinApi. Dodajemy do naszego
programu kod z Listingu 2. Stałe są
wykorzystywane w następujący sposób:

GW _ HWNDNEXT

– wywołując funkcję

GetWindow

z tym parametrem

uzyskujemy uchwyt do okna, które leży
poniżej wybranego okna, w porządku
osi z,

SWP _ NOZORDER

– stała

wykorzystywana jako ósmy parametr
funkcji

DeferWindowPos

, określa

brak zmiany kolejności okien
(parametr

hWndInsertAfter

jest

ignorowany),

SWP _ HIDEWINDOW

– ósmy parametr

funkcji

DeferWindowPos

, określa

ukrycie okna,

SWP _ SHOWWINDOW

– ósmy parametr

funkcji

DeferWindowPos

, określa

pokazanie okna,

SWP _ NOACTIVE

– ósmy parametr

funkcji

DeferWindowPos

, określa brak

aktywacji okna,

SWP _ NOSIZE

– ósmy parametr funkcji

DeferWindowPos

, określa brak zmiany

rozmiaru okna (parametry cx i cy są
ignorowane),

SWP _ NOMOVE

– ósmy parametr

funkcji

DeferWindowPos

, brak zmiany

położenia okna (parametry x i y są
ignorowane).

Rysunek 1.

Wirtualne pulpity Windows

Listing 1.

Funkcje WinApi

[

DllImport

(

"user32.dll"

)]

public

static

extern

IntPtr

GetDesktopWindow

();

[

DllImport

(

"user32.dll"

)]

public

static

extern

IntPtr

GetTopWindow

(

IntPtr

hwnd

);

[

DllImport

(

"user32.dll"

)]

public

static

extern

IntPtr

GetWindow

(

IntPtr

hwnd

,

int

cmd

);

[

DllImport

(

"user32.dll"

)]

public

static

extern

bool

IsWindowVisible

(

IntPtr

hwnd

);

[

DllImport

(

"user32"

)]

public

static

extern

IntPtr

FindWindowEx

(

IntPtr

parent

,

IntPtr

childAfter

,

string

szClass

,

string

szWindow

);

[

DllImport

(

"user32"

)]

public

static

extern

IntPtr

BeginDeferWindowPos

(

int

nNumWindows

);

[

DllImport

(

"user32"

)]

public

static

extern

IntPtr

DeferWindowPos

(

IntPtr

hWinPosInfo

,

IntPtr

hwnd

,

int

hWndInsertAfter

,

int

x

,

int

y

,

int

cx

,

int

cy

,

int

wFlags

);

[

DllImport

(

"user32"

)]

public

static

extern

int

EndDeferWindowPos

(

IntPtr

hWinPosInfo

);

background image

16

POCZATKI

HAKIN9 7-8/2008

WIRTUALNY PULPIT WINDOWS

17

HAKIN9

7-8/2008

Następną czynnością jest zadeklarowanie
pól naszej klasy. Pora na kod
zaprezentowany na Listingu 3.

Pola

hwndTab

użyjemy do

przechowania uchwytów okien,
które tworzą nasz wirtualny pulpit.

Zadeklarowana tablica ma stały wmiar,
tak więc jeżeli liczba okien przekroczy
1024, nie będziemy mogli ich obsłużyć.
Aby temu zapobiec, możemy np.
wykorzystać kontener

List

. Jednakże

prawdopodobieństwo, że będziemy
obsługiwali więcej niż 1024 okna jest
małe, tak więc skorzystamy z tablicy. Pole

counter

będzie licznikiem okien, które

obsługujemy.

Jesteśmy teraz gotowi do

zaimplemetowania metod, które będą
odowiedzialne za obsługę wirtualnego
pulpitu. Dodajemy kod z Listingu 4.

Zadaniem metody

Hide

jest

schowanie okien bieżącego pulpitu. Na
początku uzyskujemy uchwyt do pulpitu,
wywołując

GetDesktopWindow

. Następie

wywołujemy funkcję

GetTopWindow

,

dzięki czemu będziemy znać uchwyt okna
będącego najwyżej w porządku osi z.

Używając funkcji

FindWindowEx

,

uzyskujemy uchwyty odpowiedno do
paska zadań (ang. task bar), a także
pulpitu (pulpit oznacza w tym momencie
ikony takie, jak Mój Komputer itp.).
Następnie przy wykorzystaniu pętli

do

.. while

przeszukujemy okna pulpitu.

Kryteria poszukiwania zawężamy do
okien widocznych i nie będących oknami
paska zadań oraz pulpitu.

Dodatkowo, jeżeli aplikacja

obsługująca wirtualne pulpity jest
widoczna, powinniśmy ją także
pominąć podczas operacji zmiany
atrybutu widoczności okien (parametr

appHandle

).

Dysponując tablicą uchwytów do

widocznych okien pulpitu, możemy
zmienić ich wybrane atrybuty. Dzięki
wywołaniu funkcji

BeginDeferWindowPos

tworzymy strukturę opisującą okna.
Używając pętli

for

zmieniamy atrybuty

wybranych okien – ponieważ chcemy
schować okna, ustawiamy flagę

SWP _

HIDEWINDOW

. Zmian dodokonujemy

wyołując funkcję

EndDeferWindowPos

.

Uzyskujemy w ten sposób nowy, wirtualny
pulpit.

Metody

Show

używamy, jeżeli

utworzyliśmy wcześniej wirtualny pulpit,
na który właśnie chcemy się przełączyć.
Tworzy ona strukturę opisującą okna, a
następnie zmienia kolejno artybuty okien
wirtualnego pulpitu, jaki zamierzamy
uaktywnić.

Listing 2.

Stałe klasy

private

int

GW_HWNDNEXT

=

2

;

private

int

SWP_NOZORDER

=

4

;

private

int

SWP_HIDEWINDOW

=

128

;

private

int

SWP_SHOWWINDOW

=

64

;

private

int

SWP_NOACTIVATE

=

16

;

private

int

SWP_NOSIZE

=

1

;

private

int

SWP_NOMOVE

=

2

;

Listing 3.

Pola klasy

private

IntPtr

[]

hwndTab

=

new

IntPtr

[

1024

];

private

int

counter

=

0

;

Listing 4.

Metody klasy

public

void

Hide

(

IntPtr

appHandle

)

{

IntPtr

deskWin

=

GetDesktopWindow

();

IntPtr

win

=

GetTopWindow

(

deskWin

);

if

(

win

==

IntPtr

.

Zero

)

return

;

IntPtr

hTask

=

FindWindowEx

(

IntPtr

.

Zero

,

IntPtr

.

Zero

,

"Shell_TrayWnd"

,

null

);

IntPtr

des

=

FindWindowEx

(

IntPtr

.

Zero

,

IntPtr

.

Zero

,

"Progman"

,

null

);

counter

=

0

;

do

{

if

(

IsWindowVisible

(

win

)

&&

win

!=

hTask

&&

win

!=

deskWin

&&

win

!=

des

&&

win

!=

appHandle

)

{

hwndTab

[

counter

++]

=

win

;

}

}

while

((

win

=

GetWindow

(

win

,

GW_HWNDNEXT

))

!=

IntPtr

.

Zero

);

IntPtr

s

=

BeginDeferWindowPos

(

counter

);

for

(

int

i

=

0

;

i

<

counter

;

i

++)

{

s

=

DeferWindowPos

(

s

,

hwndTab

[

i

]

,

0

,

0

,

0

,

0

,

0

,

SWP_HIDEWINDOW

|

SWP_NOMOVE

|

SWP_NOSIZE

|

SWP_NOZORDER

|

SWP_

NOACTIVATE

);

}

EndDeferWindowPos

(

s

);

}

public

void

Show

()

{

IntPtr

s

=

BeginDeferWindowPos

(

counter

);

for

(

int

i

=

0

;

i

<

counter

;

i

++)

{

s

=

DeferWindowPos

(

s

,

hwndTab

[

i

]

,

0

,

0

,

0

,

0

,

0

,

SWP_SHOWWINDOW

|

SWP_NOMOVE

|

SWP_NOSIZE

|

SWP_NOZORDER

);

}

EndDeferWindowPos

(

s

);

}

background image

16

POCZATKI

HAKIN9 7-8/2008

WIRTUALNY PULPIT WINDOWS

17

HAKIN9

7-8/2008

Ponieważ chcemy teraz, aby wybrane

okna były ponownie widoczne, tym razem
włączamy flagę

SWP _ SHOWWINDOW

.

Zmian dokonujemy przy pomocy
wywołania funkcji

EndDeferWindowPos

.

Wirtualny pulpit

jako zagrożenie

Stworzona przez nas klasa jest
implementacją wirtualnego pulpitu w
systemie Windows.

Jednakże możemy ją zastosować

także w innym celu. Zastosowanie tylko
funkcji chowającej, działającej w pętli
(Listing 5), uniemożliwi nam pracę z
jakąkolwiek alikacją – po prostu nie
będziemy widzieli okien.

Dodatkowo zauważmy, że

przeszukując okna na pulpicie, na liście
wyjątków nie uwzględniamy menadżera
zadań – jego też nie będziemy w stanie
wywołać.

Możemy się także pokusić o napisanie

aplikacji, która będzie imitować awarię
systemu poprzez brak odpowiedzi na
komendy użytkownika. Zasada działania
jest dość prosta. Robimy zrzut ekranu
i zapisujemy go do pliku, następnie
ukrywamy wszystkie okna – włącznie z
paskiem zadań oraz ikonami na pulpicie,
a na koniec zmieniamy tapetę na obraz
przedstawiający zrzut ekranu.

Ponieważ obraz ekranu był zapisany

przed schowaniem wszystkich okien,
są one na nim widoczne. W ten sposób
wygląd pulpitu użytkownika nie uległ
zmianie, lecz jego funkcjonalność jest
zablokowana.

Implementacja powyższego

mechanizmu wymaga drobnych zmian
klasy wirtualnego pulpitu. Na początek
będziemy potrzebować funkcji, za
pomocą której zmienimy tapetę pulpitu.
W tym celu wykorzystamy funkcję

SystemParametersInfo

. W sekcji

importu funkcji

WinApi

dodajemy kod

zawarty na Listingu 6.

Zadaniem funkcji

SystemParametersInfo

jest zmiana

bądź odczytanie wybranych ustawień
systemowych.

Przyjmuje ona następujące

parametry:

uAction

– kod czynności, którą

chcemy wykonać,

uParam

– znaczenie tego parametru

jest zależne od pierwszego
parametru,

lpvParam

– znaczenie tego parametru

jest także zależne od pierwszego
parametru,

uWinIni

– określa czynności, jakie

zostaną wykonane po dokonaniu zmian
ustawień systemowych.

Kolejnym krokiem jest zdefiniowanie
stałych, których użyjemy, wywołując
funkcję

SystemParametersInfo

. W

sekcji definicji stałych klasy dopisujemy
kod z Listingu 7.

Wywołanie funkcji

SystemParametersInfo

ze stałą

SPI _

SETDESKWALLPAPER

powoduje zmianę

tapety pulpitu.

Ścieżkę do pliku zawierającego

obraz nowej tapety podajemy jako trzeci

parametr funkcji. W systemach Windows
Server 2003 oraz Windows XP/2000 plik z
obrazem nie może być w formacie JPEG.
Przy definicji czwartego parametru funkcji
używamy stałych

SPIF _ UPDATEINIFILE

i

SPIF _ SENDWININICHANGE

. Oznaczają

one odpowiednio aktualizację profilu
użytkownika oraz wygenerowanie
komunikatu

WM _ SETTINGCHANGE

.

Przejdźmy do napisania metody,

która będzie zamieniać tapetę pulpitu na
wcześniej wykonany zrzut ekranu. Kod
metody jest przedstawiony na Listingu 8.

Na początku dodajemy

przestrzenie nazw

System.Drawing

,

System.Windows.Forms

, a także

System.Drawing.Imaging

.

Metoda rozpoczyna działanie od

stworzenia obiektu klasy

Bitmap

,

reprezentującego zrzut ekranu
Przeciążony konstruktor tej klasy pobiera

Listing 5.

Jak nie należy używać wirtualnych pulpitów – prosty przykład

while

(

true

)

{

(

new

VirtualPulpit

())

.

Hide

(

this

.

Handle

);

Thread

.

Sleep

(

100

);

}

Listing 6.

Funkcja SystemParametersInfo

[

DllImport

(

"user32.dll"

)]

public

static

extern

int

SystemParametersInfo

(

int

uAction

,

int

uParam

,

string

lpvParam

,

int

fuWinIni

);

Listing 7.

Stałe wykorzystywane przy zmianie tapety pulpitu

private

int

SPI_SETDESKWALLPAPER

=

20

;

private

int

SPIF_UPDATEINIFILE

=

1

;

private

int

SPIF_SENDWININICHANGE

=

2

;

Listing 8.

Metoda zamieniająca tapetę pulpitu na zrzut ekranu

private

void

ChangeWallPaperToScreenShot

(

string

bmpPath

)

{

Bitmap

bitmap

=

new

Bitmap

(

Screen

.

PrimaryScreen

.

Bounds

.

Width

,

Screen

.

PrimaryScreen

.

Bounds

.

Height

,

PixelFormat

.

Format32bppArgb

);

Graphics

screenshot

=

Graphics

.

FromImage

(

bitmap

);

screenshot

.

CopyFromScreen

(

Screen

.

PrimaryScreen

.

Bounds

.

X

,

Screen

.

PrimaryScreen

.

Bounds

.

Y

,

0

,

0

,

Screen

.

PrimaryScreen

.

Bounds

.

Size

,

CopyPixelOperation

.

SourceCopy

);

bitmap

.

Save

(

bmpPath

,

ImageFormat

.

Bmp

);

SystemParametersInfo

(

SPI_SETDESKWALLPAPER

,

0

,

bmpPath

,

SPIF_UPDATEINIFILE

|

SPIF_SENDWININICHANGE

);

}

background image

18

POCZATKI

HAKIN9 7-8/2008

dwa parametry: szerokość i wysokość
obrazu.

Ponieważ zapisujemy cały obraz

na monitorze, wykorzystujemy klasę

Screen

w celu odczytania wysokości i

szerokości ekranu monitora. Zrzut ekranu
tworzony jest poprzez wywołanie metody

CopyFromScreen

klasy

Graphics

. Kopiuje

ona piksele z określonego fragmentu
ekranu do instancji klasy

Graphics

.

Metoda ta przyjmuje następujące

parametry:

• współrzędną x punktu początkowego,
• współrzędną y punktu początkowego,
• współrzędną x punktu końcowego,

• współrzędną y punktu końcowego,
• rozmiar obszaru do przekopiowania,
• obiekt klasy

CopyPixelOperation

,

odpowiadający za sposób
przedstawiania kolorów.

Obraz zapisujemy w wybranym miejscu,
używając formatu BMP. Na koniec
zamieniamy tapetę pulpitu na wcześniej
utworzony zrzut ekranu.

Ostatnią czynnością jest – pokazana

na Listingu 9 – drobna modyfikacja
metody

Hide

.

Istotną zmianą jest wywołanie na

początku metody

ChangeWallPaperToS

creenShot

. Dodatkowo usunęliśmy kod,

który dodaje okna aplikacji, paska zadań
oraz pulpitu (rozumianego jako ikony)
do listy wyjątków podczas wyszukiwania
widocznych okien.

Uruchamiając aplikację, która

wywołuje metodę

Hide

, zauważymy, że

nasz pulpit nie odpowiada na wydawane
przez nas komendy. Istnieje jednak
możliwość otworzenia pewnych okien,
np. poprzez specjalne kombinacje
klawiszy. Aby temu zapobiec, możemy
wykorzystać wcześniejszą wersję metody

Hide

(Listing 4) w sposób przedstawiony

na Listingu 5.

Podsumowanie

Celem artykułu było zaprezentowanie
techniki wirtualnych pulpitów.
Wykorzystując ten mechanizm jesteśmy
w stanie w sposób swobodny zarządzać
oknami uruchomionych apikacji, dzięki
czemu praca z systemem Windows staje
się wygodniejsza.

Jednakże omówioną technikę można

wykorzystać do pisania róznego rodzaju
robaków, które zamiast pomagać
użytkownikowi – powodują szkody w jego
systemie.

Będąc w stanie kontrolować pozycję,

rozmiar oraz widoczność okien, jesteśmy
w stanie podmienić wybrane okna. Pisząc
program, wyglądający identycznie jak
np. menadżer poczty e-mail, możemy
bardzo szybko zamienić oryginalne okno
aplikacji na specjalnie przygotowaną
przez nas kopię. Użytkownik,
nieświadomy zagrożenia, wprowadza
swój login i hasło, które zamiast trafić
do menadżera poczty, są przez nas
przechwytywane. Jeżeli dodatkowo,
przywrócimy widoczność oryginalnego
okna aplikacji, wygenerujemy komunikat
o drobnym błędzie z prośbą powtórnego
wpisania loginu i hasła, to istnieje
duże prawdopodobieństwo, że dane
użytkownika zostaną wykradzione w
sposób niezauważalny.

Maciej Pakulski

Absolwent studiów inżynierskich oraz aktywny członek

koła naukowego .NET Wydziału Fizyki, Astronomii i

Informatyki Stosowanej Uniwersytetu Mikołaja Kopernika

w Toruniu. Obecnie na studiach magisterskich.

Programowaniem zajmuje się od 2004. Potrafi

programować biegle w językach C/C++, Java, VHDL.

Programowaniem w języku C# i platformą .NET zajmuje

się od 2006 roku. Jest autorem szeregu publikacji z

zakresu programowania oraz bezpieczeństwa IT.

Kontakt z autorem: mac_pak@interia.pl

W Sieci

http://www.microsoft.com/express/download – witryna Microsoft, z której można pobrać

środowisko Visual C# 2008 Express Edition,

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

.NET i nie tylko. Naprawdę godny polecenia,

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

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

Listing 9.

Zmodyfikowana metoda Hide

public

void

Hide

()

{

ChangeWallPaperToScreenShot

(

@

"C:

\w

allPaper"

);

IntPtr

deskWin

=

GetDesktopWindow

();

IntPtr

win

=

GetTopWindow

(

deskWin

);

if

(

win

==

IntPtr

.

Zero

)

return

;

counter

=

0

;

do

{

if

(

IsWindowVisible

(

win

)

&&

win

!=

deskWin

)

{

hwndTab

[

counter

++]

=

win

;

}

}

while

((

win

=

GetWindow

(

win

,

GW_HWNDNEXT

))

!=

IntPtr

.

Zero

);

IntPtr

s

=

BeginDeferWindowPos

(

counter

);

for

(

int

i

=

0

;

i

<

counter

;

i

++)

{

s

=

DeferWindowPos

(

s

,

hwndTab

[

i

]

,

0

,

0

,

0

,

0

,

0

,

SWP_HIDEWINDOW

|

SWP_NOMOVE

|

SWP_NOSIZE

|

SWP_NOZORDER

|

SWP_

NOACTIVATE

);

}

EndDeferWindowPos

(

s

);

}

background image

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

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

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

cd@software.com.pl

background image

20

HAKIN9

ATAK

R

ok 2008 będzie najprawdopodobniej
jednym z najciekawszych w
dotychczasowej historii rynku

przeglądarek internetowych, przede wszystkim za
sprawą zaostrzającej się konkurencji dla nadal
najpopularniejszego Internet Explorera. W chwili
pisania tego tekstu Firefox zagospodarował
nieco ponad 25% komputerów na świecie. W
Polsce ten odsetek był znacząco większy – 33%
udziałów. Na rynku zauważalne są jeszcze Opera
i Safari. W przypadku Opery liczba użytkowników
waha się w okolicach 6-7%. Wszelkie dane
odnośnie Safari są jeszcze niezbyt precyzyjne
(szacunki mówią o mniej więcej 4-5%). Wiadomo
jednak, że od kiedy Apple zdecydował się
na wypuszczenie wersji na Windowsa, jej
popularność bardzo dynamicznie wzrasta.

Ale nie o popularności poszczególnych

przeglądarek chciałbym napisać, lecz o ich
bezpieczeństwie. Temat jest ważny, ponieważ
przeglądarka internetowa jest bodajże najczęściej
używanym programem, z wyłączeniem może
samego systemu operacyjnego. Szacunki
przedstawiane przez podmioty zajmujące się
bezpieczeństwem (np. Secunia, Symantec, CERT )
wskazują, że przeszło 80% ataków dokonywanych
przez Internet odbywa się za pośrednictwem
przeglądarki internetowej (głównie poprzez
niebezpieczne strony WWW ).

W artykule znajdzie się omówienie czterech

najpopularniejszych przeglądarek na świecie,
także i w Polsce. Na rynku znajdują się również

PRZEMYSŁAW ŻARNECKI

Z ARTYKUŁU

DOWIESZ SIĘ

jak ważne jest bezpieczeństwo

przeglądarek internetowych,

jakie potencjalne

zagrożenia niesie ze sobą

nieodpowiedzialne korzystanie

z Sieci,

w jaki sposób możemy

przyczynić się do wzrostu (a

także obniżenia) poziomu

bezpieczeństwa,

jakie są podstawowe

mechanizmy przeciwdziałania

zagrożeniom.

CO POWINIENEŚ

WIEDZIEĆ

nie ma całkowicie bezpiecznej

przeglądarki. Każda ma jakieś

wady,

poziom bezpieczeństwa

komputera zależy nie tylko od

stosowanych zabezpieczeń, lecz

również od samego użytkownika,

otwieranie nieznanych

odnośników z podejrzanych

źródeł może skończyć się wręcz

tragicznie,

zawsze korzystaj z aktualizacji

krytycznych,

wreszcie – nie daj się omamić

mitowi bezpiecznego programu

czy systemu, o bezpieczeństwie

decydujesz przede wszystkim Ty.

Nie daj się skusić reklamom, nie

wszystko złoto, co się świeci!

inne, ale liczba ich użytkowników jest naprawdę
niewielka – poza tym wiele z nich stanowi klony
Firefoksa, więc pozwolę sobie na ich ominięcie.
Zapraszam do lektury tekstu.

Internet Explorer

Bezpieczeństwo produktów giganta z Redmond
od zawsze wzbudza kontrowersje. Niemalże od
samego powstania Internet Explorer znajduje się
w ogniu krytyki, paradoksalnie podbijając przy
tym świat.

W chwili obecnej najpopularniejsza

jest szósta odsłona IE. Siódemka została
prześcignięta przez Firefoksa, wróćmy zatem
do szóstki. Jej rzeczywisty rozwój zakończył
się w roku 2001. Mimo to już ponad siedem
lat od tego faktu pozostaje najpopularniejszą
przeglądarką na kuli ziemskiej, uważaną przy
tym za jedną z najnowocześniejszych. Od roku
2001, poza poprawkami bezpieczeństwa, nic się
technologicznie w tej przeglądarce nie zmieniło.
Większy lifting przeszła wraz z wydaniem Service
Packa 2 do Windows XP, który podmienił wiele
bibliotek, jednakże odpowiadających głównie za
bezpieczeństwo.

Nie zmienia to faktu, że według różnych

szacunków około 30% dziur w Internet Explorerze
nie jest w ogóle łatanych, przy czym większość
to błędy krytyczne, znane bardzo często od lat.
Ze względu na błędy, do których Microsoft często
się nie przyznaje, użytkownicy IE 6 skazani są
na dostawanie się do komputera złośliwego

Stopień trudności

Niebezpieczne

przeglądarki

internetowe

Przeglądarka internetowa jest jednym z najczęściej używanych

programów. Z tej racji bywa również jednym z najczęściej

atakowanych. Wiele osób nie zdaje sobie chyba do końca sprawy,

jak ważne jest dbanie o jej bezpieczeństwo. Tym bardziej, że

przeglądarki zawitały również do urządzeń mobilnych.

7–8/2008

background image

21

HAKIN9

NIEBEZPIECZNE PRZEGLĄDARKI INTERNETOWE

7–8/2008

oprogramowania, oszukiwanie przez
strony o fałszywych adresach (najczęściej
wykorzystuje się to przy wykradaniu
danych bankowych, a w konsekwencji
– samych pieniędzy).

Mitem jest, że Internet Explorer

jest bezpieczny, ponieważ producent
systematycznie go łata. Napisałem
już, że wiele dziur nie zostało nigdy
załatanych, zaś pokaźna część łat i
poprawek pojawia się ze znacznym
opóźnieniem. Bezpieczeństwo
przeglądarki polepsza się, jeżeli
używasz systemu z Service Packiem 2.
Teoretycznie większość użytkowników
aktualizuje system na bieżąco, jednakże
na rynku można znaleźć również
posiadaczy starszych, dawno już nie
wspieranych systemów operacyjnych
(np. instytucje publiczne, które często
nie stać na kupno nowszego sprzętu
i oprogramowania). Ich sytuacja jest
niestety często beznadziejna.

Zdarza się, że wielu użytkowników

zawierza ślepo zaporze internetowej
(firewall) i antywirusowi. Ich
bezpieczeństwo jest mniej niż pozorne.
Zacznijmy od tego, że jeżeli pozwolimy
IE na połączenie z Internetem – to
tak, jakbyśmy robili dziurę w zaporze.
Obrazowo można to ująć mniej więcej
tak: kupujemy najlepsze z możliwych
drzwi antywłamaniowych, klucze
dajemy zaś całkowicie obcej osobie. W
rzeczywistości istnieją bowiem robaki
internetowe, które potrafią ominąć
zaporę i jeszcze zmusić nas do otwarcia
wybranego przez nas portu sieciowego.
Takie coś instaluje się na sprzęcie
po otwarciu jakiejś niebezpiecznej,
najczęściej spreparowanej strony,
następnie dopisuje się do kodu IE
jako jego część. Przy którymś tam
uruchomieniu pojawia się komunikat, że
przeglądarka prosi o dostęp do sieci
(czytaj: otwarcie odpowiedniego portu).
Statystyczny użytkownik komputera klika
na tak bez zmrużenia oka – w końcu, jak
korzystać z sieci bez dania dostępu do
niej przeglądarce internetowej?

W wielu przypadkach również

oprogramowanie antywirusowe nie
chroni nas w pełni. Część z błędów
IE 6 jest na tyle skomplikowana, że
po prostu nie jest to możliwe. Gdyby
jeszcze Microsoft nie strzegł pilnie

swojego tajemniczego kodu, być może
udałoby się dokładnie zdiagnozować i
wyeliminować zagrożenia na poziomie
przeglądarki. Nawet najlepszy antywirus
może sobie nie poradzić z sytuacją, w
której użytkownik zostanie zainfekowany
na poziomie przeglądania obrazka na
stronie internetowej. Już wtedy może
dostać się do nas niebezpieczny
kod. Swoją drogą, podobne luki
występują również w pozostałych
– w tym najnowszych – produktach
Microsoftu. Wykrywanie ciągle takich
samych luk w kolejnych produktach
podważa marketingową strategię, w
której korporacja dba o aktualność
oprogramowania i bezpieczeństwo
swoich klientów.

Wspomniałem już, że po

opublikowaniu poprawki Service Pack
2 do Windows XP wiele problemów
zostało wyeliminowanych. W dalszym
ciągu jednak nowe luki pojawiały się jak
grzyby po deszczu. Bywały miesiące,
że kilka – a nawet kilkanaście – takich
błędów ujrzało światło dzienne. Do
niebezpiecznych błędów należy zaliczyć
możliwość umieszczenia złośliwego kodu
za pomocą mechanizmu przeciągnij
i upuść
(ang. drag and drop). Błąd
wykorzystuje lukę przy umieszczaniu
plików na dysku lokalnym. Niebezpieczny
skrypt zostaje ściągnięty, a następnie
uruchomiony przy współudziale systemu
pomocy (to chyba ironia losu, że system
pomocy, często interaktywnej, można
wykorzystać przeciwko użytkownikowi).
W ten sposób powstała możliwość
ominięcia wszystkich zabezpieczeń, jakie
wprowadził SP 2 – co więcej, występuje
ona tylko wraz z tym uaktualnieniem (a
nawet z wieloma nowymi poprawkami).

Liczba luk wykrywanych rocznie

spadła wraz z pojawieniem się na
rynku Internet Explorera 7. Microsoft

zapowiedział wypuszczenie nowego
cacka, zupełnie pozbawionego wad
poprzedników. Jak to zwykle bywa,
rzeczywistość okazała się zgoła
odmienna – aczkolwiek nieco bardziej
łaskawa dla posiadaczy nowego IE.

Zacznijmy od tego, że pierwsza

dziura w IE 7 została wykryta już kilka
godzin po premierze programu. Luka
obejmowała błędne przekierowania
niektórych adresów internetowych, co
stanowiło całkiem poważne zagrożenie
(choć w pięciostopniowej skali
zagrożenia serwisu Secunia otrzymała
notę 2). Nie jest to może więc tragiczna
w skutkach dziura, może za wyjątkiem
wpływu na wizerunek marketingowy
Microsoftu. W międzyczasie pojawiły
się jednak kolejne wątpliwości co do
bezpieczeństwa tej przeglądarki, które
po raz kolejny udowodniły, że produkty
Microsoftu są najmniej bezpieczne ze
wszystkich alternatyw.

IE jest jedyną przeglądarką, która

wykorzystuje tzw. ActiveX. Moduł ten
umożliwia automatyczne uruchamianie
programów zamieszczonych na stronie
internetowej. Opcja ta jest bardzo
wygodna dla użytkownika. Pamiętam,
że dawno temu, kiedy korzystałem na
co dzień z IE, ta możliwość była bardzo
atrakcyjna. Obecnie pożytek jest nawet
jeszcze większy, szczególnie ze względów
wizualnych. Niestety, zawsze jest coś
za coś. ActiveX posiada stosunkowo
szerokie uprawnienia w obrębie
danego systemu komputerowego.
Jeżeli niepożądana osoba znajdzie
jakąkolwiek otwartą lukę (zaś w gruncie
rzeczy takich jest wiele), to będzie mogła
przejąć pełną kontrolę nad komputerem.
Problem jest bardzo poważny, bowiem
według wielu statystyk nawet do 90%

Rysunek 1.

Internet Explorer

Rysunek 2.

Nie zawsze są potrzebne aż

tak dramatyczne kroki

background image

ATAK

22

HAKIN9 7–8/2008

NIEBEZPIECZNE PRZEGLĄDARKI INTERNETOWE

23

HAKIN9

7–8/2008

dziur w Explorerze związanych jest z
kontrolkami ActiveX. Ich wyłączenie
znacznie podnosi nasze bezpieczeństwo,
przy czym korporacja (dbając o nie),
pozostawia je domyślnie włączone.

ActiveX to nie jedyna potencjalnie

niebezpieczna technologia. Bardzo dużo
dziur pojawia się np. w VBScript. Sporo
niezabezpieczonych obszarów ma również
opracowana przez Microsoft wersja
maszyny wirtualnej Java (MS Java VM).
Wykorzystanie tych rozwiązań niesie za
sobą sporo potencjalnych zagrożeń.
Sytuacji z pewnością nie ratuje fakt, że
– wbrew wielu opiniom i zaleceniom
– Microsoft lansuje swoją przeglądarkę
jako część systemu operacyjnego. Z jednej
strony daleko idąca integracja sprawia,
że program np. szybciej się uruchamia i
często funkcjonuje sprawniej (szybkość
wewnętrzna jest już dyskusyjna), ale za
wzrost potencjalnej wygody płacimy
zwiększonym zagrożeniem.

W siódemce pojawiło się teoretycznie

wiele aktywnych mechanizmów obronnych
– przede wszystkim filtry antyphishingowe,
blokowanie wyskakujących okienek
(które mogą być często stronami
spreparowanymi) itp. Poprawiają one nieco
bezpieczeństwo pracy. Niestety, Microsoft
ma na tym polu co najmniej dwa lata
zaległości w stosunku do konkurencji, co
skutkuje często bezradnością nowych

rozwiązań. Można nawet odnieść
wrażenie, że zostały stworzone trochę
na odczepnego, a na pewno z dużym
pośpiechem.

Powolnymi krokami zbliża się

zaplanowana na koniec roku premiera
Internet Explorera 8. Z wielu zapowiadanych
nowości warto zwrócić uwagę na
zapowiadane zwiększenie bezpieczeństwa
przeglądarki. Służyć ma temu przede
wszystkim ulepszony filtr antyphishingowy.
Ponadto ochrona przed sfałszowanymi
stronami WWW ma się posunąć o wiele
dalej – począwszy od zastosowania
różnych kolorów w adresach i nazwach
witryn, skończywszy na blokowaniu
wszystkiego, co znajduje się na czarnej
liście. Co jakiś czas Microsoft ujawnia jakiś
tam smaczek związany z bezpieczeństwem
i ogólną funkcjonalnością (patrz test
ACID2), dlatego na samych zmianach nie
ma się co skupiać – poza tym korporacja
na każdym kroku szafuje szumnymi
obietnicami, poza którymi często nic nie
pozostaje.

Mozilla Firefox

Firefox jest obecnie największym
konkurentem Internet Explorera.
Chociażby z tej racji często porównuje
się jego zabezpieczenia z tym, co oferuje
Microsoft. W powszechnym mniemaniu
jest to przeglądarka bezpieczna. Nie

oznacza to jednak, że całkowicie jest
pozbawiona dziur i wad. Takie pojawiają
się w każdej omówionej w niniejszym
artykule.

Dlaczego można domniemywać, że

Firefox jest mimo to bezpieczniejszym
programem od IE? Wśród wielu
specjalistów, zwłaszcza z kręgu
Windowsa, byłaby to uwaga co najmniej
kontrowersyjna. Zacznijmy jednak
od konstrukcji samego programu.
Do konstruktywnego wniosku co do
Firefoksa można dojść, zwracając
uwagę tylko na jego rozmiar – zwłaszcza
w porównaniu z IE. Jest taka stara
zasada, która mówi, że im większy
i bardziej skomplikowany program,
tym wyższe prawdopodobieństwo, że
będzie z nim coś nie w porządku. W
drugą stronę działa to w ten sposób, że
stosunkowo niewielki program łatwiej
analizować, poprawiać i unowocześniać.
Ponadto całkowicie otwarty kod sprzyja
szybkiemu wyszukiwaniu i likwidowaniu
błędów. Swoją drogą, otwartość
Firefoksa sprawia, że praktycznie nie
jest możliwe zatajenie informacji o
jakimkolwiek błędzie – tak samo jak dość
mało prawdopodobna jest sytuacja, w
której wykryte dziury nie zostaną załatane
(jednak trzeba powiedzieć, że ona
niekiedy miejsce – statystyki pokazują,
że Firefox z serii 2.x ma procentowo dwa
razy mniej niezałatanych dziur, niż IE,
zaś w starszej wersji (1.5) jest to ponad
trzykrotnie mniej). Biorąc pod uwagę fakt,
że kod jest otwarty, także twórcy muszą
szczególnie zadbać o jego jakość,
bowiem świadczy ona o nich samych.

Ogólnie rzecz ujmując, wszelkie łaty

bezpieczeństwa wydawane są o wiele
szybciej, niż w przypadku IE. Zdarzają
się oczywiście niezależne raporty, które
przeczą temu stwierdzeniu, jednakże
moja osobista praktyka i wiele innych
doświadczeń są raczej jednoznaczne.

Bezpieczeństwo Firefoksa z pewnością

wywodzi się również z faktu, że nie stanowi
on części systemu operacyjnego. Nawet
jeżeli pojawia się jakaś poważna luka
bezpieczeństwa, to prawdopodobieństwo,
że coś się stanie z naszym systemem
operacyjnym, jest o wiele mniejsze. Przede
wszystkim przejęcie kontroli nad OS jest
znacznie bardziej utrudnione (co nie
oznacza, że niemożliwe).

Rysunek 3.

Firefox od pewnego czasu wgryza się wręcz w rynek przeglądarek

internetowych

background image

ATAK

22

HAKIN9 7–8/2008

NIEBEZPIECZNE PRZEGLĄDARKI INTERNETOWE

23

HAKIN9

7–8/2008

Istnieją jednak mechanizmy,

które sprawiają, iż na tle konkurentów
(rozumianych jako Safari lub Opera)
Firefox jest nieco mniej bezpieczny.
Chodzi tutaj o konstrukcję programu,
od samego początku nastawioną na
instalowanie i korzystanie z rozszerzeń,
które w istotny sposób mogą
modyfikować pracę przeglądarki. Firefox
został bowiem tak zaprojektowany, że
potencjalny atak może objąć najpierw
same rozszerzenia, a dopiero w dalszej
kolejności właściwą przeglądarkę. Stąd
pierwsze ostrzeżenie – nie korzystać z
nieznanych rozszerzeń – zwłaszcza tych,
które nie są choćby opisane gdzieś na
stronach Mozilli (najlepiej ściągać je
bezpośrednio z nich).

Pod koniec 2007 r. została znaleziona

luka, która daje potencjalne możliwości
przeprowadzenia naprawdę groźnego
ataku. Przede wszystkim wykonalne jest
przeprowadzenie dowolnego ataku typu
Cross Site Scripting (XSS), który polega
na umieszczeniu niebezpiecznego kodu w
treści strony WWW. W jego wyniku nieznany
gość może podnieść swoje uprawnienia
poprzez kliknięcie na hiperłącze. Problem
wynika z tego, że Firefox (w odróżnieniu od
Opery, czy nawet Safari) traktuje dane z
URL (odnośników) jak JavaScript – przez
to ich uprawnienia są nieco większe.
W najgorszym scenariuszu możemy
stracić kontrolę nad przeglądarką. Mimo
potencjalnych konsekwencji akurat tę
dziurę uznano za średnio krytyczną i
niepriorytetową. Mimo to została załatana
zdecydowanie szybciej niż najbardziej
krytyczne dziury IE.

W przypadku każdego produktu

zdarza się, że jedna łata może
zlikwidować kilka dziur, tworząc za to
kolejne. Tuż przed napisaniem tekstu
Mozilla załatała około dziesięciu luk
krytycznych w programie, przy czym
ujawniła się kolejna niebezpieczna
dziura. W jej wyniku niepożądany
użytkownik może – za pomocą kodu
JavaScript zamieszczonego na
stronie WWW, podejrzeć zawartość
każdego pliku w katalogu domowym
przeglądarki. Intruz może w ten sposób
odnaleźć nawet plik z naszymi hasłami
internetowymi, co może nieść za sobą
naprawdę poważne konsekwencje.
Luka ujawnia się przy korzystaniu z

popularnych schematów view-source
oraz resource.

W przypadku Firefoksa musimy również

uważać przy akceptacji certyfikatów
SSL. Zdarzało się bowiem w przeszłości,
że Firefox nieprawidłowo przetwarzał
certyfikaty, które były odpowiedzialne za
alternatywne nazwy. Może się bowiem
zdarzyć, że zamiast informacji o tym,
iż certyfikat jest fałszywy, uzyskamy
informację o nieznanym nadawcy,
bądź wręcz akceptację. Generalnie ta
luka występuje w wielu popularnych
przeglądarkach.

Z powyższych informacji wynika, ze

Firefox jest również programem, który
posiada luki w zabezpieczeniach – w tym
często poważne. Niemniej ostateczna ich
liczba – jak również okres likwidacji – są
naprawdę do przyjęcia, a przynajmniej
pozwalają określić ją jako bezpieczną
przeglądarkę, o którą dbają zarówno
twórcy, jak również zainteresowani
użytkownicy.

Opera

Opera cieszy się opinią
najbezpieczniejszej i zarazem
najszybszej przeglądarki na rynku
(aczkolwiek w tej drugiej kategorii ma
poważnego konkurenta w postaci Safari,
zaś nadchodzący Firefox 3 będzie miał

również coś niecoś do powiedzenia).
Opera jest jedną z najstarszych
przeglądarek internetowych o naprawdę
długiej tradycji. W chwili obecnej jest
produktem całkowicie darmowym
(aczkolwiek nie została wydana jako
Open Source). Wcześniej istniała również
komercyjna wersja programu, zaś żeby
korzystać z niego za darmo, konieczne
było oglądanie wyświetlających się
reklam. Już wtedy Opera zdobyła opinię
szybkiej, wygodnej, a przede wszystkim
bezpiecznej przeglądarki. Wzrost jej
popularności związany jest niewątpliwie
z rezygnacją z takiej polityki. Przejdźmy
jednak do rzeczy.

Opera charakteryzuje się niezwykle

szybkim czasem wydawania poprawek.
Zamyka się on często w godzinach,
co winno być wzorem dla pozostałych
przeglądarek. Samych łat w porównaniu
z nimi jest również o wiele mniej. Wydaje
się, że nacisk położony na bezpieczeństwo
wynika z faktu, że Opera to nie tylko
przeglądarka, lecz również całkiem
niezły klient pocztowy (a można dodać
jeszcze parę interesujących funkcji za
pomocą widgetów – np. klienta protokołu
BitTorrent). Są to wprawdzie spekulacje,
niemniej zwiększona funkcjonalność
wymaga również bardziej kompleksowego
podejścia do bezpieczeństwa

Rysunek 4.

Jedna z odsłon Firefoksa, niekoniecznie najnowsza

background image

ATAK

24

HAKIN9 7–8/2008

NIEBEZPIECZNE PRZEGLĄDARKI INTERNETOWE

25

HAKIN9

7–8/2008

Opera charakteryzuje się również

tym, że wszystkie znalezione dziury
są w 100% załatane. Posługując się
raportem CERT oraz danymi ze znanego
serwisu Secunia, można wskazać, że
w latach 2003-2008 wszystkie wykryte
dziury zostały załatane. W IE jest to
odpowiednio 35% (dane szacunkowe
– zgadzają się z tym, o czym napisałem
wcześniej), w Firefoksie – dwukrotnie
więcej. Jak widać, Opera przebija je
wszystkie.

Statystyki Opery są nieco gorsze,

jeżeli weźmiemy pod uwagę rodzaj
wykrywanych krytycznych dziur.
Oczywiście procentowo, nie w liczbach
bezwzględnych. Wśród krytycznych luk
aż 58% zostało ocenione na 4 w skali
pięciostopniowej (wysokie, ale jeszcze
nie ekstremalne ryzyko). W IE wielkość
ta kształtuje się w okolicach trzydziestu
paru procent, jednakże akurat u tego
konkurenta występuje kilkanaście
procent tzw. ekstremalnych luk, których
Opera po prostu nie posiada (Firefox
zresztą także, w serii 1.x zdarzyło się
ok. 2% takich luk). Statystyki te nieco
pogorszyły się w porównaniu ze
starszymi wersjami programu, jednak
wynika to moim zdaniem z coraz
większej jego popularności, a więc
także coraz dokładniejszego badania
przeglądarki. Zresztą z pewnością wielu
Czytelników pamięta, że swego czasu

przedstawiciele renomowanych serwisów
i koncernów wypowiadali się, iż nie warto
w ogóle tracić pieniędzy na dokładne
analizy Opery, bowiem mało kto jej
używa. Mówiąc kolokwialnie, żal im było
pieniędzy i czasu. Na szczęście dla wielu
użytkowników aplikacji, udało się stanąć
w szranki z największymi i – powoli, bo
powoli – ale Opera nadrabia dystans do
Firefoksa i IE.

Wprawdzie wszystkie dziury są łatane

stosunkowo szybko (zaś w porównaniu
z pewnym jeszcze modnym produktem
– wręcz błyskawicznie), to jednak warto
wspomnieć, jakiego rodzaju luk możemy
się w ogóle spodziewać (zwłaszcza,
jeżeli ktoś z Czytelników używa starszej,
jeszcze niezaktualizowanej wersji). Dla
przykładu, najnowsza odsłona (w chwili
wklepywania tych znaków była to Opera
9.26) załatała kilka poważnych luk, które
wykryto we wcześniejszych wydaniach.
Jeszcze na przełomie marca i kwietnia
2008 w Operze nie zostały wykryte
żadne nowe dziury. W porównaniu z IE
jest to wyczyn niebagatelny.

Pierwsza z załatanych dziur umożliwiała

uruchomienie niebezpiecznego skryptu
z poziomu operacji wyświetlania grafiki.
Niebezpieczny kod mógł bowiem zostać
umieszczony w pobieranym przez
przeglądarkę opisie obrazka. Problem
wynikał zaś z tego, że w takich przypadkach
nie obowiązywały obostrzenia obowiązujące

w normalnym trybie uruchamiania skryptów.
Złośliwe oprogramowanie miało więc o
wiele większe uprawnienia, niż podczas
standardowej obsługi skryptów. Programiści
Opery (i nie tylko zresztą) uznali tę dziurę
za bardzo poważny problem. Taki kod
może bowiem wywołać więcej niż sporo
zamieszania. Jeżeli więc, drogi Czytelniku,
zapomniałeś o zaktualizowaniu Opery, to
uczyń to czym prędzej.

Wprawdzie kolejne luki miały już o

wiele niższy poziom krytyczności, jednakże
również nie zostały zlekceważone. Jeden
z błędów kończył się czasem tym, że
użytkownik był zmuszony do uruchomienia
pliku znajdującego się na jego własnym
dysku twardym. Nie musiało to mieć
zbyt daleko idących konsekwencji.
Trzecia dziura umożliwiała natomiast
przeprowadzenie tzw. ataku Cross Site
Scripting
, o którym wspominałem już przy
omawianiu Firefoksa.

Napisałem wcześniej, że twórcy

Opery stawiają w dużej mierze na
bezpieczeństwo. Takie stwierdzenie ma
sens zwłaszcza w zestawieniu z innymi
przeglądarkami, zwłaszcza Internet
Explorerem. Jednym z przykładów dbania
o bezpieczeństwo przeglądarki jest fakt,
że sami twórcy gruntownie ją testują
– właśnie po to, aby wyszukać wszelkie
potencjalne podatności. O wykryciu
takiej luki twórcy zazwyczaj informują
użytkowników za pomocą mediów
elektronicznych, zwłaszcza poważnych i
popularnych serwisów zajmujących się
bezpieczeństwem. Istnieje jednak prosta
zasada, o której wspominałem już w
przypadku Internet Explorera – informacja
o luce jest upubliczniona wtedy, kiedy
pojawi się na nią łatka. Dzieje się tak,
ponieważ programiści wolą nie informować
całkiem sporej rzeszy potencjalnych
złośliwców, że oto została otwarta dla nich
jakaś tylna furtka. Informacja po fakcie
ma za zadanie uświadomić klientów/
użytkowników, że nastąpił określony błąd,
który już wyeliminowano, i że jeżeli chcą
się czuć bezpiecznie, winni zaktualizować
program. Sposób działania programistów
i decydentów spod znaku Opery powinien
być wzorem dla wszystkich twórców
oprogramowania – zwłaszcza Microsoftu,
który mógłby zaoszczędzić miliony
(jeżeli nie miliardy) dolarów na akcjach
reklamujących jego oprogramowanie jako

Rysunek 5.

Czy takiemu apelowi można się oprzeć?

background image

ATAK

24

HAKIN9 7–8/2008

NIEBEZPIECZNE PRZEGLĄDARKI INTERNETOWE

25

HAKIN9

7–8/2008

bezpieczne, regularnie aktualizowane itd.,
gdyby jego produkty chociaż w części
zbliżyły się do marketingowego obrazu.

Wróćmy jeszcze na chwilę do

sprawdzania Opery przez jej twórców.
Programiści wykorzystują w tym
celu m.in. specjalny program do
audytu kodu, który został stworzony, a
następnie udostępniony w II połowie
zeszłego roku przez Fundację Mozilli na
konferencji poświęconej bezpieczeństwu.
Oczywistym jest więc fakt, że również i
twórcy Firefoksa wykorzystują jsfunfuzz
(tak nazywa się ten program) do
testowania swojej przeglądarki.

W starszych wersjach Opery pojawiały

się również luki, które umożliwiały zwabienie
nieostrożnego (albo nieświadomego
zagrożeń) użytkownika na strony z
niebezpiecznym kodem JavaScript,
który mógł poczynić wiele szkód na
komputerze ofiary. Ponadto trafiały
się również drobne błędy, które mogły
skutkować zawieszaniem się programu
w pewnych okolicznościach. Zapewne
niejeden użytkownik pamięta, że nie dalej
niż dwa, może trzy lata temu Opera była
uważana za stosunkowo niestabilną, często
zawieszającą się przeglądarkę, zwłaszcza
w porównaniu z Firefoksem. Był to wynik
wielu – niewielkich, jak już wspomniałem
– błędów i luk, które z wersji na wersję
były likwidowane. Wydaje się, że tego typu
niedogodności nie ma już wcale. Używam
Opery nieprzerwanie od kilku miesięcy i
nie widzę już żadnego śladu po dawnej
niestabilności.

Reasumując, Opera jest bardzo

bezpieczną przeglądarką – nie tylko
dlatego, że jest stworzona niezwykle
starannie, przez co pojawia się mało luk.
Nie ma idealnego oprogramowania i
wcześniej czy później w każdym programie
zostanie znaleziona jakaś dziura. O
jej bezpieczeństwie decyduje przede
wszystkim podejście twórców, którzy
nie cackają się ze swoim dzieckiem i
sami bezlitośnie je testują, usuwając
w niemalże błyskawicznym tempie
wszelkie luki. O wyższym (zwłaszcza w
porównaniu z Firefoksem) bezpieczeństwie
decyduje również fakt, że Opera jest od
razu wyposażona w wiele dodatków i
narzędzi, dzięki czemu użytkownik nie
ma potrzeby instalowania nieznanych i
być może niebezpiecznych rozszerzeń

(korzystający z Firefoksa uważają z kolei,
że ich przeglądarka dzięki rozszerzeniom
może być dowolnie skonfigurowana i
dostosowana do indywidualnych potrzeb.
Mają niewątpliwie rację, jednakże związane
jest to z pewną ceną, o której parę razy
już wspominałem). Dodatkowo wszelkie
wzbogacenia funkcjonalności (np. widgety)
instalowane są tylko z oficjalnej strony.
Poza tym – podobnie jak Firefox – Opera
nie jest częścią systemu operacyjnego,
co czyni ją z definicji programem
bezpieczniejszym. Jej rozmiar (o czym
wspominałem przy Firefoksie) jest również
mniejszy od Internet Explorera, co także ma
wpływ na bezpieczeństwo. Ogólnie rzecz
ujmując, jest to naprawdę warta polecenia
przeglądarka – zwłaszcza dla osób,
które niekoniecznie są zainteresowane
zbytnim personalizowaniem jej dla
własnych potrzeb. Operą winni się
również zainteresować posiadacze
urządzeń przenośnych, bowiem tzw.
Opera Mini jest powszechnie uważana
za najlepszą przeglądarkę internetową
dla tej klasy urządzeń. Korzystałem z niej
niewiele, jednakże to, co zauważyłem
(a także wyczytałem/usłyszałem z wielu
poważnych źródeł), pozwala mi sądzić, że
wersja mobilna posiada większość cech
swojego starszego i większego brata.
Można ją również ściągnąć i dowolnie
(czytaj: darmowo) użytkować na każdym

mobilnym systemie operacyjnym (tak,
jak na desktopie). Zapewne i w tej wersji
występują jakieś luki, ale póki co jeszcze
nikt ich nie wykrył.

Safari

Z wielu przyczyn Safari jest przeglądarką,
której powinienem poświęcić nieco więcej
miejsca. Początkowo z jej dobrodziejstw
(przez blisko cztery lata) mogli korzystać
tylko użytkownicy systemu operacyjnego
MAC OS X. W tym czasie w wielu
środowiskach funkcjonalność, a zwłaszcza
szybkość Safari obrosły wręcz w legendy.
Sam producent, czyli Apple, budował
markę przeglądarki właśnie w oparciu
o prędkość jej działania. Kiedy zapadła
decyzja o udostępnieniu programu
użytkownikom Windows, naczelne hasło
reklamowe brzmiało, że jest to najszybsza
przeglądarka na świecie. Kampania Apple
była niezwykle dynamiczna, nawet wręcz
agresywna. Programem warto zająć się
chociażby dlatego, że stosunkowo szybko
zdobył on dużą popularność, doganiając,
a w wielu regionach świata prześcigając
Operę – co jest wydarzeniem wartym
odnotowania. Podejrzewam, że zanim ten
tekst się ukaże, statystyki mogą się jeszcze
zauważalnie zmienić.

Safari jest również warta

zainteresowania z racji zaimplementowania
jej w przenośnych urządzeniach spod

Rysunek 6.

Opera

background image

ATAK

26

HAKIN9 7–8/2008

NIEBEZPIECZNE PRZEGLĄDARKI INTERNETOWE

27

HAKIN9

7–8/2008

znaku Apple. W chwili obecnej są to
telefony iPhone, odtwarzacz MP3 iPod
Touch oraz zapewne każde następne
urządzenie mobilne Apple, które będzie
miało opcję połączenia z Internetem.
Implementacja oprogramowania w
systemie operacyjnym oznacza de
facto
, że wielu użytkowników z wygody
skorzysta z tego programu, podobnie jak
z Internet Explorera w Windows. Mówiąc
bez ogródek, Apple niejako przymusza
użytkownika do korzystania z Safari na
swoich urządzeniach. Naturalnie, zawsze
można spróbować zainstalować Operę,
co nie dla każdego może być wykonalne
(w chwili pisania artykułu nie było
przygotowanej wersji pod iPhone i inne
urządzenia Apple, poza tym – biorąc pod
uwagę firmową blokadę systemu plików
– jest to co najmniej trudne). Fakt ten
nie powinien być wprawdzie przeszkodą
w uruchomieniu groźnego konkurenta,
został on bowiem napisany w Javie – a
więc uruchomi się na każdej platformie
ją wspierającej. Z tym, że jeżeli nie ma
wersji np. pod iPhone, to funkcjonalność
Opery może nie dorównać Safari, która
wykorzystuje prawie wszystkie możliwości
telefonu, umożliwiając użytkownikowi
używanie różnych zaawansowanych
opcji, jak np. gesty. Za takie praktyki
Apple zostało skrytykowane m.in. przez
Mozilla Foundation. Tuż przed oddaniem
artykułu do druku pojawiły się jeszcze

inne informacje związane z nieproszoną
autoinstalacją Safari. Tym razem dotyczyły
one systemu operacyjnego Windows. To,
w jaki sposób funkcjonuje (zważywszy na
okres wydawniczy, czas mógł się zmienić
na funkcjonował) Apple Software Updater,
zostało przez wielu specjalistów określone
jako zachowanie co najmniej nieetyczne,
zaś z całą pewnością nie zorientowane na
klienta. Przejdźmy do rzeczy. Wyobraźcie
sobie sytuację, w której posiadając któryś
z popularnych programów Apple (np.
QuickTime bądź iTunes), dokonujecie
jego aktualizacji, aby się dowiedzieć, że
w komputerze przybyło Wam aplikacji.
Po uaktualnieniu oprogramowania, bez
zmiany domyślnych ustawień, w Waszym
Windowsie pojawi się przeglądarka
Safari w wersji 3.1 (bądź nowszej). W
artykule wspomnę naturalnie o lukach i
niebezpieczeństwach (bądź korzyściach)
wynikających ze stosowania Safari w
komputerach domowych. Z racji ekspansji
producenta na rynek urządzeń mobilnych,
ciekawy może być rzut oka (a nawet więcej)
na ten właśnie obszar. Po obszernym
wstępnie przejdźmy do meritum, czyli
bezpieczeństwa.

O ile szybkość jest niewątpliwym

atutem przeglądarki, to już w kwestii
bezpieczeństwa zaczyna się pojawiać
wiele przysłowiowych zgrzytów. Pierwsze
luki bezpieczeństwa odkryto już w kilka
godzin po wypuszczeniu wersji beta Safari

3.0 dla Windows. Wprawdzie mowa jest
o wersji testowej, jednakże tak szybkie
odkrycie dziur nie przemawia na korzyść
programu – przynajmniej w świetle
dalszych informacji (oraz zapowiedzi, że
przeglądarka miała być bezpieczna już od
pierwszego dnia użytkowania). Informacje
o lukach przekazali eksperci z aż trzech
niezależnych źródeł (Aviv Raff, David
Maynor, Tor Larholm
).

Jedna z pierwszych luk

bezpieczeństwa dotyczyła zarządzania
pamięcią. Coś, co przydarzało się
również konkurencji (Microsoft boryka
się z podobną dziurą w zasadzie
w każdym nowym produkcie). Luka
umożliwiała wprowadzenie złośliwego
kodu do systemu, naturalnie bez wiedzy
użytkownika, a co najwyżej za jego
pośrednictwem (kliknięcie na określony
link). Po raz kolejny przestrzegam
więc, żebyście nie klikali bezmyślnie
linków pochodzących z nieznanych
maili, zwłaszcza o wielce podejrzanej
treści. Drugi specjalista znalazł aż
sześć błędów. W czterech przypadkach
możliwe było przeprowadzenie ataków
DoS, dwa były związane z możliwością
uruchomienia niepożądanego zdalnego
kodu. Z kolei Larnholm odnalazł tzw.
lukę zero day. Doprowadzała ona do
błędnego przetwarzania kodu przez
programy zainstalowane na komputerach
z Windows. W efekcie dochodziło
do zawieszania komputera. Żaden z
ekspertów nie przedstawił informacji

W Sieci

http://www.secunia.com,
http://www.dobreprogramy.pl,
http://www.idg.pl,
http://www.centrumxp.pl,
http://www.securitywortal.pl,
http://www.microsoft.com/poland/

technet/security/default.mspx,

http://www.webinside.pl,
http://www.osnews.pl,
http://www.webmade.pl,
http://www.nextmag.pl,
http://www.xp.net.pl,
http://www.saferinternet.pl,
http://www.di.com.pl,
http://www.apple.com,
http://www.opera.com,
http://www.apple.com,
http://www.mozilla.org.

Rysunek 7.

Strona domowa Opery, czyżby z błędami?

background image

ATAK

26

HAKIN9 7–8/2008

NIEBEZPIECZNE PRZEGLĄDARKI INTERNETOWE

27

HAKIN9

7–8/2008

związanej z funkcjonowaniem luk w
systemie Mac OS X.

Sytuacja z kolejnymi (i to już stabilnymi

wersjami) programu niekoniecznie
jest najlepsza. Niecały tydzień po
opublikowaniu wersji 3.1 odkryto dwie
pierwsze luki w tej wersji Safari. Zdaniem
ekspertów mogły one w najgorszym
wypadku doprowadzić do przejęcia kontroli
nad komputerem przez niepożądanego
gościa. Zainteresowanych o tym fakcie
poinformował Argentyńczyk Yuan Pablo
Lopez Yacubian. Pierwsza luka związana
była z niebezpieczeństwem uruchomienia
niepożądanego kodu. Niektóre groźne
strony wyświetlane były przez przeglądarkę
jako znane i zaufane, przez co poziom
bezpieczeństwa systemu zdecydowanie
obniżał się. Drugi błąd wynikał z
przepełnienia pamięci, które następowało
wskutek ściągania plików o bardzo długich
nazwach. W tym przypadku również
zaistniała możliwość przejęcia kontroli nad
komputerem użytkownika. Symptomatyczne
jest to, że Apple przez ponad tydzień nawet
nie skomentował zaistniałej sytuacji.

Należy nadmienić, że w chwili pisania

tekstu od wydania nowej wersji Safari
(czyli 3.1) minęło kilkanaście dni, w związku
z czym znane były dopiero pierwsze
informacje o błędach. Teraz zgodnie
z obietnicą zajmę się również Safari
dedykowanym dla urządzeń przenośnych
(w zasadzie mam na myśli iPhone).

Safari w iPhone

iPhone zdobywa coraz większą
popularność zarówno na świecie, jak i w

Polsce. Zdecydowana, a przede wszystkim
skuteczna kampania reklamowa przyciąga
tysiące nowych klientów. W korelacji z
rosnącą popularnością telefonu wzrasta
również liczba aplikacji do niego. W chwili
pisania tekstu oceniano ją na ponad 600 i
dotyczyło to tylko oficjalnych danych Apple!
Tym bardziej nie powinien nikogo dziwić
fakt, że bezpieczeństwo telefonu odgrywa
coraz to większą rolę. Okazuje się, że Safari
na iPhone posiada również kilka luk, co
zdecydowanie negatywnie wpływa na jej
ocenę. Ciekawa jest zwłaszcza ostatnio
wykryta luka, zwłaszcza w kontekście
sposobu, w jaki tego dokonano.

Pewna grupa osób, niezadowolonych

z polityki Apple, postanowiła dokonać na
własną rękę zmian w telefonie. Zamierzali
znaleźć sposób na odblokowanie systemu
plików urządzenia, aby móc instalować
oprogramowanie i dzwonki ze stron innych,
niż rekomendowane przez Apple. Próbowali
tego dokonać przy pomocy najnowszego
firmware (wersja 1.1.3). W trakcie licznych
prób odkryto, że najnowszy firmware
umożliwia odblokowanie urządzenia po
odwiedzeniu specjalnie spreparowanej
strony internetowej. Naturalnie odbywa się
to przy pomocy przeglądarki Safari. W ten
sposób odkryto lukę typu DoS.

W tym przypadku dziura w przeglądarce

posłużyła do odblokowania telefonu.
Jednakże już sam fakt jej znalezienia jest
niepokojący, bowiem w razie wykorzystania
jej w innych celach, musimy się liczyć
z poważnymi konsekwencjami. Żeby to
zobrazować, warto prześledzić, w jaki
sposób telefon reaguje na atak typu

DoS, przygotowany przez wspomnianą,
specjalnie spreparowaną stronę. Po jej
odwiedzeniu można kliknąć na przycisk
pod ostrzeżeniem. Następnie uruchamia
się złośliwy kod. W tym momencie
iPhone przestaje kompletnie reagować
na polecenia użytkownika. Możecie do
woli klikać na ekranie, o przycisku home
również można zapomnieć – nic nie
będzie działać. Po krótkim czasie (około
minucie) telefon sam się zrestartuje. W
międzyczasie kod zmodyfikuje odpowiednio
nasz system plików. Tylko co w sytuacji,
gdyby nieproszona osoba zrobiła coś o
wiele bardziej złośliwego? Opisana strona
WWW wyświetla przycisk z ostrzeżeniem.
Natomiast wiele innych może tego
nie robić – na tym polega największe
niebezpieczeństwo.

Znaleziona luka opiera się w znacznej

mierze na kodzie Java Script pochodzącym
z projektu the Month of Browser Bugs. Cały
projekt polegał na tym, że grupa ekspertów
publikowała każdego dnia jedną lukę
związaną z bezpieczeństwem przeglądarek
internetowych. Moim zdaniem jest to dosyć
bezpardonowy sposób zwrócenia uwagi
na kwestie bezpieczeństwa, w każdym
razie zastosowany kod nie powstał z próżni.
Zapewne niejedna osoba zainteresuje się
wiadomością, że jego pierwotna wersja
atakowała przeglądarki desktopowe,

Rysunek 8.

Rzut oka na Safari

Rysunek 9.

Safari a'la Mac

Rysunek 10.

Safari w wersji Mobile

background image

ATAK

28

HAKIN9 7–8/2008

osiągając w zasadzie podobne rezultaty.
Cóż, najnowsza odsłona atakuje telefony,
doprowadzając do przepełnienia pamięci w
efekcie uszkodzenia aparatu (w tym jednym,
wyjątkowym przypadku nie ma to specjalnie
tragicznych konsekwencji – jedynie zapełnia
pamięć, uszkodzenie telefonu nie jest zaś
stałe, lecz tylko na chwilę go blokuje).

Można się tylko cieszyć, że eksperci

ze wspomnianego projektu nie mieli
tyle czasu, a może nawet chęci, aby
drążyć temat tej luki i stworzyć coś o
wiele bardziej złośliwego. Z kolei miejmy
nadzieję, że ten zapał mają pracownicy
Apple, aby usunąć to zagrożenie. Zwykły
użytkownik może po prostu wyłączyć
korzystanie z JavaScriptu. Oznacza to
oczywiście zmniejszenie funkcjonalności,
ale za to wzrost bezpieczeństwa.

Wprawdzie omówiłem tylko jedną lukę,

jednakże krótki rzut okiem na historię
zabezpieczeń Safari Mobile zwraca
uwagę, że problem bezpieczeństwa
telefonów jest bardzo poważny.
Dla przykładu zeszłego lata Apple
łatało dziury aż w 16 komponentach
oprogramowania iPhone, z czego kilka
odnosiło się do Safari.

Wielu ekspertów porównuje sytuację

Apple do Microsoftu, który, nie zwracając
zbyt szczególnej uwagi na bezpieczeństwo,
padł ofiarą własnej popularności.
Wielu twierdzi, że obiektywnie produkty
Microsoftu nie są mniej bezpieczne od
Apple, jednakże ze względu na liczbę
użytkowników są najczęstszą ofiarą ataku.
Wprawdzie stwierdzenie to jest trafne,
jednakże nie tworzy pełnego obrazu
sytuacji. Słabość Microsoftu to nie tylko
kwestia popularności, lecz również wielu
błędów tkwiących gdzieś w początkach,
w pierwszych wersjach wielu programów.
W przypadku Apple rysuje się spore

prawdopodobieństwo, że sytuacja się
powtórzy – jeżeli oczywiście zostaną
powielone pewne błędy. Niestety, odnoszę
wrażenie, że np. Safari dla Windows
zostało wydane trochę na siłę – być
może przedwcześnie – stąd liczba dziur.
Dlaczego Apple pośpieszył się z wydaniem
przeglądarki? Myślę, że w związku z coraz
większą popularnością przeglądarek
konkurencyjnych w stosunku do IE. Z
pewnością stratedzy Apple obawiali się,
że jeżeli teraz nie ugryzą kawałka tortu
zwanego rynkiem przeglądarek, to później
mogą mieć z tym duży problem. Nie
sposób odmówić im racji, pytanie tylko,
czy nie była to strategia krótkoterminowa.
Podobnie rzecz ma się z iPhonem.

Kwestia zabezpieczeń urządzeń

mobilnych odgrywa tym większe
znaczenie, im bardziej uniwersalna staje
się ich funkcja. Nawet w Polsce daje
się zauważyć trend, zgodnie z którym
telefon nie służy już tylko do dzwonienia.
W coraz większym stopniu przejmuje rolę
komputera, odpowiadając za zarządzanie
naszym czasem, przekazywanie i
edytowanie informacji, jak również
komunikację poprzez sieć Internet.
Zresztą – co tu dużo mówić: współczesne
urządzenia mobilne przerastają swoją
mocą komputery, które jeszcze do
niedawna stały w polskich domach.

Podsumowanie

W przedstawionym artykule starałem się
Was uwrażliwić na kwestię zabezpieczeń
przeglądarek internetowych, a także
bezpieczeństwa jako takiego. Temat
jest z pewnością skomplikowany
i wymaga kompleksowego, albo
raczej odpowiedzialnego, podejścia.
Odpowiedzialność polega na tym,
że jeżeli nawet będziemy posiadać
najbezpieczniejszą przeglądarkę

świata, nie powinniśmy bynajmniej
lekceważyć sobie podstawowych
zasad bezpieczeństwa. Jedną z nich
jest nie otwieranie załączników z
wszechobecnego spamu. Nie chodzi o to,
aby otwierać tylko i wyłącznie wiadomości
np. od znanych sobie nadawców.
Widziałem raz na oczy taką praktykę w
pewnym urzędzie – nie dziwię się teraz,
że w wielu instytucjach nie odpowiada się
na wiadomości od klientów czy petentów.
Można jednak sobie wyobrazić sytuację,
że ktoś, kto wysyła do nas wiadomość,
wysili się i chociaż ją solidnie opisze.
Nawet reklama jest tworzona z jakąś
myślą przewodnią. Jednym słowem
– zachowajmy zdrowy rozsądek.

W artykule znalazły się elementy

porównania pomiędzy poszczególnymi
przeglądarkami. Nie zamierzam jednak
mówić nikomu, która jest najlepsza. Z całą
mocą mogę co najwyżej stwierdzić, że
rozczarowują dwie przeglądarki – Internet
Explorer oraz Safari. Przynajmniej od
strony bezpieczeństwa. Nie znaczy to, że
trzeba trzymać się od nich całkowicie
z daleka. W przypadku takiego Safari
funkcjonalność może przeważyć nad
argumentami bezpieczeństwa, poza
tym przy przestrzeganiu wspomnianych
zaleceń bezpieczeństwa będziemy
względnie chronieni.

Generalnie nie ma na rynku

przeglądarki w 100% bezpiecznej.
Wszystkie są tylko mniej lub bardziej
zagrożone. Przy wyborze przeglądarki
winniśmy brać jednak pod uwagę takie
elementy, jak ogólna liczba pojawiających
się luk, częstotliwość ich łatania i to, czy
wszystkie są likwidowane. Wskazałem
przypadki, w których tak nie jest. Ponadto
integracja z systemem z punktu widzenia
bezpieczeństwa nie jest najlepszym
rozwiązaniem. Jeżeli weźmiemy pod
uwagę powyższe argumenty, zestawimy
je z funkcjonalnością, to wyjdzie nam
przeglądarka odpowiednia dla nas.
Na sam koniec wspomnę jeszcze
jedno – przeglądarka bezpieczna, to
przeglądarka załatana.

Przemysław Żarnecki

Autor jest dziennikarzem, przedsiębiorcą, doktorantem.

Bezpieczeństwo stanowi dla niego jeden z

podstawowych priorytetów. Nie wyobraża sobie używania

programu, co do którego nie ma zaufania.

Kontakt z autorem: p.zarnecki@plusnet.pl

Rysunek 11.

Słynne ostrzeżenie ze

spreparowanej witryny

Rysunek 12.

Ustawienia Safari Mobile,

które wpłyną na nasze bezpieczeństwo

background image
background image

30

HAKIN9

ATAK

7-8/2008

G

adu–gadu jest komunikatorem
internetowym, który zrzesza już prawie
6 milionów użytkowników. Swoją

popularność zawdzięcza prostocie działania,
intuicyjnej obsłudze i przede wszystkim
pochodzeniu – jest to produkt made in Poland.
Żółte słoneczko jest znakiem rozpoznawalnym
chyba przez każdego polskiego internautę.
Nie jest to jednak aplikacja wolna od błędów
– są one normalnym zjawiskiem, ściśle
powiązanym z tworzeniem oprogramowania
komputerowego. Błąd odkryty w Gadu–Gadu
7.7 pozwala na na wykonanie dowolnego kodu
na komputerze osoby, która korzysta z tego
programu. Tkwi on w obsłudze emotikonów
– plik

emots.txt

, zawierający emotikony,

podczas wczytywania łańcuchów znakowych
nie sprawdza ich długości. Możliwe jest zatem
wykonanie przepełnienia bufora (aczkolwiek nie
w klasyczny sposób). Opisywana podatność
dotyczy Gadu–Gadu w wersji 7.7 build 3669. Jak
to zrobić, jak wykorzystać tę podatność – o tym
traktuje niniejszy artykuł.

Początki Gadu – Gadu

Najpopularniejszy polski komunikator
internetowy, Gadu–Gadu, liczy sobie już ładne
parę lat – a dokładniej osiem. Za narodziny
Gadu–Gadu uważa się datę 15 sierpnia 2000
roku. Ceny połączeń internetowych w Polsce
spadają, Internet staje się medium dostępnym
niemal dla każdego. Ludzie zaczynają korzystać

KONRAD ZUWAŁA

Z ARTYKUŁU

DOWIESZ SIĘ

jak działa protokół Gadu–Gadu,

na czym polega obsługa

wyjątków w C++,

jak napisać exploit dla aplikacji

Gadu–Gadu.

CO POWINIENEŚ

WIEDZIEĆ

czym jest Gadu–Gadu,

znać podstawy programowania

w C/C++ i asemblerze,

na czym polega przepełnienie

bufora.

z możliwości komunikacyjnych, jakie zapewnia
im Sieć. Szybko jednak dostrzegają lukę – niszę,
którą wykorzystał właśnie komunikator GG. Otóż
brakuje im prostego, przejrzystego programu,
który umożliwiałby rozmowy ze znajomymi.
Program w dodatku powinien być bezpłatny.
Gadu–Gadu idealnie wpasowuje się w lukę,
komunikator lawinowo zyskuje popularność. Już
pierwszego tygodnia, gdy ukazał się on w Sieci,
pobrało go ponad dziesięć tysięcy osób – co
jest świetnym wynikiem, zważywszy, że był on
wtedy nikomu nie znanym, nowym programem.
Gadu–Gadu musiał walczyć o popularność,
a konkurencję miał silną. Nie brak w końcu
produktów zagranicznych, o ugruntowanej
już pozycji, w dodatku również dostępnych
bezpłatnie. Co jednak zadecydowało?

Gadu Gadu oferuje nam prosty, przejrzysty

interfejs. Pisanie i wysyłanie wiadomości nie
wymaga od użytkownika wiele wysiłku. Często
nie jest nawet konieczne używanie myszki
– wystarczy przysłowiowy Enter, aby wiadomość
trafiła do adresata. Okienko rozmowy jest
przejrzyste, a sam interfejs programu nie budzi
większych zastrzeżeń. No i przede wszystkim
program jest po polsku, co wtedy było nie lada
rarytasem – nie zapominajmy, że w 2000 roku
Internet w Polsce dopiero raczkował, niewiele
aplikacji było dostępnych w rodzimym języku.

Rosnąca popularność komunikatora niesie

ze sobą pewne problemy. Serwery często
bywają przeciążone bądź wręcz niedostępne.

Stopień trudności

Hakowanie

Gadu – Gadu

Gadu–Gadu to z pewnością najpopularniejszy w Polsce

komunikator internetowy. Niemal każdy kiedyś się z nim zetknął,

najczęściej aby porozmawiać ze znajomymi. Jednak nawet tak

popularna aplikacja nie ustrzeże się błędów – czy możemy czuć

się bezpieczni z Gadu–Gadu?

background image

31

HAKIN9

HAKOWANIE GADU – GADU

7-8/2008

Wiąże się to z trudnościami w połączeniu
i opóźnieniami w dostarczaniu
wiadomości. Problemy nasilają się wraz
ze wzrostem ilości użytkowników, który na
stronie producenta określony jest mianem
lawinowego. Trudności te nie stanowią
jednak dyskomfortu dla kolejnych rzesz
użytkowników. Ćwierć miliona, pół miliona,
milion – liczby zdają się nie mieć końca.
Aż dochodzimy do dnia dzisiejszego i
mamy niespełna (a może już ponad?)
sześć milionów wiernych użytkowników.

Możliwości komunikatora

Dzisiejsze komunikatory internetowe
oferują swoim użytkownikom znacznie
więcej aniżeli tylko możliwość rozmowy
tekstowej. Choć ta w Gadu–Gadu jest
niezwykle prosta – okienko jest schludne
i przejrzyste. Widać, do czego służy każdy
przycisk, nie ma większych problemów
z nawigacją wewnątrz programu. Można
pisać szybko i wygodnie – słowem
dokładnie tak, jak być powinno.

Rozmowa tekstowa to jednak nie

wszystko, na co pozwala nam ten
program. Jeśli ktoś nie lubi pisać, można
porozmawiać bez użycia klawiatury.
Rozmowy głosowe, bo o nich mowa,
są stosunkowo świeżym dodatkiem.
Dodatkowo możemy za pomocą połączeń
bezpośrednich przesyłać pliki zupełnie
tak, jak za pomocą programu P2P (ang.
peer to peer). Pliki graficzne możemy
wygodnie umieścić w okienku programu –
pod warunkiem, iż mają one odpowiedni
rozmiar, gdyż zbyt duża grafika nie może
zostać przesłana z użyciem serwera
(rozmowy na GG prowadzone są poprzez
serwer, który pośredniczy w konwersacji).

Ostatnią z wyraźnie rzucających się

w oczy funkcji jest możliwość słuchania
radia za pomocą komunikatora
– mamy do wyboru kilka kanałów,
każdy o innym profilu muzycznym,
co z pewnością zadowala wielu
wybrednych melomanów. Do dyspozycji
mamy jeszcze portal użytkowników i
pomoc techniczną. Jednym słowem
– pięknie. Czy komunikator ten nie
ma wad? Ma – chodzi oczywiście o
bezpieczeństwo. Nie jest to oczywiście
domena tylko tej aplikacji, albowiem
większość programów komputerowych,
które są dostępne na rynku, zawiera
jakieś błędy bezpieczeństwa. Są one

ustawicznie likwidowane przez twórców
oprogramowania, co powoduje, że rzadko
kiedy istnieje możliwość exploitacji danej
podatności. Jednak użytkownicy Gadu–
Gadu często zapominają o regularnej
aktualizacji posiadanego komunikatora
– przyczynia się do tego również brak
funkcji automatycznej aktualizacji,
która bez jakiejkolwiek ingerencji ze
strony użytkownika dokonywałaby
systematycznego uaktualnienia
najważniejszych komponentów programu.
A tak – musimy to zrobić sami,
pobierając najnowsza wersję ze strony
producenta.

Jest to tylko jedna z nielicznych wad

komunikatora, bo nie jest on od nich
niestety wolny. Przede wszystkim serwery
są często przeciążone, co powoduje
niekiedy niemożność podłączenia się
do sieci. Dodatkowo, w najnowszych
wersjach usunięto możliwość rozmowy
tekstowej z użyciem połączeń
bezpośrednich – sprawiając, iż cały ruch
sieciowy transferowany jest poprzez
dedykowane do tego serwery. Może to
budzić obawy niektórych użytkowników co
do poufności ich konwersacji.

Kryptografia również nie należy do

mocnych stron aplikacji. Ustawienie opcji
pozwalającej na zapamiętanie hasła w
programie, tak, aby logować się do sieci
bez jego podawania, jest dość ryzykowne.
Hasło jest bowiem przechowywane w
praktycznie niezaszyfrowanej postaci w
pliku na komputerze użytkownika. Gdy
jakaś niepowołana osoba uzyska dostęp
do zawartości naszego dysku twardego,
ma możliwość odszyfrowania takiego
hasła (w Sieci dostępnych jest wiele
programów, które służą do tego celu).

Sama rozmowa również nie jest

szyfrowana. Brak szyfrowania SSL, które
jest w dzisiejszych czasach standardem
poufności przesyłanej informacji, jest
poważną wadą. Umożliwia to bowiem
przechwycenie naszej rozmowy każdej
osobie, która umie obsługiwać program
sniffujący. A przecież narzędzi takich
nie brakuje – warto wspomnieć choćby
tcpdumpa, który jest chyba sztandarowym
narzędziem badającym ruch w sieci.
Pojawiły się nawet specjalistyczne sniffery,
których użycie nie wymaga większej
wiedzy. Nasłuchują one tylko na portach
obsługiwanych przez komunikator.

Pozwala to niemal każdemu oglądać treść
naszych rozmów.

Błąd, który odkryto w Gadu–Gadu,

pozwala na wykonanie dowolnego kodu
na komputerze ofiary. Zanim jednak
przejdziemy do jego omawiania, warto
zapoznać się z samym protokołem
używanym przez Gadu–Gadu – należy
wiedzieć, z czym mamy do czynienia.

Protokół Gadu – Gadu

Jak każda aplikacja działająca w
Internecie, Gadu–Gadu potrzebuje
jakiegoś protokołu, z pomocą którego
może przesyłać dane przez sieć. Warto
więc wiedzieć, jak wygląda ten protokół,
aby mieć ogólne pojęcie o działaniu
programu. Oczywiście nie będzie to
bardzo szczegółowy opis, jeśli jednak
Czytelnik jest takowym zainteresowany,
adres odpowiedniej witryny internetowej
znajduje się w Ramce W Sieci.

Gadu–Gadu korzysta z protokołu TCP/

IP. Jest to bowiem protokół gwarantujący
poprawność przesyłanych danych. A
przecież niezawodność i pewność, że

Rysunek 1.

Interfejs programu Gadu–

Gadu

background image

ATAK

32

HAKIN9 7-8/2008

HAKOWANIE GADU – GADU

33

HAKIN9

7-8/2008

wiadomość dotrze do odbiorcy jest
chyba najważniejszą cechą każdego
komunikatora.

Każdy pakiet wysyłany przez

komunikator zawiera dwa pola, które
zawsze znajdują się w tym samym
miejscu – na początku pakietu. Można
je zatem nazywać nagłówkiem, słowo to
doskonale bowiem oddaje charakter tych
danych. Pola te prezentuje Listing 1.

Nazwy zmiennych są chyba intuicyjne,

toteż nie jest potrzebne ich tłumaczenie
– typ to po prostu rodzaj pakietu, jaki
wysyłamy, natomiast dlugość to rozmiar
w bajtach pozostałej części pakietu (czyli
rozmiar pakietu bez rozmiaru nagłówka).

Ale zanim połączymy się z siecią

Gadu–Gadu i zaczniemy rozmawiać z
którymś z naszych znajomych, musimy
najpierw połączyć się z serwerem.
Serwerów jest jednak kilka, toteż musimy
w jakiś sposób otrzymać informacje, z
którym z nich mamy się połączyć. W tym
celu wysyłamy żądanie HTTP do strony
odpowiedzialnej za przydzielenie nam
serwera. Odpowiedni kod zaprezentowany
jest na Listingu 2.

Takiego połączenia możemy dokonać

za pomocą zwykłego programu, takiego
jak

telnet

czy

netcat

. Wystarczy, że

połączymy się na 80 porcie ze stroną

appmsg.gadu–gadu.pl

i prześlemy

odpowiednie żądanie – takie, jak na
Listingu 2. Wartości zapisane wielkimi
literami oznaczają zmienne przesyłane
do strony – są to kolejno: nasz numer
GG, wersja komunikatora,

FORMAT

określa sposób przesyłania wiadomości
(czy ma być to czysty tekst, czy też

użyty zostanie HTML),

MESSAGE

zaś to

numer wiadomości systemowej, jaką
otrzymaliśmy poprzednio od Gadu–Gadu,
gdy nawiązywaliśmy próbę połączenia.
Wreszcie

BROWSER

to wersja przeglądarki,

np.

Mozilla 4.0 (compatible; MSIE

5.0, Windows NT)

.

Strona zwróci nam adres IP serwera,

z którym mamy się połączyć, dodając
do tego numer wiadomości systemowej
(tej, którą podawaliśmy w żądaniu HTTP)
oraz port, na którym mamy dokonać
połączenia z serwerem (zwykle jest to
port 8074).

Teraz pora na zalogowanie się do

sieci GG. W tym celu serwer najpierw
wysyła do nas pakiet, liczbę całkowitą

int

, która jest zwana ziarnem. Ziarno

odpowiada za wygenerowanie skrótu
CRC hasła. Przed ziarnem otrzymujemy
jednak – na samym początku połączenia

– pakiet powitalny. Ilustruje to Listing 3.

Aby zalogować się do sieci, potrzebny

jest szereg informacji. Przede wszystkim
są to nasz numer GG oraz hasło.
Niezbędne będą również m.in. dane
dotyczące wersji używanego klienta.
I znów z pomocą przychodzi nam
odpowiednia struktura, która skupia
w sobie wszelkie dane wymagane do
zalogowania naszego klienta w sieci.
Prezentuje ją Listing 5.

Struktura Logowanie jest pakietem,

który należy wysłać do odpowiedniego
serwera – po to, by ten dopuścił
naszego klienta do działania w sieci
GG. Pierwsze pole, uin, to nic innego jak
używany przez nas numer Gadu–Gadu.
Dwa następne pola powiązane są z
hasłem – pierwsze,

hash _ typ

, to wybór

algorytmu szyfrowania hasła. Dostępne
są dwa algorytmy: CRC i SHA1. Algorytm

Listing 1.

Nagłówek Gadu–Gadu

struct

NaglowekGadu

{

int

typ

;

int

dlugosc

;

}

;

Listing 2.

Żądanie HTTP wysyłane do serwera przydzielającego adresy IP serwerów GG

GET

/

appsvc

/

appmsg4

.

asp

?

fmnumber

=

NUMBER

&

version

=

VERSION

&

fmt

=

FORMAT

&

lastmsg

=

MESSAGE

Accept

:

image

/

gif

,

image

/

jpeg

,

image

/

pjpeg

, ...

Accept

Language

:

pl

User

Agent

:

BROWSER

Pragma

:

no

cache

Host

:

appmsg

.

gadu

gadu

.

pl

Listing 3.

Inicjacja połączenia z serwerem GG

#define PAKIET_POWITALNY 0x0001

struct

Powitalna

{

int

ziarno

;

}

;

Listing 4.

Logowanie komunikatora do sieci

#define LOGUJ 0x0019

struct

Logowanie

{

int

uin

;

char

hash_typ

;

char

hash

[

64

];

int

status

;

int

wersja

;

char

nieznany1

;

int

lokalny_ip

;

short

lokalny_port

;

int

zewnetrzny_ip

;

short

port_zewnetrzny

;

char

rozmiar_obrazka

;

char

nieznany2

;

char

opis

[];

int

czas

;

}

;

Rysunek 2.

Okno rozmowy programu

Gadu–Gadu

background image

ATAK

32

HAKIN9 7-8/2008

HAKOWANIE GADU – GADU

33

HAKIN9

7-8/2008

CRC jest uważany za słabszy, albowiem
przy danym ziarnie (pakiet z serwera
będący liczbą całkowitą) możliwe jest
wygenerowanie tego samego hasha
dla dwóch różnych haseł. Prowadzi
to do możliwości zalogowania się z
czyjegoś numeru GG bez znajomości
jego hasła. Jest to jednak raczej kwestia
szczęścia i wielu godzin żmudnych analiz
generowanych hashy. Listing 6. można
potraktować jako ciekawostkę – jest na
nim przedstawiony algorytm generowania
hasha hasła CRC32. Następne pola, czyli
status oraz wersja oznaczają kolejno:

status ustawiany po połączeniu się z
serwerem (np. zaraz wracam) i wersję
używanego klienta GG. Pola nieznany1
i nieznany2 nie są jeszcze poznane.
Znaczenia reszty pól chyba nie trzeba
tłumaczyć, albowiem ich nazwy mówią
same za siebie.

Ostatnią rzeczą, którą przydałoby

się wiedzieć o protokole, jest sposób,
w jaki wysyłana jest wiadomość. W
końcu właśnie to jest najważniejsze
w komunikatorze internetowym, stąd
koniecznym jest poznanie tego procesu
od środka. W zrozumieniu organizacji

procesu wysyłania wiadomości pomoże z
pewnością struktura zaprezentowana na
Listingu 7.

Interesującym jest tylko pole

klasaWiadomosci – znaczenie
pozostałych jest raczej oczywiste. Klasa
wiadomości określa, czy wysyłana przez
nas wiadomość ma ukazać się w nowym,
czy też w istniejącym już okienku. Jest
to sposób, w jaki komunikator rozróżnia
sesje prowadzone w tym samym czasie
– dzięki czemu wie, kiedy inicjowana
jest nowa rozmowa, a kiedy informacja
dotyczy już istniejącej konwersacji.

Z naszego punktu widzenia

ważnym jest przesyłanie emotikonów.
Jak zatem odbywa się to w protokole
Gadu–Gadu? Emotikony są zwykłymi
plikami graficznymi (z rozszerzeniem gif).
Odpowiednie struktury odpowiedzialne za
przesyłanie obrazka zaprezentowane są
na Listingu 8.

Struktury te odpowiadają za

wyznaczenie parametrów przesyłanego
obrazka. Kolejne zmienne określają sumę
kontrolną i rozmiar obrazka. Obrazek
wysyłany w oknie komunikatora jest
traktowany jak specjalny tekst, albowiem
jest on de facto jednym z atrybutów
tekstu.

Co się dzieje, gdy przesyłane są

emotikony? Cóż, wszystko odbywa się
w ten sam sposób. Różnica polega na
tym, że nie przesyłamy obrazka, tylko jest
on wczytywany z dysku użytkownika. W

Listing 5.

Funkcja generująca hash hasła

int

hashHasla

(

unsigned

char

*

haslo

,

unsigned

int

ziarno

)

{

unsigned

int

x

,

y

,

z

;

y

=

ziarno

;

for

(

x

=

0

;

*

haslo

;

haslo

++)

{

x

=

(

x

&

0xffffff00

)

|

*

haslo

;

y

^

=

x

;

y

+=

x

;

x

<<=

8

;

y

^

=

x

;

x

<<=

8

;

y

=

x

;

x

<<=

8

;

y

^

=

x

;

z

=

y

&

0x1f

;

y

=

(

y

<<

z

)

|

(

y

>>

(

32

z

));

}

return

y

;

}

Listing 6.

Struktura odpowiadająca za wysyłanie wiadomości

#define GG_SEND_MSG 0x000b

struct

wiadomosc

{

int

numerOdbiorcy

;

int

sekwencja

;

int

klasaWiadomosci

;

char

tresc

[];

}

;

Listing 7.

Struktury odpowiedzialne za przesyłanie obrazków

struct

atrybutyTekstu

{

short

pozycja

;

char

czcionka

;

char

kolorCzcionki

[

3

];

struct

obrazekGG

image

;

}

;

struct

obrazekGG

{

short

nieznany1

;

int

rozmiar

;

int

sumaKontrolna

;

}

;

struct

odpowiedzObrazka

{

char

flaga

;

int

rozmiar

;

int

sumaKontrolna

;

char

nazwaPliku

[];

char

zawartoscObrazka

[];

}

;

Listing 8.

Fragment pliku emots.txt

":)"

,

"usmiech.gif"

,

"_usmiech.gif"

":>"

,

"ostr.gif"

,

"_ostr.gif"

":]"

,

"kwadr.gif"

,

"_kwadr.gif"

":("

,

"smutny.gif"

,

"_smutny.gif"

":|"

,

"yyyy.gif"

,

"_yyyy.gif"

"<uoee>"

,

"uoeee.gif"

,

"_uoeee.gif"

"<lol>"

,

"haha.gif"

,

"_haha.gif"

"<rotfl>"

,

"ROTFL.gif"

,

"_ROTFL.gif"

";)"

,

"oczko.gif"

,

"_oczko.gif"

":P"

,

"jezyk.gif"

,

"_jezyk.gif"

";P"

,

"jezyk_oko.gif"

,

"_jezyk_oko.gif"

"<radocha>"

,

"zacieszacz.gif"

,

"_

zacieszacz.gif"

"<luzik>"

,

"luzik.gif"

,

"_luzik.gif"

"<figielek>"

,

"figielek.gif"

,

"_figielek.gif"

"<milczek>"

,

"milczek.gif"

,

"_milczek.gif"

"<stres>"

,

"stres.gif"

,

"_stres.gif"

"<nerwus>"

,

"nerwus.gif"

,

"_nerwus.gif"

":["

,

"zly.gif"

,

"_zly.gif"

"<zalamka>"

,

"zalamka.gif"

,

"_zalamka.gif"

"<wnerw>"

,

"wnerw.gif"

,

"_wnerw.gif"

"<glupek>"

,

"glupek.gif"

,

"_glupek.gif"

background image

ATAK

34

HAKIN9 7-8/2008

tym celu skanowany jest odpowiedni plik,

emots.txt

, następnie w miejsce danego

ciągu znaków podstawiany jest obrazek.
Jednak kod odpowiedzialny za wykonanie
tych czynności jest błędny – nie
sprawdza on długości wczytywanych
łańcuchów. Wykorzystamy ten fakt w
naszym exploicie.

Skoro znamy podstawy protokołu,

wiemy jak wygląda logowanie do sieci i
wysyłanie wiadomości, czas zabrać się za
wykorzystanie tej wiedzy do zbudowania
exploita. Przyjrzyjmy się najpierw
błędom, jakie dotychczas pojawiały się w
komunikatorze.

Przegląd błędów

Gadu–Gadu, jak każdy program, nie jest
wolne od błędów. W tej części tekstu
przyjrzymy się niektórym z nich, aby lepiej
przygotować się do zbudowania exploita,
wykorzystującego najnowszy błąd odkryty
w popularnym komunikatorze.

Pierwszym z ataków, jakie omówimy,

będzie atak DoS na komunikator. Otóż,
w poprzednich wersjach komunikatora
możliwe było unieruchomienie
programu poprzez wysłanie specjalnie
spreparowanego obrazka. Gdy obrazek
zaczynał się od specjalnych słów, np.
AUX: , wywoływany był błąd jego obsługi,
co zawieszało cały wątek odpowiedzialny
za tę czynność. Mało tego, gdy nazwa
pliku graficznego zaczynała się od LPT:
, możliwe było przesłanie go do drukarki
użytkownika komunikatora – mało
śmieszny kawał.

Pozostaniemy ciągle przy

obrazkach. Gdy nazwa pliku obrazka
miała dostatecznie dużą długość,
możliwe było wykonanie ataku DoS
poprzez przepełnienie bufora zmiennej
obsługującej nazwy plików graficznych.
Jeśli długość nazwy pliku zawierała
się w przedziale od 192 do 200 bajtów

(jeden znak to jeden bajt), wywoływało
to przepełnienie bufora na stosie,
powodując błąd programu i jego
terminację.

Połączenia bezpośrednie również

były przyczyną powstania podatności
umożliwiającej atak DoS. Przesyłanie
specjalnie spreparowanych pakietów
mogło doprowadzić do konsumpcji
ogromnej ilości pamięci przez program
kliencki, co w konsekwencji mogło
zmusić użytkownika nawet do restartu
systemu. Brak pamięci powodował
bowiem znaczne zwolnienie działania
komputera, praca na nim stawała
się więc niezwykle mało komfortowa.
Mamy więc do czynienia z atakiem typu
Denial of Service, którego celem jest
unieruchomienie maszyny ofiary, bądź
przynajmniej części oprogramowania na
niej działającego.

Ostatnim błędem, o którym

wspomnimy, była luka wynikająca z
rejestracji rozszerzenia gg: w systemie.
Gdy użytkownik wchodził na stronę
internetową, na której znajdowały
się odnośniki w rodzaju gg:1234567,
wszystko było w porządku. Sprawa
zaczynała się nieco komplikować, gdy po
literach gg: znajdowało się coś zupełnie
innego, aniżeli poprawny identyfikator.
Mogło to doprowadzić nawet do utraty
plików konfiguracyjnych komunikatora

– co zapewne nie należało do
najprzyjemniejszych doświadczeń.

Jak widać, najczęściej błędy

komunikatora umożliwiały atak typu
DoS. Zabicie procesu komunikatora czy
unieruchomienie systemu były tym, co
mogło spotkać użytkownika Gadu–Gadu.
Błąd, który opiszemy w dalszej części
artykułu, pozwala na coś znacznie
więcej: możemy wykonać dowolny kod na
komputerze ofiary, czyli przejąć nad nim
pełną kontrolę. Jest to więc podatność
o wiele groźniejsza aniżeli te, które
dotychczas odnajdowano w programie
klienckim.

Emitokony – exploit

dla Gadu – Gadu

Skończmy wreszcie z tą aurą tajemnicy.
Mamy już odpowiednie przygotowanie
teoretyczne, zajmijmy się zatem
budowaniem właściwego exploita dla
Gadu–Gadu.

Błąd, który umożliwia wykonanie

zdalnego kodu, związany jest z
emotikonami. Przyjrzymy się zatem
strukturze plików komunikatora (Rysunek 4).

Dla nas szczególnie interesujące

będą katalogi zawierające emotikony.
Czym są emotikony? Otóż, gdy
rozmawiamy z użyciem Gadu–Gadu,
możliwe jest używanie animowanych
minek w okienku rozmowy. Są to właśnie

Rysunek 4.

Struktura pików komunikatora – plik emots.txt

Rysunek 3.

Ryzykowne zapamiętanie

hasła w programie

background image

HAKOWANIE GADU – GADU

35

HAKIN9

7-8/2008

emotikony. Odpowiednia kombinacja
znaków, na przykład buźki :) czy :
P
, powoduje wczytanie określonego
pliku graficznego i wstawienie go do
okna rozmowy. Plik ten jest animacją
GIF, zawierającą treść adekwatną
do wpisanego ciągu znaków, np.
uśmiechającą się twarz.

Dla nas istotną kwestią jest to,

skąd komunikator umie powiązać plik z
konkretnym ciągiem znaków. Słowem,
skąd wie, że :) to uśmieszek, a ;( to płacz.
W tym celu w katalogach zawierających
animacje GIF z emotikonami
umieszczono plik tekstowy, nazwany
emots.txt. Zawartość pliku przedstawiona
jest na Listingu 9.

Jak widać na Listingu 9, każdemu

specjalnemu ciągowi znaków
przypisywana jest konkretna nazwa
pliku, co powoduje wstawienie go w
miejsce tegoż ciągu w oknie rozmowy
komunikatora.

Na czym polega błąd? Otóż, wstawiając

odpowiedni ciąg znaków do pliku emots.txt,
możemy dokonać przepełnienia bufora.
Funkcja, która kopiuje dane z tego pliku, nie
sprawdza długości pobieranych łańcuchów.
Powoduje to możliwość przepełnienia
bufora na stosie. Nie będzie to jednak
klasyczne przepełnienie bufora – nie
nadpiszemy bowiem adresu powrotu
z funkcji. Nasze wysiłki skupią się na
nadpisaniu struktury SEH (ang. Structured
Exception Handling
, Strukturalna Obsługa

Wyjątków). Otóż, gdy w Gadu–Gadu
wystąpi błąd, zgłaszany jest wyjątek. Wyjątki
charakteryzują się tym, że trzeba je w jakiś
sposób obsłużyć – napisać odpowiedni
kod, odpowiedzialny za wykonanie
działania mającego na celu wyjście z
awaryjnej sytuacji, jaką jest niepoprawne
zachowanie się programu. Musimy więc
przyjrzeć się strukturze obsługi wyjątków,
ona bowiem będzie naszym celem. Należy
nadpisać kod funkcji obsługującej wyjątki.
Konsekwencją tego będzie możliwość
wykonania ataku DoS lub, co jest bardziej
wyrafinowaną metodą, wykonanie
dowolnego kodu na maszynie ofiary.

SEH – obsługa wyjątków

Język C cechuje dość poważna wada. Ma
on problemy z obsługą wyjątków. Tworząc
procedury obsługujące wyjątki sprawiamy,
iż nasz kod jest mało przejrzysty. Jak
bowiem obsłużyć niepoprawne zachowanie
funkcji w języku C? Sposobów na to nie
mamy zbyt wiele. W zasadzie są trzy
główne techniki, które można nazwać jakąś
obsługą sytuacji awaryjnych.

Pierwszym, i chyba

najpopularniejszym, sposobem jest
zwracanie odpowiedniej wartości przez
funkcję. Wyobraźmy sobie funkcję, której
zadaniem jest dzielenie liczb. Niech
funkcja wygląda następująco:

double dzielenie(double liczba1,

double liczba2)

Funkcja dzieli

liczbę1

przez

liczbę2

,

zwracając wynik takiej operacji. Ale co
zrobimy w przypadku, gdy użytkownik
wprowadzi niepoprawne dane? Na
przykład liczba2 będzie zerem. Jak wiemy
z matematyki, dzielenie przez zero jest
niemożliwe (wynik takiej operacji będzie
dążył do nieskończoności, jednak dla liczb
doskonale bliskich zeru, nie będących
zerem). Co wtedy? Gdy nie przewidzimy
takiej sytuacji, program może ulec
zawieszeniu, może wygenerować błąd
systemowy i zostać zakończonym. Musimy
więc przygotować jakąś obsługę tego
kodu. W języku C moglibyśmy zrobić to na
trzy sposoby:

• sprawdzamy, czy dzielnik nie jest

zerem, jeśli tak – to generujemy
odpowiedni komunikat,
implementujemy odpowiednie
zachowanie funkcji, bądź po prostu
zwracamy odpowiednią wartość;

• jeśli dzielnik jest zerem, możemy ustawić

globalną zmienną odpowiedzialną za
kod błędu, następnie w dalszej części
programu dokonamy jej sprawdzenia;

• najbardziej wyrafinowanym

sposobem jest użycie funkcji

setjmp()

i

longjmp()

. Funkcje te

powodują kolejno: zapisanie stanu
komputera w specjalnym buforze
(zapisywane są rejestry, zawartość
stosu, wskaźnik stosu – słowem
stan programu z danego momentu

R

E

K

L

A

M

A

background image

ATAK

36

HAKIN9 7-8/2008

HAKOWANIE GADU – GADU

37

HAKIN9

7-8/2008

wykonywania) oraz przeniesie
programu w poprzedni (zapisany)
stan. Zatem jeśli dzielnik jest zerem,
możemy przenieść program w
stan sprzed podania niepoprawnej
wartości zmiennej, dając tym
samym użytkownikowi możliwość
jej ponownego, poprawnego już
podania;

• w celu obsługi błędu możemy

użyć jeszcze biblioteki sygnałów.
Gdy program napotka określoną
sytuację (np. dzielnik jest zerem),
generuje sygnał, który jest następnie
obsługiwany przez odpowiednią
funkcję. Jednak w dużych projektach
jest to rozwiązanie mało komfortowe,
ponieważ numery sygnałów (każde
zdarzenie generuje sygnał o
określonym numerze) mogą się ze
sobą pokrywać, wprowadzając tym
samym chaos do projektu.

Wyraźnie widać, że w tej kwestii język C
jest wysoce niedoskonały. Język C++
to swoisty krok do przodu w stosunku
do C, toteż likwiduje ten problem,
wprowadzając obsługę wyjątków. Jak
mówi sama nazwa – SEH – tworzona
jest odpowiednia struktura/klasa, która
jest odpowiedzialna za obsługę wyjątków.

Zawiera ona niezbędne informacje
dotyczące konkretnego błędu. Gdy
występuje błąd, opisany w strukturze
wyjątek jest wyrzucany (ang. throw) i
następnie przechwytywany (ang. catch)
przez odpowiednią procedurę obsługi
wyjątków.

Mechanizm ten jest użyty w

komunikatorze Gadu–Gadu. Gdy coś
pójdzie nie tak, generowany jest wyjątek,
który następnie przejmowany jest przez
odpowiednią funkcję. Ta, po określeniu
typu błędu, ma za zadanie wykonać
odpowiednie działania. Co się jednak
stanie, gdy nadpiszemy tę funkcję i
wywołamy wyjątek? No właśnie, tu
otwierają się dla nas różne możliwości...

Budujemy exploit

Nasz exploit powinien wykonywać kod na
komputerze ofiary. W tym celu musimy
podmienić plik zawierający emotikony i
czekać, aż ofiara użyje odpowiedniego
emotikona. Jak to zrobimy – zależy
tylko od nas. Możemy namówić
użytkownika do ściągnięcia pliku,
zaproponować nowy zestaw emotikon.
Z pewnością, aby namówić ofiarę do
wykorzystania dostarczonego przez
nas pliku, przydatne będą umiejętności
socjotechniczne.

Zajmijmy się teraz stroną techniczną

exploita. Na Listingu 10. widzimy kod, w
którym znaleziono błąd. Wyraźnie widać,
że występują tam pętle kopiujące dane
do bufora. Nie jest jednak sprawdzana
długość kopiowanych łańcuchów.
To otwiera nam pierwszą możliwość

– możemy wykonać atak typu DoS.
Zamieniając ciąg _usmiech.gif na
1080 liter A, możliwe jest zmuszenie
programu do wygenerowania
komunikatu o błędzie i zakończenia
działania. Dzieje się tak, ponieważ
zawartość pliku jest przepisywana do
odpowiedniego miejsca w pamięci, bez
uprzedniej weryfikacji rozmiaru danych.
Nadpisujemy tym samym procedury
obsługi wyjątków, powodując przerwanie
działania aplikacji i wygenerowanie
komunikatu o błędzie.

Zwykle w takiej sytuacji nasuwa się

pomysł na przepełnienie bufora metodą
nadpisania adresu powrotu z funkcji.
W tym przypadku nie jest to jednak
możliwe. Dlaczego? Otóż Gadu–Gadu
używa zaawansowanej obsługi wyjątków.
Gdy chcemy nadpisać adres powrotu
z funkcji, nadpisujemy przy tym wiele
różnych zmiennych, co powoduje w tym
przypadku wyrzucenie wyjątku. Jest to
zaś niczym innym, jak przekazaniem
sterowania nad programem do innej jego
części. Nasz kod jest więc omijany i nie
zostaje wykonany. Proste, acz skuteczne
zabezpieczenie.

Musimy więc stworzyć takiego

exploita, aby nie nadpisywał adresu
powrotnego z funkcji. Musi być bardziej
wyrafinowany – jego celem powinna stać
się SEH – struktura odpowiedzialna za
obsługę wyjątków. Tylko w ten sposób
możemy zmusić program do wykonania
naszego kodu.

Dysponujemy odpowiednią ilością

danych do zbudowania exploita.

Listing 9.

Wadliwy kod –

przepełniamy bufor

.

text

:

00443E37

loc_443E37

:

.

text

:

00443E37

cmp

al

, '

"'

.text:00443E39 jz short loc_443E48
.text:00443E3B mov [ecx], al.
.text:00443E3D inc ecx
.text:00443E3E inc edi
.text:00443E3F mov [ebp–18h], edi
.text:00443E42
.text:00443E42 loc_443E42:
.text:00443E42 mov al, [edi]
.text:00443E44 cmp al, ' '
.text:00443E46 jnb short loc_443E37
(…)
.text:00443E87 loc_443E87:
.text:00443E87 cmp cl, '"

'

.

text

:

00443

E8A

jz

short

loc_443E9F

.

text

:

00443

E8C

mov

[

eax

]

,

cl

.

text

:

00443

E8E

inc

eax

.

text

:

00443E8F

inc

edi

.

text

:

00443E90

.

text

:

00443E90

loc_443E90

:

.

text

:

00443E90

mov

cl

,

[

edi

]

.

text

:

00443E92

cmp

cl

, ' '

.

text

:

00443E95

mov

[

ebp

–18

h

]

,

edi

.

text

:

00443E98

jnb

short

loc_443E87

Rysunek 5.

Emotikony

background image

ATAK

36

HAKIN9 7-8/2008

HAKOWANIE GADU – GADU

37

HAKIN9

7-8/2008

Możemy wywołać wyjątek w programie,
a następnie nadpisać procedurę jego
obsługi. Zlokalizowanie procedury obsługi
wyjątków nie jest trudne – debugger
wyraźnie pokazuje jej lokalizację pod
adresem w pamięci

fs:[0]

, czyli

0x0032FCA8

. Bufor zaczyna się pod

adresem

0x0032F868

. Różnica tych

dwóch wartości daje nam dokładnie
1088 bajtów. Nasz plik winien więc
wyglądać następująco:

• buźka, np. „:)”,
• „1095 liter A”,
• „szelkod”.

Dlaczego 1095 liter A, skoro różnica
wyniosła tylko 1088 bajtów? Cóż, po
prostu musimy zacząć nadpisywanie
struktury od pewnego jej miejsca, nie od
samego początku. Stąd wynika, iż 1088
liter to za mało – testy autorów exploita
(www.vexillium.org) wykazały, iż właśnie ta
wartość jest odpowiednia.

Prowadząc dalszą analizę możemy

się przekonać, że to jeszcze nie wszystko.
Program nie wywołał wyjątku – nie
pokazało się okienko z błędem. Autorzy
zauważyli, iż wynika to z działania
systemu operacyjnego. Nie każdy uchwyt
procesu, który ustawimy, jest przez niego
wywoływany. Do sprawdzenia, czy dany
uchwyt może być wywołany, służy funkcja

RtlIsValidHandler()

, znajdująca się

w bibliotece

ntdll.dll

. Sprawdza ona

poprawność adresów, zapewniając
niejakie zabezpieczenie przed wykonaniem
niewłaściwego kodu. Jeśli wartość rejestru
AL po wywołaniu tej funkcji wynosi 1,
wtedy kod może zostać uruchomiony
– adres jest poprawny i instrukcje pod nim
zamieszczone są dozwolone do wykonania.
Musimy więc, po każdym wywołaniu tej
funkcji, zmienić wartość rejestru AL na 1
– tak, aby możliwe było wykonanie naszego
szelkodu.

Podsumujmy więc posiadane

informacje. Musimy stworzyć ciąg

ponad tysiąca liter A, wstawić tam adres
w pamięci, pod który przekierujemy
wykonanie programu oraz umieścić
szelkod. Adres ten powinien byś jakimś
adresem, z którego korzysta Gadu–
Gadu. Może to być na przykład funkcja
znajdująca się w jednej z bibliotek, z
których korzysta aplikacja. Pozwoli to na
poprawne przejście przez sito funkcji

RtlIsValidHandler()

, ustawiając

wartość rejestru AL procesora na 1
– wszystko wyglądać będzie na poprawny
kod. Autorzy exploita proponują użyć
w tym celu biblioteki

LIBEAY32.dll

.

Tworzymy więc szelkod i konstruujemy
odpowiednio exploit. Gotowy plik

emots.txt

powinien zatem wyglądać

następująco:

• :)
• 967 liter A,
• szelkod,
• 37 bajtów danych,

instrukcja przeskakująca do adresu w
pamięci, pod którym będzie znajdować
się szelkod (czyli adres początku
bufora+967),

• adres kodu w bibliotece LIBEAY32.DLL

– aby wszystko się wykonało,

• jakieś dane.

Stronę autora exploita oraz dokładny opis
procesu znajdowania błędu i budowania
exploita możemy znaleźć w Ramce W
Sieci.

Podsumowanie

Gadu–Gadu, najpopularniejszy polski
komunikator internetowy, nie jest
pozbawiony wad. Wystarczy przekonać
naiwnego użytkownika do stworzenia
nowego folderu z emotikonami i
umieszczenia w nim pliku

emots.txt

z exploitem. Należy jednak pamiętać,
że stałe, systematyczne aktualizowanie
programu ustrzeże Czytelnika przed tego
typu atakami.

Rysunek 6.

Gadu–Gadu pod debuggerem

W Sieci

http://vexillium.org – strona autora exploita, doskonale tłumacząca zasadę jego działania,
http://gadu–gadu.pl – strona domowa komunikatora Gadu–Gadu,
http://ekg.chmurka.net/docs/protocol.html – szczegółowy opis protokołu Gadu–Gadu,
http://msdn2.microsoft.com/en–us/library/ms680657(VS.85).aspx – opis SEH.

Konrad Zuwała

Autor zajmuje się bezpieczeństwem aplikacji

internetowych oraz szeroko rozumianą ochroną

systemów komputerowych. W wolnych chwilach

programuje (głównie C/C++, PHP) oraz zarządza

portalem internetowym.

Kontakt z autorem: kzuwala@poczta.onet.pl

background image

38

HAKIN9

ATAK

7-8/2008

W

pierwszej części artykułu,
opublikowanej w Hakin9 5/2008,
opisałem podstawową strukturę pliku

graficznego GIF oraz omówiłem kompresję
LZW. Niniejsza – druga – część artykułu
poświęcona będzie rozszerzeniom formatu
GIF (takim, jak animacja, komentarze czy
wreszcie rozszerzenia aplikacji), miejscom,
w których można ukryć/szukać dodatkowych
danych oraz możliwym do popełnienia podczas
implementacji błędom.

Przed przystąpieniem do lektury warto

przypomnieć sobie ogólną budowę formatu
GIF, podział na części oraz podział danych
na fragmenty – data Sub-blocks (w tym celu
można posłużyć się na przykład poprzednią
częścią artykułu lub sięgnąć do opisu
standardu GIF [1]).

Animowane GIFy

Plik GIF nawet bez korzystania z rozszerzeń
oferuje możliwość zapisania więcej niż jednej
klatki obrazu – w takim przypadku wszystkie
klatki są używane do stworzenia jednej wynikowej
grafiki. Standard 89a wprowadził dodatkową
strukturę – blok kontroli grafiki (ang. Graphic
Control Extension
, GCE), który zawiera dodatkowe
informacje umożliwiające stworzenie z serii
klatek faktycznej animacji. Blok zawiera między
innymi takie informacje, jak wielkość opóźnienia
przed wyświetleniem następnej klatki czy sposób
przejścia do następnej klatki.

MICHAŁ „GYNVAEL

COLDWIND”

SKŁADNIKIEWICZ

Z ARTYKUŁU

DOWIESZ SIĘ

jakie rozszerzenia zostały

wprowadzone do formatu GIF w

wersji 89a,

na co uważać podczas

implementowania rozszerzeń

formatu GIF,

gdzie szukać błędów w

aplikacjach korzystających z GIF,

gdzie ukryć lub szukać ukrytych

danych w plikach GIF.

CO POWINIENEŚ

WIEDZIEĆ

mieć ogólne pojęcie na temat

plików binarnych,

mieć ogólne pojęcie na temat

bitmap,

mieć pojęcie o plikach GIF.

Według dokumentacji jeden taki blok może

(ale nie musi) poprzedzać dane obrazu (a
konkretniej nagłówek Image Descriptor) lub
rozszerzenie zwykłego tekstu (ang. Plain Text
Extension
). Dany blok ma zasięg lokalny, czyli
wpływa jedynie na następującą po nim klatkę
animacji.

Znaczna część pól w strukturze GCE

(patrz Tabela 1) ma stałą, ustaloną z góry,
wartość. Wyjątkami są pola DisposalMethod,
UserInputFlag, TransparentColorFlag,
DelayTime oraz TransparentColorIndex. Pole
DisposalMethod (metoda usunięcia) określa, w
jaki sposób dana klatka ma zostać skasowana
przed narysowaniem następnej. Dostępne są 4
opcje:

• [0] – Nieokreślona metoda usunięcia

(zazwyczaj równoważna z opcją 1),

• [1] – Nie usuwaj (następna klatka zostanie

wyrysowana na obecnej),

• [2] – Wypełnij obraz kolorem tła,
• [3] – Powróć do poprzedniego obrazu.

Dokumentacja zaleca, aby opcji trzeciej używać
jedynie w przypadku niewielkich fragmentów
obrazu (z uwagi na subiektywnie wysokie zużycie
pamięci – chociaż dla obecnych komputerów nie
stanowi to problemu), a w razie, gdyby dekoder
nie potrafił poradzić sobie z przywróceniem
poprzedniego obrazu, dopuszczalne jest
wypełnienie obrazu kolorem tła.

Stopień trudności

Format GIF

okiem hakera

Format GIF, oprócz podstawowej funkcjonalności oferowanej

przez wszystkie standardowe formaty graficzne, udostępnia

również kilka rozszerzeń umożliwiających stworzenie animacji czy

też dodanie komentarza do grafiki.

background image

39

HAKIN9

FORMAT GIF OKIEM HAKERA

7-8/2008

Pozostałe opcje (4-7) są

zarezerwowane do przyszłego użytku
– ale w praktyce różne dekodery
(przy testach zostały wykorzystane: FF
– Mozilla Firefox 2.0.0.14, O – Opera 9.24,
S – Safari 3.1 (525.13), IE – Microsoft
Internet Explorer 7.0.6000.16643, IV
– IrfanView 4.10) już je implementują, i to
w odmienny sposób:

• [4] – IE, IV i FF traktują jako powrót do

poprzedniego obrazu, O i S jako nie
usuwaj
,

• [5] – IE i IV traktują jako powrót do

poprzedniego obrazu, a FF, O, S jako
nie usuwaj,

• [6] – IE i IV traktują jako powrót do

poprzedniego obrazu, FF jako nie
usuwaj
, a O i S jako wypełnij obraz
kolorem tła
,

• [7] – IE, IV, S i O traktują jako powrót

do poprzedniego obrazu, a FF jako nie
usuwaj
.

Jak widać, nie ma w dekoderach zgody
co do tego, jak traktować metody
niezdefiniowane przez dokumentację.
IE oraz IV są zgodne, iż wszystkie
niestandardowe wartości powinny być
traktowane jako powrót do poprzedniego
obrazu, natomiast pozostałe dekodery
nie mają jednego określonego zdania.
Różnice te teoretycznie pozwalają na
stworzenie GIFa, który wyglądać będzie
inaczej w każdej z wspomnianych
przeglądarek graficznych czy
internetowych.

Należy jeszcze dodać, iż Safari ma

poważne problemy wydajnościowe
w przypadku opcji nie usuwaj – dla

porównania, testowy GIF (50 klatek
256x256) na Firefoksie renderował
się około 5 sekund, natomiast Safari
poświęciło na niego prawie 3 minuty,
dodatkowo każda kolejna klatka
renderowała się dłużej od poprzedniej,
a przeglądarka odpowiadała na
polecenia użytkownika tylko pomiędzy
klatkami. Końcowe klatki renderowały
się około 20 sekund, więc możliwe
jest przeprowadzenie skutecznego
ataku DoS przy pomocy odpowiednio
spreparowanej strony WWW (test został
wykonany na komputerze Intel Core 2
Quad 2.4GHz z 4GB RAM).

Pole TransparentColorFlag

(flaga przezroczystości) oraz
TransparentColorIndex (numer
przezroczystego koloru) odpowiedzialne
są oczywiście za istnienie i wybór koloru,
który będzie uznany za przezroczysty
– czyli oznaczał piksele nie narysowane,
pod którymi prześwitywać będzie
poprzednia zawartość bufora. Warto
zaznaczyć, iż jeżeli flaga przezroczystości
jest wygaszona (tj. równa 0), to pole
TransparentColorIndex może zostać
przeznaczone na przechowanie
dowolnego bajtu danych.

Pole DelayTime (opóźnienie) jest

informacją o wielkości opóźnienia (w
setnych sekundy) przed wyświetleniem
kolejnej klatki. Ostatnie pole (a w zasadzie
flaga) – UserInputFlag – określa, czy
dekoder powinien zaczekać na interakcję
z użytkownikiem (pojęcie to nie jest
definiowane przez dokumentację, tak
więc interakcją z użytkownikiem może
być dowolne zdarzenie uznane za
takowe przez dekoder, np. naciśnięcie

przycisku myszy lub dowolnego
klawisza). W przypadku, gdy flaga jest
aktywna oraz gdy ustawiony jest czas
opóźnienia (tj. jest niezerowy), dekoder
powinien zaprezentować kolejną klatkę
po odczekaniu wskazanego czasu lub
po zaistnieniu określonego zdarzenia. W
praktyce wszystkie z testowanych przeze
mnie dekoderów ignorowały tę flagę i nie
czekały na interakcję.

Dodatkowe dane mogą zostać

przechowane w polu Reserved, które
zazwyczaj nie jest kontrolowane przez
dekodery.

Warto zaznaczyć, iż w praktyce

możliwe jest wielokrotne umieszczenie
struktury GCE przed danymi.
Wszystkie testowane dekodery traktują
wtedy ostatnią strukturę GCE jako
obowiązującą, a resztę ignorują – jest to
więc całkiem niezłe miejsce na ukrycie
dodatkowych informacji.

Dodatkowo, programista może

popełnić ewentualny błąd zakładając, iż
BlockSize będzie na pewno równe 4 i
jednocześnie korzystając z niego w celu
załadowania danych do statycznego
bufora – taka sytuacja prowadzi w
prostej linii do przepełnienia bufora. W
praktyce większość dekoderów wymaga,
aby BlockSize był rzeczywiście równy 4
(jest to sprawdzane, w przypadku innej
wartości dekoder przerywa pracę).

Rozszerzenie Netscape

W GCE zabrakło informacji o tym,
czy animacja jest jednorazowa,
czy też powinna być zapętlona w
nieskończoność. W tym celu powstało
rozszerzenie aplikacji NETSCAPE2.0
(jego obsługa została wprowadzona
w Netscape Navigator 2.0 Beta 4),
którego pole NumberOfIterations (patrz
Tabela 2) określa, czy aplikacja powinna
animować GIF w nieskończoność
(wartość 0), czy zaprzestać po określonej

Tabela 1.

Struktura Graphic Control Extension

Typ i nazwa pola

Opis

BYTE ExtensionIntroducer

Znacznik rozszerzenia, zawsze 0x21

BYTE GraphicControlLabel

Rodzaj rozszerzenia, zawsze 0xF9

BYTE BlockSize

Wielkość następującego bloku danych, zawsze 4

BYTE Reserved:3

Zarezerwowane

BYTE DisposalMethod:3

Metoda usunięcia klatki

BYTE UserInputFlag:1

Flaga oczekiwania na interakcje

BYTE TransparentColorFlag:1

Flaga przezroczystości

WORD DelayTime

Czas opóźnienia

BYTE TransparentColorIndex

Numer koloru przezroczystego

BYTE BlockTerminator

Terminator bloku, zawsze 0

Rysunek 1.

Artystyczna wizja własnej

interpretacji GIF przez różne przeglądarki

background image

ATAK

40

HAKIN9 7-8/2008

FORMAT GIF OKIEM HAKERA

41

HAKIN9

7-8/2008

liczbie przebiegów. Co ciekawe,
NN 2.0 Beta 4 uznawała wszystkie
animacje posiadające niniejszą
strukturę jako mające się wykonywać w
nieskończoność, bez względu na wartość
pola NumberOfIterations ; zostało to
poprawione w wersji Beta 5. Animacja
nie posiadająca tej struktury (która
powinna się znajdować zaraz za GCT)
jest traktowana przez dekodery wedle
uznania – zazwyczaj jako animacja,
którą powinno odegrać się raz (IE, FF,
O, S). Istnieją jednak dekodery (IV),
które uznają, iż animacja powinna być
odgrywana w nieskończoność.

Niektóre dekodery (np. IE i FF)

wyświetlają klatki animacji również
podczas ładowania GIFa. To wyświetlenie
nie jest przez nie zaliczane jako
faktyczne wyświetlenie animacji, przez
co efektywnie animacja wyświetlana jest
o jeden raz więcej. IrfanView natomiast
ignoruje nagłówek całkowicie.

Pole One powinno mieć zawsze

wartość 1, natomiast nie wszystkie
dekodery je testują. Ze sprawdzonych
dekoderów jedynie Firefox zwrócił uwagę
na jego zmianę – jest to więc miejsce, w
którym można ukryć bajt danych.

Kolejną możliwą modyfikacją jest

powiększenie bloku zawierającego
wartość Magic. Dekodery zawarte
w IE oraz FF nie zwróciły uwagi na
zmianę (powstało trochę miejsca
do umieszczenia danych), natomiast
dekoder zawarty w Operze uznał, iż
animację należy odtworzyć jedynie raz,
a dekoder z Safari – że animację należy
odtwarzać w nieskończoność.

W przypadku zwiększenia drugiego

sub-bloku danych jedynie Opera
zareagowała identycznie, jak poprzednim
razem, reszta dekoderów zignorowała
zmianę i zachowała się tak, jak gdyby
otrzymała prawidłowo wypełniony
nagłówek.

Analogicznie, jak w poprzednim

przypadku, programista powinien zwrócić
uwagę na możliwość wystąpienia
przepełnienia bufora.

Komentarze

Struktura komentarzy (ang. Comment
Extension
, CE) jest bardzo prosta (co
pokazuje Tabela 3) – składa się ze
stałego nagłówka komentarzy, po nim
następuje seria sub-bloków z danymi
(dla przypomnienia: każdy sub-blok
składa się z bajtu określającego
wielkość danych w bajtach oraz
odpowiednią ilość bajtów danych)
i wreszcie sub-blok terminujący (z
wielkością danych równą 0).

Komentarze z plików GIF wyświetlają

jedynie nieliczne aplikacje, większość
dekoderów je ignoruje.

Głównym błędem, jaki można

popełnić podczas obsługi komentarzy
GIF, jest brak sprawdzania, co komentarz
faktycznie zawiera – czy nie znajdują
się w nim znaki specjalne (np. końca
linii, terminatora tekstu) lub specjalnych
sekwencji. Tego typu błąd został
znaleziony w roku 2001 w przeglądarce
Netscape Navigator przez Floriana
Wescha i umożliwiał umieszczenie kodu
JavaScript wewnątrz komentarza. Skrypt
ten zostałby wykonany w momencie
wyświetlenia pliku GIF (NN wyświetlał
również komentarze) przez przeglądarkę,
np. w wyniku wejścia przez użytkownika
na daną stronę WWW.

Programista może łatwo przeoczyć

także inny błąd, zakładając podczas
implementacji obsługi komentarzy, iż
komentarz nie będzie większy od jednego
sub-bloku (czyli nie będzie przekraczał
255 znaków) – takie założenie może
doprowadzić do przepełnienia bufora.

Plik GIF może zawierać dowolną ilość

struktur CE.

Rozszerzenie Plain Text

Ostatnim rozszerzeniem GIF jest Plain
Text Extension
– rozszerzenie teoretycznie
umożliwiające zapisanie tekstu na
bitmapie jako faktycznego tekstu, a nie
serii pikseli. W takim wypadku dekoder
byłby odpowiedzialny za prawidłowe
wyrysowanie tekstu na wynikowej bitmapie.
Niestety, w praktyce okazuje się, iż
żaden z przetestowanych dekoderów nie
miał zaimplementowanej obsługi tego
rozszerzenia.

Co więcej, w kilku artykułach, na które

natknąłem się podczas badań, autorzy
sugerują, iż jest to martwe rozszerzenie
i powinno zostać zignorowane przez
programistę.

Niemniej jednak z uwagi na

możliwość przyszłego pojawienia się
tego typu dekoderów, lub pojawienia się
potrzeby zaimplementowania takiego

Tabela 2.

Struktura NETSCAPE2.0

Typ i nazwa pola

Opis

BYTE

ExtensionIntroducer

Znacznik rozszerzenia, zawsze 0x21

BYTE ApplicationExtensi

onLabel

Rodzaj rozszerzenia, zawsze 0xFF

BYTE BlockSize1

Długość sub-bloku danych, zawsze 0x0B

BYTE Magic[11]

Zawsze „NETSCAPE2.0”

BYTE BlockSize2

Długość sub-bloku danych, zawsze 0x03

BYTE One

Zawsze 0x01

WORD

NumberOfIterations

Ilość powtórzeń animacji

BYTE BlockTerminator

Terminator bloku, zawsze 0

Tabela 3.

Struktura Comment Extension

Typ i nazwa pola

Opis

BYTE ExtensionIntroducer

Znacznik rozszerzenia, zawsze 0x21

BYTE CommentLabel

Rodzaj rozszerzenia, zawsze 0xFE

SubBlock CommentData[]

Jeden lub więcej sub-bloków danych

BYTE BlockTerminator

Terminator bloku, zawsze 0

W Sieci

http://www.w3.org/Graphics/GIF/spec-

gif89a.txt – standard GIF89a.

background image

ATAK

40

HAKIN9 7-8/2008

FORMAT GIF OKIEM HAKERA

41

HAKIN9

7-8/2008

dekodera, postanowiłem omówić również
i to rozszerzenie.

Rozszerzenie PTE opiera się o

koncept stary jak świat znany z konsoli
poleceń – stałą wielkość pojedynczego
znaku oraz podzielenie ekranu na siatkę
o stałej całkowitej rozdzielczości. W
strukturze PTE podaje się takie informacje
jak początek siatki (położenie lewego
górnego rogu) – pola TextGridLeftPosition
oraz TextGridTopPosition (siatka
w cale nie musi się zaczynać na
0,0!), szerokość i wysokość siatki
– pola TextGridWidth i TextGridHeight,
szerokość i wysokość pojedynczego
znaku – pola CharacterCellWidth oraz
CharacterCellHeight, i kolor czcionki
oraz tła (kolor korzysta z Global Color
Table
). Sam tekst który ma zostać
wyrenderowany jest podzielony na
sub-bloki i jest dołączony po sub-
bloku zawierającym konfigurację PTE.
Całość zakończona jest podobnie jak
w przypadku poprzednich rozszerzeń
– terminującym bajtem o wartości 0.

Standard zaleca aby korzystać

jedynie ze znaków o wielkości 8x8 lub
8x16, oraz aby szerokość i wysokość
siatki była tak dobrana aby ilość znaków
w wierszu czy kolumnie była całkowita
– w przypadku gdy nie jest, część
ułamkowa powinna zostać zignorowana.

Należy zauważyć iż wybór kroju

czcionki należy całkowicie do dekodera,
i jest niezależne od intencji osoby
tworzącej GIF'a.

Pierwszym wektorem ataku, który

nasuwa się od razu po przeczytaniu
zaleceń standardu, jest użycie innej
wielkości znaku niż 8x8 czy 8x16.
Zauważmy iż dla programisty ważną
informacją będzie ilość znaków w
linii, którą wylicza się za pomocą
prostego dzielenia – TextGridWidth/
CharacterCellWidth
(można się obyć
bez tego równania, jednak z dużym
prawdopodobieństwem pojawi się ono
w programie; analogicznie liczy się
maksymalną ilość linii w siatce). Celnym
atakiem na każde dzielenie jest użycie z
zera w mianowniku – co, niesprawdzone,
powoduje wygenerowanie wyjątku Divide
By Zero
, a z kolei nieobsłużony wyjątek
prowadzi do skutecznego ataku typu DoS.

Innym podejściem do problemu

wielkości znaku może być użycie
większego znaku od siatki, oraz, w
drugim podejściu, większego znaku
od całego obrazu. Można w tym celu
użyć odpowiednio dużego znaku (np.
255x255), lub odpowiednio małego
obrazu (np. 4x4) dla standardowej
wielkości znaku. Jeżeli programista
zaniedba sprawdzanie takich
przypadków, taki atak doprowadzi do
przepełnienia bufora obrazu – jednak
prawdopodobieństwo uruchomienia
zewnętrznego kodu w takim wypadku
wydaje się być niezwykle niskie.
Niejako rozwinięciem tego pomysłu
jest użycie siatki większej niż obraz,
ale z wieloma małymi znakami

– nieuważny programista mógł nie
sprawdzić wielkości, co skończyło by
się przepełnieniem bufora – z nadal
niewielkim (ale jednak większym niż
poprzednio) prawdopodobieństwem
wykonania kodu.

Innym wektorem ataku mogły by

być indeksy kolorów – tła i znaku. Jeżeli
programista nie sprawdzi czy index nie
wykracza po za paletę kolorów, może
to doprowadzić do wycieku informacji
(analogicznego jak w przypadku palety,
plików BMP i przeglądarek Mozilla
Firefox i Opera – błąd został opisany
w hakin9 3/2008), lub odmowy usługi
(DoS). Pojawia się również pytanie – a
co jeśli plik nie będzie w ogóle posiadał
globalnej palety kolorów? Kolejny
możliwy wyciek informacji lub DoS.

Podobnie jak w przypadku

poprzednich rozszerzeń, można
przetestować zachowanie dekodera
w przypadku zmiany wielkości sub-
bloku konfiguracyjnego. Warto również
sprawdzić czy dekoder jest w jakiś
sposób wrażliwy na nieobecność
sub-bloku konfiguracyjnego, oraz
na ekstremalną ilość sub-bloków
zawierających tekst.

Z uwagi na fakt iż obecnie mało który

dekoder obsługuje rozszerzenie PTE, to
rozszerzenie staje się bardzo dobrym
miejscem na ukrycie dodatkowych
informacji.

Podsumowanie

We wszystkich wymienionych
rozszerzeniach warto zwrócić również
uwagę na możliwość dołożenia
kolejnego sub-bloku danych do
wymaganych sub-bloków – powinno
to pomóc stworzyć miejsce do ukrycia
kolejnych danych.

Tym artykułem kończę tematykę

plików GIF. Po lekturze obu artykułów
uważny Czytelnik powinien być w stanie
zaimplementować bezpiecznie obsługę
formatu GIF, wraz z rozszerzeniami, a
także skutecznie odnaleźć błędy ukryte w
testowanych aplikacjach.

Michał Składnikiewicz

Michał Składnikiewicz, inżynier informatyki, ma

wieloletnie doświadczenie jako programista oraz

reverse engineer. Obecnie pracuje w Hispasec

– międzynarodowej firmie specjalizującej się w

bezpieczeństwie komputerowym.

Kontakt z autorem: gynvael@coldwind.pl

Tabela 4.

Struktura Plain Text Extension

Typ i nazwa pola

Opis

BYTE ExtensionIntroducer

Znacznik rozszerzenia, zawsze 0x21

BYTE PlainTextLabel

Rodzaj rozszerzenia, zawsze 0x01

BYTE BlockSize

Wielkość sub-bloku – zawsze 0x0C

WORD TextGridLeftPosition

Początek siatki – współrzędna X

WORD TextGridTopPosition

Początek siatki – współrzędna Y

WORD TextGridWidth

Szerokość siatki

WORD TextGridHeight

Wysokość siatki

BYTE CharacterCellWidth

Szerokość pojedynczego znaku

BYTE CharacterCellHeight

Wysokość pojedynczego znaku

BYTE TextForegroundColorIndex

Kolor znaku

BYTE TextBackgroundColorIndex

Kolor tła znaku

SubBlock PlainTextData[]

Sub-bloki zawierające tekst

BYTE BlockTerminator

Terminator bloku, zawsze 0

background image

42

OBRONA

HAKIN9 7-8/2008

W

t Internecie można trafić na dokumenty
o NSM (Network Security Monitor)
pracującym na systemie SunOS w

wersji 4.x. Autor raportu dla Lawrence Livermore
National Laboratory, Todd Heberlein, opisał w
nim zestaw narzędzi do monitorowania ruchu
w sieci. Raport datowany jest na miesiąc luty
roku 1995, a więc dość dawno. W skład tej
wersji NSM wchodziło dość dużo narzędzi
do przechwytywania danych i późniejszej ich
analizy. Zestaw posiadał również graficzny
interfejs użytkownika, pracujący w środowisku X-
windows
systemu SunOS. Niestety, wspomniana
wersja nie przewidywała wykorzystywania jej w
innych systemach operacyjnych. W dzisiejszych
czasach bardzo często używanymi programami
do monitorowania bezpieczeństwa sieci są takie
narzędzia, jak Snort czy Sguil. Aplikacje te są
znane, sprawdzone i spełniają oczekiwania wielu
swych użytkowników. Nie jest to co prawda zbyt
duży wybór, ale zawsze można znaleźć jakiś
program dla siebie. Istnieje dystrybucja Knoppix-
NSM, która zawiera wspomniane narzędzia
i kilka innych, dzięki czemu jest także często
wykorzystywana. W Sieci pojawiło się jednak
nowe narzędzie, które jest warte zauważenia.
NSM to tak naprawdę zestaw aplikacji, które
można podzielić na trzy kategorie:

• narzędzia do przechwytywania danych,
• narzędzia do analizowania danych,
• narzędzie wspierające.

GRZEGORZ BŁOŃSKI

Z ARTYKUŁU

DOWIESZ SIĘ

co to jest NSM-Console,

co potrafi NSM-Console i jak jej

używać,

do czego służy dystrybucja HeX.

CO POWINIENEŚ

WIEDZIEĆ

znać systemy linuksowe

potrafić kompilować kod

źródłowy

Oczywiście z wszystkich wymienionych grup
najbardziej istotne są programy służące analizie
zebranych danych, jednak wszystkie aplikacje są
potrzebne do sprawnego wykonywania zadań
monitorowania sieci.

NSM-Console powstała stosunkowo

niedawno i jest rozwijana tak naprawdę przez
jedną tylko osobę, którą jest Matthew Lee Hinman.
Program napisany w języku programowania
Ruby ma budowę modularną, co bardzo
ułatwia pracę z nim, a także rozszerzanie jego
możliwości przez dodawanie kolejnych modułów.
Autorzy (bo początkowo było ich kilku) nie
chcieli napisać programu, który powielałby te,
które już są dostępne i świetnie się sprawdzają,
więc napisali coś na kształt frameworku, który
zawiera w sobie wiele pomocnych i przydatnych
narzędzi. Z powodu niezbyt wysokiej popularności
spowodowanej zbyt krótkim stażem programu,
warto o nim napisać – by administratorzy i
indywidualiści zajmujący się bezpieczeństwem
sieciowym mieli okazję go poznać i przetestować.
Z racji tego, iż narzędzie opiera się tak naprawdę
o pracę innych programów, nikt nie powinien mieć
z jego obsługą większych problemów.

Moduły i polecenia

NSM-Console w wersji 0.6 zbudowany jest
z ponad 20 modułów, które umożliwiają
dokładną analizę przechwyconych pakietów w
celu wyszukiwania anomalii oraz przeróżnych
nieprawidłowości. Program potrafi pracować nie

Stopień trudności

Konsola NSM

i HeX LiveCD

Monitorowanie sieci i systemów informatycznych w niej

działających to bardzo ważna część pracy administratorów. Choć

narzędzi do monitorowania jest wiele, nie wszyscy znają konsolę

NSM (Network Security Monitoring), stworzoną na potrzeby

dystrybucji HeX.

background image

43

KONSOLA NSM I HEX LIVECD

HAKIN9

7-8/2008

tylko z jednym plikiem jednocześnie, ale z
katalogiem wypełnionym plikami pcap.

Opiszę teraz w skrócie moduły

wchodzące w skład NSM (Ramka Moduły
NSM).

Jak widać, pokaźna porcja modułów

potrafi wykonać całkiem sporo pracy,
skracając czas analizy plików. Ci, którzy
sami analizowali ruch sieciowy w
poszukiwaniu anomalii, wiedzą, że jest
to zajęcie czasochłonne – tym bardziej,
gdy każdego narzędzia trzeba używać
z osobna. Dla celów sterowania pracą
programu mamy do dyspozycji kilka
poleceń w połączeniu z różnymi opcjami.

Polecenie

file

– definiuje lokalizację

pliku lub plików z zapisem ruchu
sieciowego na których ma operować
NSM-Console. Składnia pliku jest bardzo
prosta , jedynym parametrem jest ścieżka
do pliku na przykład file /home/pliki/
zrzut.pcap

Polecenie

output

– specyfikuje

katalog dla danych wyjściowych NSM-
Console.Domyślnym katalogiem jest
katalog o nazwie składającej się z
nazwy analizowanego pliku i dodaną
stałą -output czego wynikiem jest nazwa
katalogu /zrzut-output .

Polecenie

info

– wyświetla

dodatkowe informacje na temat modułu
oraz jego zmiennych. Dodatkową

informacją wyświetlaną są adresy stron z
których pochodzą moduły , lub odnośniki
do stron Wikipedii.

Kolejne polecenie

list

– wyświetla

dostępne moduły z informacjami
czy są one aktualnie włączone czy
też wyłączone. Znak [-] oznacza że
moduł jest wyłączony natomiast o jego
włączeniu informuje znak [+].

Włączanie i wyłączanie modułów

wykonywane jest poleceniem

toggle

.

Składnia polecenia to toggle <nazwa_

modułu> lecz można włączyć jednocześnie
także kilka modułów wymieniając je po
znaku spacji. Do włączenia wszystkich
modułów służy polecenie

toggle all

.

Następne polecenie

options

pozwala

na wyświetlenie zmiennych globalnych
oraz specyficznych dla każdego modułu.
Polecenie wykonane bez podania nazwy
modułu wyświetla zmienne globalne. Po
dodaniu do polecenia zmiennej w postaci
nazwy modułu zostanie wyświetlona lista
zmiennych dla danego modułu.

Set

to polecenie włączania zmiennych

dla modułu. Informacje o dostępnych
zmiennych dla każdego modułu wyświetla
wcześniej wspomniane polecenie

options

.

Najważniejsze jest polecenie

run

uruchamiające cały proces analizy pliku ze
zrzutem ruchu sieciowego. Polecenie nie
posiada żadnych opcji a jego wykonanie

spowoduje uruchomienie procesu analizy
w którym użyte będą moduły które
wcześniej zostały włączone.

Po szczegółowe opisy wszystkich

poleceń odsyłam do pliku PDF,
zawierającego podstawowy zestaw
informacji, znajdującego się w archiwum,
które można pobrać z adresu http:
//writequit.org/projects/nsm-console/files/
nsm-console-0.6.tar.gz.

Aby przybliżyć Czytelnikom pracę

z programem, przedstawię przypadek
krótkiej analizy ruchu sieciowego na
przykładzie wyników pracy kilku modułów
NSM-Console. Zanim jednak przejdę do
opisu działania programu, przypomnę,
iż aby moduły programu mogły działać
w systemie, muszą być zainstalowane
programy, do których te moduły się
odwołują. Ponieważ narzędzie operuje
na kilku istotnych zmiennych, opiszę
jedną z ważniejszych, zanim zabierzemy
się do pracy. Zmienna

PCAP _ FILE

jest

bezwzględną ścieżką do pliku, na którym
będzie operować NSM-Console. Jest
ona wykorzystywana przez większość
modułów do ustawienia pliku, z którym
będą one pracować. W przypadku, gdy
ustawimy zmienną na katalog zawierający
pliki PCAP, programy będą analizowały
każdy plik znajdujący się w tym katalogu.
Gdy jesteśmy pewni, że mamy w systemie
zainstalowane odpowiednie aplikacje,
możemy przejść do pracy z NSM-
Console. Po uruchomieniu polecenia
.

/nsm

w rozpakowanym wcześniej katalogu

programu konsola zostaje uruchomiona.

Następnie należy zdefiniować plik

PCAP, z którym będziemy pracować
– co wykonuje się poleceniem file

<nazwa _ pliku>

. W tym momencie

warto poinformować, że program potrafi
pracować zarówno na plikach PCAP
tworzonych w czasie rzeczywistym, jak

Rysunek 1.

Uruchomiona NSM-Console i wykonane operacje zdefiniowania pliku do

analizy oraz włączenia wszystkich dostępnych modułów

W Sieci

http://http://writequit.org/projects/nsm-

console,

• http://securitydistro.com/tutorials/

play.php?id=94&title=A-introduction-to-
NSMConsole tutorial,

• http://www.securixlive.com/knoppix-nsm ,
• http://watchlist.security.org.my,
• http://bro-ids.org,
• http://passive.sourceforge.net.v

background image

OBRONA

44

HAKIN9 7-8/2008

KONSOLA NSM I HEX LIVECD

45

HAKIN9

7-8/2008

i na plikach, które zostały wcześniej
zapisane. Po operacji definicji pliku
należy włączyć moduły programu,
które chcemy wykorzystywać podczas
zautomatyzowanej analizy zbioru. Do tego
celu służy polecenie

toggle <nazwa _

modułu>

. W celu włączenia wszystkich

dostępnych modułów można użyć
polecenia

toggle all

.

Do zdefiniowania katalogu

wyjściowego innego niż standardowy
można użyć polecenia

output

<katalog>

. W przypadku rezygnacji ze

zdefiniowania katalogu wyjściowego dane
zostaną zapisane w katalogu utworzonym
na podstawie nazwy analizowanego
pliku – będzie on miał nazwę

<nazwa _

pliku>-output

.

Po zakończeniu pracy NSM-Console

w katalogu programu zapisywane są
wyniki analizy pliku, zwrócone przez
poszczególne moduły.

Moduł harimau sprawdza adresy IP

znalezione w badanym pliku pod kątem

ich obecności na liście Harimau, która
gromadzi m.in. adresy spamerów z kilkunastu
największych ich list na świecie, między
innymi Spamhaus. Ten moduł może okazać
się pomocny w wykryciu zwiększonego ruchu
sieciowego powodowanego przez spamerów
i wysyłanych przez nich niechcianych
wiadomości.

Clamscan to moduł sprawdzający

plik z zapisem ruchu sieciowego pod
kątem występowania wirusów, co może
nam wydatnie pomóc, jeśli badany plik
pochodzi z sieci, do której nie mamy
fizycznego dostępu. Po analizie i wykryciu
wirusów możemy w zainfekowanej sieci
wykonać czynności odcinające od ruchu
komputery, których adresy IP figurują jako
źródła infekcji.

Bardzo ciekawą i przydatną

funkcją

NSM-Console

jest możliwość

dekodowania oraz kodowania w dziesięciu
różnych standardach.

Funkcja ta jest bardzo przydatna

podczas analizy transmisji z użyciem
kodowania, a NSM-Console potrafi
kodować/dekodować w Base64, MD5,
SHA256, urlescape, binary_MSB, binary_
LSB, hex_MSB, hex_LSB, uuencode oraz
ROT13.

Jako przykład zakodujmy ciąg znaków

przy użyciu Base64 (Listing 1)

Jak widać, ciąg został poprawnie

zdekodowany. Nawiasy kwadratowe
zostają dodane przez NSM-Console tylko
w celu oznaczenia początku i końca ciągu.

NSM-Console

jako składnik HeX LiveCD

NSM-Console jest kluczowym składnikiem
dystrybucji narzędziowej dla administratorów,
opartej o system FreeBSD. W środowisku
graficznym Fluxbox, w jaki jest wyposażona,
łatwo można uruchamiać całe zestawy
narzędzi przygotowanych z dużą
dokładnością. Network Security Monitoring
Toolkit (NSM-Toolkit) to zestaw narzędzi, w
skład którego wchodzi między innymi właśnie
NSM-Console. W zestawie znajdziemy także
Sguilc. Oprócz tego jest on wyposażony w
szereg aplikacji do analizy powłamaniowej,
analizy sieci, wizualizacji sieci, testów
penetracyjnych czy edycji plików pcap.

Ta mnogość narzędzi powoduje, że

dystrybucja może tak naprawdę znaleźć
wielu użytkowników wśród administratorów,
oficerów bezpieczeństwa, pracowników

Listing 1.

Kodowanie Base64 w NSM Console

W konsoli NSM wydajemy polecenie :
nsm

>

encode base64 Test kodowania base64.

Encoding ascii --

>

base64...

Output

([]

's added to show beginning and end):

[VGVzdCBrb2Rvd2FuaWEgYmFzZTY0Lg==]

Zakodowany ciąg znaków można odkodować (kto nie wierzy, sam niech sprawdzi), wydając

polecenie :

nsm> decode base64 VGVzdCBrb2Rvd2FuaWEgYmFzZTY0Lg==

Decoding base64 --> ascii...
Output ([]'

s added to show beginning

and

end

)

:

[

Test kodowania base64.

]

Moduły NSM

• [+] aimsnarf – wyciąga wiadomości komunikatora AIM,
• [+] argus-basic – przygotowuje statystykę przepływu,
• [+] bro-ids-protocol – Bro Intrusion Detection System (analizuje plik pod kątem alarmów),
• [+] bro-ids-stream – Bro Intrusion Detection System (ekstrahuje zawartość ciągów),
• [+] capinfos – wyświetla informacje o pliku pcap,
• [+] chaosreader – śledzi sesje TCP/UDP i zbiera dane z działających aplikacji,
• [+] clamscan – skanuje wyekstrahowane pliki pod kątem obecności złośliwego kodu,
• [+] fl0p – analizuje przepływ pakietów w warstwie aplikacji,
• [+] flowtag – wizualizuje przepływ pakietów w pliku pcap,
• [+] flowtime – tworzy oś czasu dla ruchu sieciowego w pliku,
• [+] foremost – wypakowuje pliki z pliku pcap,
• [+] harimau – sprawdza adresy IP z pliku pcap na obecność na liście Harimau,
• [+] hash – tworzy hashe pliku lub plików,
• [+] honeysnap – wykonuje analizę pliku pcap przechwyconego na honeypocie,
• [+] iploc – ustala lokalizację ruchu przychodzącego i wychodzącego,
• [+] ngrep – przeszukuje plik pcap w poszukiwaniu danych,
• [+] p0f – pasywne rozpoznawanie systemu, z którego pochodzą pakiety,
• [+] pads - Passive Asset Detection System,
• [+] snort – generuje alarmy programu snort,
• [+] tcpdstat – generuje statystykę z pliku pcap,
• [+] tcpflow – ekstrahuje informacje o przepływie z pliku pcap,
• [+] tcpick – generuje statystykę ruchu,
• [+] tcptrace – analizuje trasy pakietów,
• [+] tcpxtract – wypakowuje dane z plików pcap,
• [+] trace-summary – generuje podsumowanie trasowania,
• [+] tshark – analizuje ruch sieciowy.

background image

OBRONA

44

HAKIN9 7-8/2008

KONSOLA NSM I HEX LIVECD

45

HAKIN9

7-8/2008

działów IT, a także samouków pragnących
zgłębić swoją wiedzę.

Obraz ISO systemu można pobrać

ze strony https://trac.security.org.my/
hex/wiki
, na której znajdziemy również
dokumentację oraz inne informacje na
temat narzędzi zawartych w dystrybucji.
Gorąco polecam zaznajomienie się z tą
interesującą dystrybucją. HeX dostępny jest
także do zainstalowania na napędach USB
– odpowiedni plik można pobrać spod

adresu http://bsd.ipv6.la/hex-i386-1.0.2-
ch.img.bz2.

W związku z dużą popularnością

maszyn wirtualnych, HeX został
przygotowany także w wersji dla takich
systemów. Do wyboru mamy obrazy
dla Vmware (http://bsd.ipv6.la/hex-
images/HeX-VMware.tar.bz2
),Virtualbo
x
(http://bsd.ipv6.la/hex-images/HeX-
Virtualbox.tar.bz2
), Quemu (http://
bsd.ipv6.la/hex-images/HeX-Qemu.tar.bz2
)

oraz Parallels (http://bsd.ipv6.la/hex-
images/HeX-Paralles.tar.bz2
).

Nie fair byłoby pominięcie w tym

momencie innej dystrybucji LiveCD o
podobnych możliwościach, którą jest
Knoppix-nsm. Dystrybucja ta, podobnie
jak HeX, zawiera zestaw narzędzi do
analizy sieci i poziomu zabezpieczeń.

Niestety, przy dużym wyborze narzędzi

w tej dystrybucji brakuje wielozadaniowego
kombajnu – takiego, jakim jest NSM-
Console.

Podsumowanie

Mnogość dostępnych aplikacji służących
administratorom i osobom zajmującym
się bezpieczeństwem jest czasem
przytłaczająca i powoduje trudności w
wyborze jakiegoś konkretnego zestawu
narzędzi. NSM-Console powstało między
innymi po to, by ułatwić ten wybór
– tworzy ją w końcu człowiek, który
sam jest administratorem i zajmuje się
bezpieczeństwem ruchu sieciowego.
Dodatkowo dystrybucja HeX, której
kluczowym składnikiem jest NSM-
Console, to potężny zestaw narzędzi,
który pozwala na wykonywanie bardzo
szerokiego spektrum zadań związanych
z ruchem sieciowym, bezpieczeństwem
czy analizą po dokonanym ataku,
zakończonym kompromitacją systemu
lub wręcz całej sieci. Mimo, iż zarówno
sam program NSM-Console, jak i
dystrybucja HeX są stosunkowo młodymi
narzędziami, ich używanie jest jak
najbardziej wskazane – a osoby, które
po nie sięgną, z pewnością nie będą
swojej decyzji w żaden sposób żałowały.
Jedyna trudność, jaka może się pojawić,
to problemy z użytkowaniem HeX LiveCD,
który bazuje na FreeBSD – a więc
spora część poleceń nie pokrywa się z
tymi znanymi z dystrybucji linuksowych.
Znający FreeBSD nie będą mieli z
obsługą żadnego problemu, a osoby
chcące używać HeX'a będą musiały
nauczyć się podstaw obsługi tego
systemu.

Rysunek 3.

Chaosreader to moduł śledzący ruch TCP/IP. Wyniki działania tego

komponentu prezentowane są w postaci plików HTML, wygodnych do przeglądania

Rysunek 2.

Moduł harimau w przypadku znalezienia źródła spamu wyświetla o tym informację

przy adresie IP. W przykładzie nie wykrył on żadnego źródła spamu, stąd wpisy no records

Grzegorz Błoński

Grzegorz Błoński z wykształcenia jest informatykiem,

certyfikowanym specjalistą IBM. Pracuje w dużej firmie

o zasięgu światowym. Zajmuje się administracją i

bezpieczeństwem sieciowym. Jest członkiem organizacji

International Information Systems Forensics Association

(IISFA), ISACA oraz Internet Society.

Kontakt z autorem: mancymonek@mancymonek.pl

background image

46

OBRONA

HAKIN9 7-8/2008

N

ajpoważniejszy w historii Ameryki
Północnej brak prądu (ang. blackout)
w 2003 roku wygenerował straty

szacowane na 6 mld dolarów, utrudnił życie
czterdziestu milionom Amerykanów i dziesięciu
milionom Kanadyjczyków. Przestały działać
pompy elektryczne, więc liczne stacje benzynowe
zostały zamknięte (co z kolei wstrzymało ruch
samochodowy), pojawiły się też problemy z
brakiem wody w kranach. Stanęła kolej, metro,
zamknięto fabryki, sklepy, restauracje. Zatrzymały
się windy. Telefony komórkowe nie mogły połączyć
się z siecią, bo jedne stacje bazowe przestały
działać, a inne zostały nadmiernie obciążone
przez ponad dwukrotnie większą niż zazwyczaj
liczbę telefonów alarmowych. Czy spowodował
to atak terrorystyczny? Nie. Przyczyną tego
wszystkiego był błąd programu komputerowego w
elektrowni Eastlake w stanie Ohio.

Nasza zależność od komputerów ciągle

niepostrzeżenie rośnie. Choć przeciętnemu
człowiekowi komputer kojarzy się raczej z
monitorem, klawiaturą, myszą i plastikowym
pudełkiem, zawierającym całą resztę, w
rzeczywistości jest użytkownikiem dużo większej
liczby komputerów, niż mu się wydaje. Z
bardziej oczywistych przypadków są to telefony
komórkowe czy kina domowe. Jednak nawet
kiedy jedzie w miarę nowym autobusem czy
samochodem, nad jego bezpieczeństwem czuwa
komputerowy system ABS, monitorujący prędkość
każdego koła i w miarę potrzeby wykonujący

CEZARY G. CEREKWICKI

Z ARTYKUŁU

DOWIESZ SIĘ

czym są sytuacje wyścigu,

jakie błędy i podatności mogą

powodować,

czym są heisenbugi.

CO POWINIENEŚ

WIEDZIEĆ

wskazana jest znajomość

podstaw informatyki.

hamowanie pulsacyjne w sposób dużo lepszy, niż
byłby to w stanie zrobić nawet najlepszy kierowca.

Bardzo użyteczne wynalazki, takie jak

bankomaty czy karty płatnicze, nie mogłyby istnieć
bez komputerów i sieci komputerowych, o czym
boleśnie przekonali się klienci pewnego banku, w
którym poważna awaria systemu informatycznego
spowodowała kilkudniowy brak dostępu do
pieniędzy. Od komputerów zależny jest dziś nawet
największy technofob. Choćby wszędzie jeździł
rowerem, gardził telefonią i telewizją, to i tak
będzie zarejestrowany choćby w systemie ZUS i
od poprawności działania tegoż systemu będzie
zależał los jego emerytury.

Ale to i tak tylko wierzchołek góry lodowej.

Amerykańskie doświadczenie z 2003 roku
pokazuje, że defekt programistyczny może
pośrednio doprowadzić do braku prądu, wody,
benzyny, telefonii komórkowej i stacjonarnej, a
więc praktycznie niemalże do cofnięcia nas do
XIX wieku.

Świat się coraz bardziej komputeryzuje, więc i

coraz więcej zależy od tego, czy komputery będą
działały poprawnie w każdych warunkach – także
w przypadku, gdy będą nimi manipulować ludzie
o bardzo złych intencjach.

Kto pierwszy, ten lepszy

Kraj mający tylu wrogów, co USA, nie mógł
nie zadać sobie pytania – czy to na pewno
nie był zamierzony atak? Przeprowadzono
odpowiednie śledztwo, które wykazało, że problem

Stopień trudności

Zagrożenia

wyścigowe

Czy w coraz bardziej skomputeryzowanym świecie, w którym

informatyka nie zawsze radzi sobie z trudnymi do wykrycia

błędami, możemy się czuć bezpieczni?

background image

47

ZAGROŻENIA WYŚCIGOWE

HAKIN9

7-8/2008

spowodował błąd typu sytuacja wyścigu
(ang. race condition). Przypominam:
sytuacja wyścigu to zjawisko polegające
na zależności poprawnego wykonania
programu od kolejności zajścia
określonych zjawisk. Zjawisko to może
występować w szczególności w aplikacjach
wielowątkowych i rozproszonych oraz
przy wykorzystywaniu wszelkiego
rodzaju operacji asynchronicznych.
Czyli, praktycznie rzecz ujmując, we
współczesnych wielodostępnych
i wieloprocesowych systemach
operacyjnych, sytuacja wyścigu może
wystąpić w niemal każdym programie. W
dodatku obecne trendy rozwoju IT, takie
jak powstawanie procesorów o coraz
większej liczbie rdzeni, coraz większe
usieciowienie oprogramowania i coraz
większe zrównoleglenie przetwarzania
powodują, że problemy sytuacji wyścigu i
związane z nimi błędy będą się pojawiać
coraz częściej.

Ta klasa błędów jest wyjątkowo trudna

do wykrycia. Jeśli w warunkach testowych
zawsze wyścig kończył się zwycięstwem
zjawiska A nad zjawiskiem B, to problem nie
został odkryty i program przeszedł do etapu
produkcji. Tam również działał bez zarzutów,
aż tu nagle wystąpił ten jeden wyjątkowy
przypadek, gdy np. ruch sieciowy był
szczególnie natężony, albo magistrala czy to
została zapchana wybitnie dużymi ilościami
danych, czy też któryś algorytm został
poczęstowany takim wejściem, dla którego
jego złożoność jest najbardziej pesymistyczna
– albo wystąpiło jakiekolwiek inne rzadkie
zdarzenie, zmieniające typową kolejność
zachodzenia zdarzeń w systemie. Nagle
pojawia się błąd, którego nikt nigdy nie widział
na oczy (i pewnie nigdy więcej nie zobaczy).

Sytuację wyścigu daje się też niekiedy

wykorzystać do obejścia kontroli dostępu
w programach zawierających tego typu
błąd. Pomiędzy sprawdzeniem, czy dany

użytkownik ma prawo do danej operacji,
a jej faktycznym wykonaniem mija
trochę czasu. Rodzi to przynajmniej dwie
konsekwencje.

Przykład 1. Załóżmy, że uprawnienia są

sprawdzane tylko przy logowaniu do
systemu. Jeśli administrator postanowi
zabrać użytkownikom prawo do danej
operacji, faktyczne wejście w życie jego
postanowienia nastąpi dopiero wtedy,
gdy wszyscy się przelogują. W wielu
aplikacjach sesje potrafią trwać nawet
tygodniami bez wygaśnięcia, co w
takiej sytuacji doprowadzi do sytuacji
długotrwale zwisających uprawnień.

Możemy sobie wyobrazić sytuację, w której
szefostwo firmy chce odciąć pewną grupę
pracowników od danej funkcjonalności. Jeśli
jedna osoba odkryje, że po przelogowaniu
straciła dostęp do określonych funkcji,
może ostrzec pozostałe, żeby te się nie
wylogowywały.

Rozwiązaniem częściowym jest albo

wymuszanie częstszego przelogowywania
się albo możliwość unieważnienia
sesji przez administratora, ale najlepiej
problem rozwiązuje poprzedzenie kodem
weryfikującym uprawnienia wykonanie
każdej istotnej operacji. Program będzie
działać odrobinę wolniej, ale z pewnością
będzie bezpieczniejszy – a wdrożenie każdej
istotnej zmiany w polityce bezpieczeństwa
będzie natychmiastowe.

Przykład 2. Rozważmy program dostający

jako argument nazwę pliku. Jeśli
atakujący poda nazwę pliku, do którego
ma uprawnienia i – w czasie pomiędzy
sprawdzeniem uprawnień a wykonaniem
przez program krytycznej operacji – zdąży
podmienić go na łącze symboliczne
do pliku, do którego już uprawnień nie
posiada, to wyminie tym samym cały

system kontroli dostępu. Taki atak nie
jest prosty, ponieważ wymaga bardzo
precyzyjnej synchronizacji.

Rozwiązaniem może być zablokowanie
pliku, aby nikt inny nie był go w stanie ruszyć
pomiędzy etapem weryfikacji uprawnień a
etapem wykonywania na nim odpowiednich
operacji.

W omawianym przypadku

sytuacja wyścigu doprowadziła do
naruszenia ostatniej ze składowych
triady bezpieczeństwa informatycznego
– dostępności. Usługa monitorowania
stanu urządzeń elektrowni przestała być
dostępna, co doprowadziło do blackoutu.

Błądzić

jest rzeczą komputerową

Napisanie dużego programu, który nie będzie
zawierał żadnych poważnych błędów, jest
zadaniem bardzo trudnym, a konsekwencje
nawet tak teoretycznie drobnego i ciężkiego
do wychwycenia defektu, jak sytuacja wyścigu
w części kodu, mogą być tak drastyczne, jak
w przypadku braku prądu w USA i Kanadzie.

Błędy programistyczne doprowadziły też

do wielu innych wypadków. W latach 80-tych
urządzenie do radioterapii u przynajmniej
sześciu pacjentów stukrotnie przekroczyło
dawkę promieniowania. Trzy osoby zmarły
w wyniku choroby popromiennej. W 1991
dwudziestu ośmiu Amerykanów zginęło na
skutek błędu w systemie antyrakietowym w
Arabii Saudyjskiej. Wada komputerowego
systemu kontroli silnika była prawdopodobnie
przyczyną katastrofy brytyjskiego śmigłowca
Chinook w 1994 roku. W wypadku zginęło
29 osób. Okazuje się zatem, że nieostrożny
programista może zabić nie mniej ludzi niż
nieostrożny chirurg, pilot czy żołnierz.

Błąd zakradł się nawet do algorytmu

przedstawionego w książce Perełki
oprogramowania
profesora Jona Bentleya,
wydanej po raz pierwszy w 1986 roku i
pozostał niewykryty przez dwie dekady! Co
więcej, defekt nie dotyczył pojedynczego
algorytmu, ale całej ich klasy zwanej dziel i
rządź
, której idea polega na systematycznym
dzieleniu problemu na coraz mniejsze
podproblemy, a następnie scalaniu ich
mikrowyników w ostateczne rozwiązanie.

Bentley jest w tej dziedzinie specjalistą,

napisał pracę doktorską o zastosowaniach
tej klasy algorytmów. Co więcej, przedstawił
matematyczny dowód poprawności

Listing 1.

Przykład kodu podatnego na eskalację uprawnień dostępu do pliku

if

(

access

(

file

,

R _ OK

)

!

=

0

)

{

exit

(

1

);

}

// w to miejsce atakujący może się wstrzelić z podmienieniem pliku na symlink

fd = open

(

file

,

O_RDONLY

);

background image

48

HAKIN9 7-8/2008

49

HAKIN9

7-8/2008

zaprezentowanego w książce przykładu
oraz przetestował powstały z niego program
komputerowy. Defekt był bardzo subtelny
i niełatwy do zauważenia, ponieważ
występował tylko wtedy, gdy program
wykonywano dla bardzo dużych ilości danych.

Błąd popełnił wybitny naukowiec w bardzo

popularnej i wysoko cenionej książce, na
której wychowały się pokolenia informatyków
na całym świecie (książkę przetłumaczono
na wiele języków, m.in. polski), dostępnej
w każdej bibliotece akademickiej, a nawet
wielu osiedlowych. Wadliwy algorytm mieli
przed oczami najlepsi z najlepszych: ludzie,
którzy dziś są profesorami, szefami zespołów
programistycznych, zwycięzcami olimpiad
informatycznych i międzynarodowych
zawodów w programowaniu, autorami
podręczników akademickich, współtwórcami
używanego przez nas wszystkich
oprogramowania, pracującymi dla
największych i najlepszych na świecie firm
i uczelni. I mimo to trzeba było dwudziestu
lat, żeby ktoś wreszcie odkrył, że w tej
klasycznej książce, znanej niemal każdemu
informatykowi, szkielet bardzo popularnej
klasy algorytmów zawiera błąd.

Jednak jeszcze bardziej szokujący

w tej sprawie może wydawać się fakt, że
błędny okazał się program realizujący
algorytm, dla którego przeprowadzono
matematyczny dowód poprawności. Jak to
możliwe? Czyżby dowód był niepoprawny?
Nic podobnego. Rzecz w tym, że tego
typu dowodów nie przeprowadza się
dla prawdziwych komputerów, tylko dla
któregoś z ich matematycznych modeli, z

których najpopularniejszym jest Maszyna
Turinga. Modele, jak wiadomo, są pewnym
uproszczonym przybliżeniem rzeczywistości.
Maszynie Turinga, na przykład, nigdy nie
zabraknie pamięci, nie przepełni się zmienna,
nie wystąpi tam błąd dyskowy i wiele innych
rzeczy, które w prawdziwych programach
komputerowych doprowadzają niekiedy do
bardzo poważnych konsekwencji.

Czym innym jest zatem dowód

poprawności algorytmu, a czym innym
dowód poprawności jego implementacji. Tych
drugich współczesna informatyka jeszcze się
nie dorobiła. Potrafimy wykazać, że program
dla określonych danych przy odpowiednich
założeniach wykona się poprawnie. Nie
potrafimy natomiast wykazać, że program
wykona się poprawnie dla dowolnych danych
w dowolnych warunkach.

Nie ma

ucieczki przed niepewnością

Testowanie oprogramowania odbywa
się obecnie metodą eksperymentalną.
Jeśli program zadziałał w określonych
warunkach dla określonych danych w
środowisku testowym, to zadziała też w
takich samych warunkach dla tych samych
danych gdzie indziej. Ta metoda ma jednak
istotną wadę. Przy skali skomplikowania
dzisiejszego oprogramowania, ilość
możliwych przypadków jest astronomiczna
i przetestowanie wszystkich w sensownym
czasie jest niemożliwe. Teoretycznie powinno
wystarczyć przetestowanie rozsądnie
dobranego podzbioru przypadków i tu jest
właśnie pies pogrzebany. Wystarczy bowiem
przeoczyć jedną możliwość, jedną małą
igiełkę w kolosalnym stogu siana.

Program, który spowodował brak prądu

w USA, działał wcześniej poprawnie przez
ponad trzy miliony godzin. Osiem tygodni po
awarii udało się odtworzyć błąd. Okazało się,
że prawdopodobieństwo jego wystąpienia
było minimalne, określone zdarzenia musiały
wystąpić w odpowiedniej kolejności w oknie
czasowym mierzonym w milisekundach. Nic
więc dziwnego, że ani testy, ani wieloletnia
eksploatacja produkcyjna go nie wykryły.

W tym przypadku najprawdopodobniej

mamy do czynienia ze zwykłym błędem
programistycznym. Możemy sobie jednak
wyobrazić, że ktoś celowo wprowadza
tego typu błąd do jakiegoś krytycznego
oprogramowania. Kiedy tak sprytnie
spreparowany koń trojański trafi do produkcji,

napastnik będzie mógł zdetonować bombę
poprzez drobną zmianę środowiska
produkcyjnego – tak, aby odpowiednie
zdarzenia zaszły w odwrotnej niż typowa
kolejności.

Innym rozwiązaniem (o klasę

trudniejszym) detonacji mogłoby być
uzależnienie wyniku wyścigu np. od wykonania
jakiegoś zapytania bazodanowego. Wraz
z postępującym zasilaniem bazy danych
zapytania na niej robiłyby się coraz wolniejsze
– aż w końcu, np. w dniu szczególnego
obciążenia bazy, czas wykonania zapytania
byłby dostatecznie długi, by spowodować błąd
krytyczny aplikacji. Tym samym powstałaby
bomba z opóźnionym zapłonem. Napastnik
musiałby się jednak trochę napracować, żeby
taki defekt nie został wykryty podczas testów
skalowalności.

Sytuacje wyścigu wydają się świetnie

pasować do takiego scenariusza. Przyłapany
napastnik zawsze mógłby się wytłumaczyć,
że zwyczajnie popełnił błąd – niełatwo byłoby
mu udowodnić celowość takiego działania.
Trudność wykrycia sytuacji wyścigu dawałaby
spore szanse na przetrwanie fazy testowania,
nawet gdyby ta była przeprowadzana bardzo
skrupulatnie. Jeśli okno wystąpienia problemu
nie jest duże, prawdopodobieństwo trafienia w
nie podczas testów będzie minimalne.

W dodatku sytuacje wyścigu mogą

mieć charakter heisenbugów. Heisenbugi to
żartobliwe określenie pewnej klasy błędów,
charakteryzujących się tym, że zachowują
się inaczej (bądź w ogóle nie występują),
gdy są namierzane. Skompilowanie
projektu w trybie debug powoduje
dodanie do plików wynikowych dodatkowej
informacji dla debuggera. Samo działanie
debuggera również zmienia środowisko,
w jakim wykonywany jest program.
Inne programy śledzące, w tym różne
monitory SQL, rejestru, plików itd. również
powodują spowolnienie wykonywania się
określonych operacji (głównie tych, które są
monitorowane, ale nie tylko).

Zatem de facto warunki wykonania

programu są trochę inne, gdy określone
parametry są kontrolowane, i inne w
przeciwnym wypadku. Jeśli od którejś z tych
rzeczy zależy poprawne (bądź nie) wykonanie
programu, sam fakt obserwacji wpłynie na
wynik. Zjawisko tego typu nazywa się efektem
obserwatora
, choć tu nazwę zapożyczono
od zasady nieoznaczoności Heinsenberga
– mimo, iż ta mówi o czymś innym.

Rysunek 1.

Okno ataku na proces

ofiary mieści się w czasie pomiędzy

weryfikacją uprawnień, a ich rzeczywistym

wykorzystaniem

����

����������

����������

����������

�����������

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

������

���������

OBRONA

background image

48

HAKIN9 7-8/2008

49

HAKIN9

7-8/2008

Złośliwi programiści

Taka ciekawa klasa błędów dla jednych jest
utrapieniem, a dla innych błogosławieństwem.
Zapewne każdy autor wirusa, konia
trojańskiego czy dowolnego innego
złośliwego kodu chciałby, aby jego dzieło było
niewykrywalne.

Ken Thompson w swoim klasycznym

artykule zaprezentował technikę ukrycia
złośliwego kodu, która nie daje się wykryć
w kodzie źródłowym programu (bo go tam
zwyczajnie nie ma), ale też nie znika gdy kod
zostanie przekompilowany! Konsekwencje
są bardzo daleko idące, m.in. zaufanie,
jakie możemy mieć do oprogramowania
open source, a więc i do możliwości
przeprowadzenia własnego audytu kodu
może być w niektórych przypadkach
przeceniane.
Idea jest następująca: należy zainfekować
kompilator w taki sposób, aby do naszego
programu-ofiary zawsze dodawał odpowiedni
złośliwy kod. Następnie kompilujemy ofiarę.
W tym momencie mamy już zainfekowany
program oraz zabezpieczoną podstawową
ścieżkę wykrycia tego faktu. Cóż jednak
będzie, jeśli użytkownik tak spreparowanego
systemu postanowi przekompilować
kompilator? Thompson pomyślał i o tym. Kod
infekujący kompilator proponuje potraktować
analogicznie jak właściwy kod złośliwy. A więc
w systemie miałyby zostać umieszczone
binaria kompilatora wzbogacone o dwie
nowe cechy: wykrycie faktu autokompilacji
i dołączenie do plików wynikowych całego
złośliwego pakietu funkcji, oraz wykrycie faktu
kompilacji programu-ofiary i dołączenie do
jego plików wynikowych właściwego kodu
złośliwego.
W ten sposób można przygotować taki
system, w którym będzie działać jakiś
arbitralny kod w programie open source,
przekompilowanym przez kompilator open
source, nawet jeśli sam kompilator zostanie
przekompilowany (ale tylko przez siebie), bez
najmniejszego śladu w źródłach!
Złośliwy kod naturalnie będzie obecny
w plikach binarnych i tam można go
podejrzeć. Jeśli jednak sama złośliwość

jest trudnowykrywalna (np. dlatego, że jest
nią właśnie sytuacja wyścigu) i dodatkowo
posłużono się innymi znanymi technikami
zaciemniania kodu wynikowego, to w
połączeniu z opisaną w tym podrozdziale
metodą otrzymamy bombę logiczną, której
wykrycie będzie wybitnie trudne nawet dla
wysokiej klasy fachowca.

Podsumowanie

Jeśli więc tak trudno jest wykryć błędy
wynikające z sytuacji wyścigu, to nie
sposób nie zadać sobie pytania, ile tego
typu błędów znajduje się w używanym
przez nas oprogramowaniu? Czy nam
też może zgasnąć światło, a z nim wiele
innych zależnych od prądu urządzeń?
Czy powinniśmy obawiać się każdego
przejeżdżającego obok nas samochodu,
każdego przelatującego nad nami samolotu?
Czy możemy mieć zaufanie do sprzętu
medycznego w szpitalach? Czy możemy
bezpiecznie powierzyć nasze pieniądze
bankom? Spokojnie, nie ma powodów do
paniki. Oprogramowanie nie nawala wcale
znacząco częściej, niż inne istotne dla
naszego życia wynalazki. Informatyka jest
jeszcze bardzo młodą dziedziną wiedzy, ale
bardzo szybko się rozwija. Powstają coraz
lepsze języki i techniki programowania, które
uniemożliwiają występowanie całych kategorii
błędów. Poza tym najważniejsze systemy
informatyczne tworzy się ze szczególną
starannością i z uwzględnieniem ich
potencjalnej awaryjności. Niektóre z nich mają
znaną m.in. z techniki wojskowej cechę zwaną
tolerancją uszkodzeń, a więc zdolnością do
poprawnego działania całego systemu, nawet
gdy dany jego element zawiódł.

Statystyka mówi, że w szpitalu dużo

większe ryzyko grozi nam ze strony lekarzy
niż skomputeryzowanej maszynerii.
Większość katastrof lotniczych powodują
jednak błędy ludzi, a nie maszyn. Podobnie
jest z wypadkami samochodowymi. Tak
więc nawet przy całej niedoskonałości
komputerów, już dziś są one dużo bardziej
niezawodne niż ludzie.

W Sieci

Na tej stronie znajdziemy trywialny przykład
sytuacji wyścigu w dostępie do zasobu:
http://docs.linux.cz/programming/c/unix_
examples/race.html

Cezary G. Cerekwicki

Autor z wykształcenia jest informatykiem i politologiem.

Pracował jako projektant, programista, administrator,

konsultant, tłumacz, koordynator międzynarodowych

projektów, dziennikarz i publicysta. Pisał programy w

dziesięciu językach programowania (od asemblerów

po języki skryptowe) w czterech systemach

operacyjnych, na dwóch platformach sprzętowych.

Kontakt z autorem: cerekwicki@tlen.pl

background image

50

OBRONA

HAKIN9 7–8/2008

W

artykule tym zajmę się prezentacją
rozwiązań pozwalających na
bezpieczną komunikację pomiędzy

urządzeniami mobilnymi, wyposażonymi w
mobilną wersję systemu Windows, a zasobami
chronionej sieci firmowej.

Po stronie urządzenia do komunikacji

wykorzystywane będzie jedynie oprogramowanie
dostępne w systemie Windows Mobile lub
darmowe oprogramowanie dostępne w Sieci.
Po stronie sieci firmowej zaś – zależnie od
konfiguracji – wykorzystany zostanie system
Linux, system Windows 2003 Serwer, a także
– bardzo ciekawe ze względu na wsparcie dla
urządzeń mobilnych – sprzętowe rozwiązanie
firmy WatchGuard.

System operacyjny Windows Mobile zapewnia

użytkownikom tylko 2 sposoby zestawienia
bezpiecznego połączenia. Są nimi: tunelowanie
IPSec/L2TP (jako, że jest to rozwiązanie firmy
Microsoft, pojawienie się tej pary nie powinno
nikogo dziwić) oraz PPTP.

Windows 2003 Server

Prezentację metod bezpiecznego dostępu do
firmowych zasobów sieci chronionej zacznę
od naturalnego powiązania systemu Windows
Mobile oraz Windows 2003 Server. Zaprezentuję
tutaj najprostszy sposób zestawiania tuneli VPN
pomiędzy urządzeniem mobilnym a serwerem.
Użytkowników bardziej wymagających odsyłam
do artykułu zamieszczonego w Microsoft

MARCIN KLAMRA

Z ARTYKUŁU

DOWIESZ SIĘ

jak zabezpieczyć dostęp

urządzeń mobilnych do

zasobów sieci chronionej

z wykorzystaniem systemu

Windows, Linux oraz

dedykowanych rozwiązań

sprzętowych.

CO POWINIENEŚ

WIEDZIEĆ

czym są tunele VPN,

jak działają protokoły IPSec,

L2TP, PPTP,

jak działa tunelowanie SSL,

jak działa system Windows

Mobile,

znać podstawy działania sieci

komputerowych,

znać podstawy konfiguracji

systemów Windows oraz Linux.

TechNet (pierwszy link w ramce W Sieci), gdzie
szerzej omówione są zagadnienia instalacji oraz
konfiguracji zdalnego dostępu z wykorzystaniem
tandemu L2TP/IPSec.

Zacznijmy od przygotowania serwera do

przyjmowania połączeń PPTP. Pierwszą kwestią
jest stworzenie konta użytkownika, który będzie
miał prawo tworzenia tunelu VPN. Po utworzeniu
konta użytkownika w jego właściwościach
(Rysunek 1) w zakładce Telefonowanie w polu
Uprawnienie usługi Dostęp zdalny należy
zaznaczyć opcję Zezwalaj na dostęp.

Kolejną czynnością konfiguracyjną jest

zainstalowanie w systemie Windows 2003 Server
roli serwera dostępu zdalnego i sieci VPN. Po jej
zainstalowaniu w Narzędziach Administracyjnych
pojawi się przystawka Routing i dostęp zdalny.
Po uruchomieniu przystawki i dodaniu serwera
należy kliknąć prawym przyciskiem myszy na
ikonę serwera (Rysunek 2) i uruchomić kreatora
Konfiguruj i włącz routing i dostęp zdalny. W
pierwszym oknie klikamy Dalej, następnie
wybieramy opcję „Dostęp zdalny (połączenie
telefoniczne lub sieć VPN)
i ponownie naciskamy
Dalej (Rysunek 3). W kolejnym oknie (Rysunek 4)
wybieramy opcję Serwer sieci VPN i naciskamy
Dalej. Następnie wybieramy z listy zewnętrzny
interfejs sieciowy komputera i znów klikamy Dalej.
Przypisywanie adresów IP najlepiej zdefiniować
jako przypisywanie z określonego zakresu. Po
kolejnym wyborze przycisku Dalej pojawi się
okno, w którym można zdefiniować ten zakres.

Stopień trudności

Mobilna

ochrona

Urządzenia mobilne zyskują coraz większą popularność. Trudno

sobie wyobrazić dziś firmę, w której pracownicy nie posiadają

urządzeń mobilnych, wyposażonych w bezprzewodowy interfejs

sieciowy, pracujących pod kontrolą systemu Windows Mobile.

Problem w tym, by komunikację tych urządzeń z siecią firmową

uczynić bezpieczną.

background image

51

MOBILNA OCHRONA

HAKIN9

7–8/2008

Należy wpisać tutaj zakres prywatnej puli
adresów, jakie mają być przydzielane
dla klientów mobilnych (Rysunek 5). Po
naciśnięciu przycisku Nowy należy podać
zakres. Może to być na przykład pula od
192.168.10.10 do 192.168.10.19. Klikamy
przycisk Dalej i wybieramy opcję Nie, użyję
usługi routingu i dostępu zdalnego do
uwierzytelniania żądań połączeń
(Rysunek
6). Klikamy Dalej, a następnie Zakończ.
W tym momencie możliwe jest już
zestawienie połączenia PPTP dla klienta
mobilnego.

Przejdźmy zatem do konfiguracji

urządzenia mobilnego. Z menu Start
należy wybrać Ustawienia i przejść do
zakładki Połączenia. Następnie należy
kliknąć ikonę Połączenia. W zakładce
Zaawansowane musimy nacisnąć
przycisk Wybierz Sieci. W oknie
Zarządzanie siecią trzeba teraz utworzyć
nowy profil dla programów łączących się
z siecią prywatną – poprzez naciśnięcie
przycisku Nowe w dolnej części ekranu.
W zakładce Ogólne musi zostać podana
nazwa dla tego profilu np. siec firmowa.
W zakładce VPN należy nacisnąć
przycisk Nowe. Spowoduje to otwarcie
kreatora tworzenia nowej sieci VPN.
W polu Nazwa trzeba wpisać nazwę
przypisaną dla tego połączenia VPN (np.
VPN do sieci firmy), w polu Nazwa/adres
IP hosta
należy podać adres IP serwera
Windows 2003. W moim przypadku był

to adres 192.168.10.1. Jako typ sieci VPN
należy wybrać PPTP. Klikamy przycisk
Dalej i w kolejnym oknie podajemy nazwę
oraz hasło dla użytkownika utworzonego
na serwerze Windows 2003. Klikamy
przycisk Zakończ, a następnie przycisk
OK i ponownie OK. W oknie Połączenia
w zakładce Zadania wybieramy Edytuj
moje serwery VPN
. W oknie Ustawienia
należy przytrzymać rysik na nazwie
połączenia VPN (w tym przypadku
VPN do sieci firmy) i wybrać z menu
kontekstowego opcję Połącz. W tym
momencie zestawiony zostaje tunel PPTP
dla urządzenia mobilnego.

Zmodyfikujemy teraz tak Windows

2003 Server, aby zdolny był do
przyjmowania połączeń L2TP/IPSec
zabezpieczonych współdzielonym
hasłem. W przystawce Routing i dostęp
zdalny
należy prawym przyciskiem
myszy kliknąć ikonę serwera i z menu
kontekstowego wybrać opcję Właściwości
(Rysunek 7). W zakładce Zabezpieczenia
należy zaznaczyć opcję Zezwalaj na
niestandardowe zasady IPSec dla
połączeń L2TP
i podać klucz wstępny
– np. ipsecl2tp (Rysunek 8).

Konieczna jest także zmiana

konfiguracji klienta. W porównaniu z
konfiguracją dla połączeń PPTP konieczna
jest jedynie jedna zmiana, a mianowicie
w miejscu wyboru typu sieci VPN należy
zamiast PPTP wybrać IPSec/L2TP. Po

naciśnięciu przycisku Dalej pojawi się
okno wyboru uwierzytelniania. Należy
tutaj wybrać opcję Klucza wstępnego i
wpisać ten sam klucz, który podany został
w konfiguracji serwera, a więc ipsecl2tp.
Pozostałe kroki konfiguracji są identyczne
jak dla tunelu PPTP. Po dokończeniu
konfiguracji możliwe jest już zestawienie
tunelu IPSec/L2TP VPN.

Linux – L2TP/IPSec

Windows Mobile wyposażony jest jedynie
w oprogramowanie pozwalające na
zestawianie tuneli VPN z wykorzystaniem
tylko protokołów L2TP/IPSec oraz PPTP.
W związku z powyższym zaprezentuję
teraz możliwość wykorzystania systemu
Linux do terminowania tuneli VPN z
wykorzystaniem pary L2TP/IPSec. Bardziej
naturalnym rozwiązaniem dla systemu
Linux jest wykorzystanie czystych tuneli
IPSec, niestety system Windows Mobile
nie wspiera takiego rozwiązania.

Prezentowane rozwiązanie dla systemu

Linux wykorzystuje trzy elementy składowe:
protokół IPSec i demona pozwalającego
na zestawianie połączeń IPSec, protokół
L2TP wraz z odpowiednim demonem i
wreszcie demona PPP. Protokół IPSec
zapewnia bezpieczeństwo połączenia,
L2TP wraz z PPP zapewnia autoryzację
i tunelowanie ruchu. Zestawiany tunel
będzie autoryzowany z wykorzystaniem
współdzielonego klucza i będzie wymagał
autoryzacji użytkownika.

Pierwszą kwestią jest instalacja obsługi

IPSec w systemie Linux. Nie będę się tą
kwestią zajmował, jako że można znaleźć
masę podręczników traktujących na ten
temat. W szczególności zachęcam do lektury
materiałów zamieszczonych na stronie
Openswan (trzeci link w ramce W Sieci).

W niniejszym artykule przytoczę

jednak konfigurację pakietu openswan
pozwalającą na zestawianie tuneli IPSec.
Konfiguracja ta składa się z dwóch plików.
Plik ipsec.conf (Listing 1) przechowuje
ustawienia serwera IPSec, natomiast plik
ipsec.secrets (Listing 2) zawiera elementy
wymagane do autoryzacji tuneli.

Poniżej zawarty jest opis

poszczególnych elementów pliku
ipsec.conf:

version 2.0

– oznacza wersję pliku

konfiguracyjnego,

Listing 1.

Plik /etc/ipsec.conf

version 2.0
config setup
interfaces=

%defaultroute

plutodebug=none
nat_traversal=yes
conn L2TP–PSK
auth=esp
authby=secret
compress=yes
keyexchange=ike
auto=add
left=

%defaultroute

leftprotoport=17/1701
right=

%any

rightprotoport=17/1701
pfs=no

include

/etc/ipsec.d/examples/no_

oe.conf

Listing 2.

Plik /etc/ipsec.secrets

: RSA /etc/ipsec.d/private/Key.pem
192.168.10.1 : PSK

"tajny_klucz"

Listing 3.

Plik /etc/xl2tpd/xl2tpd.conf

[

global

]

listen–addr = 192.168.10.1
port = 1701

[

lns

default

]

ip range = 192.168.11.198–192.168.11.250
local ip = 192.168.10.1

require

chap = yes

refuse pap = yes

require

authentication = yes

name = LinuxVPNserver
pppoptfile = /etc/ppp/options

Listing 4.

Plik /etc/ppp/options

require

–mschap–v2

auth
mtu 500
mru 500

Listing 5.

Plik /etc/ppp/chap–secrets

user *

"tajne_haslo"

192.168.11.210

background image

OBRONA

52

HAKIN9 7–8/2008

MOBILNA OCHRONA

53

HAKIN9

7–8/2008

config setup

– definiuje początek

sekcji wspólnej pliku konfiguracyjnego,

interfaces=%defaultroute

– określa, iż zewnętrzny interfejs
sieciowy będzie interfejsem, na którym
zestawiane będą tunele VPN,

plutodebug=none

– definiuje poziom

szczegółowości logowania,

nat _ traversal=yes

– określa

możliwość łączenia się klientów, którzy
pracują za NAT’em,

conn L2TP–PSK

– definiuje początek

sekcji konfiguracji dla połączenia
L2TP–PSK, a więc połączenia dla
tunelu wykorzystującego protokół L2TP
i współdzielony klucz do autoryzacji,

auth=esp

– wybór protokołu

zabezpieczającego dane w IPSec (AH
lub ESP),

authby=secret

– określa sposób

autoryzacji na wykorzystującą
współdzielony klucz,

compress=yes

– włącza kompresję,

keyexchange=ike

– wymusza

wykorzystanie protokołu IKE do
uzgodnienia kluczy,

auto=add

– domyślna akcja dla tego

połączenia to załadowanie konfiguracji
i oczekiwanie na połączenie,

left=%defaultroute

– określa

adres lewej strony połączenia na
adres zewnętrznego interfejsu
sieciowego,

leftprotoport=17/1701

– określa

protokół oraz port lewej strony
połączenia (UDP/L2TP),

right=%any

– określa adres prawej

strony połączenia jako dowolny adres
– jest to konieczne, bowiem nigdy nie

wiadomo, z jakiego adresu urządzenie
mobilne zestawiać będzie tunel,

rightprotoport=17/1701

– określa

protokół oraz port prawej strony
połączenia (UDP/L2TP),

pfs=no

– wyłącza PFS,

include /etc/ipsec.d/examples/
no _ oe.conf

– wyłącza tzw.

oportunistyczne szyfrowanie.

W pliku ipsec.secrets znajdują się tylko
dwie linie. Pierwsza z nich określa ścieżkę
do pliku zawierającego prywatny klucz

RSA. Druga, która interesuje nas znacznie
bardziej, definiuje współdzielony klucz
dla autoryzacji tunelu. Adres IP oznacza
adres IP lewej strony tunelu – czyli
komputera, na którym konfigurowana jest
ta usługa.

Kolejnym krokiem jest instalacja

oraz konfiguracja demona protokołu
L2TP, którym może być

xl2tpd.

Po jego pobraniu (czwarty link w
Ramce W Sieci) należy dokonać jego
dekompresji, kompilacji (polecenie

make

)

i instalacji (polecenie

make install

).

Rysunek 2.

Włączenie routingu i dostepu zdalnego

Rysunek 3.

Dostep zdalny

Rysunek 1.

Konfiguracja właściwości

użytkownika

background image

OBRONA

52

HAKIN9 7–8/2008

MOBILNA OCHRONA

53

HAKIN9

7–8/2008

Po umieszczeniu konfiguracji w pliku

/etc/xl2tpd/xl2tpd.conf

(Listing

3), uruchomienia demona dokonuje się
poprzez wydanie polecenia

xl2tpd –c

/etc/xl2tpd/xl2tpd.conf

.

Poniżej zaprezentowany jest opis

konfiguracji

demona xl2tpd

:

[global]

– definiuje początek sekcji

globalnej konfiguracji,

listen–addr = 192.168.10.1

– określa adres IP, na którym demon
będzie nasłuchiwał (jest to adres
zewnętrznego interfejsu sieciowego
komputera),

port = 1701

– określa port, na którym

nasłuchuje demon,

[lns default]

– definiuje początek

sekcji domyślnej konfiguracji,

ip range = 192.168.11.198–
192.168.11.250

– definiuje pulę

adresów IP, jakie przypisywane będą
klientom mobilnym,

local ip = 192.168.10.1

– określa

lokalny adres IP połączenia,

require chap = yes

– wymusza

autoryzację CHAP,

refuse pap = yes

– zabrania

używania autoryzacji PAP,

require authentication = yes

wymaga przeprowadzenia autentykacji
klienta mobilnego,

name = LinuxVPNserver

– określa

nazwę połączenia,

pppoptfile = /etc/ppp/options

– definiuje ścieżkę dostępu do pliku z
opcjami demona ppp.

• Ostatni element konfiguracji obejmuje

definicję opcji konfiguracyjnych dla
demona ppp oraz stworzenie pliku
z hasłami dla użytkowników. Opcje
zawarte są w pliku

/etc/ppp/options

(Listing 4):

require–mschap–v2

– wymaga

autoryzacji CHAP w wersji 2,

auth

– wymaga autoryzacji, zanim

przesłane zostaną jakiekolwiek pakiety,

mtu 500

– definiuje maksymalną

jednostkę transmisyjną na 500 bajtów,

mru 500

– definiuje maksymalną

jednostkę odbioru na 500 bajtów.

W pliku

/etc/ppp/chap–secrets

(Listing

5) określa się nazwy użytkowników oraz
ich hasła. Dodatkowo w 4 kolumnie
tego pliku można przypisać adres IP dla
danego klienta mobilnego.

Konfiguracja klienta mobilnego

przebiega w dokładnie taki sam sposób,
jak w przypadku serwera działającego w
systemie Windows 2003 Server.

Linux – SSL

Kolejnym sposobem na zabezpieczenie
komunikacji pomiędzy urządzeniem
mobilnym a chronionymi zasobami
sieci firmowej jest wykorzystanie
tunelowania SSL. Najbardziej popularnym
darmowym rozwiązaniem tego typu

jest oprogramowanie OpenVPN (szósty
link w ramce W Sieci), pozwalające
na skonfigurowanie serwera tej usługi
zarówno dla systemu Linux, jak i Windows.
W tym artykule przedstawię konfigurację
dla systemu Linux.

System Windows Mobile nie wspiera

tunelowania SSL. Dostępny jest jednak
darmowy klient oprogramowania
OpenVPN przeznaczony dla tego systemu
mobilnego (drugi link w Ramce W Sieci).

Podobnie, jak dla poprzedniej

konfiguracji, nie będę opisywał tutaj
procesu instalacji oprogramowania ani
na serwerze, ani na urządzeniu mobilnym,
skupię się natomiast na konfiguracji
obu stron połączenia. Proces instalacji
przedstawiony jest w dokumentacji na
stronach internetowych obu projektów.
Dokumentacja instalacji zawiera także
między innymi opis procesu generowania
plików zawierających klucze prywatne oraz
certyfikaty, niezbędne do autoryzacji stron
połączenia.

Tworzone tunele będą rutowalnymi

tunelami IP. Cały ruch generowany
przez urządzenie mobilne tunelowany
będzie do serwera usługi. Użytkownicy
autoryzowani będą z wykorzystaniem
certyfikatów, a sam tunel dodatkowo
zabezpieczony zostanie także statycznym
kluczem.

Na Listingu 6. przedstawiony jest

plik konfiguracyjny serwera OpenVPN
pracującego w systemie Linux. Plik ten
domyślnie zapisany jest w lokalizacji

/etc/OpenVPN/server.conf

.

Listing 6.

Plik /etc/OpenVPN/server.conf

local 192.168.10.1
port 1194
proto udp
dev tun
ca /etc/OpenVPN/keys/ca.crt
cert /etc/OpenVPN/keys/server.crt
key /etc/OpenVPN/keys/server.key
dh /etc/OpenVPN/keys/dh2048.pem
server 10.10.10.0 255.255.255.0
ifconfig–pool–persist ipp.txt
push

"redirect–gateway def1"

push

"dhcp–option DNS 192.168.10.5"

keepalive 10 120
tls–auth ta.key 0
comp–lzo

max

–clients 30

persist–key
persist–tun
status OpenVPN–status.log

Rysunek 4.

Serwer sieci VPN

background image

OBRONA

54

HAKIN9 7–8/2008

MOBILNA OCHRONA

55

HAKIN9

7–8/2008

Znaczenie poszczególnych elementów

konfiguracji jest następujące:

local 192.168.10.1

– oznacza

adres IP, na którym serwer nasłuchuje
na połączenia – przykładowy adres
na potrzeby tego artykułu należy do
puli adresów prywatnych, choć z
oczywistych względów zawsze będzie
to adres publiczny,

port 1194

– określa port, na którym

serwer nasłuchuje na połączenia; port
1194 jest standardowym portem, na
którym pracuje OpenVPN,

proto udp

– definiuje protokół, z jakiego

korzysta serwer OpenVPN (może tutaj
pojawić się także protokół TCP),

dev tun

– oznacza, iż tworzony tunel

jest rutowalnym tunelem IP,

ca /etc/OpenVPN/keys/
ca.crt

– definiuje położenie pliku

zawierającego certyfikat centrum
certyfikującego podpisującego
certyfikaty służące do autoryzacji
serwera oraz użytkowników,

cert /etc/OpenVPN/keys/
server.crt

– definiuje położenie pliku

zawierającego certyfikat serwera,

key /etc/OpenVPN/keys/
server.key

– definiuje położenie pliku

zawierającego klucz prywatny serwera,

dh /etc/OpenVPN/keys/
dh2048.pem

– definiuje położenie

pliku zawierającego parametry dla
algorytmu Diffie’go–Hellman’a,

server 10.10.10.0 255.255.255.0

– określa sieć prywatną, jaka dostępna
będzie dla klientów mobilnych.
Pierwszy adres w tej sieci (w tym
przypadku 10.10.10.1) będzie przypisany
serwerowi, pozostałe adresy zostaną
rozdysponowane pomiędzy klientów
mobilnych,

ifconfig–pool–persist ipp.txt

– określa położenie pliku, w którym
zapisywane są adresy IP przypisane
do poszczególnych klientów
– pozwala to na przypisanie danemu
użytkownikowi zawsze tego samego
adresu IP,

push "redirect–gateway def1"

– określa, iż cały ruch z urządzenia
mobilnego ma być tunelowany do
serwera,

push "dhcp–option DNS
192.168.10.5"

– określa adres

IP serwera DNS, jaki ma zostać
skonfigurowany dla urządzenia
mobilnego,

keepalive 10 120

– definiuje

częstość wysyłania pakietów
sprawdzających, czy tunel jest ciągle
zestawiony; pakiety te wysyłane są co
10 sekund, a brak odpowiedzi przez
120 sekund oznacza, iż komunikacja
została zerwana,

tls–auth ta.key 0

– określa

położenie pliku zawierającego
dodatkowy klucz statyczny
zabezpieczający połączenie, druga

wartość w przypadku serwera zawsze
musi być równa 0, w przypadku klienta
zaś 1,

comp–lzo

– zezwala na kompresję

tunelowanego ruchu,

max–clients 30

– definiuje

maksymalną ilość jednocześnie
podłączonych klientów,

persist–key

– pozwala ponownie

nie odczytywać kluczy po restarcie
serwera,

persist–tun

– pozwala ponownie nie

konfigurować wirtualnego interfejsu tun
po restarcie serwera,

status OpenVPN–status.log

– określa położenie pliku, w którym
co minutę umieszczany jest spis
aktualnych połączeń.

Listing 7. prezentuje plik konfiguracyjny
umieszczony na urządzeniu mobilnym.
Bardzo istotnym elementem tego pliku
jest sposób definiowania ścieżek dostępu
do plików z kluczami oraz certyfikatami.
Standardowo plik ten powinien zostać
zapisany w lokalizacji \Program
Files\OpenVPN\config
. Znaczenie
poszczególnych elementów konfiguracji,
nie prezentowanych wcześniej, jest
następujące:

client

– oznacza, że jest to

konfiguracja klienta i że pewne
parametry konfiguracyjne będą
pobierane z serwera,

Rysunek 5.

Określanie puli adresowej dla połączeń mobilnych

Listing 7.

Konfiguracja OpenVPN dla

klienta

client
dev tun
proto udp
remote 192.168.10.1 1194
resolv–retry infinite
nobind
persist–key
persist–tun
ca

"

\\

Program Files

\\

OpenVPN

\\

config

\\

ca1.crt"

cert

"

\\

Program Files

\\

OpenVPN

\\

config

\\

mklamra1.crt"

key

"

\\

Program Files

\\

OpenVPN

\\

config

\\

mklamra1.key"

ns–cert–type server
tls–auth

"

\\

Program Files

\\

OpenVPN

\\

config

\\

ta1.key"

1

comp–lzo
verb 3

background image

OBRONA

54

HAKIN9 7–8/2008

MOBILNA OCHRONA

55

HAKIN9

7–8/2008

remote 192.168.10.1 1194

– definiuje

adres (lub nazwę) serwera oraz port,
na jakim ten nasłuchuje,

resolv–retry infinite

– pozwala

na nieskończone próbowanie
odwzorowania nazwy serwera na adres
IP,

nobind

– oznacza brak konieczności

pracy klienta na określonym porcie,

ns–cert–type server

– informuje, iż

pole nsCertType w certyfikacie serwera
ustawione jest na wartość server,
pozwala to na ochronę przed atakami
pewnego typu,

verb 3

– definiuje poziom

szczegółowości logowania.

Zestawienie tunelu po zainstalowaniu
aplikacji OpenVPN przeznaczonej dla
systemu Windows Mobile jest bardzo
proste. Należy kliknąć na ikonę aplikacji
znajdującą się w prawym dolnym
rogu ekranu, a następnie w menu
Uruchom z konfiguracji trzeba wybrać
odpowiednią konfigurację, którą chcemy
wykorzystać do zestawienia tunelu.
Następnie konieczne jest podanie hasła
zabezpieczającego klucz prywatny.
Należy tu wspomnieć, iż możliwe
jest jednoczesne korzystanie z kilku
konfiguracji aplikacji OpenVPN.

Urządzenia firmy

WatchGuard – SSL

Bardzo wiele rozwiązań sprzętowych,
służących do zabezpieczania sieci
komputerowych, umożliwia zestawianie
tuneli VPN. Zdecydowana większość z
nich oferuje jednak zestawianie tuneli
z wykorzystaniem PPTP czy protokołu
IPSec.

Ze względu na prostotę oraz

pospolitość stosowania rozwiązania PPTP,

nie ma sensu przytaczać tutaj konkretnych
modeli urządzeń wspierających tę metodę
tunelowania ruchu ani sposobu jej
konfiguracji. Najczęściej proces konfiguracji
sprowadza się do kilku kliknięć i jest
doskonale udokumentowany w podręczniku
użytkownika.

Z kolei możliwość zestawiania

tuneli VPN z wykorzystaniem czystego
protokołu IPSec jest o tyle nieciekawa
z punktu widzenia niniejszego artykułu,
iż – jak już wcześniej zaznaczyłem
– system Windows Mobile nie wspiera tej
technologii.

Wydaje mi się, że warte omówienia

jest natomiast rozwiązanie firmy
WatchGuard, zaprezentowane w
najnowszym oprogramowaniu
dedykowanym dla urządzeń
Firebox. Rozwiązanie to cechuje się
wyjątkowością i wysoką elastycznością
zastosowań. Mam tu na myśli możliwość
zestawiania tuneli VPN z wykorzystaniem
technologii SSL. Pisząc o wyjątkowości
i elastyczności rozwiązania, miałem
przede wszystkim na myśli cechę
kompatybilności serwera SSL VPN
z rozwiązaniem OpenVPN, zarówno
dedykowanym dla komputerów, jak i
urządzeń mobilnych.

Taka kompatybilność pozwala

na wykorzystanie urządzenia
firmy WatchGuard nie tylko jako
kompleksowego rozwiązania UTM, ale

także w roli wszechstronnego terminatora
tuneli VPN, pozwalającego nie tylko na
zestawianie tuneli IPSec i PPTP, ale także
tuneli SSL. I – co jest wyjątkowe – można
z powodzeniem zestawiać tunele także dla
urządzeń mobilnych.

Standardowo urządzenia firmy

WatchGuard pozwalają na pobranie
dedykowanego programowego klienta
służącego do zestawiania tuneli SSL.
W instalatorze przeznaczonym dla
systemu Windows zawarte są, oprócz
samego oprogramowania, także pliki
konfiguracyjne. Niestety, nie jest możliwe
wyekstrahowanie w prosty sposób plików
konfiguracyjnych z instalatora. Aby móc
wykorzystać oprogramowanie OpenVPN
przeznaczone dla urządzeń mobilnych
do zestawienia tunelu VPN do urządzenia
Firebox, konieczne jest pobranie
plików konfiguracyjnych bezpośrednio
z urządzenia. Po podłączeniu się do
urządzenia narzędziem służącym do
monitorowania jego pracy – Firebox
System Manager – należy w zakładce
Status Report nacisnąć przycisk
Support. Pozwoli to na pobranie
archiwum, w którym znajduje się
między innymi plik client.wgssl. Plik ten
jest de facto archiwum tar.gz. Po jego
rozpakowaniu możliwe jest uzyskanie
plików konfiguracyjnych klienta dla
oprogramowania OpenVPN, jak również
niezbędnych certyfikatów.

Rysunek 6.

Wybór uwierzytelniania

Rysunek 7.

Konfiguracja właściwości routingu

background image

OBRONA

56

HAKIN9 7–8/2008

Na Rysunku 9. przedstawiona

jest konfiguracja serwera. Jak widać
w zakładce General, dla użytkownika
dostępne są dwa zewnętrzne interfejsy
sieciowe. W przypadku, gdy jeden z
nich nie jest dostępny (np. poprzez
uszkodzenie łącza), cały ruch tunelowany
jest z wykorzystaniem drugiego
interfejsu. Wybrana została także opcja
pozwalająca na tunelowanie tylko ruchu
kierowanego do sieci chronionej. Możliwe
jest także tunelowanie całego ruchu.
W zakładce Advanced zdefiniowane
zostały podstawowe parametry działania
serwera – takie, jak wykorzystywany
protokół warstwy transportowej, port na
którym serwer nasłuchuje na połączenia,
algorytm autentykacji oraz szyfrowania,
wartości parametru keepalive oraz adresy
serwerów WINS i DNS.

Listing 8. prezentuje generowaną

automatycznie konfigurację klienta.
Poniżej przedstawione zostały te opcje
konfiguracyjne klienta, które nie zostały
wcześniej omówione:

tls–remote "/O=WatchGuard _
Technologies/OU=Fireware/
CN=Fireware _ SSLVPN _ Server"

– pozwala na połączenie tylko z
serwerem, który posiada w certyfikacie

wartości podane jako argument tej
opcji konfiguracyjnej,

remote–cert–eku "TLS Web Server
Authentication"

– wymaga podpisu

certyfikatu serwera z rozszerzonym
wykorzystaniem klucza,

mute 20

– definiuje, ile następujących

bezpośrednio po sobie komunikatów
tej samej treści może pojawić się w
logach,

cipher BF–CBC

– określa używany w

transmisji sposób szyfrowania danych,

auth MD5

– definiuje algorytm

służący do autentykacji pakietów,

float 1

– pozwala na zmianę adresu

IP oraz portu po zestawieniu tunelu,

o ile ponowny proces autoryzacji
przebiegnie poprawnie,

mute–replay–warnings

– uniemożliwia

pojawianie się w logach komunikatów o
powtórzonych pakietach,

auth–user–pass

– określa, że

użytkownik zostanie zautoryzowany z
wykorzystaniem nazwy użytkownika i
hasła,

explicit–exit–notify 2

– pozwala

klientowi maksymalnie dwukrotnie
wysłać informację o zamknięciu tunelu
– serwer nie musi w takim wypadku
czekać na wystąpienie opóźnienia
czasowego zdefiniowanego w
keepalive, aby zamknąć tunel.

Rysunek 9.

Konfiguracja serwera WatchGuard SSL Mobile VPN

Rysunek 8.

Określanie klucza wstępnego

Listing 8.

Konfiguracja klienta

WatchGuard SSL Mobile VPN

dev tun
client
proto udp
ca ca.crt
cert client.crt
key client.pem
tls–remote

"/O=WatchGuard_Technologies/

OU=Fireware/
CN=Fireware_
SSLVPN_Server"

remote–cert–eku

"TLS Web Server

Authentication"

remote 192.168.10.1 1194
remote 192.168.10.5 1194
persist–key
persist–tun
verb 0
mute 20
keepalive 10 60
cipher BF–CBC
auth

MD5

float

1

nobind
mute–replay–warnings
auth–user–pass
explicit–

exit

–notify 2

background image

MOBILNA OCHRONA

57

HAKIN9

7–8/2008

Zestawienie połączenia z wykorzystaniem
urządzenia mobilnego przebiega
identycznie, jak w konfiguracji Linux–SSL.

Podsumowanie

W niniejszym artykule przedstawiłem kilka
sposobów zabezpieczania komunikacji
pomiędzy urządzeniami mobilnymi, a
chronioną siecią firmową. Mam nadzieję,
iż wielu administratorów rozważy ich
zastosowanie, a powyżej prezentowane
rozwiązania ułatwią im wdrożenie tego typu
zabezpieczeń.

W przypadku urządzeń mobilnych

zabezpieczanie komunikacji jest sprawą
bardzo istotną. Wynika to przede wszystkim
z faktu mobilności tych urządzeń i
wykorzystywaniu ich właściwie w dowolnym
miejscu. Bardzo często korzysta się z
darmowych, niezabezpieczonych sieci
bezprzewodowych. W takim przypadku
wymagane jest szyfrowanie całego ruchu
generowanego z urządzenia mobilnego, a
przede wszystkim ruchu kierowanego do
zasobów sieci firmowej.

Warto w tym miejscu wspomnieć także

o programowych dystrybucjach zapór
sieciowych. Jedną z takich dystrybucji jest
Endian Firewall community (siódmy link w
ramce W Sieci). Rozwiązanie to umożliwia
bardzo łatwą konfigurację serwera tuneli
SSL VPN. De facto jest to dystrybucja
Linuksa z uruchomionym serwerem
OpenVPN. Konfiguracja tego serwera jest
jednak ułatwiona dzięki zastosowaniu
graficznego narzędzia konfiguracyjnego.
Często żmudne i czasochłonne
instalowanie i konfigurowanie systemu

Linux także nie jest konieczne, ponieważ
dystrybucja Endian Firewall instaluje się
w ciągu kilku minut, a całą konfigurację
wykonuje się z wykorzystaniem
przyjemnego i intuicyjnego graficznego
interfejsu użytkownika.

Z kolei rozwiązania sprzętowe

(jak prezentowane rozwiązanie firmy
WatchGuard), oprócz intuicyjnego interfejsu
graficznego, oferują także wsparcie
techniczne producenta. W przypadku
dużych instalacji, w których wymagany jest
wysoki poziom niezawodności rozwiązania,
także są warte rozważenia.

Marcin Klamra

Marcin Klamra, Specjalista ds. Bezpieczeństwa

firmy CCNS SA, asystent w Instytucie Teleinformatyki

Politechniki Krakowskiej. Od 1999 roku zajmuje się

zagadnieniami administracji systemów komputerowych

i bezpieczeństwem w sieciach komputerowych. Na

stałe związany z firmą CCNS SA, w której zajmuje

się rozwiązaniami bezpieczeństwa sieciowego. Jako

Certyfikowany Trener WatchGuard Inc. prowadzi szkolenia

w Autoryzowanym Centrum Szkoleniowym WatchGuard

stworzonym przez firmę CCNS SA.

Swoją wiedzę pogłębia uczestnicząc jako asystent

naukowy w pracach badawczych Instytutu Teleinformatyki

Politechniki Krakowskiej.

Kontakt z autorem: mklamra@ccns.pl

W Sieci

http://www.microsoft.com/poland/

technet/article/art0066_01.mspx,

http://ovpnppc.ziggurat29.com/ovpnppc–

main.htm,

http://www.openswan.org,
• http://www.xelerance.com/software/xl2tpd,
• http://www.watchguard.com,
• http://www.openvpn.net,
• http://www.endian.com/en/community.

R

E

K

L

A

M

A

background image

58

OBRONA

HAKIN9 7-8/2008

O

czywistym jest, że typowe portale
internetowe mogą lekko odstąpić
od tej zasady i przedłożyć prostotę

użytkowania nad bezpieczeństwo, jednak w
przypadku instytucji finansowych takich, jak banki,
proces autoryzacji tożsamości musi zapewniać
maksymalny poziom ochrony danych osobowych,
informacji dotyczących stanu konta, historii
rachunku itp. Celem tego artykułu jest obiektywne
spojrzenie na obecne systemy informatyczne
wcześniej wymienionych instytucji, pokazanie
ich słabych i mocnych stron oraz po części
przedstawienie firm, które pracują w domenie
bezpieczeństwa internetowego i świadczą usługi
z zakresu wdrażania kompleksowych systemów
zabezpieczeń.

Autoryzacja tożsamości

Proces autoryzacji tożsamości, powszechnie
nazywany etapem logowania, jest jednym z
najważniejszych modułów aplikacji webowych.
Niestety, jest on zwykle mniej lub bardziej
zaniedbywany, przez co dane osobowe
użytkowników są potencjalnie narażone na
kradzież.

System autoryzacyjny powinien wymagać od

nas kilku rzeczy:

• czegoś, co wiemy (np. hasło, identyfikator),
• czegoś, co posiadamy (np. karta kredytowa),
• czegoś, z czym się utożsamiamy (np. odcisk

palca, skan siatkówki oka).

GRZEGORZ

PEŁECHATY

Z ARTYKUŁU

DOWIESZ SIĘ

z jakich etapów powinien

składać się bezpieczny system

autoryzacji,

jak uniknąć kradzieży danych

osobowych,

którym systemom bankowym

możesz zaufać przy

dokonywaniu transakcji online,

jakim firmom można powierzyć

proces wdrażania zabezpieczeń

aplikacji webowych.

CO POWINIENEŚ

WIEDZIEĆ

powinieneś mieć rozeznanie

w sposobie działania funkcji

skracających,

jak działa protokół SSL i jakie

możliwości zapewnia jego

stosowanie.

Bazując na tych danych, możemy wyróżnić 3
sposoby autoryzacji:

• jednoetapową, wymagającą tylko czegoś, co

wiemy,

• dwuetapową, wymagającą od nas czegoś, co

wiemy i czegoś, co posiadamy,

• wieloetapową, wymagającą równocześnie np.

identyfikatora, hasła, karty kredytowej i odcisku
palca.

Każdy z powyższych sposobów narażony jest
na ataki – zarówno po stronie klienta, jak i
podczas transmisji danych. Znanych jest całkiem
sporo metod przejęcia informacji przez osoby
trzecie, przed którymi solidny system powinien
być zabezpieczony. Opiszę teraz te najczęściej
wykorzystywane, a zarazem najbardziej
niebezpieczne.

Phishing

Jest to atak polegający na wyłowieniu poufnych
danych poprzez podszywanie się pod osobę lub
firmę posiadającą do nich autoryzowany dostęp.
Ten typ ataku oparty jest na inżynierii społecznej.
Atakujący może podmienić autentyczną stronę
banku na swój własny serwis i w ten sposób
pozyskać od użytkownika potrzebne dane. Adres
takiej strony jest najczęściej łudząco podobny
do oryginalnego – lub też po prostu osoba
atakująca infekuje serwery DNS, w wyniku czego
błędnie rozwiązują one adresy URL (sposób

Stopień trudności

Bezpieczne

instytucje

finansowe

Wraz z rozwojem aplikacji webowych aspekt bezpieczeństwa

stał się zagadnieniem istotnym zarówno dla projektantów

oprogramowania, jak i dla użytkowników końcowych, którym z

tego oprogramowania przyjdzie korzystać.

background image

59

BEZPIECZNE INSTYTUCJE FINANSOWE

HAKIN9

7-8/2008

działania napastnika zobrazowany jest
na Rysunku 1). Znacząca większość
instytucji finansowych na świecie
nie oferuje własnych mechanizmów
ochronnych przed tym atakiem, co jest
poważnym błędem. Odstępstwem jest
system Banku Amerykańskiego (Bank of
America) i polskiego banku BGŻ, gdzie po
wprowadzeniu identyfikatora wyświetlany
jest symboliczny obrazek, wybrany
podczas rejestracji. Daje to gwarancję na
połączenie z oryginalnym serwerem, a nie
podszytą stroną. Najnowsze przeglądarki
internetowe również udostępniają moduły
wykrywające próbę takiego oszustwa,
informując użytkownika o ewentualnych
zastrzeżeniach co do autentyczności
witryny. Przed phishingiem użytkownik może
się również do pewnego stopnia obronić
poprzez używanie zaufanych serwerów
DNS, do których zaliczamy np. OpenDNS
(serwer główny: 208.67.222.222, serwer
alternatywny: 208.67.220.220).

Człowiek pomiędzy

(man-in-the-middle)

Schemat tego ataku przedstawiony jest
na Rysunku 2. – atakujący występuje tutaj
w roli pośrednika pomiędzy serwerem a
klientem. Wszystkie dane przechodzą przez
jego komputer w formie niezaszyfrowanej,
nawet przy korzystaniu z połączenia
SSL. Jak to możliwe? Otóż protokół SSL
daje nam gwarancję na bezpieczne
połączenie z witryną, jednak nie daje
gwarancji na to, że połączyliśmy się z tą
witryną, z którą zamierzaliśmy. Co prawda
zabezpieczeniem są tutaj certyfikaty, jednak
podstawienie własnych – nieznacznie
różniących się od oryginałów – jest rzeczą
dość prostą. Zarówno IE, jak i Firefox
sygnalizują nawiązanie bezpiecznego
połączenia, pomimo, że w tej samej chwili
człowiek pomiędzy odczytuje wszystkie
nasze dane. Atak ten jest znany od dawna
– przy połączeniach HTTP był on trywialny
do przeprowadzenia, w przypadku HTTPS
jest tylko trochę bardziej skomplikowany
(co zostanie udowodnione w podpunkcie
Scenariusz ataku na system autoryzacji
tożsamości
). Nie istnieje jedno, w 100%
pewne zabezpieczenie przed tym
atakiem, jednak powinniśmy przynajmniej
w minimalnym stopniu utrudnić jego
wykonanie. Dobrym sposobem jest
generowanie skrótów danych krytycznych,

takich jak hasła. W tym celu poleciłbym
zastosowanie algorytmu HMAC w oparciu
o hasła jednorazowe (patrz Ramka).

Oprogramowanie

szpiegowskie

Kolejnym czyhającym na użytkownika
niebezpieczeństwem jest oprogramowanie
szpiegowskie, zainstalowane na jego
własnym komputerze. O ile kiedyś
przechwytywało ono jedynie wciśnięte
klawisze, w dzisiejszych czasach
oprogramowanie to jest znacznie
groźniejsze. Przechwytując zrzuty ekranu,
śledząc ruch myszki itp., atakujący jest w
stanie wykraść dane dotyczące logowania.

Zdolni projektanci systemów bankowych
wymyślają co chwile nowe zabezpieczenia
w tym kierunku, w polskim Internecie
niestety zatrzymały się one na poziomie
statycznej wirtualnej klawiatury, która nijak
jest w stanie ochronić użytkownika przed
wykradnięciem danych. Dobre rozwiązanie
zaprezentował CitiBank, umieszczając
wirtualną klawiaturę z losowym położeniem
znaków, co skutecznie chroni przed
większością ataków o tym charakterze.

Scenariusz ataku na

system autoryzacji tożsamości

Przedstawię teraz prosty scenariusz ataku na
bezpieczny system logowania. Celem będzie

Keyed-Hash Message Authentication Code

Teoria

Algorytm HMAC działa bardzo podobnie do funkcji skracających – z tym wyjątkiem, że do
wygenerowania tablicy wynikowej potrzebuje dodatkowego klucza szyfrującego. Dzięki temu wynik
funkcji może być weryfikowany pod względem autentyczności i aktualności. Wartość wynikową
obliczamy ze wzoru:

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

gdzie h jest funkcją skracającą, K jest naszym kluczem, a m wiadomością do zaszyfrowania.
Siła algorytmu HMAC zależy od złożoności klucza (K) oraz od funkcji skracającej (h). Tak samo, jak
w przypadku algorytmów md5, sha1 itp., odszyfrowanie danych zaszyfrowanych za pomocą tego
algorytmu jest z matematycznego punktu widzenia odpowiednio trudne.

Zastosowanie

Powyższy algorytm może znaleźć zastosowanie w procesie autoryzacji tożsamości, w którym
kluczem szyfrującym będzie hasło jednorazowe. Transmitowanie w ten sposób najważniejszych
danych skutecznie obroni nas przed kradzieżą danych osobowych np. w skutek ataku man-in-the-
middle.

Rysunek 1.

Zasada przeprowadzania ataku powszechnie znanego jako phishing

����

background image

60

HAKIN9 7-8/2008

61

HAKIN9

7-8/2008

system bankowy. Atak dokonany zostanie
w sieci lokalnej, na bramie zainstalowany
jest program Burp Proxy, pozwalający
dokonać ataku typu man-in-the-middle. Na
komputerze działającym w sieci lokalnej
uruchamiamy stronę internetową banku.
Przeglądarka nawiązuje w tym momencie

bezpieczne połączenie z naszym proxy
(Burp Proxy) z wykorzystaniem protokołu
SSL, podczas etapu inicjacyjnego zostają
wymienione klucze publiczne oraz ustalane
są algorytmy szyfrujące. Użytkownik jest
pewien, że połączył się z rzeczywistą witryną
banku. Burp po nawiązaniu połączenia z

klientem łączy się z faktyczną stroną banku
i od tego momentu działa w roli pośrednika
pomiędzy nieświadomym niczego
użytkownikiem a serwerem bankowym. W
związku z tym, że klient szyfruje dane kluczem
publicznym Burp'a, jesteśmy w stanie je
przechwycić w formie niezaszyfrowanej.
Rysunek 3. obrazuje konsekwencje braku
zabezpieczenia przed tego typu atakiem.

Implementacja bezpiecznego

procesu autoryzacji

Pokazałem już, jak w prosty sposób można
skompromitować obecne zabezpieczenia
w systemach logowania. Statystycznie w
dzisiejszych czasach najpowszechniejsza
wydaje się być autoryzacja jednoetapowa,
co uwarunkowane jest minimalnym
kosztem jej implementacji oraz największą
dostępnością dla użytkowników, dlatego też
przedstawię przykładową architekturę tego
właśnie systemu.

• Nawiązujemy połączenie z serwerem

(oczywiście dane są transmitowane
poprzez bezpieczny tunel SSL).

• Po stronie serwera generujemy hasło

jednorazowe (OTP) i przesyłamy je do
klienta – najlepiej za pomocą innego
kanału komunikacyjnego (np. w formie
SMSa).

• Pobieramy od użytkownika identyfikator

i hasło, po stronie klienta szyfrujemy
hasło algorytmem HMAC(otp,
password).

• Identyfikator i zaszyfrowane hasło

przesyłamy do serwera.

• Serwer po otrzymaniu identyfikatora

użytkownika porównuje
zaszyfrowane hasło ze swoim

W Sieci

http://www.rsa.com – jedna z najbardziej

renomowanych firm działających w
domenie bezpieczeństwa internetowego,

http://www.maximussoft.net – polska

firma wdrażająca bezpieczne systemy
autoryzacji tożsamości,

http://portswigger.net/proxy

– program napisany w Javie,
umożliwiający wykonywanie wielu
ataków w sieci lokalnej, np. man-in-
the-middle
, który został opisany w tym
artykule,

http://www.opendns.com – strona

domowa OpenDNS.

Rysunek 2.

Zasada przeprowadzania ataku typu man-in-the-middle

Rysunek 3.

Konsekwencje braku zabezpieczeń przed atakiem man-in-the-middle

OBRONA

background image

60

HAKIN9 7-8/2008

61

HAKIN9

7-8/2008

własnym skrótem. Jeżeli dane są
identyczne, proces autoryzacji
zostaje zakończony pomyślnie, a
użytkownik przekierowywany jest na
uwierzytelnioną stronę.

Firmy pracujące

w domenie bezpieczeństwa

Jeżeli mowa była już o lukach w
zabezpieczeniach, warto wspomnieć
również o sposobie ich wyeliminowania.
Polska jest krajem dosyć specyficznym pod
względem zaufania do firm działających w
domenie bezpieczeństwa, zajmujących się
wdrażaniem solidnych systemów autoryzacji.
O ile na całym świecie normą jest zlecanie
podwykonawstwa systemów zabezpieczeń
firmom działającym w tym sektorze rynku,
to w Polsce sprawa ta jest traktowana
powierzchownie i system taki wykonywany jest
łącznie z resztą projektu – w konsekwencji
czego otrzymujemy zazwyczaj aplikacje słabo
zabezpieczone, pozwalające w łatwy sposób
przechwycić poufne dane przez osoby
trzecie. Do firm godnych polecenia można
zaliczyć np. RSA lub polską firmę Maximus
Soft, posiadającą opatentowany w Stanach
Zjednoczonych system wieloetapowej
autoryzacji tożsamości net-auth. Adresy WWW
tych firm można znaleźć w Ramce W Sieci.

Podsumowanie

Mam nadzieję, że ten krótki – acz treściwy
– artykuł zweryfikował przynajmniej po
części Wasze poglądy na temat tego,
czym bezpieczeństwo tak naprawdę jest i
jak łatwo dopuścić do kradzieży własnych
danych osobowych, tak istotnych w
systemach instytucji finansowych. Istotnym
jest, aby poświęcić szczególną uwagę temu
zagadnieniu i w jak największym stopniu
ochronić się przed atakami, zwłaszcza
tymi opisanymi w artykule. Solidny system
autoryzacyjny jest podstawą każdej aplikacji
i pełni rolę miernika wiarygodności w
oczach klientów, dlatego też jego projekt i
implementację powinno zlecać się firmom z
odpowiednimi kwalifikacjami.

Grzegorz Pełechaty

Autor jest programistą, zajmującym się rozwojem

systemów operacyjnych. Hobbystycznie interesuje się

sprawami bezpieczeństwa aplikacji webowych. Pracował

wielokrotnie jako doradca ds. bezpieczeństwa przy

wdrażaniu dużych systemów informatycznych. Wolne

chwile spędza na rozwoju wolnego oprogramowania,

oglądaniu dobrego kina japońskiego i czytaniu książek.

Kontakt z autorem: g.pelechaty@gmail.com

background image

62

OBRONA

HAKIN9 7-8/2008

N

a łamach hakin9 bardzo często
pojawią się tematy związane z
bezpieczeństwem kodu i tworzeniem

bezpiecznych aplikacji. Każdy z autorów
wskazuje wiele miejsc, w których mogą wystąpić
problemy mogące spowodować niestabilne
działanie systemu, a także stwarzające
możliwość włamania do systemu. Jednym z
takich zagrożeń i grzechów programistycznych
jest przepełnienie bufora. Artykuł ma na celu
zebranie dostępnej wiedzy na ten temat i
przybliżenie tego zagrożenia.

Czym zatem jest przepełnienie bufora i kiedy

możemy się z taką sytuacją spotkać? Najkrócej
rzecz ujmując, przepełnieniem bufora jest
próba zapisania większej ilości elementów niż
dopuszcza to rozmiar bufora, z którym pracujemy.
Jest to główna przyczyna wielu problemów w
ogromnej ilości programów. Programiści bardzo
często nie zdają sobie sprawy z tego zagrożenia
i nie zwracają uwagi na bufor. Źle deklarowane
wartości tablic, nieodpowiednio przekazywane
parametry funkcji, nieprawidłowy znak,
przepełnienie licznika – to najczęstsze problemy
i potencjalne przyczyny umożliwiające włamanie
się do naszego programu. Problem ten dotyczy
głównie kodu natywnego (C/C++), a także

API

systemu operacyjnego. Przykłady podawane są
w

Visual C++ .NET

, wykorzystywany i omawiany

będzie kompilator

C++.NET

.

Przyjrzyjmy się następującemu fragmentowi

kodu (Listing 1.): W kodzie tym mamy kilka

ARTUR ŻARSKI

Z ARTYKUŁU

DOWIESZ SIĘ

o problemach wynikających z

przepełnienia bufora oraz braku

jego obsługi,

dodatkowo przedstawione są

aspekty jak chronić się przed

tego rodzaju problemami.

CO POWINIENEŚ

WIEDZIEĆ

znać język C++ oraz podstawy

asemblera,

warto również znać podstawy

platformy .NET, aby można

było skorzystać ze wszystkich

omawianych elementów.

elementów: adres zwrotny, dwie zmienne (jedna
typu char, a druga – int), a także wykonujemy
funkcję kopiowania ciągu znaków. W przypadku,
gdy przekażemy jako parametr prosty wyraz, np.
Test, wszystko zadziała prawidłowo. Natomiast w
przypadku parametru dłuższego niż cztery znaki
spowodujemy błąd przepełnienia bufora.

Jednym z najbardziej znanych przypadków

wykorzystania przepełnienia bufora jest robak
CodeRed. Taki rodzaj przepełnienia bufora jest
bardzo często spotykany w aplikacjach opartych
o Microsoft Windows, ponieważ bardzo wiele
aplikacji używa kodowania znaków w Unicode
oraz

ANSI

(co nie jest powodem stwierdzenia,

że to wina systemu operacyjnego).

WCHAR

jest

znakiem o długości dwóch bajtów, używanym
do reprezentowania znaków w Unicode. Liczba
znaków, która może być dekodowana przy
użyciu

DecodeURLEscapes

, jest określona przez

wartość

sizeof wcsAttribute

, która uzyskuje

tę wielkość bufora w bajtach, a nie znakach typu

WCHAR

. W rezultacie

sizeof wcsAttribute

ma wartość 400 bajtów, czyli dwa razy więcej
niż jest spodziewane. Poniżej fragment kodu,
który jest odpowiedzialny za opisaną procedurę
(Listing 2.):

W związku z tym może lepiej jest wykonać

następującą linię kodu:

wwif ( cchAttribute >= sizeof

wcsAttribute / sizeof
wcsAttrbibute[0])

Stopień trudności

Przepełnienie

bufora

Często tworząc oprogramowanie zastanawiamy się nad jego

bezpieczeństwem, ale czy zawsze? Szczególnie wrażliwy na

bezpieczeństwo jest sam kod naszej aplikacji, dlatego warto

zwrócić uwagę na jedno z największych zagrożeń, jakie czyha na

programistę – przepełnienie bufora.

background image

63

OBRONA

HAKIN9

7-8/2008

PRZEPEŁNIENIE BUFORA

bo być może kiedyś nagle wzrośnie
rozmiar

WCHAR

albo zmieni się typ – czyli

nasz kod w tym przypadku wyglądałby w
sposób następujący (Listing 3.):

Innym przykładem jest kolejny dobrze

znany robak Blaster, który wykorzystuje
mechanizm kopiowania większej
ilości bajtów, niż pozwala na to obszar
docelowy (Listing 4.):

Architektura x86 i stos

Aby w pełni zrozumieć, jak może dojść
do przepełnienia bufora oraz jak działają
testy bezpieczeństwa, warto przyjrzeć
się budowie stosu. W architekturze x86
stos rośnie w dół, co oznacza, że nowsze
dane są zapamiętywane pod adresami
niższymi niż elementy wstawione na stos

wcześniej. Pojedyncze wywołanie funkcji
spowoduje, że jest tworzona nowa ramka
stosu. Jego budowa przedstawia się
następująco (wg kolejności malejących
adresów):

• parametry funkcji,
• adres powrotu funkcji,
• wskaźnik ramki,
• ramka procedur obsługi wyjątków,
• lokalnie zadeklarowane zmienne i

bufory,

• rejestry zachowane przez funkcję

wywołaną.

Jeśli przyjrzymy się budowie stosu,
będziemy mogli stwierdzić, co
przepełnienie bufora może nadpisać. Po

pierwsze – inne zmienne, które zostały
zaalokowane przed buforem, adres
powrotu oraz parametry funkcji i wskaźnik
ramki. Aby możliwe było przejęcie kontroli
nad programem, wystarczy wstawić
odpowiednią wartość do ciągu danych,
które są ładowane później do rejestru
EIP. Najczęściej taką wartością jest adres
zwrotny funkcji. Osoby, które wykorzystują
tego typu luki działają w taki sposób, że
podstawiają własny adres powrotu, który
jest podawany do programu. Możliwe
jest to dzięki prostej funkcji łańcuchowej,
kopiującej wartości w stosie z jednego
adresu do drugiego. Nie ma w trakcie
tego automatycznego sprawdzenia,
czy pod adresem docelowym jest
wystarczająca ilość miejsca. Haker może
wygodnie nadpisać również przyległy
adres powrotny.

Testowanie

Czy istnieje zatem możliwość
sprawdzenia i przetestowania kodu
na etapie kompilacji – tak, aby
zabezpieczyć się przed taką sytuacją?
Sprawdzanie, czy w produkcyjnej wersji
kodu nie występuje przepełnienie
bufora, jest równie ważne. Jednak w
takim rozwiązaniu testy muszą mieć
dużo mniejszy wpływ na wydajność, niż
implementacja testów przeprowadzanych
w czasie wykonywania. Dlatego w
kompilatorze

Visual C++ .NET

wprowadzono przełącznik

/GS

. Oprócz

tego przełącznika przydatne są również
dodatkowe biblioteki. Poniższa tabela
zawiera ich zestawienie wraz z krótkim
opisem. A dokładniej:

• Run-time Checks (RTC) – całkowite

sprawdzenie sterty danymi
niezerowymi, unikając założenia,
że sterta jest zawsze pusta.
Sprawdzane są granice wszystkich
tablic, aby wyłapać nawet jeden
bajt przepełniający bufor i znaleźć
niezgodne wywołania.

• PREfast – narzędzie dla programisty,

które pomaga znaleźć błędy trudne
do testowania i debugowania przez
identyfikację założeń, które mogą być
nieprawdziwe. PREfast znajduje się w
Visual Studio 2005.

• Source Code Annotation Language

(SAL) – pozwala programiście na

Listing 1.

Przykładowy kod zagrożony przepełnieniem bufora

void

UnSafe

(

const

char

*

uncheckedData

)

//adres zwrotny

{

char

localVariable

[

4

];

// char[4]

int

anotherLocalVariable

;

//int

strcpy

(

localVariable

,

uncheckedData

);

}

Listing 2.

Fragment kodu wykorzystywany przez robaka o nazwie CodeRed

//

cchAttribute

jest

ilo

ś

ci

ą

znak

ó

w

wprowadzonych

przez

u

ż

ytkownika

WCHAR

wcsAttribute

[

200

];

if

(

cchAttribute

>=

sizeof

wcsAttribute

)

THROW

(

CException

(

DB_E_ERRORSINCOMMAND

)

);

DecodeURLEscapes

(

(

BYTE

*)

pszAttribute

,

cchAttribute

,

wcsAttribute

,

webServer

.

Code

Page

());

...

Listing 3.

Poprawiony kod odporny na atak robaka CodeRed

WCHAR

wcsAttribute

[

200

];

if

(

cchAttribute

>=

sizeof

wcsAttribute

/

sizeof

WCHAR

)

THROW

(

CException

(

DB_E_ERRORSINCOMMAND

)

);

DecodeURLEscapes

(

(

BYTE

*)

pszAttribute

,

cchAttribute

,

wcsAttribute

,

webServer

.

Code

Page

());

...

void

DecodeURLEscapes

(

BYTE

*

pIn

,

ULONG

&

l

,

WCHAR

*

pOut

,

ULONG

ulCodePage

)

{

WCHAR

*

p2

=

pOut

;

ULONG

l2

=

l

;

...

Listing 4.

Robak Blaster

size_t

cbDest

=

sizeof

(

p

);

while

(--

cbDest

&&

*

c

!=

‘\\’

)

*

p

++

=

*

c

++;

Listing 5.

Kod dodany przez użycie przełącznika /GS

sub

esp

,24

h

mov

eax

,

dword

ptr

[

___security_cookie

(

408040

h

)]

xor

eax

,

dword

ptr

[

esp

+

24

h

]

mov

dword

ptr

[

esp

+

20

h

]

,

eax

background image

64

OBRONA

HAKIN9 7-8/2008

przypisanie wartości do bufora. Kiedy
kod jest skompilowany, kompilator
zna warunki, które pozwalają na
określenie wartości oczekiwanych
i aktualnych. Funkcjonalność pozwala
programiście na odkrycie błędów,
które mogą trudne do znalezienia
ręcznie.

• Application Verifier – to narzędzie

pakietu Visual Studio, udostępniające
funkcje instrumentacji obecne w

systemie operacyjnym Windows.
Instrumentacja ta pozwala w czasie
działania aplikacji przeprowadzić jej
weryfikację w wybranych obszarach,
takich, jak przydział pamięci czy
użycie sekcji krytycznych i uchwytów.
Application Verifier wykrywa problemy
czasu wykonywania w zakresie
alokacji pamięci, wyjścia poza
bloki na stercie, użycia pamięci po
usunięciu, podwójnego usunięcia

i zanieczyszczenia sterty. W zakresie
wykorzystania sekcji krytycznych
wykrywa działania, które mogą
prowadzić do blokowania lub wycieku
zasobów. Jeśli chodzi o użycie
uchwytów, wykrywa próby powtórnego
użycia uchwytów, które już nie są
poprawne. Narzędzie to wykorzystuje
instrumentację dostępną w systemie
operacyjnym, używając jej podczas
debugowania wobec danego obrazu
wykonywalnego. System operacyjny
zmienia warstwę API komunikującą
się z aplikacją i przechwytuje

Listing 6.

Funkcja __security_error_handler

void

__cdecl

__security_error_handler

(

int

code

,

void

*

data

)

{

if

(

user_handler

!=

NULL

)

{

__try

{

user_handler

(

code

,

data

);

}

__except

(

EXCEPTION_EXECUTE_HANDLER

)

{}

}

else

{

//...przygotowanie wiadomości outmsg...

__crtMessageBoxA

(

outmsg

,

"Microsoft Visual C++ Runtime Library"

,

MB_OK

|

MB_ICONHAND

|

MB_SETFOREGROUND

|

MB_TASKMODAL

);

}

_exit

(

3

);

}

Listing 7.

Przykład użycia funkcji __set_security_error_handler

void

__cdecl

sprawdz_blad

(

int

kod_bledu

,

void

*

nie_dotyczy

)

{

if

(

kod_bledu

==

_SECERR_BUFFER_OVERRUN

)

printf

(

"Wykryto przepełnienie bufora!

\n

"

);

}

void

main

()

{

_set_security_error_handler

(

sprawdz_blad

);

}

Listing 8.

Przykład użycia StrCpy

bool

obslugaStrCpy

(

const

char

*

input

)

{

char

buf

[

80

];

if

(

input

==

NULL

)

{

assert

(

false

);

return

false

;

}

//problem w przypadku braku null na końcu łańcucha

if

(

strlen

(

input

)

<

sizeof

(

buf

))

{

//wszystko OK.

strcpy

(

buf

,

input

);

}

else

{

return

false

;

}

//… dalszy kod

return

true

;

}

Listing 9.

Przykład bezpiecznego

Strncpy.

bool

obslugaStrncpy

(

const

char

*

input

)

{

char

buf

[

80

];

if

(

input

==

NULL

)

{

assert

(

false

);

return

false

;

}

buf

[

sizeof

(

buf

)

-

1

]

=

'\0'

;

strncpy

(

buf

,

input

,

sizeof

(

buf

));

if

(

buf

[

sizeof

(

buf

)

-

1

]

!=

'\0'

)

{

//przepełnienie

return

false

;

}

//… dalszy kod.

return

true

;

}

Listing 10.

Przykład użycia funkcji

_snprintf.

bool

obsluga_snprint

(

int

line

,

unsigned

long

err

,

char

*

msg

)

{

char

buf

[

132

];

if

(

msg

==

NULL

)

{

assert

(

false

);

return

false

;

}

if

(

_snprintf

(

buf

,

sizeof

(

buf

)-

1

,

"Bład w linii %d = %d - %s

\n

"

,

line

,

err

,

msg

)

<

0

)

{

//Przepełnienie - błąd

return

false

;

}

else

{

buf

[

sizeof

(

buf

)-

1

]

=

'\0'

;

}

//.. dalsze działanie programu

return

true

;

}

background image

65

HAKIN9

7-8/2008

wywołania, przekierowując je do
warstwy weryfikacji poprawności. W
momencie wykrycia nieprawidłowości
generowany jest odpowiedni wyjątek,
a narzędzie Application Verifier
dostarcza właściwego kontekstu dla
wykrytego błędu.

Przełącznik /GS

Przyjrzyjmy się dokładniej przełącznikowi

/GS

. Skorzystajmy z informacji zawartej w

MSDN

(przykład również z MSDN) na jego

temat. Przełącznik /GS wstawia pomiędzy
bufor a adres powrotu znacznik. Jeśli
przepełnienie bufora nadpisze adres
powrotu, to nadpisze także znacznik
wstawiony pomiędzy adres a bufor. Nowa
budowa ramki stosu jest następująca:

• parametry funkcji,
• adres powrotu funkcji,
• wskaźnik ramki,
• znacznik,
• ramka procedur obsługi wyjątków,
• lokalnie zadeklarowane zmienne i

bufory,

• rejestry zachowane przez funkcję

wywołaną.

Gdy testy bezpieczeństwa są włączone,
sposób wykonania funkcji ulega zmianie.
Instrukcje, które mają być wykonane zaraz
po wywołaniu funkcji, znajdują się w początku
funkcji. Weźmy następującą instrukcję:

sub esp,20h

Instrukcja ta zarezerwuje 32 bajty na
wykorzystywane w funkcji zmienne
lokalne. Gdy funkcja jest kompilowana
z przełącznikiem /GS, zostaną
zarezerwowane dodatkowe cztery bajty i
dodane zostaną trzy instrukcje (Listing 5.):

Obsługa błędów

Przy przeprowadzaniu testów
bezpieczeństwa konieczne jest
skorzystanie z biblioteki

CRT

. Gdy testy

wykryją błąd, kontrola przekazywana jest
do funkcji

__security_error_handler.

Funkcja ta wygląda następująco (Listing .6):

Domyślnie aplikacja, w której testy

bezpieczeństwa wykryją błąd, wyświetla
okno dialogowe informujące o wykryciu
przepełnienia bufora. Po zamknięciu
okna dialogowego wykonywanie aplikacji
zostaje przerwane. Biblioteka CRT daje
programistom możliwość zastosowania w
przypadku detekcji przepełnienia bufora
innej procedury obsługi, która będzie lepiej
pasować do aplikacji. Do zainstalowania
własnej procedury obsługi błędów można
posłużyć się funkcją

__set_security_error_handler

która przechowuje adres procedury
obsługi w zmiennej (Listing 7):

Powyższy fragment kodu spowoduje

wypisanie wiadomości na ekranie w

PRZEPEŁNIENIE BUFORA

momencie wykrycia przepełnienia
bufora. Chociaż zdefiniowana powyżej
procedura obsługi sama nie kończy
wykonywania programu, to po
zakończeniu jej wykonywania funkcja

__security_error_handler

zakończy program, wywołując

_ exit(3)

. Funkcje

_ _ security _

error _ handler i _ set _
security _ error _ handler

zdefiniowane są w pliku secfail.c,

należącym do plików źródłowych

biblioteki CRT.

Zapobieganie

przepełnieniom bufora

Aby zapobiegać przepełnieniom
bufora, należy zwracać uwagę na
funkcje, których używamy w naszych
programach.
Najczęstszą przyczyną problemów
jest niewłaściwe stosowanie funkcji
związanych z obsługą łańcuchów
tekstowych. Dlatego też przyjrzymy
się im bliżej, aby zobaczyć, jak można
zabezpieczyć się przed niepożądanym
działaniem.

Funkcja strcpy

Wywołanie funkcji:

char *strcpy( char
*strDestination, const char
*strSource )

;

R

E

K

L

A

M

A

background image

66

OBRONA

HAKIN9 7-8/2008

Istnieje bardzo wiele sytuacji, w której
działanie funkcji zakończy się z błędem.
Najpopularniejsze z nich to między
innymi: gdy bufor źródłowy i docelowy
są puste, jeżeli bufor źródłowy nie jest
zakończony znakiem null i największy
z problemów – gdy rozmiar ciągu
źródłowego jest większy niż bufor
docelowy.

Aby bezpiecznie wywołać tę funkcję,

należy sprawdzać poszczególne
przypadki (Listing 8):

Funkcja strncpy

Wywołanie funkcji:

char *strncpy( char *strDest, const

char *strSource,
size_t count );

Jest bezpieczniejsza niż strcpy, ale i tutaj
nadal mogą pojawiać się problemy,
szczególnie w przypadku przekazywania
wartości null jako ciągu źródłowego lub
docelowego. Dodatkowo problemem
może być zła wartość licznika. Jedna z
różnic pomiędzy tą funkcją a poprzednią
to fakt, że jeśli bufor źródłowy nie jest

zakończony null, to funkcja nie zakończy
się z błędem.

Przykład bezpiecznego użycia

przedstawia (Listing 9).

Funkcja sprintf

Wywołanie funkcji:

int _ snprintf( char *buffer, size _ t
count, const char *format [,
argument] ... );

Jest to jedna z bezpieczniejszych funkcji.
Jedyna rzecz, na którą należy zwrócić
uwagę to bufor docelowy jest zakończony
znakiem null.

Przykład użycia funkcji przedstawia

(Listing 10).

Funkcja _snprintf

Wywołanie funkcji:

int _snprintf( char *buffer,
size _ t count, const
char *format [, argument] ... );

Jest to jedna z bezpieczniejszych
funkcji. Jedyna rzecz, na którą należy

zwrócić uwagę, to sprawdzenie, czy bufor
docelowy jest zakończony znakiem null.
Przykład użycia funkcji (Listing 9.):

Kod zarządzany

Opisana sytuacja zmienia się w
przypadku kodu zarządzanego.
Posiada on swego rodzaju automat
zabezpieczający przed:

• przepełnieniem bufora,
• wyjściem poza zakres tablicy,
• nieprawidłowym kodem

wykonywalnym,

zewnętrzną modyfikacją pliku

wykonywalnego.

Są też oczywiście rzeczy, przed którymi
nie zabezpiecza kod zarządzany. Jest to
między innymi:

• marnowanie pamięci
• błędy na styku wejście użytkownika

– kod

• podejrzenie ukrytych informacji.

Podsumowanie

Przepełnienie bufora to poważny problem.
Każdy programista powinien mieć
świadomość tego rodzaju zagrożenia.
Zanim zacznie tworzyć kod, powinien
wziąć pod uwagę podobne problemy i
dużo wcześniej przemyśleć architekturę
kodu. Z drugiej strony, programista
powinien mieć pomoc ze strony narzędzi
programistycznych – tak, aby to one mogły
sprawdzić i rozwiązać takie problemy
(przynajmniej częściowo). Po analizie
tekstu możemy zadać następujące pytanie
jak samemu wyrobić sobie nawyk nie
popełniania takich błędów, jak przepełnienie
bufora?
. O ile nigdy nie doświadczymy na
własnej skórze problemu z włamaniem
i nie stracimy przez to jakichś istotnych
danych, to pewnie trudno nam będzie o
tym pamiętać. A na poważnie – warto
zrobić sobie listę wszystkich kroków,
które musimy wykonać, i sprawdzić, czy
wśród nich jest sprawdzenie możliwości
wystąpienia przepełnienia bufora.

Artur Żarski

Jest pracownikiem firmy Microsoft. Na co dzień zajmuje

sięm.in. Tworzeniem rozwiązań w oparciu o SQL Server w

różnych aspektach – bazy relacyjne, usługi integracyjne,

usługi analityczne. Jest certyfikowanym administratorem

baz danych (MCDBA).

Kontakt z autorem: arturz@microsoft.comh

W Sieci

http://www.sans.org/rr/whitepapers/securecode/386.php – Inside the buffer overflow attack:

mechanism, method & prevention,

http://pl.wikipedia.org/wiki/Przepełnienie_bufora – Wikipedia,
http://support.microsoft.com/kb/325483 – Compiler Security Checks: The /GS Compiler Switch,

Writing Secure Code , Michael Howard, Microsoft Press 2002.

Tabela 1.

Przełącznik kompilatora /GS oraz przydatne bibliotekiPrzełącznik kompilatora

/GS oraz przydatne biblioteki

Przełącznik/biblioteka

Opis

/GS: Przepełnienie stosu

Skuteczność 100%

/GS: Przekierowanie wskaźnika,

zmiana wartości EBP

Skuteczność niska (chyba, że trafi na adres zwrotny)

RTC: stos niezerowy

Pomoc przy śledzeniu

PREfast: analizator kodu

Pożyteczny; dodatkowe ostrzeżenia

SAL:dodatkowe adnotacje

(_deref, _ecount …)

Duża skuteczność; wykrycie „losowych” błędów;

pomoc w analizie

Application Verifier

Dobry pomocnik testera

ACGP: rozrzucenie kodu w

segmencie

Duża skuteczność; wykrycie „losowych” błędów

Biblioteki standardowe

Funkcje mają wbudowany safeguard + SAL + …

background image

R

E

K

L

A

M

A

background image

68

RECENZJE

HAKIN9 7-8/2008

69

RAFAŁ PODSIADŁY

HAKIN9

7-8/2008

Walka między użytkownikiem a wirusem wciąż trwa – na rynku jest dużo programów

antywirusowych, pomiędzy którymi niezwykle trudno wybrać. Dziś mamy kontakt online

ze znajomymi, klientami, partnerami, sklepami internetowymi oraz usługami bankowymi z

każdego miejsca na świecie. Ryzykujemy, ponieważ cyberprzestępcy także mają dostęp do

tych możliwości. Udoskonalają oni swoje metody i techniki, aby skraść nasze informacje.

Współczesna sieć znacznie różni się od tego, co obserwowaliśmy jeszcze kilka lat temu, i

dlatego musimy zmienić swoje podejście do ochrony.

ZESTAWIENIE PRODUKTÓW SECURITY

PANDA INTERNET SECURITY 2008

Aplikacja Pandy to kompleksowe
narzędzie do ochrony komputera.
Zawiera w swych modułach pakiet
antywirusowy z kompleksową ochroną i
zaporę przeciwogniową, dodatkowo ma
wbudowany moduł kopii zapasowych.
Standardowa licencja pozwala na instalację
programu na trzech komputerach w cenie
wersji jednostanowiskowej. Moduły:

TotalScan Pro – zawarte technologie

pozwalają przeprowadzić szczegółowe
skanowanie w celu wykrycia i
usunięcia najbardziej wyszukanych
zagrożeń, które prześlizgnąć się mogą
przez tradycyjne zabezpieczenia.
Komponent automatycznie wykrywa i
eliminuje wszystkie rodzaje wirusów.
Panda Internet Security 2008 pozwala
korzystać z Internetu, a także pobierać
oraz udostępniać pliki bez obaw o
zainfekowanie jakimikolwiek wirusami,
robakami czy trojanami.

Backup – moduł ten umożliwia łatwe

tworzenie automatycznych kopii
zapasowych, które pozwolą w dowolnym
momencie przywrócić ewentualne
utracone pliki. Istnieje możliwość wybrania
plików, które zostaną zapisane, oraz
utworzenia kopii zapasowych na dysku
twardym, płycie CD, DVD lub na innym
zewnętrznym nośniku. Dodatkowo
dostajemy możliwość bezpłatnego
wykonywania kopii zapasowej online przez
12 miesięcy. W tym celu otrzymujemy 1

GB przestrzeni dyskowej na bezpiecznym
zdalnym serwerze. Pozwala nam to na
dostęp do naszych najważniejszych
dokumentów z dowolnego komputera.

Panda Tuneup – komponent

służy do optymalizacji wydajności
systemu operacyjnego. W pierwszej
kolejności porządkowane są wszystkie
niepotrzebne składniki (pliki cookie,
pliki tymczasowe, elementy w koszu
itp.), a następnie przeprowadzana
jest defragmentacja dysku w celu
zwiększenia szybkości pracy systemu.

AntiSpyware – automatycznie wykrywa i

skutecznie usuwa programy szpiegujące
oraz inne irytujące aplikacje.

Panda Identity Protect – generuje

ostrzeżenie za każdym razem, gdy z
komputera wysyłane są dane mogące
mieć związek z tożsamością użytkownika.

Dwukierunkowy firewall z możliwością

konfiguracji, który powstrzymuje intruzów
i hakerów, próbujących uzyskać dostęp
do Twojego komputera.

AntiPhishing – potrafi zidentyfikować

fałszywe wiadomości tego rodzaju
i zapobiegać kradzieżom danych
bankowych, numerów kont i innych
poufnych informacji. Panda Internet
Security 2008 zabezpieczy Twój komputer
przed niebezpiecznymi oszustwami.

Technologie TruPrevent ® (Podwójna

ochrona) wykrywają i blokują różnego
rodzaju nieznane zagrożenia, inteligentnie
obserwując zachowanie podejrzanego
programu. A to oznacza, że komputer jest
chroniony najlepiej, jak to możliwe.

AntiRootkit – zaawansowany system

zabezpieczeń, który potrafi wykrywać
zagrożenia typu rootkit, próbujące ukryć
się na Twoim komputerze.

AntiSpam – automatyczne blokowanie

niepożądanej korespondencji w wyniku
filtrowania treści korespondencji.

Kontrola rodzicielska – ogranicza dostęp

do niewłaściwych witryn WWW. Funkcja
filtrowania treści pozwala określić,
jakie rodzaje stron WWW będzie mógł
przeglądać każdy z użytkowników (dzieci,
nastolatki, pracownicy itp.).

Wymagania:
Procesor: Pentium 300 MHz lub szybszy
RAM: 128 MB (rekomendowane 256 MB)
Dysk twardy: 270 MB wolnego miejsca
System operacyjny: Windows Vista 32-bit
oraz 64-bit, Windows XP-32 oraz 64-bit,
Windows 2000
Internet Explorer 6.0
napęd CD-ROM
Cena: Panda Internet Security 2008 – 219
PLN brutto

G-DATA TOTALCARE 2008

Oprogramowanie G-DATA Software
zdobywa od pięciu lat nagrody w
większości testów antywirusowych w całej
Europie. Bezpieczeństwo użytkowników
programów G-DATA zapewniane jest dzięki
wykorzystaniu najbardziej skutecznych,
innowacyjnych rozwiązań. G-DATA TotalCare
2008 gwarantuje bezpieczeństwo pracy w
Internecie dzięki szeregowi funkcji i modułów.

background image

68

RECENZJE

HAKIN9 7-8/2008

69

RAFAŁ PODSIADŁY

HAKIN9

7-8/2008

Zaimplementowany w pakiecie G-DATA
moduł AntiVirus to wielokrotnie nagradzane
rozwiązanie chroniące przed wirusami,
trojanami, dialerami, rootkitami, backdoorami i
szkodliwym oprogramowaniem typu spyware,
riskware czy adware. Pogram wykorzystuje
technologię podwójnego skanowania i
mechanizm OutbreakShield, który gwarantuje
najszybszą na rynku reakcję na nowe
zagrożenia w Sieci. Dzięki temu wykrywanie i
usuwanie wirusów jest szybkie i skuteczne.

Moduły WebFilter i kontroli rodzicielskiej

pozwalają blokować dostęp do stron
internetowych zawierających sceny
przemocy czy pornografię. Ustawienia
można zdefiniować odrębnie dla
każdego z profili użytkownika.

G-DATA Backup oferuje narzędzie do

wykonywana automatycznych kopii
zapasowych. Zabezpieczenie danych
jest możliwe za pomocą kilku kliknięć
myszką. Harmonogram kopii zapasowych

umożliwia zaplanowanie automatycznego
wykonywania kopii wybranych plików i ich
uaktualniania. G-DATA Backup sporządza
pełne kopie wskazanych danych, a oprócz
tego potrafi uaktualniać zawartość kopii
metodą różnicową lub przyrostową. Kopie
zapasowe można automatycznie wysyłać
na serwer FTP. W cenie programu G-DATA
Software zapewnia bezpłatne konto na
serwerze FTP o rozmiarze 1 GB.

G DATA Tuning – moduł służy do

optymalizacji ustawień systemów
Windows Vista, XP oraz 2000. Narzędzie
skanuje komputer w poszukiwaniu
potencjalnych problemów i optymalizuje
system zgodnie z preferencjami
użytkownika. Zintegrowane narzędzie
do defragmentacji dysków twardych
pozwala przyspieszyć pracę napędu
i zapobiec wystąpieniu awarii. G-
DATA Tuning usuwa niepotrzebne pliki
tymczasowe zapisywane przez różne
aplikacje. Naprawia także błędy w

rejestrze systemu. Dzięki temu zwiększa
się stabilność i szybkość działania
obsługiwanych systemów operacyjnych.

Wymagania:
Windows 2000 z SP4, WindowsXP z SP2
(32/64-bit) lub Windows Vista (32/64-bit )
Od 256 MB RAM
Dostęp do Internetu

MCAFEE TOTAL PROTECTION

Z SITEADVISOR PLUS

Pakiet McAfee Total Protection zapewnia
profilaktyczną ochronę 12 w 1, a program
McAfee SiteAdvisor Plus chroni komputer
przed interakcją z niebezpiecznymi witrynami
sieci Web poprzez mechanizm ocen stron.
Ma także wbudowane usługi zapobiegające
atakom hakerów. Ponadto umożliwia tworzenie
kopii zapasowych i przywracanie danych.

Program McAfee powstrzymuje i usuwa

wirusy, a nawet można powiedzieć, że

Tabela 1.

Porównanie programów antywirusowych

Nazwa

programu

Panda Internet

Security 2008

G DATA

TotalCare 2008

McAfee Total

Protection

z SiteAdvisor Plus

AVG SBS

Edition

Trend Micro

Internet Security

Pro 2008

MKS

Cena brutto

w PLN

219PLN

219.95PLN

299,00PLN

1370.04PLN

59,60 Euro

219PLN

Długość licencji

w miesiącach

12

12

12

12

12

14

Ilość stanowisk

- podstawowa

3

1

3

5

3

3

Antivirus

tak

tak (2 silniki)

tak

tak

tak

tak

AntiSpyware

tak

tak

tak

tak

AntiPhishing

tak

tak

tak

tak

tak

Firewall

tak

tak

tak

tak

tak

tak

Identity Protect

(ochrona

prywatności)

tak

tak

tak

Backup

tak + serwer

1GB

tak + serwer 1GB

tak

Blokowanie

ataków wirusów

tak

tak

AntiSpam

tak

tak

tak

tak

tak

tak

Ochrona

rodzicielska

tak

tak – profile

tak

tak

Tuning

tak

tak

tak

Wsparcie

techniczne

24/365,

bezpłatnie

8 – 18; pn-pt

z ważną licencją

24/7

24/7 online

9-20 pn-pt

bezpłatnie

Strona WWW

www.pspolska.pl

www.gdata.pl

www.mcafee.com/pl www.avgpolska.pl

www.quantus.pl

www.trendmicro.pl www.mks.com.pl

background image

70

RECENZJE

HAKIN9 7-8/2008

71

RAFAŁ PODSIADŁY

HAKIN9

7-8/2008

blokuje je, zanim znajdą się na komputerze.
Blokuje oprogramowanie szpiegujące i
usuwa spyware już obecne w systemie.
Poprawia stan komputera, usuwając z niego

zbędne pliki, dzięki czemu znajduje się on w
lepszym stanie. Potrafi chronić tożsamość
użytkownika, zabezpieczać przed spamem
i fałszywymi wiadomościami e-mail.. Do

jego możliwości należą także: automatyczne
tworzenie kopii zapasowych, przywracanie
plików, a nawet monitorowanie sieci lokalnej.

SecurityCenter – program zarządzający

całym pakietem, zapewnia dostęp do
szeregu funkcji, z których wymienić
można: skanowanie komputera,
wyświetlanie alertów, sprawdzanie
dostępności aktualizacji czy
konfigurowanie ustawień.

• W celu umożliwienia swobodnej pracy

na komputerze, grania i oglądania filmów
udostępniono tzw. tryb bezinwazyjny.

Funkcja tworzenia kopii zapasowych

i przywracania danych zapisuje
zaszyfrowane i skompresowane kopie
najważniejszych plików w miejscu
wskazanym przez użytkownika – na
dysku twardym komputera, płycie CD/
DVD, urządzeniu pamięci USB lub na
dysku zewnętrznym bądź sieciowym.

Image Analysis – poprawia skuteczność

ochrony przed potencjalnie obraźliwymi
treściami i obrazami.

SystemGuards – monitoruje komputer

pod kątem aktywności określonego
rodzaju, która może być przejawem
działania wirusów, oprogramowania
szpiegującego lub hakerów.

X-Ray for Windows – wykrywa i eliminuje

programy typu rootkit oraz inne
niebezpieczne aplikacje, niewidoczne dla
systemu Windows i innych programów
antywirusowych.

Network Manager – monitoruje

komputery w sieci w poszukiwaniu luk
w zabezpieczeniach; można więc łatwo
rozwiązać te problemy z poziomu jednej
scentralizowanej mapy sieci.

EasyNetwork – umożliwia automatyczne

udostępnianie drukarek i plików metodą
przeciągnij i upuść między zaufanymi
komputerami w sieci domowej.

Shredder – to komputerowy odpowiednik

niszczarki dokumentów, program
skutecznie usuwający z systemu poufne
pliki i wszelkie ślady po nich.

Wymagania:
Microsoft® Windows 2000 z dodatkiem
Service Pack 4 (SP4) lub nowszym,
Windows XP z dodatkiem Service Pack
1 (SP1) lub nowszym, komputer PC z
systemem Windows Vista i procesorem
zgodnym z Pentium 500 MHz lub szybszym

Filip Demianiuk, Technical

Channel Manager – Trend Micro

Trend Micro IS 2008 został zaprojektowany jako pakiet dla użytkowników,
którzy intensywnie wykorzystują komputer do różnorodnych działań
on-line. Najnowsza wersja umożliwia im korzystanie z Internetu z
pełnym poczuciem bezpieczeństwa. Użytkownicy będą mogli bez obaw
korzystać z poczty elektronicznej, sklepów i usług bankowych, ponieważ
ich tożsamość, prywatność i zawartość komputera są zabezpieczone.
IS 2008 zabezpiecza wszystkie punkty ataku, od systemu operacyjnego
po przeglądarkę i klawiaturę. Uwzględniając wyniki badań, w pakiecie

zastosowano udoskonalone funkcje ochronne. Obejmują one między innymi prewencyjne blokowanie
włamań, ochronę przed zagrożeniami internetowymi, szersze możliwości blokowania spamu, wraz
ze sprawdzeniem autentyczności źródła pochodzenia wiadomości, dwukierunkową zaporę, w pełni
zintegrowane mechanizmy antywirusowe i zwalczające programy szpiegujące a także zabezpiecza
przed mechanizmami ukrywającymi złośliwe procesy systemowe, czyli tak zwane rooktkity.

Adam Żelazko, Product &

Marketing Manager – Panda Security

Firewall, technologie proaktywne, zaawansowane wykrywanie rootkitów
jest dziś niezbędne by czuć pełne bezpieczeństwo w sieci. Z takim
stwierdzeniem spotkać można się już od dawna. Często pojawia się
jednak pytanie, czy posiadane oprogramowanie zabezpieczające
rzeczywiście spełnia pokładane w nim nadzieje? Panda Security
uruchomiła serwis www.infectedornot.com, który pozwala skorzystać z
niezwykle skutecznego skanera online. Activescan 2.0 wykryje wszelkie
zagrożenia, a po rejestracji pozwoli część z nich usunąć. Co ciekawe

system poinformuje nas też o tym czy posiadane oprogramowanie antywirusowe jest aktywne i
zaktualizowane. Wiedza ta pozwoli nam podjąć odpowiednie kroki by wzmocnić zabezpieczenia
systemu w domy lub firmie. Pamiętajmy: brak oznak infekcji nie oznacza, iż jesteśmy bezpieczni.

Maciej Moskowicz, Technical

Support Manager – AVG POLSKA

Obecnie surfujący w Internecie użytkownicy komputerów, są narażeni na
bardziej agresywne i niebezpieczne ataki (np. automatyczne downloady
bez wiedzy użytkownika). Zagrożenia te pozwalają ich twórcom na
kradzież osobistych informacji, śledzenie ruchów użytkownika w sieci,
kradzież pieniędzy z konta bankowego lub uzyskanie danych karty
kredytowej, itp., wszystkie tworzone są w celu odniesienia korzyści
finansowych. Techniki te początkowo skierowane były w słabe

punkty systemu operacyjnego Windows oraz przeglądarki Internet Explorer, następnie uderzyły w
mniej zabezpieczane aplikacje pomocnicze jak WinZip, czy QuickTime, a w ostatnich miesiącach
skierowane zostały na aplikacje internetowe, takie jak wyszukiwarki, wspólnoty internetowe, reklamy
oraz zwykłe strony, jak Better Business Bureau w USA, czy strona Pierwszej Ligii Baseballa.

AVG zyskało reputację dostawcy rozwiązań zabezpieczających, które są bezwzględne dla

zagrożeń i przystępne zarówno dla dużych firm, jak i dla zwykłych użytkowników. Program działa
niezauważenie przy jednoczesnej minimalizacji wykorzystania krytycznych zasobów systemu.
AVG dostarcza wzmocnione zabezpieczenie przeciw tradycyjnym zagrożeniom, takimi jak wirusy,
spam, spyware i konie trojańskie, jednocześnie z nowymi zabezpieczeniami, chroniącymi przed
pojawiającymi się zagrożeniami w sieci, takimi jak automatyczne pobieranie plików bez wiedzy
użytkownika ze stron www lub przez komunikatory internetowe, phishing czy rootkity.Mechanizm
Safe Serach zintegrowany z przeglądarkami Internet Explorer i Firefox oflagowuje zawierające
zagrożenia - wyniki wyszukiwania uzyskane przy wykorzystaniu przeglądarek Google, Yahoo i MSN.

background image

70

RECENZJE

HAKIN9 7-8/2008

71

RAFAŁ PODSIADŁY

HAKIN9

7-8/2008

oraz co najmniej 256 MB pamięci RAM
Rozdzielczość ekranu 800x600 lub wyższa
Dostęp do Internetu
Oprogramowanie .NET Framework w wersji
1.1.4322
Microsoft® Internet Explorer 6.0 lub nowszy
Opcjonalnie: Przeglądarka Mozilla Firefox 1.5
lub nowsza

MKS

Firma MKS jest dostawcą oprogramowania
antywirusowego od 1987 roku. Pierwsze
edycje programu składały się wyłącznie ze
skanera plików. Z czasem liczba modułów
rosła, w najnowszej wersji jest ich już 6.

Oprogramowanie zawiera następujące

moduły:

• filtr spamu, w pełni współdziałający ze

skanerem poczty (obsługującym już
SMTP i SSL),

• zaporę sieciową, wyposażoną

dodatkowo w IDS (system wykrywania
włamań), możliwość szczegółowego
ustawiania reguł ruchu sieciowego
oraz blokowania wskazanych stron
internetowych,

• skaner plików, który może teraz zostać

uruchomiony za pomocą metody
przeciągnij i upuść (drag & drop),

• monitor rejestru,
• konsola zarządzania.

Wymagania:
Windows 2000 (SP4)/XP (SP2)/Vista (32-bit)
Serwery: Windows 2000/2003 Serwer
Procesor klasy Pentium lub nowszy
Napęd CD-ROM lub DVD
Program Internet Explorer w wersji 6.0 lub
wyższej
Wolna przestrzeń dyskowa: 100 MB
Windows Installer 3.1

TREND MICRO IS PRO 2008

IS 2008 PRO jest rozwiązaniem służącym
do kompleksowego zabezpieczania
antywirusowego pojedynczych stacji
roboczych, sieci domowych oraz sieci
bezprzewodowych. Usługi nowej generacji
zapewniają kompletną ochronę przed
wirusami, robakami, trojanami, rootkitami,
spamem oraz nieautoryzowanym dostępem
do poufnych informacj. Ponadto umożliwia
szyfrowanie wszystkich przechowywanych

w komputerze informacji, tworząc wirtualny
sejf
chroniący dane użytkownika np. w
przypadku kradzieży bądź zgubienia
komputera. Dodatkowo posiada moduł
do szybkiego przywracania systemu
operacyjnego uszkodzonego przez złośliwe
oprogramowanie oraz System Tuner,
umożliwiający optymalizację wydajności i
stabilności pracy komputera. Moduły:

Zdalna blokada plików – umożliwia

szyfrowanie wybranych plików i folderów,
chroniąc właścicieli komputerów przed
nieautoryzowanym dostępem do ich
danych

Wi-Fi Advisor – umożliwia sprawdzanie

wiarygodności i legalności punktów
dostępu bezprzewodowego (tzw.
hotspotów) i sieci Wi-Fi,

Szyfrowanie informacji wprowadzanych

za pomocą klawiatury – chroni przed
programami przechwytującymi
informacje wprowadzane za pomocą
klawiatury, takie jak hasła, czy numery kont

Strojenie systemu – zwiększa wydajność

komputera poprzez czyszczenie
rejestru i plików tymczasowych oraz
kontrolę czynności wykonywanych po
uruchomieniu komputera

Prewencyjna blokada antywłamaniowa

- blokuje próby nieautoryzowanych zmian
systemu operacyjnego i krytycznego
oprogramowania

Beztroskie klikanie – umożliwia

blokowanie dostępu do niebezpiecznych
stron internetowych i zawartych w
wiadomościach e-mail odnośników do
nich prowadzących

Monitorowanie sieci bezprzewodowej

– identyfikuje i pozwala na blokowanie
nieuprawnionych użytkowników domowej
sieci bezprzewodowej.

Kontrola sieci domowej - pozwala

na zarządzanie, konfigurowanie oraz
aktualizowanie stanu zabezpieczeń
każdego komputera podłączonego do
domowej sieci z wykorzystaniem prostej
w użyciu konsoli zarządzającej.

Zaawansowana kontrola rodzicielska

– pozwala rodzicom kontrolować
korzystanie przez dzieci z Internetu,
poprzez blokowanie stron internetowych z
niepożądaną zawartością.

Zapora osobista – przechwytuje

działania hakerów i wirusów sieciowych,
atakujących komputer i sieć domową

Wymagania:
Windows XP z SP2 lub Windows Vista (32/
64 bit), procesor Intel Pentium 800 MGHz,
min. 256 RAM
Jedna licencja na oprogramowanie
Trend Micro Internet Security Pro pozwala
na objęcie ochroną trzech komputerów
domowych lub przenośnych.

AVG SBS EDITION

Bazujący na AVG Internet Security AVG
SBS został zaprojektowany specjalnie, by
sprostać potrzebom małych i średnich
firm. W skład pakietu ochronnego wchodzą
moduły: antywirusowy, antyszpiegowski,
antyspamowy oraz zapora sieciowa
(firewall). AVG Internet Security SBS Edition
chroni dane na indywidualnych stacjach
roboczych, jak również na serwerach plików
i poczty. Narzędzie zdalnej administracji
AGADMIN pozwala na łatwe zarządzanie
wszystkimi ustawieniami programu i
aktualizacjami. Dodatkowo wszyscy
użytkownicy komercyjni mają dostęp do
darmowego wsparcia technicznego 24/7.

W składzie pakietu AVG Internet

Security SBS Edition znajdują się:

• AVG Email Server Edition (z ochroną

serwera plików),

• AVG Internet Security Network Edition,
• AVG pro Share Point Portal Server,
• AVG Remote Administration.

Wymagania:
Procesor Intel Pentium 1,2GHz
256MB RAM
70MB wolnej przestrzeni dyskowej
system plików NTFS

PODSUMOWANIE

Pytanie który program wybrać, który jest
najlepszy, a najprostszą odpowiedzią będzie
pytanie, do czego ten program ma być, czy
chcemy za pomocą niego opiekować się
siecią w w firmie, czy potrzebujemy program
do domu, ważne jest to byśmy wiedzieli czego
chcemy, wtedy ta cała lista nieznanych nam
wcześniej programów i tych znanych staje się
bardzo krótka do kilku pozycji.

Rafał Podsiadły

Rafał Podsiadły – administrator, serwisant, programista

C++, Delphi, JAVA, PHP, HTML,

Kontakt z autorem: spinacz24@gmail.com

background image

72

WYWIAD

HAKIN9 7-8/2008

WYWIAD Z MACIEJEM RYBACKIM

73

HAKIN9

7-8/2008

mnie, mojego czasu i moich oczekiwań
co do szkolenia – rozumianego nie tylko
jako przekazanie wiedzy, ale w szerszym
kontekście. Długo myślałem, jak można
by wykorzystać wnioski, jakie udało mi
wyciągnąć i tak powstała koncepcja
naszego Centrum, którą dziś sumiennie
realizujemy. Jesteśmy młodą firmą i
wciąż daleka droga przed nami, ale
wspieramy się – i to nie są puste słowa
– najlepszymi trenerami na rynku. Dzięki
temu zdobywamy uznanie i zaufanie
coraz liczniejszej rzeszy renomowanych
klientów.

h9: Czy planuje Pan otwarcie
kolejnego centrum szkoleniowego w
innym mieście w Polsce?
Jeśli tak, to jakie lokalizacje bierze
Pan pod uwagę?
M.R.: Odpowiedź jest prosta. Jak
każda firma, planujemy się rozwijać.
Zaplanowaliśmy już także, w którym
kierunku pójdziemy.

Tak naprawdę – wszystko zależy

od nas i naszej pracy. Obecnie
dysponujemy jedną siedzibą w
Warszawie i do dyspozycji naszych
kursantów jest 30 stanowisk
komputerowych. Lokal daje nam
możliwość dostawienia jeszcze 20
komputerów. Dopiero wtedy postawimy

na ekspansję na inne rynki. Myślimy
o wschodzie Polski, ale na to jeszcze jest
czas.

h9: Spotyka się Pan pewnie na co
dzień z osobami o różnym stopniu
doświadczenia komputerowego. Jaka
jest wśród tych osób świadomość
zagrożeń, jakie czyhają na nich w
cyberprzestrzeni?
M.R.: Jeśli rozmawiamy o ludziach, którzy
dopiero zaczynają się interesować
bezpieczeństwem, to niestety często nie
mają oni żadnego pojęcia, co to jest i jakie
są zagrożenia. Początkowo wydawało mi
się, że każdy posiada choćby szczątkową
wiedzę o wirusach czy złośliwych
hakerach. Jednak prawda okazuje się
całkiem inna. Coraz boleśniej zdajemy
sobie z tego sprawę po szkoleniach m.in.
z podstaw obsługi komputera i pracy w
Internecie. Każde takie szkolenie wiąże
się dla nas z koniecznością czyszczenia
i czasem naprawiania systemów lub
całych komputerów. Oczywiście w
koszty takiej działalności jest wliczone
niebezpieczeństwo i praca, jaką trzeba po
takim szkoleniu wykonać, aby następne
grupy mogły w pełni korzystać z naszej
wiedzy. Bezpieczeństwo to bardzo szerokie
pojęcie, ale jeśli rozmawiamy o ludziach
wykorzystujących komputer jako narzędzie

hakin9: Skąd się wziął pomysł na
stworzenie takiego centrum i jak
długo Diacom istnieje na rynku?
Maciej Rybacki: Pomysł narodził się
w dość prozaiczny sposób. Parę
lat temu sam byłem uczestnikiem
szkolenia komputerowego – dodam, że
z własnego wyboru, a nie z polecenia
przełożonych. Wspominam o tym, bo
ma to istotne znaczenie w podejściu
do szkolenia i jego odbiorze jako
całości. Wobec szkolenia miałem wiele
oczekiwań i oceniając je dziś mogę
stwierdzić, że zostały one zaspokojone.
Podniosłem swoje kwalifikacje i
posiadłem umiejętności, z których
korzystam do dziś. To ta pozytywna
strona medalu. W chwili, gdy spojrzałem
na całe szkolenie okiem specjalisty
ds. jakości, zdałem sobie sprawę, że
mnie rozczarowało. Przeciętny poziom
obsługi klienta, sprzęt pamiętający
poprzednie stulecie i zdarzające się
bardzo często sytuacje braku miejsca
do szkolenia dla mojego wykładowcy
i mnie – to nie powinno nigdy mieć
miejsca w prawdziwej jednostce
szkoleniowej. Analizowałem tę sytuację
dalej i doszedłem do wniosku, że jeśli
płacę 1500-2000 złotych za zdobycie
konkretnej wiedzy, to mam prawo
oczekiwać profesjonalnego podejścia do

Stawiamy na

jakość

Z wykształcenia jestem specjalistą do spraw jakości, z wyboru – prezesem

prężnie rozwijającej się firmy szkoleniowej Diacom. Jestem osobą, która wie,

czego chce i nigdy się nie poddaje.

background image

72

WYWIAD

HAKIN9 7-8/2008

WYWIAD Z MACIEJEM RYBACKIM

73

HAKIN9

7-8/2008

pracy czy zabawy, to okazuje się, że
osoby korzystające z tych urządzeń od
lat czasem zachowują się jak małe dzieci
– wchodząc na strony o podwyższonym
stopniu ryzyka lub korzystając z urządzeń
zewnętrznych przenoszących dane, bez
jakiejkolwiek kontroli. Zawsze staramy się
tłumaczyć naszym klientom, że istnieją
pewne zasady, które mogą nam pomóc
uchronić się, oczywiście w jakimś stopniu,
przed niebezpieczeństwem. Widzę jednak,
że ciekawość ludzka, a czasem niestety
wręcz głupota, są nieprzewidywalne.

h9: Co jest powodem takiego
(niskiego/wysokiego) poziomu
wiedzy na temat bezpieczeństwa
komputerowego wśród Polaków?
M.R.: Moim zdaniem wynika to bardzo
często z doświadczenia w zakresie
zagrożeń, z jakimi dana osoba miała już
do czynienia, a także jest przynajmniej
w pewnym stopniu uwarunkowane
zadaniami wykonywanymi w miejscu
pracy. Wiele osób zdaje sobie sprawę, że
jeżeli coś pobiorą w domu czy w pracy,
nieodpowiednio zabezpieczą sieć, to
za chwilę utracą istotne dane. Mówiąc
krótko – wiedza ta wynika z lekceważenia
lub nieznajomości wszystkich zagrożeń.
Coś takiego jest w ludziach, że jeśli ktoś
nam grozi nożem, to dla wielu jest to
bardziej niebezpieczne niż jakieś nie tak
namacalne wirusy. Zapominamy jednak,
że żyjemy w świecie informacji i utrata
takowej może nas wiele kosztować.

h9: W jaki sposób należy
uświadamiać ludzi o
niebezpieczeństwach wynikających z
korzystania z komputerów?
M.R.: Chyba nie ma uniwersalnego
sposobu, a przynajmniej takiego nie
znam. Zależy, o jakich zagrożeniach
chcemy mówić, a niebezpieczeństw
jest wiele! Wirusy, treści, jakie można
znaleźć w Internecie, błędy w konfiguracji
naszego systemu. Nie ma też przecież
uniwersalnego środka, żeby uchronić
się przed wszystkimi zagrożeniami.
Kampanie reklamowe nie do końca
spełniają swoją rolę informacyjną,
podobnie wiedza przekazywana z ust do
ust. Oczywiście, ludzie kupują programy
antywirusowe, płacą specjalistom
za rozwiązania, które mają zapewnić

bezpieczeństwo, ale tak naprawdę gdyby
któryś z hakerów rzeczywiście chciał
się włamać, to najczęściej i tak mu się
to uda. Można się uchronić całkowicie
– nie podłączać komputera do sieci,
nie instalować w nim oprogramowania
nieznanego pochodzenia, nie korzystać z
pamięci przenośnych i traktować go jako
maszynę do pisania – to chyba jedyna
stuprocentowo pewna metoda.

h9: Co, według Pana, powinien
wiedzieć o bezpieczeństwie każdy
człowiek, który korzysta z komputera ?
M.R.: Dobrze byłoby, jakby wiedział
wszystko choć w ogólnych zarysach, ale
to bardzo trudno sprzedać w pigułce.
Można omawiać różne zaawansowane
zabezpieczenia, robić szkolenia z tego
tematu, albo z bezpiecznego przesyłania
danych. Ale co z tego, jeśli naprawdę
skuteczne rozwiązanie często kosztuje
majątek i jest przeznaczone dla osób
(albo raczej firm) które mają duże
pieniądze. Pomocne na pewno są
specjalistyczne szkolenia z tej tematyki,
ale zainteresowanie nimi występuje raczej
wśród wąskiej grupy odbiorców.

h9: W erze rozwoju systemów
informatycznych Wasza firma
wychodzi z ciekawą propozycją dla
firm – jakie jest zainteresowanie
kursami?
M.R.: Jest ono coraz większe, ale mogłoby
być jeszcze lepiej – wszystko rozbija się
o to, że jesteśmy nowi na rynku i – co

zrozumiałe – trudniej nam pozyskać
klientów i zdobyć ich zaufanie. Mogę
jednak śmiało stwierdzić, że są klienci,
którzy zdecydowali się na korzystanie tylko
z naszych usług i spotykamy się z bardzo
pochlebnymi opiniami co do naszych
szkoleń. Udaje nam się przekonywać
firmy pomimo młodego wieku naszego
Centrum. Korzystamy z wiedzy oraz
doświadczenia trenerów z wieloletnim
stażem, stąd stawiamy coraz pewniejsze
kroki na polu ofert dla firm.

W swojej ofercie mamy wiele

konkretnych szkoleń, ale gdyby firma
chciała odbyć szkolenie szyte na miarę,
to dzięki naszej kadrze jesteśmy w
stanie sprostać i takim wyzwaniom.
Oczywiście klient w takich wypadkach
musi dać nam zawsze trochę czasu na
przygotowanie takiego szkolenia, ale ma
za to pewność, że jego potrzeby zostaną
w stu procentach zaspokojone.

W jakim kierunku rozwija się firma

– czy to są także kursy z zakresu
bezpieczeństwa, które jest ostatnio na
topie? Planujemy rozwijać się w kierunku
ściśle specjalistycznych szkoleń. Ale
żeby uruchomić takie szkolenia np. z
zakresu bezpieczeństwa, to najpierw
musimy wyrobić sobie jeszcze lepszą
pozycję na rynku.

h9: Czy podczas kursu stawiają
Państwo na ćwiczenia praktyczne, czy
na teorię?
M.R.: Szkolenia są w zasadzie
praktyczne. Zaczynają się tylko od

background image

74

WYWIAD

HAKIN9 7-8/2008

wstępu teoretycznego. Z drugiej strony,
planujemy wprowadzenie szkoleń,
które będą w całości teoretyczne – ale
to będzie dość specyficzna wiedza z
zakresu zasad drukarskich i fotomontaży.
Niemniej znacząco przeważają kursy
praktyczne – każdy siedzi przy swoim
stanowisku komputerowym, wykonuje
własnoręcznie ćwiczenia i poprzez to
poznaje dane narzędzie.

Szkolenia staramy się udoskonalać

na bieżąco, oczywiście nigdy nie
zakładamy, że już nic w materiale nie
zmienimy. Jeżeli chodzi o materiały

pomocnicze, to mamy je solidnie
przygotowane.

h9: Czy przewidują Państwo kursy i
szkolenia prowadzone przez Internet?
M.R.: Szkoła przez Internet to fajna idea,
tylko do tego już jest potrzebna większa
platforma. Z tego, co się orientuję,
w Polsce są 4, może 5 szkół, gdzie
widziałem w ofercie takie szkolenia.
Nie są to jednak jakieś rozbudowane
kursy – polegają na postępowaniu krok
po kroku według jakiegoś schematu,
a nie jak w klasycznym rozumieniu e-

learningu, gdzie logujemy się i możemy
w czasie rzeczywistym prowadzić
interakcję z wykładowcą. Choć może
po prostu ja do takich nie dotarłem. My
generalnie stawiamy na szkolenia face
to face, grupowe – naszym i chyba nie
tylko naszym zdaniem, człowiek tak się
lepiej uczy

h9: Czy planowane są szkolenia
na programach open source, np.
OpenOffice?
M.R.: Dalekosiężnie planujemy wiele
rzeczy. Oczywiście, że tak – ale należy
pamiętać, że wprowadzenie szkolenia do
oferty to nie tylko przygotowanie programu
i jego wycena. To również – a może
przede wszystkim – zakup programów
i stworzenie materiałów szkoleniowych.
Zatem – spokojnie i po kolei.

h9: Jakie jest Pana zdanie na temat
magazynu hakin9 jako medium
dotarcia do specjalistów IT?
M.R.: Kiedy się jeszcze nie poznaliśmy,
wiedziałem że istnieje takie pismo jak
hakin9 – temat się jakoś przewijał,
ale nie miałem okazji zapoznać się
z tym tytułem bliżej. Teraz chętnie
czytam. Sam sposób przekazania
informacji jest podobny, jak w innych
czasopismach komputerowych – a
że jest on już dopracowany, to nie ma
sensu na siłę kombinować i wymyślać
innowacje, które mogą nie przypaść
do gustu Czytelnikom i się po prostu
nie sprzedać. Ludzie po prostu lubią
schematy. A hakin9 uważam za ciekawy,
mogę w nim odnaleźć coraz więcej
interesujących mnie kwestii, coraz
częściej wiem dokładnie, o co chodzi
w artykule, szukam sobie później
dodatkowych informacji. Oczywiście
zdarzają się teksty, po przeczytaniu
których muszę się solidnie zastanowić,
czy je dobrze zrozumiałem. Nie
niepokoi mnie to jednak, informatyk od
wszystkiego jest przecież informatykiem
do niczego. Sądzę, że nie ma ludzi,
którzy wiedzą wszystko – sam dowiaduję
się wielu interesujących rzeczy zarówno
od swoich trenerów, jak i od samych
kursantów.

h9: Dziękujemy za rozmowę.
M.R.: Dziękuję.

background image

Prenumerata Pro

Media

Systems

Firma Media Systems oferuje Państwu
usługi oparte o rozwiązania systemu
CashBill.pl i są to: organizacja kam-
panii marketingowych opartych o kon-
kursy SMS’owe, organizacja kampanii
reklamowych serwisów internetowych,
system płatności elektronicznych po-
przez karty płatnicze i przelewy. Prócz
wymienionych usług oferujemy także
budowę stron www, sprzedaż domen
oraz pozycjonowanie w wyszukiwar-
kach. Zapraszamy do współpracy.

TTS Company Sp. z o.o.

Oprogramowanie komputerowe - sprze-
daż, dystrybucja oraz import na za-
mówienie. W ofercie programy autor-
stwa ponad dwustu firm z całego świa-
ta. Chcesz kupić oprogramowanie i nie
możesz znaleźć polskiego dostawcy?
Skontaktuj się z nami – sprowadzimy
nawet pojedyncze licencje.

www.OprogramowanieKomputerowe.pl

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ń.

www.ccns.pl

Petrosoft

Partner Microsoft Bussiness Solutions
Dynamics GP. Budowa sklepów inter-
netowych, serwisów WWW, prezenta-
cji multimedialnych. Budowa sieci LAN,
WAN, telekomunikacyjnych. Telefonia
stacjonarna, VoiceIP. Usługi outsorcin-
gowe dla dużych firm z zakresu infor-
matyki i telekomunikacji. Oprogramo-
wanie na zamówienia. Dostawa serwe-
rów, sprzętu, oprogramowania.

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

Biuro: (13) 44 66 666

biuro@petrosoft.pl

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 hostingo-
wych od 2000 roku. Do naszych za-
dowolonych Klientów z dumą możemy
zaliczyć wiele przedsiębiorstw sektora
MSP, instytucji oraz osób prywatnych.
W ofercie Kei.pl znajdują się pakiety ho-
stingowe, a także usługi dla wymagają-
cych Użytkowników – platformy e-Biz-
nes oraz serwery fizyczne.

www.kei.pl

Sokra-NET

Działa od roku 2002, specjalizuje się
w szeroko pojętym bezpieczeństwie in-
formacji. Posiada wykwalifikowany spe-
cjalnie do tych celów zespół inżynierów
którzy przy współpracy z naszymi klien-
tami maksymalizują bezpieczeństwo
danych, audytując i dobezpieczając.
Wykonujemy testy penetracyjne, ana-
lizy kodów źródłowych, testy wydajno-
ściowe aplikacji i ich środowisk telein-
formatycznych. Wdrażamy polityki bez-
pieczeństwa. Wspomagamy naszych
partnerów merytorycznie.

www.sokra.net

Sokra-NET

background image

76

KSIĄŻKI

HAKIN9 7-8/2008

77

HAKIN9

7-8/2008

Bezpieczeństwo Microsoft

Windows – Podstawy praktyczne

Niejako na przekór zmasowanemu
atakowi użytkowników systemów
Linuksowo-Uniksowych na aspekty

bezpieczeństwa w systemach Windows,
Microsoft stworzył całościową, spójną strukturę
Active Directory, która w sieciach opartych na
Windows Server 2003 daje potężne możliwości
zabezpieczeń i administracji. Należy sobie
uświadomić że zabezpieczenie sieci to nie tylko
zapora sieciowa, lecz również ochrona dostępu
do danych.
Zagrożenie dla naszych danych pochodzi
nie tylko z zewnątrz sieci lokalnej, to także
zagrożenia wynikające z dostępu użytkowników
do informacji dla nich nie przeznaczonych. Tak
więc bezpieczeństwa sieci nie należy rozumieć
tylko w kategoriach wszelakiego typu firewalli,
sond IPSowych i IDSowych. Bezpieczeństwo
danych w sieci to znacznie więcej – również
metody uwierzytelniania, autoryzacji,
szyfrowanie, polityka praw dostępu, certyfikaty,
podpisy elektroniczne itp.
Myślę, iż tylko nieuświadomiony administrator
bądź użytkownik może sądzić, że sieć oparta
na Windows nie może być bezpieczna z
definicji.

Książka Bezpieczeństwo Microsoft Windows

– Podstawy praktyczne jest kompleksowym
opracowaniem na temat zabezpieczeń w
Windowsach, które opisuje zarówno od
strony serwera, jak i stacji roboczej. Autorami
książki są specjaliści z firmy HP, zajmujący
się na codzień bezpieczeństwem systemów
Microsoft i Active Directory. Organizacja książki
wyodrębnia wyraźnie trzy części.

Część pierwsza książki wprowadza

niezbędne pojęcia, definicje, standardy
– wyjaśnia, co należy rozumieć pod takimi
pojęciami, jak na przykład urzędy zabezpieczeń,
zwierzchnicy zabezpieczeń, identyfikatory
SID, relacje zaufania. Przedstawia także
podstawowe aspekty bezpieczeństwa stacji
klienckich (zabezpieczenia IE, Windows
Defender
, zapora).

W drugiej części omówione zostało

uwierzytelnianie – skupiono się głównie na
autentykacji IIS i Kerberos, ale opisano również
integrację uwierzytelniania w systemach Unix/
Linux i Windows.

Trzecia część książki to już szczegółowe

omówienie kwestii autoryzacji. Opisana została
w niej również delegacja Active Directory.

Bezpieczeństwo Microsoft Windows

skupia się głównie na architekturze opartej
na systemie Windows Server 2003 i Active
Directory
. Pokazuje dostępne rozwiązania
i możliwości, jakie powinien poznać każdy,
kto chce zaprojektować bezpieczną sieć
IT przy pomocy produktów Microsoftu.
Niektóre z przedstawionych rozwiązań są
często zapominane przez administratorów.
Niewątpliwie duża liczba tabel sprawia, że
książka po przeczytaniu nie jest odstawiana na
półkę, tylko może być pomocnym narzędziem
w codziennej pracy administratora – wymienić
tu można choćby tabele z kodami błędów
Kerberosa i ich znaczeniem czy tabelę z
typowymi maskami dostępu w Windows. Także
solidna porcja rysunków poglądowych sprawia,
iż złożone – i często skomplikowane – struktury
przedstawione są w sposób prosty i zrozumiały.

Moim zdaniem książka – pomimo tego,

że adresowana do osób zajmujących się
sieciami i znających przynajmniej podstawy ich
działania, jest napisana jasno i przystępnie .

W odniesieniu do organizacji książki, można

skrytykować wymieszanie metod zabezpieczeń
w Active Directory z pozostałymi – wydaje mi
się, że dodatkowy podział na część dotyczącą
stricte Active Directory i pozostałych rozwiązań
byłby bardziej przyjazny dla Czytelników.
Myślę także, iż w tytule książki nieco na wyrost
użyto słowa praktyczne, książka jest bowiem
według mnie bardzo dobrym opracowaniem
teoretyczno-koncepcyjnym, natomiast nie
pokazano w niej zbyt wielu przykładów
praktycznych (co nie znaczy, że ich nie ma
wcale!).

Brakuje mi także bardziej szczegółowego

opisu zasad tworzenia i możliwości polityk GPO.

Moim zdaniem książka pod tytulem:

Bezpieczestwo Microsoft Windows – Podstawy
praktyczne
, której autorem jest Jan De Clercq,
Guido Grillenmeier jest wartościową pozycją,
godną polecenia z czystym sumieniem
zarówno administratorom, jak i projektantom
sieci. Dzięki przystępnemu językowi (pomimo
objęcia wielu definicji i niekiedy dość
skomplikowanych pojęć) można ją również
zarekomendować Czytelnikom, którzy
dopiero rozpoczynają poznawanie zagadnień
Active Directory oraz administracji Windows
Serverem 2003.

Autorzy: Jan De Clercq, Guido

Grillenmeier

Wydawca: PWN

Rok wydania w Polsce: 2008

Liczba stron: 792

Recenzent: Zarychta Tomasz

background image

76

KSIĄŻKI

HAKIN9 7-8/2008

77

HAKIN9

7-8/2008

Królicza Nora – ochrona sieci komputerowych

za pomocą technologii HoneyPot

Z ciekawością sięgnąłem po książkę
pod tytułem Królicza Nora – ochrona
sieci komputerowych za pomocą

technologii HoneyPot, ponieważ interesuję się
takimi systemami. Jest to pierwsza pozycja w
języku polskim poświęcona tym rozwiązaniom,
z którą się zetknąłem. Jej wstępne, pobieżne
przejrzenie trochę mnie zraziło – autor czasem
puszcza wodze fantazji (co najbardziej widać we
wstępie i posłowiu). Jednak mimo tych zastrzeżeń
przeczytałem całość i... zostałem bardzo miło
zaskoczony. Książka może okazać się idealnym
startem dla osób chcących rozpocząć swoją
przygodę z systemami HoneyPot. Jest ona godna
polecenia wszystkim entuzjastom bezpieczeństwa
komputerowego, którzy chcą zapoznać się z tą
coraz częściej stosowaną technologią. Pozycja ta
może być wartościowa także dla administratorów
maszyn podłączanych do sieci publicznie
dostępnych. Wdrożenie przez nich systemu
HoneyPot może zwiększyć bezpieczeństwo
zarządzanych sieci, a co ważniejsze – umożliwić
zdobycie unikalnej wiedzy na temat sposobów
działania włamywaczy.

Książka składa się z trzech części. Pierwsza z

nich poświęcona jest wprowadzeniu do systemów
HoneyPot, będących – najogólniej mówiąc
– pułapkami na włamywaczy. Po zapoznaniu się
z początkowymi sześcioma rozdziałami Czytelnik
zyska teoretyczną wiedzę na temat opisywanych
rozwiązań. Pozna ich historię, ideę działania oraz
różne ich typy: poczynając od najprostszych
programów, symulujących niezabezpieczone
usługi, aż po całe sieci maszyn uruchamianych
w środowisku wirtualnym. Książka prezentuje
przykłady zastosowania tej technologii. Jako
ciekawostka zostaje przedstawiony sposób
przyłapania wścibskiego administratora za
pomocą metody HoneyToken, zrealizowanej za
pomocą listu elektronicznego.

Druga część poświęcona jest narzędziom

pozwalającym uruchomić własny system
HoneyPot. Autor prezentuje wiele programów
umożliwiających budowę własnych pułapek
do różnych zastosowań – od wykrywania
aktualnych zainteresowań hakerów, poprzez
walkę ze spamerami, a kończąc na systemach
umożliwiających długotrwałe monitorowanie
włamywacza w podstawionym systemie. Po
przeczytaniu tej części każdy będzie w stanie
rozpocząć swoją przygodę z rozwiązaniem, które
odpowiada jego indywidualnym potrzebom.

Pod koniec tej części znajduje się pełny
opis umożliwiający zbudowanie własnego
systemu HoneyPot wysokiej interakcji od
zera. Przedstawione rozwiązanie oparte jest
o HoneyWall drugiej generacji oraz maszynę
– przynętę z aktualnie najpopularniejszym
programem monitorującym poczynania
włamywacza - systemem Sebek.

Część trzecia jest wprowadzaniem do

ostatniego – często zapominanego – kroku,
związanego z monitorowaniem działania oraz
analizą wyników uruchomionego systemu
HoneyPot. Z powodu obszerności tej tematyki
zostają tutaj krótko przedstawione narzędzia
umożliwiające analizę ruchu dochodzącego
do pułapki oraz zdobytego za jego pomocą
podejrzanego kodu. Tutaj znajduje się jeden z
najciekawszych moim zdaniem rozdziałów – opis
zarejestrowanego krok po kroku włamania do
rzeczywistego, uruchomionego przez autora
sytemu. Czytelnik na jego podstawie może
przekonać się, jakie informacje mogą zostać
zarejestrowane za pomocą systemu HoneyPot
wysokiej interakcji.

Na zakończenie, w dodatkach omówiono

jeszcze dwa zagadnienia. Pierwsze z nich
obejmuje techniki umożliwiające zdalne wykrycie
systemów działających w środowisku wirtualnym.
Wiedza ta jest rozwijana przez włamywaczy,
ponieważ często maszyna – pułapka jest właśnie
w takim środowisku uruchamiana. Wiedza, jak
robią to osoby stojące po drugiej stronie barykady,
może pomóc w konfiguracji trudniejszych do
wykrycia pułapek. Drugi dodatek poświęcony jest
aspektom prawnym związanym z włamaniami,
ujawnianiem i wykorzystaniem zdobytych
informacji pod kątem uruchamiania systemów
HoneyPot. Mimo, że jestem informatykiem,
z ciekawością zapoznałem się z polskimi
przepisami związanymi z tą tematyką.

Podsumowując, zachęcam wszystkie

osoby zainteresowane bezpieczeństwem sieci
komputerowych do zapoznania się z tą książką.
Mimo przeczytania kilku pozycji dotyczących tej
tematyki w języku angielskim, z przyjemnością
zapoznałem się z tą pozycją napisaną po
polsku, dowiadując się kilku nowych rzeczy.
Moim zdaniem największą zaletą książki jest
duża liczba opisów, przykładowych narzędzi oraz
ich konfiguracji, co pozwoli zapoznać się z ich
możliwościami i może być punktem wyjścia do
własnych eksperymentów.

Autor: Michał Piotrowski

Wydawca: Wydawnictwo

Naukowe PWN

Rok wydania w Polsce: 2007

Liczba stron: 324

Recenzent: Michał Piotrowski

KSIĘGOZBIÓR

background image

FELIETON

78

HAKIN9 7-8/2008

79

HAKIN9

7-8/2008

Ataki

społecznościowe

Spoglądając na członków społeczeństwa
informacyjnego jako potencjalnych
użytkowników technologii informatycznej,
można uznać, że społeczeństwo informacyjne
to społeczeństwo charakteryzujące
się przygotowaniem i zdolnością do
użytkowania systemów informatycznych,
skomputeryzowane i wykorzystujące
usługi telekomunikacyjne do przesyłania i
zdalnego przetwarzania informacji
. Tak, jak
w przypadku systemów informacyjnych,
możemy spotkać się z definicjami
społeczeństwa informacyjnego oraz
społeczeństwa informatycznego. Należy
pamiętać, że mając na myśli społeczeństwo
informatyczne, określa się grupę społeczną,
która posiada dostęp nie tylko do informacji,
ale także do technologii informatycznych.
Bez względu, która definicja zostanie użyta
do scharakteryzowania społeczeństwa
informacyjnego, trzeba mieć na uwadze, że
to informacja jako proces stwarza możliwości
technologiczne i staje się dominującą

siłą napędzającą społeczeństwo. Mimo
globalnego rozwoju informatycznego
i mass mediów, cywilizacja informacji
zajmuje pierwsze miejsce w nadawaniu
tonu sposobowi życia społeczeństwa.
Społeczeństwo, będąc pod wpływem takiego
rozwoju, uzupełnia o nią swój model kultury
i stylu życia. Aktualnym trendem w rozwoju
światowej gospodarki jest wzrost skali
występowania powszechnego dostępu do
informacji, co czyni proces kształtowania
się społeczeństwa informacyjnego bardziej
zaawansowanym. Oczywiście, w każdym
społeczeństwie – nawet informacyjnym
– istnieje wiele problemów, które należy
pokonać. Mimo, iż informatyzacja i globalny
dostęp do informacji przynosi społeczeństwu
możliwość życia na wyższym poziomie, to
nie wszystkie jednostki posiadają dostęp
do tych technologii, a tym samym cechuje
je brak społecznej świadomości, wiedzy
i doświadczenia w wykorzystywaniu
dostępnych dla nich rozwiązań. Konsekwencją

J

esteśmy społeczeństwem
informacyjnym (ang. information
society
) – czyli społeczeństwem, w

którym głównym towarem przetargowym
staje się informacja, traktowana jako
szczególne dobro niematerialne, będąca
częścią każdego produktu czy usługi i
wykorzystywana w każdej sferze naszego
dzisiejszego życia. W tym kontekście
informacja staje się dla społeczeństwa
informacyjnego równoważna, lub cenniejsza
nawet od dóbr materialnych. Pojęcie
społeczeństwa informacyjnego zostało
wprowadzone w 1963 roku przez Japończyka
T. Umesao (wersja oryginalna j

ō

h

ō

ka shakai)

w artykule o teorii ewolucji społeczeństwa
opartego na technologiach informatycznych.
Przez lata definicja ta przechodziła bardzo
długą ewolucję. W zależności od punktu
spojrzenia i pełnionych funkcji, społeczeństwo
informacyjne posiada wiele twarzy. Luc Soete,
jeden z ekspertów Unii Europejskiej, definiuje
społeczeństwo informacyjne w następującym
kontekście: Społeczeństwo informacyjne to
społeczeństwo, które właśnie się kształtuje,
gdzie technologie gromadzenia i transmisji
informacji i danych są powszechnie dostępne
po niskich kosztach. Powszechnemu
użyciu informacji i danych towarzyszą
organizacyjne, komercyjne, społeczne i
prawne zmiany, które głęboko zmieniają
życie, pracę i społeczeństwo jako takie
.

Jedną z wiodących sił jest stale rosnąca moc obliczeniowa komputerów oferowanych

na rynku, której towarzyszą spadające ceny. Innym elementem jest możliwość łączenia

komputerów w sieci, pozwalająca im na dzielenie danych, aplikacji a czasami samej

mocy obliczeniowej, na odległości tak małe jak biuro i tak duże jak planeta.

Patryk Krawaczyński jest studentem Informacji Naukowej

na Uniwersytecie Mikołaja Kopernika w Toruniu. W wolnych

chwilach stara się prowadzić serwis na temat administracji

oraz podstawowych mechanizmów bezpieczeństwa systemu

operacyjnego Linux – www.nfsec.pl. Jego zainteresowania

wiążą się także z ogólnymi zjawiskami zachodzącymi w

społeczeństwie, na które oddziałują Technologie Informacyjne.

Kontakt z autorem: agresor@nfsec.pl

background image

FELIETON

78

HAKIN9 7-8/2008

79

HAKIN9

7-8/2008

tego może być rozwarstwienie się na dwie
kategorie społeczne: osób korzystających
na bieżąco z dóbr Technologii Informacyjnej
(IT) oraz osób będących cywilizacyjnie i
ekonomicznie upośledzonymi. Spośród
innych problemów warto także zwrócić uwagę
na kwestię bezpieczeństwa społecznego.
Znacznie ułatwiony dostęp do informacji, która
wcześniej była traktowana bardziej osobiście,
może zagrażać prywatności oraz statusowi
społecznemu poszczególnych jednostek.
Pojawienie się nowej technologii zawsze rodzi
możliwość wytworzenia się nowej kategorii
nadużyć z nią związanych.

Dlatego powiązanie społeczeństwa z

wykorzystaniem danej technologii ściśle
wiąże się z wieloma aspektami dobrego,
złego i nieprzewidzianego jej użycia. Jako
doskonały przykład można przytoczyć
serwisy społecznościowe (Web 2.0),
w których budowie i działaniu czynnie
uczestniczy społeczeństwo informacyjne.
Odnosząc się do kwestii bezpieczeństwa,
można na początku nawiązać do różnic
technologicznych w przestrzeni całego
Internetu. Jak wiadomo, na serwisach
społecznościowych przeprowadza się
ocenę jakości dostarczonej informacji
pod różnymi względami: przydatności,
wiarygodności, nowości itd. Jednak sama
technologia, której użyto do dostarczenia
tej informacji, jest pomijana. Dlatego
osoba oferująca skromne zaplecze
technologiczne, ale odznaczająca się dużym
potencjałem informacyjnym, z pewnością
zostanie poszkodowana, gdy jej zasoby
zostaną uznane za godne wyróżnienia na
przykładowym serwisie społecznościowym.
Dlaczego? Wyobraźmy sobie, że bardziej
popularny serwis społecznościowy
odwiedza pewna ilość osób. Każda z nich
ma szerokopasmowe łącze, oferujące
szybką penetrację Internetu w celu dotarcia
do interesującej informacji. Po publikacji
odnośnika na serwisie społecznościowym
do strony, która utrzymywana jest na łączu
o średniej przepustowości istnieje wielkie
prawdopodobieństwo, że owa nieproszona
popularność spowoduje przeprowadzenie
nieświadomego ataku DoS (ang. Denial of
Service
) przez użytkowników przykładowego
serwisu na stronę, która została polecona
jako godna odwiedzenia. Używając trochę
wyobraźni i dopuszczając myśl, że ten sam
link zostanie opublikowany jednocześnie
na dwóch różnych serwisach przez tego

samego użytkownika – dojdziemy do
spowodowania nieświadomego ataku
DDoS (ang. Distributed Denial of Service).
W dodatku same serwisy społecznościowe
stają się ofiarami tego rodzaju ataków – ze
względu na swą rosnącą popularność, nie są
w stanie obsłużyć wszystkich odwiedzających,
którzy szerzą informację wśród kolejnych
osób o pojawieniu się w Sieci nowego,
ciekawego serwisu. Drugim pojawiającym
się zagrożeniem jest problem skali po
wykryciu ewentualnej luki w bezpieczeństwie
i opublikowaniu jej w tego rodzaju serwisie.
Skutki są naprawdę drastyczne. To, co
miało przynieść autorowi wpisu większą
bądź mniejszą sławę – stanowi karygodne
posunięcie. Straty są tym większe, jeśli wpis

zawierał dodatkowo szczegóły techniczne
luki. Przykładem może tutaj być publikacja
w serwisie – ukierunkowanym na różne
technologiczne wpisy z blogów ludzi
związanych z branżą IT – linku o informacji,
że w danym oprogramowaniu istnieje luka
X, a także, że można ją wykorzystać poprzez
ABC. Na blogu podany jest ponadto link
do strony producenta oprogramowania,
na której zawarte są informacje o klientach
wykorzystujących dziurawe oprogramowanie.
Oczywiście, producent nie został jeszcze
o tym fakcie powiadomiony, a niczemu
nie winni klienci nawet nie są świadomi, że
ktoś przekazał całej masie użytkowników
instrukcje dotyczące możliwości
przeprowadzenia ataku na ich zasoby.

Kolejnym zagrożeniem jest bezpieczeństwo
jako takie użytkowników posiadających
konta w danych serwisach oraz Czytelników,
którzy mogą zostać poddani manipulacji
medialnej. Pierwsza z tych grup jest związana
z wymogiem ochrony danych personalnych,
znajdujących się w tego rodzaju serwisach,
które są publicznie wystawiane jako baza
danych. Każda taka baza powinna mieć
wbudowaną danych zebranych przez
serwis użytkowników w postaci wewnętrznej
struktury, do której dostęp powinien być
przyznany tylko i wyłącznie właścicielom
danych osobowych, administratorom i
Inspektorowi Ochrony Danych Osobowych
(wyłączyć z tego można mechanizmy
logowania oraz kopii zapasowych – jako
procesy niezbędne do funkcjonowania
serwisu) po uprzedniej autoryzacji, czyli
podaniu nazwy użytkownika i hasła. Jednak
wiele rodzajów tego typu serwisów nadal
umożliwia obchodzenie wspomnianych
mechanizmów bezpieczeństwa, poprzez
stawianie nacisku na dzielenie się tymi
danymi wśród użytkowników, bez możliwości
określenia szczegółowych list dostępu
dla osób postronnych. Z kolei mówiąc o
manipulacji Czytelników, należy mieć na myśli
fakt różnorakiego oddziaływania poprzez
nich na opinię publiczną. Często osoby nie
posiadające własnego zdania poddawane
są sugestii w odniesieniu do różnego
rodzaju tematów – w ten sposób stając
się autorami fałszowania rzeczywistych
osiągnięć i wyników, które zostałyby uzyskane
w normalnym tego rodzaju procesie.
Przykładem są różnego rodzaju sugestie na
temat wypełniania sond czy ankiet, których
zmanipulowanie przynosi odpowiednie
korzyści. Skoro wszyscy, to czemu nie ja też?
Powyższe przykłady są wierzchołkiem góry
lodowej społecznych anomalii występujących
na wspomnianym obszarze działalności
internetowej. Oczywiście istnieje wiele plusów
przemawiających za stosowaniem tego
rodzaju promocji informacji, ale każdy kij ma
dwa końce (oprócz procy). Dlatego przed
przystąpieniem do jakiejkolwiek działalności
zgodnie z nowym trendem technologicznym,
należy zdawać sobie sprawę, że każde nowe
zjawisko – niezależnie środowiska w jakim
występuje – zaburza w pewnych warunkach
dotychczasowe działanie starego systemu,
dopóki nie zostanie opracowany pomost
pomiędzy tym, co nowe, a tym, co stare,
zapewniający bezpieczeństwo przejścia.

Przed przystąpieniem do

jakiejkolwiek działalności

w nowym trendzie

technologicznym, należy

zdawać sobie sprawę,

że każde nowe zjawisko

niezależnie środowiska w

jakim występuje, zaburza

w pewnych warunkach

dotychczasowe działanie

starego systemu dopóki

nie zostanie opracowany

pomost pomiędzy,

tym co nowe, a tym

co stare zapewniający

bezpieczeństwo przejścia.

background image

Kontakt

1. Telefon

+48 22 427 36 93

+48 22 427 36 79

+48 22 427 36 53

2. Fax

+48 22 244 24 59

2. Online

pren@software.com.pl

3. Adres

Bokserska 1

02-682 Warszawa

Polska

Roczna prenumerata

tylko

219

hakin9 – jak się obronić to ukazujący się w dwudziestu
czterech krajach Europy magazyn o bezpieczeństwie.
hakin9 porusza sprawy związane z bezpieczeństwem sys-
temów informatycznych – rozpatrywane zarówno od stro-
ny osoby naruszającej bezpieczeństwo, jak i osoby, która
bezpieczeństwo zapewnia. Radzimy jak skutecznie zabez-
pieczyć system przed hakerami i wszelkimi innymi zagro-
żeniami, oprowadzamy Czytelników po tajnikach najpopu-
larniejszych programów antywirusowych, systemów wy-
krywania włamań, narzędziach, których potrzebuje każdy
administrator.

,-

background image

Zamówienie prenumeraty

Imię i nazwisko ...............................................................................

Nazwa firmy.....................................................................................

Dokładny adres ..............................................................................

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

Telefon ............................................................................................

E–mail .............................................................................................

ID kontrahenta ................................................................................

Numer NIP firmy .............................................................................

Fax (wraz z nr kierunkowym) .........................................................

Prosimy wypełniać czytelnie i przesyłać faksem na numer:
00 48 22 244 24 59
lub listownie na adres:
Software-Wydawnictwo Sp. z o. o.
ul. Bokserska 1
02-682 Warszawa
Polska
E-Mail: pren@software.com.pl
Przyjmujemy też zamównienia telefoniczne:
0048 22 427 36 93
0048 22 427 36 79
0048 22 427 36 53

Jeżeli chcesz zapłacić kartą kredytową,
wejdź na stronę naszego sklepu internetowego www.buyitpress.com.

Prenumerujesz

– zyskujesz

l

oszczędność

pieniędzy

l

szybka dostawa

l

prezenty

l

bezpieczna płatność

ność on–line

Tytuł

Ilość

nume-

rów

Ilość

zama-

wianych

prenume-

rat

Od

numeru

pisma

lub mie-

siąca

Cena

hakin9, jak się obronić

(1 płyta CD)

Miesięcznik o

bezpieczeństwie

i hakingu

11

199*/

219

PLN

□ automatyczne przedłużenie prenumeraty

* cena prenumeraty rocznej dla osób prywatnych

Zadzwoń

+48 22 427 36 93

lub

zamów

mailowo!

background image

ZA MIESIĄC

W następnym numerze między innymi:

Numer będzie w sprzedaży

pod koniec sierpnia 2008

Aktualne informacje o najbliższym numerze

znajdziesz na naszej stronie www.hakin9.org/pl.

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

Redakcja zastrzega sobie prawo zmiany zawartości pisma.

Atak

SZYFRY WOJNY

Informacja to najpotężniejsza broń,
bardzo niebezpieczna i zarazem
najbardziej pożądana. Chroni się ją
przed osobami niepowołanymi, przed
ludźmi, którzy mogliby ją wykorzystać
przeciw nam. Podstawowe dane o sobie
(imię, nazwisko, data urodzenia, PESEL)
są ściśle zastrzeżone i niektóre portale
hakerskie płacą za nie duże pieniądze.
Pakiet 1000 zestawów takich danych
może osiągnąć cenę nawet 100 USD. W
następnej kolejności mamy informacje
przenoszoną drogą elektroniczną – czyli
korespondencja e-mail, rozmowy VOIP czy
rozmowy komunikatorów. Dziś opowiem
o szyfrach, deszyfratorach i hasłach,
które leżą w zasięgu naszych rąk, a które
nieświadomie udostępniamy mimo tak
starannych technik bezpieczeństwa.
Napiszę, jak atakować takie rozwiązania i
jak się przed tym bronić.

Obrona

ANTI-SNIFING, PRYWATNOŚĆ I VPN

Od początku sieci, komunikacji masowej,
internetu i ostatnio także sieci wifi, ruch
pakietów wszedł do użytku codziennego

jako priorytet i potrzeba. Jeśli dodamy,
że firmy i osoby prywatne używają sieci
do zakupów elektronicznych, dostępu do
banku, wymiany informacji poufnych; a
rządy i hackerzy obserwują ten ruch, to
nie możemy pozwolić by te informacje
podróżowały swobodnie bez żadnej
gwarancji bezpieczeństwa.

TUNELE TUN/TAP

Jak widać, mechanizm tuneli TUN/TAP
to całkiem potężne narzędzie. Dzięki
niemu, w sytuacjach kiedy mamy nawet
bardzo ograniczony dostęp do odległej
sieci, jesteśmy w stanie otworzyć
sobie na nią okno poprzez wirtualny
tunel IP. W przykładach w niniejszym
artykule ograniczyliśmy się wprawdzie
do wykorzystywania jako transportu
dla naszych tuneli sieci Internet, jednak
oczywiście nic nie stoi na przeszkodzie, żeby
wykorzystać do tego zamiast karty sieciowej

innego sprzętu, na przykład interfejsu
bluetooth, portu podczerwieni, usb, czy też
samodzielnie zbudowanego urządzenia
umożliwiającego przesyłanie danych.

PRZEGLĄD KLIENTÓW POCZTOWYCH

W artykule zostaną przedstawione
słabe i mocne strony każdego
programu/narzędzia służącego do
bezpiecznej komuniacji po przez mail.
W przypadku każdego programu
zostanie zawarty przynajmniej akapit
odnośnie dodatkowych możliwości z
związanych certyfikatami, szyfrowaniem
itp. W ramach artykułu zostaną opisane
takie popularne programy jak Outlook,
Thunerbird, ale również takie jak Kmail
(popularny w linuksie), Evolution. Zostaną
także przedstawione mniej lub bardziej
popularnych OpenSource i
I komercyjne propozycje, w tym również
dla Mac OS.

82

HAKIN9 7-8/2008

background image
background image

Document Outline


Wyszukiwarka

Podobne podstrony:
Hakin9 39 (07 08 2008)
Hakin9 36 (04 2008) PL
Hakin9 35 (03 2008) PL
Hakin9 38 (06 2008) PL
Hakin9 34 (02 2008) PL
Hakin9 28 (08 2007) PL
autyzm nr 07 08 2008
Hakin9 37 (05 2008) PL
Hakin9 40 (09 2008) PL
Hakin9 33 (01 2008) PL
Hakin9 37 (05 2008) PL
Hakin9 36 (04 2008) PL
Hakin9 28 (08 2007) PL
Hakin9 33 (01 2008) PL
Hakin9 35 (03 2008) PL
Hakin9 40 (09 2008) PL
Hakin9 38 (06 2008) PL

więcej podobnych podstron